} */\n const metas = document.querySelectorAll(\"meta[charset]\");\n const val = [];\n for (const meta of metas) {\n val.push(meta.getAttribute(\"charset\").trim().toLowerCase());\n }\n const utfExists = val.includes(\"utf-8\");\n\n // only a single meta[charset] and is set to utf-8, correct case\n if (utfExists && metas.length === 1) {\n return;\n }\n // if more than one meta[charset] tag defined along with utf-8\n // or\n // no meta[charset] present in the document\n showWarning(l10n.msg, name, { hint: l10n.hint, elements: [...metas] });\n}\n","// @ts-check\n/**\n * Linter rule \"check-punctuation\". Makes sure the there are no punctuations missing at the end of a .\n */\nimport { getIntlData, showWarning } from \"../utils.js\";\n\nconst ruleName = \"check-punctuation\";\nexport const name = \"core/linter-rules/check-punctuation\";\n\nconst punctuationMarks = [\".\", \":\", \"!\", \"?\"];\nconst humanMarks = punctuationMarks.map(mark => `\"${mark}\"`).join(\", \");\n\nconst localizationStrings = {\n en: {\n msg: \"`p` elements should end with a punctuation mark.\",\n hint: `Please make sure \\`p\\` elements end with one of: ${humanMarks}.`,\n },\n};\nconst l10n = getIntlData(localizationStrings);\n\nexport function run(conf) {\n if (!conf.lint?.[ruleName]) {\n return;\n }\n\n // Check string ends with one of ., !, ?, :, ], or is empty.\n const punctuatingRegExp = new RegExp(\n `[${punctuationMarks.join(\"\")}\\\\]]$|^ *$`,\n \"m\"\n );\n\n /** @type {NodeListOf} */\n const elems = document.querySelectorAll(\"p:not(#back-to-top,#w3c-state)\");\n const offendingElements = [...elems].filter(\n elem => !punctuatingRegExp.test(elem.textContent.trim())\n );\n\n if (!offendingElements.length) {\n return;\n }\n showWarning(l10n.msg, name, { hint: l10n.hint, elements: offendingElements });\n}\n","// @ts-check\n/**\n * Linter rule \"warn-local-ref\".\n * Warns about href's that link to nonexistent id's in a spec\n */\nimport { getIntlData, showWarning } from \"../utils.js\";\n\nconst ruleName = \"local-refs-exist\";\nexport const name = \"core/linter-rules/local-refs-exist\";\n\nconst localizationStrings = {\n en: {\n msg: \"Broken local reference found in document.\",\n hint: \"Please fix the links mentioned.\",\n },\n};\nconst l10n = getIntlData(localizationStrings);\n\nexport function run(conf) {\n if (!conf.lint?.[ruleName]) {\n return;\n }\n\n /** @type {NodeListOf} */\n const elems = document.querySelectorAll(\"a[href^='#']\");\n const offendingElements = [...elems].filter(isBrokenHyperlink);\n if (offendingElements.length) {\n showWarning(l10n.msg, name, {\n hint: l10n.hint,\n elements: offendingElements,\n });\n }\n}\n\nfunction isBrokenHyperlink(elem) {\n const id = elem.getAttribute(\"href\").substring(1);\n const doc = elem.ownerDocument;\n return !doc.getElementById(id) && !doc.getElementsByName(id).length;\n}\n","// @ts-check\n/**\n * Linter rule \"no-headingless-sections\".\n *\n * Checks that there are no sections in the document that don't start\n * with a heading element (h1-6).\n */\nimport { getIntlData, showWarning } from \"../utils.js\";\n\nconst ruleName = \"no-headingless-sections\";\nexport const name = \"core/linter-rules/no-headingless-sections\";\n\nconst localizationStrings = {\n en: {\n msg: \"All sections must start with a `h2-6` element.\",\n hint: \"Add a `h2-6` to the offending section or use a ``.\",\n },\n nl: {\n msg: \"Alle secties moeten beginnen met een `h2-6` element.\",\n hint: \"Voeg een `h2-6` toe aan de conflicterende sectie of gebruik een `
`.\",\n },\n zh: {\n msg: \"ęęē« čļ¼sectionļ¼é½åæ
锻仄 `h2-6` å
ē“ å¼å¤“ć\",\n hint: \"å° `h2-6` ę·»å å°ęé®é¢ēē« čęä½æēØ `
`ć\",\n },\n};\nconst l10n = getIntlData(localizationStrings);\n\nexport function run(conf) {\n if (!conf.lint?.[ruleName]) {\n return;\n }\n /** @type {NodeListOf
} */\n const sections = document.querySelectorAll(\n \"section:not(.head,#abstract,#sotd)\"\n );\n const offendingElements = [...sections].filter(\n ({ firstElementChild: e }) =>\n !e ||\n // no header wrapper and the first child is not a heading\n !(e.matches(\".header-wrapper\") || e instanceof HTMLHeadingElement)\n );\n\n if (!offendingElements.length) return;\n\n showWarning(l10n.msg, name, {\n hint: l10n.hint,\n elements: offendingElements,\n });\n}\n","// @ts-check\n/**\n * Linter rule \"no-unused-vars\".\n *\n * Checks that an variable is used if declared (the first use is treated as\n * declaration).\n */\nimport { getIntlData, norm, showWarning } from \"../utils.js\";\n\nconst ruleName = \"no-unused-vars\";\nexport const name = \"core/linter-rules/no-unused-vars\";\n\nconst localizationStrings = {\n en: {\n msg: \"Variable was defined, but never used.\",\n hint: \"Add a `data-ignore-unused` attribute to the ``.\",\n },\n};\nconst l10n = getIntlData(localizationStrings);\n\nexport function run(conf) {\n if (!conf.lint?.[ruleName]) {\n return;\n }\n\n const offendingElements = [];\n\n /**\n * Check if a contains a `\".algorithm\"`\n *\n * The selector matches:\n * ``` html\n * \n * \n * ```\n * The selector does not match:\n * ``` html\n * \n * ```\n * @param {HTMLElement} section\n */\n const sectionContainsAlgorithm = section =>\n !!section.querySelector(\n \":scope > :not(section) ~ .algorithm, :scope > :not(section) .algorithm\"\n );\n\n for (const section of document.querySelectorAll(\"section\")) {\n if (!sectionContainsAlgorithm(section)) continue;\n\n /**\n * `` in this section, but excluding those in child sections.\n * @type {NodeListOf}\n */\n const varElems = section.querySelectorAll(\":scope > :not(section) var\");\n if (!varElems.length) continue;\n\n /** @type {Map} */\n const varUsage = new Map();\n for (const varElem of varElems) {\n const key = norm(varElem.textContent);\n const elems = varUsage.get(key) || varUsage.set(key, []).get(key);\n elems.push(varElem);\n }\n\n for (const vars of varUsage.values()) {\n if (vars.length === 1 && !vars[0].hasAttribute(\"data-ignore-unused\")) {\n offendingElements.push(vars[0]);\n }\n }\n }\n\n if (offendingElements.length) {\n showWarning(l10n.msg, name, {\n hint: l10n.hint,\n elements: offendingElements,\n });\n }\n}\n","// @ts-check\n/**\n * Checks that there is a section that has at least privacy and/or\n * security and considerations.\n *\n * The rule is \"privacy\" or \"security\", and \"considerations\", in any order,\n * case-insensitive, multi-line check.\n *\n */\nimport { getIntlData, showWarning } from \"../utils.js\";\n\nconst ruleName = \"privsec-section\";\nexport const name = \"core/linter-rules/privsec-section\";\n\nconst localizationStrings = {\n en: {\n msg: \"Document must have a 'Privacy and/or Security' Considerations section.\",\n hint:\n \"Add a privacy and/or security considerations section. \" +\n \"See the [Self-Review Questionnaire](https://w3ctag.github.io/security-questionnaire/).\",\n },\n};\nconst l10n = getIntlData(localizationStrings);\n\nfunction hasPriSecConsiderations(doc) {\n return Array.from(doc.querySelectorAll(\"h2, h3, h4, h5, h6\")).some(\n ({ textContent: text }) => {\n const saysPrivOrSec = /(privacy|security)/im.test(text);\n const saysConsiderations = /(considerations)/im.test(text);\n return (saysPrivOrSec && saysConsiderations) || saysPrivOrSec;\n }\n );\n}\n\nexport function run(conf) {\n if (!conf.lint?.[ruleName]) {\n return;\n }\n\n if (conf.isRecTrack && !hasPriSecConsiderations(document)) {\n showWarning(l10n.msg, name, { hint: l10n.hint });\n }\n}\n","// @ts-check\n/**\n * Linter rule \"no-http-props\". Makes sure the there are no URLs that\n * start with http:// in the ReSpec config.\n */\nimport { docLink, getIntlData, joinAnd, showWarning } from \"../utils.js\";\n\nconst ruleName = \"no-http-props\";\nexport const name = \"core/linter-rules/no-http-props\";\n\nconst localizationStrings = {\n en: {\n msg: docLink`Insecure URLs are not allowed in ${\"[respecConfig]\"}.`,\n hint: \"Please change the following properties to 'https://': \",\n },\n zh: {\n msg: docLink`${\"[respecConfig]\"} äøäøå
č®øä½æēØäøå®å
ØēURL.`,\n hint: \"čÆ·å°ä»„äøå±ę§ę“ę¹äøŗ https://ļ¼\",\n },\n};\nconst l10n = getIntlData(localizationStrings);\n\nexport function run(conf) {\n if (!conf.lint?.[ruleName]) {\n return;\n }\n\n // We can only really perform this check over http/https\n // Using parent's location as tests are loaded in iframe as a srcdoc.\n if (!parent.location.href.startsWith(\"http\")) {\n return;\n }\n\n const offendingMembers = Object.getOwnPropertyNames(conf)\n // this check is cheap, \"prevED\" is w3c exception.\n .filter(key => (key.endsWith(\"URI\") && conf[key]) || key === \"prevED\")\n // this check is expensive, so separate step\n .filter(key =>\n new URL(conf[key], parent.location.href).href.startsWith(\"http://\")\n );\n\n if (offendingMembers.length) {\n const keys = joinAnd(offendingMembers, key => docLink`${`[${key}]`}`);\n showWarning(l10n.msg, name, { hint: l10n.hint + keys });\n }\n}\n"],"names":["inAmd","window","require","deps","callback","modules","map","dep","Error","Promise","all","then","results","expose","name","object","subscriptions","EventTarget","pub","topic","detail","dispatchEvent","CustomEvent","parent","self","args","String","JSON","stringify","stack","postMessage","location","origin","sub","cb","options","once","addEventListener","e","removeList","html","document","documentElement","hasAttribute","lang","dir","l10n","config","en","instanceOfAny","constructors","some","c","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","WeakMap","transformCache","reverseTransformCache","idbProxyTraps","get","target","prop","receiver","IDBTransaction","objectStoreNames","undefined","objectStore","wrap","set","value","has","replaceTraps","wrapFunction","func","IDBCursor","prototype","advance","continue","continuePrimaryKey","includes","apply","unwrap","this","request","transformCachableValue","tx","done","resolve","reject","unlisten","removeEventListener","complete","error","DOMException","cacheDonePromiseForTransaction","IDBDatabase","IDBObjectStore","IDBIndex","Proxy","IDBRequest","promise","success","result","promisifyRequest","newValue","readMethods","writeMethods","cachedMethods","Map","getMethod","targetFuncName","replace","useIndex","isWrite","method","async","storeName","transaction","store","index","shift","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","delete","isIteratorProp","Symbol","asyncIterator","blocked","indexedDB","deleteDatabase","event","oldVersion","version","upgrade","blocking","terminated","open","openPromise","newVersion","db","catch","HTTPTokenCodePoints","HTTPWhiteSpace","HTTPQuotedString","storeParam","params","paramName","paramValue","test","toLowerCase","_getDefaults","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","RegExp","source","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","encode","unescapeTest","unescape","_","n","charAt","fromCharCode","parseInt","substring","caret","edit","regex","opt","obj","val","valSource","getRegex","cleanUrl","href","encodeURI","noopTest","exec","splitCells","tableRow","count","cells","match","offset","str","escaped","curr","split","i","trim","length","pop","splice","push","rtrim","invert","l","suffLen","currChar","slice","outputLink","cap","link","raw","lexer","title","text","state","inLink","token","type","tokens","inlineTokens","_Tokenizer","rules","constructor","space","src","block","newline","code","codeBlockStyle","fences","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","join","indentCodeCompensation","inline","anyPunctuation","heading","trimmed","depth","hr","blockquote","top","blockTokens","list","bull","isordered","ordered","start","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","line","t","repeat","nextLine","indent","trimStart","search","blankLine","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","ischecked","istask","task","checked","trimEnd","spacers","filter","hasMultipleLineBreaks","pre","def","tag","table","headers","aligns","rows","item","header","align","row","cell","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","b","indexOf","level","findClosingBracket","linkLen","reflink","links","nolink","emStrong","maskedSrc","prevChar","emStrongLDelim","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","emStrongRDelimAst","emStrongRDelimUnd","lastIndex","lastCharLength","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","bullet","_paragraph","_blockLabel","_tag","_comment","blockNormal","gfmTable","blockGfm","blockPedantic","_punctuation","_inlineComment","_inlineLabel","inlineNormal","blockSkip","reflinkSearch","inlinePedantic","inlineGfm","inlineBreaks","normal","_Lexer","inlineQueue","Object","create","lex","lexInline","next","lastToken","cutSrc","lastParagraphClipped","leading","tabs","extTokenizer","call","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","charCodeAt","console","keepPrevChar","keys","lastIndexOf","startInline","_Renderer","infostring","quote","body","listitem","checkbox","tablerow","content","tablecell","flags","strong","em","cleanHref","out","image","_TextRenderer","_Parser","textRenderer","parse","parseInline","renderers","genericToken","ret","parser","headingToken","codeToken","tableToken","j","k","blockquoteToken","listToken","itemBody","unshift","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","static","Set","preprocess","markdown","postprocess","processAllTokens","markedInstance","defaults","setOptions","parseMarkdown","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","use","values","concat","childTokens","flat","pack","opts","ext","prevRenderer","extLevel","rendererProp","rendererFunc","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","passThroughHooks","arg","packWalktokens","origOpt","warn","throwError","onError","toString","message","msg","marked","getDefaults","globalThis","global","getDefaultExportFromCjs","x","__esModule","hasOwnProperty","module","pluralize$1","exports","root","pluralize","commonjsGlobal","pluralRules","singularRules","uncountables","irregularPlurals","irregularSingles","sanitizeRule","rule","restoreCase","word","toUpperCase","substr","arguments","sanitizeWord","len","replaceWord","replaceMap","keepMap","checkWord","bool","inclusive","singular","plural","isPlural","isSingular","addPluralRule","replacement","addSingularRule","addUncountableRule","addIrregularRule","single","hyperHTML","N","defineProperty","r","a","configurable","o","random","s","WeakSet","add","m","u","insertBefore","selected","selectedIndex","f","querySelectorAll","y","w","nextSibling","E","remove","parentNode","removeChild","compare","before","h","d","v","p","g","Array","newi","oldi","prev","C","createEvent","initCustomEvent","bubbles","cancelable","_wire$","defineProperties","ELEMENT_NODE","nodeType","A","S","O","T","M","L","P","D","W","attributes","define","invoke","$","isArray","R","H","innerHTML","F","$1","childNodes","firstChild","appendChild","createDocumentFragment","createElementNS","I","z","V","Z","G","q","B","J","Q","U","X","Y","toFixed","ee","createElement","getAttribute","te","ne","re","ie","ae","oe","ue","ce","le","se","fe","he","de","ve","pe","ge","me","ye","sort","be","we","removeAttribute","nodeName","setAttributeNode","cloneNode","textContent","replaceChild","Ne","path","sparse","xe","Ee","Ce","convert","transform","Se","updates","fn","any","attribute","ke","Oe","Te","Me","setAttribute","getAttributeNode","je","style","_e","cssText","setProperty","Le","Pe","De","We","lastChild","ownerDocument","createRange","setStartBefore","setEndAfter","deleteContents","valueOf","$e","Re","Ke","Je","render","Fe","placeholder","He","Ie","ze","Ve","Ze","Ge","qe","Qe","Event","MutationObserver","observe","subtree","childList","clearTimeout","setTimeout","addedNodes","removedNodes","children","Ue","Xe","Ye","Ae","et","removeAttributeNode","createTextNode","tt","defaultView","navigator","userAgent","propertyIsEnumerable","isFrozen","nt","rt","it","at","ut","ot","ct","lt","template","tagger","st","ft","ht","dt","vt","pt","gt","wire","bind","Component","diff","hyper","for","handleEvent","currentTarget","svg","defaultState","dispatch","component","setState","idb","_idb","_marked","MIMEType","input","subtype","TypeError","parserMode","inputArray","from","position","char","fromEntries","entries","parseMimeType","parameters","essence","mimeType","size","paramStr","key","serialize","_pluralize","dashes","ISODate","Intl","DateTimeFormat","timeZone","year","month","day","dateLang","docLang","startsWith","W3CDate","nonNormativeSelector","createResourceHint","URL","baseURI","linkElem","rel","hint","corsMode","crossOrigin","as","dontRemove","classList","removeReSpec","doc","elem","joinFactory","formatter","ListFormat","mapper","elemCount","formatToParts","conjunction","disjunction","joinAnd","norm","getIntlData","localizationStrings","data","getIntlDataForKey","runTransforms","flist","funcArgs","methods","meth","showWarning","htmlJoinComma","array","joined","addId","pfx","txt","noLC","id","normalize","getElementById","nextId","getDfnTitles","titleSet","normText","dataset","child","getElementsByTagName","localLt","renameElement","newName","copyAttributes","localName","newElement","append","replaceWith","refTypeFromContext","ref","element","closestInformative","closest","isInformative","querySelector","illegal","wrapInner","outer","wrapper","parents","selector","parentElement","getElementIndentation","previousSibling","Node","TEXT_NODE","InsensitiveStringSet","super","getCanonicalKey","existingKey","find","makeSafeCopy","clone","dfn","removeCommentNodes","walker","createTreeWalker","NodeFilter","SHOW_COMMENT","comment","walkTree","nextNode","CaseInsensitiveMap","RespecError","plugin","isWarning","assign","elements","markAsOffending","toJSON","details","showError","pluginName","makePluginUtils","toMDCode","codedJoinOr","quotes","docLink","strings","reindent","endsWith","linkingText","lines","indents","leastIndent","mimeTypes","rsDocToDataURL","format","validTypes","encodeURIComponent","cloneDoc","head","insertions","metaViewport","metaCharset","respecVersion","metaGenerator","prepend","cleanup","XMLSerializer","serializeToString","el","outerHTML","prettify","doctype","ReSpec","_respecDonePromise","errors","warnings","rsError","ready","toHTML","runAll","plugs","respec","initReSpecGlobal","respecConfig","userConfig","amendConfig","newValues","script","includeConfig","URLSearchParams","overrideEntries","codedKey","codedValue","decodeURIComponent","decodedValue","overrideProps","overrideConfig","performance","mark","preProcess","promises","isFunction","utils","err","runnables","isRunnableModule","plug","run","Plugin","prepare","executePreparePass","timerId","measure","executeRunPass","postProcess","afterEnd","css$h","gtEntity","ampEntity","infoString","isEscaped","language","metaData","parseInfoString","example","illegalExample","className","firstSpace","metaDataStr","headingWithIdRegex","markdownToHtml","potentialMarkdown","convertElement","processMDSections","conf","hasMDSections","isMDFormat","rsUI","newBody","firstTwo","lastTwo","indentation","workaroundBlockLevelMarkdown","substituteWithTextNodes","ariaDecorate","ariaMap","styleElement","css","insertStyle","respecUI","menu","closeButton","ui","closeModal","modal","overlay","trapFocus","buttons","respecPill","toggleMenu","toggle","hidden","focusableEls","firstFocusableEl","lastFocusableEl","focus","shiftKey","activeElement","preventDefault","stopPropagation","errWarn","arr","butName","buttonId","button","ol","fragment","createContextualFragment","rsErrorToHTML","li","firstElementChild","lastElementChild","freshModal","createWarnButton","label","show","hide","enable","addCommand","handler","_keyShort","icon","menuItem","warning","owner","currentOwner","headingId","generateMarkdownLink","plugins","readyState","domReady","ev","locationHash","l10n$p","style$1","dataInclude","abstract","dataTransform","dataAbbr","inlines","conformance","examples","issuesNotes","bestPractices","figures","biblio$1","linkToDfn","dataCite","renderBiblio","contrib","sections","fixHeaders","structure","informative","idHeaders","saveHtml","aboutRespec","seo","highlight","listSorter","highlightVars$1","dataType","algorithms","anchorExpander","dfnPanel","dfnContract","checkCharset","checkPunctuation","localRefsExist","noHeadinglessSections","noUnusedVars","privsecSection","noHttpProps","ReSpec.run","hash","newHash","isLegacyFrag","coreDefaults","lint","specStatus","highlightVars","addSectionLinks","licenses","short","aomDefaults","logos","alt","height","width","license","licenseInfo","computeProps","css$f","noReSpecCSS","resourceHints","createResourceHints","createBaseStyle","meta","delimiter","separator","toKeyValuePairs","createMetaViewport","styleFile","noToc","attachFixupScript","finalStyleURL","linkURL","urls","frag","reduce","nextLink","linkCSS","exportDoc","w3cStyle","DOMBuilder","current","findPosition","tagName","findParent","findHeader","addHeader","section","addSection","addElement","builder","restructure","structuredInternals","processResponse","rawData","oninclude","includeReplace","includeFormat","fill","fillWithText","attr","removeIncludeAttributes","runIncludes","currentDepth","includables","promisesToInclude","include","includeId","response","fetch","default_title","zh","h1Elem","isConnected","tempElem","documentTitle","isPreview","prNumber","prUrl","github","repoURL","setDocumentTitle","showLink","class","showLinkData","showLogo","logo","until","date","es","ko","ja","orcidIcon","showPeople","propName","people","validatePerson","person","docsUrl","seePersonHint","preamble","orcid","orcidUrl","orcidId","pathname","lastDigit","remainder","Number","acc","lastDigitInt","lastDigitShould","checkOrcidChecksum","retiredDate","rawDate","Date","extras","every","extra","validateExtras","mailto","companyURL","company","personToHTML","personName","editorId","w3cid","contents","protocol","hCard","companyElem","note","classVal","renderExtra","time","author","authors","editor","editors","former_editor","former_editors","latest_editors_draft","latest_published_version","this_version","issue_tracker","headersTmpl","specSubTitleElem","subtitle","getSpecSubTitleElem","textStatus","dashDate","publishHumanDate","thisVersion","issueTracker","multipleEditors","formerEditors","multipleFormerEditors","multipleAuthors","otherLinks","existingCopyright","publishYear","renderCopyright","status2text","PD","WGD","WGA","FD","AOMDate","publishDate","fallbackDate","isFinite","formattedDate","validateDateAndRecover","lastModified","shortName","getUTCFullYear","peopCheck","copyrightStart","publishISODate","toISOString","generatedSubtitle","longStatus","abs","abstractHeading","processDfnElement","abbr","fullForm","insertAdjacentHTML","idlPrimitiveRegex","exceptionRegex","methodRegex","slotRegex","attributeRegex","baseRegex","enumRegex","methodSplitRegex","slotSplitRegex","isProbablySlotRegex","renderBase","identifier","renderParent","nullable","renderInternalSlot","slotType","linkFor","isMethod","argsHtml","htmlArgMapper","textArgs","parts","isVariadic","renderAttribute","renderMethod","renderText","renderArgs","argsText","searchText","renderEnum","enumValue","forContext","renderException","renderIdlPrimitiveType","idlStringToHtml","isSlot","splitter","forPart","childString","SyntaxError","allArgs","altText","altArgs","reverse","parseInlineIDL","output","base","ALLOWED_TYPES","readyPromise","openDB","deleteObjectStore","createObjectStore","keyPath","createIndex","unique","now","range","IDBKeyRange","lowerBound","entry","expires","openIdb","biblioDB","isAlias","resolveAlias","only","aliasOf","addAll","aliasesAndRefs","alias","reference","promisesToAdd","flatMap","isInDB","put","close","clear","storeNames","stores","clearStorePromises","biblio","bibrefsURL","doneResolver","updateFromNetwork","refs","forceUpdate","refsToFetch","onLine","ok","status","json","oneHourFromNow","resolveRef","normalizeReferences","normalizedNormativeRefs","normativeReferences","informativeReferences","redundantKey","getRefKeys","localBiblio","localAliases","allRefs","neededRefs","idbRefs","promisesToFind","getReferencesFromIdb","hasData","noData","externalRefs","finish","info_references","norm_references","references","reference_not_found","nl","REF_STATUSES","endWithDot","endStr","createReferencesSection","goodRefs","badRefs","refcontent","groupRefs","toRefContent","uniqueRefs","getUniqueRefs","refsToShow","toLocaleLowerCase","localeCompare","sec","showRef","aliases","getAliases","refUrl","selectors","elems","linkType","decorateInlineReference","warnBadRefs","circular","renderInlineCitation","linkText","refId","stringifyReference","etAl","publisher","informs","norms","refSection","rfc2119Usage","joinRegex","regexes","rfc2119Keywords","inlineCodeRegExp","inlineIdlReference","inlineVariable","inlineCitation","inlineExpansion","inlineAnchor","inlineElement","inlineElementMatches","matched","attrValue","xrefType","xrefFor","inlineRFC2119Matches","nodeElement","inlineRefMatches","inlineXrefMatches","inlineCodeMatches","inlineBibrefMatches","spec","cite","cleanRef","citeElem","inlineAbbrMatches","abbrMap","inlineVariableMatches","matches","varName","inlineAnchorMatches","cleanUp","safeStr","lastSlashIdx","splitByFor","isFor","processedContent","processInlineContent","clean","part","respecRFC2119","abbrElements","abbrRx","txts","exclusions","wsNodes","exclusionQuery","nodeIterator","createNodeIterator","SHOW_TEXT","FILTER_REJECT","FILTER_ACCEPT","textNodes","getTextNodes","keywords","inlinesRegex","subtxt","df","normativity","keywordInterpretation","processConformance","terms","contains","validateDOMName","createAttribute","validateCommonName","definitionMap","registerDefinition","names","knownTypesMap","requiresFor","associateWith","validator","knownTypes","computeType","dfnFor","validateDefinition","idl","noexport","derivedType","dfnType","allowedSlotTypes","processAsInternalSlot","closestType","computeExport","export","titles","pluralizeDfn","dfnTexts","dfns","getPluralizer","plurals","userDefinedPlurals","uniquePlurals","css$d","makeTitle","num","report","number","div","inAside","exampleTitle","css$b","editors_note","feature_at_risk","issue","issue_summary","no_issues_in_spec","handleIssues","ins","ghIssues","getIssueNumber","issueNumber","createIssueNumberGetter","issueList","inno","displayType","isFeatureAtRisk","isIssue","isEdNote","getIssueType","isInline","dataNum","titleParent","ghIssue","issueBase","atRiskBase","linkToIssueTracker","l10nIssue","issueNumberText","createIssueSummaryEntry","labels","labelsGroup","color","bgColor","issuesURL","searchParams","bg","textColorFromBgColor","ariaLabel","createLabel","createLabelsGroup","bodyHTML","issueSummaryElement","hasChildNodes","makeIssueSectionSummary","allEls","issuesAndNotes","itm","HTMLElement","apiBase","issueNumbers","fullName","issues","fetchAndStoreGithubIssues","headElem","ednote","best_practice","defaultLang","bps","bpSummary","summaryItems","bp","localizedBpName","container","list_of_figures","fig","tof","caption","figure","decorateFigure","figureId","tofCaption","anchor","getTableOfFiguresListItem","collectFigures","tofElement","previousSections","previous","previousElementSibling","iteratePreviousElements","getPreviousSections","decorateTableOfFigures","THIS_SPEC","getLinkProps","citeDetails","canonicalHref","relPath","linkProps","wrapInCiteEl","citePath","citeFrag","noExport","makeComponentFinder","findFrag","findPath","toCiteDetails","rawKey","citeHref","parentKey","isNormative","closestIsNormative","hasPrecedingMark","attrToRemove","promisesForBibEntries","missingBibEntries","newEntries","updateBiblio","originalKey","matchedText","possibleExternalLinks","duplicateMsg","duplicateTitle","collectDfns","duplicates","dfnFors","oldDfn","oldIsDfn","newIsDfn","isSameDfnType","isSameDfnFor","findMatchingDfn","titleToDfns","linkTargets","linkForElem","getLinkTargets","dfnsByType","processAnchor","noLocalMatch","first","isCode","term","isIDL","needsCode","shouldWrapByCode","wrapAsCode","showLinkingError","mapTitleToDfns","badLinks","localAnchors","updateReferences","xref","apiURL","contributors","getContributors","sortedContributors","nameA","login","nameB","user","res","maxAge","Request","cache","cachedResponse","caches","clonedResponse","customHeaders","Headers","expiryDate","cacheResponse","Response","blob","fetchAndCache","showContributors","getParents","lowerHeaderTags","toc","scanSections","maxTocLevel","prefix","appendixMode","lastNonAppendix","isAppendix","secno","isIntro","appendixNumber","createComment","createTocListItem","subsections","floor","getSectionTree","sectionElements","Boolean","span","renameSectionHeaders","noTOC","maxToc","isNaN","sectionToSkipFromToC","skipFromToC","nav","h2","after","createTableOfContents","permalinkLabel","sectionType","sectionNumber","headings","selfLink","save_snapshot","downloadLinks","epubURL","toDownloadLink","sep","concatDate","filename","saveDialog","supportsDownload","HTMLAnchorElement","about_respec","getEntriesByType","duration","round","perfEntryToTR","gitRevision","metaElem","firstParagraph","css$9","fetchBase","_documentCurrentScript","workerPromise","workerScript","respecWorker$1","default","loadWorkerScript","workerURL","createObjectURL","Blob","Worker","createWorker","worker","nextMsgId","namespace","counter","gen","idGenerator","msgIdGenerator","highlightElement","languages","action","timeoutId","listener","sendHighlightRequest","innerText","noHighlightCSS","highlightables","promisesToHighlight","makeSorter","direction","order","sortListItems","sortDefinitionTerms","dl","nextType","nextName","sortables","sortedElems","selectNodeContents","css$7","highlightListener","varElem","hightligtedElems","highlightColor","getHighlightColor","varsToHighlight","colorStatus","HL_COLORS","removeHighlight","addHighlight","resetListener","hlColor","activeClass","outputDoc","css$5","varMap","variables","currentSection","css$3","textNode","Text","processBox","matchingElement","copy","processFigure","figcaption","figTitle","processTable","matchingTable","tableTitle","processSection","processHeading","localize","hadSelfLink","attrName","matchingClosest","newClosest","anchors","css$1","createPanel","panelId","definition","panel","dfnExportedMarker","parentIdlBlock","idlMarker","titleToIDs","linkID","getReferenceTitle","toLinkProps","ids","listItemToHTML","referencesToHTML","panels","tabIndex","dfnPanel_runtime$1","loadScript","file_a_bug","participate","commit_history","props","to","connectedCallback","fetchCommits","commits","commit","commitURL","pr","finally","gh","CUSTOM_ELEMENTS","customElements","readyPromises","dfnsWithNoType","exportableDfns","addContractDefaults","describedDTs","dfnId","dfnContent","defines","definitionContainers","addDefinitionPointers","metas","punctuationMarks","punctuatingRegExp","offendingElements","isBrokenHyperlink","getElementsByName","HTMLHeadingElement","sectionContainsAlgorithm","varElems","varUsage","vars","isRecTrack","saysPrivOrSec","saysConsiderations","offendingMembers","getOwnPropertyNames"],"mappings":"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","x_google_ignoreList":[4,5,6,8]}
\ No newline at end of file
+{"version":3,"file":"respec-aom.js","sources":["../src/core/expose-modules.js","../src/core/l10n.js","../node_modules/idb/build/index.js","../node_modules/sniffy-mimetype/index.js","../node_modules/marked/lib/marked.esm.js","../js/deps/builds/pluralize.js","../node_modules/hyperhtml/esm.js","../src/core/import-maps.js","../src/core/utils.js","../src/core/pubsubhub.js","../src/core/include-config.js","../src/core/exporter.js","../src/core/respec-global.js","../src/core/post-process.js","../src/core/pre-process.js","../src/core/base-runner.js","../src/core/override-configuration.js","../src/styles/ui.css.js","../src/core/markdown.js","../src/core/ui.js","../src/respec.js","../profiles/aom.js","../src/core/location-hash.js","../src/core/defaults.js","../src/aom/defaults.js","../src/styles/respec.css.js","../src/core/style.js","../src/aom/style.js","../src/core/sections.js","../src/core/data-include.js","../src/core/reindent.js","../src/core/title.js","../src/core/templates/show-link.js","../src/core/templates/show-logo.js","../src/core/templates/show-people.js","../src/aom/templates/headers.js","../src/aom/headers.js","../src/aom/abstract.js","../src/core/data-transform.js","../src/core/data-abbr.js","../src/core/inline-idl-parser.js","../src/core/biblio-db.js","../src/core/biblio.js","../src/core/render-biblio.js","../src/core/inlines.js","../src/aom/conformance.js","../src/core/dfn-validators.js","../src/core/dfn-map.js","../src/core/dfn.js","../src/core/pluralize.js","../src/styles/examples.css.js","../src/core/examples.js","../src/styles/issues-notes.css.js","../src/core/issues-notes.js","../src/core/best-practices.js","../src/core/figures.js","../src/core/data-cite.js","../src/core/link-to-dfn.js","../src/core/contrib.js","../src/core/fix-headers.js","../src/core/structure.js","../src/core/informative.js","../src/core/id-headers.js","../src/ui/save-html.js","../src/ui/about-respec.js","../src/core/seo.js","../src/styles/highlight.css.js","../src/core/text-loader.js","../src/core/worker.js","../src/core/highlight.js","../src/core/list-sorter.js","../src/styles/var.css.js","../src/core/highlight-vars.js","../src/styles/datatype.css.js","../src/core/data-type.js","../src/styles/algorithms.css.js","../src/core/algorithms.js","../src/core/anchor-expander.js","../src/styles/dfn-panel.css.js","../src/core/dfn-panel.js","../src/core/github.js","../src/core/custom-elements/rs-changelog.js","../src/core/custom-elements/index.js","../src/core/dfn-contract.js","../src/core/linter-rules/check-charset.js","../src/core/linter-rules/check-punctuation.js","../src/core/linter-rules/local-refs-exist.js","../src/core/linter-rules/no-headingless-sections.js","../src/core/linter-rules/no-unused-vars.js","../src/core/linter-rules/privsec-section.js","../src/core/linter-rules/no-http-props.js"],"sourcesContent":["// @ts-check\nconst inAmd = !!window.require;\nif (!inAmd) {\n /**\n * @type {any}\n * @param {string[]} deps\n * @param {(...modules: any[]) => void} callback\n */\n const require = function (deps, callback) {\n const modules = deps.map(dep => {\n if (!(dep in window.require.modules)) {\n throw new Error(`Unsupported dependency name: ${dep}`);\n }\n return window.require.modules[dep];\n });\n Promise.all(modules).then(results => callback(...results));\n };\n require.modules = {};\n window.require = require;\n}\n\n/**\n * @param {string} name\n * @param {object | Promise} object\n */\nexport function expose(name, object) {\n if (!inAmd) {\n window.require.modules[name] = object;\n }\n}\n","// @ts-check\n/**\n * Module core/l10n\n *\n * Looks at the lang attribute on the root element and uses it\n * to manage the config.l10n object so that other parts of the system can\n * localize their text.\n */\n\nexport const name = \"core/l10n\";\n\nconst html = document.documentElement;\n// Explicitly default lang and dir on if not set.\n// We assume English and ltr as default for international standards.\nif (!html?.hasAttribute(\"lang\")) {\n html.lang = \"en\";\n if (!html.hasAttribute(\"dir\")) {\n html.dir = \"ltr\";\n }\n}\n\nexport const l10n = {};\n\nexport const lang = html?.lang ?? \"en\";\n\nexport function run(config) {\n config.l10n = l10n[lang] || l10n.en;\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","/**\n * Implementation of MIMEType and MIME Type parser from\n * https://mimesniff.spec.whatwg.org/\n */\n\nconst HTTPTokenCodePoints = /^[!#$%&'*+-.^`|~\\w]+$/;\n\n// \"HTTP whitespace is U+000A LF, U+000D CR, U+0009 TAB or U+0020 SPACE.\"\n// eslint-disable-next-line no-control-regex\nconst HTTPWhiteSpace = /[\\u000A\\u000D\\u0009\\u0020]/u;\n\n// An HTTP quoted-string token code point is\n// U+0009 TAB,\n// a code point in the range U+0020 SPACE to U+007E (~), inclusive,\n// or a code point in the range U+0080 through U+00FF (Ćæ), inclusive.\n// eslint-disable-next-line no-control-regex\nconst HTTPQuotedString = /^[\\u0009\\u{0020}-\\{u0073}\\u{0080}-\\u{00FF}]+$/u;\n\nexport class MIMEType {\n constructor(input) {\n const { type, subtype, params } = parseMimeType(input);\n this.type = type.trim().toLowerCase();\n this.subtype = subtype.trimEnd().toLowerCase();\n this.parameters = new Map(Object.entries(params));\n }\n\n /**\n * @see https://mimesniff.spec.whatwg.org/#mime-type-essence\n */\n get essence() {\n return `${this.type}/${this.subtype}`;\n }\n\n toString() {\n return serialize(this);\n }\n};\n\nexport function isValidMimeType(text){\n try {\n parse(text);\n } catch (e) {\n return false;\n }\n return true;\n}\n\n/**\n * https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serialize(mimeType) {\n const { parameters, essence } = mimeType;\n if (!parameters.size) {\n return essence;\n }\n let paramStr = \";\";\n for (const [key, value] of parameters.entries()) {\n paramStr += key;\n if (value !== null) {\n if (HTTPTokenCodePoints.test(value)) {\n paramStr += `=${value}`;\n } else {\n paramStr += `=\"${value}\"`;\n }\n } else {\n // null or empty string\n paramStr += '=\"\"';\n }\n paramStr += \";\";\n }\n // remove final \";\"\n return mimeType.essence + paramStr.slice(0, -1);\n}\n\n/**\n * Implementation of https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n * parser state machines if as follows, params and param values are optional and can be null:\n *\n * \"type\"\n * -> \"subtype\"\n * -> \"param-start\" (ignores white space)\n * -> \"param-name\"\n * -> \"param-value\"\n * -> \"collect-quoted-string\"\n * -> \"ignore-input-until-next-param\"\n *\n *\n *\n * @param {String} input\n */\nexport function parseMimeType(input) {\n input = input.trim();\n if (!input) {\n throw new TypeError(\"Invalid input.\");\n }\n\n let type = \"\";\n let subtype = \"\";\n let paramName = \"\";\n let paramValue = null;\n let params = new Map();\n let parserMode = \"type\";\n let inputArray = Array.from(input); // retain unicode chars\n for (let position = 0; position < inputArray.length; position++) {\n const char = inputArray[position];\n switch (parserMode) {\n case \"type\":\n if (char === \"/\") {\n parserMode = \"subtype\";\n continue;\n }\n type += char;\n break;\n case \"subtype\":\n if (char === \";\") {\n parserMode = \"param-start\";\n continue;\n }\n subtype += char;\n break;\n case \"param-start\":\n // Skip HTTP white space\n if (HTTPWhiteSpace.test(char) || char === \";\") {\n continue;\n }\n paramName += char;\n parserMode = \"param-name\";\n break;\n case \"param-name\":\n if (char === \"=\" || char === \";\") {\n if (char === \"=\") {\n parserMode = \"param-value\";\n paramValue = null;\n continue;\n }\n params.set(paramName.toLowerCase(), null);\n paramName = \"\";\n continue;\n }\n paramName += char;\n break;\n case \"param-value\":\n if (char == '\"') {\n parserMode = \"collect-quoted-string\";\n continue;\n }\n if (char === \";\") {\n paramValue = paramValue.trimEnd();\n parserMode = \"param-start\";\n storeParam(params, paramName, paramValue);\n paramName = \"\";\n continue;\n }\n paramValue = typeof paramValue === \"string\" ? paramValue + char : char;\n break;\n case \"collect-quoted-string\":\n if (char === '\"') {\n storeParam(params, paramName, paramValue);\n parserMode = \"ignore-input-until-next-param\";\n paramName = \"\";\n paramValue = null;\n continue;\n }\n if (char === \"\\\\\") {\n continue;\n }\n paramValue = typeof paramValue === \"string\" ? paramValue + char : char;\n break;\n case \"ignore-input-until-next-param\":\n if (char !== \";\") {\n continue;\n }\n parserMode = \"param-start\";\n break;\n default:\n throw new Error(\n `State machine error - unknown parser mode: ${parserMode} `\n );\n }\n }\n if (paramName) {\n storeParam(params, paramName, paramValue);\n }\n if (type.trim() === \"\" || !HTTPTokenCodePoints.test(type)) {\n throw new TypeError(\"Invalid type\");\n }\n if (subtype.trim() === \"\" || !HTTPTokenCodePoints.test(subtype)) {\n throw new TypeError(\"Invalid subtype\");\n }\n return {\n type,\n subtype,\n params: Object.fromEntries(params.entries()),\n };\n}\n\nfunction storeParam(params, paramName, paramValue) {\n if (\n (paramName &&\n paramName !== \"\" &&\n !params.has(paramName) &&\n HTTPQuotedString.test(paramValue)) ||\n paramValue === null\n ) {\n params.set(paramName.toLowerCase(), paramValue);\n }\n}\n","/**\n * marked v12.0.2 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '| \\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return ''\n + (escaped ? code : escape$1(code, true))\n + '
\\n';\n }\n return ''\n + (escaped ? code : escape$1(code, true))\n + '
\\n';\n }\n blockquote(quote) {\n return `\\n${quote} \\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text} \\n`;\n }\n hr() {\n return ' \\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `${text} \\n`;\n }\n checkbox(checked) {\n return ' ';\n }\n paragraph(text) {\n return `${text}
\\n`;\n }\n table(header, body) {\n if (body)\n body = `${body} `;\n return ' \\n'\n + '\\n'\n + header\n + ' \\n'\n + body\n + '
\\n';\n }\n tablerow(content) {\n return `\\n${content} \\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text} `;\n }\n em(text) {\n return `${text} `;\n }\n codespan(text) {\n return `${text}
`;\n }\n br() {\n return ' ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '' + text + ' ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = ` ';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = 'An error occurred:
'\n + escape$1(e.message + '', true)\n + ' ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","function getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar pluralize$2 = {exports: {}};\n\n/* global define */\nvar pluralize$1 = pluralize$2.exports;\n\nvar hasRequiredPluralize;\n\nfunction requirePluralize () {\n\tif (hasRequiredPluralize) return pluralize$2.exports;\n\thasRequiredPluralize = 1;\n\t(function (module, exports) {\n\t\t(function (root, pluralize) {\n\t\t /* istanbul ignore else */\n\t\t if (typeof commonjsRequire === 'function' && 'object' === 'object' && 'object' === 'object') {\n\t\t // Node.\n\t\t module.exports = pluralize();\n\t\t } else {\n\t\t // Browser global.\n\t\t root.pluralize = pluralize();\n\t\t }\n\t\t})(pluralize$1, function () {\n\t\t // Rule storage - pluralize and singularize need to be run sequentially,\n\t\t // while other rules can be optimized using an object for instant lookups.\n\t\t var pluralRules = [];\n\t\t var singularRules = [];\n\t\t var uncountables = {};\n\t\t var irregularPlurals = {};\n\t\t var irregularSingles = {};\n\n\t\t /**\n\t\t * Sanitize a pluralization rule to a usable regular expression.\n\t\t *\n\t\t * @param {(RegExp|string)} rule\n\t\t * @return {RegExp}\n\t\t */\n\t\t function sanitizeRule (rule) {\n\t\t if (typeof rule === 'string') {\n\t\t return new RegExp('^' + rule + '$', 'i');\n\t\t }\n\n\t\t return rule;\n\t\t }\n\n\t\t /**\n\t\t * Pass in a word token to produce a function that can replicate the case on\n\t\t * another word.\n\t\t *\n\t\t * @param {string} word\n\t\t * @param {string} token\n\t\t * @return {Function}\n\t\t */\n\t\t function restoreCase (word, token) {\n\t\t // Tokens are an exact match.\n\t\t if (word === token) return token;\n\n\t\t // Lower cased words. E.g. \"hello\".\n\t\t if (word === word.toLowerCase()) return token.toLowerCase();\n\n\t\t // Upper cased words. E.g. \"WHISKY\".\n\t\t if (word === word.toUpperCase()) return token.toUpperCase();\n\n\t\t // Title cased words. E.g. \"Title\".\n\t\t if (word[0] === word[0].toUpperCase()) {\n\t\t return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n\t\t }\n\n\t\t // Lower cased words. E.g. \"test\".\n\t\t return token.toLowerCase();\n\t\t }\n\n\t\t /**\n\t\t * Interpolate a regexp string.\n\t\t *\n\t\t * @param {string} str\n\t\t * @param {Array} args\n\t\t * @return {string}\n\t\t */\n\t\t function interpolate (str, args) {\n\t\t return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n\t\t return args[index] || '';\n\t\t });\n\t\t }\n\n\t\t /**\n\t\t * Replace a word using a rule.\n\t\t *\n\t\t * @param {string} word\n\t\t * @param {Array} rule\n\t\t * @return {string}\n\t\t */\n\t\t function replace (word, rule) {\n\t\t return word.replace(rule[0], function (match, index) {\n\t\t var result = interpolate(rule[1], arguments);\n\n\t\t if (match === '') {\n\t\t return restoreCase(word[index - 1], result);\n\t\t }\n\n\t\t return restoreCase(match, result);\n\t\t });\n\t\t }\n\n\t\t /**\n\t\t * Sanitize a word by passing in the word and sanitization rules.\n\t\t *\n\t\t * @param {string} token\n\t\t * @param {string} word\n\t\t * @param {Array} rules\n\t\t * @return {string}\n\t\t */\n\t\t function sanitizeWord (token, word, rules) {\n\t\t // Empty string or doesn't need fixing.\n\t\t if (!token.length || uncountables.hasOwnProperty(token)) {\n\t\t return word;\n\t\t }\n\n\t\t var len = rules.length;\n\n\t\t // Iterate over the sanitization rules and use the first one to match.\n\t\t while (len--) {\n\t\t var rule = rules[len];\n\n\t\t if (rule[0].test(word)) return replace(word, rule);\n\t\t }\n\n\t\t return word;\n\t\t }\n\n\t\t /**\n\t\t * Replace a word with the updated word.\n\t\t *\n\t\t * @param {Object} replaceMap\n\t\t * @param {Object} keepMap\n\t\t * @param {Array} rules\n\t\t * @return {Function}\n\t\t */\n\t\t function replaceWord (replaceMap, keepMap, rules) {\n\t\t return function (word) {\n\t\t // Get the correct token and case restoration functions.\n\t\t var token = word.toLowerCase();\n\n\t\t // Check against the keep object map.\n\t\t if (keepMap.hasOwnProperty(token)) {\n\t\t return restoreCase(word, token);\n\t\t }\n\n\t\t // Check against the replacement map for a direct word replacement.\n\t\t if (replaceMap.hasOwnProperty(token)) {\n\t\t return restoreCase(word, replaceMap[token]);\n\t\t }\n\n\t\t // Run all the rules against the word.\n\t\t return sanitizeWord(token, word, rules);\n\t\t };\n\t\t }\n\n\t\t /**\n\t\t * Check if a word is part of the map.\n\t\t */\n\t\t function checkWord (replaceMap, keepMap, rules, bool) {\n\t\t return function (word) {\n\t\t var token = word.toLowerCase();\n\n\t\t if (keepMap.hasOwnProperty(token)) return true;\n\t\t if (replaceMap.hasOwnProperty(token)) return false;\n\n\t\t return sanitizeWord(token, token, rules) === token;\n\t\t };\n\t\t }\n\n\t\t /**\n\t\t * Pluralize or singularize a word based on the passed in count.\n\t\t *\n\t\t * @param {string} word The word to pluralize\n\t\t * @param {number} count How many of the word exist\n\t\t * @param {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n\t\t * @return {string}\n\t\t */\n\t\t function pluralize (word, count, inclusive) {\n\t\t var pluralized = count === 1\n\t\t ? pluralize.singular(word) : pluralize.plural(word);\n\n\t\t return (inclusive ? count + ' ' : '') + pluralized;\n\t\t }\n\n\t\t /**\n\t\t * Pluralize a word.\n\t\t *\n\t\t * @type {Function}\n\t\t */\n\t\t pluralize.plural = replaceWord(\n\t\t irregularSingles, irregularPlurals, pluralRules\n\t\t );\n\n\t\t /**\n\t\t * Check if a word is plural.\n\t\t *\n\t\t * @type {Function}\n\t\t */\n\t\t pluralize.isPlural = checkWord(\n\t\t irregularSingles, irregularPlurals, pluralRules\n\t\t );\n\n\t\t /**\n\t\t * Singularize a word.\n\t\t *\n\t\t * @type {Function}\n\t\t */\n\t\t pluralize.singular = replaceWord(\n\t\t irregularPlurals, irregularSingles, singularRules\n\t\t );\n\n\t\t /**\n\t\t * Check if a word is singular.\n\t\t *\n\t\t * @type {Function}\n\t\t */\n\t\t pluralize.isSingular = checkWord(\n\t\t irregularPlurals, irregularSingles, singularRules\n\t\t );\n\n\t\t /**\n\t\t * Add a pluralization rule to the collection.\n\t\t *\n\t\t * @param {(string|RegExp)} rule\n\t\t * @param {string} replacement\n\t\t */\n\t\t pluralize.addPluralRule = function (rule, replacement) {\n\t\t pluralRules.push([sanitizeRule(rule), replacement]);\n\t\t };\n\n\t\t /**\n\t\t * Add a singularization rule to the collection.\n\t\t *\n\t\t * @param {(string|RegExp)} rule\n\t\t * @param {string} replacement\n\t\t */\n\t\t pluralize.addSingularRule = function (rule, replacement) {\n\t\t singularRules.push([sanitizeRule(rule), replacement]);\n\t\t };\n\n\t\t /**\n\t\t * Add an uncountable word rule.\n\t\t *\n\t\t * @param {(string|RegExp)} word\n\t\t */\n\t\t pluralize.addUncountableRule = function (word) {\n\t\t if (typeof word === 'string') {\n\t\t uncountables[word.toLowerCase()] = true;\n\t\t return;\n\t\t }\n\n\t\t // Set singular and plural references for the word.\n\t\t pluralize.addPluralRule(word, '$0');\n\t\t pluralize.addSingularRule(word, '$0');\n\t\t };\n\n\t\t /**\n\t\t * Add an irregular word definition.\n\t\t *\n\t\t * @param {string} single\n\t\t * @param {string} plural\n\t\t */\n\t\t pluralize.addIrregularRule = function (single, plural) {\n\t\t plural = plural.toLowerCase();\n\t\t single = single.toLowerCase();\n\n\t\t irregularSingles[single] = plural;\n\t\t irregularPlurals[plural] = single;\n\t\t };\n\n\t\t /**\n\t\t * Irregular rules.\n\t\t */\n\t\t [\n\t\t // Pronouns.\n\t\t ['I', 'we'],\n\t\t ['me', 'us'],\n\t\t ['he', 'they'],\n\t\t ['she', 'they'],\n\t\t ['them', 'them'],\n\t\t ['myself', 'ourselves'],\n\t\t ['yourself', 'yourselves'],\n\t\t ['itself', 'themselves'],\n\t\t ['herself', 'themselves'],\n\t\t ['himself', 'themselves'],\n\t\t ['themself', 'themselves'],\n\t\t ['is', 'are'],\n\t\t ['was', 'were'],\n\t\t ['has', 'have'],\n\t\t ['this', 'these'],\n\t\t ['that', 'those'],\n\t\t // Words ending in with a consonant and `o`.\n\t\t ['echo', 'echoes'],\n\t\t ['dingo', 'dingoes'],\n\t\t ['volcano', 'volcanoes'],\n\t\t ['tornado', 'tornadoes'],\n\t\t ['torpedo', 'torpedoes'],\n\t\t // Ends with `us`.\n\t\t ['genus', 'genera'],\n\t\t ['viscus', 'viscera'],\n\t\t // Ends with `ma`.\n\t\t ['stigma', 'stigmata'],\n\t\t ['stoma', 'stomata'],\n\t\t ['dogma', 'dogmata'],\n\t\t ['lemma', 'lemmata'],\n\t\t ['schema', 'schemata'],\n\t\t ['anathema', 'anathemata'],\n\t\t // Other irregular rules.\n\t\t ['ox', 'oxen'],\n\t\t ['axe', 'axes'],\n\t\t ['die', 'dice'],\n\t\t ['yes', 'yeses'],\n\t\t ['foot', 'feet'],\n\t\t ['eave', 'eaves'],\n\t\t ['goose', 'geese'],\n\t\t ['tooth', 'teeth'],\n\t\t ['quiz', 'quizzes'],\n\t\t ['human', 'humans'],\n\t\t ['proof', 'proofs'],\n\t\t ['carve', 'carves'],\n\t\t ['valve', 'valves'],\n\t\t ['looey', 'looies'],\n\t\t ['thief', 'thieves'],\n\t\t ['groove', 'grooves'],\n\t\t ['pickaxe', 'pickaxes'],\n\t\t ['passerby', 'passersby']\n\t\t ].forEach(function (rule) {\n\t\t return pluralize.addIrregularRule(rule[0], rule[1]);\n\t\t });\n\n\t\t /**\n\t\t * Pluralization rules.\n\t\t */\n\t\t [\n\t\t [/s?$/i, 's'],\n\t\t [/[^\\u0000-\\u007F]$/i, '$0'],\n\t\t [/([^aeiou]ese)$/i, '$1'],\n\t\t [/(ax|test)is$/i, '$1es'],\n\t\t [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n\t\t [/(e[mn]u)s?$/i, '$1s'],\n\t\t [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n\t\t [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n\t\t [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n\t\t [/(seraph|cherub)(?:im)?$/i, '$1im'],\n\t\t [/(her|at|gr)o$/i, '$1oes'],\n\t\t [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n\t\t [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n\t\t [/sis$/i, 'ses'],\n\t\t [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n\t\t [/([^aeiouy]|qu)y$/i, '$1ies'],\n\t\t [/([^ch][ieo][ln])ey$/i, '$1ies'],\n\t\t [/(x|ch|ss|sh|zz)$/i, '$1es'],\n\t\t [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n\t\t [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n\t\t [/(pe)(?:rson|ople)$/i, '$1ople'],\n\t\t [/(child)(?:ren)?$/i, '$1ren'],\n\t\t [/eaux$/i, '$0'],\n\t\t [/m[ae]n$/i, 'men'],\n\t\t ['thou', 'you']\n\t\t ].forEach(function (rule) {\n\t\t return pluralize.addPluralRule(rule[0], rule[1]);\n\t\t });\n\n\t\t /**\n\t\t * Singularization rules.\n\t\t */\n\t\t [\n\t\t [/s$/i, ''],\n\t\t [/(ss)$/i, '$1'],\n\t\t [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n\t\t [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n\t\t [/ies$/i, 'y'],\n\t\t [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n\t\t [/\\b(mon|smil)ies$/i, '$1ey'],\n\t\t [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n\t\t [/(seraph|cherub)im$/i, '$1'],\n\t\t [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n\t\t [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n\t\t [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n\t\t [/(test)(?:is|es)$/i, '$1is'],\n\t\t [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n\t\t [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n\t\t [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n\t\t [/(alumn|alg|vertebr)ae$/i, '$1a'],\n\t\t [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n\t\t [/(matr|append)ices$/i, '$1ix'],\n\t\t [/(pe)(rson|ople)$/i, '$1rson'],\n\t\t [/(child)ren$/i, '$1'],\n\t\t [/(eau)x?$/i, '$1'],\n\t\t [/men$/i, 'man']\n\t\t ].forEach(function (rule) {\n\t\t return pluralize.addSingularRule(rule[0], rule[1]);\n\t\t });\n\n\t\t /**\n\t\t * Uncountable rules.\n\t\t */\n\t\t [\n\t\t // Singular words with no plurals.\n\t\t 'adulthood',\n\t\t 'advice',\n\t\t 'agenda',\n\t\t 'aid',\n\t\t 'aircraft',\n\t\t 'alcohol',\n\t\t 'ammo',\n\t\t 'analytics',\n\t\t 'anime',\n\t\t 'athletics',\n\t\t 'audio',\n\t\t 'bison',\n\t\t 'blood',\n\t\t 'bream',\n\t\t 'buffalo',\n\t\t 'butter',\n\t\t 'carp',\n\t\t 'cash',\n\t\t 'chassis',\n\t\t 'chess',\n\t\t 'clothing',\n\t\t 'cod',\n\t\t 'commerce',\n\t\t 'cooperation',\n\t\t 'corps',\n\t\t 'debris',\n\t\t 'diabetes',\n\t\t 'digestion',\n\t\t 'elk',\n\t\t 'energy',\n\t\t 'equipment',\n\t\t 'excretion',\n\t\t 'expertise',\n\t\t 'firmware',\n\t\t 'flounder',\n\t\t 'fun',\n\t\t 'gallows',\n\t\t 'garbage',\n\t\t 'graffiti',\n\t\t 'hardware',\n\t\t 'headquarters',\n\t\t 'health',\n\t\t 'herpes',\n\t\t 'highjinks',\n\t\t 'homework',\n\t\t 'housework',\n\t\t 'information',\n\t\t 'jeans',\n\t\t 'justice',\n\t\t 'kudos',\n\t\t 'labour',\n\t\t 'literature',\n\t\t 'machinery',\n\t\t 'mackerel',\n\t\t 'mail',\n\t\t 'media',\n\t\t 'mews',\n\t\t 'moose',\n\t\t 'music',\n\t\t 'mud',\n\t\t 'manga',\n\t\t 'news',\n\t\t 'only',\n\t\t 'personnel',\n\t\t 'pike',\n\t\t 'plankton',\n\t\t 'pliers',\n\t\t 'police',\n\t\t 'pollution',\n\t\t 'premises',\n\t\t 'rain',\n\t\t 'research',\n\t\t 'rice',\n\t\t 'salmon',\n\t\t 'scissors',\n\t\t 'series',\n\t\t 'sewage',\n\t\t 'shambles',\n\t\t 'shrimp',\n\t\t 'software',\n\t\t 'species',\n\t\t 'staff',\n\t\t 'swine',\n\t\t 'tennis',\n\t\t 'traffic',\n\t\t 'transportation',\n\t\t 'trout',\n\t\t 'tuna',\n\t\t 'wealth',\n\t\t 'welfare',\n\t\t 'whiting',\n\t\t 'wildebeest',\n\t\t 'wildlife',\n\t\t 'you',\n\t\t /pok[eĆ©]mon$/i,\n\t\t // Regexes.\n\t\t /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n\t\t /deer$/i, // \"deer\", \"reindeer\"\n\t\t /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n\t\t /measles$/i,\n\t\t /o[iu]s$/i, // \"carnivorous\"\n\t\t /pox$/i, // \"chickpox\", \"smallpox\"\n\t\t /sheep$/i\n\t\t ].forEach(pluralize.addUncountableRule);\n\n\t\t return pluralize;\n\t\t}); \n\t} (pluralize$2));\n\treturn pluralize$2.exports;\n}\n\nvar pluralizeExports = requirePluralize();\nvar pluralize = /*@__PURE__*/getDefaultExportFromCjs(pluralizeExports);\n\nexport { pluralize as default };\n","/*! (c) Andrea Giammarchi (ISC) */var hyperHTML=function(N){\"use strict\";var t={};try{t.WeakMap=WeakMap}catch(e){t.WeakMap=function(t,e){var n=e.defineProperty,r=e.hasOwnProperty,i=a.prototype;return i.delete=function(e){return this.has(e)&&delete e[this._]},i.get=function(e){return this.has(e)?e[this._]:void 0},i.has=function(e){return r.call(e,this._)},i.set=function(e,t){return n(e,this._,{configurable:!0,value:t}),this},a;function a(e){n(this,\"_\",{value:\"_@ungap/weakmap\"+t++}),e&&e.forEach(o,this)}function o(e){this.set(e[0],e[1])}}(Math.random(),Object)}var s=t.WeakMap,i={};try{i.WeakSet=WeakSet}catch(e){!function(e,t){var n=r.prototype;function r(){t(this,\"_\",{value:\"_@ungap/weakmap\"+e++})}n.add=function(e){return this.has(e)||t(e,this._,{value:!0,configurable:!0}),this},n.has=function(e){return this.hasOwnProperty.call(e,this._)},n.delete=function(e){return this.has(e)&&delete e[this._]},i.WeakSet=r}(Math.random(),Object.defineProperty)}function m(e,t,n,r,i,a){for(var o=(\"selectedIndex\"in t),u=o;ro;)--c;l=u+r-c;var m=Array(l),y=s[c];for(--n;y;){for(var b=y.newi,w=y.oldi;b>>0;n\"+e+\"\",r.querySelectorAll(t)):(r.innerHTML=e,r.childNodes)),n},function(e,t){return(\"svg\"===t?function(e){var t=H(O),n=H(\"div\");return n.innerHTML=''+e+\" \",F(t,n.firstChild.childNodes),t}:M)(e)});function F(e,t){for(var n=t.length;n--;)e.appendChild(t[0])}function H(e){return e===O?S.createDocumentFragment():S.createElementNS(\"http://www.w3.org/1999/xhtml\",e)}var I,z,V,Z,G,q,B,J,K,Q,U=(z=\"appendChild\",V=\"cloneNode\",Z=\"createTextNode\",q=(G=\"importNode\")in(I=N),(B=I.createDocumentFragment())[z](I[Z](\"g\")),B[z](I[Z](\"\")),(q?I[G](B,!0):B[V](!0)).childNodes.length<2?function e(t,n){for(var r=t[V](),i=t.childNodes||[],a=i.length,o=0;n&&o',J[K].childNodes[0].getAttribute(Q)==Y)||(Y=\"_dt: \"+Y.slice(1,-1)+\";\",ee=!0)}catch(e){}var te=\"\\x3c!--\"+Y+\"--\\x3e\",ne=8,re=1,ie=3,ae=/^(?:style|textarea)$/i,oe=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;var ue=\" \\\\f\\\\n\\\\r\\\\t\",ce=\"[^\"+ue+\"\\\\/>\\\"'=]+\",le=\"[\"+ue+\"]+\"+ce,se=\"<([A-Za-z]+[A-Za-z0-9:._-]*)((?:\",fe=\"(?:\\\\s*=\\\\s*(?:'[^']*?'|\\\"[^\\\"]*?\\\"|<[^>]*?>|\"+ce.replace(\"\\\\/\",\"\")+\"))?)\",he=new RegExp(se+le+fe+\"+)([\"+ue+\"]*/?>)\",\"g\"),de=new RegExp(se+le+fe+\"*)([\"+ue+\"]*/>)\",\"g\"),ve=new RegExp(\"(\"+le+\"\\\\s*=\\\\s*)(['\\\"]?)\"+te+\"\\\\2\",\"gi\");function pe(e,t,n,r){return\"<\"+t+n.replace(ve,ge)+r}function ge(e,t,n){return t+(n||'\"')+Y+(n||'\"')}function me(e,t,n){return oe.test(t)?e:\"<\"+t+n+\">\"+t+\">\"}var ye=ee?function(e,t){var n=t.join(\" \");return t.slice.call(e,0).sort(function(e,t){return n.indexOf(e.name)<=n.indexOf(t.name)?-1:1})}:function(e,t){return t.slice.call(e,0)};function be(e,t,n,r){for(var i=e.childNodes,a=i.length,o=0;o {\n elem.remove();\n });\n}\n\n/**\n * Adds error class to each element while emitting a warning\n * @param {HTMLElement} elem\n * @param {String} msg message to show in warning\n * @param {String=} title error message to add on each element\n */\nfunction markAsOffending(elem, msg, title) {\n elem.classList.add(\"respec-offending-element\");\n if (!elem.hasAttribute(\"title\")) {\n elem.setAttribute(\"title\", title || msg);\n }\n if (!elem.id) {\n addId(elem, \"respec-offender\");\n }\n}\n\n// STRING HELPERS\n/**\n * @param {\"conjunction\"|\"disjunction\"} type\n * @param {\"long\"|\"narrow\"} style\n */\nfunction joinFactory(type, style = \"long\") {\n const formatter = new Intl.ListFormat(docLang, { style, type });\n /**\n * @template T\n * @param {string[]} items\n * @param {(value: string, index: number, array: string[]) => any} [mapper]\n */\n return (items, mapper) => {\n let elemCount = 0;\n return formatter.formatToParts(items).map(({ type, value }) => {\n if (type === \"element\" && mapper) {\n return mapper(value, elemCount++, items);\n }\n return value;\n });\n };\n}\n\n/**\n * Takes an array and returns a string that separates each of its items with the\n * proper commas and \"and\". The second argument is a mapping function that can\n * convert the items before they are joined.\n */\nconst conjunction = joinFactory(\"conjunction\");\nconst disjunction = joinFactory(\"disjunction\");\n\n/**\n *\n * @param {string[]} items\n * @param {(value: undefined, index: number, array: undefined[]) => string} [mapper]\n */\nexport function joinAnd(items, mapper) {\n return conjunction(items, mapper).join(\"\");\n}\n\n/**\n *\n * @param {string[]} items\n * @param {(value: undefined, index: number, array: undefined[]) => string} [mapper]\n */\nexport function joinOr(items, mapper) {\n return disjunction(items, mapper).join(\"\");\n}\n\n/**\n * Takes a string, applies some XML escapes, and returns the escaped string.\n * @param {string} str\n */\nexport function xmlEscape(str) {\n return str\n .replace(/&/g, \"&\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/>} T\n * @param {T} localizationStrings\n * @returns {T[keyof T]}\n */\nexport function getIntlData(localizationStrings, lang = docLang) {\n lang = lang.toLowerCase();\n // Proxy return type is a known bug:\n // https://github.com/Microsoft/TypeScript/issues/20846\n // @ts-expect-error\n return new Proxy(localizationStrings, {\n /** @param {string} key */\n get(data, key) {\n const result = getIntlDataForKey(data, key, lang) || data.en[key];\n if (!result) {\n throw new Error(`No l10n data for key: \"${key}\"`);\n }\n return result;\n },\n });\n}\n\n/**\n * @template {Record>} T\n * @param {T} localizationStrings\n * @param {string} key\n */\nexport function getIntlDataForKey(localizationStrings, key, lang = docLang) {\n lang = lang.toLowerCase();\n return (\n localizationStrings[lang]?.[key] ||\n localizationStrings[lang.match(/^(\\w{2,3})-.+$/)?.[1]]?.[key]\n );\n}\n\n// --- DATE HELPERS -------------------------------------------------------------------------------\n/**\n * Takes a Date object and an optional separator and returns the year,month,day\n * representation with the custom separator (defaulting to none) and proper\n * 0-padding.\n * @param {Date} date\n */\nexport function concatDate(date, sep = \"\") {\n return ISODate.format(date).replace(dashes, sep);\n}\n\n/**\n * Checks if a date is in expected format used by ReSpec (yyyy-mm-dd)\n * @param {string} rawDate\n */\nexport function isValidConfDate(rawDate) {\n const date = /\\d{4}-\\d{2}-\\d{2}/.test(rawDate)\n ? new Date(rawDate)\n : \"Invalid Date\";\n return date.toString() !== \"Invalid Date\";\n}\n\n/**\n * Given an object, it converts it to a key value pair separated by (\"=\", configurable) and a delimiter (\" ,\" configurable).\n * @example {\"foo\": \"bar\", \"baz\": 1} becomes \"foo=bar, baz=1\"\n * @param {Record} obj\n */\nexport function toKeyValuePairs(obj, delimiter = \", \", separator = \"=\") {\n return Array.from(Object.entries(obj))\n .map(([key, value]) => `${key}${separator}${JSON.stringify(value)}`)\n .join(delimiter);\n}\n\n// STYLE HELPERS\n/**\n * Take a document and either a link or an array of links to CSS and appends a\n * ` ` element to the head pointing to each.\n * @param {Document} doc\n * @param {string | string[]} urls\n */\nexport function linkCSS(doc, urls) {\n const stylesArray = [].concat(urls);\n const frag = stylesArray\n .map(url => {\n const link = doc.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = url;\n return link;\n })\n .reduce((elem, nextLink) => {\n elem.appendChild(nextLink);\n return elem;\n }, doc.createDocumentFragment());\n doc.head.appendChild(frag);\n}\n\n// TRANSFORMATIONS\n\n/**\n * Run list of transforms over content and return result.\n *\n * Please note that this is a legacy method that is only kept in order to\n * maintain compatibility with RSv1. It is therefore not tested and not actively\n * supported.\n * @this {any}\n * @param {string} content\n * @param {string} [flist] List of global function names.\n * @param {unknown[]} [funcArgs] Arguments to pass to each function.\n */\nexport function runTransforms(content, flist, ...funcArgs) {\n const args = [this, content, ...funcArgs];\n if (flist) {\n const methods = flist.split(/\\s+/);\n for (const meth of methods) {\n /** @type {any} */\n const method = window[meth];\n if (method) {\n // the initial call passed |this| directly, so we keep it that way\n try {\n content = method.apply(this, args);\n } catch (e) {\n const msg = `call to \\`${meth}()\\` failed with: ${e}.`;\n const hint = \"See developer console for stack trace.\";\n showWarning(msg, \"utils/runTransforms\", { hint, cause: e });\n }\n }\n }\n }\n return content;\n}\n\n/**\n * Cached request handler\n * @param {RequestInfo} input\n * @param {number} maxAge cache expiration duration in ms. defaults to 24 hours\n * @return {Promise}\n * if a cached response is available and it's not stale, return it\n * else: request from network, cache and return fresh response.\n * If network fails, return a stale cached version if exists (else throw)\n */\nexport async function fetchAndCache(input, maxAge = 24 * 60 * 60 * 1000) {\n const request = new Request(input);\n const url = new URL(request.url);\n\n // use data from cache data if valid and render\n let cache;\n let cachedResponse;\n if (\"caches\" in window) {\n try {\n cache = await caches.open(url.origin);\n cachedResponse = await cache.match(request);\n if (\n cachedResponse &&\n new Date(cachedResponse.headers.get(\"Expires\")) > new Date()\n ) {\n return cachedResponse;\n }\n } catch (err) {\n console.error(\"Failed to use Cache API.\", err);\n }\n }\n\n // otherwise fetch new data and cache\n const response = await fetch(request);\n if (!response.ok) {\n if (cachedResponse) {\n // return stale version\n console.warn(`Returning a stale cached response for ${url}`);\n return cachedResponse;\n }\n }\n\n // cache response\n if (cache && response.ok) {\n const clonedResponse = response.clone();\n const customHeaders = new Headers(response.headers);\n const expiryDate = new Date(Date.now() + maxAge);\n customHeaders.set(\"Expires\", expiryDate.toISOString());\n const cacheResponse = new Response(await clonedResponse.blob(), {\n headers: customHeaders,\n });\n // put in cache, and forget it (there is no recovery if it throws, but that's ok).\n await cache.put(request, cacheResponse).catch(console.error);\n }\n return response;\n}\n\n// --- DOM HELPERS -------------------------------\n\n/**\n * Separates each item with proper commas.\n * @template T\n * @param {T[]} array\n * @param {(item: T) => any} [mapper]\n */\nexport function htmlJoinComma(array, mapper = item => item) {\n const items = array.map(mapper);\n const joined = items.slice(0, -1).map(item => html`${item}, `);\n return html`${joined}${items[items.length - 1]}`;\n}\n/**\n *\n * @param {string[]} array\n * @param {(item: any) => any[]} [mapper]\n */\nexport function htmlJoinAnd(array, mapper) {\n const result = [].concat(conjunction(array, mapper));\n return result.map(item => (typeof item === \"string\" ? html`${item}` : item));\n}\n\n/**\n * Creates and sets an ID to an element (elem) by hashing the text content.\n *\n * @param {HTMLElement} elem element to hash from\n * @param {String} prefix prefix to prepend to the generated id\n */\nexport function addHashId(elem, prefix = \"\") {\n const text = norm(elem.textContent);\n const hash = hashString(text);\n return addId(elem, prefix, hash);\n}\n\n/**\n * Creates and sets an ID to an element (elem) using a specific prefix if\n * provided, and a specific text if given.\n * @param {HTMLElement} elem element\n * @param {String} pfx prefix\n * @param {String} txt text\n * @param {Boolean} noLC do not convert to lowercase\n * @returns {String} generated (or existing) id for element\n */\nexport function addId(elem, pfx = \"\", txt = \"\", noLC = false) {\n if (elem.id) {\n return elem.id;\n }\n if (!txt) {\n txt = (elem.title ? elem.title : elem.textContent).trim();\n }\n let id = noLC ? txt : txt.toLowerCase();\n id = id\n .trim()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\W+/gim, \"-\")\n .replace(/^-+/, \"\")\n .replace(/-+$/, \"\");\n\n if (!id) {\n id = \"generatedID\";\n } else if (/\\.$/.test(id) || !/^[a-z]/i.test(pfx || id)) {\n id = `x${id}`; // trailing . doesn't play well with jQuery\n }\n if (pfx) {\n id = `${pfx}-${id}`;\n }\n if (elem.ownerDocument.getElementById(id)) {\n let i = 0;\n let nextId = `${id}-${i}`;\n while (elem.ownerDocument.getElementById(nextId)) {\n i += 1;\n nextId = `${id}-${i}`;\n }\n id = nextId;\n }\n elem.id = id;\n return id;\n}\n\n/**\n * Returns all the descendant text nodes of an element.\n * @param {Node} el\n * @param {string[]} exclusions node localName to exclude\n * @param {object} options\n * @param {boolean} options.wsNodes return only whitespace-only nodes.\n * @returns {Text[]}\n */\nexport function getTextNodes(el, exclusions = [], options = { wsNodes: true }) {\n const exclusionQuery = exclusions.join(\", \");\n const acceptNode = (/** @type {Text} */ node) => {\n if (!options.wsNodes && !node.data.trim()) {\n return NodeFilter.FILTER_REJECT;\n }\n if (exclusionQuery && node.parentElement.closest(exclusionQuery)) {\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_ACCEPT;\n };\n const nodeIterator = document.createNodeIterator(\n el,\n NodeFilter.SHOW_TEXT,\n acceptNode\n );\n /** @type {Text[]} */\n const textNodes = [];\n let node;\n while ((node = nodeIterator.nextNode())) {\n textNodes.push(/** @type {Text} */ (node));\n }\n return textNodes;\n}\n\n/**\n * For any element, returns an array of title strings that applies the algorithm\n * used for determining the actual title of a `` element (but can apply to\n * other as well).\n *\n * This method now *prefers* the `data-lt` attribute for the list of titles.\n * That attribute is added by this method to `` elements, so subsequent\n * calls to this method will return the `data-lt` based list.\n * @param {HTMLElement} elem\n * @returns {String[]} array of title strings\n */\nexport function getDfnTitles(elem) {\n const titleSet = new Set();\n // data-lt-noDefault avoid using the text content of a definition\n // in the definition list.\n // ltNodefault is === \"data-lt-noDefault\"... someone screwed up š\n const normText = \"ltNodefault\" in elem.dataset ? \"\" : norm(elem.textContent);\n const child = /** @type {HTMLElement | undefined} */ (elem.children[0]);\n if (elem.dataset.lt) {\n // prefer @data-lt for the list of title aliases\n elem.dataset.lt\n .split(\"|\")\n .map(item => norm(item))\n .forEach(item => titleSet.add(item));\n } else if (\n elem.childNodes.length === 1 &&\n elem.getElementsByTagName(\"abbr\").length === 1 &&\n child.title\n ) {\n titleSet.add(child.title);\n } else if (elem.textContent === '\"\"') {\n titleSet.add(\"the-empty-string\");\n }\n\n titleSet.add(normText);\n titleSet.delete(\"\");\n\n // We could have done this with @data-lt (as the logic is same), but if\n // @data-lt was not present, we would end up using @data-local-lt as element's\n // id (in other words, we prefer textContent over @data-local-lt for dfn id)\n if (elem.dataset.localLt) {\n const localLt = elem.dataset.localLt.split(\"|\");\n localLt.forEach(item => titleSet.add(norm(item)));\n }\n\n const titles = [...titleSet];\n return titles;\n}\n\n/**\n * For an element (usually ), returns an array of targets that element might\n * refer to, in the object structure:\n * @typedef {object} LinkTarget\n * @property {string} for\n * @property {string} title\n *\n * For an element like:\n * Int3.member
\n * we'll return:\n * * {for: \"int2\", title: \"int3.member\"}\n * * {for: \"int3\", title: \"member\"}\n * * {for: \"\", title: \"int3.member\"}\n * @param {HTMLElement} elem\n * @returns {LinkTarget[]}\n */\nexport function getLinkTargets(elem) {\n /** @type {HTMLElement} */\n const linkForElem = elem.closest(\"[data-link-for]\");\n const linkFor = linkForElem ? linkForElem.dataset.linkFor : \"\";\n const titles = getDfnTitles(elem);\n const results = titles.reduce((result, title) => {\n // supports legacy Foo.Bar() definitions\n const split = title.split(\".\");\n if (split.length === 2) {\n // If there are multiple '.'s, this won't match an\n // Interface/member pair anyway.\n result.push({ for: split[0], title: split[1] });\n }\n result.push({ for: linkFor, title });\n if (!linkForElem) result.push({ for: title, title });\n\n // Finally, we can try to match without link for\n if (linkFor !== \"\") result.push({ for: \"\", title });\n return result;\n }, []);\n return results;\n}\n\n/**\n * Changes name of a DOM Element\n * @param {Element} elem element to rename\n * @param {String} newName new element name\n * @param {Object} options\n * @param {boolean} options.copyAttributes\n *\n * @returns {Element} new renamed element\n */\nexport function renameElement(\n elem,\n newName,\n options = { copyAttributes: true }\n) {\n if (elem.localName === newName) return elem;\n const newElement = elem.ownerDocument.createElement(newName);\n // copy attributes\n if (options.copyAttributes) {\n for (const { name, value } of elem.attributes) {\n newElement.setAttribute(name, value);\n }\n }\n // copy child nodes\n newElement.append(...elem.childNodes);\n elem.replaceWith(newElement);\n return newElement;\n}\n\n/**\n * @param {string} ref\n * @param {HTMLElement} element\n */\nexport function refTypeFromContext(ref, element) {\n const closestInformative = element.closest(nonNormativeSelector);\n let isInformative = false;\n if (closestInformative) {\n // check if parent is not normative\n isInformative =\n !element.closest(\".normative\") ||\n !closestInformative.querySelector(\".normative\");\n }\n // prefixes `!` and `?` override section behavior\n if (ref.startsWith(\"!\")) {\n if (isInformative) {\n // A (forced) normative reference in informative section is illegal\n return { type: \"informative\", illegal: true };\n }\n isInformative = false;\n } else if (ref.startsWith(\"?\")) {\n isInformative = true;\n }\n const type = isInformative ? \"informative\" : \"normative\";\n return { type, illegal: false };\n}\n\n/**\n * Wraps inner contents with the wrapper node\n * @param {Node} outer outer node to be modified\n * @param {Element} wrapper wrapper node to be appended\n */\nexport function wrapInner(outer, wrapper) {\n wrapper.append(...outer.childNodes);\n outer.appendChild(wrapper);\n return outer;\n}\n\n/**\n * @param {Element} element\n */\nexport function getPreviousSections(element) {\n /** @type {Element[]} */\n const sections = [];\n for (const previous of iteratePreviousElements(element)) {\n if (previous.localName === \"section\") {\n sections.push(previous);\n }\n }\n return sections;\n}\n\n/**\n * @param {Element} element\n */\nfunction* iteratePreviousElements(element) {\n let previous = element;\n while (previous.previousElementSibling) {\n previous = previous.previousElementSibling;\n yield previous;\n }\n}\n/**\n * Applies the selector for all its ancestors.\n * @param {Element} element\n * @param {string} selector\n */\nexport function parents(element, selector) {\n /** @type {Element[]} */\n const list = [];\n let parent = element.parentElement;\n while (parent) {\n const closest = parent.closest(selector);\n if (!closest) {\n break;\n }\n list.push(closest);\n parent = closest.parentElement;\n }\n return list;\n}\n\n/**\n * Calculates indentation when the element starts after a newline. The value\n * will be empty if no newline or any non-whitespace exists after one.\n * @param {Element} element\n *\n * @example `
` returns \" \" (4 spaces).\n */\nexport function getElementIndentation(element) {\n const { previousSibling } = element;\n if (!previousSibling || previousSibling.nodeType !== Node.TEXT_NODE) {\n return \"\";\n }\n const index = previousSibling.textContent.lastIndexOf(\"\\n\");\n if (index === -1) {\n return \"\";\n }\n const slice = previousSibling.textContent.slice(index + 1);\n if (/\\S/.test(slice)) {\n return \"\";\n }\n return slice;\n}\n\n/**\n * Generates simple ids. The id's increment after it yields.\n *\n * @param {String} namespace A string like \"highlight\".\n * @param {number} counter A number, which can start at a given value.\n */\nexport function msgIdGenerator(namespace, counter = 0) {\n /** @returns {Generator} */\n function* idGenerator(namespace, counter) {\n while (true) {\n yield `${namespace}:${counter}`;\n counter++;\n }\n }\n const gen = idGenerator(namespace, counter);\n return () => {\n return gen.next().value;\n };\n}\n\n/** @extends {Set} */\nexport class InsensitiveStringSet extends Set {\n /**\n * @param {Array} [keys] Optional, initial keys\n */\n constructor(keys = []) {\n super();\n for (const key of keys) {\n this.add(key);\n }\n }\n /**\n * @param {string} key\n */\n add(key) {\n if (!this.has(key) && !this.getCanonicalKey(key)) {\n return super.add(key);\n }\n return this;\n }\n /**\n * @param {string} key\n */\n has(key) {\n return (\n super.has(key) ||\n [...this.keys()].some(\n existingKey => existingKey.toLowerCase() === key.toLowerCase()\n )\n );\n }\n /**\n * @param {string} key\n */\n delete(key) {\n return super.has(key)\n ? super.delete(key)\n : super.delete(this.getCanonicalKey(key));\n }\n /**\n * @param {string} key\n */\n getCanonicalKey(key) {\n return super.has(key)\n ? key\n : [...this.keys()].find(\n existingKey => existingKey.toLowerCase() === key.toLowerCase()\n );\n }\n}\n\n/**\n * @param {HTMLElement} node\n */\nexport function makeSafeCopy(node) {\n const clone = node.cloneNode(true);\n clone.querySelectorAll(\"[id]\").forEach(elem => elem.removeAttribute(\"id\"));\n clone.querySelectorAll(\"dfn\").forEach(dfn => {\n renameElement(dfn, \"span\", { copyAttributes: false });\n });\n if (clone.hasAttribute(\"id\")) clone.removeAttribute(\"id\");\n removeCommentNodes(clone);\n return clone;\n}\n\n/**\n * @param {Node} node\n */\nexport function removeCommentNodes(node) {\n const walker = document.createTreeWalker(node, NodeFilter.SHOW_COMMENT);\n for (const comment of [...walkTree(walker)]) {\n comment.remove();\n }\n}\n\n/**\n * @template {Node} T\n * @param {TreeWalker} walker\n * @return {IterableIterator}\n */\nfunction* walkTree(walker) {\n while (walker.nextNode()) {\n yield /** @type {T} */ (walker.currentNode);\n }\n}\n\n/**\n * @template ValueType\n * @extends {Map}\n */\nexport class CaseInsensitiveMap extends Map {\n /**\n * @param {Array<[string, ValueType]>} [entries]\n */\n constructor(entries = []) {\n super();\n entries.forEach(([key, elem]) => {\n this.set(key, elem);\n });\n return this;\n }\n /**\n * @param {String} key\n * @param {ValueType} value\n */\n set(key, value) {\n super.set(key.toLowerCase(), value);\n return this;\n }\n /**\n * @param {String} key\n */\n get(key) {\n return super.get(key.toLowerCase());\n }\n /**\n * @param {String} key\n */\n has(key) {\n return super.has(key.toLowerCase());\n }\n /**\n * @param {String} key\n */\n delete(key) {\n return super.delete(key.toLowerCase());\n }\n}\n\nexport class RespecError extends Error {\n /**\n * @param {Parameters[0]} message\n * @param {Parameters[1]} plugin\n * @param {Parameters[2] & { isWarning: boolean }} options\n */\n constructor(message, plugin, options) {\n super(message, { ...(options.cause && { cause: options.cause }) });\n const name = options.isWarning ? \"ReSpecWarning\" : \"ReSpecError\";\n Object.assign(this, { message, plugin, name, ...options });\n if (options.elements) {\n options.elements.forEach(elem =>\n markAsOffending(elem, message, options.title)\n );\n }\n }\n\n toJSON() {\n const { message, name, stack } = this;\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/26792\n const { plugin, hint, elements, title, details } = this;\n return {\n message,\n name,\n plugin,\n hint,\n elements,\n title,\n details,\n stack,\n ...(this.cause instanceof Error && {\n cause: {\n name: this.cause.name,\n message: this.cause.message,\n stack: this.cause.stack,\n },\n }),\n };\n }\n}\n\n/**\n * @param {string} message\n * @param {string} pluginName Name of plugin that caused the error.\n * @param {object} [options]\n * @param {string} [options.hint] How to solve the error?\n * @param {HTMLElement[]} [options.elements] Offending elements.\n * @param {string} [options.title] Title attribute for offending elements. Can be a shorter form of the message.\n * @param {string} [options.details] Any further details/context.\n * @param {Error} [options.cause] The error that caused this one.\n */\nexport function showError(message, pluginName, options = {}) {\n const opts = { ...options, isWarning: false };\n pub(\"error\", new RespecError(message, pluginName, opts));\n}\n\n/**\n * @param {string} message\n * @param {string} pluginName Name of plugin that caused the error.\n * @param {object} [options]\n * @param {string} [options.hint] How to solve the error?\n * @param {HTMLElement[]} [options.elements] Offending elements.\n * @param {string} [options.title] Title attribute for offending elements. Can be a shorter form of the message.\n * @param {string} [options.details] Any further details/context.\n * @param {Error} [options.cause] The error that caused this one.\n */\nexport function showWarning(message, pluginName, options = {}) {\n const opts = { ...options, isWarning: true };\n pub(\"warn\", new RespecError(message, pluginName, opts));\n}\n\n/**\n * Creates showError, showWarning utilities for use in custom pre-process and\n * post-process plugins.\n * @param {string} pluginName\n */\nexport function makePluginUtils(pluginName) {\n /** @typedef {Parameters[2]} Options */\n return {\n /** @type {(message: string, options?: Options) => void} */\n showError: (msg, options) => showError(msg, pluginName, options),\n /** @type {(message: string, options?: Options) => void} */\n showWarning: (msg, options) => showWarning(msg, pluginName, options),\n };\n}\n\n/**\n * Makes a string `coded`.\n *\n * @param {string} item\n * @returns {string}\n */\nexport function toMDCode(item) {\n return item ? `\\`${item}\\`` : \"\";\n}\n\n/**\n * Joins an array of strings, wrapping each string in back-ticks (`) for inline markdown code.\n *\n * @param {string[]} array\n * @param {object} options\n * @param {boolean} options.quotes Surround each item in quotes\n */\nexport function codedJoinOr(array, { quotes } = { quotes: false }) {\n return joinOr(array, quotes ? s => toMDCode(addQuotes(s)) : toMDCode);\n}\n\n/**\n * Wraps in back-ticks ` for code.\n *\n * @param {string[]} array\n * @param {object} options\n * @param {boolean} options.quotes Surround each item in quotes\n */\nexport function codedJoinAnd(array, { quotes } = { quotes: false }) {\n return joinAnd(array, quotes ? s => toMDCode(addQuotes(s)) : toMDCode);\n}\n\nfunction addQuotes(item) {\n return String(item) ? `\"${item}\"` : \"\";\n}\n\n/**\n * Tagged template string, helps with linking to documentation.\n * Things inside [squareBrackets] are considered direct links to the documentation.\n * To alias something, one can use a \"|\", like [respecConfig|#respec-configuration].\n * @param {TemplateStringsArray} strings\n * @param {string[]} keys\n */\nexport function docLink(strings, ...keys) {\n const linkifiedStr = strings\n .map((s, i) => {\n const key = keys[i];\n if (!key) {\n return s;\n }\n // Linkables are wrapped in square brackets\n if (!key.startsWith(\"[\") && !key.endsWith(\"]\")) {\n return s + key;\n }\n\n const [linkingText, href] = key.slice(1, -1).split(\"|\");\n if (href) {\n const url = new URL(href, \"https://respec.org/docs/\");\n return `${s}[${linkingText}](${url})`;\n }\n return `${s}[\\`${linkingText}\\`](https://respec.org/docs/#${linkingText})`;\n })\n .join(\"\");\n return reindent(linkifiedStr);\n}\n\n/**\n * Takes a text string, trims it, splits it into lines,\n * finds the common indentation level, and then de-indents every line\n * by that common indentation level.\n *\n * @param {string} text - The text to be re-indented.\n * @returns {string} The re-indented text.\n */\nexport function reindent(text) {\n if (!text) {\n return text;\n }\n const lines = text.trimEnd().split(\"\\n\");\n while (lines.length && !lines[0].trim()) {\n lines.shift();\n }\n const indents = lines.filter(s => s.trim()).map(s => s.search(/[^\\s]/));\n const leastIndent = Math.min(...indents);\n return lines.map(s => s.slice(leastIndent)).join(\"\\n\");\n}\n","// @ts-check\n/**\n * Module core/pubsubhub\n *\n * Returns a singleton that can be used for message broadcasting\n * and message receiving. Replaces legacy \"msg\" code in ReSpec.\n */\nexport const name = \"core/pubsubhub\";\n\nimport { expose } from \"./expose-modules.js\";\nimport { showError } from \"./utils.js\";\n\nconst subscriptions = new EventTarget();\n\n/**\n *\n * @param {EventTopic} topic\n * @param {any} detail\n */\nexport function pub(topic, detail) {\n subscriptions.dispatchEvent(new CustomEvent(topic, { detail }));\n if (window.parent === window.self) {\n return;\n }\n // If this is an iframe, postMessage parent (used in testing).\n const args = String(JSON.stringify(detail?.stack || detail));\n window.parent.postMessage({ topic, args }, window.parent.location.origin);\n}\n\n/**\n * Subscribes to a message type.\n * @param {EventTopic} topic The topic to subscribe to\n * @param {Function} cb Callback function\n * @param {Object} [options]\n * @param {Boolean} [options.once] Add prop \"once\" for single notification.\n * @return {Object} An object that should be considered opaque,\n * used for unsubscribing from messages.\n */\nexport function sub(topic, cb, options = { once: false }) {\n /** @param {CustomEvent} ev */\n const listener = async ev => {\n try {\n await cb(ev.detail);\n } catch (error) {\n const msg = `Error in handler for topic \"${topic}\": ${error.message}`;\n showError(msg, `sub:${topic}`, { cause: error });\n }\n };\n subscriptions.addEventListener(topic, listener, options);\n}\n\nexpose(name, { sub });\n","// @ts-check\n// Module core/include-config\n// Inject's the document's configuration into the head as JSON.\nimport { sub } from \"./pubsubhub.js\";\nexport const name = \"core/include-config\";\n\nconst removeList = [\"githubToken\", \"githubUser\"];\n\nexport function run(config) {\n const userConfig = {};\n const amendConfig = newValues => Object.assign(userConfig, newValues);\n\n amendConfig(config);\n sub(\"amend-user-config\", amendConfig);\n\n sub(\"end-all\", () => {\n const script = document.createElement(\"script\");\n script.id = \"initialUserConfig\";\n script.type = \"application/json\";\n for (const prop of removeList) {\n if (prop in userConfig) delete userConfig[prop];\n }\n script.innerHTML = JSON.stringify(userConfig, null, 2);\n document.head.appendChild(script);\n });\n}\n","// @ts-check\n/**\n * module: core/exporter\n * Exports a ReSpec document, based on mime type, so it can be saved, etc.\n * Also performs cleanup, removing things that shouldn't be in published documents.\n * That is, elements that have a \"removeOnSave\" css class.\n */\n\nimport { removeCommentNodes, removeReSpec } from \"./utils.js\";\nimport { expose } from \"./expose-modules.js\";\nimport { html } from \"./import-maps.js\";\nimport { pub } from \"./pubsubhub.js\";\n\nconst mimeTypes = new Map([\n [\"text/html\", \"html\"],\n [\"application/xml\", \"xml\"],\n]);\n\n/**\n * Creates a dataURI from a ReSpec document. It also cleans up the document\n * removing various things.\n *\n * @param {String} mimeType mimetype. one of `mimeTypes` above\n * @param {Document} doc document to export. useful for testing purposes\n * @returns a stringified data-uri of document that can be saved.\n */\nexport function rsDocToDataURL(mimeType, doc = document) {\n const format = mimeTypes.get(mimeType);\n if (!format) {\n const validTypes = [...mimeTypes.values()].join(\", \");\n const msg = `Invalid format: ${mimeType}. Expected one of: ${validTypes}.`;\n throw new TypeError(msg);\n }\n const data = serialize(format, doc);\n const encodedString = encodeURIComponent(data);\n return `data:${mimeType};charset=utf-8,${encodedString}`;\n}\n\nexport function serialize(format, doc) {\n const cloneDoc = doc.cloneNode(true);\n cleanup(cloneDoc);\n let result = \"\";\n switch (format) {\n case \"xml\":\n result = new XMLSerializer().serializeToString(cloneDoc);\n break;\n default: {\n prettify(cloneDoc);\n if (cloneDoc.doctype) {\n result += new XMLSerializer().serializeToString(cloneDoc.doctype);\n }\n result += cloneDoc.documentElement.outerHTML;\n }\n }\n return result;\n}\n\nfunction cleanup(cloneDoc) {\n const { head, body, documentElement } = cloneDoc;\n removeCommentNodes(cloneDoc);\n\n cloneDoc\n .querySelectorAll(\".removeOnSave, #toc-nav\")\n .forEach(elem => elem.remove());\n body.classList.remove(\"toc-sidebar\");\n removeReSpec(documentElement);\n\n const insertions = cloneDoc.createDocumentFragment();\n\n // Move meta viewport, as it controls the rendering on mobile.\n const metaViewport = cloneDoc.querySelector(\"meta[name='viewport']\");\n if (metaViewport && head.firstChild !== metaViewport) {\n insertions.appendChild(metaViewport);\n }\n\n // Move charset to near top, as it needs to be in the first 512 bytes.\n let metaCharset = cloneDoc.querySelector(\n \"meta[charset], meta[content*='charset=']\"\n );\n if (!metaCharset) {\n metaCharset = html` `;\n }\n insertions.appendChild(metaCharset);\n\n // Add meta generator\n const respecVersion = `ReSpec ${window.respecVersion || \"Developer Channel\"}`;\n const metaGenerator = html`\n \n `;\n\n insertions.appendChild(metaGenerator);\n head.prepend(insertions);\n pub(\"beforesave\", documentElement);\n}\n\n/** @param {Document} cloneDoc */\nfunction prettify(cloneDoc) {\n cloneDoc.querySelectorAll(\"style\").forEach(el => {\n el.innerHTML = `\\n${el.innerHTML}\\n`;\n });\n cloneDoc.querySelectorAll(\"head > *\").forEach(el => {\n el.outerHTML = `\\n${el.outerHTML}`;\n });\n}\n\nexpose(\"core/exporter\", { rsDocToDataURL });\n","// @ts-check\n/**\n * This module adds a `respec` object to the `document` with the following\n * readonly properties:\n * - version: returns version of ReSpec Script.\n * - ready: returns a promise that settles when ReSpec finishes processing.\n *\n */\nimport { serialize } from \"../core/exporter.js\";\nimport { sub } from \"./pubsubhub.js\";\n\nexport const name = \"core/respec-global\";\n\nclass ReSpec {\n constructor() {\n /** @type {Promise} */\n this._respecDonePromise = new Promise(resolve => {\n sub(\"end-all\", () => resolve(), { once: true });\n });\n\n this.errors = [];\n this.warnings = [];\n\n sub(\"error\", rsError => {\n console.error(rsError, rsError.toJSON());\n this.errors.push(rsError);\n });\n sub(\"warn\", rsError => {\n console.warn(rsError, rsError.toJSON());\n this.warnings.push(rsError);\n });\n }\n\n get version() {\n return window.respecVersion;\n }\n\n get ready() {\n return this._respecDonePromise;\n }\n\n async toHTML() {\n return serialize(\"html\", document);\n }\n}\n\nexport function init() {\n const respec = new ReSpec();\n Object.defineProperty(document, \"respec\", { value: respec });\n}\n","// @ts-check\n/**\n * Module core/post-process\n *\n * Corresponds to respecConfig.postProcess and config.afterEnd.\n * - postProcess: an array of functions that get called\n * after processing finishes. This is not recommended and the feature is not\n * tested. Use with care, if you know what you're doing. Chances are you really\n * want to be using a new module with your own profile.\n * - afterEnd: final thing that is called.\n */\nimport { makePluginUtils, showError } from \"./utils.js\";\n\nexport const name = \"core/post-process\";\n\nexport async function run(config) {\n if (Array.isArray(config.postProcess)) {\n const promises = config.postProcess\n .filter(f => {\n const isFunction = typeof f === \"function\";\n if (!isFunction) {\n const msg = \"Every item in `postProcess` must be a JS function.\";\n showError(msg, name);\n }\n return isFunction;\n })\n .map(async (f, i) => {\n const fnName = `${name}/${f.name || `[${i}]`}`;\n const utils = makePluginUtils(fnName);\n try {\n return await f(config, document, utils);\n } catch (err) {\n const msg = `Function ${f.name} threw an error during \\`postProcess\\`.`;\n const hint = \"See developer console.\";\n showError(msg, name, { hint, cause: err });\n }\n });\n await Promise.all(promises);\n }\n if (typeof config.afterEnd === \"function\") {\n await config.afterEnd(config, document);\n }\n}\n","// @ts-check\n/**\n * Module core/pre-process\n *\n * Corresponds to respecConfig.preProcess.\n * - preProcess: an array of functions that get called\n * before anything else happens. This is not recommended and the feature is not\n * tested. Use with care, if you know what you're doing. Chances are you really\n * want to be using a new module with your own profile\n */\nimport { makePluginUtils, showError } from \"./utils.js\";\n\nexport const name = \"core/pre-process\";\n\nexport async function run(config) {\n if (Array.isArray(config.preProcess)) {\n const promises = config.preProcess\n .filter(f => {\n const isFunction = typeof f === \"function\";\n if (!isFunction) {\n const msg = \"Every item in `preProcess` must be a JS function.\";\n showError(msg, name);\n }\n return isFunction;\n })\n .map(async (f, i) => {\n const fnName = `${name}/${f.name || `[${i}]`}`;\n const utils = makePluginUtils(fnName);\n try {\n return await f(config, document, utils);\n } catch (err) {\n const msg = `Function ${f.name} threw an error during \\`preProcess\\`.`;\n const hint = \"See developer console.\";\n showError(msg, name, { hint, cause: err });\n }\n });\n await Promise.all(promises);\n }\n}\n","// @ts-check\n// Module core/base-runner\n// The module in charge of running the whole processing pipeline.\nimport { run as includeConfig } from \"./include-config.js\";\nimport { init as initReSpecGlobal } from \"./respec-global.js\";\nimport { run as overrideConfig } from \"./override-configuration.js\";\nimport { run as postProcess } from \"./post-process.js\";\nimport { run as preProcess } from \"./pre-process.js\";\nimport { pub } from \"./pubsubhub.js\";\nimport { removeReSpec } from \"./utils.js\";\n\nexport const name = \"core/base-runner\";\n\nexport async function runAll(plugs) {\n initReSpecGlobal();\n\n pub(\"start-all\", respecConfig);\n includeConfig(respecConfig);\n overrideConfig(respecConfig);\n performance.mark(`${name}-start`);\n await preProcess(respecConfig);\n\n const runnables = plugs.filter(p => isRunnableModule(p));\n runnables.forEach(\n plug => !plug.name && console.warn(\"Plugin lacks name:\", plug)\n );\n await executePreparePass(runnables, respecConfig);\n await executeRunPass(runnables, respecConfig);\n pub(\"plugins-done\", respecConfig);\n\n await postProcess(respecConfig);\n pub(\"end-all\");\n removeReSpec(document);\n performance.mark(`${name}-end`);\n performance.measure(name, `${name}-start`, `${name}-end`);\n}\n\nfunction isRunnableModule(plug) {\n return plug && (plug.run || plug.Plugin);\n}\n\nasync function executePreparePass(runnables, config) {\n for (const plug of runnables.filter(p => p.prepare)) {\n try {\n await plug.prepare(config);\n } catch (err) {\n console.error(err);\n }\n }\n}\n\nasync function executeRunPass(runnables, config) {\n for (const plug of runnables) {\n const name = plug.name || \"\";\n\n try {\n // eslint-disable-next-line no-async-promise-executor\n await new Promise(async (resolve, reject) => {\n const timerId = setTimeout(() => {\n const msg = `Plugin ${name} took too long.`;\n console.error(msg, plug);\n reject(new Error(msg));\n }, 15000);\n\n performance.mark(`${name}-start`);\n try {\n if (plug.Plugin) {\n await new plug.Plugin(config).run();\n resolve();\n } else if (plug.run) {\n await plug.run(config);\n resolve();\n }\n } catch (err) {\n reject(err);\n } finally {\n clearTimeout(timerId);\n performance.mark(`${name}-end`);\n performance.measure(name, `${name}-start`, `${name}-end`);\n }\n });\n } catch (error) {\n console.error(error);\n }\n }\n}\n","// @ts-check\n// Module core/override-configuration\n// A helper module that makes it possible to override settings specified in respecConfig\n// by passing them as a query string. This is useful when you just want to make a few\n// tweaks to a document before generating the snapshot, without mucking with the source.\n// For example, you can change the status and date by appending:\n// ?specStatus=LC&publishDate=2012-03-15\nimport { pub } from \"./pubsubhub.js\";\n\nexport const name = \"core/override-configuration\";\n\nexport function run(config) {\n const params = new URLSearchParams(document.location.search);\n const overrideEntries = Array.from(params)\n .filter(([key, value]) => !!key && !!value)\n .map(([codedKey, codedValue]) => {\n const key = decodeURIComponent(codedKey);\n const decodedValue = decodeURIComponent(codedValue.replace(/%3D/g, \"=\"));\n let value;\n try {\n value = JSON.parse(decodedValue);\n } catch {\n value = decodedValue;\n }\n return [key, value];\n });\n const overrideProps = Object.fromEntries(overrideEntries);\n Object.assign(config, overrideProps);\n pub(\"amend-user-config\", overrideProps);\n}\n","const css = String.raw;\n\n// Prettier ignore only to keep code indented from level 0.\n// prettier-ignore\nexport default css`\n.respec-modal .close-button {\n position: absolute;\n z-index: inherit;\n padding: 0.2em;\n font-weight: bold;\n cursor: pointer;\n margin-left: 5px;\n border: none;\n background: transparent;\n}\n\n#respec-ui {\n position: fixed;\n display: flex;\n flex-direction: row-reverse;\n top: 20px;\n right: 20px;\n width: 202px;\n text-align: right;\n z-index: 9000;\n}\n\n\n#respec-pill,\n.respec-info-button {\n height: 2.4em;\n background: #fff;\n background: var(--bg, #fff);\n color: rgb(120, 120, 120);\n color: var(--tocnav-normal-text, rgb(120, 120, 120));\n border: 1px solid #ccc;\n box-shadow: 1px 1px 8px 0 rgba(100, 100, 100, 0.5);\n box-shadow: 1px 1px 8px 0 var(--tocsidebar-shadow, rgba(100, 100, 100, 0.5));\n padding: 0.2em 0em;\n}\n\n.respec-info-button {\n border: none;\n opacity: 0.75;\n border-radius: 2em;\n margin-right: 1em;\n min-width: 3.5em;\n will-change: opacity;\n}\n\n.respec-info-button:focus,\n.respec-info-button:hover {\n opacity: 1;\n transition: opacity 0.2s;\n}\n\n#respec-pill {\n width: 4.8em;\n}\n\n#respec-pill:not(:disabled) {\n animation: respec-fadein 0.6s ease-in-out;\n}\n\n@keyframes respec-fadein {\n from {\n margin-top: -1.2em;\n border-radius: 50%;\n border: 0.2em solid rgba(100, 100, 100, 0.5);\n box-shadow: none;\n height: 4.8em;\n }\n to {\n margin-top: 0;\n border: 1px solid #ccc;\n border-radius: 0;\n box-shadow: 1px 1px 8px 0 rgba(100, 100, 100, 0.5);\n height: 2.4em;\n }\n}\n\n#respec-pill:disabled {\n margin-top: -1.2em;\n position: relative;\n border: none;\n box-shadow: none;\n border-radius: 50%;\n width: 4.8em;\n height: 4.8em;\n padding: 0;\n}\n\n#respec-pill:disabled::after {\n position: absolute;\n content: '';\n inset: -0.2em;\n border-radius: 50%;\n border: 0.2em solid rgba(100, 100, 100, 0.5);\n border-left: 0.2em solid transparent;\n animation: respec-spin 0.5s infinite linear;\n}\n\n@media (prefers-reduced-motion) {\n #respec-pill:not(:disabled) {\n animation: none;\n }\n\n #respec-pill:disabled::after {\n animation: none;\n border-left: 0.2em solid rgba(100, 100, 100, 0.5);\n }\n}\n\n@keyframes respec-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.respec-hidden {\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s 0.2s, opacity 0.2s linear;\n}\n\n.respec-visible {\n visibility: visible;\n opacity: 1;\n transition: opacity 0.2s linear;\n}\n\n#respec-pill:hover,\n#respec-pill:focus {\n color: rgb(0, 0, 0);\n background-color: rgb(245, 245, 245);\n transition: color 0.2s;\n}\n\n#respec-menu {\n position: absolute;\n margin: 0;\n padding: 0;\n font-family: sans-serif;\n background: var(--bg, #fff);\n color: var(--text, black);\n box-shadow: 1px 1px 8px 0 rgba(100, 100, 100, 0.5);\n width: 200px;\n display: none;\n text-align: left;\n margin-top: 32px;\n font-size: 0.8em;\n}\n\n#respec-menu:not([hidden]) {\n display: block;\n}\n\n#respec-menu li {\n list-style-type: none;\n margin: 0;\n padding: 0;\n}\n\n.respec-save-buttons {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(47%, 2fr));\n grid-gap: 0.5cm;\n padding: 0.5cm;\n}\n\n.respec-save-button:link {\n padding-top: 16px;\n color: var(--def-text, white);\n background: var(--def-bg, rgb(42, 90, 168));\n justify-self: stretch;\n height: 1cm;\n text-decoration: none;\n text-align: center;\n font-size: inherit;\n border: none;\n border-radius: 0.2cm;\n}\n\n.respec-save-button:link:hover {\n color: var(--def-text, white);\n background: var(--defrow-border, rgb(42, 90, 168));\n padding: 0;\n margin: 0;\n border: 0;\n padding-top: 16px;\n}\n\n.respec-save-button:link:focus {\n background: var(--tocnav-active-bg, #193766);\n color: var(--tocnav-active-text, black);\n}\n\n#respec-ui button:focus,\n#respec-pill:focus,\n.respec-option:focus {\n outline: 0;\n outline-style: none;\n}\n\n#respec-pill-error {\n background-color: red;\n color: white;\n}\n\n#respec-pill-warning {\n background-color: orange;\n color: white;\n}\n\n.respec-warning-list,\n.respec-error-list {\n margin: 0;\n padding: 0;\n font-family: sans-serif;\n font-size: 0.85em;\n}\n\n.respec-warning-list {\n background-color: rgb(255, 251, 230);\n}\n\n:is(.respec-warning-list,.respec-error-list) > li {\n list-style-type: none;\n margin: 0;\n padding: .5em 0;\n padding-left: 2em;\n padding-right: .5em;\n}\n\n:is(.respec-warning-list,.respec-error-list) > li + li {\n margin-top: 0.5rem;\n}\n\n:is(.respec-warning-list,.respec-error-list) > li:before {\n position: absolute;\n left: .4em;\n}\n\n:is(.respec-warning-list,.respec-error-list) p {\n padding: 0;\n margin: 0;\n}\n\n.respec-warning-list > li {\n color: rgb(92, 59, 0);\n border-bottom: thin solid rgb(255, 245, 194);\n}\n\n.respec-error-list,\n.respec-error-list li {\n background-color: rgb(255, 240, 240);\n}\n\n.respec-warning-list > li::before {\n content: \"ā ļø\";\n}\n\n.respec-error-list > li::before {\n content: \"š„\";\n}\n\n.respec-error-list > li {\n color: rgb(92, 59, 0);\n border-bottom: thin solid rgb(255, 215, 215);\n}\n\n:is(.respec-warning-list,.respec-error-list) > li li {\n list-style: disc;\n}\n\n#respec-overlay {\n display: block;\n position: fixed;\n z-index: 10000;\n top: 0px;\n left: 0px;\n height: 100%;\n width: 100%;\n background: #000;\n}\n\n.respec-show-overlay {\n transition: opacity 0.2s linear;\n opacity: 0.5;\n}\n\n.respec-hide-overlay {\n transition: opacity 0.2s linear;\n opacity: 0;\n}\n\n.respec-modal {\n display: block;\n position: fixed;\n z-index: 11000;\n top: 10%;\n background: var(--bg, #fff);\n color: var(--text, black);\n border: 5px solid #666;\n border-color: var(--tocsidebar-shadow, #666);\n min-width: 20%;\n padding: 0;\n max-height: 80%;\n overflow-y: auto;\n margin: 0 -0.5cm;\n left: 20%;\n max-width: 75%;\n min-width: 60%;\n}\n\n\n.respec-modal h3 {\n margin: 0;\n padding: 0.2em;\n left: 0 !important;\n text-align: center;\n background: var(--tocsidebar-shadow, #ddd);\n color: var(--text, black);\n font-size: 1em;\n}\n\n#respec-menu button.respec-option {\n background: var(--bg, white);\n color: var(--text, black);\n border: none;\n width: 100%;\n text-align: left;\n font-size: inherit;\n padding: 1.2em 1.2em;\n}\n\n#respec-menu button.respec-option:hover {\n background-color: var(--tocnav-hover-bg, #eee);\n color: var(--tocnav-hover-text, black);\n}\n\n.respec-cmd-icon {\n padding-right: 0.5em;\n}\n\n#respec-ui button.respec-option:first-child {\n margin-top: 0;\n}\n#respec-ui button.respec-option:last-child {\n border: none;\n border-radius: inherit;\n margin-bottom: 0;\n}\n\n.respec-button-copy-paste {\n position: absolute;\n height: 28px;\n width: 40px;\n cursor: pointer;\n background-image: linear-gradient(#fcfcfc, #eee);\n border: 1px solid rgb(144, 184, 222);\n border-left: 0;\n border-radius: 0px 0px 3px 0;\n -webkit-user-select: none;\n user-select: none;\n -webkit-appearance: none;\n top: 0;\n left: 127px;\n}\n\n@media print {\n #respec-ui {\n display: none;\n }\n}\n\n.respec-iframe {\n width: 100%;\n min-height: 550px;\n height: 100%;\n overflow: hidden;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n.respec-iframe:not(.ready) {\n background: url(\"https://respec.org/xref/loader.gif\") no-repeat center;\n}\n\n.respec-iframe + a[href] {\n font-size: 0.9rem;\n float: right;\n margin: 0 0.5em 0.5em;\n border-bottom-width: 1px;\n}\n\np:is(.respec-hint,.respec-occurrences) {\n display: block;\n margin-top: 0.5em;\n}\n\n.respec-plugin {\n text-align: right;\n color: rgb(120, 120, 120, .5);\n font-size: 0.6em;\n}\n`;\n","// @ts-check\n/**\n * Module core/markdown\n * Handles the optional markdown processing.\n *\n * Markdown support is optional. It is enabled by setting the `format`\n * property of the configuration object to \"markdown.\"\n *\n * We use marked for parsing Markdown:\n * https://github.com/markedjs/marked\n *\n */\n\nimport { getElementIndentation, reindent } from \"./utils.js\";\nimport { marked } from \"./import-maps.js\";\n\nexport const name = \"core/markdown\";\n\nconst gtEntity = />/gm;\nconst ampEntity = /&/gm;\n\nclass Renderer extends marked.Renderer {\n code(code, infoString, isEscaped) {\n const { language, ...metaData } = Renderer.parseInfoString(infoString);\n\n // regex to check whether the language is webidl\n if (/(^webidl$)/i.test(language)) {\n return `${code} `;\n }\n\n const html = super\n .code(code, language, isEscaped)\n .replace(`class=\"language-`, `class=\"`);\n\n const { example, illegalExample } = metaData;\n if (!example && !illegalExample) return html;\n\n const title = example || illegalExample;\n const className = `${language} ${example ? \"example\" : \"illegal-example\"}`;\n return html.replace(\"\", ``);\n }\n\n image(href, title, text) {\n if (!title) {\n return super.image(href, title, text);\n }\n const html = String.raw;\n return html`\n \n \n ${title} \n \n `;\n }\n\n /**\n * @param {string} infoString\n */\n static parseInfoString(infoString) {\n const firstSpace = infoString.search(/\\s/);\n if (firstSpace === -1) {\n return { language: infoString };\n }\n\n const language = infoString.slice(0, firstSpace);\n const metaDataStr = infoString.slice(firstSpace + 1);\n let metaData;\n if (metaDataStr) {\n try {\n metaData = JSON.parse(`{ ${metaDataStr} }`);\n } catch (error) {\n console.error(error);\n }\n }\n\n return { language, ...metaData };\n }\n\n heading(text, level, raw) {\n const headingWithIdRegex = /(.+)\\s+{#([\\w-]+)}$/;\n if (headingWithIdRegex.test(text)) {\n const [, textContent, id] = text.match(headingWithIdRegex);\n return `${textContent} `;\n }\n return super.heading(text, level, raw);\n }\n}\n\n/** @type {import('marked').MarkedOptions} */\nconst config = {\n gfm: true,\n renderer: new Renderer(),\n};\n\n/**\n * @param {string} text\n * @param {object} options\n * @param {boolean} options.inline\n */\nexport function markdownToHtml(text, options = { inline: false }) {\n const normalizedLeftPad = reindent(text);\n // As markdown is pulled from HTML, > and & are already escaped and\n // so blockquotes aren't picked up by the parser. This fixes it.\n const potentialMarkdown = normalizedLeftPad\n .replace(gtEntity, \">\")\n .replace(ampEntity, \"&\");\n\n const result = options.inline\n ? marked.parseInline(potentialMarkdown, config)\n : marked.parse(potentialMarkdown, config);\n return result;\n}\n\n/**\n * @param {string} selector\n * @return {(el: Element) => Element[]}\n */\nfunction convertElements(selector) {\n return element => {\n const elements = element.querySelectorAll(selector);\n elements.forEach(convertElement);\n return Array.from(elements);\n };\n}\n\n/**\n * @param {Element} element\n */\nfunction convertElement(element) {\n for (const pre of element.getElementsByTagName(\"pre\")) {\n // HTML parser implicitly removes a newline after \n // which breaks reindentation algorithm\n pre.prepend(\"\\n\");\n }\n element.innerHTML = markdownToHtml(element.innerHTML);\n}\n\n/**\n * CommonMark requires additional empty newlines between markdown and HTML lines.\n * This function adds them as a backward compatibility workaround.\n * @param {HTMLElement} element\n * @param {string} selector\n */\nfunction workaroundBlockLevelMarkdown(element, selector) {\n /** @type {NodeListOf} */\n const elements = element.querySelectorAll(selector);\n for (const element of elements) {\n const { innerHTML } = element;\n if (/^<\\w/.test(innerHTML.trimStart())) {\n // if the block content starts with HTML-like format\n // then assume it doesn't need a workaround\n continue;\n }\n // Double newlines are needed to be parsed as Markdown\n const lines = innerHTML.split(\"\\n\");\n const firstTwo = lines.slice(0, 2).join(\"\\n\");\n const lastTwo = lines.slice(-2).join(\"\\n\");\n if (firstTwo.trim()) {\n element.prepend(\"\\n\\n\");\n }\n if (lastTwo.trim()) {\n // keep the indentation of the end tag\n const indentation = getElementIndentation(element);\n element.append(`\\n\\n${indentation}`);\n }\n }\n}\n\n/**\n * @param {Iterable} elements\n */\nfunction substituteWithTextNodes(elements) {\n Array.from(elements).forEach(element => {\n element.replaceWith(element.textContent);\n });\n}\n\nconst processMDSections = convertElements(\"[data-format='markdown']:not(body)\");\nconst blockLevelElements =\n \"[data-format=markdown], section, div, address, article, aside, figure, header, main\";\n\nexport function run(conf) {\n const hasMDSections = !!document.querySelector(\n \"[data-format=markdown]:not(body)\"\n );\n const isMDFormat = conf.format === \"markdown\";\n if (!isMDFormat && !hasMDSections) {\n return; // Nothing to be done\n }\n // Only has markdown-format sections\n if (!isMDFormat) {\n processMDSections(document.body);\n return;\n }\n // We transplant the UI to do the markdown processing\n const rsUI = document.getElementById(\"respec-ui\");\n rsUI.remove();\n // The new body will replace the old body\n const newBody = document.body.cloneNode(true);\n // Marked expects markdown be flush against the left margin\n // so we need to normalize the inner text of some block\n // elements.\n workaroundBlockLevelMarkdown(newBody, blockLevelElements);\n convertElement(newBody);\n // Remove links where class .nolinks\n substituteWithTextNodes(newBody.querySelectorAll(\".nolinks a[href]\"));\n // Frankenstein the whole thing back together\n newBody.append(rsUI);\n document.body.replaceWith(newBody);\n}\n","// @ts-check\n// Module core/ui\n// Handles the ReSpec UI\n// XXX TODO\n// - look at other UI things to add\n// - list issues\n// - lint: validator, link checker, check WebIDL, ID references\n// - save to GitHub\n// - make a release candidate that people can test\n// - once we have something decent, merge, ship as 3.2.0\nimport { html, pluralize } from \"./import-maps.js\";\nimport { reindent, xmlEscape } from \"./utils.js\";\nimport css from \"../styles/ui.css.js\";\nimport { markdownToHtml } from \"./markdown.js\";\nimport { sub } from \"./pubsubhub.js\";\nexport const name = \"core/ui\";\n\n// Opportunistically inserts the style, with the chance to reduce some FOUC\ninsertStyle();\n\nfunction insertStyle() {\n const styleElement = document.createElement(\"style\");\n styleElement.id = \"respec-ui-styles\";\n styleElement.textContent = css;\n styleElement.classList.add(\"removeOnSave\");\n document.head.appendChild(styleElement);\n return styleElement;\n}\n\nfunction ariaDecorate(elem, ariaMap) {\n if (!elem) {\n return;\n }\n Array.from(ariaMap).forEach(([name, value]) => {\n elem.setAttribute(`aria-${name}`, value);\n });\n}\n\nconst respecUI = html`
`;\nconst menu = html``;\nconst closeButton = html` ui.closeModal()}\n title=\"Close\"\n>\n ā\n `;\nwindow.addEventListener(\"load\", () => trapFocus(menu));\nlet modal;\nlet overlay;\nconst errors = [];\nconst warnings = [];\nconst buttons = {};\n\nsub(\"start-all\", () => document.body.prepend(respecUI), { once: true });\nsub(\"end-all\", () => document.body.prepend(respecUI), { once: true });\n\nconst respecPill = html`ReSpec `;\nrespecUI.appendChild(respecPill);\nrespecPill.addEventListener(\"click\", e => {\n e.stopPropagation();\n respecPill.setAttribute(\"aria-expanded\", String(menu.hidden));\n toggleMenu();\n menu.querySelector(\"li:first-child button\").focus();\n});\n\ndocument.documentElement.addEventListener(\"click\", () => {\n if (!menu.hidden) {\n toggleMenu();\n }\n});\nrespecUI.appendChild(menu);\n\nmenu.addEventListener(\"keydown\", e => {\n if (e.key === \"Escape\" && !menu.hidden) {\n respecPill.setAttribute(\"aria-expanded\", String(menu.hidden));\n toggleMenu();\n respecPill.focus();\n }\n});\n\nfunction toggleMenu() {\n menu.classList.toggle(\"respec-hidden\");\n menu.classList.toggle(\"respec-visible\");\n menu.hidden = !menu.hidden;\n}\n\n// Code adapted from https://hiddedevries.nl/en/blog/2017-01-29-using-javascript-to-trap-focus-in-an-element\nfunction trapFocus(element) {\n const focusableEls = element.querySelectorAll(\n \"a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled])\"\n );\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n if (firstFocusableEl) {\n firstFocusableEl.focus();\n }\n element.addEventListener(\"keydown\", e => {\n if (e.key !== \"Tab\") {\n return;\n }\n // shift + tab\n if (e.shiftKey) {\n if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n }\n // tab\n else if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n });\n}\n\nconst ariaMap = new Map([\n [\"controls\", \"respec-menu\"],\n [\"expanded\", \"false\"],\n [\"haspopup\", \"true\"],\n [\"label\", \"ReSpec Menu\"],\n]);\nariaDecorate(respecPill, ariaMap);\n\nfunction errWarn(err, arr, butName, title) {\n arr.push(err);\n if (!buttons.hasOwnProperty(butName)) {\n buttons[butName] = createWarnButton(butName, arr, title);\n respecUI.appendChild(buttons[butName]);\n }\n const button = buttons[butName];\n button.textContent = arr.length;\n const label = arr.length === 1 ? pluralize.singular(title) : title;\n const ariaMap = new Map([[\"label\", `${arr.length} ${label}`]]);\n ariaDecorate(button, ariaMap);\n}\n\nfunction createWarnButton(butName, arr, title) {\n const buttonId = `respec-pill-${butName}`;\n const button = html` `;\n button.addEventListener(\"click\", () => {\n button.setAttribute(\"aria-expanded\", \"true\");\n const ol = html` `;\n for (const err of arr) {\n const fragment = document\n .createRange()\n .createContextualFragment(rsErrorToHTML(err));\n const li = document.createElement(\"li\");\n // if it's only a single element, just copy the contents into li\n if (fragment.firstElementChild === fragment.lastElementChild) {\n li.append(...fragment.firstElementChild.childNodes);\n // Otherwise, take everything.\n } else {\n li.appendChild(fragment);\n }\n ol.appendChild(li);\n }\n ui.freshModal(title, ol, button);\n });\n const ariaMap = new Map([\n [\"expanded\", \"false\"],\n [\"haspopup\", \"true\"],\n [\"controls\", `respec-pill-${butName}-modal`],\n ]);\n ariaDecorate(button, ariaMap);\n return button;\n}\n\nexport const ui = {\n show() {\n try {\n respecUI.hidden = false;\n } catch (err) {\n console.error(err);\n }\n },\n hide() {\n respecUI.hidden = true;\n },\n enable() {\n respecPill.removeAttribute(\"disabled\");\n },\n /**\n * @param {string} _keyShort shortcut key. unused - kept for backward compatibility.\n */\n addCommand(label, handler, _keyShort, icon) {\n icon = icon || \"\";\n const id = `respec-button-${label.toLowerCase().replace(/\\s+/, \"-\")}`;\n const button = html`\n ${icon} ${label}ā¦\n `;\n const menuItem = html`${button} `;\n menuItem.addEventListener(\"click\", handler);\n menu.appendChild(menuItem);\n return button;\n },\n error(rsError) {\n errWarn(rsError, errors, \"error\", \"ReSpec Errors\");\n },\n warning(rsError) {\n errWarn(rsError, warnings, \"warning\", \"ReSpec Warnings\");\n },\n closeModal(owner) {\n if (overlay) {\n overlay.classList.remove(\"respec-show-overlay\");\n overlay.classList.add(\"respec-hide-overlay\");\n overlay.addEventListener(\"transitionend\", () => {\n overlay.remove();\n overlay = null;\n });\n }\n if (owner) {\n owner.setAttribute(\"aria-expanded\", \"false\");\n }\n if (!modal) return;\n modal.remove();\n modal = null;\n respecPill.focus();\n },\n freshModal(title, content, currentOwner) {\n if (modal) modal.remove();\n if (overlay) overlay.remove();\n overlay = html`
`;\n const id = `${currentOwner.id}-modal`;\n const headingId = `${id}-heading`;\n modal = html`\n ${closeButton}\n
${title} \n
${content}
\n
`;\n const ariaMap = new Map([[\"labelledby\", headingId]]);\n ariaDecorate(modal, ariaMap);\n document.body.append(overlay, modal);\n overlay.addEventListener(\"click\", () => this.closeModal(currentOwner));\n overlay.classList.toggle(\"respec-show-overlay\");\n modal.hidden = false;\n trapFocus(modal);\n },\n};\ndocument.addEventListener(\"keydown\", ev => {\n if (ev.key === \"Escape\") {\n ui.closeModal();\n }\n});\nwindow.respecUI = ui;\nsub(\"error\", details => ui.error(details));\nsub(\"warn\", details => ui.warning(details));\n\nfunction rsErrorToHTML(err) {\n if (typeof err === \"string\") {\n return err;\n }\n\n const plugin = err.plugin\n ? `(plugin: \"${err.plugin}\")
`\n : \"\";\n\n const hint = err.hint\n ? `\\n${markdownToHtml(\n `How to fix: ${reindent(\n err.hint\n )}`,\n {\n inline: !err.hint.includes(\"\\n\"),\n }\n )}\\n`\n : \"\";\n const elements = Array.isArray(err.elements)\n ? `
Occurred ${\n err.elements.length\n } times at:
\n ${markdownToHtml(err.elements.map(generateMarkdownLink).join(\"\\n\"))}`\n : \"\";\n const details = err.details\n ? `\\n\\n\\n${err.details}\\n \\n`\n : \"\";\n const msg = markdownToHtml(`**${xmlEscape(err.message)}**`, { inline: true });\n const result = `${msg}${hint}${elements}${details}${plugin}`;\n return result;\n}\n\n/**\n * @param {Element} element\n */\nfunction generateMarkdownLink(element) {\n return `* [\\`<${element.localName}>\\`](#${element.id}) element`;\n}\n","import { runAll } from \"./core/base-runner.js\";\nimport { ui } from \"./core/ui.js\";\n\n// In case everything else fails, we want the error\nwindow.addEventListener(\"error\", ev => {\n console.error(ev.error, ev.message, ev);\n});\n\nexport async function run(plugins) {\n try {\n ui.show();\n await domReady();\n await runAll(plugins);\n } finally {\n ui.enable();\n }\n}\n\nasync function domReady() {\n if (document.readyState === \"loading\") {\n await new Promise(resolve =>\n document.addEventListener(\"DOMContentLoaded\", resolve)\n );\n }\n}\n","import * as ReSpec from \"../src/respec.js\";\n\nconst modules = [\n // order is significant\n import(\"../src/core/location-hash.js\"),\n import(\"../src/core/l10n.js\"),\n import(\"../src/aom/defaults.js\"),\n import(\"../src/core/style.js\"),\n import(\"../src/aom/style.js\"),\n import(\"../src/core/data-include.js\"),\n import(\"../src/core/markdown.js\"),\n import(\"../src/core/reindent.js\"),\n import(\"../src/core/title.js\"),\n import(\"../src/aom/headers.js\"),\n import(\"../src/aom/abstract.js\"),\n import(\"../src/core/data-transform.js\"),\n import(\"../src/core/data-abbr.js\"),\n import(\"../src/core/inlines.js\"),\n import(\"../src/aom/conformance.js\"),\n import(\"../src/core/dfn.js\"),\n import(\"../src/core/pluralize.js\"),\n import(\"../src/core/examples.js\"),\n import(\"../src/core/issues-notes.js\"),\n import(\"../src/core/best-practices.js\"),\n import(\"../src/core/figures.js\"),\n import(\"../src/core/biblio.js\"),\n import(\"../src/core/link-to-dfn.js\"),\n import(\"../src/core/data-cite.js\"),\n import(\"../src/core/render-biblio.js\"),\n import(\"../src/core/contrib.js\"),\n import(\"../src/core/sections.js\"),\n import(\"../src/core/fix-headers.js\"),\n import(\"../src/core/structure.js\"),\n import(\"../src/core/informative.js\"),\n import(\"../src/core/id-headers.js\"),\n import(\"../src/ui/save-html.js\"),\n import(\"../src/ui/about-respec.js\"),\n import(\"../src/core/seo.js\"),\n import(\"../src/core/highlight.js\"),\n import(\"../src/core/list-sorter.js\"),\n import(\"../src/core/highlight-vars.js\"),\n import(\"../src/core/data-type.js\"),\n import(\"../src/core/algorithms.js\"),\n import(\"../src/core/anchor-expander.js\"),\n import(\"../src/core/dfn-panel.js\"),\n import(\"../src/core/custom-elements/index.js\"),\n import(\"../src/core/dfn-contract.js\"),\n /* Linter must be the last thing to run */\n import(\"../src/core/linter-rules/check-charset.js\"),\n import(\"../src/core/linter-rules/check-punctuation.js\"),\n import(\"../src/core/linter-rules/local-refs-exist.js\"),\n import(\"../src/core/linter-rules/no-headingless-sections.js\"),\n import(\"../src/core/linter-rules/no-unused-vars.js\"),\n import(\"../src/core/linter-rules/privsec-section.js\"),\n import(\"../src/core/linter-rules/no-http-props.js\"),\n];\n\nPromise.all(modules)\n .then(plugins => ReSpec.run(plugins))\n .catch(err => console.error(err));\n","// @ts-check\n// Module core/location-hash\n// As ReSpec injects a bunch of stuff async, the scroll position is not always\n// at the right place when we are done processing. The purpose of this module\n// is to reset window's location hash, which will cause the browser to scroll\n// the window to the correct point in the document when processing is done.\n\nexport const name = \"core/location-hash\";\n\nexport function run() {\n if (!window.location.hash) {\n return;\n }\n\n // We have to use .then() here because otherwise we would get stuck\n // awaiting this plugin to finish.\n document.respec.ready.then(() => {\n const hash = decodeURIComponent(window.location.hash).slice(1);\n\n let newHash = hash;\n /** @type {HTMLElement|null} */\n const element = document.getElementById(newHash);\n\n // Check if hash contains any non-word character.\n const isLegacyFrag = /\\W/.test(newHash);\n\n // Allow some degree of recovery for legacy fragments format.\n // See https://github.com/speced/respec/issues/1353\n if (!element && isLegacyFrag) {\n const id = newHash\n // Replace all non-word characters with a dash.\n .replace(/[\\W]+/gim, \"-\")\n // Remove any leading dashes.\n .replace(/^-+/, \"\")\n // Remove any trailing dashes.\n .replace(/-+$/, \"\");\n\n /** @type {HTMLElement|null} */\n const updatedElement = document.getElementById(id);\n if (updatedElement) {\n newHash = id;\n }\n }\n window.location.hash = `#${newHash}`;\n });\n}\n","// @ts-check\n/**\n * Sets the core defaults\n */\nexport const name = \"core/defaults\";\n\nexport const coreDefaults = {\n lint: {\n \"no-headingless-sections\": true,\n \"no-http-props\": true,\n \"no-unused-vars\": false,\n \"check-punctuation\": false,\n \"local-refs-exist\": true,\n \"check-internal-slots\": false,\n \"check-charset\": false,\n \"privsec-section\": false,\n },\n pluralize: true,\n specStatus: \"base\",\n highlightVars: true,\n addSectionLinks: true,\n};\n","// @ts-check\n/**\n * Sets the defaults for AOM specs\n */\nexport const name = \"aom/defaults\";\nimport { coreDefaults } from \"../core/defaults.js\";\n\nconst licenses = new Map([\n [\n \"aom\",\n {\n name: \"Alliance for Open Media License\",\n short: \"AOM\",\n url: \"http://aomedia.org/license/\",\n },\n ],\n]);\n\nconst aomDefaults = {\n // treat document as \"Common Markdown\" (with a little bit of HTML).\n // choice between Markdown and HTML depends on the complexity of the spec\n // example of Markdown spec: https://github.com/WICG/netinfo/blob/gh-pages/index.html\n // Helpful guide: https://respec.org/docs/#markdown\n format: \"markdown\",\n logos: [\n {\n src: \"https://aomedia.org/assets/images/aomedia-icon-only.png\",\n alt: \"AOM\",\n id: \"AOM\",\n height: 170,\n width: 170,\n url: \"https://aomedia.org/\",\n },\n ],\n license: \"aom\",\n};\n\nfunction computeProps(conf) {\n return {\n licenseInfo: licenses.get(conf.license),\n };\n}\n\nexport function run(conf) {\n // assign the defaults\n const lint =\n conf.lint === false\n ? false\n : {\n ...coreDefaults.lint,\n ...aomDefaults.lint,\n ...conf.lint,\n };\n Object.assign(conf, {\n ...coreDefaults,\n ...aomDefaults,\n ...conf,\n lint,\n });\n\n // computed properties\n Object.assign(conf, computeProps(conf));\n}\n","/* ReSpec specific CSS */\nconst css = String.raw;\n\n// Prettier ignore only to keep code indented from level 0.\n// prettier-ignore\nexport default css`\n@keyframes pop {\n 0% {\n transform: scale(1, 1);\n }\n 25% {\n transform: scale(1.25, 1.25);\n opacity: 0.75;\n }\n 100% {\n transform: scale(1, 1);\n }\n}\n\n/* --- INLINES --- */\na.internalDFN {\n color: inherit;\n border-bottom: 1px solid #99c;\n text-decoration: none;\n}\n\na.externalDFN {\n color: inherit;\n border-bottom: 1px dotted #ccc;\n text-decoration: none;\n}\n\na.bibref {\n text-decoration: none;\n}\n\n.respec-offending-element:target {\n animation: pop 0.25s ease-in-out 0s 1;\n}\n\n.respec-offending-element,\na[href].respec-offending-element {\n text-decoration: red wavy underline;\n}\n@supports not (text-decoration: red wavy underline) {\n .respec-offending-element:not(pre) {\n display: inline-block;\n }\n .respec-offending-element {\n /* Red squiggly line */\n background: url(data:image/gif;base64,R0lGODdhBAADAPEAANv///8AAP///wAAACwAAAAABAADAEACBZQjmIAFADs=)\n bottom repeat-x;\n }\n}\n\n#references :target {\n background: #eaf3ff;\n animation: pop 0.4s ease-in-out 0s 1;\n}\n\ncite .bibref {\n font-style: normal;\n}\n\na[href].orcid {\n padding-left: 4px;\n padding-right: 4px;\n}\n\na[href].orcid > svg {\n margin-bottom: -2px;\n}\n\n/* --- TOF --- */\nul.tof,\nol.tof {\n list-style: none outside none;\n}\n\n.caption {\n margin-top: 0.5em;\n font-style: italic;\n}\n#issue-summary > ul {\n column-count: 2;\n}\n\n#issue-summary li {\n list-style: none;\n display: inline-block;\n}\n\ndetails.respec-tests-details {\n margin-left: 1em;\n display: inline-block;\n vertical-align: top;\n}\n\ndetails.respec-tests-details > * {\n padding-right: 2em;\n}\n\ndetails.respec-tests-details[open] {\n z-index: 999999;\n position: absolute;\n border: thin solid #cad3e2;\n border-radius: 0.3em;\n background-color: white;\n padding-bottom: 0.5em;\n}\n\ndetails.respec-tests-details[open] > summary {\n border-bottom: thin solid #cad3e2;\n padding-left: 1em;\n margin-bottom: 1em;\n line-height: 2em;\n}\n\ndetails.respec-tests-details > ul {\n width: 100%;\n margin-top: -0.3em;\n}\n\ndetails.respec-tests-details > li {\n padding-left: 1em;\n}\n\n.self-link:hover {\n opacity: 1;\n text-decoration: none;\n background-color: transparent;\n}\n\naside.example .marker > a.self-link {\n color: inherit;\n}\n\n.header-wrapper {\n display: flex;\n align-items: baseline;\n}\n\n:is(h2, h3, h4, h5, h6):not(#toc > h2, #abstract > h2, #sotd > h2, .head > h2) {\n position: relative;\n left: -.5em;\n}\n\n:is(h2, h3, h4, h5, h6):not(#toc h2) + a.self-link {\n color: inherit;\n order: -1;\n position: relative;\n left: -1.1em;\n font-size: 1rem;\n opacity: 0.5;\n}\n\n:is(h2, h3, h4, h5, h6) + a.self-link::before {\n content: \"Ā§\";\n text-decoration: none;\n color: var(--heading-text);\n}\n\n:is(h2, h3) + a.self-link {\n top: -0.2em;\n}\n\n:is(h4, h5, h6) + a.self-link::before {\n color: black;\n}\n\n@media (max-width: 767px) {\n dd {\n margin-left: 0;\n }\n}\n\n@media print {\n .removeOnSave {\n display: none;\n }\n}\n`;\n","// @ts-check\n// Module core/style\n// The purpose of this module is to insert the default ReSpec CSS into the document.\n// If you don't want to use the default ReSpec CSS, set the `noReSpecCSS` configuration\n// option to `true`. If you want to use your own styles, create a ReSpec profile that\n// includes your own styles and sets the `noReSpecCSS` configuration option to `true`.\n\n/**\n * Module Name.\n * @type {string}\n */\nexport const name = \"core/style\";\n\nimport css from \"../styles/respec.css.js\";\n\n// Opportunistically inserts the style to reduce some FOUC.\n/** @type {HTMLStyleElement} */\nconst styleElement = insertStyle();\n\n/**\n * Inserts the ReSpec CSS as a `style` element into the document's `head`.\n * @return {HTMLStyleElement} The `style` element that was inserted.\n */\nfunction insertStyle() {\n const styleElement = document.createElement(\"style\");\n styleElement.id = \"respec-mainstyle\";\n styleElement.textContent = css;\n document.head.appendChild(styleElement);\n return styleElement;\n}\n\n/**\n * Removes the ReSpec CSS if the `noReSpecCSS` configuration option is `true`.\n * @param {Conf} conf The document configuration object.\n */\nexport function run(conf) {\n if (conf.noReSpecCSS) {\n styleElement.remove();\n }\n}\n","// @ts-check\n// Module aom/style\n// Inserts a link to the appropriate style for the specification's maturity level.\n// CONFIGURATION\n// - specStatus: the short code for the specification's maturity level or type (required)\n\nimport {\n createResourceHint,\n linkCSS,\n showWarning,\n toKeyValuePairs,\n} from \"../core/utils.js\";\nimport { sub } from \"../core/pubsubhub.js\";\nexport const name = \"aom/style\";\nfunction attachFixupScript(doc, version) {\n const script = doc.createElement(\"script\");\n if (location.hash) {\n script.addEventListener(\n \"load\",\n () => {\n window.location.href = location.hash;\n },\n { once: true }\n );\n }\n script.src = `https://www.w3.org/scripts/TR/${version}/fixup.js`;\n doc.body.appendChild(script);\n}\n\n/**\n * Make a best effort to attach meta viewport at the top of the head.\n * Other plugins might subsequently push it down, but at least we start\n * at the right place. When ReSpec exports the HTML, it again moves the\n * meta viewport to the top of the head - so to make sure it's the first\n * thing the browser sees. See js/ui/save-html.js.\n */\nfunction createMetaViewport() {\n const meta = document.createElement(\"meta\");\n meta.name = \"viewport\";\n const contentProps = {\n width: \"device-width\",\n \"initial-scale\": \"1\",\n \"shrink-to-fit\": \"no\",\n };\n meta.content = toKeyValuePairs(contentProps).replace(/\"/g, \"\");\n return meta;\n}\n\nfunction createBaseStyle() {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.href = \"https://www.w3.org/StyleSheets/TR/2016/base.css\";\n link.classList.add(\"removeOnSave\");\n return link;\n}\n\nfunction createResourceHints() {\n /** @type ResourceHintOption[] */\n const opts = [\n {\n hint: \"preconnect\", // for W3C styles and scripts.\n href: \"https://www.w3.org\",\n },\n {\n hint: \"preload\", // all specs need it, and we attach it on end-all.\n href: \"https://www.w3.org/scripts/TR/2016/fixup.js\",\n as: \"script\",\n },\n {\n hint: \"preload\", // all specs include on base.css.\n href: \"https://www.w3.org/StyleSheets/TR/2016/base.css\",\n as: \"style\",\n },\n ];\n const resourceHints = document.createDocumentFragment();\n for (const link of opts.map(createResourceHint)) {\n resourceHints.appendChild(link);\n }\n return resourceHints;\n}\n// Collect elements for insertion (document fragment)\nconst elements = createResourceHints();\n\n// Opportunistically apply base style\nelements.appendChild(createBaseStyle());\nif (!document.head.querySelector(\"meta[name=viewport]\")) {\n // Make meta viewport the first element in the head.\n elements.prepend(createMetaViewport());\n}\n\ndocument.head.prepend(elements);\n\nfunction styleMover(linkURL) {\n return exportDoc => {\n const w3cStyle = exportDoc.querySelector(`head link[href=\"${linkURL}\"]`);\n exportDoc.querySelector(\"head\").append(w3cStyle);\n };\n}\n\nexport function run(conf) {\n if (!conf.specStatus) {\n const msg = \"`respecConfig.specStatus` missing. Defaulting to 'base'.\";\n conf.specStatus = \"base\";\n showWarning(msg, name);\n }\n\n let styleFile = \"\";\n\n // Figure out which style file to use.\n switch (conf.specStatus.toUpperCase()) {\n case \"PD\":\n styleFile = \"W3C-UD\";\n break;\n default:\n styleFile = \"base.css\";\n break;\n }\n\n // Attach W3C fixup script after we are done.\n if (!conf.noToc) {\n sub(\n \"end-all\",\n () => {\n attachFixupScript(document, \"2016\");\n },\n { once: true }\n );\n }\n const finalStyleURL = `https://www.w3.org/StyleSheets/TR/2016/${styleFile}`;\n linkCSS(document, finalStyleURL);\n // Make sure the W3C stylesheet is the last stylesheet, as required by W3C Pub Rules.\n const moveStyle = styleMover(finalStyleURL);\n sub(\"beforesave\", moveStyle);\n}\n","/**\n * Module core/sections\n *\n * Adds s to the document, based on the heading structure.\n */\nexport const name = \"core/sections\";\n\nclass DOMBuilder {\n constructor(doc) {\n this.doc = doc;\n this.root = doc.createDocumentFragment();\n this.stack = [this.root];\n this.current = this.root;\n }\n findPosition(header) {\n return parseInt(header.tagName.charAt(1), 10);\n }\n findParent(position) {\n let parent;\n while (position > 0) {\n position--;\n parent = this.stack[position];\n if (parent) return parent;\n }\n }\n findHeader({ firstChild: node }) {\n while (node) {\n if (/H[1-6]/.test(node.tagName)) {\n return node;\n }\n node = node.nextSibling;\n }\n return null;\n }\n\n addHeader(header) {\n const section = this.doc.createElement(\"section\");\n const position = this.findPosition(header);\n\n section.appendChild(header);\n this.findParent(position).appendChild(section);\n this.stack[position] = section;\n this.stack.length = position + 1;\n this.current = section;\n }\n\n addSection(node) {\n const header = this.findHeader(node);\n const position = header ? this.findPosition(header) : 1;\n const parent = this.findParent(position);\n\n if (header) {\n node.removeChild(header);\n }\n\n node.appendChild(structure(node));\n\n if (header) {\n node.prepend(header);\n }\n\n parent.appendChild(node);\n this.current = parent;\n }\n\n addElement(node) {\n this.current.appendChild(node);\n }\n}\n/**\n *\n * @param {Node} fragment\n * @returns\n */\nfunction structure(fragment) {\n const builder = new DOMBuilder(fragment.ownerDocument);\n while (fragment.firstChild) {\n const node = fragment.firstChild;\n switch (node.localName) {\n case \"h1\":\n case \"h2\":\n case \"h3\":\n case \"h4\":\n case \"h5\":\n case \"h6\":\n builder.addHeader(node);\n break;\n case \"section\":\n builder.addSection(node);\n break;\n default:\n builder.addElement(node);\n }\n }\n return builder.root;\n}\n\n/**\n * Restructure a container element adding sections if needed.\n * @param {Element} elem\n */\nexport function restructure(elem) {\n const structuredInternals = structure(elem);\n if (\n structuredInternals.firstElementChild.localName === \"section\" &&\n elem.localName === \"section\"\n ) {\n const section = structuredInternals.firstElementChild;\n section.remove();\n elem.append(...section.childNodes);\n } else {\n elem.textContent = \"\";\n }\n elem.appendChild(structuredInternals);\n}\n\nexport function run() {\n restructure(document.body);\n}\n","// @ts-check\n// Module core/data-include\n// Support for the data-include attribute. Causes external content to be included inside an\n// element that has data-include='some URI'. There is also a data-oninclude attribute that\n// features a white space separated list of global methods that will be called with the\n// module object, the content, and the included URI.\n//\n// IMPORTANT:\n// This module only really works when you are in an HTTP context, and will most likely\n// fail if you are editing your documents on your local drive. That is due to security\n// restrictions in the browser.\nimport { runTransforms, showError } from \"./utils.js\";\nimport { markdownToHtml } from \"./markdown.js\";\nimport { restructure } from \"./sections.js\";\n\nexport const name = \"core/data-include\";\n\n/**\n * @param {HTMLElement} el\n * @param {string} data\n * @param {object} options\n * @param {boolean} options.replace\n */\nfunction fillWithText(el, data, { replace }) {\n const { includeFormat } = el.dataset;\n let fill = data;\n if (includeFormat === \"markdown\") {\n fill = markdownToHtml(fill);\n }\n\n if (includeFormat === \"text\") {\n el.textContent = fill;\n } else {\n el.innerHTML = fill;\n }\n\n if (includeFormat === \"markdown\") {\n restructure(el);\n }\n\n if (replace) {\n el.replaceWith(...el.childNodes);\n }\n}\n\n/**\n * @param {string} rawData\n * @param {string} id\n * @param {string} url\n */\nfunction processResponse(rawData, id, url) {\n /** @type {HTMLElement} */\n const el = document.querySelector(`[data-include-id=${id}]`);\n const data = runTransforms(rawData, el.dataset.oninclude, url);\n const replace = typeof el.dataset.includeReplace === \"string\";\n fillWithText(el, data, { replace });\n // If still in the dom tree, clean up\n if (!replace) {\n removeIncludeAttributes(el);\n }\n}\n/**\n * Removes attributes after they are used for inclusion, if present.\n *\n * @param {Element} el The element to clean up.\n */\nfunction removeIncludeAttributes(el) {\n [\n \"data-include\",\n \"data-include-format\",\n \"data-include-replace\",\n \"data-include-id\",\n \"oninclude\",\n ].forEach(attr => el.removeAttribute(attr));\n}\n\nexport async function run() {\n await runIncludes(document, 1);\n}\n\n/**\n * @param {HTMLElement | Document} root\n * @param {number} currentDepth\n */\nasync function runIncludes(root, currentDepth) {\n /** @type {NodeListOf} */\n const includables = root.querySelectorAll(\"[data-include]\");\n const promisesToInclude = Array.from(includables).map(async el => {\n const url = el.dataset.include;\n if (!url) {\n return; // just skip it\n }\n const id = `include-${String(Math.random()).slice(2)}`;\n el.dataset.includeId = id;\n try {\n const response = await fetch(url);\n const text = await response.text();\n processResponse(text, id, url);\n if (currentDepth < 3) {\n // For performance reasons, only allow limited nesting.\n await runIncludes(el, currentDepth + 1);\n }\n } catch (err) {\n const msg = `\\`data-include\\` failed: \\`${url}\\` (${err.message}).`;\n showError(msg, name, { elements: [el], cause: err });\n }\n });\n await Promise.all(promisesToInclude);\n}\n","// @ts-check\n/**\n * @module core/reindent\n *\n * Normalizes indents across the pre elements in the document,\n * so that indentation inside won't affect the rendered result.\n */\nimport { reindent } from \"./utils.js\";\nexport const name = \"core/reindent\";\n\nexport function run() {\n for (const pre of document.getElementsByTagName(\"pre\")) {\n pre.innerHTML = reindent(pre.innerHTML);\n }\n}\n","/**\n * This module handles the creation of the h1#title of a spec and\n * makes sure the always matches the h1.\n *\n * If no h1#title is included, then the becomes the h1#title.\n *\n * When a h1#title is included, it always takes precedence over the\n * of a spec. An error will be displayed in case of\n * any mismatch.\n *\n */\n\nimport { getIntlData, norm, showError } from \"./utils.js\";\nimport { html } from \"./import-maps.js\";\nexport const name = \"core/title\";\n\nconst localizationStrings = {\n en: {\n default_title: \"No Title\",\n },\n de: {\n default_title: \"Kein Titel\",\n },\n zh: {\n default_title: \"ę ę é¢\",\n },\n};\n\nconst l10n = getIntlData(localizationStrings);\n\nexport function run(conf) {\n /** @type {HTMLElement} */\n const h1Elem =\n document.querySelector(\"h1#title\") || html` `;\n\n // check existing element is ok to use\n if (h1Elem.isConnected && h1Elem.textContent.trim() === \"\") {\n const msg =\n \"The document is missing a title, so using a default title. \" +\n \"To fix this, please give your document a ``. \" +\n \"If you need special markup in the document's title, \" +\n 'please use a `