\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`${n}>\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${Ln(e,!0)}`}br(e){return" "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),s=An(e);if(null===s)return r;let i='"+r+"",i}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=An(e);if(null===s)return Ln(n);let i=`",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Ln(e.text)}},Un=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},qn=class e{options;renderer;textRenderer;constructor(e){this.options=e||Tt,this.options.renderer=this.options.renderer||new Mn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Un}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t="";for(let n=0;n{let s=e[r].flat(1/0);n=n.concat(this.walkTokens(s,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Mn(this.defaults);for(let n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=n,s=e.renderer[r],i=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new jn(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=n,s=e.tokenizer[r],i=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Wn;for(let n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=n,s=e.hooks[r],i=t[r];Wn.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&Wn.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await s.call(t,e);return i.call(t,n)})();let r=s.call(t,e);return i.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await s.apply(t,e);return!1===n&&(n=await i.apply(t,e)),n})();let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return zn.lex(e,t??this.defaults)}parser(e,t){return qn.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},s={...this.defaults,...r},i=this.onError(!!s.silent,!!s.async);if(!0===this.defaults.async&&!1===r.async)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let n=s.hooks?await s.hooks.preprocess(t):t,r=await(s.hooks?await s.hooks.provideLexer(e):e?zn.lex:zn.lexInline)(n,s),i=s.hooks?await s.hooks.processAllTokens(r):r;s.walkTokens&&await Promise.all(this.walkTokens(i,s.walkTokens));let o=await(s.hooks?await s.hooks.provideParser(e):e?qn.parse:qn.parseInline)(i,s);return s.hooks?await s.hooks.postprocess(o):o})().catch(i);try{s.hooks&&(t=s.hooks.preprocess(t));let n=(s.hooks?s.hooks.provideLexer(e):e?zn.lex:zn.lexInline)(t,s);s.hooks&&(n=s.hooks.processAllTokens(n)),s.walkTokens&&this.walkTokens(n,s.walkTokens);let r=(s.hooks?s.hooks.provideParser(e):e?qn.parse:qn.parseInline)(n,s);return s.hooks&&(r=s.hooks.postprocess(r)),r}catch(e){return i(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="
\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`${n}>\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${Ln(e,!0)}`}br(e){return" "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),s=An(e);if(null===s)return r;let i='"+r+"",i}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=An(e);if(null===s)return Ln(n);let i=`",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Ln(e.text)}},Un=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},qn=class e{options;renderer;textRenderer;constructor(e){this.options=e||Tt,this.options.renderer=this.options.renderer||new Mn,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Un}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t="";for(let n=0;n{let s=e[r].flat(1/0);n=n.concat(this.walkTokens(s,t))})):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach((e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach((e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)})),n.extensions=t),e.renderer){let t=this.defaults.renderer||new Mn(this.defaults);for(let n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=n,s=e.renderer[r],i=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new jn(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=n,s=e.tokenizer[r],i=t[r];t[r]=(...e)=>{let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new Wn;for(let n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=n,s=e.hooks[r],i=t[r];Wn.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&Wn.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await s.call(t,e);return i.call(t,n)})();let r=s.call(t,e);return i.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await s.apply(t,e);return!1===n&&(n=await i.apply(t,e)),n})();let n=s.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}})),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return zn.lex(e,t??this.defaults)}parser(e,t){return qn.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},s={...this.defaults,...r},i=this.onError(!!s.silent,!!s.async);if(!0===this.defaults.async&&!1===r.async)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return i(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let n=s.hooks?await s.hooks.preprocess(t):t,r=await(s.hooks?await s.hooks.provideLexer(e):e?zn.lex:zn.lexInline)(n,s),i=s.hooks?await s.hooks.processAllTokens(r):r;s.walkTokens&&await Promise.all(this.walkTokens(i,s.walkTokens));let o=await(s.hooks?await s.hooks.provideParser(e):e?qn.parse:qn.parseInline)(i,s);return s.hooks?await s.hooks.postprocess(o):o})().catch(i);try{s.hooks&&(t=s.hooks.preprocess(t));let n=(s.hooks?s.hooks.provideLexer(e):e?zn.lex:zn.lexInline)(t,s);s.hooks&&(n=s.hooks.processAllTokens(n)),s.walkTokens&&this.walkTokens(n,s.walkTokens);let r=(s.hooks?s.hooks.provideParser(e):e?qn.parse:qn.parseInline)(n,s);return s.hooks&&(r=s.hooks.postprocess(r)),r}catch(e){return i(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="
An error occurred:
"+Ln(n.message+"",!0)+"
";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function Bn(e,t){return Fn.parse(e,t)}function Hn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}Bn.options=Bn.setOptions=function(e){return Fn.setOptions(e),Bn.defaults=Fn.defaults,Rt(Bn.defaults),Bn},Bn.getDefaults=_t,Bn.defaults=Tt,Bn.use=function(...e){return Fn.use(...e),Bn.defaults=Fn.defaults,Rt(Bn.defaults),Bn},Bn.walkTokens=function(e,t){return Fn.walkTokens(e,t)},Bn.parseInline=Fn.parseInline,Bn.Parser=qn,Bn.parser=qn.parse,Bn.Renderer=Mn,Bn.TextRenderer=Un,Bn.Lexer=zn,Bn.lexer=zn.lex,Bn.Tokenizer=jn,Bn.Hooks=Wn,Bn.parse=Bn,Bn.options,Bn.setOptions,Bn.use,Bn.walkTokens,Bn.parseInline,qn.parse,zn.lex;var Gn,Vn={exports:{}};var Jn,Kn=(Gn||(Gn=1,Jn=Vn,function(e,t){Jn.exports=t()}(0,(function(){var e=[],t=[],n={},r={},s={};function i(e){return"string"==typeof e?new RegExp("^"+e+"$","i"):e}function o(e,t){return e===t?t:e===e.toLowerCase()?t.toLowerCase():e===e.toUpperCase()?t.toUpperCase():e[0]===e[0].toUpperCase()?t.charAt(0).toUpperCase()+t.substr(1).toLowerCase():t.toLowerCase()}function a(e,t){return e.replace(t[0],(function(n,r){var s,i,a=(s=t[1],i=arguments,s.replace(/\$(\d{1,2})/g,(function(e,t){return i[t]||""})));return o(""===n?e[r-1]:n,a)}))}function c(e,t,r){if(!e.length||n.hasOwnProperty(e))return t;for(var s=r.length;s--;){var i=r[s];if(i[0].test(t))return a(t,i)}return t}function l(e,t,n){return function(r){var s=r.toLowerCase();return t.hasOwnProperty(s)?o(r,s):e.hasOwnProperty(s)?o(r,e[s]):c(s,r,n)}}function u(e,t,n,r){return function(r){var s=r.toLowerCase();return!!t.hasOwnProperty(s)||!e.hasOwnProperty(s)&&c(s,s,n)===s}}function d(e,t,n){return(n?t+" ":"")+(1===t?d.singular(e):d.plural(e))}return d.plural=l(s,r,e),d.isPlural=u(s,r,e),d.singular=l(r,s,t),d.isSingular=u(r,s,t),d.addPluralRule=function(t,n){e.push([i(t),n])},d.addSingularRule=function(e,n){t.push([i(e),n])},d.addUncountableRule=function(e){"string"!=typeof e?(d.addPluralRule(e,"$0"),d.addSingularRule(e,"$0")):n[e.toLowerCase()]=!0},d.addIrregularRule=function(e,t){t=t.toLowerCase(),e=e.toLowerCase(),s[e]=t,r[t]=e},[["I","we"],["me","us"],["he","they"],["she","they"],["them","them"],["myself","ourselves"],["yourself","yourselves"],["itself","themselves"],["herself","themselves"],["himself","themselves"],["themself","themselves"],["is","are"],["was","were"],["has","have"],["this","these"],["that","those"],["echo","echoes"],["dingo","dingoes"],["volcano","volcanoes"],["tornado","tornadoes"],["torpedo","torpedoes"],["genus","genera"],["viscus","viscera"],["stigma","stigmata"],["stoma","stomata"],["dogma","dogmata"],["lemma","lemmata"],["schema","schemata"],["anathema","anathemata"],["ox","oxen"],["axe","axes"],["die","dice"],["yes","yeses"],["foot","feet"],["eave","eaves"],["goose","geese"],["tooth","teeth"],["quiz","quizzes"],["human","humans"],["proof","proofs"],["carve","carves"],["valve","valves"],["looey","looies"],["thief","thieves"],["groove","grooves"],["pickaxe","pickaxes"],["passerby","passersby"]].forEach((function(e){return d.addIrregularRule(e[0],e[1])})),[[/s?$/i,"s"],[/[^\u0000-\u007F]$/i,"$0"],[/([^aeiou]ese)$/i,"$1"],[/(ax|test)is$/i,"$1es"],[/(alias|[^aou]us|t[lm]as|gas|ris)$/i,"$1es"],[/(e[mn]u)s?$/i,"$1s"],[/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i,"$1"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1i"],[/(alumn|alg|vertebr)(?:a|ae)$/i,"$1ae"],[/(seraph|cherub)(?:im)?$/i,"$1im"],[/(her|at|gr)o$/i,"$1oes"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i,"$1a"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i,"$1a"],[/sis$/i,"ses"],[/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i,"$1$2ves"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/([^ch][ieo][ln])ey$/i,"$1ies"],[/(x|ch|ss|sh|zz)$/i,"$1es"],[/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i,"$1ices"],[/\b((?:tit)?m|l)(?:ice|ouse)$/i,"$1ice"],[/(pe)(?:rson|ople)$/i,"$1ople"],[/(child)(?:ren)?$/i,"$1ren"],[/eaux$/i,"$0"],[/m[ae]n$/i,"men"],["thou","you"]].forEach((function(e){return d.addPluralRule(e[0],e[1])})),[[/s$/i,""],[/(ss)$/i,"$1"],[/(wi|kni|(?:after|half|high|low|mid|non|night|[^\w]|^)li)ves$/i,"$1fe"],[/(ar|(?:wo|[ae])l|[eo][ao])ves$/i,"$1f"],[/ies$/i,"y"],[/\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i,"$1ie"],[/\b(mon|smil)ies$/i,"$1ey"],[/\b((?:tit)?m|l)ice$/i,"$1ouse"],[/(seraph|cherub)im$/i,"$1"],[/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i,"$1"],[/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i,"$1sis"],[/(movie|twelve|abuse|e[mn]u)s$/i,"$1"],[/(test)(?:is|es)$/i,"$1is"],[/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i,"$1us"],[/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i,"$1um"],[/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i,"$1on"],[/(alumn|alg|vertebr)ae$/i,"$1a"],[/(cod|mur|sil|vert|ind)ices$/i,"$1ex"],[/(matr|append)ices$/i,"$1ix"],[/(pe)(rson|ople)$/i,"$1rson"],[/(child)ren$/i,"$1"],[/(eau)x?$/i,"$1"],[/men$/i,"man"]].forEach((function(e){return d.addSingularRule(e[0],e[1])})),["adulthood","advice","agenda","aid","aircraft","alcohol","ammo","analytics","anime","athletics","audio","bison","blood","bream","buffalo","butter","carp","cash","chassis","chess","clothing","cod","commerce","cooperation","corps","debris","diabetes","digestion","elk","energy","equipment","excretion","expertise","firmware","flounder","fun","gallows","garbage","graffiti","hardware","headquarters","health","herpes","highjinks","homework","housework","information","jeans","justice","kudos","labour","literature","machinery","mackerel","mail","media","mews","moose","music","mud","manga","news","only","personnel","pike","plankton","pliers","police","pollution","premises","rain","research","rice","salmon","scissors","series","sewage","shambles","shrimp","software","species","staff","swine","tennis","traffic","transportation","trout","tuna","wealth","welfare","whiting","wildebeest","wildlife","you",/pok[eé]mon$/i,/[^aeiou]ese$/i,/deer$/i,/fish$/i,/measles$/i,/o[iu]s$/i,/pox$/i,/sheep$/i].forEach(d.addUncountableRule),d}))),Vn.exports),Zn=Hn(Kn),Yn=function(e){var t={};try{t.WeakMap=WeakMap}catch(u){t.WeakMap=function(e,t){var n=t.defineProperty,r=t.hasOwnProperty,s=i.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return r.call(e,this._)},s.set=function(e,t){return n(e,this._,{configurable:!0,value:t}),this},i;function i(t){n(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(o,this)}function o(e){this.set(e[0],e[1])}}(Math.random(),Object)}var n=t.WeakMap,r={};try{r.WeakSet=WeakSet}catch(u){!function(e,t){var n=s.prototype;function s(){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._]},r.WeakSet=s}(Math.random(),Object.defineProperty)}function s(e,t,n,r,s,i){for(var o=("selectedIndex"in t),a=o;r>>0;no;)--c;l=a+r-c;var y=Array(l),w=u[c];for(--n;w;){for(var v=w.newi,k=w.oldi;v"+e+"",r.querySelectorAll(t)):(r.innerHTML=e,r.childNodes)),n},function(e,t){return("svg"===t?function(e){var t=z(_),n=z("div");return n.innerHTML='",j(t,n.firstChild.childNodes),t}:R)(e)});function j(e,t){for(var n=t.length;n--;)e.appendChild(t[0])}function z(e){return e===_?S.createDocumentFragment():S.createElementNS("http://www.w3.org/1999/xhtml",e)}var M,U,q,W,F,B,H,G,V,J=(U="appendChild",q="cloneNode",W="createTextNode",B=(F="importNode")in(M=e),(H=M.createDocumentFragment())[U](M[W]("g")),H[U](M[W]("")),(B?M[F](H,!0):H[q](!0)).childNodes.length<2?function e(t,n){for(var r=t[q](),s=t.childNodes||[],i=s.length,o=0;n&&o',G.content.childNodes[0].getAttribute(V)==Z)||(Z="_dt: "+Z.slice(1,-1)+";",Y=!0)}catch(u){}var X="\x3c!--"+Z+"--\x3e",Q=8,ee=1,te=3,ne=/^(?:style|textarea)$/i,re=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i,se=" \\f\\n\\r\\t",ie="[^"+se+"\\/>\"'=]+",oe="["+se+"]+"+ie,ae="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",ce="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+ie.replace("\\/","")+"))?)",le=new RegExp(ae+oe+ce+"+)(["+se+"]*/?>)","g"),ue=new RegExp(ae+oe+ce+"*)(["+se+"]*/>)","g"),de=new RegExp("("+oe+"\\s*=\\s*)(['\"]?)"+X+"\\2","gi");function pe(e,t,n,r){return"<"+t+n.replace(de,he)+r}function he(e,t,n){return t+(n||'"')+Z+(n||'"')}function fe(e,t,n){return re.test(t)?e:"<"+t+n+">"+t+">"}var me=Y?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 ge(t,n,r,s){for(var i=t.childNodes,o=i.length,a=0;a`), got `#{(this.getCurToken().serialize() + this.getPeekToken().serialize()).trim()}`");e.push(this._nextToken());return new pt(n,!0,!1,e)}if(e&&this.getCurToken().type===He.ARROWMAP){return new pt(n,!1,!1,[this._nextToken()])}if(e&&this.getCurToken().type===He.COLON){return new pt(n,!0,!0,[this._nextToken()])}for(;this.getCurToken().type===He.TCHOICE;)n.separator=this._nextToken(),n=this._parseType1(),t.push(n);return new ht(t)}_parseType1(e=!1){const t=this._parseType2(e);let n;if(this.getCurToken().type===He.INCLRANGE||this.getCurToken().type===He.EXCLRANGE){const e=this._nextToken(),r=this._parseType2();if(!(t instanceof at||t instanceof ct))throw this._parserError(`expected range min to be a value or a typename, got \`${t.serialize().trim()}\``);if(!(r instanceof at||r instanceof ct))throw this._parserError(`expected range max to be a value or a typename, got \`${r.serialize().trim()}\``);n=new ut(t,r,e)}else if(this.getCurToken().type===He.CTLOP){const e=this._nextToken(),r=this._parseType2();n=new dt(t,e,r)}else n=t;return n}_parseType2(e=!1){let t;if(this.getCurToken().type===He.LPAREN){const n=this._nextToken();if(e)t=this._parseGroup(!1);else{const e=this._parseType();if(!(e instanceof ht))throw new Error("Expected Type instance");t=e}if(t.openToken=n,this.getCurToken().type!==He.RPAREN)throw this._parserError(`expected right parenthesis, got \`${this.getCurToken().serialize().trim()}\``);t.closeToken=this._nextToken()}else if(this.getCurToken().type===He.LBRACE){const e=this._nextToken();if(t=this._parseGroup(!0),t.openToken=e,this.getCurToken().type!==He.RBRACE)throw this._parserError(`expected right brace, got \`${this.getCurToken().serialize()}\``);t.closeToken=this._nextToken()}else if(this.getCurToken().type===He.LBRACK){const e=this._nextToken(),n=this._parseGroup(!1);if(t=new rt(n.groupChoices),t.openToken=e,this.getCurToken().type!==He.RBRACK)throw this._parserError(`expected right bracket, got \`${this.getCurToken().serialize().trim()}\``);t.closeToken=this._nextToken()}else if(this.getCurToken().type===He.TILDE){const e=this._nextToken();t=this._parseTypename(!1,e)}else if(this.getCurToken().type===He.AMPERSAND){const e=this._nextToken();if(this.getCurToken().type===He.LPAREN){const e=this._nextToken(),n=this._parseGroup(!1);if(n.openToken=e,this.getCurToken().type!==He.RPAREN)throw this._parserError(`expected right parenthesis, got \`${this.getCurToken().serialize().trim()}\``);n.closeToken=this._nextToken(),t=new lt(n)}else{const e=this._parseTypename(!1,null);t=new lt(e)}t.setComments(e)}else if(this.getCurToken().type===He.HASH){const e=this._nextToken();if(this.getCurToken().type!==He.NUMBER&&this.getCurToken().type!==He.FLOAT||this.getCurToken().startWithSpaces())t=new it;else{const e=this._nextToken();if(e.literal.length>1&&("."!==e.literal[1]||e.literal.includes("e")))throw this._parserError(`expected data item after "#" to match \`DIGIT ["." uint]\`, got \`${this.getCurToken().serialize().trim()}\``);if("6"!==e.literal[0]||this.getCurToken().type!==He.LPAREN||this.getCurToken().startWithSpaces())t=new it(e);else{const n=this._parseType2();if(!(n instanceof ht))throw new Error("Expected Type instance");t=new it(e,n)}}t.setComments(e)}else if(this.getCurToken().type===He.IDENT)t=this._parseTypename(!1,null);else if(this.getCurToken().type===He.STRING){const e=this._nextToken();t=new at(e.literal,"text"),t.setComments(e)}else if(this.getCurToken().type===He.BYTES){const e=this._nextToken();t=new at(e.literal,"bytes"),t.setComments(e)}else if(this.getCurToken().type===He.HEX){const e=this._nextToken();t=new at(e.literal,"hex"),t.setComments(e)}else if(this.getCurToken().type===He.BASE64){const e=this._nextToken();t=new at(e.literal,"base64"),t.setComments(e)}else if(this.getCurToken().type===He.NUMBER){const e=this._nextToken();t=new at(e.literal,"number"),t.setComments(e)}else{if(this.getCurToken().type!==He.FLOAT)throw this._parserError(`invalid type2 production, got \`${this.getCurToken().serialize().trim()}\``);{const e=this._nextToken();t=new at(e.literal,"number"),t.setComments(e)}}return t}_parseGroup(e=!1){const t=[];for(;this.getCurToken().type!==He.RPAREN&&this.getCurToken().type!==He.RBRACE&&this.getCurToken().type!==He.RBRACK;){const e=[];for(;this.getCurToken().type!==He.GCHOICE;){const t=this._parseGroupEntry();if(e.push(t),this.getCurToken().type===He.COMMA&&(t.separator=this._nextToken()),this.getCurToken().type===He.RPAREN||this.getCurToken().type===He.RBRACE||this.getCurToken().type===He.RBRACK)break}const n=new st(e);if(t.push(n),this.getCurToken().type===He.RPAREN||this.getCurToken().type===He.RBRACE||this.getCurToken().type===He.RBRACK)break;n.separator=this._nextToken()}let n;return n=e?new nt(t):new tt(t),n}_parseOccurrence(){const e=[];let t=null;if(this.getCurToken().type===He.QUEST||this.getCurToken().type===He.ASTERISK||this.getCurToken().type===He.PLUS){const n=this.getCurToken().type===He.PLUS?1:0;let r=1/0;this.getCurToken().type===He.ASTERISK&&this.getPeekToken().type===He.NUMBER&&yt(this.getPeekToken().literal)&&!this.getPeekToken().startWithSpaces()&&(e.push(this._nextToken()),r=parseInt(this.getCurToken().literal)),e.push(this._nextToken()),t=new ot(n,r,e)}else if(this.getCurToken().type===He.NUMBER&&yt(this.getCurToken().literal)&&this.getPeekToken().type===He.ASTERISK&&!this.getPeekToken().startWithSpaces()){const n=parseInt(this.getCurToken().literal);let r=1/0;e.push(this._nextToken()),e.push(this._nextToken()),this.getCurToken().type===He.NUMBER&&yt(this.getCurToken().literal)&&!this.getCurToken().startWithSpaces()&&(r=parseInt(this.getCurToken().literal),e.push(this._nextToken())),t=new ot(n,r,e)}return t}_parseTypename(e=!1,t=null){if(this.getCurToken().type!==He.IDENT)throw this._parserError(`expected group identifier, got \`${this.getCurToken().serialize().trim()}\``);const n=this._nextToken();let r;r=e?this._parseGenericParameters():this._parseGenericArguments();const s=new ct(n.literal,t,r);return s.setComments(n),s}_parseGenericParameters(){if(this.getCurToken().type!==He.LT||this.getCurToken().startWithSpaces())return null;const e=this._nextToken(),t=[];let n=this._parseTypename();for(t.push(n);this.getCurToken().type===He.COMMA;)n.separator=this._nextToken(),n=this._parseTypename(),t.push(n);const r=new ft(t);if(r.openToken=e,this.getCurToken().type!==He.GT)throw this._parserError(`expected \`>\` character to end generic production, got \`${this.getCurToken().serialize().trim()}\``);return r.closeToken=this._nextToken(),r}_parseGenericArguments(){if(this.getCurToken().type!==He.LT||this.getCurToken().startWithSpaces())return null;const e=this._nextToken(),t=[];let n=this._parseType1();for(t.push(n);this.getCurToken().type===He.COMMA;)n.separator=this._nextToken(),n=this._parseType1(),t.push(n);const r=new mt(t);if(r.openToken=e,this.getCurToken().type!==He.GT)throw this._parserError(`expected \`>\` character to end generic production, got \`${this.getCurToken().serialize().trim()}\``);return r.closeToken=this._nextToken(),r}_convertGroupDefinitions(e){const t=new Set,n=new Set,r=new Set,s=e=>{if(e instanceof at||e instanceof nt||e instanceof rt||e instanceof lt||e instanceof it)return"type";if(e instanceof ut)return s(e.min);if(e instanceof dt)return s(e.type);if(e instanceof ct){const t=e.name;if(n.has(t)||this._isPreludeType(t))return"type";if(r.has(t))return"group"}return"unknown"};for(const s of e.rules)t.add(s.name.name),0===n.size&&n.add(s.name.name),s.type instanceof ht?n.add(s.name.name):(s.assign.type===He.TCHOICEALT&&n.add(s.name.name),s.assign.type===He.GCHOICEALT&&r.add(s.name.name),s.type.type.types.length>1&&null===s.type.type.openToken&&n.add(s.name.name),null!==s.type.occurrence&&r.add(s.name.name),null!==s.type.key&&r.add(s.name.name));const i=e=>{e instanceof et&&null!==e.key&&e.key.type instanceof ct&&!e.key.hasColon&&t.has(e.key.type.name)&&n.add(e.key.type.name);for(const t of e.getChildren())i(t)};i(e);let o=!0;for(;o;){o=!1;for(const i of e.rules)if(i.type instanceof ht)for(const e of i.type.types)e instanceof ct&&t.has(e.name)&&(n.has(e.name)||(o=!0,n.add(e.name)));else{if(n.has(i.name.name))for(const e of i.type.type.types)e instanceof ct&&t.has(e.name)&&(n.has(e.name)||(o=!0,n.add(e.name)));if(r.has(i.name.name))for(const e of i.type.type.types)e instanceof ct&&t.has(e.name)&&(r.has(e.name)||(o=!0,r.add(e.name)));if(i.assign.type===He.ASSIGN){const e=new Set(i.type.type.types.map((e=>s(e))));if(e.has("type")&&e.has("group"))throw new gt(`CDDL semantic error - rule \`${i.name.name}\` targets a mix of type and group rules`);e.has("type")?n.has(i.name.name)||(o=!0,n.add(i.name.name)):e.has("group")&&(r.has(i.name.name)||(o=!0,r.add(i.name.name)))}}}const a=[...n].filter((e=>r.has(e)));if(a.length>0){const e=a.join(", ");throw new gt(`CDDL semantic error - mix of type and group definitions for ${e}`)}for(const t of e.rules)if(!(t.type instanceof ht)&&n.has(t.name.name)){if(!t.type.isConvertibleToType())throw new gt(`CDDL semantic error - rule \`${t.name.name}\` is a type definition but uses a group entry`);t.type=t.type.type}}_isPreludeType(e){return["any","uint","nint","int","bstr","bytes","tstr","text","tdate","time","number","biguint","bignint","bigint","integer","unsigned","decfrac","bigfloat","eb64url","eb64legacy","eb16","encoded-cbor","uri","b64url","b64legacy","regexp","mime-message","cbor-any","float16","float32","float64","float16-32","float32-64","float","false","true","bool","nil","null","undefined"].includes(e)}_nextToken(){const e=this.curToken;return this.curToken=this.peekToken,this.peekToken=this.lexer.nextToken(),e}_parserError(e){const t=this.lexer.getLocation();return new gt(`CDDL syntax error - line ${t.line+1}: ${e}`)}},dr=class{serializeToken(e,t){return e.serialize()}serializeValue(e,t,n,r){return e+t+n}serializeName(e,t){return e}markupFor(e){return[null,null]}},pr=Qe,hr=pt,fr=ft,mr=mt,gr=ht,br=ot,yr=/['\u2019]s$/,wr=/-/g,vr=RegExp.escape??(e=>e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"));const kr=new Intl.DateTimeFormat(["sv-SE"],{timeZone:"UTC",year:"numeric",month:"2-digit",day:"2-digit"}),$r="en"===r||r.startsWith("en-")?"en-AU":r,xr=new Intl.DateTimeFormat($r,{timeZone:"UTC",year:"numeric",month:"long",day:"en-AU"===$r?"2-digit":"numeric"}),Cr=".informative, .note, .issue, .example, .ednote, .practice, .introductory";function Sr(e){const t=new URL(e.href,document.baseURI),n=document.createElement("link");let{href:r}=t;switch(n.rel=e.hint,n.rel){case"dns-prefetch":case"preconnect":r=t.origin,(e.corsMode||t.origin!==document.location.origin)&&(n.crossOrigin=e.corsMode||"anonymous");break;case"preload":"as"in e&&n.setAttribute("as",e.as||""),e.corsMode&&(n.crossOrigin=e.corsMode)}return n.href=r,e.dontRemove||n.classList.add("removeOnSave"),n}function _r(e){e.querySelectorAll(".remove, script[data-requiremodule]").forEach((e=>{e.remove()}))}function Tr(e,t="long"){const n=new Intl.ListFormat(r,{style:t,type:e});return(e,t)=>{let r=0;return n.formatToParts(e).map((({type:n,value:s})=>"element"===n&&t?t(s,r++,e):s))}}const Rr=Tr("conjunction"),Er=Tr("disjunction");function Lr(e,t){return Rr(e,t).join("")}function Ar(e,t){return Er(e,t).join("")}function Pr(e){return e.replace(/&/g,"&").replace(/>/g,">").replace(/"/g,""").replace(/new Date)return i}catch(e){console.error("Failed to use Cache API.",e)}const o=await fetch(n);if(!o.ok&&i)return console.warn(`Returning a stale cached response for ${r}`),i;if(s&&o.ok){const e=o.clone(),r=new Headers(o.headers),i=new Date(Date.now()+t);r.set("Expires",i.toISOString());const a=new Response(await e.blob(),{headers:r});await s.put(n,a).catch(console.error)}return o}function Mr(e,t=(e=>e)){const n=e.map(t),r=n.slice(0,-1).map((e=>sr`${e}, `));return sr`${r}${n[n.length-1]}`}function Ur(e,t){return[].concat(Rr(e,t)).map((e=>"string"==typeof e?sr`${e}`:e))}function qr(e,t=""){const n=function(e){let t=0;for(const n of e)t=Math.imul(31,t)+n.charCodeAt(0)|0;return String(t)}(Nr(e.textContent));return Fr(e,t,n)}function Wr(e,t=!1){return(t?e:e.toLowerCase()).trim().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/\W+/gim,"-").replace(/^-+/,"").replace(/-+$/,"")}function Fr(e,t="",n="",r=!1){if(e.id)return e.id;n||(n=(e.title?e.title:e.textContent).trim());let s=Wr(n,r);if(s?!/\.$/.test(s)&&/^[a-z]/i.test(t||s)||(s=`x${s}`):s="generatedID",t&&(s=`${t}-${s}`),e.ownerDocument.getElementById(s)){let t=0,n=`${s}-${t}`;for(;e.ownerDocument.getElementById(n);)t+=1,n=`${s}-${t}`;s=n}return e.id=s,s}function Br(e){const t=new Set,n="ltNodefault"in e.dataset?"":Nr(e.textContent),r=e.children[0];if(e.dataset.lt?e.dataset.lt.split("|").map((e=>Nr(e))).forEach((e=>t.add(e))):1===e.childNodes.length&&1===e.getElementsByTagName("abbr").length&&r&&r.title?t.add(r.title):'""'===e.textContent&&t.add("the-empty-string"),t.add(n),t.delete(""),e.dataset.localLt){e.dataset.localLt.split("|").forEach((e=>t.add(Nr(e))))}return[...t]}function Hr(e,t,n={copyAttributes:!0}){if(e.localName===t)return e;const r=e.ownerDocument.createElement(t);if(n.copyAttributes)for(const{name:t,value:n}of e.attributes)r.setAttribute(t,n);return r.append(...e.childNodes),e.replaceWith(r),r}function Gr(e,t){const n=t.closest(Cr);let r=!1;if(n&&(r=!t.closest(".normative")||!n.querySelector(".normative")),e.startsWith("!")){if(r)return{type:"informative",illegal:!0};r=!1}else e.startsWith("?")&&(r=!0);return{type:r?"informative":"normative",illegal:!1}}function Vr(e,t){return t.append(...e.childNodes),e.appendChild(t),e}function Jr(e){const t=[];for(const n of function*(e){let t=e;for(;t.previousElementSibling;)t=t.previousElementSibling,yield t}(e))"section"===n.localName&&t.push(n);return t}function Kr(e){const{previousSibling:t}=e;if(!t||t.nodeType!==Node.TEXT_NODE)return"";const n=(t.textContent??"").lastIndexOf("\n");if(-1===n)return"";const r=(t.textContent??"").slice(n+1);return/\S/.test(r)?"":r}class Zr extends Set{constructor(e=[]){super();for(const t of e)this.add(t)}add(e){return this.has(e)||this.getCanonicalKey(e)?this:super.add(e)}has(e){return super.has(e)||[...this.keys()].some((t=>t.toLowerCase()===e.toLowerCase()))}delete(e){return super.has(e)?super.delete(e):super.delete(this.getCanonicalKey(e)??e)}getCanonicalKey(e){return super.has(e)?e:[...this.keys()].find((t=>t.toLowerCase()===e.toLowerCase()))}}function Yr(e){const t=e.cloneNode(!0);return t.querySelectorAll("[id]").forEach((e=>e.removeAttribute("id"))),t.querySelectorAll("dfn").forEach((e=>{Hr(e,"span",{copyAttributes:!1})})),t.hasAttribute("id")&&t.removeAttribute("id"),Xr(t),t}function Xr(e){const t=document.createTreeWalker(e,NodeFilter.SHOW_COMMENT);for(const e of[...Qr(t)])e.remove()}function*Qr(e){for(;e.nextNode();)yield e.currentNode}class es extends Map{constructor(e=[]){return super(),e.forEach((([e,t])=>{this.set(e,t)})),this}set(e,t){return super.set(e.toLowerCase(),t),this}get(e){return super.get(e.toLowerCase())}has(e){return super.has(e.toLowerCase())}delete(e){return super.delete(e.toLowerCase())}}class ts extends Error{constructor(e,t,n){super(e,{...n.cause&&{cause:n.cause}});const r=n.isWarning?"ReSpecWarning":"ReSpecError";Object.assign(this,{message:e,plugin:t,name:r,...n}),n.elements&&n.elements.forEach((t=>function(e,t,n){e.classList.add("respec-offending-element"),e.hasAttribute("title")||e.setAttribute("title",n||t),e.id||Fr(e,"respec-offender")}(t,e,n.title)))}toJSON(){const{message:e,name:t,stack:n}=this,{plugin:r,hint:s,elements:i,title:o,details:a}=this;return{message:e,name:t,plugin:r,hint:s,elements:i,title:o,details:a,stack:n,...this.cause instanceof Error&&{cause:{name:this.cause.name,message:this.cause.message,stack:this.cause.stack}}}}}function ns(e,t,n={}){const r={...n,isWarning:!1};ps("error",new ts(e,t,r))}function rs(e,t,n={}){const r={...n,isWarning:!0};ps("warn",new ts(e,t,r))}function ss(e){return{amendConfiguration:e=>ps("amend-user-config",e),showError:(t,n)=>ns(t,e,n),showWarning:(t,n)=>rs(t,e,n)}}function is(e){return e?`\`${e}\``:""}function os(e,{quotes:t}={quotes:!1}){return Ar(e,t?e=>is(cs(e)):is)}function as(e,{quotes:t}={quotes:!1}){return Lr(e,t?e=>is(cs(e)):is)}function cs(e){return String(e)?`"${e}"`:""}function ls(e,...t){return us(e.map(((e,n)=>{const r=t[n];if(!r)return e;if(!r.startsWith("[")&&!r.endsWith("]"))return e+r;const[s,i]=r.slice(1,-1).split("|");if(i){return`${e}[${s}](${new URL(i,"https://respec.org/docs/")})`}return`${e}[\`${s}\`](https://respec.org/docs/#${s})`})).join(""))}function us(e){if(!e)return e;const t=e.trimEnd().split("\n");for(;t.length&&!t[0].trim();)t.shift();const n=t.filter((e=>e.trim())).map((e=>e.search(/[^\s]/))),r=Math.min(...n);return t.map((e=>e.slice(r))).join("\n")}const ds=new EventTarget;function ps(e,t){if(ds.dispatchEvent(new CustomEvent(e,{detail:t})),window.parent===window.self)return;const n=String(JSON.stringify(t?.stack||t));window.parent.postMessage({topic:e,args:n},window.parent.location.origin)}function hs(e,t,n={once:!1}){ds.addEventListener(e,(async n=>{try{await t(n.detail)}catch(t){const n=t;ns(`Error in handler for topic "${e}": ${n.message}`,`sub:${e}`,{cause:n})}}),n)}const fs=["githubToken","githubUser"];const ms=new Map([["text/html","html"],["application/xml","xml"]]);function gs(e,t=document){const n=ms.get(e);if(!n){const t=[...ms.values()].join(", ");throw new TypeError(`Invalid format: ${e}. Expected one of: ${t}.`)}const r=bs(n,t);return`data:${e};charset=utf-8,${encodeURIComponent(r)}`}function bs(e,t){const n=t.cloneNode(!0);!function(e){const{head:t,body:n,documentElement:r}=e;Xr(e),e.querySelectorAll(".removeOnSave, #toc-nav").forEach((e=>e.remove())),n.classList.remove("toc-sidebar"),_r(r);const s=e.createDocumentFragment(),i=e.querySelector("meta[name='viewport']");i&&t.firstChild!==i&&s.appendChild(i);const o=e.querySelector("meta[charset], meta[content*='charset=']")||sr``;s.appendChild(o);const a=`ReSpec ${window.respecVersion||"Developer Channel"}`,c=sr`
- `;s.appendChild(c),t.prepend(s),ds("beforesave",r)}(n);let r="";if("xml"===e)r=(new XMLSerializer).serializeToString(n);else!function(e){e.querySelectorAll("style").forEach((e=>{e.innerHTML=`\n${e.innerHTML}\n`})),e.querySelectorAll("head > *").forEach((e=>{e.outerHTML=`\n${e.outerHTML}`}))}(n),n.doctype&&(r+=(new XMLSerializer).serializeToString(n.doctype)),r+=n.documentElement.outerHTML;return r}async function bs(t){const n=await fetch(new URL(`../../${t}`,e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("respec-w3c.js",document.baseURI).href));return await n.text()}const ys=new URL("respec-highlight.js",e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("respec-w3c.js",document.baseURI).href).href,ws=Cr({hint:"preload",href:ys,as:"script"});async function vs(){try{return(await Promise.resolve().then((function(){return oi}))).default}catch{return bs("worker/respec-worker.js")}}async function ks(){try{const e=await fetch(ys);if(e.ok)return await e.text()}catch{}return null}document.head.appendChild(ws);const $s=async function(){const[e,t]=await Promise.all([vs(),ks()]),n=new Blob([null!==t?`${t}\n`:'self.RESPEC_HIGHLIGHT_URL = "https://www.w3.org/Tools/respec/respec-highlight";\n',e],{type:"application/javascript"});return new Worker(URL.createObjectURL(n))}();class xs{constructor(){this._respecDonePromise=new Promise((e=>{ps("end-all",(()=>e()),{once:!0})})),this.errors=[],this.warnings=[],ps("error",(e=>{console.error(e,e.toJSON()),this.errors.push(e)})),ps("warn",(e=>{console.warn(e,e.toJSON()),this.warnings.push(e)}))}get version(){return window.respecVersion}get ready(){return this._respecDonePromise}get worker(){return $s}async toHTML(){return gs("html",document)}}const Cs="core/post-process",Ss=15e3;function _s(e,t){return new Promise(((n,r)=>{const s=setTimeout((()=>{r(new Error(`${t} timed out.`))}),Ss);Promise.resolve(e).then(n,r).finally((()=>{clearTimeout(s)}))}))}const Ts="core/pre-process",Rs=15e3;const Es="core/base-runner";async function Ls(e){!function(){const e=new xs;Object.defineProperty(document,"respec",{value:e})}(),ds("start-all",respecConfig),function(e){const t={},n=e=>Object.assign(t,e);n(e),ps("amend-user-config",n),ps("end-all",(()=>{const e=document.createElement("script");e.id="initialUserConfig",e.type="application/json";for(const e of hs)e in t&&delete t[e];e.innerHTML=JSON.stringify(t,null,2),document.head.appendChild(e)}))}(respecConfig),function(e){const t=new URLSearchParams(document.location.search),n=Array.from(t).filter((([e,t])=>!!e&&!!t)).map((([e,t])=>{const n=decodeURIComponent(e),r=decodeURIComponent(t.replace(/%3D/g,"="));let s;try{s=JSON.parse(r)}catch{s=r}return[n,s]})),r=Object.fromEntries(n);Object.assign(e,r),ds("amend-user-config",r)}(respecConfig),performance.mark(`${Es}-start`),await async function(e){if(Array.isArray(e.preProcess)){const t=e.preProcess.filter((e=>{const t="function"==typeof e;return t||ts("Every item in `preProcess` must be a JS function.",Ts),t}));for(const[n,r]of t.entries()){const t=`${Ts}/${r.name||`[${n}]`}`,s=rs(t);try{await new Promise(((n,i)=>{const o=setTimeout((()=>{i(new Error(`preProcess function "${t}" timed out.`))}),Rs);Promise.resolve().then((()=>r(e,document,s))).then(n,i).finally((()=>{clearTimeout(o)}))}))}catch(e){ts(`Function ${t} threw an error during \`preProcess\`.`,Ts,{hint:"See developer console.",cause:e})}}}}(respecConfig);const t=e.filter((e=>{return(t=e)&&(t.run||t.Plugin);var t}));t.forEach((e=>!e.name&&console.warn("Plugin lacks name:",e))),await async function(e,t){for(const n of e.filter((e=>e.prepare)))try{await(n.prepare?.(t))}catch(e){console.error(e)}}(t,respecConfig),await async function(e,t){for(const n of e){const e=n.name||"";try{await new Promise((async(r,s)=>{const i=setTimeout((()=>{const t=`Plugin ${e} took too long.`;console.error(t,n),s(new Error(t))}),15e3);performance.mark(`${e}-start`);try{n.Plugin?(await new n.Plugin(t).run(),r(void 0)):n.run&&(await n.run(t),r(void 0))}catch(e){s(e)}finally{clearTimeout(i),performance.mark(`${e}-end`),performance.measure(e,`${e}-start`,`${e}-end`)}}))}catch(e){console.error(e)}}}(t,respecConfig),ds("plugins-done",respecConfig),await async function(e){if(Array.isArray(e.postProcess)){const t=e.postProcess.filter((e=>{const t="function"==typeof e;return t||ts("Every item in `postProcess` must be a JS function.",Cs),t}));for(const[n,r]of t.entries()){const t=`${Cs}/${r.name||`[${n}]`}`,s=rs(t);try{await _s(r(e,document,s),`postProcess function "${t}"`)}catch(e){ts(`Function ${t} threw an error during \`postProcess\`.`,Cs,{hint:"See developer console.",cause:e})}}}if("function"==typeof e.afterEnd)try{await _s(e.afterEnd(e,document),"config.afterEnd")}catch(e){ts("Function afterEnd threw an error.",Cs,{hint:"See developer console.",cause:e})}}(respecConfig),ds("end-all",void 0),Sr(document),performance.mark(`${Es}-end`),performance.measure(Es,`${Es}-start`,`${Es}-end`)}var As=String.raw`.respec-modal .close-button{position:absolute;z-index:inherit;padding:.2em;font-weight:700;cursor:pointer;margin-left:5px;border:none;background:0 0}
+ `;s.appendChild(c),t.prepend(s),ps("beforesave",r)}(n);let r="";if("xml"===e)r=(new XMLSerializer).serializeToString(n);else!function(e){e.querySelectorAll("style").forEach((e=>{e.innerHTML=`\n${e.innerHTML}\n`})),e.querySelectorAll("head > *").forEach((e=>{e.outerHTML=`\n${e.outerHTML}`}))}(n),n.doctype&&(r+=(new XMLSerializer).serializeToString(n.doctype)),r+=n.documentElement.outerHTML;return r}async function ys(t){const n=await fetch(new URL(`../../${t}`,e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("respec-w3c.js",document.baseURI).href));return await n.text()}const ws=new URL("respec-highlight.js",e&&"SCRIPT"===e.tagName.toUpperCase()&&e.src||new URL("respec-w3c.js",document.baseURI).href).href,vs=Sr({hint:"preload",href:ws,as:"script"});async function ks(){try{return(await Promise.resolve().then((function(){return ai}))).default}catch{return ys("worker/respec-worker.js")}}async function $s(){try{const e=await fetch(ws);if(e.ok)return await e.text()}catch{}return null}document.head.appendChild(vs);const xs=async function(){const[e,t]=await Promise.all([ks(),$s()]),n=new Blob([null!==t?`${t}\n`:'self.RESPEC_HIGHLIGHT_URL = "https://www.w3.org/Tools/respec/respec-highlight";\n',e],{type:"application/javascript"});return new Worker(URL.createObjectURL(n))}();class Cs{constructor(){this._respecDonePromise=new Promise((e=>{hs("end-all",(()=>e()),{once:!0})})),this.errors=[],this.warnings=[],hs("error",(e=>{console.error(e,e.toJSON()),this.errors.push(e)})),hs("warn",(e=>{console.warn(e,e.toJSON()),this.warnings.push(e)}))}get version(){return window.respecVersion}get ready(){return this._respecDonePromise}get worker(){return xs}async toHTML(){return bs("html",document)}}const Ss="core/post-process",_s=15e3;function Ts(e,t){return new Promise(((n,r)=>{const s=setTimeout((()=>{r(new Error(`${t} timed out.`))}),_s);Promise.resolve(e).then(n,r).finally((()=>{clearTimeout(s)}))}))}const Rs="core/pre-process",Es=15e3;const Ls="core/base-runner";async function As(e){!function(){const e=new Cs;Object.defineProperty(document,"respec",{value:e})}(),ps("start-all",respecConfig),function(e){const t={},n=e=>Object.assign(t,e);n(e),hs("amend-user-config",n),hs("end-all",(()=>{const e=document.createElement("script");e.id="initialUserConfig",e.type="application/json";for(const e of fs)e in t&&delete t[e];e.innerHTML=JSON.stringify(t,null,2),document.head.appendChild(e)}))}(respecConfig),function(e){const t=new URLSearchParams(document.location.search),n=Array.from(t).filter((([e,t])=>!!e&&!!t)).map((([e,t])=>{const n=decodeURIComponent(e),r=decodeURIComponent(t.replace(/%3D/g,"="));let s;try{s=JSON.parse(r)}catch{s=r}return[n,s]})),r=Object.fromEntries(n);Object.assign(e,r),ps("amend-user-config",r)}(respecConfig),performance.mark(`${Ls}-start`),await async function(e){if(Array.isArray(e.preProcess)){const t=e.preProcess.filter((e=>{const t="function"==typeof e;return t||ns("Every item in `preProcess` must be a JS function.",Rs),t}));for(const[n,r]of t.entries()){const t=`${Rs}/${r.name||`[${n}]`}`,s=ss(t);try{await new Promise(((n,i)=>{const o=setTimeout((()=>{i(new Error(`preProcess function "${t}" timed out.`))}),Es);Promise.resolve().then((()=>r(e,document,s))).then(n,i).finally((()=>{clearTimeout(o)}))}))}catch(e){ns(`Function ${t} threw an error during \`preProcess\`.`,Rs,{hint:"See developer console.",cause:e})}}}}(respecConfig);const t=e.filter((e=>{return(t=e)&&(t.run||t.Plugin);var t}));t.forEach((e=>!e.name&&console.warn("Plugin lacks name:",e))),await async function(e,t){for(const n of e.filter((e=>e.prepare)))try{await(n.prepare?.(t))}catch(e){console.error(e)}}(t,respecConfig),await async function(e,t){for(const n of e){const e=n.name||"";try{await new Promise((async(r,s)=>{const i=setTimeout((()=>{const t=`Plugin ${e} took too long.`;console.error(t,n),s(new Error(t))}),15e3);performance.mark(`${e}-start`);try{n.Plugin?(await new n.Plugin(t).run(),r(void 0)):n.run&&(await n.run(t),r(void 0))}catch(e){s(e)}finally{clearTimeout(i),performance.mark(`${e}-end`),performance.measure(e,`${e}-start`,`${e}-end`)}}))}catch(e){console.error(e)}}}(t,respecConfig),ps("plugins-done",respecConfig),await async function(e){if(Array.isArray(e.postProcess)){const t=e.postProcess.filter((e=>{const t="function"==typeof e;return t||ns("Every item in `postProcess` must be a JS function.",Ss),t}));for(const[n,r]of t.entries()){const t=`${Ss}/${r.name||`[${n}]`}`,s=ss(t);try{await Ts(r(e,document,s),`postProcess function "${t}"`)}catch(e){ns(`Function ${t} threw an error during \`postProcess\`.`,Ss,{hint:"See developer console.",cause:e})}}}if("function"==typeof e.afterEnd)try{await Ts(e.afterEnd(e,document),"config.afterEnd")}catch(e){ns("Function afterEnd threw an error.",Ss,{hint:"See developer console.",cause:e})}}(respecConfig),ps("end-all",void 0),_r(document),performance.mark(`${Ls}-end`),performance.measure(Ls,`${Ls}-start`,`${Ls}-end`)}var Ps=String.raw`.respec-modal .close-button{position:absolute;z-index:inherit;padding:.2em;font-weight:700;cursor:pointer;margin-left:5px;border:none;background:0 0}
#respec-ui{position:fixed;display:flex;flex-direction:row-reverse;top:20px;right:20px;width:202px;text-align:right;z-index:9000}
#respec-pill,.respec-info-button{height:2.4em;background:#fff;background:var(--bg,#fff);color:#787878;color:var(--tocnav-normal-text,#787878);border:1px solid #ccc;box-shadow:1px 1px 8px 0 rgba(100,100,100,.5);box-shadow:1px 1px 8px 0 var(--tocsidebar-shadow,rgba(100,100,100,.5));padding:.2em 0}
.respec-info-button{border:none;opacity:.75;border-radius:2em;margin-right:1em;min-width:3.5em;will-change:opacity}
@@ -64,42 +64,42 @@ to{margin-top:0;border:1px solid #ccc;border-radius:0;box-shadow:1px 1px 8px 0 r
.respec-iframe:not(.ready){background:url(https://respec.org/xref/loader.gif) no-repeat center}
.respec-iframe+a[href]{font-size:.9rem;float:right;margin:0 .5em .5em;border-bottom-width:1px}
p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
-.respec-plugin{text-align:right;color:rgb(120,120,120,.5);font-size:.6em}`;const Ps=/>/gm,Ns=/&/gm;class Is extends or.Renderer{code(e){const{text:t,lang:n=""}=e,{language:r,...s}=Is.parseInfoString(n);if(/(^webidl$)/i.test(r))return`
Comments are welcome at any time but most especially before
- ${$r.format(e.crEnd)}.
+ ${xr.format(e.crEnd)}.
`:sr`
This Candidate Recommendation is not expected to advance to
Recommendation any earlier than
- ${$r.format(e.crEnd)}.
+ ${xr.format(e.crEnd)}.
`;break;case"PR":r=sr`
The W3C Membership and other interested parties are invited to review
the document and send comments through
- ${$r.format(e.prEnd)}. Advisory Committee
+ ${xr.format(e.prEnd)}. Advisory Committee
Representatives should consult their
WBS questionnaires. Note that substantive technical comments were expected during the
Candidate Recommendation review period that ended
- ${$r.format(e.crEnd)}.
+ ${xr.format(e.crEnd)}.
`;break;case"DNOTE":s=sr`${e.textStatus}s are not endorsed by
W3C nor its Members.`;break;case"NOTE":s=sr`This ${e.textStatus} is endorsed by
- ${Ai(e)}, but is not endorsed by
+ ${Pi(e)}, but is not endorsed by
W3C itself nor its
Members.`,i=""}return sr`
This specification was published by the
${e.wg}. It is not a W3C Standard nor is it
@@ -697,17 +697,17 @@ p:is(.respec-hint,.respec-occurrences){display:block;margin-top:.5em}
` in the 'sotd' section that reflects the status of this specification."})}c.id=c.id||"sotd",c.classList.add("introductory");const l=[e.wg,e.wgURI,e.wgPatentURI];if(l.some((e=>Array.isArray(e)))&&!l.every((e=>Array.isArray(e)))){const e=cs`Use the ${"[group]"} option with an array instead.`;ts(cs`If one of ${"[wg]"}, ${"[wgURI]"}, or ${"[wgPatentURI]"} is an array, they all have to be.`,Ni,{hint:e})}if(Array.isArray(e.wg)?(e.multipleWGs=e.wg.length>1,e.wgPatentHTML=Mr(e.wg,((t,n)=>sr`a
+ >`}))}},a=(e.isCGBG?_i:Ci)(e,o);document.body.prepend(a),document.body.classList.add("h-entry");const c=document.getElementById("sotd")||document.createElement("section");if((e.isCGBG||!e.isNoTrack||e.isTagFinding)&&!c.id){ns("A Status of This Document must include at least on custom paragraph.",Ii,{elements:[c],hint:"Add a `
` in the 'sotd' section that reflects the status of this specification."})}c.id=c.id||"sotd",c.classList.add("introductory");const l=[e.wg,e.wgURI,e.wgPatentURI];if(l.some((e=>Array.isArray(e)))&&!l.every((e=>Array.isArray(e)))){const e=ls`Use the ${"[group]"} option with an array instead.`;ns(ls`If one of ${"[wg]"}, ${"[wgURI]"}, or ${"[wgPatentURI]"} is an array, they all have to be.`,Ii,{hint:e})}if(Array.isArray(e.wg)?(e.multipleWGs=e.wg.length>1,e.wgPatentHTML=Ur(e.wg,((t,n)=>sr`a
public list of any patent disclosures (${t})`))):e.multipleWGs=!1,e.isPR&&!e.crEnd){ts(cs`${"[specStatus]"} is "PR" but no ${"[crEnd]"} is specified in the ${"[respecConfig]"} (needed to indicate end of previous CR).`,Ni)}if(e.isCR&&!e.isCRDraft&&!e.crEnd){ts(cs`${"[specStatus]"} is "CR", but no ${"[crEnd]"} is specified in the ${"[respecConfig]"}.`,Ni)}if(e.crEnd=Zi(e,"crEnd"),e.isPR&&!e.prEnd){ts(cs`${"[specStatus]"} is "PR" but no ${"[prEnd]"} is specified in the ${"[respecConfig]"}.`,Ni)}e.prEnd=Zi(e,"prEnd");const u=c.classList.contains("updateable-rec"),d=null!==document.querySelector(".correction:not(.proposed)"),p=null!==document.querySelector(".correction.proposed"),h=null!==document.querySelector(".addition:not(.proposed)"),f=null!==document.querySelector(".addition.proposed"),m=d||h||f||p;if(e.isRec&&!e.errata&&!m){const e=cs`Add an ${"[errata]"} URL to your ${"[respecConfig]"}.`;ts("Recommendations must have an errata link.",Ni,{hint:e})}if(e.isRec&&!u&&(h||d||f||p)){ts(cs`${"[specStatus]"} is "REC" with amendments, but the Recommendation is not marked as allowing revisions.`,Ni)}if(e.isRec&&u&&(f||p)&&!e.revisedRecEnd){ts(cs`${"[specStatus]"} is "REC" with proposed corrections or additions but no ${"[revisedRecEnd]"} is specified in the ${"[respecConfig]"}.`,Ni)}if(e.revisedRecEnd=Zi(e,"revisedRecEnd"),e.noRecTrack&&Ui.includes(t)){const e=cs`Document configured as ${"[noRecTrack]"}, but its status ("${t}") puts it on the W3C Rec Track.`,n=is(Ui,{quotes:!0});ts(e,Ni,{hint:`Status **can't** be any of: ${n}.`})}if(c.classList.contains("override")||sr.bind(c)`${function(e,t){const n={...Yi(t,e),get mailToWGPublicList(){return`mailto:${e.wgPublicList}@w3.org`},get mailToWGPublicListWithSubject(){const t=e.subjectPrefix?`?subject=${encodeURIComponent(e.subjectPrefix)}`:"";return this.mailToWGPublicList+t},get mailToWGPublicListSubscription(){return`mailto:${e.wgPublicList}-request@w3.org?subject=subscribe`}},r=e.isCGBG?Pi:Ei;return r(e,n)}(e,c)}`,!e.implementationReportURI&&e.isCR){const e=cs`CR documents must have an ${"[implementationReportURI]"} that describes the [implementation experience](https://www.w3.org/policies/process/#implementation-experience).`;ts(cs`Missing ${"[implementationReportURI]"} configuration option in ${"[respecConfig]"}.`,Ni,{hint:e})}if(!e.implementationReportURI&&e.isPR){ns(cs`PR documents should include an ${"[implementationReportURI]"}, which needs to link to a document that describes the [implementation experience](https://www.w3.org/policies/process-20190301/#implementation-experience).`,Ni)}ds("amend-user-config",{publishISODate:e.publishISODate,generatedSubtitle:Pr(document.getElementById("w3c-state")?.textContent??"")})},status2text:Oi,status2track:zi,tagStatus:Wi,trStatus:Gi});const Qi={lint:{"no-headingless-sections":!0,"no-http-props":!0,"no-unused-vars":!1,"check-punctuation":!1,"local-refs-exist":!0,"check-internal-slots":!1,"check-charset":!1,"privsec-section":!1,"no-dfn-in-abstract":!1},pluralize:!0,specStatus:"base",highlightVars:!0,addSectionLinks:!0},eo="w3c/defaults",to={src:"https://www.w3.org/StyleSheets/TR/2021/logos/W3C",alt:"W3C",height:48,width:72,url:"https://www.w3.org/"},no={alt:"W3C Member Submission",href:"https://www.w3.org/Submission/",src:"https://www.w3.org/Icons/member_subm-v.svg",width:"211",height:"48"},ro={lint:{"privsec-section":!1,"required-sections":!0,"wpt-tests-exist":!1,"informative-dfn":"warn","no-unused-dfns":"warn",a11y:!1},doJsonLd:!1,logos:[],xref:!0,wgId:"",otherLinks:[],excludeGithubLinks:!0,subtitle:"",prevVersion:"",formerEditors:[],editors:[],authors:[]};var so=Object.freeze({__proto__:null,name:eo,run:function(e){const t=!1!==e.lint&&{...Qi.lint,...ro.lint,...e.lint};Object.assign(e,{...Qi,...ro,...e,lint:t}),"unofficial"===e.specStatus||e.hasOwnProperty("license")||(e.license="w3c-software-doc"),function(e){const{specStatus:t,groupType:n,group:r}=e;if(!t){const t=cs`Select an appropriate status from ${"[specStatus]"} based on your W3C group. If in doubt, use \`"unofficial"\`.`;return ts(cs`The ${"[specStatus]"} configuration option is required.`,eo,{hint:t}),void(e.specStatus="base")}if(void 0===Oi[t]){const n=cs`The ${"[specStatus]"} "\`${t}\`" is not supported at for this type of document.`,r=cs`set ${"[specStatus]"} to one of: ${is(Object.keys(Oi),{quotes:!0})}.`;return ts(n,eo,{hint:r}),void(e.specStatus="base")}switch(n){case"cg":if(![...Fi,"unofficial","UD"].includes(t)){const n=cs`W3C Community Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=is(Fi,{quotes:!0});ts(n,eo,{hint:`Please use one of: ${r}. Automatically falling back to \`"CG-DRAFT"\`.`}),e.specStatus="CG-DRAFT"}break;case"bg":if(![...Bi,"unofficial","UD"].includes(t)){const n=cs`W3C Business Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=is(Bi,{quotes:!0});ts(n,eo,{hint:`Please use one of: ${r}. Automatically falling back to \`"BG-DRAFT"\`.`}),e.specStatus="BG-DRAFT"}break;case"wg":if(![...Gi,"unofficial","UD","ED"].includes(t)){const e=cs`Pleas see ${"[specStatus]"} for appropriate status for W3C Working Group documents.`;ts(cs`W3C Working Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,eo,{hint:e})}break;case"other":if("tag"===r&&!["ED",...Gi,...Wi].includes(t)){const n=cs`The W3C Technical Architecture Group's documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=is(["ED",...Gi,...Wi],{quotes:!0});ts(n,eo,{hint:`Please use one of: ${r}. Automatically falling back to \`"unofficial"\`.`}),e.specStatus="unofficial"}break;default:if(!e.wgId&&!["unofficial","base","UD","Member-SUBM"].includes(t)){const t="Document is not associated with a [W3C group](https://respec.org/w3c/groups/). Defaulting to 'base' status.",n=cs`Use the ${"[group]"} configuration option to associated this document with a W3C group.`;e.specStatus="base",ts(t,eo,{hint:n})}}}(e),function(e){const{specStatus:t,wg:n}=e,r=[...Ui,...qi,...Mi,...Wi,"ED"].includes(t),s=n&&n.length&&r,i=["Member-SUBM"].includes(t);(s||i)&&(e.logos.unshift(to),"Member-SUBM"===t&&e.logos.push(no))}(e)}});const io=String.raw,oo=String.raw`color-mix(in srgb, #eaf3ff 15%, transparent)`;var ao=io`@keyframes pop{
+ >`))):e.multipleWGs=!1,e.isPR&&!e.crEnd){ns(ls`${"[specStatus]"} is "PR" but no ${"[crEnd]"} is specified in the ${"[respecConfig]"} (needed to indicate end of previous CR).`,Ii)}if(e.isCR&&!e.isCRDraft&&!e.crEnd){ns(ls`${"[specStatus]"} is "CR", but no ${"[crEnd]"} is specified in the ${"[respecConfig]"}.`,Ii)}if(e.crEnd=Yi(e,"crEnd"),e.isPR&&!e.prEnd){ns(ls`${"[specStatus]"} is "PR" but no ${"[prEnd]"} is specified in the ${"[respecConfig]"}.`,Ii)}e.prEnd=Yi(e,"prEnd");const u=c.classList.contains("updateable-rec"),d=null!==document.querySelector(".correction:not(.proposed)"),p=null!==document.querySelector(".correction.proposed"),h=null!==document.querySelector(".addition:not(.proposed)"),f=null!==document.querySelector(".addition.proposed"),m=d||h||f||p;if(e.isRec&&!e.errata&&!m){const e=ls`Add an ${"[errata]"} URL to your ${"[respecConfig]"}.`;ns("Recommendations must have an errata link.",Ii,{hint:e})}if(e.isRec&&!u&&(h||d||f||p)){ns(ls`${"[specStatus]"} is "REC" with amendments, but the Recommendation is not marked as allowing revisions.`,Ii)}if(e.isRec&&u&&(f||p)&&!e.revisedRecEnd){ns(ls`${"[specStatus]"} is "REC" with proposed corrections or additions but no ${"[revisedRecEnd]"} is specified in the ${"[respecConfig]"}.`,Ii)}if(e.revisedRecEnd=Yi(e,"revisedRecEnd"),e.noRecTrack&&qi.includes(t)){const e=ls`Document configured as ${"[noRecTrack]"}, but its status ("${t}") puts it on the W3C Rec Track.`,n=os(qi,{quotes:!0});ns(e,Ii,{hint:`Status **can't** be any of: ${n}.`})}if(c.classList.contains("override")||sr.bind(c)`${function(e,t){const n={...Xi(t,e),get mailToWGPublicList(){return`mailto:${e.wgPublicList}@w3.org`},get mailToWGPublicListWithSubject(){const t=e.subjectPrefix?`?subject=${encodeURIComponent(e.subjectPrefix)}`:"";return this.mailToWGPublicList+t},get mailToWGPublicListSubscription(){return`mailto:${e.wgPublicList}-request@w3.org?subject=subscribe`}},r=e.isCGBG?Ni:Li;return r(e,n)}(e,c)}`,!e.implementationReportURI&&e.isCR){const e=ls`CR documents must have an ${"[implementationReportURI]"} that describes the [implementation experience](https://www.w3.org/policies/process/#implementation-experience).`;ns(ls`Missing ${"[implementationReportURI]"} configuration option in ${"[respecConfig]"}.`,Ii,{hint:e})}if(!e.implementationReportURI&&e.isPR){rs(ls`PR documents should include an ${"[implementationReportURI]"}, which needs to link to a document that describes the [implementation experience](https://www.w3.org/policies/process-20190301/#implementation-experience).`,Ii)}ps("amend-user-config",{publishISODate:e.publishISODate,generatedSubtitle:Nr(document.getElementById("w3c-state")?.textContent??"")})},status2text:ji,status2track:Mi,tagStatus:Fi,trStatus:Vi});const eo={lint:{"no-headingless-sections":!0,"no-http-props":!0,"no-unused-vars":!1,"check-punctuation":!1,"local-refs-exist":!0,"check-internal-slots":!1,"check-charset":!1,"privsec-section":!1,"no-dfn-in-abstract":!1},pluralize:!0,specStatus:"base",highlightVars:!0,addSectionLinks:!0},to="w3c/defaults",no={src:"https://www.w3.org/StyleSheets/TR/2021/logos/W3C",alt:"W3C",height:48,width:72,url:"https://www.w3.org/"},ro={alt:"W3C Member Submission",href:"https://www.w3.org/Submission/",src:"https://www.w3.org/Icons/member_subm-v.svg",width:"211",height:"48"},so={lint:{"privsec-section":!1,"required-sections":!0,"wpt-tests-exist":!1,"informative-dfn":"warn","no-unused-dfns":"warn",a11y:!1},doJsonLd:!1,logos:[],xref:!0,wgId:"",otherLinks:[],excludeGithubLinks:!0,subtitle:"",prevVersion:"",formerEditors:[],editors:[],authors:[]};var io=Object.freeze({__proto__:null,name:to,run:function(e){const t=!1!==e.lint&&{...eo.lint,...so.lint,...e.lint};Object.assign(e,{...eo,...so,...e,lint:t}),"unofficial"===e.specStatus||e.hasOwnProperty("license")||(e.license="w3c-software-doc"),function(e){const{specStatus:t,groupType:n,group:r}=e;if(!t){const t=ls`Select an appropriate status from ${"[specStatus]"} based on your W3C group. If in doubt, use \`"unofficial"\`.`;return ns(ls`The ${"[specStatus]"} configuration option is required.`,to,{hint:t}),void(e.specStatus="base")}if(void 0===ji[t]){const n=ls`The ${"[specStatus]"} "\`${t}\`" is not supported at for this type of document.`,r=ls`set ${"[specStatus]"} to one of: ${os(Object.keys(ji),{quotes:!0})}.`;return ns(n,to,{hint:r}),void(e.specStatus="base")}switch(n){case"cg":if(![...Bi,"unofficial","UD"].includes(t)){const n=ls`W3C Community Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=os(Bi,{quotes:!0});ns(n,to,{hint:`Please use one of: ${r}. Automatically falling back to \`"CG-DRAFT"\`.`}),e.specStatus="CG-DRAFT"}break;case"bg":if(![...Hi,"unofficial","UD"].includes(t)){const n=ls`W3C Business Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=os(Hi,{quotes:!0});ns(n,to,{hint:`Please use one of: ${r}. Automatically falling back to \`"BG-DRAFT"\`.`}),e.specStatus="BG-DRAFT"}break;case"wg":if(![...Vi,"unofficial","UD","ED"].includes(t)){const e=ls`Pleas see ${"[specStatus]"} for appropriate status for W3C Working Group documents.`;ns(ls`W3C Working Group documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,to,{hint:e})}break;case"other":if("tag"===r&&!["ED",...Vi,...Fi].includes(t)){const n=ls`The W3C Technical Architecture Group's documents can't use \`"${t}"\` for the ${"[specStatus]"} configuration option.`,r=os(["ED",...Vi,...Fi],{quotes:!0});ns(n,to,{hint:`Please use one of: ${r}. Automatically falling back to \`"unofficial"\`.`}),e.specStatus="unofficial"}break;default:if(!e.wgId&&!["unofficial","base","UD","Member-SUBM"].includes(t)){const t="Document is not associated with a [W3C group](https://respec.org/w3c/groups/). Defaulting to 'base' status.",n=ls`Use the ${"[group]"} configuration option to associated this document with a W3C group.`;e.specStatus="base",ns(t,to,{hint:n})}}}(e),function(e){const{specStatus:t,wg:n}=e,r=[...qi,...Wi,...Ui,...Fi,"ED"].includes(t),s=n&&n.length&&r,i=["Member-SUBM"].includes(t);(s||i)&&(e.logos.unshift(no),"Member-SUBM"===t&&e.logos.push(ro))}(e)}});const oo=String.raw,ao=String.raw`color-mix(in srgb, #eaf3ff 15%, transparent)`;var co=oo`@keyframes pop{
0%{transform:scale(1,1)}
25%{transform:scale(1.25,1.25);opacity:.75}
100%{transform:scale(1,1)}
@@ -723,16 +723,16 @@ a.bibref{text-decoration:none}
}
#references :target{background:#eaf3ff;animation:pop .4s ease-in-out 0s 1}
@media (prefers-color-scheme:dark){
-#references :target{background:${oo}}
+#references :target{background:${ao}}
}
-body:has(input[name=color-scheme][value=dark]:checked) #references :target{background:${oo}}
+body:has(input[name=color-scheme][value=dark]:checked) #references :target{background:${ao}}
cite .bibref{font-style:italic}
a[href].orcid{padding-left:4px;padding-right:4px}
a[href].orcid>svg{margin-bottom:-2px}
ol.tof,ul.tof{list-style:none outside none}
.caption{margin-top:.5em;font-style:italic}
#issue-summary>ul{column-count:2}
-#issue-summary li{list-style:none;display:inline-block}
+#issue-summary li{list-style:none}
details.respec-tests-details{margin-left:1em;display:inline-block;vertical-align:top}
details.respec-tests-details>*{padding-right:2em}
details.respec-tests-details[open]{z-index:999999;position:absolute;border:thin solid #cad3e2;border-radius:.3em;background-color:#fff;padding-bottom:.5em}
@@ -754,79 +754,79 @@ dd{margin-left:0}
.removeOnSave{display:none}
}
body:has(input[name=color-scheme][value=light]:checked),head:not(:has(meta[name=color-scheme][content~=dark]))+body{color-scheme:light}
-body:has(input[name=color-scheme][value=dark]:checked){color-scheme:dark}`;const co=function(){const e=document.createElement("style");return e.id="respec-mainstyle",e.textContent=ao,document.head.appendChild(e),e}();var lo=Object.freeze({__proto__:null,name:"core/style",run:function(e){e.noReSpecCSS&&co.remove()}});function uo(){const e=document.createElement("script");e.src="https://www.w3.org/scripts/TR/2021/fixup.js",location.hash&&e.addEventListener("load",(()=>{window.location.href=location.hash}),{once:!0}),document.body.appendChild(e)}const po=function(){const e=[{hint:"preconnect",href:"https://www.w3.org"},{hint:"preload",href:"https://www.w3.org/scripts/TR/2021/fixup.js",as:"script"},{hint:"preload",href:fo("base.css").href,as:"style"},{hint:"preload",href:fo("dark.css").href,as:"style"},{hint:"preload",href:"https://www.w3.org/StyleSheets/TR/2021/logos/W3C",as:"image",corsMode:"anonymous"}],t=document.createDocumentFragment();for(const n of e.map(Cr))t.appendChild(n);return t}();function ho(e){return t=>{const n=t.querySelector(`head link[href="${e}"]`);n&&t.querySelector("head")?.append(n)}}function fo(e="base.css"){return new URL(`/StyleSheets/TR/2021/${e}`,"https://www.w3.org/")}po.appendChild(sr`{window.location.href=location.hash}),{once:!0}),document.body.appendChild(e)}const ho=function(){const e=[{hint:"preconnect",href:"https://www.w3.org"},{hint:"preload",href:"https://www.w3.org/scripts/TR/2021/fixup.js",as:"script"},{hint:"preload",href:mo("base.css").href,as:"style"},{hint:"preload",href:mo("dark.css").href,as:"style"},{hint:"preload",href:"https://www.w3.org/StyleSheets/TR/2021/logos/W3C",as:"image",corsMode:"anonymous"}],t=document.createDocumentFragment();for(const n of e.map(Sr))t.appendChild(n);return t}();function fo(e){return t=>{const n=t.querySelector(`head link[href="${e}"]`);n&&t.querySelector("head")?.append(n)}}function mo(e="base.css"){return new URL(`/StyleSheets/TR/2021/${e}`,"https://www.w3.org/")}ho.appendChild(sr``),document.head.querySelector("meta[name=viewport]")||po.prepend(sr``),document.head.querySelector("meta[name=viewport]")||ho.prepend(sr``),document.head.prepend(po);var mo=Object.freeze({__proto__:null,name:"w3c/style",run:function(e){e.noToc||ps("end-all",uo,{once:!0});const t=fo(function(e){const t=e.specStatus?.toUpperCase()??"";let n="";const r=[...Ui,...qi,...Mi,"ED","MEMBER-SUBM"].includes(t)&&e.wgId;switch(t){case"WD":case"FPWD":n=r?"W3C-WD":"base.css";break;case"CG-DRAFT":case"CG-FINAL":case"BG-DRAFT":case"BG-FINAL":n=t.toLowerCase();break;case"UD":case"UNOFFICIAL":n="W3C-UD";break;case"FINDING":case"DRAFT-FINDING":case"EDITOR-DRAFT-FINDING":case"BASE":n="base.css";break;case"MEMBER-SUBM":n="W3C-Member-SUBM";break;default:n=r?`W3C-${e.specStatus}`:"base.css"}return n}(e));document.head.appendChild(sr``),ps("beforesave",ho(t));let n=document.querySelector("head meta[name=color-scheme]");if(n||(n=sr``,document.head.appendChild(n)),n?.content.includes("dark")){const e=fo("dark.css");document.head.appendChild(sr``),document.head.prepend(ho);var go=Object.freeze({__proto__:null,name:"w3c/style",run:function(e){e.noToc||hs("end-all",po,{once:!0});const t=mo(function(e){const t=e.specStatus?.toUpperCase()??"";let n="";const r=[...qi,...Wi,...Ui,"ED","MEMBER-SUBM"].includes(t)&&e.wgId;switch(t){case"WD":case"FPWD":n=r?"W3C-WD":"base.css";break;case"CG-DRAFT":case"CG-FINAL":case"BG-DRAFT":case"BG-FINAL":n=t.toLowerCase();break;case"UD":case"UNOFFICIAL":n="W3C-UD";break;case"FINDING":case"DRAFT-FINDING":case"EDITOR-DRAFT-FINDING":case"BASE":n="base.css";break;case"MEMBER-SUBM":n="W3C-Member-SUBM";break;default:n=r?`W3C-${e.specStatus}`:"base.css"}return n}(e));document.head.appendChild(sr``),hs("beforesave",fo(t));let n=document.querySelector("head meta[name=color-scheme]");if(n||(n=sr``,document.head.appendChild(n)),n?.content.includes("dark")){const e=mo("dark.css");document.head.appendChild(sr``),ps("beforesave",ho(e))}}});const go="core/github";let bo,yo;const wo=new Promise(((e,t)=>{bo=e,yo=e=>{ts(e,go),t(new Error(e))}})),vo=Nr({en:{file_a_bug:"File an issue",participate:"Participate:",commit_history:"Commit history"},ko:{participate:"참여"},zh:{file_a_bug:"反馈错误",participate:"参与:"},ja:{commit_history:"変更履歴",file_a_bug:"問題報告",participate:"参加方法:"},nl:{commit_history:"Revisiehistorie",file_a_bug:"Dien een melding in",participate:"Doe mee:"},es:{commit_history:"Historia de cambios",file_a_bug:"Nota un bug",participate:"Participe:"},de:{commit_history:"Revisionen",file_a_bug:"Fehler melden",participate:"Mitmachen:"}});var ko=Object.freeze({__proto__:null,github:wo,name:go,run:async function(e){if(!e.hasOwnProperty("github")||!e.github)return void bo(null);if("object"==typeof e.github&&!e.github.hasOwnProperty("repoURL")){const e=cs`Config option ${"[github]"} is missing property \`repoURL\`.`;return void yo(e)}const t="string"==typeof e.github?{}:e.github;let n,r=t.repoURL||String(e.github);r.endsWith("/")||(r+="/");try{n=new URL(r,"https://github.com")}catch{const e=cs`${"[github]"} configuration option is not a valid URL? (${r}).`;return void yo(e)}if("https://github.com"!==n.origin){const e=cs`${"[github]"} configuration option must be HTTPS and pointing to GitHub. (${n.href}).`;return void yo(e)}const[s,i]=n.pathname.split("/").filter((e=>e));if(!s||!i){const e=cs`${"[github]"} URL needs a path. For example, "w3c/my-spec".`;return void yo(e)}const o=t.branch||"gh-pages",a=new URL("./issues/",n).href,c=new URL("./new/choose",a).href;let l,u;if(l="object"==typeof e.github&&e.github.hasOwnProperty("pullsURL")?e.github.pullsURL:new URL("./pulls/",n).href,l)try{const e=new URL(l);if("https://github.com"!==e.origin){const e=cs`${"[github.pullsURL]"} must be HTTPS and pointing to GitHub. (${l}).`;return void yo(e)}if(!e.pathname.includes("/pulls")){const e=cs`${"[github.pullsURL]"} must point to pull requests. (${l}).`;return void yo(e)}}catch{const e=cs`${"[github.pullsURL]"} is not a valid URL. (${l}).`;return void yo(e)}if(u="object"==typeof e.github&&e.github.hasOwnProperty("commitHistoryURL")?e.github.commitHistoryURL:new URL(`./commits/${t.branch??""}`,n.href).href,u)try{const e=new URL(u);if("https://github.com"!==e.origin){const e=cs`${"[github.commitHistoryURL]"} must be HTTPS and pointing to GitHub. (${u}).`;return void yo(e)}if(!e.pathname.includes("/commits")){const e=cs`${"[github.commitHistoryURL]"} must point to commits. (${u}).`;return void yo(e)}}catch{const e=cs`${"[github.commitHistoryURL]"} is not a valid URL. (${u}).`;return void yo(e)}const d={edDraftURI:`https://${s.toLowerCase()}.github.io/${i}/`,githubToken:void 0,githubUser:void 0,issueBase:a,atRiskBase:a,otherLinks:[],pullBase:l,shortName:i};let p="https://respec.org/github";if(e.githubAPI)if(new URL(e.githubAPI).hostname===window.parent.location.hostname)p=e.githubAPI;else{ns("The `githubAPI` configuration option is private and should not be added manually.",go)}if(!e.excludeGithubLinks){const t={key:vo.participate,data:[{value:`GitHub ${s}/${i}`,href:n},{value:"All issues",href:a},{value:vo.file_a_bug,href:c},{value:vo.commit_history,href:u},{value:"Pull requests",href:l}]};e.otherLinks||(e.otherLinks=[]),e.otherLinks.unshift(t)}const h={branch:o,repoURL:n.href,apiBase:p,fullName:`${s}/${i}`,issuesURL:a,pullsURL:l,newIssuesURL:c,commitHistoryURL:u};bo(h);const f={...d,...e,github:h,githubAPI:p};Object.assign(e,f)}});class $o{constructor(e){this.doc=e,this.root=e.createDocumentFragment(),this.stack=[this.root],this.current=this.root}static sectionClasses=new Set(["appendix","informative","notoc"]);findPosition(e){return parseInt(e.tagName.charAt(1),10)}findParent(e){let t;for(;e>0;)if(e--,t=this.stack[e],t)return t}findHeader({firstChild:e}){for(;e;){if(/H[1-6]/.test(e.tagName))return e;e=e.nextSibling}return null}addHeader(e){const t=this.doc.createElement("section"),n=this.findPosition(e);t.appendChild(e),this.findParent(n).appendChild(t),this.stack[n]=t,this.stack.length=n+1,this.current=t,this.processHeader(e,t)}processHeader(e,t){$o.sectionClasses.intersection(new Set(e.classList)).forEach((e=>{t.classList.add(e)}))}addSection(e){const t=this.findHeader(e),n=t?this.findPosition(t):1,r=this.findParent(n);t&&e.removeChild(t),e.appendChild(xo(e)),t&&e.prepend(t),r.appendChild(e),this.current=r}addElement(e){this.current.appendChild(e)}}function xo(e){const t=new $o(e.ownerDocument);for(;e.firstChild;){const n=e.firstChild;switch(n.localName){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":t.addHeader(n);break;case"section":t.addSection(n);break;default:t.addElement(n)}}return t.root}function Co(e){const t=xo(e);if("section"===t.firstElementChild.localName&&"section"===e.localName){const n=t.firstElementChild;n.remove(),e.append(...n.childNodes)}else e.textContent="";e.appendChild(t)}var So=Object.freeze({__proto__:null,name:"core/sections",restructure:Co,run:function(){Co(document.body)}});const _o="core/data-include";function To(e,t,n){const r=document.querySelector(`[data-include-id=${t}]`);if(!r)return;const s=Or(e,r.dataset.oninclude,n),i="string"==typeof r.dataset.includeReplace;!function(e,t,{replace:n}){const{includeFormat:r}=e.dataset;let s=t;"markdown"===r&&(s=Os(s)),"text"===r?e.textContent=s:e.innerHTML=s,"markdown"===r&&Co(e),n&&e.replaceWith(...e.childNodes)}(r,s,{replace:i}),i||function(e){["data-include","data-include-format","data-include-replace","data-include-id","data-oninclude"].forEach((t=>e.removeAttribute(t)))}(r)}async function Ro(e,t){const n=e.querySelectorAll("[data-include]"),r=Array.from(n).map((async e=>{const n=e.dataset.include;if(!n)return;const r=`include-${String(Math.random()).slice(2)}`;e.dataset.includeId=r;try{const s=await fetch(n);To(await s.text(),r,n),t<3&&await Ro(e,t+1)}catch(t){const r=t;ts(`\`data-include\` failed: \`${n}\` (${r.message}).`,_o,{elements:[e],cause:r})}}));await Promise.all(r)}var Eo=Object.freeze({__proto__:null,name:_o,run:async function(){await Ro(document,1)}});var Lo=Object.freeze({__proto__:null,name:"core/reindent",run:function(){for(const e of document.getElementsByTagName("pre"))e.innerHTML=ls(e.innerHTML)}});const Ao="core/title",Po=Nr({en:{default_title:"No Title"},de:{default_title:"Kein Titel"},zh:{default_title:"无标题"},cs:{default_title:"Bez názvu"}});var No=Object.freeze({__proto__:null,name:Ao,run:function(e){const t=document.querySelector("h1#title")||sr`
`;if(t.isConnected&&""===t.textContent.trim()){ts('The document is missing a title, so using a default title. To fix this, please give your document a ``. If you need special markup in the document\'s title, please use a `
`.',Ao,{title:"Document is missing a title",elements:[t]})}t.id||(t.id="title"),t.classList.add("title"),function(e,t){t.isConnected||(t.textContent=document.title||`${Po.default_title}`);const n=document.createElement("h1");n.innerHTML=t.innerHTML.replace(/: /g,": ").replace(/ /g," - ");let r=Pr(n.textContent);if(e.isPreview&&e.prNumber){const n=e.prUrl||`${e.github.repoURL}pull/${e.prNumber}`,{childNodes:s}=sr`
+ />`),hs("beforesave",fo(e))}}});const bo="core/github";let yo,wo;const vo=new Promise(((e,t)=>{yo=e,wo=e=>{ns(e,bo),t(new Error(e))}})),ko=Ir({en:{file_a_bug:"File an issue",participate:"Participate:",commit_history:"Commit history"},ko:{participate:"참여"},zh:{file_a_bug:"反馈错误",participate:"参与:"},ja:{commit_history:"変更履歴",file_a_bug:"問題報告",participate:"参加方法:"},nl:{commit_history:"Revisiehistorie",file_a_bug:"Dien een melding in",participate:"Doe mee:"},es:{commit_history:"Historia de cambios",file_a_bug:"Nota un bug",participate:"Participe:"},de:{commit_history:"Revisionen",file_a_bug:"Fehler melden",participate:"Mitmachen:"}});var $o=Object.freeze({__proto__:null,github:vo,name:bo,run:async function(e){if(!e.hasOwnProperty("github")||!e.github)return void yo(null);if("object"==typeof e.github&&!e.github.hasOwnProperty("repoURL")){const e=ls`Config option ${"[github]"} is missing property \`repoURL\`.`;return void wo(e)}const t="string"==typeof e.github?{}:e.github;let n,r=t.repoURL||String(e.github);r.endsWith("/")||(r+="/");try{n=new URL(r,"https://github.com")}catch{const e=ls`${"[github]"} configuration option is not a valid URL? (${r}).`;return void wo(e)}if("https://github.com"!==n.origin){const e=ls`${"[github]"} configuration option must be HTTPS and pointing to GitHub. (${n.href}).`;return void wo(e)}const[s,i]=n.pathname.split("/").filter((e=>e));if(!s||!i){const e=ls`${"[github]"} URL needs a path. For example, "w3c/my-spec".`;return void wo(e)}const o=t.branch||"gh-pages",a=new URL("./issues/",n).href,c=new URL("./new/choose",a).href;let l,u;if(l="object"==typeof e.github&&e.github.hasOwnProperty("pullsURL")?e.github.pullsURL:new URL("./pulls/",n).href,l)try{const e=new URL(l);if("https://github.com"!==e.origin){const e=ls`${"[github.pullsURL]"} must be HTTPS and pointing to GitHub. (${l}).`;return void wo(e)}if(!e.pathname.includes("/pulls")){const e=ls`${"[github.pullsURL]"} must point to pull requests. (${l}).`;return void wo(e)}}catch{const e=ls`${"[github.pullsURL]"} is not a valid URL. (${l}).`;return void wo(e)}if(u="object"==typeof e.github&&e.github.hasOwnProperty("commitHistoryURL")?e.github.commitHistoryURL:new URL(`./commits/${t.branch??""}`,n.href).href,u)try{const e=new URL(u);if("https://github.com"!==e.origin){const e=ls`${"[github.commitHistoryURL]"} must be HTTPS and pointing to GitHub. (${u}).`;return void wo(e)}if(!e.pathname.includes("/commits")){const e=ls`${"[github.commitHistoryURL]"} must point to commits. (${u}).`;return void wo(e)}}catch{const e=ls`${"[github.commitHistoryURL]"} is not a valid URL. (${u}).`;return void wo(e)}const d={edDraftURI:`https://${s.toLowerCase()}.github.io/${i}/`,githubToken:void 0,githubUser:void 0,issueBase:a,atRiskBase:a,otherLinks:[],pullBase:l,shortName:i};let p="https://respec.org/github";if(e.githubAPI)if(new URL(e.githubAPI).hostname===window.parent.location.hostname)p=e.githubAPI;else{rs("The `githubAPI` configuration option is private and should not be added manually.",bo)}if(!e.excludeGithubLinks){const t={key:ko.participate,data:[{value:`GitHub ${s}/${i}`,href:n},{value:"All issues",href:a},{value:ko.file_a_bug,href:c},{value:ko.commit_history,href:u},{value:"Pull requests",href:l}]};e.otherLinks||(e.otherLinks=[]),e.otherLinks.unshift(t)}const h={branch:o,repoURL:n.href,apiBase:p,fullName:`${s}/${i}`,issuesURL:a,pullsURL:l,newIssuesURL:c,commitHistoryURL:u};yo(h);const f={...d,...e,github:h,githubAPI:p};Object.assign(e,f)}});class xo{constructor(e){this.doc=e,this.root=e.createDocumentFragment(),this.stack=[this.root],this.current=this.root}static sectionClasses=new Set(["appendix","informative","notoc"]);findPosition(e){return parseInt(e.tagName.charAt(1),10)}findParent(e){let t;for(;e>0;)if(e--,t=this.stack[e],t)return t}findHeader({firstChild:e}){for(;e;){if(/H[1-6]/.test(e.tagName))return e;e=e.nextSibling}return null}addHeader(e){const t=this.doc.createElement("section"),n=this.findPosition(e);t.appendChild(e),this.findParent(n).appendChild(t),this.stack[n]=t,this.stack.length=n+1,this.current=t,this.processHeader(e,t)}processHeader(e,t){xo.sectionClasses.intersection(new Set(e.classList)).forEach((e=>{t.classList.add(e)}))}addSection(e){const t=this.findHeader(e),n=t?this.findPosition(t):1,r=this.findParent(n);t&&e.removeChild(t),e.appendChild(Co(e)),t&&e.prepend(t),r.appendChild(e),this.current=r}addElement(e){this.current.appendChild(e)}}function Co(e){const t=new xo(e.ownerDocument);for(;e.firstChild;){const n=e.firstChild;switch(n.localName){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":t.addHeader(n);break;case"section":t.addSection(n);break;default:t.addElement(n)}}return t.root}function So(e){const t=Co(e);if("section"===t.firstElementChild.localName&&"section"===e.localName){const n=t.firstElementChild;n.remove(),e.append(...n.childNodes)}else e.textContent="";e.appendChild(t)}var _o=Object.freeze({__proto__:null,name:"core/sections",restructure:So,run:function(){So(document.body)}});const To="core/data-include";function Ro(e,t,n){const r=document.querySelector(`[data-include-id=${t}]`);if(!r)return;const s=jr(e,r.dataset.oninclude,n),i="string"==typeof r.dataset.includeReplace;!function(e,t,{replace:n}){const{includeFormat:r}=e.dataset;let s=t;"markdown"===r&&(s=js(s)),"text"===r?e.textContent=s:e.innerHTML=s,"markdown"===r&&So(e),n&&e.replaceWith(...e.childNodes)}(r,s,{replace:i}),i||function(e){["data-include","data-include-format","data-include-replace","data-include-id","data-oninclude"].forEach((t=>e.removeAttribute(t)))}(r)}async function Eo(e,t){const n=e.querySelectorAll("[data-include]"),r=Array.from(n).map((async e=>{const n=e.dataset.include;if(!n)return;const r=`include-${String(Math.random()).slice(2)}`;e.dataset.includeId=r;try{const s=await fetch(n);Ro(await s.text(),r,n),t<3&&await Eo(e,t+1)}catch(t){const r=t;ns(`\`data-include\` failed: \`${n}\` (${r.message}).`,To,{elements:[e],cause:r})}}));await Promise.all(r)}var Lo=Object.freeze({__proto__:null,name:To,run:async function(){await Eo(document,1)}});var Ao=Object.freeze({__proto__:null,name:"core/reindent",run:function(){for(const e of document.getElementsByTagName("pre"))e.innerHTML=us(e.innerHTML)}});const Po="core/title",No=Ir({en:{default_title:"No Title"},de:{default_title:"Kein Titel"},zh:{default_title:"无标题"},cs:{default_title:"Bez názvu"},fr:{default_title:"Sans titre"}});var Io=Object.freeze({__proto__:null,name:Po,run:function(e){const t=document.querySelector("h1#title")||sr``;if(t.isConnected&&""===t.textContent.trim()){ns('The document is missing a title, so using a default title. To fix this, please give your document a ``. If you need special markup in the document\'s title, please use a `
`.',Po,{title:"Document is missing a title",elements:[t]})}t.id||(t.id="title"),t.classList.add("title"),function(e,t){t.isConnected||(t.textContent=document.title||`${No.default_title}`);const n=document.createElement("h1");n.innerHTML=t.innerHTML.replace(/: /g,": ").replace(/ /g," - ");let r=Nr(n.textContent);if(e.isPreview&&e.prNumber){const n=e.prUrl||`${e.github.repoURL}pull/${e.prNumber}`,{childNodes:s}=sr`
Preview of PR #${e.prNumber}:
- `;t.prepend(...s),r=`Preview of PR #${e.prNumber}: ${r}`}document.title=r,e.title=r}(e,t),document.body.prepend(t)}});const Io="w3c/level",Do=Nr({en:{level:"Level"},ja:{level:"レベル"},nl:{level:"Niveau"},de:{level:"Stufe"},zh:{level:"级别"}});var Oo=Object.freeze({__proto__:null,name:Io,run:function(e){if(!e.hasOwnProperty("level"))return;const t=document.querySelector("h1#title"),n=parseInt(e.level);if(!Number.isInteger(n)||n<0){ts(`The \`level\` configuration option must be a number greater or equal to 0. It is currently set to \`${n}\``,Io,{title:"Invalid level config.",elements:[t]})}else t.append(` ${Do.level} ${n}`),document.title=`${document.title} ${Do.level} ${n}`,e.shortName=`${e.shortName}-${n}`,e.level=n}});const jo="w3c/abstract",zo=Nr({en:{abstract:"Abstract"},ko:{abstract:"요약"},zh:{abstract:"摘要"},ja:{abstract:"要約"},nl:{abstract:"Samenvatting"},es:{abstract:"Resumen"},de:{abstract:"Zusammenfassung"},cs:{abstract:"Abstrakt"}});var Mo=Object.freeze({__proto__:null,name:jo,run:async function(){const e=function(){const e=document.getElementById("abstract");if(e)switch(e.localName){case"section":return e;case"div":return Br(e,"section");default:return ts("The abstract should be a `` element.",jo,{elements:[e]}),e}const t=zo.abstract.toLocaleLowerCase(r);for(const e of document.querySelectorAll("h2, h3, h4, h5, h6"))if(Pr(e.textContent).toLocaleLowerCase(r)===t)return e.closest("section");return e}();e?(e.classList.add("introductory"),e.id="abstract",e.querySelector("h2")||e.prepend(sr`
${zo.abstract}
`)):ts('Document must have one ``.',jo)}});var Uo=Object.freeze({__proto__:null,name:"core/data-transform",run:function(){document.querySelectorAll("[data-transform]").forEach((e=>{e.innerHTML=Or(e.innerHTML,e.dataset.transform),e.removeAttribute("data-transform")}))}});const qo="core/dfn-abbr";function Wo(e){const t=(n=e).dataset.abbr?n.dataset.abbr:n.textContent?.match(/\b([a-z])/gi)?.join("").toUpperCase()??"";var n;const r=e.textContent.replace(/\s\s+/g," ").trim(),s=document.createElement("abbr");s.title=r,s.textContent=t,e.after(" (",s,")");const i=e.dataset.lt||"";e.dataset.lt=i.split("|").filter((e=>e.trim())).concat(t).join("|")}var Fo=Object.freeze({__proto__:null,name:qo,run:function(){const e=document.querySelectorAll("[data-abbr]");for(const t of e){const{localName:e}=t;if("dfn"===e)Wo(t);else{ts(`\`data-abbr\` attribute not supported on \`${e}\` elements.`,qo,{elements:[t],title:"Error: unsupported."})}}}});var Bo=String.raw`:root{--assertion-border:#aaa;--assertion-bg:#eee;--assertion-text:black}
+ `;t.prepend(...s),r=`Preview of PR #${e.prNumber}: ${r}`}document.title=r,e.title=r}(e,t),document.body.prepend(t)}});const Do="w3c/level",Oo=Ir({en:{level:"Level"},ja:{level:"レベル"},nl:{level:"Niveau"},de:{level:"Stufe"},zh:{level:"级别"}});var jo=Object.freeze({__proto__:null,name:Do,run:function(e){if(!e.hasOwnProperty("level"))return;const t=document.querySelector("h1#title"),n=parseInt(e.level);if(!Number.isInteger(n)||n<0){ns(`The \`level\` configuration option must be a number greater or equal to 0. It is currently set to \`${n}\``,Do,{title:"Invalid level config.",elements:[t]})}else t.append(` ${Oo.level} ${n}`),document.title=`${document.title} ${Oo.level} ${n}`,e.shortName=`${e.shortName}-${n}`,e.level=n}});const zo="w3c/abstract",Mo=Ir({en:{abstract:"Abstract"},ko:{abstract:"요약"},zh:{abstract:"摘要"},ja:{abstract:"要約"},nl:{abstract:"Samenvatting"},es:{abstract:"Resumen"},fr:{abstract:"Résumé"},de:{abstract:"Zusammenfassung"},cs:{abstract:"Abstrakt"}});var Uo=Object.freeze({__proto__:null,name:zo,run:async function(){const e=function(){const e=document.getElementById("abstract");if(e)switch(e.localName){case"section":return e;case"div":return Hr(e,"section");default:return ns("The abstract should be a `` element.",zo,{elements:[e]}),e}const t=Mo.abstract.toLocaleLowerCase(r);for(const e of document.querySelectorAll("h2, h3, h4, h5, h6"))if(Nr(e.textContent).toLocaleLowerCase(r)===t)return e.closest("section");return e}();e?(e.classList.add("introductory"),e.id="abstract",e.querySelector("h2")||e.prepend(sr`
${Mo.abstract}
`)):ns('Document must have one ``.',zo)}});var qo=Object.freeze({__proto__:null,name:"core/data-transform",run:function(){document.querySelectorAll("[data-transform]").forEach((e=>{e.innerHTML=jr(e.innerHTML,e.dataset.transform),e.removeAttribute("data-transform")}))}});const Wo="core/dfn-abbr";function Fo(e){const t=(n=e).dataset.abbr?n.dataset.abbr:n.textContent?.match(/\b([a-z])/gi)?.join("").toUpperCase()??"";var n;const r=e.textContent.replace(/\s\s+/g," ").trim(),s=document.createElement("abbr");s.title=r,s.textContent=t,e.after(" (",s,")");const i=e.dataset.lt||"";e.dataset.lt=i.split("|").filter((e=>e.trim())).concat(t).join("|")}var Bo=Object.freeze({__proto__:null,name:Wo,run:function(){const e=document.querySelectorAll("[data-abbr]");for(const t of e){const{localName:e}=t;if("dfn"===e)Fo(t);else{ns(`\`data-abbr\` attribute not supported on \`${e}\` elements.`,Wo,{elements:[t],title:"Error: unsupported."})}}}});var Ho=String.raw`:root{--assertion-border:#aaa;--assertion-bg:#eee;--assertion-text:black}
.assert{border-left:.5em solid #aaa;padding:.3em;border-color:#aaa;border-color:var(--assertion-border);background:#eee;background:var(--assertion-bg);color:#000;color:var(--assertion-text)}
@media (prefers-color-scheme:dark){
:root{--assertion-border:#444;--assertion-bg:var(--borderedblock-bg);--assertion-text:var(--text)}
-}`;var Ho=Object.freeze({__proto__:null,name:"core/algorithms",run:function(){const e=Array.from(document.querySelectorAll("ol.algorithm li")).filter((e=>e.textContent.trim().startsWith("Assert: ")));if(!e.length)return;for(const t of e){t.classList.add("assert");const e=t.firstChild;e instanceof Text&&e.textContent.startsWith("Assert: ")&&(e.textContent=e.textContent.replace("Assert: ",""),t.prepend(sr`Assert`,": "))}const t=document.createElement("style");t.textContent=Bo,document.head.appendChild(t)}});const Go=/^[a-z]+(\s+[a-z]+)+\??$/,Vo=/\B"([^"]*)"\B/,Jo=/^(\w+)\(([^\\)]*)\)(?:\|(\w+)(?:\((?:([^\\)]*))\))?)?$/,Ko=/\[\[(\w+(?: +\w+)*)\]\](\([^)]*\))?$/,Zo=/^((?:\[\[)?(?:\w+(?: +\w+)*)(?:\]\])?)$/,Yo=/^(?:\w+)\??$/,Xo=/^(\w+)\["([\w- ]*)"\]$/,Qo=/\.?(\w+\(.*\)$)/,ea=/\/(.+)/,ta=/\[\[.+\]\]/;function na(e){const{identifier:t,renderParent:n,nullable:r}=e;if(n)return sr`e.textContent.trim().startsWith("Assert: ")));if(!e.length)return;for(const t of e){t.classList.add("assert");const e=t.firstChild;e instanceof Text&&e.textContent.startsWith("Assert: ")&&(e.textContent=e.textContent.replace("Assert: ",""),t.prepend(sr`Assert`,": "))}const t=document.createElement("style");t.textContent=Ho,document.head.appendChild(t)}});const Vo=/^[a-z]+(\s+[a-z]+)+\??$/,Jo=/\B"([^"]*)"\B/,Ko=/^(\w+)\(([^\\)]*)\)(?:\|(\w+)(?:\((?:([^\\)]*))\))?)?$/,Zo=/\[\[(\w+(?: +\w+)*)\]\](\([^)]*\))?$/,Yo=/^((?:\[\[)?(?:\w+(?: +\w+)*)(?:\]\])?)$/,Xo=/^(?:\w+)\??$/,Qo=/^(\w+)\["([\w- ]*)"\]$/,ea=/\.?(\w+\(.*\)$)/,ta=/\/(.+)/,na=/\[\[.+\]\]/;function ra(e){const{identifier:t,renderParent:n,nullable:r}=e;if(n)return sr`${t+(r?"?":"")}`}function ra(e){const{identifier:t,parent:n,slotType:r,renderParent:s,args:i}=e,{identifier:o}=n||{},a="method"===r,c=i??[],l=a?sr`(${zr(c,sa)})`:null,u=a?`(${c.join(", ")})`:"";return sr`${n&&s?".":""}`}function sa(e){const{identifier:t,parent:n,slotType:r,renderParent:s,args:i}=e,{identifier:o}=n||{},a="method"===r,c=i??[],l=a?sr`(${Mr(c,ia)})`:null,u=a?`(${c.join(", ")})`:"";return sr`${n&&s?".":""}[[${t}]]${l}`}function sa(e,t,n){if(t${e}`;const r=e.split(/(^\.{3})(.+)/),s=r.length>1,i=s?r[2]:r[0];return sr`${s?"...":null}${i}`}function ia(e){const{parent:t,identifier:n,renderParent:r}=e,{identifier:s}=t||{};return sr`${r?".":""}`}function ia(e,t,n){if(t${e}`;const r=e.split(/(^\.{3})(.+)/),s=r.length>1,i=s?r[2]:r[0];return sr`${s?"...":null}${i}`}function oa(e){const{parent:t,identifier:n,renderParent:r}=e,{identifier:s}=t||{};return sr`${r?".":""}${n}`}function oa(e){const{args:t,identifier:n,type:r,parent:s,renderParent:i}=e,{renderText:o,renderArgs:a}=e,{identifier:c}=s||{},l=zr(a||t,sa),u=`${n}(${t.join(", ")})`;return sr`${s&&i?".":""}`}function aa(e){const{args:t,identifier:n,type:r,parent:s,renderParent:i}=e,{renderText:o,renderArgs:a}=e,{identifier:c}=s||{},l=Mr(a||t,ia),u=`${n}(${t.join(", ")})`;return sr`${s&&i?".":""}${o||n}${!o||a?sr`(${l})`:""}`}function aa(e){const{identifier:t,enumValue:n,parent:r}=e,s=r?r.identifier:t;return sr`"${!o||a?sr`(${l})`:""}`}function ca(e){const{identifier:t,enumValue:n,parent:r}=e,s=r?r.identifier:t;return sr`"${n}"`}function ca(e){const{identifier:t}=e;return sr`""`}function la(e){const{identifier:t}=e;return sr`"${t}"`}function la(e){const{identifier:t,nullable:n}=e;return sr`"`}function ua(e){const{identifier:t,nullable:n}=e;return sr`${t+(n?"?":"")}`}function ua(e){let t;try{t=function(e){const t=ta.test(e),n=t?ea:Qo,[r,s]=e.split(n);if(t&&r&&!s)throw new SyntaxError(`Internal slot missing "for" part. Expected \`{{ InterfaceName/${r}}}\` }.`);const i=r.split(/[./]/).concat(s).filter((e=>e&&e.trim())).map((e=>e.trim())),o=!e.includes("/"),a=[];for(;i.length;){const t=i.pop()??"";if(Jo.test(t)){const[,e,n,r,s]=t.match(Jo),i=(n??"").split(/,\s*/).filter((e=>e)),c=r?.trim(),l=s?.split(/,\s*/).filter((e=>e));a.push({type:"method",identifier:e??"",args:i,renderParent:o,renderText:c,renderArgs:l})}else if(Xo.test(t)){const[,e,n]=t.match(Xo);a.push({type:"enum",identifier:e??"",enumValue:n??"",renderParent:o})}else if(Vo.test(t)){const[,e]=t.match(Vo);o?a.push({type:"exception",identifier:e??""}):a.push({type:"enum",enumValue:e??"",renderParent:o})}else if(Ko.test(t)){const[,e,n]=t.match(Ko),r=n?"method":"attribute",s=n?.slice(1,-1).split(/,\s*/).filter((e=>e))??[];a.push({type:"internal-slot",slotType:r,identifier:e??"",args:s,renderParent:o})}else if(Zo.test(t)&&i.length){const[,e]=t.match(Zo);a.push({type:"attribute",identifier:e??"",renderParent:o})}else if(Go.test(t)){const e=t.endsWith("?"),n=e?t.slice(0,-1):t;a.push({type:"idl-primitive",identifier:n,renderParent:o,nullable:e})}else{if(!Yo.test(t)||0!==i.length)throw new SyntaxError(`IDL micro-syntax parsing error in \`{{ ${e} }}\``);{const e=t.endsWith("?"),n=e?t.slice(0,-1):t;a.push({type:"base",identifier:n,renderParent:o,nullable:e})}}}return a.forEach(((e,t,n)=>{e.parent=n[t+1]||null})),a.reverse()}(e)}catch(t){const n=sr`{{ ${e} }}`,r="Error: Invalid inline IDL string.";return ts(t.message,"core/inlines",{title:r,elements:[n]}),n}const n=sr(document.createDocumentFragment()),r=[];for(const e of t)switch(e.type){case"base":{const t=na(e);t&&r.push(t);break}case"attribute":r.push(ia(e));break;case"internal-slot":r.push(ra(e));break;case"method":r.push(oa(e));break;case"enum":r.push(aa(e));break;case"exception":r.push(ca(e));break;case"idl-primitive":r.push(la(e));break;default:throw new Error("Unknown type.")}return n`${r}`}const da=new Set(["alias","reference"]),pa=async function(){const e=await ir.openDB("respec-biblio2",12,{upgrade(e){Array.from(e.objectStoreNames).map((t=>e.deleteObjectStore(t)));e.createObjectStore("alias",{keyPath:"id"}).createIndex("aliasOf","aliasOf",{unique:!1}),e.createObjectStore("reference",{keyPath:"id"})}}),t=Date.now();for(const n of[...da]){const r=e.transaction(n,"readwrite").store,s=IDBKeyRange.lowerBound(t);let i=await r.openCursor(s);for(;i?.value;){const e=i.value;(void 0===e.expires||e.expiresn[e].map((t=>this.add(e,t)))));await Promise.all(r)},async add(e,t){if(!da.has(e))throw new TypeError(`Invalid type: ${e}`);if("object"!=typeof t)throw new TypeError("details should be an object");if("alias"===e&&!t.hasOwnProperty("aliasOf"))throw new TypeError("Invalid alias object.");const n=await this.ready;let r=await this.has(e,t.id);if(r){const s=await this.get(e,t.id);if(s&&void 0!==s.expires&&s.expiresn.objectStore(e).clear()));await Promise.all(r)}},fa={},ma=new URL("https://api.specref.org/bibrefs?refs="),ga=Cr({hint:"dns-prefetch",href:ma.origin});let ba;document.head.appendChild(ga);const ya=new Promise((e=>{ba=e}));async function wa(e,t={forceUpdate:!1}){const n=[...new Set(e)].filter((e=>e.trim()));if(!n.length||!1===navigator.onLine)return null;let r;try{r=await fetch(ma.href+n.join(","))}catch(e){return console.error(e),null}if(!t.forceUpdate&&!r.ok||200!==r.status)return null;const s=await r.json(),i=Date.now()+36e5;try{const e=Date.parse(r.headers.get("Expires")||""),t=Number.isNaN(e)?i:Math.min(e,i);await ha.addAll(s,t)}catch(e){console.error(e)}return s}async function va(e){const t=await ya;if(!t.hasOwnProperty(e))return null;const n=t[e];return n.aliasOf?await va(n.aliasOf):n}var ka=Object.freeze({__proto__:null,Plugin:class{constructor(e){this.conf=e}normalizeReferences(){const e=new Set([...this.conf.normativeReferences].map((e=>e.toLowerCase())));Array.from(this.conf.informativeReferences).filter((t=>e.has(t.toLowerCase()))).forEach((e=>this.conf.informativeReferences.delete(e)))}getRefKeys(){return{informativeReferences:Array.from(this.conf.informativeReferences),normativeReferences:Array.from(this.conf.normativeReferences)}}async run(){this.conf.localBiblio||(this.conf.localBiblio={}),this.conf.biblio=fa;const e=Object.keys(this.conf.localBiblio).filter((e=>this.conf.localBiblio?.[e]?.hasOwnProperty("aliasOf"))).map((e=>this.conf.localBiblio?.[e]?.aliasOf)).filter((e=>e&&!this.conf.localBiblio?.hasOwnProperty(e)));this.normalizeReferences();const t=this.getRefKeys(),n=Array.from(new Set(t.normativeReferences.concat(t.informativeReferences).filter((e=>!this.conf.localBiblio?.hasOwnProperty(e))).concat(e.filter(Boolean)).sort())),r=n.length?await async function(e){const t=[];try{await ha.ready;const n=e.map((async e=>({id:e,data:await ha.find(e)})));t.push(...await Promise.all(n))}catch(n){t.push(...e.map((e=>({id:e,data:null})))),console.warn(n)}return t}(n):[],s={hasData:[],noData:[]};r.forEach((e=>{(e.data?s.hasData:s.noData).push(e)})),s.hasData.forEach((e=>{e.data&&(fa[e.id]=e.data)}));const i=s.noData.map((e=>e.id));if(i.length){const e=await wa(i,{forceUpdate:!0});Object.assign(fa,e)}Object.assign(fa,this.conf.localBiblio),(()=>{ba(this.conf.biblio)})()}},biblio:fa,name:"core/biblio",resolveRef:va,updateFromNetwork:wa});const $a="core/render-biblio";function xa(e){return`bib-${qr(e)}`}const Ca=Nr({en:{info_references:"Informative references",norm_references:"Normative references",references:"References",reference_not_found:"Reference not found."},ko:{references:"참조"},nl:{info_references:"Informatieve referenties",norm_references:"Normatieve referenties",references:"Referenties"},es:{info_references:"Referencias informativas",norm_references:"Referencias normativas",references:"Referencias",reference_not_found:"Referencia no encontrada."},ja:{info_references:"参照用参考文献",norm_references:"規範的参考文献",references:"参考文献"},de:{info_references:"Weiterführende Informationen",norm_references:"Normen und Spezifikationen",references:"Referenzen"},zh:{info_references:"非规范性引用",norm_references:"规范性引用",references:"参考文献"},cs:{info_references:"Informativní odkazy",norm_references:"Normativní odkazy",references:"Odkazy",reference_not_found:"Odkaz nebyl nalezen."}}),Sa=new Map([["CR","W3C Candidate Recommendation"],["ED","W3C Editor's Draft"],["LCWD","W3C Last Call Working Draft"],["NOTE","W3C Working Group Note"],["PR","W3C Proposed Recommendation"],["REC","W3C Recommendation"],["WD","W3C Working Draft"]]),_a=(Ta=".",e=>{const t=e.trim();return!t||t.endsWith(Ta)?t:t+Ta});var Ta;function Ra(e,t){const{goodRefs:n,badRefs:r}=function(e){const t=[],n=[];for(const r of e)r.refcontent?t.push(r):n.push(r);return{goodRefs:t,badRefs:n}}(e.map(Ea)),s=function(e){const t=new Map;for(const n of e)t.has(n.refcontent?.id??"")||t.set(n.refcontent?.id??"",n);return[...t.values()]}(n),i=s.concat(r).sort(((e,t)=>e.ref.toLocaleLowerCase().localeCompare(t.ref.toLocaleLowerCase()))),o=sr`
+ >`}function da(e){let t;try{t=function(e){const t=na.test(e),n=t?ta:ea,[r,s]=e.split(n);if(t&&r&&!s)throw new SyntaxError(`Internal slot missing "for" part. Expected \`{{ InterfaceName/${r}}}\` }.`);const i=r.split(/[./]/).concat(s).filter((e=>e&&e.trim())).map((e=>e.trim())),o=!e.includes("/"),a=[];for(;i.length;){const t=i.pop()??"";if(Ko.test(t)){const[,e,n,r,s]=t.match(Ko),i=(n??"").split(/,\s*/).filter((e=>e)),c=r?.trim(),l=s?.split(/,\s*/).filter((e=>e));a.push({type:"method",identifier:e??"",args:i,renderParent:o,renderText:c,renderArgs:l})}else if(Qo.test(t)){const[,e,n]=t.match(Qo);a.push({type:"enum",identifier:e??"",enumValue:n??"",renderParent:o})}else if(Jo.test(t)){const[,e]=t.match(Jo);o?a.push({type:"exception",identifier:e??""}):a.push({type:"enum",enumValue:e??"",renderParent:o})}else if(Zo.test(t)){const[,e,n]=t.match(Zo),r=n?"method":"attribute",s=n?.slice(1,-1).split(/,\s*/).filter((e=>e))??[];a.push({type:"internal-slot",slotType:r,identifier:e??"",args:s,renderParent:o})}else if(Yo.test(t)&&i.length){const[,e]=t.match(Yo);a.push({type:"attribute",identifier:e??"",renderParent:o})}else if(Vo.test(t)){const e=t.endsWith("?"),n=e?t.slice(0,-1):t;a.push({type:"idl-primitive",identifier:n,renderParent:o,nullable:e})}else{if(!Xo.test(t)||0!==i.length)throw new SyntaxError(`IDL micro-syntax parsing error in \`{{ ${e} }}\``);{const e=t.endsWith("?"),n=e?t.slice(0,-1):t;a.push({type:"base",identifier:n,renderParent:o,nullable:e})}}}return a.forEach(((e,t,n)=>{e.parent=n[t+1]||null})),a.reverse()}(e)}catch(t){const n=sr`{{ ${e} }}`,r="Error: Invalid inline IDL string.";return ns(t.message,"core/inlines",{title:r,elements:[n]}),n}const n=sr(document.createDocumentFragment()),r=[];for(const e of t)switch(e.type){case"base":{const t=ra(e);t&&r.push(t);break}case"attribute":r.push(oa(e));break;case"internal-slot":r.push(sa(e));break;case"method":r.push(aa(e));break;case"enum":r.push(ca(e));break;case"exception":r.push(la(e));break;case"idl-primitive":r.push(ua(e));break;default:throw new Error("Unknown type.")}return n`${r}`}const pa=new Set(["alias","reference"]),ha=async function(){const e=await ir.openDB("respec-biblio2",12,{upgrade(e){Array.from(e.objectStoreNames).map((t=>e.deleteObjectStore(t)));e.createObjectStore("alias",{keyPath:"id"}).createIndex("aliasOf","aliasOf",{unique:!1}),e.createObjectStore("reference",{keyPath:"id"})}}),t=Date.now();for(const n of[...pa]){const r=e.transaction(n,"readwrite").store,s=IDBKeyRange.lowerBound(t);let i=await r.openCursor(s);for(;i?.value;){const e=i.value;(void 0===e.expires||e.expiresn[e].map((t=>this.add(e,t)))));await Promise.all(r)},async add(e,t){if(!pa.has(e))throw new TypeError(`Invalid type: ${e}`);if("object"!=typeof t)throw new TypeError("details should be an object");if("alias"===e&&!t.hasOwnProperty("aliasOf"))throw new TypeError("Invalid alias object.");const n=await this.ready;let r=await this.has(e,t.id);if(r){const s=await this.get(e,t.id);if(s&&void 0!==s.expires&&s.expiresn.objectStore(e).clear()));await Promise.all(r)}},ma={},ga=new URL("https://api.specref.org/bibrefs?refs="),ba=Sr({hint:"dns-prefetch",href:ga.origin});let ya;document.head.appendChild(ba);const wa=new Promise((e=>{ya=e}));async function va(e,t={forceUpdate:!1}){const n=[...new Set(e)].filter((e=>e.trim()));if(!n.length||!1===navigator.onLine)return null;let r;try{r=await fetch(ga.href+n.join(","))}catch(e){return console.error(e),null}if(!t.forceUpdate&&!r.ok||200!==r.status)return null;const s=await r.json(),i=Date.now()+36e5;try{const e=Date.parse(r.headers.get("Expires")||""),t=Number.isNaN(e)?i:Math.min(e,i);await fa.addAll(s,t)}catch(e){console.error(e)}return s}async function ka(e){const t=await wa;if(!t.hasOwnProperty(e))return null;const n=t[e];return n.aliasOf?await ka(n.aliasOf):n}var $a=Object.freeze({__proto__:null,Plugin:class{constructor(e){this.conf=e}normalizeReferences(){const e=new Set([...this.conf.normativeReferences].map((e=>e.toLowerCase())));Array.from(this.conf.informativeReferences).filter((t=>e.has(t.toLowerCase()))).forEach((e=>this.conf.informativeReferences.delete(e)))}getRefKeys(){return{informativeReferences:Array.from(this.conf.informativeReferences),normativeReferences:Array.from(this.conf.normativeReferences)}}async run(){this.conf.localBiblio||(this.conf.localBiblio={}),this.conf.biblio=ma;const e=Object.keys(this.conf.localBiblio).filter((e=>this.conf.localBiblio?.[e]?.hasOwnProperty("aliasOf"))).map((e=>this.conf.localBiblio?.[e]?.aliasOf)).filter((e=>e&&!this.conf.localBiblio?.hasOwnProperty(e)));this.normalizeReferences();const t=this.getRefKeys(),n=Array.from(new Set(t.normativeReferences.concat(t.informativeReferences).filter((e=>!this.conf.localBiblio?.hasOwnProperty(e))).concat(e.filter(Boolean)).sort())),r=n.length?await async function(e){const t=[];try{await fa.ready;const n=e.map((async e=>({id:e,data:await fa.find(e)})));t.push(...await Promise.all(n))}catch(n){t.push(...e.map((e=>({id:e,data:null})))),console.warn(n)}return t}(n):[],s={hasData:[],noData:[]};r.forEach((e=>{(e.data?s.hasData:s.noData).push(e)})),s.hasData.forEach((e=>{e.data&&(ma[e.id]=e.data)}));const i=s.noData.map((e=>e.id));if(i.length){const e=await va(i,{forceUpdate:!0});Object.assign(ma,e)}Object.assign(ma,this.conf.localBiblio),(()=>{ya(this.conf.biblio)})()}},biblio:ma,name:"core/biblio",resolveRef:ka,updateFromNetwork:va});const xa="core/render-biblio";function Ca(e){return`bib-${Wr(e)}`}const Sa=Ir({en:{info_references:"Informative references",norm_references:"Normative references",references:"References",reference_not_found:"Reference not found."},ko:{references:"참조"},nl:{info_references:"Informatieve referenties",norm_references:"Normatieve referenties",references:"Referenties"},es:{info_references:"Referencias informativas",norm_references:"Referencias normativas",references:"Referencias",reference_not_found:"Referencia no encontrada."},ja:{info_references:"参照用参考文献",norm_references:"規範的参考文献",references:"参考文献"},de:{info_references:"Weiterführende Informationen",norm_references:"Normen und Spezifikationen",references:"Referenzen"},zh:{info_references:"非规范性引用",norm_references:"规范性引用",references:"参考文献"},cs:{info_references:"Informativní odkazy",norm_references:"Normativní odkazy",references:"Odkazy",reference_not_found:"Odkaz nebyl nalezen."}}),_a=new Map([["CR","W3C Candidate Recommendation"],["ED","W3C Editor's Draft"],["LCWD","W3C Last Call Working Draft"],["NOTE","W3C Working Group Note"],["PR","W3C Proposed Recommendation"],["REC","W3C Recommendation"],["WD","W3C Working Draft"]]),Ta=(Ra=".",e=>{const t=e.trim();return!t||t.endsWith(Ra)?t:t+Ra});var Ra;function Ea(e,t){const{goodRefs:n,badRefs:r}=function(e){const t=[],n=[];for(const r of e)r.refcontent?t.push(r):n.push(r);return{goodRefs:t,badRefs:n}}(e.map(La)),s=function(e){const t=new Map;for(const n of e)t.has(n.refcontent?.id??"")||t.set(n.refcontent?.id??"",n);return[...t.values()]}(n),i=s.concat(r).sort(((e,t)=>e.ref.toLocaleLowerCase().localeCompare(t.ref.toLocaleLowerCase()))),o=sr`
${t}
-
${i.map(Aa)}
- `;Wr(o,"",t);const a=function(e){const t=new Map;for(const n of e){const e=n.refcontent?.id??"",r=t.has(e)?t.get(e):t.set(e,[]).get(e);r?.push(n.ref)}return t}(n);return function(e,t){e.map((({ref:e,refcontent:n})=>{const r=`#${xa(e)}`,s=(t.get(n.id??"")??[]).map((e=>`a.bibref[href="#${xa(e)}"]`)).join(",");return{refUrl:r,elems:document.querySelectorAll(s),refcontent:n}})).forEach((({refUrl:e,elems:t,refcontent:n})=>{t.forEach((t=>{t.setAttribute("href",e),t.setAttribute("title",n.title),t.dataset.linkType="biblio"}))}))}(s,a),function(e){for(const{ref:t}of e){const e=[...document.querySelectorAll(`a.bibref[href="#${xa(t)}"]`)].filter((({textContent:e})=>e.toLowerCase()===t.toLowerCase()));ts(`Reference "[${t}]" not found.`,$a,{hint:`Search for ["${t}"](https://www.specref.org?q=${t}) on Specref to see if it exists or if it's misspelled.`,elements:e})}}(r),o}function Ea(e){let t=fa[e],n=e;const r=new Set([n]);for(;t&&t.aliasOf;)if(r.has(t.aliasOf)){t=null;ts(`Circular reference in biblio DB between [\`${e}\`] and [\`${n}\`].`,$a)}else n=t.aliasOf,t=fa[n],r.add(n);return t&&!t.id&&(t.id=e.toLowerCase()),{ref:e,refcontent:t}}function La(e,t){const n=e.replace(/^(!|\?)/,""),r=`#${xa(n)}`,s=sr`${i.map(Pa)}
+ `;Fr(o,"",t);const a=function(e){const t=new Map;for(const n of e){const e=n.refcontent?.id??"",r=t.has(e)?t.get(e):t.set(e,[]).get(e);r?.push(n.ref)}return t}(n);return function(e,t){e.map((({ref:e,refcontent:n})=>{const r=`#${Ca(e)}`,s=(t.get(n.id??"")??[]).map((e=>`a.bibref[href="#${Ca(e)}"]`)).join(",");return{refUrl:r,elems:document.querySelectorAll(s),refcontent:n}})).forEach((({refUrl:e,elems:t,refcontent:n})=>{t.forEach((t=>{t.setAttribute("href",e),t.setAttribute("title",n.title),t.dataset.linkType="biblio"}))}))}(s,a),function(e){for(const{ref:t}of e){const e=[...document.querySelectorAll(`a.bibref[href="#${Ca(t)}"]`)].filter((({textContent:e})=>e.toLowerCase()===t.toLowerCase()));ns(`Reference "[${t}]" not found.`,xa,{hint:`Search for ["${t}"](https://www.specref.org?q=${t}) on Specref to see if it exists or if it's misspelled.`,elements:e})}}(r),o}function La(e){let t=ma[e],n=e;const r=new Set([n]);for(;t&&t.aliasOf;)if(r.has(t.aliasOf)){t=null;ns(`Circular reference in biblio DB between [\`${e}\`] and [\`${n}\`].`,xa)}else n=t.aliasOf,t=ma[n],r.add(n);return t&&!t.id&&(t.id=e.toLowerCase()),{ref:e,refcontent:t}}function Aa(e,t){const n=e.replace(/^(!|\?)/,""),r=`#${Ca(n)}`,s=sr`${t||n}`;return t?s:sr`[${s}]`}function Aa(e){const{ref:t,refcontent:n}=e,r=xa(t);return sr`
+ >`;return t?s:sr`[${s}]`}function Pa(e){const{ref:t,refcontent:n}=e,r=Ca(t);return sr`
- `}function Pa(e){if("string"==typeof e)return e;let t=`${e.title}`;if(t=e.href?`${t}. `:`${t}. `,e.authors){if(!Array.isArray(e.authors)){const t=`The "authors" field in reference "${e.id||e.title}" must be an array.`,n=`Use \`authors: [${JSON.stringify(e.authors)}]\` instead of \`authors: ${JSON.stringify(e.authors)}\`.`;ts(t,$a,{hint:n}),e.authors=[e.authors]}e.authors.length&&(t+=e.authors.join("; "),e.etAl&&(t+=" et al"),t.endsWith(".")||(t+=". "))}return e.publisher&&(t=`${t} ${_a(e.publisher)} `),e.date&&(t+=`${e.date}. `),e.status&&(t+=`${Sa.get(e.status)||e.status}. `),e.href&&(t+=`URL: ${e.href}`),t}var Na=Object.freeze({__proto__:null,name:$a,renderInlineCitation:La,run:function(e){const t=Array.from(e.informativeReferences),n=Array.from(e.normativeReferences);if(!t.length&&!n.length)return;const r=document.querySelector("section#references")||sr``;if(document.querySelector("section#references > :is(h2, h1)")||r.prepend(sr`
${Ca.references}
`),r.classList.add("appendix"),n.length){const e=Ra(n,Ca.norm_references);r.appendChild(e)}if(t.length){const e=Ra(t,Ca.info_references);r.appendChild(e)}document.body.appendChild(r)}});const Ia="core/inlines",Da={},Oa=e=>new RegExp(e.map((e=>e.source)).join("|")),ja=Nr({en:{rfc2119Keywords:()=>Oa([/\bMUST(?:\s+NOT)?\b/,/\bSHOULD(?:\s+NOT)?\b/,/\bSHALL(?:\s+NOT)?\b/,/\bMAY\b/,/\b(?:NOT\s+)?REQUIRED\b/,/\b(?:NOT\s+)?RECOMMENDED\b/,/\bOPTIONAL\b/])},de:{rfc2119Keywords:()=>Oa([/\bMUSS\b/,/\bMÜSSEN\b/,/\bERFORDERLICH\b/,/\b(?:NICHT\s+)?NÖTIG\b/,/\bDARF(?:\s+NICHT)?\b/,/\bDÜRFEN(?:\s+NICHT)?\b/,/\bVERBOTEN\b/,/\bSOLL(?:\s+NICHT)?\b/,/\bSOLLEN(?:\s+NICHT)?\b/,/\b(?:NICHT\s+)?EMPFOHLEN\b/,/\bKANN\b/,/\bKÖNNEN\b/,/\bOPTIONAL\b/])}}),za=/(?:`[^`]+`)(?!`)/,Ma=/(?:{{[^}]+\?*}})/,Ua=/\B\|\w[\w\s]*(?:\s*:[\w\s&;"?<>]+\??)?\|\B/,qa=/(?:\[\[(?:!|\\|\?)?[\w.-]+(?:|[^\]]+)?\]\])/,Wa=/(?:\[\[\[(?:!|\\|\?)?#?[\w-.]+\]\]\])/,Fa=/(?:\[=[^=]+=\])/,Ba=/(?:\[\^[^^]+\^\])/,Ha=/(?:\{\^[^}^]+\^\})/;function Ga(e){const t=e.slice(2,-2).trim(),[n,r,s]=t.split("/",3).map((e=>e&&e.trim())).filter((e=>!!e)),[i,o,a]=t.startsWith("/")?["element-attr",null,n]:s?["attr-value",`${n}/${r}`,s]:r?["element-attr",n,r]:["element",null,n];return sr`${e.title}`;if(t=e.href?`${t}. `:`${t}. `,e.authors){if(!Array.isArray(e.authors)){const t=`The "authors" field in reference "${e.id||e.title}" must be an array.`,n=`Use \`authors: [${JSON.stringify(e.authors)}]\` instead of \`authors: ${JSON.stringify(e.authors)}\`.`;ns(t,xa,{hint:n}),e.authors=[e.authors]}e.authors.length&&(t+=e.authors.join("; "),e.etAl&&(t+=" et al"),t.endsWith(".")||(t+=". "))}return e.publisher&&(t=`${t} ${Ta(e.publisher)} `),e.date&&(t+=`${e.date}. `),e.status&&(t+=`${_a.get(e.status)||e.status}. `),e.href&&(t+=`URL: ${e.href}`),t}var Ia=Object.freeze({__proto__:null,name:xa,renderInlineCitation:Aa,run:function(e){const t=Array.from(e.informativeReferences),n=Array.from(e.normativeReferences);if(!t.length&&!n.length)return;const r=document.querySelector("section#references")||sr``;if(document.querySelector("section#references > :is(h2, h1)")||r.prepend(sr`
${Sa.references}
`),r.classList.add("appendix"),n.length){const e=Ea(n,Sa.norm_references);r.appendChild(e)}if(t.length){const e=Ea(t,Sa.info_references);r.appendChild(e)}document.body.appendChild(r)}});const Da="core/inlines",Oa={},ja=e=>new RegExp(e.map((e=>e.source)).join("|")),za=Ir({en:{rfc2119Keywords:()=>ja([/\bMUST(?:\s+NOT)?\b/,/\bSHOULD(?:\s+NOT)?\b/,/\bSHALL(?:\s+NOT)?\b/,/\bMAY\b/,/\b(?:NOT\s+)?REQUIRED\b/,/\b(?:NOT\s+)?RECOMMENDED\b/,/\bOPTIONAL\b/])},de:{rfc2119Keywords:()=>ja([/\bMUSS\b/,/\bMÜSSEN\b/,/\bERFORDERLICH\b/,/\b(?:NICHT\s+)?NÖTIG\b/,/\bDARF(?:\s+NICHT)?\b/,/\bDÜRFEN(?:\s+NICHT)?\b/,/\bVERBOTEN\b/,/\bSOLL(?:\s+NICHT)?\b/,/\bSOLLEN(?:\s+NICHT)?\b/,/\b(?:NICHT\s+)?EMPFOHLEN\b/,/\bKANN\b/,/\bKÖNNEN\b/,/\bOPTIONAL\b/])}}),Ma=/(?:`[^`]+`)(?!`)/,Ua=/(?:{{[^}]+\?*}})/,qa=/\B\|\w[\w\s]*(?:\s*:[\w\s&;"?<>]+\??)?\|\B/,Wa=/(?:\[\[(?:!|\\|\?)?[\w.-]+(?:|[^\]]+)?\]\])/,Fa=/(?:\[\[\[(?:!|\\|\?)?#?[\w-.]+\]\]\])/,Ba=/(?:\[=[^=]+=\])/,Ha=/(?:\[\^[^^]+\^\])/,Ga=/(?:\{\^[^}^]+\^\})/;function Va(e){const t=e.slice(2,-2).trim(),[n,r,s]=t.split("/",3).map((e=>e&&e.trim())).filter((e=>!!e)),[i,o,a]=t.startsWith("/")?["element-attr",null,n]:s?["attr-value",`${n}/${r}`,s]:r?["element-attr",n,r]:["element",null,n];return sr`${a}`}function Va(e){const t=(e.slice(2,-2).trim().match(/"([^"]*)"|([^/]+)/g)||[]).map((e=>e.trim()));if(1===t.length){const e=t[0];return sr``}function Ja(e){const t=(e.slice(2,-2).trim().match(/"([^"]*)"|([^/]+)/g)||[]).map((e=>e.trim()));if(1===t.length){const e=t[0];return sr`${e}${r}`}function Ja(e){const t=Pr(e),n=sr`${t}`;return Da[t]=!0,n}function Ka(e){const t=e.slice(3,-3).trim();return t.startsWith("#")?sr``:sr``}function Za(e,t){const n=Pr(e.slice(2,-2));if(n.startsWith("\\"))return e.replace(/^(\{\{\s*)\\/,"$1");const r=ua(n);return!!t.parentElement?.closest("dfn,a")?tc(`\`${r.textContent}\``):r}function Ya(e,t,n){const r=e.slice(2,-2);if(r.startsWith("\\"))return[`[[${r.slice(1)}]]`];const[s,i]=r.split("|").map(Pr),{type:o,illegal:a}=Hr(s,t.parentElement),c=La(s,i),l=s.replace(/^(!|\?)/,"");if(a&&!n.normativeReferences.has(l)){const e=c.childNodes[1]||c;ns("Normative references in informative sections are not allowed. ",Ia,{elements:[e],hint:`Remove '!' from the start of the reference \`[[${r}]]\``})}return"informative"!==o||a?n.normativeReferences.add(l):n.informativeReferences.add(l),c.childNodes[1]?c.childNodes:[c]}function Xa(e,t,n){return"ABBR"===t.parentElement?.tagName?e:sr`${e}`}function Qa(e){const t=e.slice(1,-1).split(":",2),[n,r]=t.map((e=>e.trim()));return sr`${n}`}function ec(e){const t=function(e){const t=e=>e.replace("%%","/").split("/").map(Pr).join("/"),n=e.replace("\\/","%%"),r=n.lastIndexOf("/");if(-1===r)return[t(n)];const s=n.substring(0,r),i=n.substring(r+1,n.length);return[t(s),t(i)]}(e=e.slice(2,-2)),[n,r]=2===t.length?t:[null,t[0]],[s,i]=r.includes("|")?r.split("|",2).map((e=>e.trim())):[null,r],o=nc(i),a=n?Pr(n):null;return sr``}function Ka(e){const t=Nr(e),n=sr`${t}`;return Oa[t]=!0,n}function Za(e){const t=e.slice(3,-3).trim();return t.startsWith("#")?sr``:sr``}function Ya(e,t){const n=Nr(e.slice(2,-2));if(n.startsWith("\\"))return e.replace(/^(\{\{\s*)\\/,"$1");const r=da(n);return!!t.parentElement?.closest("dfn,a")?nc(`\`${r.textContent}\``):r}function Xa(e,t,n){const r=e.slice(2,-2);if(r.startsWith("\\"))return[`[[${r.slice(1)}]]`];const[s,i]=r.split("|").map(Nr),{type:o,illegal:a}=Gr(s,t.parentElement),c=Aa(s,i),l=s.replace(/^(!|\?)/,"");if(a&&!n.normativeReferences.has(l)){const e=c.childNodes[1]||c;rs("Normative references in informative sections are not allowed. ",Da,{elements:[e],hint:`Remove '!' from the start of the reference \`[[${r}]]\``})}return"informative"!==o||a?n.normativeReferences.add(l):n.informativeReferences.add(l),c.childNodes[1]?c.childNodes:[c]}function Qa(e,t,n){return"ABBR"===t.parentElement?.tagName?e:sr`${e}`}function ec(e){const t=e.slice(1,-1).split(":",2),[n,r]=t.map((e=>e.trim()));return sr`${n}`}function tc(e){const t=function(e){const t=e=>e.replace("%%","/").split("/").map(Nr).join("/"),n=e.replace("\\/","%%"),r=n.lastIndexOf("/");if(-1===r)return[t(n)];const s=n.substring(0,r),i=n.substring(r+1,n.length);return[t(s),t(i)]}(e=e.slice(2,-2)),[n,r]=2===t.length?t:[null,t[0]],[s,i]=r.includes("|")?r.split("|",2).map((e=>e.trim())):[null,r],o=rc(i),a=n?Nr(n):null;return sr`${o}`}function tc(e){const t=e.slice(1,-1);return sr`${t}`}function nc(e){return za.test(e)?e.split(/(`[^`]+`)(?!`)/).map((e=>e.startsWith("`")?tc(e):nc(e))):document.createTextNode(e)}var rc=Object.freeze({__proto__:null,name:Ia,rfc2119Usage:Da,run:function(e){const t=new Map;document.normalize(),document.querySelector("section#conformance")||document.body.classList.add("informative"),e.normativeReferences=new Kr,e.informativeReferences=new Kr,e.respecRFC2119||(e.respecRFC2119=Da);const n=document.querySelectorAll("abbr[title]:not(.exclude)");for(const{textContent:e,title:r}of n){const n=Pr(e),s=Pr(r);t.set(n,s)}const r=t.size?new RegExp(`(?:\\b${[...t.keys()].map((e=>wr(e))).join("\\b)|(?:\\b")}\\b)`):null,s=function(e,t=[],n={wsNodes:!0}){const r=t.join(", "),s=document.createNodeIterator(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>n.wsNodes||e.data.trim()?r&&e.parentElement?.closest(r)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}),i=[];let o;for(;o=s.nextNode();)i.push(o);return i}(document.body,["#respec-ui",".head","pre","svg","script","style"],{wsNodes:!1}),i=ja.rfc2119Keywords(),o=new RegExp(`(${Oa([i,Ma,Ha,Ua,qa,Wa,Fa,za,Ba,...r?[r]:[]]).source})`);for(const n of s){const r=n.data.split(o);if(1===r.length)continue;const s=document.createDocumentFragment();let a=!0;for(const o of r)if(a=!a,a)switch(!0){case o.startsWith("{{"):s.append(Za(o,n));break;case o.startsWith("{^"):s.append(Va(o));break;case o.startsWith("[[["):s.append(Ka(o));break;case o.startsWith("[["):s.append(...Ya(o,n,e));break;case o.startsWith("|"):s.append(Qa(o));break;case o.startsWith("[="):s.append(ec(o));break;case o.startsWith("`"):s.append(tc(o));break;case o.startsWith("[^"):s.append(Ga(o));break;case t.has(o):s.append(Xa(o,n,t));break;case i.test(o):s.append(Ja(o))}else s.append(o);n.replaceWith(s)}}});const sc="w3c/conformance",ic=Nr({en:{conformance:"Conformance",normativity:"As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.",keywordInterpretation:(e,t)=>sr`
+ >`}function nc(e){const t=e.slice(1,-1);return sr`${t}`}function rc(e){return Ma.test(e)?e.split(/(`[^`]+`)(?!`)/).map((e=>e.startsWith("`")?nc(e):rc(e))):document.createTextNode(e)}var sc=Object.freeze({__proto__:null,name:Da,rfc2119Usage:Oa,run:function(e){const t=new Map;document.normalize(),document.querySelector("section#conformance")||document.body.classList.add("informative"),e.normativeReferences=new Zr,e.informativeReferences=new Zr,e.respecRFC2119||(e.respecRFC2119=Oa);const n=document.querySelectorAll("abbr[title]:not(.exclude)");for(const{textContent:e,title:r}of n){const n=Nr(e),s=Nr(r);t.set(n,s)}const r=t.size?new RegExp(`(?:\\b${[...t.keys()].map((e=>vr(e))).join("\\b)|(?:\\b")}\\b)`):null,s=function(e,t=[],n={wsNodes:!0}){const r=t.join(", "),s=document.createNodeIterator(e,NodeFilter.SHOW_TEXT,{acceptNode:e=>n.wsNodes||e.data.trim()?r&&e.parentElement?.closest(r)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}),i=[];let o;for(;o=s.nextNode();)i.push(o);return i}(document.body,["#respec-ui",".head","pre","svg","script","style"],{wsNodes:!1}),i=za.rfc2119Keywords(),o=new RegExp(`(${ja([i,Ua,Ga,qa,Wa,Fa,Ba,Ma,Ha,...r?[r]:[]]).source})`);for(const n of s){const r=n.data.split(o);if(1===r.length)continue;const s=document.createDocumentFragment();let a=!0;for(const o of r)if(a=!a,a)switch(!0){case o.startsWith("{{"):s.append(Ya(o,n));break;case o.startsWith("{^"):s.append(Ja(o));break;case o.startsWith("[[["):s.append(Za(o));break;case o.startsWith("[["):s.append(...Xa(o,n,e));break;case o.startsWith("|"):s.append(ec(o));break;case o.startsWith("[="):s.append(tc(o));break;case o.startsWith("`"):s.append(nc(o));break;case o.startsWith("[^"):s.append(Va(o));break;case t.has(o):s.append(Qa(o,n,t));break;case i.test(o):s.append(Ka(o))}else s.append(o);n.replaceWith(s)}}});const ic="w3c/conformance",oc=Ir({en:{conformance:"Conformance",normativity:"As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.",keywordInterpretation:(e,t)=>sr`
The key word${t?"s":""} ${e} in this document
${t?"are":"is"} to be interpreted as described in
BCP 14
- ${La("RFC2119")} ${La("RFC8174")}
+ ${Aa("RFC2119")} ${Aa("RFC8174")}
when, and only when, ${t?"they appear":"it appears"} in all
capitals, as shown here.
`},de:{conformance:"Anforderungen",normativity:"Neben den explizit als nicht-normativ gekennzeichneten Abschnitten sind auch alle Diagramme, Beispiele und Hinweise in diesem Dokument nicht normativ. Alle anderen Angaben sind normativ.",keywordInterpretation:(e,t)=>sr`
${t?"Die Schlüsselwörter":"Das Schlüsselwort"} ${e} in
diesem Dokument ${t?"sind":"ist"} gemäß
BCP 14
- ${La("RFC2119")} ${La("RFC8174")}
+ ${Aa("RFC2119")} ${Aa("RFC8174")}
und unter Berücksichtigung von
2119de
zu interpretieren, wenn und nur wenn ${t?"sie":"es"} wie hier
gezeigt durchgehend groß geschrieben wurde${t?"n":""}.
-
`}});var oc=Object.freeze({__proto__:null,name:sc,run:function(e){const t=document.querySelector("section#conformance");if(t){if(t.classList.contains("informative")){t.classList.remove("informative");ns("Conformance sections are normative by definition. The `informative` class has been removed.",sc,{hint:'Remove `class="informative"` from `` to avoid this warning.',elements:[t]})}t.classList.contains("override")||function(e,t){const n=[...Object.keys(Da)];n.length&&(t.normativeReferences.add("RFC2119"),t.normativeReferences.add("RFC8174"));const r=Mr(n.sort(),(e=>sr`${e}`)),s=n.length>1,i=sr`
-
${ic.conformance}
-
${ic.normativity}
- ${n.length?ic.keywordInterpretation(r,s):null}
- `;e.prepend(...i.childNodes)}(t,e)}if(!t&&Object.keys(Da).length){ns("Document uses RFC2119 keywords but lacks a conformance section.",sc,{hint:'Please add a ``.'})}}});function ac(e,t,n,r){try{switch(t){case"element-attr":return document.createAttribute(e),!0;case"element":return document.createElement(e),!0}}catch(s){ts(`Invalid ${t} name "${e}": ${s.message}`,r,{hint:`Check that the ${t} name is allowed per the XML's Name production for ${t}.`,elements:[n]})}return!1}function cc(e,t,n,r){if(/^[a-z]+(-[a-z]+)*$/i.test(e))return!0;return ts(`Invalid ${t} name "${e}".`,r,{hint:`Check that the ${t} name is allowed per the naming rules for this type.`,elements:[n]}),!1}const lc=new Qr;function uc(e,t){for(const n of t)lc.has(n)||lc.set(n,new Set),lc.get(n)?.add(e)}const dc="core/dfn",pc=new Map([["abstract-op",{requiresFor:!1}],["attr-value",{requiresFor:!0,associateWith:"a markup attribute",validator:cc}],["element",{requiresFor:!1,validator:ac}],["element-attr",{requiresFor:!1,validator:ac}],["element-state",{requiresFor:!0,associateWith:"a markup attribute",validator:cc}],["event",{requiresFor:!1,validator:cc}],["http-header",{requiresFor:!1}],["media-type",{requiresFor:!1,validator:function(e,t,n,r){try{const t=new ar(e);if(t.toString()!==e)throw new Error(`Input doesn't match its canonical form: "${t}".`)}catch(s){return ts(`Invalid ${t} "${e}": ${s.message}.`,r,{hint:"Check that the MIME type has both a type and a sub-type, and that it's in a canonical form (e.g., `text/plain`).",elements:[n]}),!1}return!0}}],["scheme",{requiresFor:!1,validator:cc}],["permission",{requiresFor:!1,validator:function(e,t,n,r){return e.startsWith('"')&&e.endsWith('"')?cc(e.slice(1,-1),t,n,r):(ts(`Invalid ${t} "${e}".`,r,{hint:`Check that the ${t} is quoted with double quotes.`,elements:[n]}),!1)}}]]),hc=[...pc.keys()];function fc(e,t){let n="";switch(!0){case hc.some((t=>e.classList.contains(t))):n=[...e.classList].find((e=>pc.has(e)))??"",function(e,t,n){const r=pc.get(t);if(r?.requiresFor&&!n.dataset.dfnFor){const e=cs`Definition of type "\`${t}\`" requires a ${"[data-dfn-for]"} attribute.`,{associateWith:s}=r,i=cs`Use a ${"[data-dfn-for]"} attribute to associate this with ${s??""}.`;ts(e,dc,{hint:i,elements:[n]})}r?.validator&&r.validator(e,t,n,dc)}(t,n,e);break;case Ko.test(t):n=function(e,t){t.dataset.hasOwnProperty("idl")||(t.dataset.idl="");const n=t.closest("[data-dfn-for]");t!==n&&n?.dataset.dfnFor&&(t.dataset.dfnFor=n.dataset.dfnFor);if(!t.dataset.dfnFor){const n=cs`Use a ${"[data-dfn-for]"} attribute to associate this dfn with a WebIDL interface.`;ts(`Internal slot "${e}" must be associated with a WebIDL interface.`,dc,{hint:n,elements:[t]})}t.matches(".export, [data-export]")||(t.dataset.noexport="");const r=e.endsWith(")")?"method":"attribute";if(!t.dataset.dfnType)return r;const s=["attribute","method"],{dfnType:i}=t.dataset;if(!s.includes(i)||r!==i){const n=cs`Invalid ${"[data-dfn-type]"} attribute on internal slot.`,i=`The only allowed types are: ${is(s,{quotes:!0})}. The slot "${e}" seems to be a "${ss(r)}"?`;return ts(n,dc,{hint:i,elements:[t]}),"dfn"}return i}(t,e)}if(!n&&!e.matches("[data-dfn-type]")){const t=e.closest("[data-dfn-type]");n=t?.dataset.dfnType??""}n&&!e.dataset.dfnType&&(e.dataset.dfnType=n)}function mc(e){switch(!0){case e.matches(".export.no-export"):ts(cs`Declares both "${"[no-export]"}" and "${"[export]"}" CSS class.`,dc,{elements:[e],hint:"Please use only one."});break;case e.matches(".no-export, [data-noexport]"):if(e.matches("[data-export]")){ts(cs`Declares ${"[no-export]"} CSS class, but also has a "${"[data-export]"}" attribute.`,dc,{elements:[e],hint:"Please chose only one."}),delete e.dataset.export}e.dataset.noexport="";break;case e.matches(":is(.export):not([data-noexport], .no-export)"):e.dataset.export=""}}var gc=Object.freeze({__proto__:null,name:dc,run:function(){for(const e of document.querySelectorAll("dfn")){const t=Fr(e);if(uc(e,t),e.dataset.cite&&/\b#\b/.test(e.dataset.cite))continue;const[n]=t;fc(e,n),mc(e);const r=(e.dataset.localLt||"").split("|").map(Pr),s=t.filter((e=>!r.includes(e)));(s.length>1||n!==Pr(e.textContent))&&(e.dataset.lt=s.join("|"))}}});var bc=Object.freeze({__proto__:null,name:"core/pluralize",run:function(e){if(!e.pluralize)return;const t=function(){const e=new Set;document.querySelectorAll("a:not([href])").forEach((t=>{const n=Pr(t.textContent).toLowerCase();e.add(n),t.dataset.lt&&e.add(t.dataset.lt)}));const t=new Set,n=document.querySelectorAll("dfn:not([data-lt-noDefault])");return n.forEach((e=>{const n=Pr(e.textContent).toLowerCase();t.add(n),e.dataset.lt&&e.dataset.lt.split("|").forEach((e=>t.add(e))),e.dataset.localLt&&e.dataset.localLt.split("|").forEach((e=>t.add(e)))})),function(n){const r=Pr(n).toLowerCase(),s=cr.isSingular(r)?cr.plural(r):cr.singular(r);return e.has(s)&&!t.has(s)?s:""}}();document.querySelectorAll("dfn:not([data-lt-no-plural]):not([data-lt-noDefault])").forEach((e=>{const n=[e.textContent];e.dataset.lt&&n.push(...e.dataset.lt.split("|")),e.dataset.localLt&&n.push(...e.dataset.localLt.split("|"));const r=new Set(n.map(t).filter((e=>e)));if(r.size){const t=e.dataset.plurals?e.dataset.plurals.split("|"):[],n=[...new Set([...t,...r])];e.dataset.plurals=n.join("|"),uc(e,n)}}))}});var yc=String.raw`span.example-title{text-transform:none}
+ `},fr:{conformance:"Conformité",normativity:"Tout comme les sections marquées comme non normatives, toutes les recommandations d'édition, diagrammes, exemples et notes dans cette spécification sont non normatifs. Tout le reste dans cette spécification est normatif.",keywordInterpretation:(e,t)=>sr`
+ ${t?"Les mots-clés":"Le mot-clé"} ${e} dans ce document
+ ${t?"doivent":"doit"} être interprété${t?"s":""} comme
+ décrit dans
+ BCP 14
+ ${Aa("RFC2119")} ${Aa("RFC8174")}
+ lorsque, et seulement lorsque,
+ ${t?"ils apparaissent":"il apparaît"} en majuscules, comme
+ indiqué ici.
+
`}});var ac=Object.freeze({__proto__:null,name:ic,run:function(e){const t=document.querySelector("section#conformance");if(t){if(t.classList.contains("informative")){t.classList.remove("informative");rs("Conformance sections are normative by definition. The `informative` class has been removed.",ic,{hint:'Remove `class="informative"` from `` to avoid this warning.',elements:[t]})}t.classList.contains("override")||function(e,t){const n=[...Object.keys(Oa)];n.length&&(t.normativeReferences.add("RFC2119"),t.normativeReferences.add("RFC8174"));const r=Ur(n.sort(),(e=>sr`${e}`)),s=n.length>1,i=sr`
+
${oc.conformance}
+
${oc.normativity}
+ ${n.length?oc.keywordInterpretation(r,s):null}
+ `;e.prepend(...i.childNodes)}(t,e)}if(!t&&Object.keys(Oa).length){rs("Document uses RFC2119 keywords but lacks a conformance section.",ic,{hint:'Please add a ``.'})}}});function cc(e,t,n,r){try{switch(t){case"element-attr":return document.createAttribute(e),!0;case"element":return document.createElement(e),!0}}catch(s){ns(`Invalid ${t} name "${e}": ${s.message}`,r,{hint:`Check that the ${t} name is allowed per the XML's Name production for ${t}.`,elements:[n]})}return!1}function lc(e,t,n,r){if(/^[a-z]+(-[a-z]+)*$/i.test(e))return!0;return ns(`Invalid ${t} name "${e}".`,r,{hint:`Check that the ${t} name is allowed per the naming rules for this type.`,elements:[n]}),!1}const uc=new es;function dc(e,t){for(const n of t)uc.has(n)||uc.set(n,new Set),uc.get(n)?.add(e)}const pc="core/dfn",hc=new Map([["abstract-op",{requiresFor:!1}],["attr-value",{requiresFor:!0,associateWith:"a markup attribute",validator:lc}],["element",{requiresFor:!1,validator:cc}],["element-attr",{requiresFor:!1,validator:cc}],["element-state",{requiresFor:!0,associateWith:"a markup attribute",validator:lc}],["event",{requiresFor:!1,validator:lc}],["http-header",{requiresFor:!1}],["media-type",{requiresFor:!1,validator:function(e,t,n,r){try{const t=new ar(e);if(t.toString()!==e)throw new Error(`Input doesn't match its canonical form: "${t}".`)}catch(s){return ns(`Invalid ${t} "${e}": ${s.message}.`,r,{hint:"Check that the MIME type has both a type and a sub-type, and that it's in a canonical form (e.g., `text/plain`).",elements:[n]}),!1}return!0}}],["scheme",{requiresFor:!1,validator:lc}],["permission",{requiresFor:!1,validator:function(e,t,n,r){return e.startsWith('"')&&e.endsWith('"')?lc(e.slice(1,-1),t,n,r):(ns(`Invalid ${t} "${e}".`,r,{hint:`Check that the ${t} is quoted with double quotes.`,elements:[n]}),!1)}}]]),fc=[...hc.keys()];function mc(e,t){let n="";switch(!0){case fc.some((t=>e.classList.contains(t))):n=[...e.classList].find((e=>hc.has(e)))??"",function(e,t,n){const r=hc.get(t);if(r?.requiresFor&&!n.dataset.dfnFor){const e=ls`Definition of type "\`${t}\`" requires a ${"[data-dfn-for]"} attribute.`,{associateWith:s}=r,i=ls`Use a ${"[data-dfn-for]"} attribute to associate this with ${s??""}.`;ns(e,pc,{hint:i,elements:[n]})}r?.validator&&r.validator(e,t,n,pc)}(t,n,e);break;case Zo.test(t):n=function(e,t){t.dataset.hasOwnProperty("idl")||(t.dataset.idl="");const n=t.closest("[data-dfn-for]");t!==n&&n?.dataset.dfnFor&&(t.dataset.dfnFor=n.dataset.dfnFor);if(!t.dataset.dfnFor){const n=ls`Use a ${"[data-dfn-for]"} attribute to associate this dfn with a WebIDL interface.`;ns(`Internal slot "${e}" must be associated with a WebIDL interface.`,pc,{hint:n,elements:[t]})}t.matches(".export, [data-export]")||(t.dataset.noexport="");const r=e.endsWith(")")?"method":"attribute";if(!t.dataset.dfnType)return r;const s=["attribute","method"],{dfnType:i}=t.dataset;if(!s.includes(i)||r!==i){const n=ls`Invalid ${"[data-dfn-type]"} attribute on internal slot.`,i=`The only allowed types are: ${os(s,{quotes:!0})}. The slot "${e}" seems to be a "${is(r)}"?`;return ns(n,pc,{hint:i,elements:[t]}),"dfn"}return i}(t,e)}if(!n&&!e.matches("[data-dfn-type]")){const t=e.closest("[data-dfn-type]");n=t?.dataset.dfnType??""}n&&!e.dataset.dfnType&&(e.dataset.dfnType=n)}function gc(e){switch(!0){case e.matches(".export.no-export"):ns(ls`Declares both "${"[no-export]"}" and "${"[export]"}" CSS class.`,pc,{elements:[e],hint:"Please use only one."});break;case e.matches(".no-export, [data-noexport]"):if(e.matches("[data-export]")){ns(ls`Declares ${"[no-export]"} CSS class, but also has a "${"[data-export]"}" attribute.`,pc,{elements:[e],hint:"Please chose only one."}),delete e.dataset.export}e.dataset.noexport="";break;case e.matches(":is(.export):not([data-noexport], .no-export)"):e.dataset.export="";break;case function(e){return!e.matches(".export, [data-export]")&&e.closest("section.informative, section.normative")?.classList.contains("informative")}(e):e.dataset.noexport=""}}var bc=Object.freeze({__proto__:null,name:pc,run:function(){for(const e of document.querySelectorAll("dfn")){const t=Br(e);if(dc(e,t),e.dataset.cite&&/\b#\b/.test(e.dataset.cite))continue;const[n]=t;mc(e,n),gc(e);const r=(e.dataset.localLt||"").split("|").map(Nr),s=t.filter((e=>!r.includes(e)));(s.length>1||n!==Nr(e.textContent))&&(e.dataset.lt=s.join("|"))}}});var yc=Object.freeze({__proto__:null,name:"core/pluralize",run:function(e){if(!e.pluralize)return;const t=function(){const e=new Set;document.querySelectorAll("a:not([href])").forEach((t=>{const n=Nr(t.textContent).toLowerCase();e.add(n),t.dataset.lt&&e.add(t.dataset.lt)}));const t=new Set,n=document.querySelectorAll("dfn:not([data-lt-noDefault])");return n.forEach((e=>{const n=Nr(e.textContent).toLowerCase();t.add(n),e.dataset.lt&&e.dataset.lt.split("|").forEach((e=>t.add(e))),e.dataset.localLt&&e.dataset.localLt.split("|").forEach((e=>t.add(e)))})),function(n){const r=Nr(n).toLowerCase(),s=cr.isSingular(r)?cr.plural(r):cr.singular(r);return e.has(s)&&!t.has(s)?s:""}}();document.querySelectorAll("dfn:not([data-lt-no-plural]):not([data-lt-noDefault])").forEach((e=>{const n=[e.textContent];e.dataset.lt&&n.push(...e.dataset.lt.split("|")),e.dataset.localLt&&n.push(...e.dataset.localLt.split("|"));const r=new Set(n.map(t).filter((e=>e)));if(r.size){const t=e.dataset.plurals?e.dataset.plurals.split("|"):[],n=[...new Set([...t,...r])];e.dataset.plurals=n.join("|"),dc(e,n)}}))}});var wc=String.raw`span.example-title{text-transform:none}
:is(aside,div).example,div.illegal-example{padding:.5em;margin:1em 0;position:relative;clear:both}
div.illegal-example{color:red}
div.illegal-example p{color:#000}
-aside.example div.example{border-left-width:.1em;border-color:#999;background:#fff}`;const wc=Nr({en:{example:"Example"},nl:{example:"Voorbeeld"},es:{example:"Ejemplo"},ko:{example:"예시"},ja:{example:"例"},de:{example:"Beispiel"},zh:{example:"例"},cs:{example:"Příklad"}});function vc(e,t,n){n.title=e.title,n.title&&e.removeAttribute("title");const r=t>0?` ${t}`:"",s=n.title?sr`: ${n.title}`:"";return sr`
`;Fr(a,"example",r||String(t));a.querySelector("a.self-link").href=`#${a.id}`,e.replaceWith(a)}}))}});var xc=String.raw`.issue-label{text-transform:initial}
.warning>p:first-child{margin-top:0}
.warning{padding:.5em;border-left-width:.5em;border-left-style:solid}
span.warning{padding:.1em .5em .15em}
@@ -895,31 +904,31 @@ span.warning{padding:.1em .5em .15em}
.warning-title:before{content:"⚠";font-size:1.3em;float:left;padding-right:.3em;margin-top:-.3em}
li.task-list-item{list-style:none}
input.task-list-item-checkbox{margin:0 .35em .25em -1.6em;vertical-align:middle}
-.issue a.respec-gh-label{padding:5px;margin:0 2px 0 2px;font-size:10px;text-transform:none;text-decoration:none;font-weight:700;border-radius:4px;position:relative;bottom:2px;border:none;display:inline-block}`;const xc="core/issues-notes",Cc=Nr({en:{editors_note:"Editor's note",feature_at_risk:"(Feature at Risk) Issue",issue:"Issue",issue_summary:"Issue summary",no_issues_in_spec:"There are no issues listed in this specification.",note:"Note",warning:"Warning"},ja:{note:"注",editors_note:"編者注",feature_at_risk:"(変更の可能性のある機能) Issue",issue:"Issue",issue_summary:"Issue の要約",no_issues_in_spec:"この仕様には未解決の issues は含まれていません.",warning:"警告"},nl:{editors_note:"Redactionele noot",issue_summary:"Lijst met issues",no_issues_in_spec:"Er zijn geen problemen vermeld in deze specificatie.",note:"Noot",warning:"Waarschuwing"},es:{editors_note:"Nota de editor",issue:"Cuestión",issue_summary:"Resumen de la cuestión",note:"Nota",no_issues_in_spec:"No hay problemas enumerados en esta especificación.",warning:"Aviso"},de:{editors_note:"Redaktioneller Hinweis",issue:"Frage",issue_summary:"Offene Fragen",no_issues_in_spec:"Diese Spezifikation enthält keine offenen Fragen.",note:"Hinweis",warning:"Warnung"},zh:{editors_note:"编者注",feature_at_risk:"(有可能变动的特性)Issue",issue:"Issue",issue_summary:"Issue 总结",no_issues_in_spec:"本规范中未列出任何 issue。",note:"注",warning:"警告"},cs:{editors_note:"Poznámka editora",feature_at_risk:"(Funkce v ohrožení) Problém",issue:"Problém",issue_summary:"Souhrn problémů",no_issues_in_spec:"V této specifikaci nejsou uvedeny žádné problémy.",note:"Poznámka",warning:"Varování"}});function Sc(e,t,n){const r=function(){if(document.querySelector(".issue[data-number]"))return e=>{if(e.dataset.number)return Number(e.dataset.number)};let e=0;return t=>{if(t.classList.contains("issue")&&"span"!==t.localName)return++e}}(),s=document.createElement("ul");e.forEach((e=>{const{type:i,displayType:o,isFeatureAtRisk:a}=function(e){const t=e.classList.contains("issue"),n=e.classList.contains("warning"),r=e.classList.contains("ednote"),s=e.classList.contains("atrisk"),i=t?"issue":n?"warning":r?"ednote":"note",o=t?s?Cc.feature_at_risk:Cc.issue:n?Cc.warning:r?Cc.editors_note:Cc.note;return{type:i,displayType:o,isFeatureAtRisk:s}}(e),c="issue"===i,l="span"===e.localName,{number:u}=e.dataset,d={title:e.title,number:r(e)};if(!l){const r=sr``,l=document.createElement("span"),p=sr`
${l}
`;Wr(p,"h",i);let h,f=o;if(e.id?(r.id=e.id,e.removeAttribute("id")):Wr(r,"issue-container",d.number?`number-${d.number}`:""),c){if(void 0!==d.number&&(f+=` ${d.number}`),e.dataset.hasOwnProperty("number")){const e=function(e,t,{isFeatureAtRisk:n=!1}={}){if(!n&&t.issueBase)return sr``;if(n&&t.atRiskBase)return sr``}(u??"",n,{isFeatureAtRisk:a});if(e&&(l.before(e),e.append(l)),l.classList.add("issue-number"),h=t.get(u??""),!h){ns(`Failed to fetch issue number ${u}.`,xc)}h&&!d.title&&(d.title=h.title)}s.append(function(e,t,n){const r=`${e}${t.number?` ${t.number}`:""}`,s=t.title?sr`: ${t.title}`:"";return sr`
`),n&&t.appendChild(n));else if(t){ns("Using best practices summary (#bp-summary) but no best practices found.",Tc),t.remove()}}});const Pc="core/figures",Nc=Nr({en:{list_of_figures:"List of Figures",fig:"Figure "},ja:{fig:"図 ",list_of_figures:"図のリスト"},ko:{fig:"그림 ",list_of_figures:"그림 목록"},nl:{fig:"Figuur ",list_of_figures:"Lijst met figuren"},es:{fig:"Figura ",list_of_figures:"Lista de Figuras"},zh:{fig:"图 ",list_of_figures:"规范中包含的图"},de:{fig:"Abbildung",list_of_figures:"Abbildungsverzeichnis"}});var Ic=Object.freeze({__proto__:null,name:Pc,run:function(){const e=function(){const e=[];return document.querySelectorAll("figure").forEach(((t,n)=>{const r=t.querySelector("figcaption");if(r)!function(e,t,n){const r=t.textContent;Wr(e,"fig",r),Gr(t,sr``),t.prepend(sr`${Nc.fig}${n+1}`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);return n.querySelectorAll("a").forEach((e=>{Br(e,"span").removeAttribute("href")})),sr`
`),n&&t.appendChild(n));else if(t){rs("Using best practices summary (#bp-summary) but no best practices found.",Rc),t.remove()}}});const Nc="core/figures",Ic=Ir({en:{list_of_figures:"List of Figures",fig:"Figure "},ja:{fig:"図 ",list_of_figures:"図のリスト"},ko:{fig:"그림 ",list_of_figures:"그림 목록"},nl:{fig:"Figuur ",list_of_figures:"Lijst met figuren"},es:{fig:"Figura ",list_of_figures:"Lista de Figuras"},fr:{list_of_figures:"Liste des figures",fig:"Figure "},zh:{fig:"图 ",list_of_figures:"规范中包含的图"},de:{fig:"Abbildung",list_of_figures:"Abbildungsverzeichnis"}});var Dc=Object.freeze({__proto__:null,name:Nc,run:function(){const e=function(){const e=[];return document.querySelectorAll("figure").forEach(((t,n)=>{const r=t.querySelector("figcaption");if(r)!function(e,t,n){const r=t.textContent;Fr(e,"fig",r),Vr(t,sr``),t.prepend(sr`${Ic.fig}${n+1}`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);return n.querySelectorAll("a").forEach((e=>{Hr(e,"span").removeAttribute("href")})),sr`
`}(t.id,r));else{ns("Found a `` without a ``.",Pc,{elements:[t]})}})),e}(),t=document.getElementById("tof");e.length&&t&&(!function(e){if(e.classList.contains("appendix")||e.classList.contains("introductory")||e.closest("section"))return;const t=Vr(e);t.every((e=>e.classList.contains("introductory")))?e.classList.add("introductory"):t.some((e=>e.classList.contains("appendix")))&&e.classList.add("appendix")}(t),t.append(sr`
${Nc.list_of_figures}
`,sr`
+ `}(t.id,r));else{rs("Found a `` without a ``.",Nc,{elements:[t]})}})),e}(),t=document.getElementById("tof");e.length&&t&&(!function(e){if(e.classList.contains("appendix")||e.classList.contains("introductory")||e.closest("section"))return;const t=Jr(e);t.every((e=>e.classList.contains("introductory")))?e.classList.add("introductory"):t.some((e=>e.classList.contains("appendix")))&&e.classList.add("appendix")}(t),t.append(sr`
${Ic.list_of_figures}
`,sr`
${e}
-
`))}});const Dc=Nr({en:{list_of_tables:"List of Tables",table:"Table "}});var Oc=Object.freeze({__proto__:null,name:"core/tables",run:function(){const e=function(){const e=[],t=document.querySelectorAll("table.numbered");return[...t].filter((e=>!!e.querySelector("caption"))).forEach(((t,n)=>{const r=t.querySelector("caption");r&&(!function(e,t,n){const r=t.textContent;Wr(e,"table",r),Gr(t,sr``),t.prepend(sr`${Dc.table}${n+1}`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);for(const e of n.querySelectorAll("a"))Br(e,"span",{copyAttributes:!1});return sr`
+
`))}});const Oc=Ir({en:{list_of_tables:"List of Tables",table:"Table "},fr:{list_of_tables:"Liste des tables",table:"Table "}});var jc=Object.freeze({__proto__:null,name:"core/tables",run:function(){const e=function(){const e=[],t=document.querySelectorAll("table.numbered");return[...t].filter((e=>!!e.querySelector("caption"))).forEach(((t,n)=>{const r=t.querySelector("caption");r&&(!function(e,t,n){const r=t.textContent;Fr(e,"table",r),Vr(t,sr``),t.prepend(sr`${Oc.table}${n+1}`," ")}(t,r,n),e.push(function(e,t){const n=t.cloneNode(!0);for(const e of n.querySelectorAll("a"))Hr(e,"span",{copyAttributes:!1});return sr`
` block.'})}}(e,r,s))),a=document.body,c=s.definitions,a.querySelectorAll("[data-cddl-pending]").forEach((e=>{const t=`cddl-type:${e.dataset.cddlPending}`;if(c.has(t)){const n=c.get(t);if(!n)return;const r=a.ownerDocument.createElement("a");r.href=`#${n.id}`,r.className="cddl-name",r.dataset.linkType="cddl-type",r.textContent=e.textContent,e.replaceWith(r)}})),document.querySelectorAll("[data-cddl-pending]").forEach((e=>{ns(`No CDDL definition found for \`${e.getAttribute("data-cddl-pending")}\`.`,cl,{elements:[e],hint:"Check for typos in the type name."})})),function(e,t){e.querySelectorAll('a[data-link-type^="cddl-"]:not([href]):not([data-cite])').forEach((e=>{const n=e.getAttribute("data-link-type"),r=e.getAttribute("data-xref-for")||e.getAttribute("data-link-for")||"",s=e.textContent.trim();if("cddl-type"!==n&&"cddl-key"!==n&&"cddl-value"!==n)return;const i={"cddl-type":`cddl-type:${s}`,"cddl-key":`cddl-key:${r}/${s}`,"cddl-value":`cddl-value:${r}/${s}`}[n];if(t.has(i)){const n=t.get(i);if(!n)return;e.setAttribute("href",`#${n.id}`),e.classList.add("internalDFN")}else ns(`CDDL ${n}: no definition found for \`${s}\`${r?`, for \`${r}\`,`:""} in any \`
` block.'})}}(e,r,s))),a=document.body,c=s.definitions,a.querySelectorAll("[data-cddl-pending]").forEach((e=>{const t=`cddl-type:${e.dataset.cddlPending}`;if(c.has(t)){const n=c.get(t);if(!n)return;const r=a.ownerDocument.createElement("a");r.href=`#${n.id}`,r.className="cddl-name",r.dataset.linkType="cddl-type",r.textContent=e.textContent,e.replaceWith(r)}})),document.querySelectorAll("[data-cddl-pending]").forEach((e=>{rs(`No CDDL definition found for \`${e.getAttribute("data-cddl-pending")}\`.`,ll,{elements:[e],hint:"Check for typos in the type name."})})),function(e,t){e.querySelectorAll('a[data-link-type^="cddl-"]:not([href]):not([data-cite])').forEach((e=>{const n=e.getAttribute("data-link-type"),r=e.getAttribute("data-xref-for")||e.getAttribute("data-link-for")||"",s=e.textContent.trim();if("cddl-type"!==n&&"cddl-key"!==n&&"cddl-value"!==n)return;const i={"cddl-type":`cddl-type:${s}`,"cddl-key":`cddl-key:${r}/${s}`,"cddl-value":`cddl-value:${r}/${s}`}[n];if(t.has(i)){const n=t.get(i);if(!n)return;e.setAttribute("href",`#${n.id}`),e.classList.add("internalDFN")}else rs(`CDDL ${n}: no definition found for \`${s}\`${r?`, for \`${r}\`,`:""} in any \`
`;e.append(r);for(const e of r.querySelectorAll(".index-term"))Wr(e,"index-term");ps("toc",su,{once:!0}),ps("beforesave",lu)}});const du="core/contrib";var pu=Object.freeze({__proto__:null,name:du,run:async function(e){if(!document.getElementById("gh-contributors"))return;if(!e.github){return void ts(cs`Requested list of contributors from GitHub, but ${"[github]"} configuration option is not set.`,du)}const t=(e.editors??[]).map((e=>e.name)),n=`${e.github.apiBase}/${e.github.fullName}/`;await async function(e,t){const n=document.getElementById("gh-contributors");if(!n)return;n.textContent="Fetching list of contributors...";const r=await s();null!==r?function(e,t){const n=e.sort(((e,t)=>{const n=e.name||e.login,r=t.name||t.login;return n.toLowerCase().localeCompare(r.toLowerCase())}));if("UL"===t.tagName)return void sr(t)`${n.map((({name:e,login:t})=>`
`))}`;const r=n.map((e=>e.name||e.login));t.textContent=Er(r)}(r,n):n.textContent="Failed to fetch contributors.";async function s(){const{href:n}=new URL("contributors",t);try{const t=await jr(n);if(!t.ok)throw new Error(`Request to ${n} failed with status code ${t.status}`);return(await t.json()).filter((t=>!e.includes(t.name||t.login)&&!t.login.includes("[bot]")))}catch(e){return ts("Error loading contributors from GitHub.",du,{cause:e}),null}}}(t,n)}});var hu=Object.freeze({__proto__:null,name:"core/fix-headers",run:function(){[...document.querySelectorAll("section:not(.introductory)")].map((e=>e.querySelector("h1, h2, h3, h4, h5, h6"))).filter((e=>null!==e)).forEach((e=>{const t=Math.min(function(e,t){const n=[];for(;e&&e!=e.ownerDocument.body;)e.matches(t)&&n.push(e),e=e.parentElement;return n}(e,"section").length+1,6);Br(e,`h${t}`)}))}});var fu=Object.freeze({__proto__:null,name:"core/webidl-index",run:function(){const e=document.querySelector("section#idl-index");if(!e)return;const t=[2,3,4,5,6].map((e=>`h${e}:first-child`)).join(",");if(!e.querySelector(t)){const t=document.createElement("h2");e.title?(t.textContent=e.title,e.removeAttribute("title")):t.textContent="IDL Index",e.prepend(t)}const n=Array.from(document.querySelectorAll("pre.idl:not(.exclude) > code")).filter((e=>!e.closest(xr)));if(0===n.length){const t="This specification doesn't normatively declare any Web IDL.";return void e.append(t)}const r=document.createElement("pre");r.classList.add("idl","def"),r.id="actual-idl-index",n.map((e=>{const t=document.createDocumentFragment();for(const n of e.children)t.appendChild(n.cloneNode(!0));return t})).forEach((e=>{r.lastChild&&r.append("\n\n"),r.appendChild(e)})),r.querySelectorAll("*[id]").forEach((e=>e.removeAttribute("id"))),e.appendChild(r),Gr(r,document.createElement("code")),il(r)}});function mu(e,t){const n=document.createElement("pre");n.classList.add("cddl","def","highlight"),t&&(n.id=t);const r=document.createElement("code");return e.map((e=>{const t=document.createDocumentFragment();return e.childNodes.forEach((e=>t.appendChild(e.cloneNode(!0)))),t})).forEach((e=>{r.lastChild&&r.append("\n\n"),r.appendChild(e)})),r.querySelectorAll("*[id]").forEach((e=>e.removeAttribute("id"))),r.querySelectorAll("dfn").forEach((e=>{const t=Br(e,"span");t.removeAttribute("data-export");for(const e of[...t.attributes])e.name.startsWith("data-dfn")&&t.removeAttribute(e.name)})),n.append(r),n}var gu=Object.freeze({__proto__:null,name:"core/cddl-index",run:function(){const e=document.querySelector("section#cddl-index");if(!e)return;if(!e.querySelector(":scope > :is(h2, h3, h4, h5, h6):first-child")){const t=document.createElement("h2");e.title?(t.textContent=e.title,e.removeAttribute("title")):t.textContent="CDDL Index",e.prepend(t)}const t=Array.from(document.querySelectorAll("pre.cddl:not(.exclude) > code")).filter((e=>!e.closest(xr)));if(0===t.length){const t="This specification doesn't normatively declare any CDDL.";return void e.append(t)}const n=new Map;for(const e of t){const t=e.closest("pre"),r=t?.dataset.cddlModule||"";let s=n.get(r);s||(s=[],n.set(r,s)),s.push(e)}n.size>1||1===n.size&&!n.has("")?n.forEach(((t,n)=>{const r=document.createElement("section"),s=document.createElement("h3"),i=n||"Default";s.textContent=`Module: ${i}`,n&&(s.id=`cddl-index-module-${n.toLowerCase().replace(/[^a-z0-9]+/g,"-")}`),r.append(s),r.append(mu(t)),e.append(r)})):e.append(mu(t,"actual-cddl-index"))}});const bu=["h2","h3","h4","h5","h6"],yu="core/structure",wu=Nr({en:{toc:"Table of Contents",back_to_top:"Back to Top"},zh:{toc:"内容大纲",back_to_top:"返回顶部"},ko:{toc:"목차",back_to_top:"맨 위로"},ja:{toc:"目次",back_to_top:"先頭に戻る"},nl:{toc:"Inhoudsopgave",back_to_top:"Terug naar boven"},es:{toc:"Tabla de Contenidos",back_to_top:"Volver arriba"},de:{toc:"Inhaltsverzeichnis",back_to_top:"Zurück nach oben"},cs:{toc:"Obsah",back_to_top:"Zpět na začátek"}});function vu(e,t,{prefix:n=""}={}){let r=!1,s=0,i=1;if(n.length&&!n.endsWith(".")&&(n+="."),0===e.length)return null;const o=sr``;for(const a of e){!a.isAppendix||n||r||(s=i,r=!0);let e=a.isIntro?"":r?ku(i-s+1):n+i;const c=e.split(".").length;if(1===c&&(e+=".",a.header.before(document.createComment("OddPage"))),a.isIntro||(i+=1,a.header.prepend(sr`${e} `)),c<=t){const n=a.header.id||a.element.id,r=xu(a.header,n),s=vu(a.subsections,t,{prefix:e});s&&r.append(s),o.append(r)}}return o}function ku(e){let t="";for(;e>0;)e-=1,t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26);return t}function $u(e){const t=e.querySelectorAll(":scope > section"),n=[];for(const e of t){const t=e.classList.contains("notoc");if(!e.children.length||t)continue;const r=e.children[0];if(!bu.includes(r.localName))continue;const s=r.textContent;Wr(e,void 0,s),n.push({element:e,header:r,title:s,isIntro:Boolean(e.closest(".introductory")),isAppendix:e.classList.contains("appendix"),subsections:$u(e)})}return n}function xu(e,t){const n=sr``;var r;return n.append(...e.cloneNode(!0).childNodes),(r=n).querySelectorAll("a").forEach((e=>{const t=Br(e,"span");t.className="formerLink",t.removeAttribute("href")})),r.querySelectorAll("dfn").forEach((e=>{Br(e,"span").removeAttribute("id")})),sr`
${n}
`}var Cu=Object.freeze({__proto__:null,name:yu,run:function(e){if("maxTocLevel"in e==!1&&(e.maxTocLevel=1/0),function(){const e=[...document.querySelectorAll("section:not(.introductory) :is(h1,h2,h3,h4,h5,h6):first-child")].filter((e=>!e.closest("section.introductory")));if(!e.length)return;e.forEach((e=>{const t=Math.min(function(e,t){const n=[];let r=e.parentElement;for(;r;){const e=r.closest(t);if(!e)break;n.push(e),r=e.parentElement}return n}(e,"section").length+1,6),n=`h${t}`;e.localName!==n&&Br(e,n)}))}(),!e.noTOC){!function(){const e=document.querySelectorAll("section[data-max-toc]");for(const t of e){const e=parseInt(t.dataset.maxToc??"",10);if(e<0||e>6||Number.isNaN(e)){ts("`data-max-toc` must have a value between 0-6 (inclusive).",yu,{elements:[t]});continue}if(0===e){t.classList.add("notoc");continue}const n=t.querySelectorAll(`:scope > ${Array.from({length:e},(()=>"section")).join(" > ")}`);for(const e of n)e.classList.add("notoc")}}();const t=vu($u(document.body),e.maxTocLevel);t&&function(e){if(!e)return;const t=sr``,n=sr`
`;document.body.append(s)}(t)}ds("toc",void 0)}});const Su=Nr({en:{informative:"This section is non-normative."},nl:{informative:"Dit onderdeel is niet-normatief."},ko:{informative:"이 부분은 비규범적입니다."},ja:{informative:"この節は仕様には含まれません."},de:{informative:"Dieser Abschnitt ist nicht normativ."},zh:{informative:"本章节不包含规范性内容。"},cs:{informative:"Tato sekce není normativní."}});var _u=Object.freeze({__proto__:null,name:"core/informative",run:function(){Array.from(document.querySelectorAll("section.informative")).map((e=>e.querySelector("h2, h3, h4, h5, h6"))).filter((e=>null!==e)).forEach((e=>{e.after(sr`
`))}`;const r=n.map((e=>e.name||e.login));t.textContent=Lr(r)}(r,n):n.textContent="Failed to fetch contributors.";async function s(){const{href:n}=new URL("contributors",t);try{const t=await zr(n);if(!t.ok)throw new Error(`Request to ${n} failed with status code ${t.status}`);return(await t.json()).filter((t=>!e.includes(t.name||t.login)&&!t.login.includes("[bot]")))}catch(e){return ns("Error loading contributors from GitHub.",pu,{cause:e}),null}}}(t,n)}});var fu=Object.freeze({__proto__:null,name:"core/fix-headers",run:function(){[...document.querySelectorAll("section:not(.introductory)")].map((e=>e.querySelector("h1, h2, h3, h4, h5, h6"))).filter((e=>null!==e)).forEach((e=>{const t=Math.min(function(e,t){const n=[];for(;e&&e!=e.ownerDocument.body;)e.matches(t)&&n.push(e),e=e.parentElement;return n}(e,"section").length+1,6);Hr(e,`h${t}`)}))}});var mu=Object.freeze({__proto__:null,name:"core/webidl-index",run:function(){const e=document.querySelector("section#idl-index");if(!e)return;const t=[2,3,4,5,6].map((e=>`h${e}:first-child`)).join(",");if(!e.querySelector(t)){const t=document.createElement("h2");e.title?(t.textContent=e.title,e.removeAttribute("title")):t.textContent="IDL Index",e.prepend(t)}const n=Array.from(document.querySelectorAll("pre.idl:not(.exclude) > code")).filter((e=>!e.closest(Cr)));if(0===n.length){const t="This specification doesn't normatively declare any Web IDL.";return void e.append(t)}const r=document.createElement("pre");r.classList.add("idl","def"),r.id="actual-idl-index",n.map((e=>{const t=document.createDocumentFragment();for(const n of e.children)t.appendChild(n.cloneNode(!0));return t})).forEach((e=>{r.lastChild&&r.append("\n\n"),r.appendChild(e)})),r.querySelectorAll("*[id]").forEach((e=>e.removeAttribute("id"))),e.appendChild(r),Vr(r,document.createElement("code")),ol(r)}});function gu(e,t){const n=document.createElement("pre");n.classList.add("cddl","def","highlight"),t&&(n.id=t);const r=document.createElement("code");return e.map((e=>{const t=document.createDocumentFragment();return e.childNodes.forEach((e=>t.appendChild(e.cloneNode(!0)))),t})).forEach((e=>{r.lastChild&&r.append("\n\n"),r.appendChild(e)})),r.querySelectorAll("*[id]").forEach((e=>e.removeAttribute("id"))),r.querySelectorAll("dfn").forEach((e=>{const t=Hr(e,"span");t.removeAttribute("data-export");for(const e of[...t.attributes])e.name.startsWith("data-dfn")&&t.removeAttribute(e.name)})),n.append(r),n}var bu=Object.freeze({__proto__:null,name:"core/cddl-index",run:function(){const e=document.querySelector("section#cddl-index");if(!e)return;if(!e.querySelector(":scope > :is(h2, h3, h4, h5, h6):first-child")){const t=document.createElement("h2");e.title?(t.textContent=e.title,e.removeAttribute("title")):t.textContent="CDDL Index",e.prepend(t)}const t=Array.from(document.querySelectorAll("pre.cddl:not(.exclude) > code")).filter((e=>!e.closest(Cr)));if(0===t.length){const t="This specification doesn't normatively declare any CDDL.";return void e.append(t)}const n=new Map;for(const e of t){const t=e.closest("pre"),r=t?.dataset.cddlModule||"";let s=n.get(r);s||(s=[],n.set(r,s)),s.push(e)}n.size>1||1===n.size&&!n.has("")?n.forEach(((t,n)=>{const r=document.createElement("section"),s=document.createElement("h3"),i=n||"Default";s.textContent=`Module: ${i}`,n&&(s.id=`cddl-index-module-${n.toLowerCase().replace(/[^a-z0-9]+/g,"-")}`),r.append(s),r.append(gu(t)),e.append(r)})):e.append(gu(t,"actual-cddl-index"))}});const yu=["h2","h3","h4","h5","h6"],wu="core/structure",vu=Ir({en:{toc:"Table of Contents",back_to_top:"Back to Top"},zh:{toc:"内容大纲",back_to_top:"返回顶部"},ko:{toc:"목차",back_to_top:"맨 위로"},ja:{toc:"目次",back_to_top:"先頭に戻る"},nl:{toc:"Inhoudsopgave",back_to_top:"Terug naar boven"},es:{toc:"Tabla de Contenidos",back_to_top:"Volver arriba"},fr:{toc:"Table des matières",back_to_top:"Retourner en haut"},de:{toc:"Inhaltsverzeichnis",back_to_top:"Zurück nach oben"},cs:{toc:"Obsah",back_to_top:"Zpět na začátek"}});function ku(e,t,{prefix:n=""}={}){let r=!1,s=0,i=1;if(n.length&&!n.endsWith(".")&&(n+="."),0===e.length)return null;const o=sr``;for(const a of e){!a.isAppendix||n||r||(s=i,r=!0);let e=a.isIntro?"":r?$u(i-s+1):n+i;const c=e.split(".").length;if(1===c&&(e+=".",a.header.before(document.createComment("OddPage"))),a.isIntro||(i+=1,a.header.prepend(sr`${e} `)),c<=t){const n=a.header.id||a.element.id,r=Cu(a.header,n),s=ku(a.subsections,t,{prefix:e});s&&r.append(s),o.append(r)}}return o}function $u(e){let t="";for(;e>0;)e-=1,t=String.fromCharCode(65+e%26)+t,e=Math.floor(e/26);return t}function xu(e){const t=e.querySelectorAll(":scope > section"),n=[];for(const e of t){const t=e.classList.contains("notoc");if(!e.children.length||t)continue;const r=e.children[0];if(!yu.includes(r.localName))continue;const s=r.textContent;Fr(e,void 0,s),n.push({element:e,header:r,title:s,isIntro:Boolean(e.closest(".introductory")),isAppendix:e.classList.contains("appendix"),subsections:xu(e)})}return n}function Cu(e,t){const n=sr``;var r;return n.append(...e.cloneNode(!0).childNodes),(r=n).querySelectorAll("a").forEach((e=>{const t=Hr(e,"span");t.className="formerLink",t.removeAttribute("href")})),r.querySelectorAll("dfn").forEach((e=>{Hr(e,"span").removeAttribute("id")})),sr`
${n}
`}var Su=Object.freeze({__proto__:null,name:wu,run:function(e){if("maxTocLevel"in e==!1&&(e.maxTocLevel=1/0),function(){const e=[...document.querySelectorAll("section:not(.introductory) :is(h1,h2,h3,h4,h5,h6):first-child")].filter((e=>!e.closest("section.introductory")));if(!e.length)return;e.forEach((e=>{const t=Math.min(function(e,t){const n=[];let r=e.parentElement;for(;r;){const e=r.closest(t);if(!e)break;n.push(e),r=e.parentElement}return n}(e,"section").length+1,6),n=`h${t}`;e.localName!==n&&Hr(e,n)}))}(),!e.noTOC){!function(){const e=document.querySelectorAll("section[data-max-toc]");for(const t of e){const e=parseInt(t.dataset.maxToc??"",10);if(e<0||e>6||Number.isNaN(e)){ns("`data-max-toc` must have a value between 0-6 (inclusive).",wu,{elements:[t]});continue}if(0===e){t.classList.add("notoc");continue}const n=t.querySelectorAll(`:scope > ${Array.from({length:e},(()=>"section")).join(" > ")}`);for(const e of n)e.classList.add("notoc")}}();const t=ku(xu(document.body),e.maxTocLevel);t&&function(e){if(!e)return;const t=sr``,n=sr`
`;document.body.append(s)}(t)}ps("toc",void 0)}});const _u=Ir({en:{informative:"This section is non-normative."},nl:{informative:"Dit onderdeel is niet-normatief."},ko:{informative:"이 부분은 비규범적입니다."},ja:{informative:"この節は仕様には含まれません."},de:{informative:"Dieser Abschnitt ist nicht normativ."},zh:{informative:"本章节不包含规范性内容。"},cs:{informative:"Tato sekce není normativní."},fr:{informative:"Cette section est non normative."}});var Tu=Object.freeze({__proto__:null,name:"core/informative",run:function(){Array.from(document.querySelectorAll("section.informative")).map((e=>e.querySelector("h2, h3, h4, h5, h6"))).filter((e=>null!==e)).forEach((e=>{e.after(sr`
`;s.append(n,i)}}});var Lu=String.raw`.caniuse-stats{display:flex;column-gap:2em}
.caniuse-group{display:flex;flex:1;flex-direction:column;justify-content:flex-end;flex-basis:auto}
.caniuse-browsers{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;margin-top:.2em;column-gap:.4em;border-bottom:1px solid #ccc;row-gap:.4em;padding-bottom:.4cm}
.caniuse-type{align-self:center;border-top:none;text-transform:capitalize;font-size:.8em;margin-top:-.8em;font-weight:700}
@@ -1112,12 +1121,12 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
.caniuse-cell.y::before{content:"✔️";padding:.5em}
.caniuse-cell.n::before{content:"❌";padding:.5em}
.caniuse-cell:is(.a,.d,.p,.x,.u)::before{content:"⚠️";padding:.5em}
-}`;const Lu="core/caniuse",Au="https://respec.org/caniuse/",Pu=new Map([["and_chr",{name:"Android Chrome",path:"chrome",type:"mobile"}],["and_ff",{name:"Android Firefox",path:"firefox",type:"mobile"}],["and_uc",{name:"Android UC",path:"uc",type:"mobile"}],["chrome",{name:"Chrome",type:"desktop"}],["edge",{name:"Edge",type:"desktop"}],["firefox",{name:"Firefox",type:"desktop"}],["ios_saf",{name:"iOS Safari",path:"safari-ios",type:"mobile"}],["op_mob",{name:"Opera Mobile",path:"opera",type:"mobile"}],["opera",{name:"Opera",type:"desktop"}],["safari",{name:"Safari",type:"desktop"}],["samsung",{name:"Samsung Internet",path:"samsung-internet",type:"mobile"}]]),Nu=new Map([["a","almost supported (aka Partial support)"],["d","disabled by default"],["n","no support, or disabled by default"],["p","no support, but has Polyfill"],["u","unknown support"],["x","requires prefix to work"],["y","supported by default"]]);var Iu=Object.freeze({__proto__:null,BROWSERS:Pu,name:Lu,prepare:function(e){if(!e.caniuse)return;!function(e){const t=new Set(Pu.keys());t.delete("op_mob"),t.delete("opera");const n={removeOnSave:!0,browsers:[...t]};if("string"==typeof e.caniuse)return void(e.caniuse={feature:e.caniuse,...n});e.caniuse={...n,...e.caniuse}}(e),function({caniuse:e}){const{browsers:t}=e,n=t.filter((e=>!Pu.has(e)));if(n.length){ns(cs`Invalid browser(s): (${os(n,{quotes:!0})}) in the \`browser\` property of ${"[caniuse]"}.`,Lu)}}(e);const t=e.caniuse;t.feature&&document.head.appendChild(sr``)},run:async function(e){const t=e.caniuse;if(!t?.feature)return;const n=new URL(t.feature,"https://caniuse.com/").href,r=document.querySelector(".head dl"),s=async function(e){const{feature:t,browsers:n,apiURL:r}=e,s=new URL(r||`./${t}`,Au);n.forEach((e=>s.searchParams.append("browsers",e)));const i=await fetch(s);if(!i.ok){const{status:e,statusText:t}=i;throw new Error(`Failed to get caniuse data: (${e}) ${t}`)}return i.json()}(e.caniuse).then((e=>async function(e,{feature:t}){const n=e.result,r=new Map([["desktop",[]],["mobile",[]]]),s=function(e){return(t,{browser:n,version:r,caniuse:s})=>{const i=Pu.get(n),{name:o,type:a}=i??{name:n,type:"desktop"},c=Nu.get(s),l=r||"—",u=r?` version ${r}`:" (version unknown)",d=`${e} is ${c} since ${o}${u} on ${a}.`,p=`caniuse-cell ${s}`,h=(f=`${c} since ${o}${u}.`).charAt(0).toUpperCase()+f.slice(1);var f;const m=function(e){const t=Pu.get(e)?.path??e;return`https://www.w3.org/assets/logos/browser-logos/${t}/${t}.svg`}(n),g=sr`
+ ${Lu}
+ `)},run:async function(e){const t=e.caniuse;if(!t?.feature)return;const n=new URL(t.feature,"https://caniuse.com/").href,r=document.querySelector(".head dl"),s=async function(e){const{feature:t,browsers:n,apiURL:r}=e,s=new URL(r||`./${t}`,Pu);n.forEach((e=>s.searchParams.append("browsers",e)));const i=await fetch(s);if(!i.ok){const{status:e,statusText:t}=i;throw new Error(`Failed to get caniuse data: (${e}) ${t}`)}return i.json()}(e.caniuse).then((e=>async function(e,{feature:t}){const n=e.result,r=new Map([["desktop",[]],["mobile",[]]]),s=function(e){return(t,{browser:n,version:r,caniuse:s})=>{const i=Nu.get(n),{name:o,type:a}=i??{name:n,type:"desktop"},c=Iu.get(s),l=r||"—",u=r?` version ${r}`:" (version unknown)",d=`${e} is ${c} since ${o}${u} on ${a}.`,p=`caniuse-cell ${s}`,h=(f=`${c} since ${o}${u}.`).charAt(0).toUpperCase()+f.slice(1);var f;const m=function(e){const t=Nu.get(e)?.path??e;return`https://www.w3.org/assets/logos/browser-logos/${t}/${t}.svg`}(n),g=sr`
${e}
`));return i.push(sr`More info`),i}(e,t))).catch((e=>function(e,t,n){const r=`Failed to retrieve feature "${t.feature}".`,s=cs`Please check the feature key on [caniuse.com](https://caniuse.com) and update ${"[caniuse]"}.`;return ts(r,Lu,{hint:s,cause:e}),sr`caniuse.com`}(e,t,n))),i=sr`
Browser support:
+ >`),i}(e,t))).catch((e=>function(e,t,n){const r=`Failed to retrieve feature "${t.feature}".`,s=ls`Please check the feature key on [caniuse.com](https://caniuse.com) and update ${"[caniuse]"}.`;return ns(r,Au,{hint:s,cause:e}),sr`caniuse.com`}(e,t,n))),i=sr`
Browser support:
${{any:s,placeholder:"Fetching data from caniuse.com..."}}
-
`;r?.append(...i.childNodes),await s,ds("amend-user-config",{caniuse:t.feature}),t.removeOnSave&&(r?.querySelectorAll(".caniuse-browser").forEach((e=>e.classList.add("removeOnSave"))),ps("beforesave",(e=>{sr.bind(e.querySelector(".caniuse-stats"))`
- caniuse.com`})))}});var Du=String.raw`.baseline-title{display:flex;align-items:center;gap:.4em}
+ `;r?.append(...i.childNodes),await s,ps("amend-user-config",{caniuse:t.feature}),t.removeOnSave&&(r?.querySelectorAll(".caniuse-browser").forEach((e=>e.classList.add("removeOnSave"))),hs("beforesave",(e=>{sr.bind(e.querySelector(".caniuse-stats"))`
+ caniuse.com`})))}});var Ou=String.raw`.baseline-title{display:flex;align-items:center;gap:.4em}
.baseline-icon{width:auto;height:.9em;vertical-align:baseline}
.baseline-status{display:flex;align-items:center;gap:1em}
.baseline-browsers{display:flex;gap:.5em;align-items:center}
@@ -1163,7 +1172,7 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
@media print{
.baseline-pill{background:0 0!important;border:1px solid #ccc}
.baseline-support-icon{color:#333!important}
-}`;const Ou="core/implementation-status",ju="https://respec.org/api/baseline",zu="https://respec.org/api/baseline/search",Mu="https://www.w3.org/assets/logos/browser-logos",Uu=new Map([["chrome",{name:"Chrome",engine:"chromium"}],["edge",{name:"Edge",engine:"chromium"}],["firefox",{name:"Firefox",engine:"gecko"}],["safari",{name:"Safari",engine:"webkit"}]]),qu=new Map([["high","Widely available"],["low","Newly available"],["","Limited availability"]]),Wu=new Map([["",()=>sr`
+}`;const ju="core/implementation-status",zu="https://respec.org/api/baseline",Mu="https://respec.org/api/baseline/search",Uu="https://www.w3.org/assets/logos/browser-logos",qu=new Map([["chrome",{name:"Chrome",engine:"chromium"}],["edge",{name:"Edge",engine:"chromium"}],["firefox",{name:"Firefox",engine:"gecko"}],["safari",{name:"Safari",engine:"webkit"}]]),Wu=new Map([["high","Widely available"],["low","Newly available"],["","Limited availability"]]),Fu=new Map([["",()=>sr`
@@ -1183,7 +1192,7 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
d="m10 0 2 2-2 2-2-2 2-2Zm4 4 2 2-2 2-2-2 2-2Zm16 0 2 2-2 2-2-2 2-2Zm4 4 2 2-2 2-2-2 2-2Zm-4 4 2 2-2 2-2-2 2-2Zm-4 4 2 2-2 2-2-2 2-2Zm-4-4 2 2-2 2-2-2 2-2ZM6 4l2 2-2 2-2-2 2-2Z"
/>
- `]]),Fu={available:()=>sr``]]),Bu={available:()=>sr`
- `},Bu=Map.groupBy(Uu.keys(),(e=>Uu.get(e).engine));function Hu(){return{dt:sr`Implementation status:`,dd:sr`Web Platform Status`,moreInfoUrl:"https://webstatus.dev/"}}function Gu(e){const t=cs`Check the ${"[implementationStatus]"} configuration.`;return ns("Failed to retrieve implementation status data.",Ou,{hint:t,cause:e instanceof Error?e:void 0}),Hu()}async function Vu(e){const t=e.apiURL||ju,n=await jr(t);if(!n.ok)throw new Error(`HTTP ${n.status}: ${n.statusText}`);return n.json()}function Ju(e){return!e.kind||"feature"===e.kind}function Ku(e,t,n){const r=e.features||e;if(n.feature){const e=r[n.feature];return e&&Ju(e)?[{id:n.feature,...e}]:[]}const s=Zu(t);return s.length?Object.entries(r).filter((([,e])=>{if(!Ju(e))return!1;return[e.spec].flat().filter(Boolean).some((e=>{const t=Yu(e);return s.some((e=>t.startsWith(e)))}))})).map((([e,t])=>({id:e,...t}))):[]}function Zu(e){const t=new Set;return e.edDraftURI&&t.add(Yu(e.edDraftURI)),e.shortName&&(t.add(Yu(`https://www.w3.org/TR/${e.shortName}/`)),t.add(Yu(`https://w3c.github.io/${e.shortName}/`))),e.thisVersion&&t.add(Yu(e.thisVersion)),[...t]}function Yu(e){try{const t=new URL(e);return t.hash="",t.pathname.endsWith("/")||t.pathname.includes(".")||(t.pathname+="/"),t.href}catch{return e}}var Xu=Object.freeze({__proto__:null,name:Ou,prepare:function(e){if(!e.implementationStatus)return;!function(e){const t={removeOnSave:!1};if("boolean"==typeof e.implementationStatus)return void(e.implementationStatus={feature:null,...t});if("string"==typeof e.implementationStatus)return void(e.implementationStatus={feature:e.implementationStatus,...t});e.implementationStatus={...t,...e.implementationStatus}}(e);const t=e.implementationStatus;document.head.appendChild(sr``)},run:async function(e){if(!e.implementationStatus)return;const t=e.implementationStatus,n=document.querySelector(".head dl");if(!n)return;const r=async function(e,t){const n=await async function(e,t){if(t.apiURL){return Ku(await Vu(t),e,t)}if(t.feature){const e=`${ju}/${encodeURIComponent(t.feature)}`,n=await jr(e);if(!n.ok){if(404===n.status)return[];throw new Error(`Failed to fetch Baseline data for feature "${t.feature}": HTTP ${n.status}`)}const r=await n.json();return r.split_into?.length?r.split_into.filter(Ju):[{id:t.feature,...r}]}const n=Zu(e);if(!n.length)return[];try{const e=await fetch(zu,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({specs:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);const{result:t}=await e.json();return t||[]}catch(n){console.warn(`[${Ou}] Search endpoint failed, falling back to full dataset`,n);return Ku(await Vu(t),e,t)}}(e,t);if(!n.length){const e=t.feature?`No Baseline data found for feature "${t.feature}".`:"No Baseline data found for this specification.",n=t.feature?"Find feature IDs in [web-features data](https://github.com/web-platform-dx/web-features/blob/main/data.json).":void 0;return ns(e,Ou,{hint:n}),Hu()}const r=function(e){const t=e.map((e=>e.status?.baseline));return t.every((e=>"high"===e))?"high":t.every((e=>"low"===e||"high"===e))?"low":""}(n),s=qu.get(r),i=function(e){const t=new Map;for(const n of Uu.keys()){const r=e.every((e=>null!=e.status?.support?.[n]));t.set(n,r)}return t}(n);return ds("amend-user-config",{implementationStatus:t.feature||!0}),function(e,t,n,r){const s=(Wu.get(e)??Wu.get("")??(()=>sr``))();s.setAttribute("aria-hidden","true");const i=[...Bu.values()].map((e=>{const t=e.map((e=>{const t=Uu.get(e)?.name||e,r=n.get(e),s=r?`${t}: Supported`:`${t}: Not supported`,i=r?Fu.available():Fu.unavailable();return sr``)},run:async function(e){if(!e.implementationStatus)return;const t=e.implementationStatus,n=document.querySelector(".head dl");if(!n)return;const r=async function(e,t){const n=await async function(e,t){if(t.apiURL){return Zu(await Ju(t),e,t)}if(t.feature){const e=`${zu}/${encodeURIComponent(t.feature)}`,n=await zr(e);if(!n.ok){if(404===n.status)return[];throw new Error(`Failed to fetch Baseline data for feature "${t.feature}": HTTP ${n.status}`)}const r=await n.json();return r.split_into?.length?r.split_into.filter(Ku):[{id:t.feature,...r}]}const n=Yu(e);if(!n.length)return[];try{const e=await fetch(Mu,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({specs:n})});if(!e.ok)throw new Error(`HTTP ${e.status}`);const{result:t}=await e.json();return t||[]}catch(n){console.warn(`[${ju}] Search endpoint failed, falling back to full dataset`,n);return Zu(await Ju(t),e,t)}}(e,t);if(!n.length){const e=t.feature?`No Baseline data found for feature "${t.feature}".`:"No Baseline data found for this specification.",n=t.feature?"Find feature IDs in [web-features data](https://github.com/web-platform-dx/web-features/blob/main/data.json).":void 0;return rs(e,ju,{hint:n}),Gu()}const r=function(e){const t=e.map((e=>e.status?.baseline));return t.every((e=>"high"===e))?"high":t.every((e=>"low"===e||"high"===e))?"low":""}(n),s=Wu.get(r),i=function(e){const t=new Map;for(const n of qu.keys()){const r=e.every((e=>null!=e.status?.support?.[n]));t.set(n,r)}return t}(n);return ps("amend-user-config",{implementationStatus:t.feature||!0}),function(e,t,n,r){const s=(Fu.get(e)??Fu.get("")??(()=>sr``))();s.setAttribute("aria-hidden","true");const i=[...Hu.values()].map((e=>{const t=e.map((e=>{const t=qu.get(e)?.name||e,r=n.get(e),s=r?`${t}: Supported`:`${t}: Not supported`,i=r?Bu.available():Bu.unavailable();return sr`${i}
`})),r=e.every((e=>n.get(e)));return sr`${t}`})),o=sr`${i}`,a=1===r.length?r[0]:null,c=a?`https://webstatus.dev/features/${encodeURIComponent(a.id)}`:"https://webstatus.dev/",l=a?.name?`More info about ${a.name} support`:"More info about browser support",u=sr`${t}:${s}`,d=sr`${o}
@@ -1239,12 +1248,12 @@ img.caniuse-browser{filter:drop-shadow(0 0 .1cm #666);background:0 0}
href="${c}"
aria-label="${l}"
>More info`;return{dt:u,dd:d,moreInfoUrl:c}}(r,s,i,n)}(e,t).catch(Gu),s=r.then((e=>e.dt)),i=r.then((e=>e.dd)),o=sr`
`}
- `}var ad=Object.freeze({__proto__:null,name:ed,run:async function(e){const t=function(e){const{shortName:t,mdn:n}=e;if(!n)return;return!0===n?t:"string"==typeof n?n:n.key||t}(e);if(!t)return;const n="object"==typeof e.mdn?e.mdn:{},r=await async function(e,t){const{baseJsonPath:n=td,maxAge:r=864e5}=t,s=new URL(`${e}.json`,n).href,i=await jr(s,r);return 404===i.status?null:await i.json()}(t,n);if(!r){const n=`Could not find MDN data associated with key "${t}".`,r=!0===e.mdn?cs`When using \`mdn: true\`, the key defaults to ${"[shortName]"} ("${t}"). Check that your shortName matches an entry in the [MDN spec links map](https://github.com/w3c/mdn-spec-links/blob/main/SPECMAP.json), or set ${"[mdn]"} to the correct key.`:cs`Search for your spec's URL in the [MDN spec links map](https://github.com/w3c/mdn-spec-links/blob/main/SPECMAP.json) to find the correct key, then set ${"[mdn]"} to it.`;return void ts(n,ed,{hint:r})}const s=document.createElement("style");s.textContent=Qu,document.head.append(s);for(const e of function(e){return[...document.body.querySelectorAll("[id]:not(script)")].filter((({id:t})=>Array.isArray(e[t])))}(r)){const t=r[e.id],n=id(e);if(n)for(const e of t)n.append(od(e))}}});const cd="ui/save-html",ld=Nr({en:{save_snapshot:"Export"},nl:{save_snapshot:"Bewaar Snapshot"},ja:{save_snapshot:"保存する"},de:{save_snapshot:"Exportieren"},zh:{save_snapshot:"导出"}}),ud=[{id:"respec-save-as-html",ext:"html",title:"HTML",type:"text/html",get href(){return ms(this.type)}},{id:"respec-save-as-xml",ext:"xhtml",title:"XML",type:"application/xml",get href(){return ms(this.type)}},{id:"respec-save-as-epub",ext:"epub",title:"EPUB 3",type:"application/epub+zip",get href(){const e=new URL("https://labs.w3.org/r2epub/");return e.searchParams.append("respec","true"),e.searchParams.append("url",document.location.href),e.href}}];var dd=Object.freeze({__proto__:null,exportDocument:function(e,t){return ns("Exporting via ui/save-html module's `exportDocument()` is deprecated and will be removed.",cd,{hint:"Use core/exporter `rsDocToDataURL()` instead."}),ms(t)},name:cd,run:function(e){const t={async show(t){await document.respec.ready;const n=sr`
- `}var Sd=Object.freeze({__proto__:null});var _d=Object.freeze({__proto__:null,name:"core/seo",run:function(e){if(e.gitRevision){const t=sr``;document.head.appendChild(t)}const t=document.querySelector("#abstract p:first-of-type");if(!t)return;const n=t.textContent.replace(/\s+/," ").trim(),r=document.createElement("meta");r.name="description",r.content=n,document.head.appendChild(r)}});const Td="w3c/seo",Rd={NOTE:"w3p:NOTE",WD:"w3p:WD",LC:"w3p:LastCall",CR:"w3p:CR",CRD:"w3p:CRD",PR:"w3p:PR",REC:"w3p:REC",RSCND:"w3p:RSCND"},Ed=new Set([...Mi,...Ui,...qi,"BG-FINAL","CG-FINAL","CRY","DRY","draft-finding","finding"]);function Ld({name:e,url:t,mailto:n,company:r,companyURL:s}){const i={type:"Person",name:e,url:t,"foaf:mbox":n};return(r||s)&&(i.worksFor={name:r,url:s}),i}function Ad(e){const{href:t,title:n,href:r}=e,s={id:t,type:"TechArticle",name:n,url:r};return e.authors&&(s.creator=e.authors.map((e=>({name:e})))),e.rawDate&&(s.publishedDate=e.rawDate),e.isbn&&(s.identifier=e.isbn),e.publisher&&(s.publisher={name:e.publisher}),s}var Pd=Object.freeze({__proto__:null,name:Td,requiresCanonicalLink:Ed,run:async function(e){if((e.canonicalURI||Ed.has(e.specStatus))&&e.shortName){switch(e.canonicalURI){case"edDraft":if(e.edDraftURI)e.canonicalURI=new URL(e.edDraftURI,document.location.href).href;else{ns("Canonical URI set to edDraft, but no edDraftURI is set in configuration",Td),e.canonicalURI=null}break;case"TR":if(e.latestVersion)e.canonicalURI=e.latestVersion;else{ns("Canonical URI set to TR, but no shortName is set in configuration",Td),e.canonicalURI=null}break;default:e.latestVersion&&!e.canonicalURI&&(e.canonicalURI=e.latestVersion)}if(e.canonicalURI){const t=sr``;document.head.appendChild(t)}e.doJsonLd&&await async function(e,t){const n=Rd[e.specStatus],r=["TechArticle"];n&&r.push(n);const s={"@context":["http://schema.org",{"@vocab":"http://schema.org/","@language":t.documentElement.lang||"en",w3p:"http://www.w3.org/2001/02pd/rec54#",foaf:"http://xmlns.com/foaf/0.1/",datePublished:{"@type":"http://www.w3.org/2001/XMLSchema#date"},inLanguage:{"@language":null},isBasedOn:{"@type":"@id"},license:{"@type":"@id"}}],id:e.canonicalURI||e.thisVersion,type:r,name:document.title,inLanguage:t.documentElement.lang||"en",license:e.licenseInfo?.url,datePublished:e.dashDate,copyrightHolder:{name:"World Wide Web Consortium",url:"https://www.w3.org/"},discussionUrl:e.issueBase,alternativeHeadline:e.subtitle,isBasedOn:e.prevVersion};if(e.additionalCopyrightHolders){const t=Array.isArray(e.additionalCopyrightHolders)?e.additionalCopyrightHolders:[e.additionalCopyrightHolders];s.copyrightHolder=[s.copyrightHolder,...t.map((e=>({name:e})))]}const i=t.head.querySelector("meta[name=description]");i&&(s.description=i.content);e.editors&&(s.editor=e.editors.map(Ld));e.authors&&(s.contributor=e.authors.map(Ld));const o=[...e.normativeReferences,...e.informativeReferences],a=await Promise.all(o.map((e=>va(e))));s.citation=a.filter((e=>null!==e&&"object"==typeof e)).map(Ad);const c=t.createElement("script");c.type="application/ld+json",c.textContent=JSON.stringify(s,null,2),t.head.appendChild(c)}(e,document)}}});const Nd="\n --base: #282c34;\n --mono-1: #abb2bf;\n --mono-2: #818896;\n --mono-3: #5c6370;\n --hue-1: #56b6c2;\n --hue-2: #61aeee;\n --hue-3: #c678dd;\n --hue-4: #98c379;\n --hue-5: #e06c75;\n --hue-5-2: #be5046;\n --hue-6: #d19a66;\n --hue-6-2: #e6c07b;\n";var Id=String.raw`.hljs,body:has(input[name=color-scheme][value=light]:checked) .hljs,head:not(:has(meta[name=color-scheme][content~=dark]))+body .hljs{--base:#fafafa;--mono-1:#383a42;--mono-2:#686b77;--mono-3:#717277;--hue-1:#0b76c5;--hue-2:#336ae3;--hue-3:#a626a4;--hue-4:#42803c;--hue-5:#ca4706;--hue-5-2:#c91243;--hue-6:#986801;--hue-6-2:#9a6a01}
+ />`;document.head.appendChild(t)}const t=document.querySelector("#abstract p:first-of-type");if(!t)return;const n=t.textContent.replace(/\s+/," ").trim(),r=document.createElement("meta");r.name="description",r.content=n,document.head.appendChild(r)}});const Rd="w3c/seo",Ed={NOTE:"w3p:NOTE",WD:"w3p:WD",LC:"w3p:LastCall",CR:"w3p:CR",CRD:"w3p:CRD",PR:"w3p:PR",REC:"w3p:REC",RSCND:"w3p:RSCND"},Ld=new Set([...Ui,...qi,...Wi,"BG-FINAL","CG-FINAL","CRY","DRY","draft-finding","finding"]);function Ad({name:e,url:t,mailto:n,company:r,companyURL:s}){const i={type:"Person",name:e,url:t,"foaf:mbox":n};return(r||s)&&(i.worksFor={name:r,url:s}),i}function Pd(e){const{href:t,title:n,href:r}=e,s={id:t,type:"TechArticle",name:n,url:r};return e.authors&&(s.creator=e.authors.map((e=>({name:e})))),e.rawDate&&(s.publishedDate=e.rawDate),e.isbn&&(s.identifier=e.isbn),e.publisher&&(s.publisher={name:e.publisher}),s}var Nd=Object.freeze({__proto__:null,name:Rd,requiresCanonicalLink:Ld,run:async function(e){if((e.canonicalURI||Ld.has(e.specStatus))&&e.shortName){switch(e.canonicalURI){case"edDraft":if(e.edDraftURI)e.canonicalURI=new URL(e.edDraftURI,document.location.href).href;else{rs("Canonical URI set to edDraft, but no edDraftURI is set in configuration",Rd),e.canonicalURI=null}break;case"TR":if(e.latestVersion)e.canonicalURI=e.latestVersion;else{rs("Canonical URI set to TR, but no shortName is set in configuration",Rd),e.canonicalURI=null}break;default:e.latestVersion&&!e.canonicalURI&&(e.canonicalURI=e.latestVersion)}if(e.canonicalURI){const t=sr``;document.head.appendChild(t)}e.doJsonLd&&await async function(e,t){const n=Ed[e.specStatus],r=["TechArticle"];n&&r.push(n);const s={"@context":["http://schema.org",{"@vocab":"http://schema.org/","@language":t.documentElement.lang||"en",w3p:"http://www.w3.org/2001/02pd/rec54#",foaf:"http://xmlns.com/foaf/0.1/",datePublished:{"@type":"http://www.w3.org/2001/XMLSchema#date"},inLanguage:{"@language":null},isBasedOn:{"@type":"@id"},license:{"@type":"@id"}}],id:e.canonicalURI||e.thisVersion,type:r,name:document.title,inLanguage:t.documentElement.lang||"en",license:e.licenseInfo?.url,datePublished:e.dashDate,copyrightHolder:{name:"World Wide Web Consortium",url:"https://www.w3.org/"},discussionUrl:e.issueBase,alternativeHeadline:e.subtitle,isBasedOn:e.prevVersion};if(e.additionalCopyrightHolders){const t=Array.isArray(e.additionalCopyrightHolders)?e.additionalCopyrightHolders:[e.additionalCopyrightHolders];s.copyrightHolder=[s.copyrightHolder,...t.map((e=>({name:e})))]}const i=t.head.querySelector("meta[name=description]");i&&(s.description=i.content);e.editors&&(s.editor=e.editors.map(Ad));e.authors&&(s.contributor=e.authors.map(Ad));const o=[...e.normativeReferences,...e.informativeReferences],a=await Promise.all(o.map((e=>ka(e))));s.citation=a.filter((e=>null!==e&&"object"==typeof e)).map(Pd);const c=t.createElement("script");c.type="application/ld+json",c.textContent=JSON.stringify(s,null,2),t.head.appendChild(c)}(e,document)}}});const Id="\n --base: #282c34;\n --mono-1: #abb2bf;\n --mono-2: #818896;\n --mono-3: #5c6370;\n --hue-1: #56b6c2;\n --hue-2: #61aeee;\n --hue-3: #c678dd;\n --hue-4: #98c379;\n --hue-5: #e06c75;\n --hue-5-2: #be5046;\n --hue-6: #d19a66;\n --hue-6-2: #e6c07b;\n";var Dd=String.raw`.hljs,body:has(input[name=color-scheme][value=light]:checked) .hljs,head:not(:has(meta[name=color-scheme][content~=dark]))+body .hljs{--base:#fafafa;--mono-1:#383a42;--mono-2:#686b77;--mono-3:#717277;--hue-1:#0b76c5;--hue-2:#336ae3;--hue-3:#a626a4;--hue-4:#42803c;--hue-5:#ca4706;--hue-5-2:#c91243;--hue-6:#986801;--hue-6-2:#9a6a01}
@media (prefers-color-scheme:dark){
-.hljs{${Nd}}
+.hljs{${Id}}
}
-body:has(input[name=color-scheme][value=dark]:checked) .hljs{${Nd}}
+body:has(input[name=color-scheme][value=dark]:checked) .hljs{${Id}}
.hljs{display:block;overflow-x:auto;padding:.5em;color:#383a42;color:var(--mono-1,#383a42);background:#fafafa;background:var(--base,#fafafa)}
.hljs-comment,.hljs-quote{color:#717277;color:var(--mono-3,#717277);font-style:italic}
.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4;color:var(--hue-3,#a626a4)}
@@ -1341,21 +1350,21 @@ body:has(input[name=color-scheme][value=dark]:checked) .hljs{${Nd}}
.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#336ae3;color:var(--hue-2,#336ae3)}
.hljs-emphasis{font-style:italic}
.hljs-strong{font-weight:700}
-.hljs-link{text-decoration:underline}`;const Dd=function(e,t=0){const n=function*(e,t){for(;;)yield`${e}:${t}`,t++}(e,t);return()=>n.next().value}("highlight");async function Od(e){const t=e;t.setAttribute("aria-busy","true");const n=(r=t.classList,Array.from(r).filter((e=>"highlight"!==e&&"nolinks"!==e)).map((e=>e.toLowerCase())));var r;let s;try{s=await async function(e,t){const n={action:"highlight",code:e,id:Dd(),languages:t},r=await $s;return r.postMessage(n),new Promise(((e,t)=>{const s=setTimeout((()=>{t(new Error("Timed out waiting for highlight."))}),4e3);r.addEventListener("message",(function t(i){const{data:{id:o,language:a,value:c}}=i;o===n.id&&(r.removeEventListener("message",t),clearTimeout(s),e({language:a,value:c}))}))}))}(t.innerText,n)}catch(e){return void console.error(e)}const{language:i,value:o}=s;switch(t.localName){case"pre":t.classList.remove(i),t.innerHTML=`${o}`,t.classList.length||t.removeAttribute("class");break;case"code":t.innerHTML=o,t.classList.add("hljs"),i&&t.classList.add(i)}t.setAttribute("aria-busy","false")}var jd=Object.freeze({__proto__:null,name:"core/highlight",run:async function(e){if(e.noHighlightCSS)return;const t=[...document.querySelectorAll("\n pre:not(.idl):not(.cddl):not(.nohighlight) > code:not(.nohighlight),\n pre:not(.idl):not(.cddl):not(.nohighlight),\n code.highlight\n ")].filter((e=>"pre"!==e.localName||!e.querySelector("code")));if(!t.length)return;const n=t.filter((e=>e.textContent.trim())).map(Od);document.head.appendChild(sr``),await Promise.all(n)}});const zd=Nr({en:{missing_test_suite_uri:cs`Found tests in your spec, but missing ${"[testSuiteURI]"} in your ReSpec config.`,tests:"tests",test:"test"},ja:{missing_test_suite_uri:cs`この仕様内にテストの項目を検出しましたが,ReSpec の設定に ${"[testSuiteURI]"} が見つかりません.`,tests:"テスト",test:"テスト"},de:{missing_test_suite_uri:cs`Die Spezifikation enthält Tests, aber in der ReSpec-Konfiguration ist keine ${"[testSuiteURI]"} angegeben.`,tests:"Tests",test:"Test"},zh:{missing_test_suite_uri:cs`本规范中包含测试,但在 ReSpec 配置中缺少 ${"[testSuiteURI]"}。`,tests:"测试",test:"测试"}}),Md="core/data-tests";function Ud(e){const t=[],[n]=new URL(e).pathname.split("/").reverse(),r=n.split(".");let[s]=r;if(r.find((e=>"https"===e))){const e=document.createElement("span");e.textContent="🔒",e.setAttribute("aria-label","requires a secure connection"),e.setAttribute("title","Test requires HTTPS"),s=s.replace(".https",""),t.push(e)}if(s.split(".").join("-").split("-").find((e=>"manual"===e))){const e=document.createElement("span");e.textContent="💪",e.setAttribute("aria-label","the test must be run manually"),e.setAttribute("title","Manual test"),s=s.replace("-manual",""),t.push(e)}return sr`
+.hljs-link{text-decoration:underline}`;const Od=function(e,t=0){const n=function*(e,t){for(;;)yield`${e}:${t}`,t++}(e,t);return()=>n.next().value}("highlight");async function jd(e){const t=e;t.setAttribute("aria-busy","true");const n=(r=t.classList,Array.from(r).filter((e=>"highlight"!==e&&"nolinks"!==e)).map((e=>e.toLowerCase())));var r;let s;try{s=await async function(e,t){const n={action:"highlight",code:e,id:Od(),languages:t},r=await xs;return r.postMessage(n),new Promise(((e,t)=>{const s=setTimeout((()=>{t(new Error("Timed out waiting for highlight."))}),4e3);r.addEventListener("message",(function t(i){const{data:{id:o,language:a,value:c}}=i;o===n.id&&(r.removeEventListener("message",t),clearTimeout(s),e({language:a,value:c}))}))}))}(t.innerText,n)}catch(e){return void console.error(e)}const{language:i,value:o}=s;switch(t.localName){case"pre":t.classList.remove(i),t.innerHTML=`${o}`,t.classList.length||t.removeAttribute("class");break;case"code":t.innerHTML=o,t.classList.add("hljs"),i&&t.classList.add(i)}t.setAttribute("aria-busy","false")}var zd=Object.freeze({__proto__:null,name:"core/highlight",run:async function(e){if(e.noHighlightCSS)return;const t=[...document.querySelectorAll("\n pre:not(.idl):not(.cddl):not(.nohighlight) > code:not(.nohighlight),\n pre:not(.idl):not(.cddl):not(.nohighlight),\n code.highlight\n ")].filter((e=>"pre"!==e.localName||!e.querySelector("code")));if(!t.length)return;const n=t.filter((e=>e.textContent.trim())).map(jd);document.head.appendChild(sr``),await Promise.all(n)}});const Md=Ir({en:{missing_test_suite_uri:ls`Found tests in your spec, but missing ${"[testSuiteURI]"} in your ReSpec config.`,tests:"tests",test:"test"},ja:{missing_test_suite_uri:ls`この仕様内にテストの項目を検出しましたが,ReSpec の設定に ${"[testSuiteURI]"} が見つかりません.`,tests:"テスト",test:"テスト"},de:{missing_test_suite_uri:ls`Die Spezifikation enthält Tests, aber in der ReSpec-Konfiguration ist keine ${"[testSuiteURI]"} angegeben.`,tests:"Tests",test:"Test"},zh:{missing_test_suite_uri:ls`本规范中包含测试,但在 ReSpec 配置中缺少 ${"[testSuiteURI]"}。`,tests:"测试",test:"测试"}}),Ud="core/data-tests";function qd(e){const t=[],[n]=new URL(e).pathname.split("/").reverse(),r=n.split(".");let[s]=r;if(r.find((e=>"https"===e))){const e=document.createElement("span");e.textContent="🔒",e.setAttribute("aria-label","requires a secure connection"),e.setAttribute("title","Test requires HTTPS"),s=s.replace(".https",""),t.push(e)}if(s.split(".").join("-").split("-").find((e=>"manual"===e))){const e=document.createElement("span");e.textContent="💪",e.setAttribute("aria-label","the test must be run manually"),e.setAttribute("title","Manual test"),s=s.replace("-manual",""),t.push(e)}return sr`
- `}function qd(e,t,n){return e.map((e=>{try{return new URL(e,t).href}catch{ns(cs`Invalid URL in ${"[data-tests]"} attribute: ${e}.`,Md,{elements:[n]})}})).filter((e=>e))}function Wd(e,t){const n=e.filter(((e,t,n)=>n.indexOf(e)!==t));if(n.length){const e=cs`Duplicate tests found in the ${"[data-tests]"} attribute.`,r=cs`To fix, remove duplicates from ${"[data-tests]"}: ${os(n,{quotes:!0})}.`;ns(e,Md,{hint:r,elements:[t]})}}function Fd(e){const t=[...new Set(e)];return sr`
+ `}function Wd(e,t,n){return e.map((e=>{try{return new URL(e,t).href}catch{rs(ls`Invalid URL in ${"[data-tests]"} attribute: ${e}.`,Ud,{elements:[n]})}})).filter((e=>e))}function Fd(e,t){const n=e.filter(((e,t,n)=>n.indexOf(e)!==t));if(n.length){const e=ls`Duplicate tests found in the ${"[data-tests]"} attribute.`,r=ls`To fix, remove duplicates from ${"[data-tests]"}: ${as(n,{quotes:!0})}.`;rs(e,Ud,{hint:r,elements:[t]})}}function Bd(e){const t=[...new Set(e)];return sr`
tests: ${t.length}
- ${t.map(Ud)}
+ ${t.map(qd)}
- `}var Bd=Object.freeze({__proto__:null,name:Md,run:function(e){const t=[...document.querySelectorAll("[data-tests]")].filter((e=>e.dataset.tests));if(t.length)if(e.testSuiteURI)for(const n of t){const t=qd((n.dataset.tests??"").split(/,/gm).map((e=>e.trim())),e.testSuiteURI,n).filter((e=>void 0!==e));Wd(t,n);const r=Fd(t);n.append(r)}else ts(zd.missing_test_suite_uri,Md)}});const Hd="core/list-sorter";function Gd(e){const t="ascending"===e?1:-1;return(e,n)=>{const r=e.textContent??"",s=n.textContent??"";return t*r.trim().localeCompare(s.trim())}}function Vd(e,t){return[...e.querySelectorAll(":scope > li")].sort(Gd(t)).reduce(((e,t)=>(e.appendChild(t),e)),document.createDocumentFragment())}function Jd(e,t){return[...e.querySelectorAll(":scope > dt")].sort(Gd(t)).reduce(((e,t)=>{const{nodeType:n,nodeName:r}=t,s=document.createDocumentFragment();let{nextSibling:i}=t;for(;i&&i.nextSibling;){s.appendChild(i.cloneNode(!0));const{nodeType:e,nodeName:t}=i.nextSibling;if(e===n&&t===r)break;i=i.nextSibling}return s.prepend(t.cloneNode(!0)),e.appendChild(s),e}),document.createDocumentFragment())}var Kd=Object.freeze({__proto__:null,name:Hd,run:function(){const e=document.querySelectorAll("[data-sort]");for(const t of e){let e;const n=t.dataset.sort||"ascending";switch(t.localName){case"dl":e=Jd(t,n);break;case"ol":case"ul":e=Vd(t,n);break;default:ns(`ReSpec can't sort ${t.localName} elements.`,Hd,{elements:[t]})}if(e){const n=document.createRange();n.selectNodeContents(t),n.deleteContents(),t.appendChild(e)}}},sortDefinitionTerms:Jd,sortListItems:Vd});var Zd=String.raw`var:hover{text-decoration:underline;cursor:pointer}
+ `}var Hd=Object.freeze({__proto__:null,name:Ud,run:function(e){const t=[...document.querySelectorAll("[data-tests]")].filter((e=>e.dataset.tests));if(t.length)if(e.testSuiteURI)for(const n of t){const t=Wd((n.dataset.tests??"").split(/,/gm).map((e=>e.trim())),e.testSuiteURI,n).filter((e=>void 0!==e));Fd(t,n);const r=Bd(t);n.append(r)}else ns(Md.missing_test_suite_uri,Ud)}});const Gd="core/list-sorter";function Vd(e){const t="ascending"===e?1:-1;return(e,n)=>{const r=e.textContent??"",s=n.textContent??"";return t*r.trim().localeCompare(s.trim())}}function Jd(e,t){return[...e.querySelectorAll(":scope > li")].sort(Vd(t)).reduce(((e,t)=>(e.appendChild(t),e)),document.createDocumentFragment())}function Kd(e,t){return[...e.querySelectorAll(":scope > dt")].sort(Vd(t)).reduce(((e,t)=>{const{nodeType:n,nodeName:r}=t,s=document.createDocumentFragment();let{nextSibling:i}=t;for(;i&&i.nextSibling;){s.appendChild(i.cloneNode(!0));const{nodeType:e,nodeName:t}=i.nextSibling;if(e===n&&t===r)break;i=i.nextSibling}return s.prepend(t.cloneNode(!0)),e.appendChild(s),e}),document.createDocumentFragment())}var Zd=Object.freeze({__proto__:null,name:Gd,run:function(){const e=document.querySelectorAll("[data-sort]");for(const t of e){let e;const n=t.dataset.sort||"ascending";switch(t.localName){case"dl":e=Kd(t,n);break;case"ol":case"ul":e=Jd(t,n);break;default:rs(`ReSpec can't sort ${t.localName} elements.`,Gd,{elements:[t]})}if(e){const n=document.createRange();n.selectNodeContents(t),n.deleteContents(),t.appendChild(e)}}},sortDefinitionTerms:Kd,sortListItems:Jd});var Yd=String.raw`var:hover{text-decoration:underline;cursor:pointer}
var.respec-hl{color:var(--color,#000);background-color:var(--bg-color);box-shadow:0 0 0 2px var(--bg-color)}
@media (prefers-color-scheme:dark){
var.respec-hl{filter:saturate(.9) brightness(.9)}
@@ -1369,11 +1378,12 @@ var.respec-hl-c6{--bg-color:#82ddff}
var.respec-hl-c7{--bg-color:#ffbcf2}
@media print{
var.respec-hl{background:0 0;color:#000;box-shadow:unset}
-}`;var Yd=Object.freeze({__proto__:null,name:"core/highlight-vars",run:async function(e){if(!e.highlightVars)return;const t=document.createElement("style");t.textContent=Zd,document.head.appendChild(t);const n=document.createElement("script");n.id="respec-highlight-vars",n.textContent=await async function(){try{return(await Promise.resolve().then((function(){return vh}))).default}catch{return bs("./src/core/highlight-vars.runtime.js")}}(),document.body.append(n),ps("beforesave",(e=>{e.querySelectorAll("var.respec-hl").forEach((e=>{const t=[...e.classList.values()].filter((e=>e.startsWith("respec-hl")));e.classList.remove(...t),e.classList.length||e.removeAttribute("class")}))}))}});var Xd=String.raw`var[data-type]{position:relative}
+}`;var Xd=Object.freeze({__proto__:null,name:"core/highlight-vars",run:async function(e){if(!e.highlightVars)return;const t=document.createElement("style");t.textContent=Yd,document.head.appendChild(t);const n=document.createElement("script");n.id="respec-highlight-vars",n.textContent=await async function(){try{return(await Promise.resolve().then((function(){return kh}))).default}catch{return ys("./src/core/highlight-vars.runtime.js")}}(),document.body.append(n),hs("beforesave",(e=>{e.querySelectorAll("var.respec-hl").forEach((e=>{const t=[...e.classList.values()].filter((e=>e.startsWith("respec-hl")));e.classList.remove(...t),e.classList.length||e.removeAttribute("class")}))}))}});var Qd=String.raw`var[data-type]{position:relative}
var[data-type]::after,var[data-type]::before{position:absolute;left:50%;top:-6px;opacity:0;transition:opacity .4s;pointer-events:none}
var[data-type]::before{content:"";transform:translateX(-50%);border-width:4px 6px 0 6px;border-style:solid;border-color:transparent;border-top-color:#222}
var[data-type]::after{content:attr(data-type);transform:translateX(-50%) translateY(-100%);background:#222;text-align:center;font-family:"Dank Mono","Fira Code",monospace;font-style:normal;padding:6px;border-radius:3px;color:#daca88;text-indent:0;font-weight:400}
-var[data-type]:hover::after,var[data-type]:hover::before{opacity:1}`;var Qd=Object.freeze({__proto__:null,name:"core/data-type",run:function(e){if(!e.highlightVars)return;const t=document.createElement("style");t.textContent=Xd,document.head.appendChild(t);let n=null;const r=new Map,s=document.querySelectorAll("section var");for(const e of s){const t=e.closest("section");if(n!==t&&(n=t,r.clear()),e.dataset.type){r.set(e.textContent.trim(),e.dataset.type);continue}const s=r.get(e.textContent.trim());s&&(e.dataset.type=s)}}});const ep="core/anchor-expander";function tp(e,t,n){const r=e.querySelector(".marker .self-link");if(!r){n.textContent=n.getAttribute("href");return void ts(`Found matching element "${t}", but it has no title or marker.`,ep,{title:"Missing title.",elements:[n]})}const s=Zr(r);n.append(...s.childNodes),n.classList.add("box-ref")}function np(e,t,n){const r=e.querySelector("figcaption");if(!r){n.textContent=n.getAttribute("href");return void ts(`Found matching figure "${t}", but figure is lacking a \`\`.`,ep,{title:"Missing figcaption in referenced figure.",elements:[n]})}const s=[...Zr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("figno"),e)));n.append(...s),n.classList.add("fig-ref");const i=r.querySelector(".fig-title");!n.hasAttribute("title")&&i&&(n.title=Pr(i.textContent))}function rp(e,t,n){if(!e.classList.contains("numbered"))return;const r=e.querySelector("caption");if(!r){n.textContent=n.getAttribute("href");return void ts(`Found matching table "${t}", but table is lacking a \`
\`.`,ep,{title:"Missing caption in referenced table.",elements:[n]})}const s=[...Zr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("tableno"),e)));n.append(...s),n.classList.add("table-ref");const i=r.querySelector(".table-title");!n.hasAttribute("title")&&i&&(n.title=Pr(i.textContent))}function sp(e,t,n){const r=e.querySelector("h6, h5, h4, h3, h2");if(r)ip(r,n),op(r,n);else{n.textContent=n.getAttribute("href");ts("Found matching section, but the section was lacking a heading element.",ep,{title:`No matching id in document: "${t}".`,elements:[n]})}}function ip(e,t){const n=e.querySelector(".self-link"),r=[...Zr(e).childNodes].filter((e=>!e.classList||!e.classList.contains("self-link")));t.append(...r),n&&t.prepend("§ "),t.classList.add("sec-ref"),t.lastChild&&t.lastChild.nodeType===Node.TEXT_NODE&&(t.lastChild.textContent=(t.lastChild.textContent??"").trimEnd()),t.querySelectorAll("a").forEach((e=>{const t=Br(e,"span");for(const e of[...t.attributes])t.removeAttributeNode(e)}))}function op(e,t){for(const n of["dir","lang"]){if(t.hasAttribute(n))continue;const r=e.closest(`[${n}]`);if(!r)continue;const s=t.closest(`[${n}]`);s&&s.getAttribute(n)===r.getAttribute(n)||t.setAttribute(n,r.getAttribute(n)??"")}}var ap=Object.freeze({__proto__:null,name:ep,run:function(){const e=[...document.querySelectorAll("a[href^='#']:not(.self-link):not([href$='the-empty-string'])")].filter((e=>""===e.textContent.trim()));for(const t of e){const e=(t.getAttribute("href")??"").slice(1),n=document.getElementById(e);if(n){switch(n.localName){case"h6":case"h5":case"h4":case"h3":case"h2":ip(n,t);break;case"section":sp(n,e,t);break;case"figure":np(n,e,t);break;case"table":rp(n,e,t);break;case"aside":case"div":tp(n,e,t);break;case"dfn":{const e=Zr(n);t.append(...e.childNodes),t.classList.add("dfn-ref");break}default:t.textContent=t.getAttribute("href");ts("ReSpec doesn't support expanding this kind of reference.",ep,{title:`Can't expand "#${e}".`,elements:[t]})}op(n,t),t.normalize()}else{t.textContent=t.getAttribute("href");ts(`Couldn't expand inline reference. The id "${e}" is not in the document.`,ep,{title:`No matching id in document: ${e}.`,elements:[t]})}}}});var cp=String.raw`dfn{cursor:pointer}
+var[data-type]:hover::after,var[data-type]:hover::before{opacity:1}`;var ep=Object.freeze({__proto__:null,name:"core/data-type",run:function(e){if(!e.highlightVars)return;const t=document.createElement("style");t.textContent=Qd,document.head.appendChild(t);let n=null;const r=new Map,s=document.querySelectorAll("section var");for(const e of s){const t=e.closest("section");if(n!==t&&(n=t,r.clear()),e.dataset.type){r.set(e.textContent.trim(),e.dataset.type);continue}const s=r.get(e.textContent.trim());s&&(e.dataset.type=s)}}});const tp="core/anchor-expander";function np(e,t,n){const r=e.querySelector(".marker .self-link");if(!r){n.textContent=n.getAttribute("href");return void ns(`Found matching element "${t}", but it has no title or marker.`,tp,{title:"Missing title.",elements:[n]})}const s=Yr(r);n.append(...s.childNodes),n.classList.add("box-ref")}function rp(e,t,n){const r=e.querySelector("figcaption");if(!r){n.textContent=n.getAttribute("href");return void ns(`Found matching figure "${t}", but figure is lacking a \`\`.`,tp,{title:"Missing figcaption in referenced figure.",elements:[n]})}const s=[...Yr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("figno"),e)));n.append(...s),n.classList.add("fig-ref");const i=r.querySelector(".fig-title");!n.hasAttribute("title")&&i&&(n.title=Nr(i.textContent))}function sp(e,t,n){if(!e.classList.contains("numbered"))return;const r=e.querySelector("caption");if(!r){n.textContent=n.getAttribute("href");return void ns(`Found matching table "${t}", but table is lacking a \`
\`.`,tp,{title:"Missing caption in referenced table.",elements:[n]})}const s=[...Yr(r.querySelector(".self-link")).childNodes].map((e=>(e.classList?.remove("tableno"),e)));n.append(...s),n.classList.add("table-ref");const i=r.querySelector(".table-title");!n.hasAttribute("title")&&i&&(n.title=Nr(i.textContent))}function ip(e,t,n){const r=e.querySelector("h6, h5, h4, h3, h2");if(r)op(r,n),ap(r,n);else{n.textContent=n.getAttribute("href");ns("Found matching section, but the section was lacking a heading element.",tp,{title:`No matching id in document: "${t}".`,elements:[n]})}}function op(e,t){const n=e.querySelector(".self-link"),r=[...Yr(e).childNodes].filter((e=>!e.classList||!e.classList.contains("self-link")));t.append(...r),n&&t.prepend("§ "),t.classList.add("sec-ref"),t.lastChild&&t.lastChild.nodeType===Node.TEXT_NODE&&(t.lastChild.textContent=(t.lastChild.textContent??"").trimEnd()),t.querySelectorAll("a").forEach((e=>{const t=Hr(e,"span");for(const e of[...t.attributes])t.removeAttributeNode(e)}))}function ap(e,t){for(const n of["dir","lang"]){if(t.hasAttribute(n))continue;const r=e.closest(`[${n}]`);if(!r)continue;const s=t.closest(`[${n}]`);s&&s.getAttribute(n)===r.getAttribute(n)||t.setAttribute(n,r.getAttribute(n)??"")}}var cp=Object.freeze({__proto__:null,name:tp,run:function(){const e=[...document.querySelectorAll("a[href^='#']:not(.self-link):not([href$='the-empty-string'])")].filter((e=>""===e.textContent.trim()));for(const t of e){const e=(t.getAttribute("href")??"").slice(1),n=document.getElementById(e);if(n){switch(n.localName){case"h6":case"h5":case"h4":case"h3":case"h2":op(n,t);break;case"section":ip(n,e,t);break;case"figure":rp(n,e,t);break;case"table":sp(n,e,t);break;case"aside":case"div":np(n,e,t);break;case"dfn":{const e=Yr(n);t.append(...e.childNodes),t.classList.add("dfn-ref");break}default:t.textContent=t.getAttribute("href");ns("ReSpec doesn't support expanding this kind of reference.",tp,{title:`Can't expand "#${e}".`,elements:[t]})}ap(n,t),t.normalize()}else{t.textContent=t.getAttribute("href");ns(`Couldn't expand inline reference. The id "${e}" is not in the document.`,tp,{title:`No matching id in document: ${e}.`,elements:[t]})}}}});var lp=String.raw`dfn{cursor:pointer}
+a.bibref{cursor:pointer}
.dfn-panel{position:absolute;z-index:35;min-width:300px;max-width:500px;padding:.5em .75em;margin-top:.6em;font-family:"Helvetica Neue",sans-serif;font-size:small;background:#fff;background:var(--indextable-hover-bg,#fff);color:#000;color:var(--text,#000);box-shadow:0 1em 3em -.4em rgba(0,0,0,.3),0 0 1px 1px rgba(0,0,0,.05);box-shadow:0 1em 3em -.4em var(--tocsidebar-shadow,rgba(0,0,0,.3)),0 0 1px 1px var(--tocsidebar-shadow,rgba(0,0,0,.05));border-radius:2px}
.dfn-panel:not(.docked)>.caret{position:absolute;top:-9px}
.dfn-panel:not(.docked)>.caret::after,.dfn-panel:not(.docked)>.caret::before{content:"";position:absolute;border:10px solid transparent;border-top:0;border-bottom:10px solid #fff;border-bottom-color:var(--indextable-hover-bg,#fff);top:0}
@@ -1391,7 +1401,8 @@ var[data-type]:hover::after,var[data-type]:hover::before{opacity:1}`;var Qd=Obje
.dfn-panel a[href]:hover{border-bottom-width:1px}
.dfn-panel ul{padding:0}
.dfn-panel li{margin-left:1em}
-.dfn-panel.docked{position:fixed;left:.5em;top:unset;bottom:2em;margin:0 auto;max-width:calc(100vw - .75em * 2 - .5em - .2em * 2);max-height:30vh;overflow:auto}`;function lp(e){const{id:t}=e,n=e.dataset.href||`#${t}`,r=document.querySelectorAll(`a[href="${n}"]:not(.index-term)`),s=`dfn-panel-for-${e.id}`,i=e.getAttribute("aria-label")||Pr(e.textContent),o=sr`
+.dfn-panel.docked{position:fixed;left:.5em;top:unset;bottom:2em;margin:0 auto;max-width:calc(100vw - .75em * 2 - .5em - .2em * 2);max-height:30vh;overflow:auto}
+.dfn-panel .biblio-ref{margin-top:.5em}`;function up(e){const{id:t}=e,n=e.dataset.href||`#${t}`,r=document.querySelectorAll(`a[href="${n}"]:not(.index-term)`),s=`dfn-panel-for-${e.id}`,i=e.getAttribute("aria-label")||Nr(e.textContent),o=sr`
`}))}(e,r))).catch((e=>ns(e.message,pp,{elements:[this],cause:e}))).finally((()=>{this.dispatchEvent(new CustomEvent("done"))})),placeholder:"Loading list of commits..."}}
- `}};async function hp(e,t,n,r,s){let i;try{const o=await wo;if(!o)throw new Error("`respecConfig.github` is not set");const a=r||o.fullName,c=new URL("commits",`${o.apiBase}/${a}/`);e&&c.searchParams.set("from",e),c.searchParams.set("to",t),s&&c.searchParams.set("path",s);const l=await fetch(c.href);if(!l.ok)throw new Error(`Request to ${c} failed with status code ${l.status}`);if(i=await l.json(),!i.length)throw new Error(`No commits between ${e}..${t}.`);i=i.filter(n)}catch(e){const t=`Error loading commits from GitHub. ${e.message}`;throw new Error(t,{cause:e})}return i}const fp=[Object.freeze({__proto__:null,element:pp,name:dp})];var mp=Object.freeze({__proto__:null,name:"core/custom-elements/index",run:async function(){fp.forEach((e=>{customElements.define(e.name,e.element)}));const e=fp.map((e=>e.name)).join(", "),t=[...document.querySelectorAll(e)].map((e=>new Promise((t=>e.addEventListener("done",t,{once:!0})))));await Promise.all(t)}});var gp=Object.freeze({__proto__:null,name:"core/web-monetization",run:function(e){if(!1===e.monetization)return;const{monetization:t}=e,{removeOnSave:n,paymentPointer:r}=function(e){const t={paymentPointer:"$respec.org",removeOnSave:!0};switch(typeof e){case"string":t.paymentPointer=e;break;case"object":e.paymentPointer&&(t.paymentPointer=String(e.paymentPointer)),!1===e.removeOnSave&&(t.removeOnSave=!1)}return t}(t),s=n?"removeOnSave":null;document.head.append(sr`{customElements.define(e.name,e.element)}));const e=mp.map((e=>e.name)).join(", "),t=[...document.querySelectorAll(e)].map((e=>new Promise((t=>e.addEventListener("done",t,{once:!0})))));await Promise.all(t)}});var bp=Object.freeze({__proto__:null,name:"core/web-monetization",run:function(e){if(!1===e.monetization)return;const{monetization:t}=e,{removeOnSave:n,paymentPointer:r}=function(e){const t={paymentPointer:"$respec.org",removeOnSave:!0};switch(typeof e){case"string":t.paymentPointer=e;break;case"object":e.paymentPointer&&(t.paymentPointer=String(e.paymentPointer)),!1===e.removeOnSave&&(t.removeOnSave=!1)}return t}(t),s=n?"removeOnSave":null;document.head.append(sr``)}});var bp=Object.freeze({__proto__:null,name:"core/dfn-contract",run:function(){!function(){const e=document.querySelectorAll("dfn:is([data-dfn-type=''],:not([data-dfn-type]))");for(const t of e)t.dataset.dfnType="dfn";const t=document.querySelectorAll("dfn:not([data-noexport], [data-export], [data-dfn-type='dfn'], [data-cite])");for(const e of t)e.dataset.export=""}(),function(){const e=document.querySelectorAll("dl.definitions dt:has(dfn[data-dfn-type])");for(const t of e){const e=t.querySelector("dfn[data-dfn-type]").id,n=t.nextElementSibling;n&&!n.dataset.defines&&e&&(n.dataset.defines=`#${e}`)}const t=document.querySelectorAll(".definition:has(dfn[data-dfn-type])");for(const e of t){const t=e.querySelector("dfn[data-dfn-type]");t.id&&!e.dataset.defines&&(e.dataset.defines=`#${t.id}`)}}()}});const yp="core/before-save";var wp=Object.freeze({__proto__:null,name:yp,run:function(e){if(e.beforeSave)if(Array.isArray(e.beforeSave)&&!e.beforeSave.some((e=>"function"!=typeof e||"AsyncFunction"===e.constructor.name)))ps("beforesave",(t=>{!function(e,t){let n=0;for(const r of e)try{r(t)}catch(e){ts(cs`Function ${r.name?`\`${r.name}\``:`at position ${n}`}\` threw an error during processing of ${"[beforeSave]"}.`,yp,{hint:"See developer console.",cause:e})}finally{n++}}(e.beforeSave,t.ownerDocument)}),{once:!0});else{ts(cs`${"[beforeSave]"} configuration option must be an array of synchronous JS functions.`,yp)}}});const vp="core/linter-rules/check-charset",kp=Nr({en:{msg:"Document must only contain one `` tag with charset set to 'utf-8'",hint:'Add this line in your document `` section - `` or set charset to "utf-8" if not set already.'},zh:{msg:"文档只能包含一个 charset 属性为 utf-8 的 `` 标签",hint:'将此行添加到文档的 `` 部分—— `` 或将 charset 设置为 utf-8(如果尚未设置)。'},cs:{msg:"Dokument smí obsahovat pouze jeden tag `` s charset nastaveným na 'utf-8'",hint:'Přidejte tento řádek do sekce `` vašeho dokumentu - `` nebo nastavte charset na "utf-8", pokud ještě není nastaven.'}});var $p=Object.freeze({__proto__:null,name:vp,run:function(e){if(!e.lint?.["check-charset"])return;const t=document.querySelectorAll("meta[charset]"),n=[];for(const e of t)n.push((e.getAttribute("charset")??"").trim().toLowerCase());n.includes("utf-8")&&1===t.length||ns(kp.msg,vp,{hint:kp.hint,elements:[...t]})}});const xp="core/linter-rules/check-punctuation",Cp=[".",":","!","?"],Sp=Cp.map((e=>`"${e}"`)).join(", "),_p=Nr({en:{msg:"`p` elements should end with a punctuation mark.",hint:`Please make sure \`p\` elements end with one of: ${Sp}.`},cs:{msg:"Elementy `p` by měly končit interpunkčním znaménkem.",hint:`Ujistěte se, že elementy \`p\` končí jedním z těchto znaků: ${Sp}.`}});var Tp=Object.freeze({__proto__:null,name:xp,run:function(e){if(!e.lint?.["check-punctuation"])return;const t=new RegExp(`[${Cp.join("")}\\]]$|^ *$`,"m"),n=[...document.querySelectorAll("p:not(#back-to-top,#w3c-state)")].filter((e=>!t.test(e.textContent.trim())));n.length&&ns(_p.msg,xp,{hint:_p.hint,elements:n})}});const Rp="core/linter-rules/check-internal-slots",Ep=Nr({en:{msg:"Internal slots should be preceded by a '.'",hint:"Add a '.' between the elements mentioned."},cs:{msg:"Interní sloty by měly být uvedeny s tečkou '.' před názvem",hint:"Přidejte tečku '.' mezi uvedené prvky."}});var Lp=Object.freeze({__proto__:null,name:Rp,run:function(e){if(!e.lint?.["check-internal-slots"])return;const t=[...document.querySelectorAll("var+a")].filter((e=>{const t=e.previousSibling?.nodeName;return"VAR"===t}));t.length&&ns(Ep.msg,Rp,{hint:Ep.hint,elements:t})}});const Ap="core/linter-rules/local-refs-exist",Pp=Nr({en:{msg:"Broken local reference found in document.",hint:"Please fix the links mentioned."},cs:{msg:"V dokumentu byla nalezena nefunkční lokální reference.",hint:"Opravte prosím uvedené odkazy."}});function Np(e){const t=e.getAttribute("href")?.substring(1);if(!t)return;const n=e.ownerDocument;return!n.getElementById(t)&&!n.getElementsByName(t).length}var Ip=Object.freeze({__proto__:null,name:Ap,run:function(e){if(!e.lint?.["local-refs-exist"])return;const t=[...document.querySelectorAll("a[href^='#']")].filter(Np);t.length&&ns(Pp.msg,Ap,{hint:Pp.hint,elements:t})}});const Dp="core/linter-rules/no-captionless-tables",Op=Nr({en:{msg:"All tables marked with class='numbered' must start with a caption element.",hint:"Add a `caption` to the offending table."},cs:{msg:"Všechny tabulky označené class='numbered' musí začínat elementem caption.",hint:"Přidejte k dané tabulce element `caption`."}});var jp=Object.freeze({__proto__:null,name:Dp,run:function(e){if(!e.lint?.["no-captionless-tables"])return;const t=[...document.querySelectorAll("table.numbered")].filter((e=>!(e.firstElementChild instanceof HTMLTableCaptionElement)));t.length&&ns(Op.msg,Dp,{hint:Op.hint,elements:t})}});const zp="no-unused-dfns",Mp="core/linter-rules/no-unused-dfns",Up=Nr({en:{msg:e=>`Found definition for "${e}", but nothing links to it. This is usually a spec bug!`,get hint(){return cs`
+ />`)}});var yp=Object.freeze({__proto__:null,name:"core/dfn-contract",run:function(){!function(){const e=document.querySelectorAll("dfn:is([data-dfn-type=''],:not([data-dfn-type]))");for(const t of e)t.dataset.dfnType="dfn";const t=document.querySelectorAll("dfn:not([data-noexport], [data-export], [data-dfn-type='dfn'], [data-cite])");for(const e of t)e.dataset.export=""}(),function(){const e=document.querySelectorAll("dl.definitions dt:has(dfn[data-dfn-type])");for(const t of e){const e=t.querySelector("dfn[data-dfn-type]").id,n=t.nextElementSibling;n&&!n.dataset.defines&&e&&(n.dataset.defines=`#${e}`)}const t=document.querySelectorAll(".definition:has(dfn[data-dfn-type])");for(const e of t){const t=e.querySelector("dfn[data-dfn-type]");t.id&&!e.dataset.defines&&(e.dataset.defines=`#${t.id}`)}}()}});const wp="core/before-save";var vp=Object.freeze({__proto__:null,name:wp,run:function(e){if(e.beforeSave)if(Array.isArray(e.beforeSave)&&!e.beforeSave.some((e=>"function"!=typeof e||"AsyncFunction"===e.constructor.name)))hs("beforesave",(t=>{!function(e,t){let n=0;for(const r of e)try{r(t)}catch(e){ns(ls`Function ${r.name?`\`${r.name}\``:`at position ${n}`}\` threw an error during processing of ${"[beforeSave]"}.`,wp,{hint:"See developer console.",cause:e})}finally{n++}}(e.beforeSave,t.ownerDocument)}),{once:!0});else{ns(ls`${"[beforeSave]"} configuration option must be an array of synchronous JS functions.`,wp)}}});const kp="core/linter-rules/check-charset",$p=Ir({en:{msg:"Document must only contain one `` tag with charset set to 'utf-8'",hint:'Add this line in your document `` section - `` or set charset to "utf-8" if not set already.'},zh:{msg:"文档只能包含一个 charset 属性为 utf-8 的 `` 标签",hint:'将此行添加到文档的 `` 部分—— `` 或将 charset 设置为 utf-8(如果尚未设置)。'},cs:{msg:"Dokument smí obsahovat pouze jeden tag `` s charset nastaveným na 'utf-8'",hint:'Přidejte tento řádek do sekce `` vašeho dokumentu - `` nebo nastavte charset na "utf-8", pokud ještě není nastaven.'}});var xp=Object.freeze({__proto__:null,name:kp,run:function(e){if(!e.lint?.["check-charset"])return;const t=document.querySelectorAll("meta[charset]"),n=[];for(const e of t)n.push((e.getAttribute("charset")??"").trim().toLowerCase());n.includes("utf-8")&&1===t.length||rs($p.msg,kp,{hint:$p.hint,elements:[...t]})}});const Cp="core/linter-rules/check-punctuation",Sp=[".",":","!","?"],_p=Sp.map((e=>`"${e}"`)).join(", "),Tp=Ir({en:{msg:"`p` elements should end with a punctuation mark.",hint:`Please make sure \`p\` elements end with one of: ${_p}.`},cs:{msg:"Elementy `p` by měly končit interpunkčním znaménkem.",hint:`Ujistěte se, že elementy \`p\` končí jedním z těchto znaků: ${_p}.`}});var Rp=Object.freeze({__proto__:null,name:Cp,run:function(e){if(!e.lint?.["check-punctuation"])return;const t=new RegExp(`[${Sp.join("")}\\]]$|^ *$`,"m"),n=[...document.querySelectorAll("p:not(#back-to-top,#w3c-state)")].filter((e=>!t.test(e.textContent.trim())));n.length&&rs(Tp.msg,Cp,{hint:Tp.hint,elements:n})}});const Ep="core/linter-rules/check-internal-slots",Lp=Ir({en:{msg:"Internal slots should be preceded by a '.'",hint:"Add a '.' between the elements mentioned."},cs:{msg:"Interní sloty by měly být uvedeny s tečkou '.' před názvem",hint:"Přidejte tečku '.' mezi uvedené prvky."}});var Ap=Object.freeze({__proto__:null,name:Ep,run:function(e){if(!e.lint?.["check-internal-slots"])return;const t=[...document.querySelectorAll("var+a")].filter((e=>{const t=e.previousSibling?.nodeName;return"VAR"===t}));t.length&&rs(Lp.msg,Ep,{hint:Lp.hint,elements:t})}});const Pp="core/linter-rules/local-refs-exist",Np=Ir({en:{msg:"Broken local reference found in document.",hint:"Please fix the links mentioned."},cs:{msg:"V dokumentu byla nalezena nefunkční lokální reference.",hint:"Opravte prosím uvedené odkazy."}});function Ip(e){const t=e.getAttribute("href")?.substring(1);if(!t)return;const n=e.ownerDocument;return!n.getElementById(t)&&!n.getElementsByName(t).length}var Dp=Object.freeze({__proto__:null,name:Pp,run:function(e){if(!e.lint?.["local-refs-exist"])return;const t=[...document.querySelectorAll("a[href^='#']")].filter(Ip);t.length&&rs(Np.msg,Pp,{hint:Np.hint,elements:t})}});const Op="core/linter-rules/no-captionless-tables",jp=Ir({en:{msg:"All tables marked with class='numbered' must start with a caption element.",hint:"Add a `caption` to the offending table."},cs:{msg:"Všechny tabulky označené class='numbered' musí začínat elementem caption.",hint:"Přidejte k dané tabulce element `caption`."}});var zp=Object.freeze({__proto__:null,name:Op,run:function(e){if(!e.lint?.["no-captionless-tables"])return;const t=[...document.querySelectorAll("table.numbered")].filter((e=>!(e.firstElementChild instanceof HTMLTableCaptionElement)));t.length&&rs(jp.msg,Op,{hint:jp.hint,elements:t})}});const Mp="no-unused-dfns",Up="core/linter-rules/no-unused-dfns",qp=Ir({en:{msg:e=>`Found definition for "${e}", but nothing links to it. This is usually a spec bug!`,get hint(){return ls`
You can do one of the following...
* Add a \`class="lint-ignore"\` attribute the definition.
* Either remove the definition or change \`\` to another type of HTML element.
* If you meant to ${"[export|#data-export]"} the definition, add \`class="export"\` to the definition.
- To silence this warning entirely, set \`lint: { "no-unused-dfns": false }\` in your \`respecConfig\`.`}},cs:{msg:e=>`Nalezena definice pro "${e}", ale nic na ni neodkazuje. Toto je obvykle chyba ve specifikaci!`,get hint(){return cs`
+ To silence this warning entirely, set \`lint: { "no-unused-dfns": false }\` in your \`respecConfig\`.`}},cs:{msg:e=>`Nalezena definice pro "${e}", ale nic na ni neodkazuje. Toto je obvykle chyba ve specifikaci!`,get hint(){return ls`
Můžete udělat jedno z následujícího...
* Přidejte k definici atribut \`class="lint-ignore"\`.
* Definici buď odstraňte, nebo změňte \`\` na jiný typ HTML elementu.
* Pokud jste chtěli ${"[export|#data-export]"} tuto definici, přidejte k ní \`class="export"\`.
- Pro úplné potlačení tohoto varování nastavte \`lint: { "no-unused-dfns": false }\` ve vaší \`respecConfig\`.`}}});function qp(e){return!document.querySelector(`a[href="#${e.id}"]:not(.index-term, .self-link)`)}var Wp=Object.freeze({__proto__:null,name:Mp,run:function(e){if(!e.lint?.[zp])return;const t="error"===e.lint[zp]?ts:ns;[...document.querySelectorAll("dfn:not(.lint-ignore, [data-export], [data-cite])")].filter(qp).forEach((e=>{const n=[e],r=Pr(e.textContent);t(Up.msg(r),Mp,{elements:n,hint:Up.hint})}))}});const Fp="core/linter-rules/no-headingless-sections",Bp=Nr({en:{msg:"All sections must start with a `h2-6` element.",hint:"Add a `h2-6` to the offending section or use a `
`."},nl:{msg:"Alle secties moeten beginnen met een `h2-6` element.",hint:"Voeg een `h2-6` toe aan de conflicterende sectie of gebruik een `
`。"},cs:{msg:"Všechny sekce musí začínat elementem `h2-6`.",hint:"Přidejte do problematické sekce `h2-6` nebo použijte `
`."}});var Hp=Object.freeze({__proto__:null,name:Fp,run:function(e){if(!e.lint?.["no-headingless-sections"])return;const t=[...document.querySelectorAll("section:not(.head,#abstract,#sotd)")].filter((({firstElementChild:e})=>!e||!(e.matches(".header-wrapper")||e instanceof HTMLHeadingElement)));t.length&&ns(Bp.msg,Fp,{hint:Bp.hint,elements:t})}});const Gp="core/linter-rules/no-unused-vars",Vp=Nr({en:{msg:"Variable was defined, but never used.",hint:"Add a `data-ignore-unused` attribute to the ``."},cs:{msg:"Proměnná byla definována, ale nikdy nebyla použita.",hint:"Přidejte atribut `data-ignore-unused` k elementu ``."}});var Jp=Object.freeze({__proto__:null,name:Gp,run:function(e){if(!e.lint?.["no-unused-vars"])return;const t=[],n=e=>!!e.querySelector(":scope > :not(section) ~ .algorithm, :scope > :not(section) .algorithm");for(const e of document.querySelectorAll("section")){if(!n(e))continue;const r=e.querySelectorAll(":scope > :not(section) var");if(!r.length)continue;const s=new Map;for(const e of r){const t=Pr(e.textContent),n=s.get(t)||s.set(t,[]).get(t);n?.push(e)}for(const e of s.values())1!==e.length||e[0].hasAttribute("data-ignore-unused")||t.push(e[0])}t.length&&ns(Vp.msg,Gp,{hint:Vp.hint,elements:t})}});const Kp="no-dfn-in-abstract",Zp=`core/linter-rules/${Kp}`,Yp=Nr({en:{msg:e=>`Definition \`${e}\` is in an unnumbered section (e.g. abstract or SotD).`,get hint(){return cs`Definitions in unnumbered sections (abstract, SotD) are semantically out of place and appear in the terms index without a section number. Move this definition to a numbered section such as "Terminology". See ${"[export|#data-export]"}.`}}}),Xp=["section#abstract","section#sotd","section.introductory"].join(", ");var Qp=Object.freeze({__proto__:null,name:Zp,run:function(e){if(!e.lint?.[Kp])return;const t=[...document.querySelectorAll("dfn")].filter((e=>e.closest(Xp)));t.forEach((e=>{const t=Pr(e.textContent);ns(Yp.msg(t),Zp,{hint:Yp.hint,elements:[e]})}))}});const eh="required-sections",th="w3c/linter-rules/required-sections",nh={en:{msg:e=>`W3C Recommendation track documents require a separate "${e}" section.`,hint:e=>cs`Add a \`\` with a "${e}" header. See the [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
+ Pro úplné potlačení tohoto varování nastavte \`lint: { "no-unused-dfns": false }\` ve vaší \`respecConfig\`.`}}});function Wp(e){return!document.querySelector(`a[href="#${e.id}"]:not(.index-term, .self-link)`)}var Fp=Object.freeze({__proto__:null,name:Up,run:function(e){if(!e.lint?.[Mp])return;const t="error"===e.lint[Mp]?ns:rs;[...document.querySelectorAll("dfn:not(.lint-ignore, [data-export], [data-cite])")].filter(Wp).forEach((e=>{const n=[e],r=Nr(e.textContent);t(qp.msg(r),Up,{elements:n,hint:qp.hint})}))}});const Bp="core/linter-rules/no-headingless-sections",Hp=Ir({en:{msg:"All sections must start with a `h2-6` element.",hint:"Add a `h2-6` to the offending section or use a `
`."},nl:{msg:"Alle secties moeten beginnen met een `h2-6` element.",hint:"Voeg een `h2-6` toe aan de conflicterende sectie of gebruik een `
`。"},cs:{msg:"Všechny sekce musí začínat elementem `h2-6`.",hint:"Přidejte do problematické sekce `h2-6` nebo použijte `
`."}});var Gp=Object.freeze({__proto__:null,name:Bp,run:function(e){if(!e.lint?.["no-headingless-sections"])return;const t=[...document.querySelectorAll("section:not(.head,#abstract,#sotd)")].filter((({firstElementChild:e})=>!e||!(e.matches(".header-wrapper")||e instanceof HTMLHeadingElement)));t.length&&rs(Hp.msg,Bp,{hint:Hp.hint,elements:t})}});const Vp="core/linter-rules/no-unused-vars",Jp=Ir({en:{msg:"Variable was defined, but never used.",hint:"Add a `data-ignore-unused` attribute to the ``."},cs:{msg:"Proměnná byla definována, ale nikdy nebyla použita.",hint:"Přidejte atribut `data-ignore-unused` k elementu ``."}});var Kp=Object.freeze({__proto__:null,name:Vp,run:function(e){if(!e.lint?.["no-unused-vars"])return;const t=[],n=e=>!!e.querySelector(":scope > :not(section) ~ .algorithm, :scope > :not(section) .algorithm");for(const e of document.querySelectorAll("section")){if(!n(e))continue;const r=e.querySelectorAll(":scope > :not(section) var");if(!r.length)continue;const s=new Map;for(const e of r){const t=Nr(e.textContent),n=s.get(t)||s.set(t,[]).get(t);n?.push(e)}for(const e of s.values())1!==e.length||e[0].hasAttribute("data-ignore-unused")||t.push(e[0])}t.length&&rs(Jp.msg,Vp,{hint:Jp.hint,elements:t})}});const Zp="no-dfn-in-abstract",Yp=`core/linter-rules/${Zp}`,Xp=Ir({en:{msg:e=>`Definition \`${e}\` is in an unnumbered section (e.g. abstract or SotD).`,get hint(){return ls`Definitions in unnumbered sections (abstract, SotD) are semantically out of place and appear in the terms index without a section number. Move this definition to a numbered section such as "Terminology". See ${"[export|#data-export]"}.`}}}),Qp=["section#abstract","section#sotd","section.introductory"].join(", ");var eh=Object.freeze({__proto__:null,name:Yp,run:function(e){if(!e.lint?.[Zp])return;const t=[...document.querySelectorAll("dfn")].filter((e=>e.closest(Qp)));t.forEach((e=>{const t=Nr(e.textContent);rs(Xp.msg(t),Yp,{hint:Xp.hint,elements:[e]})}))}});const th="required-sections",nh="w3c/linter-rules/required-sections",rh={en:{msg:e=>`W3C Recommendation track documents require a separate "${e}" section.`,hint:e=>ls`Add a \`\` with a "${e}" header. See the [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
If the document is not intended for the W3C Recommendation track, set ${"[noRecTrack]"} to \`true\`
- or turn off the ${`[${eh}]`} linter rule.`,privacy_considerations:"Privacy Considerations",security_considerations:"Security Considerations"},es:{msg:e=>`Documentos que van a ser "W3C Recommendation" requieren una sección "${e}" separada.`,hint:e=>cs`Agrega una \`\` con título "${e}". Ver los [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
+ or turn off the ${`[${th}]`} linter rule.`,privacy_considerations:"Privacy Considerations",security_considerations:"Security Considerations"},es:{msg:e=>`Documentos que van a ser "W3C Recommendation" requieren una sección "${e}" separada.`,hint:e=>ls`Agrega una \`\` con título "${e}". Ver los [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
Si el documento no está destinado a ser un W3C Recommendation, puedes poner ${"[noRecTrack]"} a \`true\`
- o apaga la regla de linter ${`[${eh}]`}.`,privacy_considerations:"Consideraciones de privacidad",security_considerations:"Consideraciones de Seguridad"},cs:{msg:e=>`Dokumenty na "W3C Recommendation track" vyžadují samostatnou sekci "${e}".`,hint:e=>cs`Přidejte \`\` s nadpisem "${e}". Viz [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
+ o apaga la regla de linter ${`[${th}]`}.`,privacy_considerations:"Consideraciones de privacidad",security_considerations:"Consideraciones de Seguridad"},cs:{msg:e=>`Dokumenty na "W3C Recommendation track" vyžadují samostatnou sekci "${e}".`,hint:e=>ls`Přidejte \`\` s nadpisem "${e}". Viz [Horizontal review guidelines](https://www.w3.org/Guide/documentreview/#how_to_get_horizontal_review).
Pokud dokument není určen pro "W3C Recommendation track", nastavte ${"[noRecTrack]"} na \`true\`
- nebo vypněte linter pravidlo ${`[${eh}]`}.
- `,privacy_considerations:"Zásady ochrany soukromí",security_considerations:"Zásady bezpečnosti"}},rh=Nr(nh),sh=new Set([...Ui]);sh.delete("DISC"),Mi.forEach((e=>sh.delete(e)));var ih=Object.freeze({__proto__:null,name:th,requiresSomeSectionStatus:sh,run:function(e){if(!e.lint?.[eh])return;if(!Ir(nh,"privacy_considerations")){return void ns("Cannot check for required sections as translations are not available.",th,{hint:"File an issue to add translations or use a supported language."})}if(e.noRecTrack||!sh.has(e.specStatus))return;const t="error"===e.lint[eh]?ts:ns,n=new Kr([rh.privacy_considerations,rh.security_considerations]),r=document.querySelectorAll("h2, h3, h4, h5, h6");for(const e of r){const t=e.cloneNode(!0);t.querySelectorAll("bdi")?.forEach((e=>e.remove()));const r=Pr(t.textContent);if(n.has(r)&&(n.delete(r),0===n.size))return}for(const e of n)t(rh.msg(e),th,{hint:rh.hint(e)})}});const oh="core/linter-rules/wpt-tests-exist",ah=Nr({en:{msg:"The following test could not be found in Web Platform Tests:",hint:"Check [wpt.live](https://wpt.live) to see if it was deleted or renamed."},cs:{msg:"Následující test nebyl nalezen ve Web Platform Tests:",hint:"Zkontrolujte [wpt.live](https://wpt.live), zda nebyl smazán nebo přejmenován."}});var ch=Object.freeze({__proto__:null,name:oh,run:async function(e){if(!e.lint?.["wpt-tests-exist"])return;const t=await async function(e,t){let n;try{const t=new URL(e);if(t.pathname.startsWith("/web-platform-tests/wpt/tree/master/")){const e=/web-platform-tests\/wpt\/tree\/master\/(.+)/;n=(t.pathname.match(e)?.[1]??"").replace(/\//g,"")}else n=t.pathname.replace(/\//g,"")}catch(e){return ns("Failed to parse WPT directory from testSuiteURI",`linter/${oh}`),console.error(e),null}const r=new URL("web-platform-tests/wpt/files",`${t}/`);r.searchParams.set("path",n);const s=await fetch(r);if(!s.ok){return ns(`Failed to fetch files from WPT repository. Request failed with error: ${await s.text()} (${s.status})`,`linter/${oh}`),null}const{entries:i}=await s.json(),o=i.filter((e=>!e.endsWith("/")));return new Set(o)}(e.testSuiteURI,e.githubAPI);if(!t)return;const n=[...document.querySelectorAll("[data-tests]")].filter((e=>e.dataset.tests));for(const e of n)e.dataset.tests?.split(/,/gm).map((e=>e.trim().split(/\?|#/)[0])).filter((e=>e&&!t.has(e))).map((t=>{ns(`${ah.msg} \`${t}\`.`,oh,{hint:ah.hint,elements:[e]})}))}});const lh="core/linter-rules/no-http-props",uh=Nr({en:{msg:cs`Insecure URLs are not allowed in ${"[respecConfig]"}.`,hint:"Please change the following properties to 'https://': "},zh:{msg:cs`${"[respecConfig]"} 中不允许使用不安全的URL.`,hint:"请将以下属性更改为 https://:"},cs:{msg:cs`V ${"[respecConfig]"} nejsou povoleny nezabezpečené URL adresy.`,hint:"Změňte prosím následující vlastnosti na 'https://': "}});var dh=Object.freeze({__proto__:null,name:lh,run:function(e){if(!e.lint?.["no-http-props"])return;if(!parent.location.href.startsWith("http"))return;const t=Object.getOwnPropertyNames(e).filter((t=>t.endsWith("URI")&&e[t]||"prevED"===t)).filter((t=>new URL(e[t],parent.location.href).href.startsWith("http://")));if(t.length){const e=Er(t,(e=>cs`${`[${e}]`}`));ns(uh.msg,lh,{hint:uh.hint+e})}}});const ph="core/linter-rules/a11y",hh=["color-contrast","landmark-one-main","landmark-unique","region"];function fh(e){const t=[];for(const n of e.split("\n\n")){const[e,...r]=n.split(/^\s{2}/m),s=r.map((e=>`- ${e.trimEnd()}`)).join("\n");t.push(`${e}${s}`)}return t.join("\n\n")}var mh=Object.freeze({__proto__:null,name:ph,run:async function(e){if(!e.lint?.a11y&&!e.a11y)return;const t=e.lint?.a11y||e.a11y,n=!0===t?{}:t,r=await async function(e){const{rules:t,...n}=e,r={rules:{...Object.fromEntries(hh.map((e=>[e,{enabled:!1}]))),...t},...n,elementRef:!0,resultTypes:["violations"],reporter:"v1"};let s;try{s=await function(){const e=document.createElement("script");return e.classList.add("remove"),e.src="https://cdn.jsdelivr.net/npm/axe-core@4/axe.min.js",document.head.appendChild(e),new Promise(((t,n)=>{e.onload=()=>t(window.axe),e.onerror=n}))}()}catch(e){return ts("Failed to load a11y linter.",ph),console.error(e),[]}try{const e=await(s?.run(document,r));return e?.violations??[]}catch(e){return ts("Error while looking for a11y issues.",ph),console.error(e),[]}}(n);for(const e of r){const t=new Map;for(const n of e.nodes){const{failureSummary:e,element:r}=n,s=t.get(e)||t.set(e,[]).get(e);s?.push(r)}const{id:n,help:r,description:s,helpUrl:i}=e,o=`a11y/${n}: ${r}.`;for(const[e,n]of t){const t=fh(e);ns(o,ph,{details:`\n\n${s}.\n\n${t}. ([Learn more](${i}))`,elements:n})}}}});const gh="informative-dfn",bh="core/linter-rules/informative-dfn",yh=Nr({en:{msg:(e,t)=>`Normative reference to "${e}" found but term is defined "informatively" in "${t}".`,get hint(){return cs`
+ nebo vypněte linter pravidlo ${`[${th}]`}.
+ `,privacy_considerations:"Zásady ochrany soukromí",security_considerations:"Zásady bezpečnosti"}},sh=Ir(rh),ih=new Set([...qi]);ih.delete("DISC"),Ui.forEach((e=>ih.delete(e)));var oh=Object.freeze({__proto__:null,name:nh,requiresSomeSectionStatus:ih,run:function(e){if(!e.lint?.[th])return;if(!Dr(rh,"privacy_considerations")){return void rs("Cannot check for required sections as translations are not available.",nh,{hint:"File an issue to add translations or use a supported language."})}if(e.noRecTrack||!ih.has(e.specStatus))return;const t="error"===e.lint[th]?ns:rs,n=new Zr([sh.privacy_considerations,sh.security_considerations]),r=document.querySelectorAll("h2, h3, h4, h5, h6");for(const e of r){const t=e.cloneNode(!0);t.querySelectorAll("bdi")?.forEach((e=>e.remove()));const r=Nr(t.textContent);if(n.has(r)&&(n.delete(r),0===n.size))return}for(const e of n)t(sh.msg(e),nh,{hint:sh.hint(e)})}});const ah="core/linter-rules/wpt-tests-exist",ch=Ir({en:{msg:"The following test could not be found in Web Platform Tests:",hint:"Check [wpt.live](https://wpt.live) to see if it was deleted or renamed."},cs:{msg:"Následující test nebyl nalezen ve Web Platform Tests:",hint:"Zkontrolujte [wpt.live](https://wpt.live), zda nebyl smazán nebo přejmenován."}});var lh=Object.freeze({__proto__:null,name:ah,run:async function(e){if(!e.lint?.["wpt-tests-exist"])return;const t=await async function(e,t){let n;try{const t=new URL(e);if(t.pathname.startsWith("/web-platform-tests/wpt/tree/master/")){const e=/web-platform-tests\/wpt\/tree\/master\/(.+)/;n=(t.pathname.match(e)?.[1]??"").replace(/\//g,"")}else n=t.pathname.replace(/\//g,"")}catch(e){return rs("Failed to parse WPT directory from testSuiteURI",`linter/${ah}`),console.error(e),null}const r=new URL("web-platform-tests/wpt/files",`${t}/`);r.searchParams.set("path",n);const s=await fetch(r);if(!s.ok){return rs(`Failed to fetch files from WPT repository. Request failed with error: ${await s.text()} (${s.status})`,`linter/${ah}`),null}const{entries:i}=await s.json(),o=i.filter((e=>!e.endsWith("/")));return new Set(o)}(e.testSuiteURI,e.githubAPI);if(!t)return;const n=[...document.querySelectorAll("[data-tests]")].filter((e=>e.dataset.tests));for(const e of n)e.dataset.tests?.split(/,/gm).map((e=>e.trim().split(/\?|#/)[0])).filter((e=>e&&!t.has(e))).map((t=>{rs(`${ch.msg} \`${t}\`.`,ah,{hint:ch.hint,elements:[e]})}))}});const uh="core/linter-rules/no-http-props",dh=Ir({en:{msg:ls`Insecure URLs are not allowed in ${"[respecConfig]"}.`,hint:"Please change the following properties to 'https://': "},zh:{msg:ls`${"[respecConfig]"} 中不允许使用不安全的URL.`,hint:"请将以下属性更改为 https://:"},cs:{msg:ls`V ${"[respecConfig]"} nejsou povoleny nezabezpečené URL adresy.`,hint:"Změňte prosím následující vlastnosti na 'https://': "}});var ph=Object.freeze({__proto__:null,name:uh,run:function(e){if(!e.lint?.["no-http-props"])return;if(!parent.location.href.startsWith("http"))return;const t=Object.getOwnPropertyNames(e).filter((t=>t.endsWith("URI")&&e[t]||"prevED"===t)).filter((t=>new URL(e[t],parent.location.href).href.startsWith("http://")));if(t.length){const e=Lr(t,(e=>ls`${`[${e}]`}`));rs(dh.msg,uh,{hint:dh.hint+e})}}});const hh="core/linter-rules/a11y",fh=["color-contrast","landmark-one-main","landmark-unique","region"];function mh(e){const t=[];for(const n of e.split("\n\n")){const[e,...r]=n.split(/^\s{2}/m),s=r.map((e=>`- ${e.trimEnd()}`)).join("\n");t.push(`${e}${s}`)}return t.join("\n\n")}var gh=Object.freeze({__proto__:null,name:hh,run:async function(e){if(!e.lint?.a11y&&!e.a11y)return;const t=e.lint?.a11y||e.a11y,n=!0===t?{}:t,r=await async function(e){const{rules:t,...n}=e,r={rules:{...Object.fromEntries(fh.map((e=>[e,{enabled:!1}]))),...t},...n,elementRef:!0,resultTypes:["violations"],reporter:"v1"};let s;try{s=await function(){const e=document.createElement("script");return e.classList.add("remove"),e.src="https://cdn.jsdelivr.net/npm/axe-core@4/axe.min.js",document.head.appendChild(e),new Promise(((t,n)=>{e.onload=()=>t(window.axe),e.onerror=n}))}()}catch(e){return ns("Failed to load a11y linter.",hh),console.error(e),[]}try{const e=await(s?.run(document,r));return e?.violations??[]}catch(e){return ns("Error while looking for a11y issues.",hh),console.error(e),[]}}(n);for(const e of r){const t=new Map;for(const n of e.nodes){const{failureSummary:e,element:r}=n,s=t.get(e)||t.set(e,[]).get(e);s?.push(r)}const{id:n,help:r,description:s,helpUrl:i}=e,o=`a11y/${n}: ${r}.`;for(const[e,n]of t){const t=mh(e);rs(o,hh,{details:`\n\n${s}.\n\n${t}. ([Learn more](${i}))`,elements:n})}}}});const bh="informative-dfn",yh="core/linter-rules/informative-dfn",wh=Ir({en:{msg:(e,t)=>`Normative reference to "${e}" found but term is defined "informatively" in "${t}".`,get hint(){return ls`
You can do one of the following...
* Get the source definition to be made normative
* Add a \`class="lint-ignore"\` attribute to the link.
* Use a local normative proxy for the definition à la \`term\`
- To silence this warning entirely, set \`lint: { "${gh}": false }\` in your \`respecConfig\`.`}},cs:{msg:(e,t)=>`Nalezen normativní odkaz na "${e}", ale pojem je definován pouze informativně v "${t}".`,get hint(){return cs`
+ To silence this warning entirely, set \`lint: { "${bh}": false }\` in your \`respecConfig\`.`}},cs:{msg:(e,t)=>`Nalezen normativní odkaz na "${e}", ale pojem je definován pouze informativně v "${t}".`,get hint(){return ls`
Můžete udělat jedno z následujícího...
* Požádejte o to, aby zdrojová definice byla normativní
* Přidejte atribut \`class=\"lint-ignore\"\` k odkazu.
* Použijte lokální normativní proxy pro definici, např. \`term\`
- Pro úplné potlačení tohoto varování nastavte \`lint: { \"${gh}\": false }\` ve vaší \`respecConfig\`.`}}});var wh=Object.freeze({__proto__:null,name:bh,run:function(e){if(!e.lint?.[gh])return;const t="error"===e.lint[gh]?ts:ns;Wl.forEach((({term:e,spec:n,element:r})=>{r.classList.contains("lint-ignore")||t(yh.msg(e,n),bh,{title:"Normative reference to non-normative term.",elements:[r],hint:yh.hint})}))}}),vh=Object.freeze({__proto__:null,default:'(() => {\n// @ts-check\n\nif (document.respec) {\n document.respec.ready.then(setupVarHighlighter);\n} else {\n setupVarHighlighter();\n}\n\nfunction setupVarHighlighter() {\n document\n .querySelectorAll("var")\n .forEach(varElem => varElem.addEventListener("click", highlightListener));\n}\n\n/**\n * @param {MouseEvent} ev\n */\nfunction highlightListener(ev) {\n ev.stopPropagation();\n const varElem = /** @type {HTMLElement} */ (ev.target);\n const hightligtedElems = highlightVars(varElem);\n const resetListener = () => {\n const hlColor = getHighlightColor(varElem);\n hightligtedElems.forEach(el => removeHighlight(el, hlColor));\n [...HL_COLORS.keys()].forEach(key => HL_COLORS.set(key, true));\n };\n if (hightligtedElems.length) {\n document.body.addEventListener("click", resetListener, { once: true });\n }\n}\n\n// availability of highlight colors. colors from var.css\nconst HL_COLORS = new Map([\n ["respec-hl-c1", true],\n ["respec-hl-c2", true],\n ["respec-hl-c3", true],\n ["respec-hl-c4", true],\n ["respec-hl-c5", true],\n ["respec-hl-c6", true],\n ["respec-hl-c7", true],\n]);\n\n/**\n * @param {HTMLElement} target\n */\nfunction getHighlightColor(target) {\n // return current colors if applicable\n const { value } = target.classList;\n const re = /respec-hl-\\w+/;\n const activeClass = re.test(value) && value.match(re);\n if (activeClass) return activeClass[0];\n\n // first color preference\n if (HL_COLORS.get("respec-hl-c1") === true) return "respec-hl-c1";\n\n // otherwise get some other available color\n return HL_COLORS.keys().find(c => HL_COLORS.get(c)) || "respec-hl-c1";\n}\n\n/**\n * @param {HTMLElement} varElem\n */\nfunction highlightVars(varElem) {\n const textContent = norm(varElem.textContent);\n const parent = /** @type {HTMLElement} */ (\n varElem.closest(".algorithm, section")\n );\n if (!parent) return [];\n const highlightColor = getHighlightColor(varElem);\n\n const varsToHighlight = [...parent.querySelectorAll("var")].filter(\n el =>\n norm(el.textContent) === textContent &&\n el.closest(".algorithm, section") === parent\n );\n\n // update availability of highlight color\n const colorStatus = varsToHighlight[0].classList.contains("respec-hl");\n HL_COLORS.set(highlightColor, colorStatus);\n\n // highlight vars\n if (colorStatus) {\n varsToHighlight.forEach(el => removeHighlight(el, highlightColor));\n return [];\n } else {\n varsToHighlight.forEach(el => addHighlight(el, highlightColor));\n }\n return varsToHighlight;\n}\n\n/**\n * @param {HTMLElement} el\n * @param {string} highlightColor\n */\nfunction removeHighlight(el, highlightColor) {\n el.classList.remove("respec-hl", highlightColor);\n // clean up empty class attributes so they don\'t come in export\n if (!el.classList.length) el.removeAttribute("class");\n}\n\n/**\n * @param {HTMLElement} elem\n * @param {string} highlightColor\n */\nfunction addHighlight(elem, highlightColor) {\n elem.classList.add("respec-hl", highlightColor);\n}\n\n/**\n * Same as `norm` from src/core/utils, but our build process doesn\'t allow\n * imports in runtime scripts, so duplicated here.\n * @param {string} str\n */\nfunction norm(str) {\n return str.trim().replace(/\\s+/g, " ");\n}\n})()'}),kh=Object.freeze({__proto__:null,default:'(() => {\n// @ts-check\nif (document.respec) {\n document.respec.ready.then(setupPanel);\n} else {\n setupPanel();\n}\n\nfunction setupPanel() {\n const listener = panelListener();\n document.body.addEventListener("keydown", listener);\n document.body.addEventListener("click", listener);\n}\n\nfunction panelListener() {\n /** @type {HTMLElement | null} */\n let panel = null;\n /**\n * @param {KeyboardEvent|MouseEvent} event\n */\n return event => {\n const { target, type } = event;\n\n if (!(target instanceof HTMLElement)) return;\n\n // For keys, we only care about Enter key to activate the panel\n // otherwise it\'s activated via a click.\n if (\n type === "keydown" &&\n /** @type {KeyboardEvent} */ (event).key !== "Enter"\n )\n return;\n\n const action = deriveAction(event);\n\n switch (action) {\n case "show": {\n hidePanel(panel);\n /** @type {HTMLElement | null} */\n const dfn = target.closest("dfn, .index-term");\n if (!dfn?.id) break;\n panel = document.getElementById(`dfn-panel-for-${dfn.id}`);\n if (!panel) break;\n const coords = deriveCoordinates(\n /** @type {MouseEvent|KeyboardEvent} */ (event)\n );\n displayPanel(dfn, panel, coords);\n break;\n }\n case "dock": {\n if (panel) {\n panel.style.left = "";\n panel.style.top = "";\n panel.classList.add("docked");\n }\n break;\n }\n case "hide": {\n hidePanel(panel);\n panel = null;\n break;\n }\n }\n };\n}\n\n/**\n * @param {MouseEvent|KeyboardEvent} event\n */\nfunction deriveCoordinates(event) {\n const target = /** @type HTMLElement */ (event.target);\n\n // We prevent synthetic AT clicks from putting\n // the dialog in a weird place. The AT events sometimes\n // lack coordinates, so they have clientX/Y = 0\n const rect = target.getBoundingClientRect();\n if (\n event instanceof MouseEvent &&\n event.clientX >= rect.left &&\n event.clientY >= rect.top\n ) {\n // The event probably happened inside the bounding rect...\n return { x: event.clientX, y: event.clientY };\n }\n\n // Offset to the middle of the element\n const x = rect.x + rect.width / 2;\n // Placed at the bottom of the element\n const y = rect.y + rect.height;\n return { x, y };\n}\n\n/**\n * @param {Event} event\n */\nfunction deriveAction(event) {\n const target = /** @type {HTMLElement} */ (event.target);\n const hitALink = !!target.closest("a");\n if (target.closest("dfn:not([data-cite]), .index-term")) {\n return hitALink ? "none" : "show";\n }\n if (target.closest(".dfn-panel")) {\n if (hitALink) {\n return target.classList.contains("self-link") ? "hide" : "dock";\n }\n\n const panel = /** @type {HTMLElement} */ (target.closest(".dfn-panel"));\n return panel.classList.contains("docked") ? "hide" : "none";\n }\n if (document.querySelector(".dfn-panel:not([hidden])")) {\n return "hide";\n }\n return "none";\n}\n\n/**\n * @param {HTMLElement} dfn\n * @param {HTMLElement} panel\n * @param {{ x: number, y: number }} clickPosition\n */\nfunction displayPanel(dfn, panel, { x, y }) {\n panel.hidden = false;\n // distance (px) between edge of panel and the pointing triangle (caret)\n const MARGIN = 20;\n\n const dfnRects = dfn.getClientRects();\n // Find the `top` offset when the `dfn` can be spread across multiple lines\n let closestTop = 0;\n let minDiff = Infinity;\n for (const rect of dfnRects) {\n const { top, bottom } = rect;\n const diffFromClickY = Math.abs((top + bottom) / 2 - y);\n if (diffFromClickY < minDiff) {\n minDiff = diffFromClickY;\n closestTop = top;\n }\n }\n\n const top = window.scrollY + closestTop + dfnRects[0].height;\n const left = x - MARGIN;\n panel.style.left = `${left}px`;\n panel.style.top = `${top}px`;\n\n // Find if the panel is flowing out of the window\n const panelRect = panel.getBoundingClientRect();\n const SCREEN_WIDTH = Math.min(window.innerWidth, window.screen.width);\n if (panelRect.right > SCREEN_WIDTH) {\n const newLeft = Math.max(MARGIN, x + MARGIN - panelRect.width);\n const newCaretOffset = left - newLeft;\n panel.style.left = `${newLeft}px`;\n /** @type {HTMLElement | null} */\n const caret = panel.querySelector(".caret");\n if (caret) caret.style.left = `${newCaretOffset}px`;\n }\n\n // As it\'s a dialog, we trap focus.\n // TODO: when