@pretextbook/import 0.15.1 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./upload-COaS_4pG.cjs"),m=require("./engine-routing-3ULYdLy2.cjs"),ie=/\$(?![\s$])([^$\n]{1,200})\$/;function se(e){const n=ie.exec(e);if(!n)return!1;const o=n[1];return/[\\^_{}]/.test(o)||/^[A-Za-z]'?$/.test(o.trim())}const ae=[{pattern:/\\(?:begin|end)\{[a-zA-Z*]+\}/,weight:3},{pattern:/\\\[[\s\S]*?\\\]|\$\$[\s\S]*?\$\$/,weight:3},{pattern:/\\[a-zA-Z]+\s*\{/,weight:2},{pattern:/\\\([\s\S]*?\\\)/,weight:2},{pattern:/\\[a-zA-Z]+\b/,weight:1},{pattern:/\\(?:label|ref|eqref|cite)\b/,weight:2}],ce=[{pattern:/^#{1,6}\s+\S/m,weight:3},{pattern:/^\s*```/m,weight:3},{pattern:/^\s*[-*+]\s+\S/m,weight:2},{pattern:/^\s*\d+[.)]\s+\S/m,weight:2},{pattern:/\*\*[^\s*][^*]*\*\*/,weight:2},{pattern:/\[[^\]\n]+\]\([^)\s]+\)/,weight:2},{pattern:/^\s*>\s+\S/m,weight:2},{pattern:/(?:^|\s)_[^_\s][^_\n]*_(?:\s|[.,;:!?]|$)/,weight:1},{pattern:/`[^`\n]+`/,weight:1}],le=2;function D(e,n){return n.reduce((o,{pattern:r,weight:i})=>o+(r.test(e)?i:0),0)}function $(e){return{latex:D(e,ae)+(se(e)?2:0),markdown:D(e,ce)}}function de(e){const n=e.trim();if(!n||n.startsWith("<"))return;const{latex:o,markdown:r}=$(n);if(!(Math.max(o,r)<le))return o>=r?"latex":"markdown"}const ue={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",pdf:"application/pdf",eps:"application/postscript",ps:"application/postscript",bmp:"image/bmp",tiff:"image/tiff",tif:"image/tiff",webp:"image/webp",ico:"image/vnd.microsoft.icon"};function pe(e){const n=e.split(".").pop()?.toLowerCase()??"";return ue[n]??"application/octet-stream"}const S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function me(e){const n=e.length,o=[];for(let r=0;r<n;r+=3){const i=e[r],a=r+1<n,s=r+2<n,c=a?e[r+1]:0,l=s?e[r+2]:0;o.push(S[i>>2]),o.push(S[(i&3)<<4|c>>4]),o.push(a?S[(c&15)<<2|l>>6]:"="),o.push(s?S[l&63]:"=")}return o.join("")}function j(e){return{ref:e.ref,fileName:e.fileName,contentType:pe(e.fileName),data:me(e.data)}}function X(e){return{ref:e.xmlId,source:e.content,sourceFormat:e.sourceFormat,isRoot:e.isRoot}}function z(e){return{title:e.title,docinfo:e.docinfo,documentKind:e.documentKind,divisions:e.divisions.map(X),assets:e.assets.map(j)}}function fe(e){return{ref:e.ref,kind:"file",title:e.fileName,short_description:e.fileName,file:{filename:e.fileName,content_type:e.contentType,data:e.data}}}function U(e){return{title:e.title,docinfo:e.docinfo,document_type:e.documentKind,divisions_attributes:e.divisions.map(n=>({ref:n.ref,source:n.source,source_format:n.sourceFormat,is_root:n.isRoot})),assets_attributes:e.assets.map(fe)}}function he(e){return U(z(e))}function ge(e,n){const{root:o,entries:r}=t.insertEntries(e,n),i=new Set(r.map(s=>s.xmlId)),a=e.divisions.filter(s=>!i.has(s.xmlId)&&!(n.unwrapRoot&&s.xmlId===o.xmlId));return{divisions:[...r,...a].map(X),assets:e.assets.map(j),placeholders:r.map(s=>`<plus:${s.type} ref="${s.xmlId}"/>`)}}const C=/<(\/?)p(?=[\s>/])/g;function Te(e){let n=0;C.lastIndex=0;let o;for(;(o=C.exec(e))!==null;)n+=o[1]?-1:1;return n>0}const xe=new RegExp(`<(${t.PRETEXT_DIVISION_TAGS.join("|")})(?=[\\s>/])`);function Pe(e){return xe.exec(e)?.[1]}function W(e,n,o){return e.split(`
2
- `).map((r,i)=>i===0&&o?r:r&&n+r).join(`
3
- `)}const G=new Set(`abbr acro ad alert am angles articletitle attr bc c ca cd chord copyleft
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./upload-COaS_4pG.cjs"),u=require("./engine-routing-5CVs5pr5.cjs"),ue=require("@pretextbook/format"),be=/\$(?![\s$])([^$\n]{1,200})\$/;function ge(e){const t=be.exec(e);if(!t)return!1;const i=t[1];return/[\\^_{}]/.test(i)||/^[A-Za-z]'?$/.test(i.trim())}const he=[{pattern:/\\(?:begin|end)\{[a-zA-Z*]+\}/,weight:3},{pattern:/\\\[[\s\S]*?\\\]|\$\$[\s\S]*?\$\$/,weight:3},{pattern:/\\[a-zA-Z]+\s*\{/,weight:2},{pattern:/\\\([\s\S]*?\\\)/,weight:2},{pattern:/\\[a-zA-Z]+\b/,weight:1},{pattern:/\\(?:label|ref|eqref|cite)\b/,weight:2}],xe=[{pattern:/^#{1,6}\s+\S/m,weight:3},{pattern:/^\s*```/m,weight:3},{pattern:/^\s*[-*+]\s+\S/m,weight:2},{pattern:/^\s*\d+[.)]\s+\S/m,weight:2},{pattern:/\*\*[^\s*][^*]*\*\*/,weight:2},{pattern:/\[[^\]\n]+\]\([^)\s]+\)/,weight:2},{pattern:/^\s*>\s+\S/m,weight:2},{pattern:/(?:^|\s)_[^_\s][^_\n]*_(?:\s|[.,;:!?]|$)/,weight:1},{pattern:/`[^`\n]+`/,weight:1}],fe=new RegExp([/<\/[A-Za-z_][\w.:-]*\s*>/,/<[A-Za-z_][\w.:-]*(?:\s+[\w.:-]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*\/>/,/<[A-Za-z_][\w.:-]*(?:\s+[\w.:-]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))+\s*>/,/<!--|<!\[CDATA\[|<\?[A-Za-z]/].map(e=>e.source).join("|"));function B(e){return fe.test(e)}const ke=2;function D(e,t){return t.reduce((i,{pattern:a,weight:l})=>i+(a.test(e)?l:0),0)}function K(e){return{latex:D(e,he)+(ge(e)?2:0),markdown:D(e,xe)}}function ye(e){const t=e.trim();if(!t||t.startsWith("<")||B(t))return;const{latex:i,markdown:a}=K(t);if(!(Math.max(i,a)<ke))return i>=a?"latex":"markdown"}const qe={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",pdf:"application/pdf",eps:"application/postscript",ps:"application/postscript",bmp:"image/bmp",tiff:"image/tiff",tif:"image/tiff",webp:"image/webp",ico:"image/vnd.microsoft.icon"};function ve(e){const t=e.split(".").pop()?.toLowerCase()??"";return qe[t]??"application/octet-stream"}const w="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function we(e){const t=e.length,i=[];for(let a=0;a<t;a+=3){const l=e[a],n=a+1<t,s=a+2<t,o=n?e[a+1]:0,c=s?e[a+2]:0;i.push(w[l>>2]),i.push(w[(l&3)<<4|o>>4]),i.push(n?w[(o&15)<<2|c>>6]:"="),i.push(s?w[c&63]:"=")}return i.join("")}function G(e){return{ref:e.ref,fileName:e.fileName,contentType:ve(e.fileName),data:we(e.data)}}function H(e){return{ref:e.xmlId,source:e.content,sourceFormat:e.sourceFormat,isRoot:e.isRoot}}function V(e){return{title:e.title,docinfo:e.docinfo,documentKind:e.documentKind,divisions:e.divisions.map(H),assets:e.assets.map(G)}}function Te(e){return{ref:e.ref,kind:"file",title:e.fileName,short_description:e.fileName,file:{filename:e.fileName,content_type:e.contentType,data:e.data}}}function Z(e){return{title:e.title,docinfo:e.docinfo,document_type:e.documentKind,divisions_attributes:e.divisions.map(t=>({ref:t.ref,source:t.source,source_format:t.sourceFormat,is_root:t.isRoot})),assets_attributes:e.assets.map(Te)}}function Ee(e){return Z(V(e))}function Pe(e,t){const{root:i,entries:a}=r.insertEntries(e,t),l=new Set(a.map(s=>s.xmlId)),n=e.divisions.filter(s=>!l.has(s.xmlId)&&!(t.unwrapRoot&&s.xmlId===i.xmlId));return{divisions:[...a,...n].map(H),assets:e.assets.map(G),placeholders:a.map(s=>`<plus:${s.type} ref="${s.xmlId}"/>`)}}const C=/<(\/?)p(?=[\s>/])/g;function Se(e){let t=0;C.lastIndex=0;let i;for(;(i=C.exec(e))!==null;)t+=i[1]?-1:1;return t>0}const Ie=new RegExp(`<(${r.PRETEXT_DIVISION_TAGS.join("|")})(?=[\\s>/])`);function Ae(e){return Ie.exec(e)?.[1]}function Y(e,t,i){return e.split(`
2
+ `).map((a,l)=>l===0&&i?a:a&&t+a).join(`
3
+ `)}const J=new Set(`abbr acro ad alert am angles articletitle attr bc c ca cd chord copyleft
4
4
  copyright custom dataurl dblbrackets dblprime degree delete dl doubleflat
5
5
  doublesharp eg ellipsis em email etal etc fillin flat fn foreign icon idx
6
6
  ie init insert kbd langle latex ldblbracket line lq lsq m md mdash midpoint
@@ -8,6 +8,6 @@
8
8
  plusminus pm prime ps pubtitle q quantity rangle rdblbracket registered rq
9
9
  rsq scaledeg section-mark servicemark sharp solidus sq stale swungdash tag
10
10
  tage taxon term tex timeofday times timesignature today trademark ul url
