{"version":3,"sources":["webpack:///./node_modules/linkify-it/index.js","webpack:///./src/components/layout/SwaggerAPI/swagger-api.module.css","webpack:///./node_modules/markdown-it/lib/rules_block/hr.js","webpack:///./src/components/layout/SwaggerAPI/Header.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-stringify-position/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/vfile-message/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/vfile/lib/minpath.browser.js","webpack:///./node_modules/react-markdown/node_modules/vfile/lib/minproc.browser.js","webpack:///./node_modules/react-markdown/node_modules/vfile/lib/minurl.shared.js","webpack:///./node_modules/react-markdown/node_modules/vfile/lib/minurl.browser.js","webpack:///./node_modules/react-markdown/node_modules/vfile/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/bail/index.js","webpack:///./node_modules/react-markdown/node_modules/is-plain-obj/index.js","webpack:///./node_modules/react-markdown/node_modules/trough/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/unified/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-string/lib/index.js","webpack:///./node_modules/micromark-util-chunked/index.js","webpack:///./node_modules/micromark-util-combine-extensions/index.js","webpack:///./node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","webpack:///./node_modules/micromark-util-character/index.js","webpack:///./node_modules/micromark-factory-space/index.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/initialize/content.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/initialize/document.js","webpack:///./node_modules/micromark-core-commonmark/lib/blank-line.js","webpack:///./node_modules/micromark-util-subtokenize/index.js","webpack:///./node_modules/micromark-core-commonmark/lib/content.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/initialize/flow.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/initialize/text.js","webpack:///./node_modules/micromark-util-resolve-all/index.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/create-tokenizer.js","webpack:///./node_modules/micromark-core-commonmark/lib/thematic-break.js","webpack:///./node_modules/micromark-core-commonmark/lib/list.js","webpack:///./node_modules/micromark-core-commonmark/lib/block-quote.js","webpack:///./node_modules/micromark-factory-destination/index.js","webpack:///./node_modules/micromark-factory-label/index.js","webpack:///./node_modules/micromark-factory-title/index.js","webpack:///./node_modules/micromark-factory-whitespace/index.js","webpack:///./node_modules/micromark-util-normalize-identifier/index.js","webpack:///./node_modules/micromark-core-commonmark/lib/definition.js","webpack:///./node_modules/micromark-core-commonmark/lib/code-indented.js","webpack:///./node_modules/micromark-core-commonmark/lib/setext-underline.js","webpack:///./node_modules/micromark-util-html-tag-name/index.js","webpack:///./node_modules/micromark-core-commonmark/lib/html-flow.js","webpack:///./node_modules/micromark-core-commonmark/lib/code-fenced.js","webpack:///./node_modules/decode-named-character-reference/node_modules/character-entities/index.js","webpack:///./node_modules/decode-named-character-reference/index.js","webpack:///./node_modules/micromark-core-commonmark/lib/character-reference.js","webpack:///./node_modules/micromark-core-commonmark/lib/character-escape.js","webpack:///./node_modules/micromark-core-commonmark/lib/line-ending.js","webpack:///./node_modules/micromark-core-commonmark/lib/label-end.js","webpack:///./node_modules/micromark-util-classify-character/index.js","webpack:///./node_modules/micromark-core-commonmark/lib/attention.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/constructs.js","webpack:///./node_modules/micromark-core-commonmark/lib/heading-atx.js","webpack:///./node_modules/micromark-core-commonmark/lib/label-start-image.js","webpack:///./node_modules/micromark-core-commonmark/lib/autolink.js","webpack:///./node_modules/micromark-core-commonmark/lib/html-text.js","webpack:///./node_modules/micromark-core-commonmark/lib/label-start-link.js","webpack:///./node_modules/micromark-core-commonmark/lib/hard-break-escape.js","webpack:///./node_modules/micromark-core-commonmark/lib/code-text.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/parse.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/preprocess.js","webpack:///./node_modules/micromark-util-decode-numeric-character-reference/index.js","webpack:///./node_modules/micromark-util-decode-string/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-from-markdown/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/micromark/lib/postprocess.js","webpack:///./node_modules/react-markdown/node_modules/remark-parse/lib/index.js","webpack:///./node_modules/micromark-util-sanitize-uri/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-is/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-visit-parents/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-visit/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-position/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-definitions/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/revert.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack:///./node_modules/trim-lines/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/footnote.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/table-row.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/state.js","webpack:///./node_modules/react-markdown/node_modules/unist-util-generated/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/mdast-util-to-hast/lib/footer.js","webpack:///./node_modules/react-markdown/node_modules/remark-rehype/lib/index.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/schema.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/merge.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/normalize.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/info.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/types.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/defined-info.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/create.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/xlink.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/xml.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/case-sensitive-transform.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/util/case-insensitive-transform.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/xmlns.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/aria.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/html.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/svg.js","webpack:///./node_modules/react-markdown/node_modules/property-information/index.js","webpack:///./node_modules/react-markdown/lib/rehype-filter.js","webpack:///./node_modules/react-markdown/node_modules/hast-util-whitespace/index.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/find.js","webpack:///./node_modules/react-markdown/node_modules/property-information/lib/hast-to-react.js","webpack:///./node_modules/react-markdown/node_modules/style-to-object/index.mjs","webpack:///./node_modules/react-markdown/lib/uri-transformer.js","webpack:///./node_modules/react-markdown/lib/ast-to-react.js","webpack:///./node_modules/react-markdown/node_modules/comma-separated-tokens/index.js","webpack:///./node_modules/react-markdown/node_modules/space-separated-tokens/index.js","webpack:///./node_modules/react-markdown/lib/react-markdown.js","webpack:///./src/components/layout/SwaggerAPI/APIRefBlockDefSwagger.js","webpack:///./src/components/layout/SwaggerAPI/CollapseButton.js","webpack:///./src/components/layout/SwaggerAPI/HideDeprecatedCheckbox.js","webpack:///./src/components/layout/SwaggerAPI/APIRefBlockSwagger.js","webpack:///./src/components/layout/SwaggerAPI/Parameters.js","webpack:///./static/jscript/fortmatHtml.js","webpack:///./src/components/layout/SwaggerAPI/Responses.js","webpack:///./src/components/layout/SwaggerAPI/Operations.js","webpack:///./src/components/layout/SwaggerAPI/Resources.js","webpack:///./src/components/layout/SwaggerAPI/APIRecurSwagger.js","webpack:///./src/components/layout/SwaggerAPI/Definitions.js","webpack:///./src/components/layout/SwaggerAPI/Xerrors.js","webpack:///./src/components/layout/SwaggerAPI/Xerrors2.js","webpack:///./src/components/layout/SwaggerAPI/Errors.js","webpack:///./src/templates/TemplateLayout.js","webpack:///./src/utils/fileType.ts","webpack:///./src/utils/codeBlockLineUtils.tsx","webpack:///./src/utils/pageNameFromPathname.ts","webpack:///./node_modules/lodash/_baseSortBy.js","webpack:///./node_modules/markdown-it/index.js","webpack:///./node_modules/uc.micro/index.js","webpack:///./node_modules/markdown-it/lib/rules_block/reference.js","webpack:///./node_modules/mdurl/index.js","webpack:///./node_modules/mdurl/parse.js","webpack:///./node_modules/markdown-it/lib/helpers/parse_link_label.js","webpack:///./node_modules/markdown-it/lib/common/html_blocks.js","webpack:///./node_modules/markdown-it/lib/helpers/parse_link_destination.js","webpack:///./node_modules/markdown-it/lib/rules_block/blockquote.js","webpack:///./node_modules/extend/index.js","webpack:///./src/utils/copyToClipboard.ts","webpack:///./node_modules/markdown-it/lib/common/utils.js","webpack:///./node_modules/markdown-it/lib/rules_block/heading.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/markdown-it/lib/index.js","webpack:///./node_modules/markdown-it/lib/token.js","webpack:///./node_modules/markdown-it/lib/rules_inline/state_inline.js","webpack:///./node_modules/react-markdown/node_modules/style-to-object/index.js","webpack:///./node_modules/markdown-it/lib/rules_block/lheading.js","webpack:///./node_modules/markdown-it/lib/presets/zero.js","webpack:///./node_modules/markdown-it/lib/rules_inline/text_collapse.js","webpack:///./node_modules/lodash/_compareMultiple.js","webpack:///./node_modules/markdown-it/lib/rules_inline/autolink.js","webpack:///./node_modules/inline-style-parser/index.js","webpack:///./node_modules/markdown-it/lib/rules_core/block.js","webpack:///./node_modules/mdurl/format.js","webpack:///./node_modules/markdown-it/lib/rules_inline/newline.js","webpack:///./node_modules/markdown-it/lib/presets/commonmark.js","webpack:///./src/components/layout/CopyButton/CopyButton.tsx","webpack:///./node_modules/markdown-it/lib/rules_block/paragraph.js","webpack:///./node_modules/markdown-it/lib/ruler.js","webpack:///./node_modules/markdown-it/lib/rules_inline/backticks.js","webpack:///./node_modules/markdown-it/lib/rules_block/list.js","webpack:///./node_modules/uc.micro/categories/Z/regex.js","webpack:///./node_modules/markdown-it/lib/rules_core/normalize.js","webpack:///./node_modules/markdown-it/lib/parser_inline.js","webpack:///./node_modules/markdown-it/lib/helpers/index.js","webpack:///./node_modules/markdown-it/lib/common/html_re.js","webpack:///./node_modules/markdown-it/lib/rules_inline/entity.js","webpack:///./node_modules/markdown-it/lib/rules_block/html_block.js","webpack:///./node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./src/lib/api-utils.js","webpack:///./node_modules/lodash/_baseOrderBy.js","webpack:///./node_modules/uc.micro/categories/Cf/regex.js","webpack:///./node_modules/markdown-it/lib/rules_inline/escape.js","webpack:///./node_modules/markdown-it/lib/rules_core/state_core.js","webpack:///./node_modules/markdown-it/lib/parser_block.js","webpack:///./src/hooks/useSwaggerMetadata/useSwaggerLimitedRelease.tsx","webpack:///./src/hooks/useSwaggerMetadata/useSwaggerMetadata.tsx","webpack:///./node_modules/uc.micro/categories/P/regex.js","webpack:///./node_modules/markdown-it/lib/renderer.js","webpack:///./node_modules/markdown-it/lib/helpers/parse_link_title.js","webpack:///./node_modules/markdown-it/lib/rules_block/state_block.js","webpack:///./node_modules/markdown-it/lib/rules_inline/balance_pairs.js","webpack:///./node_modules/markdown-it/lib/rules_block/table.js","webpack:///./node_modules/markdown-it/lib/presets/default.js","webpack:///./node_modules/mdurl/decode.js","webpack:///./node_modules/lodash/orderBy.js","webpack:///./node_modules/markdown-it/lib/rules_inline/strikethrough.js","webpack:///./node_modules/markdown-it/lib/rules_inline/image.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/markdown-it/lib/rules_core/linkify.js","webpack:///./node_modules/markdown-it/lib/rules_block/code.js","webpack:///./node_modules/markdown-it/lib/rules_core/inline.js","webpack:///./node_modules/uc.micro/categories/Cc/regex.js","webpack:///./node_modules/markdown-it/lib/parser_core.js","webpack:///./node_modules/react-markdown/node_modules/react-is/index.js","webpack:///./src/utils/downloadFile.ts","webpack:///./node_modules/markdown-it/lib/rules_core/smartquotes.js","webpack:///./node_modules/linkify-it/lib/re.js","webpack:///./node_modules/markdown-it/lib/rules_core/replacements.js","webpack:///./node_modules/markdown-it/lib/rules_inline/text.js","webpack:///./node_modules/markdown-it/lib/common/entities.js","webpack:///./node_modules/markdown-it/lib/rules_block/fence.js","webpack:///./node_modules/markdown-it/lib/rules_inline/html_inline.js","webpack:///./node_modules/mdurl/encode.js","webpack:///./node_modules/uc.micro/properties/Any/regex.js","webpack:///./node_modules/markdown-it/lib/rules_inline/emphasis.js","webpack:///./node_modules/lodash/_compareAscending.js","webpack:///./node_modules/markdown-it/lib/rules_inline/link.js"],"names":["assign","obj","sources","Array","prototype","slice","call","arguments","forEach","source","Object","keys","key","_class","toString","isFunction","escapeRE","str","replace","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","validate","text","pos","self","tail","re","http","RegExp","src_auth","src_host_port_strict","src_path","test","match","length","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","tlds_default","split","compile","__opts__","tlds","__tlds__","untpl","tpl","src_tlds","onCompile","__tlds_replaced__","push","src_xn","join","email_fuzzy","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","aliases","schemaError","name","val","Error","__compiled__","__schemas__","compiled","link","isRegExp","createValidator","normalize","isString","alias","slist","filter","map","schema_test","src_ZPCc","schema_search","pretest","__index__","__text_cache__","resetScanCache","Match","shift","start","end","__last_index__","this","schema","__schema__","toLowerCase","index","lastIndex","raw","url","createMatch","LinkifyIt","schemas","options","reduce","acc","k","hasOwnProperty","add","definition","set","m","ml","me","len","next","tld_pos","exec","testSchemaAt","search","indexOf","result","list","keepOld","isArray","concat","sort","el","idx","arr","reverse","module","exports","isSpace","state","startLine","endLine","silent","marker","cnt","ch","token","bMarks","tShift","max","eMarks","sCount","blkIndent","src","charCodeAt","line","markup","String","fromCharCode","Header","_ref","versions","title","description","location","currentVersion","_pathname","useLocation","nodes","useSwaggerMetadata","nodesLimitedRelease","useSwaggerLimitedRelease","user","useApplicationContext","userLoggedOut","loggedIn","swaggerFile","ctx","info","file","version","pathname","includes","node","swaggerFileLimitedRelease","window","versionSection","versionSectionText","changeVersion","_ref2","newPath","target","value","newVersion","tokens","endsWith","pop","navigate","React","createElement","selected","className","htmlFor","data-label-content","id","onChange","parsedAPIDescription","apiUtils","dangerouslySetInnerHTML","__html","stringifyPosition","position","point","column","reason","place","origin","parts","super","undefined","message","stack","fatal","ruleId","actual","expected","note","basename","path","ext","TypeError","assertPath","seenNonSlash","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","code","joined","_len","segments","_key","sep","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","lastIndexOf","normalizeString","JSON","stringify","proc","cwd","isUrl","fileUrlOrPath","href","urlToPath","URL","error","protocol","hostname","third","decodeURIComponent","getPathFromURLPosix","order","data","messages","history","stored","prop","assertNonEmpty","assertPart","stem","encoding","part","bail","isPlainObject","getPrototypeOf","Symbol","toStringTag","iterator","wrap","middleware","callback","called","_len3","parameters","_key3","fnExpectsCallback","done","apply","exception","then","_len4","output","_key4","unified","base","transformers","fns","pipeline","run","values","middlewareIndex","fn","_len2","_key2","use","middelware","trough","attachers","frozen","namespace","freezeIndex","processor","assertUnfrozen","own","Parser","Compiler","freeze","attacher","transformer","Number","POSITIVE_INFINITY","settings","addPlugin","addList","addPreset","plugin","plugins","entry","parse","doc","vfile","assertParser","newable","assertCompiler","assertNode","Promise","executor","resolve","reject","tree","runSync","complete","assertDone","process","processSync","destination","type","asyncName","Boolean","looksLikeAVFile","emptyOptions","one","includeImageAlt","includeHtml","alt","children","splice","remove","items","chunkStart","from","unshift","syntaxExtension","all","extension","hook","left","right","existing","before","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiControl","asciiDigit","asciiHexDigit","asciiPunctuation","markdownLineEnding","markdownLineEndingOrSpace","markdownSpace","unicodePunctuation","unicodeWhitespace","regex","factorySpace","effects","ok","limit","size","enter","prefix","consume","exit","tokenize","contentStart","attempt","parser","constructs","contentInitial","lineStart","previous","contentType","childFlow","childToken","lineStartOffset","continued","item","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","events","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","check","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","lazy","now","offset","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","write","seen","nok","document","disable","null","blankLine","after","partial","subtokenize","jumps","event","lineIndex","otherIndex","otherEvent","subevents","more","_isInFirstContentOfListItem","subcontent","_container","eventIndex","context","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","_gfmTasklistFirstContentOfListItem","chunkInside","contentEnd","continuationConstruct","contentContinue","prefixed","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","tabs","bufferIndex","chunk","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","consumed","accountForPotentialSkip","fields","constructFactory","construct","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","expectedCode","startIndex","startBufferIndex","endIndex","endBufferIndex","view","head","sliceChunks","chunkIndex","go","_","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","create","resolveTo","sequence","initialSize","kind","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","open","contBefore","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","enclosedBefore","enclosed","enclosedEscape","rawEscape","factoryLabel","markerType","labelInside","labelEscape","factoryTitle","begin","escape","factoryWhitespace","normalizeIdentifier","toUpperCase","identifier","labelAfter","markerAfter","destinationBefore","destinationAfter","afterWhitespace","defined","beforeMarker","titleAfter","titleAfterOptionalWhitespace","codeIndented","afterPrefix","furtherStart","setextUnderline","paragraph","content","heading","htmlBlockNames","htmlRawNames","htmlFlow","closingTag","buffer","markerB","declarationOpen","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","slash","basicSelfClosing","completeClosingTagAfter","completeAttributeNameBefore","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCdataInside","continuationStart","blankLineBefore","continuationAfter","nonLazyContinuationStart","continuationStartNonLazy","continuationBefore","continuationRawEndTag","nonLazyContinuation","codeFenced","closeStart","beforeSequenceClose","sequenceClose","sizeOpen","sequenceCloseAfter","initialPrefix","sequenceOpen","beforeSequenceOpen","infoBefore","atNonLazyBreak","metaBefore","meta","contentBefore","beforeContentChunk","contentChunk","characterEntities","AElig","AMP","Aacute","Abreve","Acirc","Acy","Afr","Agrave","Alpha","Amacr","And","Aogon","Aopf","ApplyFunction","Aring","Ascr","Assign","Atilde","Auml","Backslash","Barv","Barwed","Bcy","Because","Bernoullis","Beta","Bfr","Bopf","Breve","Bscr","Bumpeq","CHcy","COPY","Cacute","Cap","CapitalDifferentialD","Cayleys","Ccaron","Ccedil","Ccirc","Cconint","Cdot","Cedilla","CenterDot","Cfr","Chi","CircleDot","CircleMinus","CirclePlus","CircleTimes","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","Colon","Colone","Congruent","Conint","ContourIntegral","Copf","Coproduct","CounterClockwiseContourIntegral","Cross","Cscr","Cup","CupCap","DD","DDotrahd","DJcy","DScy","DZcy","Dagger","Darr","Dashv","Dcaron","Dcy","Del","Delta","Dfr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","Diamond","DifferentialD","Dopf","Dot","DotDot","DotEqual","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","DownArrowBar","DownArrowUpArrow","DownBreve","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","Downarrow","Dscr","Dstrok","ENG","ETH","Eacute","Ecaron","Ecirc","Ecy","Edot","Efr","Egrave","Element","Emacr","EmptySmallSquare","EmptyVerySmallSquare","Eogon","Eopf","Epsilon","Equal","EqualTilde","Equilibrium","Escr","Esim","Eta","Euml","Exists","ExponentialE","Fcy","Ffr","FilledSmallSquare","FilledVerySmallSquare","Fopf","ForAll","Fouriertrf","Fscr","GJcy","GT","Gamma","Gammad","Gbreve","Gcedil","Gcirc","Gcy","Gdot","Gfr","Gg","Gopf","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","Gt","HARDcy","Hacek","Hat","Hcirc","Hfr","HilbertSpace","Hopf","HorizontalLine","Hscr","Hstrok","HumpDownHump","HumpEqual","IEcy","IJlig","IOcy","Iacute","Icirc","Icy","Idot","Ifr","Igrave","Im","Imacr","ImaginaryI","Implies","Int","Integral","Intersection","InvisibleComma","InvisibleTimes","Iogon","Iopf","Iota","Iscr","Itilde","Iukcy","Iuml","Jcirc","Jcy","Jfr","Jopf","Jscr","Jsercy","Jukcy","KHcy","KJcy","Kappa","Kcedil","Kcy","Kfr","Kopf","Kscr","LJcy","LT","Lacute","Lambda","Lang","Laplacetrf","Larr","Lcaron","Lcedil","Lcy","LeftAngleBracket","LeftArrow","LeftArrowBar","LeftArrowRightArrow","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","LeftRightArrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","Leftarrow","Leftrightarrow","LessEqualGreater","LessFullEqual","LessGreater","LessLess","LessSlantEqual","LessTilde","Lfr","Ll","Lleftarrow","Lmidot","LongLeftArrow","LongLeftRightArrow","LongRightArrow","Longleftarrow","Longleftrightarrow","Longrightarrow","Lopf","LowerLeftArrow","LowerRightArrow","Lscr","Lsh","Lstrok","Lt","Map","Mcy","MediumSpace","Mellintrf","Mfr","MinusPlus","Mopf","Mscr","Mu","NJcy","Nacute","Ncaron","Ncedil","Ncy","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","NestedGreaterGreater","NestedLessLess","NewLine","Nfr","NoBreak","NonBreakingSpace","Nopf","Not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","Nscr","Ntilde","Nu","OElig","Oacute","Ocirc","Ocy","Odblac","Ofr","Ograve","Omacr","Omega","Omicron","Oopf","OpenCurlyDoubleQuote","OpenCurlyQuote","Or","Oscr","Oslash","Otilde","Otimes","Ouml","OverBar","OverBrace","OverBracket","OverParenthesis","PartialD","Pcy","Pfr","Phi","Pi","PlusMinus","Poincareplane","Popf","Pr","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","Prime","Product","Proportion","Proportional","Pscr","Psi","QUOT","Qfr","Qopf","Qscr","RBarr","REG","Racute","Rang","Rarr","Rarrtl","Rcaron","Rcedil","Rcy","Re","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","Rfr","Rho","RightAngleBracket","RightArrow","RightArrowBar","RightArrowLeftArrow","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","RightTee","RightTeeArrow","RightTeeVector","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","Rightarrow","Ropf","RoundImplies","Rrightarrow","Rscr","Rsh","RuleDelayed","SHCHcy","SHcy","SOFTcy","Sacute","Sc","Scaron","Scedil","Scirc","Scy","Sfr","ShortDownArrow","ShortLeftArrow","ShortRightArrow","ShortUpArrow","Sigma","SmallCircle","Sopf","Sqrt","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","Sscr","Star","Sub","Subset","SubsetEqual","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","SuchThat","Sum","Sup","Superset","SupersetEqual","Supset","THORN","TRADE","TSHcy","TScy","Tab","Tau","Tcaron","Tcedil","Tcy","Tfr","Therefore","Theta","ThickSpace","ThinSpace","Tilde","TildeEqual","TildeFullEqual","TildeTilde","Topf","TripleDot","Tscr","Tstrok","Uacute","Uarr","Uarrocir","Ubrcy","Ubreve","Ucirc","Ucy","Udblac","Ufr","Ugrave","Umacr","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","Uopf","UpArrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","UpEquilibrium","UpTee","UpTeeArrow","Uparrow","Updownarrow","UpperLeftArrow","UpperRightArrow","Upsi","Upsilon","Uring","Uscr","Utilde","Uuml","VDash","Vbar","Vcy","Vdash","Vdashl","Vee","Verbar","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","Vopf","Vscr","Vvdash","Wcirc","Wedge","Wfr","Wopf","Wscr","Xfr","Xi","Xopf","Xscr","YAcy","YIcy","YUcy","Yacute","Ycirc","Ycy","Yfr","Yopf","Yscr","Yuml","ZHcy","Zacute","Zcaron","Zcy","Zdot","ZeroWidthSpace","Zeta","Zfr","Zopf","Zscr","aacute","abreve","ac","acE","acd","acirc","acute","acy","aelig","af","afr","agrave","alefsym","aleph","alpha","amacr","amalg","amp","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","aogon","aopf","ap","apE","apacir","ape","apid","apos","approx","approxeq","aring","ascr","ast","asymp","asympeq","atilde","auml","awconint","awint","bNot","backcong","backepsilon","backprime","backsim","backsimeq","barvee","barwed","barwedge","bbrk","bbrktbrk","bcong","bcy","bdquo","becaus","because","bemptyv","bepsi","bernou","beta","beth","between","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bnot","bopf","bot","bottom","bowtie","boxDL","boxDR","boxDl","boxDr","boxH","boxHD","boxHU","boxHd","boxHu","boxUL","boxUR","boxUl","boxUr","boxV","boxVH","boxVL","boxVR","boxVh","boxVl","boxVr","boxbox","boxdL","boxdR","boxdl","boxdr","boxh","boxhD","boxhU","boxhd","boxhu","boxminus","boxplus","boxtimes","boxuL","boxuR","boxul","boxur","boxv","boxvH","boxvL","boxvR","boxvh","boxvl","boxvr","bprime","breve","brvbar","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","bumpeq","cacute","cap","capand","capbrcup","capcap","capcup","capdot","caps","caret","caron","ccaps","ccaron","ccedil","ccirc","ccups","ccupssm","cdot","cedil","cemptyv","cent","centerdot","cfr","chcy","checkmark","chi","cir","cirE","circ","circeq","circlearrowleft","circlearrowright","circledR","circledS","circledast","circledcirc","circleddash","cire","cirfnint","cirmid","cirscir","clubs","clubsuit","colon","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","conint","copf","coprod","copy","copysr","crarr","cross","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cup","cupbrcap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dArr","dHar","dagger","daleth","darr","dash","dashv","dbkarow","dblac","dcaron","dcy","dd","ddagger","ddarr","ddotseq","deg","delta","demptyv","dfisht","dfr","dharl","dharr","diam","diamond","diamondsuit","diams","die","digamma","disin","div","divide","divideontimes","divonx","djcy","dlcorn","dlcrop","dollar","dopf","dot","doteq","doteqdot","dotminus","dotplus","dotsquare","doublebarwedge","downarrow","downdownarrows","downharpoonleft","downharpoonright","drbkarow","drcorn","drcrop","dscr","dscy","dsol","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","dzcy","dzigrarr","eDDot","eDot","eacute","easter","ecaron","ecir","ecirc","ecolon","ecy","edot","ee","efDot","efr","eg","egrave","egs","egsdot","elinters","ell","els","elsdot","emacr","empty","emptyset","emptyv","emsp13","emsp14","emsp","eng","ensp","eogon","eopf","epar","eparsl","eplus","epsi","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","equals","equest","equiv","equivDD","eqvparsl","erDot","erarr","escr","esdot","esim","eta","eth","euml","euro","excl","exist","expectation","exponentiale","fallingdotseq","fcy","female","ffilig","fflig","ffllig","ffr","filig","fjlig","flat","fllig","fltns","fnof","fopf","forall","fork","forkv","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","fscr","gE","gEl","gacute","gamma","gammad","gap","gbreve","gcirc","gcy","gdot","ge","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","gfr","gg","ggg","gimel","gjcy","gl","glE","gla","glj","gnE","gnap","gnapprox","gne","gneq","gneqq","gnsim","gopf","grave","gscr","gsim","gsime","gsiml","gt","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","hArr","hairsp","half","hamilt","hardcy","harr","harrcir","harrw","hbar","hcirc","hearts","heartsuit","hellip","hercon","hfr","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","horbar","hscr","hslash","hstrok","hybull","hyphen","iacute","ic","icirc","icy","iecy","iexcl","iff","ifr","igrave","ii","iiiint","iiint","iinfin","iiota","ijlig","imacr","image","imagline","imagpart","imath","imof","imped","in","incare","infin","infintie","inodot","int","intcal","integers","intercal","intlarhk","intprod","iocy","iogon","iopf","iota","iprod","iquest","iscr","isin","isinE","isindot","isins","isinsv","isinv","it","itilde","iukcy","iuml","jcirc","jcy","jfr","jmath","jopf","jscr","jsercy","jukcy","kappa","kappav","kcedil","kcy","kfr","kgreen","khcy","kjcy","kopf","kscr","lAarr","lArr","lAtail","lBarr","lE","lEg","lHar","lacute","laemptyv","lagran","lambda","lang","langd","langle","lap","laquo","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","latail","late","lates","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","lcaron","lcedil","lceil","lcub","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","le","leftarrow","leftarrowtail","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","leftthreetimes","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","lessgtr","lesssim","lfisht","lfloor","lfr","lg","lgE","lhard","lharu","lharul","lhblk","ljcy","ll","llarr","llcorner","llhard","lltri","lmidot","lmoust","lmoustache","lnE","lnap","lnapprox","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","longleftrightarrow","longmapsto","longrightarrow","looparrowleft","looparrowright","lopar","lopf","loplus","lotimes","lowast","lowbar","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","lscr","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","lstrok","lt","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltrPar","ltri","ltrie","ltrif","lurdshar","luruhar","lvertneqq","lvnE","mDDot","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","mcomma","mcy","mdash","measuredangle","mfr","mho","micro","mid","midast","midcir","middot","minus","minusb","minusd","minusdu","mlcp","mldr","mnplus","models","mopf","mp","mscr","mstpos","mu","multimap","mumap","nGg","nGt","nGtv","nLeftarrow","nLeftrightarrow","nLl","nLt","nLtv","nRightarrow","nVDash","nVdash","nabla","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","ncaron","ncedil","ncong","ncongdot","ncup","ncy","ndash","ne","neArr","nearhk","nearr","nearrow","nedot","nequiv","nesear","nesim","nexist","nexists","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","ngsim","ngt","ngtr","nhArr","nharr","nhpar","ni","nis","nisd","niv","njcy","nlArr","nlE","nlarr","nldr","nle","nleftarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nlsim","nlt","nltri","nltrie","nmid","nopf","not","notin","notinE","notindot","notinva","notinvb","notinvc","notni","notniva","notnivb","notnivc","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","nu","num","numero","numsp","nvDash","nvHarr","nvap","nvdash","nvge","nvgt","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwArr","nwarhk","nwarr","nwarrow","nwnear","oS","oacute","oast","ocir","ocirc","ocy","odash","odblac","odiv","odot","odsold","oelig","ofcir","ofr","ogon","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","omacr","omega","omicron","omid","ominus","oopf","opar","operp","oplus","or","orarr","ord","orderof","ordf","ordm","origof","oror","orslope","orv","oscr","oslash","osol","otilde","otimes","otimesas","ouml","ovbar","par","para","parallel","parsim","parsl","pcy","percnt","period","permil","perp","pertenk","pfr","phi","phiv","phmmat","phone","pi","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","plusmn","plussim","plustwo","pm","pointint","popf","pound","pr","prE","prap","prcue","pre","prec","precapprox","preccurlyeq","preceq","precnapprox","precneqq","precnsim","precsim","prime","primes","prnE","prnap","prnsim","prod","profalar","profline","profsurf","propto","prsim","prurel","pscr","psi","puncsp","qfr","qint","qopf","qprime","qscr","quaternions","quatint","quest","questeq","quot","rAarr","rArr","rAtail","rBarr","rHar","race","racute","radic","raemptyv","rang","rangd","range","rangle","raquo","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","rarrtl","rarrw","ratail","ratio","rationals","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","rcaron","rcedil","rceil","rcub","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","real","realine","realpart","reals","rect","reg","rfisht","rfloor","rfr","rhard","rharu","rharul","rho","rhov","rightarrow","rightarrowtail","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","rightthreetimes","ring","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","ropf","roplus","rotimes","rpar","rpargt","rppolint","rrarr","rsaquo","rscr","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","ruluhar","rx","sacute","sbquo","sc","scE","scap","scaron","sccue","sce","scedil","scirc","scnE","scnap","scnsim","scpolint","scsim","scy","sdot","sdotb","sdote","seArr","searhk","searr","searrow","sect","semi","seswar","setminus","setmn","sext","sfr","sfrown","sharp","shchcy","shcy","shortmid","shortparallel","shy","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","softcy","sol","solb","solbar","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","square","squarf","squf","srarr","sscr","ssetmn","ssmile","sstarf","star","starf","straightepsilon","straightphi","strns","sub","subE","subdot","sube","subedot","submult","subnE","subne","subplus","subrarr","subset","subseteq","subseteqq","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","succeq","succnapprox","succneqq","succnsim","succsim","sum","sung","sup1","sup2","sup3","sup","supE","supdot","supdsub","supe","supedot","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swArr","swarhk","swarr","swarrow","swnwar","szlig","tau","tbrk","tcaron","tcedil","tcy","tdot","telrec","tfr","there4","therefore","theta","thetasym","thetav","thickapprox","thicksim","thinsp","thkap","thksim","thorn","tilde","times","timesb","timesbar","timesd","tint","toea","top","topbot","topcir","topf","topfork","tosa","tprime","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","triplus","trisb","tritime","trpezium","tscr","tscy","tshcy","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","uArr","uHar","uacute","uarr","ubrcy","ubreve","ucirc","ucy","udarr","udblac","udhar","ufisht","ufr","ugrave","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","umacr","uml","uogon","uopf","uparrow","updownarrow","upharpoonleft","upharpoonright","uplus","upsi","upsih","upsilon","upuparrows","urcorn","urcorner","urcrop","uring","urtri","uscr","utdot","utilde","utri","utrif","uuarr","uuml","uwangle","vArr","vBar","vBarv","vDash","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vcy","vdash","vee","veebar","veeeq","vellip","verbar","vert","vfr","vltri","vnsub","vnsup","vopf","vprop","vrtri","vscr","vsubnE","vsubne","vsupnE","vsupne","vzigzag","wcirc","wedbar","wedge","wedgeq","weierp","wfr","wopf","wp","wr","wreath","wscr","xcap","xcirc","xcup","xdtri","xfr","xhArr","xharr","xi","xlArr","xlarr","xmap","xnis","xodot","xopf","xoplus","xotime","xrArr","xrarr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","yacute","yacy","ycirc","ycy","yen","yfr","yicy","yopf","yscr","yucy","yuml","zacute","zcaron","zcy","zdot","zeetrf","zeta","zfr","zhcy","zigrarr","zopf","zscr","zwj","zwnj","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","labelEndNok","resourceConstruct","labelEndOk","referenceFullConstruct","referenceNotFull","referenceCollapsedConstruct","close","media","group","label","insideSpan","resourceBefore","resourceOpen","resourceEnd","resourceDestinationAfter","resourceDestinationMissing","resourceBetween","resourceTitleAfter","referenceFullAfter","referenceFullMissing","referenceCollapsedOpen","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","closingSequence","nextEvents","movePoint","sequenceFurther","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","instruction","tagOpen","declaration","commentEnd","comment","commentClose","lineEndingBefore","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","lineEndingAfter","lineEndingAfterPrefix","tailExitIndex","headEnterIndex","extensions","combineExtensions","string","decodeNumericCharacterReference","parseInt","characterEscapeOrReference","decode","$0","$1","$2","hex","fromMarkdown","config","transforms","canContainEols","autolink","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","blockQuote","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","html","htmlFlowData","htmlText","htmlTextData","listItem","spread","_spread","checked","listItemValue","getData","setData","listOrdered","listUnordered","reference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","thematicBreak","closer","atxHeadingSequence","depth","onexitdata","characterEscapeValue","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","resume","codeFencedFence","onexithardbreak","referenceType","fragment","labelText","ancestor","decodeString","resource","setextHeadingLineSequence","setextHeadingText","configure","combined","mdastExtensions","tokenStack","listStack","prepareList","handler","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","errorHandler","onExitError","ordered","compiler","postprocess","atCarriageReturn","endPosition","Math","ceil","preprocess","d","remarkParse","normalizeUri","skip","encodeURIComponent","convert","castFactory","tests","checks","anyFactory","propsFactory","visitParents","visitor","is","step","factory","parents","defineProperty","visit","subresult","grandparents","toResult","parent","pointStart","pointEnd","clean","footnoteReference","safeId","footnoteOrder","counter","footnoteCounts","reuseCounter","properties","clobberPrefix","dataFootnoteRef","ariaDescribedBy","patch","applyData","revert","subtype","suffix","contents","listItemLoose","trimLines","last","lines","trimLine","codePointAt","handlers","blockquote","break","delete","footnote","footnoteById","no","dangerous","imageReference","inlineCode","linkReference","results","loose","listLoose","disabled","child","root","table","rows","firstRow","tableContent","body","tableCell","tableRow","siblings","align","cellIndex","cells","cell","alignValue","toml","ignore","yaml","footnoteDefinition","createState","allowDangerousHtml","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","unknownHandler","passThrough","cache","augment","hName","hProperties","hChildren","props","to","defaultUnknownHandler","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","ariaLabel","tailTail","dataFootnotes","footer","bridge","mutate","Schema","property","normal","space","merge","definitions","Info","attribute","boolean","booleanish","overloadedBoolean","number","commaSeparated","spaceSeparated","commaOrSpaceSeparated","mustUseProperty","powers","increment","mask","mark","transform","attributes","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","blocking","capture","charSet","cite","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","dateTime","decoding","default","defer","dir","dirName","download","draggable","encType","enterKeyHint","fetchPriority","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","height","hidden","high","hrefLang","httpEquiv","imageSizes","imageSrcSet","inert","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","language","loading","loop","low","manifest","maxLength","method","min","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforeMatch","onBeforePrint","onBeforeToggle","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onScrollEnd","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","placeholder","playsInline","popover","popoverTarget","popoverTargetAction","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rowSpan","sandbox","scope","scoped","seamless","shadowRootClonable","shadowRootDelegatesFocus","shadowRootMode","shape","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","style","tabIndex","translate","typeMustMatch","useMap","width","writingSuggestions","aLink","archive","axis","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","char","charOff","classId","clear","codeBase","codeType","color","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","object","profile","prompt","rev","rightMargin","rules","scheme","scrolling","standby","summary","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","svg","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","onZoom","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","transformOrigin","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","display","dur","divisor","dx","dy","edgeMode","editable","elevation","exponent","externalResourcesRequired","fill","filterRes","filterUnits","focusable","focusHighlight","format","fr","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","mode","numOctaves","observer","opacity","operator","orient","orientation","overflow","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","r","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","ry","scale","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","spacing","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x","x1","x2","xChannelSelector","y","y1","y2","yChannelSelector","z","zoomAndPan","rehypeFilter","allowedElements","disallowedElements","allowElement","parent_","unwrapDisallowed","whitespace","thing","valid","kebab","camelcase","charAt","hastToReact","protocols","uriTransformer","uri","trim","first","tableElements","Set","childrenToReact","childIndex","toReact","has","skipHtml","transformLinkUri","parentSchema","addProperty","listDepth","component","components","basic","Fragment","isValidElementType","linkTarget","inline","level","transformImageUri","input","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","count","Type","rest","dashes","find","padRight","padLeft","v","styleReplacer","parseStyle","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","ReactMarkdown","deprecation","console","warn","remarkPlugins","remarkRehypeOptions","rehypePlugins","hastNode","propTypes","func","arrayOf","bool","oneOfType","any","APIRefBlockDefSwagger","parameter","xEnum","x_enum","readOnlyVal","defaultVal","defaultValue","minimum","maximum","enumVal","enum","allowedPossibleValuesList","xenumsingle","aOrP","aOrPText","allowedPossibleValuesBlock","aOrPBlock","aOrPVals","countVal","singleenum","separatorChar","enumXEnumLinkBlock","Link","enumXEnumLinkBlockText","linkArray","requiredBlock","data-type","CollapseButton","isOpen","styles","collapseAttributes","HideDeprecatedCheckbox","hideDeprecatedCheckbox","APIRefBlockSwagger","transaction","transactionTitle","preamble","opName","transactionId","setIsOpen","useState","setChecked","opNameModified","param","requestBody_content","response_content","transactionBlock","_orderBy","isDeprecated","preambleBody","normalizedHTML","parseMarkdown","data-cy","classnames","attributesHeading","aria-hidden","hasDeprecatedFields","handleClick","Parameters","headerParameters","pathParameters","formDataParameters","queryParameters","cleanedRequestBody","opAnchor","getCodePieces","response","res","i","substr","Responses","samples","cleanedResponse","isCopied","setIsCopied","handleCopyClipboard","copyToClipboard","setTimeout","reqIfNoParams","sample","request","CopyButton","SuccessCheckIcon","CopyPasteIcon","Operations","operations","publicSDKSamples","publicSDKBlock","x_publicSDKSamples","x_publicSDKSample","operation","anchor","opAnchorHash","parsedOperationDescription","responseDescription","Resources","resources","APIRecurSwagger","togglable","allOf","eachAllOf","itemsResult","eachItem","propertiesResult","eachProperty","classNames","Definitions","Xerrors","x_errors","Xerrors2","x_errors_2","currError","index1","_isEmpty","issues","_get","currErrorIssue","index3","issue","Errors","TemplateLayout","post","pageContext","merged_pages","min_merged_pages","x_deprecated","Layout","layout","leftNav","leftNavBar","apiLatestVersion","latestVersion","apiLatestVersionPath","latestVersionPath","fileAbsolutePath","x_id","_borg_metadata","tags","TYPE_MAP","fileTypeOf","fileName","fileExt","getCodeLineStyle","lineNumber","linesToHighlight","createLineNumberArray","lineNumbers","rangeStringArray","rangeNumberArray","_toConsumableArray","pageNameFromPathname","array","comparer","Any","Cc","Cf","P","Z","normalizeReference","_endLine","destEndPos","destEndLineNo","l","oldParentType","terminate","terminatorRules","nextLine","lineMax","md","ruler","getRules","parentType","isEmpty","getLines","helpers","parseLinkDestination","normalizeLink","validateLink","parseLinkTitle","env","references","encode","Url","slashes","auth","port","hash","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","slashedProtocol","slashesDenoteHost","lowerProto","hec","simplePath","proto","atSign","hostEnd","host","parseHost","ipv6Hostname","hostparts","newpart","j","validParts","notHost","bit","qm","u","disableNested","found","prevPos","posMax","oldPos","skipToken","unescapeAll","adjustTab","lastLineEmpty","oldBMarks","oldBSCount","oldIndent","oldSCount","oldTShift","spaceAfterMarker","isOutdented","oldLineMax","bsCount","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","enumerable","configurable","newValue","writable","getProperty","extend","copyIsArray","clone","deep","setAttribute","appendChild","select","execCommand","removeChild","_hasOwnProperty","isValidEntityCode","c","fromCodePoint","surrogate1","surrogate2","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","entities","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","replaceUnsafeChar","REGEXP_ESCAPE_RE","UNICODE_PUNCT_RE","lib","mdurl","ucmicro","unescapeMd","escaped","entity","replaceEntityPattern","arrayReplaceAt","newElements","isWhiteSpace","isMdAsciiPunct","isPunctChar","tmp","skipSpacesBack","skipCharsBack","isBuffer","utils","Renderer","ParserCore","ParserBlock","ParserInline","punycode","zero","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","RECODE_HOSTNAME_FOR","parsed","toASCII","er","normalizeLinkText","toUnicode","defaultChars","MarkdownIt","presetName","core","renderer","linkify","presets","enableOnly","rules2","ruler2","enable","ignoreInvalid","chain","missed","args","State","render","parseInline","inlineMode","renderInline","Token","tag","nesting","attrs","attrIndex","attrPush","attrData","attrSet","attrGet","attrJoin","StateInline","outTokens","tokens_meta","pending","pendingLevel","delimiters","_prev_delimiters","backticks","backticksScanned","pushPending","token_meta","scanDelims","canSplitWord","lastChar","nextChar","can_open","can_close","isLastWhiteSpace","isLastPunctChar","isNextWhiteSpace","isNextPunctChar","left_flanking","right_flanking","StyleToObject","declarations","hasIterator","skipChars","skipSpaces","xhtmlOut","langPrefix","typographer","quotes","highlight","maxNesting","curr","compareAscending","other","orders","objCriteria","criteria","othCriteria","ordersLength","EMAIL_RE","AUTOLINK_RE","fullUrl","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","lineno","updatePosition","Position","errorsList","msg","err","filename","comments","ret","decl","decls","pmax","ws","aria-label","Ruler","__rules__","__cache__","__find__","__compile__","chains","rule","enabled","altName","at","opt","beforeName","ruleName","afterName","chainName","matchStart","matchEnd","openerLength","closerLength","skipBulletListMarker","skipOrderedListMarker","indent","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldListIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","tight","listIndent","markTightParagraphs","NEWLINES_RE","NULL_RE","_rules","_rules2","postProcess","parseLinkLabel","open_tag","close_tag","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","DIGITAL_RE","NAMED_RE","block_names","HTML_SEQUENCES","lineText","b","for","e","f","g","h","n","p","q","t","a","$$typeof","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","getModuleId","require","resource_order","orderOperations","get","put","sortFnResourceOrId","methodComparison","localeCompare","sortFnResourceIdAction","pathComparison","calculateScore","numArguments","identifyType","mergeBuckets","typedBuckets","sortedTagOperations","opKey","sortedOperations","mdContent","normalizedString","tables","pIndex","some","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","identity","collection","iteratees","iteratee","ESCAPED","StateCore","hasEmptyLines","skipEmptyLines","allLimitedReleaseJson","useStaticQuery","allExternalJson","default_rules","code_inline","slf","renderAttrs","code_block","fence","highlighted","tmpAttrs","tmpToken","langName","langAttrs","renderInlineAsText","renderToken","hardbreak","softbreak","html_block","html_inline","nextToken","needLf","StateBlock","s","indent_found","ddIndent","keepLastLF","lineIndent","queue","processDelimiters","closerIdx","openerIdx","minOpenerIdx","newMinOpenerIdx","isOddMatch","lastJump","openersBottom","headerIdx","lastTokenIdx","getLine","escapedSplit","isEscaped","lastPos","substring","columns","columnCount","aligns","tableLines","tbodyLines","firstCh","secondCh","decodeCache","exclude","getDecodeCache","seq","b1","b2","b3","b4","chr","componentChars","baseOrderBy","guard","startDelim","endDelim","loneMarkers","scanned","ref","baseEach","isArrayLike","isLinkClose","currentToken","ln","htmlLinkLevel","urlText","links","blockTokens","tok","Core","downloadFile","exportObj","exportName","dataStr","downloadAnchorNode","click","downloadZipFile","fetch","blob","fileUrl","createObjectURL","alink","QUOTE_TEST_RE","QUOTE_RE","replaceAt","process_inlines","thisLevel","canOpen","canClose","isSingle","openQuote","closeQuote","OUTER","single","blkIdx","opts","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","tm","replaceFn","replace_scoped","inlineTokens","inside_autolink","replace_rare","isTerminatorChar","params","mem","haveEndMarker","lc","isLetter","encodeCache","keepEscaped","nextCode","getEncodeCache","isStrong","isSymbol","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","parseReference"],"mappings":"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","file":"component---src-templates-template-layout-js-5ab161e6870d3891be27.js","sourcesContent":["'use strict';\n\n////////////////////////////////////////////////////////////////////////////////\n// Helpers\n\n// Merge objects\n//\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key];\n });\n });\n return obj;\n}\nfunction _class(obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isString(obj) {\n return _class(obj) === '[object String]';\n}\nfunction isObject(obj) {\n return _class(obj) === '[object Object]';\n}\nfunction isRegExp(obj) {\n return _class(obj) === '[object RegExp]';\n}\nfunction isFunction(obj) {\n return _class(obj) === '[object Function]';\n}\nfunction escapeRE(str) {\n return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar defaultOptions = {\n fuzzyLink: true,\n fuzzyEmail: true,\n fuzzyIP: false\n};\nfunction isOptionsObj(obj) {\n return Object.keys(obj || {}).reduce(function (acc, k) {\n return acc || defaultOptions.hasOwnProperty(k);\n }, false);\n}\nvar defaultSchemas = {\n 'http:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n if (!self.re.http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.http = new RegExp('^\\\\/\\\\/' + self.re.src_auth + self.re.src_host_port_strict + self.re.src_path, 'i');\n }\n if (self.re.http.test(tail)) {\n return tail.match(self.re.http)[0].length;\n }\n return 0;\n }\n },\n 'https:': 'http:',\n 'ftp:': 'http:',\n '//': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n if (!self.re.no_http) {\n // compile lazily, because \"host\"-containing variables can change on tlds update.\n self.re.no_http = new RegExp('^' + self.re.src_auth +\n // Don't allow single-level domains, because of false positives like '//test'\n // with code comments\n '(?:localhost|(?:(?:' + self.re.src_domain + ')\\\\.)+' + self.re.src_domain_root + ')' + self.re.src_port + self.re.src_host_terminator + self.re.src_path, 'i');\n }\n if (self.re.no_http.test(tail)) {\n // should not be `://` & `///`, that protects from errors in protocol name\n if (pos >= 3 && text[pos - 3] === ':') {\n return 0;\n }\n if (pos >= 3 && text[pos - 3] === '/') {\n return 0;\n }\n return tail.match(self.re.no_http)[0].length;\n }\n return 0;\n }\n },\n 'mailto:': {\n validate: function (text, pos, self) {\n var tail = text.slice(pos);\n if (!self.re.mailto) {\n self.re.mailto = new RegExp('^' + self.re.src_email_name + '@' + self.re.src_host_strict, 'i');\n }\n if (self.re.mailto.test(tail)) {\n return tail.match(self.re.mailto)[0].length;\n }\n return 0;\n }\n }\n};\n\n/*eslint-disable max-len*/\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nvar tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]';\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nvar tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|');\n\n/*eslint-enable max-len*/\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction resetScanCache(self) {\n self.__index__ = -1;\n self.__text_cache__ = '';\n}\nfunction createValidator(re) {\n return function (text, pos) {\n var tail = text.slice(pos);\n if (re.test(tail)) {\n return tail.match(re)[0].length;\n }\n return 0;\n };\n}\nfunction createNormalizer() {\n return function (match, self) {\n self.normalize(match);\n };\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile(self) {\n // Load & clone RE patterns.\n var re = self.re = require('./lib/re')(self.__opts__);\n\n // Define dynamic patterns\n var tlds = self.__tlds__.slice();\n self.onCompile();\n if (!self.__tlds_replaced__) {\n tlds.push(tlds_2ch_src_re);\n }\n tlds.push(re.src_xn);\n re.src_tlds = tlds.join('|');\n function untpl(tpl) {\n return tpl.replace('%TLDS%', re.src_tlds);\n }\n re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i');\n re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i');\n re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i');\n re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i');\n\n //\n // Compile each schema\n //\n\n var aliases = [];\n self.__compiled__ = {}; // Reset compiled data\n\n function schemaError(name, val) {\n throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n }\n Object.keys(self.__schemas__).forEach(function (name) {\n var val = self.__schemas__[name];\n\n // skip disabled methods\n if (val === null) {\n return;\n }\n var compiled = {\n validate: null,\n link: null\n };\n self.__compiled__[name] = compiled;\n if (isObject(val)) {\n if (isRegExp(val.validate)) {\n compiled.validate = createValidator(val.validate);\n } else if (isFunction(val.validate)) {\n compiled.validate = val.validate;\n } else {\n schemaError(name, val);\n }\n if (isFunction(val.normalize)) {\n compiled.normalize = val.normalize;\n } else if (!val.normalize) {\n compiled.normalize = createNormalizer();\n } else {\n schemaError(name, val);\n }\n return;\n }\n if (isString(val)) {\n aliases.push(name);\n return;\n }\n schemaError(name, val);\n });\n\n //\n // Compile postponed aliases\n //\n\n aliases.forEach(function (alias) {\n if (!self.__compiled__[self.__schemas__[alias]]) {\n // Silently fail on missed schemas to avoid errons on disable.\n // schemaError(alias, self.__schemas__[alias]);\n return;\n }\n self.__compiled__[alias].validate = self.__compiled__[self.__schemas__[alias]].validate;\n self.__compiled__[alias].normalize = self.__compiled__[self.__schemas__[alias]].normalize;\n });\n\n //\n // Fake record for guessed links\n //\n self.__compiled__[''] = {\n validate: null,\n normalize: createNormalizer()\n };\n\n //\n // Build schema condition\n //\n var slist = Object.keys(self.__compiled__).filter(function (name) {\n // Filter disabled & fake schemas\n return name.length > 0 && self.__compiled__[name];\n }).map(escapeRE).join('|');\n // (?!_) cause 1.5x slowdown\n self.re.schema_test = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'i');\n self.re.schema_search = RegExp('(^|(?!_)(?:[><\\uff5c]|' + re.src_ZPCc + '))(' + slist + ')', 'ig');\n self.re.pretest = RegExp('(' + self.re.schema_test.source + ')|(' + self.re.host_fuzzy_test.source + ')|@', 'i');\n\n //\n // Cleanup\n //\n\n resetScanCache(self);\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match(self, shift) {\n var start = self.__index__,\n end = self.__last_index__,\n text = self.__text_cache__.slice(start, end);\n\n /**\n * Match#schema -> String\n *\n * Prefix (protocol) for matched string.\n **/\n this.schema = self.__schema__.toLowerCase();\n /**\n * Match#index -> Number\n *\n * First position of matched string.\n **/\n this.index = start + shift;\n /**\n * Match#lastIndex -> Number\n *\n * Next position after matched string.\n **/\n this.lastIndex = end + shift;\n /**\n * Match#raw -> String\n *\n * Matched string.\n **/\n this.raw = text;\n /**\n * Match#text -> String\n *\n * Notmalized text of matched string.\n **/\n this.text = text;\n /**\n * Match#url -> String\n *\n * Normalized url of matched string.\n **/\n this.url = text;\n}\nfunction createMatch(self, shift) {\n var match = new Match(self, shift);\n self.__compiled__[match.schema].normalize(match, self);\n return match;\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n * for example). `linkify-it` makes shure that prefix is not preceeded with\n * alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n * - _String_ - just alias to existing rule\n * - _Object_\n * - _validate_ - validator function (should return matched length on success),\n * or `RegExp`.\n * - _normalize_ - optional function to normalize text & url of matched result\n * (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n * like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt(schemas, options) {\n if (!(this instanceof LinkifyIt)) {\n return new LinkifyIt(schemas, options);\n }\n if (!options) {\n if (isOptionsObj(schemas)) {\n options = schemas;\n schemas = {};\n }\n }\n this.__opts__ = assign({}, defaultOptions, options);\n\n // Cache last tested result. Used to skip repeating steps on next `match` call.\n this.__index__ = -1;\n this.__last_index__ = -1; // Next scan position\n this.__schema__ = '';\n this.__text_cache__ = '';\n this.__schemas__ = assign({}, defaultSchemas, schemas);\n this.__compiled__ = {};\n this.__tlds__ = tlds_default;\n this.__tlds_replaced__ = false;\n this.re = {};\n compile(this);\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add(schema, definition) {\n this.__schemas__[schema] = definition;\n compile(this);\n return this;\n};\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set(options) {\n this.__opts__ = assign(this.__opts__, options);\n return this;\n};\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test(text) {\n // Reset scan cache\n this.__text_cache__ = text;\n this.__index__ = -1;\n if (!text.length) {\n return false;\n }\n var m, ml, me, len, shift, next, re, tld_pos, at_pos;\n\n // try to scan for link with schema - that's the most simple rule\n if (this.re.schema_test.test(text)) {\n re = this.re.schema_search;\n re.lastIndex = 0;\n while ((m = re.exec(text)) !== null) {\n len = this.testSchemaAt(text, m[2], re.lastIndex);\n if (len) {\n this.__schema__ = m[2];\n this.__index__ = m.index + m[1].length;\n this.__last_index__ = m.index + m[0].length + len;\n break;\n }\n }\n }\n if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n // guess schemaless links\n tld_pos = text.search(this.re.host_fuzzy_test);\n if (tld_pos >= 0) {\n // if tld is located after found link - no need to check fuzzy pattern\n if (this.__index__ < 0 || tld_pos < this.__index__) {\n if ((ml = text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n shift = ml.index + ml[1].length;\n if (this.__index__ < 0 || shift < this.__index__) {\n this.__schema__ = '';\n this.__index__ = shift;\n this.__last_index__ = ml.index + ml[0].length;\n }\n }\n }\n }\n }\n if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n // guess schemaless emails\n at_pos = text.indexOf('@');\n if (at_pos >= 0) {\n // We can't skip this check, because this cases are possible:\n // 192.168.1.1@gmail.com, my.in@example.com\n if ((me = text.match(this.re.email_fuzzy)) !== null) {\n shift = me.index + me[1].length;\n next = me.index + me[0].length;\n if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n this.__schema__ = 'mailto:';\n this.__index__ = shift;\n this.__last_index__ = next;\n }\n }\n }\n }\n return this.__index__ >= 0;\n};\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest(text) {\n return this.re.pretest.test(text);\n};\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text, schema, pos) {\n // If not supported schema check requested - terminate\n if (!this.__compiled__[schema.toLowerCase()]) {\n return 0;\n }\n return this.__compiled__[schema.toLowerCase()].validate(text, pos, this);\n};\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n * protocol-neutral links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match(text) {\n var shift = 0,\n result = [];\n\n // Try to take previous element from cache, if .test() called before\n if (this.__index__ >= 0 && this.__text_cache__ === text) {\n result.push(createMatch(this, shift));\n shift = this.__last_index__;\n }\n\n // Cut head if cache was used\n var tail = shift ? text.slice(shift) : text;\n\n // Scan string until end reached\n while (this.test(tail)) {\n result.push(createMatch(this, shift));\n tail = tail.slice(this.__last_index__);\n shift += this.__last_index__;\n }\n if (result.length) {\n return result;\n }\n return null;\n};\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n * are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds(list, keepOld) {\n list = Array.isArray(list) ? list : [list];\n if (!keepOld) {\n this.__tlds__ = list.slice();\n this.__tlds_replaced__ = true;\n compile(this);\n return this;\n }\n this.__tlds__ = this.__tlds__.concat(list).sort().filter(function (el, idx, arr) {\n return el !== arr[idx - 1];\n }).reverse();\n compile(this);\n return this;\n};\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize(match) {\n // Do minimal possible changes by default. Need to collect feedback prior\n // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n if (!match.schema) {\n match.url = 'http://' + match.url;\n }\n if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n match.url = 'mailto:' + match.url;\n }\n};\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile() {};\nmodule.exports = LinkifyIt;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"collapseAttributes\":\"swagger-api-module--collapseAttributes--2wV0c\",\"attributesHeading\":\"swagger-api-module--attributesHeading--zlyHJ\",\"hideDeprecatedCheckbox\":\"swagger-api-module--hideDeprecatedCheckbox--3LqJC\"};","// Horizontal rule\n\n'use strict';\n\nvar isSpace = require('../common/utils').isSpace;\nmodule.exports = function hr(state, startLine, endLine, silent) {\n var marker,\n cnt,\n ch,\n token,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) {\n return false;\n }\n marker = state.src.charCodeAt(pos++);\n\n // Check hr marker\n if (marker !== 0x2A /* * */ && marker !== 0x2D /* - */ && marker !== 0x5F /* _ */) {\n return false;\n }\n\n // markers can be mixed with spaces, but there should be at least 3 of them\n\n cnt = 1;\n while (pos < max) {\n ch = state.src.charCodeAt(pos++);\n if (ch !== marker && !isSpace(ch)) {\n return false;\n }\n if (ch === marker) {\n cnt++;\n }\n }\n if (cnt < 3) {\n return false;\n }\n if (silent) {\n return true;\n }\n state.line = startLine + 1;\n token = state.push('hr', 'hr', 0);\n token.map = [startLine, state.line];\n token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n return true;\n};","import React from 'react'\nimport { navigate } from 'gatsby'\nimport { useLocation } from '@reach/router'\nimport { useSwaggerLimitedRelease, useSwaggerMetadata } from '../../../hooks'\n// import { DownloadSchemaButton } from '../DownloadSchemaButton/DownloadSchemaButton'\nimport * as apiUtils from '../../../lib/api-utils'\nimport { useApplicationContext } from '../../../provider'\nimport { isEmpty } from 'lodash'\n\n/**\n * \n * TODO: \n * When the get schema button it's ready to be add it: \n * 1. Please uncomment the import above.\n * 2. Add this component just how the props are defined, make sure\n * that it's below the
with the class = \"dax-preamble\".\n * \n * Component to add:\n * \n * \n *\n * 3. Remove this TODO.\n * \n */\n\nexport default function Header({\n versions,\n title,\n description,\n location,\n currentVersion,\n}) {\n const _pathname = useLocation()\n const { nodes } = useSwaggerMetadata()\n const { nodes: nodesLimitedRelease } = useSwaggerLimitedRelease()\n const { user } = useApplicationContext()\n const userLoggedOut = !user?.loggedIn\n\n const swaggerFile = nodes\n .filter((ctx) => ctx.info.title === title)\n .filter((file) => {\n if (file.version) {\n return _pathname.pathname.includes(file.version)\n }\n return file\n })\n .map((node) => node)\n\n const swaggerFileLimitedRelease = nodesLimitedRelease\n .filter((ctx) => ctx.info.title === title)\n .filter((file) => {\n if (file.version) {\n return _pathname.pathname.includes(file.version)\n }\n return file\n })\n .map((node) => node)\n\n const downloadSchemaTitle = title.toLowerCase().replace(/ /g, '-')\n\n const downloadSchemaFile =\n typeof window !== 'undefined' &&\n window.location.pathname.includes('limited-release')\n ? swaggerFileLimitedRelease\n : swaggerFile\n\n let versionSection = null\n let versionSectionText = null\n const changeVersion = ({ target: { value: newVersion } }) => {\n let newPath\n let tokens = location.pathname.endsWith('/')\n ? location.pathname.slice(0, -1).split('/')\n : location.pathname.split('/')\n /* Removes current version from path if external api & `api` from path if limited-release api */\n tokens.pop()\n newPath = `${tokens.join('/')}/${newVersion}`\n navigate(`${newPath}/`)\n }\n\n if (versions) {\n versionSection = versions.map((obj, key) => {\n return (\n \n {obj.version}\n \n )\n })\n versionSectionText = (\n
\n \n
\n \n {versionSection}\n \n
\n \n
\n )\n }\n /*let majorVersionText = null;\n if (majorVersion) {\n majorVersionText = {majorVersion}\n }*/\n let parsedAPIDescription = ``\n if (description) {\n parsedAPIDescription = apiUtils.parseMarkdown(description)\n }\n\n return (\n
\n
\n

{title} API

\n {versionSectionText}\n
\n \n
\n )\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Position | PositionLike | Point | PointLike | null | undefined} [value]\n * Node, position, or point.\n * @returns {string}\n * Pretty printed positional info of a node (`string`).\n *\n * In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n * or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n * column, `s` for `start`, and `e` for end.\n * An empty string (`''`) is returned if the given value is neither `node`,\n * `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return '';\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position);\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value);\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value);\n }\n\n // ?\n return '';\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column);\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end);\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1;\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport { stringifyPosition } from 'unist-util-stringify-position';\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n /**\n * Create a message for `reason` at `place` from `origin`.\n *\n * When an error is passed in as `reason`, the `stack` is copied.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n *\n * > 👉 **Note**: you should use markdown.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns\n * Instance of `VFileMessage`.\n */\n // To do: next major: expose `undefined` everywhere instead of `null`.\n constructor(reason, place, origin) {\n /** @type {[string | null, string | null]} */\n const parts = [null, null];\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {\n line: null,\n column: null\n },\n // @ts-expect-error: \"\n end: {\n line: null,\n column: null\n }\n };\n super();\n if (typeof place === 'string') {\n origin = place;\n place = undefined;\n }\n if (typeof origin === 'string') {\n const index = origin.indexOf(':');\n if (index === -1) {\n parts[1] = origin;\n } else {\n parts[0] = origin.slice(0, index);\n parts[1] = origin.slice(index + 1);\n }\n }\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n // To do: next major: deep clone.\n // @ts-expect-error: looks like a position.\n position = place.position;\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n // @ts-expect-error: looks like a position.\n // To do: next major: deep clone.\n position = place;\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n // To do: next major: deep clone.\n position.start = place;\n }\n }\n\n // Fields from `Error`.\n /**\n * Serialized positional info of error.\n *\n * On normal errors, this would be something like `ParseError`, buit in\n * `VFile` messages we use this space to show where an error happened.\n */\n this.name = stringifyPosition(place) || '1:1';\n\n /**\n * Reason for message.\n *\n * @type {string}\n */\n this.message = typeof reason === 'object' ? reason.message : reason;\n\n /**\n * Stack of message.\n *\n * This is used by normal errors to show where something happened in\n * programming code, irrelevant for `VFile` messages,\n *\n * @type {string}\n */\n this.stack = '';\n if (typeof reason === 'object' && reason.stack) {\n this.stack = reason.stack;\n }\n\n /**\n * Reason for message.\n *\n * > 👉 **Note**: you should use markdown.\n *\n * @type {string}\n */\n this.reason = this.message;\n\n /* eslint-disable no-unused-expressions */\n /**\n * State of problem.\n *\n * * `true` — marks associated file as no longer processable (error)\n * * `false` — necessitates a (potential) change (warning)\n * * `null | undefined` — for things that might not need changing (info)\n *\n * @type {boolean | null | undefined}\n */\n this.fatal;\n\n /**\n * Starting line of error.\n *\n * @type {number | null}\n */\n this.line = position.start.line;\n\n /**\n * Starting column of error.\n *\n * @type {number | null}\n */\n this.column = position.start.column;\n\n /**\n * Full unist position.\n *\n * @type {Position | null}\n */\n this.position = position;\n\n /**\n * Namespace of message (example: `'my-package'`).\n *\n * @type {string | null}\n */\n this.source = parts[0];\n\n /**\n * Category of message (example: `'my-rule'`).\n *\n * @type {string | null}\n */\n this.ruleId = parts[1];\n\n /**\n * Path of a file (used throughout the `VFile` ecosystem).\n *\n * @type {string | null}\n */\n this.file;\n\n // The following fields are “well known”.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /**\n * Specify the source value that’s being reported, which is deemed\n * incorrect.\n *\n * @type {string | null}\n */\n this.actual;\n\n /**\n * Suggest acceptable values that can be used instead of `actual`.\n *\n * @type {Array | null}\n */\n this.expected;\n\n /**\n * Link to docs for the message.\n *\n * > 👉 **Note**: this must be an absolute URL that can be passed as `x`\n * > to `new URL(x)`.\n *\n * @type {string | null}\n */\n this.url;\n\n /**\n * Long form description of the message (you should use markdown).\n *\n * @type {string | null}\n */\n this.note;\n /* eslint-enable no-unused-expressions */\n }\n}\nVFileMessage.prototype.file = '';\nVFileMessage.prototype.name = '';\nVFileMessage.prototype.reason = '';\nVFileMessage.prototype.message = '';\nVFileMessage.prototype.stack = '';\nVFileMessage.prototype.fatal = null;\nVFileMessage.prototype.column = null;\nVFileMessage.prototype.line = null;\nVFileMessage.prototype.source = null;\nVFileMessage.prototype.ruleId = null;\nVFileMessage.prototype.position = null;","// A derivative work based on:\n// .\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// 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, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// .\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {\n basename,\n dirname,\n extname,\n join,\n sep: '/'\n};\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n * File path.\n * @param {string | undefined} [ext]\n * Extension to strip.\n * @returns {string}\n * Stem or basename.\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string');\n }\n assertPath(path);\n let start = 0;\n let end = -1;\n let index = path.length;\n /** @type {boolean | undefined} */\n let seenNonSlash;\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1;\n break;\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true;\n end = index + 1;\n }\n }\n return end < 0 ? '' : path.slice(start, end);\n }\n if (ext === path) {\n return '';\n }\n let firstNonSlashEnd = -1;\n let extIndex = ext.length - 1;\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true;\n firstNonSlashEnd = index + 1;\n }\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end) {\n end = firstNonSlashEnd;\n } else if (end < 0) {\n end = path.length;\n }\n return path.slice(start, end);\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\nfunction dirname(path) {\n assertPath(path);\n if (path.length === 0) {\n return '.';\n }\n let end = -1;\n let index = path.length;\n /** @type {boolean | undefined} */\n let unmatchedSlash;\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index;\n break;\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true;\n }\n }\n return end < 0 ? path.charCodeAt(0) === 47 /* `/` */ ? '/' : '.' : end === 1 && path.charCodeAt(0) === 47 /* `/` */ ? '//' : path.slice(0, end);\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * Extname.\n */\nfunction extname(path) {\n assertPath(path);\n let index = path.length;\n let end = -1;\n let startPart = 0;\n let startDot = -1;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0;\n /** @type {boolean | undefined} */\n let unmatchedSlash;\n while (index--) {\n const code = path.charCodeAt(index);\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1;\n break;\n }\n continue;\n }\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true;\n end = index + 1;\n }\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index;\n } else if (preDotState !== 1) {\n preDotState = 1;\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1;\n }\n }\n if (startDot < 0 || end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array} segments\n * Path segments.\n * @returns {string}\n * File path.\n */\nfunction join() {\n let index = -1;\n /** @type {string | undefined} */\n let joined;\n for (var _len = arguments.length, segments = new Array(_len), _key = 0; _key < _len; _key++) {\n segments[_key] = arguments[_key];\n }\n while (++index < segments.length) {\n assertPath(segments[index]);\n if (segments[index]) {\n joined = joined === undefined ? segments[index] : joined + '/' + segments[index];\n }\n }\n return joined === undefined ? '.' : normalize(joined);\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n * File path.\n * @returns {string}\n * File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n assertPath(path);\n const absolute = path.charCodeAt(0) === 47; /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute);\n if (value.length === 0 && !absolute) {\n value = '.';\n }\n if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/';\n }\n return absolute ? '/' + value : value;\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * File path.\n * @param {boolean} allowAboveRoot\n * Whether `..` can move above root.\n * @returns {string}\n * File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = '';\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let index = -1;\n /** @type {number | undefined} */\n let code;\n /** @type {number} */\n let lastSlashIndex;\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index);\n } else if (code === 47 /* `/` */) {\n break;\n } else {\n code = 47; /* `/` */\n }\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (result.length < 2 || lastSegmentLength !== 2 || result.charCodeAt(result.length - 1) !== 46 /* `.` */ || result.charCodeAt(result.length - 2) !== 46 /* `.` */) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/');\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = '';\n lastSegmentLength = 0;\n } else {\n result = result.slice(0, lastSlashIndex);\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/');\n }\n lastSlash = index;\n dots = 0;\n continue;\n }\n } else if (result.length > 0) {\n result = '';\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..';\n lastSegmentLength = 2;\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index);\n } else {\n result = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++;\n } else {\n dots = -1;\n }\n }\n return result;\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n * File path.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n/* eslint-enable max-depth, complexity */","// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {\n cwd\n};\nfunction cwd() {\n return '/';\n}","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * Check if `fileUrlOrPath` looks like a URL.\n *\n * @param {unknown} fileUrlOrPath\n * File path or URL.\n * @returns {fileUrlOrPath is URL}\n * Whether it’s a URL.\n */\n// From: \nexport function isUrl(fileUrlOrPath) {\n return fileUrlOrPath !== null && typeof fileUrlOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileUrlOrPath.href &&\n // @ts-expect-error: indexable.\n fileUrlOrPath.origin;\n}","/// \n\nimport { isUrl } from './minurl.shared.js';\n\n// See: \n\n/**\n * @param {string | URL} path\n * File URL.\n * @returns {string}\n * File URL.\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path);\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The \"path\" argument must be of type string or an instance of URL. Received `' + path + '`');\n error.code = 'ERR_INVALID_ARG_TYPE';\n throw error;\n }\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file');\n error.code = 'ERR_INVALID_URL_SCHEME';\n throw error;\n }\n return getPathFromURLPosix(path);\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n * URL.\n * @returns {string}\n * File path.\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('File URL host must be \"localhost\" or empty on darwin');\n error.code = 'ERR_INVALID_FILE_URL_HOST';\n throw error;\n }\n const pathname = url.pathname;\n let index = -1;\n while (++index < pathname.length) {\n if (pathname.charCodeAt(index) === 37 /* `%` */ && pathname.charCodeAt(index + 1) === 50 /* `2` */) {\n const third = pathname.charCodeAt(index + 2);\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('File URL path must not include encoded / characters');\n error.code = 'ERR_INVALID_FILE_URL_PATH';\n throw error;\n }\n }\n }\n return decodeURIComponent(pathname);\n}\nexport { isUrl } from './minurl.shared.js';","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n */\n\n/**\n * @typedef {Record & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef {'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n *\n * This is a copy of the types from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: \n *\n * @typedef {Options | URL | Value | VFile} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * Set multiple values.\n * @property {Value | null | undefined} [value]\n * Set `value`.\n * @property {string | null | undefined} [cwd]\n * Set `cwd`.\n * @property {Array | null | undefined} [history]\n * Set `history`.\n * @property {URL | string | null | undefined} [path]\n * Set `path`.\n * @property {string | null | undefined} [basename]\n * Set `basename`.\n * @property {string | null | undefined} [stem]\n * Set `stem`.\n * @property {string | null | undefined} [extname]\n * Set `extname`.\n * @property {string | null | undefined} [dirname]\n * Set `dirname`.\n * @property {Data | null | undefined} [data]\n * Set `data`.\n *\n * @typedef Map\n * Raw source map.\n *\n * See:\n * .\n * @property {number} version\n * Which version of the source map spec this map is following.\n * @property {Array} sources\n * An array of URLs to the original source files.\n * @property {Array} names\n * An array of identifiers which can be referenced by individual mappings.\n * @property {string | undefined} [sourceRoot]\n * The URL root from which all sources are relative.\n * @property {Array | undefined} [sourcesContent]\n * An array of contents of the original source files.\n * @property {string} mappings\n * A string of base64 VLQs which contain the actual mappings.\n * @property {string} file\n * The generated file this source map is associated with.\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration.\n *\n * A bunch of keys that will be shallow copied over to the new file.\n *\n * @typedef {Record} ReporterSettings\n * Configuration for reporters.\n */\n\n/**\n * @template {ReporterSettings} Settings\n * Options type.\n * @callback Reporter\n * Type for a reporter.\n * @param {Array} files\n * Files to report.\n * @param {Settings} options\n * Configuration.\n * @returns {string}\n * Report.\n */\n\nimport bufferLike from 'is-buffer';\nimport { VFileMessage } from 'vfile-message';\nimport { path } from './minpath.js';\nimport { proc } from './minproc.js';\nimport { urlToPath, isUrl } from './minurl.js';\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n *\n * @type {Array<'basename' | 'dirname' | 'extname' | 'history' | 'path' | 'stem'>}\n */\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'];\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * `options` is treated as:\n *\n * * `string` or `Buffer` — `{value: options}`\n * * `URL` — `{path: options}`\n * * `VFile` — shallow copies its data over to the new file\n * * `object` — all fields are shallow copied over to the new file\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * You cannot set `dirname` or `extname` without setting either `history`,\n * `path`, `basename`, or `stem` too.\n *\n * @param {Compatible | null | undefined} [value]\n * File value.\n * @returns\n * New instance.\n */\n constructor(value) {\n /** @type {Options | VFile} */\n let options;\n if (!value) {\n options = {};\n } else if (typeof value === 'string' || buffer(value)) {\n options = {\n value\n };\n } else if (isUrl(value)) {\n options = {\n path: value\n };\n } else {\n options = value;\n }\n\n /**\n * Place to store custom information (default: `{}`).\n *\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n *\n * @type {Data}\n */\n this.data = {};\n\n /**\n * List of messages associated with the file.\n *\n * @type {Array}\n */\n this.messages = [];\n\n /**\n * List of filepaths the file moved between.\n *\n * The first is the original path and the last is the current path.\n *\n * @type {Array}\n */\n this.history = [];\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n *\n * @type {string}\n */\n this.cwd = proc.cwd();\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n *\n * @type {Value}\n */\n this.value;\n\n // The below are non-standard, they are “well-known”.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n *\n * This is used by vfile reporters.\n *\n * @type {boolean}\n */\n this.stored;\n\n /**\n * Custom, non-string, compiled, representation.\n *\n * This is used by unified to store non-string results.\n * One example is when turning markdown into React nodes.\n *\n * @type {unknown}\n */\n this.result;\n\n /**\n * Source map.\n *\n * This type is equivalent to the `RawSourceMap` type from the `source-map`\n * module.\n *\n * @type {Map | null | undefined}\n */\n this.map;\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1;\n while (++index < order.length) {\n const prop = order[index];\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined && options[prop] !== null) {\n // @ts-expect-error: TS doesn’t understand basic reality.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop];\n }\n }\n\n /** @type {string} */\n let prop;\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) {\n // @ts-expect-error: fine to set other things.\n this[prop] = options[prop];\n }\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n *\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1];\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n *\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n *\n * @param {string | URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path);\n }\n assertNonEmpty(path, 'path');\n if (this.path !== path) {\n this.history.push(path);\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n }\n\n /**\n * Set the parent path (example: `'~'`).\n *\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname');\n this.path = path.join(dirname || '', this.basename);\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename');\n assertPart(basename, 'basename');\n this.path = path.join(this.dirname || '', basename);\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname');\n assertPath(this.dirname, 'extname');\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`');\n }\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots');\n }\n }\n this.path = path.join(this.dirname, this.stem + (extname || ''));\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n *\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem');\n assertPart(stem, 'stem');\n this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding | null | undefined} [encoding='utf8']\n * Character encoding to understand `value` as when it’s a `Buffer`\n * (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding || undefined);\n }\n\n /**\n * Create a warning message associated with the file.\n *\n * Its `fatal` is set to `false` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin);\n if (this.path) {\n message.name = this.path + ':' + message.name;\n message.file = this.path;\n }\n message.fatal = false;\n this.messages.push(message);\n return message;\n }\n\n /**\n * Create an info message associated with the file.\n *\n * Its `fatal` is set to `null` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin);\n message.fatal = null;\n return message;\n }\n\n /**\n * Create a fatal error associated with the file.\n *\n * Its `fatal` is set to `true` and `file` is set to the current file path.\n * Its added to `file.messages`.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string | Error | VFileMessage} reason\n * Reason for message, uses the stack and message of the error if given.\n * @param {Node | NodeLike | Position | Point | null | undefined} [place]\n * Place in file where the message occurred.\n * @param {string | null | undefined} [origin]\n * Place in code where the message originates (example:\n * `'my-package:my-rule'` or `'my-rule'`).\n * @returns {never}\n * Message.\n * @throws {VFileMessage}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin);\n message.fatal = true;\n throw message;\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n * File path part.\n * @param {string} name\n * Part name.\n * @returns {void}\n * Nothing.\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n * Thing.\n * @param {string} name\n * Part name.\n * @returns {asserts part is string}\n * Nothing.\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty');\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n * Path.\n * @param {string} name\n * Dependency name.\n * @returns {asserts path is string}\n * Nothing.\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too');\n }\n}\n\n/**\n * Assert `value` is a buffer.\n *\n * @param {unknown} value\n * thing.\n * @returns {value is Buffer}\n * Whether `value` is a Node.js buffer.\n */\nfunction buffer(value) {\n return bufferLike(value);\n}","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error;\n }\n}","export default function isPlainObject(value) {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}","// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array) => void} Callback\n * Callback.\n *\n * @typedef {(...input: Array) => any} Middleware\n * Ware.\n *\n * @typedef Pipeline\n * Pipeline.\n * @property {Run} run\n * Run the pipeline.\n * @property {Use} use\n * Add middleware.\n *\n * @typedef {(...input: Array) => void} Run\n * Call all middleware.\n *\n * Calls `done` on completion with either an error or the output of the\n * last middleware.\n *\n * > 👉 **Note**: as the length of input defines whether async functions get a\n * > `next` function,\n * > it’s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n * Pipeline.\n */\nexport function trough() {\n /** @type {Array} */\n const fns = [];\n /** @type {Pipeline} */\n const pipeline = {\n run,\n use\n };\n return pipeline;\n\n /** @type {Run} */\n function run() {\n for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n let middlewareIndex = -1;\n /** @type {Callback} */\n const callback = values.pop();\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback);\n }\n next(null, ...values);\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error | null | undefined} error\n * @param {Array} output\n */\n function next(error) {\n const fn = fns[++middlewareIndex];\n let index = -1;\n if (error) {\n callback(error);\n return;\n }\n\n // Copy non-nullish input into values.\n for (var _len2 = arguments.length, output = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n output[_key2 - 1] = arguments[_key2];\n }\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index];\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output;\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output);\n } else {\n callback(null, ...output);\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError('Expected `middelware` to be a function, not ' + middelware);\n }\n fns.push(middelware);\n return pipeline;\n }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n * returns a promise that is rejected,\n * or calls the given `done` function with an error,\n * `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n * that value is the main output value\n * * if `middleware` calls `done`,\n * all non-nullish values except for the first one (the error) overwrite the\n * output values\n *\n * @param {Middleware} middleware\n * Function to wrap.\n * @param {Callback} callback\n * Callback called with the output of `middleware`.\n * @returns {Run}\n * Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called;\n return wrapped;\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array} parameters\n * @returns {void}\n */\n function wrapped() {\n for (var _len3 = arguments.length, parameters = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n parameters[_key3] = arguments[_key3];\n }\n const fnExpectsCallback = middleware.length > parameters.length;\n /** @type {any} */\n let result;\n if (fnExpectsCallback) {\n parameters.push(done);\n }\n try {\n result = middleware.apply(this, parameters);\n } catch (error) {\n const exception = /** @type {Error} */error;\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception;\n }\n return done(exception);\n }\n if (!fnExpectsCallback) {\n if (result && result.then && typeof result.then === 'function') {\n result.then(then, done);\n } else if (result instanceof Error) {\n done(result);\n } else {\n then(result);\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n *\n * @type {Callback}\n */\n function done(error) {\n if (!called) {\n called = true;\n for (var _len4 = arguments.length, output = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n output[_key4 - 1] = arguments[_key4];\n }\n callback(error, ...output);\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value);\n }\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport { bail } from 'bail';\nimport isBuffer from 'is-buffer';\nimport extend from 'extend';\nimport isPlainObj from 'is-plain-obj';\nimport { trough } from 'trough';\nimport { VFile } from 'vfile';\n\n// Expose a frozen processor.\nexport const unified = base().freeze();\nconst own = {}.hasOwnProperty;\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough();\n /** @type {Processor['attachers']} */\n const attachers = [];\n /** @type {Record} */\n let namespace = {};\n /** @type {boolean|undefined} */\n let frozen;\n let freezeIndex = -1;\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data;\n processor.Parser = undefined;\n processor.Compiler = undefined;\n\n // Lock.\n processor.freeze = freeze;\n\n // Plugins.\n processor.attachers = attachers;\n // @ts-expect-error: overloads are handled.\n processor.use = use;\n\n // API.\n processor.parse = parse;\n processor.stringify = stringify;\n // @ts-expect-error: overloads are handled.\n processor.run = run;\n processor.runSync = runSync;\n // @ts-expect-error: overloads are handled.\n processor.process = process;\n processor.processSync = processSync;\n\n // Expose.\n return processor;\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base();\n let index = -1;\n while (++index < attachers.length) {\n destination.use(...attachers[index]);\n }\n destination.data(extend(true, {}, namespace));\n return destination;\n }\n\n /**\n * @param {string|Record} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen);\n namespace[key] = value;\n return processor;\n }\n\n // Get `key`.\n return own.call(namespace, key) && namespace[key] || null;\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen);\n namespace = key;\n return processor;\n }\n\n // Get space.\n return namespace;\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor;\n }\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex];\n if (options[0] === false) {\n continue;\n }\n if (options[0] === true) {\n options[0] = undefined;\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options);\n if (typeof transformer === 'function') {\n transformers.use(transformer);\n }\n }\n frozen = true;\n freezeIndex = Number.POSITIVE_INFINITY;\n return processor;\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value) {\n for (var _len = arguments.length, options = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n options[_key - 1] = arguments[_key];\n }\n /** @type {Record|undefined} */\n let settings;\n assertUnfrozen('use', frozen);\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options);\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value);\n } else {\n addPreset(value);\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`');\n }\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings);\n }\n return processor;\n\n /**\n * @param {import('..').Pluggable} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value);\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value;\n addPlugin(plugin, ...options);\n } else {\n addPreset(value);\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`');\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins);\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings);\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1;\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index];\n add(thing);\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`');\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1;\n /** @type {Processor['attachers'][number]|undefined} */\n let entry;\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index];\n break;\n }\n }\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value);\n }\n entry[1] = value;\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments]);\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze();\n const file = vfile(doc);\n const Parser = processor.Parser;\n assertParser('parse', Parser);\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse();\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file); // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze();\n const file = vfile(doc);\n const Compiler = processor.Compiler;\n assertCompiler('stringify', Compiler);\n assertNode(node);\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile();\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file); // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise|void}\n */\n function run(node, doc, callback) {\n assertNode(node);\n processor.freeze();\n if (!callback && typeof doc === 'function') {\n callback = doc;\n doc = undefined;\n }\n if (!callback) {\n return new Promise(executor);\n }\n executor(null, callback);\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done);\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node;\n if (error) {\n reject(error);\n } else if (resolve) {\n resolve(tree);\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file);\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result;\n /** @type {boolean|undefined} */\n let complete;\n processor.run(node, file, done);\n assertDone('runSync', 'run', complete);\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result;\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error);\n result = tree;\n complete = true;\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise|undefined}\n */\n function process(doc, callback) {\n processor.freeze();\n assertParser('process', processor.Parser);\n assertCompiler('process', processor.Compiler);\n if (!callback) {\n return new Promise(executor);\n }\n executor(null, callback);\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc);\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error);\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file);\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result;\n } else {\n file.result = result;\n }\n done(error, file);\n }\n });\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error);\n } else if (resolve) {\n resolve(file);\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file);\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete;\n processor.freeze();\n assertParser('processSync', processor.Parser);\n assertCompiler('processSync', processor.Compiler);\n const file = vfile(doc);\n processor.process(file, done);\n assertDone('processSync', 'process', complete);\n return file;\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true;\n bail(error);\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype && (\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n keys(value.prototype) || name in value.prototype);\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key;\n for (key in value) {\n if (own.call(value, key)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`');\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`');\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error('Cannot call `' + name + '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.');\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`');\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error('`' + name + '` finished async. Use `' + asyncName + '` instead');\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value);\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(value && typeof value === 'object' && 'message' in value && 'messages' in value);\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value);\n}","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n * Whether to use `alt` for `image`s.\n * @property {boolean | null | undefined} [includeHtml=true]\n * Whether to use `value` of HTML.\n */\n\n/** @type {Options} */\nconst emptyOptions = {};\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} value\n * Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {string}\n * Serialized `value`.\n */\nexport function toString(value, options) {\n const settings = options || emptyOptions;\n const includeImageAlt = typeof settings.includeImageAlt === 'boolean' ? settings.includeImageAlt : true;\n const includeHtml = typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true;\n return one(value, includeImageAlt, includeHtml);\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n if (node(value)) {\n if ('value' in value) {\n return value.type === 'html' && !includeHtml ? '' : value.value;\n }\n if (includeImageAlt && 'alt' in value && value.alt) {\n return value.alt;\n }\n if ('children' in value) {\n return all(value.children, includeImageAlt, includeHtml);\n }\n }\n if (Array.isArray(value)) {\n return all(value, includeImageAlt, includeHtml);\n }\n return '';\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array} values\n * Thing to serialize.\n * @param {boolean} includeImageAlt\n * Include image `alt`s.\n * @param {boolean} includeHtml\n * Include HTML.\n * @returns {string}\n * Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n /** @type {Array} */\n const result = [];\n let index = -1;\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt, includeHtml);\n }\n return result.join('');\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n * Thing.\n * @returns {value is Node}\n * Whether `value` is a node.\n */\nfunction node(value) {\n return Boolean(value && typeof value === 'object');\n}","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {number} start\n * Index to remove/insert at (can be negative).\n * @param {number} remove\n * Number of items to remove.\n * @param {Array} items\n * Items to inject into `list`.\n * @returns {void}\n * Nothing.\n */\nexport function splice(list, start, remove, items) {\n const end = list.length;\n let chunkStart = 0;\n /** @type {Array} */\n let parameters;\n\n // Make start between zero and `end` (included).\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0;\n\n // No need to chunk the items if there’s only a couple (10k) items.\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) list.splice(start, remove);\n\n // Insert the items in chunks to not cause stack overflows.\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n // @ts-expect-error Hush, it’s fine.\n list.splice(...parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * Item type.\n * @param {Array} list\n * List to operate on.\n * @param {Array} items\n * Items to add to `list`.\n * @returns {Array}\n * Either `list` or `items`.\n */\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items);\n return list;\n }\n return items;\n}","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Handles} Handles\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n */\n\nimport { splice } from 'micromark-util-chunked';\nconst hasOwnProperty = {}.hasOwnProperty;\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {Array} extensions\n * List of syntax extensions.\n * @returns {NormalizedExtension}\n * A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {};\n let index = -1;\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index]);\n }\n return all;\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n * Extension to merge into.\n * @param {Extension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {keyof Extension} */\n let hook;\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined;\n /** @type {Record} */\n const left = maybe || (all[hook] = {});\n /** @type {Record | undefined} */\n const right = extension[hook];\n /** @type {string} */\n let code;\n if (right) {\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = [];\n const value = right[code];\n constructs(\n // @ts-expect-error Looks like a list.\n left[code], Array.isArray(value) ? value : value ? [value] : []);\n }\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array} existing\n * @param {Array} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1;\n /** @type {Array} */\n const before = [];\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;\n (list[index].add === 'after' ? existing : before).push(list[index]);\n }\n splice(existing, 0, 0, before);\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {Array} htmlExtensions\n * List of HTML extensions.\n * @returns {HtmlExtension}\n * A single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {};\n let index = -1;\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index]);\n }\n return handlers;\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n * Extension to merge into.\n * @param {HtmlExtension} extension\n * Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {keyof HtmlExtension} */\n let hook;\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined;\n const left = maybe || (all[hook] = {});\n const right = extension[hook];\n /** @type {keyof Handles} */\n let type;\n if (right) {\n for (type in right) {\n // @ts-expect-error assume document vs regular handler are managed correctly.\n left[type] = right[type];\n }\n }\n }\n}","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\n\n/**\n * Regular expression that matches a unicode punctuation character.\n */\nexport const unicodePunctuationRegex = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport { unicodePunctuationRegex } from './lib/unicode-punctuation-regex.js';\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => boolean}\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code));\n }\n}","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTab`, `spaceOrTabMinMax`, `spaceOrTabWithOptions`.\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * spaces in markdown are often optional, in which case this factory can be\n * used and `ok` will be switched to whether spaces were found or not\n * * one line ending or space can be detected with `markdownSpace(code)` right\n * before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `␉` represents a tab (plus how much it expands) and `␠` represents a\n * single space.\n *\n * ```markdown\n * ␉\n * ␠␠␠␠\n * ␉␠\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {TokenType} type\n * Type (`' \\t'`).\n * @param {number | undefined} [max=Infinity]\n * Max (exclusive).\n * @returns\n * Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n\n /** @type {State} */\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n /** @type {Token} */\n let previous;\n return contentStart;\n\n /** @type {State} */\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, contentStart, 'linePrefix');\n }\n\n /** @type {State} */\n function paragraphInitial(code) {\n effects.enter('paragraph');\n return lineStart(code);\n }\n\n /** @type {State} */\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n\n /** @type {State} */\n function data(code) {\n if (code === null) {\n effects.exit('chunkText');\n effects.exit('paragraph');\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit('chunkText');\n return lineStart;\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {InitialConstruct} */\nexport const document = {\n tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeDocument(effects) {\n const self = this;\n /** @type {Array} */\n const stack = [];\n let continued = 0;\n /** @type {TokenizeContext | undefined} */\n let childFlow;\n /** @type {Token | undefined} */\n let childToken;\n /** @type {number} */\n let lineStartOffset;\n return start;\n\n /** @type {State} */\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued];\n self.containerState = item[1];\n return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n }\n\n // Done.\n return checkNewContainers(code);\n }\n\n /** @type {State} */\n function documentContinue(code) {\n continued++;\n\n // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined;\n if (childFlow) {\n closeFlow();\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {Point | undefined} */\n let point;\n\n // Find the flow chunk.\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === 'chunkFlow') {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n let index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point);\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n return checkNewContainers(code);\n }\n return start(code);\n }\n\n /** @type {State} */\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code);\n }\n\n // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce” into them, so we can immediately\n // start.\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code);\n }\n\n // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n // needed in micromark-extension-gfm-table@1.0.6).\n self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n }\n\n // Check if there is a new container.\n self.containerState = {};\n return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n }\n\n /** @type {State} */\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow();\n exitContainers(continued);\n return documentContinued(code);\n }\n\n /** @type {State} */\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length;\n lineStartOffset = self.now().offset;\n return flowStart(code);\n }\n\n /** @type {State} */\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n\n /** @type {State} */\n function containerContinue(code) {\n continued++;\n stack.push([self.currentConstruct, self.containerState]);\n // Try another.\n return documentContinued(code);\n }\n\n /** @type {State} */\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow();\n exitContainers(0);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n });\n return flowContinue(code);\n }\n\n /** @type {State} */\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true);\n exitContainers(0);\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n writeToChild(effects.exit('chunkFlow'));\n // Get ready for the next line.\n continued = 0;\n self.interrupt = undefined;\n return start;\n }\n effects.consume(code);\n return flowContinue;\n }\n\n /**\n * @param {Token} token\n * @param {boolean | undefined} [eof]\n * @returns {void}\n */\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token);\n if (eof) stream.push(null);\n token.previous = childToken;\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.defineSkip(token.start);\n childFlow.write(stream);\n\n // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake” it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes” the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length;\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && (\n // …and either is not ended yet…\n !childFlow.events[index][1].end ||\n // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return;\n }\n }\n\n // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n const indexBeforeExits = self.events.length;\n let indexBeforeFlow = indexBeforeExits;\n /** @type {boolean | undefined} */\n let seen;\n /** @type {Point | undefined} */\n let point;\n\n // Find the previous chunk (the one before the lazy line).\n while (indexBeforeFlow--) {\n if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === 'chunkFlow') {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end;\n break;\n }\n seen = true;\n }\n }\n exitContainers(continued);\n\n // Fix positions.\n index = indexBeforeExits;\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point);\n index++;\n }\n\n // Inject the exits earlier (they’re still also at the end).\n splice(self.events, indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n\n // Discard the duplicate exits.\n self.events.length = index;\n }\n }\n\n /**\n * @param {number} size\n * @returns {void}\n */\n function exitContainers(size) {\n let index = stack.length;\n\n // Exit open containers.\n while (index-- > size) {\n const entry = stack[index];\n self.containerState = entry[1];\n entry[0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function closeFlow() {\n childFlow.write([null]);\n childToken = undefined;\n childFlow = undefined;\n self.containerState._closeFlow = undefined;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContainer(effects, ok, nok) {\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), 'linePrefix', this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n return start;\n\n /**\n * Start of blank line.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n return markdownSpace(code) ? factorySpace(effects, after, 'linePrefix')(code) : after(code);\n }\n\n /**\n * At eof/eol, after optional whitespace.\n *\n * > 👉 **Note**: `␠` represents a space character.\n *\n * ```markdown\n * > | ␠␠␊\n * ^\n * > | ␊\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n */\n\nimport { splice } from 'micromark-util-chunked';\n/**\n * Tokenize subcontent.\n *\n * @param {Array} events\n * List of events.\n * @returns {boolean}\n * Whether subtokens were found.\n */\nexport function subtokenize(events) {\n /** @type {Record} */\n const jumps = {};\n let index = -1;\n /** @type {Event} */\n let event;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number} */\n let otherIndex;\n /** @type {Event} */\n let otherEvent;\n /** @type {Array} */\n let parameters;\n /** @type {Array} */\n let subevents;\n /** @type {boolean | undefined} */\n let more;\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events[index];\n\n // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n if (index && event[1].type === 'chunkFlow' && events[index - 1][1].type === 'listItemPrefix') {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === 'lineEndingBlank') {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === 'content') {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break;\n }\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n }\n\n // Enter.\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n }\n // Exit.\n else if (event[1]._container) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events[otherIndex];\n if (otherEvent[1].type === 'lineEnding' || otherEvent[1].type === 'lineEndingBlank') {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank';\n }\n otherEvent[1].type = 'lineEnding';\n lineIndex = otherIndex;\n }\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start);\n\n // Switch container exit w/ line endings.\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n splice(events, lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {Array} events\n * @param {number} eventIndex\n * @returns {Record}\n */\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1];\n const context = events[eventIndex][2];\n let startPosition = eventIndex - 1;\n /** @type {Array} */\n const startPositions = [];\n const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);\n const childEvents = tokenizer.events;\n /** @type {Array<[number, number]>} */\n const jumps = [];\n /** @type {Record} */\n const gaps = {};\n /** @type {Array} */\n let stream;\n /** @type {Token | undefined} */\n let previous;\n let index = -1;\n /** @type {Token | undefined} */\n let current = token;\n let adjust = 0;\n let start = 0;\n const breaks = [start];\n\n // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!current._tokenizer) {\n stream = context.sliceStream(current);\n if (!current.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(current.start);\n }\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n }\n\n // Unravel the next token.\n previous = current;\n current = current.next;\n }\n\n // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n current = token;\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n start = index + 1;\n breaks.push(start);\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n current = current.next;\n }\n }\n\n // Help GC.\n tokenizer.events = [];\n\n // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n if (current) {\n // Help GC.\n current._tokenizer = undefined;\n current.previous = undefined;\n } else {\n breaks.pop();\n }\n\n // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n index = breaks.length;\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n const start = startPositions.pop();\n jumps.unshift([start, start + slice.length - 1]);\n splice(events, start, 2, slice);\n }\n index = -1;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n};\n\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n /** @type {Token | undefined} */\n let previous;\n return chunkStart;\n\n /**\n * Before a content chunk.\n *\n * ```markdown\n * > | abc\n * ^\n * ```\n *\n * @type {State}\n */\n function chunkStart(code) {\n effects.enter('content');\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n });\n return chunkInside(code);\n }\n\n /**\n * In a content chunk.\n *\n * ```markdown\n * > | abc\n * ^^^\n * ```\n *\n * @type {State}\n */\n function chunkInside(code) {\n if (code === null) {\n return contentEnd(code);\n }\n\n // To do: in `markdown-rs`, each line is parsed on its own, and everything\n // is stitched together resolving.\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n }\n\n // Data.\n effects.consume(code);\n return chunkInside;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentEnd(code) {\n effects.exit('chunkContent');\n effects.exit('content');\n return ok(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function contentContinue(code) {\n effects.consume(code);\n effects.exit('chunkContent');\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n });\n previous = previous.next;\n return chunkInside;\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this;\n return startLookahead;\n\n /**\n *\n *\n * @type {State}\n */\n function startLookahead(code) {\n effects.exit('chunkContent');\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, prefixed, 'linePrefix');\n }\n\n /**\n *\n *\n * @type {State}\n */\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n\n // Always populated by defaults.\n\n const tail = self.events[self.events.length - 1];\n if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === 'linePrefix' && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n return ok(code);\n }\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\nfunction initializeFlow(effects) {\n const self = this;\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), 'linePrefix')));\n return initial;\n\n /** @type {State} */\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('lineEndingBlank');\n effects.consume(code);\n effects.exit('lineEndingBlank');\n self.currentConstruct = undefined;\n return initial;\n }\n\n /** @type {State} */\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n self.currentConstruct = undefined;\n return initial;\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\nexport const resolver = {\n resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n * @returns {InitialConstruct}\n */\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined)\n };\n\n /**\n * @this {TokenizeContext}\n * @type {Initializer}\n */\n function initializeText(effects) {\n const self = this;\n const constructs = this.parser.constructs[field];\n const text = effects.attempt(constructs, start, notText);\n return start;\n\n /** @type {State} */\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n\n /** @type {State} */\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('data');\n effects.consume(code);\n return data;\n }\n\n /** @type {State} */\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data');\n return text(code);\n }\n\n // Data.\n effects.consume(code);\n return data;\n }\n\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n function atBreak(code) {\n if (code === null) {\n return true;\n }\n const list = constructs[code];\n let index = -1;\n if (list) {\n // Always populated by defaults.\n\n while (++index < list.length) {\n const item = list[index];\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n return false;\n }\n }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n * @returns {Resolver}\n */\nfunction createResolver(extraResolver) {\n return resolveAllText;\n\n /** @type {Resolver} */\n function resolveAllText(events, context) {\n let index = -1;\n /** @type {number | undefined} */\n let enter;\n\n // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0; // Skip first.\n\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === 'lineEnding') && events[eventIndex - 1][1].type === 'data') {\n const data = events[eventIndex - 1][1];\n const chunks = context.sliceStream(data);\n let index = chunks.length;\n let bufferIndex = -1;\n let size = 0;\n /** @type {boolean | undefined} */\n let tabs;\n while (index--) {\n const chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n }\n // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n if (size) {\n const token = {\n type: eventIndex === events.length || tabs || size < 2 ? 'lineSuffix' : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n };\n data.end = Object.assign({}, token.start);\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}","/**\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {Array<{resolveAll?: Resolver | undefined}>} constructs\n * List of constructs, optionally with `resolveAll`s.\n * @param {Array} events\n * List of events.\n * @param {TokenizeContext} context\n * Context used by `tokenize`.\n * @returns {Array}\n * Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Array} */\n const called = [];\n let index = -1;\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll;\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context);\n called.push(resolve);\n }\n }\n return events;\n}","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenType} TokenType\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n */\n\n/**\n * @callback Restore\n * @returns {void}\n *\n * @typedef Info\n * @property {Restore} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit | undefined} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(from ? Object.assign({}, from) : {\n line: 1,\n column: 1,\n offset: 0\n }, {\n _index: 0,\n _bufferIndex: -1\n });\n /** @type {Record} */\n const columnStart = {};\n /** @type {Array} */\n const resolveAllConstructs = [];\n /** @type {Array} */\n let chunks = [];\n /** @type {Array} */\n let stack = [];\n /** @type {boolean | undefined} */\n let consumed = true;\n\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n };\n\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n };\n\n /**\n * The state function.\n *\n * @type {State | void}\n */\n let state = initialize.tokenize.call(context, effects);\n\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n let expectedCode;\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n }\n return context;\n\n /** @type {TokenizeContext['write']} */\n function write(slice) {\n chunks = push(chunks, slice);\n main();\n\n // Exit if we’re not done, resolve might change stuff.\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0);\n\n // Otherwise, resolve, and exit.\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n }\n\n //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs);\n }\n\n /** @type {TokenizeContext['sliceStream']} */\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n\n /** @type {TokenizeContext['now']} */\n function now() {\n // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n const {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n } = point;\n return {\n line,\n column,\n offset,\n _index,\n _bufferIndex\n };\n }\n\n /** @type {TokenizeContext['defineSkip']} */\n function defineSkip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n }\n\n //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n function main() {\n /** @type {number} */\n let chunkIndex;\n while (point._index < chunks.length) {\n const chunk = chunks[point._index];\n\n // If we’re in a buffer chunk, loop through it.\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n }\n\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n function go(code) {\n consumed = undefined;\n expectedCode = code;\n state = state(code);\n }\n\n /** @type {Effects['consume']} */\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n }\n\n // Not in a string chunk.\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++;\n\n // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n }\n\n // Expose the previous character.\n context.previous = code;\n\n // Mark as consumed.\n consumed = true;\n }\n\n /** @type {Effects['enter']} */\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n }\n\n /** @type {Effects['exit']} */\n function exit(type) {\n const token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n }\n\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n }\n\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n function onsuccessfulcheck(_, info) {\n info.restore();\n }\n\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n */\n function constructFactory(onreturn, fields) {\n return hook;\n\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Array | Construct | ConstructRecord} constructs\n * @param {State} returnState\n * @param {State | undefined} [bogusState]\n * @returns {State}\n */\n function hook(constructs, returnState, bogusState) {\n /** @type {Array} */\n let listOfConstructs;\n /** @type {number} */\n let constructIndex;\n /** @type {Construct} */\n let currentConstruct;\n /** @type {Info} */\n let info;\n return Array.isArray(constructs) /* c8 ignore next 1 */ ? handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n // @ts-expect-error Looks like a construct.\n handleListOfConstructs([constructs]) : handleMapOfConstructs(constructs);\n\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n function handleMapOfConstructs(map) {\n return start;\n\n /** @type {State} */\n function start(code) {\n const def = code !== null && map[code];\n const all = code !== null && map.null;\n const list = [\n // To do: add more extension tests.\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n return handleListOfConstructs(list)(code);\n }\n }\n\n /**\n * Handle a list of construct.\n *\n * @param {Array} list\n * @returns {State}\n */\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n if (list.length === 0) {\n return bogusState;\n }\n return handleConstruct(list[constructIndex]);\n }\n\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n function handleConstruct(construct) {\n return start;\n\n /** @type {State} */\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n\n // Always populated by defaults.\n\n if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n return nok(code);\n }\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live binding”, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n }\n }\n\n /** @type {State} */\n function ok(code) {\n consumed = true;\n onreturn(currentConstruct, info);\n return returnState;\n }\n\n /** @type {State} */\n function nok(code) {\n consumed = true;\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n\n /**\n * Store state.\n *\n * @returns {Info}\n */\n function store() {\n const startPoint = now();\n const startPrevious = context.previous;\n const startCurrentConstruct = context.currentConstruct;\n const startEventsIndex = context.events.length;\n const startStack = Array.from(stack);\n return {\n restore,\n from: startEventsIndex\n };\n\n /**\n * Restore state.\n *\n * @returns {void}\n */\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Array} chunks\n * @param {Pick} token\n * @returns {Array}\n */\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index;\n const startBufferIndex = token.start._bufferIndex;\n const endIndex = token.end._index;\n const endBufferIndex = token.end._bufferIndex;\n /** @type {Array} */\n let view;\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n const head = view[0];\n if (typeof head === 'string') {\n view[0] = head.slice(startBufferIndex);\n } else {\n view.shift();\n }\n }\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Array} chunks\n * @param {boolean | undefined} [expandTabs=false]\n * @returns {string}\n */\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1;\n /** @type {Array} */\n const result = [];\n /** @type {boolean | undefined} */\n let atTab;\n while (++index < chunks.length) {\n const chunk = chunks[index];\n /** @type {string} */\n let value;\n if (typeof chunk === 'string') {\n value = chunk;\n } else switch (chunk) {\n case -5:\n {\n value = '\\r';\n break;\n }\n case -4:\n {\n value = '\\n';\n break;\n }\n case -3:\n {\n value = '\\r' + '\\n';\n break;\n }\n case -2:\n {\n value = expandTabs ? ' ' : '\\t';\n break;\n }\n case -1:\n {\n if (!expandTabs && atTab) continue;\n value = ' ';\n break;\n }\n default:\n {\n // Currently only replacement character.\n value = String.fromCharCode(chunk);\n }\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of thematic break.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('thematicBreak');\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * After optional whitespace, at marker.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n marker = code;\n return atBreak(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence');\n return sequence(code);\n }\n if (size >= 3 && (code === null || markdownLineEnding(code))) {\n effects.exit('thematicBreak');\n return ok(code);\n }\n return nok(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * > | ***\n * ^\n * ```\n *\n * @type {State}\n */\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit('thematicBreakSequence');\n return markdownSpace(code) ? factorySpace(effects, atBreak, 'whitespace')(code) : atBreak(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').ContainerState} ContainerState\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this;\n const tail = self.events[self.events.length - 1];\n let initialSize = tail && tail[1].type === 'linePrefix' ? tail[2].sliceSerialize(tail[1], true).length : 0;\n let size = 0;\n return start;\n\n /** @type {State} */\n function start(code) {\n const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? 'listUnordered' : 'listOrdered');\n if (kind === 'listUnordered' ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix');\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix');\n effects.enter('listItemValue');\n return inside(code);\n }\n }\n return nok(code);\n }\n\n /** @type {State} */\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit('listItemValue');\n return atMarker(code);\n }\n return nok(code);\n }\n\n /**\n * @type {State}\n **/\n function atMarker(code) {\n effects.enter('listItemMarker');\n effects.consume(code);\n effects.exit('listItemMarker');\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(blankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n\n /** @type {State} */\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace');\n effects.consume(code);\n effects.exit('listItemPrefixWhitespace');\n return endOfPrefix;\n }\n return nok(code);\n }\n\n /** @type {State} */\n function endOfPrefix(code) {\n self.containerState.size = initialSize + self.sliceSerialize(effects.exit('listItemPrefix'), true).length;\n return ok(code);\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(blankLine, onBlank, notBlank);\n\n /** @type {State} */\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n // We have a blank line.\n // Still, try to consume at most the items size.\n return factorySpace(effects, ok, 'listItemIndent', self.containerState.size + 1)(code);\n }\n\n /** @type {State} */\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = undefined;\n self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n\n /** @type {State} */\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true;\n // As we’re closing flow, we’re no longer interrupting.\n self.interrupt = undefined;\n // Always populated by defaults.\n\n return factorySpace(effects, effects.attempt(list, ok, nok), 'linePrefix', self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this;\n return factorySpace(effects, afterPrefix, 'listItemIndent', self.containerState.size + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === 'listItemIndent' && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n }\n}\n\n/**\n * @type {Exiter}\n * @this {TokenizeContext}\n */\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\n\n/**\n * @type {Tokenizer}\n * @this {TokenizeContext}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this;\n\n // Always populated by defaults.\n\n return factorySpace(effects, afterPrefix, 'listItemPrefixWhitespace', self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n /** @type {State} */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return !markdownSpace(code) && tail && tail[1].type === 'listItemPrefixWhitespace' ? ok(code) : nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of block quote.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 62) {\n const state = self.containerState;\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n });\n state.open = true;\n }\n effects.enter('blockQuotePrefix');\n effects.enter('blockQuoteMarker');\n effects.consume(code);\n effects.exit('blockQuoteMarker');\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `>`, before optional whitespace.\n *\n * ```markdown\n * > | > a\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace');\n effects.consume(code);\n effects.exit('blockQuotePrefixWhitespace');\n effects.exit('blockQuotePrefix');\n return ok;\n }\n effects.exit('blockQuotePrefix');\n return ok(code);\n }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n const self = this;\n return contStart;\n\n /**\n * Start of block quote continuation.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contStart(code) {\n if (markdownSpace(code)) {\n // Always populated by defaults.\n\n return factorySpace(effects, contBefore, 'linePrefix', self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n }\n return contBefore(code);\n }\n\n /**\n * At `>`, after optional whitespace.\n *\n * Also used to parse the first block quote opening.\n *\n * ```markdown\n * | > a\n * > | > b\n * ^\n * ```\n *\n * @type {State}\n */\n function contBefore(code) {\n return effects.attempt(blockQuote, ok, nok)(code);\n }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n effects.exit('blockQuote');\n}","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * \n * b>\n * \n * \n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type for whole (`` or `b`).\n * @param {TokenType} literalType\n * Type when enclosed (``).\n * @param {TokenType} literalMarkerType\n * Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n * Type when not enclosed (`b`).\n * @param {TokenType} stringType\n * Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n * Depth of nested parens (inclusive).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n const limit = max || Number.POSITIVE_INFINITY;\n let balance = 0;\n return start;\n\n /**\n * Start of destination.\n *\n * ```markdown\n * > | \n * ^\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return enclosedBefore;\n }\n\n // ASCII control, space, closing paren.\n if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return raw(code);\n }\n\n /**\n * After `<`, at an enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return enclosed(code);\n }\n\n /**\n * In enclosed destination.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosed(code) {\n if (code === 62) {\n effects.exit('chunkString');\n effects.exit(stringType);\n return enclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? enclosedEscape : enclosed;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function enclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return enclosed;\n }\n return enclosed(code);\n }\n\n /**\n * In raw destination.\n *\n * ```markdown\n * > | aa\n * ^\n * ```\n *\n * @type {State}\n */\n function raw(code) {\n if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n effects.exit('chunkString');\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (balance < limit && code === 40) {\n effects.consume(code);\n balance++;\n return raw;\n }\n if (code === 41) {\n effects.consume(code);\n balance--;\n return raw;\n }\n\n // ASCII control (but *not* `\\0`) and space and `(`.\n // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n // doesn’t.\n if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? rawEscape : raw;\n }\n\n /**\n * After `\\`, at special character.\n *\n * ```markdown\n * > | a\\*a\n * ^\n * ```\n *\n * @type {State}\n */\n function rawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return raw;\n }\n return raw(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > 👉 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n * Tokenize context.\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n * Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n * Type for the identifier (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this;\n let size = 0;\n /** @type {boolean} */\n let seen;\n return start;\n\n /**\n * Start of label.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n\n /**\n * In label, at something, before something else.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n // To do: remove in the future once we’ve switched from\n // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n // which doesn’t need this.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n\n // To do: indent? Link chunks and EOLs together?\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return atBreak;\n }\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return labelInside(code);\n }\n\n /**\n * In label, in text.\n *\n * ```markdown\n * > | [a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelInside(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit('chunkString');\n return atBreak(code);\n }\n effects.consume(code);\n if (!seen) seen = !markdownSpace(code);\n return code === 92 ? labelEscape : labelInside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | [a\\*a]\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return labelInside;\n }\n return labelInside(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenType} TokenType\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n * b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @param {State} nok\n * State switched to when unsuccessful.\n * @param {TokenType} type\n * Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n * Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n * Type for the value (`a`).\n * @returns {State}\n * Start state.\n */ // eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of title.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (code === 34 || code === 39 || code === 40) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return begin;\n }\n return nok(code);\n }\n\n /**\n * After opening marker.\n *\n * This is also used at the closing marker.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function begin(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atBreak(code);\n }\n\n /**\n * At something, before something else.\n *\n * ```markdown\n * > | \"a\"\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return begin(marker);\n }\n if (code === null) {\n return nok(code);\n }\n\n // Note: blank lines can’t exist in content.\n if (markdownLineEnding(code)) {\n // To do: use `space_or_tab_eol_with_options`, connect.\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, atBreak, 'linePrefix');\n }\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return inside(code);\n }\n\n /**\n *\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString');\n return atBreak(code);\n }\n effects.consume(code);\n return code === 92 ? escape : inside;\n }\n\n /**\n * After `\\`, at a special character.\n *\n * ```markdown\n * > | \"a\\*b\"\n * ^\n * ```\n *\n * @type {State}\n */\n function escape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return inside;\n }\n return inside(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * * line endings or spaces in markdown are often optional, in which case this\n * factory can be used and `ok` will be switched to whether spaces were found\n * or not\n * * one line ending or space can be detected with\n * `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n * Context.\n * @param {State} ok\n * State switched to when successful.\n * @returns\n * Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen;\n return start;\n\n /** @type {State} */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? 'linePrefix' : 'lineSuffix')(code);\n }\n return ok(code);\n }\n}","/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered “uppercase”, such as U+03F4 (`ϴ`), but if their\n * lowercase counterpart (U+03B8 (`θ`)) is uppercased will result in a different\n * uppercase character (U+0398 (`Θ`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n * Identifier to normalize.\n * @returns {string}\n * Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n return value\n // Collapse markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ')\n // Trim.\n .replace(/^ | $/g, '')\n // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase().toUpperCase();\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n tokenize: tokenizeTitleBefore,\n partial: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this;\n /** @type {string} */\n let identifier;\n return start;\n\n /**\n * At start of a definition.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Do not interrupt paragraphs (but do follow definitions).\n // To do: do `interrupt` the way `markdown-rs` does.\n // To do: parse whitespace the way `markdown-rs` does.\n effects.enter('definition');\n return before(code);\n }\n\n /**\n * After optional whitespace, at `[`.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n // To do: parse whitespace the way `markdown-rs` does.\n\n return factoryLabel.call(self, effects, labelAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, 'definitionLabel', 'definitionLabelMarker', 'definitionLabelString')(code);\n }\n\n /**\n * After label.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter('definitionMarker');\n effects.consume(code);\n effects.exit('definitionMarker');\n return markerAfter;\n }\n return nok(code);\n }\n\n /**\n * After marker.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function markerAfter(code) {\n // Note: whitespace is optional.\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n }\n\n /**\n * Before destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationBefore(code) {\n return factoryDestination(effects, destinationAfter,\n // Note: we don’t need to reset the way `markdown-rs` does.\n nok, 'definitionDestination', 'definitionDestinationLiteral', 'definitionDestinationLiteralMarker', 'definitionDestinationRaw', 'definitionDestinationString')(code);\n }\n\n /**\n * After destination.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function destinationAfter(code) {\n return effects.attempt(titleBefore, after, after)(code);\n }\n\n /**\n * After definition.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return markdownSpace(code) ? factorySpace(effects, afterWhitespace, 'whitespace')(code) : afterWhitespace(code);\n }\n\n /**\n * After definition, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function afterWhitespace(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition');\n\n // Note: we don’t care about uniqueness.\n // It’s likely that that doesn’t happen very frequently.\n // It is more likely that it wastes precious time.\n self.parser.defined.push(identifier);\n\n // To do: `markdown-rs` interrupt.\n // // You’d be interrupting.\n // tokenizer.interrupt = true\n return ok(code);\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n return titleBefore;\n\n /**\n * After destination, at whitespace.\n *\n * ```markdown\n * > | [a]: b\n * ^\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n }\n\n /**\n * At title.\n *\n * ```markdown\n * | [a]: b\n * > | \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeMarker(code) {\n return factoryTitle(effects, titleAfter, nok, 'definitionTitle', 'definitionTitleMarker', 'definitionTitleString')(code);\n }\n\n /**\n * After title.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfter(code) {\n return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, 'whitespace')(code) : titleAfterOptionalWhitespace(code);\n }\n\n /**\n * After title, after optional whitespace.\n *\n * ```markdown\n * > | [a]: b \"c\"\n * ^\n * ```\n *\n * @type {State}\n */\n function titleAfterOptionalWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n tokenize: tokenizeFurtherStart,\n partial: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of code (indented).\n *\n * > **Parsing note**: it is not needed to check if this first line is a\n * > filled line (that it has a non-whitespace character), because blank lines\n * > are parsed already, so we never run into that.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: manually check if interrupting like `markdown-rs`.\n\n effects.enter('codeIndented');\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === 'linePrefix' && tail[2].sliceSerialize(tail[1], true).length >= 4 ? atBreak(code) : nok(code);\n }\n\n /**\n * At a break.\n *\n * ```markdown\n * > | aaa\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(furtherStart, atBreak, after)(code);\n }\n effects.enter('codeFlowValue');\n return inside(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * > | aaa\n * ^^^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue');\n return atBreak(code);\n }\n effects.consume(code);\n return inside;\n }\n\n /** @type {State} */\n function after(code) {\n effects.exit('codeIndented');\n // To do: allow interrupting like `markdown-rs`.\n // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n const self = this;\n return furtherStart;\n\n /**\n * At eol, trying to parse another indent.\n *\n * ```markdown\n * > | aaa\n * ^\n * | bbb\n * ```\n *\n * @type {State}\n */\n function furtherStart(code) {\n // To do: improve `lazy` / `pierce` handling.\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return furtherStart;\n }\n\n // To do: the code here in `micromark-js` is a bit different from\n // `markdown-rs` because there it can attempt spaces.\n // We can’t yet.\n //\n // To do: use an improved `space_or_tab` function like `markdown-rs`,\n // so that we can drop the next state.\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code);\n }\n\n /**\n * At start, after 1 or 4 spaces.\n *\n * ```markdown\n * > | aaa\n * ^\n * ```\n *\n * @type {State}\n */\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1];\n return tail && tail[1].type === 'linePrefix' && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n // To do: resolve like `markdown-rs`.\n let index = events.length;\n /** @type {number | undefined} */\n let content;\n /** @type {number | undefined} */\n let text;\n /** @type {number | undefined} */\n let definition;\n\n // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index;\n break;\n }\n if (events[index][1].type === 'paragraph') {\n text = index;\n }\n }\n // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === 'definition') {\n definition = index;\n }\n }\n }\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n\n // Change the paragraph to setext heading text.\n events[text][1].type = 'setextHeadingText';\n\n // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = Object.assign({}, events[definition][1].end);\n } else {\n events[content][1] = heading;\n }\n\n // Add the heading exit at the end.\n events.push(['exit', heading, context]);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * At start of heading (setext) underline.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n let index = self.events.length;\n /** @type {boolean | undefined} */\n let paragraph;\n // Find an opening.\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== 'lineEnding' && self.events[index][1].type !== 'linePrefix' && self.events[index][1].type !== 'content') {\n paragraph = self.events[index][1].type === 'paragraph';\n break;\n }\n }\n\n // To do: handle lazy/pierce like `markdown-rs`.\n // To do: parse indent like `markdown-rs`.\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine');\n marker = code;\n return before(code);\n }\n return nok(code);\n }\n\n /**\n * After optional whitespace, at `-` or `=`.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('setextHeadingLineSequence');\n return inside(code);\n }\n\n /**\n * In sequence.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n effects.exit('setextHeadingLineSequence');\n return markdownSpace(code) ? factorySpace(effects, after, 'lineSuffix')(code) : after(code);\n }\n\n /**\n * After sequence, after optional whitespace.\n *\n * ```markdown\n * | aa\n * > | ==\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine');\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * List of lowercase HTML “block” tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn’t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * .\n *\n * > 👉 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = ['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', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'search', 'section', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul'];\n\n/**\n * List of lowercase HTML “raw” tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * .\n *\n * > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea'];","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiAlpha, asciiAlphanumeric, markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n tokenize: tokenizeBlankLineBefore,\n partial: true\n};\nconst nonLazyContinuationStart = {\n tokenize: tokenizeNonLazyContinuationStart,\n partial: true\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n let index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start;\n // Add the prefix start to the HTML line token.\n events[index + 1][1].start = events[index - 2][1].start;\n // Remove the line prefix.\n events.splice(index - 2, 2);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this;\n /** @type {number} */\n let marker;\n /** @type {boolean} */\n let closingTag;\n /** @type {string} */\n let buffer;\n /** @type {number} */\n let index;\n /** @type {Code} */\n let markerB;\n return start;\n\n /**\n * Start of HTML (flow).\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n return before(code);\n }\n\n /**\n * At `<`, after optional whitespace.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('htmlFlow');\n effects.enter('htmlFlowData');\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n closingTag = true;\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n marker = 3;\n // To do:\n // tokenizer.concrete = true\n // To do: use `markdown-rs` style interrupt.\n // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After ` | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n marker = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n marker = 5;\n index = 0;\n return cdataOpenInside;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n marker = 4;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n\n /**\n * After ` | &<]]>\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA[';\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n if (index === value.length) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * After ` | \n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer = String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * In tag name.\n *\n * ```markdown\n * > | \n * ^^\n * > | \n * ^^\n * ```\n *\n * @type {State}\n */\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n const slash = code === 47;\n const name = buffer.toLowerCase();\n if (!slash && !closingTag && htmlRawNames.includes(name)) {\n marker = 1;\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n marker = 6;\n if (slash) {\n effects.consume(code);\n return basicSelfClosing;\n }\n\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok(code) : continuation(code);\n }\n marker = 7;\n // Do not support complete HTML when interrupting.\n return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n }\n\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += String.fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a basic tag name.\n *\n * ```markdown\n * > |
\n * ^\n * ```\n *\n * @type {State}\n */\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n // // Do not form containers.\n // tokenizer.concrete = true\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n\n /**\n * After closing slash of a complete tag name.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n\n /**\n * At an attribute name.\n *\n * At first, this state is used after a complete tag name, after whitespace,\n * where it expects optional attributes or the end of the tag.\n * It is also reused after attributes, when expecting more optional\n * attributes.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n\n // ASCII alphanumerical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeName(code) {\n // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, at an optional initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n markerB = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n return completeAttributeValueUnquoted(code);\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuoted(code) {\n if (code === markerB) {\n effects.consume(code);\n markerB = null;\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the\n * end of the tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a complete tag where only an `>` is allowed.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * After `>` in a complete tag.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function completeAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n // // Do not form containers.\n // tokenizer.concrete = true\n return continuation(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n\n /**\n * In continuation of any HTML kind.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuation(code) {\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && marker === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && marker === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && marker === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && marker === 5) {\n effects.consume(code);\n return continuationCdataInside;\n }\n if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n effects.exit('htmlFlowData');\n return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData');\n return continuationStart(code);\n }\n effects.consume(code);\n return continuation;\n }\n\n /**\n * In continuation, at eol.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStart(code) {\n return effects.check(nonLazyContinuationStart, continuationStartNonLazy, continuationAfter)(code);\n }\n\n /**\n * In continuation, at eol, before non-lazy content.\n *\n * ```markdown\n * > | \n * ^\n * | asd\n * ```\n *\n * @type {State}\n */\n function continuationStartNonLazy(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return continuationBefore;\n }\n\n /**\n * In continuation, before non-lazy content.\n *\n * ```markdown\n * | \n * > | asd\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return continuationStart(code);\n }\n effects.enter('htmlFlowData');\n return continuation(code);\n }\n\n /**\n * In comment continuation, after one `-`, expecting another.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after `<`, at `/`.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In raw continuation, after ` | \n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function continuationRawEndTag(code) {\n if (code === 62) {\n const name = buffer.toLowerCase();\n if (htmlRawNames.includes(name)) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code);\n // @ts-expect-error: not null.\n buffer += String.fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n\n /**\n * In cdata continuation, after `]`, expecting `]>`.\n *\n * ```markdown\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationCdataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In declaration or instruction continuation, at `>`.\n *\n * ```markdown\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | \n * ^\n * > | &<]]>\n * ^\n * ```\n *\n * @type {State}\n */\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n\n // More dashes.\n if (code === 45 && marker === 2) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n\n /**\n * In closed continuation: everything we get until the eol/eof is part of it.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData');\n return continuationAfter(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n\n /**\n * Done.\n *\n * ```markdown\n * > | \n * ^\n * ```\n *\n * @type {State}\n */\n function continuationAfter(code) {\n effects.exit('htmlFlow');\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n // // No longer concrete.\n // tokenizer.concrete = false\n return ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuationStart(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * At eol, before continuation.\n *\n * ```markdown\n * > | * ```js\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return after;\n }\n return nok(code);\n }\n\n /**\n * A continuation.\n *\n * ```markdown\n * | * ```js\n * > | b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n return start;\n\n /**\n * Before eol, expecting blank line.\n *\n * ```markdown\n * > |
\n * ^\n * |\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return effects.attempt(blankLine, ok, nok);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nconst nonLazyContinuation = {\n tokenize: tokenizeNonLazyContinuation,\n partial: true\n};\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this;\n /** @type {Construct} */\n const closeStart = {\n tokenize: tokenizeCloseStart,\n partial: true\n };\n let initialPrefix = 0;\n let sizeOpen = 0;\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Start of code.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse whitespace like `markdown-rs`.\n return beforeSequenceOpen(code);\n }\n\n /**\n * In opening fence, after prefix, at sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeSequenceOpen(code) {\n const tail = self.events[self.events.length - 1];\n initialPrefix = tail && tail[1].type === 'linePrefix' ? tail[2].sliceSerialize(tail[1], true).length : 0;\n marker = code;\n effects.enter('codeFenced');\n effects.enter('codeFencedFence');\n effects.enter('codeFencedFenceSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening fence sequence.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === marker) {\n sizeOpen++;\n effects.consume(code);\n return sequenceOpen;\n }\n if (sizeOpen < 3) {\n return nok(code);\n }\n effects.exit('codeFencedFenceSequence');\n return markdownSpace(code) ? factorySpace(effects, infoBefore, 'whitespace')(code) : infoBefore(code);\n }\n\n /**\n * In opening fence, after the sequence (and optional whitespace), before info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function infoBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence');\n return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter('codeFencedFenceInfo');\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return info(code);\n }\n\n /**\n * In info.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function info(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString');\n effects.exit('codeFencedFenceInfo');\n return infoBefore(code);\n }\n if (markdownSpace(code)) {\n effects.exit('chunkString');\n effects.exit('codeFencedFenceInfo');\n return factorySpace(effects, metaBefore, 'whitespace')(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return info;\n }\n\n /**\n * In opening fence, after info and whitespace, before meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function metaBefore(code) {\n if (code === null || markdownLineEnding(code)) {\n return infoBefore(code);\n }\n effects.enter('codeFencedFenceMeta');\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return meta(code);\n }\n\n /**\n * In meta.\n *\n * ```markdown\n * > | ~~~js eval\n * ^\n * | alert(1)\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString');\n effects.exit('codeFencedFenceMeta');\n return infoBefore(code);\n }\n if (code === 96 && code === marker) {\n return nok(code);\n }\n effects.consume(code);\n return meta;\n }\n\n /**\n * At eol/eof in code, before a non-lazy closing fence or content.\n *\n * ```markdown\n * > | ~~~js\n * ^\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function atNonLazyBreak(code) {\n return effects.attempt(closeStart, after, contentBefore)(code);\n }\n\n /**\n * Before code content, not a closing fence, at eol.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentBefore(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return contentStart;\n }\n\n /**\n * Before code content, not a closing fence.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentStart(code) {\n return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, 'linePrefix', initialPrefix + 1)(code) : beforeContentChunk(code);\n }\n\n /**\n * Before code content, after optional prefix.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function beforeContentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n }\n effects.enter('codeFlowValue');\n return contentChunk(code);\n }\n\n /**\n * In code content.\n *\n * ```markdown\n * | ~~~js\n * > | alert(1)\n * ^^^^^^^^\n * | ~~~\n * ```\n *\n * @type {State}\n */\n function contentChunk(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue');\n return beforeContentChunk(code);\n }\n effects.consume(code);\n return contentChunk;\n }\n\n /**\n * After code.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n effects.exit('codeFenced');\n return ok(code);\n }\n\n /**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\n function tokenizeCloseStart(effects, ok, nok) {\n let size = 0;\n return startBefore;\n\n /**\n *\n *\n * @type {State}\n */\n function startBefore(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return start;\n }\n\n /**\n * Before closing fence, at optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // Always populated by defaults.\n\n // To do: `enter` here or in next state?\n effects.enter('codeFencedFence');\n return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, 'linePrefix', self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n }\n\n /**\n * In closing fence, after optional whitespace, at sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function beforeSequenceClose(code) {\n if (code === marker) {\n effects.enter('codeFencedFenceSequence');\n return sequenceClose(code);\n }\n return nok(code);\n }\n\n /**\n * In closing fence sequence.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n if (code === marker) {\n size++;\n effects.consume(code);\n return sequenceClose;\n }\n if (size >= sizeOpen) {\n effects.exit('codeFencedFenceSequence');\n return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, 'whitespace')(code) : sequenceCloseAfter(code);\n }\n return nok(code);\n }\n\n /**\n * After closing fence sequence, after optional whitespace.\n *\n * ```markdown\n * | ~~~js\n * | alert(1)\n * > | ~~~\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceCloseAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence');\n return ok(code);\n }\n return nok(code);\n }\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n *\n *\n * @type {State}\n */\n function start(code) {\n if (code === null) {\n return nok(code);\n }\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return lineStart;\n }\n\n /**\n *\n *\n * @type {State}\n */\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n }\n}","/**\n * Map of named character references.\n *\n * @type {Record}\n */\nexport const characterEntities = {\n AElig: 'Æ',\n AMP: '&',\n Aacute: 'Á',\n Abreve: 'Ă',\n Acirc: 'Â',\n Acy: 'А',\n Afr: '𝔄',\n Agrave: 'À',\n Alpha: 'Α',\n Amacr: 'Ā',\n And: '⩓',\n Aogon: 'Ą',\n Aopf: '𝔸',\n ApplyFunction: '⁡',\n Aring: 'Å',\n Ascr: '𝒜',\n Assign: '≔',\n Atilde: 'Ã',\n Auml: 'Ä',\n Backslash: '∖',\n Barv: '⫧',\n Barwed: '⌆',\n Bcy: 'Б',\n Because: '∵',\n Bernoullis: 'ℬ',\n Beta: 'Β',\n Bfr: '𝔅',\n Bopf: '𝔹',\n Breve: '˘',\n Bscr: 'ℬ',\n Bumpeq: '≎',\n CHcy: 'Ч',\n COPY: '©',\n Cacute: 'Ć',\n Cap: '⋒',\n CapitalDifferentialD: 'ⅅ',\n Cayleys: 'ℭ',\n Ccaron: 'Č',\n Ccedil: 'Ç',\n Ccirc: 'Ĉ',\n Cconint: '∰',\n Cdot: 'Ċ',\n Cedilla: '¸',\n CenterDot: '·',\n Cfr: 'ℭ',\n Chi: 'Χ',\n CircleDot: '⊙',\n CircleMinus: '⊖',\n CirclePlus: '⊕',\n CircleTimes: '⊗',\n ClockwiseContourIntegral: '∲',\n CloseCurlyDoubleQuote: '”',\n CloseCurlyQuote: '’',\n Colon: '∷',\n Colone: '⩴',\n Congruent: '≡',\n Conint: '∯',\n ContourIntegral: '∮',\n Copf: 'ℂ',\n Coproduct: '∐',\n CounterClockwiseContourIntegral: '∳',\n Cross: '⨯',\n Cscr: '𝒞',\n Cup: '⋓',\n CupCap: '≍',\n DD: 'ⅅ',\n DDotrahd: '⤑',\n DJcy: 'Ђ',\n DScy: 'Ѕ',\n DZcy: 'Џ',\n Dagger: '‡',\n Darr: '↡',\n Dashv: '⫤',\n Dcaron: 'Ď',\n Dcy: 'Д',\n Del: '∇',\n Delta: 'Δ',\n Dfr: '𝔇',\n DiacriticalAcute: '´',\n DiacriticalDot: '˙',\n DiacriticalDoubleAcute: '˝',\n DiacriticalGrave: '`',\n DiacriticalTilde: '˜',\n Diamond: '⋄',\n DifferentialD: 'ⅆ',\n Dopf: '𝔻',\n Dot: '¨',\n DotDot: '⃜',\n DotEqual: '≐',\n DoubleContourIntegral: '∯',\n DoubleDot: '¨',\n DoubleDownArrow: '⇓',\n DoubleLeftArrow: '⇐',\n DoubleLeftRightArrow: '⇔',\n DoubleLeftTee: '⫤',\n DoubleLongLeftArrow: '⟸',\n DoubleLongLeftRightArrow: '⟺',\n DoubleLongRightArrow: '⟹',\n DoubleRightArrow: '⇒',\n DoubleRightTee: '⊨',\n DoubleUpArrow: '⇑',\n DoubleUpDownArrow: '⇕',\n DoubleVerticalBar: '∥',\n DownArrow: '↓',\n DownArrowBar: '⤓',\n DownArrowUpArrow: '⇵',\n DownBreve: '̑',\n DownLeftRightVector: '⥐',\n DownLeftTeeVector: '⥞',\n DownLeftVector: '↽',\n DownLeftVectorBar: '⥖',\n DownRightTeeVector: '⥟',\n DownRightVector: '⇁',\n DownRightVectorBar: '⥗',\n DownTee: '⊤',\n DownTeeArrow: '↧',\n Downarrow: '⇓',\n Dscr: '𝒟',\n Dstrok: 'Đ',\n ENG: 'Ŋ',\n ETH: 'Ð',\n Eacute: 'É',\n Ecaron: 'Ě',\n Ecirc: 'Ê',\n Ecy: 'Э',\n Edot: 'Ė',\n Efr: '𝔈',\n Egrave: 'È',\n Element: '∈',\n Emacr: 'Ē',\n EmptySmallSquare: '◻',\n EmptyVerySmallSquare: '▫',\n Eogon: 'Ę',\n Eopf: '𝔼',\n Epsilon: 'Ε',\n Equal: '⩵',\n EqualTilde: '≂',\n Equilibrium: '⇌',\n Escr: 'ℰ',\n Esim: '⩳',\n Eta: 'Η',\n Euml: 'Ë',\n Exists: '∃',\n ExponentialE: 'ⅇ',\n Fcy: 'Ф',\n Ffr: '𝔉',\n FilledSmallSquare: '◼',\n FilledVerySmallSquare: '▪',\n Fopf: '𝔽',\n ForAll: '∀',\n Fouriertrf: 'ℱ',\n Fscr: 'ℱ',\n GJcy: 'Ѓ',\n GT: '>',\n Gamma: 'Γ',\n Gammad: 'Ϝ',\n Gbreve: 'Ğ',\n Gcedil: 'Ģ',\n Gcirc: 'Ĝ',\n Gcy: 'Г',\n Gdot: 'Ġ',\n Gfr: '𝔊',\n Gg: '⋙',\n Gopf: '𝔾',\n GreaterEqual: '≥',\n GreaterEqualLess: '⋛',\n GreaterFullEqual: '≧',\n GreaterGreater: '⪢',\n GreaterLess: '≷',\n GreaterSlantEqual: '⩾',\n GreaterTilde: '≳',\n Gscr: '𝒢',\n Gt: '≫',\n HARDcy: 'Ъ',\n Hacek: 'ˇ',\n Hat: '^',\n Hcirc: 'Ĥ',\n Hfr: 'ℌ',\n HilbertSpace: 'ℋ',\n Hopf: 'ℍ',\n HorizontalLine: '─',\n Hscr: 'ℋ',\n Hstrok: 'Ħ',\n HumpDownHump: '≎',\n HumpEqual: '≏',\n IEcy: 'Е',\n IJlig: 'IJ',\n IOcy: 'Ё',\n Iacute: 'Í',\n Icirc: 'Î',\n Icy: 'И',\n Idot: 'İ',\n Ifr: 'ℑ',\n Igrave: 'Ì',\n Im: 'ℑ',\n Imacr: 'Ī',\n ImaginaryI: 'ⅈ',\n Implies: '⇒',\n Int: '∬',\n Integral: '∫',\n Intersection: '⋂',\n InvisibleComma: '⁣',\n InvisibleTimes: '⁢',\n Iogon: 'Į',\n Iopf: '𝕀',\n Iota: 'Ι',\n Iscr: 'ℐ',\n Itilde: 'Ĩ',\n Iukcy: 'І',\n Iuml: 'Ï',\n Jcirc: 'Ĵ',\n Jcy: 'Й',\n Jfr: '𝔍',\n Jopf: '𝕁',\n Jscr: '𝒥',\n Jsercy: 'Ј',\n Jukcy: 'Є',\n KHcy: 'Х',\n KJcy: 'Ќ',\n Kappa: 'Κ',\n Kcedil: 'Ķ',\n Kcy: 'К',\n Kfr: '𝔎',\n Kopf: '𝕂',\n Kscr: '𝒦',\n LJcy: 'Љ',\n LT: '<',\n Lacute: 'Ĺ',\n Lambda: 'Λ',\n Lang: '⟪',\n Laplacetrf: 'ℒ',\n Larr: '↞',\n Lcaron: 'Ľ',\n Lcedil: 'Ļ',\n Lcy: 'Л',\n LeftAngleBracket: '⟨',\n LeftArrow: '←',\n LeftArrowBar: '⇤',\n LeftArrowRightArrow: '⇆',\n LeftCeiling: '⌈',\n LeftDoubleBracket: '⟦',\n LeftDownTeeVector: '⥡',\n LeftDownVector: '⇃',\n LeftDownVectorBar: '⥙',\n LeftFloor: '⌊',\n LeftRightArrow: '↔',\n LeftRightVector: '⥎',\n LeftTee: '⊣',\n LeftTeeArrow: '↤',\n LeftTeeVector: '⥚',\n LeftTriangle: '⊲',\n LeftTriangleBar: '⧏',\n LeftTriangleEqual: '⊴',\n LeftUpDownVector: '⥑',\n LeftUpTeeVector: '⥠',\n LeftUpVector: '↿',\n LeftUpVectorBar: '⥘',\n LeftVector: '↼',\n LeftVectorBar: '⥒',\n Leftarrow: '⇐',\n Leftrightarrow: '⇔',\n LessEqualGreater: '⋚',\n LessFullEqual: '≦',\n LessGreater: '≶',\n LessLess: '⪡',\n LessSlantEqual: '⩽',\n LessTilde: '≲',\n Lfr: '𝔏',\n Ll: '⋘',\n Lleftarrow: '⇚',\n Lmidot: 'Ŀ',\n LongLeftArrow: '⟵',\n LongLeftRightArrow: '⟷',\n LongRightArrow: '⟶',\n Longleftarrow: '⟸',\n Longleftrightarrow: '⟺',\n Longrightarrow: '⟹',\n Lopf: '𝕃',\n LowerLeftArrow: '↙',\n LowerRightArrow: '↘',\n Lscr: 'ℒ',\n Lsh: '↰',\n Lstrok: 'Ł',\n Lt: '≪',\n Map: '⤅',\n Mcy: 'М',\n MediumSpace: ' ',\n Mellintrf: 'ℳ',\n Mfr: '𝔐',\n MinusPlus: '∓',\n Mopf: '𝕄',\n Mscr: 'ℳ',\n Mu: 'Μ',\n NJcy: 'Њ',\n Nacute: 'Ń',\n Ncaron: 'Ň',\n Ncedil: 'Ņ',\n Ncy: 'Н',\n NegativeMediumSpace: '​',\n NegativeThickSpace: '​',\n NegativeThinSpace: '​',\n NegativeVeryThinSpace: '​',\n NestedGreaterGreater: '≫',\n NestedLessLess: '≪',\n NewLine: '\\n',\n Nfr: '𝔑',\n NoBreak: '⁠',\n NonBreakingSpace: ' ',\n Nopf: 'ℕ',\n Not: '⫬',\n NotCongruent: '≢',\n NotCupCap: '≭',\n NotDoubleVerticalBar: '∦',\n NotElement: '∉',\n NotEqual: '≠',\n NotEqualTilde: '≂̸',\n NotExists: '∄',\n NotGreater: '≯',\n NotGreaterEqual: '≱',\n NotGreaterFullEqual: '≧̸',\n NotGreaterGreater: '≫̸',\n NotGreaterLess: '≹',\n NotGreaterSlantEqual: '⩾̸',\n NotGreaterTilde: '≵',\n NotHumpDownHump: '≎̸',\n NotHumpEqual: '≏̸',\n NotLeftTriangle: '⋪',\n NotLeftTriangleBar: '⧏̸',\n NotLeftTriangleEqual: '⋬',\n NotLess: '≮',\n NotLessEqual: '≰',\n NotLessGreater: '≸',\n NotLessLess: '≪̸',\n NotLessSlantEqual: '⩽̸',\n NotLessTilde: '≴',\n NotNestedGreaterGreater: '⪢̸',\n NotNestedLessLess: '⪡̸',\n NotPrecedes: '⊀',\n NotPrecedesEqual: '⪯̸',\n NotPrecedesSlantEqual: '⋠',\n NotReverseElement: '∌',\n NotRightTriangle: '⋫',\n NotRightTriangleBar: '⧐̸',\n NotRightTriangleEqual: '⋭',\n NotSquareSubset: '⊏̸',\n NotSquareSubsetEqual: '⋢',\n NotSquareSuperset: '⊐̸',\n NotSquareSupersetEqual: '⋣',\n NotSubset: '⊂⃒',\n NotSubsetEqual: '⊈',\n NotSucceeds: '⊁',\n NotSucceedsEqual: '⪰̸',\n NotSucceedsSlantEqual: '⋡',\n NotSucceedsTilde: '≿̸',\n NotSuperset: '⊃⃒',\n NotSupersetEqual: '⊉',\n NotTilde: '≁',\n NotTildeEqual: '≄',\n NotTildeFullEqual: '≇',\n NotTildeTilde: '≉',\n NotVerticalBar: '∤',\n Nscr: '𝒩',\n Ntilde: 'Ñ',\n Nu: 'Ν',\n OElig: 'Œ',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Ocy: 'О',\n Odblac: 'Ő',\n Ofr: '𝔒',\n Ograve: 'Ò',\n Omacr: 'Ō',\n Omega: 'Ω',\n Omicron: 'Ο',\n Oopf: '𝕆',\n OpenCurlyDoubleQuote: '“',\n OpenCurlyQuote: '‘',\n Or: '⩔',\n Oscr: '𝒪',\n Oslash: 'Ø',\n Otilde: 'Õ',\n Otimes: '⨷',\n Ouml: 'Ö',\n OverBar: '‾',\n OverBrace: '⏞',\n OverBracket: '⎴',\n OverParenthesis: '⏜',\n PartialD: '∂',\n Pcy: 'П',\n Pfr: '𝔓',\n Phi: 'Φ',\n Pi: 'Π',\n PlusMinus: '±',\n Poincareplane: 'ℌ',\n Popf: 'ℙ',\n Pr: '⪻',\n Precedes: '≺',\n PrecedesEqual: '⪯',\n PrecedesSlantEqual: '≼',\n PrecedesTilde: '≾',\n Prime: '″',\n Product: '∏',\n Proportion: '∷',\n Proportional: '∝',\n Pscr: '𝒫',\n Psi: 'Ψ',\n QUOT: '\"',\n Qfr: '𝔔',\n Qopf: 'ℚ',\n Qscr: '𝒬',\n RBarr: '⤐',\n REG: '®',\n Racute: 'Ŕ',\n Rang: '⟫',\n Rarr: '↠',\n Rarrtl: '⤖',\n Rcaron: 'Ř',\n Rcedil: 'Ŗ',\n Rcy: 'Р',\n Re: 'ℜ',\n ReverseElement: '∋',\n ReverseEquilibrium: '⇋',\n ReverseUpEquilibrium: '⥯',\n Rfr: 'ℜ',\n Rho: 'Ρ',\n RightAngleBracket: '⟩',\n RightArrow: '→',\n RightArrowBar: '⇥',\n RightArrowLeftArrow: '⇄',\n RightCeiling: '⌉',\n RightDoubleBracket: '⟧',\n RightDownTeeVector: '⥝',\n RightDownVector: '⇂',\n RightDownVectorBar: '⥕',\n RightFloor: '⌋',\n RightTee: '⊢',\n RightTeeArrow: '↦',\n RightTeeVector: '⥛',\n RightTriangle: '⊳',\n RightTriangleBar: '⧐',\n RightTriangleEqual: '⊵',\n RightUpDownVector: '⥏',\n RightUpTeeVector: '⥜',\n RightUpVector: '↾',\n RightUpVectorBar: '⥔',\n RightVector: '⇀',\n RightVectorBar: '⥓',\n Rightarrow: '⇒',\n Ropf: 'ℝ',\n RoundImplies: '⥰',\n Rrightarrow: '⇛',\n Rscr: 'ℛ',\n Rsh: '↱',\n RuleDelayed: '⧴',\n SHCHcy: 'Щ',\n SHcy: 'Ш',\n SOFTcy: 'Ь',\n Sacute: 'Ś',\n Sc: '⪼',\n Scaron: 'Š',\n Scedil: 'Ş',\n Scirc: 'Ŝ',\n Scy: 'С',\n Sfr: '𝔖',\n ShortDownArrow: '↓',\n ShortLeftArrow: '←',\n ShortRightArrow: '→',\n ShortUpArrow: '↑',\n Sigma: 'Σ',\n SmallCircle: '∘',\n Sopf: '𝕊',\n Sqrt: '√',\n Square: '□',\n SquareIntersection: '⊓',\n SquareSubset: '⊏',\n SquareSubsetEqual: '⊑',\n SquareSuperset: '⊐',\n SquareSupersetEqual: '⊒',\n SquareUnion: '⊔',\n Sscr: '𝒮',\n Star: '⋆',\n Sub: '⋐',\n Subset: '⋐',\n SubsetEqual: '⊆',\n Succeeds: '≻',\n SucceedsEqual: '⪰',\n SucceedsSlantEqual: '≽',\n SucceedsTilde: '≿',\n SuchThat: '∋',\n Sum: '∑',\n Sup: '⋑',\n Superset: '⊃',\n SupersetEqual: '⊇',\n Supset: '⋑',\n THORN: 'Þ',\n TRADE: '™',\n TSHcy: 'Ћ',\n TScy: 'Ц',\n Tab: '\\t',\n Tau: 'Τ',\n Tcaron: 'Ť',\n Tcedil: 'Ţ',\n Tcy: 'Т',\n Tfr: '𝔗',\n Therefore: '∴',\n Theta: 'Θ',\n ThickSpace: '  ',\n ThinSpace: ' ',\n Tilde: '∼',\n TildeEqual: '≃',\n TildeFullEqual: '≅',\n TildeTilde: '≈',\n Topf: '𝕋',\n TripleDot: '⃛',\n Tscr: '𝒯',\n Tstrok: 'Ŧ',\n Uacute: 'Ú',\n Uarr: '↟',\n Uarrocir: '⥉',\n Ubrcy: 'Ў',\n Ubreve: 'Ŭ',\n Ucirc: 'Û',\n Ucy: 'У',\n Udblac: 'Ű',\n Ufr: '𝔘',\n Ugrave: 'Ù',\n Umacr: 'Ū',\n UnderBar: '_',\n UnderBrace: '⏟',\n UnderBracket: '⎵',\n UnderParenthesis: '⏝',\n Union: '⋃',\n UnionPlus: '⊎',\n Uogon: 'Ų',\n Uopf: '𝕌',\n UpArrow: '↑',\n UpArrowBar: '⤒',\n UpArrowDownArrow: '⇅',\n UpDownArrow: '↕',\n UpEquilibrium: '⥮',\n UpTee: '⊥',\n UpTeeArrow: '↥',\n Uparrow: '⇑',\n Updownarrow: '⇕',\n UpperLeftArrow: '↖',\n UpperRightArrow: '↗',\n Upsi: 'ϒ',\n Upsilon: 'Υ',\n Uring: 'Ů',\n Uscr: '𝒰',\n Utilde: 'Ũ',\n Uuml: 'Ü',\n VDash: '⊫',\n Vbar: '⫫',\n Vcy: 'В',\n Vdash: '⊩',\n Vdashl: '⫦',\n Vee: '⋁',\n Verbar: '‖',\n Vert: '‖',\n VerticalBar: '∣',\n VerticalLine: '|',\n VerticalSeparator: '❘',\n VerticalTilde: '≀',\n VeryThinSpace: ' ',\n Vfr: '𝔙',\n Vopf: '𝕍',\n Vscr: '𝒱',\n Vvdash: '⊪',\n Wcirc: 'Ŵ',\n Wedge: '⋀',\n Wfr: '𝔚',\n Wopf: '𝕎',\n Wscr: '𝒲',\n Xfr: '𝔛',\n Xi: 'Ξ',\n Xopf: '𝕏',\n Xscr: '𝒳',\n YAcy: 'Я',\n YIcy: 'Ї',\n YUcy: 'Ю',\n Yacute: 'Ý',\n Ycirc: 'Ŷ',\n Ycy: 'Ы',\n Yfr: '𝔜',\n Yopf: '𝕐',\n Yscr: '𝒴',\n Yuml: 'Ÿ',\n ZHcy: 'Ж',\n Zacute: 'Ź',\n Zcaron: 'Ž',\n Zcy: 'З',\n Zdot: 'Ż',\n ZeroWidthSpace: '​',\n Zeta: 'Ζ',\n Zfr: 'ℨ',\n Zopf: 'ℤ',\n Zscr: '𝒵',\n aacute: 'á',\n abreve: 'ă',\n ac: '∾',\n acE: '∾̳',\n acd: '∿',\n acirc: 'â',\n acute: '´',\n acy: 'а',\n aelig: 'æ',\n af: '⁡',\n afr: '𝔞',\n agrave: 'à',\n alefsym: 'ℵ',\n aleph: 'ℵ',\n alpha: 'α',\n amacr: 'ā',\n amalg: '⨿',\n amp: '&',\n and: '∧',\n andand: '⩕',\n andd: '⩜',\n andslope: '⩘',\n andv: '⩚',\n ang: '∠',\n ange: '⦤',\n angle: '∠',\n angmsd: '∡',\n angmsdaa: '⦨',\n angmsdab: '⦩',\n angmsdac: '⦪',\n angmsdad: '⦫',\n angmsdae: '⦬',\n angmsdaf: '⦭',\n angmsdag: '⦮',\n angmsdah: '⦯',\n angrt: '∟',\n angrtvb: '⊾',\n angrtvbd: '⦝',\n angsph: '∢',\n angst: 'Å',\n angzarr: '⍼',\n aogon: 'ą',\n aopf: '𝕒',\n ap: '≈',\n apE: '⩰',\n apacir: '⩯',\n ape: '≊',\n apid: '≋',\n apos: \"'\",\n approx: '≈',\n approxeq: '≊',\n aring: 'å',\n ascr: '𝒶',\n ast: '*',\n asymp: '≈',\n asympeq: '≍',\n atilde: 'ã',\n auml: 'ä',\n awconint: '∳',\n awint: '⨑',\n bNot: '⫭',\n backcong: '≌',\n backepsilon: '϶',\n backprime: '‵',\n backsim: '∽',\n backsimeq: '⋍',\n barvee: '⊽',\n barwed: '⌅',\n barwedge: '⌅',\n bbrk: '⎵',\n bbrktbrk: '⎶',\n bcong: '≌',\n bcy: 'б',\n bdquo: '„',\n becaus: '∵',\n because: '∵',\n bemptyv: '⦰',\n bepsi: '϶',\n bernou: 'ℬ',\n beta: 'β',\n beth: 'ℶ',\n between: '≬',\n bfr: '𝔟',\n bigcap: '⋂',\n bigcirc: '◯',\n bigcup: '⋃',\n bigodot: '⨀',\n bigoplus: '⨁',\n bigotimes: '⨂',\n bigsqcup: '⨆',\n bigstar: '★',\n bigtriangledown: '▽',\n bigtriangleup: '△',\n biguplus: '⨄',\n bigvee: '⋁',\n bigwedge: '⋀',\n bkarow: '⤍',\n blacklozenge: '⧫',\n blacksquare: '▪',\n blacktriangle: '▴',\n blacktriangledown: '▾',\n blacktriangleleft: '◂',\n blacktriangleright: '▸',\n blank: '␣',\n blk12: '▒',\n blk14: '░',\n blk34: '▓',\n block: '█',\n bne: '=⃥',\n bnequiv: '≡⃥',\n bnot: '⌐',\n bopf: '𝕓',\n bot: '⊥',\n bottom: '⊥',\n bowtie: '⋈',\n boxDL: '╗',\n boxDR: '╔',\n boxDl: '╖',\n boxDr: '╓',\n boxH: '═',\n boxHD: '╦',\n boxHU: '╩',\n boxHd: '╤',\n boxHu: '╧',\n boxUL: '╝',\n boxUR: '╚',\n boxUl: '╜',\n boxUr: '╙',\n boxV: '║',\n boxVH: '╬',\n boxVL: '╣',\n boxVR: '╠',\n boxVh: '╫',\n boxVl: '╢',\n boxVr: '╟',\n boxbox: '⧉',\n boxdL: '╕',\n boxdR: '╒',\n boxdl: '┐',\n boxdr: '┌',\n boxh: '─',\n boxhD: '╥',\n boxhU: '╨',\n boxhd: '┬',\n boxhu: '┴',\n boxminus: '⊟',\n boxplus: '⊞',\n boxtimes: '⊠',\n boxuL: '╛',\n boxuR: '╘',\n boxul: '┘',\n boxur: '└',\n boxv: '│',\n boxvH: '╪',\n boxvL: '╡',\n boxvR: '╞',\n boxvh: '┼',\n boxvl: '┤',\n boxvr: '├',\n bprime: '‵',\n breve: '˘',\n brvbar: '¦',\n bscr: '𝒷',\n bsemi: '⁏',\n bsim: '∽',\n bsime: '⋍',\n bsol: '\\\\',\n bsolb: '⧅',\n bsolhsub: '⟈',\n bull: '•',\n bullet: '•',\n bump: '≎',\n bumpE: '⪮',\n bumpe: '≏',\n bumpeq: '≏',\n cacute: 'ć',\n cap: '∩',\n capand: '⩄',\n capbrcup: '⩉',\n capcap: '⩋',\n capcup: '⩇',\n capdot: '⩀',\n caps: '∩︀',\n caret: '⁁',\n caron: 'ˇ',\n ccaps: '⩍',\n ccaron: 'č',\n ccedil: 'ç',\n ccirc: 'ĉ',\n ccups: '⩌',\n ccupssm: '⩐',\n cdot: 'ċ',\n cedil: '¸',\n cemptyv: '⦲',\n cent: '¢',\n centerdot: '·',\n cfr: '𝔠',\n chcy: 'ч',\n check: '✓',\n checkmark: '✓',\n chi: 'χ',\n cir: '○',\n cirE: '⧃',\n circ: 'ˆ',\n circeq: '≗',\n circlearrowleft: '↺',\n circlearrowright: '↻',\n circledR: '®',\n circledS: 'Ⓢ',\n circledast: '⊛',\n circledcirc: '⊚',\n circleddash: '⊝',\n cire: '≗',\n cirfnint: '⨐',\n cirmid: '⫯',\n cirscir: '⧂',\n clubs: '♣',\n clubsuit: '♣',\n colon: ':',\n colone: '≔',\n coloneq: '≔',\n comma: ',',\n commat: '@',\n comp: '∁',\n compfn: '∘',\n complement: '∁',\n complexes: 'ℂ',\n cong: '≅',\n congdot: '⩭',\n conint: '∮',\n copf: '𝕔',\n coprod: '∐',\n copy: '©',\n copysr: '℗',\n crarr: '↵',\n cross: '✗',\n cscr: '𝒸',\n csub: '⫏',\n csube: '⫑',\n csup: '⫐',\n csupe: '⫒',\n ctdot: '⋯',\n cudarrl: '⤸',\n cudarrr: '⤵',\n cuepr: '⋞',\n cuesc: '⋟',\n cularr: '↶',\n cularrp: '⤽',\n cup: '∪',\n cupbrcap: '⩈',\n cupcap: '⩆',\n cupcup: '⩊',\n cupdot: '⊍',\n cupor: '⩅',\n cups: '∪︀',\n curarr: '↷',\n curarrm: '⤼',\n curlyeqprec: '⋞',\n curlyeqsucc: '⋟',\n curlyvee: '⋎',\n curlywedge: '⋏',\n curren: '¤',\n curvearrowleft: '↶',\n curvearrowright: '↷',\n cuvee: '⋎',\n cuwed: '⋏',\n cwconint: '∲',\n cwint: '∱',\n cylcty: '⌭',\n dArr: '⇓',\n dHar: '⥥',\n dagger: '†',\n daleth: 'ℸ',\n darr: '↓',\n dash: '‐',\n dashv: '⊣',\n dbkarow: '⤏',\n dblac: '˝',\n dcaron: 'ď',\n dcy: 'д',\n dd: 'ⅆ',\n ddagger: '‡',\n ddarr: '⇊',\n ddotseq: '⩷',\n deg: '°',\n delta: 'δ',\n demptyv: '⦱',\n dfisht: '⥿',\n dfr: '𝔡',\n dharl: '⇃',\n dharr: '⇂',\n diam: '⋄',\n diamond: '⋄',\n diamondsuit: '♦',\n diams: '♦',\n die: '¨',\n digamma: 'ϝ',\n disin: '⋲',\n div: '÷',\n divide: '÷',\n divideontimes: '⋇',\n divonx: '⋇',\n djcy: 'ђ',\n dlcorn: '⌞',\n dlcrop: '⌍',\n dollar: '$',\n dopf: '𝕕',\n dot: '˙',\n doteq: '≐',\n doteqdot: '≑',\n dotminus: '∸',\n dotplus: '∔',\n dotsquare: '⊡',\n doublebarwedge: '⌆',\n downarrow: '↓',\n downdownarrows: '⇊',\n downharpoonleft: '⇃',\n downharpoonright: '⇂',\n drbkarow: '⤐',\n drcorn: '⌟',\n drcrop: '⌌',\n dscr: '𝒹',\n dscy: 'ѕ',\n dsol: '⧶',\n dstrok: 'đ',\n dtdot: '⋱',\n dtri: '▿',\n dtrif: '▾',\n duarr: '⇵',\n duhar: '⥯',\n dwangle: '⦦',\n dzcy: 'џ',\n dzigrarr: '⟿',\n eDDot: '⩷',\n eDot: '≑',\n eacute: 'é',\n easter: '⩮',\n ecaron: 'ě',\n ecir: '≖',\n ecirc: 'ê',\n ecolon: '≕',\n ecy: 'э',\n edot: 'ė',\n ee: 'ⅇ',\n efDot: '≒',\n efr: '𝔢',\n eg: '⪚',\n egrave: 'è',\n egs: '⪖',\n egsdot: '⪘',\n el: '⪙',\n elinters: '⏧',\n ell: 'ℓ',\n els: '⪕',\n elsdot: '⪗',\n emacr: 'ē',\n empty: '∅',\n emptyset: '∅',\n emptyv: '∅',\n emsp13: ' ',\n emsp14: ' ',\n emsp: ' ',\n eng: 'ŋ',\n ensp: ' ',\n eogon: 'ę',\n eopf: '𝕖',\n epar: '⋕',\n eparsl: '⧣',\n eplus: '⩱',\n epsi: 'ε',\n epsilon: 'ε',\n epsiv: 'ϵ',\n eqcirc: '≖',\n eqcolon: '≕',\n eqsim: '≂',\n eqslantgtr: '⪖',\n eqslantless: '⪕',\n equals: '=',\n equest: '≟',\n equiv: '≡',\n equivDD: '⩸',\n eqvparsl: '⧥',\n erDot: '≓',\n erarr: '⥱',\n escr: 'ℯ',\n esdot: '≐',\n esim: '≂',\n eta: 'η',\n eth: 'ð',\n euml: 'ë',\n euro: '€',\n excl: '!',\n exist: '∃',\n expectation: 'ℰ',\n exponentiale: 'ⅇ',\n fallingdotseq: '≒',\n fcy: 'ф',\n female: '♀',\n ffilig: 'ffi',\n fflig: 'ff',\n ffllig: 'ffl',\n ffr: '𝔣',\n filig: 'fi',\n fjlig: 'fj',\n flat: '♭',\n fllig: 'fl',\n fltns: '▱',\n fnof: 'ƒ',\n fopf: '𝕗',\n forall: '∀',\n fork: '⋔',\n forkv: '⫙',\n fpartint: '⨍',\n frac12: '½',\n frac13: '⅓',\n frac14: '¼',\n frac15: '⅕',\n frac16: '⅙',\n frac18: '⅛',\n frac23: '⅔',\n frac25: '⅖',\n frac34: '¾',\n frac35: '⅗',\n frac38: '⅜',\n frac45: '⅘',\n frac56: '⅚',\n frac58: '⅝',\n frac78: '⅞',\n frasl: '⁄',\n frown: '⌢',\n fscr: '𝒻',\n gE: '≧',\n gEl: '⪌',\n gacute: 'ǵ',\n gamma: 'γ',\n gammad: 'ϝ',\n gap: '⪆',\n gbreve: 'ğ',\n gcirc: 'ĝ',\n gcy: 'г',\n gdot: 'ġ',\n ge: '≥',\n gel: '⋛',\n geq: '≥',\n geqq: '≧',\n geqslant: '⩾',\n ges: '⩾',\n gescc: '⪩',\n gesdot: '⪀',\n gesdoto: '⪂',\n gesdotol: '⪄',\n gesl: '⋛︀',\n gesles: '⪔',\n gfr: '𝔤',\n gg: '≫',\n ggg: '⋙',\n gimel: 'ℷ',\n gjcy: 'ѓ',\n gl: '≷',\n glE: '⪒',\n gla: '⪥',\n glj: '⪤',\n gnE: '≩',\n gnap: '⪊',\n gnapprox: '⪊',\n gne: '⪈',\n gneq: '⪈',\n gneqq: '≩',\n gnsim: '⋧',\n gopf: '𝕘',\n grave: '`',\n gscr: 'ℊ',\n gsim: '≳',\n gsime: '⪎',\n gsiml: '⪐',\n gt: '>',\n gtcc: '⪧',\n gtcir: '⩺',\n gtdot: '⋗',\n gtlPar: '⦕',\n gtquest: '⩼',\n gtrapprox: '⪆',\n gtrarr: '⥸',\n gtrdot: '⋗',\n gtreqless: '⋛',\n gtreqqless: '⪌',\n gtrless: '≷',\n gtrsim: '≳',\n gvertneqq: '≩︀',\n gvnE: '≩︀',\n hArr: '⇔',\n hairsp: ' ',\n half: '½',\n hamilt: 'ℋ',\n hardcy: 'ъ',\n harr: '↔',\n harrcir: '⥈',\n harrw: '↭',\n hbar: 'ℏ',\n hcirc: 'ĥ',\n hearts: '♥',\n heartsuit: '♥',\n hellip: '…',\n hercon: '⊹',\n hfr: '𝔥',\n hksearow: '⤥',\n hkswarow: '⤦',\n hoarr: '⇿',\n homtht: '∻',\n hookleftarrow: '↩',\n hookrightarrow: '↪',\n hopf: '𝕙',\n horbar: '―',\n hscr: '𝒽',\n hslash: 'ℏ',\n hstrok: 'ħ',\n hybull: '⁃',\n hyphen: '‐',\n iacute: 'í',\n ic: '⁣',\n icirc: 'î',\n icy: 'и',\n iecy: 'е',\n iexcl: '¡',\n iff: '⇔',\n ifr: '𝔦',\n igrave: 'ì',\n ii: 'ⅈ',\n iiiint: '⨌',\n iiint: '∭',\n iinfin: '⧜',\n iiota: '℩',\n ijlig: 'ij',\n imacr: 'ī',\n image: 'ℑ',\n imagline: 'ℐ',\n imagpart: 'ℑ',\n imath: 'ı',\n imof: '⊷',\n imped: 'Ƶ',\n in: '∈',\n incare: '℅',\n infin: '∞',\n infintie: '⧝',\n inodot: 'ı',\n int: '∫',\n intcal: '⊺',\n integers: 'ℤ',\n intercal: '⊺',\n intlarhk: '⨗',\n intprod: '⨼',\n iocy: 'ё',\n iogon: 'į',\n iopf: '𝕚',\n iota: 'ι',\n iprod: '⨼',\n iquest: '¿',\n iscr: '𝒾',\n isin: '∈',\n isinE: '⋹',\n isindot: '⋵',\n isins: '⋴',\n isinsv: '⋳',\n isinv: '∈',\n it: '⁢',\n itilde: 'ĩ',\n iukcy: 'і',\n iuml: 'ï',\n jcirc: 'ĵ',\n jcy: 'й',\n jfr: '𝔧',\n jmath: 'ȷ',\n jopf: '𝕛',\n jscr: '𝒿',\n jsercy: 'ј',\n jukcy: 'є',\n kappa: 'κ',\n kappav: 'ϰ',\n kcedil: 'ķ',\n kcy: 'к',\n kfr: '𝔨',\n kgreen: 'ĸ',\n khcy: 'х',\n kjcy: 'ќ',\n kopf: '𝕜',\n kscr: '𝓀',\n lAarr: '⇚',\n lArr: '⇐',\n lAtail: '⤛',\n lBarr: '⤎',\n lE: '≦',\n lEg: '⪋',\n lHar: '⥢',\n lacute: 'ĺ',\n laemptyv: '⦴',\n lagran: 'ℒ',\n lambda: 'λ',\n lang: '⟨',\n langd: '⦑',\n langle: '⟨',\n lap: '⪅',\n laquo: '«',\n larr: '←',\n larrb: '⇤',\n larrbfs: '⤟',\n larrfs: '⤝',\n larrhk: '↩',\n larrlp: '↫',\n larrpl: '⤹',\n larrsim: '⥳',\n larrtl: '↢',\n lat: '⪫',\n latail: '⤙',\n late: '⪭',\n lates: '⪭︀',\n lbarr: '⤌',\n lbbrk: '❲',\n lbrace: '{',\n lbrack: '[',\n lbrke: '⦋',\n lbrksld: '⦏',\n lbrkslu: '⦍',\n lcaron: 'ľ',\n lcedil: 'ļ',\n lceil: '⌈',\n lcub: '{',\n lcy: 'л',\n ldca: '⤶',\n ldquo: '“',\n ldquor: '„',\n ldrdhar: '⥧',\n ldrushar: '⥋',\n ldsh: '↲',\n le: '≤',\n leftarrow: '←',\n leftarrowtail: '↢',\n leftharpoondown: '↽',\n leftharpoonup: '↼',\n leftleftarrows: '⇇',\n leftrightarrow: '↔',\n leftrightarrows: '⇆',\n leftrightharpoons: '⇋',\n leftrightsquigarrow: '↭',\n leftthreetimes: '⋋',\n leg: '⋚',\n leq: '≤',\n leqq: '≦',\n leqslant: '⩽',\n les: '⩽',\n lescc: '⪨',\n lesdot: '⩿',\n lesdoto: '⪁',\n lesdotor: '⪃',\n lesg: '⋚︀',\n lesges: '⪓',\n lessapprox: '⪅',\n lessdot: '⋖',\n lesseqgtr: '⋚',\n lesseqqgtr: '⪋',\n lessgtr: '≶',\n lesssim: '≲',\n lfisht: '⥼',\n lfloor: '⌊',\n lfr: '𝔩',\n lg: '≶',\n lgE: '⪑',\n lhard: '↽',\n lharu: '↼',\n lharul: '⥪',\n lhblk: '▄',\n ljcy: 'љ',\n ll: '≪',\n llarr: '⇇',\n llcorner: '⌞',\n llhard: '⥫',\n lltri: '◺',\n lmidot: 'ŀ',\n lmoust: '⎰',\n lmoustache: '⎰',\n lnE: '≨',\n lnap: '⪉',\n lnapprox: '⪉',\n lne: '⪇',\n lneq: '⪇',\n lneqq: '≨',\n lnsim: '⋦',\n loang: '⟬',\n loarr: '⇽',\n lobrk: '⟦',\n longleftarrow: '⟵',\n longleftrightarrow: '⟷',\n longmapsto: '⟼',\n longrightarrow: '⟶',\n looparrowleft: '↫',\n looparrowright: '↬',\n lopar: '⦅',\n lopf: '𝕝',\n loplus: '⨭',\n lotimes: '⨴',\n lowast: '∗',\n lowbar: '_',\n loz: '◊',\n lozenge: '◊',\n lozf: '⧫',\n lpar: '(',\n lparlt: '⦓',\n lrarr: '⇆',\n lrcorner: '⌟',\n lrhar: '⇋',\n lrhard: '⥭',\n lrm: '‎',\n lrtri: '⊿',\n lsaquo: '‹',\n lscr: '𝓁',\n lsh: '↰',\n lsim: '≲',\n lsime: '⪍',\n lsimg: '⪏',\n lsqb: '[',\n lsquo: '‘',\n lsquor: '‚',\n lstrok: 'ł',\n lt: '<',\n ltcc: '⪦',\n ltcir: '⩹',\n ltdot: '⋖',\n lthree: '⋋',\n ltimes: '⋉',\n ltlarr: '⥶',\n ltquest: '⩻',\n ltrPar: '⦖',\n ltri: '◃',\n ltrie: '⊴',\n ltrif: '◂',\n lurdshar: '⥊',\n luruhar: '⥦',\n lvertneqq: '≨︀',\n lvnE: '≨︀',\n mDDot: '∺',\n macr: '¯',\n male: '♂',\n malt: '✠',\n maltese: '✠',\n map: '↦',\n mapsto: '↦',\n mapstodown: '↧',\n mapstoleft: '↤',\n mapstoup: '↥',\n marker: '▮',\n mcomma: '⨩',\n mcy: 'м',\n mdash: '—',\n measuredangle: '∡',\n mfr: '𝔪',\n mho: '℧',\n micro: 'µ',\n mid: '∣',\n midast: '*',\n midcir: '⫰',\n middot: '·',\n minus: '−',\n minusb: '⊟',\n minusd: '∸',\n minusdu: '⨪',\n mlcp: '⫛',\n mldr: '…',\n mnplus: '∓',\n models: '⊧',\n mopf: '𝕞',\n mp: '∓',\n mscr: '𝓂',\n mstpos: '∾',\n mu: 'μ',\n multimap: '⊸',\n mumap: '⊸',\n nGg: '⋙̸',\n nGt: '≫⃒',\n nGtv: '≫̸',\n nLeftarrow: '⇍',\n nLeftrightarrow: '⇎',\n nLl: '⋘̸',\n nLt: '≪⃒',\n nLtv: '≪̸',\n nRightarrow: '⇏',\n nVDash: '⊯',\n nVdash: '⊮',\n nabla: '∇',\n nacute: 'ń',\n nang: '∠⃒',\n nap: '≉',\n napE: '⩰̸',\n napid: '≋̸',\n napos: 'ʼn',\n napprox: '≉',\n natur: '♮',\n natural: '♮',\n naturals: 'ℕ',\n nbsp: ' ',\n nbump: '≎̸',\n nbumpe: '≏̸',\n ncap: '⩃',\n ncaron: 'ň',\n ncedil: 'ņ',\n ncong: '≇',\n ncongdot: '⩭̸',\n ncup: '⩂',\n ncy: 'н',\n ndash: '–',\n ne: '≠',\n neArr: '⇗',\n nearhk: '⤤',\n nearr: '↗',\n nearrow: '↗',\n nedot: '≐̸',\n nequiv: '≢',\n nesear: '⤨',\n nesim: '≂̸',\n nexist: '∄',\n nexists: '∄',\n nfr: '𝔫',\n ngE: '≧̸',\n nge: '≱',\n ngeq: '≱',\n ngeqq: '≧̸',\n ngeqslant: '⩾̸',\n nges: '⩾̸',\n ngsim: '≵',\n ngt: '≯',\n ngtr: '≯',\n nhArr: '⇎',\n nharr: '↮',\n nhpar: '⫲',\n ni: '∋',\n nis: '⋼',\n nisd: '⋺',\n niv: '∋',\n njcy: 'њ',\n nlArr: '⇍',\n nlE: '≦̸',\n nlarr: '↚',\n nldr: '‥',\n nle: '≰',\n nleftarrow: '↚',\n nleftrightarrow: '↮',\n nleq: '≰',\n nleqq: '≦̸',\n nleqslant: '⩽̸',\n nles: '⩽̸',\n nless: '≮',\n nlsim: '≴',\n nlt: '≮',\n nltri: '⋪',\n nltrie: '⋬',\n nmid: '∤',\n nopf: '𝕟',\n not: '¬',\n notin: '∉',\n notinE: '⋹̸',\n notindot: '⋵̸',\n notinva: '∉',\n notinvb: '⋷',\n notinvc: '⋶',\n notni: '∌',\n notniva: '∌',\n notnivb: '⋾',\n notnivc: '⋽',\n npar: '∦',\n nparallel: '∦',\n nparsl: '⫽⃥',\n npart: '∂̸',\n npolint: '⨔',\n npr: '⊀',\n nprcue: '⋠',\n npre: '⪯̸',\n nprec: '⊀',\n npreceq: '⪯̸',\n nrArr: '⇏',\n nrarr: '↛',\n nrarrc: '⤳̸',\n nrarrw: '↝̸',\n nrightarrow: '↛',\n nrtri: '⋫',\n nrtrie: '⋭',\n nsc: '⊁',\n nsccue: '⋡',\n nsce: '⪰̸',\n nscr: '𝓃',\n nshortmid: '∤',\n nshortparallel: '∦',\n nsim: '≁',\n nsime: '≄',\n nsimeq: '≄',\n nsmid: '∤',\n nspar: '∦',\n nsqsube: '⋢',\n nsqsupe: '⋣',\n nsub: '⊄',\n nsubE: '⫅̸',\n nsube: '⊈',\n nsubset: '⊂⃒',\n nsubseteq: '⊈',\n nsubseteqq: '⫅̸',\n nsucc: '⊁',\n nsucceq: '⪰̸',\n nsup: '⊅',\n nsupE: '⫆̸',\n nsupe: '⊉',\n nsupset: '⊃⃒',\n nsupseteq: '⊉',\n nsupseteqq: '⫆̸',\n ntgl: '≹',\n ntilde: 'ñ',\n ntlg: '≸',\n ntriangleleft: '⋪',\n ntrianglelefteq: '⋬',\n ntriangleright: '⋫',\n ntrianglerighteq: '⋭',\n nu: 'ν',\n num: '#',\n numero: '№',\n numsp: ' ',\n nvDash: '⊭',\n nvHarr: '⤄',\n nvap: '≍⃒',\n nvdash: '⊬',\n nvge: '≥⃒',\n nvgt: '>⃒',\n nvinfin: '⧞',\n nvlArr: '⤂',\n nvle: '≤⃒',\n nvlt: '<⃒',\n nvltrie: '⊴⃒',\n nvrArr: '⤃',\n nvrtrie: '⊵⃒',\n nvsim: '∼⃒',\n nwArr: '⇖',\n nwarhk: '⤣',\n nwarr: '↖',\n nwarrow: '↖',\n nwnear: '⤧',\n oS: 'Ⓢ',\n oacute: 'ó',\n oast: '⊛',\n ocir: '⊚',\n ocirc: 'ô',\n ocy: 'о',\n odash: '⊝',\n odblac: 'ő',\n odiv: '⨸',\n odot: '⊙',\n odsold: '⦼',\n oelig: 'œ',\n ofcir: '⦿',\n ofr: '𝔬',\n ogon: '˛',\n ograve: 'ò',\n ogt: '⧁',\n ohbar: '⦵',\n ohm: 'Ω',\n oint: '∮',\n olarr: '↺',\n olcir: '⦾',\n olcross: '⦻',\n oline: '‾',\n olt: '⧀',\n omacr: 'ō',\n omega: 'ω',\n omicron: 'ο',\n omid: '⦶',\n ominus: '⊖',\n oopf: '𝕠',\n opar: '⦷',\n operp: '⦹',\n oplus: '⊕',\n or: '∨',\n orarr: '↻',\n ord: '⩝',\n order: 'ℴ',\n orderof: 'ℴ',\n ordf: 'ª',\n ordm: 'º',\n origof: '⊶',\n oror: '⩖',\n orslope: '⩗',\n orv: '⩛',\n oscr: 'ℴ',\n oslash: 'ø',\n osol: '⊘',\n otilde: 'õ',\n otimes: '⊗',\n otimesas: '⨶',\n ouml: 'ö',\n ovbar: '⌽',\n par: '∥',\n para: '¶',\n parallel: '∥',\n parsim: '⫳',\n parsl: '⫽',\n part: '∂',\n pcy: 'п',\n percnt: '%',\n period: '.',\n permil: '‰',\n perp: '⊥',\n pertenk: '‱',\n pfr: '𝔭',\n phi: 'φ',\n phiv: 'ϕ',\n phmmat: 'ℳ',\n phone: '☎',\n pi: 'π',\n pitchfork: '⋔',\n piv: 'ϖ',\n planck: 'ℏ',\n planckh: 'ℎ',\n plankv: 'ℏ',\n plus: '+',\n plusacir: '⨣',\n plusb: '⊞',\n pluscir: '⨢',\n plusdo: '∔',\n plusdu: '⨥',\n pluse: '⩲',\n plusmn: '±',\n plussim: '⨦',\n plustwo: '⨧',\n pm: '±',\n pointint: '⨕',\n popf: '𝕡',\n pound: '£',\n pr: '≺',\n prE: '⪳',\n prap: '⪷',\n prcue: '≼',\n pre: '⪯',\n prec: '≺',\n precapprox: '⪷',\n preccurlyeq: '≼',\n preceq: '⪯',\n precnapprox: '⪹',\n precneqq: '⪵',\n precnsim: '⋨',\n precsim: '≾',\n prime: '′',\n primes: 'ℙ',\n prnE: '⪵',\n prnap: '⪹',\n prnsim: '⋨',\n prod: '∏',\n profalar: '⌮',\n profline: '⌒',\n profsurf: '⌓',\n prop: '∝',\n propto: '∝',\n prsim: '≾',\n prurel: '⊰',\n pscr: '𝓅',\n psi: 'ψ',\n puncsp: ' ',\n qfr: '𝔮',\n qint: '⨌',\n qopf: '𝕢',\n qprime: '⁗',\n qscr: '𝓆',\n quaternions: 'ℍ',\n quatint: '⨖',\n quest: '?',\n questeq: '≟',\n quot: '\"',\n rAarr: '⇛',\n rArr: '⇒',\n rAtail: '⤜',\n rBarr: '⤏',\n rHar: '⥤',\n race: '∽̱',\n racute: 'ŕ',\n radic: '√',\n raemptyv: '⦳',\n rang: '⟩',\n rangd: '⦒',\n range: '⦥',\n rangle: '⟩',\n raquo: '»',\n rarr: '→',\n rarrap: '⥵',\n rarrb: '⇥',\n rarrbfs: '⤠',\n rarrc: '⤳',\n rarrfs: '⤞',\n rarrhk: '↪',\n rarrlp: '↬',\n rarrpl: '⥅',\n rarrsim: '⥴',\n rarrtl: '↣',\n rarrw: '↝',\n ratail: '⤚',\n ratio: '∶',\n rationals: 'ℚ',\n rbarr: '⤍',\n rbbrk: '❳',\n rbrace: '}',\n rbrack: ']',\n rbrke: '⦌',\n rbrksld: '⦎',\n rbrkslu: '⦐',\n rcaron: 'ř',\n rcedil: 'ŗ',\n rceil: '⌉',\n rcub: '}',\n rcy: 'р',\n rdca: '⤷',\n rdldhar: '⥩',\n rdquo: '”',\n rdquor: '”',\n rdsh: '↳',\n real: 'ℜ',\n realine: 'ℛ',\n realpart: 'ℜ',\n reals: 'ℝ',\n rect: '▭',\n reg: '®',\n rfisht: '⥽',\n rfloor: '⌋',\n rfr: '𝔯',\n rhard: '⇁',\n rharu: '⇀',\n rharul: '⥬',\n rho: 'ρ',\n rhov: 'ϱ',\n rightarrow: '→',\n rightarrowtail: '↣',\n rightharpoondown: '⇁',\n rightharpoonup: '⇀',\n rightleftarrows: '⇄',\n rightleftharpoons: '⇌',\n rightrightarrows: '⇉',\n rightsquigarrow: '↝',\n rightthreetimes: '⋌',\n ring: '˚',\n risingdotseq: '≓',\n rlarr: '⇄',\n rlhar: '⇌',\n rlm: '‏',\n rmoust: '⎱',\n rmoustache: '⎱',\n rnmid: '⫮',\n roang: '⟭',\n roarr: '⇾',\n robrk: '⟧',\n ropar: '⦆',\n ropf: '𝕣',\n roplus: '⨮',\n rotimes: '⨵',\n rpar: ')',\n rpargt: '⦔',\n rppolint: '⨒',\n rrarr: '⇉',\n rsaquo: '›',\n rscr: '𝓇',\n rsh: '↱',\n rsqb: ']',\n rsquo: '’',\n rsquor: '’',\n rthree: '⋌',\n rtimes: '⋊',\n rtri: '▹',\n rtrie: '⊵',\n rtrif: '▸',\n rtriltri: '⧎',\n ruluhar: '⥨',\n rx: '℞',\n sacute: 'ś',\n sbquo: '‚',\n sc: '≻',\n scE: '⪴',\n scap: '⪸',\n scaron: 'š',\n sccue: '≽',\n sce: '⪰',\n scedil: 'ş',\n scirc: 'ŝ',\n scnE: '⪶',\n scnap: '⪺',\n scnsim: '⋩',\n scpolint: '⨓',\n scsim: '≿',\n scy: 'с',\n sdot: '⋅',\n sdotb: '⊡',\n sdote: '⩦',\n seArr: '⇘',\n searhk: '⤥',\n searr: '↘',\n searrow: '↘',\n sect: '§',\n semi: ';',\n seswar: '⤩',\n setminus: '∖',\n setmn: '∖',\n sext: '✶',\n sfr: '𝔰',\n sfrown: '⌢',\n sharp: '♯',\n shchcy: 'щ',\n shcy: 'ш',\n shortmid: '∣',\n shortparallel: '∥',\n shy: '­',\n sigma: 'σ',\n sigmaf: 'ς',\n sigmav: 'ς',\n sim: '∼',\n simdot: '⩪',\n sime: '≃',\n simeq: '≃',\n simg: '⪞',\n simgE: '⪠',\n siml: '⪝',\n simlE: '⪟',\n simne: '≆',\n simplus: '⨤',\n simrarr: '⥲',\n slarr: '←',\n smallsetminus: '∖',\n smashp: '⨳',\n smeparsl: '⧤',\n smid: '∣',\n smile: '⌣',\n smt: '⪪',\n smte: '⪬',\n smtes: '⪬︀',\n softcy: 'ь',\n sol: '/',\n solb: '⧄',\n solbar: '⌿',\n sopf: '𝕤',\n spades: '♠',\n spadesuit: '♠',\n spar: '∥',\n sqcap: '⊓',\n sqcaps: '⊓︀',\n sqcup: '⊔',\n sqcups: '⊔︀',\n sqsub: '⊏',\n sqsube: '⊑',\n sqsubset: '⊏',\n sqsubseteq: '⊑',\n sqsup: '⊐',\n sqsupe: '⊒',\n sqsupset: '⊐',\n sqsupseteq: '⊒',\n squ: '□',\n square: '□',\n squarf: '▪',\n squf: '▪',\n srarr: '→',\n sscr: '𝓈',\n ssetmn: '∖',\n ssmile: '⌣',\n sstarf: '⋆',\n star: '☆',\n starf: '★',\n straightepsilon: 'ϵ',\n straightphi: 'ϕ',\n strns: '¯',\n sub: '⊂',\n subE: '⫅',\n subdot: '⪽',\n sube: '⊆',\n subedot: '⫃',\n submult: '⫁',\n subnE: '⫋',\n subne: '⊊',\n subplus: '⪿',\n subrarr: '⥹',\n subset: '⊂',\n subseteq: '⊆',\n subseteqq: '⫅',\n subsetneq: '⊊',\n subsetneqq: '⫋',\n subsim: '⫇',\n subsub: '⫕',\n subsup: '⫓',\n succ: '≻',\n succapprox: '⪸',\n succcurlyeq: '≽',\n succeq: '⪰',\n succnapprox: '⪺',\n succneqq: '⪶',\n succnsim: '⋩',\n succsim: '≿',\n sum: '∑',\n sung: '♪',\n sup1: '¹',\n sup2: '²',\n sup3: '³',\n sup: '⊃',\n supE: '⫆',\n supdot: '⪾',\n supdsub: '⫘',\n supe: '⊇',\n supedot: '⫄',\n suphsol: '⟉',\n suphsub: '⫗',\n suplarr: '⥻',\n supmult: '⫂',\n supnE: '⫌',\n supne: '⊋',\n supplus: '⫀',\n supset: '⊃',\n supseteq: '⊇',\n supseteqq: '⫆',\n supsetneq: '⊋',\n supsetneqq: '⫌',\n supsim: '⫈',\n supsub: '⫔',\n supsup: '⫖',\n swArr: '⇙',\n swarhk: '⤦',\n swarr: '↙',\n swarrow: '↙',\n swnwar: '⤪',\n szlig: 'ß',\n target: '⌖',\n tau: 'τ',\n tbrk: '⎴',\n tcaron: 'ť',\n tcedil: 'ţ',\n tcy: 'т',\n tdot: '⃛',\n telrec: '⌕',\n tfr: '𝔱',\n there4: '∴',\n therefore: '∴',\n theta: 'θ',\n thetasym: 'ϑ',\n thetav: 'ϑ',\n thickapprox: '≈',\n thicksim: '∼',\n thinsp: ' ',\n thkap: '≈',\n thksim: '∼',\n thorn: 'þ',\n tilde: '˜',\n times: '×',\n timesb: '⊠',\n timesbar: '⨱',\n timesd: '⨰',\n tint: '∭',\n toea: '⤨',\n top: '⊤',\n topbot: '⌶',\n topcir: '⫱',\n topf: '𝕥',\n topfork: '⫚',\n tosa: '⤩',\n tprime: '‴',\n trade: '™',\n triangle: '▵',\n triangledown: '▿',\n triangleleft: '◃',\n trianglelefteq: '⊴',\n triangleq: '≜',\n triangleright: '▹',\n trianglerighteq: '⊵',\n tridot: '◬',\n trie: '≜',\n triminus: '⨺',\n triplus: '⨹',\n trisb: '⧍',\n tritime: '⨻',\n trpezium: '⏢',\n tscr: '𝓉',\n tscy: 'ц',\n tshcy: 'ћ',\n tstrok: 'ŧ',\n twixt: '≬',\n twoheadleftarrow: '↞',\n twoheadrightarrow: '↠',\n uArr: '⇑',\n uHar: '⥣',\n uacute: 'ú',\n uarr: '↑',\n ubrcy: 'ў',\n ubreve: 'ŭ',\n ucirc: 'û',\n ucy: 'у',\n udarr: '⇅',\n udblac: 'ű',\n udhar: '⥮',\n ufisht: '⥾',\n ufr: '𝔲',\n ugrave: 'ù',\n uharl: '↿',\n uharr: '↾',\n uhblk: '▀',\n ulcorn: '⌜',\n ulcorner: '⌜',\n ulcrop: '⌏',\n ultri: '◸',\n umacr: 'ū',\n uml: '¨',\n uogon: 'ų',\n uopf: '𝕦',\n uparrow: '↑',\n updownarrow: '↕',\n upharpoonleft: '↿',\n upharpoonright: '↾',\n uplus: '⊎',\n upsi: 'υ',\n upsih: 'ϒ',\n upsilon: 'υ',\n upuparrows: '⇈',\n urcorn: '⌝',\n urcorner: '⌝',\n urcrop: '⌎',\n uring: 'ů',\n urtri: '◹',\n uscr: '𝓊',\n utdot: '⋰',\n utilde: 'ũ',\n utri: '▵',\n utrif: '▴',\n uuarr: '⇈',\n uuml: 'ü',\n uwangle: '⦧',\n vArr: '⇕',\n vBar: '⫨',\n vBarv: '⫩',\n vDash: '⊨',\n vangrt: '⦜',\n varepsilon: 'ϵ',\n varkappa: 'ϰ',\n varnothing: '∅',\n varphi: 'ϕ',\n varpi: 'ϖ',\n varpropto: '∝',\n varr: '↕',\n varrho: 'ϱ',\n varsigma: 'ς',\n varsubsetneq: '⊊︀',\n varsubsetneqq: '⫋︀',\n varsupsetneq: '⊋︀',\n varsupsetneqq: '⫌︀',\n vartheta: 'ϑ',\n vartriangleleft: '⊲',\n vartriangleright: '⊳',\n vcy: 'в',\n vdash: '⊢',\n vee: '∨',\n veebar: '⊻',\n veeeq: '≚',\n vellip: '⋮',\n verbar: '|',\n vert: '|',\n vfr: '𝔳',\n vltri: '⊲',\n vnsub: '⊂⃒',\n vnsup: '⊃⃒',\n vopf: '𝕧',\n vprop: '∝',\n vrtri: '⊳',\n vscr: '𝓋',\n vsubnE: '⫋︀',\n vsubne: '⊊︀',\n vsupnE: '⫌︀',\n vsupne: '⊋︀',\n vzigzag: '⦚',\n wcirc: 'ŵ',\n wedbar: '⩟',\n wedge: '∧',\n wedgeq: '≙',\n weierp: '℘',\n wfr: '𝔴',\n wopf: '𝕨',\n wp: '℘',\n wr: '≀',\n wreath: '≀',\n wscr: '𝓌',\n xcap: '⋂',\n xcirc: '◯',\n xcup: '⋃',\n xdtri: '▽',\n xfr: '𝔵',\n xhArr: '⟺',\n xharr: '⟷',\n xi: 'ξ',\n xlArr: '⟸',\n xlarr: '⟵',\n xmap: '⟼',\n xnis: '⋻',\n xodot: '⨀',\n xopf: '𝕩',\n xoplus: '⨁',\n xotime: '⨂',\n xrArr: '⟹',\n xrarr: '⟶',\n xscr: '𝓍',\n xsqcup: '⨆',\n xuplus: '⨄',\n xutri: '△',\n xvee: '⋁',\n xwedge: '⋀',\n yacute: 'ý',\n yacy: 'я',\n ycirc: 'ŷ',\n ycy: 'ы',\n yen: '¥',\n yfr: '𝔶',\n yicy: 'ї',\n yopf: '𝕪',\n yscr: '𝓎',\n yucy: 'ю',\n yuml: 'ÿ',\n zacute: 'ź',\n zcaron: 'ž',\n zcy: 'з',\n zdot: 'ż',\n zeetrf: 'ℨ',\n zeta: 'ζ',\n zfr: '𝔷',\n zhcy: 'ж',\n zigrarr: '⇝',\n zopf: '𝕫',\n zscr: '𝓏',\n zwj: '‍',\n zwnj: '‌'\n};","import { characterEntities } from 'character-entities';\nconst own = {}.hasOwnProperty;\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you’re building parsers yourself that follow\n * different rules compared to HTML.\n * This is optimized to be tiny in browsers.\n *\n * @param {string} value\n * `notin` (named), `#123` (deci), `#x123` (hexa).\n * @returns {string|false}\n * Decoded reference.\n */\nexport function decodeNamedCharacterReference(value) {\n return own.call(characterEntities, value) ? characterEntities[value] : false;\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this;\n let size = 0;\n /** @type {number} */\n let max;\n /** @type {(code: Code) => boolean} */\n let test;\n return start;\n\n /**\n * Start of character reference.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterReference');\n effects.enter('characterReferenceMarker');\n effects.consume(code);\n effects.exit('characterReferenceMarker');\n return open;\n }\n\n /**\n * After `&`, at `#` for numeric references or alphanumeric for named\n * references.\n *\n * ```markdown\n * > | a&b\n * ^\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric');\n effects.consume(code);\n effects.exit('characterReferenceMarkerNumeric');\n return numeric;\n }\n effects.enter('characterReferenceValue');\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n\n /**\n * After `#`, at `x` for hexadecimals or digit for decimals.\n *\n * ```markdown\n * > | a{b\n * ^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal');\n effects.consume(code);\n effects.exit('characterReferenceMarkerHexadecimal');\n effects.enter('characterReferenceValue');\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter('characterReferenceValue');\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n\n /**\n * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n *\n * The character reference kind defines what and how many characters are\n * allowed.\n *\n * ```markdown\n * > | a&b\n * ^^^\n * > | a{b\n * ^^^\n * > | a b\n * ^\n * ```\n *\n * @type {State}\n */\n function value(code) {\n if (code === 59 && size) {\n const token = effects.exit('characterReferenceValue');\n if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n return nok(code);\n }\n\n // To do: `markdown-rs` uses a different name:\n // `CharacterReferenceMarkerSemi`.\n effects.enter('characterReferenceMarker');\n effects.consume(code);\n effects.exit('characterReferenceMarker');\n effects.exit('characterReference');\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of character escape.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('characterEscape');\n effects.enter('escapeMarker');\n effects.consume(code);\n effects.exit('escapeMarker');\n return inside;\n }\n\n /**\n * After `\\`, at punctuation.\n *\n * ```markdown\n * > | a\\*b\n * ^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n // ASCII punctuation.\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue');\n effects.consume(code);\n effects.exit('characterEscapeValue');\n effects.exit('characterEscape');\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n\n /** @type {State} */\n function start(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, ok, 'linePrefix');\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n let index = -1;\n while (++index < events.length) {\n const token = events[index][1];\n if (token.type === 'labelImage' || token.type === 'labelLink' || token.type === 'labelEnd') {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2);\n token.type = 'data';\n index++;\n }\n }\n return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n let index = events.length;\n let offset = 0;\n /** @type {Token} */\n let token;\n /** @type {number | undefined} */\n let open;\n /** @type {number | undefined} */\n let close;\n /** @type {Array} */\n let media;\n\n // Find an opening.\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === 'link' || token.type === 'labelLink' && token._inactive) {\n break;\n }\n\n // Mark other link openings as inactive, as we can’t have links in\n // links.\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === 'labelImage' || token.type === 'labelLink') && !token._balanced) {\n open = index;\n if (token.type !== 'labelLink') {\n offset = 2;\n break;\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index;\n }\n }\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n };\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n };\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n };\n media = [['enter', group, context], ['enter', label, context]];\n\n // Opening marker.\n media = push(media, events.slice(open + 1, open + offset + 3));\n\n // Text open.\n media = push(media, [['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n // Text close, marker close, label close.\n media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n // Reference, resource, or so.\n media = push(media, events.slice(close + 1));\n\n // Media close.\n media = push(media, [['exit', group, context]]);\n splice(events, open, events.length, media);\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this;\n let index = self.events.length;\n /** @type {Token} */\n let labelStart;\n /** @type {boolean} */\n let defined;\n\n // Find an opening.\n while (index--) {\n if ((self.events[index][1].type === 'labelImage' || self.events[index][1].type === 'labelLink') && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n\n /**\n * Start of label end.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // If there is not an okay opening.\n if (!labelStart) {\n return nok(code);\n }\n\n // If the corresponding label (link) start is marked as inactive,\n // it means we’d be wrapping a link, like this:\n //\n // ```markdown\n // > | a [b [c](d) e](f) g.\n // ^\n // ```\n //\n // We can’t have that, so it’s just balanced brackets.\n if (labelStart._inactive) {\n return labelEndNok(code);\n }\n defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })));\n effects.enter('labelEnd');\n effects.enter('labelMarker');\n effects.consume(code);\n effects.exit('labelMarker');\n effects.exit('labelEnd');\n return after;\n }\n\n /**\n * After `]`.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n // an extension.\n\n // Resource (`[asd](fgh)`)?\n if (code === 40) {\n return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n }\n\n // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n if (code === 91) {\n return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n }\n\n // Shortcut (`[asd]`) reference?\n return defined ? labelEndOk(code) : labelEndNok(code);\n }\n\n /**\n * After `]`, at `[`, but not at a full reference.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceNotFull(code) {\n return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n }\n\n /**\n * Done, we found something.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * > | [a][b] c\n * ^\n * > | [a][] b\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndOk(code) {\n // Note: `markdown-rs` does a bunch of stuff here.\n return ok(code);\n }\n\n /**\n * Done, it’s nothing.\n *\n * There was an okay opening, but we didn’t match anything.\n *\n * ```markdown\n * > | [a](b c\n * ^\n * > | [a][b c\n * ^\n * > | [a] b\n * ^\n * ```\n *\n * @type {State}\n */\n function labelEndNok(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n return resourceStart;\n\n /**\n * At a resource.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceStart(code) {\n effects.enter('resource');\n effects.enter('resourceMarker');\n effects.consume(code);\n effects.exit('resourceMarker');\n return resourceBefore;\n }\n\n /**\n * In resource, after `(`, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBefore(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n }\n\n /**\n * In resource, after optional whitespace, at `)` or a destination.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceOpen(code) {\n if (code === 41) {\n return resourceEnd(code);\n }\n return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, 'resourceDestination', 'resourceDestinationLiteral', 'resourceDestinationLiteralMarker', 'resourceDestinationRaw', 'resourceDestinationString', 32)(code);\n }\n\n /**\n * In resource, after destination, at optional whitespace.\n *\n * ```markdown\n * > | [a](b) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n }\n\n /**\n * At invalid destination.\n *\n * ```markdown\n * > | [a](<<) b\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceDestinationMissing(code) {\n return nok(code);\n }\n\n /**\n * In resource, after destination and whitespace, at `(` or title.\n *\n * ```markdown\n * > | [a](b ) c\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceBetween(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, resourceTitleAfter, nok, 'resourceTitle', 'resourceTitleMarker', 'resourceTitleString')(code);\n }\n return resourceEnd(code);\n }\n\n /**\n * In resource, after title, at optional whitespace.\n *\n * ```markdown\n * > | [a](b \"c\") d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceTitleAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n }\n\n /**\n * In resource, at `)`.\n *\n * ```markdown\n * > | [a](b) d\n * ^\n * ```\n *\n * @type {State}\n */\n function resourceEnd(code) {\n if (code === 41) {\n effects.enter('resourceMarker');\n effects.consume(code);\n effects.exit('resourceMarker');\n effects.exit('resource');\n return ok;\n }\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n const self = this;\n return referenceFull;\n\n /**\n * In a reference (full), at the `[`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFull(code) {\n return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, 'reference', 'referenceMarker', 'referenceString')(code);\n }\n\n /**\n * In a reference (full), after `]`.\n *\n * ```markdown\n * > | [a][b] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullAfter(code) {\n return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n }\n\n /**\n * In reference (full) that was missing.\n *\n * ```markdown\n * > | [a][b d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceFullMissing(code) {\n return nok(code);\n }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n return referenceCollapsedStart;\n\n /**\n * In reference (collapsed), at `[`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedStart(code) {\n // We only attempt a collapsed label if there’s a `[`.\n\n effects.enter('reference');\n effects.enter('referenceMarker');\n effects.consume(code);\n effects.exit('referenceMarker');\n return referenceCollapsedOpen;\n }\n\n /**\n * In reference (collapsed), at `]`.\n *\n * > 👉 **Note**: we only get here if the label is defined.\n *\n * ```markdown\n * > | [a][] d\n * ^\n * ```\n *\n * @type {State}\n */\n function referenceCollapsedOpen(code) {\n if (code === 93) {\n effects.enter('referenceMarker');\n effects.consume(code);\n effects.exit('referenceMarker');\n effects.exit('reference');\n return ok;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > 👉 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n * Group.\n */\nexport function classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\nfunction resolveAllAttention(events, context) {\n let index = -1;\n /** @type {number} */\n let open;\n /** @type {Token} */\n let group;\n /** @type {Token} */\n let text;\n /** @type {Token} */\n let openingSequence;\n /** @type {Token} */\n let closingSequence;\n /** @type {number} */\n let use;\n /** @type {Array} */\n let nextEvents;\n /** @type {number} */\n let offset;\n\n // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index;\n\n // Now walk back to find an opener.\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n }\n\n // Number of markers to use from the sequence.\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n const start = Object.assign({}, events[open][1].end);\n const end = Object.assign({}, events[index][1].start);\n movePoint(start, -use);\n movePoint(end, use);\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n };\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n };\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n };\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n };\n events[open][1].end = Object.assign({}, openingSequence.start);\n events[index][1].start = Object.assign({}, closingSequence.end);\n nextEvents = [];\n\n // If there are more markers in the opening, add them before.\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n }\n\n // Opening.\n nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n // Always populated by defaults.\n\n // Between.\n nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n // Closing.\n nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n // If there are more markers in the closing, add them after.\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n splice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n }\n\n // Remove remaining sequences.\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n const previous = this.previous;\n const before = classifyCharacter(previous);\n\n /** @type {NonNullable} */\n let marker;\n return start;\n\n /**\n * Before a sequence.\n *\n * ```markdown\n * > | **\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n marker = code;\n effects.enter('attentionSequence');\n return inside(code);\n }\n\n /**\n * In a sequence.\n *\n * ```markdown\n * > | **\n * ^^\n * ```\n *\n * @type {State}\n */\n function inside(code) {\n if (code === marker) {\n effects.consume(code);\n return inside;\n }\n const token = effects.exit('attentionSequence');\n\n // To do: next major: move this to resolver, just like `markdown-rs`.\n const after = classifyCharacter(code);\n\n // Always populated by defaults.\n\n const open = !after || after === 2 && before || attentionMarkers.includes(code);\n const close = !before || before === 2 && after || attentionMarkers.includes(previous);\n token._open = Boolean(marker === 42 ? open : open && (before || !close));\n token._close = Boolean(marker === 42 ? close : close && (after || !open));\n return ok(code);\n }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n}","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n null: []\n};","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2;\n let contentStart = 3;\n /** @type {Token} */\n let content;\n /** @type {Token} */\n let text;\n\n // Prefix whitespace, part of the opening.\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2;\n }\n\n // Suffix whitespace, part of the closing.\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === 'whitespace') {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === 'atxHeadingSequence' && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === 'whitespace')) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n };\n splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of a heading (atx).\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n // To do: parse indent like `markdown-rs`.\n effects.enter('atxHeading');\n return before(code);\n }\n\n /**\n * After optional whitespace, at `#`.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function before(code) {\n effects.enter('atxHeadingSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return sequenceOpen;\n }\n\n // Always at least one `#`.\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence');\n return atBreak(code);\n }\n return nok(code);\n }\n\n /**\n * After something, before something else.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function atBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence');\n return sequenceFurther(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading');\n // To do: interrupt like `markdown-rs`.\n // // Feel free to interrupt.\n // tokenizer.interrupt = false\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code);\n }\n\n // To do: generate `data` tokens, add the `text` token later.\n // Needs edit map, see: `markdown.rs`.\n effects.enter('atxHeadingText');\n return data(code);\n }\n\n /**\n * In further sequence (after whitespace).\n *\n * Could be normal “visible” hashes in the heading or a final sequence.\n *\n * ```markdown\n * > | ## aa ##\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceFurther(code) {\n if (code === 35) {\n effects.consume(code);\n return sequenceFurther;\n }\n effects.exit('atxHeadingSequence');\n return atBreak(code);\n }\n\n /**\n * In text.\n *\n * ```markdown\n * > | ## aa\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText');\n return atBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (image) start.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelImage');\n effects.enter('labelImageMarker');\n effects.consume(code);\n effects.exit('labelImageMarker');\n return open;\n }\n\n /**\n * After `!`, at `[`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker');\n effects.consume(code);\n effects.exit('labelMarker');\n effects.exit('labelImage');\n return after;\n }\n return nok(code);\n }\n\n /**\n * After `![`.\n *\n * ```markdown\n * > | a ![b] c\n * ^\n * ```\n *\n * This is needed in because, when GFM footnotes are enabled, images never\n * form when started with a `^`.\n * Instead, links form:\n *\n * ```markdown\n * ![^a](b)\n *\n * ![^a][b]\n *\n * [b]: c\n * ```\n *\n * ```html\n *

!^a

\n *

!^a

\n * ```\n *\n * @type {State}\n */\n function after(code) {\n // To do: use a new field to do this, this is still needed for\n // `micromark-extension-gfm-footnote`, but the `label-start-link`\n // behavior isn’t.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 0;\n return start;\n\n /**\n * Start of an autolink.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('autolink');\n effects.enter('autolinkMarker');\n effects.consume(code);\n effects.exit('autolinkMarker');\n effects.enter('autolinkProtocol');\n return open;\n }\n\n /**\n * After `<`, at protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n return emailAtext(code);\n }\n\n /**\n * At second byte of protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeOrEmailAtext(code) {\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n // Count the previous alphabetical from `open` too.\n size = 1;\n return schemeInsideOrEmailAtext(code);\n }\n return emailAtext(code);\n }\n\n /**\n * In ambiguous protocol or atext.\n *\n * ```markdown\n * > | ab\n * ^\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n size = 0;\n return urlInside;\n }\n\n // ASCII alphanumeric and `+`, `-`, and `.`.\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n size = 0;\n return emailAtext(code);\n }\n\n /**\n * After protocol, in URL.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol');\n effects.enter('autolinkMarker');\n effects.consume(code);\n effects.exit('autolinkMarker');\n effects.exit('autolink');\n return ok;\n }\n\n // ASCII control, space, or `<`.\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n\n /**\n * In email atext.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n\n /**\n * In label, after at-sign or dot.\n *\n * ```markdown\n * > | ab\n * ^ ^\n * ```\n *\n * @type {State}\n */\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n\n /**\n * In label, where `.` and `>` are allowed.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the token type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail';\n effects.enter('autolinkMarker');\n effects.consume(code);\n effects.exit('autolinkMarker');\n effects.exit('autolink');\n return ok;\n }\n return emailValue(code);\n }\n\n /**\n * In label, where `.` and `>` are *not* allowed.\n *\n * Though, this is also used in `emailLabel` to parse other values.\n *\n * ```markdown\n * > | ab\n * ^\n * ```\n *\n * @type {State}\n */\n function emailValue(code) {\n // ASCII alphanumeric or `-`.\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n const next = code === 45 ? emailValue : emailLabel;\n effects.consume(code);\n return next;\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlpha, asciiAlphanumeric, markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this;\n /** @type {NonNullable | undefined} */\n let marker;\n /** @type {number} */\n let index;\n /** @type {State} */\n let returnState;\n return start;\n\n /**\n * Start of HTML (text).\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('htmlText');\n effects.enter('htmlTextData');\n effects.consume(code);\n return open;\n }\n\n /**\n * After `<`, at tag name or other stuff.\n *\n * ```markdown\n * > | a c\n * ^\n * > | a c\n * ^\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * > | a c\n * ^\n * > | a &<]]> c\n * ^\n * ```\n *\n * @type {State}\n */\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n\n /**\n * In a comment, after ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return nok(code);\n }\n\n /**\n * In comment.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return comment;\n }\n\n /**\n * In comment, after `-`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return commentEnd;\n }\n return comment(code);\n }\n\n /**\n * In comment, after `--`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function commentEnd(code) {\n return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n }\n\n /**\n * After ` | a &<]]> b\n * ^^^^^^\n * ```\n *\n * @type {State}\n */\n function cdataOpenInside(code) {\n const value = 'CDATA[';\n if (code === value.charCodeAt(index++)) {\n effects.consume(code);\n return index === value.length ? cdata : cdataOpenInside;\n }\n return nok(code);\n }\n\n /**\n * In CDATA.\n *\n * ```markdown\n * > | a &<]]> b\n * ^^^\n * ```\n *\n * @type {State}\n */\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return cdata;\n }\n\n /**\n * In CDATA, after `]`, at another `]`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In CDATA, after `]]`, at `>`.\n *\n * ```markdown\n * > | a &<]]> b\n * ^\n * ```\n *\n * @type {State}\n */\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n\n /**\n * In declaration.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return declaration;\n }\n\n /**\n * In instruction.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return instruction;\n }\n\n /**\n * In instruction, after `?`, at `>`.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseStart(code) {\n // ASCII alphabetical.\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagClose(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n\n /**\n * In closing tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n\n /**\n * After ` | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpen(code) {\n // ASCII alphanumerical and `-`.\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In opening tag, after tag name.\n *\n * ```markdown\n * > | a c\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n\n // ASCII alphabetical and `:` and `_`.\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n\n /**\n * In attribute name.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeName(code) {\n // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n\n /**\n * After attribute name, before initializer, the end of the tag, or\n * whitespace.\n *\n * ```markdown\n * > | a d\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n\n /**\n * Before unquoted, double quoted, or single quoted attribute value, allowing\n * whitespace.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return lineEndingBefore(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * In double or single quoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return lineEndingBefore(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n\n /**\n * In unquoted attribute value.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n }\n\n /**\n * After double or single quoted attribute value, before whitespace or the end\n * of the tag.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n\n /**\n * In certain circumstances of a tag where only an `>` is allowed.\n *\n * ```markdown\n * > | a e\n * ^\n * ```\n *\n * @type {State}\n */\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit('htmlTextData');\n effects.exit('htmlText');\n return ok;\n }\n return nok(code);\n }\n\n /**\n * At eol.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * > | a \n * ```\n *\n * @type {State}\n */\n function lineEndingBefore(code) {\n effects.exit('htmlTextData');\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return lineEndingAfter;\n }\n\n /**\n * After eol, at optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfter(code) {\n // Always populated by defaults.\n\n return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, 'linePrefix', self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n }\n\n /**\n * After eol, after optional whitespace.\n *\n * > 👉 **Note**: we can’t have blank lines in text, so no need to worry about\n * > empty tokens.\n *\n * ```markdown\n * | a \n * ^\n * ```\n *\n * @type {State}\n */\n function lineEndingAfterPrefix(code) {\n effects.enter('htmlTextData');\n return returnState(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this;\n return start;\n\n /**\n * Start of label (link) start.\n *\n * ```markdown\n * > | a [b] c\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('labelLink');\n effects.enter('labelMarker');\n effects.consume(code);\n effects.exit('labelMarker');\n effects.exit('labelLink');\n return after;\n }\n\n /** @type {State} */\n function after(code) {\n // To do: this isn’t needed in `micromark-extension-gfm-footnote`,\n // remove.\n // Hidden footnotes hook.\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs ? nok(code) : ok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n\n /**\n * Start of a hard break (escape).\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('hardBreakEscape');\n effects.consume(code);\n return after;\n }\n\n /**\n * After `\\`, at eol.\n *\n * ```markdown\n * > | a\\\n * ^\n * | b\n * ```\n *\n * @type {State}\n */\n function after(code) {\n if (markdownLineEnding(code)) {\n effects.exit('hardBreakEscape');\n return ok(code);\n }\n return nok(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n};\n\n// To do: next major: don’t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4;\n let headEnterIndex = 3;\n /** @type {number} */\n let index;\n /** @type {number | undefined} */\n let enter;\n\n // If we start and end with an EOL or a space.\n if ((events[headEnterIndex][1].type === 'lineEnding' || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === 'lineEnding' || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex;\n\n // And we have data.\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding';\n events[tailExitIndex][1].type = 'codeTextPadding';\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n }\n\n // Merge adjacent spaces and data.\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === 'lineEnding') {\n events[enter][1].type = 'codeTextData';\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === 'characterEscape';\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this;\n let sizeOpen = 0;\n /** @type {number} */\n let size;\n /** @type {Token} */\n let token;\n return start;\n\n /**\n * Start of code (text).\n *\n * ```markdown\n * > | `a`\n * ^\n * > | \\`a`\n * ^\n * ```\n *\n * @type {State}\n */\n function start(code) {\n effects.enter('codeText');\n effects.enter('codeTextSequence');\n return sequenceOpen(code);\n }\n\n /**\n * In opening sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceOpen(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit('codeTextSequence');\n return between(code);\n }\n\n /**\n * Between something and something else.\n *\n * ```markdown\n * > | `a`\n * ^^\n * ```\n *\n * @type {State}\n */\n function between(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n }\n\n // To do: next major: don’t do spaces in resolve, but when compiling,\n // like `markdown-rs`.\n // Tabs don’t work, and virtual spaces don’t make sense.\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return between;\n }\n\n // Closing fence? Could also be data.\n if (code === 96) {\n token = effects.enter('codeTextSequence');\n size = 0;\n return sequenceClose(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return between;\n }\n\n // Data.\n effects.enter('codeTextData');\n return data(code);\n }\n\n /**\n * In data.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit('codeTextData');\n return between(code);\n }\n effects.consume(code);\n return data;\n }\n\n /**\n * In closing sequence.\n *\n * ```markdown\n * > | `a`\n * ^\n * ```\n *\n * @type {State}\n */\n function sequenceClose(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return sequenceClose;\n }\n\n // Done!\n if (size === sizeOpen) {\n effects.exit('codeTextSequence');\n effects.exit('codeText');\n return ok(code);\n }\n\n // More or less accents: mark as data.\n token.type = 'codeTextData';\n return data(code);\n }\n}","/**\n * @typedef {import('micromark-util-types').Create} Create\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { text, string } from './initialize/text.js';\nimport { createTokenizer } from './create-tokenizer.js';\nimport * as defaultConstructs from './constructs.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n * @returns {ParseContext}\n */\nexport function parse(options) {\n const settings = options || {};\n const constructs = /** @type {FullNormalizedExtension} */\n combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n /** @type {ParseContext} */\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n };\n return parser;\n\n /**\n * @param {InitialConstruct} initial\n */\n function create(initial) {\n return creator;\n /** @type {Create} */\n function creator(from) {\n return createTokenizer(parser, initial, from);\n }\n }\n}","/**\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {boolean | null | undefined} [end=false]\n * @returns {Array}\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n */\nexport function preprocess() {\n let column = 1;\n let buffer = '';\n /** @type {boolean | undefined} */\n let start = true;\n /** @type {boolean | undefined} */\n let atCarriageReturn;\n return preprocessor;\n\n /** @type {Preprocessor} */\n function preprocessor(value, encoding, end) {\n /** @type {Array} */\n const chunks = [];\n /** @type {RegExpMatchArray | null} */\n let match;\n /** @type {number} */\n let next;\n /** @type {number} */\n let startPosition;\n /** @type {number} */\n let endPosition;\n /** @type {Code} */\n let code;\n\n // @ts-expect-error `Buffer` does allow an encoding.\n value = buffer + value.toString(encoding);\n startPosition = 0;\n buffer = '';\n if (start) {\n // To do: `markdown-rs` actually parses BOMs (byte order mark).\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match && match.index !== undefined ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n switch (code) {\n case 0:\n {\n chunks.push(65533);\n column++;\n break;\n }\n case 9:\n {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n break;\n }\n case 10:\n {\n chunks.push(-4);\n column = 1;\n break;\n }\n default:\n {\n atCarriageReturn = true;\n column = 1;\n }\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCharCode(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n * Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space.\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of C0, and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55295 && code < 57344 ||\n // Noncharacters.\n code > 64975 && code < 65008 /* eslint-disable no-bitwise */ || (code & 65535) === 65535 || (code & 65535) === 65534 /* eslint-enable no-bitwise */ ||\n // Out of range\n code > 1114111) {\n return '\\uFFFD';\n }\n return String.fromCharCode(code);\n}","import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The “string” content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * Value to decode.\n * @returns {string}\n * Decoded value.\n */\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1;\n }\n\n // Reference.\n const head = $2.charCodeAt(0);\n if (head === 35) {\n const head = $2.charCodeAt(1);\n const hex = head === 120 || head === 88;\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n }\n return decodeNamedCharacterReference($2) || $0;\n}","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n *\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n *\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').StaticPhrasingContent} StaticPhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('mdast').ReferenceType} ReferenceType\n * @typedef {import('../index.js').CompileData} CompileData\n */\n\n/**\n * @typedef {Root | Content} Node\n * @typedef {Extract} Parent\n *\n * @typedef {Omit & {type: 'fragment', children: Array}} Fragment\n */\n\n/**\n * @callback Transform\n * Extra transform, to change the AST afterwards.\n * @param {Root} tree\n * Tree to transform.\n * @returns {Root | undefined | null | void}\n * New tree or nothing (in which case the current tree is used).\n *\n * @callback Handle\n * Handle a token.\n * @param {CompileContext} this\n * Context.\n * @param {Token} token\n * Current token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {Record} Handles\n * Token types mapping to handles\n *\n * @callback OnEnterError\n * Handle the case where the `right` token is open, but it is closed (by the\n * `left` token) or because we reached the end of the document.\n * @param {Omit} this\n * Context.\n * @param {Token | undefined} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @callback OnExitError\n * Handle the case where the `right` token is open but it is closed by\n * exiting the `left` token.\n * @param {Omit} this\n * Context.\n * @param {Token} left\n * Left token.\n * @param {Token} right\n * Right token.\n * @returns {void}\n * Nothing.\n *\n * @typedef {[Token, OnEnterError | undefined]} TokenTuple\n * Open token on the stack, with an optional error handler for when\n * that token isn’t closed properly.\n */\n\n/**\n * @typedef Config\n * Configuration.\n *\n * We have our defaults, but extensions will add more.\n * @property {Array} canContainEols\n * Token types where line endings are used.\n * @property {Handles} enter\n * Opening handles.\n * @property {Handles} exit\n * Closing handles.\n * @property {Array} transforms\n * Tree transforms.\n *\n * @typedef {Partial} Extension\n * Change how markdown tokens from micromark are turned into mdast.\n *\n * @typedef CompileContext\n * mdast compiler context.\n * @property {Array} stack\n * Stack of nodes.\n * @property {Array} tokenStack\n * Stack of tokens.\n * @property {(key: Key) => CompileData[Key]} getData\n * Get data from the key/value store.\n * @property {(key: Key, value?: CompileData[Key]) => void} setData\n * Set data into the key/value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {(this: CompileContext, node: Kind, token: Token, onError?: OnEnterError) => Kind} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {Config} config\n * Configuration.\n *\n * @typedef FromMarkdownOptions\n * Configuration for how to build mdast.\n * @property {Array> | null | undefined} [mdastExtensions]\n * Extensions for this utility to change how tokens are turned into a tree.\n *\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n * Configuration.\n */\n\n// To do: micromark: create a registry of tokens?\n// To do: next major: don’t return given `Node` from `enter`.\n// To do: next major: remove setter/getter.\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse } from 'micromark/lib/parse.js';\nimport { preprocess } from 'micromark/lib/preprocess.js';\nimport { postprocess } from 'micromark/lib/postprocess.js';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * @param value\n * Markdown to parse.\n * @param encoding\n * Character encoding for when `value` is `Buffer`.\n * @param options\n * Configuration.\n * @returns\n * mdast tree.\n */\nexport const fromMarkdown =\n/**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options | null | undefined) => Root) &\n * ((value: Value, options?: Options | null | undefined) => Root)\n * )}\n */\n\n/**\n * @param {Value} value\n * @param {Encoding | Options | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n */\nfunction (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n};\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n /** @type {Config} */\n const config = {\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n };\n configure(config, (options || {}).mdastExtensions || []);\n\n /** @type {CompileData} */\n const data = {};\n return compile;\n\n /**\n * Turn micromark events into an mdast tree.\n *\n * @param {Array} events\n * Events.\n * @returns {Root}\n * mdast tree.\n */\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n };\n /** @type {Omit} */\n const context = {\n stack: [tree],\n tokenStack: [],\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n };\n /** @type {Array} */\n const listStack = [];\n let index = -1;\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === 'listOrdered' || events[index][1].type === 'listUnordered') {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n const tail = listStack.pop();\n index = prepareList(events, tail, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n const handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(Object.assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n\n // Handle tokens still being open.\n if (context.tokenStack.length > 0) {\n const tail = context.tokenStack[context.tokenStack.length - 1];\n const handler = tail[1] || defaultOnError;\n handler.call(context, undefined, tail[0]);\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length > 0 ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length > 0 ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n\n // Call transforms.\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n\n /**\n * @param {Array} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n function prepareList(events, start, length) {\n let index = start - 1;\n let containerBalance = -1;\n let listSpread = false;\n /** @type {Token | undefined} */\n let listItem;\n /** @type {number | undefined} */\n let lineIndex;\n /** @type {number | undefined} */\n let firstBlankLineIndex;\n /** @type {boolean | undefined} */\n let atMarker;\n while (++index <= length) {\n const event = events[index];\n if (event[1].type === 'listUnordered' || event[1].type === 'listOrdered' || event[1].type === 'blockQuote') {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n } else if (event[1].type === 'linePrefix' || event[1].type === 'listItemValue' || event[1].type === 'listItemMarker' || event[1].type === 'listItemPrefix' || event[1].type === 'listItemPrefixWhitespace') {\n // Empty.\n } else {\n atMarker = undefined;\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === 'listItemPrefix' || containerBalance === -1 && event[0] === 'exit' && (event[1].type === 'listUnordered' || event[1].type === 'listOrdered')) {\n if (listItem) {\n let tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n const tailEvent = events[tailIndex];\n if (tailEvent[1].type === 'lineEnding' || tailEvent[1].type === 'lineEndingBlank') {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank';\n listSpread = true;\n }\n tailEvent[1].type = 'lineEnding';\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === 'linePrefix' || tailEvent[1].type === 'blockQuotePrefix' || tailEvent[1].type === 'blockQuotePrefixWhitespace' || tailEvent[1].type === 'blockQuoteMarker' || tailEvent[1].type === 'listItemIndent') {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: Object.assign({}, event[1].start),\n // @ts-expect-error: we’ll add `end` in a second.\n end: undefined\n };\n // @ts-expect-error: `listItem` is most definitely defined, TS...\n events.splice(index, 0, ['enter', listItem, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n\n /**\n * Set data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @param {CompileData[Key]} [value]\n * New value.\n * @returns {void}\n * Nothing.\n */\n function setData(key, value) {\n data[key] = value;\n }\n\n /**\n * Get data.\n *\n * @template {keyof CompileData} Key\n * Field type.\n * @param {Key} key\n * Key of field.\n * @returns {CompileData[Key]}\n * Value.\n */\n function getData(key) {\n return data[key];\n }\n\n /**\n * Create an opener handle.\n *\n * @param {(token: Token) => Node} create\n * Create a node.\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function opener(create, and) {\n return open;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @returns {void}\n */\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n\n /**\n * @template {Node} Kind\n * Node type.\n * @this {CompileContext}\n * Context.\n * @param {Kind} node\n * Node to enter.\n * @param {Token} token\n * Corresponding token.\n * @param {OnEnterError | undefined} [errorHandler]\n * Handle the case where this token is open, but it is closed by something else.\n * @returns {Kind}\n * The given node.\n */\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1];\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node);\n this.stack.push(node);\n this.tokenStack.push([token, errorHandler]);\n // @ts-expect-error: `end` will be patched later.\n node.position = {\n start: point(token.start)\n };\n return node;\n }\n\n /**\n * Create a closer handle.\n *\n * @param {Handle} [and]\n * Optional function to also run.\n * @returns {Handle}\n * Handle.\n */\n function closer(and) {\n return close;\n\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * Context.\n * @param {Token} token\n * Corresponding token.\n * @param {OnExitError | undefined} [onExitError]\n * Handle the case where another token is open.\n * @returns {Node}\n * The closed node.\n */\n function exit(token, onExitError) {\n const node = this.stack.pop();\n const open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0]);\n } else {\n const handler = open[1] || defaultOnError;\n handler.call(this, token, open[0]);\n }\n }\n node.position.end = point(token.end);\n return node;\n }\n\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor = this.stack[this.stack.length - 2];\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n setData('expectingFirstListItemValue');\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfenceinfo() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.lang = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfencemeta() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.meta = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return;\n this.buffer();\n setData('flowCodeInside', true);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodefenced() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n setData('flowCodeInside');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcodeindented() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitionlabelstring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.label = label;\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiontitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitdefinitiondestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitatxheadingsequence(token) {\n const node = this.stack[this.stack.length - 1];\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length;\n node.depth = depth;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheadinglinesequence(token) {\n const node = this.stack[this.stack.length - 1];\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterdata(token) {\n const node = this.stack[this.stack.length - 1];\n let tail = node.children[node.children.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n // @ts-expect-error: we’ll add `end` later.\n tail.position = {\n start: point(token.start)\n };\n // @ts-expect-error: Assume `parent` accepts `text`.\n node.children.push(tail);\n }\n this.stack.push(tail);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitdata(token) {\n const tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1];\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1];\n tail.position.end = point(token.end);\n setData('atHardBreak');\n return;\n }\n if (!getData('setextHeadingSlurpLineEnding') && config.canContainEols.includes(context.type)) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithardbreak() {\n setData('atHardBreak', true);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmlflow() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexithtmltext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcodetext() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.value = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlink() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n setData('referenceType');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitimage() {\n const node = this.stack[this.stack.length - 1];\n // Note: there are also `identifier` and `label` fields on this link node!\n // These are used / cleaned here.\n // To do: clean.\n if (getData('inReference')) {\n /** @type {ReferenceType} */\n const referenceType = getData('referenceType') || 'shortcut';\n node.type += 'Reference';\n // @ts-expect-error: mutate.\n node.referenceType = referenceType;\n // @ts-expect-error: mutate.\n delete node.url;\n delete node.title;\n } else {\n // @ts-expect-error: mutate.\n delete node.identifier;\n // @ts-expect-error: mutate.\n delete node.label;\n }\n setData('referenceType');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabeltext(token) {\n const string = this.sliceSerialize(token);\n const ancestor = this.stack[this.stack.length - 2];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n ancestor.label = decodeString(string);\n // @ts-expect-error: same as above.\n ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitlabel() {\n const fragment = this.stack[this.stack.length - 1];\n const value = this.resume();\n const node = this.stack[this.stack.length - 1];\n // Assume a reference.\n setData('inReference', true);\n if (node.type === 'link') {\n /** @type {Array} */\n // @ts-expect-error: Assume static phrasing content.\n const children = fragment.children;\n node.children = children;\n } else {\n node.alt = value;\n }\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcedestinationstring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.url = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresourcetitlestring() {\n const data = this.resume();\n const node = this.stack[this.stack.length - 1];\n node.title = data;\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitresource() {\n setData('inReference');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onenterreference() {\n setData('referenceType', 'collapsed');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitreferencestring(token) {\n const label = this.resume();\n const node = this.stack[this.stack.length - 1];\n // @ts-expect-error: stash this on the node, as it might become a reference\n // later.\n node.label = label;\n // @ts-expect-error: same as above.\n node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n setData('referenceType', 'full');\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token);\n const type = getData('characterReferenceType');\n /** @type {string} */\n let value;\n if (type) {\n value = decodeNumericCharacterReference(data, type === 'characterReferenceMarkerNumeric' ? 10 : 16);\n setData('characterReferenceType');\n } else {\n const result = decodeNamedCharacterReference(data);\n value = result;\n }\n const tail = this.stack.pop();\n tail.value += value;\n tail.position.end = point(token.end);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = this.sliceSerialize(token);\n }\n\n /**\n * @this {CompileContext}\n * @type {Handle}\n */\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n const node = this.stack[this.stack.length - 1];\n node.url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n\n /** @returns {Code} */\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n\n /** @returns {InlineCode} */\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n\n /** @returns {Definition} */\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n\n /** @returns {Emphasis} */\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n\n /** @returns {Heading} */\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n };\n }\n\n /** @returns {Break} */\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n\n /** @returns {HTML} */\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n\n /** @returns {Image} */\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n\n /** @returns {Link} */\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {List}\n */\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n\n /** @returns {Paragraph} */\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n\n /** @returns {Strong} */\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n\n /** @returns {Text} */\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n\n /** @returns {ThematicBreak} */\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n * Point-like value.\n * @returns {Point}\n * unist point.\n */\nfunction point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n}\n\n/**\n * @param {Config} combined\n * @param {Array>} extensions\n * @returns {void}\n */\nfunction configure(combined, extensions) {\n let index = -1;\n while (++index < extensions.length) {\n const value = extensions[index];\n if (Array.isArray(value)) {\n configure(combined, value);\n } else {\n extension(combined, value);\n }\n }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {void}\n */\nfunction extension(combined, extension) {\n /** @type {keyof Extension} */\n let key;\n for (key in extension) {\n if (own.call(extension, key)) {\n if (key === 'canContainEols') {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n } else if (key === 'transforms') {\n const right = extension[key];\n if (right) {\n combined[key].push(...right);\n }\n } else if (key === 'enter' || key === 'exit') {\n const right = extension[key];\n if (right) {\n Object.assign(combined[key], right);\n }\n }\n }\n }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n start: left.start,\n end: left.end\n }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is open');\n } else {\n throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n start: right.start,\n end: right.end\n }) + ') is still open');\n }\n}","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array} events\n * @returns {Array}\n */\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport { fromMarkdown } from 'mdast-util-from-markdown';\n\n/**\n * @this {import('unified').Processor}\n * @type {import('unified').Plugin<[Options?] | void[], string, Root>}\n */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction} */\n const parser = doc => {\n // Assume options.\n const settings = /** @type {Options} */this.data('settings');\n return fromMarkdown(doc, Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n }));\n };\n Object.assign(this, {\n Parser: parser\n });\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = '\\uFFFD';\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @typedef {Record} Props\n * @typedef {null | undefined | string | Props | TestFunctionAnything | Array} Test\n * Check for an arbitrary node, unaware of TypeScript inferral.\n *\n * @callback TestFunctionAnything\n * Check if a node passes a test, unaware of TypeScript inferral.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | void}\n * Whether this node passes the test.\n */\n\n/**\n * @template {Node} Kind\n * Node type.\n * @typedef {Kind['type'] | Partial | TestFunctionPredicate | Array | TestFunctionPredicate>} PredicateTest\n * Check for a node that can be inferred by TypeScript.\n */\n\n/**\n * Check if a node passes a certain test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback TestFunctionPredicate\n * Complex test function for a node that can be inferred by TypeScript.\n * @param {Node} node\n * A node.\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this node passes the test.\n */\n\n/**\n * @callback AssertAnything\n * Check that an arbitrary value is a node, unaware of TypeScript inferral.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if a node is a node and passes a certain node test.\n *\n * @template {Node} Kind\n * Node type.\n * @callback AssertPredicate\n * Check that an arbitrary value is a specific node, aware of TypeScript.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {node is Kind}\n * Whether this is a node and passes a test.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param node\n * Thing to check, typically `Node`.\n * @param test\n * A check for a specific node.\n * @param index\n * The node’s position in its parent.\n * @param parent\n * The node’s parent.\n * @returns\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n/**\n * @type {(\n * (() => false) &\n * ((node: unknown, test: PredicateTest, index: number, parent: Parent, context?: unknown) => node is Kind) &\n * ((node: unknown, test: PredicateTest, index?: null | undefined, parent?: null | undefined, context?: unknown) => node is Kind) &\n * ((node: unknown, test: Test, index: number, parent: Parent, context?: unknown) => boolean) &\n * ((node: unknown, test?: Test, index?: null | undefined, parent?: null | undefined, context?: unknown) => boolean)\n * )}\n */\n\n/**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n// eslint-disable-next-line max-params\nfunction is(node, test, index, parent, context) {\n const check = convert(test);\n if (index !== undefined && index !== null && (typeof index !== 'number' || index < 0 || index === Number.POSITIVE_INFINITY)) {\n throw new Error('Expected positive finite index');\n }\n if (parent !== undefined && parent !== null && (!is(parent) || !parent.children)) {\n throw new Error('Expected parent node');\n }\n if ((parent === undefined || parent === null) !== (index === undefined || index === null)) {\n throw new Error('Expected both parent and index');\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string' ? Boolean(check.call(context, node, index, parent)) : false;\n};\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns\n * An assertion.\n */\nexport const convert =\n/**\n * @type {(\n * ((test: PredicateTest) => AssertPredicate) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n\n/**\n * @param {Test} [test]\n * @returns {AssertAnything}\n */\nfunction (test) {\n if (test === undefined || test === null) {\n return ok;\n }\n if (typeof test === 'string') {\n return typeFactory(test);\n }\n if (typeof test === 'object') {\n return Array.isArray(test) ? anyFactory(test) : propsFactory(test);\n }\n if (typeof test === 'function') {\n return castFactory(test);\n }\n throw new Error('Expected function, string, or object as test');\n};\n\n/**\n * @param {Array} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array} */\n const checks = [];\n let index = -1;\n while (++index < tests.length) {\n checks[index] = convert(tests[index]);\n }\n return castFactory(any);\n\n /**\n * @this {unknown}\n * @param {Array} parameters\n * @returns {boolean}\n */\n function any() {\n let index = -1;\n for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {\n parameters[_key] = arguments[_key];\n }\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true;\n }\n return false;\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all);\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key;\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false;\n }\n return true;\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type);\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check;\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion;\n\n /**\n * @this {unknown}\n * @param {unknown} node\n * @param {Array} parameters\n * @returns {boolean}\n */\n function assertion(node) {\n for (var _len2 = arguments.length, parameters = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n parameters[_key2 - 1] = arguments[_key2];\n }\n return Boolean(node && typeof node === 'object' && 'type' in node &&\n // @ts-expect-error: fine.\n Boolean(check.call(this, node, ...parameters)));\n }\n}\nfunction ok() {\n return true;\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n */\n\n/**\n * @typedef {boolean | 'skip'} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * @template {Node} [Tree=Node]\n * Tree type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {Visitor, Check>, Extract, Parent>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n */\n\nimport { convert } from 'unist-util-is';\nimport { color } from './color.js';\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true;\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false;\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip';\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visitParents =\n/**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n\n/**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\nfunction (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test;\n test = null;\n }\n const is = convert(test);\n const step = reverse ? -1 : 1;\n factory(tree, undefined, [])();\n\n /**\n * @param {Node} node\n * @param {number | undefined} index\n * @param {Array} parents\n */\n function factory(node, index, parents) {\n /** @type {Record} */\n // @ts-expect-error: hush\n const value = node && typeof node === 'object' ? node : {};\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string' ? value.tagName :\n // `xast`\n typeof value.name === 'string' ? value.name : undefined;\n Object.defineProperty(visit, 'name', {\n value: 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n });\n }\n return visit;\n function visit() {\n /** @type {ActionTuple} */\n let result = [];\n /** @type {ActionTuple} */\n let subresult;\n /** @type {number} */\n let offset;\n /** @type {Array} */\n let grandparents;\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents));\n if (result[0] === EXIT) {\n return result;\n }\n }\n\n // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step;\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node);\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\n subresult = factory(node.children[offset], offset, grandparents)();\n if (subresult[0] === EXIT) {\n return subresult;\n }\n offset = typeof subresult[1] === 'number' ? subresult[1] : offset + step;\n }\n }\n return result;\n }\n }\n};\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {ActionTuple}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === 'number') {\n return [CONTINUE, value];\n }\n return [value];\n}","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * Check if `Child` can be a child of `Ancestor`.\n *\n * Returns the ancestor when `Child` can be a child of `Ancestor`, or returns\n * `never`.\n *\n * @template {Node} Ancestor\n * Node type.\n * @template {Node} Child\n * Node type.\n * @typedef {(\n * Ancestor extends Parent\n * ? Child extends Ancestor['children'][number]\n * ? Ancestor\n * : never\n * : never\n * )} ParentsOf\n */\n\n/**\n * @template {Node} [Visited=Node]\n * Visited node type.\n * @template {Parent} [Ancestor=Parent]\n * Ancestor type.\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends Node ? number | null : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends Node ? Ancestor | null : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n */\n\n/**\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Visited\n * Node type.\n * @template {Parent} Ancestor\n * Parent type.\n * @typedef {Visitor>} BuildVisitorFromMatch\n */\n\n/**\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n * @typedef {(\n * BuildVisitorFromMatch<\n * import('unist-util-visit-parents/complex-types.js').Matches,\n * Extract\n * >\n * )} BuildVisitorFromDescendants\n */\n\n/**\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n *\n * @template {Node} [Tree=Node]\n * Node type.\n * @template {Test} [Check=string]\n * Test type.\n * @typedef {(\n * BuildVisitorFromDescendants<\n * import('unist-util-visit-parents/complex-types.js').InclusiveDescendant,\n * Check\n * >\n * )} BuildVisitor\n */\n\nimport { visitParents } from 'unist-util-visit-parents';\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @param tree\n * Tree to traverse.\n * @param test\n * `unist-util-is`-compatible test\n * @param visitor\n * Handle each node.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns\n * Nothing.\n */\nexport const visit =\n/**\n * @type {(\n * ((tree: Tree, test: Check, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void) &\n * ((tree: Tree, visitor: BuildVisitor, reverse?: boolean | null | undefined) => void)\n * )}\n */\n\n/**\n * @param {Node} tree\n * @param {Test} test\n * @param {Visitor} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {void}\n */\nfunction (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n visitParents(tree, test, overload, reverse);\n\n /**\n * @param {Node} node\n * @param {Array} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1];\n return visitor(node, parent ? parent.children.indexOf(node) : null, parent);\n }\n};\nexport { CONTINUE, EXIT, SKIP } from 'unist-util-visit-parents';","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start');\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end');\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * Node.\n * @returns {Position}\n * Position.\n */\nexport function position(node) {\n return {\n start: pointStart(node),\n end: pointEnd(node)\n };\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start' | 'end'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point;\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {NodeLike | Node | null | undefined} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = node && node.position && node.position[type] || {};\n\n // To do: next major: don’t return points when invalid.\n return {\n // @ts-expect-error: in practice, null is allowed.\n line: point.line || null,\n // @ts-expect-error: in practice, null is allowed.\n column: point.column || null,\n // @ts-expect-error: in practice, null is allowed.\n offset: point.offset > -1 ? point.offset : null\n };\n }\n}","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Definition} Definition\n */\n\n/**\n * @typedef {Root | Content} Node\n *\n * @callback GetDefinition\n * Get a definition by identifier.\n * @param {string | null | undefined} [identifier]\n * Identifier of definition.\n * @returns {Definition | null}\n * Definition corresponding to `identifier` or `null`.\n */\n\nimport { visit } from 'unist-util-visit';\nconst own = {}.hasOwnProperty;\n\n/**\n * Find definitions in `tree`.\n *\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} tree\n * Tree to check.\n * @returns {GetDefinition}\n * Getter.\n */\nexport function definitions(tree) {\n /** @type {Record} */\n const cache = Object.create(null);\n if (!tree || !tree.type) {\n throw new Error('mdast-util-definitions expected node');\n }\n visit(tree, 'definition', definition => {\n const id = clean(definition.identifier);\n if (id && !own.call(cache, id)) {\n cache[id] = definition;\n }\n });\n return definition;\n\n /** @type {GetDefinition} */\n function definition(identifier) {\n const id = clean(identifier);\n // To do: next major: return `undefined` when not found.\n return id && own.call(cache, id) ? cache[id] : null;\n }\n}\n\n/**\n * @param {string | null | undefined} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase();\n}","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('hast').Element} Element\n * @typedef {import('../state.js').State} State\n */\n\nimport { normalizeUri } from 'micromark-util-sanitize-uri';\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const id = String(node.identifier).toUpperCase();\n const safeId = normalizeUri(id.toLowerCase());\n const index = state.footnoteOrder.indexOf(id);\n /** @type {number} */\n let counter;\n if (index === -1) {\n state.footnoteOrder.push(id);\n state.footnoteCounts[id] = 1;\n counter = state.footnoteOrder.length;\n } else {\n state.footnoteCounts[id]++;\n counter = index + 1;\n }\n const reuseCounter = state.footnoteCounts[id];\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fn-' + safeId,\n id: state.clobberPrefix + 'fnref-' + safeId + (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{\n type: 'text',\n value: String(counter)\n }]\n };\n state.patch(node, link);\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n };\n state.patch(node, sup);\n return state.applyData(node, sup);\n}","/**\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Reference} Reference\n * @typedef {import('mdast').Root} Root\n *\n * @typedef {import('./state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} References\n */\n\n// To do: next major: always return array.\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {References} node\n * Reference node (image, link).\n * @returns {ElementContent | Array}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType;\n let suffix = ']';\n if (subtype === 'collapsed') {\n suffix += '[]';\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']';\n }\n if (node.type === 'imageReference') {\n return {\n type: 'text',\n value: '![' + node.alt + suffix\n };\n }\n const contents = state.all(node);\n const head = contents[0];\n if (head && head.type === 'text') {\n head.value = '[' + head.value;\n } else {\n contents.unshift({\n type: 'text',\n value: '['\n });\n }\n const tail = contents[contents.length - 1];\n if (tail && tail.type === 'text') {\n tail.value += suffix;\n } else {\n contents.push({\n type: 'text',\n value: suffix\n });\n }\n return contents;\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | null | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node);\n const loose = parent ? listLoose(parent) : listItemLoose(node);\n /** @type {Properties} */\n const properties = {};\n /** @type {Array} */\n const children = [];\n if (typeof node.checked === 'boolean') {\n const head = results[0];\n /** @type {Element} */\n let paragraph;\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head;\n } else {\n paragraph = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: []\n };\n results.unshift(paragraph);\n }\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({\n type: 'text',\n value: ' '\n });\n }\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n },\n children: []\n });\n\n // According to github-markdown-css, this class hides bullet.\n // See: .\n properties.className = ['task-list-item'];\n }\n let index = -1;\n while (++index < results.length) {\n const child = results[index];\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (loose || index !== 0 || child.type !== 'element' || child.tagName !== 'p') {\n children.push({\n type: 'text',\n value: '\\n'\n });\n }\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children);\n } else {\n children.push(child);\n }\n }\n const tail = results[results.length - 1];\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({\n type: 'text',\n value: '\\n'\n });\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'li',\n properties,\n children\n };\n state.patch(node, result);\n return state.applyData(node, result);\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false;\n if (node.type === 'list') {\n loose = node.spread || false;\n const children = node.children;\n let index = -1;\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index]);\n }\n }\n return loose;\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread;\n return spread === undefined || spread === null ? node.children.length > 1 : spread;\n}","const tab = 9; /* `\\t` */\nconst space = 32; /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value);\n const search = /\\r?\\n|\\r/g;\n let match = search.exec(source);\n let last = 0;\n /** @type {Array} */\n const lines = [];\n while (match) {\n lines.push(trimLine(source.slice(last, match.index), last > 0, true), match[0]);\n last = match.index + match[0].length;\n match = search.exec(source);\n }\n lines.push(trimLine(source.slice(last), last > 0, false));\n return lines.join('');\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0;\n let endIndex = value.length;\n if (start) {\n let code = value.codePointAt(startIndex);\n while (code === tab || code === space) {\n startIndex++;\n code = value.codePointAt(startIndex);\n }\n }\n if (end) {\n let code = value.codePointAt(endIndex - 1);\n while (code === tab || code === space) {\n endIndex--;\n code = value.codePointAt(endIndex - 1);\n }\n }\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : '';\n}","import { blockquote } from './blockquote.js';\nimport { hardBreak } from './break.js';\nimport { code } from './code.js';\nimport { strikethrough } from './delete.js';\nimport { emphasis } from './emphasis.js';\nimport { footnoteReference } from './footnote-reference.js';\nimport { footnote } from './footnote.js';\nimport { heading } from './heading.js';\nimport { html } from './html.js';\nimport { imageReference } from './image-reference.js';\nimport { image } from './image.js';\nimport { inlineCode } from './inline-code.js';\nimport { linkReference } from './link-reference.js';\nimport { link } from './link.js';\nimport { listItem } from './list-item.js';\nimport { list } from './list.js';\nimport { paragraph } from './paragraph.js';\nimport { root } from './root.js';\nimport { strong } from './strong.js';\nimport { table } from './table.js';\nimport { tableRow } from './table-row.js';\nimport { tableCell } from './table-cell.js';\nimport { text } from './text.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/**\n * Default handlers for nodes.\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n};\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n // To do: next major: return `undefined`.\n return null;\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n };\n state.patch(node, result);\n return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'br',\n properties: {},\n children: []\n };\n state.patch(node, result);\n return [state.applyData(node, result), {\n type: 'text',\n value: '\\n'\n }];\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Code} Code\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : '';\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang ? node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/) : null;\n /** @type {Properties} */\n const properties = {};\n if (lang) {\n properties.className = ['language-' + lang];\n }\n\n // Create ``.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{\n type: 'text',\n value\n }]\n };\n if (node.meta) {\n result.data = {\n meta: node.meta\n };\n }\n state.patch(node, result);\n result = state.applyData(node, result);\n\n // Create `
`.\n  result = {\n    type: 'element',\n    tagName: 'pre',\n    properties: {},\n    children: [result]\n  };\n  state.patch(node, result);\n  return result;\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../state.js').State} State\n\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../state.js').State} State\n */\n\nimport { footnoteReference } from './footnote-reference.js';\n\n// To do: when both:\n// * \n// * \n// …are archived, remove this (also from mdast).\n// These inline notes are not used in GFM.\n\n/**\n * Turn an mdast `footnote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Footnote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnote(state, node) {\n  const footnoteById = state.footnoteById;\n  let no = 1;\n  while (no in footnoteById) no++;\n  const identifier = String(no);\n  footnoteById[identifier] = {\n    type: 'footnoteDefinition',\n    identifier,\n    children: [{\n      type: 'paragraph',\n      children: node.children\n    }],\n    position: node.position\n  };\n  return footnoteReference(state, {\n    type: 'footnoteReference',\n    identifier,\n    position: node.position\n  });\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').HTML} Html\n * @typedef {import('../state.js').State} State\n * @typedef {import('../../index.js').Raw} Raw\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Raw | Element | null}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.dangerous) {\n    /** @type {Raw} */\n    const result = {\n      type: 'raw',\n      value: node.value\n    };\n    state.patch(node, result);\n    return state.applyData(node, result);\n  }\n\n  // To do: next major: return `undefined`.\n  return null;\n}","/**\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('../state.js').State} State\n */\n\nimport { normalizeUri } from 'micromark-util-sanitize-uri';\nimport { revert } from '../revert.js';\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const def = state.definition(node.identifier);\n  if (!def) {\n    return revert(state, node);\n  }\n\n  /** @type {Properties} */\n  const properties = {\n    src: normalizeUri(def.url || ''),\n    alt: node.alt\n  };\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title;\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'img',\n    properties,\n    children: []\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Image} Image\n * @typedef {import('../state.js').State} State\n */\n\nimport { normalizeUri } from 'micromark-util-sanitize-uri';\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {\n    src: normalizeUri(node.url)\n  };\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt;\n  }\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title;\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'img',\n    properties,\n    children: []\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {\n    type: 'text',\n    value: node.value.replace(/\\r?\\n|\\r/g, ' ')\n  };\n  state.patch(node, text);\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('../state.js').State} State\n */\n\nimport { normalizeUri } from 'micromark-util-sanitize-uri';\nimport { revert } from '../revert.js';\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {ElementContent | Array}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const def = state.definition(node.identifier);\n  if (!def) {\n    return revert(state, node);\n  }\n\n  /** @type {Properties} */\n  const properties = {\n    href: normalizeUri(def.url || '')\n  };\n  if (def.title !== null && def.title !== undefined) {\n    properties.title = def.title;\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').Link} Link\n * @typedef {import('../state.js').State} State\n */\n\nimport { normalizeUri } from 'micromark-util-sanitize-uri';\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {\n    href: normalizeUri(node.url)\n  };\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title;\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('mdast').List} List\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {};\n  const results = state.all(node);\n  let index = -1;\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start;\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index];\n    if (child.type === 'element' && child.tagName === 'li' && child.properties && Array.isArray(child.properties.className) && child.properties.className.includes('task-list-item')) {\n      properties.className = ['contains-task-list'];\n      break;\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastRoot | HastElement}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {\n    type: 'root',\n    children: state.wrap(state.all(node))\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').Table} Table\n * @typedef {import('../state.js').State} State\n */\n\nimport { pointStart, pointEnd } from 'unist-util-position';\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node);\n  const firstRow = rows.shift();\n  /** @type {Array} */\n  const tableContent = [];\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    };\n    state.patch(node.children[0], head);\n    tableContent.push(head);\n  }\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    };\n    const start = pointStart(node.children[1]);\n    const end = pointEnd(node.children[node.children.length - 1]);\n    if (start.line && end.line) body.position = {\n      start,\n      end\n    };\n    tableContent.push(body);\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td',\n    // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('mdast').Content} Content\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').TableRow} TableRow\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * @typedef {Root | Content} Nodes\n * @typedef {Extract} Parents\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | null | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined;\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1;\n  const tagName = rowIndex === 0 ? 'th' : 'td';\n  const align = parent && parent.type === 'table' ? parent.align : undefined;\n  const length = align ? align.length : node.children.length;\n  let cellIndex = -1;\n  /** @type {Array} */\n  const cells = [];\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex];\n    /** @type {Properties} */\n    const properties = {};\n    const alignValue = align ? align[cellIndex] : undefined;\n    if (alignValue) {\n      properties.align = alignValue;\n    }\n\n    /** @type {Element} */\n    let result = {\n      type: 'element',\n      tagName,\n      properties,\n      children: []\n    };\n    if (cell) {\n      result.children = state.all(cell);\n      state.patch(cell, result);\n      result = state.applyData(node, result);\n    }\n    cells.push(result);\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').Text} HastText\n * @typedef {import('mdast').Text} MdastText\n * @typedef {import('../state.js').State} State\n */\n\nimport { trimLines } from 'trim-lines';\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastText | HastElement}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {\n    type: 'text',\n    value: trimLines(String(node.value))\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('../state.js').State} State\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Element} HastElement\n * @typedef {import('hast').ElementContent} HastElementContent\n * @typedef {import('hast').Properties} HastProperties\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('hast').Text} HastText\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Definition} MdastDefinition\n * @typedef {import('mdast').FootnoteDefinition} MdastFootnoteDefinition\n * @typedef {import('mdast').Parent} MdastParent\n * @typedef {import('mdast').Root} MdastRoot\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n * @typedef {Extract} MdastParents\n *\n * @typedef EmbeddedHastFields\n *   hast fields.\n * @property {string | null | undefined} [hName]\n *   Generate a specific element with this tag name instead.\n * @property {HastProperties | null | undefined} [hProperties]\n *   Generate an element with these properties instead.\n * @property {Array | null | undefined} [hChildren]\n *   Generate an element with this content instead.\n *\n * @typedef {Record & EmbeddedHastFields} MdastData\n *   mdast data with embedded hast fields.\n *\n * @typedef {MdastNodes & {data?: MdastData | null | undefined}} MdastNodeWithData\n *   mdast node with embedded hast data.\n *\n * @typedef PointLike\n *   Point-like value.\n * @property {number | null | undefined} [line]\n *   Line.\n * @property {number | null | undefined} [column]\n *   Column.\n * @property {number | null | undefined} [offset]\n *   Offset.\n *\n * @typedef PositionLike\n *   Position-like value.\n * @property {PointLike | null | undefined} [start]\n *   Point-like value.\n * @property {PointLike | null | undefined} [end]\n *   Point-like value.\n *\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | null | undefined} parent\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   hast node.\n *\n * @callback HFunctionProps\n *   Signature of `state` for when props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {HastProperties} props\n *   Properties.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @callback HFunctionNoProps\n *   Signature of `state` for when no props are passed.\n * @param {MdastNodes | PositionLike | null | undefined} node\n *   mdast node or unist position.\n * @param {string} tagName\n *   HTML tag name.\n * @param {Array | null | undefined} [children]\n *   hast content.\n * @returns {HastElement}\n *   Compiled element.\n *\n * @typedef HFields\n *   Info on `state`.\n * @property {boolean} dangerous\n *   Whether HTML is allowed.\n * @property {string} clobberPrefix\n *   Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n *   Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n *   HTML used for the footnote label.\n * @property {HastProperties} footnoteLabelProperties\n *   Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n *   Label to use from backreferences back to their footnote call.\n * @property {(identifier: string) => MdastDefinition | null} definition\n *   Definition cache.\n * @property {Record} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Array} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Record} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {Handler} unknownHandler\n *   Handler for any none not in `passThrough` or otherwise handled.\n * @property {(from: MdastNodes, node: HastNodes) => void} patch\n *   Copy a node’s positional info.\n * @property {(from: MdastNodes, to: Type) => Type | HastElement} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {(node: MdastNodes, parent: MdastParents | null | undefined) => HastElementContent | Array | null | undefined} one\n *   Transform an mdast node to hast.\n * @property {(node: MdastNodes) => Array} all\n *   Transform the children of an mdast parent to hast.\n * @property {(nodes: Array, loose?: boolean | null | undefined) => Array} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n * @property {(left: MdastNodeWithData | PositionLike | null | undefined, right: HastElementContent) => HastElementContent} augment\n *   Like `state` but lower-level and usable on non-elements.\n *   Deprecated: use `patch` and `applyData`.\n * @property {Array} passThrough\n *   List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree.\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` attribute on footnotes to prevent it from\n *   *clobbering*.\n * @property {string | null | undefined} [footnoteBackLabel='Back to content']\n *   Label to use from backreferences back to their footnote call (affects\n *   screen readers).\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Label to use for the footnotes section (affects screen readers).\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (note that `id: 'footnote-label'`\n *   is always added as footnote calls use it with `aria-describedby` to\n *   provide an accessible label).\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   Tag name to use for the footnote label.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes.\n * @property {Array | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n *   Handle nodes.\n *\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} State\n *   Info passed around.\n */\n\nimport { visit } from 'unist-util-visit';\nimport { position, pointStart, pointEnd } from 'unist-util-position';\nimport { generated } from 'unist-util-generated';\nimport { definitions } from 'mdast-util-definitions';\nimport { handlers } from './handlers/index.js';\nconst own = {}.hasOwnProperty;\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || {};\n  const dangerous = settings.allowDangerousHtml || false;\n  /** @type {Record} */\n  const footnoteById = {};\n\n  // To do: next major: add `options` to state, remove:\n  // `dangerous`, `clobberPrefix`, `footnoteLabel`, `footnoteLabelTagName`,\n  // `footnoteLabelProperties`, `footnoteBackLabel`, `passThrough`,\n  // `unknownHandler`.\n\n  // To do: next major: move to `state.options.allowDangerousHtml`.\n  state.dangerous = dangerous;\n  // To do: next major: move to `state.options`.\n  state.clobberPrefix = settings.clobberPrefix === undefined || settings.clobberPrefix === null ? 'user-content-' : settings.clobberPrefix;\n  // To do: next major: move to `state.options`.\n  state.footnoteLabel = settings.footnoteLabel || 'Footnotes';\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2';\n  // To do: next major: move to `state.options`.\n  state.footnoteLabelProperties = settings.footnoteLabelProperties || {\n    className: ['sr-only']\n  };\n  // To do: next major: move to `state.options`.\n  state.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content';\n  // To do: next major: move to `state.options`.\n  state.unknownHandler = settings.unknownHandler;\n  // To do: next major: move to `state.options`.\n  state.passThrough = settings.passThrough;\n  state.handlers = {\n    ...handlers,\n    ...settings.handlers\n  };\n\n  // To do: next major: replace utility with `definitionById` object, so we\n  // only walk once (as we need footnotes too).\n  state.definition = definitions(tree);\n  state.footnoteById = footnoteById;\n  /** @type {Array} */\n  state.footnoteOrder = [];\n  /** @type {Record} */\n  state.footnoteCounts = {};\n  state.patch = patch;\n  state.applyData = applyData;\n  state.one = oneBound;\n  state.all = allBound;\n  state.wrap = wrap;\n  // To do: next major: remove `augment`.\n  state.augment = augment;\n  visit(tree, 'footnoteDefinition', definition => {\n    const id = String(definition.identifier).toUpperCase();\n\n    // Mimick CM behavior of link definitions.\n    // See: .\n    if (!own.call(footnoteById, id)) {\n      footnoteById[id] = definition;\n    }\n  });\n\n  // @ts-expect-error Hush, it’s fine!\n  return state;\n\n  /**\n   * Finalise the created `right`, a hast node, from `left`, an mdast node.\n   *\n   * @param {MdastNodeWithData | PositionLike | null | undefined} left\n   * @param {HastElementContent} right\n   * @returns {HastElementContent}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function augment(left, right) {\n    // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n    if (left && 'data' in left && left.data) {\n      /** @type {MdastData} */\n      const data = left.data;\n      if (data.hName) {\n        if (right.type !== 'element') {\n          right = {\n            type: 'element',\n            tagName: '',\n            properties: {},\n            children: []\n          };\n        }\n        right.tagName = data.hName;\n      }\n      if (right.type === 'element' && data.hProperties) {\n        right.properties = {\n          ...right.properties,\n          ...data.hProperties\n        };\n      }\n      if ('children' in right && right.children && data.hChildren) {\n        right.children = data.hChildren;\n      }\n    }\n    if (left) {\n      const ctx = 'type' in left ? left : {\n        position: left\n      };\n      if (!generated(ctx)) {\n        // @ts-expect-error: fine.\n        right.position = {\n          start: pointStart(ctx),\n          end: pointEnd(ctx)\n        };\n      }\n    }\n    return right;\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Create an element for `node`.\n   *\n   * @type {HFunctionProps}\n   */\n  /* c8 ignore start */\n  // To do: next major: remove.\n  function state(node, tagName, props, children) {\n    if (Array.isArray(props)) {\n      children = props;\n      props = {};\n    }\n\n    // @ts-expect-error augmenting an element yields an element.\n    return augment(node, {\n      type: 'element',\n      tagName,\n      properties: props || {},\n      children: children || []\n    });\n  }\n  /* c8 ignore stop */\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | null | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {HastElementContent | Array | null | undefined}\n   *   Resulting hast node.\n   */\n  function oneBound(node, parent) {\n    // @ts-expect-error: that’s a state :)\n    return one(state, node, parent);\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array}\n   *   Resulting hast nodes.\n   */\n  function allBound(parent) {\n    // @ts-expect-error: that’s a state :)\n    return all(state, parent);\n  }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {void}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from);\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {Type | HastElement}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {Type | HastElement} */\n  let result = to;\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName;\n    const hChildren = from.data.hChildren;\n    const hProperties = from.data.hProperties;\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName;\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent is likely to keep the content around (otherwise: pass\n      // `hChildren`).\n      else {\n        result = {\n          type: 'element',\n          tagName: hName,\n          properties: {},\n          children: []\n        };\n\n        // To do: next major: take the children from the `root`, or inject the\n        // raw/text/comment or so into the element?\n        // if ('children' in node) {\n        //   // @ts-expect-error: assume `children` are allowed in elements.\n        //   result.children = node.children\n        // } else {\n        //   // @ts-expect-error: assume `node` is allowed in elements.\n        //   result.children.push(node)\n        // }\n      }\n    }\n    if (result.type === 'element' && hProperties) {\n      result.properties = {\n        ...result.properties,\n        ...hProperties\n      };\n    }\n    if ('children' in result && result.children && hChildren !== null && hChildren !== undefined) {\n      // @ts-expect-error: assume valid children are defined.\n      result.children = hChildren;\n    }\n  }\n  return result;\n}\n\n/**\n * Transform an mdast node into a hast node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   mdast node.\n * @param {MdastParents | null | undefined} [parent]\n *   Parent of `node`.\n * @returns {HastElementContent | Array | null | undefined}\n *   Resulting hast node.\n */\n// To do: next major: do not expose, keep bound.\nexport function one(state, node, parent) {\n  const type = node && node.type;\n\n  // Fail on non-nodes.\n  if (!type) {\n    throw new Error('Expected node, got `' + node + '`');\n  }\n  if (own.call(state.handlers, type)) {\n    return state.handlers[type](state, node, parent);\n  }\n  if (state.passThrough && state.passThrough.includes(type)) {\n    // To do: next major: deep clone.\n    // @ts-expect-error: types of passed through nodes are expected to be added manually.\n    return 'children' in node ? {\n      ...node,\n      children: all(state, node)\n    } : node;\n  }\n  if (state.unknownHandler) {\n    return state.unknownHandler(state, node, parent);\n  }\n  return defaultUnknownHandler(state, node);\n}\n\n/**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} parent\n *   mdast node to compile\n * @returns {Array}\n *   Resulting hast nodes.\n */\n// To do: next major: do not expose, keep bound.\nexport function all(state, parent) {\n  /** @type {Array} */\n  const values = [];\n  if ('children' in parent) {\n    const nodes = parent.children;\n    let index = -1;\n    while (++index < nodes.length) {\n      const result = one(state, nodes[index], parent);\n\n      // To do: see if we van clean this? Can we merge texts?\n      if (result) {\n        if (index && nodes[index - 1].type === 'break') {\n          if (!Array.isArray(result) && result.type === 'text') {\n            result.value = result.value.replace(/^\\s+/, '');\n          }\n          if (!Array.isArray(result) && result.type === 'element') {\n            const head = result.children[0];\n            if (head && head.type === 'text') {\n              head.value = head.value.replace(/^\\s+/, '');\n            }\n          }\n        }\n        if (Array.isArray(result)) {\n          values.push(...result);\n        } else {\n          values.push(result);\n        }\n      }\n    }\n  }\n  return values;\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastText | HastElement}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {};\n  /** @type {HastText | HastElement} */\n  const result = 'value' in node && !(own.call(data, 'hProperties') || own.call(data, 'hChildren')) ? {\n    type: 'text',\n    value: node.value\n  } : {\n    type: 'element',\n    tagName: 'div',\n    properties: {},\n    children: all(state, node)\n  };\n  state.patch(node, result);\n  return state.applyData(node, result);\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastContent} Type\n *   Node type.\n * @param {Array} nodes\n *   List of nodes to wrap.\n * @param {boolean | null | undefined} [loose=false]\n *   Whether to add line endings at start and end.\n * @returns {Array}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array} */\n  const result = [];\n  let index = -1;\n  if (loose) {\n    result.push({\n      type: 'text',\n      value: '\\n'\n    });\n  }\n  while (++index < nodes.length) {\n    if (index) result.push({\n      type: 'text',\n      value: '\\n'\n    });\n    result.push(nodes[index]);\n  }\n  if (loose && nodes.length > 0) {\n    result.push({\n      type: 'text',\n      value: '\\n'\n    });\n  }\n  return result;\n}","/**\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef NodeLike\n * @property {PositionLike | null | undefined} [position]\n */\n\n/**\n * Check if `node` is generated.\n *\n * @param {NodeLike | null | undefined} [node]\n *   Node to check.\n * @returns {boolean}\n *   Whether `node` is generated (does not have positional info).\n */\nexport function generated(node) {\n  return !node || !node.position || !node.position.start || !node.position.start.line || !node.position.start.column || !node.position.end || !node.position.end.line || !node.position.end.column;\n}","/**\n * @typedef {import('hast').Content} HastContent\n * @typedef {import('hast').Root} HastRoot\n *\n * @typedef {import('mdast').Content} MdastContent\n * @typedef {import('mdast').Root} MdastRoot\n *\n * @typedef {import('./state.js').Options} Options\n */\n\n/**\n * @typedef {HastRoot | HastContent} HastNodes\n * @typedef {MdastRoot | MdastContent} MdastNodes\n */\n\nimport { footer } from './footer.js';\nimport { createState } from './state.js';\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * 

\n * \n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `
` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration.\n * @returns {HastNodes | null | undefined}\n * hast tree.\n */\n// To do: next major: always return a single `root`.\nexport function toHast(tree, options) {\n const state = createState(tree, options);\n const node = state.one(tree, null);\n const foot = footer(state);\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push({\n type: 'text',\n value: '\\n'\n }, foot);\n }\n\n // To do: next major: always return root?\n return Array.isArray(node) ? {\n type: 'root',\n children: node\n } : node;\n}","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n *\n * @typedef {import('./state.js').State} State\n */\n\nimport { normalizeUri } from 'micromark-util-sanitize-uri';\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\nexport function footer(state) {\n /** @type {Array} */\n const listItems = [];\n let index = -1;\n while (++index < state.footnoteOrder.length) {\n const def = state.footnoteById[state.footnoteOrder[index]];\n if (!def) {\n continue;\n }\n const content = state.all(def);\n const id = String(def.identifier).toUpperCase();\n const safeId = normalizeUri(id.toLowerCase());\n let referenceIndex = 0;\n /** @type {Array} */\n const backReferences = [];\n while (++referenceIndex <= state.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + state.clobberPrefix + 'fnref-' + safeId + (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: state.footnoteBackLabel\n },\n children: [{\n type: 'text',\n value: '↩'\n }]\n };\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{\n type: 'text',\n value: String(referenceIndex)\n }]\n });\n }\n if (backReferences.length > 0) {\n backReferences.push({\n type: 'text',\n value: ' '\n });\n }\n backReferences.push(backReference);\n }\n const tail = content[content.length - 1];\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1];\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' ';\n } else {\n tail.children.push({\n type: 'text',\n value: ' '\n });\n }\n tail.children.push(...backReferences);\n } else {\n content.push(...backReferences);\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {\n id: state.clobberPrefix + 'fn-' + safeId\n },\n children: state.wrap(content, true)\n };\n state.patch(def, listItem);\n listItems.push(listItem);\n }\n if (listItems.length === 0) {\n return;\n }\n return {\n type: 'element',\n tagName: 'section',\n properties: {\n dataFootnotes: true,\n className: ['footnotes']\n },\n children: [{\n type: 'element',\n tagName: state.footnoteLabelTagName,\n properties: {\n // To do: use structured clone.\n ...JSON.parse(JSON.stringify(state.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [{\n type: 'text',\n value: state.footnoteLabel\n }]\n }, {\n type: 'text',\n value: '\\n'\n }, {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n }, {\n type: 'text',\n value: '\\n'\n }]\n };\n}","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport { toHast } from 'mdast-util-to-hast';\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype = /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n\nfunction (destination, options) {\n return destination && 'run' in destination ? bridge(destination, options) : mutate(destination || options);\n};\nexport default remarkRehype;\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, error => {\n next(error);\n });\n };\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return node => toHast(node, options);\n}","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property;\n this.normal = normal;\n if (space) {\n this.space = space;\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {};\n/** @type {Normal} */\nSchema.prototype.normal = {};\n/** @type {string|null} */\nSchema.prototype.space = null;","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport { Schema } from './schema.js';\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {};\n /** @type {Normal} */\n const normal = {};\n let index = -1;\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property);\n Object.assign(normal, definitions[index].normal);\n }\n return new Schema(property, normal, space);\n}","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase();\n}","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property;\n /** @type {string} */\n this.attribute = attribute;\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null;\nInfo.prototype.boolean = false;\nInfo.prototype.booleanish = false;\nInfo.prototype.overloadedBoolean = false;\nInfo.prototype.number = false;\nInfo.prototype.commaSeparated = false;\nInfo.prototype.spaceSeparated = false;\nInfo.prototype.commaOrSpaceSeparated = false;\nInfo.prototype.mustUseProperty = false;\nInfo.prototype.defined = false;","let powers = 0;\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();\nfunction increment() {\n return 2 ** ++powers;\n}","import { Info } from './info.js';\nimport * as types from './types.js';\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types);\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1;\n super(property, attribute);\n mark(this, 'space', space);\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}\nDefinedInfo.prototype.defined = true;\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value;\n }\n}","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport { normalize } from '../normalize.js';\nimport { Schema } from './schema.js';\nimport { DefinedInfo } from './defined-info.js';\nconst own = {}.hasOwnProperty;\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {};\n /** @type {Normal} */\n const normal = {};\n /** @type {string} */\n let prop;\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop];\n const info = new DefinedInfo(prop, definition.transform(definition.attributes || {}, prop), value, definition.space);\n if (definition.mustUseProperty && definition.mustUseProperty.includes(prop)) {\n info.mustUseProperty = true;\n }\n property[prop] = info;\n normal[normalize(prop)] = prop;\n normal[normalize(info.attribute)] = prop;\n }\n }\n return new Schema(property, normal, definition.space);\n}","import { create } from './util/create.js';\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase();\n },\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});","import { create } from './util/create.js';\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase();\n },\n properties: {\n xmlLang: null,\n xmlBase: null,\n xmlSpace: null\n }\n});","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute;\n}","import { caseSensitiveTransform } from './case-sensitive-transform.js';\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase());\n}","import { create } from './util/create.js';\nimport { caseInsensitiveTransform } from './util/case-insensitive-transform.js';\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {\n xmlnsxlink: 'xmlns:xlink'\n },\n transform: caseInsensitiveTransform,\n properties: {\n xmlns: null,\n xmlnsXLink: null\n }\n});","import { booleanish, number, spaceSeparated } from './util/types.js';\nimport { create } from './util/create.js';\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase();\n },\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});","import { boolean, overloadedBoolean, booleanish, number, spaceSeparated, commaSeparated } from './util/types.js';\nimport { create } from './util/create.js';\nimport { caseInsensitiveTransform } from './util/case-insensitive-transform.js';\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\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: boolean,\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 // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null,\n // Several. Use CSS `text-align` instead,\n aLink: null,\n // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated,\n // ``. List of URIs to archives\n axis: null,\n // `` and ``. Use `scope` on ``\n background: null,\n // ``. Use CSS `background-image` instead\n bgColor: null,\n // `` and table elements. Use CSS `background-color` instead\n border: number,\n // ``. Use CSS `border-width` instead,\n borderColor: null,\n // `
`. Use CSS `border-color` instead,\n bottomMargin: number,\n // ``\n cellPadding: null,\n // `
`\n cellSpacing: null,\n // `
`\n char: null,\n // Several table elements. When `align=char`, sets the character to align on\n charOff: null,\n // Several table elements. When `char`, offsets the alignment\n classId: null,\n // ``\n clear: null,\n // `
`. Use CSS `clear` instead\n code: null,\n // ``\n codeBase: null,\n // ``\n codeType: null,\n // ``\n color: null,\n // `` and `
`. Use CSS instead\n compact: boolean,\n // Lists. Use CSS to reduce space between items instead\n declare: boolean,\n // ``\n event: null,\n // `