{"version":3,"mappings":"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","names":["BROWSER","empty","snapshot","value","skip_warning","clone","cloned","path","paths","original","unwrapped","is_array","copy","i","element","get_prototype_of","object_prototype","key","PENDING","THEN","CATCH","await_block","node","get_input","pending_fn","then_fn","catch_fn","hydrating","hydrate_next","anchor","runes","is_runes","active_component_context","component_context","input","UNINITIALIZED","pending_effect","then_effect","catch_effect","input_source","source","mutable_source","error_source","resolved","update","state","restore","set_active_effect","effect","set_active_reaction","set_component_context","resume_effect","branch","pause_effect","flushSync","block","mismatch","is_promise","HYDRATION_START_ELSE","remove_nodes","set_hydrate_node","set_hydrating","promise","internal_set","error","queue_micro_task","hydrate_node","bind_value","get","set","batches","listen_to_event_and_reset_event","is_reset","is_numberlike_input","to_number","current_batch","start","end","untrack","render_effect","batch","previous_batch","type","fromStore","store","subscribe","createSubscriber","ran","unsubscribe","v","current","effect_tracking","browser","on_click","_","choice","id","values","$.prop","$$props","$.each","div","$.set_checked","$.event","cached","fn","maxSize","cache","arg","firstKey","result","res","message","something","doClone","cloneArray","cloneObj","arr","r","len","obj","mergeObjects","target","sources","basename","idx","CAPTURING_REGEX_SOURCE","RegexSource","regexSource","captureSource","captureIndices","match","index","commandIndex","command","capture","strcmp","a","b","strArrCmp","len1","len2","isValidHexColor","hex","escapeRegExpCharacters","CachedFn","Theme","_colorMap","_defaults","_root","colorMap","parseTheme","resolveParsedThemeRules","scopeName","scopePath","effectiveRule","_scopePathMatchesParentScopes","StyleAttributes","ScopeStack","_ScopeStack","parent","scopeNames","name","segments","item","other","base","parentScopes","scopePattern","scopeMustMatch","_matchesScope","fontStyle","foregroundId","backgroundId","settings","resultLen","entry","scopes","_scope","j","lenJ","foreground","background","scope","ParsedThemeRule","FontStyle","FontStyle2","parsedThemeRules","defaultFontStyle","defaultForeground","defaultBackground","incomingDefaults","ColorMap","defaults","root","ThemeTrieElement","ThemeTrieElementRule","rule","color","emptyParentScopes","_ThemeTrieElementRule","scopeDepth","_ThemeTrieElement","_mainRule","rulesWithParentScopes","_children","aParentIndex","bParentIndex","parentScopeLengthDiff","dotIndex","head","tail","rules","child","EncodedTokenMetadata","_EncodedTokenMetadata","encodedTokenAttributes","languageId","tokenType","containsBalancedBrackets","_languageId","_tokenType","_containsBalancedBracketsBit","_fontStyle","_foreground","_background","createMatchers","selector","matchesName","results","tokenizer","newTokenizer","token","priority","matcher","parseConjunction","parseOperand","expressionToNegate","matcherInput","expressionInParents","parseInnerExpression","isIdentifier","identifiers","matchers","matcher2","regex","disposeOnigString","str","TopLevelRuleReference","TopLevelRepositoryRuleReference","ruleName","ExternalReferenceCollector","reference","ScopeDependencyProcessor","repo","initialScopeName","q","deps","dep","collectReferencesOfReference","baseGrammarScopeName","selfGrammar","baseGrammar","collectExternalReferencesInTopLevelRule","collectExternalReferencesInTopLevelRepositoryRule","injections","injection","context","collectExternalReferencesInRules","patternRepository","include","parseInclude","newContext","BaseReference","SelfReference","RelativeReference","TopLevelReference","TopLevelRepositoryReference","indexOfSharp","HAS_BACK_REFERENCES","BACK_REFERENCING_END","endRuleId","whileRuleId","Rule","$location","contentName","location","lineText","CaptureRule","retokenizeCapturedWithRuleId","grammar","out","endRegexSource","allowA","allowG","MatchRule","captures","RegExpSource","RegExpSourceList","IncludeOnlyRule","patterns","pattern","BeginEndRule","begin","beginCaptures","endCaptures","applyEndPatternLast","BeginWhileRule","_while","whileCaptures","RuleFactory","_RuleFactory","helper","desc","repository","maximumCaptureId","captureId","numericCaptureId","ruleId","localIncludedRule","externalGrammarName","externalGrammarInclude","externalGrammar","externalIncludedRule","skipRule","_RegExpSource","regExpSource","lastPushedPos","output","hasAnchor","pos","nextCh","newSource","capturedValues","g1","A0_G0_result","A0_G1_result","A1_G0_result","A1_G1_result","ch","onigLib","regExps","e","CompiledRule","string","startPosition","options","BasicScopeAttributes","BasicScopeAttributesProvider","_BasicScopeAttributesProvider","initialLanguageId","embeddedLanguages","ScopeMatcher","standardTokenType","m","escapedScopes","TokenizeStringResult","stack","stoppedEarly","_tokenizeString","isFirstLine","linePos","lineTokens","checkWhileConditions","timeLimit","lineLength","STOP","anchorPosition","whileCheckResult","_checkWhileConditions","startTime","scanNext","matchRuleOrInjections","matchedRuleId","hasAdvanced","poppedRule","handleCaptures","popped","_rule","beforePush","nameScopesList","pushedRule","contentNameScopesList","whileRules","nodeRule","whileRule","ruleScanner","findOptions","prepareRuleWhileSearch","matchResult","matchRule","injectionResult","matchInjections","matchResultScore","injectionResultScore","prepareRuleSearch","bestMatchRating","bestMatchCaptureIndices","bestMatchRuleId","bestMatchResultPriority","matchRating","lineTextContent","localStack","maxEnd","captureRule","captureIndex","stackClone","onigSubStr","captureRuleScopeName","captureRuleScopesList","LocalStackElement","endPos","createGrammar","initialLanguage","tokenTypes","balancedBracketSelectors","grammarRepository","Grammar","collectInjections","ruleFactoryHelper","nameMatcher","identifers","lastIndex","identifier","scopesAreMatching","thisScopeName","_rootScopeName","_onigLib","initGrammar","scopeName2","rawInjections","expression","injectionScopeNames","injectionScopeName","injectionGrammar","i1","i2","factory","rawIncludedGrammar","prevState","emitBinaryTokens","StateStackImpl","rawDefaultMetadata","defaultStyle","defaultMetadata","rootScopeName","scopeList","AttributedScopeStack","onigLineText","LineTokens","_AttributedScopeStack","tokenAttributes","namesScopeList","frame","rawRootMetadata","rootStyle","resolvedTokenAttributes","existingTokenAttributes","basicScopeAttributes","styleAttributes","rawMetadata","newPath","scopeThemeMatchResult","metadata","self","_StateStackImpl","enterPos","anchorPos","beginRuleCapturedEOL","endRule","el","outIndex","contentNameScopeStack","BalancedBracketSelectors","balancedBracketScopes","unbalancedBracketScopes","excluder","includer","tokenTypeOverrides","endIndex","scopesList","scopes2","SyncRegistry","theme","targetScope","rawGrammar","Registry","configuration","dependencyProcessor","request","INITIAL","htmlVoidElements","Schema","property","normal","space","merge","definitions","definition","normalize","Info","attribute","powers","boolean","increment","booleanish","overloadedBoolean","number","spaceSeparated","commaSeparated","commaOrSpaceSeparated","checks","types","DefinedInfo","mask","mark","check","create","properties","normals","info","aria","caseSensitiveTransform","attributes","caseInsensitiveTransform","html","svg","xlink","xmlns","xml","cap","dash","valid","find","schema","Type","rest","camelcase","dashes","kebab","$0","htmlBase","svgBase","own","zwitch","one","parameters","handlers","defaultSubsetRegex","surrogatePairsRegex","controlCharactersRegex","regexEscapeRegex","subsetToRegexCache","core","charactersToExpressionCached","basic","surrogate","pair","all","character","subset","charactersToExpression","groups","hexadecimalRegex","toHexadecimal","code","next","omit","decimalRegex","toDecimal","characterEntitiesLegacy","characterEntitiesHtml4","dangerous","characters","notAlphanumericRegex","toNamed","formatSmart","numeric","named","decimal","stringifyEntities","htmlCommentRegex","bogusCommentEntitySubset","commentEntitySubset","comment","_1","_2","encode","doctype","_3","ccount","count","stringify","re","whitespace","thing","siblingAfter","siblings","siblingBefore","emptyChildren","sibling","includeWhitespace","offset","omission","closing","body","headOrColgroupOrCaption","dd","dt","li","optgroup","option","p","rubyElement","tbody","cells","tfoot","thead","tr","opening","colgroup","seen","previous","constants","selfClosing","parts","last","serializeAttributes","content","serializeAttribute","x","y","quote","commas","spaces","textEntitySubset","text","raw","handle","invalid","unknown","node_","emptyOptions","emptyCharacterReferences","toHtml","tree","options_","alternative","children","resolveColorReplacements","replacements","themeName","applyColorReplacements","toArray","normalizeGetter","isPlainLang","lang","isSpecialLang","isNoneTheme","isSpecialTheme","addClassToHast","className","targets","c","splitLines","preserveEnding","lines","line","createPositionConverter","indexToPos","posToIndex","DEFAULT_COLOR_LIGHT_DARK","COLOR_KEYS","splitToken","offsets","lastOffset","tokens","splitTokens","breakpoints","sorted","breakpointsInToken","flatTokenVariants","merged","variantsOrder","cssVariablePrefix","defaultColor","colorsRendering","styles","t","getTokenStyleObject","styleKeys","mergedStyles","varKey","keyName","cur","lightIndex","darkIndex","ShikiError$1","lightValue","darkValue","decorations","stringifyTokenStyle","_grammarStateMap","setLastGrammarStateToMap","keys","getLastGrammarStateFromMap","GrammarState","themes","args","stacksMap","getScopes","visited","pushScope","stack2","getGrammarStack","transformerDecorations","map","getContext","shiki","normalizePosition","converter","d","verifyIntersections","codeEl","ctx","applyLineSection","decoration","lineEl","startIndex","applyDecoration","wrapper","applyLine","transform","lineApplies","items","foo","bar","isFooHasBarStart","isFooHasBarEnd","isBarHasFooStart","isBarHasFooEnd","builtInTransformers","getTransformers","namedColors","findSequence","position","nextEscape","nextClose","parseColor","sequence","colorMode","rgb","parseSequence","commands","codeInt","createAnsiSequenceParser","decorations2","findResult","styleToken","defaultNamedColorsMap","createColorPalette","namedColorsMap","namedColor","rgbColor","colorTable","getColorTable","levels","g","level","tableColor","tokenizeAnsiWithTheme","fileContents","colorReplacements","colorPalette","parser","bgColor","dimColor","hexMatch","alpha","cssVarMatch","codeToTokensBase","internal","_grammar","tokenizeWithTheme","getLastGrammarState","_tokenizeWithTheme","grammarState","tokenizeMaxLineLength","tokenizeTimeLimit","stateStack","actual","final","lineOffset","resultWithScopes","tokensWithScopes","tokensWithScopesIndex","tokensLength","nextStartIndex","themeSettingsSelectors","setting","selectors","tokenWithScopes","tokenWithScopesText","explainThemeScopesNameOnly","explainThemeScopesFull","themeSelectors","explainThemeScope","matchesOne","matches","selectorParentIndex","parentIndex","selectorPieces","codeToTokensWithThemes","themedTokens","tokens2","syncThemesTokenization","mergedTokens","lineIdx","_token","tokenIdx","mergedToken","themeIdx","__","___","mergedGrammarState","outThemes","outLines","indexes","l","minLength","n","codeToTokens","bg","fg","themeTokens","themeRegs","themesOrder","themeColorReplacements","mapThemeColors","_theme","cssVar","t2","codeToHast","transformerContext","_code","_options","transformer","mergeWhitespaces","mergeSameStyleTokens","mergeWhitespaceTokens","splitWhitespaceTokens","mergeAdjacentStyledTokens","contextSource","tokensToHast","transformers","structure","tabindex","preNode","codeNode","lineNodes","lineNode","col","tokenNode","style","newLine","carryOnContent","firstOffset","couldMerge","leading","trailing","expanded","prevToken","prevStyle","currentStyle","isPrevDecorated","isDecorated","hastToHtml","codeToHtml","VSCODE_FALLBACK_EDITOR_FG","VSCODE_FALLBACK_EDITOR_BG","RESOLVED_KEY","normalizeTheme","rawTheme","globalSetting","replacementCount","replacementMap","getReplacementColor","replaceFg","replaceBg","replacement","resolveLangs","langs","resolveThemes","_emitDeprecation","warnDeprecated","version","Registry$1","_resolver","_themes","_langs","_alias","textmateTheme","ShikiError","embeddedLazilyBy","grammarConfig","alias","langsGraphArray","missingLangs","dependents","embeddedLang","Resolver","engine","s","langIdOrAlias","scopeParts","subScopeName","instancesCount","createShikiInternalSync","isDisposed","resolver","_registry","_lastTheme","getLanguage","ensureNotDisposed","_lang","getTheme","setTheme","getLoadedThemes","getLoadedLanguages","loadLanguageSync","langs2","loadLanguage","loadThemeSync","themes2","loadTheme","dispose","createShikiInternal","createHighlighterCore","options2","createdBundledHighlighter","bundledLanguages","bundledThemes","createHighlighter","resolveLang","bundle","resolveTheme","bundledLanguagesInfo","__vitePreload","bundledLanguagesBase","bundledLanguagesAlias","bundledThemesInfo","getHeapMax","_emscripten_get_now","alignUp","multiple","main","init","wasmMemory","buffer","binding","updateGlobalBufferAndViews","buf","_emscripten_memcpy_big","dest","src","num","emscripten_realloc_buffer","size","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","newSize","UTF8Decoder","UTF8ArrayToString","heapOrArray","maxBytesToRead","endIdx","endPtr","u0","u1","u2","UTF8ToString","ptr","asmLibraryArg","createWasm","exports","__defProp","__defNormalProp","__publicField","onigBinding","throwLastOnigError","onigBinding2","UtfString","utf16Length","utf8Length","computeIndicesMapping","utf16OffsetToUtf8","utf8OffsetToUtf16","utf8Value","i8","i16","charCode","codePoint","wasSurrogatePair","nextCharCode","codepoint","_OnigString","utfString","utf8Offset","utf16Offset","OnigString","OnigScanner","strPtrsArr","strLenArr","strPtrsPtr","strLenPtr","scannerPtr","debugCall","resultPtr","HEAPU32","beg","isInstantiatorOptionsObject","dataOrOptions","isInstantiatorModule","isDataOptionsObject","isResponse","isArrayBuffer","data","initPromise","loadWasm","_load","instance","_makeResponseStreamingLoader","_makeResponseNonStreamingLoader","_makeArrayBufferLoader","importObject","arrayBuffer","createOnigurumaEngine","getHighlighter","highlighter","highlight","$$render","consequent","alternate","getBody","htmlString","objectEncodeAndDecodeOptions","defaultValue","encode_and_decode","curry_equality","equality_fn","arrayEncodeAndDecodeOptions","f","keyStrUriSafe","baseReverseDic","getBaseValue","o","compressToEncodedURIComponent","_compress","decompressFromEncodedURIComponent","_decompress","$","u","h","lzEncodeAndDecodeOptions","primitiveEncodeAndDecodeOptions","decode","ssp","page","page_store","is_complex_equal","GOTO_OPTIONS","GOTO_OPTIONS_PUSH","batched_updates","batch_timeout","debounced_timeouts","page_state","DEFAULT_ENCODER_DECODER","RAW","do_navigate","encodes","overrides","navigation_options","debounceHistory","pushHistory","sort","hash","to_batch","query","new_value","batched","navigate","goto","create_root_navigator","_path","to_set","$.snapshot","piece","create_recursive_proxy","decodes","old_values","navigator","reflected_value","search_params","should_default","show_defaults","queryParameters","$.proxy","der","old_value","$.user_pre_effect","$.derived","$.get","consequent_2","consequent_1","alternate_1","$$value","href","title","Html","A","Abbr","Address","Article","Aside","Audio","B","Bdi","Bdo","Blockquote","Br","Button","Canvas","Cite","Code","Datalist","Dd","Del","Details","Dfn","Dialog","Div","Dl","Dt","Em","Embed","Fieldset","Footer","Form","H1","H2","H3","H4","H5","H6","Header","Hgroup","Hr","I","Iframe","Img","Input","Kbd","Label","Legend","Li","Main","Mark","Menu","Meter","Nav","Ol","Optgroup","Option","Output","P","Param","Picture","Pre","Progress","S","Samp","Section","Select","Small","Source","Span","Strong","Sub","Summary","Sup","Table","Tbody","Td","Textarea","Tfoot","Th","Thead","Tr","Track","U","Ul","Var","header","rows","ordered","$.rest_props","node_2","_text","_raw","parserRest","Parser","$$anchor","$.spread_props","computed_const","node_10","headerItem","_align","cellRest","node_14","row","node_16","$$array","$.index","cellToken","computed_const_2","consequent_3","consequent_4","node_22","computed_const_3","OrderedListComponent","consequent_6","node_26","computed_const_4","UnorderedListComponent","consequent_8","consequent_7","tag","localRest","htmlTag","HtmlComponent","computed_const_5","consequent_10","consequent_11","consequent_12","GeneralComponent","consequent_14","alternate_2","consequent_15","consequent_13","alternate_3","consequent_9","alternate_4","consequent_5","alternate_5","consequent_16","alternate_6","BananaSlug","maintainCase","slug","originalSlug","L","O","H","E","xe","be","Re","C","Oe","se","ie","Te","F","we","Q","ye","Pe","Se","oe","$e","K","_e","Le","Me","ze","ae","Ae","D","W","le","Ee","ue","Ce","Ie","Be","pe","qe","ve","ce","De","Ze","Ge","He","Ne","je","Fe","Qe","he","de","Ue","X","Ke","N","We","M","Xe","ke","w","J","V","z","ge","fe","Je","k","T","Z","ee","te","ne","me","G","Y","R","defaultRenderers","Heading","Paragraph","Text","Image","Link","Codespan","TableHead","TableBody","TableRow","TableCell","List","ListItem","RawText","defaultOptions","htmlDecodeTree","xmlDecodeTree","_a","decodeMap","fromCodePoint","replaceCodePoint","CharCodes","TO_LOWER_BIT","BinTrieFlags","isNumber","isHexadecimalCharacter","isAsciiAlphaNumeric","isEntityInAttributeInvalidEnd","EntityDecoderState","DecodingMode","EntityDecoder","decodeTree","emitCodePoint","errors","decodeMode","digitCount","char","lastCp","expectedLength","valueLength","determineBranch","consumed","nodeIndex","branchCount","jumpOffset","lo","hi","mid","midValue","State","isWhitespace","isEndOfTagSection","isASCIIAlpha","QuoteType","Sequences","Tokenizer","xmlMode","decodeEntities","cbs","cp","chunk","isEnd","endOfText","actualIndex","lower","length","formTags","pTag","tableSectionTags","ddtTags","rtpTags","openImpliesClose","voidElements","foreignContextElements","htmlIntegrationElements","reNameEnd","_b","_c","_d","_f","impliesClose","isImplied","_g","_h","isOpenImplied","_j","_k","slice","HTML_TAG_PATTERN","htmlTagRegex","SELF_CLOSING_TAGS","isHtmlOpenTag","formatSelfClosingHtmlToken","tagMatch","tagName","formattedRaw","extractAttributes","quotedRegex","booleanRegex","parseHtmlBlock","currentText","openTags","htmlparser2.Parser","containsMultipleTags","openingTags","closingTags","shrinkHtmlTokens","cell","formattedToken","processHtmlTokens","tagInfo","lastOpening","innerTokens","openingToken","renderers","isInline","parsed","combinedOptions","slugger","Slugger","lexer","Lexer","$.user_effect","combinedRenderers","val","setContext","link","image","toast","err","extend","destination","repeat","trimLeadingNewlines","trimTrailingNewlines","indexEnd","blockElements","isBlock","is","isVoid","hasVoid","has","meaningfulWhenBlankElements","isMeaningfulWhenBlank","hasMeaningfulWhenBlank","tagNames","hLevel","underline","prefix","language","fenceChar","fenceSize","fenceInCodeRegex","fence","cleanAttribute","references","hasSiblings","isCodeBlock","extraSpace","delimiter","alt","titlePart","Rules","filter","findRule","filterValue","collapseWhitespace","isPre","prevText","keepLeadingWs","prev","remove","nextNode","canParseHTMLNatively","canParse","createHTMLParser","shouldUseActiveX","doc","useActiveX","HTMLParser","RootNode","htmlParser","isPreOrCode","_htmlParser","Node","isBlank","flankingWhitespace","edges","edgeWhitespace","isFlankedByWhitespace","side","regExp","isFlanked","reduce","escapes","TurndownService","canConvert","process","postProcess","plugin","accumulator","escape","parentNode","replacementForNode","join","s1","s2","nls","separator","highlightRegExp","highlightedCodeBlock","turndownService","firstChild","strikethrough","indexOf","every","borderCells","alignMap","isHeadingRow","border","align","isFirstTbody","previousSibling","tables","taskListItems","gfm","toMarkdown","responseToTextStream","reader","decoder","done","Readability","logNode","attrPairs","attr","msg","articleContent","nodeList","filterFn","newTagName","collection","classesToPreserve","cls","baseURI","documentURI","toAbsoluteURI","uri","links","container","medias","media","poster","srcset","newSrcset","p1","p2","p3","curTitle","origTitle","titleHadHierarchicalSeparators","wordCount","allSeparators","headings","trimmedTitle","heading","hOnes","curTitleWordCount","elem","br","replaced","brSibling","nextElem","shareElementThreshold","topCandidate","matchString","paragraph","contentElementCount","table","ignoreSelfAndKids","textA","textB","tokensA","tokensB","uniqTokensB","distanceB","rel","itemprop","bylineLength","maxDepth","ancestors","isPaging","pageCacheHtml","stripUnlikelyCandidates","elementsToScore","shouldRemoveTitleHeader","endOfSearchMarkerNode","itemPropNameNode","childNode","nextSibling","newNode","candidates","elementToScore","innerText","contentScore","ancestor","scoreDivider","topCandidates","cl","candidate","candidateScore","aTopCandidate","neededToCreateTopCandidate","parentOfTopCandidate","alternativeCandidateAncestors","MINIMUM_TOPCANDIDATES","listsContainingThisAncestor","ancestorIndex","lastScore","scoreThreshold","parentScore","siblingScoreThreshold","sl","append","contentBonus","linkDensity","nodeContent","nodeLength","parseSuccessful","textLength","articleDir","htmlEscapeMap","numStr","scripts","jsonLdElement","it","schemaDotOrgRegex","nameMatches","headlineMatches","author","jsonld","metaElements","propertyPattern","namePattern","elementName","elementProperty","articleAuthor","imgs","img","noscripts","noscript","tmp","prevElement","prevImg","newImg","attrName","normalizeSpaces","textContent","linkLength","linkNode","coefficient","weight","isEmbed","depth","columns","trs","rowspan","columnsInThisRow","colspan","role","datatable","summary","caption","dataTableDescendants","descendantExists","sizeInfo","srcCouldBeRemoved","b64starts","b64length","copyTo","tags","childrenLength","isDataTable","isList","listLength","listNodes","list","tbl","headingDensity","embedCount","embeds","contentLength","textishTags","textDensity","isFigureChild","haveToRemove","errs","li_count","headingNodes","shouldRemove","flag","numTags","jsonLd","paragraphs","module","REGEXPS","isNodeVisible","isProbablyReaderable","nodes","brNodes","score","textContentLength","require$$0","require$$1","readability","read","baseurl","displayMarkdown","cleanedHtml","llmResult","$.state","fetchLLMResult","$.set","delta","readabilityResult","url","$.bind_value"],"ignoreList":[0,1,2,3,4,5,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,63,64,65,66,67,68,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,191,192,195,196,197],"sources":["../../../../../../node_modules/esm-env/true.js","../../../../../../node_modules/svelte/src/internal/shared/clone.js","../../../../../../node_modules/svelte/src/internal/client/dom/blocks/await.js","../../../../../../node_modules/svelte/src/internal/client/dom/elements/bindings/input.js","../../../../../../node_modules/svelte/src/store/index-client.js","../../../../../../node_modules/@sveltejs/kit/src/runtime/app/environment/index.js","../../../../../../src/routes/(static)/read/ToggleGroup.svelte","../../../../../../src/lib/Article.svelte","../../../../../../src/lib/utils/cache.ts","../../../../../../node_modules/@shikijs/types/dist/index.mjs","../../../../../../node_modules/@shikijs/vscode-textmate/dist/index.js","../../../../../../node_modules/html-void-elements/index.js","../../../../../../node_modules/property-information/lib/util/schema.js","../../../../../../node_modules/property-information/lib/util/merge.js","../../../../../../node_modules/property-information/lib/normalize.js","../../../../../../node_modules/property-information/lib/util/info.js","../../../../../../node_modules/property-information/lib/util/types.js","../../../../../../node_modules/property-information/lib/util/defined-info.js","../../../../../../node_modules/property-information/lib/util/create.js","../../../../../../node_modules/property-information/lib/aria.js","../../../../../../node_modules/property-information/lib/util/case-sensitive-transform.js","../../../../../../node_modules/property-information/lib/util/case-insensitive-transform.js","../../../../../../node_modules/property-information/lib/html.js","../../../../../../node_modules/property-information/lib/svg.js","../../../../../../node_modules/property-information/lib/xlink.js","../../../../../../node_modules/property-information/lib/xmlns.js","../../../../../../node_modules/property-information/lib/xml.js","../../../../../../node_modules/property-information/lib/find.js","../../../../../../node_modules/property-information/index.js","../../../../../../node_modules/zwitch/index.js","../../../../../../node_modules/stringify-entities/lib/core.js","../../../../../../node_modules/stringify-entities/lib/util/to-hexadecimal.js","../../../../../../node_modules/stringify-entities/lib/util/to-decimal.js","../../../../../../node_modules/character-entities-legacy/index.js","../../../../../../node_modules/character-entities-html4/index.js","../../../../../../node_modules/stringify-entities/lib/constant/dangerous.js","../../../../../../node_modules/stringify-entities/lib/util/to-named.js","../../../../../../node_modules/stringify-entities/lib/util/format-smart.js","../../../../../../node_modules/stringify-entities/lib/index.js","../../../../../../node_modules/hast-util-to-html/lib/handle/comment.js","../../../../../../node_modules/hast-util-to-html/lib/handle/doctype.js","../../../../../../node_modules/ccount/index.js","../../../../../../node_modules/comma-separated-tokens/index.js","../../../../../../node_modules/space-separated-tokens/index.js","../../../../../../node_modules/hast-util-whitespace/lib/index.js","../../../../../../node_modules/hast-util-to-html/lib/omission/util/siblings.js","../../../../../../node_modules/hast-util-to-html/lib/omission/omission.js","../../../../../../node_modules/hast-util-to-html/lib/omission/closing.js","../../../../../../node_modules/hast-util-to-html/lib/omission/opening.js","../../../../../../node_modules/hast-util-to-html/lib/handle/element.js","../../../../../../node_modules/hast-util-to-html/lib/handle/text.js","../../../../../../node_modules/hast-util-to-html/lib/handle/raw.js","../../../../../../node_modules/hast-util-to-html/lib/handle/root.js","../../../../../../node_modules/hast-util-to-html/lib/handle/index.js","../../../../../../node_modules/hast-util-to-html/lib/index.js","../../../../../../node_modules/@shikijs/core/dist/index.mjs","../../../../../../node_modules/shiki/dist/langs.mjs","../../../../../../node_modules/shiki/dist/themes.mjs","../../../../../../node_modules/@shikijs/engine-oniguruma/dist/index.mjs","../../../../../../node_modules/shiki/dist/bundle-full.mjs","../../../../../../src/lib/utils/highlight.ts","../../../../../../src/lib/Highlight.svelte","../../../../../../src/lib/utils/html.ts","../../../../../../node_modules/sveltekit-search-params/package/ssp/json-encode.js","../../../../../../node_modules/sveltekit-search-params/package/ssp/lz-string/index.js","../../../../../../node_modules/sveltekit-search-params/package/ssp/lz-encode.js","../../../../../../node_modules/sveltekit-search-params/package/ssp/util.js","../../../../../../node_modules/sveltekit-search-params/package/ssp/index.js","../../../../../../node_modules/sveltekit-search-params/package/sveltekit-search-params.svelte.js","../../../../../../src/routes/(static)/read/Left.svelte","../../../../../../src/lib/markdown/Image.svelte","../../../../../../src/lib/markdown/Link.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/A.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Abbr.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Address.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Article.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Aside.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Audio.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/B.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Bdi.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Bdo.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Blockquote.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Br.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Button.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Canvas.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Cite.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Code.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Datalist.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Dd.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Del.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Details.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Dfn.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Dialog.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Div.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Dl.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Dt.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Em.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Embed.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Fieldset.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Footer.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Form.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/H1.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/H2.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/H3.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/H4.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/H5.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/H6.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Header.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Hgroup.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Hr.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/I.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Iframe.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Img.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Input.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Kbd.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Label.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Legend.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Li.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Main.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Mark.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Menu.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Meter.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Nav.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Ol.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Optgroup.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Option.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Output.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/P.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Param.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Picture.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Pre.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Progress.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/S.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Samp.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Section.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Select.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Small.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Source.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Span.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Strong.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Sub.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Summary.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Sup.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Table.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Tbody.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Td.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Textarea.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Tfoot.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Th.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Thead.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Tr.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Track.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/U.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Ul.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/Var.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/html/index.js","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/Parser.svelte","../../../../../../node_modules/github-slugger/regex.js","../../../../../../node_modules/github-slugger/index.js","../../../../../../node_modules/marked/lib/marked.esm.js","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Blockquote.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Br.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Code.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Codespan.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Del.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Em.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Heading.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Image.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Link.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/List.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/ListItem.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Paragraph.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/RawText.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Strong.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Table.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/TableBody.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/TableCell.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/TableHead.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/TableRow.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/renderers/Text.svelte","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/utils/markdown-parser.js","../../../../../../node_modules/entities/dist/esm/generated/decode-data-html.js","../../../../../../node_modules/entities/dist/esm/generated/decode-data-xml.js","../../../../../../node_modules/entities/dist/esm/decode-codepoint.js","../../../../../../node_modules/entities/dist/esm/decode.js","../../../../../../node_modules/htmlparser2/dist/esm/Tokenizer.js","../../../../../../node_modules/htmlparser2/dist/esm/Parser.js","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/utils/token-cleanup.js","../../../../../../node_modules/@humanspeak/svelte-markdown/dist/SvelteMarkdown.svelte","../../../../../../src/lib/Markdown.svelte","../../../../../../src/lib/utils/copy.ts","../../../../../../node_modules/turndown/lib/turndown.browser.es.js","../../../../../../node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js","../../../../../../src/lib/utils/html2md.ts","../../../../../../src/lib/utils/iter.ts","../../../../../../node_modules/@mozilla/readability/Readability.js","../../../../../../node_modules/@mozilla/readability/Readability-readerable.js","../../../../../../node_modules/@mozilla/readability/index.js","../../../../../../src/lib/utils/reader.ts","../../../../../../src/routes/(static)/read/Right.svelte","../../../../../../src/routes/(static)/read/+page.svelte"],"sourcesContent":["export default true;\n","/** @import { Snapshot } from './types' */\nimport { DEV } from 'esm-env';\nimport * as w from './warnings.js';\nimport { get_prototype_of, is_array, object_prototype } from './utils.js';\n\n/**\n * In dev, we keep track of which properties could not be cloned. In prod\n * we don't bother, but we keep a dummy array around so that the\n * signature stays the same\n * @type {string[]}\n */\nconst empty = [];\n\n/**\n * @template T\n * @param {T} value\n * @param {boolean} [skip_warning]\n * @returns {Snapshot<T>}\n */\nexport function snapshot(value, skip_warning = false) {\n\tif (DEV && !skip_warning) {\n\t\t/** @type {string[]} */\n\t\tconst paths = [];\n\n\t\tconst copy = clone(value, new Map(), '', paths);\n\t\tif (paths.length === 1 && paths[0] === '') {\n\t\t\t// value could not be cloned\n\t\t\tw.state_snapshot_uncloneable();\n\t\t} else if (paths.length > 0) {\n\t\t\t// some properties could not be cloned\n\t\t\tconst slice = paths.length > 10 ? paths.slice(0, 7) : paths.slice(0, 10);\n\t\t\tconst excess = paths.length - slice.length;\n\n\t\t\tlet uncloned = slice.map((path) => `- <value>${path}`).join('\\n');\n\t\t\tif (excess > 0) uncloned += `\\n- ...and ${excess} more`;\n\n\t\t\tw.state_snapshot_uncloneable(uncloned);\n\t\t}\n\n\t\treturn copy;\n\t}\n\n\treturn clone(value, new Map(), '', empty);\n}\n\n/**\n * @template T\n * @param {T} value\n * @param {Map<T, Snapshot<T>>} cloned\n * @param {string} path\n * @param {string[]} paths\n * @param {null | T} original The original value, if `value` was produced from a `toJSON` call\n * @returns {Snapshot<T>}\n */\nfunction clone(value, cloned, path, paths, original = null) {\n\tif (typeof value === 'object' && value !== null) {\n\t\tvar unwrapped = cloned.get(value);\n\t\tif (unwrapped !== undefined) return unwrapped;\n\n\t\tif (value instanceof Map) return /** @type {Snapshot<T>} */ (new Map(value));\n\t\tif (value instanceof Set) return /** @type {Snapshot<T>} */ (new Set(value));\n\n\t\tif (is_array(value)) {\n\t\t\tvar copy = /** @type {Snapshot<any>} */ (Array(value.length));\n\t\t\tcloned.set(value, copy);\n\n\t\t\tif (original !== null) {\n\t\t\t\tcloned.set(original, copy);\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < value.length; i += 1) {\n\t\t\t\tvar element = value[i];\n\t\t\t\tif (i in value) {\n\t\t\t\t\tcopy[i] = clone(element, cloned, DEV ? `${path}[${i}]` : path, paths);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn copy;\n\t\t}\n\n\t\tif (get_prototype_of(value) === object_prototype) {\n\t\t\t/** @type {Snapshot<any>} */\n\t\t\tcopy = {};\n\t\t\tcloned.set(value, copy);\n\n\t\t\tif (original !== null) {\n\t\t\t\tcloned.set(original, copy);\n\t\t\t}\n\n\t\t\tfor (var key in value) {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tcopy[key] = clone(value[key], cloned, DEV ? `${path}.${key}` : path, paths);\n\t\t\t}\n\n\t\t\treturn copy;\n\t\t}\n\n\t\tif (value instanceof Date) {\n\t\t\treturn /** @type {Snapshot<T>} */ (structuredClone(value));\n\t\t}\n\n\t\tif (typeof (/** @type {T & { toJSON?: any } } */ (value).toJSON) === 'function') {\n\t\t\treturn clone(\n\t\t\t\t/** @type {T & { toJSON(): any } } */ (value).toJSON(),\n\t\t\t\tcloned,\n\t\t\t\tDEV ? `${path}.toJSON()` : path,\n\t\t\t\tpaths,\n\t\t\t\t// Associate the instance with the toJSON clone\n\t\t\t\tvalue\n\t\t\t);\n\t\t}\n\t}\n\n\tif (value instanceof EventTarget) {\n\t\t// can't be cloned\n\t\treturn /** @type {Snapshot<T>} */ (value);\n\t}\n\n\ttry {\n\t\treturn /** @type {Snapshot<T>} */ (structuredClone(value));\n\t} catch (e) {\n\t\tif (DEV) {\n\t\t\tpaths.push(path);\n\t\t}\n\n\t\treturn /** @type {Snapshot<T>} */ (value);\n\t}\n}\n","/** @import { Effect, Source, TemplateNode } from '#client' */\nimport { DEV } from 'esm-env';\nimport { is_promise } from '../../../shared/utils.js';\nimport { block, branch, pause_effect, resume_effect } from '../../reactivity/effects.js';\nimport { internal_set, mutable_source, source } from '../../reactivity/sources.js';\nimport { set_active_effect, set_active_reaction } from '../../runtime.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { queue_micro_task } from '../task.js';\nimport { HYDRATION_START_ELSE, UNINITIALIZED } from '../../../../constants.js';\nimport {\n\tcomponent_context,\n\tdev_stack,\n\tis_runes,\n\tset_component_context,\n\tset_dev_current_component_function,\n\tset_dev_stack\n} from '../../context.js';\nimport { flushSync } from '../../reactivity/batch.js';\n\nconst PENDING = 0;\nconst THEN = 1;\nconst CATCH = 2;\n\n/** @typedef {typeof PENDING | typeof THEN | typeof CATCH} AwaitState */\n\n/**\n * @template V\n * @param {TemplateNode} node\n * @param {(() => Promise<V>)} get_input\n * @param {null | ((anchor: Node) => void)} pending_fn\n * @param {null | ((anchor: Node, value: Source<V>) => void)} then_fn\n * @param {null | ((anchor: Node, error: unknown) => void)} catch_fn\n * @returns {void}\n */\nexport function await_block(node, get_input, pending_fn, then_fn, catch_fn) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar anchor = node;\n\tvar runes = is_runes();\n\tvar active_component_context = component_context;\n\n\t/** @type {any} */\n\tvar component_function = DEV ? component_context?.function : null;\n\tvar dev_original_stack = DEV ? dev_stack : null;\n\n\t/** @type {V | Promise<V> | typeof UNINITIALIZED} */\n\tvar input = UNINITIALIZED;\n\n\t/** @type {Effect | null} */\n\tvar pending_effect;\n\n\t/** @type {Effect | null} */\n\tvar then_effect;\n\n\t/** @type {Effect | null} */\n\tvar catch_effect;\n\n\tvar input_source = runes\n\t\t? source(/** @type {V} */ (undefined))\n\t\t: mutable_source(/** @type {V} */ (undefined), false, false);\n\tvar error_source = runes ? source(undefined) : mutable_source(undefined, false, false);\n\tvar resolved = false;\n\t/**\n\t * @param {AwaitState} state\n\t * @param {boolean} restore\n\t */\n\tfunction update(state, restore) {\n\t\tresolved = true;\n\n\t\tif (restore) {\n\t\t\tset_active_effect(effect);\n\t\t\tset_active_reaction(effect); // TODO do we need both?\n\t\t\tset_component_context(active_component_context);\n\t\t\tif (DEV) {\n\t\t\t\tset_dev_current_component_function(component_function);\n\t\t\t\tset_dev_stack(dev_original_stack);\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tif (state === PENDING && pending_fn) {\n\t\t\t\tif (pending_effect) resume_effect(pending_effect);\n\t\t\t\telse pending_effect = branch(() => pending_fn(anchor));\n\t\t\t}\n\n\t\t\tif (state === THEN && then_fn) {\n\t\t\t\tif (then_effect) resume_effect(then_effect);\n\t\t\t\telse then_effect = branch(() => then_fn(anchor, input_source));\n\t\t\t}\n\n\t\t\tif (state === CATCH && catch_fn) {\n\t\t\t\tif (catch_effect) resume_effect(catch_effect);\n\t\t\t\telse catch_effect = branch(() => catch_fn(anchor, error_source));\n\t\t\t}\n\n\t\t\tif (state !== PENDING && pending_effect) {\n\t\t\t\tpause_effect(pending_effect, () => (pending_effect = null));\n\t\t\t}\n\n\t\t\tif (state !== THEN && then_effect) {\n\t\t\t\tpause_effect(then_effect, () => (then_effect = null));\n\t\t\t}\n\n\t\t\tif (state !== CATCH && catch_effect) {\n\t\t\t\tpause_effect(catch_effect, () => (catch_effect = null));\n\t\t\t}\n\t\t} finally {\n\t\t\tif (restore) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tset_dev_current_component_function(null);\n\t\t\t\t\tset_dev_stack(null);\n\t\t\t\t}\n\n\t\t\t\tset_component_context(null);\n\t\t\t\tset_active_reaction(null);\n\t\t\t\tset_active_effect(null);\n\n\t\t\t\t// without this, the DOM does not update until two ticks after the promise\n\t\t\t\t// resolves, which is unexpected behaviour (and somewhat irksome to test)\n\t\t\t\tflushSync();\n\t\t\t}\n\t\t}\n\t}\n\n\tvar effect = block(() => {\n\t\tif (input === (input = get_input())) return;\n\n\t\t/** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\t// @ts-ignore coercing `anchor` to a `Comment` causes TypeScript and Prettier to fight\n\t\tlet mismatch = hydrating && is_promise(input) === (anchor.data === HYDRATION_START_ELSE);\n\n\t\tif (mismatch) {\n\t\t\t// Hydration mismatch: remove everything inside the anchor and start fresh\n\t\t\tanchor = remove_nodes();\n\n\t\t\tset_hydrate_node(anchor);\n\t\t\tset_hydrating(false);\n\t\t\tmismatch = true;\n\t\t}\n\n\t\tif (is_promise(input)) {\n\t\t\tvar promise = input;\n\n\t\t\tresolved = false;\n\n\t\t\tpromise.then(\n\t\t\t\t(value) => {\n\t\t\t\t\tif (promise !== input) return;\n\t\t\t\t\t// we technically could use `set` here since it's on the next microtick\n\t\t\t\t\t// but let's use internal_set for consistency and just to be safe\n\t\t\t\t\tinternal_set(input_source, value);\n\t\t\t\t\tupdate(THEN, true);\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tif (promise !== input) return;\n\t\t\t\t\t// we technically could use `set` here since it's on the next microtick\n\t\t\t\t\t// but let's use internal_set for consistency and just to be safe\n\t\t\t\t\tinternal_set(error_source, error);\n\t\t\t\t\tupdate(CATCH, true);\n\t\t\t\t\tif (!catch_fn) {\n\t\t\t\t\t\t// Rethrow the error if no catch block exists\n\t\t\t\t\t\tthrow error_source.v;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tif (hydrating) {\n\t\t\t\tif (pending_fn) {\n\t\t\t\t\tpending_effect = branch(() => pending_fn(anchor));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Wait a microtask before checking if we should show the pending state as\n\t\t\t\t// the promise might have resolved by the next microtask.\n\t\t\t\tqueue_micro_task(() => {\n\t\t\t\t\tif (!resolved) update(PENDING, true);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tinternal_set(input_source, input);\n\t\t\tupdate(THEN, false);\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\n\t\t// Set the input to something else, in order to disable the promise callbacks\n\t\treturn () => (input = UNINITIALIZED);\n\t});\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n","/** @import { Batch } from '../../../reactivity/batch.js' */\nimport { DEV } from 'esm-env';\nimport { render_effect, teardown } from '../../../reactivity/effects.js';\nimport { listen_to_event_and_reset_event } from './shared.js';\nimport * as e from '../../../errors.js';\nimport { is } from '../../../proxy.js';\nimport { queue_micro_task } from '../../task.js';\nimport { hydrating } from '../../hydration.js';\nimport { untrack } from '../../../runtime.js';\nimport { is_runes } from '../../../context.js';\nimport { current_batch, previous_batch } from '../../../reactivity/batch.js';\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_value(input, get, set = get) {\n\tvar runes = is_runes();\n\n\tvar batches = new WeakSet();\n\n\tlisten_to_event_and_reset_event(input, 'input', (is_reset) => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\t/** @type {any} */\n\t\tvar value = is_reset ? input.defaultValue : input.value;\n\t\tvalue = is_numberlike_input(input) ? to_number(value) : value;\n\t\tset(value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\n\t\t// In runes mode, respect any validation in accessors (doesn't apply in legacy mode,\n\t\t// because we use mutable state which ensures the render effect always runs)\n\t\tif (runes && value !== (value = get())) {\n\t\t\tvar start = input.selectionStart;\n\t\t\tvar end = input.selectionEnd;\n\n\t\t\t// the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\n\t\t\t// Restore selection\n\t\t\tif (end !== null) {\n\t\t\t\tinput.selectionStart = start;\n\t\t\t\tinput.selectionEnd = Math.min(end, input.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\t(hydrating && input.defaultValue !== input.value) ||\n\t\t// If defaultValue is set, then value == defaultValue\n\t\t// TODO Svelte 6: remove input.value check and set to empty string?\n\t\t(untrack(get) == null && input.value)\n\t) {\n\t\tset(is_numberlike_input(input) ? to_number(input.value) : input.value);\n\n\t\tif (current_batch !== null) {\n\t\t\tbatches.add(current_batch);\n\t\t}\n\t}\n\n\trender_effect(() => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\tvar value = get();\n\n\t\tif (input === document.activeElement) {\n\t\t\t// we need both, because in non-async mode, render effects run before previous_batch is set\n\t\t\tvar batch = /** @type {Batch} */ (previous_batch ?? current_batch);\n\n\t\t\t// Never rewrite the contents of a focused input. We can get here if, for example,\n\t\t\t// an update is deferred because of async work depending on the input:\n\t\t\t//\n\t\t\t// <input bind:value={query}>\n\t\t\t// <p>{await find(query)}</p>\n\t\t\tif (batches.has(batch)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (is_numberlike_input(input) && value === to_number(input.value)) {\n\t\t\t// handles 0 vs 00 case (see https://github.com/sveltejs/svelte/issues/9959)\n\t\t\treturn;\n\t\t}\n\n\t\tif (input.type === 'date' && !value && !input.value) {\n\t\t\t// Handles the case where a temporarily invalid date is set (while typing, for example with a leading 0 for the day)\n\t\t\t// and prevents this state from clearing the other parts of the date input (see https://github.com/sveltejs/svelte/issues/7897)\n\t\t\treturn;\n\t\t}\n\n\t\t// don't set the value of the input if it's the same to allow\n\t\t// minlength to work properly\n\t\tif (value !== input.value) {\n\t\t\t// @ts-expect-error the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\t\t}\n\t});\n}\n\n/** @type {Set<HTMLInputElement[]>} */\nconst pending = new Set();\n\n/**\n * @param {HTMLInputElement[]} inputs\n * @param {null | [number]} group_index\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_group(inputs, group_index, input, get, set = get) {\n\tvar is_checkbox = input.getAttribute('type') === 'checkbox';\n\tvar binding_group = inputs;\n\n\t// needs to be let or related code isn't treeshaken out if it's always false\n\tlet hydration_mismatch = false;\n\n\tif (group_index !== null) {\n\t\tfor (var index of group_index) {\n\t\t\t// @ts-expect-error\n\t\t\tbinding_group = binding_group[index] ??= [];\n\t\t}\n\t}\n\n\tbinding_group.push(input);\n\n\tlisten_to_event_and_reset_event(\n\t\tinput,\n\t\t'change',\n\t\t() => {\n\t\t\t// @ts-ignore\n\t\t\tvar value = input.__value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t}\n\n\t\t\tset(value);\n\t\t},\n\t\t// TODO better default value handling\n\t\t() => set(is_checkbox ? [] : null)\n\t);\n\n\trender_effect(() => {\n\t\tvar value = get();\n\n\t\t// If we are hydrating and the value has since changed, then use the update value\n\t\t// from the input instead.\n\t\tif (hydrating && input.defaultChecked !== input.checked) {\n\t\t\thydration_mismatch = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_checkbox) {\n\t\t\tvalue = value || [];\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = value.includes(input.__value);\n\t\t} else {\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = is(input.__value, value);\n\t\t}\n\t});\n\n\tteardown(() => {\n\t\tvar index = binding_group.indexOf(input);\n\n\t\tif (index !== -1) {\n\t\t\tbinding_group.splice(index, 1);\n\t\t}\n\t});\n\n\tif (!pending.has(binding_group)) {\n\t\tpending.add(binding_group);\n\n\t\tqueue_micro_task(() => {\n\t\t\t// necessary to maintain binding group order in all insertion scenarios\n\t\t\tbinding_group.sort((a, b) => (a.compareDocumentPosition(b) === 4 ? -1 : 1));\n\t\t\tpending.delete(binding_group);\n\t\t});\n\t}\n\n\tqueue_micro_task(() => {\n\t\tif (hydration_mismatch) {\n\t\t\tvar value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t} else {\n\t\t\t\tvar hydration_input = binding_group.find((input) => input.checked);\n\t\t\t\t// @ts-ignore\n\t\t\t\tvalue = hydration_input?.__value;\n\t\t\t}\n\n\t\t\tset(value);\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_checked(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', (is_reset) => {\n\t\tvar value = is_reset ? input.defaultChecked : input.checked;\n\t\tset(value);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the update value from the input instead.\n\t\t(hydrating && input.defaultChecked !== input.checked) ||\n\t\t// If defaultChecked is set, then checked == defaultChecked\n\t\tuntrack(get) == null\n\t) {\n\t\tset(input.checked);\n\t}\n\n\trender_effect(() => {\n\t\tvar value = get();\n\t\tinput.checked = Boolean(value);\n\t});\n}\n\n/**\n * @template V\n * @param {Array<HTMLInputElement>} group\n * @param {V} __value\n * @param {boolean} checked\n * @returns {V[]}\n */\nfunction get_binding_group_value(group, __value, checked) {\n\t/** @type {Set<V>} */\n\tvar value = new Set();\n\n\tfor (var i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) {\n\t\t\t// @ts-ignore\n\t\t\tvalue.add(group[i].__value);\n\t\t}\n\t}\n\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement} input\n */\nfunction is_numberlike_input(input) {\n\tvar type = input.type;\n\treturn type === 'number' || type === 'range';\n}\n\n/**\n * @param {string} value\n */\nfunction to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => FileList | null} get\n * @param {(value: FileList | null) => void} set\n */\nexport function bind_files(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', () => {\n\t\tset(input.files);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\thydrating &&\n\t\tinput.files\n\t) {\n\t\tset(input.files);\n\t}\n\n\trender_effect(() => {\n\t\tinput.files = get();\n\t});\n}\n","/** @import { Readable, Writable } from './public.js' */\nimport {\n\teffect_root,\n\teffect_tracking,\n\trender_effect\n} from '../internal/client/reactivity/effects.js';\nimport { get, writable } from './shared/index.js';\nimport { createSubscriber } from '../reactivity/create-subscriber.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../internal/client/runtime.js';\n\nexport { derived, get, readable, readonly, writable } from './shared/index.js';\n\n/**\n * @template V\n * @overload\n * @param {() => V} get\n * @param {(v: V) => void} set\n * @returns {Writable<V>}\n */\n/**\n * @template V\n * @overload\n * @param {() => V} get\n * @returns {Readable<V>}\n */\n/**\n * Create a store from a function that returns state, and (to make a writable store), an\n * optional second function that sets state.\n *\n * ```ts\n * import { toStore } from 'svelte/store';\n *\n * let count = $state(0);\n *\n * const store = toStore(() => count, (v) => (count = v));\n * ```\n * @template V\n * @param {() => V} get\n * @param {(v: V) => void} [set]\n * @returns {Writable<V> | Readable<V>}\n */\nexport function toStore(get, set) {\n\tvar effect = active_effect;\n\tvar reaction = active_reaction;\n\tvar init_value = get();\n\n\tconst store = writable(init_value, (set) => {\n\t\t// If the value has changed before we call subscribe, then\n\t\t// we need to treat the value as already having run\n\t\tvar ran = init_value !== get();\n\n\t\t// TODO do we need a different implementation on the server?\n\t\tvar teardown;\n\t\t// Apply the reaction and effect at the time of toStore being called\n\t\tvar previous_reaction = active_reaction;\n\t\tvar previous_effect = active_effect;\n\t\tset_active_reaction(reaction);\n\t\tset_active_effect(effect);\n\n\t\ttry {\n\t\t\tteardown = effect_root(() => {\n\t\t\t\trender_effect(() => {\n\t\t\t\t\tconst value = get();\n\t\t\t\t\tif (ran) set(value);\n\t\t\t\t});\n\t\t\t});\n\t\t} finally {\n\t\t\tset_active_reaction(previous_reaction);\n\t\t\tset_active_effect(previous_effect);\n\t\t}\n\n\t\tran = true;\n\n\t\treturn teardown;\n\t});\n\n\tif (set) {\n\t\treturn {\n\t\t\tset,\n\t\t\tupdate: (fn) => set(fn(get())),\n\t\t\tsubscribe: store.subscribe\n\t\t};\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe\n\t};\n}\n\n/**\n * @template V\n * @overload\n * @param {Writable<V>} store\n * @returns {{ current: V }}\n */\n/**\n * @template V\n * @overload\n * @param {Readable<V>} store\n * @returns {{ readonly current: V }}\n */\n/**\n * Convert a store to an object with a reactive `current` property. If `store`\n * is a readable store, `current` will be a readonly property.\n *\n * ```ts\n * import { fromStore, get, writable } from 'svelte/store';\n *\n * const store = writable(0);\n *\n * const count = fromStore(store);\n *\n * count.current; // 0;\n * store.set(1);\n * count.current; // 1\n *\n * count.current += 1;\n * get(store); // 2\n * ```\n * @template V\n * @param {Writable<V> | Readable<V>} store\n */\nexport function fromStore(store) {\n\tlet value = /** @type {V} */ (undefined);\n\n\tconst subscribe = createSubscriber((update) => {\n\t\tlet ran = false;\n\n\t\tconst unsubscribe = store.subscribe((v) => {\n\t\t\tvalue = v;\n\t\t\tif (ran) update();\n\t\t});\n\n\t\tran = true;\n\n\t\treturn unsubscribe;\n\t});\n\n\tfunction current() {\n\t\tif (effect_tracking()) {\n\t\t\tsubscribe();\n\t\t\treturn value;\n\t\t}\n\n\t\treturn get(store);\n\t}\n\n\tif ('set' in store) {\n\t\treturn {\n\t\t\tget current() {\n\t\t\t\treturn current();\n\t\t\t},\n\t\t\tset current(v) {\n\t\t\t\tstore.set(v);\n\t\t\t}\n\t\t};\n\t}\n\n\treturn {\n\t\tget current() {\n\t\t\treturn current();\n\t\t}\n\t};\n}\n","import { BROWSER, DEV } from 'esm-env';\nexport { building, version } from '__sveltekit/environment';\n\nexport const browser = BROWSER;\n\nexport const dev = DEV;\n","<script lang=\"ts\">\n  let {\n    values = [\"a\", \"b\", \"c\"],\n    choice = $bindable(),\n  }: { values?: string[], choice: string } = $props()\n</script>\n\n<div class=\"flex flex-row items-center gap-1 rounded-md bg-neutral-8 p-1 text-xs shadow-(md neutral-9/15)\">\n  {#each values as id}\n    <input tabindex=\"-1\" type=\"radio\" {id} class=\"sr-only\" onselect={() => choice = id} checked={choice === id} />\n    <button onclick={() => choice = id} class=\"rounded px-2 py-1 transition hover:bg-neutral-7\" class:on={choice === id}>{id}</button>\n  {/each}\n</div>\n\n<style>\n  .on {\n    --uno: bg-neutral-3 text-neutral-8;\n  }\n</style>\n","<script lang=\"ts\">\n  import type { Snippet } from \"svelte\"\n\n  import \"./md.css\"\n\n  const { children }: { children: Snippet } = $props()\n</script>\n\n<article class=\"max-h-full max-w-full overflow-scroll p-3 prose\">\n  {@render children()}\n</article>\n","export function cached<T extends (arg: any) => any>(fn: T, maxSize = 3): (arg: Parameters<T>[0]) => ReturnType<T> {\n  const cache = new Map<Parameters<T>[0], ReturnType<T>>()\n\n  return function (arg: Parameters<T>[0]) {\n    if (cache.has(arg)) {\n      return cache.get(arg) as ReturnType<T>\n    }\n\n    if (cache.size >= maxSize) {\n      const firstKey = cache.keys().next().value\n      cache.delete(firstKey)\n    }\n\n    const result = fn(arg)\n    cache.set(arg, result)\n\n    if (result instanceof Promise) {\n      result.then((res) => cache.has(res) && cache.set(arg, res))\n    }\n\n    return result\n  }\n}\n","class ShikiError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"ShikiError\";\n  }\n}\n\nexport { ShikiError };\n","// src/utils.ts\nfunction clone(something) {\n  return doClone(something);\n}\nfunction doClone(something) {\n  if (Array.isArray(something)) {\n    return cloneArray(something);\n  }\n  if (something instanceof RegExp) {\n    return something;\n  }\n  if (typeof something === \"object\") {\n    return cloneObj(something);\n  }\n  return something;\n}\nfunction cloneArray(arr) {\n  let r = [];\n  for (let i = 0, len = arr.length; i < len; i++) {\n    r[i] = doClone(arr[i]);\n  }\n  return r;\n}\nfunction cloneObj(obj) {\n  let r = {};\n  for (let key in obj) {\n    r[key] = doClone(obj[key]);\n  }\n  return r;\n}\nfunction mergeObjects(target, ...sources) {\n  sources.forEach((source) => {\n    for (let key in source) {\n      target[key] = source[key];\n    }\n  });\n  return target;\n}\nfunction basename(path) {\n  const idx = ~path.lastIndexOf(\"/\") || ~path.lastIndexOf(\"\\\\\");\n  if (idx === 0) {\n    return path;\n  } else if (~idx === path.length - 1) {\n    return basename(path.substring(0, path.length - 1));\n  } else {\n    return path.substr(~idx + 1);\n  }\n}\nvar CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/g;\nvar RegexSource = class {\n  static hasCaptures(regexSource) {\n    if (regexSource === null) {\n      return false;\n    }\n    CAPTURING_REGEX_SOURCE.lastIndex = 0;\n    return CAPTURING_REGEX_SOURCE.test(regexSource);\n  }\n  static replaceCaptures(regexSource, captureSource, captureIndices) {\n    return regexSource.replace(CAPTURING_REGEX_SOURCE, (match, index, commandIndex, command) => {\n      let capture = captureIndices[parseInt(index || commandIndex, 10)];\n      if (capture) {\n        let result = captureSource.substring(capture.start, capture.end);\n        while (result[0] === \".\") {\n          result = result.substring(1);\n        }\n        switch (command) {\n          case \"downcase\":\n            return result.toLowerCase();\n          case \"upcase\":\n            return result.toUpperCase();\n          default:\n            return result;\n        }\n      } else {\n        return match;\n      }\n    });\n  }\n};\nfunction strcmp(a, b) {\n  if (a < b) {\n    return -1;\n  }\n  if (a > b) {\n    return 1;\n  }\n  return 0;\n}\nfunction strArrCmp(a, b) {\n  if (a === null && b === null) {\n    return 0;\n  }\n  if (!a) {\n    return -1;\n  }\n  if (!b) {\n    return 1;\n  }\n  let len1 = a.length;\n  let len2 = b.length;\n  if (len1 === len2) {\n    for (let i = 0; i < len1; i++) {\n      let res = strcmp(a[i], b[i]);\n      if (res !== 0) {\n        return res;\n      }\n    }\n    return 0;\n  }\n  return len1 - len2;\n}\nfunction isValidHexColor(hex) {\n  if (/^#[0-9a-f]{6}$/i.test(hex)) {\n    return true;\n  }\n  if (/^#[0-9a-f]{8}$/i.test(hex)) {\n    return true;\n  }\n  if (/^#[0-9a-f]{3}$/i.test(hex)) {\n    return true;\n  }\n  if (/^#[0-9a-f]{4}$/i.test(hex)) {\n    return true;\n  }\n  return false;\n}\nfunction escapeRegExpCharacters(value) {\n  return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, \"\\\\$&\");\n}\nvar CachedFn = class {\n  constructor(fn) {\n    this.fn = fn;\n  }\n  cache = /* @__PURE__ */ new Map();\n  get(key) {\n    if (this.cache.has(key)) {\n      return this.cache.get(key);\n    }\n    const value = this.fn(key);\n    this.cache.set(key, value);\n    return value;\n  }\n};\n\n// src/theme.ts\nvar Theme = class {\n  constructor(_colorMap, _defaults, _root) {\n    this._colorMap = _colorMap;\n    this._defaults = _defaults;\n    this._root = _root;\n  }\n  static createFromRawTheme(source, colorMap) {\n    return this.createFromParsedTheme(parseTheme(source), colorMap);\n  }\n  static createFromParsedTheme(source, colorMap) {\n    return resolveParsedThemeRules(source, colorMap);\n  }\n  _cachedMatchRoot = new CachedFn(\n    (scopeName) => this._root.match(scopeName)\n  );\n  getColorMap() {\n    return this._colorMap.getColorMap();\n  }\n  getDefaults() {\n    return this._defaults;\n  }\n  match(scopePath) {\n    if (scopePath === null) {\n      return this._defaults;\n    }\n    const scopeName = scopePath.scopeName;\n    const matchingTrieElements = this._cachedMatchRoot.get(scopeName);\n    const effectiveRule = matchingTrieElements.find(\n      (v) => _scopePathMatchesParentScopes(scopePath.parent, v.parentScopes)\n    );\n    if (!effectiveRule) {\n      return null;\n    }\n    return new StyleAttributes(\n      effectiveRule.fontStyle,\n      effectiveRule.foreground,\n      effectiveRule.background\n    );\n  }\n};\nvar ScopeStack = class _ScopeStack {\n  constructor(parent, scopeName) {\n    this.parent = parent;\n    this.scopeName = scopeName;\n  }\n  static push(path, scopeNames) {\n    for (const name of scopeNames) {\n      path = new _ScopeStack(path, name);\n    }\n    return path;\n  }\n  static from(...segments) {\n    let result = null;\n    for (let i = 0; i < segments.length; i++) {\n      result = new _ScopeStack(result, segments[i]);\n    }\n    return result;\n  }\n  push(scopeName) {\n    return new _ScopeStack(this, scopeName);\n  }\n  getSegments() {\n    let item = this;\n    const result = [];\n    while (item) {\n      result.push(item.scopeName);\n      item = item.parent;\n    }\n    result.reverse();\n    return result;\n  }\n  toString() {\n    return this.getSegments().join(\" \");\n  }\n  extends(other) {\n    if (this === other) {\n      return true;\n    }\n    if (this.parent === null) {\n      return false;\n    }\n    return this.parent.extends(other);\n  }\n  getExtensionIfDefined(base) {\n    const result = [];\n    let item = this;\n    while (item && item !== base) {\n      result.push(item.scopeName);\n      item = item.parent;\n    }\n    return item === base ? result.reverse() : void 0;\n  }\n};\nfunction _scopePathMatchesParentScopes(scopePath, parentScopes) {\n  if (parentScopes.length === 0) {\n    return true;\n  }\n  for (let index = 0; index < parentScopes.length; index++) {\n    let scopePattern = parentScopes[index];\n    let scopeMustMatch = false;\n    if (scopePattern === \">\") {\n      if (index === parentScopes.length - 1) {\n        return false;\n      }\n      scopePattern = parentScopes[++index];\n      scopeMustMatch = true;\n    }\n    while (scopePath) {\n      if (_matchesScope(scopePath.scopeName, scopePattern)) {\n        break;\n      }\n      if (scopeMustMatch) {\n        return false;\n      }\n      scopePath = scopePath.parent;\n    }\n    if (!scopePath) {\n      return false;\n    }\n    scopePath = scopePath.parent;\n  }\n  return true;\n}\nfunction _matchesScope(scopeName, scopePattern) {\n  return scopePattern === scopeName || scopeName.startsWith(scopePattern) && scopeName[scopePattern.length] === \".\";\n}\nvar StyleAttributes = class {\n  constructor(fontStyle, foregroundId, backgroundId) {\n    this.fontStyle = fontStyle;\n    this.foregroundId = foregroundId;\n    this.backgroundId = backgroundId;\n  }\n};\nfunction parseTheme(source) {\n  if (!source) {\n    return [];\n  }\n  if (!source.settings || !Array.isArray(source.settings)) {\n    return [];\n  }\n  let settings = source.settings;\n  let result = [], resultLen = 0;\n  for (let i = 0, len = settings.length; i < len; i++) {\n    let entry = settings[i];\n    if (!entry.settings) {\n      continue;\n    }\n    let scopes;\n    if (typeof entry.scope === \"string\") {\n      let _scope = entry.scope;\n      _scope = _scope.replace(/^[,]+/, \"\");\n      _scope = _scope.replace(/[,]+$/, \"\");\n      scopes = _scope.split(\",\");\n    } else if (Array.isArray(entry.scope)) {\n      scopes = entry.scope;\n    } else {\n      scopes = [\"\"];\n    }\n    let fontStyle = -1 /* NotSet */;\n    if (typeof entry.settings.fontStyle === \"string\") {\n      fontStyle = 0 /* None */;\n      let segments = entry.settings.fontStyle.split(\" \");\n      for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n        let segment = segments[j];\n        switch (segment) {\n          case \"italic\":\n            fontStyle = fontStyle | 1 /* Italic */;\n            break;\n          case \"bold\":\n            fontStyle = fontStyle | 2 /* Bold */;\n            break;\n          case \"underline\":\n            fontStyle = fontStyle | 4 /* Underline */;\n            break;\n          case \"strikethrough\":\n            fontStyle = fontStyle | 8 /* Strikethrough */;\n            break;\n        }\n      }\n    }\n    let foreground = null;\n    if (typeof entry.settings.foreground === \"string\" && isValidHexColor(entry.settings.foreground)) {\n      foreground = entry.settings.foreground;\n    }\n    let background = null;\n    if (typeof entry.settings.background === \"string\" && isValidHexColor(entry.settings.background)) {\n      background = entry.settings.background;\n    }\n    for (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n      let _scope = scopes[j].trim();\n      let segments = _scope.split(\" \");\n      let scope = segments[segments.length - 1];\n      let parentScopes = null;\n      if (segments.length > 1) {\n        parentScopes = segments.slice(0, segments.length - 1);\n        parentScopes.reverse();\n      }\n      result[resultLen++] = new ParsedThemeRule(\n        scope,\n        parentScopes,\n        i,\n        fontStyle,\n        foreground,\n        background\n      );\n    }\n  }\n  return result;\n}\nvar ParsedThemeRule = class {\n  constructor(scope, parentScopes, index, fontStyle, foreground, background) {\n    this.scope = scope;\n    this.parentScopes = parentScopes;\n    this.index = index;\n    this.fontStyle = fontStyle;\n    this.foreground = foreground;\n    this.background = background;\n  }\n};\nvar FontStyle = /* @__PURE__ */ ((FontStyle2) => {\n  FontStyle2[FontStyle2[\"NotSet\"] = -1] = \"NotSet\";\n  FontStyle2[FontStyle2[\"None\"] = 0] = \"None\";\n  FontStyle2[FontStyle2[\"Italic\"] = 1] = \"Italic\";\n  FontStyle2[FontStyle2[\"Bold\"] = 2] = \"Bold\";\n  FontStyle2[FontStyle2[\"Underline\"] = 4] = \"Underline\";\n  FontStyle2[FontStyle2[\"Strikethrough\"] = 8] = \"Strikethrough\";\n  return FontStyle2;\n})(FontStyle || {});\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n  parsedThemeRules.sort((a, b) => {\n    let r = strcmp(a.scope, b.scope);\n    if (r !== 0) {\n      return r;\n    }\n    r = strArrCmp(a.parentScopes, b.parentScopes);\n    if (r !== 0) {\n      return r;\n    }\n    return a.index - b.index;\n  });\n  let defaultFontStyle = 0 /* None */;\n  let defaultForeground = \"#000000\";\n  let defaultBackground = \"#ffffff\";\n  while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === \"\") {\n    let incomingDefaults = parsedThemeRules.shift();\n    if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n      defaultFontStyle = incomingDefaults.fontStyle;\n    }\n    if (incomingDefaults.foreground !== null) {\n      defaultForeground = incomingDefaults.foreground;\n    }\n    if (incomingDefaults.background !== null) {\n      defaultBackground = incomingDefaults.background;\n    }\n  }\n  let colorMap = new ColorMap(_colorMap);\n  let defaults = new StyleAttributes(defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n  let root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n  for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n    let rule = parsedThemeRules[i];\n    root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n  }\n  return new Theme(colorMap, defaults, root);\n}\nvar ColorMap = class {\n  _isFrozen;\n  _lastColorId;\n  _id2color;\n  _color2id;\n  constructor(_colorMap) {\n    this._lastColorId = 0;\n    this._id2color = [];\n    this._color2id = /* @__PURE__ */ Object.create(null);\n    if (Array.isArray(_colorMap)) {\n      this._isFrozen = true;\n      for (let i = 0, len = _colorMap.length; i < len; i++) {\n        this._color2id[_colorMap[i]] = i;\n        this._id2color[i] = _colorMap[i];\n      }\n    } else {\n      this._isFrozen = false;\n    }\n  }\n  getId(color) {\n    if (color === null) {\n      return 0;\n    }\n    color = color.toUpperCase();\n    let value = this._color2id[color];\n    if (value) {\n      return value;\n    }\n    if (this._isFrozen) {\n      throw new Error(`Missing color in color map - ${color}`);\n    }\n    value = ++this._lastColorId;\n    this._color2id[color] = value;\n    this._id2color[value] = color;\n    return value;\n  }\n  getColorMap() {\n    return this._id2color.slice(0);\n  }\n};\nvar emptyParentScopes = Object.freeze([]);\nvar ThemeTrieElementRule = class _ThemeTrieElementRule {\n  scopeDepth;\n  parentScopes;\n  fontStyle;\n  foreground;\n  background;\n  constructor(scopeDepth, parentScopes, fontStyle, foreground, background) {\n    this.scopeDepth = scopeDepth;\n    this.parentScopes = parentScopes || emptyParentScopes;\n    this.fontStyle = fontStyle;\n    this.foreground = foreground;\n    this.background = background;\n  }\n  clone() {\n    return new _ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n  }\n  static cloneArr(arr) {\n    let r = [];\n    for (let i = 0, len = arr.length; i < len; i++) {\n      r[i] = arr[i].clone();\n    }\n    return r;\n  }\n  acceptOverwrite(scopeDepth, fontStyle, foreground, background) {\n    if (this.scopeDepth > scopeDepth) {\n      console.log(\"how did this happen?\");\n    } else {\n      this.scopeDepth = scopeDepth;\n    }\n    if (fontStyle !== -1 /* NotSet */) {\n      this.fontStyle = fontStyle;\n    }\n    if (foreground !== 0) {\n      this.foreground = foreground;\n    }\n    if (background !== 0) {\n      this.background = background;\n    }\n  }\n};\nvar ThemeTrieElement = class _ThemeTrieElement {\n  constructor(_mainRule, rulesWithParentScopes = [], _children = {}) {\n    this._mainRule = _mainRule;\n    this._children = _children;\n    this._rulesWithParentScopes = rulesWithParentScopes;\n  }\n  _rulesWithParentScopes;\n  static _cmpBySpecificity(a, b) {\n    if (a.scopeDepth !== b.scopeDepth) {\n      return b.scopeDepth - a.scopeDepth;\n    }\n    let aParentIndex = 0;\n    let bParentIndex = 0;\n    while (true) {\n      if (a.parentScopes[aParentIndex] === \">\") {\n        aParentIndex++;\n      }\n      if (b.parentScopes[bParentIndex] === \">\") {\n        bParentIndex++;\n      }\n      if (aParentIndex >= a.parentScopes.length || bParentIndex >= b.parentScopes.length) {\n        break;\n      }\n      const parentScopeLengthDiff = b.parentScopes[bParentIndex].length - a.parentScopes[aParentIndex].length;\n      if (parentScopeLengthDiff !== 0) {\n        return parentScopeLengthDiff;\n      }\n      aParentIndex++;\n      bParentIndex++;\n    }\n    return b.parentScopes.length - a.parentScopes.length;\n  }\n  match(scope) {\n    if (scope !== \"\") {\n      let dotIndex = scope.indexOf(\".\");\n      let head;\n      let tail;\n      if (dotIndex === -1) {\n        head = scope;\n        tail = \"\";\n      } else {\n        head = scope.substring(0, dotIndex);\n        tail = scope.substring(dotIndex + 1);\n      }\n      if (this._children.hasOwnProperty(head)) {\n        return this._children[head].match(tail);\n      }\n    }\n    const rules = this._rulesWithParentScopes.concat(this._mainRule);\n    rules.sort(_ThemeTrieElement._cmpBySpecificity);\n    return rules;\n  }\n  insert(scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n    if (scope === \"\") {\n      this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n      return;\n    }\n    let dotIndex = scope.indexOf(\".\");\n    let head;\n    let tail;\n    if (dotIndex === -1) {\n      head = scope;\n      tail = \"\";\n    } else {\n      head = scope.substring(0, dotIndex);\n      tail = scope.substring(dotIndex + 1);\n    }\n    let child;\n    if (this._children.hasOwnProperty(head)) {\n      child = this._children[head];\n    } else {\n      child = new _ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n      this._children[head] = child;\n    }\n    child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n  }\n  _doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background) {\n    if (parentScopes === null) {\n      this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n      return;\n    }\n    for (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n      let rule = this._rulesWithParentScopes[i];\n      if (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n        rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n        return;\n      }\n    }\n    if (fontStyle === -1 /* NotSet */) {\n      fontStyle = this._mainRule.fontStyle;\n    }\n    if (foreground === 0) {\n      foreground = this._mainRule.foreground;\n    }\n    if (background === 0) {\n      background = this._mainRule.background;\n    }\n    this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n  }\n};\n\n// src/encodedTokenAttributes.ts\nvar EncodedTokenMetadata = class _EncodedTokenMetadata {\n  static toBinaryStr(encodedTokenAttributes) {\n    return encodedTokenAttributes.toString(2).padStart(32, \"0\");\n  }\n  static print(encodedTokenAttributes) {\n    const languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n    const tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n    const fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n    const foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n    const background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n    console.log({\n      languageId,\n      tokenType,\n      fontStyle,\n      foreground,\n      background\n    });\n  }\n  static getLanguageId(encodedTokenAttributes) {\n    return (encodedTokenAttributes & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\n  }\n  static getTokenType(encodedTokenAttributes) {\n    return (encodedTokenAttributes & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\n  }\n  static containsBalancedBrackets(encodedTokenAttributes) {\n    return (encodedTokenAttributes & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;\n  }\n  static getFontStyle(encodedTokenAttributes) {\n    return (encodedTokenAttributes & 30720 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\n  }\n  static getForeground(encodedTokenAttributes) {\n    return (encodedTokenAttributes & 16744448 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;\n  }\n  static getBackground(encodedTokenAttributes) {\n    return (encodedTokenAttributes & 4278190080 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;\n  }\n  /**\n   * Updates the fields in `metadata`.\n   * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.\n   */\n  static set(encodedTokenAttributes, languageId, tokenType, containsBalancedBrackets, fontStyle, foreground, background) {\n    let _languageId = _EncodedTokenMetadata.getLanguageId(encodedTokenAttributes);\n    let _tokenType = _EncodedTokenMetadata.getTokenType(encodedTokenAttributes);\n    let _containsBalancedBracketsBit = _EncodedTokenMetadata.containsBalancedBrackets(encodedTokenAttributes) ? 1 : 0;\n    let _fontStyle = _EncodedTokenMetadata.getFontStyle(encodedTokenAttributes);\n    let _foreground = _EncodedTokenMetadata.getForeground(encodedTokenAttributes);\n    let _background = _EncodedTokenMetadata.getBackground(encodedTokenAttributes);\n    if (languageId !== 0) {\n      _languageId = languageId;\n    }\n    if (tokenType !== 8 /* NotSet */) {\n      _tokenType = fromOptionalTokenType(tokenType);\n    }\n    if (containsBalancedBrackets !== null) {\n      _containsBalancedBracketsBit = containsBalancedBrackets ? 1 : 0;\n    }\n    if (fontStyle !== -1 /* NotSet */) {\n      _fontStyle = fontStyle;\n    }\n    if (foreground !== 0) {\n      _foreground = foreground;\n    }\n    if (background !== 0) {\n      _background = background;\n    }\n    return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;\n  }\n};\nfunction toOptionalTokenType(standardType) {\n  return standardType;\n}\nfunction fromOptionalTokenType(standardType) {\n  return standardType;\n}\n\n// src/matcher.ts\nfunction createMatchers(selector, matchesName) {\n  const results = [];\n  const tokenizer = newTokenizer(selector);\n  let token = tokenizer.next();\n  while (token !== null) {\n    let priority = 0;\n    if (token.length === 2 && token.charAt(1) === \":\") {\n      switch (token.charAt(0)) {\n        case \"R\":\n          priority = 1;\n          break;\n        case \"L\":\n          priority = -1;\n          break;\n        default:\n          console.log(`Unknown priority ${token} in scope selector`);\n      }\n      token = tokenizer.next();\n    }\n    let matcher = parseConjunction();\n    results.push({ matcher, priority });\n    if (token !== \",\") {\n      break;\n    }\n    token = tokenizer.next();\n  }\n  return results;\n  function parseOperand() {\n    if (token === \"-\") {\n      token = tokenizer.next();\n      const expressionToNegate = parseOperand();\n      return (matcherInput) => !!expressionToNegate && !expressionToNegate(matcherInput);\n    }\n    if (token === \"(\") {\n      token = tokenizer.next();\n      const expressionInParents = parseInnerExpression();\n      if (token === \")\") {\n        token = tokenizer.next();\n      }\n      return expressionInParents;\n    }\n    if (isIdentifier(token)) {\n      const identifiers = [];\n      do {\n        identifiers.push(token);\n        token = tokenizer.next();\n      } while (isIdentifier(token));\n      return (matcherInput) => matchesName(identifiers, matcherInput);\n    }\n    return null;\n  }\n  function parseConjunction() {\n    const matchers = [];\n    let matcher = parseOperand();\n    while (matcher) {\n      matchers.push(matcher);\n      matcher = parseOperand();\n    }\n    return (matcherInput) => matchers.every((matcher2) => matcher2(matcherInput));\n  }\n  function parseInnerExpression() {\n    const matchers = [];\n    let matcher = parseConjunction();\n    while (matcher) {\n      matchers.push(matcher);\n      if (token === \"|\" || token === \",\") {\n        do {\n          token = tokenizer.next();\n        } while (token === \"|\" || token === \",\");\n      } else {\n        break;\n      }\n      matcher = parseConjunction();\n    }\n    return (matcherInput) => matchers.some((matcher2) => matcher2(matcherInput));\n  }\n}\nfunction isIdentifier(token) {\n  return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n  let regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n  let match = regex.exec(input);\n  return {\n    next: () => {\n      if (!match) {\n        return null;\n      }\n      const res = match[0];\n      match = regex.exec(input);\n      return res;\n    }\n  };\n}\n\n// src/onigLib.ts\nvar FindOption = /* @__PURE__ */ ((FindOption2) => {\n  FindOption2[FindOption2[\"None\"] = 0] = \"None\";\n  FindOption2[FindOption2[\"NotBeginString\"] = 1] = \"NotBeginString\";\n  FindOption2[FindOption2[\"NotEndString\"] = 2] = \"NotEndString\";\n  FindOption2[FindOption2[\"NotBeginPosition\"] = 4] = \"NotBeginPosition\";\n  FindOption2[FindOption2[\"DebugCall\"] = 8] = \"DebugCall\";\n  return FindOption2;\n})(FindOption || {});\nfunction disposeOnigString(str) {\n  if (typeof str.dispose === \"function\") {\n    str.dispose();\n  }\n}\n\n// src/grammar/grammarDependencies.ts\nvar TopLevelRuleReference = class {\n  constructor(scopeName) {\n    this.scopeName = scopeName;\n  }\n  toKey() {\n    return this.scopeName;\n  }\n};\nvar TopLevelRepositoryRuleReference = class {\n  constructor(scopeName, ruleName) {\n    this.scopeName = scopeName;\n    this.ruleName = ruleName;\n  }\n  toKey() {\n    return `${this.scopeName}#${this.ruleName}`;\n  }\n};\nvar ExternalReferenceCollector = class {\n  _references = [];\n  _seenReferenceKeys = /* @__PURE__ */ new Set();\n  get references() {\n    return this._references;\n  }\n  visitedRule = /* @__PURE__ */ new Set();\n  add(reference) {\n    const key = reference.toKey();\n    if (this._seenReferenceKeys.has(key)) {\n      return;\n    }\n    this._seenReferenceKeys.add(key);\n    this._references.push(reference);\n  }\n};\nvar ScopeDependencyProcessor = class {\n  constructor(repo, initialScopeName) {\n    this.repo = repo;\n    this.initialScopeName = initialScopeName;\n    this.seenFullScopeRequests.add(this.initialScopeName);\n    this.Q = [new TopLevelRuleReference(this.initialScopeName)];\n  }\n  seenFullScopeRequests = /* @__PURE__ */ new Set();\n  seenPartialScopeRequests = /* @__PURE__ */ new Set();\n  Q;\n  processQueue() {\n    const q = this.Q;\n    this.Q = [];\n    const deps = new ExternalReferenceCollector();\n    for (const dep of q) {\n      collectReferencesOfReference(dep, this.initialScopeName, this.repo, deps);\n    }\n    for (const dep of deps.references) {\n      if (dep instanceof TopLevelRuleReference) {\n        if (this.seenFullScopeRequests.has(dep.scopeName)) {\n          continue;\n        }\n        this.seenFullScopeRequests.add(dep.scopeName);\n        this.Q.push(dep);\n      } else {\n        if (this.seenFullScopeRequests.has(dep.scopeName)) {\n          continue;\n        }\n        if (this.seenPartialScopeRequests.has(dep.toKey())) {\n          continue;\n        }\n        this.seenPartialScopeRequests.add(dep.toKey());\n        this.Q.push(dep);\n      }\n    }\n  }\n};\nfunction collectReferencesOfReference(reference, baseGrammarScopeName, repo, result) {\n  const selfGrammar = repo.lookup(reference.scopeName);\n  if (!selfGrammar) {\n    if (reference.scopeName === baseGrammarScopeName) {\n      throw new Error(`No grammar provided for <${baseGrammarScopeName}>`);\n    }\n    return;\n  }\n  const baseGrammar = repo.lookup(baseGrammarScopeName);\n  if (reference instanceof TopLevelRuleReference) {\n    collectExternalReferencesInTopLevelRule({ baseGrammar, selfGrammar }, result);\n  } else {\n    collectExternalReferencesInTopLevelRepositoryRule(\n      reference.ruleName,\n      { baseGrammar, selfGrammar, repository: selfGrammar.repository },\n      result\n    );\n  }\n  const injections = repo.injections(reference.scopeName);\n  if (injections) {\n    for (const injection of injections) {\n      result.add(new TopLevelRuleReference(injection));\n    }\n  }\n}\nfunction collectExternalReferencesInTopLevelRepositoryRule(ruleName, context, result) {\n  if (context.repository && context.repository[ruleName]) {\n    const rule = context.repository[ruleName];\n    collectExternalReferencesInRules([rule], context, result);\n  }\n}\nfunction collectExternalReferencesInTopLevelRule(context, result) {\n  if (context.selfGrammar.patterns && Array.isArray(context.selfGrammar.patterns)) {\n    collectExternalReferencesInRules(\n      context.selfGrammar.patterns,\n      { ...context, repository: context.selfGrammar.repository },\n      result\n    );\n  }\n  if (context.selfGrammar.injections) {\n    collectExternalReferencesInRules(\n      Object.values(context.selfGrammar.injections),\n      { ...context, repository: context.selfGrammar.repository },\n      result\n    );\n  }\n}\nfunction collectExternalReferencesInRules(rules, context, result) {\n  for (const rule of rules) {\n    if (result.visitedRule.has(rule)) {\n      continue;\n    }\n    result.visitedRule.add(rule);\n    const patternRepository = rule.repository ? mergeObjects({}, context.repository, rule.repository) : context.repository;\n    if (Array.isArray(rule.patterns)) {\n      collectExternalReferencesInRules(rule.patterns, { ...context, repository: patternRepository }, result);\n    }\n    const include = rule.include;\n    if (!include) {\n      continue;\n    }\n    const reference = parseInclude(include);\n    switch (reference.kind) {\n      case 0 /* Base */:\n        collectExternalReferencesInTopLevelRule({ ...context, selfGrammar: context.baseGrammar }, result);\n        break;\n      case 1 /* Self */:\n        collectExternalReferencesInTopLevelRule(context, result);\n        break;\n      case 2 /* RelativeReference */:\n        collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { ...context, repository: patternRepository }, result);\n        break;\n      case 3 /* TopLevelReference */:\n      case 4 /* TopLevelRepositoryReference */:\n        const selfGrammar = reference.scopeName === context.selfGrammar.scopeName ? context.selfGrammar : reference.scopeName === context.baseGrammar.scopeName ? context.baseGrammar : void 0;\n        if (selfGrammar) {\n          const newContext = { baseGrammar: context.baseGrammar, selfGrammar, repository: patternRepository };\n          if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n            collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, newContext, result);\n          } else {\n            collectExternalReferencesInTopLevelRule(newContext, result);\n          }\n        } else {\n          if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n            result.add(new TopLevelRepositoryRuleReference(reference.scopeName, reference.ruleName));\n          } else {\n            result.add(new TopLevelRuleReference(reference.scopeName));\n          }\n        }\n        break;\n    }\n  }\n}\nvar BaseReference = class {\n  kind = 0 /* Base */;\n};\nvar SelfReference = class {\n  kind = 1 /* Self */;\n};\nvar RelativeReference = class {\n  constructor(ruleName) {\n    this.ruleName = ruleName;\n  }\n  kind = 2 /* RelativeReference */;\n};\nvar TopLevelReference = class {\n  constructor(scopeName) {\n    this.scopeName = scopeName;\n  }\n  kind = 3 /* TopLevelReference */;\n};\nvar TopLevelRepositoryReference = class {\n  constructor(scopeName, ruleName) {\n    this.scopeName = scopeName;\n    this.ruleName = ruleName;\n  }\n  kind = 4 /* TopLevelRepositoryReference */;\n};\nfunction parseInclude(include) {\n  if (include === \"$base\") {\n    return new BaseReference();\n  } else if (include === \"$self\") {\n    return new SelfReference();\n  }\n  const indexOfSharp = include.indexOf(\"#\");\n  if (indexOfSharp === -1) {\n    return new TopLevelReference(include);\n  } else if (indexOfSharp === 0) {\n    return new RelativeReference(include.substring(1));\n  } else {\n    const scopeName = include.substring(0, indexOfSharp);\n    const ruleName = include.substring(indexOfSharp + 1);\n    return new TopLevelRepositoryReference(scopeName, ruleName);\n  }\n}\n\n// src/rule.ts\nvar HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nvar BACK_REFERENCING_END = /\\\\(\\d+)/g;\nvar ruleIdSymbol = Symbol(\"RuleId\");\nvar endRuleId = -1;\nvar whileRuleId = -2;\nfunction ruleIdFromNumber(id) {\n  return id;\n}\nfunction ruleIdToNumber(id) {\n  return id;\n}\nvar Rule = class {\n  $location;\n  id;\n  _nameIsCapturing;\n  _name;\n  _contentNameIsCapturing;\n  _contentName;\n  constructor($location, id, name, contentName) {\n    this.$location = $location;\n    this.id = id;\n    this._name = name || null;\n    this._nameIsCapturing = RegexSource.hasCaptures(this._name);\n    this._contentName = contentName || null;\n    this._contentNameIsCapturing = RegexSource.hasCaptures(this._contentName);\n  }\n  get debugName() {\n    const location = this.$location ? `${basename(this.$location.filename)}:${this.$location.line}` : \"unknown\";\n    return `${this.constructor.name}#${this.id} @ ${location}`;\n  }\n  getName(lineText, captureIndices) {\n    if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n      return this._name;\n    }\n    return RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n  }\n  getContentName(lineText, captureIndices) {\n    if (!this._contentNameIsCapturing || this._contentName === null) {\n      return this._contentName;\n    }\n    return RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n  }\n};\nvar CaptureRule = class extends Rule {\n  retokenizeCapturedWithRuleId;\n  constructor($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n    super($location, id, name, contentName);\n    this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n  }\n  dispose() {\n  }\n  collectPatterns(grammar, out) {\n    throw new Error(\"Not supported!\");\n  }\n  compile(grammar, endRegexSource) {\n    throw new Error(\"Not supported!\");\n  }\n  compileAG(grammar, endRegexSource, allowA, allowG) {\n    throw new Error(\"Not supported!\");\n  }\n};\nvar MatchRule = class extends Rule {\n  _match;\n  captures;\n  _cachedCompiledPatterns;\n  constructor($location, id, name, match, captures) {\n    super($location, id, name, null);\n    this._match = new RegExpSource(match, this.id);\n    this.captures = captures;\n    this._cachedCompiledPatterns = null;\n  }\n  dispose() {\n    if (this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns.dispose();\n      this._cachedCompiledPatterns = null;\n    }\n  }\n  get debugMatchRegExp() {\n    return `${this._match.source}`;\n  }\n  collectPatterns(grammar, out) {\n    out.push(this._match);\n  }\n  compile(grammar, endRegexSource) {\n    return this._getCachedCompiledPatterns(grammar).compile(grammar);\n  }\n  compileAG(grammar, endRegexSource, allowA, allowG) {\n    return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n  }\n  _getCachedCompiledPatterns(grammar) {\n    if (!this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns = new RegExpSourceList();\n      this.collectPatterns(grammar, this._cachedCompiledPatterns);\n    }\n    return this._cachedCompiledPatterns;\n  }\n};\nvar IncludeOnlyRule = class extends Rule {\n  hasMissingPatterns;\n  patterns;\n  _cachedCompiledPatterns;\n  constructor($location, id, name, contentName, patterns) {\n    super($location, id, name, contentName);\n    this.patterns = patterns.patterns;\n    this.hasMissingPatterns = patterns.hasMissingPatterns;\n    this._cachedCompiledPatterns = null;\n  }\n  dispose() {\n    if (this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns.dispose();\n      this._cachedCompiledPatterns = null;\n    }\n  }\n  collectPatterns(grammar, out) {\n    for (const pattern of this.patterns) {\n      const rule = grammar.getRule(pattern);\n      rule.collectPatterns(grammar, out);\n    }\n  }\n  compile(grammar, endRegexSource) {\n    return this._getCachedCompiledPatterns(grammar).compile(grammar);\n  }\n  compileAG(grammar, endRegexSource, allowA, allowG) {\n    return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n  }\n  _getCachedCompiledPatterns(grammar) {\n    if (!this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns = new RegExpSourceList();\n      this.collectPatterns(grammar, this._cachedCompiledPatterns);\n    }\n    return this._cachedCompiledPatterns;\n  }\n};\nvar BeginEndRule = class extends Rule {\n  _begin;\n  beginCaptures;\n  _end;\n  endHasBackReferences;\n  endCaptures;\n  applyEndPatternLast;\n  hasMissingPatterns;\n  patterns;\n  _cachedCompiledPatterns;\n  constructor($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n    super($location, id, name, contentName);\n    this._begin = new RegExpSource(begin, this.id);\n    this.beginCaptures = beginCaptures;\n    this._end = new RegExpSource(end ? end : \"\\uFFFF\", -1);\n    this.endHasBackReferences = this._end.hasBackReferences;\n    this.endCaptures = endCaptures;\n    this.applyEndPatternLast = applyEndPatternLast || false;\n    this.patterns = patterns.patterns;\n    this.hasMissingPatterns = patterns.hasMissingPatterns;\n    this._cachedCompiledPatterns = null;\n  }\n  dispose() {\n    if (this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns.dispose();\n      this._cachedCompiledPatterns = null;\n    }\n  }\n  get debugBeginRegExp() {\n    return `${this._begin.source}`;\n  }\n  get debugEndRegExp() {\n    return `${this._end.source}`;\n  }\n  getEndWithResolvedBackReferences(lineText, captureIndices) {\n    return this._end.resolveBackReferences(lineText, captureIndices);\n  }\n  collectPatterns(grammar, out) {\n    out.push(this._begin);\n  }\n  compile(grammar, endRegexSource) {\n    return this._getCachedCompiledPatterns(grammar, endRegexSource).compile(grammar);\n  }\n  compileAG(grammar, endRegexSource, allowA, allowG) {\n    return this._getCachedCompiledPatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n  }\n  _getCachedCompiledPatterns(grammar, endRegexSource) {\n    if (!this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns = new RegExpSourceList();\n      for (const pattern of this.patterns) {\n        const rule = grammar.getRule(pattern);\n        rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n      }\n      if (this.applyEndPatternLast) {\n        this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n      } else {\n        this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n      }\n    }\n    if (this._end.hasBackReferences) {\n      if (this.applyEndPatternLast) {\n        this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n      } else {\n        this._cachedCompiledPatterns.setSource(0, endRegexSource);\n      }\n    }\n    return this._cachedCompiledPatterns;\n  }\n};\nvar BeginWhileRule = class extends Rule {\n  _begin;\n  beginCaptures;\n  whileCaptures;\n  _while;\n  whileHasBackReferences;\n  hasMissingPatterns;\n  patterns;\n  _cachedCompiledPatterns;\n  _cachedCompiledWhilePatterns;\n  constructor($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n    super($location, id, name, contentName);\n    this._begin = new RegExpSource(begin, this.id);\n    this.beginCaptures = beginCaptures;\n    this.whileCaptures = whileCaptures;\n    this._while = new RegExpSource(_while, whileRuleId);\n    this.whileHasBackReferences = this._while.hasBackReferences;\n    this.patterns = patterns.patterns;\n    this.hasMissingPatterns = patterns.hasMissingPatterns;\n    this._cachedCompiledPatterns = null;\n    this._cachedCompiledWhilePatterns = null;\n  }\n  dispose() {\n    if (this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns.dispose();\n      this._cachedCompiledPatterns = null;\n    }\n    if (this._cachedCompiledWhilePatterns) {\n      this._cachedCompiledWhilePatterns.dispose();\n      this._cachedCompiledWhilePatterns = null;\n    }\n  }\n  get debugBeginRegExp() {\n    return `${this._begin.source}`;\n  }\n  get debugWhileRegExp() {\n    return `${this._while.source}`;\n  }\n  getWhileWithResolvedBackReferences(lineText, captureIndices) {\n    return this._while.resolveBackReferences(lineText, captureIndices);\n  }\n  collectPatterns(grammar, out) {\n    out.push(this._begin);\n  }\n  compile(grammar, endRegexSource) {\n    return this._getCachedCompiledPatterns(grammar).compile(grammar);\n  }\n  compileAG(grammar, endRegexSource, allowA, allowG) {\n    return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n  }\n  _getCachedCompiledPatterns(grammar) {\n    if (!this._cachedCompiledPatterns) {\n      this._cachedCompiledPatterns = new RegExpSourceList();\n      for (const pattern of this.patterns) {\n        const rule = grammar.getRule(pattern);\n        rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n      }\n    }\n    return this._cachedCompiledPatterns;\n  }\n  compileWhile(grammar, endRegexSource) {\n    return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compile(grammar);\n  }\n  compileWhileAG(grammar, endRegexSource, allowA, allowG) {\n    return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n  }\n  _getCachedCompiledWhilePatterns(grammar, endRegexSource) {\n    if (!this._cachedCompiledWhilePatterns) {\n      this._cachedCompiledWhilePatterns = new RegExpSourceList();\n      this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n    }\n    if (this._while.hasBackReferences) {\n      this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : \"\\uFFFF\");\n    }\n    return this._cachedCompiledWhilePatterns;\n  }\n};\nvar RuleFactory = class _RuleFactory {\n  static createCaptureRule(helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n    return helper.registerRule((id) => {\n      return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n    });\n  }\n  static getCompiledRuleId(desc, helper, repository) {\n    if (!desc.id) {\n      helper.registerRule((id) => {\n        desc.id = id;\n        if (desc.match) {\n          return new MatchRule(\n            desc.$vscodeTextmateLocation,\n            desc.id,\n            desc.name,\n            desc.match,\n            _RuleFactory._compileCaptures(desc.captures, helper, repository)\n          );\n        }\n        if (typeof desc.begin === \"undefined\") {\n          if (desc.repository) {\n            repository = mergeObjects({}, repository, desc.repository);\n          }\n          let patterns = desc.patterns;\n          if (typeof patterns === \"undefined\" && desc.include) {\n            patterns = [{ include: desc.include }];\n          }\n          return new IncludeOnlyRule(\n            desc.$vscodeTextmateLocation,\n            desc.id,\n            desc.name,\n            desc.contentName,\n            _RuleFactory._compilePatterns(patterns, helper, repository)\n          );\n        }\n        if (desc.while) {\n          return new BeginWhileRule(\n            desc.$vscodeTextmateLocation,\n            desc.id,\n            desc.name,\n            desc.contentName,\n            desc.begin,\n            _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n            desc.while,\n            _RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository),\n            _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n          );\n        }\n        return new BeginEndRule(\n          desc.$vscodeTextmateLocation,\n          desc.id,\n          desc.name,\n          desc.contentName,\n          desc.begin,\n          _RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository),\n          desc.end,\n          _RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository),\n          desc.applyEndPatternLast,\n          _RuleFactory._compilePatterns(desc.patterns, helper, repository)\n        );\n      });\n    }\n    return desc.id;\n  }\n  static _compileCaptures(captures, helper, repository) {\n    let r = [];\n    if (captures) {\n      let maximumCaptureId = 0;\n      for (const captureId in captures) {\n        if (captureId === \"$vscodeTextmateLocation\") {\n          continue;\n        }\n        const numericCaptureId = parseInt(captureId, 10);\n        if (numericCaptureId > maximumCaptureId) {\n          maximumCaptureId = numericCaptureId;\n        }\n      }\n      for (let i = 0; i <= maximumCaptureId; i++) {\n        r[i] = null;\n      }\n      for (const captureId in captures) {\n        if (captureId === \"$vscodeTextmateLocation\") {\n          continue;\n        }\n        const numericCaptureId = parseInt(captureId, 10);\n        let retokenizeCapturedWithRuleId = 0;\n        if (captures[captureId].patterns) {\n          retokenizeCapturedWithRuleId = _RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n        }\n        r[numericCaptureId] = _RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n      }\n    }\n    return r;\n  }\n  static _compilePatterns(patterns, helper, repository) {\n    let r = [];\n    if (patterns) {\n      for (let i = 0, len = patterns.length; i < len; i++) {\n        const pattern = patterns[i];\n        let ruleId = -1;\n        if (pattern.include) {\n          const reference = parseInclude(pattern.include);\n          switch (reference.kind) {\n            case 0 /* Base */:\n            case 1 /* Self */:\n              ruleId = _RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n              break;\n            case 2 /* RelativeReference */:\n              let localIncludedRule = repository[reference.ruleName];\n              if (localIncludedRule) {\n                ruleId = _RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n              } else {\n              }\n              break;\n            case 3 /* TopLevelReference */:\n            case 4 /* TopLevelRepositoryReference */:\n              const externalGrammarName = reference.scopeName;\n              const externalGrammarInclude = reference.kind === 4 /* TopLevelRepositoryReference */ ? reference.ruleName : null;\n              const externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n              if (externalGrammar) {\n                if (externalGrammarInclude) {\n                  let externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n                  if (externalIncludedRule) {\n                    ruleId = _RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n                  } else {\n                  }\n                } else {\n                  ruleId = _RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n                }\n              } else {\n              }\n              break;\n          }\n        } else {\n          ruleId = _RuleFactory.getCompiledRuleId(pattern, helper, repository);\n        }\n        if (ruleId !== -1) {\n          const rule = helper.getRule(ruleId);\n          let skipRule = false;\n          if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n            if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n              skipRule = true;\n            }\n          }\n          if (skipRule) {\n            continue;\n          }\n          r.push(ruleId);\n        }\n      }\n    }\n    return {\n      patterns: r,\n      hasMissingPatterns: (patterns ? patterns.length : 0) !== r.length\n    };\n  }\n};\nvar RegExpSource = class _RegExpSource {\n  source;\n  ruleId;\n  hasAnchor;\n  hasBackReferences;\n  _anchorCache;\n  constructor(regExpSource, ruleId) {\n    if (regExpSource && typeof regExpSource === \"string\") {\n      const len = regExpSource.length;\n      let lastPushedPos = 0;\n      let output = [];\n      let hasAnchor = false;\n      for (let pos = 0; pos < len; pos++) {\n        const ch = regExpSource.charAt(pos);\n        if (ch === \"\\\\\") {\n          if (pos + 1 < len) {\n            const nextCh = regExpSource.charAt(pos + 1);\n            if (nextCh === \"z\") {\n              output.push(regExpSource.substring(lastPushedPos, pos));\n              output.push(\"$(?!\\\\n)(?<!\\\\n)\");\n              lastPushedPos = pos + 2;\n            } else if (nextCh === \"A\" || nextCh === \"G\") {\n              hasAnchor = true;\n            }\n            pos++;\n          }\n        }\n      }\n      this.hasAnchor = hasAnchor;\n      if (lastPushedPos === 0) {\n        this.source = regExpSource;\n      } else {\n        output.push(regExpSource.substring(lastPushedPos, len));\n        this.source = output.join(\"\");\n      }\n    } else {\n      this.hasAnchor = false;\n      this.source = regExpSource;\n    }\n    if (this.hasAnchor) {\n      this._anchorCache = this._buildAnchorCache();\n    } else {\n      this._anchorCache = null;\n    }\n    this.ruleId = ruleId;\n    if (typeof this.source === \"string\") {\n      this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n    } else {\n      this.hasBackReferences = false;\n    }\n  }\n  clone() {\n    return new _RegExpSource(this.source, this.ruleId);\n  }\n  setSource(newSource) {\n    if (this.source === newSource) {\n      return;\n    }\n    this.source = newSource;\n    if (this.hasAnchor) {\n      this._anchorCache = this._buildAnchorCache();\n    }\n  }\n  resolveBackReferences(lineText, captureIndices) {\n    if (typeof this.source !== \"string\") {\n      throw new Error(\"This method should only be called if the source is a string\");\n    }\n    let capturedValues = captureIndices.map((capture) => {\n      return lineText.substring(capture.start, capture.end);\n    });\n    BACK_REFERENCING_END.lastIndex = 0;\n    return this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n      return escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || \"\");\n    });\n  }\n  _buildAnchorCache() {\n    if (typeof this.source !== \"string\") {\n      throw new Error(\"This method should only be called if the source is a string\");\n    }\n    let A0_G0_result = [];\n    let A0_G1_result = [];\n    let A1_G0_result = [];\n    let A1_G1_result = [];\n    let pos, len, ch, nextCh;\n    for (pos = 0, len = this.source.length; pos < len; pos++) {\n      ch = this.source.charAt(pos);\n      A0_G0_result[pos] = ch;\n      A0_G1_result[pos] = ch;\n      A1_G0_result[pos] = ch;\n      A1_G1_result[pos] = ch;\n      if (ch === \"\\\\\") {\n        if (pos + 1 < len) {\n          nextCh = this.source.charAt(pos + 1);\n          if (nextCh === \"A\") {\n            A0_G0_result[pos + 1] = \"\\uFFFF\";\n            A0_G1_result[pos + 1] = \"\\uFFFF\";\n            A1_G0_result[pos + 1] = \"A\";\n            A1_G1_result[pos + 1] = \"A\";\n          } else if (nextCh === \"G\") {\n            A0_G0_result[pos + 1] = \"\\uFFFF\";\n            A0_G1_result[pos + 1] = \"G\";\n            A1_G0_result[pos + 1] = \"\\uFFFF\";\n            A1_G1_result[pos + 1] = \"G\";\n          } else {\n            A0_G0_result[pos + 1] = nextCh;\n            A0_G1_result[pos + 1] = nextCh;\n            A1_G0_result[pos + 1] = nextCh;\n            A1_G1_result[pos + 1] = nextCh;\n          }\n          pos++;\n        }\n      }\n    }\n    return {\n      A0_G0: A0_G0_result.join(\"\"),\n      A0_G1: A0_G1_result.join(\"\"),\n      A1_G0: A1_G0_result.join(\"\"),\n      A1_G1: A1_G1_result.join(\"\")\n    };\n  }\n  resolveAnchors(allowA, allowG) {\n    if (!this.hasAnchor || !this._anchorCache || typeof this.source !== \"string\") {\n      return this.source;\n    }\n    if (allowA) {\n      if (allowG) {\n        return this._anchorCache.A1_G1;\n      } else {\n        return this._anchorCache.A1_G0;\n      }\n    } else {\n      if (allowG) {\n        return this._anchorCache.A0_G1;\n      } else {\n        return this._anchorCache.A0_G0;\n      }\n    }\n  }\n};\nvar RegExpSourceList = class {\n  _items;\n  _hasAnchors;\n  _cached;\n  _anchorCache;\n  constructor() {\n    this._items = [];\n    this._hasAnchors = false;\n    this._cached = null;\n    this._anchorCache = {\n      A0_G0: null,\n      A0_G1: null,\n      A1_G0: null,\n      A1_G1: null\n    };\n  }\n  dispose() {\n    this._disposeCaches();\n  }\n  _disposeCaches() {\n    if (this._cached) {\n      this._cached.dispose();\n      this._cached = null;\n    }\n    if (this._anchorCache.A0_G0) {\n      this._anchorCache.A0_G0.dispose();\n      this._anchorCache.A0_G0 = null;\n    }\n    if (this._anchorCache.A0_G1) {\n      this._anchorCache.A0_G1.dispose();\n      this._anchorCache.A0_G1 = null;\n    }\n    if (this._anchorCache.A1_G0) {\n      this._anchorCache.A1_G0.dispose();\n      this._anchorCache.A1_G0 = null;\n    }\n    if (this._anchorCache.A1_G1) {\n      this._anchorCache.A1_G1.dispose();\n      this._anchorCache.A1_G1 = null;\n    }\n  }\n  push(item) {\n    this._items.push(item);\n    this._hasAnchors = this._hasAnchors || item.hasAnchor;\n  }\n  unshift(item) {\n    this._items.unshift(item);\n    this._hasAnchors = this._hasAnchors || item.hasAnchor;\n  }\n  length() {\n    return this._items.length;\n  }\n  setSource(index, newSource) {\n    if (this._items[index].source !== newSource) {\n      this._disposeCaches();\n      this._items[index].setSource(newSource);\n    }\n  }\n  compile(onigLib) {\n    if (!this._cached) {\n      let regExps = this._items.map((e) => e.source);\n      this._cached = new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n    }\n    return this._cached;\n  }\n  compileAG(onigLib, allowA, allowG) {\n    if (!this._hasAnchors) {\n      return this.compile(onigLib);\n    } else {\n      if (allowA) {\n        if (allowG) {\n          if (!this._anchorCache.A1_G1) {\n            this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n          }\n          return this._anchorCache.A1_G1;\n        } else {\n          if (!this._anchorCache.A1_G0) {\n            this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n          }\n          return this._anchorCache.A1_G0;\n        }\n      } else {\n        if (allowG) {\n          if (!this._anchorCache.A0_G1) {\n            this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n          }\n          return this._anchorCache.A0_G1;\n        } else {\n          if (!this._anchorCache.A0_G0) {\n            this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n          }\n          return this._anchorCache.A0_G0;\n        }\n      }\n    }\n  }\n  _resolveAnchors(onigLib, allowA, allowG) {\n    let regExps = this._items.map((e) => e.resolveAnchors(allowA, allowG));\n    return new CompiledRule(onigLib, regExps, this._items.map((e) => e.ruleId));\n  }\n};\nvar CompiledRule = class {\n  constructor(onigLib, regExps, rules) {\n    this.regExps = regExps;\n    this.rules = rules;\n    this.scanner = onigLib.createOnigScanner(regExps);\n  }\n  scanner;\n  dispose() {\n    if (typeof this.scanner.dispose === \"function\") {\n      this.scanner.dispose();\n    }\n  }\n  toString() {\n    const r = [];\n    for (let i = 0, len = this.rules.length; i < len; i++) {\n      r.push(\"   - \" + this.rules[i] + \": \" + this.regExps[i]);\n    }\n    return r.join(\"\\n\");\n  }\n  findNextMatchSync(string, startPosition, options) {\n    const result = this.scanner.findNextMatchSync(string, startPosition, options);\n    if (!result) {\n      return null;\n    }\n    return {\n      ruleId: this.rules[result.index],\n      captureIndices: result.captureIndices\n    };\n  }\n};\n\n// src/grammar/basicScopesAttributeProvider.ts\nvar BasicScopeAttributes = class {\n  constructor(languageId, tokenType) {\n    this.languageId = languageId;\n    this.tokenType = tokenType;\n  }\n};\nvar BasicScopeAttributesProvider = class _BasicScopeAttributesProvider {\n  _defaultAttributes;\n  _embeddedLanguagesMatcher;\n  constructor(initialLanguageId, embeddedLanguages) {\n    this._defaultAttributes = new BasicScopeAttributes(initialLanguageId, 8 /* NotSet */);\n    this._embeddedLanguagesMatcher = new ScopeMatcher(Object.entries(embeddedLanguages || {}));\n  }\n  getDefaultAttributes() {\n    return this._defaultAttributes;\n  }\n  getBasicScopeAttributes(scopeName) {\n    if (scopeName === null) {\n      return _BasicScopeAttributesProvider._NULL_SCOPE_METADATA;\n    }\n    return this._getBasicScopeAttributes.get(scopeName);\n  }\n  static _NULL_SCOPE_METADATA = new BasicScopeAttributes(0, 0);\n  _getBasicScopeAttributes = new CachedFn((scopeName) => {\n    const languageId = this._scopeToLanguage(scopeName);\n    const standardTokenType = this._toStandardTokenType(scopeName);\n    return new BasicScopeAttributes(languageId, standardTokenType);\n  });\n  /**\n   * Given a produced TM scope, return the language that token describes or null if unknown.\n   * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n   */\n  _scopeToLanguage(scope) {\n    return this._embeddedLanguagesMatcher.match(scope) || 0;\n  }\n  _toStandardTokenType(scopeName) {\n    const m = scopeName.match(_BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);\n    if (!m) {\n      return 8 /* NotSet */;\n    }\n    switch (m[1]) {\n      case \"comment\":\n        return 1 /* Comment */;\n      case \"string\":\n        return 2 /* String */;\n      case \"regex\":\n        return 3 /* RegEx */;\n      case \"meta.embedded\":\n        return 0 /* Other */;\n    }\n    throw new Error(\"Unexpected match for standard token type!\");\n  }\n  static STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n};\nvar ScopeMatcher = class {\n  values;\n  scopesRegExp;\n  constructor(values) {\n    if (values.length === 0) {\n      this.values = null;\n      this.scopesRegExp = null;\n    } else {\n      this.values = new Map(values);\n      const escapedScopes = values.map(\n        ([scopeName, value]) => escapeRegExpCharacters(scopeName)\n      );\n      escapedScopes.sort();\n      escapedScopes.reverse();\n      this.scopesRegExp = new RegExp(\n        `^((${escapedScopes.join(\")|(\")}))($|\\\\.)`,\n        \"\"\n      );\n    }\n  }\n  match(scope) {\n    if (!this.scopesRegExp) {\n      return void 0;\n    }\n    const m = scope.match(this.scopesRegExp);\n    if (!m) {\n      return void 0;\n    }\n    return this.values.get(m[1]);\n  }\n};\n\n// src/debug.ts\nvar DebugFlags = {\n  InDebugMode: typeof process !== \"undefined\" && !!process.env[\"VSCODE_TEXTMATE_DEBUG\"]\n};\nvar UseOnigurumaFindOptions = false;\n\n// src/grammar/tokenizeString.ts\nvar TokenizeStringResult = class {\n  constructor(stack, stoppedEarly) {\n    this.stack = stack;\n    this.stoppedEarly = stoppedEarly;\n  }\n};\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions, timeLimit) {\n  const lineLength = lineText.content.length;\n  let STOP = false;\n  let anchorPosition = -1;\n  if (checkWhileConditions) {\n    const whileCheckResult = _checkWhileConditions(\n      grammar,\n      lineText,\n      isFirstLine,\n      linePos,\n      stack,\n      lineTokens\n    );\n    stack = whileCheckResult.stack;\n    linePos = whileCheckResult.linePos;\n    isFirstLine = whileCheckResult.isFirstLine;\n    anchorPosition = whileCheckResult.anchorPosition;\n  }\n  const startTime = Date.now();\n  while (!STOP) {\n    if (timeLimit !== 0) {\n      const elapsedTime = Date.now() - startTime;\n      if (elapsedTime > timeLimit) {\n        return new TokenizeStringResult(stack, true);\n      }\n    }\n    scanNext();\n  }\n  return new TokenizeStringResult(stack, false);\n  function scanNext() {\n    if (false) {\n      console.log(\"\");\n      console.log(\n        `@@scanNext ${linePos}: |${lineText.content.substr(linePos).replace(/\\n$/, \"\\\\n\")}|`\n      );\n    }\n    const r = matchRuleOrInjections(\n      grammar,\n      lineText,\n      isFirstLine,\n      linePos,\n      stack,\n      anchorPosition\n    );\n    if (!r) {\n      lineTokens.produce(stack, lineLength);\n      STOP = true;\n      return;\n    }\n    const captureIndices = r.captureIndices;\n    const matchedRuleId = r.matchedRuleId;\n    const hasAdvanced = captureIndices && captureIndices.length > 0 ? captureIndices[0].end > linePos : false;\n    if (matchedRuleId === endRuleId) {\n      const poppedRule = stack.getRule(grammar);\n      if (false) {\n        console.log(\n          \"  popping \" + poppedRule.debugName + \" - \" + poppedRule.debugEndRegExp\n        );\n      }\n      lineTokens.produce(stack, captureIndices[0].start);\n      stack = stack.withContentNameScopesList(stack.nameScopesList);\n      handleCaptures(\n        grammar,\n        lineText,\n        isFirstLine,\n        stack,\n        lineTokens,\n        poppedRule.endCaptures,\n        captureIndices\n      );\n      lineTokens.produce(stack, captureIndices[0].end);\n      const popped = stack;\n      stack = stack.parent;\n      anchorPosition = popped.getAnchorPos();\n      if (!hasAdvanced && popped.getEnterPos() === linePos) {\n        if (false) {\n          console.error(\n            \"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\"\n          );\n        }\n        stack = popped;\n        lineTokens.produce(stack, lineLength);\n        STOP = true;\n        return;\n      }\n    } else {\n      const _rule = grammar.getRule(matchedRuleId);\n      lineTokens.produce(stack, captureIndices[0].start);\n      const beforePush = stack;\n      const scopeName = _rule.getName(lineText.content, captureIndices);\n      const nameScopesList = stack.contentNameScopesList.pushAttributed(\n        scopeName,\n        grammar\n      );\n      stack = stack.push(\n        matchedRuleId,\n        linePos,\n        anchorPosition,\n        captureIndices[0].end === lineLength,\n        null,\n        nameScopesList,\n        nameScopesList\n      );\n      if (_rule instanceof BeginEndRule) {\n        const pushedRule = _rule;\n        if (false) {\n          console.log(\n            \"  pushing \" + pushedRule.debugName + \" - \" + pushedRule.debugBeginRegExp\n          );\n        }\n        handleCaptures(\n          grammar,\n          lineText,\n          isFirstLine,\n          stack,\n          lineTokens,\n          pushedRule.beginCaptures,\n          captureIndices\n        );\n        lineTokens.produce(stack, captureIndices[0].end);\n        anchorPosition = captureIndices[0].end;\n        const contentName = pushedRule.getContentName(\n          lineText.content,\n          captureIndices\n        );\n        const contentNameScopesList = nameScopesList.pushAttributed(\n          contentName,\n          grammar\n        );\n        stack = stack.withContentNameScopesList(contentNameScopesList);\n        if (pushedRule.endHasBackReferences) {\n          stack = stack.withEndRule(\n            pushedRule.getEndWithResolvedBackReferences(\n              lineText.content,\n              captureIndices\n            )\n          );\n        }\n        if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n          if (false) {\n            console.error(\n              \"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n            );\n          }\n          stack = stack.pop();\n          lineTokens.produce(stack, lineLength);\n          STOP = true;\n          return;\n        }\n      } else if (_rule instanceof BeginWhileRule) {\n        const pushedRule = _rule;\n        if (false) {\n          console.log(\"  pushing \" + pushedRule.debugName);\n        }\n        handleCaptures(\n          grammar,\n          lineText,\n          isFirstLine,\n          stack,\n          lineTokens,\n          pushedRule.beginCaptures,\n          captureIndices\n        );\n        lineTokens.produce(stack, captureIndices[0].end);\n        anchorPosition = captureIndices[0].end;\n        const contentName = pushedRule.getContentName(\n          lineText.content,\n          captureIndices\n        );\n        const contentNameScopesList = nameScopesList.pushAttributed(\n          contentName,\n          grammar\n        );\n        stack = stack.withContentNameScopesList(contentNameScopesList);\n        if (pushedRule.whileHasBackReferences) {\n          stack = stack.withEndRule(\n            pushedRule.getWhileWithResolvedBackReferences(\n              lineText.content,\n              captureIndices\n            )\n          );\n        }\n        if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n          if (false) {\n            console.error(\n              \"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\"\n            );\n          }\n          stack = stack.pop();\n          lineTokens.produce(stack, lineLength);\n          STOP = true;\n          return;\n        }\n      } else {\n        const matchingRule = _rule;\n        if (false) {\n          console.log(\n            \"  matched \" + matchingRule.debugName + \" - \" + matchingRule.debugMatchRegExp\n          );\n        }\n        handleCaptures(\n          grammar,\n          lineText,\n          isFirstLine,\n          stack,\n          lineTokens,\n          matchingRule.captures,\n          captureIndices\n        );\n        lineTokens.produce(stack, captureIndices[0].end);\n        stack = stack.pop();\n        if (!hasAdvanced) {\n          if (false) {\n            console.error(\n              \"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\"\n            );\n          }\n          stack = stack.safePop();\n          lineTokens.produce(stack, lineLength);\n          STOP = true;\n          return;\n        }\n      }\n    }\n    if (captureIndices[0].end > linePos) {\n      linePos = captureIndices[0].end;\n      isFirstLine = false;\n    }\n  }\n}\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n  let anchorPosition = stack.beginRuleCapturedEOL ? 0 : -1;\n  const whileRules = [];\n  for (let node = stack; node; node = node.pop()) {\n    const nodeRule = node.getRule(grammar);\n    if (nodeRule instanceof BeginWhileRule) {\n      whileRules.push({\n        rule: nodeRule,\n        stack: node\n      });\n    }\n  }\n  for (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n    const { ruleScanner, findOptions } = prepareRuleWhileSearch(whileRule.rule, grammar, whileRule.stack.endRule, isFirstLine, linePos === anchorPosition);\n    const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n    if (false) {\n      console.log(\"  scanning for while rule\");\n      console.log(ruleScanner.toString());\n    }\n    if (r) {\n      const matchedRuleId = r.ruleId;\n      if (matchedRuleId !== whileRuleId) {\n        stack = whileRule.stack.pop();\n        break;\n      }\n      if (r.captureIndices && r.captureIndices.length) {\n        lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n        handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n        lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n        anchorPosition = r.captureIndices[0].end;\n        if (r.captureIndices[0].end > linePos) {\n          linePos = r.captureIndices[0].end;\n          isFirstLine = false;\n        }\n      }\n    } else {\n      if (false) {\n        console.log(\"  popping \" + whileRule.rule.debugName + \" - \" + whileRule.rule.debugWhileRegExp);\n      }\n      stack = whileRule.stack.pop();\n      break;\n    }\n  }\n  return { stack, linePos, anchorPosition, isFirstLine };\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n  const matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n  const injections = grammar.getInjections();\n  if (injections.length === 0) {\n    return matchResult;\n  }\n  const injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n  if (!injectionResult) {\n    return matchResult;\n  }\n  if (!matchResult) {\n    return injectionResult;\n  }\n  const matchResultScore = matchResult.captureIndices[0].start;\n  const injectionResultScore = injectionResult.captureIndices[0].start;\n  if (injectionResultScore < matchResultScore || injectionResult.priorityMatch && injectionResultScore === matchResultScore) {\n    return injectionResult;\n  }\n  return matchResult;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n  const rule = stack.getRule(grammar);\n  const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n  const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n  if (r) {\n    return {\n      captureIndices: r.captureIndices,\n      matchedRuleId: r.ruleId\n    };\n  }\n  return null;\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n  let bestMatchRating = Number.MAX_VALUE;\n  let bestMatchCaptureIndices = null;\n  let bestMatchRuleId;\n  let bestMatchResultPriority = 0;\n  const scopes = stack.contentNameScopesList.getScopeNames();\n  for (let i = 0, len = injections.length; i < len; i++) {\n    const injection = injections[i];\n    if (!injection.matcher(scopes)) {\n      continue;\n    }\n    const rule = grammar.getRule(injection.ruleId);\n    const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, null, isFirstLine, linePos === anchorPosition);\n    const matchResult = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n    if (!matchResult) {\n      continue;\n    }\n    if (false) {\n      console.log(`  matched injection: ${injection.debugSelector}`);\n      console.log(ruleScanner.toString());\n    }\n    const matchRating = matchResult.captureIndices[0].start;\n    if (matchRating >= bestMatchRating) {\n      continue;\n    }\n    bestMatchRating = matchRating;\n    bestMatchCaptureIndices = matchResult.captureIndices;\n    bestMatchRuleId = matchResult.ruleId;\n    bestMatchResultPriority = injection.priority;\n    if (bestMatchRating === linePos) {\n      break;\n    }\n  }\n  if (bestMatchCaptureIndices) {\n    return {\n      priorityMatch: bestMatchResultPriority === -1,\n      captureIndices: bestMatchCaptureIndices,\n      matchedRuleId: bestMatchRuleId\n    };\n  }\n  return null;\n}\nfunction prepareRuleSearch(rule, grammar, endRegexSource, allowA, allowG) {\n  if (UseOnigurumaFindOptions) {\n    const ruleScanner2 = rule.compile(grammar, endRegexSource);\n    const findOptions = getFindOptions(allowA, allowG);\n    return { ruleScanner: ruleScanner2, findOptions };\n  }\n  const ruleScanner = rule.compileAG(grammar, endRegexSource, allowA, allowG);\n  return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction prepareRuleWhileSearch(rule, grammar, endRegexSource, allowA, allowG) {\n  if (UseOnigurumaFindOptions) {\n    const ruleScanner2 = rule.compileWhile(grammar, endRegexSource);\n    const findOptions = getFindOptions(allowA, allowG);\n    return { ruleScanner: ruleScanner2, findOptions };\n  }\n  const ruleScanner = rule.compileWhileAG(grammar, endRegexSource, allowA, allowG);\n  return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction getFindOptions(allowA, allowG) {\n  let options = 0 /* None */;\n  if (!allowA) {\n    options |= 1 /* NotBeginString */;\n  }\n  if (!allowG) {\n    options |= 4 /* NotBeginPosition */;\n  }\n  return options;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n  if (captures.length === 0) {\n    return;\n  }\n  const lineTextContent = lineText.content;\n  const len = Math.min(captures.length, captureIndices.length);\n  const localStack = [];\n  const maxEnd = captureIndices[0].end;\n  for (let i = 0; i < len; i++) {\n    const captureRule = captures[i];\n    if (captureRule === null) {\n      continue;\n    }\n    const captureIndex = captureIndices[i];\n    if (captureIndex.length === 0) {\n      continue;\n    }\n    if (captureIndex.start > maxEnd) {\n      break;\n    }\n    while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n      lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n      localStack.pop();\n    }\n    if (localStack.length > 0) {\n      lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n    } else {\n      lineTokens.produce(stack, captureIndex.start);\n    }\n    if (captureRule.retokenizeCapturedWithRuleId) {\n      const scopeName = captureRule.getName(lineTextContent, captureIndices);\n      const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n      const contentName = captureRule.getContentName(lineTextContent, captureIndices);\n      const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n      const stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n      const onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n      _tokenizeString(\n        grammar,\n        onigSubStr,\n        isFirstLine && captureIndex.start === 0,\n        captureIndex.start,\n        stackClone,\n        lineTokens,\n        false,\n        /* no time limit */\n        0\n      );\n      disposeOnigString(onigSubStr);\n      continue;\n    }\n    const captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n    if (captureRuleScopeName !== null) {\n      const base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n      const captureRuleScopesList = base.pushAttributed(captureRuleScopeName, grammar);\n      localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n    }\n  }\n  while (localStack.length > 0) {\n    lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n    localStack.pop();\n  }\n}\nvar LocalStackElement = class {\n  scopes;\n  endPos;\n  constructor(scopes, endPos) {\n    this.scopes = scopes;\n    this.endPos = endPos;\n  }\n};\n\n// src/grammar/grammar.ts\nfunction createGrammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib) {\n  return new Grammar(\n    scopeName,\n    grammar,\n    initialLanguage,\n    embeddedLanguages,\n    tokenTypes,\n    balancedBracketSelectors,\n    grammarRepository,\n    onigLib\n  );\n}\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n  const matchers = createMatchers(selector, nameMatcher);\n  const ruleId = RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n  for (const matcher of matchers) {\n    result.push({\n      debugSelector: selector,\n      matcher: matcher.matcher,\n      ruleId,\n      grammar,\n      priority: matcher.priority\n    });\n  }\n}\nfunction nameMatcher(identifers, scopes) {\n  if (scopes.length < identifers.length) {\n    return false;\n  }\n  let lastIndex = 0;\n  return identifers.every((identifier) => {\n    for (let i = lastIndex; i < scopes.length; i++) {\n      if (scopesAreMatching(scopes[i], identifier)) {\n        lastIndex = i + 1;\n        return true;\n      }\n    }\n    return false;\n  });\n}\nfunction scopesAreMatching(thisScopeName, scopeName) {\n  if (!thisScopeName) {\n    return false;\n  }\n  if (thisScopeName === scopeName) {\n    return true;\n  }\n  const len = scopeName.length;\n  return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === \".\";\n}\nvar Grammar = class {\n  constructor(_rootScopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, _onigLib) {\n    this._rootScopeName = _rootScopeName;\n    this.balancedBracketSelectors = balancedBracketSelectors;\n    this._onigLib = _onigLib;\n    this._basicScopeAttributesProvider = new BasicScopeAttributesProvider(\n      initialLanguage,\n      embeddedLanguages\n    );\n    this._rootId = -1;\n    this._lastRuleId = 0;\n    this._ruleId2desc = [null];\n    this._includedGrammars = {};\n    this._grammarRepository = grammarRepository;\n    this._grammar = initGrammar(grammar, null);\n    this._injections = null;\n    this._tokenTypeMatchers = [];\n    if (tokenTypes) {\n      for (const selector of Object.keys(tokenTypes)) {\n        const matchers = createMatchers(selector, nameMatcher);\n        for (const matcher of matchers) {\n          this._tokenTypeMatchers.push({\n            matcher: matcher.matcher,\n            type: tokenTypes[selector]\n          });\n        }\n      }\n    }\n  }\n  _rootId;\n  _lastRuleId;\n  _ruleId2desc;\n  _includedGrammars;\n  _grammarRepository;\n  _grammar;\n  _injections;\n  _basicScopeAttributesProvider;\n  _tokenTypeMatchers;\n  get themeProvider() {\n    return this._grammarRepository;\n  }\n  dispose() {\n    for (const rule of this._ruleId2desc) {\n      if (rule) {\n        rule.dispose();\n      }\n    }\n  }\n  createOnigScanner(sources) {\n    return this._onigLib.createOnigScanner(sources);\n  }\n  createOnigString(sources) {\n    return this._onigLib.createOnigString(sources);\n  }\n  getMetadataForScope(scope) {\n    return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope);\n  }\n  _collectInjections() {\n    const grammarRepository = {\n      lookup: (scopeName2) => {\n        if (scopeName2 === this._rootScopeName) {\n          return this._grammar;\n        }\n        return this.getExternalGrammar(scopeName2);\n      },\n      injections: (scopeName2) => {\n        return this._grammarRepository.injections(scopeName2);\n      }\n    };\n    const result = [];\n    const scopeName = this._rootScopeName;\n    const grammar = grammarRepository.lookup(scopeName);\n    if (grammar) {\n      const rawInjections = grammar.injections;\n      if (rawInjections) {\n        for (let expression in rawInjections) {\n          collectInjections(\n            result,\n            expression,\n            rawInjections[expression],\n            this,\n            grammar\n          );\n        }\n      }\n      const injectionScopeNames = this._grammarRepository.injections(scopeName);\n      if (injectionScopeNames) {\n        injectionScopeNames.forEach((injectionScopeName) => {\n          const injectionGrammar = this.getExternalGrammar(injectionScopeName);\n          if (injectionGrammar) {\n            const selector = injectionGrammar.injectionSelector;\n            if (selector) {\n              collectInjections(\n                result,\n                selector,\n                injectionGrammar,\n                this,\n                injectionGrammar\n              );\n            }\n          }\n        });\n      }\n    }\n    result.sort((i1, i2) => i1.priority - i2.priority);\n    return result;\n  }\n  getInjections() {\n    if (this._injections === null) {\n      this._injections = this._collectInjections();\n    }\n    return this._injections;\n  }\n  registerRule(factory) {\n    const id = ++this._lastRuleId;\n    const result = factory(ruleIdFromNumber(id));\n    this._ruleId2desc[id] = result;\n    return result;\n  }\n  getRule(ruleId) {\n    return this._ruleId2desc[ruleIdToNumber(ruleId)];\n  }\n  getExternalGrammar(scopeName, repository) {\n    if (this._includedGrammars[scopeName]) {\n      return this._includedGrammars[scopeName];\n    } else if (this._grammarRepository) {\n      const rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n      if (rawIncludedGrammar) {\n        this._includedGrammars[scopeName] = initGrammar(\n          rawIncludedGrammar,\n          repository && repository.$base\n        );\n        return this._includedGrammars[scopeName];\n      }\n    }\n    return void 0;\n  }\n  tokenizeLine(lineText, prevState, timeLimit = 0) {\n    const r = this._tokenize(lineText, prevState, false, timeLimit);\n    return {\n      tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n      ruleStack: r.ruleStack,\n      stoppedEarly: r.stoppedEarly\n    };\n  }\n  tokenizeLine2(lineText, prevState, timeLimit = 0) {\n    const r = this._tokenize(lineText, prevState, true, timeLimit);\n    return {\n      tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n      ruleStack: r.ruleStack,\n      stoppedEarly: r.stoppedEarly\n    };\n  }\n  _tokenize(lineText, prevState, emitBinaryTokens, timeLimit) {\n    if (this._rootId === -1) {\n      this._rootId = RuleFactory.getCompiledRuleId(\n        this._grammar.repository.$self,\n        this,\n        this._grammar.repository\n      );\n      this.getInjections();\n    }\n    let isFirstLine;\n    if (!prevState || prevState === StateStackImpl.NULL) {\n      isFirstLine = true;\n      const rawDefaultMetadata = this._basicScopeAttributesProvider.getDefaultAttributes();\n      const defaultStyle = this.themeProvider.getDefaults();\n      const defaultMetadata = EncodedTokenMetadata.set(\n        0,\n        rawDefaultMetadata.languageId,\n        rawDefaultMetadata.tokenType,\n        null,\n        defaultStyle.fontStyle,\n        defaultStyle.foregroundId,\n        defaultStyle.backgroundId\n      );\n      const rootScopeName = this.getRule(this._rootId).getName(\n        null,\n        null\n      );\n      let scopeList;\n      if (rootScopeName) {\n        scopeList = AttributedScopeStack.createRootAndLookUpScopeName(\n          rootScopeName,\n          defaultMetadata,\n          this\n        );\n      } else {\n        scopeList = AttributedScopeStack.createRoot(\n          \"unknown\",\n          defaultMetadata\n        );\n      }\n      prevState = new StateStackImpl(\n        null,\n        this._rootId,\n        -1,\n        -1,\n        false,\n        null,\n        scopeList,\n        scopeList\n      );\n    } else {\n      isFirstLine = false;\n      prevState.reset();\n    }\n    lineText = lineText + \"\\n\";\n    const onigLineText = this.createOnigString(lineText);\n    const lineLength = onigLineText.content.length;\n    const lineTokens = new LineTokens(\n      emitBinaryTokens,\n      lineText,\n      this._tokenTypeMatchers,\n      this.balancedBracketSelectors\n    );\n    const r = _tokenizeString(\n      this,\n      onigLineText,\n      isFirstLine,\n      0,\n      prevState,\n      lineTokens,\n      true,\n      timeLimit\n    );\n    disposeOnigString(onigLineText);\n    return {\n      lineLength,\n      lineTokens,\n      ruleStack: r.stack,\n      stoppedEarly: r.stoppedEarly\n    };\n  }\n};\nfunction initGrammar(grammar, base) {\n  grammar = clone(grammar);\n  grammar.repository = grammar.repository || {};\n  grammar.repository.$self = {\n    $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n    patterns: grammar.patterns,\n    name: grammar.scopeName\n  };\n  grammar.repository.$base = base || grammar.repository.$self;\n  return grammar;\n}\nvar AttributedScopeStack = class _AttributedScopeStack {\n  /**\n   * Invariant:\n   * ```\n   * if (parent && !scopePath.extends(parent.scopePath)) {\n   * \tthrow new Error();\n   * }\n   * ```\n   */\n  constructor(parent, scopePath, tokenAttributes) {\n    this.parent = parent;\n    this.scopePath = scopePath;\n    this.tokenAttributes = tokenAttributes;\n  }\n  static fromExtension(namesScopeList, contentNameScopesList) {\n    let current = namesScopeList;\n    let scopeNames = namesScopeList?.scopePath ?? null;\n    for (const frame of contentNameScopesList) {\n      scopeNames = ScopeStack.push(scopeNames, frame.scopeNames);\n      current = new _AttributedScopeStack(current, scopeNames, frame.encodedTokenAttributes);\n    }\n    return current;\n  }\n  static createRoot(scopeName, tokenAttributes) {\n    return new _AttributedScopeStack(null, new ScopeStack(null, scopeName), tokenAttributes);\n  }\n  static createRootAndLookUpScopeName(scopeName, tokenAttributes, grammar) {\n    const rawRootMetadata = grammar.getMetadataForScope(scopeName);\n    const scopePath = new ScopeStack(null, scopeName);\n    const rootStyle = grammar.themeProvider.themeMatch(scopePath);\n    const resolvedTokenAttributes = _AttributedScopeStack.mergeAttributes(\n      tokenAttributes,\n      rawRootMetadata,\n      rootStyle\n    );\n    return new _AttributedScopeStack(null, scopePath, resolvedTokenAttributes);\n  }\n  get scopeName() {\n    return this.scopePath.scopeName;\n  }\n  toString() {\n    return this.getScopeNames().join(\" \");\n  }\n  equals(other) {\n    return _AttributedScopeStack.equals(this, other);\n  }\n  static equals(a, b) {\n    do {\n      if (a === b) {\n        return true;\n      }\n      if (!a && !b) {\n        return true;\n      }\n      if (!a || !b) {\n        return false;\n      }\n      if (a.scopeName !== b.scopeName || a.tokenAttributes !== b.tokenAttributes) {\n        return false;\n      }\n      a = a.parent;\n      b = b.parent;\n    } while (true);\n  }\n  static mergeAttributes(existingTokenAttributes, basicScopeAttributes, styleAttributes) {\n    let fontStyle = -1 /* NotSet */;\n    let foreground = 0;\n    let background = 0;\n    if (styleAttributes !== null) {\n      fontStyle = styleAttributes.fontStyle;\n      foreground = styleAttributes.foregroundId;\n      background = styleAttributes.backgroundId;\n    }\n    return EncodedTokenMetadata.set(\n      existingTokenAttributes,\n      basicScopeAttributes.languageId,\n      basicScopeAttributes.tokenType,\n      null,\n      fontStyle,\n      foreground,\n      background\n    );\n  }\n  pushAttributed(scopePath, grammar) {\n    if (scopePath === null) {\n      return this;\n    }\n    if (scopePath.indexOf(\" \") === -1) {\n      return _AttributedScopeStack._pushAttributed(this, scopePath, grammar);\n    }\n    const scopes = scopePath.split(/ /g);\n    let result = this;\n    for (const scope of scopes) {\n      result = _AttributedScopeStack._pushAttributed(result, scope, grammar);\n    }\n    return result;\n  }\n  static _pushAttributed(target, scopeName, grammar) {\n    const rawMetadata = grammar.getMetadataForScope(scopeName);\n    const newPath = target.scopePath.push(scopeName);\n    const scopeThemeMatchResult = grammar.themeProvider.themeMatch(newPath);\n    const metadata = _AttributedScopeStack.mergeAttributes(\n      target.tokenAttributes,\n      rawMetadata,\n      scopeThemeMatchResult\n    );\n    return new _AttributedScopeStack(target, newPath, metadata);\n  }\n  getScopeNames() {\n    return this.scopePath.getSegments();\n  }\n  getExtensionIfDefined(base) {\n    const result = [];\n    let self = this;\n    while (self && self !== base) {\n      result.push({\n        encodedTokenAttributes: self.tokenAttributes,\n        scopeNames: self.scopePath.getExtensionIfDefined(self.parent?.scopePath ?? null)\n      });\n      self = self.parent;\n    }\n    return self === base ? result.reverse() : void 0;\n  }\n};\nvar StateStackImpl = class _StateStackImpl {\n  /**\n   * Invariant:\n   * ```\n   * if (contentNameScopesList !== nameScopesList && contentNameScopesList?.parent !== nameScopesList) {\n   * \tthrow new Error();\n   * }\n   * if (this.parent && !nameScopesList.extends(this.parent.contentNameScopesList)) {\n   * \tthrow new Error();\n   * }\n   * ```\n   */\n  constructor(parent, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n    this.parent = parent;\n    this.ruleId = ruleId;\n    this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n    this.endRule = endRule;\n    this.nameScopesList = nameScopesList;\n    this.contentNameScopesList = contentNameScopesList;\n    this.depth = this.parent ? this.parent.depth + 1 : 1;\n    this._enterPos = enterPos;\n    this._anchorPos = anchorPos;\n  }\n  _stackElementBrand = void 0;\n  // TODO remove me\n  static NULL = new _StateStackImpl(\n    null,\n    0,\n    0,\n    0,\n    false,\n    null,\n    null,\n    null\n  );\n  /**\n   * The position on the current line where this state was pushed.\n   * This is relevant only while tokenizing a line, to detect endless loops.\n   * Its value is meaningless across lines.\n   */\n  _enterPos;\n  /**\n   * The captured anchor position when this stack element was pushed.\n   * This is relevant only while tokenizing a line, to restore the anchor position when popping.\n   * Its value is meaningless across lines.\n   */\n  _anchorPos;\n  /**\n   * The depth of the stack.\n   */\n  depth;\n  equals(other) {\n    if (other === null) {\n      return false;\n    }\n    return _StateStackImpl._equals(this, other);\n  }\n  static _equals(a, b) {\n    if (a === b) {\n      return true;\n    }\n    if (!this._structuralEquals(a, b)) {\n      return false;\n    }\n    return AttributedScopeStack.equals(a.contentNameScopesList, b.contentNameScopesList);\n  }\n  /**\n   * A structural equals check. Does not take into account `scopes`.\n   */\n  static _structuralEquals(a, b) {\n    do {\n      if (a === b) {\n        return true;\n      }\n      if (!a && !b) {\n        return true;\n      }\n      if (!a || !b) {\n        return false;\n      }\n      if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n        return false;\n      }\n      a = a.parent;\n      b = b.parent;\n    } while (true);\n  }\n  clone() {\n    return this;\n  }\n  static _reset(el) {\n    while (el) {\n      el._enterPos = -1;\n      el._anchorPos = -1;\n      el = el.parent;\n    }\n  }\n  reset() {\n    _StateStackImpl._reset(this);\n  }\n  pop() {\n    return this.parent;\n  }\n  safePop() {\n    if (this.parent) {\n      return this.parent;\n    }\n    return this;\n  }\n  push(ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n    return new _StateStackImpl(\n      this,\n      ruleId,\n      enterPos,\n      anchorPos,\n      beginRuleCapturedEOL,\n      endRule,\n      nameScopesList,\n      contentNameScopesList\n    );\n  }\n  getEnterPos() {\n    return this._enterPos;\n  }\n  getAnchorPos() {\n    return this._anchorPos;\n  }\n  getRule(grammar) {\n    return grammar.getRule(this.ruleId);\n  }\n  toString() {\n    const r = [];\n    this._writeString(r, 0);\n    return \"[\" + r.join(\",\") + \"]\";\n  }\n  _writeString(res, outIndex) {\n    if (this.parent) {\n      outIndex = this.parent._writeString(res, outIndex);\n    }\n    res[outIndex++] = `(${this.ruleId}, ${this.nameScopesList?.toString()}, ${this.contentNameScopesList?.toString()})`;\n    return outIndex;\n  }\n  withContentNameScopesList(contentNameScopeStack) {\n    if (this.contentNameScopesList === contentNameScopeStack) {\n      return this;\n    }\n    return this.parent.push(\n      this.ruleId,\n      this._enterPos,\n      this._anchorPos,\n      this.beginRuleCapturedEOL,\n      this.endRule,\n      this.nameScopesList,\n      contentNameScopeStack\n    );\n  }\n  withEndRule(endRule) {\n    if (this.endRule === endRule) {\n      return this;\n    }\n    return new _StateStackImpl(\n      this.parent,\n      this.ruleId,\n      this._enterPos,\n      this._anchorPos,\n      this.beginRuleCapturedEOL,\n      endRule,\n      this.nameScopesList,\n      this.contentNameScopesList\n    );\n  }\n  // Used to warn of endless loops\n  hasSameRuleAs(other) {\n    let el = this;\n    while (el && el._enterPos === other._enterPos) {\n      if (el.ruleId === other.ruleId) {\n        return true;\n      }\n      el = el.parent;\n    }\n    return false;\n  }\n  toStateStackFrame() {\n    return {\n      ruleId: ruleIdToNumber(this.ruleId),\n      beginRuleCapturedEOL: this.beginRuleCapturedEOL,\n      endRule: this.endRule,\n      nameScopesList: this.nameScopesList?.getExtensionIfDefined(this.parent?.nameScopesList ?? null) ?? [],\n      contentNameScopesList: this.contentNameScopesList?.getExtensionIfDefined(this.nameScopesList) ?? []\n    };\n  }\n  static pushFrame(self, frame) {\n    const namesScopeList = AttributedScopeStack.fromExtension(self?.nameScopesList ?? null, frame.nameScopesList);\n    return new _StateStackImpl(\n      self,\n      ruleIdFromNumber(frame.ruleId),\n      frame.enterPos ?? -1,\n      frame.anchorPos ?? -1,\n      frame.beginRuleCapturedEOL,\n      frame.endRule,\n      namesScopeList,\n      AttributedScopeStack.fromExtension(namesScopeList, frame.contentNameScopesList)\n    );\n  }\n};\nvar BalancedBracketSelectors = class {\n  balancedBracketScopes;\n  unbalancedBracketScopes;\n  allowAny = false;\n  constructor(balancedBracketScopes, unbalancedBracketScopes) {\n    this.balancedBracketScopes = balancedBracketScopes.flatMap(\n      (selector) => {\n        if (selector === \"*\") {\n          this.allowAny = true;\n          return [];\n        }\n        return createMatchers(selector, nameMatcher).map((m) => m.matcher);\n      }\n    );\n    this.unbalancedBracketScopes = unbalancedBracketScopes.flatMap(\n      (selector) => createMatchers(selector, nameMatcher).map((m) => m.matcher)\n    );\n  }\n  get matchesAlways() {\n    return this.allowAny && this.unbalancedBracketScopes.length === 0;\n  }\n  get matchesNever() {\n    return this.balancedBracketScopes.length === 0 && !this.allowAny;\n  }\n  match(scopes) {\n    for (const excluder of this.unbalancedBracketScopes) {\n      if (excluder(scopes)) {\n        return false;\n      }\n    }\n    for (const includer of this.balancedBracketScopes) {\n      if (includer(scopes)) {\n        return true;\n      }\n    }\n    return this.allowAny;\n  }\n};\nvar LineTokens = class {\n  constructor(emitBinaryTokens, lineText, tokenTypeOverrides, balancedBracketSelectors) {\n    this.balancedBracketSelectors = balancedBracketSelectors;\n    this._emitBinaryTokens = emitBinaryTokens;\n    this._tokenTypeOverrides = tokenTypeOverrides;\n    if (false) {\n      this._lineText = lineText;\n    } else {\n      this._lineText = null;\n    }\n    this._tokens = [];\n    this._binaryTokens = [];\n    this._lastTokenEndIndex = 0;\n  }\n  _emitBinaryTokens;\n  /**\n   * defined only if `false`.\n   */\n  _lineText;\n  /**\n   * used only if `_emitBinaryTokens` is false.\n   */\n  _tokens;\n  /**\n   * used only if `_emitBinaryTokens` is true.\n   */\n  _binaryTokens;\n  _lastTokenEndIndex;\n  _tokenTypeOverrides;\n  produce(stack, endIndex) {\n    this.produceFromScopes(stack.contentNameScopesList, endIndex);\n  }\n  produceFromScopes(scopesList, endIndex) {\n    if (this._lastTokenEndIndex >= endIndex) {\n      return;\n    }\n    if (this._emitBinaryTokens) {\n      let metadata = scopesList?.tokenAttributes ?? 0;\n      let containsBalancedBrackets = false;\n      if (this.balancedBracketSelectors?.matchesAlways) {\n        containsBalancedBrackets = true;\n      }\n      if (this._tokenTypeOverrides.length > 0 || this.balancedBracketSelectors && !this.balancedBracketSelectors.matchesAlways && !this.balancedBracketSelectors.matchesNever) {\n        const scopes2 = scopesList?.getScopeNames() ?? [];\n        for (const tokenType of this._tokenTypeOverrides) {\n          if (tokenType.matcher(scopes2)) {\n            metadata = EncodedTokenMetadata.set(\n              metadata,\n              0,\n              toOptionalTokenType(tokenType.type),\n              null,\n              -1 /* NotSet */,\n              0,\n              0\n            );\n          }\n        }\n        if (this.balancedBracketSelectors) {\n          containsBalancedBrackets = this.balancedBracketSelectors.match(scopes2);\n        }\n      }\n      if (containsBalancedBrackets) {\n        metadata = EncodedTokenMetadata.set(\n          metadata,\n          0,\n          8 /* NotSet */,\n          containsBalancedBrackets,\n          -1 /* NotSet */,\n          0,\n          0\n        );\n      }\n      if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n        this._lastTokenEndIndex = endIndex;\n        return;\n      }\n      this._binaryTokens.push(this._lastTokenEndIndex);\n      this._binaryTokens.push(metadata);\n      this._lastTokenEndIndex = endIndex;\n      return;\n    }\n    const scopes = scopesList?.getScopeNames() ?? [];\n    this._tokens.push({\n      startIndex: this._lastTokenEndIndex,\n      endIndex,\n      // value: lineText.substring(lastTokenEndIndex, endIndex),\n      scopes\n    });\n    this._lastTokenEndIndex = endIndex;\n  }\n  getResult(stack, lineLength) {\n    if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n      this._tokens.pop();\n    }\n    if (this._tokens.length === 0) {\n      this._lastTokenEndIndex = -1;\n      this.produce(stack, lineLength);\n      this._tokens[this._tokens.length - 1].startIndex = 0;\n    }\n    return this._tokens;\n  }\n  getBinaryResult(stack, lineLength) {\n    if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n      this._binaryTokens.pop();\n      this._binaryTokens.pop();\n    }\n    if (this._binaryTokens.length === 0) {\n      this._lastTokenEndIndex = -1;\n      this.produce(stack, lineLength);\n      this._binaryTokens[this._binaryTokens.length - 2] = 0;\n    }\n    const result = new Uint32Array(this._binaryTokens.length);\n    for (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n      result[i] = this._binaryTokens[i];\n    }\n    return result;\n  }\n};\n\n// src/registry.ts\nvar SyncRegistry = class {\n  constructor(theme, _onigLib) {\n    this._onigLib = _onigLib;\n    this._theme = theme;\n  }\n  _grammars = /* @__PURE__ */ new Map();\n  _rawGrammars = /* @__PURE__ */ new Map();\n  _injectionGrammars = /* @__PURE__ */ new Map();\n  _theme;\n  dispose() {\n    for (const grammar of this._grammars.values()) {\n      grammar.dispose();\n    }\n  }\n  setTheme(theme) {\n    this._theme = theme;\n  }\n  getColorMap() {\n    return this._theme.getColorMap();\n  }\n  /**\n   * Add `grammar` to registry and return a list of referenced scope names\n   */\n  addGrammar(grammar, injectionScopeNames) {\n    this._rawGrammars.set(grammar.scopeName, grammar);\n    if (injectionScopeNames) {\n      this._injectionGrammars.set(grammar.scopeName, injectionScopeNames);\n    }\n  }\n  /**\n   * Lookup a raw grammar.\n   */\n  lookup(scopeName) {\n    return this._rawGrammars.get(scopeName);\n  }\n  /**\n   * Returns the injections for the given grammar\n   */\n  injections(targetScope) {\n    return this._injectionGrammars.get(targetScope);\n  }\n  /**\n   * Get the default theme settings\n   */\n  getDefaults() {\n    return this._theme.getDefaults();\n  }\n  /**\n   * Match a scope in the theme.\n   */\n  themeMatch(scopePath) {\n    return this._theme.match(scopePath);\n  }\n  /**\n   * Lookup a grammar.\n   */\n  grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n    if (!this._grammars.has(scopeName)) {\n      let rawGrammar = this._rawGrammars.get(scopeName);\n      if (!rawGrammar) {\n        return null;\n      }\n      this._grammars.set(scopeName, createGrammar(\n        scopeName,\n        rawGrammar,\n        initialLanguage,\n        embeddedLanguages,\n        tokenTypes,\n        balancedBracketSelectors,\n        this,\n        this._onigLib\n      ));\n    }\n    return this._grammars.get(scopeName);\n  }\n};\n\n// src/index.ts\nvar Registry = class {\n  _options;\n  _syncRegistry;\n  _ensureGrammarCache;\n  constructor(options) {\n    this._options = options;\n    this._syncRegistry = new SyncRegistry(\n      Theme.createFromRawTheme(options.theme, options.colorMap),\n      options.onigLib\n    );\n    this._ensureGrammarCache = /* @__PURE__ */ new Map();\n  }\n  dispose() {\n    this._syncRegistry.dispose();\n  }\n  /**\n   * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n   */\n  setTheme(theme, colorMap) {\n    this._syncRegistry.setTheme(Theme.createFromRawTheme(theme, colorMap));\n  }\n  /**\n   * Returns a lookup array for color ids.\n   */\n  getColorMap() {\n    return this._syncRegistry.getColorMap();\n  }\n  /**\n   * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n   * Please do not use language id 0.\n   */\n  loadGrammarWithEmbeddedLanguages(initialScopeName, initialLanguage, embeddedLanguages) {\n    return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n  }\n  /**\n   * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n   * Please do not use language id 0.\n   */\n  loadGrammarWithConfiguration(initialScopeName, initialLanguage, configuration) {\n    return this._loadGrammar(\n      initialScopeName,\n      initialLanguage,\n      configuration.embeddedLanguages,\n      configuration.tokenTypes,\n      new BalancedBracketSelectors(\n        configuration.balancedBracketSelectors || [],\n        configuration.unbalancedBracketSelectors || []\n      )\n    );\n  }\n  /**\n   * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n   */\n  loadGrammar(initialScopeName) {\n    return this._loadGrammar(initialScopeName, 0, null, null, null);\n  }\n  _loadGrammar(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n    const dependencyProcessor = new ScopeDependencyProcessor(this._syncRegistry, initialScopeName);\n    while (dependencyProcessor.Q.length > 0) {\n      dependencyProcessor.Q.map((request) => this._loadSingleGrammar(request.scopeName));\n      dependencyProcessor.processQueue();\n    }\n    return this._grammarForScopeName(\n      initialScopeName,\n      initialLanguage,\n      embeddedLanguages,\n      tokenTypes,\n      balancedBracketSelectors\n    );\n  }\n  _loadSingleGrammar(scopeName) {\n    if (!this._ensureGrammarCache.has(scopeName)) {\n      this._doLoadSingleGrammar(scopeName);\n      this._ensureGrammarCache.set(scopeName, true);\n    }\n  }\n  _doLoadSingleGrammar(scopeName) {\n    const grammar = this._options.loadGrammar(scopeName);\n    if (grammar) {\n      const injections = typeof this._options.getInjections === \"function\" ? this._options.getInjections(scopeName) : void 0;\n      this._syncRegistry.addGrammar(grammar, injections);\n    }\n  }\n  /**\n   * Adds a rawGrammar.\n   */\n  addGrammar(rawGrammar, injections = [], initialLanguage = 0, embeddedLanguages = null) {\n    this._syncRegistry.addGrammar(rawGrammar, injections);\n    return this._grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages);\n  }\n  /**\n   * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n   */\n  _grammarForScopeName(scopeName, initialLanguage = 0, embeddedLanguages = null, tokenTypes = null, balancedBracketSelectors = null) {\n    return this._syncRegistry.grammarForScopeName(\n      scopeName,\n      initialLanguage,\n      embeddedLanguages,\n      tokenTypes,\n      balancedBracketSelectors\n    );\n  }\n};\nvar INITIAL = StateStackImpl.NULL;\nexport {\n  EncodedTokenMetadata,\n  FindOption,\n  FontStyle,\n  INITIAL,\n  Registry,\n  Theme,\n  disposeOnigString\n};\n","/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n  'area',\n  'base',\n  'basefont',\n  'bgsound',\n  'br',\n  'col',\n  'command',\n  'embed',\n  'frame',\n  'hr',\n  'image',\n  'img',\n  'input',\n  'keygen',\n  'link',\n  'meta',\n  'param',\n  'source',\n  'track',\n  'wbr'\n]\n","/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n  /**\n   * @param {SchemaType['property']} property\n   *   Property.\n   * @param {SchemaType['normal']} normal\n   *   Normal.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Schema.\n   */\n  constructor(property, normal, space) {\n    this.normal = normal\n    this.property = property\n\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n *   Definitions.\n * @param {Space | undefined} [space]\n *   Space.\n * @returns {Schema}\n *   Schema.\n */\nexport function merge(definitions, space) {\n  /** @type {Record<string, Info>} */\n  const property = {}\n  /** @type {Record<string, string>} */\n  const normal = {}\n\n  for (const definition of definitions) {\n    Object.assign(property, definition.property)\n    Object.assign(normal, definition.normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n","/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n *   An attribute-like or property-like name.\n * @returns {string}\n *   Value that can be used to look up the properly cased property on a\n *   `Schema`.\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n","/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n  /**\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute) {\n    this.attribute = attribute\n    this.property = property\n  }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n","/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n  Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @param {number | null | undefined} [mask]\n   *   Mask.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n *   Key type.\n * @param {DefinedInfo} values\n *   Info.\n * @param {Key} key\n *   Key.\n * @param {DefinedInfo[Key]} value\n *   Value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n","/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n *   Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n *   Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n *   Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n *   Property names to their types.\n * @property {Space | undefined} [space]\n *   Space.\n * @property {Transform} transform\n *   Transform a property name.\n */\n\n/**\n * @callback Transform\n *   Transform.\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n *   Definition.\n * @returns {Schema}\n *   Schema.\n */\nexport function create(definition) {\n  /** @type {Record<string, Info>} */\n  const properties = {}\n  /** @type {Record<string, string>} */\n  const normals = {}\n\n  for (const [property, value] of Object.entries(definition.properties)) {\n    const info = new DefinedInfo(\n      property,\n      definition.transform(definition.attributes || {}, property),\n      value,\n      definition.space\n    )\n\n    if (\n      definition.mustUseProperty &&\n      definition.mustUseProperty.includes(property)\n    ) {\n      info.mustUseProperty = true\n    }\n\n    properties[property] = info\n\n    normals[normalize(property)] = property\n    normals[normalize(info.attribute)] = property\n  }\n\n  return new Schema(properties, normals, definition.space)\n}\n","import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  },\n  transform(_, property) {\n    return property === 'role'\n      ? property\n      : 'aria-' + property.slice(4).toLowerCase()\n  }\n})\n","/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} attribute\n *   Attribute.\n * @returns {string}\n *   Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  booleanish,\n  boolean,\n  commaSeparated,\n  number,\n  overloadedBoolean,\n  spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    cols: number,\n    colSpan: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: overloadedBoolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  },\n  space: 'html',\n  transform: caseInsensitiveTransform\n})\n","import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  boolean,\n  commaOrSpaceSeparated,\n  commaSeparated,\n  number,\n  spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  },\n  space: 'svg',\n  transform: caseSensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  },\n  space: 'xlink',\n  transform(_, property) {\n    return 'xlink:' + property.slice(5).toLowerCase()\n  }\n})\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  properties: {xmlnsXLink: null, xmlns: null},\n  space: 'xmlns',\n  transform: caseInsensitiveTransform\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n  properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n  space: 'xml',\n  transform(_, property) {\n    return 'xml:' + property.slice(3).toLowerCase()\n  }\n})\n","/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n *   Schema;\n *   either the `html` or `svg` export.\n * @param {string} value\n *   An attribute-like or property-like name;\n *   it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n *   Info.\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let property = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Kebab.\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Camel.\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n","// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n","/**\n * @callback Handler\n *   Handle a value, with a certain ID field set to a certain value.\n *   The ID field is passed to `zwitch`, and it’s value is this function’s\n *   place on the `handlers` record.\n * @param {...any} parameters\n *   Arbitrary parameters passed to the zwitch.\n *   The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback UnknownHandler\n *   Handle values that do have a certain ID field, but it’s set to a value\n *   that is not listed in the `handlers` record.\n * @param {unknown} value\n *   An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback InvalidHandler\n *   Handle values that do not have a certain ID field.\n * @param {unknown} value\n *   Any unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n *   This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n *   Configuration (required).\n * @property {Invalid} [invalid]\n *   Handler to use for invalid values.\n * @property {Unknown} [unknown]\n *   Handler to use for unknown values.\n * @property {Handlers} [handlers]\n *   Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n *   Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n *   Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n  const settings = options || {}\n\n  /**\n   * Handle one value.\n   *\n   * Based on the bound `key`, a respective handler will be called.\n   * If `value` is not an object, or doesn’t have a `key` property, the special\n   * “invalid” handler will be called.\n   * If `value` has an unknown `key`, the special “unknown” handler will be\n   * called.\n   *\n   * All arguments, and the context object, are passed through to the handler,\n   * and it’s result is returned.\n   *\n   * @this {unknown}\n   *   Any context object.\n   * @param {unknown} [value]\n   *   Any value.\n   * @param {...unknown} parameters\n   *   Arbitrary parameters passed to the zwitch.\n   * @property {Handler} invalid\n   *   Handle for values that do not have a certain ID field.\n   * @property {Handler} unknown\n   *   Handle values that do have a certain ID field, but it’s set to a value\n   *   that is not listed in the `handlers` record.\n   * @property {Handlers} handlers\n   *   Record of handlers.\n   * @returns {unknown}\n   *   Anything.\n   */\n  function one(value, ...parameters) {\n    /** @type {Handler|undefined} */\n    let fn = one.invalid\n    const handlers = one.handlers\n\n    if (value && own.call(value, key)) {\n      // @ts-expect-error Indexable.\n      const id = String(value[key])\n      // @ts-expect-error Indexable.\n      fn = own.call(handlers, id) ? handlers[id] : one.unknown\n    }\n\n    if (fn) {\n      return fn.call(this, value, ...parameters)\n    }\n  }\n\n  one.handlers = settings.handlers || {}\n  one.invalid = settings.invalid\n  one.unknown = settings.unknown\n\n  // @ts-expect-error: matches!\n  return one\n}\n","/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n *   Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n *   Whether to only escape possibly dangerous characters.\n *   Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n *   Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n  // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n  /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n  value = value.replace(\n    options.subset\n      ? charactersToExpressionCached(options.subset)\n      : defaultSubsetRegex,\n    basic\n  )\n\n  if (options.subset || options.escapeOnly) {\n    return value\n  }\n\n  return (\n    value\n      // Surrogate pairs.\n      .replace(surrogatePairsRegex, surrogate)\n      // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n      // non-ASCII ones).\n      .replace(controlCharactersRegex, basic)\n  )\n\n  /**\n   * @param {string} pair\n   * @param {number} index\n   * @param {string} all\n   */\n  function surrogate(pair, index, all) {\n    return options.format(\n      (pair.charCodeAt(0) - 0xd800) * 0x400 +\n        pair.charCodeAt(1) -\n        0xdc00 +\n        0x10000,\n      all.charCodeAt(index + 2),\n      options\n    )\n  }\n\n  /**\n   * @param {string} character\n   * @param {number} index\n   * @param {string} all\n   */\n  function basic(character, index, all) {\n    return options.format(\n      character.charCodeAt(0),\n      all.charCodeAt(index + 1),\n      options\n    )\n  }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n  let cached = subsetToRegexCache.get(subset)\n\n  if (!cached) {\n    cached = charactersToExpression(subset)\n    subsetToRegexCache.set(subset, cached)\n  }\n\n  return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n  /** @type {Array<string>} */\n  const groups = []\n  let index = -1\n\n  while (++index < subset.length) {\n    groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n  }\n\n  return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n","const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n  const value = '&#x' + code.toString(16).toUpperCase()\n  return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n","const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n  const value = '&#' + String(code)\n  return omit && next && !decimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n","/**\n * List of legacy HTML named character references that don’t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n  'AElig',\n  'AMP',\n  'Aacute',\n  'Acirc',\n  'Agrave',\n  'Aring',\n  'Atilde',\n  'Auml',\n  'COPY',\n  'Ccedil',\n  'ETH',\n  'Eacute',\n  'Ecirc',\n  'Egrave',\n  'Euml',\n  'GT',\n  'Iacute',\n  'Icirc',\n  'Igrave',\n  'Iuml',\n  'LT',\n  'Ntilde',\n  'Oacute',\n  'Ocirc',\n  'Ograve',\n  'Oslash',\n  'Otilde',\n  'Ouml',\n  'QUOT',\n  'REG',\n  'THORN',\n  'Uacute',\n  'Ucirc',\n  'Ugrave',\n  'Uuml',\n  'Yacute',\n  'aacute',\n  'acirc',\n  'acute',\n  'aelig',\n  'agrave',\n  'amp',\n  'aring',\n  'atilde',\n  'auml',\n  'brvbar',\n  'ccedil',\n  'cedil',\n  'cent',\n  'copy',\n  'curren',\n  'deg',\n  'divide',\n  'eacute',\n  'ecirc',\n  'egrave',\n  'eth',\n  'euml',\n  'frac12',\n  'frac14',\n  'frac34',\n  'gt',\n  'iacute',\n  'icirc',\n  'iexcl',\n  'igrave',\n  'iquest',\n  'iuml',\n  'laquo',\n  'lt',\n  'macr',\n  'micro',\n  'middot',\n  'nbsp',\n  'not',\n  'ntilde',\n  'oacute',\n  'ocirc',\n  'ograve',\n  'ordf',\n  'ordm',\n  'oslash',\n  'otilde',\n  'ouml',\n  'para',\n  'plusmn',\n  'pound',\n  'quot',\n  'raquo',\n  'reg',\n  'sect',\n  'shy',\n  'sup1',\n  'sup2',\n  'sup3',\n  'szlig',\n  'thorn',\n  'times',\n  'uacute',\n  'ucirc',\n  'ugrave',\n  'uml',\n  'uuml',\n  'yacute',\n  'yen',\n  'yuml'\n]\n","/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n  nbsp: ' ',\n  iexcl: '¡',\n  cent: '¢',\n  pound: '£',\n  curren: '¤',\n  yen: '¥',\n  brvbar: '¦',\n  sect: '§',\n  uml: '¨',\n  copy: '©',\n  ordf: 'ª',\n  laquo: '«',\n  not: '¬',\n  shy: '­',\n  reg: '®',\n  macr: '¯',\n  deg: '°',\n  plusmn: '±',\n  sup2: '²',\n  sup3: '³',\n  acute: '´',\n  micro: 'µ',\n  para: '¶',\n  middot: '·',\n  cedil: '¸',\n  sup1: '¹',\n  ordm: 'º',\n  raquo: '»',\n  frac14: '¼',\n  frac12: '½',\n  frac34: '¾',\n  iquest: '¿',\n  Agrave: 'À',\n  Aacute: 'Á',\n  Acirc: 'Â',\n  Atilde: 'Ã',\n  Auml: 'Ä',\n  Aring: 'Å',\n  AElig: 'Æ',\n  Ccedil: 'Ç',\n  Egrave: 'È',\n  Eacute: 'É',\n  Ecirc: 'Ê',\n  Euml: 'Ë',\n  Igrave: 'Ì',\n  Iacute: 'Í',\n  Icirc: 'Î',\n  Iuml: 'Ï',\n  ETH: 'Ð',\n  Ntilde: 'Ñ',\n  Ograve: 'Ò',\n  Oacute: 'Ó',\n  Ocirc: 'Ô',\n  Otilde: 'Õ',\n  Ouml: 'Ö',\n  times: '×',\n  Oslash: 'Ø',\n  Ugrave: 'Ù',\n  Uacute: 'Ú',\n  Ucirc: 'Û',\n  Uuml: 'Ü',\n  Yacute: 'Ý',\n  THORN: 'Þ',\n  szlig: 'ß',\n  agrave: 'à',\n  aacute: 'á',\n  acirc: 'â',\n  atilde: 'ã',\n  auml: 'ä',\n  aring: 'å',\n  aelig: 'æ',\n  ccedil: 'ç',\n  egrave: 'è',\n  eacute: 'é',\n  ecirc: 'ê',\n  euml: 'ë',\n  igrave: 'ì',\n  iacute: 'í',\n  icirc: 'î',\n  iuml: 'ï',\n  eth: 'ð',\n  ntilde: 'ñ',\n  ograve: 'ò',\n  oacute: 'ó',\n  ocirc: 'ô',\n  otilde: 'õ',\n  ouml: 'ö',\n  divide: '÷',\n  oslash: 'ø',\n  ugrave: 'ù',\n  uacute: 'ú',\n  ucirc: 'û',\n  uuml: 'ü',\n  yacute: 'ý',\n  thorn: 'þ',\n  yuml: 'ÿ',\n  fnof: 'ƒ',\n  Alpha: 'Α',\n  Beta: 'Β',\n  Gamma: 'Γ',\n  Delta: 'Δ',\n  Epsilon: 'Ε',\n  Zeta: 'Ζ',\n  Eta: 'Η',\n  Theta: 'Θ',\n  Iota: 'Ι',\n  Kappa: 'Κ',\n  Lambda: 'Λ',\n  Mu: 'Μ',\n  Nu: 'Ν',\n  Xi: 'Ξ',\n  Omicron: 'Ο',\n  Pi: 'Π',\n  Rho: 'Ρ',\n  Sigma: 'Σ',\n  Tau: 'Τ',\n  Upsilon: 'Υ',\n  Phi: 'Φ',\n  Chi: 'Χ',\n  Psi: 'Ψ',\n  Omega: 'Ω',\n  alpha: 'α',\n  beta: 'β',\n  gamma: 'γ',\n  delta: 'δ',\n  epsilon: 'ε',\n  zeta: 'ζ',\n  eta: 'η',\n  theta: 'θ',\n  iota: 'ι',\n  kappa: 'κ',\n  lambda: 'λ',\n  mu: 'μ',\n  nu: 'ν',\n  xi: 'ξ',\n  omicron: 'ο',\n  pi: 'π',\n  rho: 'ρ',\n  sigmaf: 'ς',\n  sigma: 'σ',\n  tau: 'τ',\n  upsilon: 'υ',\n  phi: 'φ',\n  chi: 'χ',\n  psi: 'ψ',\n  omega: 'ω',\n  thetasym: 'ϑ',\n  upsih: 'ϒ',\n  piv: 'ϖ',\n  bull: '•',\n  hellip: '…',\n  prime: '′',\n  Prime: '″',\n  oline: '‾',\n  frasl: '⁄',\n  weierp: '℘',\n  image: 'ℑ',\n  real: 'ℜ',\n  trade: '™',\n  alefsym: 'ℵ',\n  larr: '←',\n  uarr: '↑',\n  rarr: '→',\n  darr: '↓',\n  harr: '↔',\n  crarr: '↵',\n  lArr: '⇐',\n  uArr: '⇑',\n  rArr: '⇒',\n  dArr: '⇓',\n  hArr: '⇔',\n  forall: '∀',\n  part: '∂',\n  exist: '∃',\n  empty: '∅',\n  nabla: '∇',\n  isin: '∈',\n  notin: '∉',\n  ni: '∋',\n  prod: '∏',\n  sum: '∑',\n  minus: '−',\n  lowast: '∗',\n  radic: '√',\n  prop: '∝',\n  infin: '∞',\n  ang: '∠',\n  and: '∧',\n  or: '∨',\n  cap: '∩',\n  cup: '∪',\n  int: '∫',\n  there4: '∴',\n  sim: '∼',\n  cong: '≅',\n  asymp: '≈',\n  ne: '≠',\n  equiv: '≡',\n  le: '≤',\n  ge: '≥',\n  sub: '⊂',\n  sup: '⊃',\n  nsub: '⊄',\n  sube: '⊆',\n  supe: '⊇',\n  oplus: '⊕',\n  otimes: '⊗',\n  perp: '⊥',\n  sdot: '⋅',\n  lceil: '⌈',\n  rceil: '⌉',\n  lfloor: '⌊',\n  rfloor: '⌋',\n  lang: '〈',\n  rang: '〉',\n  loz: '◊',\n  spades: '♠',\n  clubs: '♣',\n  hearts: '♥',\n  diams: '♦',\n  quot: '\"',\n  amp: '&',\n  lt: '<',\n  gt: '>',\n  OElig: 'Œ',\n  oelig: 'œ',\n  Scaron: 'Š',\n  scaron: 'š',\n  Yuml: 'Ÿ',\n  circ: 'ˆ',\n  tilde: '˜',\n  ensp: ' ',\n  emsp: ' ',\n  thinsp: ' ',\n  zwnj: '‌',\n  zwj: '‍',\n  lrm: '‎',\n  rlm: '‏',\n  ndash: '–',\n  mdash: '—',\n  lsquo: '‘',\n  rsquo: '’',\n  sbquo: '‚',\n  ldquo: '“',\n  rdquo: '”',\n  bdquo: '„',\n  dagger: '†',\n  Dagger: '‡',\n  permil: '‰',\n  lsaquo: '‹',\n  rsaquo: '›',\n  euro: '€'\n}\n","/**\n * List of legacy (that don’t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n  'cent',\n  'copy',\n  'divide',\n  'gt',\n  'lt',\n  'not',\n  'para',\n  'times'\n]\n","import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n  if (own.call(characterEntitiesHtml4, key)) {\n    characters[characterEntitiesHtml4[key]] = key\n  }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n  const character = String.fromCharCode(code)\n\n  if (own.call(characters, character)) {\n    const name = characters[character]\n    const value = '&' + name\n\n    if (\n      omit &&\n      characterEntitiesLegacy.includes(name) &&\n      !dangerous.includes(name) &&\n      (!attribute ||\n        (next &&\n          next !== 61 /* `=` */ &&\n          notAlphanumericRegex.test(String.fromCharCode(next))))\n    ) {\n      return value\n    }\n\n    return value + ';'\n  }\n\n  return ''\n}\n","/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n *   Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n *   Prefer the shortest possible reference, if that results in less bytes.\n *   **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n *   Whether to omit semicolons when possible.\n *   **Note**: This creates what HTML calls “parse errors” but is otherwise still valid HTML — don’t use this except when building a minifier.\n *   Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n *   Create character references which don’t fail in attributes.\n *   **Note**: `attribute` only applies when operating dangerously with\n *   `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n  let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n  /** @type {string|undefined} */\n  let named\n\n  if (options.useNamedReferences || options.useShortestReferences) {\n    named = toNamed(\n      code,\n      next,\n      options.omitOptionalSemicolons,\n      options.attribute\n    )\n  }\n\n  // Use the shortest numeric reference when requested.\n  // A simple algorithm would use decimal for all code points under 100, as\n  // those are shorter than hexadecimal:\n  //\n  // * `&#99;` vs `&#x63;` (decimal shorter)\n  // * `&#100;` vs `&#x64;` (equal)\n  //\n  // However, because we take `next` into consideration when `omit` is used,\n  // And it would be possible that decimals are shorter on bigger values as\n  // well if `next` is hexadecimal but not decimal, we instead compare both.\n  if (\n    (options.useShortestReferences || !named) &&\n    options.useShortestReferences\n  ) {\n    const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n    if (decimal.length < numeric.length) {\n      numeric = decimal\n    }\n  }\n\n  return named &&\n    (!options.useShortestReferences || named.length < numeric.length)\n    ? named\n    : numeric\n}\n","/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n *   Value to encode.\n * @param {Options} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nexport function stringifyEntities(value, options) {\n  return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n *   Value to encode.\n * @param {LightOptions} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n  return core(value, Object.assign({format: formatBasic}, options))\n}\n","/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n  // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n  return state.settings.bogusComments\n    ? '<?' +\n        stringifyEntities(\n          node.value,\n          Object.assign({}, state.settings.characterReferences, {\n            subset: bogusCommentEntitySubset\n          })\n        ) +\n        '>'\n    : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n  /**\n   * @param {string} $0\n   */\n  function encode($0) {\n    return stringifyEntities(\n      $0,\n      Object.assign({}, state.settings.characterReferences, {\n        subset: commentEntitySubset\n      })\n    )\n  }\n}\n","/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n *   Node to handle.\n * @param {number | undefined} _2\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _3\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n  return (\n    '<!' +\n    (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n    (state.settings.tightDoctype ? '' : ' ') +\n    'html>'\n  )\n}\n","/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n","/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n","/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n","/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n *   Thing to check (`Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n *   whose `value` field is checked.\n */\nexport function whitespace(thing) {\n  return typeof thing === 'object'\n    ? thing.type === 'text'\n      ? empty(thing.value)\n      : false\n    : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n  return value.replace(re, '') === ''\n}\n","/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n  return sibling\n\n  /**\n   * Find applicable siblings in a direction.\n   *\n   * @template {Parents} Parent\n   *   Parent type.\n   * @param {Parent | undefined} parent\n   *   Parent.\n   * @param {number | undefined} index\n   *   Index of child in `parent`.\n   * @param {boolean | undefined} [includeWhitespace=false]\n   *   Whether to include whitespace (default: `false`).\n   * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n   *   Child of parent.\n   */\n  function sibling(parent, index, includeWhitespace) {\n    const siblings = parent ? parent.children : emptyChildren\n    let offset = (index || 0) + increment\n    let next = siblings[offset]\n\n    if (!includeWhitespace) {\n      while (next && whitespace(next)) {\n        offset += increment\n        next = siblings[offset]\n      }\n    }\n\n    // @ts-expect-error: it’s a correct child.\n    return next\n  }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n *   Check if a tag can be omitted.\n * @param {Element} element\n *   Element to check.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n *   Omission handlers, where each key is a tag name, and each value is the\n *   corresponding handler.\n * @returns {OmitHandle}\n *   Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n  return omit\n\n  /**\n   * Check if a given node can have a tag omitted.\n   *\n   * @type {OmitHandle}\n   */\n  function omit(node, index, parent) {\n    return (\n      own.call(handlers, node.tagName) &&\n      handlers[node.tagName](node, index, parent)\n    )\n  }\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n  body,\n  caption: headOrColgroupOrCaption,\n  colgroup: headOrColgroupOrCaption,\n  dd,\n  dt,\n  head: headOrColgroupOrCaption,\n  html,\n  li,\n  optgroup,\n  option,\n  p,\n  rp: rubyElement,\n  rt: rubyElement,\n  tbody,\n  td: cells,\n  tfoot,\n  th: cells,\n  thead,\n  tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n  const next = siblingAfter(parent, index, true)\n  return (\n    !next ||\n    (next.type !== 'comment' &&\n      !(next.type === 'text' && whitespace(next.value.charAt(0))))\n  )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return next\n    ? next.type === 'element' &&\n        (next.tagName === 'address' ||\n          next.tagName === 'article' ||\n          next.tagName === 'aside' ||\n          next.tagName === 'blockquote' ||\n          next.tagName === 'details' ||\n          next.tagName === 'div' ||\n          next.tagName === 'dl' ||\n          next.tagName === 'fieldset' ||\n          next.tagName === 'figcaption' ||\n          next.tagName === 'figure' ||\n          next.tagName === 'footer' ||\n          next.tagName === 'form' ||\n          next.tagName === 'h1' ||\n          next.tagName === 'h2' ||\n          next.tagName === 'h3' ||\n          next.tagName === 'h4' ||\n          next.tagName === 'h5' ||\n          next.tagName === 'h6' ||\n          next.tagName === 'header' ||\n          next.tagName === 'hgroup' ||\n          next.tagName === 'hr' ||\n          next.tagName === 'main' ||\n          next.tagName === 'menu' ||\n          next.tagName === 'nav' ||\n          next.tagName === 'ol' ||\n          next.tagName === 'p' ||\n          next.tagName === 'pre' ||\n          next.tagName === 'section' ||\n          next.tagName === 'table' ||\n          next.tagName === 'ul')\n    : !parent ||\n        // Confusing parent.\n        !(\n          parent.type === 'element' &&\n          (parent.tagName === 'a' ||\n            parent.tagName === 'audio' ||\n            parent.tagName === 'del' ||\n            parent.tagName === 'ins' ||\n            parent.tagName === 'map' ||\n            parent.tagName === 'noscript' ||\n            parent.tagName === 'video')\n        )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return Boolean(\n    next &&\n      next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd')\n  )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd'))\n  )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'rp' || next.tagName === 'rt'))\n  )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'option' || next.tagName === 'optgroup'))\n  )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return Boolean(\n    next &&\n      next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot')\n  )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n  )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n  return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'td' || next.tagName === 'th'))\n  )\n}\n","/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n  body,\n  colgroup,\n  head,\n  html,\n  tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction html(node) {\n  const head = siblingAfter(node, -1)\n  return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction head(node) {\n  /** @type {Set<string>} */\n  const seen = new Set()\n\n  // Whether `srcdoc` or not,\n  // make sure the content model at least doesn’t have too many `base`s/`title`s.\n  for (const child of node.children) {\n    if (\n      child.type === 'element' &&\n      (child.tagName === 'base' || child.tagName === 'title')\n    ) {\n      if (seen.has(child.tagName)) return false\n      seen.add(child.tagName)\n    }\n  }\n\n  // “May be omitted if the element is empty,\n  // or if the first thing inside the head element is an element.”\n  const child = node.children[0]\n  return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction body(node) {\n  const head = siblingAfter(node, -1, true)\n\n  return (\n    !head ||\n    (head.type !== 'comment' &&\n      !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n      !(\n        head.type === 'element' &&\n        (head.tagName === 'meta' ||\n          head.tagName === 'link' ||\n          head.tagName === 'script' ||\n          head.tagName === 'style' ||\n          head.tagName === 'template')\n      ))\n  )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it’s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1, true)\n\n  // Previous colgroup was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    previous.tagName === 'colgroup' &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1)\n\n  // Previous table section was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n","/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n  // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n  name: [\n    ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n  unquoted: [\n    ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n  single: [\n    [\"&'\".split(''), '\"&\\'`'.split('')],\n    [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n  double: [\n    ['\"&'.split(''), '\"&\\'`'.split('')],\n    ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n  ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function element(node, index, parent, state) {\n  const schema = state.schema\n  const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n  let selfClosing =\n    schema.space === 'svg'\n      ? state.settings.closeEmptyElements\n      : state.settings.voids.includes(node.tagName.toLowerCase())\n  /** @type {Array<string>} */\n  const parts = []\n  /** @type {string} */\n  let last\n\n  if (schema.space === 'html' && node.tagName === 'svg') {\n    state.schema = svg\n  }\n\n  const attributes = serializeAttributes(state, node.properties)\n\n  const content = state.all(\n    schema.space === 'html' && node.tagName === 'template' ? node.content : node\n  )\n\n  state.schema = schema\n\n  // If the node is categorised as void, but it has children, remove the\n  // categorisation.\n  // This enables for example `menuitem`s, which are void in W3C HTML but not\n  // void in WHATWG HTML, to be stringified properly.\n  // Note: `menuitem` has since been removed from the HTML spec, and so is no\n  // longer void.\n  if (content) selfClosing = false\n\n  if (attributes || !omit || !opening(node, index, parent)) {\n    parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n    if (\n      selfClosing &&\n      (schema.space === 'svg' || state.settings.closeSelfClosing)\n    ) {\n      last = attributes.charAt(attributes.length - 1)\n      if (\n        !state.settings.tightSelfClosing ||\n        last === '/' ||\n        (last && last !== '\"' && last !== \"'\")\n      ) {\n        parts.push(' ')\n      }\n\n      parts.push('/')\n    }\n\n    parts.push('>')\n  }\n\n  parts.push(content)\n\n  if (!selfClosing && (!omit || !closing(node, index, parent))) {\n    parts.push('</' + node.tagName + '>')\n  }\n\n  return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n  /** @type {Array<string>} */\n  const values = []\n  let index = -1\n  /** @type {string} */\n  let key\n\n  if (properties) {\n    for (key in properties) {\n      if (properties[key] !== null && properties[key] !== undefined) {\n        const value = serializeAttribute(state, key, properties[key])\n        if (value) values.push(value)\n      }\n    }\n  }\n\n  while (++index < values.length) {\n    const last = state.settings.tightAttributes\n      ? values[index].charAt(values[index].length - 1)\n      : undefined\n\n    // In tight mode, don’t add a space after quoted attributes.\n    if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n      values[index] += ' '\n    }\n  }\n\n  return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n  const info = find(state.schema, key)\n  const x =\n    state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n  const y = state.settings.allowDangerousCharacters ? 0 : 1\n  let quote = state.quote\n  /** @type {string | undefined} */\n  let result\n\n  if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n    value = true\n  } else if (\n    (info.boolean || info.overloadedBoolean) &&\n    (typeof value !== 'string' || value === info.attribute || value === '')\n  ) {\n    value = Boolean(value)\n  }\n\n  if (\n    value === null ||\n    value === undefined ||\n    value === false ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return ''\n  }\n\n  const name = stringifyEntities(\n    info.attribute,\n    Object.assign({}, state.settings.characterReferences, {\n      // Always encode without parse errors in non-HTML.\n      subset: constants.name[x][y]\n    })\n  )\n\n  // No value.\n  // There is currently only one boolean property in SVG: `[download]` on\n  // `<a>`.\n  // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n  // so I can’t test if dropping the value works.\n  // But I assume that it should:\n  //\n  // ```html\n  // <!doctype html>\n  // <svg viewBox=\"0 0 100 100\">\n  //   <a href=https://example.com download>\n  //     <circle cx=50 cy=40 r=35 />\n  //   </a>\n  // </svg>\n  // ```\n  //\n  // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n  if (value === true) return name\n\n  // `spaces` doesn’t accept a second argument, but it’s given here just to\n  // keep the code cleaner.\n  value = Array.isArray(value)\n    ? (info.commaSeparated ? commas : spaces)(value, {\n        padLeft: !state.settings.tightCommaSeparatedLists\n      })\n    : String(value)\n\n  if (state.settings.collapseEmptyAttributes && !value) return name\n\n  // Check unquoted value.\n  if (state.settings.preferUnquoted) {\n    result = stringifyEntities(\n      value,\n      Object.assign({}, state.settings.characterReferences, {\n        attribute: true,\n        subset: constants.unquoted[x][y]\n      })\n    )\n  }\n\n  // If we don’t want unquoted, or if `value` contains character references when\n  // unquoted…\n  if (result !== value) {\n    // If the alternative is less common than `quote`, switch.\n    if (\n      state.settings.quoteSmart &&\n      ccount(value, quote) > ccount(value, state.alternative)\n    ) {\n      quote = state.alternative\n    }\n\n    result =\n      quote +\n      stringifyEntities(\n        value,\n        Object.assign({}, state.settings.characterReferences, {\n          // Always encode without parse errors in non-HTML.\n          subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n          attribute: true\n        })\n      ) +\n      quote\n  }\n\n  // Don’t add a `=` for unquoted empties.\n  return name + (result ? '=' + result : result)\n}\n","/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n *   Node to handle.\n * @param {number | undefined} _\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function text(node, _, parent, state) {\n  // Check if content of `node` should be escaped.\n  return parent &&\n    parent.type === 'element' &&\n    (parent.tagName === 'script' || parent.tagName === 'style')\n    ? node.value\n    : stringifyEntities(\n        node.value,\n        Object.assign({}, state.settings.characterReferences, {\n          subset: textEntitySubset\n        })\n      )\n}\n","/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function raw(node, index, parent, state) {\n  return state.settings.allowDangerousHtml\n    ? node.value\n    : text(node, index, parent, state)\n}\n","/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function root(node, _1, _2, state) {\n  return state.all(node)\n}\n","/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n  invalid,\n  unknown,\n  handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n *   Unknown value.\n * @returns {never}\n *   Never.\n */\nfunction invalid(node) {\n  throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n *  Unknown node.\n * @returns {never}\n *   Never.\n */\nfunction unknown(node_) {\n  // `type` is guaranteed by runtime JS.\n  const node = /** @type {Nodes} */ (node_)\n  throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n","/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n *   Do not encode some characters which cause XSS vulnerabilities in older\n *   browsers (default: `false`).\n *\n *   > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n *   When `false`, `Raw` nodes are encoded.\n *\n *   > ⚠️ **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n *   Do not encode characters which cause parse errors (even though they work),\n *   to save bytes (default: `false`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n *   Use “bogus comments” instead of comments to save byes: `<?charlie>`\n *   instead of `<!--charlie-->` (default: `false`).\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n *   Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n *   Close SVG elements without any content with slash (`/`) on the opening tag\n *   instead of an end tag: `<circle />` instead of `<circle></circle>`\n *   (default: `false`).\n *\n *   See `tightSelfClosing` to control whether a space is used before the\n *   slash.\n *\n *   Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n *   Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n *   `<img>` (default: `false`).\n *\n *   See `tightSelfClosing` to control whether a space is used before the\n *   slash.\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n *   Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n *   `false`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n *   Omit optional opening and closing tags (default: `false`).\n *\n *   For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n *   tags can be omitted.\n *   The first because it’s followed by another `li`, the last because it’s\n *   followed by nothing.\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n *   Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n *   Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n *   Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it (default: `'html'`).\n *\n *   > 👉 **Note**: hast is not XML.\n *   > It supports SVG as embedded in HTML.\n *   > It does not support the features available in XML.\n *   > Passing SVG might break but fragments of modern SVG should be fine.\n *   > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n *   Join attributes together, without whitespace, if possible: get\n *   `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n *   bytes (default: `false`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n *   Join known comma-separated attribute values with just a comma (`,`),\n *   instead of padding them on the right as well (`,␠`, where `␠` represents a\n *   space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n *   Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n *   `<!doctype html>` to save bytes (default: `false`).\n *\n *   > 👉 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn’t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n *   Do not use an extra space when closing self-closing elements: `<img/>`\n *   instead of `<img />` (default: `false`).\n *\n *   > 👉 **Note**: only used if `closeSelfClosing: true` or\n *   > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n *   Use a `<!DOCTYPE…` instead of `<!doctype…` (default: `false`).\n *\n *   Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n *   Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n *   Not used in the SVG space.\n *\n *   > 👉 **Note**: It’s highly unlikely that you want to pass this, because\n *   > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n *   HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n *   Namespace.\n *\n * @typedef State\n *   Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n *   Serialize the children of a parent node.\n * @property {Quote} alternative\n *   Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n *   Serialize one node.\n * @property {Quote} quote\n *   Preferred quote.\n * @property {Schema} schema\n *   Current schema.\n * @property {Settings} settings\n *   User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n *   Tree to serialize.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized HTML.\n */\nexport function toHtml(tree, options) {\n  const options_ = options || emptyOptions\n  const quote = options_.quote || '\"'\n  const alternative = quote === '\"' ? \"'\" : '\"'\n\n  if (quote !== '\"' && quote !== \"'\") {\n    throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n  }\n\n  /** @type {State} */\n  const state = {\n    one,\n    all,\n    settings: {\n      omitOptionalTags: options_.omitOptionalTags || false,\n      allowParseErrors: options_.allowParseErrors || false,\n      allowDangerousCharacters: options_.allowDangerousCharacters || false,\n      quoteSmart: options_.quoteSmart || false,\n      preferUnquoted: options_.preferUnquoted || false,\n      tightAttributes: options_.tightAttributes || false,\n      upperDoctype: options_.upperDoctype || false,\n      tightDoctype: options_.tightDoctype || false,\n      bogusComments: options_.bogusComments || false,\n      tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n      tightSelfClosing: options_.tightSelfClosing || false,\n      collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n      allowDangerousHtml: options_.allowDangerousHtml || false,\n      voids: options_.voids || htmlVoidElements,\n      characterReferences:\n        options_.characterReferences || emptyCharacterReferences,\n      closeSelfClosing: options_.closeSelfClosing || false,\n      closeEmptyElements: options_.closeEmptyElements || false\n    },\n    schema: options_.space === 'svg' ? svg : html,\n    quote,\n    alternative\n  }\n\n  return state.one(\n    Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n    undefined,\n    undefined\n  )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(node, index, parent) {\n  return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Parents | undefined} parent\n *   Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n  /** @type {Array<string>} */\n  const results = []\n  const children = (parent && parent.children) || emptyChildren\n  let index = -1\n\n  while (++index < children.length) {\n    results[index] = this.one(children[index], index, parent)\n  }\n\n  return results.join('')\n}\n","import { ShikiError as ShikiError$1 } from '@shikijs/types';\nexport * from '@shikijs/types';\nimport { FontStyle, INITIAL, EncodedTokenMetadata, Registry as Registry$1, Theme } from '@shikijs/vscode-textmate';\nimport { toHtml } from 'hast-util-to-html';\n\nfunction resolveColorReplacements(theme, options) {\n  const replacements = typeof theme === \"string\" ? {} : { ...theme.colorReplacements };\n  const themeName = typeof theme === \"string\" ? theme : theme.name;\n  for (const [key, value] of Object.entries(options?.colorReplacements || {})) {\n    if (typeof value === \"string\")\n      replacements[key] = value;\n    else if (key === themeName)\n      Object.assign(replacements, value);\n  }\n  return replacements;\n}\nfunction applyColorReplacements(color, replacements) {\n  if (!color)\n    return color;\n  return replacements?.[color?.toLowerCase()] || color;\n}\n\nfunction toArray(x) {\n  return Array.isArray(x) ? x : [x];\n}\nasync function normalizeGetter(p) {\n  return Promise.resolve(typeof p === \"function\" ? p() : p).then((r) => r.default || r);\n}\nfunction isPlainLang(lang) {\n  return !lang || [\"plaintext\", \"txt\", \"text\", \"plain\"].includes(lang);\n}\nfunction isSpecialLang(lang) {\n  return lang === \"ansi\" || isPlainLang(lang);\n}\nfunction isNoneTheme(theme) {\n  return theme === \"none\";\n}\nfunction isSpecialTheme(theme) {\n  return isNoneTheme(theme);\n}\n\nfunction addClassToHast(node, className) {\n  if (!className)\n    return node;\n  node.properties ||= {};\n  node.properties.class ||= [];\n  if (typeof node.properties.class === \"string\")\n    node.properties.class = node.properties.class.split(/\\s+/g);\n  if (!Array.isArray(node.properties.class))\n    node.properties.class = [];\n  const targets = Array.isArray(className) ? className : className.split(/\\s+/g);\n  for (const c of targets) {\n    if (c && !node.properties.class.includes(c))\n      node.properties.class.push(c);\n  }\n  return node;\n}\n\nfunction splitLines(code, preserveEnding = false) {\n  const parts = code.split(/(\\r?\\n)/g);\n  let index = 0;\n  const lines = [];\n  for (let i = 0; i < parts.length; i += 2) {\n    const line = preserveEnding ? parts[i] + (parts[i + 1] || \"\") : parts[i];\n    lines.push([line, index]);\n    index += parts[i].length;\n    index += parts[i + 1]?.length || 0;\n  }\n  return lines;\n}\nfunction createPositionConverter(code) {\n  const lines = splitLines(code, true).map(([line]) => line);\n  function indexToPos(index) {\n    if (index === code.length) {\n      return {\n        line: lines.length - 1,\n        character: lines[lines.length - 1].length\n      };\n    }\n    let character = index;\n    let line = 0;\n    for (const lineText of lines) {\n      if (character < lineText.length)\n        break;\n      character -= lineText.length;\n      line++;\n    }\n    return { line, character };\n  }\n  function posToIndex(line, character) {\n    let index = 0;\n    for (let i = 0; i < line; i++)\n      index += lines[i].length;\n    index += character;\n    return index;\n  }\n  return {\n    lines,\n    indexToPos,\n    posToIndex\n  };\n}\nfunction guessEmbeddedLanguages(code, _lang, highlighter) {\n  const langs = /* @__PURE__ */ new Set();\n  for (const match of code.matchAll(/lang=[\"']([\\w-]+)[\"']/g)) {\n    langs.add(match[1]);\n  }\n  for (const match of code.matchAll(/(?:```|~~~)([\\w-]+)/g)) {\n    langs.add(match[1]);\n  }\n  for (const match of code.matchAll(/\\\\begin\\{([\\w-]+)\\}/g)) {\n    langs.add(match[1]);\n  }\n  if (!highlighter)\n    return Array.from(langs);\n  const bundle = highlighter.getBundledLanguages();\n  return Array.from(langs).filter((l) => l && bundle[l]);\n}\n\nconst DEFAULT_COLOR_LIGHT_DARK = \"light-dark()\";\nconst COLOR_KEYS = [\"color\", \"background-color\"];\n\nfunction splitToken(token, offsets) {\n  let lastOffset = 0;\n  const tokens = [];\n  for (const offset of offsets) {\n    if (offset > lastOffset) {\n      tokens.push({\n        ...token,\n        content: token.content.slice(lastOffset, offset),\n        offset: token.offset + lastOffset\n      });\n    }\n    lastOffset = offset;\n  }\n  if (lastOffset < token.content.length) {\n    tokens.push({\n      ...token,\n      content: token.content.slice(lastOffset),\n      offset: token.offset + lastOffset\n    });\n  }\n  return tokens;\n}\nfunction splitTokens(tokens, breakpoints) {\n  const sorted = Array.from(breakpoints instanceof Set ? breakpoints : new Set(breakpoints)).sort((a, b) => a - b);\n  if (!sorted.length)\n    return tokens;\n  return tokens.map((line) => {\n    return line.flatMap((token) => {\n      const breakpointsInToken = sorted.filter((i) => token.offset < i && i < token.offset + token.content.length).map((i) => i - token.offset).sort((a, b) => a - b);\n      if (!breakpointsInToken.length)\n        return token;\n      return splitToken(token, breakpointsInToken);\n    });\n  });\n}\nfunction flatTokenVariants(merged, variantsOrder, cssVariablePrefix, defaultColor, colorsRendering = \"css-vars\") {\n  const token = {\n    content: merged.content,\n    explanation: merged.explanation,\n    offset: merged.offset\n  };\n  const styles = variantsOrder.map((t) => getTokenStyleObject(merged.variants[t]));\n  const styleKeys = new Set(styles.flatMap((t) => Object.keys(t)));\n  const mergedStyles = {};\n  const varKey = (idx, key) => {\n    const keyName = key === \"color\" ? \"\" : key === \"background-color\" ? \"-bg\" : `-${key}`;\n    return cssVariablePrefix + variantsOrder[idx] + (key === \"color\" ? \"\" : keyName);\n  };\n  styles.forEach((cur, idx) => {\n    for (const key of styleKeys) {\n      const value = cur[key] || \"inherit\";\n      if (idx === 0 && defaultColor && COLOR_KEYS.includes(key)) {\n        if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && styles.length > 1) {\n          const lightIndex = variantsOrder.findIndex((t) => t === \"light\");\n          const darkIndex = variantsOrder.findIndex((t) => t === \"dark\");\n          if (lightIndex === -1 || darkIndex === -1)\n            throw new ShikiError$1('When using `defaultColor: \"light-dark()\"`, you must provide both `light` and `dark` themes');\n          const lightValue = styles[lightIndex][key] || \"inherit\";\n          const darkValue = styles[darkIndex][key] || \"inherit\";\n          mergedStyles[key] = `light-dark(${lightValue}, ${darkValue})`;\n          if (colorsRendering === \"css-vars\")\n            mergedStyles[varKey(idx, key)] = value;\n        } else {\n          mergedStyles[key] = value;\n        }\n      } else {\n        if (colorsRendering === \"css-vars\")\n          mergedStyles[varKey(idx, key)] = value;\n      }\n    }\n  });\n  token.htmlStyle = mergedStyles;\n  return token;\n}\nfunction getTokenStyleObject(token) {\n  const styles = {};\n  if (token.color)\n    styles.color = token.color;\n  if (token.bgColor)\n    styles[\"background-color\"] = token.bgColor;\n  if (token.fontStyle) {\n    if (token.fontStyle & FontStyle.Italic)\n      styles[\"font-style\"] = \"italic\";\n    if (token.fontStyle & FontStyle.Bold)\n      styles[\"font-weight\"] = \"bold\";\n    const decorations = [];\n    if (token.fontStyle & FontStyle.Underline)\n      decorations.push(\"underline\");\n    if (token.fontStyle & FontStyle.Strikethrough)\n      decorations.push(\"line-through\");\n    if (decorations.length)\n      styles[\"text-decoration\"] = decorations.join(\" \");\n  }\n  return styles;\n}\nfunction stringifyTokenStyle(token) {\n  if (typeof token === \"string\")\n    return token;\n  return Object.entries(token).map(([key, value]) => `${key}:${value}`).join(\";\");\n}\n\nconst _grammarStateMap = /* @__PURE__ */ new WeakMap();\nfunction setLastGrammarStateToMap(keys, state) {\n  _grammarStateMap.set(keys, state);\n}\nfunction getLastGrammarStateFromMap(keys) {\n  return _grammarStateMap.get(keys);\n}\nclass GrammarState {\n  /**\n   * Theme to Stack mapping\n   */\n  _stacks = {};\n  lang;\n  get themes() {\n    return Object.keys(this._stacks);\n  }\n  get theme() {\n    return this.themes[0];\n  }\n  get _stack() {\n    return this._stacks[this.theme];\n  }\n  /**\n   * Static method to create a initial grammar state.\n   */\n  static initial(lang, themes) {\n    return new GrammarState(\n      Object.fromEntries(toArray(themes).map((theme) => [theme, INITIAL])),\n      lang\n    );\n  }\n  constructor(...args) {\n    if (args.length === 2) {\n      const [stacksMap, lang] = args;\n      this.lang = lang;\n      this._stacks = stacksMap;\n    } else {\n      const [stack, lang, theme] = args;\n      this.lang = lang;\n      this._stacks = { [theme]: stack };\n    }\n  }\n  /**\n   * Get the internal stack object.\n   * @internal\n   */\n  getInternalStack(theme = this.theme) {\n    return this._stacks[theme];\n  }\n  getScopes(theme = this.theme) {\n    return getScopes(this._stacks[theme]);\n  }\n  toJSON() {\n    return {\n      lang: this.lang,\n      theme: this.theme,\n      themes: this.themes,\n      scopes: this.getScopes()\n    };\n  }\n}\nfunction getScopes(stack) {\n  const scopes = [];\n  const visited = /* @__PURE__ */ new Set();\n  function pushScope(stack2) {\n    if (visited.has(stack2))\n      return;\n    visited.add(stack2);\n    const name = stack2?.nameScopesList?.scopeName;\n    if (name)\n      scopes.push(name);\n    if (stack2.parent)\n      pushScope(stack2.parent);\n  }\n  pushScope(stack);\n  return scopes;\n}\nfunction getGrammarStack(state, theme) {\n  if (!(state instanceof GrammarState))\n    throw new ShikiError$1(\"Invalid grammar state\");\n  return state.getInternalStack(theme);\n}\n\nfunction transformerDecorations() {\n  const map = /* @__PURE__ */ new WeakMap();\n  function getContext(shiki) {\n    if (!map.has(shiki.meta)) {\n      let normalizePosition = function(p) {\n        if (typeof p === \"number\") {\n          if (p < 0 || p > shiki.source.length)\n            throw new ShikiError$1(`Invalid decoration offset: ${p}. Code length: ${shiki.source.length}`);\n          return {\n            ...converter.indexToPos(p),\n            offset: p\n          };\n        } else {\n          const line = converter.lines[p.line];\n          if (line === void 0)\n            throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Lines length: ${converter.lines.length}`);\n          let character = p.character;\n          if (character < 0)\n            character = line.length + character;\n          if (character < 0 || character > line.length)\n            throw new ShikiError$1(`Invalid decoration position ${JSON.stringify(p)}. Line ${p.line} length: ${line.length}`);\n          return {\n            ...p,\n            character,\n            offset: converter.posToIndex(p.line, character)\n          };\n        }\n      };\n      const converter = createPositionConverter(shiki.source);\n      const decorations = (shiki.options.decorations || []).map((d) => ({\n        ...d,\n        start: normalizePosition(d.start),\n        end: normalizePosition(d.end)\n      }));\n      verifyIntersections(decorations);\n      map.set(shiki.meta, {\n        decorations,\n        converter,\n        source: shiki.source\n      });\n    }\n    return map.get(shiki.meta);\n  }\n  return {\n    name: \"shiki:decorations\",\n    tokens(tokens) {\n      if (!this.options.decorations?.length)\n        return;\n      const ctx = getContext(this);\n      const breakpoints = ctx.decorations.flatMap((d) => [d.start.offset, d.end.offset]);\n      const splitted = splitTokens(tokens, breakpoints);\n      return splitted;\n    },\n    code(codeEl) {\n      if (!this.options.decorations?.length)\n        return;\n      const ctx = getContext(this);\n      const lines = Array.from(codeEl.children).filter((i) => i.type === \"element\" && i.tagName === \"span\");\n      if (lines.length !== ctx.converter.lines.length)\n        throw new ShikiError$1(`Number of lines in code element (${lines.length}) does not match the number of lines in the source (${ctx.converter.lines.length}). Failed to apply decorations.`);\n      function applyLineSection(line, start, end, decoration) {\n        const lineEl = lines[line];\n        let text = \"\";\n        let startIndex = -1;\n        let endIndex = -1;\n        if (start === 0)\n          startIndex = 0;\n        if (end === 0)\n          endIndex = 0;\n        if (end === Number.POSITIVE_INFINITY)\n          endIndex = lineEl.children.length;\n        if (startIndex === -1 || endIndex === -1) {\n          for (let i = 0; i < lineEl.children.length; i++) {\n            text += stringify(lineEl.children[i]);\n            if (startIndex === -1 && text.length === start)\n              startIndex = i + 1;\n            if (endIndex === -1 && text.length === end)\n              endIndex = i + 1;\n          }\n        }\n        if (startIndex === -1)\n          throw new ShikiError$1(`Failed to find start index for decoration ${JSON.stringify(decoration.start)}`);\n        if (endIndex === -1)\n          throw new ShikiError$1(`Failed to find end index for decoration ${JSON.stringify(decoration.end)}`);\n        const children = lineEl.children.slice(startIndex, endIndex);\n        if (!decoration.alwaysWrap && children.length === lineEl.children.length) {\n          applyDecoration(lineEl, decoration, \"line\");\n        } else if (!decoration.alwaysWrap && children.length === 1 && children[0].type === \"element\") {\n          applyDecoration(children[0], decoration, \"token\");\n        } else {\n          const wrapper = {\n            type: \"element\",\n            tagName: \"span\",\n            properties: {},\n            children\n          };\n          applyDecoration(wrapper, decoration, \"wrapper\");\n          lineEl.children.splice(startIndex, children.length, wrapper);\n        }\n      }\n      function applyLine(line, decoration) {\n        lines[line] = applyDecoration(lines[line], decoration, \"line\");\n      }\n      function applyDecoration(el, decoration, type) {\n        const properties = decoration.properties || {};\n        const transform = decoration.transform || ((i) => i);\n        el.tagName = decoration.tagName || \"span\";\n        el.properties = {\n          ...el.properties,\n          ...properties,\n          class: el.properties.class\n        };\n        if (decoration.properties?.class)\n          addClassToHast(el, decoration.properties.class);\n        el = transform(el, type) || el;\n        return el;\n      }\n      const lineApplies = [];\n      const sorted = ctx.decorations.sort((a, b) => b.start.offset - a.start.offset || a.end.offset - b.end.offset);\n      for (const decoration of sorted) {\n        const { start, end } = decoration;\n        if (start.line === end.line) {\n          applyLineSection(start.line, start.character, end.character, decoration);\n        } else if (start.line < end.line) {\n          applyLineSection(start.line, start.character, Number.POSITIVE_INFINITY, decoration);\n          for (let i = start.line + 1; i < end.line; i++)\n            lineApplies.unshift(() => applyLine(i, decoration));\n          applyLineSection(end.line, 0, end.character, decoration);\n        }\n      }\n      lineApplies.forEach((i) => i());\n    }\n  };\n}\nfunction verifyIntersections(items) {\n  for (let i = 0; i < items.length; i++) {\n    const foo = items[i];\n    if (foo.start.offset > foo.end.offset)\n      throw new ShikiError$1(`Invalid decoration range: ${JSON.stringify(foo.start)} - ${JSON.stringify(foo.end)}`);\n    for (let j = i + 1; j < items.length; j++) {\n      const bar = items[j];\n      const isFooHasBarStart = foo.start.offset <= bar.start.offset && bar.start.offset < foo.end.offset;\n      const isFooHasBarEnd = foo.start.offset < bar.end.offset && bar.end.offset <= foo.end.offset;\n      const isBarHasFooStart = bar.start.offset <= foo.start.offset && foo.start.offset < bar.end.offset;\n      const isBarHasFooEnd = bar.start.offset < foo.end.offset && foo.end.offset <= bar.end.offset;\n      if (isFooHasBarStart || isFooHasBarEnd || isBarHasFooStart || isBarHasFooEnd) {\n        if (isFooHasBarStart && isFooHasBarEnd)\n          continue;\n        if (isBarHasFooStart && isBarHasFooEnd)\n          continue;\n        if (isBarHasFooStart && foo.start.offset === foo.end.offset)\n          continue;\n        if (isFooHasBarEnd && bar.start.offset === bar.end.offset)\n          continue;\n        throw new ShikiError$1(`Decorations ${JSON.stringify(foo.start)} and ${JSON.stringify(bar.start)} intersect.`);\n      }\n    }\n  }\n}\nfunction stringify(el) {\n  if (el.type === \"text\")\n    return el.value;\n  if (el.type === \"element\")\n    return el.children.map(stringify).join(\"\");\n  return \"\";\n}\n\nconst builtInTransformers = [\n  /* @__PURE__ */ transformerDecorations()\n];\nfunction getTransformers(options) {\n  return [\n    ...options.transformers || [],\n    ...builtInTransformers\n  ];\n}\n\n// src/colors.ts\nvar namedColors = [\n  \"black\",\n  \"red\",\n  \"green\",\n  \"yellow\",\n  \"blue\",\n  \"magenta\",\n  \"cyan\",\n  \"white\",\n  \"brightBlack\",\n  \"brightRed\",\n  \"brightGreen\",\n  \"brightYellow\",\n  \"brightBlue\",\n  \"brightMagenta\",\n  \"brightCyan\",\n  \"brightWhite\"\n];\n\n// src/decorations.ts\nvar decorations = {\n  1: \"bold\",\n  2: \"dim\",\n  3: \"italic\",\n  4: \"underline\",\n  7: \"reverse\",\n  8: \"hidden\",\n  9: \"strikethrough\"\n};\n\n// src/parser.ts\nfunction findSequence(value, position) {\n  const nextEscape = value.indexOf(\"\\x1B\", position);\n  if (nextEscape !== -1) {\n    if (value[nextEscape + 1] === \"[\") {\n      const nextClose = value.indexOf(\"m\", nextEscape);\n      if (nextClose !== -1) {\n        return {\n          sequence: value.substring(nextEscape + 2, nextClose).split(\";\"),\n          startPosition: nextEscape,\n          position: nextClose + 1\n        };\n      }\n    }\n  }\n  return {\n    position: value.length\n  };\n}\nfunction parseColor(sequence) {\n  const colorMode = sequence.shift();\n  if (colorMode === \"2\") {\n    const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));\n    if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))\n      return;\n    return {\n      type: \"rgb\",\n      rgb\n    };\n  } else if (colorMode === \"5\") {\n    const index = sequence.shift();\n    if (index) {\n      return { type: \"table\", index: Number(index) };\n    }\n  }\n}\nfunction parseSequence(sequence) {\n  const commands = [];\n  while (sequence.length > 0) {\n    const code = sequence.shift();\n    if (!code)\n      continue;\n    const codeInt = Number.parseInt(code);\n    if (Number.isNaN(codeInt))\n      continue;\n    if (codeInt === 0) {\n      commands.push({ type: \"resetAll\" });\n    } else if (codeInt <= 9) {\n      const decoration = decorations[codeInt];\n      if (decoration) {\n        commands.push({\n          type: \"setDecoration\",\n          value: decorations[codeInt]\n        });\n      }\n    } else if (codeInt <= 29) {\n      const decoration = decorations[codeInt - 20];\n      if (decoration) {\n        commands.push({\n          type: \"resetDecoration\",\n          value: decoration\n        });\n        if (decoration === \"dim\") {\n          commands.push({\n            type: \"resetDecoration\",\n            value: \"bold\"\n          });\n        }\n      }\n    } else if (codeInt <= 37) {\n      commands.push({\n        type: \"setForegroundColor\",\n        value: { type: \"named\", name: namedColors[codeInt - 30] }\n      });\n    } else if (codeInt === 38) {\n      const color = parseColor(sequence);\n      if (color) {\n        commands.push({\n          type: \"setForegroundColor\",\n          value: color\n        });\n      }\n    } else if (codeInt === 39) {\n      commands.push({\n        type: \"resetForegroundColor\"\n      });\n    } else if (codeInt <= 47) {\n      commands.push({\n        type: \"setBackgroundColor\",\n        value: { type: \"named\", name: namedColors[codeInt - 40] }\n      });\n    } else if (codeInt === 48) {\n      const color = parseColor(sequence);\n      if (color) {\n        commands.push({\n          type: \"setBackgroundColor\",\n          value: color\n        });\n      }\n    } else if (codeInt === 49) {\n      commands.push({\n        type: \"resetBackgroundColor\"\n      });\n    } else if (codeInt === 53) {\n      commands.push({\n        type: \"setDecoration\",\n        value: \"overline\"\n      });\n    } else if (codeInt === 55) {\n      commands.push({\n        type: \"resetDecoration\",\n        value: \"overline\"\n      });\n    } else if (codeInt >= 90 && codeInt <= 97) {\n      commands.push({\n        type: \"setForegroundColor\",\n        value: { type: \"named\", name: namedColors[codeInt - 90 + 8] }\n      });\n    } else if (codeInt >= 100 && codeInt <= 107) {\n      commands.push({\n        type: \"setBackgroundColor\",\n        value: { type: \"named\", name: namedColors[codeInt - 100 + 8] }\n      });\n    }\n  }\n  return commands;\n}\nfunction createAnsiSequenceParser() {\n  let foreground = null;\n  let background = null;\n  let decorations2 = /* @__PURE__ */ new Set();\n  return {\n    parse(value) {\n      const tokens = [];\n      let position = 0;\n      do {\n        const findResult = findSequence(value, position);\n        const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);\n        if (text.length > 0) {\n          tokens.push({\n            value: text,\n            foreground,\n            background,\n            decorations: new Set(decorations2)\n          });\n        }\n        if (findResult.sequence) {\n          const commands = parseSequence(findResult.sequence);\n          for (const styleToken of commands) {\n            if (styleToken.type === \"resetAll\") {\n              foreground = null;\n              background = null;\n              decorations2.clear();\n            } else if (styleToken.type === \"resetForegroundColor\") {\n              foreground = null;\n            } else if (styleToken.type === \"resetBackgroundColor\") {\n              background = null;\n            } else if (styleToken.type === \"resetDecoration\") {\n              decorations2.delete(styleToken.value);\n            }\n          }\n          for (const styleToken of commands) {\n            if (styleToken.type === \"setForegroundColor\") {\n              foreground = styleToken.value;\n            } else if (styleToken.type === \"setBackgroundColor\") {\n              background = styleToken.value;\n            } else if (styleToken.type === \"setDecoration\") {\n              decorations2.add(styleToken.value);\n            }\n          }\n        }\n        position = findResult.position;\n      } while (position < value.length);\n      return tokens;\n    }\n  };\n}\n\n// src/palette.ts\nvar defaultNamedColorsMap = {\n  black: \"#000000\",\n  red: \"#bb0000\",\n  green: \"#00bb00\",\n  yellow: \"#bbbb00\",\n  blue: \"#0000bb\",\n  magenta: \"#ff00ff\",\n  cyan: \"#00bbbb\",\n  white: \"#eeeeee\",\n  brightBlack: \"#555555\",\n  brightRed: \"#ff5555\",\n  brightGreen: \"#00ff00\",\n  brightYellow: \"#ffff55\",\n  brightBlue: \"#5555ff\",\n  brightMagenta: \"#ff55ff\",\n  brightCyan: \"#55ffff\",\n  brightWhite: \"#ffffff\"\n};\nfunction createColorPalette(namedColorsMap = defaultNamedColorsMap) {\n  function namedColor(name) {\n    return namedColorsMap[name];\n  }\n  function rgbColor(rgb) {\n    return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, \"0\")).join(\"\")}`;\n  }\n  let colorTable;\n  function getColorTable() {\n    if (colorTable) {\n      return colorTable;\n    }\n    colorTable = [];\n    for (let i = 0; i < namedColors.length; i++) {\n      colorTable.push(namedColor(namedColors[i]));\n    }\n    let levels = [0, 95, 135, 175, 215, 255];\n    for (let r = 0; r < 6; r++) {\n      for (let g = 0; g < 6; g++) {\n        for (let b = 0; b < 6; b++) {\n          colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));\n        }\n      }\n    }\n    let level = 8;\n    for (let i = 0; i < 24; i++, level += 10) {\n      colorTable.push(rgbColor([level, level, level]));\n    }\n    return colorTable;\n  }\n  function tableColor(index) {\n    return getColorTable()[index];\n  }\n  function value(color) {\n    switch (color.type) {\n      case \"named\":\n        return namedColor(color.name);\n      case \"rgb\":\n        return rgbColor(color.rgb);\n      case \"table\":\n        return tableColor(color.index);\n    }\n  }\n  return {\n    value\n  };\n}\n\nfunction tokenizeAnsiWithTheme(theme, fileContents, options) {\n  const colorReplacements = resolveColorReplacements(theme, options);\n  const lines = splitLines(fileContents);\n  const colorPalette = createColorPalette(\n    Object.fromEntries(\n      namedColors.map((name) => [\n        name,\n        theme.colors?.[`terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`]\n      ])\n    )\n  );\n  const parser = createAnsiSequenceParser();\n  return lines.map(\n    (line) => parser.parse(line[0]).map((token) => {\n      let color;\n      let bgColor;\n      if (token.decorations.has(\"reverse\")) {\n        color = token.background ? colorPalette.value(token.background) : theme.bg;\n        bgColor = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n      } else {\n        color = token.foreground ? colorPalette.value(token.foreground) : theme.fg;\n        bgColor = token.background ? colorPalette.value(token.background) : void 0;\n      }\n      color = applyColorReplacements(color, colorReplacements);\n      bgColor = applyColorReplacements(bgColor, colorReplacements);\n      if (token.decorations.has(\"dim\"))\n        color = dimColor(color);\n      let fontStyle = FontStyle.None;\n      if (token.decorations.has(\"bold\"))\n        fontStyle |= FontStyle.Bold;\n      if (token.decorations.has(\"italic\"))\n        fontStyle |= FontStyle.Italic;\n      if (token.decorations.has(\"underline\"))\n        fontStyle |= FontStyle.Underline;\n      if (token.decorations.has(\"strikethrough\"))\n        fontStyle |= FontStyle.Strikethrough;\n      return {\n        content: token.value,\n        offset: line[1],\n        // TODO: more accurate offset? might need to fork ansi-sequence-parser\n        color,\n        bgColor,\n        fontStyle\n      };\n    })\n  );\n}\nfunction dimColor(color) {\n  const hexMatch = color.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);\n  if (hexMatch) {\n    if (hexMatch[3]) {\n      const alpha = Math.round(Number.parseInt(hexMatch[3], 16) / 2).toString(16).padStart(2, \"0\");\n      return `#${hexMatch[1]}${hexMatch[2]}${alpha}`;\n    } else if (hexMatch[2]) {\n      return `#${hexMatch[1]}${hexMatch[2]}80`;\n    } else {\n      return `#${Array.from(hexMatch[1]).map((x) => `${x}${x}`).join(\"\")}80`;\n    }\n  }\n  const cssVarMatch = color.match(/var\\((--[\\w-]+-ansi-[\\w-]+)\\)/);\n  if (cssVarMatch)\n    return `var(${cssVarMatch[1]}-dim)`;\n  return color;\n}\n\nfunction codeToTokensBase(internal, code, options = {}) {\n  const {\n    lang = \"text\",\n    theme: themeName = internal.getLoadedThemes()[0]\n  } = options;\n  if (isPlainLang(lang) || isNoneTheme(themeName))\n    return splitLines(code).map((line) => [{ content: line[0], offset: line[1] }]);\n  const { theme, colorMap } = internal.setTheme(themeName);\n  if (lang === \"ansi\")\n    return tokenizeAnsiWithTheme(theme, code, options);\n  const _grammar = internal.getLanguage(lang);\n  if (options.grammarState) {\n    if (options.grammarState.lang !== _grammar.name) {\n      throw new ShikiError$1(`Grammar state language \"${options.grammarState.lang}\" does not match highlight language \"${_grammar.name}\"`);\n    }\n    if (!options.grammarState.themes.includes(theme.name)) {\n      throw new ShikiError$1(`Grammar state themes \"${options.grammarState.themes}\" do not contain highlight theme \"${theme.name}\"`);\n    }\n  }\n  return tokenizeWithTheme(code, _grammar, theme, colorMap, options);\n}\nfunction getLastGrammarState(...args) {\n  if (args.length === 2) {\n    return getLastGrammarStateFromMap(args[1]);\n  }\n  const [internal, code, options = {}] = args;\n  const {\n    lang = \"text\",\n    theme: themeName = internal.getLoadedThemes()[0]\n  } = options;\n  if (isPlainLang(lang) || isNoneTheme(themeName))\n    throw new ShikiError$1(\"Plain language does not have grammar state\");\n  if (lang === \"ansi\")\n    throw new ShikiError$1(\"ANSI language does not have grammar state\");\n  const { theme, colorMap } = internal.setTheme(themeName);\n  const _grammar = internal.getLanguage(lang);\n  return new GrammarState(\n    _tokenizeWithTheme(code, _grammar, theme, colorMap, options).stateStack,\n    _grammar.name,\n    theme.name\n  );\n}\nfunction tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n  const result = _tokenizeWithTheme(code, grammar, theme, colorMap, options);\n  const grammarState = new GrammarState(\n    _tokenizeWithTheme(code, grammar, theme, colorMap, options).stateStack,\n    grammar.name,\n    theme.name\n  );\n  setLastGrammarStateToMap(result.tokens, grammarState);\n  return result.tokens;\n}\nfunction _tokenizeWithTheme(code, grammar, theme, colorMap, options) {\n  const colorReplacements = resolveColorReplacements(theme, options);\n  const {\n    tokenizeMaxLineLength = 0,\n    tokenizeTimeLimit = 500\n  } = options;\n  const lines = splitLines(code);\n  let stateStack = options.grammarState ? getGrammarStack(options.grammarState, theme.name) ?? INITIAL : options.grammarContextCode != null ? _tokenizeWithTheme(\n    options.grammarContextCode,\n    grammar,\n    theme,\n    colorMap,\n    {\n      ...options,\n      grammarState: void 0,\n      grammarContextCode: void 0\n    }\n  ).stateStack : INITIAL;\n  let actual = [];\n  const final = [];\n  for (let i = 0, len = lines.length; i < len; i++) {\n    const [line, lineOffset] = lines[i];\n    if (line === \"\") {\n      actual = [];\n      final.push([]);\n      continue;\n    }\n    if (tokenizeMaxLineLength > 0 && line.length >= tokenizeMaxLineLength) {\n      actual = [];\n      final.push([{\n        content: line,\n        offset: lineOffset,\n        color: \"\",\n        fontStyle: 0\n      }]);\n      continue;\n    }\n    let resultWithScopes;\n    let tokensWithScopes;\n    let tokensWithScopesIndex;\n    if (options.includeExplanation) {\n      resultWithScopes = grammar.tokenizeLine(line, stateStack, tokenizeTimeLimit);\n      tokensWithScopes = resultWithScopes.tokens;\n      tokensWithScopesIndex = 0;\n    }\n    const result = grammar.tokenizeLine2(line, stateStack, tokenizeTimeLimit);\n    const tokensLength = result.tokens.length / 2;\n    for (let j = 0; j < tokensLength; j++) {\n      const startIndex = result.tokens[2 * j];\n      const nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;\n      if (startIndex === nextStartIndex)\n        continue;\n      const metadata = result.tokens[2 * j + 1];\n      const color = applyColorReplacements(\n        colorMap[EncodedTokenMetadata.getForeground(metadata)],\n        colorReplacements\n      );\n      const fontStyle = EncodedTokenMetadata.getFontStyle(metadata);\n      const token = {\n        content: line.substring(startIndex, nextStartIndex),\n        offset: lineOffset + startIndex,\n        color,\n        fontStyle\n      };\n      if (options.includeExplanation) {\n        const themeSettingsSelectors = [];\n        if (options.includeExplanation !== \"scopeName\") {\n          for (const setting of theme.settings) {\n            let selectors;\n            switch (typeof setting.scope) {\n              case \"string\":\n                selectors = setting.scope.split(/,/).map((scope) => scope.trim());\n                break;\n              case \"object\":\n                selectors = setting.scope;\n                break;\n              default:\n                continue;\n            }\n            themeSettingsSelectors.push({\n              settings: setting,\n              selectors: selectors.map((selector) => selector.split(/ /))\n            });\n          }\n        }\n        token.explanation = [];\n        let offset = 0;\n        while (startIndex + offset < nextStartIndex) {\n          const tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];\n          const tokenWithScopesText = line.substring(\n            tokenWithScopes.startIndex,\n            tokenWithScopes.endIndex\n          );\n          offset += tokenWithScopesText.length;\n          token.explanation.push({\n            content: tokenWithScopesText,\n            scopes: options.includeExplanation === \"scopeName\" ? explainThemeScopesNameOnly(\n              tokenWithScopes.scopes\n            ) : explainThemeScopesFull(\n              themeSettingsSelectors,\n              tokenWithScopes.scopes\n            )\n          });\n          tokensWithScopesIndex += 1;\n        }\n      }\n      actual.push(token);\n    }\n    final.push(actual);\n    actual = [];\n    stateStack = result.ruleStack;\n  }\n  return {\n    tokens: final,\n    stateStack\n  };\n}\nfunction explainThemeScopesNameOnly(scopes) {\n  return scopes.map((scope) => ({ scopeName: scope }));\n}\nfunction explainThemeScopesFull(themeSelectors, scopes) {\n  const result = [];\n  for (let i = 0, len = scopes.length; i < len; i++) {\n    const scope = scopes[i];\n    result[i] = {\n      scopeName: scope,\n      themeMatches: explainThemeScope(themeSelectors, scope, scopes.slice(0, i))\n    };\n  }\n  return result;\n}\nfunction matchesOne(selector, scope) {\n  return selector === scope || scope.substring(0, selector.length) === selector && scope[selector.length] === \".\";\n}\nfunction matches(selectors, scope, parentScopes) {\n  if (!matchesOne(selectors[selectors.length - 1], scope))\n    return false;\n  let selectorParentIndex = selectors.length - 2;\n  let parentIndex = parentScopes.length - 1;\n  while (selectorParentIndex >= 0 && parentIndex >= 0) {\n    if (matchesOne(selectors[selectorParentIndex], parentScopes[parentIndex]))\n      selectorParentIndex -= 1;\n    parentIndex -= 1;\n  }\n  if (selectorParentIndex === -1)\n    return true;\n  return false;\n}\nfunction explainThemeScope(themeSettingsSelectors, scope, parentScopes) {\n  const result = [];\n  for (const { selectors, settings } of themeSettingsSelectors) {\n    for (const selectorPieces of selectors) {\n      if (matches(selectorPieces, scope, parentScopes)) {\n        result.push(settings);\n        break;\n      }\n    }\n  }\n  return result;\n}\n\nfunction codeToTokensWithThemes(internal, code, options) {\n  const themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({ color: i[0], theme: i[1] }));\n  const themedTokens = themes.map((t) => {\n    const tokens2 = codeToTokensBase(internal, code, {\n      ...options,\n      theme: t.theme\n    });\n    const state = getLastGrammarStateFromMap(tokens2);\n    const theme = typeof t.theme === \"string\" ? t.theme : t.theme.name;\n    return {\n      tokens: tokens2,\n      state,\n      theme\n    };\n  });\n  const tokens = syncThemesTokenization(\n    ...themedTokens.map((i) => i.tokens)\n  );\n  const mergedTokens = tokens[0].map(\n    (line, lineIdx) => line.map((_token, tokenIdx) => {\n      const mergedToken = {\n        content: _token.content,\n        variants: {},\n        offset: _token.offset\n      };\n      if (\"includeExplanation\" in options && options.includeExplanation) {\n        mergedToken.explanation = _token.explanation;\n      }\n      tokens.forEach((t, themeIdx) => {\n        const {\n          content: _,\n          explanation: __,\n          offset: ___,\n          ...styles\n        } = t[lineIdx][tokenIdx];\n        mergedToken.variants[themes[themeIdx].color] = styles;\n      });\n      return mergedToken;\n    })\n  );\n  const mergedGrammarState = themedTokens[0].state ? new GrammarState(\n    Object.fromEntries(themedTokens.map((s) => [s.theme, s.state?.getInternalStack(s.theme)])),\n    themedTokens[0].state.lang\n  ) : void 0;\n  if (mergedGrammarState)\n    setLastGrammarStateToMap(mergedTokens, mergedGrammarState);\n  return mergedTokens;\n}\nfunction syncThemesTokenization(...themes) {\n  const outThemes = themes.map(() => []);\n  const count = themes.length;\n  for (let i = 0; i < themes[0].length; i++) {\n    const lines = themes.map((t) => t[i]);\n    const outLines = outThemes.map(() => []);\n    outThemes.forEach((t, i2) => t.push(outLines[i2]));\n    const indexes = lines.map(() => 0);\n    const current = lines.map((l) => l[0]);\n    while (current.every((t) => t)) {\n      const minLength = Math.min(...current.map((t) => t.content.length));\n      for (let n = 0; n < count; n++) {\n        const token = current[n];\n        if (token.content.length === minLength) {\n          outLines[n].push(token);\n          indexes[n] += 1;\n          current[n] = lines[n][indexes[n]];\n        } else {\n          outLines[n].push({\n            ...token,\n            content: token.content.slice(0, minLength)\n          });\n          current[n] = {\n            ...token,\n            content: token.content.slice(minLength),\n            offset: token.offset + minLength\n          };\n        }\n      }\n    }\n  }\n  return outThemes;\n}\n\nfunction codeToTokens(internal, code, options) {\n  let bg;\n  let fg;\n  let tokens;\n  let themeName;\n  let rootStyle;\n  let grammarState;\n  if (\"themes\" in options) {\n    const {\n      defaultColor = \"light\",\n      cssVariablePrefix = \"--shiki-\",\n      colorsRendering = \"css-vars\"\n    } = options;\n    const themes = Object.entries(options.themes).filter((i) => i[1]).map((i) => ({ color: i[0], theme: i[1] })).sort((a, b) => a.color === defaultColor ? -1 : b.color === defaultColor ? 1 : 0);\n    if (themes.length === 0)\n      throw new ShikiError$1(\"`themes` option must not be empty\");\n    const themeTokens = codeToTokensWithThemes(\n      internal,\n      code,\n      options\n    );\n    grammarState = getLastGrammarStateFromMap(themeTokens);\n    if (defaultColor && DEFAULT_COLOR_LIGHT_DARK !== defaultColor && !themes.find((t) => t.color === defaultColor))\n      throw new ShikiError$1(`\\`themes\\` option must contain the defaultColor key \\`${defaultColor}\\``);\n    const themeRegs = themes.map((t) => internal.getTheme(t.theme));\n    const themesOrder = themes.map((t) => t.color);\n    tokens = themeTokens.map((line) => line.map((token) => flatTokenVariants(token, themesOrder, cssVariablePrefix, defaultColor, colorsRendering)));\n    if (grammarState)\n      setLastGrammarStateToMap(tokens, grammarState);\n    const themeColorReplacements = themes.map((t) => resolveColorReplacements(t.theme, options));\n    fg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"fg\", colorsRendering);\n    bg = mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, \"bg\", colorsRendering);\n    themeName = `shiki-themes ${themeRegs.map((t) => t.name).join(\" \")}`;\n    rootStyle = defaultColor ? void 0 : [fg, bg].join(\";\");\n  } else if (\"theme\" in options) {\n    const colorReplacements = resolveColorReplacements(options.theme, options);\n    tokens = codeToTokensBase(\n      internal,\n      code,\n      options\n    );\n    const _theme = internal.getTheme(options.theme);\n    bg = applyColorReplacements(_theme.bg, colorReplacements);\n    fg = applyColorReplacements(_theme.fg, colorReplacements);\n    themeName = _theme.name;\n    grammarState = getLastGrammarStateFromMap(tokens);\n  } else {\n    throw new ShikiError$1(\"Invalid options, either `theme` or `themes` must be provided\");\n  }\n  return {\n    tokens,\n    fg,\n    bg,\n    themeName,\n    rootStyle,\n    grammarState\n  };\n}\nfunction mapThemeColors(themes, themeRegs, themeColorReplacements, cssVariablePrefix, defaultColor, property, colorsRendering) {\n  return themes.map((t, idx) => {\n    const value = applyColorReplacements(themeRegs[idx][property], themeColorReplacements[idx]) || \"inherit\";\n    const cssVar = `${cssVariablePrefix + t.color}${property === \"bg\" ? \"-bg\" : \"\"}:${value}`;\n    if (idx === 0 && defaultColor) {\n      if (defaultColor === DEFAULT_COLOR_LIGHT_DARK && themes.length > 1) {\n        const lightIndex = themes.findIndex((t2) => t2.color === \"light\");\n        const darkIndex = themes.findIndex((t2) => t2.color === \"dark\");\n        if (lightIndex === -1 || darkIndex === -1)\n          throw new ShikiError$1('When using `defaultColor: \"light-dark()\"`, you must provide both `light` and `dark` themes');\n        const lightValue = applyColorReplacements(themeRegs[lightIndex][property], themeColorReplacements[lightIndex]) || \"inherit\";\n        const darkValue = applyColorReplacements(themeRegs[darkIndex][property], themeColorReplacements[darkIndex]) || \"inherit\";\n        return `light-dark(${lightValue}, ${darkValue});${cssVar}`;\n      }\n      return value;\n    }\n    if (colorsRendering === \"css-vars\") {\n      return cssVar;\n    }\n    return null;\n  }).filter((i) => !!i).join(\";\");\n}\n\nfunction codeToHast(internal, code, options, transformerContext = {\n  meta: {},\n  options,\n  codeToHast: (_code, _options) => codeToHast(internal, _code, _options),\n  codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options)\n}) {\n  let input = code;\n  for (const transformer of getTransformers(options))\n    input = transformer.preprocess?.call(transformerContext, input, options) || input;\n  let {\n    tokens,\n    fg,\n    bg,\n    themeName,\n    rootStyle,\n    grammarState\n  } = codeToTokens(internal, input, options);\n  const {\n    mergeWhitespaces = true,\n    mergeSameStyleTokens = false\n  } = options;\n  if (mergeWhitespaces === true)\n    tokens = mergeWhitespaceTokens(tokens);\n  else if (mergeWhitespaces === \"never\")\n    tokens = splitWhitespaceTokens(tokens);\n  if (mergeSameStyleTokens) {\n    tokens = mergeAdjacentStyledTokens(tokens);\n  }\n  const contextSource = {\n    ...transformerContext,\n    get source() {\n      return input;\n    }\n  };\n  for (const transformer of getTransformers(options))\n    tokens = transformer.tokens?.call(contextSource, tokens) || tokens;\n  return tokensToHast(\n    tokens,\n    {\n      ...options,\n      fg,\n      bg,\n      themeName,\n      rootStyle\n    },\n    contextSource,\n    grammarState\n  );\n}\nfunction tokensToHast(tokens, options, transformerContext, grammarState = getLastGrammarStateFromMap(tokens)) {\n  const transformers = getTransformers(options);\n  const lines = [];\n  const root = {\n    type: \"root\",\n    children: []\n  };\n  const {\n    structure = \"classic\",\n    tabindex = \"0\"\n  } = options;\n  let preNode = {\n    type: \"element\",\n    tagName: \"pre\",\n    properties: {\n      class: `shiki ${options.themeName || \"\"}`,\n      style: options.rootStyle || `background-color:${options.bg};color:${options.fg}`,\n      ...tabindex !== false && tabindex != null ? {\n        tabindex: tabindex.toString()\n      } : {},\n      ...Object.fromEntries(\n        Array.from(\n          Object.entries(options.meta || {})\n        ).filter(([key]) => !key.startsWith(\"_\"))\n      )\n    },\n    children: []\n  };\n  let codeNode = {\n    type: \"element\",\n    tagName: \"code\",\n    properties: {},\n    children: lines\n  };\n  const lineNodes = [];\n  const context = {\n    ...transformerContext,\n    structure,\n    addClassToHast,\n    get source() {\n      return transformerContext.source;\n    },\n    get tokens() {\n      return tokens;\n    },\n    get options() {\n      return options;\n    },\n    get root() {\n      return root;\n    },\n    get pre() {\n      return preNode;\n    },\n    get code() {\n      return codeNode;\n    },\n    get lines() {\n      return lineNodes;\n    }\n  };\n  tokens.forEach((line, idx) => {\n    if (idx) {\n      if (structure === \"inline\")\n        root.children.push({ type: \"element\", tagName: \"br\", properties: {}, children: [] });\n      else if (structure === \"classic\")\n        lines.push({ type: \"text\", value: \"\\n\" });\n    }\n    let lineNode = {\n      type: \"element\",\n      tagName: \"span\",\n      properties: { class: \"line\" },\n      children: []\n    };\n    let col = 0;\n    for (const token of line) {\n      let tokenNode = {\n        type: \"element\",\n        tagName: \"span\",\n        properties: {\n          ...token.htmlAttrs\n        },\n        children: [{ type: \"text\", value: token.content }]\n      };\n      const style = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n      if (style)\n        tokenNode.properties.style = style;\n      for (const transformer of transformers)\n        tokenNode = transformer?.span?.call(context, tokenNode, idx + 1, col, lineNode, token) || tokenNode;\n      if (structure === \"inline\")\n        root.children.push(tokenNode);\n      else if (structure === \"classic\")\n        lineNode.children.push(tokenNode);\n      col += token.content.length;\n    }\n    if (structure === \"classic\") {\n      for (const transformer of transformers)\n        lineNode = transformer?.line?.call(context, lineNode, idx + 1) || lineNode;\n      lineNodes.push(lineNode);\n      lines.push(lineNode);\n    }\n  });\n  if (structure === \"classic\") {\n    for (const transformer of transformers)\n      codeNode = transformer?.code?.call(context, codeNode) || codeNode;\n    preNode.children.push(codeNode);\n    for (const transformer of transformers)\n      preNode = transformer?.pre?.call(context, preNode) || preNode;\n    root.children.push(preNode);\n  }\n  let result = root;\n  for (const transformer of transformers)\n    result = transformer?.root?.call(context, result) || result;\n  if (grammarState)\n    setLastGrammarStateToMap(result, grammarState);\n  return result;\n}\nfunction mergeWhitespaceTokens(tokens) {\n  return tokens.map((line) => {\n    const newLine = [];\n    let carryOnContent = \"\";\n    let firstOffset = 0;\n    line.forEach((token, idx) => {\n      const isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n      const couldMerge = !isDecorated;\n      if (couldMerge && token.content.match(/^\\s+$/) && line[idx + 1]) {\n        if (!firstOffset)\n          firstOffset = token.offset;\n        carryOnContent += token.content;\n      } else {\n        if (carryOnContent) {\n          if (couldMerge) {\n            newLine.push({\n              ...token,\n              offset: firstOffset,\n              content: carryOnContent + token.content\n            });\n          } else {\n            newLine.push(\n              {\n                content: carryOnContent,\n                offset: firstOffset\n              },\n              token\n            );\n          }\n          firstOffset = 0;\n          carryOnContent = \"\";\n        } else {\n          newLine.push(token);\n        }\n      }\n    });\n    return newLine;\n  });\n}\nfunction splitWhitespaceTokens(tokens) {\n  return tokens.map((line) => {\n    return line.flatMap((token) => {\n      if (token.content.match(/^\\s+$/))\n        return token;\n      const match = token.content.match(/^(\\s*)(.*?)(\\s*)$/);\n      if (!match)\n        return token;\n      const [, leading, content, trailing] = match;\n      if (!leading && !trailing)\n        return token;\n      const expanded = [{\n        ...token,\n        offset: token.offset + leading.length,\n        content\n      }];\n      if (leading) {\n        expanded.unshift({\n          content: leading,\n          offset: token.offset\n        });\n      }\n      if (trailing) {\n        expanded.push({\n          content: trailing,\n          offset: token.offset + leading.length + content.length\n        });\n      }\n      return expanded;\n    });\n  });\n}\nfunction mergeAdjacentStyledTokens(tokens) {\n  return tokens.map((line) => {\n    const newLine = [];\n    for (const token of line) {\n      if (newLine.length === 0) {\n        newLine.push({ ...token });\n        continue;\n      }\n      const prevToken = newLine[newLine.length - 1];\n      const prevStyle = stringifyTokenStyle(prevToken.htmlStyle || getTokenStyleObject(prevToken));\n      const currentStyle = stringifyTokenStyle(token.htmlStyle || getTokenStyleObject(token));\n      const isPrevDecorated = prevToken.fontStyle && (prevToken.fontStyle & FontStyle.Underline || prevToken.fontStyle & FontStyle.Strikethrough);\n      const isDecorated = token.fontStyle && (token.fontStyle & FontStyle.Underline || token.fontStyle & FontStyle.Strikethrough);\n      if (!isPrevDecorated && !isDecorated && prevStyle === currentStyle) {\n        prevToken.content += token.content;\n      } else {\n        newLine.push({ ...token });\n      }\n    }\n    return newLine;\n  });\n}\n\nconst hastToHtml = toHtml;\nfunction codeToHtml(internal, code, options) {\n  const context = {\n    meta: {},\n    options,\n    codeToHast: (_code, _options) => codeToHast(internal, _code, _options),\n    codeToTokens: (_code, _options) => codeToTokens(internal, _code, _options)\n  };\n  let result = hastToHtml(codeToHast(internal, code, options, context));\n  for (const transformer of getTransformers(options))\n    result = transformer.postprocess?.call(context, result, options) || result;\n  return result;\n}\n\nconst VSCODE_FALLBACK_EDITOR_FG = { light: \"#333333\", dark: \"#bbbbbb\" };\nconst VSCODE_FALLBACK_EDITOR_BG = { light: \"#fffffe\", dark: \"#1e1e1e\" };\nconst RESOLVED_KEY = \"__shiki_resolved\";\nfunction normalizeTheme(rawTheme) {\n  if (rawTheme?.[RESOLVED_KEY])\n    return rawTheme;\n  const theme = {\n    ...rawTheme\n  };\n  if (theme.tokenColors && !theme.settings) {\n    theme.settings = theme.tokenColors;\n    delete theme.tokenColors;\n  }\n  theme.type ||= \"dark\";\n  theme.colorReplacements = { ...theme.colorReplacements };\n  theme.settings ||= [];\n  let { bg, fg } = theme;\n  if (!bg || !fg) {\n    const globalSetting = theme.settings ? theme.settings.find((s) => !s.name && !s.scope) : void 0;\n    if (globalSetting?.settings?.foreground)\n      fg = globalSetting.settings.foreground;\n    if (globalSetting?.settings?.background)\n      bg = globalSetting.settings.background;\n    if (!fg && theme?.colors?.[\"editor.foreground\"])\n      fg = theme.colors[\"editor.foreground\"];\n    if (!bg && theme?.colors?.[\"editor.background\"])\n      bg = theme.colors[\"editor.background\"];\n    if (!fg)\n      fg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;\n    if (!bg)\n      bg = theme.type === \"light\" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;\n    theme.fg = fg;\n    theme.bg = bg;\n  }\n  if (!(theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope)) {\n    theme.settings.unshift({\n      settings: {\n        foreground: theme.fg,\n        background: theme.bg\n      }\n    });\n  }\n  let replacementCount = 0;\n  const replacementMap = /* @__PURE__ */ new Map();\n  function getReplacementColor(value) {\n    if (replacementMap.has(value))\n      return replacementMap.get(value);\n    replacementCount += 1;\n    const hex = `#${replacementCount.toString(16).padStart(8, \"0\").toLowerCase()}`;\n    if (theme.colorReplacements?.[`#${hex}`])\n      return getReplacementColor(value);\n    replacementMap.set(value, hex);\n    return hex;\n  }\n  theme.settings = theme.settings.map((setting) => {\n    const replaceFg = setting.settings?.foreground && !setting.settings.foreground.startsWith(\"#\");\n    const replaceBg = setting.settings?.background && !setting.settings.background.startsWith(\"#\");\n    if (!replaceFg && !replaceBg)\n      return setting;\n    const clone = {\n      ...setting,\n      settings: {\n        ...setting.settings\n      }\n    };\n    if (replaceFg) {\n      const replacement = getReplacementColor(setting.settings.foreground);\n      theme.colorReplacements[replacement] = setting.settings.foreground;\n      clone.settings.foreground = replacement;\n    }\n    if (replaceBg) {\n      const replacement = getReplacementColor(setting.settings.background);\n      theme.colorReplacements[replacement] = setting.settings.background;\n      clone.settings.background = replacement;\n    }\n    return clone;\n  });\n  for (const key of Object.keys(theme.colors || {})) {\n    if (key === \"editor.foreground\" || key === \"editor.background\" || key.startsWith(\"terminal.ansi\")) {\n      if (!theme.colors[key]?.startsWith(\"#\")) {\n        const replacement = getReplacementColor(theme.colors[key]);\n        theme.colorReplacements[replacement] = theme.colors[key];\n        theme.colors[key] = replacement;\n      }\n    }\n  }\n  Object.defineProperty(theme, RESOLVED_KEY, {\n    enumerable: false,\n    writable: false,\n    value: true\n  });\n  return theme;\n}\n\nasync function resolveLangs(langs) {\n  return Array.from(new Set((await Promise.all(\n    langs.filter((l) => !isSpecialLang(l)).map(async (lang) => await normalizeGetter(lang).then((r) => Array.isArray(r) ? r : [r]))\n  )).flat()));\n}\nasync function resolveThemes(themes) {\n  const resolved = await Promise.all(\n    themes.map(\n      async (theme) => isSpecialTheme(theme) ? null : normalizeTheme(await normalizeGetter(theme))\n    )\n  );\n  return resolved.filter((i) => !!i);\n}\n\nlet _emitDeprecation = 3;\nlet _emitError = false;\nfunction enableDeprecationWarnings(emitDeprecation = true, emitError = false) {\n  _emitDeprecation = emitDeprecation;\n  _emitError = emitError;\n}\nfunction warnDeprecated(message, version = 3) {\n  if (!_emitDeprecation)\n    return;\n  if (typeof _emitDeprecation === \"number\" && version > _emitDeprecation)\n    return;\n  if (_emitError) {\n    throw new Error(`[SHIKI DEPRECATE]: ${message}`);\n  } else {\n    console.trace(`[SHIKI DEPRECATE]: ${message}`);\n  }\n}\n\nclass ShikiError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"ShikiError\";\n  }\n}\n\nclass Registry extends Registry$1 {\n  constructor(_resolver, _themes, _langs, _alias = {}) {\n    super(_resolver);\n    this._resolver = _resolver;\n    this._themes = _themes;\n    this._langs = _langs;\n    this._alias = _alias;\n    this._themes.map((t) => this.loadTheme(t));\n    this.loadLanguages(this._langs);\n  }\n  _resolvedThemes = /* @__PURE__ */ new Map();\n  _resolvedGrammars = /* @__PURE__ */ new Map();\n  _langMap = /* @__PURE__ */ new Map();\n  _langGraph = /* @__PURE__ */ new Map();\n  _textmateThemeCache = /* @__PURE__ */ new WeakMap();\n  _loadedThemesCache = null;\n  _loadedLanguagesCache = null;\n  getTheme(theme) {\n    if (typeof theme === \"string\")\n      return this._resolvedThemes.get(theme);\n    else\n      return this.loadTheme(theme);\n  }\n  loadTheme(theme) {\n    const _theme = normalizeTheme(theme);\n    if (_theme.name) {\n      this._resolvedThemes.set(_theme.name, _theme);\n      this._loadedThemesCache = null;\n    }\n    return _theme;\n  }\n  getLoadedThemes() {\n    if (!this._loadedThemesCache)\n      this._loadedThemesCache = [...this._resolvedThemes.keys()];\n    return this._loadedThemesCache;\n  }\n  // Override and re-implement this method to cache the textmate themes as `TextMateTheme.createFromRawTheme`\n  // is expensive. Themes can switch often especially for dual-theme support.\n  //\n  // The parent class also accepts `colorMap` as the second parameter, but since we don't use that,\n  // we omit here so it's easier to cache the themes.\n  setTheme(theme) {\n    let textmateTheme = this._textmateThemeCache.get(theme);\n    if (!textmateTheme) {\n      textmateTheme = Theme.createFromRawTheme(theme);\n      this._textmateThemeCache.set(theme, textmateTheme);\n    }\n    this._syncRegistry.setTheme(textmateTheme);\n  }\n  getGrammar(name) {\n    if (this._alias[name]) {\n      const resolved = /* @__PURE__ */ new Set([name]);\n      while (this._alias[name]) {\n        name = this._alias[name];\n        if (resolved.has(name))\n          throw new ShikiError(`Circular alias \\`${Array.from(resolved).join(\" -> \")} -> ${name}\\``);\n        resolved.add(name);\n      }\n    }\n    return this._resolvedGrammars.get(name);\n  }\n  loadLanguage(lang) {\n    if (this.getGrammar(lang.name))\n      return;\n    const embeddedLazilyBy = new Set(\n      [...this._langMap.values()].filter((i) => i.embeddedLangsLazy?.includes(lang.name))\n    );\n    this._resolver.addLanguage(lang);\n    const grammarConfig = {\n      balancedBracketSelectors: lang.balancedBracketSelectors || [\"*\"],\n      unbalancedBracketSelectors: lang.unbalancedBracketSelectors || []\n    };\n    this._syncRegistry._rawGrammars.set(lang.scopeName, lang);\n    const g = this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);\n    g.name = lang.name;\n    this._resolvedGrammars.set(lang.name, g);\n    if (lang.aliases) {\n      lang.aliases.forEach((alias) => {\n        this._alias[alias] = lang.name;\n      });\n    }\n    this._loadedLanguagesCache = null;\n    if (embeddedLazilyBy.size) {\n      for (const e of embeddedLazilyBy) {\n        this._resolvedGrammars.delete(e.name);\n        this._loadedLanguagesCache = null;\n        this._syncRegistry?._injectionGrammars?.delete(e.scopeName);\n        this._syncRegistry?._grammars?.delete(e.scopeName);\n        this.loadLanguage(this._langMap.get(e.name));\n      }\n    }\n  }\n  dispose() {\n    super.dispose();\n    this._resolvedThemes.clear();\n    this._resolvedGrammars.clear();\n    this._langMap.clear();\n    this._langGraph.clear();\n    this._loadedThemesCache = null;\n  }\n  loadLanguages(langs) {\n    for (const lang of langs)\n      this.resolveEmbeddedLanguages(lang);\n    const langsGraphArray = Array.from(this._langGraph.entries());\n    const missingLangs = langsGraphArray.filter(([_, lang]) => !lang);\n    if (missingLangs.length) {\n      const dependents = langsGraphArray.filter(([_, lang]) => lang && lang.embeddedLangs?.some((l) => missingLangs.map(([name]) => name).includes(l))).filter((lang) => !missingLangs.includes(lang));\n      throw new ShikiError(`Missing languages ${missingLangs.map(([name]) => `\\`${name}\\``).join(\", \")}, required by ${dependents.map(([name]) => `\\`${name}\\``).join(\", \")}`);\n    }\n    for (const [_, lang] of langsGraphArray)\n      this._resolver.addLanguage(lang);\n    for (const [_, lang] of langsGraphArray)\n      this.loadLanguage(lang);\n  }\n  getLoadedLanguages() {\n    if (!this._loadedLanguagesCache) {\n      this._loadedLanguagesCache = [\n        .../* @__PURE__ */ new Set([...this._resolvedGrammars.keys(), ...Object.keys(this._alias)])\n      ];\n    }\n    return this._loadedLanguagesCache;\n  }\n  resolveEmbeddedLanguages(lang) {\n    this._langMap.set(lang.name, lang);\n    this._langGraph.set(lang.name, lang);\n    if (lang.embeddedLangs) {\n      for (const embeddedLang of lang.embeddedLangs)\n        this._langGraph.set(embeddedLang, this._langMap.get(embeddedLang));\n    }\n  }\n}\n\nclass Resolver {\n  _langs = /* @__PURE__ */ new Map();\n  _scopeToLang = /* @__PURE__ */ new Map();\n  _injections = /* @__PURE__ */ new Map();\n  _onigLib;\n  constructor(engine, langs) {\n    this._onigLib = {\n      createOnigScanner: (patterns) => engine.createScanner(patterns),\n      createOnigString: (s) => engine.createString(s)\n    };\n    langs.forEach((i) => this.addLanguage(i));\n  }\n  get onigLib() {\n    return this._onigLib;\n  }\n  getLangRegistration(langIdOrAlias) {\n    return this._langs.get(langIdOrAlias);\n  }\n  loadGrammar(scopeName) {\n    return this._scopeToLang.get(scopeName);\n  }\n  addLanguage(l) {\n    this._langs.set(l.name, l);\n    if (l.aliases) {\n      l.aliases.forEach((a) => {\n        this._langs.set(a, l);\n      });\n    }\n    this._scopeToLang.set(l.scopeName, l);\n    if (l.injectTo) {\n      l.injectTo.forEach((i) => {\n        if (!this._injections.get(i))\n          this._injections.set(i, []);\n        this._injections.get(i).push(l.scopeName);\n      });\n    }\n  }\n  getInjections(scopeName) {\n    const scopeParts = scopeName.split(\".\");\n    let injections = [];\n    for (let i = 1; i <= scopeParts.length; i++) {\n      const subScopeName = scopeParts.slice(0, i).join(\".\");\n      injections = [...injections, ...this._injections.get(subScopeName) || []];\n    }\n    return injections;\n  }\n}\n\nlet instancesCount = 0;\nfunction createShikiInternalSync(options) {\n  instancesCount += 1;\n  if (options.warnings !== false && instancesCount >= 10 && instancesCount % 10 === 0)\n    console.warn(`[Shiki] ${instancesCount} instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call \\`highlighter.dispose()\\` to release unused instances.`);\n  let isDisposed = false;\n  if (!options.engine)\n    throw new ShikiError(\"`engine` option is required for synchronous mode\");\n  const langs = (options.langs || []).flat(1);\n  const themes = (options.themes || []).flat(1).map(normalizeTheme);\n  const resolver = new Resolver(options.engine, langs);\n  const _registry = new Registry(resolver, themes, langs, options.langAlias);\n  let _lastTheme;\n  function getLanguage(name) {\n    ensureNotDisposed();\n    const _lang = _registry.getGrammar(typeof name === \"string\" ? name : name.name);\n    if (!_lang)\n      throw new ShikiError(`Language \\`${name}\\` not found, you may need to load it first`);\n    return _lang;\n  }\n  function getTheme(name) {\n    if (name === \"none\")\n      return { bg: \"\", fg: \"\", name: \"none\", settings: [], type: \"dark\" };\n    ensureNotDisposed();\n    const _theme = _registry.getTheme(name);\n    if (!_theme)\n      throw new ShikiError(`Theme \\`${name}\\` not found, you may need to load it first`);\n    return _theme;\n  }\n  function setTheme(name) {\n    ensureNotDisposed();\n    const theme = getTheme(name);\n    if (_lastTheme !== name) {\n      _registry.setTheme(theme);\n      _lastTheme = name;\n    }\n    const colorMap = _registry.getColorMap();\n    return {\n      theme,\n      colorMap\n    };\n  }\n  function getLoadedThemes() {\n    ensureNotDisposed();\n    return _registry.getLoadedThemes();\n  }\n  function getLoadedLanguages() {\n    ensureNotDisposed();\n    return _registry.getLoadedLanguages();\n  }\n  function loadLanguageSync(...langs2) {\n    ensureNotDisposed();\n    _registry.loadLanguages(langs2.flat(1));\n  }\n  async function loadLanguage(...langs2) {\n    return loadLanguageSync(await resolveLangs(langs2));\n  }\n  function loadThemeSync(...themes2) {\n    ensureNotDisposed();\n    for (const theme of themes2.flat(1)) {\n      _registry.loadTheme(theme);\n    }\n  }\n  async function loadTheme(...themes2) {\n    ensureNotDisposed();\n    return loadThemeSync(await resolveThemes(themes2));\n  }\n  function ensureNotDisposed() {\n    if (isDisposed)\n      throw new ShikiError(\"Shiki instance has been disposed\");\n  }\n  function dispose() {\n    if (isDisposed)\n      return;\n    isDisposed = true;\n    _registry.dispose();\n    instancesCount -= 1;\n  }\n  return {\n    setTheme,\n    getTheme,\n    getLanguage,\n    getLoadedThemes,\n    getLoadedLanguages,\n    loadLanguage,\n    loadLanguageSync,\n    loadTheme,\n    loadThemeSync,\n    dispose,\n    [Symbol.dispose]: dispose\n  };\n}\n\nasync function createShikiInternal(options) {\n  if (!options.engine) {\n    warnDeprecated(\"`engine` option is required. Use `createOnigurumaEngine` or `createJavaScriptRegexEngine` to create an engine.\");\n  }\n  const [\n    themes,\n    langs,\n    engine\n  ] = await Promise.all([\n    resolveThemes(options.themes || []),\n    resolveLangs(options.langs || []),\n    options.engine\n  ]);\n  return createShikiInternalSync({\n    ...options,\n    themes,\n    langs,\n    engine\n  });\n}\n\nasync function createHighlighterCore(options) {\n  const internal = await createShikiInternal(options);\n  return {\n    getLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n    codeToTokensBase: (code, options2) => codeToTokensBase(internal, code, options2),\n    codeToTokensWithThemes: (code, options2) => codeToTokensWithThemes(internal, code, options2),\n    codeToTokens: (code, options2) => codeToTokens(internal, code, options2),\n    codeToHast: (code, options2) => codeToHast(internal, code, options2),\n    codeToHtml: (code, options2) => codeToHtml(internal, code, options2),\n    getBundledLanguages: () => ({}),\n    getBundledThemes: () => ({}),\n    ...internal,\n    getInternalContext: () => internal\n  };\n}\nfunction createHighlighterCoreSync(options) {\n  const internal = createShikiInternalSync(options);\n  return {\n    getLastGrammarState: (...args) => getLastGrammarState(internal, ...args),\n    codeToTokensBase: (code, options2) => codeToTokensBase(internal, code, options2),\n    codeToTokensWithThemes: (code, options2) => codeToTokensWithThemes(internal, code, options2),\n    codeToTokens: (code, options2) => codeToTokens(internal, code, options2),\n    codeToHast: (code, options2) => codeToHast(internal, code, options2),\n    codeToHtml: (code, options2) => codeToHtml(internal, code, options2),\n    getBundledLanguages: () => ({}),\n    getBundledThemes: () => ({}),\n    ...internal,\n    getInternalContext: () => internal\n  };\n}\nfunction makeSingletonHighlighterCore(createHighlighter) {\n  let _shiki;\n  async function getSingletonHighlighterCore2(options) {\n    if (!_shiki) {\n      _shiki = createHighlighter({\n        ...options,\n        themes: options.themes || [],\n        langs: options.langs || []\n      });\n      return _shiki;\n    } else {\n      const s = await _shiki;\n      await Promise.all([\n        s.loadTheme(...options.themes || []),\n        s.loadLanguage(...options.langs || [])\n      ]);\n      return s;\n    }\n  }\n  return getSingletonHighlighterCore2;\n}\nconst getSingletonHighlighterCore = /* @__PURE__ */ makeSingletonHighlighterCore(createHighlighterCore);\n\nfunction createdBundledHighlighter(options) {\n  const bundledLanguages = options.langs;\n  const bundledThemes = options.themes;\n  const engine = options.engine;\n  async function createHighlighter(options2) {\n    function resolveLang(lang) {\n      if (typeof lang === \"string\") {\n        if (isSpecialLang(lang))\n          return [];\n        lang = options2.langAlias?.[lang] || lang;\n        const bundle = bundledLanguages[lang];\n        if (!bundle)\n          throw new ShikiError$1(`Language \\`${lang}\\` is not included in this bundle. You may want to load it from external source.`);\n        return bundle;\n      }\n      return lang;\n    }\n    function resolveTheme(theme) {\n      if (isSpecialTheme(theme))\n        return \"none\";\n      if (typeof theme === \"string\") {\n        const bundle = bundledThemes[theme];\n        if (!bundle)\n          throw new ShikiError$1(`Theme \\`${theme}\\` is not included in this bundle. You may want to load it from external source.`);\n        return bundle;\n      }\n      return theme;\n    }\n    const _themes = (options2.themes ?? []).map((i) => resolveTheme(i));\n    const langs = (options2.langs ?? []).map((i) => resolveLang(i));\n    const core = await createHighlighterCore({\n      engine: options2.engine ?? engine(),\n      ...options2,\n      themes: _themes,\n      langs\n    });\n    return {\n      ...core,\n      loadLanguage(...langs2) {\n        return core.loadLanguage(...langs2.map(resolveLang));\n      },\n      loadTheme(...themes) {\n        return core.loadTheme(...themes.map(resolveTheme));\n      },\n      getBundledLanguages() {\n        return bundledLanguages;\n      },\n      getBundledThemes() {\n        return bundledThemes;\n      }\n    };\n  }\n  return createHighlighter;\n}\nfunction makeSingletonHighlighter(createHighlighter) {\n  let _shiki;\n  async function getSingletonHighlighter(options = {}) {\n    if (!_shiki) {\n      _shiki = createHighlighter({\n        ...options,\n        themes: options.themes || [],\n        langs: options.langs || []\n      });\n      return _shiki;\n    } else {\n      const s = await _shiki;\n      await Promise.all([\n        s.loadTheme(...options.themes || []),\n        s.loadLanguage(...options.langs || [])\n      ]);\n      return s;\n    }\n  }\n  return getSingletonHighlighter;\n}\nfunction createSingletonShorthands(createHighlighter, config) {\n  const getSingletonHighlighter = makeSingletonHighlighter(createHighlighter);\n  async function get(code, options) {\n    const shiki = await getSingletonHighlighter({\n      langs: [options.lang],\n      themes: \"theme\" in options ? [options.theme] : Object.values(options.themes)\n    });\n    const langs = await config?.guessEmbeddedLanguages?.(code, options.lang, shiki);\n    if (langs) {\n      await shiki.loadLanguage(...langs);\n    }\n    return shiki;\n  }\n  return {\n    getSingletonHighlighter(options) {\n      return getSingletonHighlighter(options);\n    },\n    async codeToHtml(code, options) {\n      const shiki = await get(code, options);\n      return shiki.codeToHtml(code, options);\n    },\n    async codeToHast(code, options) {\n      const shiki = await get(code, options);\n      return shiki.codeToHast(code, options);\n    },\n    async codeToTokens(code, options) {\n      const shiki = await get(code, options);\n      return shiki.codeToTokens(code, options);\n    },\n    async codeToTokensBase(code, options) {\n      const shiki = await get(code, options);\n      return shiki.codeToTokensBase(code, options);\n    },\n    async codeToTokensWithThemes(code, options) {\n      const shiki = await get(code, options);\n      return shiki.codeToTokensWithThemes(code, options);\n    },\n    async getLastGrammarState(code, options) {\n      const shiki = await getSingletonHighlighter({\n        langs: [options.lang],\n        themes: [options.theme]\n      });\n      return shiki.getLastGrammarState(code, options);\n    }\n  };\n}\n\nfunction createCssVariablesTheme(options = {}) {\n  const {\n    name = \"css-variables\",\n    variablePrefix = \"--shiki-\",\n    fontStyle = true\n  } = options;\n  const variable = (name2) => {\n    if (options.variableDefaults?.[name2])\n      return `var(${variablePrefix}${name2}, ${options.variableDefaults[name2]})`;\n    return `var(${variablePrefix}${name2})`;\n  };\n  const theme = {\n    name,\n    type: \"dark\",\n    colors: {\n      \"editor.foreground\": variable(\"foreground\"),\n      \"editor.background\": variable(\"background\"),\n      \"terminal.ansiBlack\": variable(\"ansi-black\"),\n      \"terminal.ansiRed\": variable(\"ansi-red\"),\n      \"terminal.ansiGreen\": variable(\"ansi-green\"),\n      \"terminal.ansiYellow\": variable(\"ansi-yellow\"),\n      \"terminal.ansiBlue\": variable(\"ansi-blue\"),\n      \"terminal.ansiMagenta\": variable(\"ansi-magenta\"),\n      \"terminal.ansiCyan\": variable(\"ansi-cyan\"),\n      \"terminal.ansiWhite\": variable(\"ansi-white\"),\n      \"terminal.ansiBrightBlack\": variable(\"ansi-bright-black\"),\n      \"terminal.ansiBrightRed\": variable(\"ansi-bright-red\"),\n      \"terminal.ansiBrightGreen\": variable(\"ansi-bright-green\"),\n      \"terminal.ansiBrightYellow\": variable(\"ansi-bright-yellow\"),\n      \"terminal.ansiBrightBlue\": variable(\"ansi-bright-blue\"),\n      \"terminal.ansiBrightMagenta\": variable(\"ansi-bright-magenta\"),\n      \"terminal.ansiBrightCyan\": variable(\"ansi-bright-cyan\"),\n      \"terminal.ansiBrightWhite\": variable(\"ansi-bright-white\")\n    },\n    tokenColors: [\n      {\n        scope: [\n          \"keyword.operator.accessor\",\n          \"meta.group.braces.round.function.arguments\",\n          \"meta.template.expression\",\n          \"markup.fenced_code meta.embedded.block\"\n        ],\n        settings: {\n          foreground: variable(\"foreground\")\n        }\n      },\n      {\n        scope: \"emphasis\",\n        settings: {\n          fontStyle: \"italic\"\n        }\n      },\n      {\n        scope: [\"strong\", \"markup.heading.markdown\", \"markup.bold.markdown\"],\n        settings: {\n          fontStyle: \"bold\"\n        }\n      },\n      {\n        scope: [\"markup.italic.markdown\"],\n        settings: {\n          fontStyle: \"italic\"\n        }\n      },\n      {\n        scope: \"meta.link.inline.markdown\",\n        settings: {\n          fontStyle: \"underline\",\n          foreground: variable(\"token-link\")\n        }\n      },\n      {\n        scope: [\"string\", \"markup.fenced_code\", \"markup.inline\"],\n        settings: {\n          foreground: variable(\"token-string\")\n        }\n      },\n      {\n        scope: [\"comment\", \"string.quoted.docstring.multi\"],\n        settings: {\n          foreground: variable(\"token-comment\")\n        }\n      },\n      {\n        scope: [\n          \"constant.numeric\",\n          \"constant.language\",\n          \"constant.other.placeholder\",\n          \"constant.character.format.placeholder\",\n          \"variable.language.this\",\n          \"variable.other.object\",\n          \"variable.other.class\",\n          \"variable.other.constant\",\n          \"meta.property-name\",\n          \"meta.property-value\",\n          \"support\"\n        ],\n        settings: {\n          foreground: variable(\"token-constant\")\n        }\n      },\n      {\n        scope: [\n          \"keyword\",\n          \"storage.modifier\",\n          \"storage.type\",\n          \"storage.control.clojure\",\n          \"entity.name.function.clojure\",\n          \"entity.name.tag.yaml\",\n          \"support.function.node\",\n          \"support.type.property-name.json\",\n          \"punctuation.separator.key-value\",\n          \"punctuation.definition.template-expression\"\n        ],\n        settings: {\n          foreground: variable(\"token-keyword\")\n        }\n      },\n      {\n        scope: \"variable.parameter.function\",\n        settings: {\n          foreground: variable(\"token-parameter\")\n        }\n      },\n      {\n        scope: [\n          \"support.function\",\n          \"entity.name.type\",\n          \"entity.other.inherited-class\",\n          \"meta.function-call\",\n          \"meta.instance.constructor\",\n          \"entity.other.attribute-name\",\n          \"entity.name.function\",\n          \"constant.keyword.clojure\"\n        ],\n        settings: {\n          foreground: variable(\"token-function\")\n        }\n      },\n      {\n        scope: [\n          \"entity.name.tag\",\n          \"string.quoted\",\n          \"string.regexp\",\n          \"string.interpolated\",\n          \"string.template\",\n          \"string.unquoted.plain.out.yaml\",\n          \"keyword.other.template\"\n        ],\n        settings: {\n          foreground: variable(\"token-string-expression\")\n        }\n      },\n      {\n        scope: [\n          \"punctuation.definition.arguments\",\n          \"punctuation.definition.dict\",\n          \"punctuation.separator\",\n          \"meta.function-call.arguments\"\n        ],\n        settings: {\n          foreground: variable(\"token-punctuation\")\n        }\n      },\n      {\n        // [Custom] Markdown links\n        scope: [\n          \"markup.underline.link\",\n          \"punctuation.definition.metadata.markdown\"\n        ],\n        settings: {\n          foreground: variable(\"token-link\")\n        }\n      },\n      {\n        // [Custom] Markdown list\n        scope: [\"beginning.punctuation.definition.list.markdown\"],\n        settings: {\n          foreground: variable(\"token-string\")\n        }\n      },\n      {\n        // [Custom] Markdown punctuation definition brackets\n        scope: [\n          \"punctuation.definition.string.begin.markdown\",\n          \"punctuation.definition.string.end.markdown\",\n          \"string.other.link.title.markdown\",\n          \"string.other.link.description.markdown\"\n        ],\n        settings: {\n          foreground: variable(\"token-keyword\")\n        }\n      },\n      {\n        // [Custom] Diff\n        scope: [\n          \"markup.inserted\",\n          \"meta.diff.header.to-file\",\n          \"punctuation.definition.inserted\"\n        ],\n        settings: {\n          foreground: variable(\"token-inserted\")\n        }\n      },\n      {\n        scope: [\n          \"markup.deleted\",\n          \"meta.diff.header.from-file\",\n          \"punctuation.definition.deleted\"\n        ],\n        settings: {\n          foreground: variable(\"token-deleted\")\n        }\n      },\n      {\n        scope: [\n          \"markup.changed\",\n          \"punctuation.definition.changed\"\n        ],\n        settings: {\n          foreground: variable(\"token-changed\")\n        }\n      }\n    ]\n  };\n  if (!fontStyle) {\n    theme.tokenColors = theme.tokenColors?.map((tokenColor) => {\n      if (tokenColor.settings?.fontStyle)\n        delete tokenColor.settings.fontStyle;\n      return tokenColor;\n    });\n  }\n  return theme;\n}\n\nexport { addClassToHast, applyColorReplacements, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createCssVariablesTheme, createHighlighterCore, createHighlighterCoreSync, createPositionConverter, createShikiInternal, createShikiInternalSync, createSingletonShorthands, createdBundledHighlighter, enableDeprecationWarnings, flatTokenVariants, getSingletonHighlighterCore, getTokenStyleObject, guessEmbeddedLanguages, hastToHtml, isNoneTheme, isPlainLang, isSpecialLang, isSpecialTheme, makeSingletonHighlighter, makeSingletonHighlighterCore, normalizeGetter, normalizeTheme, resolveColorReplacements, splitLines, splitToken, splitTokens, stringifyTokenStyle, toArray, tokenizeAnsiWithTheme, tokenizeWithTheme, tokensToHast, transformerDecorations, warnDeprecated };\n","const bundledLanguagesInfo = [\n  {\n    \"id\": \"abap\",\n    \"name\": \"ABAP\",\n    \"import\": () => import('@shikijs/langs/abap')\n  },\n  {\n    \"id\": \"actionscript-3\",\n    \"name\": \"ActionScript\",\n    \"import\": () => import('@shikijs/langs/actionscript-3')\n  },\n  {\n    \"id\": \"ada\",\n    \"name\": \"Ada\",\n    \"import\": () => import('@shikijs/langs/ada')\n  },\n  {\n    \"id\": \"angular-html\",\n    \"name\": \"Angular HTML\",\n    \"import\": () => import('@shikijs/langs/angular-html')\n  },\n  {\n    \"id\": \"angular-ts\",\n    \"name\": \"Angular TypeScript\",\n    \"import\": () => import('@shikijs/langs/angular-ts')\n  },\n  {\n    \"id\": \"apache\",\n    \"name\": \"Apache Conf\",\n    \"import\": () => import('@shikijs/langs/apache')\n  },\n  {\n    \"id\": \"apex\",\n    \"name\": \"Apex\",\n    \"import\": () => import('@shikijs/langs/apex')\n  },\n  {\n    \"id\": \"apl\",\n    \"name\": \"APL\",\n    \"import\": () => import('@shikijs/langs/apl')\n  },\n  {\n    \"id\": \"applescript\",\n    \"name\": \"AppleScript\",\n    \"import\": () => import('@shikijs/langs/applescript')\n  },\n  {\n    \"id\": \"ara\",\n    \"name\": \"Ara\",\n    \"import\": () => import('@shikijs/langs/ara')\n  },\n  {\n    \"id\": \"asciidoc\",\n    \"name\": \"AsciiDoc\",\n    \"aliases\": [\n      \"adoc\"\n    ],\n    \"import\": () => import('@shikijs/langs/asciidoc')\n  },\n  {\n    \"id\": \"asm\",\n    \"name\": \"Assembly\",\n    \"import\": () => import('@shikijs/langs/asm')\n  },\n  {\n    \"id\": \"astro\",\n    \"name\": \"Astro\",\n    \"import\": () => import('@shikijs/langs/astro')\n  },\n  {\n    \"id\": \"awk\",\n    \"name\": \"AWK\",\n    \"import\": () => import('@shikijs/langs/awk')\n  },\n  {\n    \"id\": \"ballerina\",\n    \"name\": \"Ballerina\",\n    \"import\": () => import('@shikijs/langs/ballerina')\n  },\n  {\n    \"id\": \"bat\",\n    \"name\": \"Batch File\",\n    \"aliases\": [\n      \"batch\"\n    ],\n    \"import\": () => import('@shikijs/langs/bat')\n  },\n  {\n    \"id\": \"beancount\",\n    \"name\": \"Beancount\",\n    \"import\": () => import('@shikijs/langs/beancount')\n  },\n  {\n    \"id\": \"berry\",\n    \"name\": \"Berry\",\n    \"aliases\": [\n      \"be\"\n    ],\n    \"import\": () => import('@shikijs/langs/berry')\n  },\n  {\n    \"id\": \"bibtex\",\n    \"name\": \"BibTeX\",\n    \"import\": () => import('@shikijs/langs/bibtex')\n  },\n  {\n    \"id\": \"bicep\",\n    \"name\": \"Bicep\",\n    \"import\": () => import('@shikijs/langs/bicep')\n  },\n  {\n    \"id\": \"blade\",\n    \"name\": \"Blade\",\n    \"import\": () => import('@shikijs/langs/blade')\n  },\n  {\n    \"id\": \"bsl\",\n    \"name\": \"1C (Enterprise)\",\n    \"aliases\": [\n      \"1c\"\n    ],\n    \"import\": () => import('@shikijs/langs/bsl')\n  },\n  {\n    \"id\": \"c\",\n    \"name\": \"C\",\n    \"import\": () => import('@shikijs/langs/c')\n  },\n  {\n    \"id\": \"cadence\",\n    \"name\": \"Cadence\",\n    \"aliases\": [\n      \"cdc\"\n    ],\n    \"import\": () => import('@shikijs/langs/cadence')\n  },\n  {\n    \"id\": \"cairo\",\n    \"name\": \"Cairo\",\n    \"import\": () => import('@shikijs/langs/cairo')\n  },\n  {\n    \"id\": \"clarity\",\n    \"name\": \"Clarity\",\n    \"import\": () => import('@shikijs/langs/clarity')\n  },\n  {\n    \"id\": \"clojure\",\n    \"name\": \"Clojure\",\n    \"aliases\": [\n      \"clj\"\n    ],\n    \"import\": () => import('@shikijs/langs/clojure')\n  },\n  {\n    \"id\": \"cmake\",\n    \"name\": \"CMake\",\n    \"import\": () => import('@shikijs/langs/cmake')\n  },\n  {\n    \"id\": \"cobol\",\n    \"name\": \"COBOL\",\n    \"import\": () => import('@shikijs/langs/cobol')\n  },\n  {\n    \"id\": \"codeowners\",\n    \"name\": \"CODEOWNERS\",\n    \"import\": () => import('@shikijs/langs/codeowners')\n  },\n  {\n    \"id\": \"codeql\",\n    \"name\": \"CodeQL\",\n    \"aliases\": [\n      \"ql\"\n    ],\n    \"import\": () => import('@shikijs/langs/codeql')\n  },\n  {\n    \"id\": \"coffee\",\n    \"name\": \"CoffeeScript\",\n    \"aliases\": [\n      \"coffeescript\"\n    ],\n    \"import\": () => import('@shikijs/langs/coffee')\n  },\n  {\n    \"id\": \"common-lisp\",\n    \"name\": \"Common Lisp\",\n    \"aliases\": [\n      \"lisp\"\n    ],\n    \"import\": () => import('@shikijs/langs/common-lisp')\n  },\n  {\n    \"id\": \"coq\",\n    \"name\": \"Coq\",\n    \"import\": () => import('@shikijs/langs/coq')\n  },\n  {\n    \"id\": \"cpp\",\n    \"name\": \"C++\",\n    \"aliases\": [\n      \"c++\"\n    ],\n    \"import\": () => import('@shikijs/langs/cpp')\n  },\n  {\n    \"id\": \"crystal\",\n    \"name\": \"Crystal\",\n    \"import\": () => import('@shikijs/langs/crystal')\n  },\n  {\n    \"id\": \"csharp\",\n    \"name\": \"C#\",\n    \"aliases\": [\n      \"c#\",\n      \"cs\"\n    ],\n    \"import\": () => import('@shikijs/langs/csharp')\n  },\n  {\n    \"id\": \"css\",\n    \"name\": \"CSS\",\n    \"import\": () => import('@shikijs/langs/css')\n  },\n  {\n    \"id\": \"csv\",\n    \"name\": \"CSV\",\n    \"import\": () => import('@shikijs/langs/csv')\n  },\n  {\n    \"id\": \"cue\",\n    \"name\": \"CUE\",\n    \"import\": () => import('@shikijs/langs/cue')\n  },\n  {\n    \"id\": \"cypher\",\n    \"name\": \"Cypher\",\n    \"aliases\": [\n      \"cql\"\n    ],\n    \"import\": () => import('@shikijs/langs/cypher')\n  },\n  {\n    \"id\": \"d\",\n    \"name\": \"D\",\n    \"import\": () => import('@shikijs/langs/d')\n  },\n  {\n    \"id\": \"dart\",\n    \"name\": \"Dart\",\n    \"import\": () => import('@shikijs/langs/dart')\n  },\n  {\n    \"id\": \"dax\",\n    \"name\": \"DAX\",\n    \"import\": () => import('@shikijs/langs/dax')\n  },\n  {\n    \"id\": \"desktop\",\n    \"name\": \"Desktop\",\n    \"import\": () => import('@shikijs/langs/desktop')\n  },\n  {\n    \"id\": \"diff\",\n    \"name\": \"Diff\",\n    \"import\": () => import('@shikijs/langs/diff')\n  },\n  {\n    \"id\": \"docker\",\n    \"name\": \"Dockerfile\",\n    \"aliases\": [\n      \"dockerfile\"\n    ],\n    \"import\": () => import('@shikijs/langs/docker')\n  },\n  {\n    \"id\": \"dotenv\",\n    \"name\": \"dotEnv\",\n    \"import\": () => import('@shikijs/langs/dotenv')\n  },\n  {\n    \"id\": \"dream-maker\",\n    \"name\": \"Dream Maker\",\n    \"import\": () => import('@shikijs/langs/dream-maker')\n  },\n  {\n    \"id\": \"edge\",\n    \"name\": \"Edge\",\n    \"import\": () => import('@shikijs/langs/edge')\n  },\n  {\n    \"id\": \"elixir\",\n    \"name\": \"Elixir\",\n    \"import\": () => import('@shikijs/langs/elixir')\n  },\n  {\n    \"id\": \"elm\",\n    \"name\": \"Elm\",\n    \"import\": () => import('@shikijs/langs/elm')\n  },\n  {\n    \"id\": \"emacs-lisp\",\n    \"name\": \"Emacs Lisp\",\n    \"aliases\": [\n      \"elisp\"\n    ],\n    \"import\": () => import('@shikijs/langs/emacs-lisp')\n  },\n  {\n    \"id\": \"erb\",\n    \"name\": \"ERB\",\n    \"import\": () => import('@shikijs/langs/erb')\n  },\n  {\n    \"id\": \"erlang\",\n    \"name\": \"Erlang\",\n    \"aliases\": [\n      \"erl\"\n    ],\n    \"import\": () => import('@shikijs/langs/erlang')\n  },\n  {\n    \"id\": \"fennel\",\n    \"name\": \"Fennel\",\n    \"import\": () => import('@shikijs/langs/fennel')\n  },\n  {\n    \"id\": \"fish\",\n    \"name\": \"Fish\",\n    \"import\": () => import('@shikijs/langs/fish')\n  },\n  {\n    \"id\": \"fluent\",\n    \"name\": \"Fluent\",\n    \"aliases\": [\n      \"ftl\"\n    ],\n    \"import\": () => import('@shikijs/langs/fluent')\n  },\n  {\n    \"id\": \"fortran-fixed-form\",\n    \"name\": \"Fortran (Fixed Form)\",\n    \"aliases\": [\n      \"f\",\n      \"for\",\n      \"f77\"\n    ],\n    \"import\": () => import('@shikijs/langs/fortran-fixed-form')\n  },\n  {\n    \"id\": \"fortran-free-form\",\n    \"name\": \"Fortran (Free Form)\",\n    \"aliases\": [\n      \"f90\",\n      \"f95\",\n      \"f03\",\n      \"f08\",\n      \"f18\"\n    ],\n    \"import\": () => import('@shikijs/langs/fortran-free-form')\n  },\n  {\n    \"id\": \"fsharp\",\n    \"name\": \"F#\",\n    \"aliases\": [\n      \"f#\",\n      \"fs\"\n    ],\n    \"import\": () => import('@shikijs/langs/fsharp')\n  },\n  {\n    \"id\": \"gdresource\",\n    \"name\": \"GDResource\",\n    \"import\": () => import('@shikijs/langs/gdresource')\n  },\n  {\n    \"id\": \"gdscript\",\n    \"name\": \"GDScript\",\n    \"import\": () => import('@shikijs/langs/gdscript')\n  },\n  {\n    \"id\": \"gdshader\",\n    \"name\": \"GDShader\",\n    \"import\": () => import('@shikijs/langs/gdshader')\n  },\n  {\n    \"id\": \"genie\",\n    \"name\": \"Genie\",\n    \"import\": () => import('@shikijs/langs/genie')\n  },\n  {\n    \"id\": \"gherkin\",\n    \"name\": \"Gherkin\",\n    \"import\": () => import('@shikijs/langs/gherkin')\n  },\n  {\n    \"id\": \"git-commit\",\n    \"name\": \"Git Commit Message\",\n    \"import\": () => import('@shikijs/langs/git-commit')\n  },\n  {\n    \"id\": \"git-rebase\",\n    \"name\": \"Git Rebase Message\",\n    \"import\": () => import('@shikijs/langs/git-rebase')\n  },\n  {\n    \"id\": \"gleam\",\n    \"name\": \"Gleam\",\n    \"import\": () => import('@shikijs/langs/gleam')\n  },\n  {\n    \"id\": \"glimmer-js\",\n    \"name\": \"Glimmer JS\",\n    \"aliases\": [\n      \"gjs\"\n    ],\n    \"import\": () => import('@shikijs/langs/glimmer-js')\n  },\n  {\n    \"id\": \"glimmer-ts\",\n    \"name\": \"Glimmer TS\",\n    \"aliases\": [\n      \"gts\"\n    ],\n    \"import\": () => import('@shikijs/langs/glimmer-ts')\n  },\n  {\n    \"id\": \"glsl\",\n    \"name\": \"GLSL\",\n    \"import\": () => import('@shikijs/langs/glsl')\n  },\n  {\n    \"id\": \"gnuplot\",\n    \"name\": \"Gnuplot\",\n    \"import\": () => import('@shikijs/langs/gnuplot')\n  },\n  {\n    \"id\": \"go\",\n    \"name\": \"Go\",\n    \"import\": () => import('@shikijs/langs/go')\n  },\n  {\n    \"id\": \"graphql\",\n    \"name\": \"GraphQL\",\n    \"aliases\": [\n      \"gql\"\n    ],\n    \"import\": () => import('@shikijs/langs/graphql')\n  },\n  {\n    \"id\": \"groovy\",\n    \"name\": \"Groovy\",\n    \"import\": () => import('@shikijs/langs/groovy')\n  },\n  {\n    \"id\": \"hack\",\n    \"name\": \"Hack\",\n    \"import\": () => import('@shikijs/langs/hack')\n  },\n  {\n    \"id\": \"haml\",\n    \"name\": \"Ruby Haml\",\n    \"import\": () => import('@shikijs/langs/haml')\n  },\n  {\n    \"id\": \"handlebars\",\n    \"name\": \"Handlebars\",\n    \"aliases\": [\n      \"hbs\"\n    ],\n    \"import\": () => import('@shikijs/langs/handlebars')\n  },\n  {\n    \"id\": \"haskell\",\n    \"name\": \"Haskell\",\n    \"aliases\": [\n      \"hs\"\n    ],\n    \"import\": () => import('@shikijs/langs/haskell')\n  },\n  {\n    \"id\": \"haxe\",\n    \"name\": \"Haxe\",\n    \"import\": () => import('@shikijs/langs/haxe')\n  },\n  {\n    \"id\": \"hcl\",\n    \"name\": \"HashiCorp HCL\",\n    \"import\": () => import('@shikijs/langs/hcl')\n  },\n  {\n    \"id\": \"hjson\",\n    \"name\": \"Hjson\",\n    \"import\": () => import('@shikijs/langs/hjson')\n  },\n  {\n    \"id\": \"hlsl\",\n    \"name\": \"HLSL\",\n    \"import\": () => import('@shikijs/langs/hlsl')\n  },\n  {\n    \"id\": \"html\",\n    \"name\": \"HTML\",\n    \"import\": () => import('@shikijs/langs/html')\n  },\n  {\n    \"id\": \"html-derivative\",\n    \"name\": \"HTML (Derivative)\",\n    \"import\": () => import('@shikijs/langs/html-derivative')\n  },\n  {\n    \"id\": \"http\",\n    \"name\": \"HTTP\",\n    \"import\": () => import('@shikijs/langs/http')\n  },\n  {\n    \"id\": \"hxml\",\n    \"name\": \"HXML\",\n    \"import\": () => import('@shikijs/langs/hxml')\n  },\n  {\n    \"id\": \"hy\",\n    \"name\": \"Hy\",\n    \"import\": () => import('@shikijs/langs/hy')\n  },\n  {\n    \"id\": \"imba\",\n    \"name\": \"Imba\",\n    \"import\": () => import('@shikijs/langs/imba')\n  },\n  {\n    \"id\": \"ini\",\n    \"name\": \"INI\",\n    \"aliases\": [\n      \"properties\"\n    ],\n    \"import\": () => import('@shikijs/langs/ini')\n  },\n  {\n    \"id\": \"java\",\n    \"name\": \"Java\",\n    \"import\": () => import('@shikijs/langs/java')\n  },\n  {\n    \"id\": \"javascript\",\n    \"name\": \"JavaScript\",\n    \"aliases\": [\n      \"js\"\n    ],\n    \"import\": () => import('@shikijs/langs/javascript')\n  },\n  {\n    \"id\": \"jinja\",\n    \"name\": \"Jinja\",\n    \"import\": () => import('@shikijs/langs/jinja')\n  },\n  {\n    \"id\": \"jison\",\n    \"name\": \"Jison\",\n    \"import\": () => import('@shikijs/langs/jison')\n  },\n  {\n    \"id\": \"json\",\n    \"name\": \"JSON\",\n    \"import\": () => import('@shikijs/langs/json')\n  },\n  {\n    \"id\": \"json5\",\n    \"name\": \"JSON5\",\n    \"import\": () => import('@shikijs/langs/json5')\n  },\n  {\n    \"id\": \"jsonc\",\n    \"name\": \"JSON with Comments\",\n    \"import\": () => import('@shikijs/langs/jsonc')\n  },\n  {\n    \"id\": \"jsonl\",\n    \"name\": \"JSON Lines\",\n    \"import\": () => import('@shikijs/langs/jsonl')\n  },\n  {\n    \"id\": \"jsonnet\",\n    \"name\": \"Jsonnet\",\n    \"import\": () => import('@shikijs/langs/jsonnet')\n  },\n  {\n    \"id\": \"jssm\",\n    \"name\": \"JSSM\",\n    \"aliases\": [\n      \"fsl\"\n    ],\n    \"import\": () => import('@shikijs/langs/jssm')\n  },\n  {\n    \"id\": \"jsx\",\n    \"name\": \"JSX\",\n    \"import\": () => import('@shikijs/langs/jsx')\n  },\n  {\n    \"id\": \"julia\",\n    \"name\": \"Julia\",\n    \"aliases\": [\n      \"jl\"\n    ],\n    \"import\": () => import('@shikijs/langs/julia')\n  },\n  {\n    \"id\": \"kotlin\",\n    \"name\": \"Kotlin\",\n    \"aliases\": [\n      \"kt\",\n      \"kts\"\n    ],\n    \"import\": () => import('@shikijs/langs/kotlin')\n  },\n  {\n    \"id\": \"kusto\",\n    \"name\": \"Kusto\",\n    \"aliases\": [\n      \"kql\"\n    ],\n    \"import\": () => import('@shikijs/langs/kusto')\n  },\n  {\n    \"id\": \"latex\",\n    \"name\": \"LaTeX\",\n    \"import\": () => import('@shikijs/langs/latex')\n  },\n  {\n    \"id\": \"lean\",\n    \"name\": \"Lean 4\",\n    \"aliases\": [\n      \"lean4\"\n    ],\n    \"import\": () => import('@shikijs/langs/lean')\n  },\n  {\n    \"id\": \"less\",\n    \"name\": \"Less\",\n    \"import\": () => import('@shikijs/langs/less')\n  },\n  {\n    \"id\": \"liquid\",\n    \"name\": \"Liquid\",\n    \"import\": () => import('@shikijs/langs/liquid')\n  },\n  {\n    \"id\": \"llvm\",\n    \"name\": \"LLVM IR\",\n    \"import\": () => import('@shikijs/langs/llvm')\n  },\n  {\n    \"id\": \"log\",\n    \"name\": \"Log file\",\n    \"import\": () => import('@shikijs/langs/log')\n  },\n  {\n    \"id\": \"logo\",\n    \"name\": \"Logo\",\n    \"import\": () => import('@shikijs/langs/logo')\n  },\n  {\n    \"id\": \"lua\",\n    \"name\": \"Lua\",\n    \"import\": () => import('@shikijs/langs/lua')\n  },\n  {\n    \"id\": \"luau\",\n    \"name\": \"Luau\",\n    \"import\": () => import('@shikijs/langs/luau')\n  },\n  {\n    \"id\": \"make\",\n    \"name\": \"Makefile\",\n    \"aliases\": [\n      \"makefile\"\n    ],\n    \"import\": () => import('@shikijs/langs/make')\n  },\n  {\n    \"id\": \"markdown\",\n    \"name\": \"Markdown\",\n    \"aliases\": [\n      \"md\"\n    ],\n    \"import\": () => import('@shikijs/langs/markdown')\n  },\n  {\n    \"id\": \"marko\",\n    \"name\": \"Marko\",\n    \"import\": () => import('@shikijs/langs/marko')\n  },\n  {\n    \"id\": \"matlab\",\n    \"name\": \"MATLAB\",\n    \"import\": () => import('@shikijs/langs/matlab')\n  },\n  {\n    \"id\": \"mdc\",\n    \"name\": \"MDC\",\n    \"import\": () => import('@shikijs/langs/mdc')\n  },\n  {\n    \"id\": \"mdx\",\n    \"name\": \"MDX\",\n    \"import\": () => import('@shikijs/langs/mdx')\n  },\n  {\n    \"id\": \"mermaid\",\n    \"name\": \"Mermaid\",\n    \"aliases\": [\n      \"mmd\"\n    ],\n    \"import\": () => import('@shikijs/langs/mermaid')\n  },\n  {\n    \"id\": \"mipsasm\",\n    \"name\": \"MIPS Assembly\",\n    \"aliases\": [\n      \"mips\"\n    ],\n    \"import\": () => import('@shikijs/langs/mipsasm')\n  },\n  {\n    \"id\": \"mojo\",\n    \"name\": \"Mojo\",\n    \"import\": () => import('@shikijs/langs/mojo')\n  },\n  {\n    \"id\": \"move\",\n    \"name\": \"Move\",\n    \"import\": () => import('@shikijs/langs/move')\n  },\n  {\n    \"id\": \"narrat\",\n    \"name\": \"Narrat Language\",\n    \"aliases\": [\n      \"nar\"\n    ],\n    \"import\": () => import('@shikijs/langs/narrat')\n  },\n  {\n    \"id\": \"nextflow\",\n    \"name\": \"Nextflow\",\n    \"aliases\": [\n      \"nf\"\n    ],\n    \"import\": () => import('@shikijs/langs/nextflow')\n  },\n  {\n    \"id\": \"nginx\",\n    \"name\": \"Nginx\",\n    \"import\": () => import('@shikijs/langs/nginx')\n  },\n  {\n    \"id\": \"nim\",\n    \"name\": \"Nim\",\n    \"import\": () => import('@shikijs/langs/nim')\n  },\n  {\n    \"id\": \"nix\",\n    \"name\": \"Nix\",\n    \"import\": () => import('@shikijs/langs/nix')\n  },\n  {\n    \"id\": \"nushell\",\n    \"name\": \"nushell\",\n    \"aliases\": [\n      \"nu\"\n    ],\n    \"import\": () => import('@shikijs/langs/nushell')\n  },\n  {\n    \"id\": \"objective-c\",\n    \"name\": \"Objective-C\",\n    \"aliases\": [\n      \"objc\"\n    ],\n    \"import\": () => import('@shikijs/langs/objective-c')\n  },\n  {\n    \"id\": \"objective-cpp\",\n    \"name\": \"Objective-C++\",\n    \"import\": () => import('@shikijs/langs/objective-cpp')\n  },\n  {\n    \"id\": \"ocaml\",\n    \"name\": \"OCaml\",\n    \"import\": () => import('@shikijs/langs/ocaml')\n  },\n  {\n    \"id\": \"pascal\",\n    \"name\": \"Pascal\",\n    \"import\": () => import('@shikijs/langs/pascal')\n  },\n  {\n    \"id\": \"perl\",\n    \"name\": \"Perl\",\n    \"import\": () => import('@shikijs/langs/perl')\n  },\n  {\n    \"id\": \"php\",\n    \"name\": \"PHP\",\n    \"import\": () => import('@shikijs/langs/php')\n  },\n  {\n    \"id\": \"plsql\",\n    \"name\": \"PL/SQL\",\n    \"import\": () => import('@shikijs/langs/plsql')\n  },\n  {\n    \"id\": \"po\",\n    \"name\": \"Gettext PO\",\n    \"aliases\": [\n      \"pot\",\n      \"potx\"\n    ],\n    \"import\": () => import('@shikijs/langs/po')\n  },\n  {\n    \"id\": \"polar\",\n    \"name\": \"Polar\",\n    \"import\": () => import('@shikijs/langs/polar')\n  },\n  {\n    \"id\": \"postcss\",\n    \"name\": \"PostCSS\",\n    \"import\": () => import('@shikijs/langs/postcss')\n  },\n  {\n    \"id\": \"powerquery\",\n    \"name\": \"PowerQuery\",\n    \"import\": () => import('@shikijs/langs/powerquery')\n  },\n  {\n    \"id\": \"powershell\",\n    \"name\": \"PowerShell\",\n    \"aliases\": [\n      \"ps\",\n      \"ps1\"\n    ],\n    \"import\": () => import('@shikijs/langs/powershell')\n  },\n  {\n    \"id\": \"prisma\",\n    \"name\": \"Prisma\",\n    \"import\": () => import('@shikijs/langs/prisma')\n  },\n  {\n    \"id\": \"prolog\",\n    \"name\": \"Prolog\",\n    \"import\": () => import('@shikijs/langs/prolog')\n  },\n  {\n    \"id\": \"proto\",\n    \"name\": \"Protocol Buffer 3\",\n    \"aliases\": [\n      \"protobuf\"\n    ],\n    \"import\": () => import('@shikijs/langs/proto')\n  },\n  {\n    \"id\": \"pug\",\n    \"name\": \"Pug\",\n    \"aliases\": [\n      \"jade\"\n    ],\n    \"import\": () => import('@shikijs/langs/pug')\n  },\n  {\n    \"id\": \"puppet\",\n    \"name\": \"Puppet\",\n    \"import\": () => import('@shikijs/langs/puppet')\n  },\n  {\n    \"id\": \"purescript\",\n    \"name\": \"PureScript\",\n    \"import\": () => import('@shikijs/langs/purescript')\n  },\n  {\n    \"id\": \"python\",\n    \"name\": \"Python\",\n    \"aliases\": [\n      \"py\"\n    ],\n    \"import\": () => import('@shikijs/langs/python')\n  },\n  {\n    \"id\": \"qml\",\n    \"name\": \"QML\",\n    \"import\": () => import('@shikijs/langs/qml')\n  },\n  {\n    \"id\": \"qmldir\",\n    \"name\": \"QML Directory\",\n    \"import\": () => import('@shikijs/langs/qmldir')\n  },\n  {\n    \"id\": \"qss\",\n    \"name\": \"Qt Style Sheets\",\n    \"import\": () => import('@shikijs/langs/qss')\n  },\n  {\n    \"id\": \"r\",\n    \"name\": \"R\",\n    \"import\": () => import('@shikijs/langs/r')\n  },\n  {\n    \"id\": \"racket\",\n    \"name\": \"Racket\",\n    \"import\": () => import('@shikijs/langs/racket')\n  },\n  {\n    \"id\": \"raku\",\n    \"name\": \"Raku\",\n    \"aliases\": [\n      \"perl6\"\n    ],\n    \"import\": () => import('@shikijs/langs/raku')\n  },\n  {\n    \"id\": \"razor\",\n    \"name\": \"ASP.NET Razor\",\n    \"import\": () => import('@shikijs/langs/razor')\n  },\n  {\n    \"id\": \"reg\",\n    \"name\": \"Windows Registry Script\",\n    \"import\": () => import('@shikijs/langs/reg')\n  },\n  {\n    \"id\": \"regexp\",\n    \"name\": \"RegExp\",\n    \"aliases\": [\n      \"regex\"\n    ],\n    \"import\": () => import('@shikijs/langs/regexp')\n  },\n  {\n    \"id\": \"rel\",\n    \"name\": \"Rel\",\n    \"import\": () => import('@shikijs/langs/rel')\n  },\n  {\n    \"id\": \"riscv\",\n    \"name\": \"RISC-V\",\n    \"import\": () => import('@shikijs/langs/riscv')\n  },\n  {\n    \"id\": \"rst\",\n    \"name\": \"reStructuredText\",\n    \"import\": () => import('@shikijs/langs/rst')\n  },\n  {\n    \"id\": \"ruby\",\n    \"name\": \"Ruby\",\n    \"aliases\": [\n      \"rb\"\n    ],\n    \"import\": () => import('@shikijs/langs/ruby')\n  },\n  {\n    \"id\": \"rust\",\n    \"name\": \"Rust\",\n    \"aliases\": [\n      \"rs\"\n    ],\n    \"import\": () => import('@shikijs/langs/rust')\n  },\n  {\n    \"id\": \"sas\",\n    \"name\": \"SAS\",\n    \"import\": () => import('@shikijs/langs/sas')\n  },\n  {\n    \"id\": \"sass\",\n    \"name\": \"Sass\",\n    \"import\": () => import('@shikijs/langs/sass')\n  },\n  {\n    \"id\": \"scala\",\n    \"name\": \"Scala\",\n    \"import\": () => import('@shikijs/langs/scala')\n  },\n  {\n    \"id\": \"scheme\",\n    \"name\": \"Scheme\",\n    \"import\": () => import('@shikijs/langs/scheme')\n  },\n  {\n    \"id\": \"scss\",\n    \"name\": \"SCSS\",\n    \"import\": () => import('@shikijs/langs/scss')\n  },\n  {\n    \"id\": \"sdbl\",\n    \"name\": \"1C (Query)\",\n    \"aliases\": [\n      \"1c-query\"\n    ],\n    \"import\": () => import('@shikijs/langs/sdbl')\n  },\n  {\n    \"id\": \"shaderlab\",\n    \"name\": \"ShaderLab\",\n    \"aliases\": [\n      \"shader\"\n    ],\n    \"import\": () => import('@shikijs/langs/shaderlab')\n  },\n  {\n    \"id\": \"shellscript\",\n    \"name\": \"Shell\",\n    \"aliases\": [\n      \"bash\",\n      \"sh\",\n      \"shell\",\n      \"zsh\"\n    ],\n    \"import\": () => import('@shikijs/langs/shellscript')\n  },\n  {\n    \"id\": \"shellsession\",\n    \"name\": \"Shell Session\",\n    \"aliases\": [\n      \"console\"\n    ],\n    \"import\": () => import('@shikijs/langs/shellsession')\n  },\n  {\n    \"id\": \"smalltalk\",\n    \"name\": \"Smalltalk\",\n    \"import\": () => import('@shikijs/langs/smalltalk')\n  },\n  {\n    \"id\": \"solidity\",\n    \"name\": \"Solidity\",\n    \"import\": () => import('@shikijs/langs/solidity')\n  },\n  {\n    \"id\": \"soy\",\n    \"name\": \"Closure Templates\",\n    \"aliases\": [\n      \"closure-templates\"\n    ],\n    \"import\": () => import('@shikijs/langs/soy')\n  },\n  {\n    \"id\": \"sparql\",\n    \"name\": \"SPARQL\",\n    \"import\": () => import('@shikijs/langs/sparql')\n  },\n  {\n    \"id\": \"splunk\",\n    \"name\": \"Splunk Query Language\",\n    \"aliases\": [\n      \"spl\"\n    ],\n    \"import\": () => import('@shikijs/langs/splunk')\n  },\n  {\n    \"id\": \"sql\",\n    \"name\": \"SQL\",\n    \"import\": () => import('@shikijs/langs/sql')\n  },\n  {\n    \"id\": \"ssh-config\",\n    \"name\": \"SSH Config\",\n    \"import\": () => import('@shikijs/langs/ssh-config')\n  },\n  {\n    \"id\": \"stata\",\n    \"name\": \"Stata\",\n    \"import\": () => import('@shikijs/langs/stata')\n  },\n  {\n    \"id\": \"stylus\",\n    \"name\": \"Stylus\",\n    \"aliases\": [\n      \"styl\"\n    ],\n    \"import\": () => import('@shikijs/langs/stylus')\n  },\n  {\n    \"id\": \"svelte\",\n    \"name\": \"Svelte\",\n    \"import\": () => import('@shikijs/langs/svelte')\n  },\n  {\n    \"id\": \"swift\",\n    \"name\": \"Swift\",\n    \"import\": () => import('@shikijs/langs/swift')\n  },\n  {\n    \"id\": \"system-verilog\",\n    \"name\": \"SystemVerilog\",\n    \"import\": () => import('@shikijs/langs/system-verilog')\n  },\n  {\n    \"id\": \"systemd\",\n    \"name\": \"Systemd Units\",\n    \"import\": () => import('@shikijs/langs/systemd')\n  },\n  {\n    \"id\": \"talonscript\",\n    \"name\": \"TalonScript\",\n    \"aliases\": [\n      \"talon\"\n    ],\n    \"import\": () => import('@shikijs/langs/talonscript')\n  },\n  {\n    \"id\": \"tasl\",\n    \"name\": \"Tasl\",\n    \"import\": () => import('@shikijs/langs/tasl')\n  },\n  {\n    \"id\": \"tcl\",\n    \"name\": \"Tcl\",\n    \"import\": () => import('@shikijs/langs/tcl')\n  },\n  {\n    \"id\": \"templ\",\n    \"name\": \"Templ\",\n    \"import\": () => import('@shikijs/langs/templ')\n  },\n  {\n    \"id\": \"terraform\",\n    \"name\": \"Terraform\",\n    \"aliases\": [\n      \"tf\",\n      \"tfvars\"\n    ],\n    \"import\": () => import('@shikijs/langs/terraform')\n  },\n  {\n    \"id\": \"tex\",\n    \"name\": \"TeX\",\n    \"import\": () => import('@shikijs/langs/tex')\n  },\n  {\n    \"id\": \"toml\",\n    \"name\": \"TOML\",\n    \"import\": () => import('@shikijs/langs/toml')\n  },\n  {\n    \"id\": \"ts-tags\",\n    \"name\": \"TypeScript with Tags\",\n    \"aliases\": [\n      \"lit\"\n    ],\n    \"import\": () => import('@shikijs/langs/ts-tags')\n  },\n  {\n    \"id\": \"tsv\",\n    \"name\": \"TSV\",\n    \"import\": () => import('@shikijs/langs/tsv')\n  },\n  {\n    \"id\": \"tsx\",\n    \"name\": \"TSX\",\n    \"import\": () => import('@shikijs/langs/tsx')\n  },\n  {\n    \"id\": \"turtle\",\n    \"name\": \"Turtle\",\n    \"import\": () => import('@shikijs/langs/turtle')\n  },\n  {\n    \"id\": \"twig\",\n    \"name\": \"Twig\",\n    \"import\": () => import('@shikijs/langs/twig')\n  },\n  {\n    \"id\": \"typescript\",\n    \"name\": \"TypeScript\",\n    \"aliases\": [\n      \"ts\"\n    ],\n    \"import\": () => import('@shikijs/langs/typescript')\n  },\n  {\n    \"id\": \"typespec\",\n    \"name\": \"TypeSpec\",\n    \"aliases\": [\n      \"tsp\"\n    ],\n    \"import\": () => import('@shikijs/langs/typespec')\n  },\n  {\n    \"id\": \"typst\",\n    \"name\": \"Typst\",\n    \"aliases\": [\n      \"typ\"\n    ],\n    \"import\": () => import('@shikijs/langs/typst')\n  },\n  {\n    \"id\": \"v\",\n    \"name\": \"V\",\n    \"import\": () => import('@shikijs/langs/v')\n  },\n  {\n    \"id\": \"vala\",\n    \"name\": \"Vala\",\n    \"import\": () => import('@shikijs/langs/vala')\n  },\n  {\n    \"id\": \"vb\",\n    \"name\": \"Visual Basic\",\n    \"aliases\": [\n      \"cmd\"\n    ],\n    \"import\": () => import('@shikijs/langs/vb')\n  },\n  {\n    \"id\": \"verilog\",\n    \"name\": \"Verilog\",\n    \"import\": () => import('@shikijs/langs/verilog')\n  },\n  {\n    \"id\": \"vhdl\",\n    \"name\": \"VHDL\",\n    \"import\": () => import('@shikijs/langs/vhdl')\n  },\n  {\n    \"id\": \"viml\",\n    \"name\": \"Vim Script\",\n    \"aliases\": [\n      \"vim\",\n      \"vimscript\"\n    ],\n    \"import\": () => import('@shikijs/langs/viml')\n  },\n  {\n    \"id\": \"vue\",\n    \"name\": \"Vue\",\n    \"import\": () => import('@shikijs/langs/vue')\n  },\n  {\n    \"id\": \"vue-html\",\n    \"name\": \"Vue HTML\",\n    \"import\": () => import('@shikijs/langs/vue-html')\n  },\n  {\n    \"id\": \"vue-vine\",\n    \"name\": \"Vue Vine\",\n    \"import\": () => import('@shikijs/langs/vue-vine')\n  },\n  {\n    \"id\": \"vyper\",\n    \"name\": \"Vyper\",\n    \"aliases\": [\n      \"vy\"\n    ],\n    \"import\": () => import('@shikijs/langs/vyper')\n  },\n  {\n    \"id\": \"wasm\",\n    \"name\": \"WebAssembly\",\n    \"import\": () => import('@shikijs/langs/wasm')\n  },\n  {\n    \"id\": \"wenyan\",\n    \"name\": \"Wenyan\",\n    \"aliases\": [\n      \"\\u6587\\u8A00\"\n    ],\n    \"import\": () => import('@shikijs/langs/wenyan')\n  },\n  {\n    \"id\": \"wgsl\",\n    \"name\": \"WGSL\",\n    \"import\": () => import('@shikijs/langs/wgsl')\n  },\n  {\n    \"id\": \"wikitext\",\n    \"name\": \"Wikitext\",\n    \"aliases\": [\n      \"mediawiki\",\n      \"wiki\"\n    ],\n    \"import\": () => import('@shikijs/langs/wikitext')\n  },\n  {\n    \"id\": \"wit\",\n    \"name\": \"WebAssembly Interface Types\",\n    \"import\": () => import('@shikijs/langs/wit')\n  },\n  {\n    \"id\": \"wolfram\",\n    \"name\": \"Wolfram\",\n    \"aliases\": [\n      \"wl\"\n    ],\n    \"import\": () => import('@shikijs/langs/wolfram')\n  },\n  {\n    \"id\": \"xml\",\n    \"name\": \"XML\",\n    \"import\": () => import('@shikijs/langs/xml')\n  },\n  {\n    \"id\": \"xsl\",\n    \"name\": \"XSL\",\n    \"import\": () => import('@shikijs/langs/xsl')\n  },\n  {\n    \"id\": \"yaml\",\n    \"name\": \"YAML\",\n    \"aliases\": [\n      \"yml\"\n    ],\n    \"import\": () => import('@shikijs/langs/yaml')\n  },\n  {\n    \"id\": \"zenscript\",\n    \"name\": \"ZenScript\",\n    \"import\": () => import('@shikijs/langs/zenscript')\n  },\n  {\n    \"id\": \"zig\",\n    \"name\": \"Zig\",\n    \"import\": () => import('@shikijs/langs/zig')\n  }\n];\nconst bundledLanguagesBase = Object.fromEntries(bundledLanguagesInfo.map((i) => [i.id, i.import]));\nconst bundledLanguagesAlias = Object.fromEntries(bundledLanguagesInfo.flatMap((i) => i.aliases?.map((a) => [a, i.import]) || []));\nconst bundledLanguages = {\n  ...bundledLanguagesBase,\n  ...bundledLanguagesAlias\n};\n\nexport { bundledLanguages, bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo };\n","const bundledThemesInfo = [\n  {\n    \"id\": \"andromeeda\",\n    \"displayName\": \"Andromeeda\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/andromeeda')\n  },\n  {\n    \"id\": \"aurora-x\",\n    \"displayName\": \"Aurora X\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/aurora-x')\n  },\n  {\n    \"id\": \"ayu-dark\",\n    \"displayName\": \"Ayu Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/ayu-dark')\n  },\n  {\n    \"id\": \"catppuccin-frappe\",\n    \"displayName\": \"Catppuccin Frapp\\xE9\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/catppuccin-frappe')\n  },\n  {\n    \"id\": \"catppuccin-latte\",\n    \"displayName\": \"Catppuccin Latte\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/catppuccin-latte')\n  },\n  {\n    \"id\": \"catppuccin-macchiato\",\n    \"displayName\": \"Catppuccin Macchiato\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/catppuccin-macchiato')\n  },\n  {\n    \"id\": \"catppuccin-mocha\",\n    \"displayName\": \"Catppuccin Mocha\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/catppuccin-mocha')\n  },\n  {\n    \"id\": \"dark-plus\",\n    \"displayName\": \"Dark Plus\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/dark-plus')\n  },\n  {\n    \"id\": \"dracula\",\n    \"displayName\": \"Dracula Theme\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/dracula')\n  },\n  {\n    \"id\": \"dracula-soft\",\n    \"displayName\": \"Dracula Theme Soft\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/dracula-soft')\n  },\n  {\n    \"id\": \"everforest-dark\",\n    \"displayName\": \"Everforest Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/everforest-dark')\n  },\n  {\n    \"id\": \"everforest-light\",\n    \"displayName\": \"Everforest Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/everforest-light')\n  },\n  {\n    \"id\": \"github-dark\",\n    \"displayName\": \"GitHub Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/github-dark')\n  },\n  {\n    \"id\": \"github-dark-default\",\n    \"displayName\": \"GitHub Dark Default\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/github-dark-default')\n  },\n  {\n    \"id\": \"github-dark-dimmed\",\n    \"displayName\": \"GitHub Dark Dimmed\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/github-dark-dimmed')\n  },\n  {\n    \"id\": \"github-dark-high-contrast\",\n    \"displayName\": \"GitHub Dark High Contrast\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/github-dark-high-contrast')\n  },\n  {\n    \"id\": \"github-light\",\n    \"displayName\": \"GitHub Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/github-light')\n  },\n  {\n    \"id\": \"github-light-default\",\n    \"displayName\": \"GitHub Light Default\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/github-light-default')\n  },\n  {\n    \"id\": \"github-light-high-contrast\",\n    \"displayName\": \"GitHub Light High Contrast\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/github-light-high-contrast')\n  },\n  {\n    \"id\": \"gruvbox-dark-hard\",\n    \"displayName\": \"Gruvbox Dark Hard\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/gruvbox-dark-hard')\n  },\n  {\n    \"id\": \"gruvbox-dark-medium\",\n    \"displayName\": \"Gruvbox Dark Medium\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/gruvbox-dark-medium')\n  },\n  {\n    \"id\": \"gruvbox-dark-soft\",\n    \"displayName\": \"Gruvbox Dark Soft\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/gruvbox-dark-soft')\n  },\n  {\n    \"id\": \"gruvbox-light-hard\",\n    \"displayName\": \"Gruvbox Light Hard\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/gruvbox-light-hard')\n  },\n  {\n    \"id\": \"gruvbox-light-medium\",\n    \"displayName\": \"Gruvbox Light Medium\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/gruvbox-light-medium')\n  },\n  {\n    \"id\": \"gruvbox-light-soft\",\n    \"displayName\": \"Gruvbox Light Soft\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/gruvbox-light-soft')\n  },\n  {\n    \"id\": \"houston\",\n    \"displayName\": \"Houston\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/houston')\n  },\n  {\n    \"id\": \"kanagawa-dragon\",\n    \"displayName\": \"Kanagawa Dragon\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/kanagawa-dragon')\n  },\n  {\n    \"id\": \"kanagawa-lotus\",\n    \"displayName\": \"Kanagawa Lotus\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/kanagawa-lotus')\n  },\n  {\n    \"id\": \"kanagawa-wave\",\n    \"displayName\": \"Kanagawa Wave\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/kanagawa-wave')\n  },\n  {\n    \"id\": \"laserwave\",\n    \"displayName\": \"LaserWave\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/laserwave')\n  },\n  {\n    \"id\": \"light-plus\",\n    \"displayName\": \"Light Plus\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/light-plus')\n  },\n  {\n    \"id\": \"material-theme\",\n    \"displayName\": \"Material Theme\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/material-theme')\n  },\n  {\n    \"id\": \"material-theme-darker\",\n    \"displayName\": \"Material Theme Darker\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/material-theme-darker')\n  },\n  {\n    \"id\": \"material-theme-lighter\",\n    \"displayName\": \"Material Theme Lighter\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/material-theme-lighter')\n  },\n  {\n    \"id\": \"material-theme-ocean\",\n    \"displayName\": \"Material Theme Ocean\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/material-theme-ocean')\n  },\n  {\n    \"id\": \"material-theme-palenight\",\n    \"displayName\": \"Material Theme Palenight\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/material-theme-palenight')\n  },\n  {\n    \"id\": \"min-dark\",\n    \"displayName\": \"Min Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/min-dark')\n  },\n  {\n    \"id\": \"min-light\",\n    \"displayName\": \"Min Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/min-light')\n  },\n  {\n    \"id\": \"monokai\",\n    \"displayName\": \"Monokai\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/monokai')\n  },\n  {\n    \"id\": \"night-owl\",\n    \"displayName\": \"Night Owl\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/night-owl')\n  },\n  {\n    \"id\": \"nord\",\n    \"displayName\": \"Nord\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/nord')\n  },\n  {\n    \"id\": \"one-dark-pro\",\n    \"displayName\": \"One Dark Pro\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/one-dark-pro')\n  },\n  {\n    \"id\": \"one-light\",\n    \"displayName\": \"One Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/one-light')\n  },\n  {\n    \"id\": \"plastic\",\n    \"displayName\": \"Plastic\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/plastic')\n  },\n  {\n    \"id\": \"poimandres\",\n    \"displayName\": \"Poimandres\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/poimandres')\n  },\n  {\n    \"id\": \"red\",\n    \"displayName\": \"Red\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/red')\n  },\n  {\n    \"id\": \"rose-pine\",\n    \"displayName\": \"Ros\\xE9 Pine\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/rose-pine')\n  },\n  {\n    \"id\": \"rose-pine-dawn\",\n    \"displayName\": \"Ros\\xE9 Pine Dawn\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/rose-pine-dawn')\n  },\n  {\n    \"id\": \"rose-pine-moon\",\n    \"displayName\": \"Ros\\xE9 Pine Moon\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/rose-pine-moon')\n  },\n  {\n    \"id\": \"slack-dark\",\n    \"displayName\": \"Slack Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/slack-dark')\n  },\n  {\n    \"id\": \"slack-ochin\",\n    \"displayName\": \"Slack Ochin\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/slack-ochin')\n  },\n  {\n    \"id\": \"snazzy-light\",\n    \"displayName\": \"Snazzy Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/snazzy-light')\n  },\n  {\n    \"id\": \"solarized-dark\",\n    \"displayName\": \"Solarized Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/solarized-dark')\n  },\n  {\n    \"id\": \"solarized-light\",\n    \"displayName\": \"Solarized Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/solarized-light')\n  },\n  {\n    \"id\": \"synthwave-84\",\n    \"displayName\": \"Synthwave '84\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/synthwave-84')\n  },\n  {\n    \"id\": \"tokyo-night\",\n    \"displayName\": \"Tokyo Night\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/tokyo-night')\n  },\n  {\n    \"id\": \"vesper\",\n    \"displayName\": \"Vesper\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/vesper')\n  },\n  {\n    \"id\": \"vitesse-black\",\n    \"displayName\": \"Vitesse Black\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/vitesse-black')\n  },\n  {\n    \"id\": \"vitesse-dark\",\n    \"displayName\": \"Vitesse Dark\",\n    \"type\": \"dark\",\n    \"import\": () => import('@shikijs/themes/vitesse-dark')\n  },\n  {\n    \"id\": \"vitesse-light\",\n    \"displayName\": \"Vitesse Light\",\n    \"type\": \"light\",\n    \"import\": () => import('@shikijs/themes/vitesse-light')\n  }\n];\nconst bundledThemes = Object.fromEntries(bundledThemesInfo.map((i) => [i.id, i.import]));\n\nexport { bundledThemes, bundledThemesInfo };\n","class ShikiError extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"ShikiError\";\n  }\n}\n\nfunction getHeapMax() {\n  return 2147483648;\n}\nfunction _emscripten_get_now() {\n  return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\nconst alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\nasync function main(init) {\n  let wasmMemory;\n  let buffer;\n  const binding = {};\n  function updateGlobalBufferAndViews(buf) {\n    buffer = buf;\n    binding.HEAPU8 = new Uint8Array(buf);\n    binding.HEAPU32 = new Uint32Array(buf);\n  }\n  function _emscripten_memcpy_big(dest, src, num) {\n    binding.HEAPU8.copyWithin(dest, src, src + num);\n  }\n  function emscripten_realloc_buffer(size) {\n    try {\n      wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);\n      updateGlobalBufferAndViews(wasmMemory.buffer);\n      return 1;\n    } catch {\n    }\n  }\n  function _emscripten_resize_heap(requestedSize) {\n    const oldSize = binding.HEAPU8.length;\n    requestedSize = requestedSize >>> 0;\n    const maxHeapSize = getHeapMax();\n    if (requestedSize > maxHeapSize)\n      return false;\n    for (let cutDown = 1; cutDown <= 4; cutDown *= 2) {\n      let overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n      overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n      const newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n      const replacement = emscripten_realloc_buffer(newSize);\n      if (replacement)\n        return true;\n    }\n    return false;\n  }\n  const UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : void 0;\n  function UTF8ArrayToString(heapOrArray, idx, maxBytesToRead = 1024) {\n    const endIdx = idx + maxBytesToRead;\n    let endPtr = idx;\n    while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n    if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n      return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n    }\n    let str = \"\";\n    while (idx < endPtr) {\n      let u0 = heapOrArray[idx++];\n      if (!(u0 & 128)) {\n        str += String.fromCharCode(u0);\n        continue;\n      }\n      const u1 = heapOrArray[idx++] & 63;\n      if ((u0 & 224) === 192) {\n        str += String.fromCharCode((u0 & 31) << 6 | u1);\n        continue;\n      }\n      const u2 = heapOrArray[idx++] & 63;\n      if ((u0 & 240) === 224) {\n        u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n      } else {\n        u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n      }\n      if (u0 < 65536) {\n        str += String.fromCharCode(u0);\n      } else {\n        const ch = u0 - 65536;\n        str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n      }\n    }\n    return str;\n  }\n  function UTF8ToString(ptr, maxBytesToRead) {\n    return ptr ? UTF8ArrayToString(binding.HEAPU8, ptr, maxBytesToRead) : \"\";\n  }\n  const asmLibraryArg = {\n    emscripten_get_now: _emscripten_get_now,\n    emscripten_memcpy_big: _emscripten_memcpy_big,\n    emscripten_resize_heap: _emscripten_resize_heap,\n    fd_write: () => 0\n  };\n  async function createWasm() {\n    const info = {\n      env: asmLibraryArg,\n      wasi_snapshot_preview1: asmLibraryArg\n    };\n    const exports = await init(info);\n    wasmMemory = exports.memory;\n    updateGlobalBufferAndViews(wasmMemory.buffer);\n    Object.assign(binding, exports);\n    binding.UTF8ToString = UTF8ToString;\n  }\n  await createWasm();\n  return binding;\n}\n\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nlet onigBinding = null;\nfunction throwLastOnigError(onigBinding2) {\n  throw new ShikiError(onigBinding2.UTF8ToString(onigBinding2.getLastOnigError()));\n}\nclass UtfString {\n  constructor(str) {\n    __publicField(this, \"utf16Length\");\n    __publicField(this, \"utf8Length\");\n    __publicField(this, \"utf16Value\");\n    __publicField(this, \"utf8Value\");\n    __publicField(this, \"utf16OffsetToUtf8\");\n    __publicField(this, \"utf8OffsetToUtf16\");\n    const utf16Length = str.length;\n    const utf8Length = UtfString._utf8ByteLength(str);\n    const computeIndicesMapping = utf8Length !== utf16Length;\n    const utf16OffsetToUtf8 = computeIndicesMapping ? new Uint32Array(utf16Length + 1) : null;\n    if (computeIndicesMapping)\n      utf16OffsetToUtf8[utf16Length] = utf8Length;\n    const utf8OffsetToUtf16 = computeIndicesMapping ? new Uint32Array(utf8Length + 1) : null;\n    if (computeIndicesMapping)\n      utf8OffsetToUtf16[utf8Length] = utf16Length;\n    const utf8Value = new Uint8Array(utf8Length);\n    let i8 = 0;\n    for (let i16 = 0; i16 < utf16Length; i16++) {\n      const charCode = str.charCodeAt(i16);\n      let codePoint = charCode;\n      let wasSurrogatePair = false;\n      if (charCode >= 55296 && charCode <= 56319) {\n        if (i16 + 1 < utf16Length) {\n          const nextCharCode = str.charCodeAt(i16 + 1);\n          if (nextCharCode >= 56320 && nextCharCode <= 57343) {\n            codePoint = (charCode - 55296 << 10) + 65536 | nextCharCode - 56320;\n            wasSurrogatePair = true;\n          }\n        }\n      }\n      if (computeIndicesMapping) {\n        utf16OffsetToUtf8[i16] = i8;\n        if (wasSurrogatePair)\n          utf16OffsetToUtf8[i16 + 1] = i8;\n        if (codePoint <= 127) {\n          utf8OffsetToUtf16[i8 + 0] = i16;\n        } else if (codePoint <= 2047) {\n          utf8OffsetToUtf16[i8 + 0] = i16;\n          utf8OffsetToUtf16[i8 + 1] = i16;\n        } else if (codePoint <= 65535) {\n          utf8OffsetToUtf16[i8 + 0] = i16;\n          utf8OffsetToUtf16[i8 + 1] = i16;\n          utf8OffsetToUtf16[i8 + 2] = i16;\n        } else {\n          utf8OffsetToUtf16[i8 + 0] = i16;\n          utf8OffsetToUtf16[i8 + 1] = i16;\n          utf8OffsetToUtf16[i8 + 2] = i16;\n          utf8OffsetToUtf16[i8 + 3] = i16;\n        }\n      }\n      if (codePoint <= 127) {\n        utf8Value[i8++] = codePoint;\n      } else if (codePoint <= 2047) {\n        utf8Value[i8++] = 192 | (codePoint & 1984) >>> 6;\n        utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n      } else if (codePoint <= 65535) {\n        utf8Value[i8++] = 224 | (codePoint & 61440) >>> 12;\n        utf8Value[i8++] = 128 | (codePoint & 4032) >>> 6;\n        utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n      } else {\n        utf8Value[i8++] = 240 | (codePoint & 1835008) >>> 18;\n        utf8Value[i8++] = 128 | (codePoint & 258048) >>> 12;\n        utf8Value[i8++] = 128 | (codePoint & 4032) >>> 6;\n        utf8Value[i8++] = 128 | (codePoint & 63) >>> 0;\n      }\n      if (wasSurrogatePair)\n        i16++;\n    }\n    this.utf16Length = utf16Length;\n    this.utf8Length = utf8Length;\n    this.utf16Value = str;\n    this.utf8Value = utf8Value;\n    this.utf16OffsetToUtf8 = utf16OffsetToUtf8;\n    this.utf8OffsetToUtf16 = utf8OffsetToUtf16;\n  }\n  static _utf8ByteLength(str) {\n    let result = 0;\n    for (let i = 0, len = str.length; i < len; i++) {\n      const charCode = str.charCodeAt(i);\n      let codepoint = charCode;\n      let wasSurrogatePair = false;\n      if (charCode >= 55296 && charCode <= 56319) {\n        if (i + 1 < len) {\n          const nextCharCode = str.charCodeAt(i + 1);\n          if (nextCharCode >= 56320 && nextCharCode <= 57343) {\n            codepoint = (charCode - 55296 << 10) + 65536 | nextCharCode - 56320;\n            wasSurrogatePair = true;\n          }\n        }\n      }\n      if (codepoint <= 127)\n        result += 1;\n      else if (codepoint <= 2047)\n        result += 2;\n      else if (codepoint <= 65535)\n        result += 3;\n      else\n        result += 4;\n      if (wasSurrogatePair)\n        i++;\n    }\n    return result;\n  }\n  createString(onigBinding2) {\n    const result = onigBinding2.omalloc(this.utf8Length);\n    onigBinding2.HEAPU8.set(this.utf8Value, result);\n    return result;\n  }\n}\nconst _OnigString = class _OnigString {\n  constructor(str) {\n    __publicField(this, \"id\", ++_OnigString.LAST_ID);\n    __publicField(this, \"_onigBinding\");\n    __publicField(this, \"content\");\n    __publicField(this, \"utf16Length\");\n    __publicField(this, \"utf8Length\");\n    __publicField(this, \"utf16OffsetToUtf8\");\n    __publicField(this, \"utf8OffsetToUtf16\");\n    __publicField(this, \"ptr\");\n    if (!onigBinding)\n      throw new ShikiError(\"Must invoke loadWasm first.\");\n    this._onigBinding = onigBinding;\n    this.content = str;\n    const utfString = new UtfString(str);\n    this.utf16Length = utfString.utf16Length;\n    this.utf8Length = utfString.utf8Length;\n    this.utf16OffsetToUtf8 = utfString.utf16OffsetToUtf8;\n    this.utf8OffsetToUtf16 = utfString.utf8OffsetToUtf16;\n    if (this.utf8Length < 1e4 && !_OnigString._sharedPtrInUse) {\n      if (!_OnigString._sharedPtr)\n        _OnigString._sharedPtr = onigBinding.omalloc(1e4);\n      _OnigString._sharedPtrInUse = true;\n      onigBinding.HEAPU8.set(utfString.utf8Value, _OnigString._sharedPtr);\n      this.ptr = _OnigString._sharedPtr;\n    } else {\n      this.ptr = utfString.createString(onigBinding);\n    }\n  }\n  convertUtf8OffsetToUtf16(utf8Offset) {\n    if (this.utf8OffsetToUtf16) {\n      if (utf8Offset < 0)\n        return 0;\n      if (utf8Offset > this.utf8Length)\n        return this.utf16Length;\n      return this.utf8OffsetToUtf16[utf8Offset];\n    }\n    return utf8Offset;\n  }\n  convertUtf16OffsetToUtf8(utf16Offset) {\n    if (this.utf16OffsetToUtf8) {\n      if (utf16Offset < 0)\n        return 0;\n      if (utf16Offset > this.utf16Length)\n        return this.utf8Length;\n      return this.utf16OffsetToUtf8[utf16Offset];\n    }\n    return utf16Offset;\n  }\n  dispose() {\n    if (this.ptr === _OnigString._sharedPtr)\n      _OnigString._sharedPtrInUse = false;\n    else\n      this._onigBinding.ofree(this.ptr);\n  }\n};\n__publicField(_OnigString, \"LAST_ID\", 0);\n__publicField(_OnigString, \"_sharedPtr\", 0);\n// a pointer to a string of 10000 bytes\n__publicField(_OnigString, \"_sharedPtrInUse\", false);\nlet OnigString = _OnigString;\nclass OnigScanner {\n  constructor(patterns) {\n    __publicField(this, \"_onigBinding\");\n    __publicField(this, \"_ptr\");\n    if (!onigBinding)\n      throw new ShikiError(\"Must invoke loadWasm first.\");\n    const strPtrsArr = [];\n    const strLenArr = [];\n    for (let i = 0, len = patterns.length; i < len; i++) {\n      const utfString = new UtfString(patterns[i]);\n      strPtrsArr[i] = utfString.createString(onigBinding);\n      strLenArr[i] = utfString.utf8Length;\n    }\n    const strPtrsPtr = onigBinding.omalloc(4 * patterns.length);\n    onigBinding.HEAPU32.set(strPtrsArr, strPtrsPtr / 4);\n    const strLenPtr = onigBinding.omalloc(4 * patterns.length);\n    onigBinding.HEAPU32.set(strLenArr, strLenPtr / 4);\n    const scannerPtr = onigBinding.createOnigScanner(strPtrsPtr, strLenPtr, patterns.length);\n    for (let i = 0, len = patterns.length; i < len; i++)\n      onigBinding.ofree(strPtrsArr[i]);\n    onigBinding.ofree(strLenPtr);\n    onigBinding.ofree(strPtrsPtr);\n    if (scannerPtr === 0)\n      throwLastOnigError(onigBinding);\n    this._onigBinding = onigBinding;\n    this._ptr = scannerPtr;\n  }\n  dispose() {\n    this._onigBinding.freeOnigScanner(this._ptr);\n  }\n  findNextMatchSync(string, startPosition, arg) {\n    let options = 0 /* None */;\n    if (typeof arg === \"number\") {\n      options = arg;\n    }\n    if (typeof string === \"string\") {\n      string = new OnigString(string);\n      const result = this._findNextMatchSync(string, startPosition, false, options);\n      string.dispose();\n      return result;\n    }\n    return this._findNextMatchSync(string, startPosition, false, options);\n  }\n  _findNextMatchSync(string, startPosition, debugCall, options) {\n    const onigBinding2 = this._onigBinding;\n    const resultPtr = onigBinding2.findNextOnigScannerMatch(this._ptr, string.id, string.ptr, string.utf8Length, string.convertUtf16OffsetToUtf8(startPosition), options);\n    if (resultPtr === 0) {\n      return null;\n    }\n    const HEAPU32 = onigBinding2.HEAPU32;\n    let offset = resultPtr / 4;\n    const index = HEAPU32[offset++];\n    const count = HEAPU32[offset++];\n    const captureIndices = [];\n    for (let i = 0; i < count; i++) {\n      const beg = string.convertUtf8OffsetToUtf16(HEAPU32[offset++]);\n      const end = string.convertUtf8OffsetToUtf16(HEAPU32[offset++]);\n      captureIndices[i] = {\n        start: beg,\n        end,\n        length: end - beg\n      };\n    }\n    return {\n      index,\n      captureIndices\n    };\n  }\n}\nfunction isInstantiatorOptionsObject(dataOrOptions) {\n  return typeof dataOrOptions.instantiator === \"function\";\n}\nfunction isInstantiatorModule(dataOrOptions) {\n  return typeof dataOrOptions.default === \"function\";\n}\nfunction isDataOptionsObject(dataOrOptions) {\n  return typeof dataOrOptions.data !== \"undefined\";\n}\nfunction isResponse(dataOrOptions) {\n  return typeof Response !== \"undefined\" && dataOrOptions instanceof Response;\n}\nfunction isArrayBuffer(data) {\n  return typeof ArrayBuffer !== \"undefined\" && (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) || typeof Buffer !== \"undefined\" && Buffer.isBuffer?.(data) || typeof SharedArrayBuffer !== \"undefined\" && data instanceof SharedArrayBuffer || typeof Uint32Array !== \"undefined\" && data instanceof Uint32Array;\n}\nlet initPromise;\nfunction loadWasm(options) {\n  if (initPromise)\n    return initPromise;\n  async function _load() {\n    onigBinding = await main(async (info) => {\n      let instance = options;\n      instance = await instance;\n      if (typeof instance === \"function\")\n        instance = await instance(info);\n      if (typeof instance === \"function\")\n        instance = await instance(info);\n      if (isInstantiatorOptionsObject(instance)) {\n        instance = await instance.instantiator(info);\n      } else if (isInstantiatorModule(instance)) {\n        instance = await instance.default(info);\n      } else {\n        if (isDataOptionsObject(instance))\n          instance = instance.data;\n        if (isResponse(instance)) {\n          if (typeof WebAssembly.instantiateStreaming === \"function\")\n            instance = await _makeResponseStreamingLoader(instance)(info);\n          else\n            instance = await _makeResponseNonStreamingLoader(instance)(info);\n        } else if (isArrayBuffer(instance)) {\n          instance = await _makeArrayBufferLoader(instance)(info);\n        } else if (instance instanceof WebAssembly.Module) {\n          instance = await _makeArrayBufferLoader(instance)(info);\n        } else if (\"default\" in instance && instance.default instanceof WebAssembly.Module) {\n          instance = await _makeArrayBufferLoader(instance.default)(info);\n        }\n      }\n      if (\"instance\" in instance)\n        instance = instance.instance;\n      if (\"exports\" in instance)\n        instance = instance.exports;\n      return instance;\n    });\n  }\n  initPromise = _load();\n  return initPromise;\n}\nfunction _makeArrayBufferLoader(data) {\n  return (importObject) => WebAssembly.instantiate(data, importObject);\n}\nfunction _makeResponseStreamingLoader(data) {\n  return (importObject) => WebAssembly.instantiateStreaming(data, importObject);\n}\nfunction _makeResponseNonStreamingLoader(data) {\n  return async (importObject) => {\n    const arrayBuffer = await data.arrayBuffer();\n    return WebAssembly.instantiate(arrayBuffer, importObject);\n  };\n}\n\nlet _defaultWasmLoader;\nfunction setDefaultWasmLoader(_loader) {\n  _defaultWasmLoader = _loader;\n}\nfunction getDefaultWasmLoader() {\n  return _defaultWasmLoader;\n}\nasync function createOnigurumaEngine(options) {\n  if (options)\n    await loadWasm(options);\n  return {\n    createScanner(patterns) {\n      return new OnigScanner(patterns.map((p) => typeof p === \"string\" ? p : p.source));\n    },\n    createString(s) {\n      return new OnigString(s);\n    }\n  };\n}\n\nexport { createOnigurumaEngine, getDefaultWasmLoader, loadWasm, setDefaultWasmLoader };\n","import { createSingletonShorthands, createdBundledHighlighter, guessEmbeddedLanguages } from '@shikijs/core';\nexport * from '@shikijs/core';\nimport { bundledLanguages } from './langs.mjs';\nexport { bundledLanguagesAlias, bundledLanguagesBase, bundledLanguagesInfo } from './langs.mjs';\nimport { bundledThemes } from './themes.mjs';\nexport { bundledThemesInfo } from './themes.mjs';\nimport { createOnigurumaEngine } from '@shikijs/engine-oniguruma';\n\nconst createHighlighter = /* @__PURE__ */ createdBundledHighlighter({\n  langs: bundledLanguages,\n  themes: bundledThemes,\n  engine: () => createOnigurumaEngine(import('shiki/wasm'))\n});\nconst {\n  codeToHtml,\n  codeToHast,\n  codeToTokens,\n  codeToTokensBase,\n  codeToTokensWithThemes,\n  getSingletonHighlighter,\n  getLastGrammarState\n} = /* @__PURE__ */ createSingletonShorthands(\n  createHighlighter,\n  { guessEmbeddedLanguages }\n);\n\nexport { bundledLanguages, bundledThemes, codeToHast, codeToHtml, codeToTokens, codeToTokensBase, codeToTokensWithThemes, createHighlighter, getLastGrammarState, getSingletonHighlighter };\n","import type { BundledLanguage } from \"shiki\"\n\nimport { cached } from \"./cache\"\nimport { createHighlighter } from \"shiki\"\n\nexport const getHighlighter = cached(async (lang: BundledLanguage) => {\n  const highlighter = await createHighlighter({ themes: [\"vesper\"], langs: [lang] })\n  return cached((code: string) => {\n    return highlighter.codeToHtml(code, { lang, theme: \"vesper\" })\n  })\n})\n","<script lang=\"ts\">\n  import type { BundledLanguage } from \"shiki\"\n\n  import { getHighlighter } from \"./utils/highlight\"\n\n  const { source, lang }: { source: string, lang: BundledLanguage } = $props()\n\n  const highlighter = getHighlighter(lang) as unknown as ReturnType<typeof getHighlighter> | Awaited<ReturnType<typeof getHighlighter>>\n</script>\n\n<code class=\"text-xs line-height-relaxed [&_*]:(font-mono outline-none) [&>pre]:!bg-transparent\">\n\n  {#if highlighter instanceof Promise}\n    {#await highlighter}\n      <pre>{source}</pre>\n    {:then highlight}\n      {@html highlight(source)}\n    {/await}\n  {:else}\n    {@html highlighter(source)}\n  {/if}\n\n</code>\n","import { cached } from \"./cache\"\n\nexport const getBody = cached((htmlString: string) => {\n  const dom = new DOMParser().parseFromString(htmlString, \"text/html\")\n  return dom.body.innerHTML\n})\n","function objectEncodeAndDecodeOptions(defaultValue) {\n    const encode_and_decode = {\n        encode: (value) => JSON.stringify(value),\n        decode: (value) => {\n            if (value === null)\n                return null;\n            try {\n                return JSON.parse(value);\n            }\n            catch {\n                return null;\n            }\n        },\n        defaultValue,\n    };\n    function curry_equality(equality_fn) {\n        return { ...encode_and_decode, equalityFn: equality_fn };\n    }\n    return Object.assign(curry_equality, encode_and_decode);\n}\nfunction arrayEncodeAndDecodeOptions(defaultValue) {\n    const encode_and_decode = {\n        encode: (value) => JSON.stringify(value),\n        decode: (value) => {\n            if (value === null)\n                return null;\n            try {\n                return JSON.parse(value);\n            }\n            catch {\n                return null;\n            }\n        },\n        defaultValue,\n    };\n    function curry_equality(equality_fn) {\n        return { ...encode_and_decode, equalityFn: equality_fn };\n    }\n    return Object.assign(curry_equality, encode_and_decode);\n}\nexport { objectEncodeAndDecodeOptions, arrayEncodeAndDecodeOptions };\n","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n \nlet f = String.fromCharCode,\n\tkeyStrUriSafe =\n\t\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$',\n\tbaseReverseDic = {};\nfunction getBaseValue(o, e) {\n\tif (!baseReverseDic[o]) {\n\t\tbaseReverseDic[o] = {};\n\t\tfor (let r = 0; r < o.length; r++) baseReverseDic[o][o.charAt(r)] = r;\n\t}\n\treturn baseReverseDic[o][e];\n}\nfunction compressToEncodedURIComponent(o) {\n\treturn null == o\n\t\t? ''\n\t\t: _compress(o, 6, function (o) {\n\t\t\t\treturn keyStrUriSafe.charAt(o);\n\t\t\t});\n}\nfunction decompressFromEncodedURIComponent(o) {\n\treturn null == o\n\t\t? ''\n\t\t: '' == o\n\t\t\t? null\n\t\t\t: _decompress((o = o.replace(/ /g, '+')).length, 32, function (e) {\n\t\t\t\t\treturn getBaseValue(keyStrUriSafe, o.charAt(e));\n\t\t\t\t});\n}\nfunction _compress(o, e, r) {\n\tif (null == o) return '';\n\tlet i,\n\t\tt,\n\t\ts = {},\n\t\tn = {},\n\t\t$ = '',\n\t\t_ = '',\n\t\tp = '',\n\t\ta = 2,\n\t\tl = 3,\n\t\tc = 2,\n\t\tu = [],\n\t\th = 0,\n\t\td = 0,\n\t\tv;\n\tfor (v = 0; v < o.length; v += 1)\n\t\tif (\n\t\t\t(($ = o.charAt(v)),\n\t\t\tObject.prototype.hasOwnProperty.call(s, $) ||\n\t\t\t\t((s[$] = l++), (n[$] = !0)),\n\t\t\t(_ = p + $),\n\t\t\tObject.prototype.hasOwnProperty.call(s, _))\n\t\t)\n\t\t\tp = _;\n\t\telse {\n\t\t\tif (Object.prototype.hasOwnProperty.call(n, p)) {\n\t\t\t\tif (256 > p.charCodeAt(0)) {\n\t\t\t\t\tfor (i = 0; i < c; i++)\n\t\t\t\t\t\t(h <<= 1),\n\t\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++;\n\t\t\t\t\tfor (i = 0, t = p.charCodeAt(0); i < 8; i++)\n\t\t\t\t\t\t(h = (h << 1) | (1 & t)),\n\t\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t\t(t >>= 1);\n\t\t\t\t} else {\n\t\t\t\t\tfor (i = 0, t = 1; i < c; i++)\n\t\t\t\t\t\t(h = (h << 1) | t),\n\t\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t\t(t = 0);\n\t\t\t\t\tfor (i = 0, t = p.charCodeAt(0); i < 16; i++)\n\t\t\t\t\t\t(h = (h << 1) | (1 & t)),\n\t\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t\t(t >>= 1);\n\t\t\t\t}\n\t\t\t\t0 == --a && ((a = Math.pow(2, c)), c++), delete n[p];\n\t\t\t} else\n\t\t\t\tfor (i = 0, t = s[p]; i < c; i++)\n\t\t\t\t\t(h = (h << 1) | (1 & t)),\n\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t(t >>= 1);\n\t\t\t0 == --a && ((a = Math.pow(2, c)), c++),\n\t\t\t\t(s[_] = l++),\n\t\t\t\t(p = String($));\n\t\t}\n\tif ('' !== p) {\n\t\tif (Object.prototype.hasOwnProperty.call(n, p)) {\n\t\t\tif (256 > p.charCodeAt(0)) {\n\t\t\t\tfor (i = 0; i < c; i++)\n\t\t\t\t\t(h <<= 1),\n\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++;\n\t\t\t\tfor (i = 0, t = p.charCodeAt(0); i < 8; i++)\n\t\t\t\t\t(h = (h << 1) | (1 & t)),\n\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t(t >>= 1);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, t = 1; i < c; i++)\n\t\t\t\t\t(h = (h << 1) | t),\n\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t(t = 0);\n\t\t\t\tfor (i = 0, t = p.charCodeAt(0); i < 16; i++)\n\t\t\t\t\t(h = (h << 1) | (1 & t)),\n\t\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t\t(t >>= 1);\n\t\t\t}\n\t\t\t0 == --a && ((a = Math.pow(2, c)), c++), delete n[p];\n\t\t} else\n\t\t\tfor (i = 0, t = s[p]; i < c; i++)\n\t\t\t\t(h = (h << 1) | (1 & t)),\n\t\t\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t\t\t(t >>= 1);\n\t\t0 == --a && ((a = Math.pow(2, c)), c++);\n\t}\n\tfor (i = 0, t = 2; i < c; i++)\n\t\t(h = (h << 1) | (1 & t)),\n\t\t\td == e - 1 ? ((d = 0), u.push(r(h)), (h = 0)) : d++,\n\t\t\t(t >>= 1);\n\tfor (;;) {\n\t\tif (((h <<= 1), d == e - 1)) {\n\t\t\tu.push(r(h));\n\t\t\tbreak;\n\t\t}\n\t\td++;\n\t}\n\treturn u.join('');\n}\nfunction _decompress(o, e, r) {\n\tlet i = [],\n\t\tt,\n\t\ts = 4,\n\t\tn = 4,\n\t\t$ = 3,\n\t\t_ = '',\n\t\tp = [],\n\t\ta,\n\t\tl,\n\t\tc,\n\t\tu,\n\t\th,\n\t\td,\n\t\tv,\n\t\tm = { val: r(0), position: e, index: 1 };\n\tfor (a = 0; a < 3; a += 1) i[a] = a;\n\tfor (c = 0, h = 4, d = 1; d != h; )\n\t\t(u = m.val & m.position),\n\t\t\t(m.position >>= 1),\n\t\t\t0 == m.position && ((m.position = e), (m.val = r(m.index++))),\n\t\t\t(c |= (u > 0 ? 1 : 0) * d),\n\t\t\t(d <<= 1);\n\tswitch ((t = c)) {\n\t\tcase 0:\n\t\t\tfor (c = 0, h = 256, d = 1; d != h; )\n\t\t\t\t(u = m.val & m.position),\n\t\t\t\t\t(m.position >>= 1),\n\t\t\t\t\t0 == m.position &&\n\t\t\t\t\t\t((m.position = e), (m.val = r(m.index++))),\n\t\t\t\t\t(c |= (u > 0 ? 1 : 0) * d),\n\t\t\t\t\t(d <<= 1);\n\t\t\tv = f(c);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tfor (c = 0, h = 65536, d = 1; d != h; )\n\t\t\t\t(u = m.val & m.position),\n\t\t\t\t\t(m.position >>= 1),\n\t\t\t\t\t0 == m.position &&\n\t\t\t\t\t\t((m.position = e), (m.val = r(m.index++))),\n\t\t\t\t\t(c |= (u > 0 ? 1 : 0) * d),\n\t\t\t\t\t(d <<= 1);\n\t\t\tv = f(c);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\treturn '';\n\t}\n\tfor (i[3] = v, l = v, p.push(v); ; ) {\n\t\tif (m.index > o) return '';\n\t\tfor (c = 0, h = Math.pow(2, $), d = 1; d != h; )\n\t\t\t(u = m.val & m.position),\n\t\t\t\t(m.position >>= 1),\n\t\t\t\t0 == m.position && ((m.position = e), (m.val = r(m.index++))),\n\t\t\t\t(c |= (u > 0 ? 1 : 0) * d),\n\t\t\t\t(d <<= 1);\n\t\tswitch ((v = c)) {\n\t\t\tcase 0:\n\t\t\t\tfor (c = 0, h = 256, d = 1; d != h; )\n\t\t\t\t\t(u = m.val & m.position),\n\t\t\t\t\t\t(m.position >>= 1),\n\t\t\t\t\t\t0 == m.position &&\n\t\t\t\t\t\t\t((m.position = e), (m.val = r(m.index++))),\n\t\t\t\t\t\t(c |= (u > 0 ? 1 : 0) * d),\n\t\t\t\t\t\t(d <<= 1);\n\t\t\t\t(i[n++] = f(c)), (v = n - 1), s--;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\tfor (c = 0, h = 65536, d = 1; d != h; )\n\t\t\t\t\t(u = m.val & m.position),\n\t\t\t\t\t\t(m.position >>= 1),\n\t\t\t\t\t\t0 == m.position &&\n\t\t\t\t\t\t\t((m.position = e), (m.val = r(m.index++))),\n\t\t\t\t\t\t(c |= (u > 0 ? 1 : 0) * d),\n\t\t\t\t\t\t(d <<= 1);\n\t\t\t\t(i[n++] = f(c)), (v = n - 1), s--;\n\t\t\t\tbreak;\n\t\t\tcase 2:\n\t\t\t\treturn p.join('');\n\t\t}\n\t\tif ((0 == s && ((s = Math.pow(2, $)), $++), i[v])) _ = i[v];\n\t\telse {\n\t\t\tif (v !== n) return null;\n\t\t\t_ = l + l.charAt(0);\n\t\t}\n\t\tp.push(_),\n\t\t\t(i[n++] = l + _.charAt(0)),\n\t\t\ts--,\n\t\t\t(l = _),\n\t\t\t0 == s && ((s = Math.pow(2, $)), $++);\n\t}\n}\nexport { compressToEncodedURIComponent, decompressFromEncodedURIComponent };\n","import { compressToEncodedURIComponent, decompressFromEncodedURIComponent, } from './lz-string';\nexport function lzEncodeAndDecodeOptions(defaultValue) {\n    const encode_and_decode = {\n        encode: (value) => compressToEncodedURIComponent(JSON.stringify(value)),\n        decode: (value) => {\n            if (!value)\n                return null;\n            try {\n                return JSON.parse(decompressFromEncodedURIComponent(value) ?? '');\n            }\n            catch {\n                return null;\n            }\n        },\n        defaultValue,\n    };\n    function curry_equality(equality_fn) {\n        return { ...encode_and_decode, equalityFn: equality_fn };\n    }\n    return Object.assign(curry_equality, encode_and_decode);\n}\n","export function primitiveEncodeAndDecodeOptions({ encode, decode, }) {\n    function ssp(defaultValue) {\n        return { encode, decode, defaultValue };\n    }\n    return ssp;\n}\n","import { arrayEncodeAndDecodeOptions, objectEncodeAndDecodeOptions, } from './json-encode';\nimport { lzEncodeAndDecodeOptions } from './lz-encode';\nimport { primitiveEncodeAndDecodeOptions } from './util';\nexport default {\n    number: primitiveEncodeAndDecodeOptions({\n        encode: (value) => value.toString(),\n        decode: (value) => (value ? parseFloat(value) : null),\n    }),\n    boolean: primitiveEncodeAndDecodeOptions({\n        encode: (value) => value + '',\n        decode: (value) => value !== null && value !== 'false',\n    }),\n    string: primitiveEncodeAndDecodeOptions({\n        encode: (value) => value ?? '',\n        decode: (value) => value,\n    }),\n    object: objectEncodeAndDecodeOptions,\n    array: arrayEncodeAndDecodeOptions,\n    lz: lzEncodeAndDecodeOptions,\n};\n","import { browser, building } from '$app/environment';\nimport { goto } from '$app/navigation';\nimport { page as page_store } from '$app/stores';\nimport { fromStore, readable } from 'svelte/store';\n// during building we fake the page store with an URL with no search params\n// as it should be during prerendering. This allow the application to still build\n// and the client side behavior is still persisted after the build\nlet page;\nif (building) {\n    page = readable({\n        url: new URL('http://example.com'),\n    });\n}\nelse {\n    page = page_store;\n}\nfunction is_complex_equal(current, next, equality_fn = (current, next) => JSON.stringify(current) === JSON.stringify(next)) {\n    return (typeof current === 'object' &&\n        typeof next === 'object' &&\n        equality_fn(current, next));\n}\nconst GOTO_OPTIONS = {\n    keepFocus: true,\n    noScroll: true,\n    replaceState: true,\n};\nconst GOTO_OPTIONS_PUSH = {\n    keepFocus: true,\n    noScroll: true,\n    replaceState: false,\n};\nconst batched_updates = new Set();\nlet batch_timeout;\nconst debounced_timeouts = new Map();\nconst page_state = fromStore(page);\nconst DEFAULT_ENCODER_DECODER = {\n    encode: (value) => value.toString(),\n    decode: (value) => (value ? value.toString() : null),\n};\nconst RAW = Symbol('raw');\nfunction do_navigate(name, value, encodes, overrides, navigation_options) {\n    // if we are on the server just return since we can't navigate\n    if (!browser)\n        return;\n    // set the overrides to have the value immediately\n    overrides[name] = value;\n    const { debounceHistory = 0, pushHistory = true, sort = true, } = navigation_options;\n    const hash = window.location.hash;\n    // we batch the changes to prevent a new change arriving before the navigation from \"negating\" this change\n    const to_batch = (query) => {\n        if (value == undefined) {\n            query.delete(name);\n        }\n        else {\n            const new_value = (encodes.get(name) ?? DEFAULT_ENCODER_DECODER.encode)(value);\n            if (new_value == undefined) {\n                query.delete(name);\n            }\n            else {\n                query.set(name, new_value);\n            }\n        }\n    };\n    batched_updates.add(to_batch);\n    clearTimeout(batch_timeout);\n    const query = new URLSearchParams(window.location.search);\n    batch_timeout = setTimeout(async () => {\n        batched_updates.forEach((batched) => {\n            batched(query);\n        });\n        clearTimeout(debounced_timeouts.get(name));\n        if (browser) {\n            async function navigate() {\n                if (sort) {\n                    query.sort();\n                }\n                await goto(`?${query}${hash}`, pushHistory ? GOTO_OPTIONS_PUSH : GOTO_OPTIONS);\n                // reset overrides here since navigation finished\n                overrides[name] = undefined;\n            }\n            // if debounce is 0 just call it immediately (not even waiting 0)\n            if (debounceHistory === 0) {\n                navigate();\n            }\n            else {\n                debounced_timeouts.set(name, setTimeout(navigate, debounceHistory));\n            }\n        }\n        batched_updates.clear();\n    });\n}\n/**\n * this is used for objects and arrays...when a property changes we actually\n * want to change the base parameter...this function is passed through the\n * recursive proxy so that we can invoke it when a nested property changes\n */\nfunction create_root_navigator(root, encodes, overrides, navigation_options) {\n    return (_path, key, to_set) => {\n        const path = [..._path];\n        const name = path.shift();\n        const value = structuredClone($state.snapshot(overrides[name]) ?? root);\n        let current = value;\n        for (const piece of path) {\n            current = current[piece];\n        }\n        current[key] = to_set;\n        do_navigate(name, \n        // this allow for `push` to work\n        Array.isArray(value) && key === 'length'\n            ? structuredClone(value)\n            : value, encodes, overrides, navigation_options);\n    };\n}\n/**\n * to keep track of all the changes in nested objects and arrays\n * we need to create a recursive proxy\n */\nfunction create_recursive_proxy(target, cache, decodes, encodes, overrides, old_values, navigation_options, path = [], navigator) {\n    return new Proxy(target, {\n        get(target, name) {\n            // we use the RAW symbol to get the original target (this is currently not used but better have it)\n            if (name === RAW)\n                return target;\n            // if the path length is different from 0 we just return the actual value\n            // same if it's a symbol (this is svelte checking if we are state)\n            const reflected_value = Reflect.get(target, name);\n            if (typeof name === 'symbol' || path.length !== 0) {\n                return reflected_value;\n            }\n            // if we have a reflected value it means someone is trying to access a property on the object prototype\n            // in that case we return the same property from the cache object.\n            if (reflected_value) {\n                return Reflect.get(cache, name);\n            }\n            // special case for JSON.stringify\n            if (name === 'toJSON') {\n                return () => {\n                    // snapshot the cache\n                    const values = $state.snapshot(cache);\n                    // on the server that's enough\n                    if (!browser)\n                        return values;\n                    // otherwise we mere with existing but not specified search params\n                    const search_params = new URLSearchParams(window.location.search);\n                    for (const [key, value] of search_params.entries()) {\n                        if (!(key in cache)) {\n                            values[key] = value;\n                        }\n                    }\n                    return values;\n                };\n            }\n            const value = cache[name] ??\n                (decodes.get(name) ?? DEFAULT_ENCODER_DECODER.decode)(page_state.current.url.searchParams.get(name));\n            if (value != undefined && typeof value === 'object') {\n                return create_recursive_proxy(value, cache, decodes, encodes, overrides, old_values, navigation_options, [...path, name], navigator ??\n                    create_root_navigator(value, encodes, overrides, navigation_options));\n            }\n            return value;\n        },\n        set(target, name, value) {\n            if (typeof name === 'symbol')\n                return Reflect.set(target, name, value);\n            if (!browser)\n                return true;\n            // if we have a navigator we call the navigator (we are in a proxy and we are setting a leaf)\n            if (navigator) {\n                navigator(path, name, value);\n                return true;\n            }\n            // otherwise we just navigate\n            do_navigate(name, value, encodes, overrides, navigation_options);\n            return true;\n        },\n        has(target, name) {\n            if (name === RAW)\n                return true;\n            return Reflect.has(target, name);\n        },\n    });\n}\n/**\n * function to check if we should show the default and eventually navigate to update the url\n */\nfunction should_default(value, key, option, show_defaults, encodes, overrides, navigation_options) {\n    if (value == undefined &&\n        typeof option !== 'boolean' &&\n        option.defaultValue != undefined) {\n        if (show_defaults) {\n            do_navigate(key, option.defaultValue, encodes, overrides, navigation_options);\n        }\n        return true;\n    }\n    return false;\n}\nexport function queryParameters(options, navigation_options = {}) {\n    const { showDefaults: show_defaults = true } = navigation_options;\n    // keeps all the deriveds for every single property\n    const cache = {};\n    // al the decode functions\n    const decodes = new Map();\n    // all the encode functions\n    const encodes = new Map();\n    // all the old references of the derived (to prevent unnecessary reactions)\n    const old_values = new Map();\n    // all the overrides (it's a $state and not a SvelteMap because when deleting a value SvelteMap invalidate the whole Map)\n    const overrides = $state({});\n    for (const key in options) {\n        const decode = typeof options?.[key] === 'boolean'\n            ? DEFAULT_ENCODER_DECODER.decode\n            : options?.[key].decode;\n        const encode = typeof options?.[key] === 'boolean'\n            ? DEFAULT_ENCODER_DECODER.encode\n            : options?.[key].encode;\n        decodes.set(key, decode);\n        encodes.set(key, encode);\n        const der = $derived.by(() => {\n            const value = overrides[key] ??\n                decode(page_state.current.url.searchParams.get(key));\n            if (!browser &&\n                should_default(value, key, options[key], show_defaults, encodes, overrides, navigation_options)) {\n                // return the default value on the server (we can't set the override in $effect.pre\n                // because it only execute on the client and if we set overrides on the server is not\n                // actually reactive)\n                return options[key].defaultValue;\n            }\n            const old_value = old_values.get(key) ?? null;\n            // check if the old value is conceptually the same as the new, in case return the new value\n            if (is_complex_equal($state.snapshot(value), $state.snapshot(old_value), typeof options[key] === 'boolean'\n                ? undefined\n                : options[key].equalityFn)) {\n                return old_value;\n            }\n            // store the old value\n            old_values.set(key, $state.snapshot(value));\n            return value;\n        });\n        $effect.pre(() => {\n            // override in case the param is null and we need to show the default\n            if (should_default(der, key, options[key], show_defaults, encodes, overrides, navigation_options)) {\n                overrides[key] = options[key].defaultValue;\n            }\n        });\n        Object.defineProperty(cache, key, {\n            get() {\n                return der;\n            },\n            enumerable: true,\n        });\n    }\n    return create_recursive_proxy({}, cache, decodes, encodes, overrides, old_values, navigation_options);\n}\n","<script lang=\"ts\">\n  import type { Props } from \"./types\"\n\n  import ToggleGroup from \"./ToggleGroup.svelte\"\n  import Article from \"$lib/Article.svelte\"\n  import Highlight from \"$lib/Highlight.svelte\"\n  import { getBody } from \"$lib/utils/html\"\n  import { queryParameters, ssp } from \"sveltekit-search-params\"\n\n  const { url, html }: Props = $props()\n\n  const q = queryParameters({ preview: ssp.string(\"iframe\") }, { pushHistory: false })\n  const type = $derived(q.preview as \"iframe\" | \"prose\" | \"code\")\n</script>\n\n<section class=\"relative overflow-hidden\">\n\n  {#if type === \"iframe\"}\n\n    <iframe class=\"h-full w-full bg-white\" srcdoc={html.replace(\"<head>\", `<head><base href=\"${url}\">`)} title=\"preview\"></iframe>\n\n  {:else if type === \"prose\"}\n\n    <Article>\n      {@html getBody(html)}\n    </Article>\n\n  {:else if type === \"code\"}\n\n    <div class=\"h-full w-full overflow-scroll px-3.5 py-3\">\n      <Highlight source={getBody(html)} lang=\"html\" />\n    </div>\n\n  {/if}\n\n  <div class=\"absolute bottom-5 z-1 flex flex-row gap-1.5 md:right-5 <md:(w-full justify-center)\">\n    <ToggleGroup values={[\"iframe\", \"prose\", \"code\"]} bind:choice={q.preview} />\n  </div>\n\n</section>\n","<script lang=\"ts\">\n  import { getContext } from \"svelte\"\n\n  const { href = \"\", title = undefined, text = \"\" }: { href?: string, title?: string, text?: string } = $props()\n  const base: string = getContext(\"base\")\n</script>\n\n<img src={new URL(href, base).toString()} {title} alt={text} />\n","<script lang=\"ts\">\n  import type { Snippet } from \"svelte\"\n\n  import { getContext } from \"svelte\"\n\n  const { href = \"\", title = undefined, children }: { href?: string, title?: string, children?: Snippet } = $props()\n  const base: string = getContext(\"base\")\n</script>\n\n<a href={new URL(href, base).toString()} {title} target=\"_blank\">{@render children?.()}</a>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<a {...attributes}>{@render children?.()}</a>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<abbr {...attributes}>{@render children?.()}</abbr>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<address {...attributes}>{@render children?.()}</address>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<article {...attributes}>{@render children?.()}</article>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<aside {...attributes}>{@render children?.()}</aside>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<audio {...attributes}>{@render children?.()}</audio>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<b {...attributes}>{@render children?.()}</b>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<bdi {...attributes}>{@render children?.()}</bdi>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<bdo {...attributes}>{@render children?.()}</bdo>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<blockquote {...attributes}>{@render children?.()}</blockquote>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes = {} }: Props = $props()\n</script>\n\n<br {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<button {...attributes}>{@render children?.()}</button>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<canvas {...attributes}>{@render children?.()}</canvas>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<cite {...attributes}>{@render children?.()}</cite>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<code {...attributes}>{@render children?.()}</code>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<datalist {...attributes}>{@render children?.()}</datalist>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<dd {...attributes}>{@render children?.()}</dd>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<del {...attributes}>{@render children?.()}</del>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<details {...attributes}>{@render children?.()}</details>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<dfn {...attributes}>{@render children?.()}</dfn>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<dialog {...attributes}>{@render children?.()}</dialog>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<div {...attributes}>{@render children?.()}</div>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<dl {...attributes}>{@render children?.()}</dl>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<dt {...attributes}>{@render children?.()}</dt>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<em {...attributes}>{@render children?.()}</em>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<embed {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<fieldset {...attributes}>{@render children?.()}</fieldset>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<footer {...attributes}>{@render children?.()}</footer>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<form {...attributes}>{@render children?.()}</form>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<h1 {...attributes}>{@render children?.()}</h1>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<h2 {...attributes}>{@render children?.()}</h2>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<h3 {...attributes}>{@render children?.()}</h3>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<h4 {...attributes}>{@render children?.()}</h4>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<h5 {...attributes}>{@render children?.()}</h5>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<h6 {...attributes}>{@render children?.()}</h6>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<header {...attributes}>{@render children?.()}</header>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<hgroup {...attributes}>{@render children?.()}</hgroup>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<hr {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<i {...attributes}>{@render children?.()}</i>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<iframe {...attributes}>{@render children?.()}</iframe>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<img {...attributes} />\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<input {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<kbd {...attributes}>{@render children?.()}</kbd>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<label {...attributes}>{@render children?.()}</label>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<legend {...attributes}>{@render children?.()}</legend>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<li {...attributes}>{@render children?.()}</li>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<main {...attributes}>{@render children?.()}</main>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<mark {...attributes}>{@render children?.()}</mark>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<menu {...attributes}>{@render children?.()}</menu>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<meter {...attributes}>{@render children?.()}</meter>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<nav {...attributes}>{@render children?.()}</nav>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<ol {...attributes}>{@render children?.()}</ol>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<optgroup {...attributes}>{@render children?.()}</optgroup>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<option {...attributes}>{@render children?.()}</option>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<output {...attributes}>{@render children?.()}</output>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<p {...attributes}>{@render children?.()}</p>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<param {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<picture {...attributes}>{@render children?.()}</picture>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<pre {...attributes}>{@render children?.()}</pre>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<progress {...attributes}>{@render children?.()}</progress>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<s {...attributes}>{@render children?.()}</s>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<samp {...attributes}>{@render children?.()}</samp>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<section {...attributes}>{@render children?.()}</section>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<select {...attributes}>\n    {@render children?.()}\n</select>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<small {...attributes}>{@render children?.()}</small>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<source {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<span {...attributes}>{@render children?.()}</span>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<strong {...attributes}>{@render children?.()}</strong>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<sub {...attributes}>{@render children?.()}</sub>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<summary {...attributes}>{@render children?.()}</summary>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, unknown>\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<sup {...attributes}>{@render children?.()}</sup>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<table {...attributes}>{@render children?.()}</table>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<tbody {...attributes}>{@render children?.()}</tbody>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<td {...attributes}>{@render children?.()}</td>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<textarea {...attributes}></textarea>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<tfoot {...attributes}>{@render children?.()}</tfoot>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<th {...attributes}>{@render children?.()}</th>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<thead {...attributes}>{@render children?.()}</thead>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<tr {...attributes}>{@render children?.()}</tr>\n","<script lang=\"ts\">\n    interface Props {\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { attributes }: Props = $props()\n</script>\n\n<track {...attributes} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<u {...attributes}>{@render children?.()}</u>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<ul {...attributes}>{@render children?.()}</ul>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        attributes?: Record<string, any> // eslint-disable-line @typescript-eslint/no-explicit-any\n    }\n\n    const { children, attributes }: Props = $props()\n</script>\n\n<var {...attributes}>{@render children?.()}</var>\n","import A from './A.svelte';\nimport Abbr from './Abbr.svelte';\nimport Address from './Address.svelte';\nimport Article from './Article.svelte';\nimport Aside from './Aside.svelte';\nimport Audio from './Audio.svelte';\nimport B from './B.svelte';\nimport Bdi from './Bdi.svelte';\nimport Bdo from './Bdo.svelte';\nimport Blockquote from './Blockquote.svelte';\nimport Br from './Br.svelte';\nimport Button from './Button.svelte';\nimport Canvas from './Canvas.svelte';\nimport Cite from './Cite.svelte';\nimport Code from './Code.svelte';\nimport Datalist from './Datalist.svelte';\nimport Dd from './Dd.svelte';\nimport Del from './Del.svelte';\nimport Details from './Details.svelte';\nimport Dfn from './Dfn.svelte';\nimport Dialog from './Dialog.svelte';\nimport Div from './Div.svelte';\nimport Dl from './Dl.svelte';\nimport Dt from './Dt.svelte';\nimport Em from './Em.svelte';\nimport Embed from './Embed.svelte';\nimport Fieldset from './Fieldset.svelte';\nimport Footer from './Footer.svelte';\nimport Form from './Form.svelte';\nimport H1 from './H1.svelte';\nimport H2 from './H2.svelte';\nimport H3 from './H3.svelte';\nimport H4 from './H4.svelte';\nimport H5 from './H5.svelte';\nimport H6 from './H6.svelte';\nimport Header from './Header.svelte';\nimport Hgroup from './Hgroup.svelte';\nimport Hr from './Hr.svelte';\nimport I from './I.svelte';\nimport Iframe from './Iframe.svelte';\nimport Img from './Img.svelte';\nimport Input from './Input.svelte';\nimport Kbd from './Kbd.svelte';\nimport Label from './Label.svelte';\nimport Legend from './Legend.svelte';\nimport Li from './Li.svelte';\nimport Main from './Main.svelte';\nimport Mark from './Mark.svelte';\nimport Menu from './Menu.svelte';\nimport Meter from './Meter.svelte';\nimport Nav from './Nav.svelte';\nimport Ol from './Ol.svelte';\nimport Optgroup from './Optgroup.svelte';\nimport Option from './Option.svelte';\nimport Output from './Output.svelte';\nimport P from './P.svelte';\nimport Param from './Param.svelte';\nimport Picture from './Picture.svelte';\nimport Pre from './Pre.svelte';\nimport Progress from './Progress.svelte';\nimport S from './S.svelte';\nimport Samp from './Samp.svelte';\nimport Section from './Section.svelte';\nimport Select from './Select.svelte';\nimport Small from './Small.svelte';\nimport Source from './Source.svelte';\nimport Span from './Span.svelte';\nimport Strong from './Strong.svelte';\nimport Sub from './Sub.svelte';\nimport Summary from './Summary.svelte';\nimport Sup from './Sup.svelte';\nimport Table from './Table.svelte';\nimport Tbody from './Tbody.svelte';\nimport Td from './Td.svelte';\nimport Textarea from './Textarea.svelte';\nimport Tfoot from './Tfoot.svelte';\nimport Th from './Th.svelte';\nimport Thead from './Thead.svelte';\nimport Tr from './Tr.svelte';\nimport Track from './Track.svelte';\nimport U from './U.svelte';\nimport Ul from './Ul.svelte';\nimport Var from './Var.svelte';\nexport const Html = {\n    a: A,\n    abbr: Abbr,\n    address: Address,\n    article: Article,\n    aside: Aside,\n    audio: Audio,\n    b: B,\n    bdi: Bdi,\n    bdo: Bdo,\n    blockquote: Blockquote,\n    br: Br,\n    button: Button,\n    canvas: Canvas,\n    cite: Cite,\n    code: Code,\n    datalist: Datalist,\n    dd: Dd,\n    del: Del,\n    details: Details,\n    dfn: Dfn,\n    dialog: Dialog,\n    div: Div,\n    dl: Dl,\n    dt: Dt,\n    em: Em,\n    embed: Embed,\n    fieldset: Fieldset,\n    footer: Footer,\n    form: Form,\n    h1: H1,\n    h2: H2,\n    h3: H3,\n    h4: H4,\n    h5: H5,\n    h6: H6,\n    header: Header,\n    hgroup: Hgroup,\n    hr: Hr,\n    i: I,\n    iframe: Iframe,\n    img: Img,\n    input: Input,\n    kbd: Kbd,\n    label: Label,\n    legend: Legend,\n    li: Li,\n    main: Main,\n    mark: Mark,\n    menu: Menu,\n    meter: Meter,\n    nav: Nav,\n    ol: Ol,\n    optgroup: Optgroup,\n    option: Option,\n    output: Output,\n    p: P,\n    param: Param,\n    picture: Picture,\n    pre: Pre,\n    progress: Progress,\n    s: S,\n    samp: Samp,\n    section: Section,\n    select: Select,\n    small: Small,\n    source: Source,\n    span: Span,\n    strong: Strong,\n    sub: Sub,\n    summary: Summary,\n    sup: Sup,\n    table: Table,\n    tbody: Tbody,\n    td: Td,\n    textarea: Textarea,\n    tfoot: Tfoot,\n    th: Th,\n    thead: Thead,\n    tr: Tr,\n    track: Track,\n    u: U,\n    ul: Ul,\n    var: Var\n};\nexport default Html;\n","<script lang=\"ts\">\n    /**\n     * @component Parser\n     *\n     * Recursive markdown token parser that transforms tokens into Svelte components.\n     * This component is the core rendering engine of the markdown system, handling\n     * the transformation of parsed markdown tokens into their corresponding Svelte components.\n     *\n     * @example\n     * ```svelte\n     * <Parser\n     *   tokens={parsedTokens}\n     *   renderers={customRenderers}\n     *   type=\"paragraph\"\n     * />\n     * ```\n     *\n     * Features:\n     * - Recursive token parsing\n     * - Custom renderer support\n     * - Special handling for tables, lists, and HTML content\n     * - Type-safe component rendering\n     *\n     * @typedef {Object} Props\n     * @property {string} [type] - Token type for direct component rendering\n     * @property {Token[] | TokensList} [tokens] - Markdown tokens to be rendered\n     * @property {Tokens.TableCell[]} [header] - Table header cells for table rendering\n     * @property {Tokens.TableCell[][]} [rows] - Table row cells for table rendering\n     * @property {boolean} [ordered=false] - Whether the list is ordered (for list rendering)\n     * @property {Renderers} renderers - Component mapping for markdown elements\n     *\n     * Implementation Notes:\n     * - Uses recursive rendering for nested tokens\n     * - Implements special logic for tables, lists, and HTML content\n     * - Handles component prop spreading carefully to avoid conflicts\n     * - Maintains type safety through TypeScript interfaces\n     * - HTML token handling in table cells uses type assertions for better type safety\n     * - Table cell HTML content is processed with proper token nesting and attribute preservation\n     * - Improved HTML component rendering with proper type checking for tag properties\n     * - Added support for nested markdown within HTML table cells (see test at lines 311-343 in SvelteMarkdown.test.ts)\n     * - Token cleanup utilities handle complex nested structures (see lines 105-127 in token-cleanup.test.ts)\n     * - HTML parsing maintains proper structure for both simple and complex nested elements\n     *\n     */\n\n    import Parser from './Parser.svelte'\n    import Html from './renderers/html/index.js'\n    import type {\n        Renderers,\n        Token,\n        TokensList,\n        Tokens,\n        RendererComponent\n    } from './utils/markdown-parser.js'\n\n    interface Props<T extends Renderers = Renderers> {\n        type?: string\n        tokens?: Token[] | TokensList\n        header?: Tokens.TableCell[]\n        rows?: Tokens.TableCell[][]\n        ordered?: boolean\n        renderers: T\n    }\n\n    const {\n        type = undefined,\n        tokens = undefined,\n        header = undefined,\n        rows = undefined,\n        ordered = false,\n        renderers,\n        ...rest\n    }: Props & {\n        [key: string]: unknown\n    } = $props()\n</script>\n\n{#if !type}\n    {#if tokens}\n        {#each tokens as token, index (index)}\n            {@const { text: _text, raw: _raw, ...parserRest } = rest}\n            <Parser {...parserRest} {...token} {renderers} />\n        {/each}\n    {/if}\n{:else if type in renderers}\n    {#if type === 'table'}\n        {#if renderers.table && renderers.tablerow && renderers.tablecell}\n            <renderers.table {...rest}>\n                {#if renderers.tablehead}\n                    <renderers.tablehead {...rest}>\n                        <renderers.tablerow {...rest}>\n                            {#each header ?? [] as headerItem, i (i)}\n                                {@const { align: _align, ...cellRest } = rest}\n                                <renderers.tablecell\n                                    header={true}\n                                    align={(rest.align as string[])[i]}\n                                    {...cellRest}\n                                >\n                                    <Parser tokens={headerItem.tokens} {renderers} />\n                                </renderers.tablecell>\n                            {/each}\n                        </renderers.tablerow>\n                    </renderers.tablehead>\n                {/if}\n                {#if renderers.tablebody}\n                    <renderers.tablebody {...rest}>\n                        {#each rows ?? [] as row, i (i)}\n                            <renderers.tablerow {...rest}>\n                                {#each row ?? [] as cells, i (i)}\n                                    {@const { align: _align, ...cellRest } = rest}\n                                    <renderers.tablecell\n                                        {...cellRest}\n                                        header={false}\n                                        align={(rest.align as string[])[i]}\n                                    >\n                                        {#each cells.tokens ?? [] as cellToken, index (index)}\n                                            <Parser {...cellRest} {...cellToken} {renderers} />\n                                        {/each}\n                                    </renderers.tablecell>\n                                {/each}\n                            </renderers.tablerow>\n                        {/each}\n                    </renderers.tablebody>\n                {/if}\n            </renderers.table>\n        {/if}\n    {:else if type === 'list' && renderers.list}\n        {#if ordered}\n            <renderers.list {ordered} {...rest}>\n                {@const { items, ...parserRest }: {items: Props[]} = rest}\n                {#each items as item, index (index)}\n                    {@const OrderedListComponent = renderers.orderedlistitem || renderers.listitem}\n                    {#if OrderedListComponent}\n                        <OrderedListComponent {...item}>\n                            <Parser {...parserRest} tokens={item.tokens} {renderers} />\n                        </OrderedListComponent>\n                    {/if}\n                {/each}\n            </renderers.list>\n        {:else}\n            <renderers.list {ordered} {...rest}>\n                {@const { items, ...parserRest }: {items: Props[]} = rest}\n                {#each items as item, index (index)}\n                    {@const UnorderedListComponent =\n                        renderers.unorderedlistitem || renderers.listitem}\n                    {#if UnorderedListComponent}\n                        <UnorderedListComponent {...item}>\n                            <Parser {...parserRest} tokens={item.tokens} {renderers} />\n                        </UnorderedListComponent>\n                    {/if}\n                {/each}\n            </renderers.list>\n        {/if}\n    {:else if type === 'html'}\n        {@const { tag, ...localRest } = rest}\n        {@const htmlTag = rest.tag as keyof typeof Html}\n        {#if renderers.html && htmlTag in renderers.html}\n            {@const HtmlComponent = renderers.html[htmlTag as keyof typeof renderers.html]}\n            {#if HtmlComponent}\n                {@const tokens = (rest.tokens as Token[]) ?? ([] as Token[])}\n                <HtmlComponent {...rest}>\n                    {#if tokens.length}\n                        <Parser\n                            {tokens}\n                            {renderers}\n                            {...Object.fromEntries(\n                                Object.entries(localRest).filter(([key]) => key !== 'attributes')\n                            )}\n                        />\n                    {/if}\n                </HtmlComponent>\n            {/if}\n        {:else}\n            <Parser\n                tokens={(rest.tokens as Token[]) ?? ([] as Token[])}\n                {renderers}\n                {...localRest}\n            />\n        {/if}\n    {:else}\n        {@const GeneralComponent = renderers[type as keyof typeof renderers] as RendererComponent}\n        {#if GeneralComponent}\n            <GeneralComponent {...rest}>\n                {#if tokens}\n                    {@const { text: _text, raw: _raw, ...parserRest } = rest}\n                    <Parser {...parserRest} {tokens} {renderers} />\n                {:else}\n                    <renderers.rawtext text={rest.raw} {...rest} />\n                {/if}\n            </GeneralComponent>\n        {/if}\n    {/if}\n{/if}\n","// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n","import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n  /**\n   * Create a new slug class.\n   */\n  constructor () {\n    /** @type {Record<string, number>} */\n    // eslint-disable-next-line no-unused-expressions\n    this.occurrences\n\n    this.reset()\n  }\n\n  /**\n   * Generate a unique slug.\n  *\n  * Tracks previously generated slugs: repeated calls with the same value\n  * will result in different slugs.\n  * Use the `slug` function to get same slugs.\n   *\n   * @param  {string} value\n   *   String of text to slugify\n   * @param  {boolean} [maintainCase=false]\n   *   Keep the current case, otherwise make all lowercase\n   * @return {string}\n   *   A unique slug string\n   */\n  slug (value, maintainCase) {\n    const self = this\n    let result = slug(value, maintainCase === true)\n    const originalSlug = result\n\n    while (own.call(self.occurrences, result)) {\n      self.occurrences[originalSlug]++\n      result = originalSlug + '-' + self.occurrences[originalSlug]\n    }\n\n    self.occurrences[result] = 0\n\n    return result\n  }\n\n  /**\n   * Reset - Forget all previous slugs\n   *\n   * @return void\n   */\n  reset () {\n    this.occurrences = Object.create(null)\n  }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param  {string} value\n *   String of text to slugify\n * @param  {boolean} [maintainCase=false]\n *   Keep the current case, otherwise make all lowercase\n * @return {string}\n *   A unique slug string\n */\nexport function slug (value, maintainCase) {\n  if (typeof value !== 'string') return ''\n  if (!maintainCase) value = value.toLowerCase()\n  return value.replace(regex, '').replace(/ /g, '-')\n}\n","/**\n * marked v16.1.2 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O=L();function H(l){O=l}var E={exec:()=>null};function h(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ xX]\\] +/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,C=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,j=/(?:[*+-]|\\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ie=h(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Te=h(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),F=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/,ye=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=h(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,j).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),oe=h(F).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",oe).getRegex(),K={blockquote:$e,code:be,def:ye,fences:Re,heading:Oe,hr:C,html:Se,lheading:ie,list:Pe,newline:xe,paragraph:oe,table:E,text:we},re=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...K,lheading:Te,table:re,paragraph:h(F).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...K,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:E,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(F).replace(\"hr\",C).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ie).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ae=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,le=/[^\\s\\p{P}\\p{S}]/u,Ee=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),ue=/(?!~)[\\p{P}\\p{S}]/u,Ce=/(?!~)[\\s\\p{P}\\p{S}]/u,Ie=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=/\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<(?! )[^<>]*?>/g,pe=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=h(pe,\"u\").replace(/punct/g,D).getRegex(),ve=h(pe,\"u\").replace(/punct/g,ue).getRegex(),ce=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=h(ce,\"gu\").replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ze=h(ce,\"gu\").replace(/notPunctSpace/g,Ie).replace(/punctSpace/g,Ce).replace(/punct/g,ue).getRegex(),Ge=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),He=h(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=h(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),je=h(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=h(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",je).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/,Qe=h(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),he=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),de=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),Ue=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",he).replace(\"nolink\",de).getRegex(),X={_backpedal:E,anyPunctuation:He,autolink:Ne,blockSkip:Be,br:ae,code:ze,del:E,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ge,escape:Me,link:Qe,nolink:de,punctuation:Ee,reflink:he,reflinkSearch:Ue,tag:Fe,text:Ae,url:E},Ke={...X,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ze,emStrongLDelim:ve,url:h(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\"i\").replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/},We={...N,br:h(ae).replace(\"{2,}\",\"*\").getRegex(),text:h(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},I={normal:K,gfm:_e,pedantic:Le},M={normal:X,gfm:N,breaks:We,pedantic:Ke};var Xe={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ke=l=>Xe[l];function w(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ke);return l}function J(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function V(l,e){let t=l.replace(m.findPipe,(i,s,o)=>{let a=!1,u=s;for(;--u>=0&&o[u]===\"\\\\\";)a=!a;return a?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(l,e,t){let n=l.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=l.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return l.slice(0,n-r)}function ge(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function fe(l,e,t,n,r){let i=e.href,s=e.title||null,o=l[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let a={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,a}function Je(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[o]=s;return o.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||O}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let o=!1,a=[],u;for(u=0;u<n.length;u++)if(this.rules.other.blockquoteStart.test(n[u]))a.push(n[u]),o=!0;else if(!o)a.push(n[u]);else break;n=n.slice(u);let p=a.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n    $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=f,n.length===0)break;let k=s.at(-1);if(k?.type===\"code\")break;if(k?.type===\"blockquote\"){let x=k,g=x.raw+`\n`+n.join(`\n`),T=this.blockquote(g);s[s.length-1]=T,r=r.substring(0,r.length-x.raw.length)+T.raw,i=i.substring(0,i.length-x.text.length)+T.text;break}else if(k?.type===\"list\"){let x=k,g=x.raw+`\n`+n.join(`\n`),T=this.list(g);s[s.length-1]=T,r=r.substring(0,r.length-k.raw.length)+T.raw,i=i.substring(0,i.length-x.raw.length)+T.raw,n=g.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),o=!1;for(;e;){let u=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let f=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,Z=>\" \".repeat(3*Z.length)),k=e.split(`\n`,1)[0],x=!f.trim(),g=0;if(this.options.pedantic?(g=2,c=f.trimStart()):x?g=t[1].length+1:(g=t[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,c=f.slice(g),g+=t[1].length),x&&this.rules.other.blankLine.test(k)&&(p+=k+`\n`,e=e.substring(k.length+1),u=!0),!u){let Z=this.rules.other.nextBulletRegex(g),ee=this.rules.other.hrRegex(g),te=this.rules.other.fencesBeginRegex(g),ne=this.rules.other.headingBeginRegex(g),me=this.rules.other.htmlBeginRegex(g);for(;e;){let G=e.split(`\n`,1)[0],A;if(k=G,this.options.pedantic?(k=k.replace(this.rules.other.listReplaceNesting,\"  \"),A=k):A=k.replace(this.rules.other.tabCharGlobal,\"    \"),te.test(k)||ne.test(k)||me.test(k)||Z.test(k)||ee.test(k))break;if(A.search(this.rules.other.nonSpaceChar)>=g||!k.trim())c+=`\n`+A.slice(g);else{if(x||f.replace(this.rules.other.tabCharGlobal,\"    \").search(this.rules.other.nonSpaceChar)>=4||te.test(f)||ne.test(f)||ee.test(f))break;c+=`\n`+k}!x&&!k.trim()&&(x=!0),p+=G+`\n`,e=e.substring(G.length+1),f=A.slice(g)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(o=!0));let T=null,Y;this.options.gfm&&(T=this.rules.other.listIsTask.exec(c),T&&(Y=T[0]!==\"[ ] \",c=c.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:p,task:!!T,checked:Y,loose:!1,text:c,tokens:[]}),i.raw+=p}let a=i.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;u<i.items.length;u++)if(this.lexer.state.top=!1,i.items[u].tokens=this.lexer.blockTokens(i.items[u].text,[]),!i.loose){let p=i.items[u].tokens.filter(f=>f.type===\"space\"),c=p.length>0&&p.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=c}if(i.loose)for(let u=0;u<i.items.length;u++)i.items[u].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let o of r)this.rules.other.tableAlignRight.test(o)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(o)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(o)?s.align.push(\"left\"):s.align.push(null);for(let o=0;o<n.length;o++)s.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:s.align[o]});for(let o of i)s.rows.push(V(o,s.header.length).map((a,u)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:s.align[u]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=ge(t[2],\"()\");if(s===-2)return;if(s>-1){let a=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,a).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,o,a,u=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(a=[...o].length,r[3]||r[4]){u+=a;continue}else if((r[5]||r[6])&&s%3&&!((s+a)%3)){p+=a;continue}if(u-=a,u>0)continue;a=Math.min(a,a+u+p);let f=[...r[0]][0].length,k=e.slice(0,s+r.index+f+a);if(Math.min(s,a)%2){let g=k.slice(1,-1);return{type:\"em\",raw:k,text:g,tokens:this.lexer.inlineTokens(g)}}let x=k.slice(2,-2);return{type:\"strong\",raw:k,text:x,tokens:this.lexer.inlineTokens(x)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var b=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||O,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:I.normal,inline:M.normal};this.options.pedantic?(t.block=I.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=I.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:I,inline:M}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\"    \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(u=>{a=u.call({lexer:this},o),typeof a==\"number\"&&a>=0&&(s=Math.min(s,a))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,s=\"\";for(;e;){i||(s=\"\"),i=!1;let o;if(this.options.extensions?.inline?.some(u=>(o=u.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let u=t.at(-1);o.type===\"text\"&&u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,s)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let a=e;if(this.options.extensions?.startInline){let u=1/0,p=e.slice(1),c;this.options.extensions.startInline.forEach(f=>{c=f.call({lexer:this},p),typeof c==\"number\"&&c>=0&&(u=Math.min(u,c))}),u<1/0&&u>=0&&(a=e.substring(0,u+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(s=o.raw.slice(-1)),i=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(e){let u=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}};var P=class{options;parser;constructor(e){this.options=e||O}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let o=0;o<e.items.length;o++){let a=e.items[o];r+=this.listitem(a)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let o=0;o<s.length;o++)n+=this.tablecell(s[o]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var S=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var R=class l{options;renderer;textRenderer;constructor(e){this.options=e||O,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new S}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=i,a=this.options.extensions.renderers[o.type].call({parser:this},o);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"paragraph\",\"text\"].includes(o.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let o=s,a=this.renderer.text(o);for(;r+1<e.length&&e[r+1].type===\"text\";)o=e[++r],a+=`\n`+this.renderer.text(o);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:a,text:a,tokens:[{type:\"text\",raw:a,text:a,escaped:!0}]}):n+=a;continue}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=this.options.extensions.renderers[i.type].call({parser:this},i);if(o!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}};var $=class{options;block;constructor(e){this.options=e||O}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?b.lex:b.lexInline}provideParser(){return this.block?R.parse:R.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=R;Renderer=P;TextRenderer=S;Lexer=b;Tokenizer=y;Hooks=$;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let o of s)n=n.concat(this.walkTokens(o.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let o=i[s].flat(1/0);n=n.concat(this.walkTokens(o,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...o){let a=i.renderer.apply(this,o);return a===!1&&(a=s.apply(this,o)),a}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let o=s,a=n.renderer[o],u=i[o];i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let o=s,a=n.tokenizer[o],u=i[o];i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new $;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let o=s,a=n.hooks[o],u=i[o];$.passThroughHooks.has(s)?i[o]=p=>{if(this.defaults.async)return Promise.resolve(a.call(i,p)).then(f=>u.call(i,f));let c=a.call(i,p);return u.call(i,c)}:i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(o){let a=[];return a.push(s.call(this,o)),i&&(a=a.concat(i.call(this,o))),a}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return b.lex(e,t??this.defaults)}parser(e,t){return R.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return o(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return o(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return o(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let a=s.hooks?s.hooks.provideLexer():e?b.lex:b.lexInline,u=s.hooks?s.hooks.provideParser():e?R.parse:R.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(p=>a(p,s)).then(p=>s.hooks?s.hooks.processAllTokens(p):p).then(p=>s.walkTokens?Promise.all(this.walkTokens(p,s.walkTokens)).then(()=>p):p).then(p=>u(p,s)).then(p=>s.hooks?s.hooks.postprocess(p):p).catch(o);try{s.hooks&&(n=s.hooks.preprocess(n));let p=a(n,s);s.hooks&&(p=s.hooks.processAllTokens(p)),s.walkTokens&&this.walkTokens(p,s.walkTokens);let c=u(p,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(p){return o(p)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(l,e){return _.parse(l,e)}d.options=d.setOptions=function(l){return _.setOptions(l),d.defaults=_.defaults,H(d.defaults),d};d.getDefaults=L;d.defaults=O;d.use=function(...l){return _.use(...l),d.defaults=_.defaults,H(d.defaults),d};d.walkTokens=function(l,e){return _.walkTokens(l,e)};d.parseInline=_.parseInline;d.Parser=R;d.parser=R.parse;d.Renderer=P;d.TextRenderer=S;d.Lexer=b;d.lexer=b.lex;d.Tokenizer=y;d.Hooks=$;d.parse=d;var Dt=d.options,Zt=d.setOptions,Gt=d.use,Ht=d.walkTokens,Nt=d.parseInline,jt=d,Ft=R.parse,Qt=b.lex;export{$ as Hooks,b as Lexer,B as Marked,R as Parser,P as Renderer,S as TextRenderer,y as Tokenizer,O as defaults,L as getDefaults,Qt as lexer,d as marked,Dt as options,jt as parse,Nt as parseInline,Ft as parser,Zt as setOptions,Gt as use,Ht as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<blockquote>{@render children?.()}</blockquote>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<br />{@render children?.()}\n","<script lang=\"ts\">\n    interface Props {\n        lang: string\n        text: string\n    }\n    const { lang, text }: Props = $props()\n</script>\n\n<pre class={lang}><code>{text}</code></pre>\n","<script lang=\"ts\">\n    interface Props {\n        raw: string\n    }\n\n    const { raw }: Props = $props()\n</script>\n\n<code>{raw.replace(/`/g, '')}</code>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<del>{@render children?.()}</del>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n\n    const { children }: Props = $props()\n</script>\n\n<em>{@render children?.()}</em>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n    import type { SvelteMarkdownOptions } from '../types.js'\n\n    interface Props {\n        depth: number\n        raw: string\n        text: string\n        options: SvelteMarkdownOptions\n        slug: (val: string) => string // eslint-disable-line no-unused-vars\n        children?: Snippet\n    }\n\n    const { depth, raw, text, options, slug, children }: Props = $props()\n\n    const id = $derived(options.headerIds ? options.headerPrefix + slug(text) : undefined)\n</script>\n\n{#if depth === 1}\n    <h1 {id}>{@render children?.()}</h1>\n{:else if depth === 2}\n    <h2 {id}>{@render children?.()}</h2>\n{:else if depth === 3}\n    <h3 {id}>{@render children?.()}</h3>\n{:else if depth === 4}\n    <h4 {id}>{@render children?.()}</h4>\n{:else if depth === 5}\n    <h5 {id}>{@render children?.()}</h5>\n{:else if depth === 6}\n    <h6 {id}>{@render children?.()}</h6>\n{:else}\n    {raw}\n{/if}\n","<script lang=\"ts\">\n    interface Props {\n        href?: string\n        title?: string\n        text?: string\n    }\n\n    const { href = '', title = undefined, text = '' }: Props = $props()\n</script>\n\n<img src={href} {title} alt={text} />\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        href?: string\n        title?: string\n        children?: Snippet\n    }\n    const { href = '', title = undefined, children }: Props = $props()\n</script>\n\n<a {href} {title}>{@render children?.()}</a>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        ordered?: boolean\n        start?: number\n        children?: Snippet\n    }\n\n    const { ordered = false, start = 1, children }: Props = $props()\n</script>\n\n{#if ordered}\n    <ol {start}>{@render children?.()}</ol>\n{:else}\n    <ul>{@render children?.()}</ul>\n{/if}\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n        listItemIndex?: number\n    }\n\n    // trunk-ignore(eslint/@typescript-eslint/no-unused-vars,eslint/no-unused-vars)\n    const { children, listItemIndex = undefined }: Props = $props()\n</script>\n\n<li>{@render children?.()}</li>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<p>{@render children?.()}</p>\n","<script lang=\"ts\">\n    interface Props {\n        text?: string\n    }\n    const { text }: Props = $props()\n</script>\n\n{text}\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<strong>{@render children?.()}</strong>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<table>{@render children?.()}</table>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<tbody>{@render children?.()}</tbody>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        header: boolean\n        align: 'left' | 'center' | 'right' | 'justify' | 'char' | null | undefined\n        children?: Snippet\n    }\n\n    const { header, align, children }: Props = $props()\n\n    // Convert alignment to style object if alignment is specified\n    const style = $derived(align ? `text-align: ${align}` : undefined)\n</script>\n\n{#if header}\n    <th {style}>{@render children?.()}</th>\n{:else}\n    <td {style}>{@render children?.()}</td>\n{/if}\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<thead>{@render children?.()}</thead>\n","<script lang=\"ts\">\n    import type { Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n    const { children }: Props = $props()\n</script>\n\n<tr>{@render children?.()}</tr>\n","<script lang=\"ts\">\n    import { type Snippet } from 'svelte'\n\n    interface Props {\n        children?: Snippet\n    }\n\n    const { children }: Props = $props()\n</script>\n\n{@render children?.()}\n","export { default as Slugger } from 'github-slugger';\nexport { Lexer } from 'marked';\nimport {} from '../renderers/html/index.js';\nimport { Blockquote, Br, Code, Codespan, Del, Em, Heading, Hr, Html, Image, Link, List, ListItem, Paragraph, RawText, Strong, Table, TableBody, TableCell, TableHead, TableRow, Text } from '../renderers/index.js';\n/**\n * Default renderer configuration mapping markdown elements to Svelte components.\n * Provides out-of-the-box rendering capabilities while allowing for customization.\n *\n * Implementation notes:\n * - All components are lazy-loaded for better performance\n * - Null values indicate optional renderers\n * - Components are type-checked against the Renderers interface\n *\n * @const {Renderers}\n */\nexport const defaultRenderers = {\n    heading: Heading,\n    paragraph: Paragraph,\n    text: Text,\n    image: Image,\n    link: Link,\n    em: Em,\n    strong: Strong,\n    codespan: Codespan,\n    del: Del,\n    table: Table,\n    tablehead: TableHead,\n    tablebody: TableBody,\n    tablerow: TableRow,\n    tablecell: TableCell,\n    list: List,\n    orderedlistitem: null,\n    unorderedlistitem: null,\n    listitem: ListItem,\n    hr: Hr,\n    html: Html,\n    blockquote: Blockquote,\n    code: Code,\n    br: Br,\n    rawtext: RawText\n};\n/**\n * Default configuration options for the markdown parser.\n * Provides sensible defaults while allowing for customization.\n *\n * Notable defaults:\n * - GitHub Flavored Markdown enabled\n * - Header IDs generated automatically\n * - No syntax highlighting by default\n * - HTML sanitization disabled\n * - Standard markdown parsing rules\n *\n * @const {SvelteMarkdownOptions}\n */\nexport const defaultOptions = {\n    async: false,\n    breaks: false,\n    gfm: true,\n    pedantic: false,\n    renderer: null,\n    silent: false,\n    tokenizer: null,\n    walkTokens: null,\n    // Custom options\n    headerIds: true,\n    headerPrefix: ''\n};\n","// Generated using scripts/write-decode-map.ts\nexport const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n    .split(\"\")\n    .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n    .split(\"\")\n    .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","import { EntityDecoder, DecodingMode, htmlDecodeTree, xmlDecodeTree, } from \"entities/decode\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n    CharCodes[CharCodes[\"NewLine\"] = 10] = \"NewLine\";\n    CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n    CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n    CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n    CharCodes[CharCodes[\"ExclamationMark\"] = 33] = \"ExclamationMark\";\n    CharCodes[CharCodes[\"Number\"] = 35] = \"Number\";\n    CharCodes[CharCodes[\"Amp\"] = 38] = \"Amp\";\n    CharCodes[CharCodes[\"SingleQuote\"] = 39] = \"SingleQuote\";\n    CharCodes[CharCodes[\"DoubleQuote\"] = 34] = \"DoubleQuote\";\n    CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n    CharCodes[CharCodes[\"Slash\"] = 47] = \"Slash\";\n    CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n    CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n    CharCodes[CharCodes[\"Semi\"] = 59] = \"Semi\";\n    CharCodes[CharCodes[\"Lt\"] = 60] = \"Lt\";\n    CharCodes[CharCodes[\"Eq\"] = 61] = \"Eq\";\n    CharCodes[CharCodes[\"Gt\"] = 62] = \"Gt\";\n    CharCodes[CharCodes[\"Questionmark\"] = 63] = \"Questionmark\";\n    CharCodes[CharCodes[\"UpperA\"] = 65] = \"UpperA\";\n    CharCodes[CharCodes[\"LowerA\"] = 97] = \"LowerA\";\n    CharCodes[CharCodes[\"UpperF\"] = 70] = \"UpperF\";\n    CharCodes[CharCodes[\"LowerF\"] = 102] = \"LowerF\";\n    CharCodes[CharCodes[\"UpperZ\"] = 90] = \"UpperZ\";\n    CharCodes[CharCodes[\"LowerZ\"] = 122] = \"LowerZ\";\n    CharCodes[CharCodes[\"LowerX\"] = 120] = \"LowerX\";\n    CharCodes[CharCodes[\"OpeningSquareBracket\"] = 91] = \"OpeningSquareBracket\";\n})(CharCodes || (CharCodes = {}));\n/** All the states the tokenizer can be in. */\nvar State;\n(function (State) {\n    State[State[\"Text\"] = 1] = \"Text\";\n    State[State[\"BeforeTagName\"] = 2] = \"BeforeTagName\";\n    State[State[\"InTagName\"] = 3] = \"InTagName\";\n    State[State[\"InSelfClosingTag\"] = 4] = \"InSelfClosingTag\";\n    State[State[\"BeforeClosingTagName\"] = 5] = \"BeforeClosingTagName\";\n    State[State[\"InClosingTagName\"] = 6] = \"InClosingTagName\";\n    State[State[\"AfterClosingTagName\"] = 7] = \"AfterClosingTagName\";\n    // Attributes\n    State[State[\"BeforeAttributeName\"] = 8] = \"BeforeAttributeName\";\n    State[State[\"InAttributeName\"] = 9] = \"InAttributeName\";\n    State[State[\"AfterAttributeName\"] = 10] = \"AfterAttributeName\";\n    State[State[\"BeforeAttributeValue\"] = 11] = \"BeforeAttributeValue\";\n    State[State[\"InAttributeValueDq\"] = 12] = \"InAttributeValueDq\";\n    State[State[\"InAttributeValueSq\"] = 13] = \"InAttributeValueSq\";\n    State[State[\"InAttributeValueNq\"] = 14] = \"InAttributeValueNq\";\n    // Declarations\n    State[State[\"BeforeDeclaration\"] = 15] = \"BeforeDeclaration\";\n    State[State[\"InDeclaration\"] = 16] = \"InDeclaration\";\n    // Processing instructions\n    State[State[\"InProcessingInstruction\"] = 17] = \"InProcessingInstruction\";\n    // Comments & CDATA\n    State[State[\"BeforeComment\"] = 18] = \"BeforeComment\";\n    State[State[\"CDATASequence\"] = 19] = \"CDATASequence\";\n    State[State[\"InSpecialComment\"] = 20] = \"InSpecialComment\";\n    State[State[\"InCommentLike\"] = 21] = \"InCommentLike\";\n    // Special tags\n    State[State[\"BeforeSpecialS\"] = 22] = \"BeforeSpecialS\";\n    State[State[\"BeforeSpecialT\"] = 23] = \"BeforeSpecialT\";\n    State[State[\"SpecialStartSequence\"] = 24] = \"SpecialStartSequence\";\n    State[State[\"InSpecialTag\"] = 25] = \"InSpecialTag\";\n    State[State[\"InEntity\"] = 26] = \"InEntity\";\n})(State || (State = {}));\nfunction isWhitespace(c) {\n    return (c === CharCodes.Space ||\n        c === CharCodes.NewLine ||\n        c === CharCodes.Tab ||\n        c === CharCodes.FormFeed ||\n        c === CharCodes.CarriageReturn);\n}\nfunction isEndOfTagSection(c) {\n    return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c);\n}\nfunction isASCIIAlpha(c) {\n    return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) ||\n        (c >= CharCodes.UpperA && c <= CharCodes.UpperZ));\n}\nexport var QuoteType;\n(function (QuoteType) {\n    QuoteType[QuoteType[\"NoValue\"] = 0] = \"NoValue\";\n    QuoteType[QuoteType[\"Unquoted\"] = 1] = \"Unquoted\";\n    QuoteType[QuoteType[\"Single\"] = 2] = \"Single\";\n    QuoteType[QuoteType[\"Double\"] = 3] = \"Double\";\n})(QuoteType || (QuoteType = {}));\n/**\n * Sequences used to match longer strings.\n *\n * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End\n * sequences with an increased offset.\n */\nconst Sequences = {\n    Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), // CDATA[\n    CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), // ]]>\n    CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), // `-->`\n    ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), // `</script`\n    StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), // `</style`\n    TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title`\n    TextareaEnd: new Uint8Array([\n        0x3c, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61,\n    ]), // `</textarea`\n    XmpEnd: new Uint8Array([0x3c, 0x2f, 0x78, 0x6d, 0x70]), // `</xmp`\n};\nexport default class Tokenizer {\n    constructor({ xmlMode = false, decodeEntities = true, }, cbs) {\n        this.cbs = cbs;\n        /** The current state the tokenizer is in. */\n        this.state = State.Text;\n        /** The read buffer. */\n        this.buffer = \"\";\n        /** The beginning of the section that is currently being read. */\n        this.sectionStart = 0;\n        /** The index within the buffer that we are currently looking at. */\n        this.index = 0;\n        /** The start of the last entity. */\n        this.entityStart = 0;\n        /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */\n        this.baseState = State.Text;\n        /** For special parsing behavior inside of script and style tags. */\n        this.isSpecial = false;\n        /** Indicates whether the tokenizer has been paused. */\n        this.running = true;\n        /** The offset of the current buffer. */\n        this.offset = 0;\n        this.currentSequence = undefined;\n        this.sequenceIndex = 0;\n        this.xmlMode = xmlMode;\n        this.decodeEntities = decodeEntities;\n        this.entityDecoder = new EntityDecoder(xmlMode ? xmlDecodeTree : htmlDecodeTree, (cp, consumed) => this.emitCodePoint(cp, consumed));\n    }\n    reset() {\n        this.state = State.Text;\n        this.buffer = \"\";\n        this.sectionStart = 0;\n        this.index = 0;\n        this.baseState = State.Text;\n        this.currentSequence = undefined;\n        this.running = true;\n        this.offset = 0;\n    }\n    write(chunk) {\n        this.offset += this.buffer.length;\n        this.buffer = chunk;\n        this.parse();\n    }\n    end() {\n        if (this.running)\n            this.finish();\n    }\n    pause() {\n        this.running = false;\n    }\n    resume() {\n        this.running = true;\n        if (this.index < this.buffer.length + this.offset) {\n            this.parse();\n        }\n    }\n    stateText(c) {\n        if (c === CharCodes.Lt ||\n            (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) {\n            if (this.index > this.sectionStart) {\n                this.cbs.ontext(this.sectionStart, this.index);\n            }\n            this.state = State.BeforeTagName;\n            this.sectionStart = this.index;\n        }\n        else if (this.decodeEntities && c === CharCodes.Amp) {\n            this.startEntity();\n        }\n    }\n    stateSpecialStartSequence(c) {\n        const isEnd = this.sequenceIndex === this.currentSequence.length;\n        const isMatch = isEnd\n            ? // If we are at the end of the sequence, make sure the tag name has ended\n                isEndOfTagSection(c)\n            : // Otherwise, do a case-insensitive comparison\n                (c | 0x20) === this.currentSequence[this.sequenceIndex];\n        if (!isMatch) {\n            this.isSpecial = false;\n        }\n        else if (!isEnd) {\n            this.sequenceIndex++;\n            return;\n        }\n        this.sequenceIndex = 0;\n        this.state = State.InTagName;\n        this.stateInTagName(c);\n    }\n    /** Look for an end tag. For <title> tags, also decode entities. */\n    stateInSpecialTag(c) {\n        if (this.sequenceIndex === this.currentSequence.length) {\n            if (c === CharCodes.Gt || isWhitespace(c)) {\n                const endOfText = this.index - this.currentSequence.length;\n                if (this.sectionStart < endOfText) {\n                    // Spoof the index so that reported locations match up.\n                    const actualIndex = this.index;\n                    this.index = endOfText;\n                    this.cbs.ontext(this.sectionStart, endOfText);\n                    this.index = actualIndex;\n                }\n                this.isSpecial = false;\n                this.sectionStart = endOfText + 2; // Skip over the `</`\n                this.stateInClosingTagName(c);\n                return; // We are done; skip the rest of the function.\n            }\n            this.sequenceIndex = 0;\n        }\n        if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) {\n            this.sequenceIndex += 1;\n        }\n        else if (this.sequenceIndex === 0) {\n            if (this.currentSequence === Sequences.TitleEnd) {\n                // We have to parse entities in <title> tags.\n                if (this.decodeEntities && c === CharCodes.Amp) {\n                    this.startEntity();\n                }\n            }\n            else if (this.fastForwardTo(CharCodes.Lt)) {\n                // Outside of <title> tags, we can fast-forward.\n                this.sequenceIndex = 1;\n            }\n        }\n        else {\n            // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`.\n            this.sequenceIndex = Number(c === CharCodes.Lt);\n        }\n    }\n    stateCDATASequence(c) {\n        if (c === Sequences.Cdata[this.sequenceIndex]) {\n            if (++this.sequenceIndex === Sequences.Cdata.length) {\n                this.state = State.InCommentLike;\n                this.currentSequence = Sequences.CdataEnd;\n                this.sequenceIndex = 0;\n                this.sectionStart = this.index + 1;\n            }\n        }\n        else {\n            this.sequenceIndex = 0;\n            this.state = State.InDeclaration;\n            this.stateInDeclaration(c); // Reconsume the character\n        }\n    }\n    /**\n     * When we wait for one specific character, we can speed things up\n     * by skipping through the buffer until we find it.\n     *\n     * @returns Whether the character was found.\n     */\n    fastForwardTo(c) {\n        while (++this.index < this.buffer.length + this.offset) {\n            if (this.buffer.charCodeAt(this.index - this.offset) === c) {\n                return true;\n            }\n        }\n        /*\n         * We increment the index at the end of the `parse` loop,\n         * so set it to `buffer.length - 1` here.\n         *\n         * TODO: Refactor `parse` to increment index before calling states.\n         */\n        this.index = this.buffer.length + this.offset - 1;\n        return false;\n    }\n    /**\n     * Comments and CDATA end with `-->` and `]]>`.\n     *\n     * Their common qualities are:\n     * - Their end sequences have a distinct character they start with.\n     * - That character is then repeated, so we have to check multiple repeats.\n     * - All characters but the start character of the sequence can be skipped.\n     */\n    stateInCommentLike(c) {\n        if (c === this.currentSequence[this.sequenceIndex]) {\n            if (++this.sequenceIndex === this.currentSequence.length) {\n                if (this.currentSequence === Sequences.CdataEnd) {\n                    this.cbs.oncdata(this.sectionStart, this.index, 2);\n                }\n                else {\n                    this.cbs.oncomment(this.sectionStart, this.index, 2);\n                }\n                this.sequenceIndex = 0;\n                this.sectionStart = this.index + 1;\n                this.state = State.Text;\n            }\n        }\n        else if (this.sequenceIndex === 0) {\n            // Fast-forward to the first character of the sequence\n            if (this.fastForwardTo(this.currentSequence[0])) {\n                this.sequenceIndex = 1;\n            }\n        }\n        else if (c !== this.currentSequence[this.sequenceIndex - 1]) {\n            // Allow long sequences, eg. --->, ]]]>\n            this.sequenceIndex = 0;\n        }\n    }\n    /**\n     * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name.\n     *\n     * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar).\n     * We allow anything that wouldn't end the tag.\n     */\n    isTagStartChar(c) {\n        return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c);\n    }\n    startSpecial(sequence, offset) {\n        this.isSpecial = true;\n        this.currentSequence = sequence;\n        this.sequenceIndex = offset;\n        this.state = State.SpecialStartSequence;\n    }\n    stateBeforeTagName(c) {\n        if (c === CharCodes.ExclamationMark) {\n            this.state = State.BeforeDeclaration;\n            this.sectionStart = this.index + 1;\n        }\n        else if (c === CharCodes.Questionmark) {\n            this.state = State.InProcessingInstruction;\n            this.sectionStart = this.index + 1;\n        }\n        else if (this.isTagStartChar(c)) {\n            const lower = c | 0x20;\n            this.sectionStart = this.index;\n            if (this.xmlMode) {\n                this.state = State.InTagName;\n            }\n            else if (lower === Sequences.ScriptEnd[2]) {\n                this.state = State.BeforeSpecialS;\n            }\n            else if (lower === Sequences.TitleEnd[2] ||\n                lower === Sequences.XmpEnd[2]) {\n                this.state = State.BeforeSpecialT;\n            }\n            else {\n                this.state = State.InTagName;\n            }\n        }\n        else if (c === CharCodes.Slash) {\n            this.state = State.BeforeClosingTagName;\n        }\n        else {\n            this.state = State.Text;\n            this.stateText(c);\n        }\n    }\n    stateInTagName(c) {\n        if (isEndOfTagSection(c)) {\n            this.cbs.onopentagname(this.sectionStart, this.index);\n            this.sectionStart = -1;\n            this.state = State.BeforeAttributeName;\n            this.stateBeforeAttributeName(c);\n        }\n    }\n    stateBeforeClosingTagName(c) {\n        if (isWhitespace(c)) {\n            // Ignore\n        }\n        else if (c === CharCodes.Gt) {\n            this.state = State.Text;\n        }\n        else {\n            this.state = this.isTagStartChar(c)\n                ? State.InClosingTagName\n                : State.InSpecialComment;\n            this.sectionStart = this.index;\n        }\n    }\n    stateInClosingTagName(c) {\n        if (c === CharCodes.Gt || isWhitespace(c)) {\n            this.cbs.onclosetag(this.sectionStart, this.index);\n            this.sectionStart = -1;\n            this.state = State.AfterClosingTagName;\n            this.stateAfterClosingTagName(c);\n        }\n    }\n    stateAfterClosingTagName(c) {\n        // Skip everything until \">\"\n        if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n            this.state = State.Text;\n            this.sectionStart = this.index + 1;\n        }\n    }\n    stateBeforeAttributeName(c) {\n        if (c === CharCodes.Gt) {\n            this.cbs.onopentagend(this.index);\n            if (this.isSpecial) {\n                this.state = State.InSpecialTag;\n                this.sequenceIndex = 0;\n            }\n            else {\n                this.state = State.Text;\n            }\n            this.sectionStart = this.index + 1;\n        }\n        else if (c === CharCodes.Slash) {\n            this.state = State.InSelfClosingTag;\n        }\n        else if (!isWhitespace(c)) {\n            this.state = State.InAttributeName;\n            this.sectionStart = this.index;\n        }\n    }\n    stateInSelfClosingTag(c) {\n        if (c === CharCodes.Gt) {\n            this.cbs.onselfclosingtag(this.index);\n            this.state = State.Text;\n            this.sectionStart = this.index + 1;\n            this.isSpecial = false; // Reset special state, in case of self-closing special tags\n        }\n        else if (!isWhitespace(c)) {\n            this.state = State.BeforeAttributeName;\n            this.stateBeforeAttributeName(c);\n        }\n    }\n    stateInAttributeName(c) {\n        if (c === CharCodes.Eq || isEndOfTagSection(c)) {\n            this.cbs.onattribname(this.sectionStart, this.index);\n            this.sectionStart = this.index;\n            this.state = State.AfterAttributeName;\n            this.stateAfterAttributeName(c);\n        }\n    }\n    stateAfterAttributeName(c) {\n        if (c === CharCodes.Eq) {\n            this.state = State.BeforeAttributeValue;\n        }\n        else if (c === CharCodes.Slash || c === CharCodes.Gt) {\n            this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n            this.sectionStart = -1;\n            this.state = State.BeforeAttributeName;\n            this.stateBeforeAttributeName(c);\n        }\n        else if (!isWhitespace(c)) {\n            this.cbs.onattribend(QuoteType.NoValue, this.sectionStart);\n            this.state = State.InAttributeName;\n            this.sectionStart = this.index;\n        }\n    }\n    stateBeforeAttributeValue(c) {\n        if (c === CharCodes.DoubleQuote) {\n            this.state = State.InAttributeValueDq;\n            this.sectionStart = this.index + 1;\n        }\n        else if (c === CharCodes.SingleQuote) {\n            this.state = State.InAttributeValueSq;\n            this.sectionStart = this.index + 1;\n        }\n        else if (!isWhitespace(c)) {\n            this.sectionStart = this.index;\n            this.state = State.InAttributeValueNq;\n            this.stateInAttributeValueNoQuotes(c); // Reconsume token\n        }\n    }\n    handleInAttributeValue(c, quote) {\n        if (c === quote ||\n            (!this.decodeEntities && this.fastForwardTo(quote))) {\n            this.cbs.onattribdata(this.sectionStart, this.index);\n            this.sectionStart = -1;\n            this.cbs.onattribend(quote === CharCodes.DoubleQuote\n                ? QuoteType.Double\n                : QuoteType.Single, this.index + 1);\n            this.state = State.BeforeAttributeName;\n        }\n        else if (this.decodeEntities && c === CharCodes.Amp) {\n            this.startEntity();\n        }\n    }\n    stateInAttributeValueDoubleQuotes(c) {\n        this.handleInAttributeValue(c, CharCodes.DoubleQuote);\n    }\n    stateInAttributeValueSingleQuotes(c) {\n        this.handleInAttributeValue(c, CharCodes.SingleQuote);\n    }\n    stateInAttributeValueNoQuotes(c) {\n        if (isWhitespace(c) || c === CharCodes.Gt) {\n            this.cbs.onattribdata(this.sectionStart, this.index);\n            this.sectionStart = -1;\n            this.cbs.onattribend(QuoteType.Unquoted, this.index);\n            this.state = State.BeforeAttributeName;\n            this.stateBeforeAttributeName(c);\n        }\n        else if (this.decodeEntities && c === CharCodes.Amp) {\n            this.startEntity();\n        }\n    }\n    stateBeforeDeclaration(c) {\n        if (c === CharCodes.OpeningSquareBracket) {\n            this.state = State.CDATASequence;\n            this.sequenceIndex = 0;\n        }\n        else {\n            this.state =\n                c === CharCodes.Dash\n                    ? State.BeforeComment\n                    : State.InDeclaration;\n        }\n    }\n    stateInDeclaration(c) {\n        if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n            this.cbs.ondeclaration(this.sectionStart, this.index);\n            this.state = State.Text;\n            this.sectionStart = this.index + 1;\n        }\n    }\n    stateInProcessingInstruction(c) {\n        if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n            this.cbs.onprocessinginstruction(this.sectionStart, this.index);\n            this.state = State.Text;\n            this.sectionStart = this.index + 1;\n        }\n    }\n    stateBeforeComment(c) {\n        if (c === CharCodes.Dash) {\n            this.state = State.InCommentLike;\n            this.currentSequence = Sequences.CommentEnd;\n            // Allow short comments (eg. <!-->)\n            this.sequenceIndex = 2;\n            this.sectionStart = this.index + 1;\n        }\n        else {\n            this.state = State.InDeclaration;\n        }\n    }\n    stateInSpecialComment(c) {\n        if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) {\n            this.cbs.oncomment(this.sectionStart, this.index, 0);\n            this.state = State.Text;\n            this.sectionStart = this.index + 1;\n        }\n    }\n    stateBeforeSpecialS(c) {\n        const lower = c | 0x20;\n        if (lower === Sequences.ScriptEnd[3]) {\n            this.startSpecial(Sequences.ScriptEnd, 4);\n        }\n        else if (lower === Sequences.StyleEnd[3]) {\n            this.startSpecial(Sequences.StyleEnd, 4);\n        }\n        else {\n            this.state = State.InTagName;\n            this.stateInTagName(c); // Consume the token again\n        }\n    }\n    stateBeforeSpecialT(c) {\n        const lower = c | 0x20;\n        switch (lower) {\n            case Sequences.TitleEnd[3]: {\n                this.startSpecial(Sequences.TitleEnd, 4);\n                break;\n            }\n            case Sequences.TextareaEnd[3]: {\n                this.startSpecial(Sequences.TextareaEnd, 4);\n                break;\n            }\n            case Sequences.XmpEnd[3]: {\n                this.startSpecial(Sequences.XmpEnd, 4);\n                break;\n            }\n            default: {\n                this.state = State.InTagName;\n                this.stateInTagName(c); // Consume the token again\n            }\n        }\n    }\n    startEntity() {\n        this.baseState = this.state;\n        this.state = State.InEntity;\n        this.entityStart = this.index;\n        this.entityDecoder.startEntity(this.xmlMode\n            ? DecodingMode.Strict\n            : this.baseState === State.Text ||\n                this.baseState === State.InSpecialTag\n                ? DecodingMode.Legacy\n                : DecodingMode.Attribute);\n    }\n    stateInEntity() {\n        const length = this.entityDecoder.write(this.buffer, this.index - this.offset);\n        // If `length` is positive, we are done with the entity.\n        if (length >= 0) {\n            this.state = this.baseState;\n            if (length === 0) {\n                this.index = this.entityStart;\n            }\n        }\n        else {\n            // Mark buffer as consumed.\n            this.index = this.offset + this.buffer.length - 1;\n        }\n    }\n    /**\n     * Remove data that has already been consumed from the buffer.\n     */\n    cleanup() {\n        // If we are inside of text or attributes, emit what we already have.\n        if (this.running && this.sectionStart !== this.index) {\n            if (this.state === State.Text ||\n                (this.state === State.InSpecialTag && this.sequenceIndex === 0)) {\n                this.cbs.ontext(this.sectionStart, this.index);\n                this.sectionStart = this.index;\n            }\n            else if (this.state === State.InAttributeValueDq ||\n                this.state === State.InAttributeValueSq ||\n                this.state === State.InAttributeValueNq) {\n                this.cbs.onattribdata(this.sectionStart, this.index);\n                this.sectionStart = this.index;\n            }\n        }\n    }\n    shouldContinue() {\n        return this.index < this.buffer.length + this.offset && this.running;\n    }\n    /**\n     * Iterates through the buffer, calling the function corresponding to the current state.\n     *\n     * States that are more likely to be hit are higher up, as a performance improvement.\n     */\n    parse() {\n        while (this.shouldContinue()) {\n            const c = this.buffer.charCodeAt(this.index - this.offset);\n            switch (this.state) {\n                case State.Text: {\n                    this.stateText(c);\n                    break;\n                }\n                case State.SpecialStartSequence: {\n                    this.stateSpecialStartSequence(c);\n                    break;\n                }\n                case State.InSpecialTag: {\n                    this.stateInSpecialTag(c);\n                    break;\n                }\n                case State.CDATASequence: {\n                    this.stateCDATASequence(c);\n                    break;\n                }\n                case State.InAttributeValueDq: {\n                    this.stateInAttributeValueDoubleQuotes(c);\n                    break;\n                }\n                case State.InAttributeName: {\n                    this.stateInAttributeName(c);\n                    break;\n                }\n                case State.InCommentLike: {\n                    this.stateInCommentLike(c);\n                    break;\n                }\n                case State.InSpecialComment: {\n                    this.stateInSpecialComment(c);\n                    break;\n                }\n                case State.BeforeAttributeName: {\n                    this.stateBeforeAttributeName(c);\n                    break;\n                }\n                case State.InTagName: {\n                    this.stateInTagName(c);\n                    break;\n                }\n                case State.InClosingTagName: {\n                    this.stateInClosingTagName(c);\n                    break;\n                }\n                case State.BeforeTagName: {\n                    this.stateBeforeTagName(c);\n                    break;\n                }\n                case State.AfterAttributeName: {\n                    this.stateAfterAttributeName(c);\n                    break;\n                }\n                case State.InAttributeValueSq: {\n                    this.stateInAttributeValueSingleQuotes(c);\n                    break;\n                }\n                case State.BeforeAttributeValue: {\n                    this.stateBeforeAttributeValue(c);\n                    break;\n                }\n                case State.BeforeClosingTagName: {\n                    this.stateBeforeClosingTagName(c);\n                    break;\n                }\n                case State.AfterClosingTagName: {\n                    this.stateAfterClosingTagName(c);\n                    break;\n                }\n                case State.BeforeSpecialS: {\n                    this.stateBeforeSpecialS(c);\n                    break;\n                }\n                case State.BeforeSpecialT: {\n                    this.stateBeforeSpecialT(c);\n                    break;\n                }\n                case State.InAttributeValueNq: {\n                    this.stateInAttributeValueNoQuotes(c);\n                    break;\n                }\n                case State.InSelfClosingTag: {\n                    this.stateInSelfClosingTag(c);\n                    break;\n                }\n                case State.InDeclaration: {\n                    this.stateInDeclaration(c);\n                    break;\n                }\n                case State.BeforeDeclaration: {\n                    this.stateBeforeDeclaration(c);\n                    break;\n                }\n                case State.BeforeComment: {\n                    this.stateBeforeComment(c);\n                    break;\n                }\n                case State.InProcessingInstruction: {\n                    this.stateInProcessingInstruction(c);\n                    break;\n                }\n                case State.InEntity: {\n                    this.stateInEntity();\n                    break;\n                }\n            }\n            this.index++;\n        }\n        this.cleanup();\n    }\n    finish() {\n        if (this.state === State.InEntity) {\n            this.entityDecoder.end();\n            this.state = this.baseState;\n        }\n        this.handleTrailingData();\n        this.cbs.onend();\n    }\n    /** Handle any trailing data. */\n    handleTrailingData() {\n        const endIndex = this.buffer.length + this.offset;\n        // If there is no remaining data, we are done.\n        if (this.sectionStart >= endIndex) {\n            return;\n        }\n        if (this.state === State.InCommentLike) {\n            if (this.currentSequence === Sequences.CdataEnd) {\n                this.cbs.oncdata(this.sectionStart, endIndex, 0);\n            }\n            else {\n                this.cbs.oncomment(this.sectionStart, endIndex, 0);\n            }\n        }\n        else if (this.state === State.InTagName ||\n            this.state === State.BeforeAttributeName ||\n            this.state === State.BeforeAttributeValue ||\n            this.state === State.AfterAttributeName ||\n            this.state === State.InAttributeName ||\n            this.state === State.InAttributeValueSq ||\n            this.state === State.InAttributeValueDq ||\n            this.state === State.InAttributeValueNq ||\n            this.state === State.InClosingTagName) {\n            /*\n             * If we are currently in an opening or closing tag, us not calling the\n             * respective callback signals that the tag should be ignored.\n             */\n        }\n        else {\n            this.cbs.ontext(this.sectionStart, endIndex);\n        }\n    }\n    emitCodePoint(cp, consumed) {\n        if (this.baseState !== State.Text &&\n            this.baseState !== State.InSpecialTag) {\n            if (this.sectionStart < this.entityStart) {\n                this.cbs.onattribdata(this.sectionStart, this.entityStart);\n            }\n            this.sectionStart = this.entityStart + consumed;\n            this.index = this.sectionStart - 1;\n            this.cbs.onattribentity(cp);\n        }\n        else {\n            if (this.sectionStart < this.entityStart) {\n                this.cbs.ontext(this.sectionStart, this.entityStart);\n            }\n            this.sectionStart = this.entityStart + consumed;\n            this.index = this.sectionStart - 1;\n            this.cbs.ontextentity(cp, this.sectionStart);\n        }\n    }\n}\n//# sourceMappingURL=Tokenizer.js.map","import Tokenizer, { QuoteType } from \"./Tokenizer.js\";\nimport { fromCodePoint } from \"entities/decode\";\nconst formTags = new Set([\n    \"input\",\n    \"option\",\n    \"optgroup\",\n    \"select\",\n    \"button\",\n    \"datalist\",\n    \"textarea\",\n]);\nconst pTag = new Set([\"p\"]);\nconst tableSectionTags = new Set([\"thead\", \"tbody\"]);\nconst ddtTags = new Set([\"dd\", \"dt\"]);\nconst rtpTags = new Set([\"rt\", \"rp\"]);\nconst openImpliesClose = new Map([\n    [\"tr\", new Set([\"tr\", \"th\", \"td\"])],\n    [\"th\", new Set([\"th\"])],\n    [\"td\", new Set([\"thead\", \"th\", \"td\"])],\n    [\"body\", new Set([\"head\", \"link\", \"script\"])],\n    [\"li\", new Set([\"li\"])],\n    [\"p\", pTag],\n    [\"h1\", pTag],\n    [\"h2\", pTag],\n    [\"h3\", pTag],\n    [\"h4\", pTag],\n    [\"h5\", pTag],\n    [\"h6\", pTag],\n    [\"select\", formTags],\n    [\"input\", formTags],\n    [\"output\", formTags],\n    [\"button\", formTags],\n    [\"datalist\", formTags],\n    [\"textarea\", formTags],\n    [\"option\", new Set([\"option\"])],\n    [\"optgroup\", new Set([\"optgroup\", \"option\"])],\n    [\"dd\", ddtTags],\n    [\"dt\", ddtTags],\n    [\"address\", pTag],\n    [\"article\", pTag],\n    [\"aside\", pTag],\n    [\"blockquote\", pTag],\n    [\"details\", pTag],\n    [\"div\", pTag],\n    [\"dl\", pTag],\n    [\"fieldset\", pTag],\n    [\"figcaption\", pTag],\n    [\"figure\", pTag],\n    [\"footer\", pTag],\n    [\"form\", pTag],\n    [\"header\", pTag],\n    [\"hr\", pTag],\n    [\"main\", pTag],\n    [\"nav\", pTag],\n    [\"ol\", pTag],\n    [\"pre\", pTag],\n    [\"section\", pTag],\n    [\"table\", pTag],\n    [\"ul\", pTag],\n    [\"rt\", rtpTags],\n    [\"rp\", rtpTags],\n    [\"tbody\", tableSectionTags],\n    [\"tfoot\", tableSectionTags],\n]);\nconst voidElements = new Set([\n    \"area\",\n    \"base\",\n    \"basefont\",\n    \"br\",\n    \"col\",\n    \"command\",\n    \"embed\",\n    \"frame\",\n    \"hr\",\n    \"img\",\n    \"input\",\n    \"isindex\",\n    \"keygen\",\n    \"link\",\n    \"meta\",\n    \"param\",\n    \"source\",\n    \"track\",\n    \"wbr\",\n]);\nconst foreignContextElements = new Set([\"math\", \"svg\"]);\nconst htmlIntegrationElements = new Set([\n    \"mi\",\n    \"mo\",\n    \"mn\",\n    \"ms\",\n    \"mtext\",\n    \"annotation-xml\",\n    \"foreignobject\",\n    \"desc\",\n    \"title\",\n]);\nconst reNameEnd = /\\s|\\//;\nexport class Parser {\n    constructor(cbs, options = {}) {\n        var _a, _b, _c, _d, _e, _f;\n        this.options = options;\n        /** The start index of the last event. */\n        this.startIndex = 0;\n        /** The end index of the last event. */\n        this.endIndex = 0;\n        /**\n         * Store the start index of the current open tag,\n         * so we can update the start index for attributes.\n         */\n        this.openTagStart = 0;\n        this.tagname = \"\";\n        this.attribname = \"\";\n        this.attribvalue = \"\";\n        this.attribs = null;\n        this.stack = [];\n        this.buffers = [];\n        this.bufferOffset = 0;\n        /** The index of the last written buffer. Used when resuming after a `pause()`. */\n        this.writeIndex = 0;\n        /** Indicates whether the parser has finished running / `.end` has been called. */\n        this.ended = false;\n        this.cbs = cbs !== null && cbs !== void 0 ? cbs : {};\n        this.htmlMode = !this.options.xmlMode;\n        this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode;\n        this.lowerCaseAttributeNames =\n            (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode;\n        this.recognizeSelfClosing =\n            (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode;\n        this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer)(this.options, this);\n        this.foreignContext = [!this.htmlMode];\n        (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this);\n    }\n    // Tokenizer event handlers\n    /** @internal */\n    ontext(start, endIndex) {\n        var _a, _b;\n        const data = this.getSlice(start, endIndex);\n        this.endIndex = endIndex - 1;\n        (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data);\n        this.startIndex = endIndex;\n    }\n    /** @internal */\n    ontextentity(cp, endIndex) {\n        var _a, _b;\n        this.endIndex = endIndex - 1;\n        (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, fromCodePoint(cp));\n        this.startIndex = endIndex;\n    }\n    /**\n     * Checks if the current tag is a void element. Override this if you want\n     * to specify your own additional void elements.\n     */\n    isVoidElement(name) {\n        return this.htmlMode && voidElements.has(name);\n    }\n    /** @internal */\n    onopentagname(start, endIndex) {\n        this.endIndex = endIndex;\n        let name = this.getSlice(start, endIndex);\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        this.emitOpenTag(name);\n    }\n    emitOpenTag(name) {\n        var _a, _b, _c, _d;\n        this.openTagStart = this.startIndex;\n        this.tagname = name;\n        const impliesClose = this.htmlMode && openImpliesClose.get(name);\n        if (impliesClose) {\n            while (this.stack.length > 0 && impliesClose.has(this.stack[0])) {\n                const element = this.stack.shift();\n                (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true);\n            }\n        }\n        if (!this.isVoidElement(name)) {\n            this.stack.unshift(name);\n            if (this.htmlMode) {\n                if (foreignContextElements.has(name)) {\n                    this.foreignContext.unshift(true);\n                }\n                else if (htmlIntegrationElements.has(name)) {\n                    this.foreignContext.unshift(false);\n                }\n            }\n        }\n        (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name);\n        if (this.cbs.onopentag)\n            this.attribs = {};\n    }\n    endOpenTag(isImplied) {\n        var _a, _b;\n        this.startIndex = this.openTagStart;\n        if (this.attribs) {\n            (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied);\n            this.attribs = null;\n        }\n        if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) {\n            this.cbs.onclosetag(this.tagname, true);\n        }\n        this.tagname = \"\";\n    }\n    /** @internal */\n    onopentagend(endIndex) {\n        this.endIndex = endIndex;\n        this.endOpenTag(false);\n        // Set `startIndex` for next node\n        this.startIndex = endIndex + 1;\n    }\n    /** @internal */\n    onclosetag(start, endIndex) {\n        var _a, _b, _c, _d, _e, _f, _g, _h;\n        this.endIndex = endIndex;\n        let name = this.getSlice(start, endIndex);\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        if (this.htmlMode &&\n            (foreignContextElements.has(name) ||\n                htmlIntegrationElements.has(name))) {\n            this.foreignContext.shift();\n        }\n        if (!this.isVoidElement(name)) {\n            const pos = this.stack.indexOf(name);\n            if (pos !== -1) {\n                for (let index = 0; index <= pos; index++) {\n                    const element = this.stack.shift();\n                    // We know the stack has sufficient elements.\n                    (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index !== pos);\n                }\n            }\n            else if (this.htmlMode && name === \"p\") {\n                // Implicit open before close\n                this.emitOpenTag(\"p\");\n                this.closeCurrentTag(true);\n            }\n        }\n        else if (this.htmlMode && name === \"br\") {\n            // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed.\n            (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, \"br\");\n            (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, \"br\", {}, true);\n            (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, \"br\", false);\n        }\n        // Set `startIndex` for next node\n        this.startIndex = endIndex + 1;\n    }\n    /** @internal */\n    onselfclosingtag(endIndex) {\n        this.endIndex = endIndex;\n        if (this.recognizeSelfClosing || this.foreignContext[0]) {\n            this.closeCurrentTag(false);\n            // Set `startIndex` for next node\n            this.startIndex = endIndex + 1;\n        }\n        else {\n            // Ignore the fact that the tag is self-closing.\n            this.onopentagend(endIndex);\n        }\n    }\n    closeCurrentTag(isOpenImplied) {\n        var _a, _b;\n        const name = this.tagname;\n        this.endOpenTag(isOpenImplied);\n        // Self-closing tags will be on the top of the stack\n        if (this.stack[0] === name) {\n            // If the opening tag isn't implied, the closing tag has to be implied.\n            (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied);\n            this.stack.shift();\n        }\n    }\n    /** @internal */\n    onattribname(start, endIndex) {\n        this.startIndex = start;\n        const name = this.getSlice(start, endIndex);\n        this.attribname = this.lowerCaseAttributeNames\n            ? name.toLowerCase()\n            : name;\n    }\n    /** @internal */\n    onattribdata(start, endIndex) {\n        this.attribvalue += this.getSlice(start, endIndex);\n    }\n    /** @internal */\n    onattribentity(cp) {\n        this.attribvalue += fromCodePoint(cp);\n    }\n    /** @internal */\n    onattribend(quote, endIndex) {\n        var _a, _b;\n        this.endIndex = endIndex;\n        (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === QuoteType.Double\n            ? '\"'\n            : quote === QuoteType.Single\n                ? \"'\"\n                : quote === QuoteType.NoValue\n                    ? undefined\n                    : null);\n        if (this.attribs &&\n            !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) {\n            this.attribs[this.attribname] = this.attribvalue;\n        }\n        this.attribvalue = \"\";\n    }\n    getInstructionName(value) {\n        const index = value.search(reNameEnd);\n        let name = index < 0 ? value : value.substr(0, index);\n        if (this.lowerCaseTagNames) {\n            name = name.toLowerCase();\n        }\n        return name;\n    }\n    /** @internal */\n    ondeclaration(start, endIndex) {\n        this.endIndex = endIndex;\n        const value = this.getSlice(start, endIndex);\n        if (this.cbs.onprocessinginstruction) {\n            const name = this.getInstructionName(value);\n            this.cbs.onprocessinginstruction(`!${name}`, `!${value}`);\n        }\n        // Set `startIndex` for next node\n        this.startIndex = endIndex + 1;\n    }\n    /** @internal */\n    onprocessinginstruction(start, endIndex) {\n        this.endIndex = endIndex;\n        const value = this.getSlice(start, endIndex);\n        if (this.cbs.onprocessinginstruction) {\n            const name = this.getInstructionName(value);\n            this.cbs.onprocessinginstruction(`?${name}`, `?${value}`);\n        }\n        // Set `startIndex` for next node\n        this.startIndex = endIndex + 1;\n    }\n    /** @internal */\n    oncomment(start, endIndex, offset) {\n        var _a, _b, _c, _d;\n        this.endIndex = endIndex;\n        (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset));\n        (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c);\n        // Set `startIndex` for next node\n        this.startIndex = endIndex + 1;\n    }\n    /** @internal */\n    oncdata(start, endIndex, offset) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n        this.endIndex = endIndex;\n        const value = this.getSlice(start, endIndex - offset);\n        if (!this.htmlMode || this.options.recognizeCDATA) {\n            (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a);\n            (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value);\n            (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e);\n        }\n        else {\n            (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`);\n            (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j);\n        }\n        // Set `startIndex` for next node\n        this.startIndex = endIndex + 1;\n    }\n    /** @internal */\n    onend() {\n        var _a, _b;\n        if (this.cbs.onclosetag) {\n            // Set the end index for all remaining tags\n            this.endIndex = this.startIndex;\n            for (let index = 0; index < this.stack.length; index++) {\n                this.cbs.onclosetag(this.stack[index], true);\n            }\n        }\n        (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a);\n    }\n    /**\n     * Resets the parser to a blank state, ready to parse a new HTML document\n     */\n    reset() {\n        var _a, _b, _c, _d;\n        (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a);\n        this.tokenizer.reset();\n        this.tagname = \"\";\n        this.attribname = \"\";\n        this.attribs = null;\n        this.stack.length = 0;\n        this.startIndex = 0;\n        this.endIndex = 0;\n        (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this);\n        this.buffers.length = 0;\n        this.foreignContext.length = 0;\n        this.foreignContext.unshift(!this.htmlMode);\n        this.bufferOffset = 0;\n        this.writeIndex = 0;\n        this.ended = false;\n    }\n    /**\n     * Resets the parser, then parses a complete document and\n     * pushes it to the handler.\n     *\n     * @param data Document to parse.\n     */\n    parseComplete(data) {\n        this.reset();\n        this.end(data);\n    }\n    getSlice(start, end) {\n        while (start - this.bufferOffset >= this.buffers[0].length) {\n            this.shiftBuffer();\n        }\n        let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset);\n        while (end - this.bufferOffset > this.buffers[0].length) {\n            this.shiftBuffer();\n            slice += this.buffers[0].slice(0, end - this.bufferOffset);\n        }\n        return slice;\n    }\n    shiftBuffer() {\n        this.bufferOffset += this.buffers[0].length;\n        this.writeIndex--;\n        this.buffers.shift();\n    }\n    /**\n     * Parses a chunk of data and calls the corresponding callbacks.\n     *\n     * @param chunk Chunk to parse.\n     */\n    write(chunk) {\n        var _a, _b;\n        if (this.ended) {\n            (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".write() after done!\"));\n            return;\n        }\n        this.buffers.push(chunk);\n        if (this.tokenizer.running) {\n            this.tokenizer.write(chunk);\n            this.writeIndex++;\n        }\n    }\n    /**\n     * Parses the end of the buffer and clears the stack, calls onend.\n     *\n     * @param chunk Optional final chunk to parse.\n     */\n    end(chunk) {\n        var _a, _b;\n        if (this.ended) {\n            (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(\".end() after done!\"));\n            return;\n        }\n        if (chunk)\n            this.write(chunk);\n        this.ended = true;\n        this.tokenizer.end();\n    }\n    /**\n     * Pauses parsing. The parser won't emit events until `resume` is called.\n     */\n    pause() {\n        this.tokenizer.pause();\n    }\n    /**\n     * Resumes parsing after `pause` was called.\n     */\n    resume() {\n        this.tokenizer.resume();\n        while (this.tokenizer.running &&\n            this.writeIndex < this.buffers.length) {\n            this.tokenizer.write(this.buffers[this.writeIndex++]);\n        }\n        if (this.ended)\n            this.tokenizer.end();\n    }\n    /**\n     * Alias of `write`, for backwards compatibility.\n     *\n     * @param chunk Chunk to parse.\n     * @deprecated\n     */\n    parseChunk(chunk) {\n        this.write(chunk);\n    }\n    /**\n     * Alias of `end`, for backwards compatibility.\n     *\n     * @param chunk Optional final chunk to parse.\n     * @deprecated\n     */\n    done(chunk) {\n        this.end(chunk);\n    }\n}\n//# sourceMappingURL=Parser.js.map","import * as htmlparser2 from 'htmlparser2';\n/**\n * Matches HTML tags with comprehensive coverage of edge cases.\n * Pattern breakdown:\n * - <\\/?         : Matches opening < and optional /\n * - [a-zA-Z]     : Tag must start with letter\n * - [a-zA-Z0-9-] : Subsequent chars can be letters, numbers, or hyphens\n * - (?:\\s+[^>]*)?: Optional attributes\n * - >            : Closing bracket\n *\n * @const {RegExp}\n */\nconst HTML_TAG_PATTERN = /<\\/?([a-zA-Z][a-zA-Z0-9-]{0,})(?:\\s+[^>]*)?>/;\nconst htmlTagRegex = new RegExp(HTML_TAG_PATTERN);\n/**\n * Regex pattern for self-closing HTML tags.\n * @const {RegExp}\n */\nconst SELF_CLOSING_TAGS = /^(br|hr|img|input|link|meta|area|base|col|embed|keygen|param|source|track|wbr)$/i;\n/**\n * Analyzes a string to determine if it contains an HTML tag and its characteristics.\n *\n * @param {string} raw - Raw string potentially containing an HTML tag\n * @returns {Object|null} Returns null if no tag found, otherwise returns:\n *    {\n *      tag: string      - The name of the HTML tag\n *      isOpening: bool  - True if opening tag, false if closing\n *    }\n *\n * @example\n * isHtmlOpenTag('<div class=\"test\">') // Returns { tag: 'div', isOpening: true }\n * isHtmlOpenTag('</span>') // Returns { tag: 'span', isOpening: false }\n * isHtmlOpenTag('plain text') // Returns null\n */\nexport const isHtmlOpenTag = (raw) => {\n    // First check if the string contains any HTML tags at all (faster than full regex match)\n    if (!htmlTagRegex.test(raw))\n        return null;\n    // If we found a tag, extract its name and check if it's an opening tag\n    const match = raw.match(HTML_TAG_PATTERN);\n    if (!match)\n        return null;\n    return { tag: match[1], isOpening: !raw.startsWith('</') };\n};\n/**\n * Formats individual HTML tokens to ensure self-closing tags are properly formatted.\n * This handles cases like <br> -> <br/> without affecting the token structure.\n *\n * @param {Token} token - HTML token to format\n * @returns {Token} Formatted token with proper self-closing syntax\n */\nconst formatSelfClosingHtmlToken = (token) => {\n    // Extract tag name from raw HTML\n    const tagMatch = token.raw.match(/<\\/?([a-zA-Z][a-zA-Z0-9-]*)/i);\n    if (!tagMatch)\n        return token;\n    const tagName = tagMatch[1];\n    if (!SELF_CLOSING_TAGS.test(tagName))\n        return token;\n    // If it's a self-closing tag and doesn't already end with />, format it properly\n    if (!token.raw.endsWith('/>')) {\n        const formattedRaw = token.raw.replace(/\\s*>$/, '/>');\n        return {\n            ...token,\n            raw: formattedRaw,\n            tag: tagName,\n            attributes: extractAttributes(token.raw)\n        };\n    }\n    return token;\n};\n/**\n * Parses HTML attributes from a tag string into a structured object.\n * Handles both single and double quoted attributes.\n *\n * @param {string} raw - Raw HTML tag string containing attributes\n * @returns {Record<string, string>} Map of attribute names to their values\n *\n * @example\n * extractAttributes('<div class=\"foo\" id=\"bar\">')\n * // Returns { class: 'foo', id: 'bar' }\n *\n * @internal\n */\nexport const extractAttributes = (raw) => {\n    const attributes = {};\n    // First pass: handle regular and unclosed quoted attributes\n    const quotedRegex = /([a-zA-Z][\\w-]*?)=[\"']([^\"']*?)(?:[\"']|$)/g;\n    let match;\n    while ((match = quotedRegex.exec(raw)) !== null) {\n        const [, key, value] = match;\n        attributes[key] = value.trim();\n    }\n    // Second pass: handle boolean attributes\n    const booleanRegex = /(?:^|\\s)([a-zA-Z][\\w-]*?)(?=[\\s>]|$)/g;\n    while ((match = booleanRegex.exec(raw)) !== null) {\n        const [, key] = match;\n        if (key && !attributes[key]) {\n            attributes[key] = '';\n        }\n    }\n    return attributes;\n};\n/**\n * Converts an HTML string into a sequence of tokens using htmlparser2.\n * Handles complex nested structures while maintaining proper order and relationships.\n *\n * Key features:\n * - Preserves original HTML structure without automatic tag closing\n * - Handles self-closing tags with proper XML syntax (e.g., <br/> instead of <br>)\n * - Gracefully handles malformed HTML by preserving the original structure\n * - Maintains attribute information in opening tags\n * - Processes text content between tags\n *\n * @param {string} html - HTML string to be parsed\n * @returns {Token[]} Array of tokens representing the HTML structure\n *\n * @example\n * // Well-formed HTML\n * parseHtmlBlock('<div>Hello <span>world</span></div>')\n * // Returns [\n * //   { type: 'html', raw: '<div>', ... },\n * //   { type: 'text', raw: 'Hello ', ... },\n * //   { type: 'html', raw: '<span>', ... },\n * //   { type: 'text', raw: 'world', ... },\n * //   { type: 'html', raw: '</span>', ... },\n * //   { type: 'html', raw: '</div>', ... }\n * // ]\n *\n * // Self-closing tags\n * parseHtmlBlock('<div>Before<br/>After</div>')\n * // Returns [\n * //   { type: 'html', raw: '<div>', ... },\n * //   { type: 'text', raw: 'Before', ... },\n * //   { type: 'html', raw: '<br/>', ... },\n * //   { type: 'text', raw: 'After', ... },\n * //   { type: 'html', raw: '</div>', ... }\n * // ]\n *\n * // Malformed HTML\n * parseHtmlBlock('<div>Unclosed')\n * // Returns [\n * //   { type: 'html', raw: '<div>', ... },\n * //   { type: 'text', raw: 'Unclosed', ... }\n * // ]\n *\n * @internal\n */\nexport const parseHtmlBlock = (html) => {\n    const tokens = [];\n    let currentText = '';\n    const openTags = [];\n    const parser = new htmlparser2.Parser({\n        onopentag: (name, attributes) => {\n            if (currentText.trim()) {\n                tokens.push({\n                    type: 'text',\n                    raw: currentText,\n                    text: currentText\n                });\n                currentText = '';\n            }\n            if (SELF_CLOSING_TAGS.test(name)) {\n                tokens.push({\n                    type: 'html',\n                    raw: `<${name}${Object.entries(attributes)\n                        .map(([key, value]) => ` ${key}=\"${value}\"`)\n                        .join('')}/>`,\n                    tag: name,\n                    attributes\n                });\n            }\n            else {\n                openTags.push(name);\n                tokens.push({\n                    type: 'html',\n                    raw: `<${name}${Object.entries(attributes)\n                        .map(([key, value]) => ` ${key}=\"${value}\"`)\n                        .join('')}>`,\n                    tag: name,\n                    attributes\n                });\n            }\n        },\n        ontext: (text) => {\n            currentText += text;\n        },\n        onclosetag: (name) => {\n            if (currentText.trim()) {\n                tokens.push({\n                    type: 'text',\n                    raw: currentText,\n                    text: currentText\n                });\n                currentText = '';\n            }\n            // Only add closing tag if we found its opening tag\n            // and it's not a self-closing tag\n            if (openTags.includes(name) && !SELF_CLOSING_TAGS.test(name)) {\n                if (html.includes(`</${name}>`)) {\n                    tokens.push({\n                        type: 'html',\n                        raw: `</${name}>`,\n                        tag: name\n                    });\n                }\n                openTags.splice(openTags.indexOf(name), 1);\n            }\n        }\n    }, {\n        xmlMode: true,\n        // Add this to prevent automatic tag closing\n        recognizeSelfClosing: true\n    });\n    parser.write(html);\n    parser.end();\n    if (currentText.trim()) {\n        tokens.push({\n            type: 'text',\n            raw: currentText,\n            text: currentText\n        });\n    }\n    return tokens;\n};\n/**\n * Determines if an HTML string contains multiple distinct tags.\n * Used as a preprocessing step to optimize token processing.\n *\n * @param {string} html - HTML string to analyze\n * @returns {boolean} True if multiple tags are present or if it's a single pair of matching tags\n *\n * @internal\n */\nexport const containsMultipleTags = (html) => {\n    // Count the number of opening and closing tags\n    const openingTags = html.match(/<[a-zA-Z][^>]*>/g) || [];\n    const closingTags = html.match(/<\\/[a-zA-Z][^>]*>/g) || [];\n    // Return true if:\n    // 1. There are multiple opening tags OR\n    // 2. There are multiple closing tags OR\n    // 3. There is exactly one opening and one closing tag (matching pair)\n    return (openingTags.length > 1 ||\n        closingTags.length > 1 ||\n        (openingTags.length === 1 && closingTags.length === 1));\n};\n/**\n * Primary entry point for HTML token processing. Transforms flat token arrays\n * into properly nested structures while preserving HTML semantics.\n *\n * Key features:\n * - Breaks down complex HTML structures into atomic tokens\n * - Formats self-closing tags with proper syntax (e.g., <br> -> <br/>)\n * - Maintains attribute information\n * - Preserves proper nesting relationships\n * - Handles malformed HTML gracefully\n *\n * @param {Token[]} tokens - Array of tokens to process\n * @returns {Token[]} Processed and properly nested token array\n *\n * @example\n * const tokens = [\n *   { type: 'html', raw: '<div class=\"wrapper\">' },\n *   { type: 'text', raw: 'content' },\n *   { type: 'html', raw: '</div>' }\n * ];\n * shrinkHtmlTokens(tokens);\n * // Returns nested structure with proper token relationships\n *\n * @public\n */\nexport const shrinkHtmlTokens = (tokens) => {\n    const result = [];\n    for (const token of tokens) {\n        if (token.type === 'list') {\n            token.items = token.items.map((item, index) => ({\n                ...item,\n                listItemIndex: index,\n                tokens: item.tokens ? shrinkHtmlTokens(item.tokens) : []\n            }));\n            result.push(token);\n        }\n        else if (token.type === 'table') {\n            // Process header cells\n            if (token.header) {\n                // @ts-expect-error: expected any\n                token.header = token.header.map((cell) => ({\n                    ...cell,\n                    tokens: cell.tokens ? shrinkHtmlTokens(cell.tokens) : []\n                }));\n            }\n            // Process row cells\n            if (token.rows) {\n                // @ts-expect-error: expected any\n                token.rows = token.rows.map((row) => \n                // @ts-expect-error: expected any\n                row.map((cell) => ({\n                    ...cell,\n                    tokens: cell.tokens ? shrinkHtmlTokens(cell.tokens) : []\n                })));\n            }\n            result.push(token);\n        }\n        else if (token.type === 'html' && containsMultipleTags(token.raw)) {\n            // Parse HTML with multiple tags into separate tokens\n            result.push(...parseHtmlBlock(token.raw));\n        }\n        else if (token.type === 'html') {\n            // Format self-closing tags properly (e.g., <br> -> <br/>)\n            const formattedToken = formatSelfClosingHtmlToken(token);\n            result.push(formattedToken);\n        }\n        else {\n            result.push(token);\n        }\n    }\n    // Then process the tokens as before\n    return processHtmlTokens(result);\n};\n/**\n * Core token processing logic that handles the complexities of HTML nesting.\n * Uses a stack-based approach to match opening and closing tags while\n * maintaining proper hierarchical relationships.\n *\n * Implementation details:\n * - Maintains a stack of opening tags\n * - Processes nested tokens recursively\n * - Preserves HTML attributes\n * - Handles malformed HTML gracefully\n *\n * @param {Token[]} tokens - Tokens to be processed\n * @returns {Token[]} Processed tokens with proper nesting structure\n *\n * @internal\n */\nexport const processHtmlTokens = (tokens) => {\n    const result = [];\n    // Stack to keep track of opening tags and their positions\n    const stack = [];\n    for (let i = 0; i < tokens.length; i++) {\n        const token = tokens[i];\n        // If token contains nested tokens, process them recursively\n        if ('tokens' in token && Array.isArray(token.tokens)) {\n            token.tokens = processHtmlTokens(token.tokens);\n        }\n        if (token.type === 'html') {\n            const tagInfo = isHtmlOpenTag(token.raw);\n            if (!tagInfo) {\n                // If we can't parse the tag, just add it as-is\n                result.push(token);\n                continue;\n            }\n            if (tagInfo.isOpening) {\n                // For opening tags, push to stack and add to result\n                stack.push({ tag: tagInfo.tag, startIndex: result.length });\n                result.push(token);\n            }\n            else {\n                // For closing tags, try to match with last opening tag\n                const lastOpening = stack.pop();\n                if (!lastOpening || lastOpening.tag !== tagInfo.tag) {\n                    // If no matching opening tag, add closing tag as-is\n                    result.push(token);\n                    continue;\n                }\n                // Found matching tags - create nested structure\n                const startIndex = lastOpening.startIndex;\n                // Remove all tokens between opening and closing tags\n                const innerTokens = result.splice(startIndex + 1, result.length - startIndex - 1);\n                // Remove the opening tag\n                const openingToken = result.pop();\n                // Extract attributes from opening tag\n                const attributes = extractAttributes(openingToken.raw);\n                // Create new nested token structure\n                result.push({\n                    type: 'html',\n                    raw: openingToken.raw,\n                    tag: tagInfo.tag,\n                    tokens: processHtmlTokens(innerTokens),\n                    attributes\n                });\n            }\n        }\n        else {\n            // Non-HTML tokens are added as-is\n            result.push(token);\n        }\n    }\n    // If we have unclosed tags, return original tokens\n    if (stack.length > 0) {\n        return tokens;\n    }\n    return result;\n};\n","<!--\n@component\n\n A Svelte component that renders Markdown content into HTML using a customizable parser.\n Supports both string input and pre-parsed markdown tokens, with configurable rendering\n options and custom renderers.\n\n @example\n ```svelte\n <SvelteMarkdown source=\"# Hello World\" />\n\n <SvelteMarkdown\n   source={markdownString}\n   options={{ headerIds: false }}\n   renderers={{ link: CustomLink }}\n />\n ```\n\n @property {string | Token[]} source - The markdown content to render, either as a string or pre-parsed tokens\n @property {Partial<Renderers>} [renderers] - Custom renderers for markdown elements\n @property {SvelteMarkdownOptions} [options] - Configuration options for the markdown parser\n @property {boolean} [isInline=false] - Whether to parse the content as inline markdown\n @property {function} [parsed] - Callback function called with the parsed tokens\n-->\n<script lang=\"ts\">\n    /**\n     * Component Evolution & Design Notes:\n     *\n     * 1. Core Purpose:\n     * - Serves as the main entry point for markdown rendering in Svelte\n     * - Handles both string input and pre-parsed tokens for flexibility\n     *\n     * 2. Key Design Decisions:\n     * - Uses a separate Parser component for actual rendering to maintain separation of concerns\n     * - Implements token cleanup via shrinkHtmlTokens to optimize HTML token handling\n     * - Maintains state synchronization using Svelte 5's $state and $effect\n     *\n     * 3. Performance Considerations:\n     * - Caches previous source to prevent unnecessary re-parsing\n     * - Uses key directive for proper component rerendering when source changes\n     * - Intentionally avoids reactive tokens to prevent double processing\n     *\n     * 4. Extensibility:\n     * - Supports custom renderers through composition pattern\n     * - Allows parser configuration via options prop\n     * - Provides parsed callback for external token access\n     */\n\n    import Parser from './Parser.svelte'\n    import { type SvelteMarkdownProps } from './types.js'\n    import {\n        defaultOptions,\n        defaultRenderers,\n        Lexer,\n        Slugger,\n        type Token,\n        type TokensList\n    } from './utils/markdown-parser.js'\n    import { shrinkHtmlTokens } from './utils/token-cleanup.js'\n\n    const {\n        source = [],\n        renderers = {},\n        options = {},\n        isInline = false,\n        parsed = () => {},\n        ...rest\n    }: SvelteMarkdownProps & {\n        [key: string]: unknown\n    } = $props()\n\n    const combinedOptions = { ...defaultOptions, ...options }\n    const slugger = new Slugger()\n\n    const tokens = $derived.by(() => {\n        const lexer = new Lexer(combinedOptions)\n\n        if (Array.isArray(source)) {\n            return source as Token[]\n        }\n        return source\n            ? (shrinkHtmlTokens(\n                  isInline ? lexer.inlineTokens(source as string) : lexer.lex(source as string)\n              ) as Token[])\n            : []\n    }) satisfies Token[] | TokensList | undefined\n\n    $effect(() => {\n        if (!tokens) return\n        parsed(tokens)\n    })\n\n    const combinedRenderers = {\n        ...defaultRenderers,\n        ...renderers,\n        html: renderers.html\n            ? {\n                  ...defaultRenderers.html,\n                  ...renderers.html\n              }\n            : defaultRenderers.html\n    }\n</script>\n\n<Parser\n    {tokens}\n    {...rest}\n    options={combinedOptions}\n    slug={(val: string): string => (slugger ? slugger.slug(val) : '')}\n    renderers={combinedRenderers}\n/>\n","<script lang=\"ts\">\n  import Article from \"./Article.svelte\"\n  import image from \"./markdown/Image.svelte\"\n  import link from \"./markdown/Link.svelte\"\n  import SvelteMarkdown from \"@humanspeak/svelte-markdown\"\n  import { setContext } from \"svelte\"\n\n  const { text, base }: { text: string, base: string } = $props()\n  setContext(\"base\", base)\n</script>\n\n<Article>\n  <SvelteMarkdown source={text} renderers={{ link, image }} />\n</Article>\n","import { toast } from \"svelte-sonner\"\n\nexport async function copy(text: string) {\n  try {\n    await navigator.clipboard.writeText(text)\n    toast.success(\"Copied to clipboard\")\n  } catch (err) {\n    toast.error(String(err))\n  }\n}\n","function extend (destination) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      if (source.hasOwnProperty(key)) destination[key] = source[key];\n    }\n  }\n  return destination\n}\n\nfunction repeat (character, count) {\n  return Array(count + 1).join(character)\n}\n\nfunction trimLeadingNewlines (string) {\n  return string.replace(/^\\n*/, '')\n}\n\nfunction trimTrailingNewlines (string) {\n  // avoid match-at-end regexp bottleneck, see #370\n  var indexEnd = string.length;\n  while (indexEnd > 0 && string[indexEnd - 1] === '\\n') indexEnd--;\n  return string.substring(0, indexEnd)\n}\n\nvar blockElements = [\n  'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS',\n  'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE',\n  'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER',\n  'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES',\n  'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD',\n  'TFOOT', 'TH', 'THEAD', 'TR', 'UL'\n];\n\nfunction isBlock (node) {\n  return is(node, blockElements)\n}\n\nvar voidElements = [\n  'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT',\n  'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'\n];\n\nfunction isVoid (node) {\n  return is(node, voidElements)\n}\n\nfunction hasVoid (node) {\n  return has(node, voidElements)\n}\n\nvar meaningfulWhenBlankElements = [\n  'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT',\n  'AUDIO', 'VIDEO'\n];\n\nfunction isMeaningfulWhenBlank (node) {\n  return is(node, meaningfulWhenBlankElements)\n}\n\nfunction hasMeaningfulWhenBlank (node) {\n  return has(node, meaningfulWhenBlankElements)\n}\n\nfunction is (node, tagNames) {\n  return tagNames.indexOf(node.nodeName) >= 0\n}\n\nfunction has (node, tagNames) {\n  return (\n    node.getElementsByTagName &&\n    tagNames.some(function (tagName) {\n      return node.getElementsByTagName(tagName).length\n    })\n  )\n}\n\nvar rules = {};\n\nrules.paragraph = {\n  filter: 'p',\n\n  replacement: function (content) {\n    return '\\n\\n' + content + '\\n\\n'\n  }\n};\n\nrules.lineBreak = {\n  filter: 'br',\n\n  replacement: function (content, node, options) {\n    return options.br + '\\n'\n  }\n};\n\nrules.heading = {\n  filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'],\n\n  replacement: function (content, node, options) {\n    var hLevel = Number(node.nodeName.charAt(1));\n\n    if (options.headingStyle === 'setext' && hLevel < 3) {\n      var underline = repeat((hLevel === 1 ? '=' : '-'), content.length);\n      return (\n        '\\n\\n' + content + '\\n' + underline + '\\n\\n'\n      )\n    } else {\n      return '\\n\\n' + repeat('#', hLevel) + ' ' + content + '\\n\\n'\n    }\n  }\n};\n\nrules.blockquote = {\n  filter: 'blockquote',\n\n  replacement: function (content) {\n    content = content.replace(/^\\n+|\\n+$/g, '');\n    content = content.replace(/^/gm, '> ');\n    return '\\n\\n' + content + '\\n\\n'\n  }\n};\n\nrules.list = {\n  filter: ['ul', 'ol'],\n\n  replacement: function (content, node) {\n    var parent = node.parentNode;\n    if (parent.nodeName === 'LI' && parent.lastElementChild === node) {\n      return '\\n' + content\n    } else {\n      return '\\n\\n' + content + '\\n\\n'\n    }\n  }\n};\n\nrules.listItem = {\n  filter: 'li',\n\n  replacement: function (content, node, options) {\n    content = content\n      .replace(/^\\n+/, '') // remove leading newlines\n      .replace(/\\n+$/, '\\n') // replace trailing newlines with just a single one\n      .replace(/\\n/gm, '\\n    '); // indent\n    var prefix = options.bulletListMarker + '   ';\n    var parent = node.parentNode;\n    if (parent.nodeName === 'OL') {\n      var start = parent.getAttribute('start');\n      var index = Array.prototype.indexOf.call(parent.children, node);\n      prefix = (start ? Number(start) + index : index + 1) + '.  ';\n    }\n    return (\n      prefix + content + (node.nextSibling && !/\\n$/.test(content) ? '\\n' : '')\n    )\n  }\n};\n\nrules.indentedCodeBlock = {\n  filter: function (node, options) {\n    return (\n      options.codeBlockStyle === 'indented' &&\n      node.nodeName === 'PRE' &&\n      node.firstChild &&\n      node.firstChild.nodeName === 'CODE'\n    )\n  },\n\n  replacement: function (content, node, options) {\n    return (\n      '\\n\\n    ' +\n      node.firstChild.textContent.replace(/\\n/g, '\\n    ') +\n      '\\n\\n'\n    )\n  }\n};\n\nrules.fencedCodeBlock = {\n  filter: function (node, options) {\n    return (\n      options.codeBlockStyle === 'fenced' &&\n      node.nodeName === 'PRE' &&\n      node.firstChild &&\n      node.firstChild.nodeName === 'CODE'\n    )\n  },\n\n  replacement: function (content, node, options) {\n    var className = node.firstChild.getAttribute('class') || '';\n    var language = (className.match(/language-(\\S+)/) || [null, ''])[1];\n    var code = node.firstChild.textContent;\n\n    var fenceChar = options.fence.charAt(0);\n    var fenceSize = 3;\n    var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm');\n\n    var match;\n    while ((match = fenceInCodeRegex.exec(code))) {\n      if (match[0].length >= fenceSize) {\n        fenceSize = match[0].length + 1;\n      }\n    }\n\n    var fence = repeat(fenceChar, fenceSize);\n\n    return (\n      '\\n\\n' + fence + language + '\\n' +\n      code.replace(/\\n$/, '') +\n      '\\n' + fence + '\\n\\n'\n    )\n  }\n};\n\nrules.horizontalRule = {\n  filter: 'hr',\n\n  replacement: function (content, node, options) {\n    return '\\n\\n' + options.hr + '\\n\\n'\n  }\n};\n\nrules.inlineLink = {\n  filter: function (node, options) {\n    return (\n      options.linkStyle === 'inlined' &&\n      node.nodeName === 'A' &&\n      node.getAttribute('href')\n    )\n  },\n\n  replacement: function (content, node) {\n    var href = node.getAttribute('href');\n    if (href) href = href.replace(/([()])/g, '\\\\$1');\n    var title = cleanAttribute(node.getAttribute('title'));\n    if (title) title = ' \"' + title.replace(/\"/g, '\\\\\"') + '\"';\n    return '[' + content + '](' + href + title + ')'\n  }\n};\n\nrules.referenceLink = {\n  filter: function (node, options) {\n    return (\n      options.linkStyle === 'referenced' &&\n      node.nodeName === 'A' &&\n      node.getAttribute('href')\n    )\n  },\n\n  replacement: function (content, node, options) {\n    var href = node.getAttribute('href');\n    var title = cleanAttribute(node.getAttribute('title'));\n    if (title) title = ' \"' + title + '\"';\n    var replacement;\n    var reference;\n\n    switch (options.linkReferenceStyle) {\n      case 'collapsed':\n        replacement = '[' + content + '][]';\n        reference = '[' + content + ']: ' + href + title;\n        break\n      case 'shortcut':\n        replacement = '[' + content + ']';\n        reference = '[' + content + ']: ' + href + title;\n        break\n      default:\n        var id = this.references.length + 1;\n        replacement = '[' + content + '][' + id + ']';\n        reference = '[' + id + ']: ' + href + title;\n    }\n\n    this.references.push(reference);\n    return replacement\n  },\n\n  references: [],\n\n  append: function (options) {\n    var references = '';\n    if (this.references.length) {\n      references = '\\n\\n' + this.references.join('\\n') + '\\n\\n';\n      this.references = []; // Reset references\n    }\n    return references\n  }\n};\n\nrules.emphasis = {\n  filter: ['em', 'i'],\n\n  replacement: function (content, node, options) {\n    if (!content.trim()) return ''\n    return options.emDelimiter + content + options.emDelimiter\n  }\n};\n\nrules.strong = {\n  filter: ['strong', 'b'],\n\n  replacement: function (content, node, options) {\n    if (!content.trim()) return ''\n    return options.strongDelimiter + content + options.strongDelimiter\n  }\n};\n\nrules.code = {\n  filter: function (node) {\n    var hasSiblings = node.previousSibling || node.nextSibling;\n    var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings;\n\n    return node.nodeName === 'CODE' && !isCodeBlock\n  },\n\n  replacement: function (content) {\n    if (!content) return ''\n    content = content.replace(/\\r?\\n|\\r/g, ' ');\n\n    var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : '';\n    var delimiter = '`';\n    var matches = content.match(/`+/gm) || [];\n    while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`';\n\n    return delimiter + extraSpace + content + extraSpace + delimiter\n  }\n};\n\nrules.image = {\n  filter: 'img',\n\n  replacement: function (content, node) {\n    var alt = cleanAttribute(node.getAttribute('alt'));\n    var src = node.getAttribute('src') || '';\n    var title = cleanAttribute(node.getAttribute('title'));\n    var titlePart = title ? ' \"' + title + '\"' : '';\n    return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : ''\n  }\n};\n\nfunction cleanAttribute (attribute) {\n  return attribute ? attribute.replace(/(\\n+\\s*)+/g, '\\n') : ''\n}\n\n/**\n * Manages a collection of rules used to convert HTML to Markdown\n */\n\nfunction Rules (options) {\n  this.options = options;\n  this._keep = [];\n  this._remove = [];\n\n  this.blankRule = {\n    replacement: options.blankReplacement\n  };\n\n  this.keepReplacement = options.keepReplacement;\n\n  this.defaultRule = {\n    replacement: options.defaultReplacement\n  };\n\n  this.array = [];\n  for (var key in options.rules) this.array.push(options.rules[key]);\n}\n\nRules.prototype = {\n  add: function (key, rule) {\n    this.array.unshift(rule);\n  },\n\n  keep: function (filter) {\n    this._keep.unshift({\n      filter: filter,\n      replacement: this.keepReplacement\n    });\n  },\n\n  remove: function (filter) {\n    this._remove.unshift({\n      filter: filter,\n      replacement: function () {\n        return ''\n      }\n    });\n  },\n\n  forNode: function (node) {\n    if (node.isBlank) return this.blankRule\n    var rule;\n\n    if ((rule = findRule(this.array, node, this.options))) return rule\n    if ((rule = findRule(this._keep, node, this.options))) return rule\n    if ((rule = findRule(this._remove, node, this.options))) return rule\n\n    return this.defaultRule\n  },\n\n  forEach: function (fn) {\n    for (var i = 0; i < this.array.length; i++) fn(this.array[i], i);\n  }\n};\n\nfunction findRule (rules, node, options) {\n  for (var i = 0; i < rules.length; i++) {\n    var rule = rules[i];\n    if (filterValue(rule, node, options)) return rule\n  }\n  return void 0\n}\n\nfunction filterValue (rule, node, options) {\n  var filter = rule.filter;\n  if (typeof filter === 'string') {\n    if (filter === node.nodeName.toLowerCase()) return true\n  } else if (Array.isArray(filter)) {\n    if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true\n  } else if (typeof filter === 'function') {\n    if (filter.call(rule, node, options)) return true\n  } else {\n    throw new TypeError('`filter` needs to be a string, array, or function')\n  }\n}\n\n/**\n * The collapseWhitespace function is adapted from collapse-whitespace\n * by Luc Thevenard.\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014 Luc Thevenard <lucthevenard@gmail.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * collapseWhitespace(options) removes extraneous whitespace from an the given element.\n *\n * @param {Object} options\n */\nfunction collapseWhitespace (options) {\n  var element = options.element;\n  var isBlock = options.isBlock;\n  var isVoid = options.isVoid;\n  var isPre = options.isPre || function (node) {\n    return node.nodeName === 'PRE'\n  };\n\n  if (!element.firstChild || isPre(element)) return\n\n  var prevText = null;\n  var keepLeadingWs = false;\n\n  var prev = null;\n  var node = next(prev, element, isPre);\n\n  while (node !== element) {\n    if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE\n      var text = node.data.replace(/[ \\r\\n\\t]+/g, ' ');\n\n      if ((!prevText || / $/.test(prevText.data)) &&\n          !keepLeadingWs && text[0] === ' ') {\n        text = text.substr(1);\n      }\n\n      // `text` might be empty at this point.\n      if (!text) {\n        node = remove(node);\n        continue\n      }\n\n      node.data = text;\n\n      prevText = node;\n    } else if (node.nodeType === 1) { // Node.ELEMENT_NODE\n      if (isBlock(node) || node.nodeName === 'BR') {\n        if (prevText) {\n          prevText.data = prevText.data.replace(/ $/, '');\n        }\n\n        prevText = null;\n        keepLeadingWs = false;\n      } else if (isVoid(node) || isPre(node)) {\n        // Avoid trimming space around non-block, non-BR void elements and inline PRE.\n        prevText = null;\n        keepLeadingWs = true;\n      } else if (prevText) {\n        // Drop protection if set previously.\n        keepLeadingWs = false;\n      }\n    } else {\n      node = remove(node);\n      continue\n    }\n\n    var nextNode = next(prev, node, isPre);\n    prev = node;\n    node = nextNode;\n  }\n\n  if (prevText) {\n    prevText.data = prevText.data.replace(/ $/, '');\n    if (!prevText.data) {\n      remove(prevText);\n    }\n  }\n}\n\n/**\n * remove(node) removes the given node from the DOM and returns the\n * next node in the sequence.\n *\n * @param {Node} node\n * @return {Node} node\n */\nfunction remove (node) {\n  var next = node.nextSibling || node.parentNode;\n\n  node.parentNode.removeChild(node);\n\n  return next\n}\n\n/**\n * next(prev, current, isPre) returns the next node in the sequence, given the\n * current and previous nodes.\n *\n * @param {Node} prev\n * @param {Node} current\n * @param {Function} isPre\n * @return {Node}\n */\nfunction next (prev, current, isPre) {\n  if ((prev && prev.parentNode === current) || isPre(current)) {\n    return current.nextSibling || current.parentNode\n  }\n\n  return current.firstChild || current.nextSibling || current.parentNode\n}\n\n/*\n * Set up window for Node.js\n */\n\nvar root = (typeof window !== 'undefined' ? window : {});\n\n/*\n * Parsing HTML strings\n */\n\nfunction canParseHTMLNatively () {\n  var Parser = root.DOMParser;\n  var canParse = false;\n\n  // Adapted from https://gist.github.com/1129031\n  // Firefox/Opera/IE throw errors on unsupported types\n  try {\n    // WebKit returns null on unsupported types\n    if (new Parser().parseFromString('', 'text/html')) {\n      canParse = true;\n    }\n  } catch (e) {}\n\n  return canParse\n}\n\nfunction createHTMLParser () {\n  var Parser = function () {};\n\n  {\n    if (shouldUseActiveX()) {\n      Parser.prototype.parseFromString = function (string) {\n        var doc = new window.ActiveXObject('htmlfile');\n        doc.designMode = 'on'; // disable on-page scripts\n        doc.open();\n        doc.write(string);\n        doc.close();\n        return doc\n      };\n    } else {\n      Parser.prototype.parseFromString = function (string) {\n        var doc = document.implementation.createHTMLDocument('');\n        doc.open();\n        doc.write(string);\n        doc.close();\n        return doc\n      };\n    }\n  }\n  return Parser\n}\n\nfunction shouldUseActiveX () {\n  var useActiveX = false;\n  try {\n    document.implementation.createHTMLDocument('').open();\n  } catch (e) {\n    if (root.ActiveXObject) useActiveX = true;\n  }\n  return useActiveX\n}\n\nvar HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser();\n\nfunction RootNode (input, options) {\n  var root;\n  if (typeof input === 'string') {\n    var doc = htmlParser().parseFromString(\n      // DOM parsers arrange elements in the <head> and <body>.\n      // Wrapping in a custom element ensures elements are reliably arranged in\n      // a single element.\n      '<x-turndown id=\"turndown-root\">' + input + '</x-turndown>',\n      'text/html'\n    );\n    root = doc.getElementById('turndown-root');\n  } else {\n    root = input.cloneNode(true);\n  }\n  collapseWhitespace({\n    element: root,\n    isBlock: isBlock,\n    isVoid: isVoid,\n    isPre: options.preformattedCode ? isPreOrCode : null\n  });\n\n  return root\n}\n\nvar _htmlParser;\nfunction htmlParser () {\n  _htmlParser = _htmlParser || new HTMLParser();\n  return _htmlParser\n}\n\nfunction isPreOrCode (node) {\n  return node.nodeName === 'PRE' || node.nodeName === 'CODE'\n}\n\nfunction Node (node, options) {\n  node.isBlock = isBlock(node);\n  node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode;\n  node.isBlank = isBlank(node);\n  node.flankingWhitespace = flankingWhitespace(node, options);\n  return node\n}\n\nfunction isBlank (node) {\n  return (\n    !isVoid(node) &&\n    !isMeaningfulWhenBlank(node) &&\n    /^\\s*$/i.test(node.textContent) &&\n    !hasVoid(node) &&\n    !hasMeaningfulWhenBlank(node)\n  )\n}\n\nfunction flankingWhitespace (node, options) {\n  if (node.isBlock || (options.preformattedCode && node.isCode)) {\n    return { leading: '', trailing: '' }\n  }\n\n  var edges = edgeWhitespace(node.textContent);\n\n  // abandon leading ASCII WS if left-flanked by ASCII WS\n  if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) {\n    edges.leading = edges.leadingNonAscii;\n  }\n\n  // abandon trailing ASCII WS if right-flanked by ASCII WS\n  if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) {\n    edges.trailing = edges.trailingNonAscii;\n  }\n\n  return { leading: edges.leading, trailing: edges.trailing }\n}\n\nfunction edgeWhitespace (string) {\n  var m = string.match(/^(([ \\t\\r\\n]*)(\\s*))(?:(?=\\S)[\\s\\S]*\\S)?((\\s*?)([ \\t\\r\\n]*))$/);\n  return {\n    leading: m[1], // whole string for whitespace-only strings\n    leadingAscii: m[2],\n    leadingNonAscii: m[3],\n    trailing: m[4], // empty for whitespace-only strings\n    trailingNonAscii: m[5],\n    trailingAscii: m[6]\n  }\n}\n\nfunction isFlankedByWhitespace (side, node, options) {\n  var sibling;\n  var regExp;\n  var isFlanked;\n\n  if (side === 'left') {\n    sibling = node.previousSibling;\n    regExp = / $/;\n  } else {\n    sibling = node.nextSibling;\n    regExp = /^ /;\n  }\n\n  if (sibling) {\n    if (sibling.nodeType === 3) {\n      isFlanked = regExp.test(sibling.nodeValue);\n    } else if (options.preformattedCode && sibling.nodeName === 'CODE') {\n      isFlanked = false;\n    } else if (sibling.nodeType === 1 && !isBlock(sibling)) {\n      isFlanked = regExp.test(sibling.textContent);\n    }\n  }\n  return isFlanked\n}\n\nvar reduce = Array.prototype.reduce;\nvar escapes = [\n  [/\\\\/g, '\\\\\\\\'],\n  [/\\*/g, '\\\\*'],\n  [/^-/g, '\\\\-'],\n  [/^\\+ /g, '\\\\+ '],\n  [/^(=+)/g, '\\\\$1'],\n  [/^(#{1,6}) /g, '\\\\$1 '],\n  [/`/g, '\\\\`'],\n  [/^~~~/g, '\\\\~~~'],\n  [/\\[/g, '\\\\['],\n  [/\\]/g, '\\\\]'],\n  [/^>/g, '\\\\>'],\n  [/_/g, '\\\\_'],\n  [/^(\\d+)\\. /g, '$1\\\\. ']\n];\n\nfunction TurndownService (options) {\n  if (!(this instanceof TurndownService)) return new TurndownService(options)\n\n  var defaults = {\n    rules: rules,\n    headingStyle: 'setext',\n    hr: '* * *',\n    bulletListMarker: '*',\n    codeBlockStyle: 'indented',\n    fence: '```',\n    emDelimiter: '_',\n    strongDelimiter: '**',\n    linkStyle: 'inlined',\n    linkReferenceStyle: 'full',\n    br: '  ',\n    preformattedCode: false,\n    blankReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' : ''\n    },\n    keepReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' + node.outerHTML + '\\n\\n' : node.outerHTML\n    },\n    defaultReplacement: function (content, node) {\n      return node.isBlock ? '\\n\\n' + content + '\\n\\n' : content\n    }\n  };\n  this.options = extend({}, defaults, options);\n  this.rules = new Rules(this.options);\n}\n\nTurndownService.prototype = {\n  /**\n   * The entry point for converting a string or DOM node to Markdown\n   * @public\n   * @param {String|HTMLElement} input The string or DOM node to convert\n   * @returns A Markdown representation of the input\n   * @type String\n   */\n\n  turndown: function (input) {\n    if (!canConvert(input)) {\n      throw new TypeError(\n        input + ' is not a string, or an element/document/fragment node.'\n      )\n    }\n\n    if (input === '') return ''\n\n    var output = process.call(this, new RootNode(input, this.options));\n    return postProcess.call(this, output)\n  },\n\n  /**\n   * Add one or more plugins\n   * @public\n   * @param {Function|Array} plugin The plugin or array of plugins to add\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  use: function (plugin) {\n    if (Array.isArray(plugin)) {\n      for (var i = 0; i < plugin.length; i++) this.use(plugin[i]);\n    } else if (typeof plugin === 'function') {\n      plugin(this);\n    } else {\n      throw new TypeError('plugin must be a Function or an Array of Functions')\n    }\n    return this\n  },\n\n  /**\n   * Adds a rule\n   * @public\n   * @param {String} key The unique key of the rule\n   * @param {Object} rule The rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  addRule: function (key, rule) {\n    this.rules.add(key, rule);\n    return this\n  },\n\n  /**\n   * Keep a node (as HTML) that matches the filter\n   * @public\n   * @param {String|Array|Function} filter The unique key of the rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  keep: function (filter) {\n    this.rules.keep(filter);\n    return this\n  },\n\n  /**\n   * Remove a node that matches the filter\n   * @public\n   * @param {String|Array|Function} filter The unique key of the rule\n   * @returns The Turndown instance for chaining\n   * @type Object\n   */\n\n  remove: function (filter) {\n    this.rules.remove(filter);\n    return this\n  },\n\n  /**\n   * Escapes Markdown syntax\n   * @public\n   * @param {String} string The string to escape\n   * @returns A string with Markdown syntax escaped\n   * @type String\n   */\n\n  escape: function (string) {\n    return escapes.reduce(function (accumulator, escape) {\n      return accumulator.replace(escape[0], escape[1])\n    }, string)\n  }\n};\n\n/**\n * Reduces a DOM node down to its Markdown string equivalent\n * @private\n * @param {HTMLElement} parentNode The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction process (parentNode) {\n  var self = this;\n  return reduce.call(parentNode.childNodes, function (output, node) {\n    node = new Node(node, self.options);\n\n    var replacement = '';\n    if (node.nodeType === 3) {\n      replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue);\n    } else if (node.nodeType === 1) {\n      replacement = replacementForNode.call(self, node);\n    }\n\n    return join(output, replacement)\n  }, '')\n}\n\n/**\n * Appends strings as each rule requires and trims the output\n * @private\n * @param {String} output The conversion output\n * @returns A trimmed version of the ouput\n * @type String\n */\n\nfunction postProcess (output) {\n  var self = this;\n  this.rules.forEach(function (rule) {\n    if (typeof rule.append === 'function') {\n      output = join(output, rule.append(self.options));\n    }\n  });\n\n  return output.replace(/^[\\t\\r\\n]+/, '').replace(/[\\t\\r\\n\\s]+$/, '')\n}\n\n/**\n * Converts an element node to its Markdown equivalent\n * @private\n * @param {HTMLElement} node The node to convert\n * @returns A Markdown representation of the node\n * @type String\n */\n\nfunction replacementForNode (node) {\n  var rule = this.rules.forNode(node);\n  var content = process.call(this, node);\n  var whitespace = node.flankingWhitespace;\n  if (whitespace.leading || whitespace.trailing) content = content.trim();\n  return (\n    whitespace.leading +\n    rule.replacement(content, node, this.options) +\n    whitespace.trailing\n  )\n}\n\n/**\n * Joins replacement to the current output with appropriate number of new lines\n * @private\n * @param {String} output The current conversion output\n * @param {String} replacement The string to append to the output\n * @returns Joined output\n * @type String\n */\n\nfunction join (output, replacement) {\n  var s1 = trimTrailingNewlines(output);\n  var s2 = trimLeadingNewlines(replacement);\n  var nls = Math.max(output.length - s1.length, replacement.length - s2.length);\n  var separator = '\\n\\n'.substring(0, nls);\n\n  return s1 + separator + s2\n}\n\n/**\n * Determines whether an input can be converted\n * @private\n * @param {String|HTMLElement} input Describe this parameter\n * @returns Describe what it returns\n * @type String|Object|Array|Boolean|Number\n */\n\nfunction canConvert (input) {\n  return (\n    input != null && (\n      typeof input === 'string' ||\n      (input.nodeType && (\n        input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11\n      ))\n    )\n  )\n}\n\nexport default TurndownService;\n","var highlightRegExp = /highlight-(?:text|source)-([a-z0-9]+)/;\n\nfunction highlightedCodeBlock (turndownService) {\n  turndownService.addRule('highlightedCodeBlock', {\n    filter: function (node) {\n      var firstChild = node.firstChild;\n      return (\n        node.nodeName === 'DIV' &&\n        highlightRegExp.test(node.className) &&\n        firstChild &&\n        firstChild.nodeName === 'PRE'\n      )\n    },\n    replacement: function (content, node, options) {\n      var className = node.className || '';\n      var language = (className.match(highlightRegExp) || [null, ''])[1];\n\n      return (\n        '\\n\\n' + options.fence + language + '\\n' +\n        node.firstChild.textContent +\n        '\\n' + options.fence + '\\n\\n'\n      )\n    }\n  });\n}\n\nfunction strikethrough (turndownService) {\n  turndownService.addRule('strikethrough', {\n    filter: ['del', 's', 'strike'],\n    replacement: function (content) {\n      return '~' + content + '~'\n    }\n  });\n}\n\nvar indexOf = Array.prototype.indexOf;\nvar every = Array.prototype.every;\nvar rules = {};\n\nrules.tableCell = {\n  filter: ['th', 'td'],\n  replacement: function (content, node) {\n    return cell(content, node)\n  }\n};\n\nrules.tableRow = {\n  filter: 'tr',\n  replacement: function (content, node) {\n    var borderCells = '';\n    var alignMap = { left: ':--', right: '--:', center: ':-:' };\n\n    if (isHeadingRow(node)) {\n      for (var i = 0; i < node.childNodes.length; i++) {\n        var border = '---';\n        var align = (\n          node.childNodes[i].getAttribute('align') || ''\n        ).toLowerCase();\n\n        if (align) border = alignMap[align] || border;\n\n        borderCells += cell(border, node.childNodes[i]);\n      }\n    }\n    return '\\n' + content + (borderCells ? '\\n' + borderCells : '')\n  }\n};\n\nrules.table = {\n  // Only convert tables with a heading row.\n  // Tables with no heading row are kept using `keep` (see below).\n  filter: function (node) {\n    return node.nodeName === 'TABLE' && isHeadingRow(node.rows[0])\n  },\n\n  replacement: function (content) {\n    // Ensure there are no blank lines\n    content = content.replace('\\n\\n', '\\n');\n    return '\\n\\n' + content + '\\n\\n'\n  }\n};\n\nrules.tableSection = {\n  filter: ['thead', 'tbody', 'tfoot'],\n  replacement: function (content) {\n    return content\n  }\n};\n\n// A tr is a heading row if:\n// - the parent is a THEAD\n// - or if its the first child of the TABLE or the first TBODY (possibly\n//   following a blank THEAD)\n// - and every cell is a TH\nfunction isHeadingRow (tr) {\n  var parentNode = tr.parentNode;\n  return (\n    parentNode.nodeName === 'THEAD' ||\n    (\n      parentNode.firstChild === tr &&\n      (parentNode.nodeName === 'TABLE' || isFirstTbody(parentNode)) &&\n      every.call(tr.childNodes, function (n) { return n.nodeName === 'TH' })\n    )\n  )\n}\n\nfunction isFirstTbody (element) {\n  var previousSibling = element.previousSibling;\n  return (\n    element.nodeName === 'TBODY' && (\n      !previousSibling ||\n      (\n        previousSibling.nodeName === 'THEAD' &&\n        /^\\s*$/i.test(previousSibling.textContent)\n      )\n    )\n  )\n}\n\nfunction cell (content, node) {\n  var index = indexOf.call(node.parentNode.childNodes, node);\n  var prefix = ' ';\n  if (index === 0) prefix = '| ';\n  return prefix + content + ' |'\n}\n\nfunction tables (turndownService) {\n  turndownService.keep(function (node) {\n    return node.nodeName === 'TABLE' && !isHeadingRow(node.rows[0])\n  });\n  for (var key in rules) turndownService.addRule(key, rules[key]);\n}\n\nfunction taskListItems (turndownService) {\n  turndownService.addRule('taskListItems', {\n    filter: function (node) {\n      return node.type === 'checkbox' && node.parentNode.nodeName === 'LI'\n    },\n    replacement: function (content, node) {\n      return (node.checked ? '[x]' : '[ ]') + ' '\n    }\n  });\n}\n\nfunction gfm (turndownService) {\n  turndownService.use([\n    highlightedCodeBlock,\n    strikethrough,\n    tables,\n    taskListItems\n  ]);\n}\n\nexport { gfm, highlightedCodeBlock, strikethrough, tables, taskListItems };\n","import TurndownService from \"turndown\"\n// @ts-expect-error Missing types\nimport { gfm } from \"turndown-plugin-gfm\"\n\nconst turndownService = new TurndownService({ headingStyle: \"atx\", codeBlockStyle: \"fenced\", bulletListMarker: \"-\" }).use(gfm)\n\nexport const toMarkdown = turndownService.turndown.bind(turndownService)\n","export async function* responseToTextStream(res: Response): AsyncGenerator<string> {\n  if (!res.body)\n    throw new Error(\"No data\")\n\n  const reader = res.body.getReader()\n  const decoder = new TextDecoder()\n\n  try {\n    while (true) {\n      const { done, value } = await reader.read()\n\n      if (done)\n        break\n\n      yield decoder.decode(value, { stream: true })\n    }\n  } finally {\n    reader.releaseLock()\n  }\n}\n\nexport async function* accumulate(generator: AsyncGenerator<string>): AsyncGenerator<string> {\n  let buffer = \"\"\n  for await (const chunk of generator) {\n    buffer += chunk\n    yield buffer\n  }\n}\n","/*\n * Copyright (c) 2010 Arc90 Inc\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * This code is heavily based on Arc90's readability.js (1.7.1) script\n * available at: http://code.google.com/p/arc90labs-readability\n */\n\n/**\n * Public constructor.\n * @param {HTMLDocument} doc     The document to parse.\n * @param {Object}       options The options object.\n */\nfunction Readability(doc, options) {\n  // In some older versions, people passed a URI as the first argument. Cope:\n  if (options && options.documentElement) {\n    doc = options;\n    options = arguments[2];\n  } else if (!doc || !doc.documentElement) {\n    throw new Error(\n      \"First argument to Readability constructor should be a document object.\"\n    );\n  }\n  options = options || {};\n\n  this._doc = doc;\n  this._docJSDOMParser = this._doc.firstChild.__JSDOMParser__;\n  this._articleTitle = null;\n  this._articleByline = null;\n  this._articleDir = null;\n  this._articleSiteName = null;\n  this._attempts = [];\n  this._metadata = {};\n\n  // Configurable options\n  this._debug = !!options.debug;\n  this._maxElemsToParse =\n    options.maxElemsToParse || this.DEFAULT_MAX_ELEMS_TO_PARSE;\n  this._nbTopCandidates =\n    options.nbTopCandidates || this.DEFAULT_N_TOP_CANDIDATES;\n  this._charThreshold = options.charThreshold || this.DEFAULT_CHAR_THRESHOLD;\n  this._classesToPreserve = this.CLASSES_TO_PRESERVE.concat(\n    options.classesToPreserve || []\n  );\n  this._keepClasses = !!options.keepClasses;\n  this._serializer =\n    options.serializer ||\n    function (el) {\n      return el.innerHTML;\n    };\n  this._disableJSONLD = !!options.disableJSONLD;\n  this._allowedVideoRegex = options.allowedVideoRegex || this.REGEXPS.videos;\n  this._linkDensityModifier = options.linkDensityModifier || 0;\n\n  // Start with all flags set\n  this._flags =\n    this.FLAG_STRIP_UNLIKELYS |\n    this.FLAG_WEIGHT_CLASSES |\n    this.FLAG_CLEAN_CONDITIONALLY;\n\n  // Control whether log messages are sent to the console\n  if (this._debug) {\n    let logNode = function (node) {\n      if (node.nodeType == node.TEXT_NODE) {\n        return `${node.nodeName} (\"${node.textContent}\")`;\n      }\n      let attrPairs = Array.from(node.attributes || [], function (attr) {\n        return `${attr.name}=\"${attr.value}\"`;\n      }).join(\" \");\n      return `<${node.localName} ${attrPairs}>`;\n    };\n    this.log = function () {\n      if (typeof console !== \"undefined\") {\n        let args = Array.from(arguments, arg => {\n          if (arg && arg.nodeType == this.ELEMENT_NODE) {\n            return logNode(arg);\n          }\n          return arg;\n        });\n        args.unshift(\"Reader: (Readability)\");\n        // eslint-disable-next-line no-console\n        console.log(...args);\n      } else if (typeof dump !== \"undefined\") {\n        /* global dump */\n        var msg = Array.prototype.map\n          .call(arguments, function (x) {\n            return x && x.nodeName ? logNode(x) : x;\n          })\n          .join(\" \");\n        dump(\"Reader: (Readability) \" + msg + \"\\n\");\n      }\n    };\n  } else {\n    this.log = function () {};\n  }\n}\n\nReadability.prototype = {\n  FLAG_STRIP_UNLIKELYS: 0x1,\n  FLAG_WEIGHT_CLASSES: 0x2,\n  FLAG_CLEAN_CONDITIONALLY: 0x4,\n\n  // https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n  ELEMENT_NODE: 1,\n  TEXT_NODE: 3,\n\n  // Max number of nodes supported by this parser. Default: 0 (no limit)\n  DEFAULT_MAX_ELEMS_TO_PARSE: 0,\n\n  // The number of top candidates to consider when analysing how\n  // tight the competition is among candidates.\n  DEFAULT_N_TOP_CANDIDATES: 5,\n\n  // Element tags to score by default.\n  DEFAULT_TAGS_TO_SCORE: \"section,h2,h3,h4,h5,h6,p,td,pre\"\n    .toUpperCase()\n    .split(\",\"),\n\n  // The default number of chars an article must have in order to return a result\n  DEFAULT_CHAR_THRESHOLD: 500,\n\n  // All of the regular expressions in use within readability.\n  // Defined up here so we don't instantiate them repeatedly in loops.\n  REGEXPS: {\n    // NOTE: These two regular expressions are duplicated in\n    // Readability-readerable.js. Please keep both copies in sync.\n    unlikelyCandidates:\n      /-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,\n    okMaybeItsACandidate: /and|article|body|column|content|main|shadow/i,\n\n    positive:\n      /article|body|content|entry|hentry|h-entry|main|page|pagination|post|text|blog|story/i,\n    negative:\n      /-ad-|hidden|^hid$| hid$| hid |^hid |banner|combx|comment|com-|contact|footer|gdpr|masthead|media|meta|outbrain|promo|related|scroll|share|shoutbox|sidebar|skyscraper|sponsor|shopping|tags|widget/i,\n    extraneous:\n      /print|archive|comment|discuss|e[\\-]?mail|share|reply|all|login|sign|single|utility/i,\n    byline: /byline|author|dateline|writtenby|p-author/i,\n    replaceFonts: /<(\\/?)font[^>]*>/gi,\n    normalize: /\\s{2,}/g,\n    videos:\n      /\\/\\/(www\\.)?((dailymotion|youtube|youtube-nocookie|player\\.vimeo|v\\.qq)\\.com|(archive|upload\\.wikimedia)\\.org|player\\.twitch\\.tv)/i,\n    shareElements: /(\\b|_)(share|sharedaddy)(\\b|_)/i,\n    nextLink: /(next|weiter|continue|>([^\\|]|$)|»([^\\|]|$))/i,\n    prevLink: /(prev|earl|old|new|<|«)/i,\n    tokenize: /\\W+/g,\n    whitespace: /^\\s*$/,\n    hasContent: /\\S$/,\n    hashUrl: /^#.+/,\n    srcsetUrl: /(\\S+)(\\s+[\\d.]+[xw])?(\\s*(?:,|$))/g,\n    b64DataUrl: /^data:\\s*([^\\s;,]+)\\s*;\\s*base64\\s*,/i,\n    // Commas as used in Latin, Sindhi, Chinese and various other scripts.\n    // see: https://en.wikipedia.org/wiki/Comma#Comma_variants\n    commas: /\\u002C|\\u060C|\\uFE50|\\uFE10|\\uFE11|\\u2E41|\\u2E34|\\u2E32|\\uFF0C/g,\n    // See: https://schema.org/Article\n    jsonLdArticleTypes:\n      /^Article|AdvertiserContentArticle|NewsArticle|AnalysisNewsArticle|AskPublicNewsArticle|BackgroundNewsArticle|OpinionNewsArticle|ReportageNewsArticle|ReviewNewsArticle|Report|SatiricalArticle|ScholarlyArticle|MedicalScholarlyArticle|SocialMediaPosting|BlogPosting|LiveBlogPosting|DiscussionForumPosting|TechArticle|APIReference$/,\n    // used to see if a node's content matches words commonly used for ad blocks or loading indicators\n    adWords:\n      /^(ad(vertising|vertisement)?|pub(licité)?|werb(ung)?|广告|Реклама|Anuncio)$/iu,\n    loadingWords:\n      /^((loading|正在加载|Загрузка|chargement|cargando)(…|\\.\\.\\.)?)$/iu,\n  },\n\n  UNLIKELY_ROLES: [\n    \"menu\",\n    \"menubar\",\n    \"complementary\",\n    \"navigation\",\n    \"alert\",\n    \"alertdialog\",\n    \"dialog\",\n  ],\n\n  DIV_TO_P_ELEMS: new Set([\n    \"BLOCKQUOTE\",\n    \"DL\",\n    \"DIV\",\n    \"IMG\",\n    \"OL\",\n    \"P\",\n    \"PRE\",\n    \"TABLE\",\n    \"UL\",\n  ]),\n\n  ALTER_TO_DIV_EXCEPTIONS: [\"DIV\", \"ARTICLE\", \"SECTION\", \"P\", \"OL\", \"UL\"],\n\n  PRESENTATIONAL_ATTRIBUTES: [\n    \"align\",\n    \"background\",\n    \"bgcolor\",\n    \"border\",\n    \"cellpadding\",\n    \"cellspacing\",\n    \"frame\",\n    \"hspace\",\n    \"rules\",\n    \"style\",\n    \"valign\",\n    \"vspace\",\n  ],\n\n  DEPRECATED_SIZE_ATTRIBUTE_ELEMS: [\"TABLE\", \"TH\", \"TD\", \"HR\", \"PRE\"],\n\n  // The commented out elements qualify as phrasing content but tend to be\n  // removed by readability when put into paragraphs, so we ignore them here.\n  PHRASING_ELEMS: [\n    // \"CANVAS\", \"IFRAME\", \"SVG\", \"VIDEO\",\n    \"ABBR\",\n    \"AUDIO\",\n    \"B\",\n    \"BDO\",\n    \"BR\",\n    \"BUTTON\",\n    \"CITE\",\n    \"CODE\",\n    \"DATA\",\n    \"DATALIST\",\n    \"DFN\",\n    \"EM\",\n    \"EMBED\",\n    \"I\",\n    \"IMG\",\n    \"INPUT\",\n    \"KBD\",\n    \"LABEL\",\n    \"MARK\",\n    \"MATH\",\n    \"METER\",\n    \"NOSCRIPT\",\n    \"OBJECT\",\n    \"OUTPUT\",\n    \"PROGRESS\",\n    \"Q\",\n    \"RUBY\",\n    \"SAMP\",\n    \"SCRIPT\",\n    \"SELECT\",\n    \"SMALL\",\n    \"SPAN\",\n    \"STRONG\",\n    \"SUB\",\n    \"SUP\",\n    \"TEXTAREA\",\n    \"TIME\",\n    \"VAR\",\n    \"WBR\",\n  ],\n\n  // These are the classes that readability sets itself.\n  CLASSES_TO_PRESERVE: [\"page\"],\n\n  // These are the list of HTML entities that need to be escaped.\n  HTML_ESCAPE_MAP: {\n    lt: \"<\",\n    gt: \">\",\n    amp: \"&\",\n    quot: '\"',\n    apos: \"'\",\n  },\n\n  /**\n   * Run any post-process modifications to article content as necessary.\n   *\n   * @param Element\n   * @return void\n   **/\n  _postProcessContent(articleContent) {\n    // Readability cannot open relative uris so we convert them to absolute uris.\n    this._fixRelativeUris(articleContent);\n\n    this._simplifyNestedElements(articleContent);\n\n    if (!this._keepClasses) {\n      // Remove classes.\n      this._cleanClasses(articleContent);\n    }\n  },\n\n  /**\n   * Iterates over a NodeList, calls `filterFn` for each node and removes node\n   * if function returned `true`.\n   *\n   * If function is not passed, removes all the nodes in node list.\n   *\n   * @param NodeList nodeList The nodes to operate on\n   * @param Function filterFn the function to use as a filter\n   * @return void\n   */\n  _removeNodes(nodeList, filterFn) {\n    // Avoid ever operating on live node lists.\n    if (this._docJSDOMParser && nodeList._isLiveNodeList) {\n      throw new Error(\"Do not pass live node lists to _removeNodes\");\n    }\n    for (var i = nodeList.length - 1; i >= 0; i--) {\n      var node = nodeList[i];\n      var parentNode = node.parentNode;\n      if (parentNode) {\n        if (!filterFn || filterFn.call(this, node, i, nodeList)) {\n          parentNode.removeChild(node);\n        }\n      }\n    }\n  },\n\n  /**\n   * Iterates over a NodeList, and calls _setNodeTag for each node.\n   *\n   * @param NodeList nodeList The nodes to operate on\n   * @param String newTagName the new tag name to use\n   * @return void\n   */\n  _replaceNodeTags(nodeList, newTagName) {\n    // Avoid ever operating on live node lists.\n    if (this._docJSDOMParser && nodeList._isLiveNodeList) {\n      throw new Error(\"Do not pass live node lists to _replaceNodeTags\");\n    }\n    for (const node of nodeList) {\n      this._setNodeTag(node, newTagName);\n    }\n  },\n\n  /**\n   * Iterate over a NodeList, which doesn't natively fully implement the Array\n   * interface.\n   *\n   * For convenience, the current object context is applied to the provided\n   * iterate function.\n   *\n   * @param  NodeList nodeList The NodeList.\n   * @param  Function fn       The iterate function.\n   * @return void\n   */\n  _forEachNode(nodeList, fn) {\n    Array.prototype.forEach.call(nodeList, fn, this);\n  },\n\n  /**\n   * Iterate over a NodeList, and return the first node that passes\n   * the supplied test function\n   *\n   * For convenience, the current object context is applied to the provided\n   * test function.\n   *\n   * @param  NodeList nodeList The NodeList.\n   * @param  Function fn       The test function.\n   * @return void\n   */\n  _findNode(nodeList, fn) {\n    return Array.prototype.find.call(nodeList, fn, this);\n  },\n\n  /**\n   * Iterate over a NodeList, return true if any of the provided iterate\n   * function calls returns true, false otherwise.\n   *\n   * For convenience, the current object context is applied to the\n   * provided iterate function.\n   *\n   * @param  NodeList nodeList The NodeList.\n   * @param  Function fn       The iterate function.\n   * @return Boolean\n   */\n  _someNode(nodeList, fn) {\n    return Array.prototype.some.call(nodeList, fn, this);\n  },\n\n  /**\n   * Iterate over a NodeList, return true if all of the provided iterate\n   * function calls return true, false otherwise.\n   *\n   * For convenience, the current object context is applied to the\n   * provided iterate function.\n   *\n   * @param  NodeList nodeList The NodeList.\n   * @param  Function fn       The iterate function.\n   * @return Boolean\n   */\n  _everyNode(nodeList, fn) {\n    return Array.prototype.every.call(nodeList, fn, this);\n  },\n\n  _getAllNodesWithTag(node, tagNames) {\n    if (node.querySelectorAll) {\n      return node.querySelectorAll(tagNames.join(\",\"));\n    }\n    return [].concat.apply(\n      [],\n      tagNames.map(function (tag) {\n        var collection = node.getElementsByTagName(tag);\n        return Array.isArray(collection) ? collection : Array.from(collection);\n      })\n    );\n  },\n\n  /**\n   * Removes the class=\"\" attribute from every element in the given\n   * subtree, except those that match CLASSES_TO_PRESERVE and\n   * the classesToPreserve array from the options object.\n   *\n   * @param Element\n   * @return void\n   */\n  _cleanClasses(node) {\n    var classesToPreserve = this._classesToPreserve;\n    var className = (node.getAttribute(\"class\") || \"\")\n      .split(/\\s+/)\n      .filter(cls => classesToPreserve.includes(cls))\n      .join(\" \");\n\n    if (className) {\n      node.setAttribute(\"class\", className);\n    } else {\n      node.removeAttribute(\"class\");\n    }\n\n    for (node = node.firstElementChild; node; node = node.nextElementSibling) {\n      this._cleanClasses(node);\n    }\n  },\n\n  /**\n   * Tests whether a string is a URL or not.\n   *\n   * @param {string} str The string to test\n   * @return {boolean} true if str is a URL, false if not\n   */\n  _isUrl(str) {\n    try {\n      new URL(str);\n      return true;\n    } catch {\n      return false;\n    }\n  },\n  /**\n   * Converts each <a> and <img> uri in the given element to an absolute URI,\n   * ignoring #ref URIs.\n   *\n   * @param Element\n   * @return void\n   */\n  _fixRelativeUris(articleContent) {\n    var baseURI = this._doc.baseURI;\n    var documentURI = this._doc.documentURI;\n    function toAbsoluteURI(uri) {\n      // Leave hash links alone if the base URI matches the document URI:\n      if (baseURI == documentURI && uri.charAt(0) == \"#\") {\n        return uri;\n      }\n\n      // Otherwise, resolve against base URI:\n      try {\n        return new URL(uri, baseURI).href;\n      } catch (ex) {\n        // Something went wrong, just return the original:\n      }\n      return uri;\n    }\n\n    var links = this._getAllNodesWithTag(articleContent, [\"a\"]);\n    this._forEachNode(links, function (link) {\n      var href = link.getAttribute(\"href\");\n      if (href) {\n        // Remove links with javascript: URIs, since\n        // they won't work after scripts have been removed from the page.\n        if (href.indexOf(\"javascript:\") === 0) {\n          // if the link only contains simple text content, it can be converted to a text node\n          if (\n            link.childNodes.length === 1 &&\n            link.childNodes[0].nodeType === this.TEXT_NODE\n          ) {\n            var text = this._doc.createTextNode(link.textContent);\n            link.parentNode.replaceChild(text, link);\n          } else {\n            // if the link has multiple children, they should all be preserved\n            var container = this._doc.createElement(\"span\");\n            while (link.firstChild) {\n              container.appendChild(link.firstChild);\n            }\n            link.parentNode.replaceChild(container, link);\n          }\n        } else {\n          link.setAttribute(\"href\", toAbsoluteURI(href));\n        }\n      }\n    });\n\n    var medias = this._getAllNodesWithTag(articleContent, [\n      \"img\",\n      \"picture\",\n      \"figure\",\n      \"video\",\n      \"audio\",\n      \"source\",\n    ]);\n\n    this._forEachNode(medias, function (media) {\n      var src = media.getAttribute(\"src\");\n      var poster = media.getAttribute(\"poster\");\n      var srcset = media.getAttribute(\"srcset\");\n\n      if (src) {\n        media.setAttribute(\"src\", toAbsoluteURI(src));\n      }\n\n      if (poster) {\n        media.setAttribute(\"poster\", toAbsoluteURI(poster));\n      }\n\n      if (srcset) {\n        var newSrcset = srcset.replace(\n          this.REGEXPS.srcsetUrl,\n          function (_, p1, p2, p3) {\n            return toAbsoluteURI(p1) + (p2 || \"\") + p3;\n          }\n        );\n\n        media.setAttribute(\"srcset\", newSrcset);\n      }\n    });\n  },\n\n  _simplifyNestedElements(articleContent) {\n    var node = articleContent;\n\n    while (node) {\n      if (\n        node.parentNode &&\n        [\"DIV\", \"SECTION\"].includes(node.tagName) &&\n        !(node.id && node.id.startsWith(\"readability\"))\n      ) {\n        if (this._isElementWithoutContent(node)) {\n          node = this._removeAndGetNext(node);\n          continue;\n        } else if (\n          this._hasSingleTagInsideElement(node, \"DIV\") ||\n          this._hasSingleTagInsideElement(node, \"SECTION\")\n        ) {\n          var child = node.children[0];\n          for (var i = 0; i < node.attributes.length; i++) {\n            child.setAttributeNode(node.attributes[i].cloneNode());\n          }\n          node.parentNode.replaceChild(child, node);\n          node = child;\n          continue;\n        }\n      }\n\n      node = this._getNextNode(node);\n    }\n  },\n\n  /**\n   * Get the article title as an H1.\n   *\n   * @return string\n   **/\n  _getArticleTitle() {\n    var doc = this._doc;\n    var curTitle = \"\";\n    var origTitle = \"\";\n\n    try {\n      curTitle = origTitle = doc.title.trim();\n\n      // If they had an element with id \"title\" in their HTML\n      if (typeof curTitle !== \"string\") {\n        curTitle = origTitle = this._getInnerText(\n          doc.getElementsByTagName(\"title\")[0]\n        );\n      }\n    } catch (e) {\n      /* ignore exceptions setting the title. */\n    }\n\n    var titleHadHierarchicalSeparators = false;\n    function wordCount(str) {\n      return str.split(/\\s+/).length;\n    }\n\n    // If there's a separator in the title, first remove the final part\n    if (/ [\\|\\-\\\\\\/>»] /.test(curTitle)) {\n      titleHadHierarchicalSeparators = / [\\\\\\/>»] /.test(curTitle);\n      let allSeparators = Array.from(origTitle.matchAll(/ [\\|\\-\\\\\\/>»] /gi));\n      curTitle = origTitle.substring(0, allSeparators.pop().index);\n\n      // If the resulting title is too short, remove the first part instead:\n      if (wordCount(curTitle) < 3) {\n        curTitle = origTitle.replace(/^[^\\|\\-\\\\\\/>»]*[\\|\\-\\\\\\/>»]/gi, \"\");\n      }\n    } else if (curTitle.includes(\": \")) {\n      // Check if we have an heading containing this exact string, so we\n      // could assume it's the full title.\n      var headings = this._getAllNodesWithTag(doc, [\"h1\", \"h2\"]);\n      var trimmedTitle = curTitle.trim();\n      var match = this._someNode(headings, function (heading) {\n        return heading.textContent.trim() === trimmedTitle;\n      });\n\n      // If we don't, let's extract the title out of the original title string.\n      if (!match) {\n        curTitle = origTitle.substring(origTitle.lastIndexOf(\":\") + 1);\n\n        // If the title is now too short, try the first colon instead:\n        if (wordCount(curTitle) < 3) {\n          curTitle = origTitle.substring(origTitle.indexOf(\":\") + 1);\n          // But if we have too many words before the colon there's something weird\n          // with the titles and the H tags so let's just use the original title instead\n        } else if (wordCount(origTitle.substr(0, origTitle.indexOf(\":\"))) > 5) {\n          curTitle = origTitle;\n        }\n      }\n    } else if (curTitle.length > 150 || curTitle.length < 15) {\n      var hOnes = doc.getElementsByTagName(\"h1\");\n\n      if (hOnes.length === 1) {\n        curTitle = this._getInnerText(hOnes[0]);\n      }\n    }\n\n    curTitle = curTitle.trim().replace(this.REGEXPS.normalize, \" \");\n    // If we now have 4 words or fewer as our title, and either no\n    // 'hierarchical' separators (\\, /, > or ») were found in the original\n    // title or we decreased the number of words by more than 1 word, use\n    // the original title.\n    var curTitleWordCount = wordCount(curTitle);\n    if (\n      curTitleWordCount <= 4 &&\n      (!titleHadHierarchicalSeparators ||\n        curTitleWordCount !=\n          wordCount(origTitle.replace(/[\\|\\-\\\\\\/>»]+/g, \"\")) - 1)\n    ) {\n      curTitle = origTitle;\n    }\n\n    return curTitle;\n  },\n\n  /**\n   * Prepare the HTML document for readability to scrape it.\n   * This includes things like stripping javascript, CSS, and handling terrible markup.\n   *\n   * @return void\n   **/\n  _prepDocument() {\n    var doc = this._doc;\n\n    // Remove all style tags in head\n    this._removeNodes(this._getAllNodesWithTag(doc, [\"style\"]));\n\n    if (doc.body) {\n      this._replaceBrs(doc.body);\n    }\n\n    this._replaceNodeTags(this._getAllNodesWithTag(doc, [\"font\"]), \"SPAN\");\n  },\n\n  /**\n   * Finds the next node, starting from the given node, and ignoring\n   * whitespace in between. If the given node is an element, the same node is\n   * returned.\n   */\n  _nextNode(node) {\n    var next = node;\n    while (\n      next &&\n      next.nodeType != this.ELEMENT_NODE &&\n      this.REGEXPS.whitespace.test(next.textContent)\n    ) {\n      next = next.nextSibling;\n    }\n    return next;\n  },\n\n  /**\n   * Replaces 2 or more successive <br> elements with a single <p>.\n   * Whitespace between <br> elements are ignored. For example:\n   *   <div>foo<br>bar<br> <br><br>abc</div>\n   * will become:\n   *   <div>foo<br>bar<p>abc</p></div>\n   */\n  _replaceBrs(elem) {\n    this._forEachNode(this._getAllNodesWithTag(elem, [\"br\"]), function (br) {\n      var next = br.nextSibling;\n\n      // Whether 2 or more <br> elements have been found and replaced with a\n      // <p> block.\n      var replaced = false;\n\n      // If we find a <br> chain, remove the <br>s until we hit another node\n      // or non-whitespace. This leaves behind the first <br> in the chain\n      // (which will be replaced with a <p> later).\n      while ((next = this._nextNode(next)) && next.tagName == \"BR\") {\n        replaced = true;\n        var brSibling = next.nextSibling;\n        next.remove();\n        next = brSibling;\n      }\n\n      // If we removed a <br> chain, replace the remaining <br> with a <p>. Add\n      // all sibling nodes as children of the <p> until we hit another <br>\n      // chain.\n      if (replaced) {\n        var p = this._doc.createElement(\"p\");\n        br.parentNode.replaceChild(p, br);\n\n        next = p.nextSibling;\n        while (next) {\n          // If we've hit another <br><br>, we're done adding children to this <p>.\n          if (next.tagName == \"BR\") {\n            var nextElem = this._nextNode(next.nextSibling);\n            if (nextElem && nextElem.tagName == \"BR\") {\n              break;\n            }\n          }\n\n          if (!this._isPhrasingContent(next)) {\n            break;\n          }\n\n          // Otherwise, make this node a child of the new <p>.\n          var sibling = next.nextSibling;\n          p.appendChild(next);\n          next = sibling;\n        }\n\n        while (p.lastChild && this._isWhitespace(p.lastChild)) {\n          p.lastChild.remove();\n        }\n\n        if (p.parentNode.tagName === \"P\") {\n          this._setNodeTag(p.parentNode, \"DIV\");\n        }\n      }\n    });\n  },\n\n  _setNodeTag(node, tag) {\n    this.log(\"_setNodeTag\", node, tag);\n    if (this._docJSDOMParser) {\n      node.localName = tag.toLowerCase();\n      node.tagName = tag.toUpperCase();\n      return node;\n    }\n\n    var replacement = node.ownerDocument.createElement(tag);\n    while (node.firstChild) {\n      replacement.appendChild(node.firstChild);\n    }\n    node.parentNode.replaceChild(replacement, node);\n    if (node.readability) {\n      replacement.readability = node.readability;\n    }\n\n    for (var i = 0; i < node.attributes.length; i++) {\n      replacement.setAttributeNode(node.attributes[i].cloneNode());\n    }\n    return replacement;\n  },\n\n  /**\n   * Prepare the article node for display. Clean out any inline styles,\n   * iframes, forms, strip extraneous <p> tags, etc.\n   *\n   * @param Element\n   * @return void\n   **/\n  _prepArticle(articleContent) {\n    this._cleanStyles(articleContent);\n\n    // Check for data tables before we continue, to avoid removing items in\n    // those tables, which will often be isolated even though they're\n    // visually linked to other content-ful elements (text, images, etc.).\n    this._markDataTables(articleContent);\n\n    this._fixLazyImages(articleContent);\n\n    // Clean out junk from the article content\n    this._cleanConditionally(articleContent, \"form\");\n    this._cleanConditionally(articleContent, \"fieldset\");\n    this._clean(articleContent, \"object\");\n    this._clean(articleContent, \"embed\");\n    this._clean(articleContent, \"footer\");\n    this._clean(articleContent, \"link\");\n    this._clean(articleContent, \"aside\");\n\n    // Clean out elements with little content that have \"share\" in their id/class combinations from final top candidates,\n    // which means we don't remove the top candidates even they have \"share\".\n\n    var shareElementThreshold = this.DEFAULT_CHAR_THRESHOLD;\n\n    this._forEachNode(articleContent.children, function (topCandidate) {\n      this._cleanMatchedNodes(topCandidate, function (node, matchString) {\n        return (\n          this.REGEXPS.shareElements.test(matchString) &&\n          node.textContent.length < shareElementThreshold\n        );\n      });\n    });\n\n    this._clean(articleContent, \"iframe\");\n    this._clean(articleContent, \"input\");\n    this._clean(articleContent, \"textarea\");\n    this._clean(articleContent, \"select\");\n    this._clean(articleContent, \"button\");\n    this._cleanHeaders(articleContent);\n\n    // Do these last as the previous stuff may have removed junk\n    // that will affect these\n    this._cleanConditionally(articleContent, \"table\");\n    this._cleanConditionally(articleContent, \"ul\");\n    this._cleanConditionally(articleContent, \"div\");\n\n    // replace H1 with H2 as H1 should be only title that is displayed separately\n    this._replaceNodeTags(\n      this._getAllNodesWithTag(articleContent, [\"h1\"]),\n      \"h2\"\n    );\n\n    // Remove extra paragraphs\n    this._removeNodes(\n      this._getAllNodesWithTag(articleContent, [\"p\"]),\n      function (paragraph) {\n        // At this point, nasty iframes have been removed; only embedded video\n        // ones remain.\n        var contentElementCount = this._getAllNodesWithTag(paragraph, [\n          \"img\",\n          \"embed\",\n          \"object\",\n          \"iframe\",\n        ]).length;\n        return (\n          contentElementCount === 0 && !this._getInnerText(paragraph, false)\n        );\n      }\n    );\n\n    this._forEachNode(\n      this._getAllNodesWithTag(articleContent, [\"br\"]),\n      function (br) {\n        var next = this._nextNode(br.nextSibling);\n        if (next && next.tagName == \"P\") {\n          br.remove();\n        }\n      }\n    );\n\n    // Remove single-cell tables\n    this._forEachNode(\n      this._getAllNodesWithTag(articleContent, [\"table\"]),\n      function (table) {\n        var tbody = this._hasSingleTagInsideElement(table, \"TBODY\")\n          ? table.firstElementChild\n          : table;\n        if (this._hasSingleTagInsideElement(tbody, \"TR\")) {\n          var row = tbody.firstElementChild;\n          if (this._hasSingleTagInsideElement(row, \"TD\")) {\n            var cell = row.firstElementChild;\n            cell = this._setNodeTag(\n              cell,\n              this._everyNode(cell.childNodes, this._isPhrasingContent)\n                ? \"P\"\n                : \"DIV\"\n            );\n            table.parentNode.replaceChild(cell, table);\n          }\n        }\n      }\n    );\n  },\n\n  /**\n   * Initialize a node with the readability object. Also checks the\n   * className/id for special names to add to its score.\n   *\n   * @param Element\n   * @return void\n   **/\n  _initializeNode(node) {\n    node.readability = { contentScore: 0 };\n\n    switch (node.tagName) {\n      case \"DIV\":\n        node.readability.contentScore += 5;\n        break;\n\n      case \"PRE\":\n      case \"TD\":\n      case \"BLOCKQUOTE\":\n        node.readability.contentScore += 3;\n        break;\n\n      case \"ADDRESS\":\n      case \"OL\":\n      case \"UL\":\n      case \"DL\":\n      case \"DD\":\n      case \"DT\":\n      case \"LI\":\n      case \"FORM\":\n        node.readability.contentScore -= 3;\n        break;\n\n      case \"H1\":\n      case \"H2\":\n      case \"H3\":\n      case \"H4\":\n      case \"H5\":\n      case \"H6\":\n      case \"TH\":\n        node.readability.contentScore -= 5;\n        break;\n    }\n\n    node.readability.contentScore += this._getClassWeight(node);\n  },\n\n  _removeAndGetNext(node) {\n    var nextNode = this._getNextNode(node, true);\n    node.remove();\n    return nextNode;\n  },\n\n  /**\n   * Traverse the DOM from node to node, starting at the node passed in.\n   * Pass true for the second parameter to indicate this node itself\n   * (and its kids) are going away, and we want the next node over.\n   *\n   * Calling this in a loop will traverse the DOM depth-first.\n   *\n   * @param {Element} node\n   * @param {boolean} ignoreSelfAndKids\n   * @return {Element}\n   */\n  _getNextNode(node, ignoreSelfAndKids) {\n    // First check for kids if those aren't being ignored\n    if (!ignoreSelfAndKids && node.firstElementChild) {\n      return node.firstElementChild;\n    }\n    // Then for siblings...\n    if (node.nextElementSibling) {\n      return node.nextElementSibling;\n    }\n    // And finally, move up the parent chain *and* find a sibling\n    // (because this is depth-first traversal, we will have already\n    // seen the parent nodes themselves).\n    do {\n      node = node.parentNode;\n    } while (node && !node.nextElementSibling);\n    return node && node.nextElementSibling;\n  },\n\n  // compares second text to first one\n  // 1 = same text, 0 = completely different text\n  // works the way that it splits both texts into words and then finds words that are unique in second text\n  // the result is given by the lower length of unique parts\n  _textSimilarity(textA, textB) {\n    var tokensA = textA\n      .toLowerCase()\n      .split(this.REGEXPS.tokenize)\n      .filter(Boolean);\n    var tokensB = textB\n      .toLowerCase()\n      .split(this.REGEXPS.tokenize)\n      .filter(Boolean);\n    if (!tokensA.length || !tokensB.length) {\n      return 0;\n    }\n    var uniqTokensB = tokensB.filter(token => !tokensA.includes(token));\n    var distanceB = uniqTokensB.join(\" \").length / tokensB.join(\" \").length;\n    return 1 - distanceB;\n  },\n\n  /**\n   * Checks whether an element node contains a valid byline\n   *\n   * @param node {Element}\n   * @param matchString {string}\n   * @return boolean\n   */\n  _isValidByline(node, matchString) {\n    var rel = node.getAttribute(\"rel\");\n    var itemprop = node.getAttribute(\"itemprop\");\n    var bylineLength = node.textContent.trim().length;\n\n    return (\n      (rel === \"author\" ||\n        (itemprop && itemprop.includes(\"author\")) ||\n        this.REGEXPS.byline.test(matchString)) &&\n      !!bylineLength &&\n      bylineLength < 100\n    );\n  },\n\n  _getNodeAncestors(node, maxDepth) {\n    maxDepth = maxDepth || 0;\n    var i = 0,\n      ancestors = [];\n    while (node.parentNode) {\n      ancestors.push(node.parentNode);\n      if (maxDepth && ++i === maxDepth) {\n        break;\n      }\n      node = node.parentNode;\n    }\n    return ancestors;\n  },\n\n  /***\n   * grabArticle - Using a variety of metrics (content score, classname, element types), find the content that is\n   *         most likely to be the stuff a user wants to read. Then return it wrapped up in a div.\n   *\n   * @param page a document to run upon. Needs to be a full document, complete with body.\n   * @return Element\n   **/\n  /* eslint-disable-next-line complexity */\n  _grabArticle(page) {\n    this.log(\"**** grabArticle ****\");\n    var doc = this._doc;\n    var isPaging = page !== null;\n    page = page ? page : this._doc.body;\n\n    // We can't grab an article if we don't have a page!\n    if (!page) {\n      this.log(\"No body found in document. Abort.\");\n      return null;\n    }\n\n    var pageCacheHtml = page.innerHTML;\n\n    while (true) {\n      this.log(\"Starting grabArticle loop\");\n      var stripUnlikelyCandidates = this._flagIsActive(\n        this.FLAG_STRIP_UNLIKELYS\n      );\n\n      // First, node prepping. Trash nodes that look cruddy (like ones with the\n      // class name \"comment\", etc), and turn divs into P tags where they have been\n      // used inappropriately (as in, where they contain no other block level elements.)\n      var elementsToScore = [];\n      var node = this._doc.documentElement;\n\n      let shouldRemoveTitleHeader = true;\n\n      while (node) {\n        if (node.tagName === \"HTML\") {\n          this._articleLang = node.getAttribute(\"lang\");\n        }\n\n        var matchString = node.className + \" \" + node.id;\n\n        if (!this._isProbablyVisible(node)) {\n          this.log(\"Removing hidden node - \" + matchString);\n          node = this._removeAndGetNext(node);\n          continue;\n        }\n\n        // User is not able to see elements applied with both \"aria-modal = true\" and \"role = dialog\"\n        if (\n          node.getAttribute(\"aria-modal\") == \"true\" &&\n          node.getAttribute(\"role\") == \"dialog\"\n        ) {\n          node = this._removeAndGetNext(node);\n          continue;\n        }\n\n        // If we don't have a byline yet check to see if this node is a byline; if it is store the byline and remove the node.\n        if (\n          !this._articleByline &&\n          !this._metadata.byline &&\n          this._isValidByline(node, matchString)\n        ) {\n          // Find child node matching [itemprop=\"name\"] and use that if it exists for a more accurate author name byline\n          var endOfSearchMarkerNode = this._getNextNode(node, true);\n          var next = this._getNextNode(node);\n          var itemPropNameNode = null;\n          while (next && next != endOfSearchMarkerNode) {\n            var itemprop = next.getAttribute(\"itemprop\");\n            if (itemprop && itemprop.includes(\"name\")) {\n              itemPropNameNode = next;\n              break;\n            } else {\n              next = this._getNextNode(next);\n            }\n          }\n          this._articleByline = (itemPropNameNode ?? node).textContent.trim();\n          node = this._removeAndGetNext(node);\n          continue;\n        }\n\n        if (shouldRemoveTitleHeader && this._headerDuplicatesTitle(node)) {\n          this.log(\n            \"Removing header: \",\n            node.textContent.trim(),\n            this._articleTitle.trim()\n          );\n          shouldRemoveTitleHeader = false;\n          node = this._removeAndGetNext(node);\n          continue;\n        }\n\n        // Remove unlikely candidates\n        if (stripUnlikelyCandidates) {\n          if (\n            this.REGEXPS.unlikelyCandidates.test(matchString) &&\n            !this.REGEXPS.okMaybeItsACandidate.test(matchString) &&\n            !this._hasAncestorTag(node, \"table\") &&\n            !this._hasAncestorTag(node, \"code\") &&\n            node.tagName !== \"BODY\" &&\n            node.tagName !== \"A\"\n          ) {\n            this.log(\"Removing unlikely candidate - \" + matchString);\n            node = this._removeAndGetNext(node);\n            continue;\n          }\n\n          if (this.UNLIKELY_ROLES.includes(node.getAttribute(\"role\"))) {\n            this.log(\n              \"Removing content with role \" +\n                node.getAttribute(\"role\") +\n                \" - \" +\n                matchString\n            );\n            node = this._removeAndGetNext(node);\n            continue;\n          }\n        }\n\n        // Remove DIV, SECTION, and HEADER nodes without any content(e.g. text, image, video, or iframe).\n        if (\n          (node.tagName === \"DIV\" ||\n            node.tagName === \"SECTION\" ||\n            node.tagName === \"HEADER\" ||\n            node.tagName === \"H1\" ||\n            node.tagName === \"H2\" ||\n            node.tagName === \"H3\" ||\n            node.tagName === \"H4\" ||\n            node.tagName === \"H5\" ||\n            node.tagName === \"H6\") &&\n          this._isElementWithoutContent(node)\n        ) {\n          node = this._removeAndGetNext(node);\n          continue;\n        }\n\n        if (this.DEFAULT_TAGS_TO_SCORE.includes(node.tagName)) {\n          elementsToScore.push(node);\n        }\n\n        // Turn all divs that don't have children block level elements into p's\n        if (node.tagName === \"DIV\") {\n          // Put phrasing content into paragraphs.\n          var p = null;\n          var childNode = node.firstChild;\n          while (childNode) {\n            var nextSibling = childNode.nextSibling;\n            if (this._isPhrasingContent(childNode)) {\n              if (p !== null) {\n                p.appendChild(childNode);\n              } else if (!this._isWhitespace(childNode)) {\n                p = doc.createElement(\"p\");\n                node.replaceChild(p, childNode);\n                p.appendChild(childNode);\n              }\n            } else if (p !== null) {\n              while (p.lastChild && this._isWhitespace(p.lastChild)) {\n                p.lastChild.remove();\n              }\n              p = null;\n            }\n            childNode = nextSibling;\n          }\n\n          // Sites like http://mobile.slate.com encloses each paragraph with a DIV\n          // element. DIVs with only a P element inside and no text content can be\n          // safely converted into plain P elements to avoid confusing the scoring\n          // algorithm with DIVs with are, in practice, paragraphs.\n          if (\n            this._hasSingleTagInsideElement(node, \"P\") &&\n            this._getLinkDensity(node) < 0.25\n          ) {\n            var newNode = node.children[0];\n            node.parentNode.replaceChild(newNode, node);\n            node = newNode;\n            elementsToScore.push(node);\n          } else if (!this._hasChildBlockElement(node)) {\n            node = this._setNodeTag(node, \"P\");\n            elementsToScore.push(node);\n          }\n        }\n        node = this._getNextNode(node);\n      }\n\n      /**\n       * Loop through all paragraphs, and assign a score to them based on how content-y they look.\n       * Then add their score to their parent node.\n       *\n       * A score is determined by things like number of commas, class names, etc. Maybe eventually link density.\n       **/\n      var candidates = [];\n      this._forEachNode(elementsToScore, function (elementToScore) {\n        if (\n          !elementToScore.parentNode ||\n          typeof elementToScore.parentNode.tagName === \"undefined\"\n        ) {\n          return;\n        }\n\n        // If this paragraph is less than 25 characters, don't even count it.\n        var innerText = this._getInnerText(elementToScore);\n        if (innerText.length < 25) {\n          return;\n        }\n\n        // Exclude nodes with no ancestor.\n        var ancestors = this._getNodeAncestors(elementToScore, 5);\n        if (ancestors.length === 0) {\n          return;\n        }\n\n        var contentScore = 0;\n\n        // Add a point for the paragraph itself as a base.\n        contentScore += 1;\n\n        // Add points for any commas within this paragraph.\n        contentScore += innerText.split(this.REGEXPS.commas).length;\n\n        // For every 100 characters in this paragraph, add another point. Up to 3 points.\n        contentScore += Math.min(Math.floor(innerText.length / 100), 3);\n\n        // Initialize and score ancestors.\n        this._forEachNode(ancestors, function (ancestor, level) {\n          if (\n            !ancestor.tagName ||\n            !ancestor.parentNode ||\n            typeof ancestor.parentNode.tagName === \"undefined\"\n          ) {\n            return;\n          }\n\n          if (typeof ancestor.readability === \"undefined\") {\n            this._initializeNode(ancestor);\n            candidates.push(ancestor);\n          }\n\n          // Node score divider:\n          // - parent:             1 (no division)\n          // - grandparent:        2\n          // - great grandparent+: ancestor level * 3\n          if (level === 0) {\n            var scoreDivider = 1;\n          } else if (level === 1) {\n            scoreDivider = 2;\n          } else {\n            scoreDivider = level * 3;\n          }\n          ancestor.readability.contentScore += contentScore / scoreDivider;\n        });\n      });\n\n      // After we've calculated scores, loop through all of the possible\n      // candidate nodes we found and find the one with the highest score.\n      var topCandidates = [];\n      for (var c = 0, cl = candidates.length; c < cl; c += 1) {\n        var candidate = candidates[c];\n\n        // Scale the final candidates score based on link density. Good content\n        // should have a relatively small link density (5% or less) and be mostly\n        // unaffected by this operation.\n        var candidateScore =\n          candidate.readability.contentScore *\n          (1 - this._getLinkDensity(candidate));\n        candidate.readability.contentScore = candidateScore;\n\n        this.log(\"Candidate:\", candidate, \"with score \" + candidateScore);\n\n        for (var t = 0; t < this._nbTopCandidates; t++) {\n          var aTopCandidate = topCandidates[t];\n\n          if (\n            !aTopCandidate ||\n            candidateScore > aTopCandidate.readability.contentScore\n          ) {\n            topCandidates.splice(t, 0, candidate);\n            if (topCandidates.length > this._nbTopCandidates) {\n              topCandidates.pop();\n            }\n            break;\n          }\n        }\n      }\n\n      var topCandidate = topCandidates[0] || null;\n      var neededToCreateTopCandidate = false;\n      var parentOfTopCandidate;\n\n      // If we still have no top candidate, just use the body as a last resort.\n      // We also have to copy the body node so it is something we can modify.\n      if (topCandidate === null || topCandidate.tagName === \"BODY\") {\n        // Move all of the page's children into topCandidate\n        topCandidate = doc.createElement(\"DIV\");\n        neededToCreateTopCandidate = true;\n        // Move everything (not just elements, also text nodes etc.) into the container\n        // so we even include text directly in the body:\n        while (page.firstChild) {\n          this.log(\"Moving child out:\", page.firstChild);\n          topCandidate.appendChild(page.firstChild);\n        }\n\n        page.appendChild(topCandidate);\n\n        this._initializeNode(topCandidate);\n      } else if (topCandidate) {\n        // Find a better top candidate node if it contains (at least three) nodes which belong to `topCandidates` array\n        // and whose scores are quite closed with current `topCandidate` node.\n        var alternativeCandidateAncestors = [];\n        for (var i = 1; i < topCandidates.length; i++) {\n          if (\n            topCandidates[i].readability.contentScore /\n              topCandidate.readability.contentScore >=\n            0.75\n          ) {\n            alternativeCandidateAncestors.push(\n              this._getNodeAncestors(topCandidates[i])\n            );\n          }\n        }\n        var MINIMUM_TOPCANDIDATES = 3;\n        if (alternativeCandidateAncestors.length >= MINIMUM_TOPCANDIDATES) {\n          parentOfTopCandidate = topCandidate.parentNode;\n          while (parentOfTopCandidate.tagName !== \"BODY\") {\n            var listsContainingThisAncestor = 0;\n            for (\n              var ancestorIndex = 0;\n              ancestorIndex < alternativeCandidateAncestors.length &&\n              listsContainingThisAncestor < MINIMUM_TOPCANDIDATES;\n              ancestorIndex++\n            ) {\n              listsContainingThisAncestor += Number(\n                alternativeCandidateAncestors[ancestorIndex].includes(\n                  parentOfTopCandidate\n                )\n              );\n            }\n            if (listsContainingThisAncestor >= MINIMUM_TOPCANDIDATES) {\n              topCandidate = parentOfTopCandidate;\n              break;\n            }\n            parentOfTopCandidate = parentOfTopCandidate.parentNode;\n          }\n        }\n        if (!topCandidate.readability) {\n          this._initializeNode(topCandidate);\n        }\n\n        // Because of our bonus system, parents of candidates might have scores\n        // themselves. They get half of the node. There won't be nodes with higher\n        // scores than our topCandidate, but if we see the score going *up* in the first\n        // few steps up the tree, that's a decent sign that there might be more content\n        // lurking in other places that we want to unify in. The sibling stuff\n        // below does some of that - but only if we've looked high enough up the DOM\n        // tree.\n        parentOfTopCandidate = topCandidate.parentNode;\n        var lastScore = topCandidate.readability.contentScore;\n        // The scores shouldn't get too low.\n        var scoreThreshold = lastScore / 3;\n        while (parentOfTopCandidate.tagName !== \"BODY\") {\n          if (!parentOfTopCandidate.readability) {\n            parentOfTopCandidate = parentOfTopCandidate.parentNode;\n            continue;\n          }\n          var parentScore = parentOfTopCandidate.readability.contentScore;\n          if (parentScore < scoreThreshold) {\n            break;\n          }\n          if (parentScore > lastScore) {\n            // Alright! We found a better parent to use.\n            topCandidate = parentOfTopCandidate;\n            break;\n          }\n          lastScore = parentOfTopCandidate.readability.contentScore;\n          parentOfTopCandidate = parentOfTopCandidate.parentNode;\n        }\n\n        // If the top candidate is the only child, use parent instead. This will help sibling\n        // joining logic when adjacent content is actually located in parent's sibling node.\n        parentOfTopCandidate = topCandidate.parentNode;\n        while (\n          parentOfTopCandidate.tagName != \"BODY\" &&\n          parentOfTopCandidate.children.length == 1\n        ) {\n          topCandidate = parentOfTopCandidate;\n          parentOfTopCandidate = topCandidate.parentNode;\n        }\n        if (!topCandidate.readability) {\n          this._initializeNode(topCandidate);\n        }\n      }\n\n      // Now that we have the top candidate, look through its siblings for content\n      // that might also be related. Things like preambles, content split by ads\n      // that we removed, etc.\n      var articleContent = doc.createElement(\"DIV\");\n      if (isPaging) {\n        articleContent.id = \"readability-content\";\n      }\n\n      var siblingScoreThreshold = Math.max(\n        10,\n        topCandidate.readability.contentScore * 0.2\n      );\n      // Keep potential top candidate's parent node to try to get text direction of it later.\n      parentOfTopCandidate = topCandidate.parentNode;\n      var siblings = parentOfTopCandidate.children;\n\n      for (var s = 0, sl = siblings.length; s < sl; s++) {\n        var sibling = siblings[s];\n        var append = false;\n\n        this.log(\n          \"Looking at sibling node:\",\n          sibling,\n          sibling.readability\n            ? \"with score \" + sibling.readability.contentScore\n            : \"\"\n        );\n        this.log(\n          \"Sibling has score\",\n          sibling.readability ? sibling.readability.contentScore : \"Unknown\"\n        );\n\n        if (sibling === topCandidate) {\n          append = true;\n        } else {\n          var contentBonus = 0;\n\n          // Give a bonus if sibling nodes and top candidates have the example same classname\n          if (\n            sibling.className === topCandidate.className &&\n            topCandidate.className !== \"\"\n          ) {\n            contentBonus += topCandidate.readability.contentScore * 0.2;\n          }\n\n          if (\n            sibling.readability &&\n            sibling.readability.contentScore + contentBonus >=\n              siblingScoreThreshold\n          ) {\n            append = true;\n          } else if (sibling.nodeName === \"P\") {\n            var linkDensity = this._getLinkDensity(sibling);\n            var nodeContent = this._getInnerText(sibling);\n            var nodeLength = nodeContent.length;\n\n            if (nodeLength > 80 && linkDensity < 0.25) {\n              append = true;\n            } else if (\n              nodeLength < 80 &&\n              nodeLength > 0 &&\n              linkDensity === 0 &&\n              nodeContent.search(/\\.( |$)/) !== -1\n            ) {\n              append = true;\n            }\n          }\n        }\n\n        if (append) {\n          this.log(\"Appending node:\", sibling);\n\n          if (!this.ALTER_TO_DIV_EXCEPTIONS.includes(sibling.nodeName)) {\n            // We have a node that isn't a common block level element, like a form or td tag.\n            // Turn it into a div so it doesn't get filtered out later by accident.\n            this.log(\"Altering sibling:\", sibling, \"to div.\");\n\n            sibling = this._setNodeTag(sibling, \"DIV\");\n          }\n\n          articleContent.appendChild(sibling);\n          // Fetch children again to make it compatible\n          // with DOM parsers without live collection support.\n          siblings = parentOfTopCandidate.children;\n          // siblings is a reference to the children array, and\n          // sibling is removed from the array when we call appendChild().\n          // As a result, we must revisit this index since the nodes\n          // have been shifted.\n          s -= 1;\n          sl -= 1;\n        }\n      }\n\n      if (this._debug) {\n        this.log(\"Article content pre-prep: \" + articleContent.innerHTML);\n      }\n      // So we have all of the content that we need. Now we clean it up for presentation.\n      this._prepArticle(articleContent);\n      if (this._debug) {\n        this.log(\"Article content post-prep: \" + articleContent.innerHTML);\n      }\n\n      if (neededToCreateTopCandidate) {\n        // We already created a fake div thing, and there wouldn't have been any siblings left\n        // for the previous loop, so there's no point trying to create a new div, and then\n        // move all the children over. Just assign IDs and class names here. No need to append\n        // because that already happened anyway.\n        topCandidate.id = \"readability-page-1\";\n        topCandidate.className = \"page\";\n      } else {\n        var div = doc.createElement(\"DIV\");\n        div.id = \"readability-page-1\";\n        div.className = \"page\";\n        while (articleContent.firstChild) {\n          div.appendChild(articleContent.firstChild);\n        }\n        articleContent.appendChild(div);\n      }\n\n      if (this._debug) {\n        this.log(\"Article content after paging: \" + articleContent.innerHTML);\n      }\n\n      var parseSuccessful = true;\n\n      // Now that we've gone through the full algorithm, check to see if\n      // we got any meaningful content. If we didn't, we may need to re-run\n      // grabArticle with different flags set. This gives us a higher likelihood of\n      // finding the content, and the sieve approach gives us a higher likelihood of\n      // finding the -right- content.\n      var textLength = this._getInnerText(articleContent, true).length;\n      if (textLength < this._charThreshold) {\n        parseSuccessful = false;\n        // eslint-disable-next-line no-unsanitized/property\n        page.innerHTML = pageCacheHtml;\n\n        this._attempts.push({\n          articleContent,\n          textLength,\n        });\n\n        if (this._flagIsActive(this.FLAG_STRIP_UNLIKELYS)) {\n          this._removeFlag(this.FLAG_STRIP_UNLIKELYS);\n        } else if (this._flagIsActive(this.FLAG_WEIGHT_CLASSES)) {\n          this._removeFlag(this.FLAG_WEIGHT_CLASSES);\n        } else if (this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY)) {\n          this._removeFlag(this.FLAG_CLEAN_CONDITIONALLY);\n        } else {\n          // No luck after removing flags, just return the longest text we found during the different loops\n          this._attempts.sort(function (a, b) {\n            return b.textLength - a.textLength;\n          });\n\n          // But first check if we actually have something\n          if (!this._attempts[0].textLength) {\n            return null;\n          }\n\n          articleContent = this._attempts[0].articleContent;\n          parseSuccessful = true;\n        }\n      }\n\n      if (parseSuccessful) {\n        // Find out text direction from ancestors of final top candidate.\n        var ancestors = [parentOfTopCandidate, topCandidate].concat(\n          this._getNodeAncestors(parentOfTopCandidate)\n        );\n        this._someNode(ancestors, function (ancestor) {\n          if (!ancestor.tagName) {\n            return false;\n          }\n          var articleDir = ancestor.getAttribute(\"dir\");\n          if (articleDir) {\n            this._articleDir = articleDir;\n            return true;\n          }\n          return false;\n        });\n        return articleContent;\n      }\n    }\n  },\n\n  /**\n   * Converts some of the common HTML entities in string to their corresponding characters.\n   *\n   * @param str {string} - a string to unescape.\n   * @return string without HTML entity.\n   */\n  _unescapeHtmlEntities(str) {\n    if (!str) {\n      return str;\n    }\n\n    var htmlEscapeMap = this.HTML_ESCAPE_MAP;\n    return str\n      .replace(/&(quot|amp|apos|lt|gt);/g, function (_, tag) {\n        return htmlEscapeMap[tag];\n      })\n      .replace(/&#(?:x([0-9a-f]+)|([0-9]+));/gi, function (_, hex, numStr) {\n        var num = parseInt(hex || numStr, hex ? 16 : 10);\n\n        // these character references are replaced by a conforming HTML parser\n        if (num == 0 || num > 0x10ffff || (num >= 0xd800 && num <= 0xdfff)) {\n          num = 0xfffd;\n        }\n\n        return String.fromCodePoint(num);\n      });\n  },\n\n  /**\n   * Try to extract metadata from JSON-LD object.\n   * For now, only Schema.org objects of type Article or its subtypes are supported.\n   * @return Object with any metadata that could be extracted (possibly none)\n   */\n  _getJSONLD(doc) {\n    var scripts = this._getAllNodesWithTag(doc, [\"script\"]);\n\n    var metadata;\n\n    this._forEachNode(scripts, function (jsonLdElement) {\n      if (\n        !metadata &&\n        jsonLdElement.getAttribute(\"type\") === \"application/ld+json\"\n      ) {\n        try {\n          // Strip CDATA markers if present\n          var content = jsonLdElement.textContent.replace(\n            /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g,\n            \"\"\n          );\n          var parsed = JSON.parse(content);\n\n          if (Array.isArray(parsed)) {\n            parsed = parsed.find(it => {\n              return (\n                it[\"@type\"] &&\n                it[\"@type\"].match(this.REGEXPS.jsonLdArticleTypes)\n              );\n            });\n            if (!parsed) {\n              return;\n            }\n          }\n\n          var schemaDotOrgRegex = /^https?\\:\\/\\/schema\\.org\\/?$/;\n          var matches =\n            (typeof parsed[\"@context\"] === \"string\" &&\n              parsed[\"@context\"].match(schemaDotOrgRegex)) ||\n            (typeof parsed[\"@context\"] === \"object\" &&\n              typeof parsed[\"@context\"][\"@vocab\"] == \"string\" &&\n              parsed[\"@context\"][\"@vocab\"].match(schemaDotOrgRegex));\n\n          if (!matches) {\n            return;\n          }\n\n          if (!parsed[\"@type\"] && Array.isArray(parsed[\"@graph\"])) {\n            parsed = parsed[\"@graph\"].find(it => {\n              return (it[\"@type\"] || \"\").match(this.REGEXPS.jsonLdArticleTypes);\n            });\n          }\n\n          if (\n            !parsed ||\n            !parsed[\"@type\"] ||\n            !parsed[\"@type\"].match(this.REGEXPS.jsonLdArticleTypes)\n          ) {\n            return;\n          }\n\n          metadata = {};\n\n          if (\n            typeof parsed.name === \"string\" &&\n            typeof parsed.headline === \"string\" &&\n            parsed.name !== parsed.headline\n          ) {\n            // we have both name and headline element in the JSON-LD. They should both be the same but some websites like aktualne.cz\n            // put their own name into \"name\" and the article title to \"headline\" which confuses Readability. So we try to check if either\n            // \"name\" or \"headline\" closely matches the html title, and if so, use that one. If not, then we use \"name\" by default.\n\n            var title = this._getArticleTitle();\n            var nameMatches = this._textSimilarity(parsed.name, title) > 0.75;\n            var headlineMatches =\n              this._textSimilarity(parsed.headline, title) > 0.75;\n\n            if (headlineMatches && !nameMatches) {\n              metadata.title = parsed.headline;\n            } else {\n              metadata.title = parsed.name;\n            }\n          } else if (typeof parsed.name === \"string\") {\n            metadata.title = parsed.name.trim();\n          } else if (typeof parsed.headline === \"string\") {\n            metadata.title = parsed.headline.trim();\n          }\n          if (parsed.author) {\n            if (typeof parsed.author.name === \"string\") {\n              metadata.byline = parsed.author.name.trim();\n            } else if (\n              Array.isArray(parsed.author) &&\n              parsed.author[0] &&\n              typeof parsed.author[0].name === \"string\"\n            ) {\n              metadata.byline = parsed.author\n                .filter(function (author) {\n                  return author && typeof author.name === \"string\";\n                })\n                .map(function (author) {\n                  return author.name.trim();\n                })\n                .join(\", \");\n            }\n          }\n          if (typeof parsed.description === \"string\") {\n            metadata.excerpt = parsed.description.trim();\n          }\n          if (parsed.publisher && typeof parsed.publisher.name === \"string\") {\n            metadata.siteName = parsed.publisher.name.trim();\n          }\n          if (typeof parsed.datePublished === \"string\") {\n            metadata.datePublished = parsed.datePublished.trim();\n          }\n        } catch (err) {\n          this.log(err.message);\n        }\n      }\n    });\n    return metadata ? metadata : {};\n  },\n\n  /**\n   * Attempts to get excerpt and byline metadata for the article.\n   *\n   * @param {Object} jsonld — object containing any metadata that\n   * could be extracted from JSON-LD object.\n   *\n   * @return Object with optional \"excerpt\" and \"byline\" properties\n   */\n  _getArticleMetadata(jsonld) {\n    var metadata = {};\n    var values = {};\n    var metaElements = this._doc.getElementsByTagName(\"meta\");\n\n    // property is a space-separated list of values\n    var propertyPattern =\n      /\\s*(article|dc|dcterm|og|twitter)\\s*:\\s*(author|creator|description|published_time|title|site_name)\\s*/gi;\n\n    // name is a single value\n    var namePattern =\n      /^\\s*(?:(dc|dcterm|og|twitter|parsely|weibo:(article|webpage))\\s*[-\\.:]\\s*)?(author|creator|pub-date|description|title|site_name)\\s*$/i;\n\n    // Find description tags.\n    this._forEachNode(metaElements, function (element) {\n      var elementName = element.getAttribute(\"name\");\n      var elementProperty = element.getAttribute(\"property\");\n      var content = element.getAttribute(\"content\");\n      if (!content) {\n        return;\n      }\n      var matches = null;\n      var name = null;\n\n      if (elementProperty) {\n        matches = elementProperty.match(propertyPattern);\n        if (matches) {\n          // Convert to lowercase, and remove any whitespace\n          // so we can match below.\n          name = matches[0].toLowerCase().replace(/\\s/g, \"\");\n          // multiple authors\n          values[name] = content.trim();\n        }\n      }\n      if (!matches && elementName && namePattern.test(elementName)) {\n        name = elementName;\n        if (content) {\n          // Convert to lowercase, remove any whitespace, and convert dots\n          // to colons so we can match below.\n          name = name.toLowerCase().replace(/\\s/g, \"\").replace(/\\./g, \":\");\n          values[name] = content.trim();\n        }\n      }\n    });\n\n    // get title\n    metadata.title =\n      jsonld.title ||\n      values[\"dc:title\"] ||\n      values[\"dcterm:title\"] ||\n      values[\"og:title\"] ||\n      values[\"weibo:article:title\"] ||\n      values[\"weibo:webpage:title\"] ||\n      values.title ||\n      values[\"twitter:title\"] ||\n      values[\"parsely-title\"];\n\n    if (!metadata.title) {\n      metadata.title = this._getArticleTitle();\n    }\n\n    const articleAuthor =\n      typeof values[\"article:author\"] === \"string\" &&\n      !this._isUrl(values[\"article:author\"])\n        ? values[\"article:author\"]\n        : undefined;\n\n    // get author\n    metadata.byline =\n      jsonld.byline ||\n      values[\"dc:creator\"] ||\n      values[\"dcterm:creator\"] ||\n      values.author ||\n      values[\"parsely-author\"] ||\n      articleAuthor;\n\n    // get description\n    metadata.excerpt =\n      jsonld.excerpt ||\n      values[\"dc:description\"] ||\n      values[\"dcterm:description\"] ||\n      values[\"og:description\"] ||\n      values[\"weibo:article:description\"] ||\n      values[\"weibo:webpage:description\"] ||\n      values.description ||\n      values[\"twitter:description\"];\n\n    // get site name\n    metadata.siteName = jsonld.siteName || values[\"og:site_name\"];\n\n    // get article published time\n    metadata.publishedTime =\n      jsonld.datePublished ||\n      values[\"article:published_time\"] ||\n      values[\"parsely-pub-date\"] ||\n      null;\n\n    // in many sites the meta value is escaped with HTML entities,\n    // so here we need to unescape it\n    metadata.title = this._unescapeHtmlEntities(metadata.title);\n    metadata.byline = this._unescapeHtmlEntities(metadata.byline);\n    metadata.excerpt = this._unescapeHtmlEntities(metadata.excerpt);\n    metadata.siteName = this._unescapeHtmlEntities(metadata.siteName);\n    metadata.publishedTime = this._unescapeHtmlEntities(metadata.publishedTime);\n\n    return metadata;\n  },\n\n  /**\n   * Check if node is image, or if node contains exactly only one image\n   * whether as a direct child or as its descendants.\n   *\n   * @param Element\n   **/\n  _isSingleImage(node) {\n    while (node) {\n      if (node.tagName === \"IMG\") {\n        return true;\n      }\n      if (node.children.length !== 1 || node.textContent.trim() !== \"\") {\n        return false;\n      }\n      node = node.children[0];\n    }\n    return false;\n  },\n\n  /**\n   * Find all <noscript> that are located after <img> nodes, and which contain only one\n   * <img> element. Replace the first image with the image from inside the <noscript> tag,\n   * and remove the <noscript> tag. This improves the quality of the images we use on\n   * some sites (e.g. Medium).\n   *\n   * @param Element\n   **/\n  _unwrapNoscriptImages(doc) {\n    // Find img without source or attributes that might contains image, and remove it.\n    // This is done to prevent a placeholder img is replaced by img from noscript in next step.\n    var imgs = Array.from(doc.getElementsByTagName(\"img\"));\n    this._forEachNode(imgs, function (img) {\n      for (var i = 0; i < img.attributes.length; i++) {\n        var attr = img.attributes[i];\n        switch (attr.name) {\n          case \"src\":\n          case \"srcset\":\n          case \"data-src\":\n          case \"data-srcset\":\n            return;\n        }\n\n        if (/\\.(jpg|jpeg|png|webp)/i.test(attr.value)) {\n          return;\n        }\n      }\n\n      img.remove();\n    });\n\n    // Next find noscript and try to extract its image\n    var noscripts = Array.from(doc.getElementsByTagName(\"noscript\"));\n    this._forEachNode(noscripts, function (noscript) {\n      // Parse content of noscript and make sure it only contains image\n      if (!this._isSingleImage(noscript)) {\n        return;\n      }\n      var tmp = doc.createElement(\"div\");\n      // We're running in the document context, and using unmodified\n      // document contents, so doing this should be safe.\n      // (Also we heavily discourage people from allowing script to\n      // run at all in this document...)\n      // eslint-disable-next-line no-unsanitized/property\n      tmp.innerHTML = noscript.innerHTML;\n\n      // If noscript has previous sibling and it only contains image,\n      // replace it with noscript content. However we also keep old\n      // attributes that might contains image.\n      var prevElement = noscript.previousElementSibling;\n      if (prevElement && this._isSingleImage(prevElement)) {\n        var prevImg = prevElement;\n        if (prevImg.tagName !== \"IMG\") {\n          prevImg = prevElement.getElementsByTagName(\"img\")[0];\n        }\n\n        var newImg = tmp.getElementsByTagName(\"img\")[0];\n        for (var i = 0; i < prevImg.attributes.length; i++) {\n          var attr = prevImg.attributes[i];\n          if (attr.value === \"\") {\n            continue;\n          }\n\n          if (\n            attr.name === \"src\" ||\n            attr.name === \"srcset\" ||\n            /\\.(jpg|jpeg|png|webp)/i.test(attr.value)\n          ) {\n            if (newImg.getAttribute(attr.name) === attr.value) {\n              continue;\n            }\n\n            var attrName = attr.name;\n            if (newImg.hasAttribute(attrName)) {\n              attrName = \"data-old-\" + attrName;\n            }\n\n            newImg.setAttribute(attrName, attr.value);\n          }\n        }\n\n        noscript.parentNode.replaceChild(tmp.firstElementChild, prevElement);\n      }\n    });\n  },\n\n  /**\n   * Removes script tags from the document.\n   *\n   * @param Element\n   **/\n  _removeScripts(doc) {\n    this._removeNodes(this._getAllNodesWithTag(doc, [\"script\", \"noscript\"]));\n  },\n\n  /**\n   * Check if this node has only whitespace and a single element with given tag\n   * Returns false if the DIV node contains non-empty text nodes\n   * or if it contains no element with given tag or more than 1 element.\n   *\n   * @param Element\n   * @param string tag of child element\n   **/\n  _hasSingleTagInsideElement(element, tag) {\n    // There should be exactly 1 element child with given tag\n    if (element.children.length != 1 || element.children[0].tagName !== tag) {\n      return false;\n    }\n\n    // And there should be no text nodes with real content\n    return !this._someNode(element.childNodes, function (node) {\n      return (\n        node.nodeType === this.TEXT_NODE &&\n        this.REGEXPS.hasContent.test(node.textContent)\n      );\n    });\n  },\n\n  _isElementWithoutContent(node) {\n    return (\n      node.nodeType === this.ELEMENT_NODE &&\n      !node.textContent.trim().length &&\n      (!node.children.length ||\n        node.children.length ==\n          node.getElementsByTagName(\"br\").length +\n            node.getElementsByTagName(\"hr\").length)\n    );\n  },\n\n  /**\n   * Determine whether element has any children block level elements.\n   *\n   * @param Element\n   */\n  _hasChildBlockElement(element) {\n    return this._someNode(element.childNodes, function (node) {\n      return (\n        this.DIV_TO_P_ELEMS.has(node.tagName) ||\n        this._hasChildBlockElement(node)\n      );\n    });\n  },\n\n  /***\n   * Determine if a node qualifies as phrasing content.\n   * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content\n   **/\n  _isPhrasingContent(node) {\n    return (\n      node.nodeType === this.TEXT_NODE ||\n      this.PHRASING_ELEMS.includes(node.tagName) ||\n      ((node.tagName === \"A\" ||\n        node.tagName === \"DEL\" ||\n        node.tagName === \"INS\") &&\n        this._everyNode(node.childNodes, this._isPhrasingContent))\n    );\n  },\n\n  _isWhitespace(node) {\n    return (\n      (node.nodeType === this.TEXT_NODE &&\n        node.textContent.trim().length === 0) ||\n      (node.nodeType === this.ELEMENT_NODE && node.tagName === \"BR\")\n    );\n  },\n\n  /**\n   * Get the inner text of a node - cross browser compatibly.\n   * This also strips out any excess whitespace to be found.\n   *\n   * @param Element\n   * @param Boolean normalizeSpaces (default: true)\n   * @return string\n   **/\n  _getInnerText(e, normalizeSpaces) {\n    normalizeSpaces =\n      typeof normalizeSpaces === \"undefined\" ? true : normalizeSpaces;\n    var textContent = e.textContent.trim();\n\n    if (normalizeSpaces) {\n      return textContent.replace(this.REGEXPS.normalize, \" \");\n    }\n    return textContent;\n  },\n\n  /**\n   * Get the number of times a string s appears in the node e.\n   *\n   * @param Element\n   * @param string - what to split on. Default is \",\"\n   * @return number (integer)\n   **/\n  _getCharCount(e, s) {\n    s = s || \",\";\n    return this._getInnerText(e).split(s).length - 1;\n  },\n\n  /**\n   * Remove the style attribute on every e and under.\n   * TODO: Test if getElementsByTagName(*) is faster.\n   *\n   * @param Element\n   * @return void\n   **/\n  _cleanStyles(e) {\n    if (!e || e.tagName.toLowerCase() === \"svg\") {\n      return;\n    }\n\n    // Remove `style` and deprecated presentational attributes\n    for (var i = 0; i < this.PRESENTATIONAL_ATTRIBUTES.length; i++) {\n      e.removeAttribute(this.PRESENTATIONAL_ATTRIBUTES[i]);\n    }\n\n    if (this.DEPRECATED_SIZE_ATTRIBUTE_ELEMS.includes(e.tagName)) {\n      e.removeAttribute(\"width\");\n      e.removeAttribute(\"height\");\n    }\n\n    var cur = e.firstElementChild;\n    while (cur !== null) {\n      this._cleanStyles(cur);\n      cur = cur.nextElementSibling;\n    }\n  },\n\n  /**\n   * Get the density of links as a percentage of the content\n   * This is the amount of text that is inside a link divided by the total text in the node.\n   *\n   * @param Element\n   * @return number (float)\n   **/\n  _getLinkDensity(element) {\n    var textLength = this._getInnerText(element).length;\n    if (textLength === 0) {\n      return 0;\n    }\n\n    var linkLength = 0;\n\n    // XXX implement _reduceNodeList?\n    this._forEachNode(element.getElementsByTagName(\"a\"), function (linkNode) {\n      var href = linkNode.getAttribute(\"href\");\n      var coefficient = href && this.REGEXPS.hashUrl.test(href) ? 0.3 : 1;\n      linkLength += this._getInnerText(linkNode).length * coefficient;\n    });\n\n    return linkLength / textLength;\n  },\n\n  /**\n   * Get an elements class/id weight. Uses regular expressions to tell if this\n   * element looks good or bad.\n   *\n   * @param Element\n   * @return number (Integer)\n   **/\n  _getClassWeight(e) {\n    if (!this._flagIsActive(this.FLAG_WEIGHT_CLASSES)) {\n      return 0;\n    }\n\n    var weight = 0;\n\n    // Look for a special classname\n    if (typeof e.className === \"string\" && e.className !== \"\") {\n      if (this.REGEXPS.negative.test(e.className)) {\n        weight -= 25;\n      }\n\n      if (this.REGEXPS.positive.test(e.className)) {\n        weight += 25;\n      }\n    }\n\n    // Look for a special ID\n    if (typeof e.id === \"string\" && e.id !== \"\") {\n      if (this.REGEXPS.negative.test(e.id)) {\n        weight -= 25;\n      }\n\n      if (this.REGEXPS.positive.test(e.id)) {\n        weight += 25;\n      }\n    }\n\n    return weight;\n  },\n\n  /**\n   * Clean a node of all elements of type \"tag\".\n   * (Unless it's a youtube/vimeo video. People love movies.)\n   *\n   * @param Element\n   * @param string tag to clean\n   * @return void\n   **/\n  _clean(e, tag) {\n    var isEmbed = [\"object\", \"embed\", \"iframe\"].includes(tag);\n\n    this._removeNodes(this._getAllNodesWithTag(e, [tag]), function (element) {\n      // Allow youtube and vimeo videos through as people usually want to see those.\n      if (isEmbed) {\n        // First, check the elements attributes to see if any of them contain youtube or vimeo\n        for (var i = 0; i < element.attributes.length; i++) {\n          if (this._allowedVideoRegex.test(element.attributes[i].value)) {\n            return false;\n          }\n        }\n\n        // For embed with <object> tag, check inner HTML as well.\n        if (\n          element.tagName === \"object\" &&\n          this._allowedVideoRegex.test(element.innerHTML)\n        ) {\n          return false;\n        }\n      }\n\n      return true;\n    });\n  },\n\n  /**\n   * Check if a given node has one of its ancestor tag name matching the\n   * provided one.\n   * @param  HTMLElement node\n   * @param  String      tagName\n   * @param  Number      maxDepth\n   * @param  Function    filterFn a filter to invoke to determine whether this node 'counts'\n   * @return Boolean\n   */\n  _hasAncestorTag(node, tagName, maxDepth, filterFn) {\n    maxDepth = maxDepth || 3;\n    tagName = tagName.toUpperCase();\n    var depth = 0;\n    while (node.parentNode) {\n      if (maxDepth > 0 && depth > maxDepth) {\n        return false;\n      }\n      if (\n        node.parentNode.tagName === tagName &&\n        (!filterFn || filterFn(node.parentNode))\n      ) {\n        return true;\n      }\n      node = node.parentNode;\n      depth++;\n    }\n    return false;\n  },\n\n  /**\n   * Return an object indicating how many rows and columns this table has.\n   */\n  _getRowAndColumnCount(table) {\n    var rows = 0;\n    var columns = 0;\n    var trs = table.getElementsByTagName(\"tr\");\n    for (var i = 0; i < trs.length; i++) {\n      var rowspan = trs[i].getAttribute(\"rowspan\") || 0;\n      if (rowspan) {\n        rowspan = parseInt(rowspan, 10);\n      }\n      rows += rowspan || 1;\n\n      // Now look for column-related info\n      var columnsInThisRow = 0;\n      var cells = trs[i].getElementsByTagName(\"td\");\n      for (var j = 0; j < cells.length; j++) {\n        var colspan = cells[j].getAttribute(\"colspan\") || 0;\n        if (colspan) {\n          colspan = parseInt(colspan, 10);\n        }\n        columnsInThisRow += colspan || 1;\n      }\n      columns = Math.max(columns, columnsInThisRow);\n    }\n    return { rows, columns };\n  },\n\n  /**\n   * Look for 'data' (as opposed to 'layout') tables, for which we use\n   * similar checks as\n   * https://searchfox.org/mozilla-central/rev/f82d5c549f046cb64ce5602bfd894b7ae807c8f8/accessible/generic/TableAccessible.cpp#19\n   */\n  _markDataTables(root) {\n    var tables = root.getElementsByTagName(\"table\");\n    for (var i = 0; i < tables.length; i++) {\n      var table = tables[i];\n      var role = table.getAttribute(\"role\");\n      if (role == \"presentation\") {\n        table._readabilityDataTable = false;\n        continue;\n      }\n      var datatable = table.getAttribute(\"datatable\");\n      if (datatable == \"0\") {\n        table._readabilityDataTable = false;\n        continue;\n      }\n      var summary = table.getAttribute(\"summary\");\n      if (summary) {\n        table._readabilityDataTable = true;\n        continue;\n      }\n\n      var caption = table.getElementsByTagName(\"caption\")[0];\n      if (caption && caption.childNodes.length) {\n        table._readabilityDataTable = true;\n        continue;\n      }\n\n      // If the table has a descendant with any of these tags, consider a data table:\n      var dataTableDescendants = [\"col\", \"colgroup\", \"tfoot\", \"thead\", \"th\"];\n      var descendantExists = function (tag) {\n        return !!table.getElementsByTagName(tag)[0];\n      };\n      if (dataTableDescendants.some(descendantExists)) {\n        this.log(\"Data table because found data-y descendant\");\n        table._readabilityDataTable = true;\n        continue;\n      }\n\n      // Nested tables indicate a layout table:\n      if (table.getElementsByTagName(\"table\")[0]) {\n        table._readabilityDataTable = false;\n        continue;\n      }\n\n      var sizeInfo = this._getRowAndColumnCount(table);\n\n      if (sizeInfo.columns == 1 || sizeInfo.rows == 1) {\n        // single colum/row tables are commonly used for page layout purposes.\n        table._readabilityDataTable = false;\n        continue;\n      }\n\n      if (sizeInfo.rows >= 10 || sizeInfo.columns > 4) {\n        table._readabilityDataTable = true;\n        continue;\n      }\n      // Now just go by size entirely:\n      table._readabilityDataTable = sizeInfo.rows * sizeInfo.columns > 10;\n    }\n  },\n\n  /* convert images and figures that have properties like data-src into images that can be loaded without JS */\n  _fixLazyImages(root) {\n    this._forEachNode(\n      this._getAllNodesWithTag(root, [\"img\", \"picture\", \"figure\"]),\n      function (elem) {\n        // In some sites (e.g. Kotaku), they put 1px square image as base64 data uri in the src attribute.\n        // So, here we check if the data uri is too short, just might as well remove it.\n        if (elem.src && this.REGEXPS.b64DataUrl.test(elem.src)) {\n          // Make sure it's not SVG, because SVG can have a meaningful image in under 133 bytes.\n          var parts = this.REGEXPS.b64DataUrl.exec(elem.src);\n          if (parts[1] === \"image/svg+xml\") {\n            return;\n          }\n\n          // Make sure this element has other attributes which contains image.\n          // If it doesn't, then this src is important and shouldn't be removed.\n          var srcCouldBeRemoved = false;\n          for (var i = 0; i < elem.attributes.length; i++) {\n            var attr = elem.attributes[i];\n            if (attr.name === \"src\") {\n              continue;\n            }\n\n            if (/\\.(jpg|jpeg|png|webp)/i.test(attr.value)) {\n              srcCouldBeRemoved = true;\n              break;\n            }\n          }\n\n          // Here we assume if image is less than 100 bytes (or 133 after encoded to base64)\n          // it will be too small, therefore it might be placeholder image.\n          if (srcCouldBeRemoved) {\n            var b64starts = parts[0].length;\n            var b64length = elem.src.length - b64starts;\n            if (b64length < 133) {\n              elem.removeAttribute(\"src\");\n            }\n          }\n        }\n\n        // also check for \"null\" to work around https://github.com/jsdom/jsdom/issues/2580\n        if (\n          (elem.src || (elem.srcset && elem.srcset != \"null\")) &&\n          !elem.className.toLowerCase().includes(\"lazy\")\n        ) {\n          return;\n        }\n\n        for (var j = 0; j < elem.attributes.length; j++) {\n          attr = elem.attributes[j];\n          if (\n            attr.name === \"src\" ||\n            attr.name === \"srcset\" ||\n            attr.name === \"alt\"\n          ) {\n            continue;\n          }\n          var copyTo = null;\n          if (/\\.(jpg|jpeg|png|webp)\\s+\\d/.test(attr.value)) {\n            copyTo = \"srcset\";\n          } else if (/^\\s*\\S+\\.(jpg|jpeg|png|webp)\\S*\\s*$/.test(attr.value)) {\n            copyTo = \"src\";\n          }\n          if (copyTo) {\n            //if this is an img or picture, set the attribute directly\n            if (elem.tagName === \"IMG\" || elem.tagName === \"PICTURE\") {\n              elem.setAttribute(copyTo, attr.value);\n            } else if (\n              elem.tagName === \"FIGURE\" &&\n              !this._getAllNodesWithTag(elem, [\"img\", \"picture\"]).length\n            ) {\n              //if the item is a <figure> that does not contain an image or picture, create one and place it inside the figure\n              //see the nytimes-3 testcase for an example\n              var img = this._doc.createElement(\"img\");\n              img.setAttribute(copyTo, attr.value);\n              elem.appendChild(img);\n            }\n          }\n        }\n      }\n    );\n  },\n\n  _getTextDensity(e, tags) {\n    var textLength = this._getInnerText(e, true).length;\n    if (textLength === 0) {\n      return 0;\n    }\n    var childrenLength = 0;\n    var children = this._getAllNodesWithTag(e, tags);\n    this._forEachNode(\n      children,\n      child => (childrenLength += this._getInnerText(child, true).length)\n    );\n    return childrenLength / textLength;\n  },\n\n  /**\n   * Clean an element of all tags of type \"tag\" if they look fishy.\n   * \"Fishy\" is an algorithm based on content length, classnames, link density, number of images & embeds, etc.\n   *\n   * @return void\n   **/\n  _cleanConditionally(e, tag) {\n    if (!this._flagIsActive(this.FLAG_CLEAN_CONDITIONALLY)) {\n      return;\n    }\n\n    // Gather counts for other typical elements embedded within.\n    // Traverse backwards so we can remove nodes at the same time\n    // without effecting the traversal.\n    //\n    // TODO: Consider taking into account original contentScore here.\n    this._removeNodes(this._getAllNodesWithTag(e, [tag]), function (node) {\n      // First check if this node IS data table, in which case don't remove it.\n      var isDataTable = function (t) {\n        return t._readabilityDataTable;\n      };\n\n      var isList = tag === \"ul\" || tag === \"ol\";\n      if (!isList) {\n        var listLength = 0;\n        var listNodes = this._getAllNodesWithTag(node, [\"ul\", \"ol\"]);\n        this._forEachNode(\n          listNodes,\n          list => (listLength += this._getInnerText(list).length)\n        );\n        isList = listLength / this._getInnerText(node).length > 0.9;\n      }\n\n      if (tag === \"table\" && isDataTable(node)) {\n        return false;\n      }\n\n      // Next check if we're inside a data table, in which case don't remove it as well.\n      if (this._hasAncestorTag(node, \"table\", -1, isDataTable)) {\n        return false;\n      }\n\n      if (this._hasAncestorTag(node, \"code\")) {\n        return false;\n      }\n\n      // keep element if it has a data tables\n      if (\n        [...node.getElementsByTagName(\"table\")].some(\n          tbl => tbl._readabilityDataTable\n        )\n      ) {\n        return false;\n      }\n\n      var weight = this._getClassWeight(node);\n\n      this.log(\"Cleaning Conditionally\", node);\n\n      var contentScore = 0;\n\n      if (weight + contentScore < 0) {\n        return true;\n      }\n\n      if (this._getCharCount(node, \",\") < 10) {\n        // If there are not very many commas, and the number of\n        // non-paragraph elements is more than paragraphs or other\n        // ominous signs, remove the element.\n        var p = node.getElementsByTagName(\"p\").length;\n        var img = node.getElementsByTagName(\"img\").length;\n        var li = node.getElementsByTagName(\"li\").length - 100;\n        var input = node.getElementsByTagName(\"input\").length;\n        var headingDensity = this._getTextDensity(node, [\n          \"h1\",\n          \"h2\",\n          \"h3\",\n          \"h4\",\n          \"h5\",\n          \"h6\",\n        ]);\n\n        var embedCount = 0;\n        var embeds = this._getAllNodesWithTag(node, [\n          \"object\",\n          \"embed\",\n          \"iframe\",\n        ]);\n\n        for (var i = 0; i < embeds.length; i++) {\n          // If this embed has attribute that matches video regex, don't delete it.\n          for (var j = 0; j < embeds[i].attributes.length; j++) {\n            if (this._allowedVideoRegex.test(embeds[i].attributes[j].value)) {\n              return false;\n            }\n          }\n\n          // For embed with <object> tag, check inner HTML as well.\n          if (\n            embeds[i].tagName === \"object\" &&\n            this._allowedVideoRegex.test(embeds[i].innerHTML)\n          ) {\n            return false;\n          }\n\n          embedCount++;\n        }\n\n        var innerText = this._getInnerText(node);\n\n        // toss any node whose inner text contains nothing but suspicious words\n        if (\n          this.REGEXPS.adWords.test(innerText) ||\n          this.REGEXPS.loadingWords.test(innerText)\n        ) {\n          return true;\n        }\n\n        var contentLength = innerText.length;\n        var linkDensity = this._getLinkDensity(node);\n        var textishTags = [\"SPAN\", \"LI\", \"TD\"].concat(\n          Array.from(this.DIV_TO_P_ELEMS)\n        );\n        var textDensity = this._getTextDensity(node, textishTags);\n        var isFigureChild = this._hasAncestorTag(node, \"figure\");\n\n        // apply shadiness checks, then check for exceptions\n        const shouldRemoveNode = () => {\n          const errs = [];\n          if (!isFigureChild && img > 1 && p / img < 0.5) {\n            errs.push(`Bad p to img ratio (img=${img}, p=${p})`);\n          }\n          if (!isList && li > p) {\n            errs.push(`Too many li's outside of a list. (li=${li} > p=${p})`);\n          }\n          if (input > Math.floor(p / 3)) {\n            errs.push(`Too many inputs per p. (input=${input}, p=${p})`);\n          }\n          if (\n            !isList &&\n            !isFigureChild &&\n            headingDensity < 0.9 &&\n            contentLength < 25 &&\n            (img === 0 || img > 2) &&\n            linkDensity > 0\n          ) {\n            errs.push(\n              `Suspiciously short. (headingDensity=${headingDensity}, img=${img}, linkDensity=${linkDensity})`\n            );\n          }\n          if (\n            !isList &&\n            weight < 25 &&\n            linkDensity > 0.2 + this._linkDensityModifier\n          ) {\n            errs.push(\n              `Low weight and a little linky. (linkDensity=${linkDensity})`\n            );\n          }\n          if (weight >= 25 && linkDensity > 0.5 + this._linkDensityModifier) {\n            errs.push(\n              `High weight and mostly links. (linkDensity=${linkDensity})`\n            );\n          }\n          if ((embedCount === 1 && contentLength < 75) || embedCount > 1) {\n            errs.push(\n              `Suspicious embed. (embedCount=${embedCount}, contentLength=${contentLength})`\n            );\n          }\n          if (img === 0 && textDensity === 0) {\n            errs.push(\n              `No useful content. (img=${img}, textDensity=${textDensity})`\n            );\n          }\n\n          if (errs.length) {\n            this.log(\"Checks failed\", errs);\n            return true;\n          }\n\n          return false;\n        };\n\n        var haveToRemove = shouldRemoveNode();\n\n        // Allow simple lists of images to remain in pages\n        if (isList && haveToRemove) {\n          for (var x = 0; x < node.children.length; x++) {\n            let child = node.children[x];\n            // Don't filter in lists with li's that contain more than one child\n            if (child.children.length > 1) {\n              return haveToRemove;\n            }\n          }\n          let li_count = node.getElementsByTagName(\"li\").length;\n          // Only allow the list to remain if every li contains an image\n          if (img == li_count) {\n            return false;\n          }\n        }\n        return haveToRemove;\n      }\n      return false;\n    });\n  },\n\n  /**\n   * Clean out elements that match the specified conditions\n   *\n   * @param Element\n   * @param Function determines whether a node should be removed\n   * @return void\n   **/\n  _cleanMatchedNodes(e, filter) {\n    var endOfSearchMarkerNode = this._getNextNode(e, true);\n    var next = this._getNextNode(e);\n    while (next && next != endOfSearchMarkerNode) {\n      if (filter.call(this, next, next.className + \" \" + next.id)) {\n        next = this._removeAndGetNext(next);\n      } else {\n        next = this._getNextNode(next);\n      }\n    }\n  },\n\n  /**\n   * Clean out spurious headers from an Element.\n   *\n   * @param Element\n   * @return void\n   **/\n  _cleanHeaders(e) {\n    let headingNodes = this._getAllNodesWithTag(e, [\"h1\", \"h2\"]);\n    this._removeNodes(headingNodes, function (node) {\n      let shouldRemove = this._getClassWeight(node) < 0;\n      if (shouldRemove) {\n        this.log(\"Removing header with low class weight:\", node);\n      }\n      return shouldRemove;\n    });\n  },\n\n  /**\n   * Check if this node is an H1 or H2 element whose content is mostly\n   * the same as the article title.\n   *\n   * @param Element  the node to check.\n   * @return boolean indicating whether this is a title-like header.\n   */\n  _headerDuplicatesTitle(node) {\n    if (node.tagName != \"H1\" && node.tagName != \"H2\") {\n      return false;\n    }\n    var heading = this._getInnerText(node, false);\n    this.log(\"Evaluating similarity of header:\", heading, this._articleTitle);\n    return this._textSimilarity(this._articleTitle, heading) > 0.75;\n  },\n\n  _flagIsActive(flag) {\n    return (this._flags & flag) > 0;\n  },\n\n  _removeFlag(flag) {\n    this._flags = this._flags & ~flag;\n  },\n\n  _isProbablyVisible(node) {\n    // Have to null-check node.style and node.className.includes to deal with SVG and MathML nodes.\n    return (\n      (!node.style || node.style.display != \"none\") &&\n      (!node.style || node.style.visibility != \"hidden\") &&\n      !node.hasAttribute(\"hidden\") &&\n      //check for \"fallback-image\" so that wikimedia math images are displayed\n      (!node.hasAttribute(\"aria-hidden\") ||\n        node.getAttribute(\"aria-hidden\") != \"true\" ||\n        (node.className &&\n          node.className.includes &&\n          node.className.includes(\"fallback-image\")))\n    );\n  },\n\n  /**\n   * Runs readability.\n   *\n   * Workflow:\n   *  1. Prep the document by removing script tags, css, etc.\n   *  2. Build readability's DOM tree.\n   *  3. Grab the article content from the current dom tree.\n   *  4. Replace the current DOM tree with the new one.\n   *  5. Read peacefully.\n   *\n   * @return void\n   **/\n  parse() {\n    // Avoid parsing too large documents, as per configuration option\n    if (this._maxElemsToParse > 0) {\n      var numTags = this._doc.getElementsByTagName(\"*\").length;\n      if (numTags > this._maxElemsToParse) {\n        throw new Error(\n          \"Aborting parsing document; \" + numTags + \" elements found\"\n        );\n      }\n    }\n\n    // Unwrap image from noscript\n    this._unwrapNoscriptImages(this._doc);\n\n    // Extract JSON-LD metadata before removing scripts\n    var jsonLd = this._disableJSONLD ? {} : this._getJSONLD(this._doc);\n\n    // Remove script tags from the document.\n    this._removeScripts(this._doc);\n\n    this._prepDocument();\n\n    var metadata = this._getArticleMetadata(jsonLd);\n    this._metadata = metadata;\n    this._articleTitle = metadata.title;\n\n    var articleContent = this._grabArticle();\n    if (!articleContent) {\n      return null;\n    }\n\n    this.log(\"Grabbed: \" + articleContent.innerHTML);\n\n    this._postProcessContent(articleContent);\n\n    // If we haven't found an excerpt in the article's metadata, use the article's\n    // first paragraph as the excerpt. This is used for displaying a preview of\n    // the article's content.\n    if (!metadata.excerpt) {\n      var paragraphs = articleContent.getElementsByTagName(\"p\");\n      if (paragraphs.length) {\n        metadata.excerpt = paragraphs[0].textContent.trim();\n      }\n    }\n\n    var textContent = articleContent.textContent;\n    return {\n      title: this._articleTitle,\n      byline: metadata.byline || this._articleByline,\n      dir: this._articleDir,\n      lang: this._articleLang,\n      content: this._serializer(articleContent),\n      textContent,\n      length: textContent.length,\n      excerpt: metadata.excerpt,\n      siteName: metadata.siteName || this._articleSiteName,\n      publishedTime: metadata.publishedTime,\n    };\n  },\n};\n\nif (typeof module === \"object\") {\n  /* eslint-disable-next-line no-redeclare */\n  /* global module */\n  module.exports = Readability;\n}\n","/*\n * Copyright (c) 2010 Arc90 Inc\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * This code is heavily based on Arc90's readability.js (1.7.1) script\n * available at: http://code.google.com/p/arc90labs-readability\n */\n\nvar REGEXPS = {\n  // NOTE: These two regular expressions are duplicated in\n  // Readability.js. Please keep both copies in sync.\n  unlikelyCandidates:\n    /-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,\n  okMaybeItsACandidate: /and|article|body|column|content|main|shadow/i,\n};\n\nfunction isNodeVisible(node) {\n  // Have to null-check node.style and node.className.includes to deal with SVG and MathML nodes.\n  return (\n    (!node.style || node.style.display != \"none\") &&\n    !node.hasAttribute(\"hidden\") &&\n    //check for \"fallback-image\" so that wikimedia math images are displayed\n    (!node.hasAttribute(\"aria-hidden\") ||\n      node.getAttribute(\"aria-hidden\") != \"true\" ||\n      (node.className &&\n        node.className.includes &&\n        node.className.includes(\"fallback-image\")))\n  );\n}\n\n/**\n * Decides whether or not the document is reader-able without parsing the whole thing.\n * @param {Object} options Configuration object.\n * @param {number} [options.minContentLength=140] The minimum node content length used to decide if the document is readerable.\n * @param {number} [options.minScore=20] The minumum cumulated 'score' used to determine if the document is readerable.\n * @param {Function} [options.visibilityChecker=isNodeVisible] The function used to determine if a node is visible.\n * @return {boolean} Whether or not we suspect Readability.parse() will suceeed at returning an article object.\n */\nfunction isProbablyReaderable(doc, options = {}) {\n  // For backward compatibility reasons 'options' can either be a configuration object or the function used\n  // to determine if a node is visible.\n  if (typeof options == \"function\") {\n    options = { visibilityChecker: options };\n  }\n\n  var defaultOptions = {\n    minScore: 20,\n    minContentLength: 140,\n    visibilityChecker: isNodeVisible,\n  };\n  options = Object.assign(defaultOptions, options);\n\n  var nodes = doc.querySelectorAll(\"p, pre, article\");\n\n  // Get <div> nodes which have <br> node(s) and append them into the `nodes` variable.\n  // Some articles' DOM structures might look like\n  // <div>\n  //   Sentences<br>\n  //   <br>\n  //   Sentences<br>\n  // </div>\n  var brNodes = doc.querySelectorAll(\"div > br\");\n  if (brNodes.length) {\n    var set = new Set(nodes);\n    [].forEach.call(brNodes, function (node) {\n      set.add(node.parentNode);\n    });\n    nodes = Array.from(set);\n  }\n\n  var score = 0;\n  // This is a little cheeky, we use the accumulator 'score' to decide what to return from\n  // this callback:\n  return [].some.call(nodes, function (node) {\n    if (!options.visibilityChecker(node)) {\n      return false;\n    }\n\n    var matchString = node.className + \" \" + node.id;\n    if (\n      REGEXPS.unlikelyCandidates.test(matchString) &&\n      !REGEXPS.okMaybeItsACandidate.test(matchString)\n    ) {\n      return false;\n    }\n\n    if (node.matches(\"li p\")) {\n      return false;\n    }\n\n    var textContentLength = node.textContent.trim().length;\n    if (textContentLength < options.minContentLength) {\n      return false;\n    }\n\n    score += Math.sqrt(textContentLength - options.minContentLength);\n\n    if (score > options.minScore) {\n      return true;\n    }\n    return false;\n  });\n}\n\nif (typeof module === \"object\") {\n  /* eslint-disable-next-line no-redeclare */\n  /* global module */\n  module.exports = isProbablyReaderable;\n}\n","/* eslint-env node */\nvar Readability = require(\"./Readability\");\nvar isProbablyReaderable = require(\"./Readability-readerable\");\n\nmodule.exports = {\n  Readability,\n  isProbablyReaderable,\n};\n","import { Readability } from \"@mozilla/readability\"\n\nexport function read(html: string, baseurl: string) {\n  const doc = new DOMParser().parseFromString(html, \"text/html\")\n  const base = document.createElement(\"base\")\n  base.href = baseurl\n  doc.head.appendChild(base)\n  return new Readability(doc).parse()?.content\n}\n","<script lang=\"ts\">\n  import type { Props } from \"./types\"\n\n  import ToggleGroup from \"./ToggleGroup.svelte\"\n  import Highlight from \"$lib/Highlight.svelte\"\n  import Markdown from \"$lib/Markdown.svelte\"\n  import { copy } from \"$lib/utils/copy\"\n  import { toMarkdown } from \"$lib/utils/html2md\"\n  import { responseToTextStream } from \"$lib/utils/iter\"\n  import { read } from \"$lib/utils/reader\"\n  import { queryParameters, ssp } from \"sveltekit-search-params\"\n\n  const { url, html }: Props = $props()\n  const cleanedHtml = $derived(read(html, url))\n\n  let llmResult = $state<string>()\n\n  async function fetchLLMResult() {\n    llmResult = \"\"\n    const res = await fetch(\"/api/extract\", { body: cleanedHtml, method: \"POST\" })\n    for await (const delta of responseToTextStream(res))\n      llmResult += delta\n  }\n\n  const q = queryParameters({ result: ssp.string(\"rendered\"), engine: ssp.string(\"llm\") }, { pushHistory: false })\n  const type = $derived(q.result as \"rendered\" | \"raw\")\n  const engine = $derived(q.engine as \"llm\" | \"readability\")\n\n  const readabilityResult = $derived(cleanedHtml && toMarkdown(cleanedHtml))\n  $effect(() => {\n    cleanedHtml && fetchLLMResult()\n  })\n  const displayMarkdown = $derived(engine === \"readability\" ? readabilityResult! : llmResult!)\n</script>\n\n<section class=\"relative overflow-hidden\">\n\n  {#if !cleanedHtml}\n    <div class=\"h-full w-full center text-neutral-6\">\n      empty :(\n    </div>\n  {:else}\n    {#if type === \"rendered\"}\n\n      <Markdown text={displayMarkdown} base={url} />\n\n    {:else if type === \"raw\"}\n\n      <div class=\"h-full w-full overflow-scroll px-3.5 py-3\">\n        <Highlight source={displayMarkdown} lang=\"markdown\" />\n      </div>\n\n    {/if}\n  {/if}\n\n  <div class=\"absolute bottom-5 z-1 flex flex-row gap-1.5 md:left-5 <md:(w-full justify-center)\">\n    <ToggleGroup values={[\"llm\", \"readability\"]} bind:choice={q.engine} />\n    <ToggleGroup values={[\"rendered\", \"raw\"]} bind:choice={q.result} />\n    <button onclick={() => copy(displayMarkdown)} class=\"rounded-md bg-neutral-8 p-2 shadow-(md neutral-9/15) transition hover:bg-neutral-7\" aria-label=\"Copy to clipboard\">\n      <div class=\"i-ri-file-copy-line\"></div>\n    </button>\n  </div>\n\n</section>\n","<script lang=\"ts\">\n  import Left from \"./Left.svelte\"\n  import Right from \"./Right.svelte\"\n  import { browser } from \"$app/environment\"\n  import { toast } from \"svelte-sonner\"\n  import { queryParameters } from \"sveltekit-search-params\"\n\n  const q = queryParameters({ url: true })\n  const url = $derived(q.url)\n</script>\n\n<div class=\"m-4 flex flex-col items-center gap-3\">\n  <section class=\"max-w-lg w-full flex flex-row items-center gap-2 rounded bg-neutral-8/50 px-2.5 py-2 ring-(neutral-5 inset) transition-shadow focus-within:ring-1.2\">\n    <div class=\"i-mingcute-search-line text-neutral-5\"></div>\n    <input class=\"w-full bg-transparent text-sm font-mono outline-none placeholder-neutral-6\" type=\"url\" bind:value={q.url} placeholder=\"any http url\" data-sveltekit-keepfocus>\n  </section>\n\n  <div class=\"h-[calc(100vh-5.25rem)] w-full flex flex-col gap-3 [&>*]:(h-full w-full rounded bg-neutral-8/50) md:flex-row\">\n    {#if url && browser}\n\n      {#await fetch(`/api/proxy?url=${url}`).then(res => {\n        if (!res.ok)\n          toast.warning(`${res.status} ${res.statusText}`)\n        return res.text()\n      })}\n        <section class=\"center\">\n          <div class=\"i-svg-spinners-90-ring-with-bg\"></div>\n        </section>\n        <section class=\"center\">\n          <div class=\"i-svg-spinners-90-ring-with-bg\"></div>\n        </section>\n      {:then html}\n        <Left {url} {html} />\n        <Right {url} {html} />\n      {:catch error}\n        <div class=\"center text-red\">\n          {(toast.error(String(error)), error).message}\n        </div>\n      {/await}\n\n    {:else}\n\n      <section class=\"center text-neutral-6\">\n        Original Preview\n      </section>\n      <section class=\"center text-neutral-6\">\n        Extraction Result\n      </section>\n\n    {/if}\n  </div>\n\n</div>\n"],"file":"_app/immutable/nodes/4.CPoacrfx.mjs"}