11
- var viz vs xelatex xetex xref`.trim().split(/\s+/)),M=/<!--[\s\S]*?-->/g;function y(e,n){M.lastIndex=0;let o=0,r;for(;(r=M.exec(n))!==null;)r.index>o&&O(e,n.slice(o,r.index)),e.push({kind:"comment",text:r[0]}),o=r.index+r[0].length;o<n.length&&O(e,n.slice(o))}function O(e,n){e.push({kind:"text",text:n,meaningful:/\S/.test(n)})}function Ee(e){const n=[];let o=0;for(const r of t.findTopLevelElementsMatching(e,()=>!0))r.start>o&&y(n,e.slice(o,r.start)),n.push({kind:"element",text:r.outer,paragraphContent:G.has(r.name)}),o=r.end;return o<e.length&&y(n,e.slice(o)),n}function w(e){return e.kind==="comment"||e.kind==="text"&&!e.meaningful}function Ie(e){const n=e.map(u=>u.text).join("");if(!e.some(u=>!w(u)))return n;let o=0,r=e.length;for(;o<r&&w(e[o]);)o+=1;for(;r>o&&w(e[r-1]);)r-=1;const i=e.slice(0,o).map(u=>u.text).join(""),a=e.slice(o,r).map(u=>u.text).join(""),s=e.slice(r).map(u=>u.text).join(""),c=/^\s*/.exec(a)[0],l=/\s*$/.exec(a)[0],d=a.slice(c.length,a.length-l.length);return`${i}${c}<p>${d}</p>${l}${s}`}function K(e){const n=[];let o=[];const r=()=>{o.length>0&&(n.push(Ie(o)),o=[])};for(const i of Ee(e))i.kind==="element"&&!i.paragraphContent?(r(),n.push(i.text)):o.push(i);return r(),n.join("")}function Se(e){const n=t.findTopLevelElementsMatching(e,()=>!0),[o]=n;if(n.length===1&&o.name==="p"&&o.start===0&&o.end===e.length)return{markup:o.inner.trim()};const r=n.filter(s=>!G.has(s.name)),i=r.find(s=>s.name!=="p"),a=[];return i&&a.push(`Pasted content produced a <${i.name}>, which cannot sit inside a <p>. It was inserted as-is — move it out of the paragraph to make the document valid.`),r.some(s=>s.name==="p")&&a.push("Pasted content produced more than one paragraph, which cannot sit inside a <p>. It was inserted as-is — split the surrounding paragraph to make the document valid."),{markup:e,warning:a.length>0?a.join(" "):void 0}}function ve(e,n){const o=e.trim(),r=n.inline?Se(o):{markup:K(o)};return n.baseIndent&&(r.markup=W(r.markup,n.baseIndent,n.midLine)),r}const v={mainSourcePath:"source/main.ptx",publicationPath:"publication/publication.ptx",projectFilePath:"project.ptx",docinfoPath:"source/docinfo.ptx"};function H(e){return t.findAnyElement(e,"pretext")?e:`<pretext>
11
+ var viz vs xelatex xetex xref`.trim().split(/\s+/)),z=/<!--[\s\S]*?-->/g;function N(e,t){z.lastIndex=0;let i=0,a;for(;(a=z.exec(t))!==null;)a.index>i&&O(e,t.slice(i,a.index)),e.push({kind:"comment",text:a[0]}),i=a.index+a[0].length;i<t.length&&O(e,t.slice(i))}function O(e,t){e.push({kind:"text",text:t,meaningful:/\S/.test(t)})}function _e(e){const t=[];let i=0;for(const a of r.findTopLevelElementsMatching(e,()=>!0))a.start>i&&N(t,e.slice(i,a.start)),t.push({kind:"element",text:a.outer,paragraphContent:J.has(a.name)}),i=a.end;return i<e.length&&N(t,e.slice(i)),t}function S(e){return e.kind==="comment"||e.kind==="text"&&!e.meaningful}function je(e){const t=e.map(p=>p.text).join("");if(!e.some(p=>!S(p)))return t;let i=0,a=e.length;for(;i<a&&S(e[i]);)i+=1;for(;a>i&&S(e[a-1]);)a-=1;const l=e.slice(0,i).map(p=>p.text).join(""),n=e.slice(i,a).map(p=>p.text).join(""),s=e.slice(a).map(p=>p.text).join(""),o=/^\s*/.exec(n)[0],c=/\s*$/.exec(n)[0],m=n.slice(o.length,n.length-c.length);return`${l}${o}<p>${m}</p>${c}${s}`}function Q(e){const t=[];let i=[];const a=()=>{i.length>0&&(t.push(je(i)),i=[])};for(const l of _e(e))l.kind==="element"&&!l.paragraphContent?(a(),t.push(l.text)):i.push(l);return a(),t.join("")}function Le(e){const t=r.findTopLevelElementsMatching(e,()=>!0),[i]=t;if(t.length===1&&i.name==="p"&&i.start===0&&i.end===e.length)return{markup:i.inner.trim()};const a=t.filter(s=>!J.has(s.name)),l=a.find(s=>s.name!=="p"),n=[];return l&&n.push(`Pasted content produced a <${l.name}>, which cannot sit inside a <p>. It was inserted as-is — move it out of the paragraph to make the document valid.`),a.some(s=>s.name==="p")&&n.push("Pasted content produced more than one paragraph, which cannot sit inside a <p>. It was inserted as-is — split the surrounding paragraph to make the document valid."),{markup:e,warning:n.length>0?n.join(" "):void 0}}function Fe(e,t){const i=e.trim(),a=t.inline?Le(i):{markup:Q(i)};return t.baseIndent&&(a.markup=Y(a.markup,t.baseIndent,t.midLine)),a}const Re={elementChildren:{abbr:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},abstract:{elements:["audio","blockquote","console","idx","image","p","pre","program","tabular","video"],attributes:["component","label","xml:id"]},accessed:{elements:["date"],attributes:[]},acknowledgement:{elements:["aside","audio","biographical","blockquote","console","historical","idx","image","p","paragraphs","pre","program","sbsgroup","sidebyside","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},acro:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},activity:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","postlude","pre","prelude","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video","webwork"],attributes:["component","label","workspace","xml:id","xml:lang"]},ad:{elements:[],attributes:[]},affiliation:{elements:["department","institution","location","position"],attributes:[]},alert:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},algorithm:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},alteration:{elements:["copyleft","copyright","dblprime","degree","ellipsis","flat","icon","kbd","langle","ldblbracket","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","sharp","solidus","swungdash","times","trademark"],attributes:[]},am:{elements:[],attributes:[]},angles:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},answer:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","proof","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},appendix:{elements:["activity","algorithm","aside","assemblage","assumption","audio","author","axiom","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exercises","exploration","fact","figure","fragment","glossary","handout","headnote","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","notation-list","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","reading-questions","references","remark","sage","sbsgroup","section","shorttitle","sidebyside","solutions","subsection","table","tabular","technology","theorem","title","video","warning","worksheet"],attributes:["component","label","xml:id","xml:lang"]},archive:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},archive_location:{elements:[],attributes:[]},article:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","backmatter","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exercises","exploration","fact","figure","fragment","frontmatter","glossary","handout","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","reading-questions","references","remark","sage","sbsgroup","section","shorttitle","sidebyside","solutions","subtitle","table","tabular","technology","theorem","title","video","warning","worksheet"],attributes:["component","label","xml:id","xml:lang"]},articletitle:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},aside:{elements:["audio","blockquote","console","idx","image","p","pre","program","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},assemblage:{elements:["audio","blockquote","console","idx","image","p","pre","program","sbsgroup","sidebyside","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},assumption:{elements:["creator","idx","origins","statement","title"],attributes:["component","label","xml:id","xml:lang"]},asymptote:{elements:[],attributes:["component","label"]},"asymptote-preamble":{elements:[],attributes:[]},attr:{elements:[],attributes:[]},attribution:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","line","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component"]},audio:{elements:[],attributes:["component","end","href","label","margins","source","start","width","xml:id"]},author:{elements:["abbr","acro","ad","affiliation","alert","am","angles","articletitle","attr","bc","biography","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","department","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","institution","kbd","langle","latex","ldblbracket","location","lq","lsq","m","mdash","midpoint","minus","n","name","natural","nb","nbsp","ndash","obelus","permille","personname","pf","phonomark","pilcrow","plusminus","pm","position","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","support","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex","xref"],attributes:["corresponding","halign","xml:id"]},"author-biographies":{elements:[],attributes:["length"]},axiom:{elements:["creator","idx","origins","statement","title"],attributes:["component","label","xml:id","xml:lang"]},backmatter:{elements:["appendix","colophon","glossary","idx","index","references","solutions","title"],attributes:["component","label","xml:id","xml:lang"]},bc:{elements:[],attributes:[]},bibinfo:{elements:["author","copyright","credit","date","edition","editor","event","keywords","support","website"],attributes:[]},biblio:{elements:["abbr","accessed","acro","ad","alert","am","angles","archive","archive_location","articletitle","attr","author","bc","c","ca","chapter-number","chord","collection-number","collection-title","container-title","container-title-short","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","DOI","doubleflat","doublesharp","edition","editor","eg","ellipsis","em","email","etal","etc","event","fillin","flat","foreign","genre","ibid","icon","idx","ie","init","insert","ISBN","ISSN","issue","issued","journal","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","note","number","number-of-pages","number-of-volumes","obelus","page","page-first","pages","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","publisher","publisher-place","pubnote","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","series","servicemark","sharp","solidus","sq","stale","status","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","title","today","trademark","translator","url","URL","var","version","viz","volume","vs","webwork","xelatex","xetex","xref","year"],attributes:["component","label","type","xml:id"]},biographical:{elements:["audio","blockquote","console","idx","image","p","pre","program","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},biography:{elements:["aside","audio","biographical","blockquote","console","historical","idx","image","p","paragraphs","pre","program","sbsgroup","sidebyside","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},blockquote:{elements:["attribution","idx","p","title"],attributes:["component","label","xml:id","xml:lang"]},blurb:{elements:[],attributes:["shelf"]},book:{elements:["backmatter","chapter","frontmatter","handout","idx","part","plaintitle","shorttitle","subtitle","title","worksheet"],attributes:["component","label","xml:id","xml:lang"]},c:{elements:[],attributes:[]},ca:{elements:[],attributes:[]},caption:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component"]},case:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","direction","label","xml:id","xml:lang"]},cd:{elements:["cline"],attributes:["latexsep","showspaces"]},cell:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","line","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","p","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","tn","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["bottom","colspan","halign","right"]},chapter:{elements:["activity","algorithm","aside","assemblage","assumption","audio","author","axiom","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exercises","exploration","fact","figure","fragment","glossary","handout","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","reading-questions","references","remark","sage","sbsgroup","section","shorttitle","sidebyside","solutions","table","tabular","technology","theorem","title","video","warning","worksheet"],attributes:["component","label","xml:id","xml:lang"]},"chapter-number":{elements:[],attributes:[]},checkpoint:{elements:["feedback","prompt"],attributes:["answer","answer-variable","line"]},chord:{elements:["alteration"],attributes:["bass","bps","mode","parentheses","root","suspended"]},claim:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},cline:{elements:[],attributes:[]},code:{elements:[],attributes:[]},col:{elements:[],attributes:["halign","right","top","width"]},"collection-number":{elements:[],attributes:[]},"collection-title":{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},colophon:{elements:["audio","blockquote","colophon-items","console","idx","image","p","pre","program","sbsgroup","sidebyside","tabular","video"],attributes:["component","label","xml:id"]},"colophon-items":{elements:[],attributes:[]},computation:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},conclusion:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","idx","image","insight","investigation","lemma","list","list-of","listing","note","observation","openconjecture","openproblem","openquestion","p","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","sidebyside","table","tabular","technology","theorem","title","video","warning"],attributes:["component","label","xml:id","xml:lang"]},conjecture:{elements:["creator","idx","origins","statement","title"],attributes:["component","label","xml:id","xml:lang"]},console:{elements:["input","output"],attributes:["component","continuation","margins","prompt","width"]},"container-title":{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},"container-title-short":{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},context:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},contributor:{elements:["affiliation","department","email","idx","institution","location","personname"],attributes:["component","label","xml:id"]},contributors:{elements:["contributor"],attributes:[]},convention:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},copyleft:{elements:[],attributes:[]},copyright:{elements:["holder","minilicense","shortlicense","year"],attributes:[]},corollary:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},creator:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["component"]},credit:{elements:["author","entity","role","title"],attributes:[]},custom:{elements:[],attributes:["ref"]},data:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},dataurl:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["href","source","visual"]},date:{elements:["ad","am","bc","ca","copyleft","copyright","dblprime","degree","eg","ellipsis","etal","etc","fillin","icon","ie","kbd","langle","latex","ldblbracket","lq","lsq","mdash","midpoint","minus","nb","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","quantity","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","tex","timeofday","times","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["day","month","year"]},dblbrackets:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},dblprime:{elements:[],attributes:[]},dedication:{elements:["idx","p","title"],attributes:["component","label","xml:id","xml:lang"]},defaults:{elements:["images","parsons","programs","slides","xrefs"],attributes:[]},definition:{elements:["creator","idx","notation","origins","statement","title"],attributes:["component","label","workspace","xml:id","xml:lang"]},degree:{elements:[],attributes:[]},delete:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},department:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","line","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},description:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","line","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","p","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tabular","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]},directories:{elements:[],attributes:["data","external"]},discussion:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},dl:{elements:["li"],attributes:["component","pause","width"]},docinfo:{elements:["asymptote-preamble","author-biographies","blurb","defaults","directories","document-id","doenetml","initialism","latex-image-preamble","logo","macros","math-package","pf:prefigure-preamble","rename"],attributes:["component","xml:lang"]},"document-id":{elements:[],attributes:["edition"]},doenetml:{elements:[],attributes:["version"]},DOI:{elements:[],attributes:[]},doubleflat:{elements:[],attributes:[]},doublesharp:{elements:[],attributes:[]},"dropping-particle":{elements:[],attributes:[]},edition:{elements:[],attributes:[]},editor:{elements:["affiliation","department","email","institution","location","name","personname","position"],attributes:[]},eg:{elements:[],attributes:[]},ellipsis:{elements:[],attributes:[]},em:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},email:{elements:[],attributes:[]},entity:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},etal:{elements:[],attributes:[]},etc:{elements:[],attributes:[]},event:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},example:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","pre","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},exercise:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","pre","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video","webwork"],attributes:["component","label","number","workspace","xml:id","xml:lang"]},exercisegroup:{elements:["conclusion","exercise","idx","introduction","title"],attributes:["cols","component","label","xml:id","xml:lang"]},exercises:{elements:["conclusion","exercise","exercisegroup","idx","introduction","plaintitle","shorttitle","subexercises","title"],attributes:["component","label","xml:id","xml:lang"]},exploration:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","postlude","pre","prelude","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video","webwork"],attributes:["component","label","workspace","xml:id","xml:lang"]},fact:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},family:{elements:[],attributes:[]},feedback:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},figure:{elements:["audio","caption","idx","image","p","sbsgroup","score","sidebyside","stack","title","video"],attributes:["component","label","landscape","xml:id","xml:lang"]},fillin:{elements:[],attributes:["characters","cols","fill","rows"]},flat:{elements:[],attributes:[]},fn:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","idx","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component","label","xml:id"]},foreign:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["xml:lang"]},fragment:{elements:["code","fragref","title"],attributes:["filename","xml:id"]},fragref:{elements:[],attributes:["ref"]},frontmatter:{elements:["abstract","acknowledgement","bibinfo","biography","colophon","dedication","idx","preface","title","titlepage"],attributes:["component","label","xml:id","xml:lang"]},genre:{elements:[],attributes:[]},genus:{elements:[],attributes:[]},gi:{elements:["aside","audio","biographical","blockquote","console","historical","idx","image","p","pre","program","sbsgroup","sidebyside","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},given:{elements:[],attributes:[]},glossary:{elements:["gi","headnote","idx","plaintitle","shorttitle","title"],attributes:["component","label","xml:id","xml:lang"]},h:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["sortby"]},handout:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","page","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","shorttitle","sidebyside","table","tabular","technology","theorem","title","video","warning"],attributes:["bottom","component","label","left","margin","right","top","xml:id","xml:lang"]},headnote:{elements:["aside","audio","biographical","blockquote","console","historical","image","p","pre","program","sbsgroup","sidebyside","tabular","video"],attributes:[]},heuristic:{elements:["creator","idx","origins","statement","title"],attributes:["component","label","xml:id","xml:lang"]},hint:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","proof","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},historical:{elements:["audio","blockquote","console","idx","image","p","pre","program","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},holder:{elements:[],attributes:[]},hypothesis:{elements:["creator","idx","origins","statement","title"],attributes:["component","label","xml:id","xml:lang"]},ibid:{elements:[],attributes:[]},icon:{elements:[],attributes:["name"]},identity:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},idx:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","h","icon","idx","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","see","seealso","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["component","finish","label","sortby","start","xml:id"]},ie:{elements:[],attributes:[]},image:{elements:["asymptote","description","latex-image","mermaid","pf:prefigure","sageplot","shortdescription"],attributes:["archive","component","decorative","margins","pause","pg-name","rotate","source","width","xml:id"]},images:{elements:[],attributes:["margins","width"]},index:{elements:["headnote","idx","index-list","plaintitle","shorttitle","title"],attributes:["component","label","xml:id","xml:lang"]},"index-list":{elements:[],attributes:[]},init:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},initialism:{elements:[],attributes:[]},input:{elements:[],attributes:["continuation","prompt"]},insert:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},insight:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},institution:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","line","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},instruction:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]},intertext:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},introduction:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","idx","image","insight","investigation","lemma","list","list-of","listing","note","observation","openconjecture","openproblem","openquestion","p","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","sidebyside","table","tabular","technology","theorem","title","video","warning"],attributes:["component","label","xml:id","xml:lang"]},investigation:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","postlude","pre","prelude","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video","webwork"],attributes:["component","label","workspace","xml:id","xml:lang"]},iotest:{elements:["input","output"],attributes:[]},ISBN:{elements:[],attributes:[]},ISSN:{elements:[],attributes:[]},issue:{elements:[],attributes:[]},issued:{elements:["date"],attributes:[]},journal:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},kbd:{elements:[],attributes:["name"]},keyword:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:["primary"]},keywords:{elements:["keyword","title"],attributes:["authority","variant"]},langle:{elements:[],attributes:[]},latex:{elements:[],attributes:[]},"latex-image":{elements:[],attributes:["component","label"]},"latex-image-preamble":{elements:[],attributes:[]},ldblbracket:{elements:[],attributes:[]},lemma:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},letter:{elements:[],attributes:[]},li:{elements:["abbr","acro","ad","alert","am","angles","articletitle","aside","attr","audio","bc","biographical","blockquote","c","ca","cd","chord","console","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","dl","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","figure","fillin","flat","fn","foreign","historical","icon","idx","ie","image","init","insert","kbd","langle","latex","ldblbracket","list","listing","lq","lsq","m","md","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","notation","obelus","ol","p","permille","pf","phonomark","pilcrow","plusminus","pm","pre","prefigure","pretext","prime","program","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","sage","sbsgroup","scaledeg","section-mark","servicemark","sharp","sidebyside","solidus","sq","stale","swungdash","table","tabular","tag","tage","taxon","term","tex","timeofday","times","timesignature","title","today","trademark","ul","url","var","video","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component","label","xml:id","xml:lang"]},line:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["indent"]},list:{elements:["conclusion","dl","idx","introduction","ol","plaintitle","shorttitle","title","ul"],attributes:["component","label","landscape","xml:id","xml:lang"]},"list-of":{elements:[],attributes:["divisions","elements","empty","scope"]},listing:{elements:["console","idx","plaintitle","program","shorttitle","title"],attributes:["component","label","landscape","xml:id","xml:lang"]},literal:{elements:[],attributes:[]},location:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","line","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},logo:{elements:[],attributes:["llx","lly","pages","source","width"]},lq:{elements:[],attributes:[]},lsq:{elements:[],attributes:[]},m:{elements:["fillin","var"],attributes:[]},"macro-file":{elements:[],attributes:[]},macros:{elements:[],attributes:[]},mag:{elements:[],attributes:[]},"math-package":{elements:[],attributes:["latex-name","mathjax-name"]},md:{elements:["fillin","idx","intertext","mrow","var","xref"],attributes:["alignat-columns","alignment","break","component","number","tag","xml:id"]},mdash:{elements:[],attributes:[]},memo:{elements:[],attributes:[]},mermaid:{elements:[],attributes:["component","label"]},midpoint:{elements:[],attributes:[]},minilicense:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]},minus:{elements:[],attributes:[]},mrow:{elements:["fillin","idx","var","xref"],attributes:["break","component","label","number","tag","xml:id"]},n:{elements:[],attributes:["acc","octave","pc"]},name:{elements:["dropping-particle","family","given","literal","non-dropping-particle","static-ordering","suffix"],attributes:[]},natural:{elements:[],attributes:[]},nb:{elements:[],attributes:[]},nbsp:{elements:[],attributes:[]},ndash:{elements:[],attributes:[]},"non-dropping-particle":{elements:[],attributes:[]},notation:{elements:["description","usage"],attributes:[]},"notation-list":{elements:[],attributes:[]},note:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},number:{elements:[],attributes:[]},"number-of-pages":{elements:[],attributes:[]},"number-of-volumes":{elements:[],attributes:[]},obelus:{elements:[],attributes:[]},objectives:{elements:["conclusion","dl","idx","introduction","ol","title","ul"],attributes:["component","label","xml:id","xml:lang"]},observation:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},ol:{elements:["li"],attributes:["cols","component","marker","pause"]},openconjecture:{elements:["conclusion","context","creator","discussion","idx","introduction","opinion","origins","postlude","prelude","statement","status","suggestion","task","title"],attributes:["component","label","xml:id","xml:lang"]},openproblem:{elements:["conclusion","context","creator","discussion","idx","introduction","opinion","origins","postlude","prelude","statement","status","suggestion","task","title"],attributes:["component","label","xml:id","xml:lang"]},openquestion:{elements:["conclusion","context","creator","discussion","idx","introduction","opinion","origins","postlude","prelude","statement","status","suggestion","task","title"],attributes:["component","label","xml:id","xml:lang"]},opinion:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},origins:{elements:["xref"],attributes:["component"]},outcomes:{elements:["conclusion","dl","idx","introduction","ol","title","ul"],attributes:["component","label","xml:id","xml:lang"]},output:{elements:[],attributes:[]},p:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","cd","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","dl","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","fn","foreign","icon","idx","ie","init","insert","kbd","langle","latex","ldblbracket","line","lq","lsq","m","md","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","notation","obelus","ol","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","ul","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component","label","pause","workspace","xml:id"]},page:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","image","insight","investigation","lemma","list","list-of","listing","note","observation","openconjecture","openproblem","openquestion","p","paragraphs","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","sidebyside","table","tabular","technology","theorem","video","warning"],attributes:[]},"page-first":{elements:[],attributes:[]},pages:{elements:[],attributes:["end","start"]},paragraphs:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","idx","image","insight","investigation","lemma","list","list-of","listing","note","observation","openconjecture","openproblem","openquestion","p","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","sidebyside","table","tabular","technology","theorem","title","video","warning"],attributes:["component","label","xml:id","xml:lang"]},parsons:{elements:[],attributes:["language"]},part:{elements:["chapter","idx","plaintitle","shorttitle","title"],attributes:["component","label","xml:id","xml:lang"]},per:{elements:[],attributes:["base","exp","prefix"]},permille:{elements:[],attributes:[]},personname:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},pf:{elements:[],attributes:["language"]},"pf:prefigure":{elements:[],attributes:["label"]},"pf:prefigure-preamble":{elements:[],attributes:[]},"pg-code":{elements:[],attributes:[]},"pg-macros":{elements:["macro-file"],attributes:[]},phonomark:{elements:[],attributes:[]},pilcrow:{elements:[],attributes:[]},plaintitle:{elements:[],attributes:["component"]},plusminus:{elements:[],attributes:[]},pm:{elements:[],attributes:[]},poem:{elements:["author","idx","line","stanza","title"],attributes:["component","halign","label","xml:id","xml:lang"]},position:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","line","lq","lsq","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},postamble:{elements:[],attributes:["visible"]},postlude:{elements:["audio","blockquote","console","image","p","pre","program","tabular","video"],attributes:[]},pre:{elements:["cline"],attributes:[]},preamble:{elements:[],attributes:["visible"]},preface:{elements:["aside","attribution","audio","biographical","blockquote","console","contributors","historical","idx","image","p","paragraphs","pre","program","sbsgroup","sidebyside","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},prefigure:{elements:[],attributes:[]},prelude:{elements:["audio","blockquote","console","image","p","pre","program","tabular","video"],attributes:[]},pretext:{elements:["article","book","docinfo","letter","memo","slideshow"],attributes:["xml:lang"]},prime:{elements:[],attributes:[]},principle:{elements:["creator","idx","origins","statement","title"],attributes:["component","label","xml:id","xml:lang"]},problem:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","pre","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},program:{elements:["checkpoint","code","postamble","preamble","stdin","tests"],attributes:["add-files","autorun","chatcodes","codelens","codetailor","codetailor-fallback","compile-also","compiler-args","component","database","datafile","download","extra-compiler-args","filename","hidecode","highlight-lines","include","interactive","interpreter-args","label","language","line-numbers","linker-args","margins","pck","scene","starting-step","timelimit","width","xml:id"]},programs:{elements:[],attributes:["compiler-args","download","interpreter-args","language","linenumbers","linker-args","timeout"]},project:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","postlude","pre","prelude","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video","webwork"],attributes:["component","label","workspace","xml:id","xml:lang"]},prompt:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},proof:{elements:["aside","audio","biographical","blockquote","case","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","ref","text","workspace","xml:id","xml:lang"]},proposition:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},ps:{elements:[],attributes:[]},publisher:{elements:[],attributes:[]},"publisher-place":{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},pubnote:{elements:["copyleft","copyright","dblprime","degree","ellipsis","icon","kbd","langle","ldblbracket","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","permille","phonomark","pilcrow","plusminus","prime","rangle","rdblbracket","registered","rq","rsq","section-mark","servicemark","solidus","swungdash","times","trademark"],attributes:[]},pubtitle:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},q:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},quantity:{elements:["mag","per","unit"],attributes:[]},question:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","figure","hint","historical","idx","image","introduction","list","listing","p","pre","program","sage","sbsgroup","sidebyside","solution","statement","table","tabular","task","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},rangle:{elements:[],attributes:[]},rdblbracket:{elements:[],attributes:[]},"reading-questions":{elements:["conclusion","exercise","idx","introduction","plaintitle","shorttitle","title"],attributes:["component","label","xml:id","xml:lang"]},references:{elements:["biblio","headnote","idx","plaintitle","shorttitle","title"],attributes:["component","label","xml:id","xml:lang"]},registered:{elements:[],attributes:[]},remark:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},rename:{elements:[],attributes:["element","xml:lang"]},role:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]},row:{elements:["cell"],attributes:["bottom","halign","header","left","valign"]},rq:{elements:[],attributes:[]},rsq:{elements:[],attributes:[]},sage:{elements:["input","output"],attributes:["auto-evaluate","component","doctest","language","tolerance","type"]},sageplot:{elements:[],attributes:["aspect","component","label","variant"]},sbsgroup:{elements:["sidebyside"],attributes:["component","landscape","margins","pause","valign","valigns","width","widths","xml:id"]},scaledeg:{elements:[],attributes:[]},score:{elements:[],attributes:["musescore","musescoreuser"]},section:{elements:["activity","algorithm","aside","assemblage","assumption","audio","author","axiom","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exercises","exploration","fact","figure","fragment","glossary","handout","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","reading-questions","references","remark","sage","sbsgroup","shorttitle","sidebyside","slide","solutions","subsection","table","tabular","technology","theorem","title","video","warning","worksheet"],attributes:["component","label","xml:id","xml:lang"]},"section-mark":{elements:[],attributes:[]},see:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]},seealso:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]},series:{elements:[],attributes:[]},servicemark:{elements:[],attributes:[]},sharp:{elements:[],attributes:[]},shortdescription:{elements:["var"],attributes:[]},shortlicense:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["xml:lang"]},shorttitle:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["component"]},sidebyside:{elements:["console","dl","exercise","figure","image","list","listing","ol","p","poem","pre","program","stack","table","tabular","ul"],attributes:["component","landscape","margins","pause","valign","valigns","width","widths"]},slide:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","dl","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","idx","image","insight","investigation","lemma","list","list-of","listing","note","observation","ol","openconjecture","openproblem","openquestion","p","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","shorttitle","sidebyside","subslide","table","tabular","technology","theorem","title","ul","video","warning"],attributes:["component","label","valign","xml:id","xml:lang"]},slides:{elements:[],attributes:["valign"]},slideshow:{elements:["frontmatter","idx","plaintitle","section","shorttitle","slide","subtitle","title"],attributes:["component","label","xml:id","xml:lang"]},solidus:{elements:[],attributes:[]},solution:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","proof","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},solutions:{elements:["conclusion","idx","introduction","plaintitle","shorttitle","title"],attributes:["admit","component","divisional","inline","label","project","xml:id","xml:lang"]},species:{elements:[],attributes:[]},sq:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},stack:{elements:["console","dl","figure","image","ol","p","pre","program","tabular","ul"],attributes:[]},stale:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},stanza:{elements:["idx","line","title"],attributes:["component","label","xml:id","xml:lang"]},statement:{elements:["aside","audio","biographical","blockquote","console","figure","historical","image","instruction","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","video"],attributes:[]},"static-ordering":{elements:[],attributes:[]},status:{elements:["aside","audio","biographical","blockquote","console","copyleft","copyright","dblprime","degree","ellipsis","figure","historical","icon","idx","image","kbd","langle","ldblbracket","list","listing","lq","lsq","m","mdash","midpoint","minus","nbsp","ndash","obelus","p","permille","phonomark","pilcrow","plusminus","pre","prime","program","rangle","rdblbracket","registered","rq","rsq","sage","sbsgroup","section-mark","servicemark","sidebyside","solidus","swungdash","table","tabular","times","title","trademark","video"],attributes:["component","label","xml:id","xml:lang"]},stdin:{elements:[],attributes:[]},subexercises:{elements:["conclusion","exercise","exercisegroup","idx","introduction","plaintitle","shorttitle","title"],attributes:["component","label","xml:id","xml:lang"]},subsection:{elements:["activity","algorithm","aside","assemblage","assumption","audio","author","axiom","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exercises","exploration","fact","figure","fragment","glossary","handout","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","reading-questions","references","remark","sage","sbsgroup","shorttitle","sidebyside","solutions","subsubsection","table","tabular","technology","theorem","title","video","warning","worksheet"],attributes:["component","label","xml:id","xml:lang"]},subslide:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","dl","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","image","insight","investigation","lemma","list","list-of","listing","note","observation","ol","openconjecture","openproblem","openquestion","p","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","sidebyside","table","tabular","technology","theorem","ul","video","warning"],attributes:[]},subsubsection:{elements:["activity","algorithm","aside","assemblage","assumption","audio","author","axiom","biographical","blockquote","claim","computation","conjecture","console","convention","corollary","data","definition","example","exercise","exercises","exploration","fact","figure","fragment","glossary","handout","heuristic","historical","hypothesis","identity","idx","image","insight","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","reading-questions","references","remark","sage","sbsgroup","shorttitle","sidebyside","solutions","table","tabular","technology","theorem","title","video","warning","worksheet"],attributes:["component","label","xml:id","xml:lang"]},subtitle:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","line","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component"]},suffix:{elements:[],attributes:[]},suggestion:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},support:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","cd","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","dl","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","fn","foreign","icon","idx","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","md","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","notation","obelus","ol","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","ul","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},swungdash:{elements:[],attributes:[]},table:{elements:["idx","plaintitle","shorttitle","tabular","title"],attributes:["component","label","landscape","xml:id","xml:lang"]},tabular:{elements:["col","row"],attributes:["bottom","break","component","halign","left","margins","right","row-headers","top","valign","width"]},tag:{elements:[],attributes:[]},tage:{elements:[],attributes:[]},task:{elements:["answer","aside","audio","biographical","blockquote","conclusion","console","context","discussion","figure","hint","historical","idx","image","introduction","list","listing","opinion","p","pre","program","sage","sbsgroup","sidebyside","solution","statement","status","suggestion","table","tabular","task","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},taxon:{elements:["genus","species"],attributes:["ncbi"]},technology:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},term:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},tests:{elements:["iotest"],attributes:["visible"]},tex:{elements:[],attributes:[]},theorem:{elements:["aside","audio","biographical","blockquote","console","creator","figure","historical","idx","image","list","listing","origins","p","pre","program","proof","sage","sbsgroup","sidebyside","statement","table","tabular","title","video"],attributes:["component","label","workspace","xml:id","xml:lang"]},timeofday:{elements:[],attributes:[]},times:{elements:[],attributes:[]},timesignature:{elements:[],attributes:["bottom","top"]},title:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","line","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:["component"]},titlepage:{elements:["titlepage-items"],attributes:[]},"titlepage-items":{elements:[],attributes:[]},tn:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","custom","dataurl","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","url","var","viz","vs","webwork","xelatex","xetex","xref"],attributes:[]},today:{elements:[],attributes:[]},track:{elements:[],attributes:["default","kind","listing","source","xml:lang"]},trademark:{elements:[],attributes:[]},translator:{elements:["name"],attributes:[]},ul:{elements:["li"],attributes:["cols","component","marker","pause"]},unit:{elements:[],attributes:["base","exp","prefix"]},url:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["href","visual"]},URL:{elements:[],attributes:[]},usage:{elements:["m"],attributes:[]},var:{elements:[],attributes:["category","data","evaluator","form","name","width"]},version:{elements:[],attributes:[]},video:{elements:["title","track"],attributes:["aspect","component","end","href","label","margins","play-at","preview","source","start","vimeo","width","xml:id","youtube","youtubeplaylist"]},viz:{elements:[],attributes:[]},volume:{elements:[],attributes:[]},vs:{elements:[],attributes:[]},warning:{elements:["aside","audio","biographical","blockquote","console","figure","historical","idx","image","list","listing","p","pre","program","sage","sbsgroup","sidebyside","table","tabular","title","video"],attributes:["component","label","xml:id","xml:lang"]},website:{elements:["url"],attributes:[]},webwork:{elements:["conclusion","description","hint","introduction","pg-code","pg-macros","solution","statement","task"],attributes:["component","copy","label","seed","source","xml:id"]},worksheet:{elements:["activity","algorithm","aside","assemblage","assumption","audio","axiom","biographical","blockquote","claim","computation","conclusion","conjecture","console","convention","corollary","data","definition","example","exercise","exploration","fact","figure","fragment","heuristic","historical","hypothesis","identity","idx","image","insight","introduction","investigation","lemma","list","list-of","listing","note","objectives","observation","openconjecture","openproblem","openquestion","outcomes","p","page","paragraphs","plaintitle","poem","pre","principle","problem","program","project","proof","proposition","question","remark","sage","sbsgroup","shorttitle","sidebyside","table","tabular","technology","theorem","title","video","warning"],attributes:["bottom","component","courseid","label","left","margin","right","series","seriescode","top","xml:id","xml:lang"]},xelatex:{elements:[],attributes:[]},xetex:{elements:[],attributes:[]},xref:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:["detail","first","last","provisional","ref","text"]},xrefs:{elements:[],attributes:["text"]},year:{elements:["abbr","acro","ad","alert","am","angles","articletitle","attr","bc","c","ca","chord","copyleft","copyright","dblbrackets","dblprime","degree","delete","doubleflat","doublesharp","eg","ellipsis","em","email","etal","etc","fillin","flat","foreign","icon","ie","init","insert","kbd","langle","latex","ldblbracket","lq","lsq","m","mdash","midpoint","minus","n","natural","nb","nbsp","ndash","obelus","permille","pf","phonomark","pilcrow","plusminus","pm","prefigure","pretext","prime","ps","pubtitle","q","quantity","rangle","rdblbracket","registered","rq","rsq","scaledeg","section-mark","servicemark","sharp","solidus","sq","stale","swungdash","tag","tage","taxon","term","tex","timeofday","times","timesignature","today","trademark","viz","vs","webwork","xelatex","xetex"],attributes:[]}}},q=new Set(["m","me","men","md","mdn","mrow"]),A=new Set(["c","cd","cline","pre","program","console","input","output","sage","latex-image"]),Me=new Set([...q,...A,"title","subtitle","shorttitle","plaintitle","caption","idx","h","ol","ul","dl","tabular","row"]),$=(e,t)=>{let i="";for(let a=t+1;a<e.length;a++){const l=e[a];if(i)l===i&&(i="");else if(l==='"'||l==="'")i=l;else if(l===">")return a+1}return null},De=e=>e!==void 0&&/[A-Za-z_]/.test(e),X=(e,t)=>{const i=/^[A-Za-z_][\w.:-]*/.exec(e.slice(t,t+128));return i?i[0]:""},Ce=(e,t)=>{const i=[];let a=0;const l=(n,s,o)=>{const c=e.indexOf(o,n+s.length);if(c===-1)return null;const m=c+o.length;return t<m?null:m};for(;a<t;){const n=e.indexOf("<",a);if(n===-1||n>=t)return{inText:!0,open:i};let s;if(e.startsWith("<!--",n))s=l(n,"<!--","-->");else if(e.startsWith("<![CDATA[",n))s=l(n,"<![CDATA[","]]>");else if(e.startsWith("<?",n))s=l(n,"<?","?>");else if(e.startsWith("<!",n))s=l(n,"<!",">");else if(e.startsWith("</",n)){const o=$(e,n);if(s=o===null||t<o?null:o,s!==null){const c=X(e,n+2);for(let m=i.length-1;m>=0;m--)if(i[m].name===c){i.length=m;break}}}else if(De(e[n+1])){const o=$(e,n);s=o===null||t<o?null:o,s!==null&&e[s-2]!=="/"&&i.push({name:X(e,n+1),start:n,end:s})}else s=n+1;if(s===null)return{inText:!1,open:i};a=s}return{inText:!0,open:i}},ze=["theorem","lemma","corollary","proposition","claim","fact","identity","algorithm","axiom","conjecture","principle","heuristic","hypothesis","assumption","definition","remark","convention","note","observation","warning","insight","computation","technology","example","problem","question","project","activity","exploration","investigation","proof","exercise","task","hint","answer","solution","aside","biographical","historical","assemblage","blockquote","figure","table"];new Set(ze);[...Me];[...q,...A];[...q,...A];const E=Re.elementChildren;function P(e,t){return E[e]?.elements.includes(t)??!1}const Ne=new Set([...q,...ue.verbatimTags]);let I;function Oe(){if(I)return I;const e=Object.keys(E),t=new Set(e.filter(a=>P(a,"p")||P(a,"m")));let i=!0;for(;i;){i=!1;for(const a of e)!t.has(a)&&E[a].elements.some(l=>t.has(l))&&(t.add(a),i=!0)}return I=t,t}function $e(e){for(let i=e.length-1;i>=0;i--){const{name:a}=e[i];if(q.has(a))return`the cursor is inside <${a}>, which holds LaTeX already`;if(Ne.has(a))return`the cursor is inside <${a}>, whose content is kept verbatim`}const t=e[e.length-1];if(t){if(!(t.name in E))return`the cursor is inside <${t.name}>, which is not a PreTeXt element`;if(!Oe().has(t.name))return`the cursor is inside <${t.name}>, which cannot hold markup`}}function Xe(e){const t=e[e.length-1]?.name;if(t!==void 0){const i=P(t,"p"),a=P(t,"m");if(a&&!i)return!0;if(i&&!a)return!1}return e.some(i=>i.name==="p")}function Ue(e){const t=Ce(e,e.length),i=Xe(t.open);return t.inText?{literal:$e(t.open),inline:i}:{literal:"the cursor is inside a tag, a comment or a CDATA section",inline:i}}const T={mainSourcePath:"source/main.ptx",publicationPath:"publication/publication.ptx",projectFilePath:"project.ptx",docinfoPath:"source/docinfo.ptx"};function ee(e){return r.findAnyElement(e,"pretext")?e:`<pretext>
12
12
  ${e}
13
- </pretext>`}function q(e,n,o){const r=new Map,i=[],a=`${n}-`;return e.forEach((s,c)=>{const l=s.attributes["xml:id"];let d;if(l){const h=t.slugify(l);d=h.startsWith(a)?h:`${a}${h}`}else d=`${a}${t.padIndex(c+1,e.length)}`,o.push({action:"anomaly",severity:"info",kind:"structure",category:"missing_xml_id",macro:s.name,occurrences:1,message:`<${s.name}> at position ${c+1} has no xml:id; using \`${d}\` as filename.`});const u=r.get(d)??0;r.set(d,u+1);const p=u===0?d:`${d}-${u+1}`;i.push({span:s,slug:p,filename:`${p}.ptx`})}),i}function we(e,n,o,r){const i=t.findTopLevelElements(e,"section");if(i.length===0)return e;const s=q(i,"sec",r).map(c=>{const l=`source/${n}/${c.filename}`;return o[l]=t.withProlog(c.span.outer),{start:c.span.start,end:c.span.end,replacement:`<xi:include href="${n}/${c.filename}"/>`}});return t.spliceReplacements(e,s)}function Ae(e,n,o){const r=t.findAnyElement(e,"book");if(!r)return o.push({action:"anomaly",severity:"warning",kind:"structure",category:"missing_root",macro:"book",occurrences:1,message:"Document was treated as a book but no <book> element found; emitting as a single file."}),B(e,n);const i={},a=t.findTopLevelElements(r.inner,"chapter");let s=r.inner;if(n.splitChapters&&a.length>0){const u=q(a,"ch",o).map(p=>{let h=p.span.outer;if(n.splitSections){const f=p.span.inner,g=we(f,p.slug,i,o);h=p.span.outer.slice(0,p.span.startTagEnd-p.span.start)+g+p.span.outer.slice(p.span.contentEnd-p.span.start)}const T=`source/${p.filename}`;return i[T]=t.withProlog(h),{start:p.span.start,end:p.span.end,replacement:`<xi:include href="${p.filename}"/>`}});s=t.spliceReplacements(r.inner,u)}const c=e.slice(r.start,r.startTagEnd)+s+e.slice(r.contentEnd,r.end),l=e.slice(0,r.start)+c+e.slice(r.end);return i[n.mainSourcePath]=t.withProlog(t.ensureXIncludeNamespace(H(l.trim()))),i}function B(e,n,o){const r={};return r[n.mainSourcePath]=t.withProlog(H(e.trim())),r}function be(e,n={}){const o=[],r=n.documentKind??t.detectDocumentKind(e),i={splitChapters:n.splitChapters??r==="book",splitSections:n.splitSections??!1,mainSourcePath:n.mainSourcePath??v.mainSourcePath,publicationPath:n.publicationPath??v.publicationPath,projectFilePath:n.projectFilePath??v.projectFilePath,docinfoPath:n.docinfoPath??v.docinfoPath},a=r==="book"?Ae(e,i,o):B(e,i);return a[i.projectFilePath]=t.renderProjectPtx({mainSource:i.mainSourcePath,publication:i.publicationPath}),a[i.publicationPath]=t.renderPublicationPtx(),{files:a,documentKind:r,warnings:o}}class V extends Error{constructor(){super("Import cancelled."),this.name="ConversionCancelledError"}}let _e=0;function Y(e,n,o={}){const r=`convert-${_e++}`,i=e(),{assets:a={},...s}=o;let c;const l=new Promise((u,p)=>{let h=!1;const T=f=>{h||(h=!0,i.terminate(),f())};c=()=>T(()=>p(new V)),i.addEventListener("message",f=>{const g=f.data;if(!(!g||g.requestId!==r)){if(g.type==="result"){T(()=>u(g.result));return}T(()=>p(new Error(g.message)))}}),i.addEventListener("error",f=>{const g=typeof f=="object"&&f&&"message"in f?String(f.message):"The import worker failed to start.";T(()=>p(new Error(g)))})}),d=[...new Set(Object.values(a).map(u=>u.buffer).filter(u=>u instanceof ArrayBuffer))];return i.postMessage({type:"convert",requestId:r,files:n,assets:a,options:s},d),{result:l,cancel:()=>c?.()}}function Fe(e){const{createWorker:n,id:o="worker",label:r="Built-in converter",description:i="Create a new project starting with LaTeX, Markdown, or PreTeXt files.",acceptExtensions:a}=e;let s=null;const c=async(l,d)=>{s?.cancel(),s=Y(n,l,d);try{return await s.result}finally{s=null}};return{id:o,label:r,description:i,acceptExtensions:a,prepare:async l=>{const{files:d,assets:u}=await t.extractUpload(l);return{fileName:l.name,files:d,assets:u,analysis:t.analyzeImportSources(d)}},convertPrepared:(l,d)=>c(l.files,{...d,assets:l.assets}),convertFile:async(l,d)=>{const{files:u,assets:p}=await t.extractUpload(l);return c(u,{...d,assets:p})},cancel:()=>{s?.cancel(),s=null}}}const Z={".docx":"docx",".odt":"odt",".epub":"epub",".tex":"latex",".ltx":"latex",".md":"markdown",".markdown":"markdown",".html":"html",".htm":"html",".rst":"rst",".org":"org",".ipynb":"ipynb",".typ":"typst",".xml":"docbook",".textile":"textile"},Le=new Set(["docx","odt","epub"]),A=[".docx",".odt",".epub",".html",".htm",".rst",".org",".ipynb",".typ",".textile",".tex",".ltx",".md",".markdown"];function b(e){const n=e.lastIndexOf(".");return n<=0?"":e.slice(n).toLowerCase()}function J(e){return Z[b(e)]}function Q(e){const{convertToPretext:n,id:o="pandoc",label:r="Pandoc",description:i="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more.",acceptExtensions:a=A}=e;return{id:o,label:r,description:i,acceptExtensions:a,convertFile:async(s,c)=>{const l=await n(s,c);if(!l.trim())throw new Error(`Pandoc produced no output for ${s.name}. The file may be empty or in an unexpected format.`);const d=t.importProjectFromFiles({"source.ptx":l},{documentKind:c.documentKind,splitChapters:c.splitChapters,splitSections:c.splitSections,splitLevel:c.splitLevel});return"pretextError"in d||(d.sourceName=s.name,d.sourcePath=s.name),d}}}const ee=3e4;function te(e){const n=/<pre>([\s\S]*?)<\/pre>/i.exec(e);return(n?n[1]:e).replace(/<[^>]+>/g,"").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&").trim()}function ne(e,n,o){const r=Re(te(n)),i=r?` (${N(r)})`:"";switch(e){case 400:return`The pandoc server will not convert ${o}${i}.${E(o)}`;case 401:case 403:return`The pandoc server rejected this site's credentials, so ${o} was never converted. Nothing is wrong with your file — this is a configuration problem with the service, and worth reporting.${E(o)}`;case 404:return`The pandoc conversion service could not be found at the address this site is configured to use. Nothing is wrong with your file — this is a configuration problem worth reporting.${E(o)}`;case 413:return`${o} is too large for the pandoc server to accept. Splitting it into chapters and importing them one at a time should get through.`;case 422:return`Pandoc could not read ${o}${i}. The file may be damaged, or may use features pandoc does not support.`;case 503:return`The pandoc server is running without its PreTeXt writer, so it cannot convert anything right now. Nothing is wrong with your file — this is a problem with the service, and worth reporting.${E(o)}`;case 504:return`Converting ${o} took longer than the pandoc server allows. Splitting it into chapters and importing them one at a time usually works.`;default:{const a=r?`(HTTP ${e}: ${N(r)})`:`(HTTP ${e})`;return`The pandoc server could not convert ${o} ${a}.${E(o)}`}}}const k=300;function Re(e){return e.replace(/\s+/g," ").trim()}function N(e){return e.length<=k?e:`${e.slice(0,k).trimEnd()}…`}const De=new Set([".tex",".ltx",".md",".markdown"]);function E(e){return De.has(b(e))?" You can import this file with the built-in converter instead.":""}function Ce(e){const{url:n,token:o,headers:r,credentials:i,standalone:a=!0,from:s,timeoutMs:c=ee,fetchImpl:l,id:d="pandoc-remote",label:u="Pandoc (server)",description:p="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more — no local install needed.",acceptExtensions:h=A}=e;return Q({convertToPretext:async(f,g)=>{const _=l??globalThis.fetch;if(typeof _!="function")throw new Error("This environment has no fetch; pass fetchImpl to createRemotePandocEngine.");const F=s??J(f.name);if(!F)throw new Error(`Pandoc cannot determine a format for ${f.name}. Supported extensions: ${h.join(", ")}.`);const x=new FormData;o&&x.set("token",o),x.set("file",f,f.name),x.set("from",F),a&&x.set("standalone","yes");const L=new AbortController,re=setTimeout(()=>L.abort(),c);let I;try{I=await _(n,{method:"POST",body:x,headers:r,credentials:i,signal:L.signal})}catch(P){if(P instanceof Error&&P.name==="AbortError")throw new Error(`Pandoc conversion of ${f.name} timed out after ${Math.round(c/1e3)}s.`);const oe=P instanceof Error?P.message:String(P);throw new Error(`Could not reach the pandoc server: ${oe}`)}finally{clearTimeout(re)}const R=await I.text();if(!I.ok)throw new Error(ne(I.status,R,f.name));return R},id:d,label:u,description:p,acceptExtensions:h})}exports.CLEAN_RULES=t.CLEAN_RULES;exports.DIVISION_LADDER=t.DIVISION_LADDER;exports.LADDER_OVERFLOW_TAG=t.LADDER_OVERFLOW_TAG;exports.LATEX_DIVISION_COMMANDS=t.LATEX_DIVISION_COMMANDS;exports.LATEX_FORMAT_MARKERS=t.LATEX_FORMAT_MARKERS;exports.MARKDOWN_FORMAT_MARKERS=t.MARKDOWN_FORMAT_MARKERS;exports.MAX_SUGGESTED_SPLIT_LEVEL=t.MAX_SUGGESTED_SPLIT_LEVEL;exports.PRETEXT_DIVISION_TAGS=t.PRETEXT_DIVISION_TAGS;exports.PRETEXT_ROOT_TAGS=t.PRETEXT_ROOT_TAGS;exports.PROJECT_DESTINATION=t.PROJECT_DESTINATION;exports.analyzeImportSources=t.analyzeImportSources;exports.applyLatexFixes=t.applyLatexFixes;exports.attachLatexRoots=t.attachLatexRoots;exports.attachMarkdownRoots=t.attachMarkdownRoots;exports.buildDivisionPool=t.buildDivisionPool;exports.buildNativeDivisionPool=t.buildNativeDivisionPool;exports.carryOverProjectFiles=t.carryOverProjectFiles;exports.cleanLatex=t.cleanLatex;exports.cleanLatexInChunks=t.cleanLatexInChunks;exports.cleanLatexText=t.cleanLatexText;exports.convertLatexToPretext=t.convertLatexToPretext;exports.convertMarkdownToPretext=t.convertMarkdownToPretext;exports.convertSourceToPretext=t.convertSourceToPretext;exports.dedupeXmlIds=t.dedupeXmlIds;exports.defaultAttachLevel=t.defaultAttachLevel;exports.defaultManifestTarget=t.defaultManifestTarget;exports.detectDocumentKind=t.detectDocumentKind;exports.detectSourceFormat=t.detectSourceFormat;exports.divisionChildRefs=t.divisionChildRefs;exports.divisionsAtLevel=t.divisionsAtLevel;exports.expandPretextIncludes=t.expandPretextIncludes;exports.extractUpload=t.extractUpload;exports.filePrefixForDivision=t.filePrefixForDivision;exports.findLatexFixes=t.findLatexFixes;exports.findLatexHeaders=t.findLatexHeaders;exports.findProjectManifest=t.findProjectManifest;exports.fixesToWarnings=t.fixesToWarnings;exports.getConversionErrorMessage=t.getConversionErrorMessage;exports.getLatexCleanDiagnostics=t.getLatexCleanDiagnostics;exports.handleImportUploadFile=t.handleImportUploadFile;exports.importProjectFromFiles=t.importProjectFromFiles;exports.isDivisionTag=t.isDivisionTag;exports.ladderDepth=t.ladderDepth;exports.latexDivisionHierarchy=t.latexDivisionHierarchy;exports.latexFixesToCodeActions=t.latexFixesToCodeActions;exports.mergeChunksAtLevel=t.mergeChunksAtLevel;exports.normalizePretextSource=t.normalizePretextSource;exports.outlineDivisions=t.outlineDivisions;exports.parseLatexDivisions=t.parseLatexDivisions;exports.parseProjectManifest=t.parseProjectManifest;exports.prepareInsertSource=t.prepareInsertSource;exports.pruneDivisions=t.pruneDivisions;exports.rebuildImport=t.rebuildImport;exports.relayoutImport=t.relayoutImport;exports.renderProjectPtx=t.renderProjectPtx;exports.renderProjectPtxFromManifest=t.renderProjectPtxFromManifest;exports.renderPublicationPtx=t.renderPublicationPtx;exports.reselectImport=t.reselectImport;exports.resolveImportSplitLevel=t.resolveImportSplitLevel;exports.resolveSplitLevel=t.resolveSplitLevel;exports.retargetFragment=t.retargetFragment;exports.retargetFragmentToDepth=t.retargetFragmentToDepth;exports.retargetImport=t.retargetImport;exports.sanitizeRef=t.sanitizeRef;exports.serializeForDestination=t.serializeForDestination;exports.serializeInsertFiles=t.serializeInsertFiles;exports.serializeProjectToFiles=t.serializeProjectToFiles;exports.shiftLadderTag=t.shiftLadderTag;exports.suggestSplitLevel=t.suggestSplitLevel;exports.DEFAULT_ACCEPT_EXTENSIONS=m.DEFAULT_ACCEPT_EXTENSIONS;exports.DEFAULT_IMPORT_MODE=m.DEFAULT_IMPORT_MODE;exports.allAcceptExtensions=m.allAcceptExtensions;exports.alternateEngine=m.alternateEngine;exports.alternateFor=m.alternateFor;exports.assetsForImportMode=m.assetsForImportMode;exports.diffHunks=m.diffHunks;exports.diffLines=m.diffLines;exports.diffStats=m.diffStats;exports.engineAccepts=m.engineAccepts;exports.engineExtensions=m.engineExtensions;exports.fileChangesForImport=m.fileChangesForImport;exports.filesForImportMode=m.filesForImportMode;exports.formatWarningLine=m.formatWarningLine;exports.hasNativeImportMode=m.hasNativeImportMode;exports.matchesExtension=m.matchesExtension;exports.projectForImportMode=m.projectForImportMode;exports.resolveImportMode=m.resolveImportMode;exports.routeEngine=m.routeEngine;exports.unsupportedFileMessage=m.unsupportedFileMessage;exports.ConversionCancelledError=V;exports.DEFAULT_REMOTE_PANDOC_TIMEOUT_MS=ee;exports.PANDOC_ACCEPT_EXTENSIONS=A;exports.PANDOC_BINARY_FORMATS=Le;exports.PANDOC_EXTENSION_FORMATS=Z;exports.buildPretextProjectFiles=be;exports.createPandocEngine=Q;exports.createRemotePandocEngine=Ce;exports.createWorkerEngine=Fe;exports.describeRemotePandocFailure=ne;exports.detectSnippetFormat=de;exports.extractPandocErrorDetail=te;exports.fileExtension=b;exports.firstDivisionTag=Pe;exports.isInlineContext=Te;exports.pandocFormatForFileName=J;exports.placeConvertedMarkup=ve;exports.recordsToPlusPayload=U;exports.reindentForContext=W;exports.runConversionInWorker=Y;exports.scoreSnippetFormats=$;exports.serializeInsertToRecords=ge;exports.serializeProjectToPlusPayload=he;exports.serializeProjectToRecords=z;exports.wrapLooseParagraphs=K;
13
+ </pretext>`}function te(e,t,i){const a=new Map,l=[],n=`${t}-`;return e.forEach((s,o)=>{const c=s.attributes["xml:id"];let m;if(c){const g=r.slugify(c);m=g.startsWith(n)?g:`${n}${g}`}else m=`${n}${r.padIndex(o+1,e.length)}`,i.push({action:"anomaly",severity:"info",kind:"structure",category:"missing_xml_id",macro:s.name,occurrences:1,message:`<${s.name}> at position ${o+1} has no xml:id; using \`${m}\` as filename.`});const p=a.get(m)??0;a.set(m,p+1);const d=p===0?m:`${m}-${p+1}`;l.push({span:s,slug:d,filename:`${d}.ptx`})}),l}function We(e,t,i,a){const l=r.findTopLevelElements(e,"section");if(l.length===0)return e;const s=te(l,"sec",a).map(o=>{const c=`source/${t}/${o.filename}`;return i[c]=r.withProlog(o.span.outer),{start:o.span.start,end:o.span.end,replacement:`<xi:include href="${t}/${o.filename}"/>`}});return r.spliceReplacements(e,s)}function Be(e,t,i){const a=r.findAnyElement(e,"book");if(!a)return i.push({action:"anomaly",severity:"warning",kind:"structure",category:"missing_root",macro:"book",occurrences:1,message:"Document was treated as a book but no <book> element found; emitting as a single file."}),ie(e,t);const l={},n=r.findTopLevelElements(a.inner,"chapter");let s=a.inner;if(t.splitChapters&&n.length>0){const p=te(n,"ch",i).map(d=>{let g=d.span.outer;if(t.splitSections){const b=d.span.inner,h=We(b,d.slug,l,i);g=d.span.outer.slice(0,d.span.startTagEnd-d.span.start)+h+d.span.outer.slice(d.span.contentEnd-d.span.start)}const x=`source/${d.filename}`;return l[x]=r.withProlog(g),{start:d.span.start,end:d.span.end,replacement:`<xi:include href="${d.filename}"/>`}});s=r.spliceReplacements(a.inner,p)}const o=e.slice(a.start,a.startTagEnd)+s+e.slice(a.contentEnd,a.end),c=e.slice(0,a.start)+o+e.slice(a.end);return l[t.mainSourcePath]=r.withProlog(r.ensureXIncludeNamespace(ee(c.trim()))),l}function ie(e,t,i){const a={};return a[t.mainSourcePath]=r.withProlog(ee(e.trim())),a}function Ke(e,t={}){const i=[],a=t.documentKind??r.detectDocumentKind(e),l={splitChapters:t.splitChapters??a==="book",splitSections:t.splitSections??!1,mainSourcePath:t.mainSourcePath??T.mainSourcePath,publicationPath:t.publicationPath??T.publicationPath,projectFilePath:t.projectFilePath??T.projectFilePath,docinfoPath:t.docinfoPath??T.docinfoPath},n=a==="book"?Be(e,l,i):ie(e,l);return n[l.projectFilePath]=r.renderProjectPtx({mainSource:l.mainSourcePath,publication:l.publicationPath}),n[l.publicationPath]=r.renderPublicationPtx(),{files:n,documentKind:a,warnings:i}}class ae extends Error{constructor(){super("Import cancelled."),this.name="ConversionCancelledError"}}let Ge=0;function re(e,t,i={}){const a=`convert-${Ge++}`,l=e(),{assets:n={},...s}=i;let o;const c=new Promise((p,d)=>{let g=!1;const x=b=>{g||(g=!0,l.terminate(),b())};o=()=>x(()=>d(new ae)),l.addEventListener("message",b=>{const h=b.data;if(!(!h||h.requestId!==a)){if(h.type==="result"){x(()=>p(h.result));return}x(()=>d(new Error(h.message)))}}),l.addEventListener("error",b=>{const h=typeof b=="object"&&b&&"message"in b?String(b.message):"The import worker failed to start.";x(()=>d(new Error(h)))})}),m=[...new Set(Object.values(n).map(p=>p.buffer).filter(p=>p instanceof ArrayBuffer))];return l.postMessage({type:"convert",requestId:a,files:t,assets:n,options:s},m),{result:c,cancel:()=>o?.()}}function He(e){const{createWorker:t,id:i="worker",label:a="Built-in converter",description:l="Create a new project starting with LaTeX, Markdown, or PreTeXt files.",acceptExtensions:n}=e;let s=null;const o=async(c,m)=>{s?.cancel(),s=re(t,c,m);try{return await s.result}finally{s=null}};return{id:i,label:a,description:l,acceptExtensions:n,prepare:async c=>{const{files:m,assets:p}=await r.extractUpload(c);return{fileName:c.name,files:m,assets:p,analysis:r.analyzeImportSources(m)}},convertPrepared:(c,m)=>o(c.files,{...m,assets:c.assets}),convertFile:async(c,m)=>{const{files:p,assets:d}=await r.extractUpload(c);return o(p,{...m,assets:d})},cancel:()=>{s?.cancel(),s=null}}}const le={".docx":"docx",".odt":"odt",".epub":"epub",".tex":"latex",".ltx":"latex",".md":"markdown",".markdown":"markdown",".html":"html",".htm":"html",".rst":"rst",".org":"org",".ipynb":"ipynb",".typ":"typst",".xml":"docbook",".textile":"textile"},Ve=new Set(["docx","odt","epub"]),_=[".docx",".odt",".epub",".html",".htm",".rst",".org",".ipynb",".typ",".textile",".tex",".ltx",".md",".markdown"];function j(e){const t=e.lastIndexOf(".");return t<=0?"":e.slice(t).toLowerCase()}function se(e){return le[j(e)]}function ne(e){const{convertToPretext:t,id:i="pandoc",label:a="Pandoc",description:l="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more.",acceptExtensions:n=_}=e;return{id:i,label:a,description:l,acceptExtensions:n,convertFile:async(s,o)=>{const c=await t(s,o);if(!c.trim())throw new Error(`Pandoc produced no output for ${s.name}. The file may be empty or in an unexpected format.`);const m=r.importProjectFromFiles({"source.ptx":c},{documentKind:o.documentKind,splitChapters:o.splitChapters,splitSections:o.splitSections,splitLevel:o.splitLevel});return"pretextError"in m||(m.sourceName=s.name,m.sourcePath=s.name),m}}}const oe=3e4;function me(e){const t=/<pre>([\s\S]*?)<\/pre>/i.exec(e);return(t?t[1]:e).replace(/<[^>]+>/g,"").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&amp;/g,"&").trim()}function ce(e,t,i){const a=Ze(me(t)),l=a?` (${W(a)})`:"";switch(e){case 400:return`The pandoc server will not convert ${i}${l}.${y(i)}`;case 401:case 403:return`The pandoc server rejected this site's credentials, so ${i} was never converted. Nothing is wrong with your file — this is a configuration problem with the service, and worth reporting.${y(i)}`;case 404:return`The pandoc conversion service could not be found at the address this site is configured to use. Nothing is wrong with your file — this is a configuration problem worth reporting.${y(i)}`;case 413:return`${i} is too large for the pandoc server to accept. Splitting it into chapters and importing them one at a time should get through.`;case 422:return`Pandoc could not read ${i}${l}. The file may be damaged, or may use features pandoc does not support.`;case 503:return`The pandoc server is running without its PreTeXt writer, so it cannot convert anything right now. Nothing is wrong with your file — this is a problem with the service, and worth reporting.${y(i)}`;case 504:return`Converting ${i} took longer than the pandoc server allows. Splitting it into chapters and importing them one at a time usually works.`;default:{const n=a?`(HTTP ${e}: ${W(a)})`:`(HTTP ${e})`;return`The pandoc server could not convert ${i} ${n}.${y(i)}`}}}const U=300;function Ze(e){return e.replace(/\s+/g," ").trim()}function W(e){return e.length<=U?e:`${e.slice(0,U).trimEnd()}…`}const Ye=new Set([".tex",".ltx",".md",".markdown"]);function y(e){return Ye.has(j(e))?" You can import this file with the built-in converter instead.":""}function Je(e){const{url:t,token:i,headers:a,credentials:l,standalone:n=!0,from:s,timeoutMs:o=oe,fetchImpl:c,id:m="pandoc-remote",label:p="Pandoc (server)",description:d="Convert Word, OpenOffice, EPUB, HTML, reStructuredText, and more — no local install needed.",acceptExtensions:g=_}=e;return ne({convertToPretext:async(b,h)=>{const L=c??globalThis.fetch;if(typeof L!="function")throw new Error("This environment has no fetch; pass fetchImpl to createRemotePandocEngine.");const F=s??se(b.name);if(!F)throw new Error(`Pandoc cannot determine a format for ${b.name}. Supported extensions: ${g.join(", ")}.`);const f=new FormData;i&&f.set("token",i),f.set("file",b,b.name),f.set("from",F),n&&f.set("standalone","yes");const R=new AbortController,pe=setTimeout(()=>R.abort(),o);let v;try{v=await L(t,{method:"POST",body:f,headers:a,credentials:l,signal:R.signal})}catch(k){if(k instanceof Error&&k.name==="AbortError")throw new Error(`Pandoc conversion of ${b.name} timed out after ${Math.round(o/1e3)}s.`);const de=k instanceof Error?k.message:String(k);throw new Error(`Could not reach the pandoc server: ${de}`)}finally{clearTimeout(pe)}const M=await v.text();if(!v.ok)throw new Error(ce(v.status,M,b.name));return M},id:m,label:p,description:d,acceptExtensions:g})}exports.CLEAN_RULES=r.CLEAN_RULES;exports.DIVISION_LADDER=r.DIVISION_LADDER;exports.LADDER_OVERFLOW_TAG=r.LADDER_OVERFLOW_TAG;exports.LATEX_DIVISION_COMMANDS=r.LATEX_DIVISION_COMMANDS;exports.LATEX_FORMAT_MARKERS=r.LATEX_FORMAT_MARKERS;exports.MARKDOWN_FORMAT_MARKERS=r.MARKDOWN_FORMAT_MARKERS;exports.MAX_SUGGESTED_SPLIT_LEVEL=r.MAX_SUGGESTED_SPLIT_LEVEL;exports.PRETEXT_DIVISION_TAGS=r.PRETEXT_DIVISION_TAGS;exports.PRETEXT_ROOT_TAGS=r.PRETEXT_ROOT_TAGS;exports.PROJECT_DESTINATION=r.PROJECT_DESTINATION;exports.analyzeImportSources=r.analyzeImportSources;exports.applyLatexFixes=r.applyLatexFixes;exports.attachLatexRoots=r.attachLatexRoots;exports.attachMarkdownRoots=r.attachMarkdownRoots;exports.buildDivisionPool=r.buildDivisionPool;exports.buildNativeDivisionPool=r.buildNativeDivisionPool;exports.carryOverProjectFiles=r.carryOverProjectFiles;exports.cleanLatex=r.cleanLatex;exports.cleanLatexInChunks=r.cleanLatexInChunks;exports.cleanLatexText=r.cleanLatexText;exports.convertLatexToPretext=r.convertLatexToPretext;exports.convertMarkdownToPretext=r.convertMarkdownToPretext;exports.convertSourceToPretext=r.convertSourceToPretext;exports.dedupeXmlIds=r.dedupeXmlIds;exports.defaultAttachLevel=r.defaultAttachLevel;exports.defaultManifestTarget=r.defaultManifestTarget;exports.detectDocumentKind=r.detectDocumentKind;exports.detectSourceFormat=r.detectSourceFormat;exports.divisionChildRefs=r.divisionChildRefs;exports.divisionsAtLevel=r.divisionsAtLevel;exports.expandPretextIncludes=r.expandPretextIncludes;exports.extractUpload=r.extractUpload;exports.filePrefixForDivision=r.filePrefixForDivision;exports.findLatexFixes=r.findLatexFixes;exports.findLatexHeaders=r.findLatexHeaders;exports.findProjectManifest=r.findProjectManifest;exports.fixesToWarnings=r.fixesToWarnings;exports.getConversionErrorMessage=r.getConversionErrorMessage;exports.getLatexCleanDiagnostics=r.getLatexCleanDiagnostics;exports.handleImportUploadFile=r.handleImportUploadFile;exports.importProjectFromFiles=r.importProjectFromFiles;exports.isDivisionTag=r.isDivisionTag;exports.ladderDepth=r.ladderDepth;exports.latexDivisionHierarchy=r.latexDivisionHierarchy;exports.latexFixesToCodeActions=r.latexFixesToCodeActions;exports.mergeChunksAtLevel=r.mergeChunksAtLevel;exports.normalizePretextSource=r.normalizePretextSource;exports.outlineDivisions=r.outlineDivisions;exports.parseLatexDivisions=r.parseLatexDivisions;exports.parseProjectManifest=r.parseProjectManifest;exports.prepareInsertSource=r.prepareInsertSource;exports.pruneDivisions=r.pruneDivisions;exports.rebuildImport=r.rebuildImport;exports.relayoutImport=r.relayoutImport;exports.renderProjectPtx=r.renderProjectPtx;exports.renderProjectPtxFromManifest=r.renderProjectPtxFromManifest;exports.renderPublicationPtx=r.renderPublicationPtx;exports.reselectImport=r.reselectImport;exports.resolveImportSplitLevel=r.resolveImportSplitLevel;exports.resolveSplitLevel=r.resolveSplitLevel;exports.retargetFragment=r.retargetFragment;exports.retargetFragmentToDepth=r.retargetFragmentToDepth;exports.retargetImport=r.retargetImport;exports.sanitizeRef=r.sanitizeRef;exports.serializeForDestination=r.serializeForDestination;exports.serializeInsertFiles=r.serializeInsertFiles;exports.serializeProjectToFiles=r.serializeProjectToFiles;exports.shiftLadderTag=r.shiftLadderTag;exports.suggestSplitLevel=r.suggestSplitLevel;exports.DEFAULT_ACCEPT_EXTENSIONS=u.DEFAULT_ACCEPT_EXTENSIONS;exports.DEFAULT_IMPORT_MODE=u.DEFAULT_IMPORT_MODE;exports.allAcceptExtensions=u.allAcceptExtensions;exports.alternateEngine=u.alternateEngine;exports.alternateFor=u.alternateFor;exports.assetsForImportMode=u.assetsForImportMode;exports.diffHunks=u.diffHunks;exports.diffLines=u.diffLines;exports.diffStats=u.diffStats;exports.engineAccepts=u.engineAccepts;exports.engineExtensions=u.engineExtensions;exports.experimentalEngineFor=u.experimentalEngineFor;exports.experimentalEngines=u.experimentalEngines;exports.fileChangesForImport=u.fileChangesForImport;exports.filesForImportMode=u.filesForImportMode;exports.formatWarningLine=u.formatWarningLine;exports.hasNativeImportMode=u.hasNativeImportMode;exports.matchesExtension=u.matchesExtension;exports.projectForImportMode=u.projectForImportMode;exports.resolveImportMode=u.resolveImportMode;exports.routeEngine=u.routeEngine;exports.unsupportedFileMessage=u.unsupportedFileMessage;exports.ConversionCancelledError=ae;exports.DEFAULT_REMOTE_PANDOC_TIMEOUT_MS=oe;exports.PANDOC_ACCEPT_EXTENSIONS=_;exports.PANDOC_BINARY_FORMATS=Ve;exports.PANDOC_EXTENSION_FORMATS=le;exports.buildPretextProjectFiles=Ke;exports.containsXmlMarkup=B;exports.createPandocEngine=ne;exports.createRemotePandocEngine=Je;exports.createWorkerEngine=He;exports.describeRemotePandocFailure=ce;exports.detectSnippetFormat=ye;exports.extractPandocErrorDetail=me;exports.fileExtension=j;exports.firstDivisionTag=Ae;exports.isInlineContext=Se;exports.pandocFormatForFileName=se;exports.pasteTargetAt=Ue;exports.placeConvertedMarkup=Fe;exports.recordsToPlusPayload=Z;exports.reindentForContext=Y;exports.runConversionInWorker=re;exports.scoreSnippetFormats=K;exports.serializeInsertToRecords=Pe;exports.serializeProjectToPlusPayload=Ee;exports.serializeProjectToRecords=V;exports.wrapLooseParagraphs=Q;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { detectSourceFormat, LATEX_FORMAT_MARKERS, MARKDOWN_FORMAT_MARKERS, } from './lib/detect-source-format';
2
- export { detectSnippetFormat, scoreSnippetFormats, type SnippetFormat, type SnippetFormatScores, } from './lib/detect-snippet-format';
2
+ export { containsXmlMarkup, detectSnippetFormat, scoreSnippetFormats, type SnippetFormat, type SnippetFormatScores, } from './lib/detect-snippet-format';
3
3
  export { convertLatexToPretext, convertMarkdownToPretext, normalizePretextSource, convertSourceToPretext, getConversionErrorMessage, } from './lib/convert';
4
4
  export type { LatexConversionResult, MarkdownConversionResult, } from './lib/convert';
5
5
  export { importProjectFromFiles, handleImportUploadFile, extractUpload, relayoutImport, rebuildImport, retargetImport, reselectImport, resolveImportSplitLevel, type ExtractedUpload, type ImportProjectOptions, type RebuildImportOptions, type SplitLevelContext, } from './lib/upload';
@@ -13,6 +13,7 @@ export { defaultManifestTarget, findProjectManifest, parseProjectManifest, type
13
13
  export { carryOverProjectFiles, renderProjectPtxFromManifest, type CarryOverOptions, type CarryOverResult, } from './lib/project/existing-project';
14
14
  export { DIVISION_LADDER, LADDER_OVERFLOW_TAG, PRETEXT_DIVISION_TAGS, PRETEXT_ROOT_TAGS, filePrefixForDivision, isDivisionTag, ladderDepth, shiftLadderTag, type LadderTag, type PretextDivisionTag, type PretextRootTag, } from './lib/pretext-divisions';
15
15
  export { firstDivisionTag, isInlineContext, placeConvertedMarkup, reindentForContext, wrapLooseParagraphs, type PlacedMarkup, type PlacementContext, } from './lib/paste/place-markup';
16
+ export { pasteTargetAt, type PasteTarget } from './lib/paste/paste-target';
16
17
  export { outlineDivisions, pruneDivisions, type DivisionOutlineItem, type DivisionPath, type PruneDivisionsResult, } from './lib/select/divisions';
17
18
  export { retargetFragment, retargetFragmentToDepth, dedupeXmlIds, prepareInsertSource, PROJECT_DESTINATION, type ImportDestination, type ProjectDestination, type InsertDestination, type PreparedInsertSource, type RetargetFragmentResult, type DedupeXmlIdsOptions, type DedupeXmlIdsResult, type IdRenameContext, type XmlIdRename, } from './lib/insert';
18
19
  export { DEFAULT_IMPORT_MODE, filesForImportMode, assetsForImportMode, hasNativeImportMode, projectForImportMode, resolveImportMode, formatWarningLine, type ImportMode, } from './lib/import-mode';
@@ -30,4 +31,4 @@ export type { SourceFormat, ProjectLayout, ConversionContext, ConvertedPretextRe
30
31
  export { createWorkerEngine, runConversionInWorker, ConversionCancelledError, type ConversionWorker, type WorkerEngineOptions, type RunningConversion, } from './worker/worker-engine';
31
32
  export type { WorkerRequest, WorkerResponse, ConvertRequest, ResultResponse, ErrorResponse, } from './worker/protocol';
32
33
  export { PANDOC_ACCEPT_EXTENSIONS, PANDOC_BINARY_FORMATS, PANDOC_EXTENSION_FORMATS, fileExtension, pandocFormatForFileName, createPandocEngine, createRemotePandocEngine, describeRemotePandocFailure, extractPandocErrorDetail, DEFAULT_REMOTE_PANDOC_TIMEOUT_MS, type PandocInputFormat, type PandocBridge, type PandocEngineOptions, type RemotePandocEngineOptions, } from './lib/pandoc';
33
- export { DEFAULT_ACCEPT_EXTENSIONS, allAcceptExtensions, alternateEngine, alternateFor, engineAccepts, engineExtensions, matchesExtension, routeEngine, unsupportedFileMessage, type RoutableEngine, } from './lib/engine-routing';
34
+ export { DEFAULT_ACCEPT_EXTENSIONS, allAcceptExtensions, alternateEngine, alternateFor, engineAccepts, engineExtensions, experimentalEngineFor, experimentalEngines, matchesExtension, routeEngine, unsupportedFileMessage, type RoutableEngine, } from './lib/engine-routing';