pepperscore 0.5.0 → 0.5.1

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.
@@ -1,5 +1,5 @@
1
- const e=/<(?:!--[\s\S]*?--|\?[\s\S]*?\?|!\[CDATA\[[\s\S]*?\]\]|!DOCTYPE[^>]*|(\/?)([A-Za-z_][\w.:-]*)((?:\s+[^\s=/>]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)\s*(\/?))>/g,t=/* @__PURE__ */ new Map;function n(e){let n=t.get(e);return n||(n=RegExp(`\\s${e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`),t.set(e,n)),n}function r(e,t){if(!e.includes(t))return null;let r=n(t).exec(e);return r?r[1]??r[2]??``:null}function i(e,t){return e.replace(n(t),``)}function a(e,t,r){return e.replace(n(t),` ${t}="${r}"`)}const o=e=>e.slice(e.indexOf(`:`)+1),s=e=>r(e,`xml:id`)||``,c=e=>(e||``).split(/\s+/).filter(Boolean),l=e=>e.replace(/^#/,``);function u(t,n){e.lastIndex=0;for(let r=e.exec(t);r;r=e.exec(t))if(r[2]&&n({closing:r[1]===`/`,name:o(r[2]),attributes:r[3]||``,selfClosing:r[4]===`/`,index:r.index,length:r[0].length}))return}function d(e){let t=[],n=[],i=[],a=[],o=[],c=-1,l=!1,d=!1,f=0,p=/* @__PURE__ */ new Set,m=0;return u(e,({closing:e,name:u,attributes:h,selfClosing:g})=>{if(e){a.pop(),u===`staff`&&d?(d=!1,f&&(m=Math.max(m,Math.ceil(f/p.size)))):c>=0&&(u===`staffGrp`&&o.pop(),u===`scoreDef`&&a.length===c&&(c=-1,l=!0));return}if(u===`measure`)t.push(s(h));else if(u===`staff`&&!g)d=!0,f=0,p=/* @__PURE__ */ new Set;else if(u===`verse`&&d)f++,p.add(r(h,`n`)||`1`);else if(u===`scoreDef`&&!l&&c<0)g?l=!0:c=a.length;else if(c>=0){if(u===`staffGrp`)i.push({id:s(h),staves:[]}),g||o.push(i.length-1);else if(u===`staffDef`){let e={n:r(h,`n`)||``,id:s(h)};n.push(e),a.at(-1)===`staffGrp`&&o.length&&i[o.at(-1)].staves.push(e)}}g||a.push(u)}),{measureIds:t,lyricDensity:m,staffDefs:n,groups:i}}const f=/* @__PURE__ */ new Set([`meiHead`,`label`,`labelAbbr`,`sb`,`pb`,`pgHead`,`pgFoot`]);function p(e,t){let n=/* @__PURE__ */ new Set,i=[],a=[],o=0;return u(e,({closing:e,name:l,attributes:u,selfClosing:d})=>{if(e){o?o--:l===`staffGrp`&&a.pop();return}let f=l===`staffGrp`?i.push(0)-1:-1;if(o){let e=s(u);e&&n.add(e),d||o++;return}let p=(l===`staffDef`||l===`staff`)&&t.has(r(u,`n`)||``);if(!p){let e=c(r(u,`staff`));p=e.length>0&&e.every(e=>t.has(e))}if(p){let e=s(u);e&&n.add(e),d||(o=1);return}if(l===`staffDef`)for(let e of a)i[e]++;f>=0&&!d&&a.push(f)}),{removed:n,emptyGroups:new Set(i.flatMap((e,t)=>e?[]:[t]))}}function m(e,t,n=1/0,o=0){let d=t.breakBefore===void 0?void 0:new Set(t.breakBefore),m=new Set(t.hiddenStaves),{removed:h,emptyGroups:g}=m.size?p(e,m):{removed:/* @__PURE__ */ new Set,emptyGroups:/* @__PURE__ */ new Set},_=e=>h.size>0&&c(e).some(e=>h.has(l(e))),v=[],y=[],b=0,x=0,S=0,C=0,w=0,T=-1,E=-1,D=()=>++w>=n,O=t.chordSymbols&&t.harmSize&&t.harmSize!==100?Math.round(t.harmSize):0,k=0;if(u(e,({closing:n,name:u,attributes:p,selfClosing:w,index:A,length:j})=>{x||v.push(e.slice(b,A)),b=A+j;let M=e.slice(A,A+j);if(n){if(x){x--;return}return u===`harm`&&k&&y.at(-1)===`rend`&&(y.pop(),k--,v.push(`</rend>`)),y.pop(),E=-1,v.push(M),u===`measure`&&D()?(T=b,!0):void 0}let N=u===`staffGrp`?S++:-1;if(x){if(m.size){let e=s(p);e&&h.add(e)}w||x++;return}let P=f.has(u)||u===`harm`&&!t.chordSymbols,F=M;if(!P&&m.size){let e=c(r(p,`staff`)),t=e.filter(e=>!m.has(e));P=(u===`staffDef`||u===`staff`)&&m.has(r(p,`n`)||``)||N>=0&&g.has(N)||e.length>0&&!t.length||_(r(p,`startid`))||_(r(p,`endid`)),!P&&t.length!==e.length&&(F=a(F,`staff`,t.join(` `)));let n=r(p,`plist`);if(!P&&n&&_(n)){let e=c(n).filter(e=>!h.has(l(e)));e.length?F=a(F,`plist`,e.join(` `)):P=!0}}if(P){if(m.size){let e=s(p);e&&h.add(e)}w||(x=1);return}if((u===`staffDef`||u===`staffGrp`)&&(F=i(i(F,`label`),`label.abbr`)),u===`measure`){if(C>0&&(d?d.has(C+o):t.breakEvery>0&&(C+o)%t.breakEvery===0)){let e=d?`<sb/>`:`<pb/>`;E>=0?v.splice(E,0,e):v.push(e)}C++}if((u===`ending`||u===`section`)&&!w?E<0&&(E=v.length):E=-1,v.push(F),!w)y.push(/^<([^\s/>]+)/.exec(M)[1]);else if(u===`measure`&&D())return T=b,!0;if(O&&u===`harm`&&!w){let t=e.indexOf(`</harm>`,b);(t>=0?e.slice(b,t).includes(`<fb`):e.includes(`<fb`,b))||(v.push(`<rend fontsize="${O}%">`),y.push(`rend`),k++)}}),T<0)return v.push(e.slice(b)),v.join(``);for(let e=y.length-1;e>=0;e--)v.push(`</${y[e]}>`);return v.join(``)}function h(e){let t=[],n=-1,i=-1,a=0,o=``,s=/* @__PURE__ */ new Set,c=-1,l=-1,d=-1,f=``,p=``;u(e,({name:u,closing:m,selfClosing:h,attributes:g,index:_,length:v})=>{if(m?a--:h||a++,c>=0){m&&u===`g`&&a===c-1&&(t.push({start:l,end:_+v,text:``}),c=-1);return}let y=r(g,`class`)??``;if(!m&&u===`g`&&/(?:^|\s)system(?:\s|$)/.test(y)&&s.clear(),!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(y)){let e=/(?:^|\s)finger-staff-(\d+)(?:\s|$)/.exec(y)?.[1]??`default`;if(y.split(/\s+/).includes(`finger-reassert`)&&s.has(e)){c=a,l=_;return}s.add(e)}if(!m&&u===`g`){let e=/(?:^|\s)finger-tab-([LH]?[0-4])-p[\d-]+(?:\s|$)/.exec(r(g,`class`)??``);e&&(n=a,o=e[1])}if(!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(r(g,`class`)??``)&&(i=a),i>=0&&!m&&u===`text`){let n=e.slice(_,_+v).replace(/\stext-anchor="[^"]*"/,``);t.push({start:_,end:_+v,text:`${n.slice(0,-1)} text-anchor="middle">`})}if(m&&u===`g`&&a===i-1&&(i=-1),!(n<0)){if(!m&&u===`text`&&r(g,`class`)!==`finger-label`&&(d=_,f=e.slice(_,_+v),p=r(g,`font-size`)??``),!m&&u===`tspan`&&(p=r(g,`font-size`)??p),m&&u===`text`&&d>=0){let e=f.replace(/\sfont-size="[^"]*"/,``);t.push({start:d,end:_+v,text:`${e.slice(0,-1)} class="finger-label" font-size="${p}" font-family="Arial" fill="currentColor" stroke="white" stroke-width="45" stroke-linejoin="round" paint-order="stroke fill">${o}</text>`}),d=-1}m&&u===`g`&&a===n-1&&(n=-1)}});for(let n of t.reverse())e=e.slice(0,n.start)+n.text+e.slice(n.end);return e}const g=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],_={C:0,D:2,E:4,F:5,G:7,A:9,B:11},v=[`Cb`,`Gb`,`Db`,`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`],y=[`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`,`G#`,`D#`,`A#`],b=[0,-5,2,-3,4,-1,6,1,-4,3,-2,5],x=[0,7,2,-3,4,-1,6,1,-4,3,-2,5],S=(e,t)=>(e%t+t)%t,C=e=>e>0?`#`.repeat(e):`b`.repeat(-e);function w(e){let t=0;for(let n of e)t+=n===`#`||n===`♯`?1:n===`x`||n===`𝄪`?2:n===`𝄫`?-2:-1;return t}function T(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}function E(e,t=`major`){let n=(t===`minor`?y:v)[e+7];if(!n)throw Error(`No key with ${e} fifths`);return{tonic:n,mode:t,fifths:e,scale:g.map(t=>({step:t,alter:T(t,e)}))}}function D(e){let t=e.fifths>0?e.fifths-12:e.fifths<0?e.fifths+12:null;return t===null||Math.abs(t)>7?null:E(t,e.mode)}function O(e,t=`major`,n={}){let r=S(e+(t===`minor`?3:0),12),i=E((n.family===`sharp`?x:b)[r],t);return n.flip?D(i)??i:i}function k(e,t){return{...t,octave:Math.round((e-_[t.step]-t.alter)/12)-1}}const A=(e,t)=>S(_[t.step]+t.alter,12)===S(e,12),j=e=>g.indexOf(e);function M(e,t){let n=S(j(t.step)-j(e),7);return n===1?1:n===6?-1:0}function N(e,t,n={}){let r=S(e,12),i=n.source&&A(r,n.source)?n.source:void 0;if(i&&Math.abs(i.alter)===2&&!n.transposed)return k(e,i);let a=t.scale.find(e=>A(r,e));if(a)return k(e,a);let o=e=>Math.abs(e.alter)<=1&&![`E1`,`B1`,`F-1`,`C-1`].includes(e.step+e.alter);if(t.mode===`minor`){let n=j(t.tonic.charAt(0));for(let i of[5,6]){let a=t.scale[(n+i)%7],o={step:a.step,alter:a.alter+1};if(A(r,o)&&Math.abs(o.alter)<=1)return k(e,o)}}if(i&&o(i)&&n.next!==void 0&&n.next-e>=1&&n.next-e<=2)return k(e,i);let s=Object.entries(_).find(([,e])=>e===r)?.[0];if(s){let r={step:g[(j(s)+1)%7],alter:-1};if((s===`E`||s===`B`)&&t.fifths<=-6&&n.prev!==void 0&&n.next!==void 0){let i=N(n.prev,t),a=N(n.next,t),o=[M(r.step,i),M(r.step,a)];if(o.includes(1)&&o.includes(-1))return k(e,r)}return k(e,{step:s,alter:0})}let c={step:g.find(e=>_[e]===r-1),alter:1},l={step:g.find(e=>_[e]===r+1),alter:-1};return t.fifths>0?k(e,c):t.fifths<0?k(e,l):k(e,r===6?c:l)}function P(e,t){let n=/^([A-G])([#♯b♭x𝄪𝄫]*)(.*)$/s.exec(e);if(!n)return e;let r=/[♯♭]/.test(e),i=(e,n)=>{let i=N(60+_[e]+w(n),t),a=C(i.alter);return i.step+(r?a.replace(/#/g,`♯`).replace(/b/g,`♭`):a)},a=n[3].replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,n)=>`/${i(t,n)}`);return i(n[1],n[2])+a}const F=[40,45,50,55,59,64],I=.08,L=1e-9;function R(e,t={}){let n=t.tuning&&t.tuning.length?t.tuning:F,r=Math.max(0,Math.floor(t.capo??0)),i=Math.floor(t.maxFret??22),a=t.octaveFold??!0,o=Math.min(n.length,31),s=Math.max(0,i-r),c=new Int32Array(o);for(let e=0;e<o;e++)c[e]=n[n.length-1-e]+r;let l=c.some((e,t)=>t>0&&e>c[t-1]),u=Math.max(1,s),d=u+1,f=e=>{for(let t=0;t<o;t++)if(e>=c[t]&&e<=c[t]+s)return!0;return!1},p=e=>{if(Number.isFinite(e)){if(f(e))return 0;if(a)for(let t=1;t<=10;t++){if(f(e+12*t))return 12*t;if(f(e-12*t))return-12*t}}};function m(e,t,n,r){let i=e.length,a=[];if(i===0||i>o)return a;let u=new Int8Array(i),d=new Int8Array(i),f=()=>{let e=99,t=-1,n=0,r=0;for(let a=0;a<i;a++){let i=d[a];r+=u[a],i===0?n++:(i<e&&(e=i),i>t&&(t=i))}let o=t<0,s=1,c=1,f=0;o||(f=t-e,s=Math.max(1,t-3),c=Math.max(1,e),s>c&&(s=c=Math.max(1,e)));let p=i>1?(l?Math.max(...u)-Math.min(...u):u[i-1]-u[0])+1-i:0,m=-.3*n+.3*Math.max(0,t-12)**2+1*f**1.5+.5*p+.05*r,h=m+I*s;if(a.length===24&&h>=a[23].rank)return;let g={str:u.slice(),fret:d.slice(),open:o,posLo:s,posHi:c,cost:m,rank:h},_=a.length;for(;_>0&&a[_-1].rank>h;)_--;a.splice(_,0,g),a.length>24&&a.pop()},p=(a,m,h,g,_=r)=>{if(a===i){f();return}let v=e[a],y=l?o-1:o-(i-a);for(let e=l?0:m;e<=y;e++){if(t[a]>=0&&e!==t[a]||_&1<<e)continue;let r=v-c[e];if(r<0||r>s||n[a]>=0&&r!==n[a])continue;let i=h,o=g;r>0&&(r<i&&(i=r),r>o&&(o=r),o-i>(i>=7?5:4))||(u[a]=e,d[a]=r,p(a+1,e+1,i,o,_|1<<e))}};return p(0,0,99,-1),a}let h=/* @__PURE__ */ new Map;function g(e,t){let n=String(t);for(let t of e)n+=`,${t.pitch}:${t.fixedT}:${t.fixedFret}`;let r=h.get(n);if(r)return r;let i=e.map((e,t)=>t),a={shapes:[],kept:[]};for(;i.length;){if(i.length<=o){let n=i.map(t=>e[t].pitch),r=i.map(t=>e[t].fixedT),o=i.map(t=>e[t].fixedFret),s=r.some(e=>e>=0),c=i.map(()=>-1),l=[];s&&(l.push([r,o,t]),t&&l.push([r,o,0])),l.push([c,c,t]),t&&l.push([c,c,0]);let u=[];for(let[e,t,r]of l)if(u=m(n,e,t,r),u.length)break;if(u.length){a={shapes:u,kept:i};break}}i=_(e,i)}return h.set(n,a),a}function _(e,t){let n=t.length,r=e=>t.filter((t,n)=>n!==e),i=t=>{let i=t[0],a=1/0;if(t.length>1&&n-1<=o){let o=Array(n-1).fill(-1);for(let n of t){let t=m(r(n).map(t=>e[t].pitch),o,o,0),s=t.length?t[0].rank:1/0;s<a&&(a=s,i=n)}}return r(i)},a=[];for(let r=1;r<n;r++)e[t[r]].pitch===e[t[r-1]].pitch&&a.push(r);if(a.length)return i(a);if(n>2){let r=t.map(t=>(e[t].pitch%12+12)%12),a=[],o=[];for(let e=1;e<n-1;e++)a.push(e),r.some((t,n)=>n!==e&&t===r[e])&&o.push(e);return i(o.length?o:a)}return r(n-1)}let v=e.map(e=>(e.pitches??[]).map(()=>({unplayable:!0}))),y=e.map(e=>{let t=[];return(e.pitches??[]).forEach((n,r)=>{let i=p(n);if(i===void 0)return;let a=n+i,l=-1,u=-1,d=e.fixed?.[r];if(d){let e=Math.floor(d.string)-1,t=d.fret!==void 0&&d.fret!==null&&Number.isFinite(d.fret),n=t?Math.floor(d.fret):a-(c[e]??NaN);e>=0&&e<o&&n>=0&&n<=s&&c[e]+n===a&&(l=e,u=t?n:-1)}t.push({pitch:a,orig:r,shifted:i,fixedT:l,fixedFret:u})}),t.sort((e,t)=>t.pitch-e.pitch||e.orig-t.orig),t.length?t:void 0}),b=new Float64Array(e.length*d),x=new Int32Array(e.length*d),S=new Int32Array(e.length*d),C=new Float64Array(d),w=new Int32Array(d),T=[],E=-1/0,D=0,O=e=>{let t=-1,n=1/0;for(let r=1,i=e*d+1;r<d;r++,i++)b[i]<n&&(n=b[i],t=r);return t},k=t=>{let n=0,r=T.length?O(T.length-1):-1;for(let i=T.length-1;i>=0&&r>=0;i--){let a=T[i];if(a.reach<=t+L)break;if(a.end<=t+L){r=S[i*d+r];continue}let o=a.plan.shapes[x[i*d+r]],s=e[a.event].durations??[];for(let e=0;e<a.plan.kept.length;e++)a.onset+(s[a.notes[a.plan.kept[e]].orig]??0)>t+L&&(n|=1<<o.str[e]);r=S[i*d+r]}return n},A=()=>{if(!T.length)return;let e=O(T.length-1);for(let t=T.length-1;t>=0&&e>=0;t--){let n=T[t],r=n.plan.shapes[x[t*d+e]],i=v[n.event];for(let e=0;e<n.plan.kept.length;e++){let t=n.notes[n.plan.kept[e]],a={string:r.str[e]+1,fret:r.fret[e]};t.shifted&&(a.shifted=t.shifted),i[t.orig]=a}e=S[t*d+e]}T=[]};for(let t=0;t<e.length;t++){let n=y[t];if(!n)continue;let r=e[t],i=Number.isFinite(r.onset)?r.onset:D,a=Math.max(0,i-E);a>=2&&A();let o=g(n,k(i));if(!o.shapes.length)continue;let s=T.length,c=s*d,l=c-d;if(s>0){let e=1+.5*a,t=1.5/e,n=2/e,r=1/0,i=-1;for(let e=1;e<d;e++){C[e]=r,w[e]=i;let t=b[l+e];r+=n,t+n<r&&(r=t+n,i=e)}r=1/0,i=-1;for(let e=d-1;e>=1;e--){let a=C[e],o=w[e];r<a&&(a=r,o=i);let s=b[l+e];r+=n,s+n<r&&(r=s+n,i=e),a+=t,s<=a?(C[e]=s,w[e]=s<1/0?e:-1):(C[e]=a,w[e]=o)}}b.fill(1/0,c,c+d),x.fill(-1,c,c+d),S.fill(-1,c,c+d);let f=o.shapes;for(let e=0;e<f.length;e++){let t=f[e],n=t.open?1:t.posLo,r=t.open?u:t.posHi;for(let i=n;i<=r;i++){let n=t.cost+I*i,r=-1;s>0&&(t.open?(n+=b[l+i],r=i):(n+=C[i],r=w[i])),n<b[c+i]&&(b[c+i]=n,x[c+i]=e,S[c+i]=r)}}let p=r.durations??[],m=0;for(let e of n)m=Math.max(m,p[e.orig]??0);T.push({event:t,plan:o,notes:n,onset:i,end:i+m,reach:Math.max(i+m,T.at(-1)?.reach??-1/0)}),D=i,E=i+m}return A(),v}function z(e,t={}){let n=e.map(()=>({continuation:!1})),r=e.map((e,t)=>t).filter(t=>{let n=e[t];return n.pitch!==null&&Number.isFinite(n.pitch)&&Number.isFinite(n.onset)}).sort((t,n)=>e[t].onset-e[n].onset||t-n),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=[],s=[],c=e=>e.onset+(Number.isFinite(e.duration)?Math.max(0,e.duration):0);for(let t=0;t<r.length;){let l=e[r[t]].onset,u=t;for(;u<r.length&&Math.abs(e[r[u]].onset-l)<1e-6;)u++;let d=r.slice(t,u);t=u;let f=[];for(let t of d){let r=e[t],o=r.tieStop?a.get(r.pitch):void 0;o&&(i.set(t,o),n[t].continuation=!0,f.push(t),s[o[0]][o[1]]=Math.max(s[o[0]][o[1]],c(r)))}for(let t of f)e[t].tieStart||a.delete(e[t].pitch);for(let t of f)e[t].tieStart&&a.set(e[t].pitch,i.get(t));let p,m=/* @__PURE__ */ new Map;for(let t of d){if(n[t].continuation)continue;let r=e[t],u=r.pitch;p||(p={onset:l,durations:[],pitches:[],fixed:[]},o.push(p),s.push([]));let d=o.length-1,f=m.get(u);f===void 0?(f=p.pitches.length,m.set(u,f),p.pitches.push(u),p.fixed.push(r.fixed),s[d].push(c(r))):(s[d][f]=Math.max(s[d][f],c(r)),p.fixed[f]||(p.fixed[f]=r.fixed)),i.set(t,[d,f]),r.tieStart&&a.set(u,[d,f])}}o.forEach((e,t)=>{e.durations=s[t].map(t=>t-e.onset)});let l=R(o,t);for(let[e,[t,r]]of i)n[e].result=l[t][r];return n}new TextEncoder,new TextDecoder;const ee=e=>{if(!e.startsWith(`n_`))return null;let t=e.replace(/(?:_c\d+)?(?:_s\d+)?$/,``);return t===e?null:t},B=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],V=[0,2,4,5,7,9,11],H=(e,t)=>(e%t+t)%t;function te(e){let t=/^([+-]?)(dd|d|m|M|P|A|AA)(\d+)$/.exec(e.trim());if(!t)return{diatonic:0,chromatic:0};let n=Number(t[3])-1,r=n%7,i=V[r]+12*Math.floor(n/7),a=(r===0||r===3||r===4?{dd:-2,d:-1,P:0,A:1,AA:2}:{dd:-3,d:-2,m:-1,M:0,A:1,AA:2})[t[2]]??0,o=t[1]===`-`?-1:1;return{diatonic:o*n,chromatic:o*(i+a)}}const ne=({diatonic:e,chromatic:t})=>7*t-12*e;function re(e,t){if(!t.diatonic&&!t.chromatic)return e;let n=B.indexOf(e.step)+t.diatonic,r=B[H(n,7)],i=e.octave+Math.floor(n/7);return{step:r,octave:i,alter:U(e)+t.chromatic-U({step:r,octave:i,alter:0})}}const U=e=>(e.octave+1)*12+V[B.indexOf(e.step)]+e.alter;function ie(e){if(e==null)return null;let t=/^\s*(\d+)\s*([sf]?)\s*$/.exec(e);if(!t)return null;let n=Number(t[1]);return t[2]===`f`?-n:n}const ae=e=>e>0?`${e}s`:e<0?`${-e}f`:`0`,oe=e=>{let t=e;for(;t>7;)t-=12;for(;t<-7;)t+=12;return t};function se(e,t,n,r,i){if(t===0){let t=E(oe(e),n);return i?D(t)??t:t}let a=H(7*(e+7*t),12);return O(H(a-(n===`minor`?3:0),12),n,{family:r.profile,flip:i})}function ce(e){let t=[];return e.forEach((n,r)=>{if(n.tiedFrom!==void 0&&t[n.tiedFrom]&&U(t[n.tiedFrom])===n.midi){t.push(t[n.tiedFrom]);return}let i=e=>e&&!e.chord&&!n.chord?e.midi:void 0;t.push(N(n.midi,n.key,{source:n.source,prev:i(e[r-1]),next:i(e[r+1]),transposed:!0}))}),t}const le=(e,t)=>e.scale[B.indexOf(t)]?.alter??0;function ue(e){let t=Array(e.length).fill(!1),n=e.map((e,t)=>t).sort((t,n)=>e[t].onset-e[n].onset||t-n),r=/* @__PURE__ */ new Map;for(let i=0;i<n.length;){let a=i;for(;a<n.length&&Math.abs(e[n[a]].onset-e[n[i]].onset)<1e-6;)a++;let o=[];for(let s of n.slice(i,a)){let{pitch:n,key:i,tieEnd:a,cautionary:c}=e[s],l=`${n.step}${n.octave}`,u=r.get(l)??le(i,n.step);a||(n.alter!==u||c)&&(t[s]=!0,o.push([l,n.alter]))}for(let[e,t]of o)r.set(e,t);i=a}return t}const W=/^([A-G])([#♯b♭x𝄪𝄫]*)/,de=e=>[...e].reduce((e,t)=>e+(t===`#`||t===`♯`?1:t===`x`||t===`𝄪`?2:t===`𝄫`?-2:-1),0);function fe(e,t){let n=(e,n)=>{let r=t.reduce((e,t)=>re(e,t),{step:e,alter:de(n),octave:4});return r.step+(r.alter>0?`#`.repeat(r.alter):`b`.repeat(-r.alter))},r=W.exec(e);if(!r)return e;let i=e.slice(r[0].length).replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,r)=>`/${n(t,r)}`);return n(r[1],r[2])+i}const pe={treble:[`G`,`2`],bass:[`F`,`4`],alto:[`C`,`3`],tenor:[`C`,`4`],treble8vb:[`G`,`2`,`8`]},G=[`clef.shape`,`clef.line`,`clef.dis`,`clef.dis.place`];function me(e,t){let[n,r,i]=pe[e];return`<clef${t?` xml:id="${t}"`:``} shape="${n}" line="${r}"${i?` dis="${i}" dis.place="below"`:``}/>`}function he(e,t){if(!/\sclef\.shape\s*=/.test(e))return e;let n=G.reduce(Ce,e);if(!t||!pe[t])return n;let[r,i,a]=pe[t];return n=q(q(n,`clef.shape`,r),`clef.line`,i),a?q(q(n,`clef.dis`,a),`clef.dis.place`,`below`):n}const ge=`CDEFGAB`,_e=[0,2,4,5,7,9,11],K={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},ve=e=>({1:`s`,[-1]:`f`,0:`n`,2:`x`,[-2]:`ff`})[e]??`n`,ye=e=>({1:`s`,[-1]:`f`,0:`n`,2:`ss`,[-2]:`ff`})[e]??`n`;function be(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}const xe={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625};function Se(e){return r(e,`grace`)===null?(xe[r(e,`dur`)||``]??0)*(2-1/2**(Number(r(e,`dots`))||0)):0}function q(e,t,n){let r=RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,` ${t}="${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)}function Ce(e,t){return e.replace(RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`),``)}const we=[`keysig`,`key.sig`,`key.mode`,`key.pname`,`key.accid`,`key.sig.mixed`],J=e=>we.reduce(Ce,e),Te=e=>e.replace(/\s*\/>$/,`>`),Ee=e=>`<keySig sig="${ae(e.fifths)}"${e.mode===`minor`?` mode="minor"`:``}/>`,De=e=>e===`minor`?`minor`:e===`major`?`major`:null,Oe=/^(?:\s+(?:n|xml:id|keysig|key\.[\w.]+)\s*=\s*(?:"[^"]*"|'[^']*'))*\s*$/;function ke(e,t){return t?!!t.interval||t.concert||t.flip||t.semitones!==0||/\b(?:clef\.)?shape="perc"/.test(e)||Object.values(t.staves).some(e=>e.percussion||(e.keys?.length??0)>1||!!e.clef||!!e.shift?.[1]||!!e.shift?.[0]||Object.keys(e.octaves??{}).length>0):!1}async function Y(e,t,n,r=0){return!t||!ke(e,t)?e:Ae(t.interval?await n(e,{transpose:t.interval,transposeToSoundingPitch:!1}):e,t,r)}function Ae(e,t,n=0){if(!ke(e,t))return e;let i=ne(te(t.interval)),a=/* @__PURE__ */ new Map;u(e,({closing:e,name:t,attributes:n})=>{if(e||t!==`tie`)return;let i=r(n,`startid`)?.replace(/^#/,``),o=r(n,`endid`)?.replace(/^#/,``);i&&o&&a.set(o,i)});let o=[],s=[],c=[],l=[],d=[],f=[],p=new Set(Object.entries(t.staves).filter(([,e])=>e.percussion).map(([e])=>e)),m=e=>t.staves[e]??{profile:`neutral`,moved:t.semitones!==0},h=e=>{let t=m(e).shift;return t&&(t[0]||t[1])?{diatonic:t[0],chromatic:t[1]}:void 0},g=e=>!p.has(e)&&(m(e).moved||t.semitones!==0||t.flip||!!t.interval||!!h(e)),_=(e,t)=>{let n=p.has(e)?void 0:m(e).octaves;if(!n)return 0;let r=n[t]===void 0?ee(t):null;return(n[t]??(r?n[r]:void 0)??0)/12},v=e=>!p.has(e)&&Object.keys(m(e).octaves??{}).length>0,y=e=>{let t=p.has(e)?void 0:m(e).clef;return t&&pe[t]?t:void 0},b=[],x=[],S=[],C,w,T,D=0,O=-1,k=``,A=``,j=0,M=[],N=-1,F=0,I=0,L,R,z=()=>M.reduce((e,t)=>e*t,1),B=(e,t,n)=>{let i=ie(r(e,t))??(t===`key.sig`?ie(r(e,`keysig`)):null);return i===null?null:{fifths:i,mode:De(r(e,n))??`major`}};u(e,({closing:t,name:n,attributes:i,selfClosing:u,index:m,length:h})=>{let _=e.slice(m,m+h);if(t){if(S.pop(),T){--D===0&&(T.end=m+h,T=void 0);return}n===`staffDef`&&w?(w.end=m+h,w=void 0):n===`scoreDef`&&C?(C.end=m+h,C=void 0):n===`note`&&L?(L.end=m+h,L=void 0):n===`chord`?(F--,j+=I*z()):n===`tuplet`?M.pop():n===`harm`&&R?(R.textEnd=m,R=void 0):n===`layer`?A=``:n===`staff`&&(k=``);return}if(u||S.push(n),T){u||D++;return}if(R&&(R.nested=!0),n===`scoreDef`){let e={start:m,end:m+h,initial:!o.length,measure:O+1,content:!1,keyRanges:[],tagEdits:[],keys:/* @__PURE__ */ new Map},t=B(i,`key.sig`,`key.mode`);t&&e.keys.set(`*`,t);let n=J(_);n!==_&&e.tagEdits.push({start:m,end:m+h,text:n}),/\s(?!xml:id)[\w.:-]+\s*=/.test(n.replace(/^<[\w:]+/,``).replace(/\sxml:id\s*=\s*"[^"]*"/,``))&&(e.content=!0),o.push(e),u||(C=e);return}if(C&&n===`staffGrp`){if(C.initial)return;Oe.test(i)||(C.content=!0);return}if(n===`staffDef`){let e=r(i,`n`)||``,t={start:m,end:m+h,n:e,tag:_,selfClosing:u};if(r(i,`clef.shape`)===`perc`&&p.add(e),C){let n=B(i,`key.sig`,`key.mode`);n&&C.keys.set(e,n);let r=y(e)?he(J(_),C.initial?y(e):void 0):J(_);r!==_&&C.tagEdits.push({start:m,end:m+h,text:r}),Oe.test(i)||(C.content=!0),C.initial&&(s.push(t),e&&!x.includes(e)&&x.push(e))}u||(w=t);return}if(n===`clef`&&w){r(i,`shape`)===`perc`&&p.add(w.n),u&&(w.clefEnd=m+h,w.clef={start:m,end:m+h,id:r(i,`xml:id`)}),C&&(C.content=!0),u&&C&&!C.initial&&y(w.n)&&b.push({start:m,end:m+h,text:``});return}if(n===`keySig`){let e={start:m,end:m+h};u||(T=e,D=1);let t=B(i,`sig`,`mode`);C?(C.keyRanges.push(e),t&&C.keys.set(w?w.n:`*`,t)):k&&f.push(Object.assign(e,{staff:k,measure:O,onset:j,key:t}));return}if(C){C.content=!0;return}if(n===`measure`){O++,c.push(m);return}if(n===`staff`){k=r(i,`n`)||``;return}if(n===`layer`){A=r(i,`n`)||`1`,j=0,M.length=0,F=0;return}if(!k||!A){n===`harm`&&!u&&(R={textStart:m+h,textEnd:m+h,staff:(r(i,`staff`)||``).split(/\s+/)[0],measure:O,nested:!1},d.push(R));return}if(n===`clef`){y(k)&&u&&b.push({start:m,end:m+h,text:``});return}if(n===`tuplet`){let e=Number(r(i,`num`))||1,t=Number(r(i,`numbase`))||1;u||M.push(t/e);return}if(n===`chord`){N=j,I=Se(i),u?j+=I*z():F++;return}if(n===`note`){let e=F>0,t=e?N:j;e||(j+=Se(i)*z());let n=(r(i,`pname`)||``).toUpperCase(),o=Number(r(i,`oct`));if(!n||!ge.includes(n)||!Number.isFinite(o)||!(g(k)||v(k)))return;let s=r(i,`xml:id`)||``,c=r(i,`tie`),d=r(i,`accid`),f=r(i,`accid.ges`);L={start:m,end:m+h,tag:_,selfClosing:u,id:s,staff:k,layer:A,measure:O,onset:t,chord:e,pname:n,oct:o,written:d===null?null:K[d]??null,gestural:f===null?null:K[f]??null,accids:[],tieEnd:a.has(s)||c===`t`||c===`m`,cautionary:!1},l.push(L),u&&(L=void 0);return}if(n===`accid`&&L){let e=r(i,`accid`),t=r(i,`accid.ges`);e!==null&&K[e]!==void 0&&(L.written=K[e]),t!==null&&K[t]!==void 0&&(L.gestural=K[t]),(r(i,`func`)!==null||r(i,`enclose`)!==null)&&(L.cautionary=e!==null),L.accids.push({start:m,end:m+h,attributes:i});return}[`rest`,`space`,`mRest`,`mSpace`,`multiRest`].includes(n)&&F===0&&(j+=(n.startsWith(`m`)?1e3:Se(i))*z())});for(let e of p)x.includes(e)||x.push(e);let V=c.length,H=/* @__PURE__ */ new Map;for(let e of x){if(p.has(e))continue;let t=Array(Math.max(1,V)).fill(void 0),r=m(e).keys;if(r?.length)for(let e=0;e<t.length;e++){let i=[...r].reverse().find(([t])=>t<=e+n)??r[0];t[e]={fifths:i[1],mode:i[2]}}else{let n={fifths:0,mode:`major`},r=/* @__PURE__ */ new Map;for(let n of o){let a=n.keys.get(e)??n.keys.get(`*`);a&&r.set(Math.min(n.measure,t.length-1),{fifths:a.fifths-i,mode:a.mode})}for(let n of f)n.staff===e&&n.key&&(n.onset===0||n.measure+1<t.length)&&r.set(Math.min(n.measure+1,t.length-1),{fifths:n.key.fifths-i,mode:n.key.mode});for(let e=0;e<t.length;e++)n=r.get(e)??n,t[e]=n}H.set(e,t)}let U=/* @__PURE__ */ new Map;for(let e of f)if(e.onset>0&&e.key){let t=`${e.staff}|${e.measure}`;(U.get(t)??U.set(t,[]).get(t)).push(e)}let ae=(e,t,n)=>U.get(`${e}|${t}`)?.findLast(e=>e.onset<=n+1e-6),oe=(e,t,n=0)=>{let r=ae(e,t,n)?.key,a=h(e);return r?{fifths:r.fifths-i+(a?ne(a):0),mode:r.mode}:H.get(e)?.[Math.max(0,Math.min(t,V-1))]??{fifths:0,mode:`major`}},le=/* @__PURE__ */ new Map,W=(e,n,r=0)=>{let i=oe(e,n,r),a=`${e}|${i.fifths}|${i.mode}`,o=le.get(a);return o||(o=se(i.fifths,t.semitones,i.mode,m(e),t.flip),le.set(a,o)),o},de=(e,t,n=0)=>{let r=h(e);return oe(e,t,n).fifths+i-(r?ne(r):0)},G=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.measure}|${ae(e.staff,e.measure,e.onset)?.start??0}`;(G.get(t)??G.set(t,[]).get(t)).push(e)}let xe=/* @__PURE__ */ new Map;for(let e of G.values()){let t=/* @__PURE__ */ new Map;for(let n of[...e].sort((e,t)=>e.onset-t.onset)){let e=`${n.pname}${n.oct}`;xe.set(n,n.written??n.gestural??t.get(e)??be(n.pname,de(n.staff,n.measure,n.onset))),n.written!==null&&t.set(e,n.written)}}let we=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.layer}`;(we.get(t)??we.set(t,[]).get(t)).push(e)}let Y=/* @__PURE__ */ new Map,Ae=e=>(e.octave+1)*12+_e[ge.indexOf(e.step)]+e.alter;for(let e of we.values()){let t=new Map(e.map((e,t)=>[e.id,t])),n=e.map(e=>{let n=h(e.staff),r={step:e.pname,octave:e.oct,alter:xe.get(e)??0},i=n?re(r,n):r,o={...i,octave:i.octave+_(e.staff,e.id)},s=a.get(e.id);return{midi:Ae(o),source:o,key:W(e.staff,e.measure,e.onset),chord:e.chord,tiedFrom:s===void 0?void 0:t.get(s)}});if(!g(e[0].staff)){n.forEach((t,n)=>Y.set(e[n],t.source));continue}ce(n).forEach((t,n)=>Y.set(e[n],t))}let je=new Map(l.map(e=>[e.id,e]));for(let e of l){let t=je.get(a.get(e.id)||``);t&&Y.has(t)&&Ae(Y.get(t))===Ae(Y.get(e))&&Y.set(e,Y.get(t))}let Me=/* @__PURE__ */ new Set,Ne=(e,t,n)=>({...E(0),scale:ge.split(``).map(r=>({step:r,alter:be(r,de(e,t,n))}))});for(let e of G.values()){let t=e[0].staff;if(!y(t)&&!v(t))continue;let n=ue(e.map(e=>({pitch:{step:e.pname,octave:e.oct,alter:xe.get(e)??0},onset:e.onset,key:Ne(e.staff,e.measure,e.onset),tieEnd:e.tieEnd})));e.forEach((e,t)=>{e.written!==null&&!e.tieEnd&&!n[t]&&Me.add(e)})}let Pe=/* @__PURE__ */ new Map;for(let e of G.values()){let t=ue(e.map(e=>({pitch:Y.get(e),onset:e.onset,key:W(e.staff,e.measure,e.onset),tieEnd:e.tieEnd,cautionary:e.cautionary||Me.has(e)})));e.forEach((e,n)=>Pe.set(e,t[n]))}let X=[];for(let e of l){let t=Y.get(e),n=Pe.get(e),i=Ce(Ce(e.tag,`accid`),`accid.ges`);i=q(q(i,`pname`,t.step.toLowerCase()),`oct`,String(t.octave));let a=Number(r(e.tag,`oct.ges`)??NaN);Number.isFinite(a)&&t.octave!==e.oct&&(i=q(i,`oct.ges`,String(a+t.octave-e.oct))),n||(i=q(i,`accid.ges`,ye(t.alter)));let o=e.accids.find(e=>r(e.attributes,`accid`)!==null)??e.accids[0],s=o?r(o.attributes,`xml:id`):null,c=o&&n?[`func`,`enclose`,`place`].map(e=>[e,r(o.attributes,e)]).filter(([,e])=>e!==null).map(([e,t])=>` ${e}="${t}"`).join(``):``,l=n?`<accid${s?` xml:id="${s}"`:``} accid="${ve(t.alter)}"${c}/>`:``;if(e.selfClosing)X.push({start:e.start,end:e.end,text:l?`${Te(i)}${l}</note>`:i});else{X.push({start:e.start,end:e.start+e.tag.length,text:i+l});for(let t of e.accids)X.push({start:t.start,end:t.end,text:``})}}for(let t of d){if(!g(t.staff)||t.nested||t.textEnd<=t.textStart)continue;let n=e.slice(t.textStart,t.textEnd),[,r,i,a]=/^(\s*)([\s\S]*?)(\s*)$/.exec(n),o=h(t.staff),s=P(o?fe(i,[o]):i,W(t.staff,Math.max(0,t.measure)));s!==i&&X.push({start:t.textStart,end:t.textEnd,text:r+s+a})}for(let t of f){let n=t.onset>0&&t.key&&!p.has(t.staff)?Ee(W(t.staff,t.measure,t.onset)):``,i=r(e.slice(t.start,t.end),`xml:id`);n&&i&&(n=q(n,`xml:id`,i)),X.push({start:t.start,end:t.end,text:n})}for(let e of o){if(!e.initial&&!e.content){X.push({start:e.start,end:e.end,text:``});continue}X.push(...e.tagEdits);for(let t of e.keyRanges)X.push({start:t.start,end:t.end,text:``})}let Fe=x.filter(e=>!p.has(e));X.push(...b);for(let e of s){if(p.has(e.n)||!Fe.includes(e.n))continue;let t=Ee(W(e.n,0)),n=y(e.n),r=n?he(J(e.tag),n):J(e.tag),i=n&&!e.clef&&!/\sclef\.shape\s*=/.test(e.tag)?me(n,null):``;if(n&&e.clef&&X.push({start:e.clef.start,end:e.clef.end,text:me(n,e.clef.id)}),e.selfClosing){let n=X.findIndex(t=>t.start===e.start&&t.end===e.end);n>=0&&X.splice(n,1),X.push({start:e.start,end:e.end,text:`${Te(r)}${i}${t}</staffDef>`})}else{let n=e.clefEnd??e.start+e.tag.length;X.push({start:n,end:n,text:i+t})}}for(let e=1;e<V;e++){let t=Fe.filter(t=>{let n=W(t,e-1,1/0),r=W(t,e);return n.fifths!==r.fifths||n.mode!==r.mode});if(!t.length)continue;let n=c[e];X.push({start:n,end:n,text:`<scoreDef><staffGrp>${t.map(t=>`<staffDef n="${t}">${Ee(W(t,e))}</staffDef>`).join(``)}</staffGrp></scoreDef>`})}if(!X.length)return e;X.sort((e,t)=>e.start-t.start||e.end-t.end);let Ie=[],Z=0;for(let t of X)t.start<Z||(Ie.push(e.slice(Z,t.start),t.text),Z=t.end);return Ie.push(e.slice(Z)),Ie.join(``)}const je={id:`violin`,provenance:`ported`,source:`violintab instruments.ts: VIOLIN_FINGER_MIDI`,strings:[`E`,`A`,`D`,`G`],openMidi:[76,69,62,55],fingers:[{1:[78,80,81,83],2:[79,81,83,85],3:[81,83,85,86],4:[83,85,86,88]},{1:[71,73,74,76],2:[72,74,76,77],3:[74,76,77,79],4:[76,77,79,81]},{1:[64,66,67,69],2:[65,67,69,71],3:[67,69,71,72],4:[69,71,72,74]},{1:[57,59,60,62],2:[58,60,62,64],3:[60,62,64,65],4:[62,64,66,67]}]},Me=[.5,1,1.5,2,3,3.5,4,4.5];function Ne(e){return Object.fromEntries(Me.map((t,n)=>{let r=e+n+1;return[t,[r,r+1,r+2,r+3]]}))}const Pe={id:`cello`,provenance:`ported`,source:`violintab CELLO_FINGER_MIDI; Davidoff key correction`,strings:[`A`,`D`,`G`,`C`],openMidi:[57,50,43,36],fingers:[57,50,43,36].map(Ne)},X={violin:je,viola:{id:`viola`,provenance:`derived`,source:`violin transposed -7 semitones`,strings:[`A`,`D`,`G`,`C`],openMidi:[69,62,55,48],fingers:je.fingers.map(e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[t[0]-7,t[1]-7,t[2]-7,t[3]-7]])))},cello:Pe,"double-bass":{id:`double-bass`,provenance:`derived`,source:`cello offsets on bass tuning; provisional four-finger analogy`,strings:[`G`,`D`,`A`,`E`],openMidi:[43,38,33,28],fingers:[43,38,33,28].map(Ne)}},Fe={C:0,D:2,E:4,F:5,G:7,A:9,B:11};function Ie(e,t,n){if(!Number.isInteger(t)||t<0||t>127)return[];let r=[];e.openMidi.forEach((n,i)=>{let a=i+1;t===n&&r.push({string:a,position:0,finger:0,modifier:``});for(let[o,s]of Object.entries(e.fingers[i]??{}))s.forEach((e,i)=>{let s=t-e;t>n&&Math.abs(s)<=1&&r.push({string:a,position:Number(o),finger:i+1,modifier:s===-1?`L`:s===1?`H`:``})})});let i=e.id===`cello`||e.id===`double-bass`,a=(n&&(Fe[n.step]+n.alter+12)%12==t%12?n.alter>0:[1,3,8].includes(t%12))?`H`:`L`,o=e=>Number(e.modifier!==``),s=e=>i&&e.position===.5?1.25:e.position;return r.sort((e,t)=>Number(t.finger===0)-Number(e.finger===0)||(i?o(e)-o(t):0)||s(e)-s(t)||o(e)-o(t)||e.string-t.string||Number(e.modifier!==a)-Number(t.modifier!==a)||e.finger-t.finger)}function Z(e,t){let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Map;for(let e of t)r.set(e.onset,[...r.get(e.onset)??[],e]);let i=[];for(let[t,a]of[...r].sort(([e],[t])=>e-t)){let r=a.map(e=>e.tieStop?i.find(n=>n.midi===e.midi&&n.until>=t):void 0);i=i.filter(e=>e.until>t);let o=a.map((t,n)=>t.fixed?[t.fixed]:r[n]?[r[n].fingering]:t.midi===null?[]:Ie(e,t.midi,t.spelling)),s,c=1/0,l=(e,t,n)=>{if(!(n>=c)){if(e===a.length){s=[...t],c=n;return}o[e].forEach((r,o)=>{[...i.map(e=>({midi:e.midi,fingering:e.fingering})),...t.map((e,t)=>({midi:a[t].midi,fingering:e}))].some(t=>t.fingering.string===r.string&&t.midi!==a[e].midi||r.position&&t.fingering.position&&r.position!==t.fingering.position)||l(e+1,[...t,r],n+o)})}};new Set(a.map(e=>e.midi)).size<=4&&l(0,[],0),s&&s.forEach((e,r)=>{n.set(a[r].id,e),a[r].midi!==null&&i.push({midi:a[r].midi,until:t+a[r].duration,fingering:e})})}return n}const Le={c:0,d:2,e:4,f:5,g:7,a:9,b:11},Re={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},ze={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625},Be=/* @__PURE__ */ new Set([`rest`,`space`,`mRest`,`mSpace`,`multiRest`]),Ve=/* @__PURE__ */ new Set([`beam`,`tuplet`]),He=/* @__PURE__ */ new Set([`bTrem`,`fTrem`,`ligature`,`choice`,`orig`,`reg`,`sic`,`corr`,`supplied`,`add`,`subst`]),Ue=/* @__PURE__ */ new Set([`harm`,`tempo`,`dir`,`repeatMark`,`fermata`]),We=/* @__PURE__ */ new Set([`mRpt`,`mRpt2`,`multiRpt`]),Ge=/* @__PURE__ */ new Set([...We,`beatRpt`,`halfmRpt`]),Ke=[[`c`],[`c`,`s`],[`d`],[`e`,`f`],[`e`],[`f`],[`f`,`s`],[`g`],[`a`,`f`],[`a`],[`b`,`f`],[`b`]],qe=e=>e.replace(/[&<>"]/g,``),Q=(e,t)=>e?` xml:id="${qe(e)}${t}"`:``;function Je(e,t,n){let i=Number(r(e,`dur.ppq`));if(t&&Number.isFinite(i)&&r(e,`dur.ppq`)!==null)return i/t;let a=ze[r(e,`dur`)||``];return a===void 0?0:a*(2-1/2**(Number(r(e,`dots`))||0))*n.reduce((e,t)=>e*t,1)}const Ye=(e,t,n)=>{let i=(r(e,`pname`)||``).toLowerCase(),a=Number(r(e,`oct`));if(!(i in Le)||!Number.isFinite(a)||r(e,`oct`)===null)return null;let o=r(e,`accid.ges`)??t.gestural??r(e,`accid`)??t.written??``;return 12*(a+1)+Le[i]+(Re[o]??0)+n},Xe=e=>typeof e==`number`&&Number.isFinite(e)?Math.max(0,Math.min(24,Math.round(e))):0,Ze=e=>Array.isArray(e)&&e.length>=1&&e.length<=31&&e.every(e=>Number.isInteger(e)&&e>=0&&e<=127)?e:F,Qe=e=>{if(!e.size)return null;let t=Math.max(...e.keys()),n=Array.from({length:t},(n,r)=>e.get(t-r));return n.every(e=>e!==void 0)?n:null};function $e(e,t){return`<tuning>${[...e].reverse().map((e,n)=>{let r=e+t,[i,a]=Ke[(r%12+12)%12];return`<course n="${n+1}" pname="${i}" oct="${Math.floor(r/12)-1}"${a?` accid="${a}"`:``}/>`}).join(``)}</tuning>`}function et(e,t){let n=new Set(t.generate),i=t.refret??{},a=new Set(t.sounding??[]),o=t.switched??{},s=/* @__PURE__ */ new Set([...n,...Object.keys(i)]),c=new Map([...s].map(e=>[e,[]])),l=/* @__PURE__ */ new Map,d=/* @__PURE__ */ new Set,f=/* @__PURE__ */ new Set,p=/* @__PURE__ */ new Set,m=4,h=4,g=4,_=(e,t)=>{let n=Number(r(e,`${t}count`)),i=Number(r(e,`${t}unit`));n>0&&(h=n),i>0&&(g=i),m=h*4/g},v=0,y=0,b=!1,x=!1,S=null,C=0,w=null,T=0,E=[],D=null,O=!1,k=null,A=0,j=[{onset:0,sig:`0`}],M=[],N=(e,t)=>{e!==null&&j.push({staff:t,onset:v+(x?T:0),sig:e})},P=(e,t)=>{let n=Number.parseInt(t)||0;return(t.endsWith(`f`)?`beadgcf`:`fcgdaeb`).slice(0,n).includes(e)?t.endsWith(`f`)?`f`:`s`:`n`},F=()=>{if(!k)return;let e=l.get(S);if(t.fingers?.[S]&&M.push({rec:k.rec,staff:S,onset:k.event.onset,measure:v,semi:e?.semi??0,attributes:k.attributes,written:k.written,gestural:k.gestural}),S in i){let t=Number(r(k.attributes,`tab.course`)),n=Number(r(k.attributes,`tab.fret`)),a=e?.courses?.get(t);k.rec.midi=a!==void 0&&Number.isInteger(n)&&n>=0&&r(k.attributes,`tab.fret`)!==null?a+n+i[S]:null}else{k.rec.midi=Ye(k.attributes,k,e?.semi??0);let t=(r(k.attributes,`pname`)??``).toUpperCase(),n=Re[r(k.attributes,`accid.ges`)??k.gestural??r(k.attributes,`accid`)??k.written??`n`]??0;t.toLowerCase()in Le&&Math.abs(n)<=2&&(k.rec.spelling={step:t,alter:n})}k=null};u(e,({closing:e,name:i,attributes:u,selfClosing:h})=>{if(e){if(i===`staffDef`){w?.courses.size&&(w.entry.courses=w.courses),w=null;return}if(i===`measure`){x=!1,v+=y>0&&!b?y:Math.max(y,m);return}if(!S)return;if(A){A--;return}i===`note`?F():i===`chord`||i===`tabGrp`?(D&&!O&&(T+=D.dur),D=null):i===`tuplet`?E.pop():i===`layer`?y=Math.max(y,T):i===`staff`&&--C===0&&(S=null);return}if(i===`scoreDef`){N(r(u,`keysig`)??r(u,`key.sig`)),_(u,`meter.`);return}if(i===`keySig`){N(r(u,`sig`),S??w?.n);return}if(i===`meterSig`){_(u,``);return}if(i===`staffDef`){_(u,`meter.`);let e=r(u,`n`)||``;if(s.has(e)){N(r(u,`keysig`)??r(u,`key.sig`),e);let t=l.get(e),n=Number(r(u,`ppq`)),i=r(u,`trans.semi`),s={ppq:n>0?n:t?.ppq,semi:e in o?o[e]:a.has(e)?0:i===null?t?.semi??0:Number(i)||0,courses:t?.courses};l.set(e,s),h||(w={n:e,entry:s,courses:/* @__PURE__ */ new Map})}return}if(i===`course`&&w){let e=Number(r(u,`n`)),t=Ye(u,{},0);e>=1&&t!==null&&w.courses.set(e,t);return}if(i===`measure`){x=!0,y=0,b=!1;return}if(i===`tie`&&x){let e=(r(u,`startid`)||``).replace(/^#/,``),t=(r(u,`endid`)||``).replace(/^#/,``);e&&t&&(d.add(e),f.add(t));return}if(i===`staff`&&!S){let e=r(u,`n`)||``;s.has(e)&&!h&&(S=e,C=1);return}if(!S)return;if(A){h||A++;return}if(!h&&i===`staff`){C++;return}let j=c.get(S),M=l.get(S)?.ppq;if(i===`layer`){T=0;return}if(i===`graceGrp`){h||(A=1);return}if(i===`tuplet`){let e=Number(r(u,`num`))||1,t=Number(r(u,`numbase`))||1;h||E.push(t/e);return}if(i===`chord`||i===`tabGrp`){if(O=r(u,`grace`)!==null,O){h||(A=1);return}D={onset:v+T,dur:Je(u,M,E),notes:[]},j.push(D);let e=r(u,`xml:id`);e&&n.has(S)&&p.add(e),h&&(T+=D.dur,D=null);return}if(i===`note`){if(!D&&r(u,`grace`)!==null){h||(A=1);return}let e=D;e||(e={onset:v+T,dur:Je(u,M,E),notes:[]},j.push(e),T+=e.dur);let i=r(u,`xml:id`)||``;i&&n.has(S)&&p.add(i);let a=r(u,`tie`)||``,o=Number(r(u,`tab.course`)),s=Number(r(u,`tab.fret`)),c=Number.isInteger(s)&&r(u,`tab.fret`)!==null,l={id:i,midi:null,fixed:t.fixed&&n.has(S)&&!t.unfixed?.includes(S)&&Number.isInteger(o)&&o>=1?c?{string:o,fret:s}:{string:o}:void 0,continuation:/[mt]/.test(a),tieStart:/[im]/.test(a),dur:e.dur};e.notes.push(l),k={rec:l,attributes:u,event:e,inChord:!!D},h&&F();return}if(i===`accid`&&k){let e=r(u,`accid`),t=r(u,`accid.ges`);e!==null&&(k.written=e),t!==null&&(k.gestural=t);return}(Be.has(i)||Ge.has(i))&&(i===`mRest`||i===`mSpace`||i===`multiRest`||We.has(i)?b=!0:T+=i===`halfmRpt`?m/2:i===`beatRpt`?4/g:Je(u,M,E))});let I=/* @__PURE__ */ new Map;for(let e of M.sort((e,t)=>e.onset-t.onset)){let t=0;j.forEach((n,r)=>{(!n.staff||n.staff===e.staff)&&n.onset<=e.onset&&(n.onset>j[t].onset||n.onset===j[t].onset&&(Number(!!n.staff)>Number(!!j[t].staff)||!!n.staff==!!j[t].staff&&r>t))&&(t=r)});let n=r(e.attributes,`pname`)??``,i=`${e.staff}:${n}:${r(e.attributes,`oct`)}`,a=r(e.attributes,`accid.ges`)??e.gestural??r(e.attributes,`accid`)??e.written,o=I.get(i),s=a??(o?.measure===e.measure&&o.key===t?o.value:P(n,j[t].sig));a!=null&&I.set(i,{value:a,measure:e.measure,key:t}),e.rec.midi=Ye(e.attributes,{...e,gestural:s},e.semi);let c=Re[s]??0;n in Le&&Math.abs(c)<=2&&(e.rec.spelling={step:n.toUpperCase(),alter:c})}return{staves:c,tieStarts:d,tieEnds:f,info:l,ids:p}}function tt(e,t,n,r,i,a){let o=/* @__PURE__ */ new Map,s=Xe(i.capo);for(let[c,l]of e){if(i.fingers?.[c])continue;let e=Ze(i.tunings?.[c]??i.tuning),u=[],d=[];for(let e of l)for(let r of e.notes)u.push(r),d.push({onset:e.onset,duration:r.dur,pitch:r.midi,tieStart:r.tieStart||t.has(r.id),tieStop:r.continuation||n.has(r.id),fixed:a?.get(r.id)??r.fixed});let f=c in(i.refret??{})&&r.get(c)?.courses?Qe(r.get(c).courses):null;z(d,f?{tuning:f,capo:0}:{tuning:e,capo:s}).forEach(({result:e,continuation:t},n)=>{let r=u[n];if(r.continuation=t,e){if(t){r.held=e;return}o.set(r.id,e),a&&r.id&&`string`in e&&!a.has(r.id)&&a.set(r.id,{string:e.string,fret:e.fret})}})}return o}const nt=e=>[`dur`,`dots`,`dur.ppq`].map(t=>{let n=r(e,t);return n===null?``:` ${t}="${n}"`}).join(``),rt=(e,t)=>t&&`string`in t?`<note${Q(e,``)} tab.course="${t.string}" tab.fret="${t.fret}"/>`:``,it=e=>e&&`string`in e?`<note tab.course="${e.string}" tab.fret="${e.fret}" visible="false"/>`:``,$=(e,t,n)=>{let r=RegExp(`(\\s${t.replace(`.`,`\\.`)}\\s*=\\s*)(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,`$1"${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)};function at(e,t,n){let i=new Set(t.generate),a=t.refret??{},o=t.retarget,s=Object.keys(o).length>0;if(!i.size&&!s&&!Object.keys(a).length)return e;let c=i.size||Object.keys(a).length,{staves:l,tieStarts:d,tieEnds:f,info:p,ids:m}=c?et(e,t):{staves:/* @__PURE__ */ new Map,tieStarts:/* @__PURE__ */ new Set,tieEnds:/* @__PURE__ */ new Set,info:/* @__PURE__ */ new Map,ids:/* @__PURE__ */ new Set},h=c?tt(l,d,f,p,t,n):/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Map;for(let[e,n]of l)for(let r of n)for(let n of r.notes)(n.continuation||t.fingers?.[e]&&f.has(n.id))&&g.set(n.id,n.held);let _=/* @__PURE__ */ new Map;for(let[e,r]of l){let i=t.fingers?.[e];if(!i)continue;let a=Z(X[i],r.flatMap(e=>e.notes.map(t=>({id:t.id,onset:e.onset,duration:t.dur,midi:t.midi,spelling:t.spelling,tieStop:t.continuation||f.has(t.id),fixed:n?.get(t.id)?.finger}))));for(let[e,t]of a){_.set(e,t),n?.set(e,{string:t.string,fret:t.finger,finger:t});let r={string:t.string,fret:t.modifier?44:t.finger};h.set(e,r),g.has(e)&&g.set(e,r)}}let v=(e,t)=>{let n=_.get(e),r=rt(e?`${e}${t}`:``,h.get(e));return n?r.replace(`/>`,` type="finger-tab-${n.modifier}${n.finger}-p${String(n.position).replace(`.`,`-`)}"/>`):r},y=Xe(t.capo),b=new Set([...i].map(e=>String(100+Number(e)))),x=[],S=0,C=-1,w=!1,T=0,E=null,D=null,O=``,k=[],A=0,j=/* @__PURE__ */ new Map,M=e=>e===.5?`pos. ½`:`${[``,`I`,`II`,`III`,`IV`][Math.floor(e)]??``}${e%1?`½`:``} pos.`,N=0,P=0,F=null,I=-1,L=(e,n,r)=>{let i=t.fingers?.[e],a=i?[...X[i].openMidi].reverse():Ze(t.tunings?.[e]??t.tuning),o=$e(a,t.fingers?.[e]?0:y),s=p.get(e)?.ppq;return`<staffDef${Q(n,`-tab`)} n="${100+Number(e)}" lines="${a.length}" notationtype="tab.guitar" keysig="0"${s?` ppq="${s}"`:``}><clef shape="TAB" line="${a.length-1}"/>${o}${r}</staffDef>`};return u(e,({closing:n,name:c,attributes:l,selfClosing:u,index:d,length:f})=>{x.push(e.slice(S,d)),S=d+f;let p=e.slice(d,d+f);if(n?T--:u||T++,!n&&Ue.has(c)&&s){let e=r(l,`staff`);if(e!==null){let t=e.split(/\s+/).filter(Boolean).map(e=>o[e]??e).join(` `);if(t!==e){p=$(p,`staff`,t);let e=r(l,`startid`)?.replace(/^#/,``)??``;e&&m.has(e)&&t.split(` `).every(e=>b.has(e))&&(p=$(p,`startid`,`#${e}-tab`))}}}if(I<0&&c===`staff`&&!n&&!u&&(r(l,`n`)||``)in a)I=T;else if(I>=0&&n&&c===`staff`&&T===I-1)I=-1;else if(I>=0&&c===`note`&&!n){let e=r(l,`xml:id`)||``,t=g.has(e)?g.get(e):h.get(e);t&&`string`in t?p=$($(p,`tab.course`,String(t.string)),`tab.fret`,String(t.fret)):t&&(p=$(p,`visible`,`false`))}if(x.push(p),c===`scoreDef`&&!n&&!w&&C<0){u?w=!0:C=T;return}if(c===`scoreDef`&&n&&C>=0&&T===C-1){C=-1,w=!0;return}if(C>=0){if(c===`staffDef`&&!n){let e=r(l,`n`)||``;if(!i.has(e))return;let t=r(l,`xml:id`)||``;if(u){x.push(L(e,t,``));return}E={n:e,id:t,meterSig:``,depth:T};return}if(E&&c===`meterSig`&&!n){E.meterSig=p.replace(/\sxml:id\s*=\s*"[^"]*"/,``).replace(/\s*\/?>$/,`/>`);return}E&&c===`staffDef`&&n&&T===E.depth-1&&(x.push(L(E.n,E.id,E.meterSig)),E=null);return}if(!D){if(c===`staff`&&!n&&!u&&i.has(r(l,`n`)||``)){let e=r(l,`n`);O=e,k=[],A=0,D=[`<staff${Q(r(l,`xml:id`)||``,`-tab`)} n="${100+Number(e)}">`],N=T,P=0,F=null}return}if(n&&c===`staff`&&T===N-1){D.push(`</staff>`),x.push(D.join(``),...k),D=null;return}if(P){n?P--:u||P++;return}let y=r(l,`xml:id`)||``;if(!n&&c===`note`&&t.fingers?.[O]&&r(l,`grace`)===null&&_.has(y)&&!g.has(y)){let e=_.get(y)?.position||j.get(O)||0;if(e&&e!==A){let t=!A&&j.get(O)===e,n=` startid="#${qe(y)}-tab"`;n&&k.push(`<dir staff="${100+Number(O)}"${n} place="above" type="finger-position finger-staff-${100+Number(O)}${t?` finger-reassert`:``}"><rend fontsize="30%">${M(e)}</rend></dir>`),A=e,j.set(O,e)}}if(n){c===`layer`||Ve.has(c)?D.push(`</${c}>`):c===`chord`&&F&&(F.frets||D.push(it(F.held)),D.push(`</tabGrp>`),F=null);return}if(c===`layer`||Ve.has(c)){let e=[`n`,`num`,`numbase`,`num.visible`,`bracket.visible`,`num.format`,`bracket.place`,`num.place`].map(e=>{let t=r(l,e);return t===null?``:` ${e}="${t}"`}).join(``);D.push(`<${c}${Q(y,`-tab`)}${e}${u?`/>`:`>`}`);return}if(!He.has(c)){if(c===`chord`){if(r(l,`grace`)!==null){u||(P=1);return}D.push(`<tabGrp${Q(y,`-tab`)}${nt(l)}><tabDurSym/>`),u?D.push(`</tabGrp>`):F={frets:0};return}if(c===`note`){if(u||(P=1),F){if(g.has(y)){F.held||(F.held=g.get(y));return}let e=v(y,`-tab`);e&&F.frets++,D.push(e);return}if(r(l,`grace`)!==null)return;D.push(`<tabGrp${Q(y,`-tab`)}${nt(l)}><tabDurSym/>${g.has(y)?it(g.get(y)):v(y,`-tabn`)}</tabGrp>`);return}if(Be.has(c)||Ge.has(c)){u||(P=1);let e=Ge.has(c)?l.replace(/\s+xml:id\s*=\s*(?:"[^"]*"|'[^']*')/,``).trimEnd():nt(l);D.push(`<${c}${Q(y,`-tab`)}${e}/>`);return}u||(P=1)}}),x.push(e.slice(S)),x.join(``)}const ot={handwrittenFont:[`Petaluma`],engravingDefaults:JSON.stringify({barlineSeparation:.4,bracketThickness:.5,dashedBarlineDashLength:.5,dashedBarlineGapLength:.25,hairpinThickness:.16,legerLineExtension:.4,legerLineThickness:.16,lyricLineThickness:.16,octaveLineThickness:.16,pedalLineThickness:.16,repeatBarlineDotSeparation:.16,repeatEndingLineThickness:.16,slurEndpointThickness:.1,slurMidpointThickness:.22,staffLineThickness:.13,stemThickness:.12,subBracketThickness:.16,textEnclosureThickness:.16,thickBarlineThickness:.5,thinBarlineThickness:.16,tieEndpointThickness:.1,tieMidpointThickness:.22,tupletBracketThickness:.16})},st=e=>e===`Petaluma`?ot:{};function ct(e,t,n){if(!Number.isFinite(t)||t<=0||!Number.isInteger(n)||n<1||e.some(e=>!Number.isFinite(e)||e<0))throw RangeError(`Invalid PDF line dimensions.`);let r=[],i=0,a=0;for(let o=0;o<e.length;o++){let s=e[o];(!a||a>=n||i+s>t)&&(r.push(o),i=0,a=0),i+=s,a++}return r}const lt={a4:{width:210,height:297},a3:{width:297,height:420},letter:{width:215.9,height:279.4},legal:{width:215.9,height:355.6}},ut=6.5/72;function dt(e,t,n=0){let r=lt[e],i=Math.min(1,(r.height-24)/(Math.max(1,t)*ut)),a=ut*i,o=Math.round(r.width/a),s=Math.round(r.height/a),c=Math.round(12/a);return{pageWidth:o,pageHeight:s,margin:c,scale:i,capacity:o-2*c-n}}function ft(e){let t=/<svg\b[^>]*viewBox="0 0 ([\d.]+) ([\d.]+)"/.exec(e);if(!t)throw Error(`PDF spike: missing SVG page dimensions.`);return[Number(t[1]),Number(t[2])]}function pt(e){let t=[],n=[],i=[],a=-1,o=-1,s=0;return u(e,({closing:e,name:c,attributes:l,selfClosing:u})=>{if(c===`g`){if(e){i.pop();return}let s=(r(l,`class`)||``).split(` `);s.includes(`bounding-box`)||(s.includes(`system`)&&(o=n.length,n.push({left:1/0,right:-1/0}),a=-1),s.includes(`measure`)&&(a=t.length,t.push({left:1/0,right:-1/0}))),u||i.push(s);return}if(e||a<0)return;let d=(e,r)=>{t[a].left=Math.min(t[a].left,e/10),t[a].right=Math.max(t[a].right,r/10),o>=0&&(n[o].left=Math.min(n[o].left,e/10),n[o].right=Math.max(n[o].right,r/10))};if(c===`rect`){let e=Number(r(l,`x`)),t=Number(r(l,`width`));Number.isFinite(e)&&t>0&&(i.at(-1)?.includes(`staff`)&&i.at(-1)?.includes(`bounding-box`)&&d(e,e+t),i.at(-1)?.some(e=>[`clef`,`keySig`,`meterSig`].includes(e))&&(s=Math.max(s,t/10)))}else if(c===`path`&&i.at(-1)?.includes(`staff`)){let e=/^M([\d.-]+) ([\d.-]+) L([\d.-]+) ([\d.-]+)$/.exec(r(l,`d`)||``);e&&e[2]===e[4]&&d(Number(e[1]),Number(e[3]))}}),{bars:t,systems:n,signatureWidth:s}}self.onmessage=async({data:e})=>{let t;try{let{input:n,opts:i,files:a}=e,o=lt[i.paper];if(!o)throw Error(`Unknown PDF paper size.`);ct([],1,i.maxBars);let[s,c]=await Promise.all([import(
1
+ const e=/<(?:!--[\s\S]*?--|\?[\s\S]*?\?|!\[CDATA\[[\s\S]*?\]\]|!DOCTYPE[^>]*|(\/?)([A-Za-z_][\w.:-]*)((?:\s+[^\s=/>]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)\s*(\/?))>/g,t=/* @__PURE__ */ new Map;function n(e){let n=t.get(e);return n||(n=RegExp(`\\s${e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`),t.set(e,n)),n}function r(e,t){if(!e.includes(t))return null;let r=n(t).exec(e);return r?r[1]??r[2]??``:null}function i(e,t){return e.replace(n(t),``)}function a(e,t,r){return e.replace(n(t),` ${t}="${r}"`)}const o=e=>e.slice(e.indexOf(`:`)+1),s=e=>r(e,`xml:id`)||``,c=e=>(e||``).split(/\s+/).filter(Boolean),l=e=>e.replace(/^#/,``);function u(t,n){e.lastIndex=0;for(let r=e.exec(t);r;r=e.exec(t))if(r[2]&&n({closing:r[1]===`/`,name:o(r[2]),attributes:r[3]||``,selfClosing:r[4]===`/`,index:r.index,length:r[0].length}))return}function d(e){let t=[],n=[],i=[],a=[],o=[],c=-1,l=!1,d=!1,f=0,p=/* @__PURE__ */ new Set,m=0;return u(e,({closing:e,name:u,attributes:h,selfClosing:g})=>{if(e){a.pop(),u===`staff`&&d?(d=!1,f&&(m=Math.max(m,Math.ceil(f/p.size)))):c>=0&&(u===`staffGrp`&&o.pop(),u===`scoreDef`&&a.length===c&&(c=-1,l=!0));return}if(u===`measure`)t.push(s(h));else if(u===`staff`&&!g)d=!0,f=0,p=/* @__PURE__ */ new Set;else if(u===`verse`&&d)f++,p.add(r(h,`n`)||`1`);else if(u===`scoreDef`&&!l&&c<0)g?l=!0:c=a.length;else if(c>=0){if(u===`staffGrp`)i.push({id:s(h),staves:[]}),g||o.push(i.length-1);else if(u===`staffDef`){let e={n:r(h,`n`)||``,id:s(h)};n.push(e),a.at(-1)===`staffGrp`&&o.length&&i[o.at(-1)].staves.push(e)}}g||a.push(u)}),{measureIds:t,lyricDensity:m,staffDefs:n,groups:i}}const f=/* @__PURE__ */ new Set([`meiHead`,`label`,`labelAbbr`,`sb`,`pb`,`pgHead`,`pgFoot`]);function p(e,t){let n=/* @__PURE__ */ new Set,i=[],a=[],o=0;return u(e,({closing:e,name:l,attributes:u,selfClosing:d})=>{if(e){o?o--:l===`staffGrp`&&a.pop();return}let f=l===`staffGrp`?i.push(0)-1:-1;if(o){let e=s(u);e&&n.add(e),d||o++;return}let p=(l===`staffDef`||l===`staff`)&&t.has(r(u,`n`)||``);if(!p){let e=c(r(u,`staff`));p=e.length>0&&e.every(e=>t.has(e))}if(p){let e=s(u);e&&n.add(e),d||(o=1);return}if(l===`staffDef`)for(let e of a)i[e]++;f>=0&&!d&&a.push(f)}),{removed:n,emptyGroups:new Set(i.flatMap((e,t)=>e?[]:[t]))}}function m(e,t,n=1/0,o=0){let d=t.breakBefore===void 0?void 0:new Set(t.breakBefore),m=new Set(t.hiddenStaves),{removed:h,emptyGroups:g}=m.size?p(e,m):{removed:/* @__PURE__ */ new Set,emptyGroups:/* @__PURE__ */ new Set},_=e=>h.size>0&&c(e).some(e=>h.has(l(e))),v=[],y=[],b=0,x=0,S=0,C=0,w=0,T=-1,E=-1,D=()=>++w>=n,O=t.chordSymbols&&t.harmSize&&t.harmSize!==100?Math.round(t.harmSize):0,k=0;if(u(e,({closing:n,name:u,attributes:p,selfClosing:w,index:A,length:j})=>{x||v.push(e.slice(b,A)),b=A+j;let M=e.slice(A,A+j);if(n){if(x){x--;return}return u===`harm`&&k&&y.at(-1)===`rend`&&(y.pop(),k--,v.push(`</rend>`)),y.pop(),E=-1,v.push(M),u===`measure`&&D()?(T=b,!0):void 0}let N=u===`staffGrp`?S++:-1;if(x){if(m.size){let e=s(p);e&&h.add(e)}w||x++;return}let P=f.has(u)||u===`harm`&&!t.chordSymbols,F=M;if(!P&&m.size){let e=c(r(p,`staff`)),t=e.filter(e=>!m.has(e));P=(u===`staffDef`||u===`staff`)&&m.has(r(p,`n`)||``)||N>=0&&g.has(N)||e.length>0&&!t.length||_(r(p,`startid`))||_(r(p,`endid`)),!P&&t.length!==e.length&&(F=a(F,`staff`,t.join(` `)));let n=r(p,`plist`);if(!P&&n&&_(n)){let e=c(n).filter(e=>!h.has(l(e)));e.length?F=a(F,`plist`,e.join(` `)):P=!0}}if(P){if(m.size){let e=s(p);e&&h.add(e)}w||(x=1);return}if((u===`staffDef`||u===`staffGrp`)&&(F=i(i(F,`label`),`label.abbr`)),u===`measure`){if(C>0&&(d?d.has(C+o):t.breakEvery>0&&(C+o)%t.breakEvery===0)){let e=d?`<sb/>`:`<pb/>`;E>=0?v.splice(E,0,e):v.push(e)}C++}if((u===`ending`||u===`section`)&&!w?E<0&&(E=v.length):E=-1,v.push(F),!w)y.push(/^<([^\s/>]+)/.exec(M)[1]);else if(u===`measure`&&D())return T=b,!0;if(O&&u===`harm`&&!w){let t=e.indexOf(`</harm>`,b);(t>=0?e.slice(b,t).includes(`<fb`):e.includes(`<fb`,b))||(v.push(`<rend fontsize="${O}%">`),y.push(`rend`),k++)}}),T<0)return v.push(e.slice(b)),v.join(``);for(let e=y.length-1;e>=0;e--)v.push(`</${y[e]}>`);return v.join(``)}function h(e){let t=[],n=-1,i=-1,a=0,o=``,s=/* @__PURE__ */ new Set,c=-1,l=-1,d=-1,f=``,p=``;u(e,({name:u,closing:m,selfClosing:h,attributes:g,index:_,length:v})=>{if(m?a--:h||a++,c>=0){m&&u===`g`&&a===c-1&&(t.push({start:l,end:_+v,text:``}),c=-1);return}let y=r(g,`class`)??``;if(!m&&u===`g`&&/(?:^|\s)system(?:\s|$)/.test(y)&&s.clear(),!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(y)){let e=/(?:^|\s)finger-staff-(\d+)(?:\s|$)/.exec(y)?.[1]??`default`;if(y.split(/\s+/).includes(`finger-reassert`)&&s.has(e)){c=a,l=_;return}s.add(e)}if(!m&&u===`g`){let e=/(?:^|\s)finger-tab-([LH]?[0-4])-p[\d-]+(?:\s|$)/.exec(r(g,`class`)??``);e&&(n=a,o=e[1])}if(!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(r(g,`class`)??``)&&(i=a),i>=0&&!m&&u===`text`){let n=e.slice(_,_+v).replace(/\stext-anchor="[^"]*"/,``);t.push({start:_,end:_+v,text:`${n.slice(0,-1)} text-anchor="middle">`})}if(m&&u===`g`&&a===i-1&&(i=-1),!(n<0)){if(!m&&u===`text`&&r(g,`class`)!==`finger-label`&&(d=_,f=e.slice(_,_+v),p=r(g,`font-size`)??``),!m&&u===`tspan`&&(p=r(g,`font-size`)??p),m&&u===`text`&&d>=0){let e=f.replace(/\sfont-size="[^"]*"/,``);t.push({start:d,end:_+v,text:`${e.slice(0,-1)} class="finger-label" font-size="${p}" font-family="Arial" fill="currentColor" stroke="white" stroke-width="45" stroke-linejoin="round" paint-order="stroke fill">${o}</text>`}),d=-1}m&&u===`g`&&a===n-1&&(n=-1)}});for(let n of t.reverse())e=e.slice(0,n.start)+n.text+e.slice(n.end);return e}const g=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],_={C:0,D:2,E:4,F:5,G:7,A:9,B:11},v=[`Cb`,`Gb`,`Db`,`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`],y=[`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`,`G#`,`D#`,`A#`],b=[0,-5,2,-3,4,-1,6,1,-4,3,-2,5],x=[0,7,2,-3,4,-1,6,1,-4,3,-2,5],S=(e,t)=>(e%t+t)%t,C=e=>e>0?`#`.repeat(e):`b`.repeat(-e);function w(e){let t=0;for(let n of e)t+=n===`#`||n===`♯`?1:n===`x`||n===`𝄪`?2:n===`𝄫`?-2:-1;return t}function T(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}function E(e,t=`major`){let n=(t===`minor`?y:v)[e+7];if(!n)throw Error(`No key with ${e} fifths`);return{tonic:n,mode:t,fifths:e,scale:g.map(t=>({step:t,alter:T(t,e)}))}}function D(e){let t=e.fifths>0?e.fifths-12:e.fifths<0?e.fifths+12:null;return t===null||Math.abs(t)>7?null:E(t,e.mode)}function O(e,t=`major`,n={}){let r=S(e+(t===`minor`?3:0),12),i=E((n.family===`sharp`?x:b)[r],t);return n.flip?D(i)??i:i}function k(e,t){return{...t,octave:Math.round((e-_[t.step]-t.alter)/12)-1}}const A=(e,t)=>S(_[t.step]+t.alter,12)===S(e,12),j=e=>g.indexOf(e);function M(e,t){let n=S(j(t.step)-j(e),7);return n===1?1:n===6?-1:0}function N(e,t,n={}){let r=S(e,12),i=n.source&&A(r,n.source)?n.source:void 0;if(i&&Math.abs(i.alter)===2&&!n.transposed)return k(e,i);let a=t.scale.find(e=>A(r,e));if(a)return k(e,a);let o=e=>Math.abs(e.alter)<=1&&![`E1`,`B1`,`F-1`,`C-1`].includes(e.step+e.alter);if(t.mode===`minor`){let n=j(t.tonic.charAt(0));for(let i of[5,6]){let a=t.scale[(n+i)%7],o={step:a.step,alter:a.alter+1};if(A(r,o)&&Math.abs(o.alter)<=1)return k(e,o)}}if(i&&o(i)&&n.next!==void 0&&n.next-e>=1&&n.next-e<=2)return k(e,i);let s=Object.entries(_).find(([,e])=>e===r)?.[0];if(s){let r={step:g[(j(s)+1)%7],alter:-1};if((s===`E`||s===`B`)&&t.fifths<=-6&&n.prev!==void 0&&n.next!==void 0){let i=N(n.prev,t),a=N(n.next,t),o=[M(r.step,i),M(r.step,a)];if(o.includes(1)&&o.includes(-1))return k(e,r)}return k(e,{step:s,alter:0})}let c={step:g.find(e=>_[e]===r-1),alter:1},l={step:g.find(e=>_[e]===r+1),alter:-1};return t.fifths>0?k(e,c):t.fifths<0?k(e,l):k(e,r===6?c:l)}function P(e,t){let n=/^([A-G])([#♯b♭x𝄪𝄫]*)(.*)$/s.exec(e);if(!n)return e;let r=/[♯♭]/.test(e),i=(e,n)=>{let i=N(60+_[e]+w(n),t),a=C(i.alter);return i.step+(r?a.replace(/#/g,`♯`).replace(/b/g,`♭`):a)},a=n[3].replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,n)=>`/${i(t,n)}`);return i(n[1],n[2])+a}const F=[40,45,50,55,59,64],I=.08,L=1e-9;function R(e,t={}){let n=t.tuning&&t.tuning.length?t.tuning:F,r=Math.max(0,Math.floor(t.capo??0)),i=Math.floor(t.maxFret??22),a=t.octaveFold??!0,o=Math.min(n.length,31),s=Math.max(0,i-r),c=new Int32Array(o);for(let e=0;e<o;e++)c[e]=n[n.length-1-e]+r;let l=c.some((e,t)=>t>0&&e>c[t-1]),u=Math.max(1,s),d=u+1,f=e=>{for(let t=0;t<o;t++)if(e>=c[t]&&e<=c[t]+s)return!0;return!1},p=e=>{if(Number.isFinite(e)){if(f(e))return 0;if(a)for(let t=1;t<=10;t++){if(f(e+12*t))return 12*t;if(f(e-12*t))return-12*t}}};function m(e,t,n,r){let i=e.length,a=[];if(i===0||i>o)return a;let u=new Int8Array(i),d=new Int8Array(i),f=()=>{let e=99,t=-1,n=0,r=0;for(let a=0;a<i;a++){let i=d[a];r+=u[a],i===0?n++:(i<e&&(e=i),i>t&&(t=i))}let o=t<0,s=1,c=1,f=0;o||(f=t-e,s=Math.max(1,t-3),c=Math.max(1,e),s>c&&(s=c=Math.max(1,e)));let p=i>1?(l?Math.max(...u)-Math.min(...u):u[i-1]-u[0])+1-i:0,m=-.3*n+.3*Math.max(0,t-12)**2+1*f**1.5+.5*p+.05*r,h=m+I*s;if(a.length===24&&h>=a[23].rank)return;let g={str:u.slice(),fret:d.slice(),open:o,posLo:s,posHi:c,cost:m,rank:h},_=a.length;for(;_>0&&a[_-1].rank>h;)_--;a.splice(_,0,g),a.length>24&&a.pop()},p=(a,m,h,g,_=r)=>{if(a===i){f();return}let v=e[a],y=l?o-1:o-(i-a);for(let e=l?0:m;e<=y;e++){if(t[a]>=0&&e!==t[a]||_&1<<e)continue;let r=v-c[e];if(r<0||r>s||n[a]>=0&&r!==n[a])continue;let i=h,o=g;r>0&&(r<i&&(i=r),r>o&&(o=r),o-i>(i>=7?5:4))||(u[a]=e,d[a]=r,p(a+1,e+1,i,o,_|1<<e))}};return p(0,0,99,-1),a}let h=/* @__PURE__ */ new Map;function g(e,t){let n=String(t);for(let t of e)n+=`,${t.pitch}:${t.fixedT}:${t.fixedFret}`;let r=h.get(n);if(r)return r;let i=e.map((e,t)=>t),a={shapes:[],kept:[]};for(;i.length;){if(i.length<=o){let n=i.map(t=>e[t].pitch),r=i.map(t=>e[t].fixedT),o=i.map(t=>e[t].fixedFret),s=r.some(e=>e>=0),c=i.map(()=>-1),l=[];s&&(l.push([r,o,t]),t&&l.push([r,o,0])),l.push([c,c,t]),t&&l.push([c,c,0]);let u=[];for(let[e,t,r]of l)if(u=m(n,e,t,r),u.length)break;if(u.length){a={shapes:u,kept:i};break}}i=_(e,i)}return h.set(n,a),a}function _(e,t){let n=t.length,r=e=>t.filter((t,n)=>n!==e),i=t=>{let i=t[0],a=1/0;if(t.length>1&&n-1<=o){let o=Array(n-1).fill(-1);for(let n of t){let t=m(r(n).map(t=>e[t].pitch),o,o,0),s=t.length?t[0].rank:1/0;s<a&&(a=s,i=n)}}return r(i)},a=[];for(let r=1;r<n;r++)e[t[r]].pitch===e[t[r-1]].pitch&&a.push(r);if(a.length)return i(a);if(n>2){let r=t.map(t=>(e[t].pitch%12+12)%12),a=[],o=[];for(let e=1;e<n-1;e++)a.push(e),r.some((t,n)=>n!==e&&t===r[e])&&o.push(e);return i(o.length?o:a)}return r(n-1)}let v=e.map(e=>(e.pitches??[]).map(()=>({unplayable:!0}))),y=e.map(e=>{let t=[];return(e.pitches??[]).forEach((n,r)=>{let i=p(n);if(i===void 0)return;let a=n+i,l=-1,u=-1,d=e.fixed?.[r];if(d){let e=Math.floor(d.string)-1,t=d.fret!==void 0&&d.fret!==null&&Number.isFinite(d.fret),n=t?Math.floor(d.fret):a-(c[e]??NaN);e>=0&&e<o&&n>=0&&n<=s&&c[e]+n===a&&(l=e,u=t?n:-1)}t.push({pitch:a,orig:r,shifted:i,fixedT:l,fixedFret:u})}),t.sort((e,t)=>t.pitch-e.pitch||e.orig-t.orig),t.length?t:void 0}),b=new Float64Array(e.length*d),x=new Int32Array(e.length*d),S=new Int32Array(e.length*d),C=new Float64Array(d),w=new Int32Array(d),T=[],E=-1/0,D=0,O=e=>{let t=-1,n=1/0;for(let r=1,i=e*d+1;r<d;r++,i++)b[i]<n&&(n=b[i],t=r);return t},k=t=>{let n=0,r=T.length?O(T.length-1):-1;for(let i=T.length-1;i>=0&&r>=0;i--){let a=T[i];if(a.reach<=t+L)break;if(a.end<=t+L){r=S[i*d+r];continue}let o=a.plan.shapes[x[i*d+r]],s=e[a.event].durations??[];for(let e=0;e<a.plan.kept.length;e++)a.onset+(s[a.notes[a.plan.kept[e]].orig]??0)>t+L&&(n|=1<<o.str[e]);r=S[i*d+r]}return n},A=()=>{if(!T.length)return;let e=O(T.length-1);for(let t=T.length-1;t>=0&&e>=0;t--){let n=T[t],r=n.plan.shapes[x[t*d+e]],i=v[n.event];for(let e=0;e<n.plan.kept.length;e++){let t=n.notes[n.plan.kept[e]],a={string:r.str[e]+1,fret:r.fret[e]};t.shifted&&(a.shifted=t.shifted),i[t.orig]=a}e=S[t*d+e]}T=[]};for(let t=0;t<e.length;t++){let n=y[t];if(!n)continue;let r=e[t],i=Number.isFinite(r.onset)?r.onset:D,a=Math.max(0,i-E);a>=2&&A();let o=g(n,k(i));if(!o.shapes.length)continue;let s=T.length,c=s*d,l=c-d;if(s>0){let e=1+.5*a,t=1.5/e,n=2/e,r=1/0,i=-1;for(let e=1;e<d;e++){C[e]=r,w[e]=i;let t=b[l+e];r+=n,t+n<r&&(r=t+n,i=e)}r=1/0,i=-1;for(let e=d-1;e>=1;e--){let a=C[e],o=w[e];r<a&&(a=r,o=i);let s=b[l+e];r+=n,s+n<r&&(r=s+n,i=e),a+=t,s<=a?(C[e]=s,w[e]=s<1/0?e:-1):(C[e]=a,w[e]=o)}}b.fill(1/0,c,c+d),x.fill(-1,c,c+d),S.fill(-1,c,c+d);let f=o.shapes;for(let e=0;e<f.length;e++){let t=f[e],n=t.open?1:t.posLo,r=t.open?u:t.posHi;for(let i=n;i<=r;i++){let n=t.cost+I*i,r=-1;s>0&&(t.open?(n+=b[l+i],r=i):(n+=C[i],r=w[i])),n<b[c+i]&&(b[c+i]=n,x[c+i]=e,S[c+i]=r)}}let p=r.durations??[],m=0;for(let e of n)m=Math.max(m,p[e.orig]??0);T.push({event:t,plan:o,notes:n,onset:i,end:i+m,reach:Math.max(i+m,T.at(-1)?.reach??-1/0)}),D=i,E=i+m}return A(),v}function z(e,t={}){let n=e.map(()=>({continuation:!1})),r=e.map((e,t)=>t).filter(t=>{let n=e[t];return n.pitch!==null&&Number.isFinite(n.pitch)&&Number.isFinite(n.onset)}).sort((t,n)=>e[t].onset-e[n].onset||t-n),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=[],s=[],c=e=>e.onset+(Number.isFinite(e.duration)?Math.max(0,e.duration):0);for(let t=0;t<r.length;){let l=e[r[t]].onset,u=t;for(;u<r.length&&Math.abs(e[r[u]].onset-l)<1e-6;)u++;let d=r.slice(t,u);t=u;let f=[];for(let t of d){let r=e[t],o=r.tieStop?a.get(r.pitch):void 0;o&&(i.set(t,o),n[t].continuation=!0,f.push(t),s[o[0]][o[1]]=Math.max(s[o[0]][o[1]],c(r)))}for(let t of f)e[t].tieStart||a.delete(e[t].pitch);for(let t of f)e[t].tieStart&&a.set(e[t].pitch,i.get(t));let p,m=/* @__PURE__ */ new Map;for(let t of d){if(n[t].continuation)continue;let r=e[t],u=r.pitch;p||(p={onset:l,durations:[],pitches:[],fixed:[]},o.push(p),s.push([]));let d=o.length-1,f=m.get(u);f===void 0?(f=p.pitches.length,m.set(u,f),p.pitches.push(u),p.fixed.push(r.fixed),s[d].push(c(r))):(s[d][f]=Math.max(s[d][f],c(r)),p.fixed[f]||(p.fixed[f]=r.fixed)),i.set(t,[d,f]),r.tieStart&&a.set(u,[d,f])}}o.forEach((e,t)=>{e.durations=s[t].map(t=>t-e.onset)});let l=R(o,t);for(let[e,[t,r]]of i)n[e].result=l[t][r];return n}new TextEncoder,new TextDecoder;const ee=e=>{if(!e.startsWith(`n_`))return null;let t=e.replace(/(?:_c\d+)?(?:_s\d+)?$/,``);return t===e?null:t},B=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],V=[0,2,4,5,7,9,11],H=(e,t)=>(e%t+t)%t;function te(e){let t=/^([+-]?)(dd|d|m|M|P|A|AA)(\d+)$/.exec(e.trim());if(!t)return{diatonic:0,chromatic:0};let n=Number(t[3])-1,r=n%7,i=V[r]+12*Math.floor(n/7),a=(r===0||r===3||r===4?{dd:-2,d:-1,P:0,A:1,AA:2}:{dd:-3,d:-2,m:-1,M:0,A:1,AA:2})[t[2]]??0,o=t[1]===`-`?-1:1;return{diatonic:o*n,chromatic:o*(i+a)}}const ne=({diatonic:e,chromatic:t})=>7*t-12*e;function re(e,t){if(!t.diatonic&&!t.chromatic)return e;let n=B.indexOf(e.step)+t.diatonic,r=B[H(n,7)],i=e.octave+Math.floor(n/7);return{step:r,octave:i,alter:U(e)+t.chromatic-U({step:r,octave:i,alter:0})}}const U=e=>(e.octave+1)*12+V[B.indexOf(e.step)]+e.alter;function ie(e){if(e==null)return null;let t=/^\s*(\d+)\s*([sf]?)\s*$/.exec(e);if(!t)return null;let n=Number(t[1]);return t[2]===`f`?-n:n}const ae=e=>e>0?`${e}s`:e<0?`${-e}f`:`0`,oe=e=>{let t=e;for(;t>7;)t-=12;for(;t<-7;)t+=12;return t};function se(e,t,n,r,i){if(t===0){let t=E(oe(e),n);return i?D(t)??t:t}let a=H(7*(e+7*t),12);return O(H(a-(n===`minor`?3:0),12),n,{family:r.profile,flip:i})}function ce(e){let t=[];return e.forEach((n,r)=>{if(n.tiedFrom!==void 0&&t[n.tiedFrom]&&U(t[n.tiedFrom])===n.midi){t.push(t[n.tiedFrom]);return}let i=e=>e&&!e.chord&&!n.chord?e.midi:void 0;t.push(N(n.midi,n.key,{source:n.source,prev:i(e[r-1]),next:i(e[r+1]),transposed:!0}))}),t}const le=(e,t)=>e.scale[B.indexOf(t)]?.alter??0;function ue(e){let t=Array(e.length).fill(!1),n=e.map((e,t)=>t).sort((t,n)=>e[t].onset-e[n].onset||t-n),r=/* @__PURE__ */ new Map;for(let i=0;i<n.length;){let a=i;for(;a<n.length&&Math.abs(e[n[a]].onset-e[n[i]].onset)<1e-6;)a++;let o=[];for(let s of n.slice(i,a)){let{pitch:n,key:i,tieEnd:a,cautionary:c}=e[s],l=`${n.step}${n.octave}`,u=r.get(l)??le(i,n.step);a||(n.alter!==u||c)&&(t[s]=!0,o.push([l,n.alter]))}for(let[e,t]of o)r.set(e,t);i=a}return t}const W=/^([A-G])([#♯b♭x𝄪𝄫]*)/,de=e=>[...e].reduce((e,t)=>e+(t===`#`||t===`♯`?1:t===`x`||t===`𝄪`?2:t===`𝄫`?-2:-1),0);function fe(e,t){let n=(e,n)=>{let r=t.reduce((e,t)=>re(e,t),{step:e,alter:de(n),octave:4});return r.step+(r.alter>0?`#`.repeat(r.alter):`b`.repeat(-r.alter))},r=W.exec(e);if(!r)return e;let i=e.slice(r[0].length).replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,r)=>`/${n(t,r)}`);return n(r[1],r[2])+i}const pe={treble:[`G`,`2`],bass:[`F`,`4`],alto:[`C`,`3`],tenor:[`C`,`4`],treble8vb:[`G`,`2`,`8`]},G=[`clef.shape`,`clef.line`,`clef.dis`,`clef.dis.place`];function me(e,t){let[n,r,i]=pe[e];return`<clef${t?` xml:id="${t}"`:``} shape="${n}" line="${r}"${i?` dis="${i}" dis.place="below"`:``}/>`}function he(e,t){if(!/\sclef\.shape\s*=/.test(e))return e;let n=G.reduce(Ce,e);if(!t||!pe[t])return n;let[r,i,a]=pe[t];return n=q(q(n,`clef.shape`,r),`clef.line`,i),a?q(q(n,`clef.dis`,a),`clef.dis.place`,`below`):n}const ge=`CDEFGAB`,_e=[0,2,4,5,7,9,11],K={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},ve=e=>({1:`s`,[-1]:`f`,0:`n`,2:`x`,[-2]:`ff`})[e]??`n`,ye=e=>({1:`s`,[-1]:`f`,0:`n`,2:`ss`,[-2]:`ff`})[e]??`n`;function be(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}const xe={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625};function Se(e){return r(e,`grace`)===null?(xe[r(e,`dur`)||``]??0)*(2-1/2**(Number(r(e,`dots`))||0)):0}function q(e,t,n){let r=RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,` ${t}="${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)}function Ce(e,t){return e.replace(RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`),``)}const we=[`keysig`,`key.sig`,`key.mode`,`key.pname`,`key.accid`,`key.sig.mixed`],J=e=>we.reduce(Ce,e),Te=e=>e.replace(/\s*\/>$/,`>`),Ee=e=>`<keySig sig="${ae(e.fifths)}"${e.mode===`minor`?` mode="minor"`:``}/>`,De=e=>e===`minor`?`minor`:e===`major`?`major`:null,Oe=/^(?:\s+(?:n|xml:id|keysig|key\.[\w.]+)\s*=\s*(?:"[^"]*"|'[^']*'))*\s*$/;function ke(e,t){return t?!!t.interval||t.concert||t.flip||t.semitones!==0||/\b(?:clef\.)?shape="perc"/.test(e)||Object.values(t.staves).some(e=>e.percussion||(e.keys?.length??0)>1||!!e.clef||!!e.shift?.[1]||!!e.shift?.[0]||Object.keys(e.octaves??{}).length>0):!1}async function Y(e,t,n,r=0){return!t||!ke(e,t)?e:Ae(t.interval?await n(e,{transpose:t.interval,transposeToSoundingPitch:!1}):e,t,r)}function Ae(e,t,n=0){if(!ke(e,t))return e;let i=ne(te(t.interval)),a=/* @__PURE__ */ new Map;u(e,({closing:e,name:t,attributes:n})=>{if(e||t!==`tie`)return;let i=r(n,`startid`)?.replace(/^#/,``),o=r(n,`endid`)?.replace(/^#/,``);i&&o&&a.set(o,i)});let o=[],s=[],c=[],l=[],d=[],f=[],p=new Set(Object.entries(t.staves).filter(([,e])=>e.percussion).map(([e])=>e)),m=e=>t.staves[e]??{profile:`neutral`,moved:t.semitones!==0},h=e=>{let t=m(e).shift;return t&&(t[0]||t[1])?{diatonic:t[0],chromatic:t[1]}:void 0},g=e=>!p.has(e)&&(m(e).moved||t.semitones!==0||t.flip||!!t.interval||!!h(e)),_=(e,t)=>{let n=p.has(e)?void 0:m(e).octaves;if(!n)return 0;let r=n[t]===void 0?ee(t):null;return(n[t]??(r?n[r]:void 0)??0)/12},v=e=>!p.has(e)&&Object.keys(m(e).octaves??{}).length>0,y=e=>{let t=p.has(e)?void 0:m(e).clef;return t&&pe[t]?t:void 0},b=[],x=[],S=[],C,w,T,D=0,O=-1,k=``,A=``,j=0,M=[],N=-1,F=0,I=0,L,R,z=()=>M.reduce((e,t)=>e*t,1),B=(e,t,n)=>{let i=ie(r(e,t))??(t===`key.sig`?ie(r(e,`keysig`)):null);return i===null?null:{fifths:i,mode:De(r(e,n))??`major`}};u(e,({closing:t,name:n,attributes:i,selfClosing:u,index:m,length:h})=>{let _=e.slice(m,m+h);if(t){if(S.pop(),T){--D===0&&(T.end=m+h,T=void 0);return}n===`staffDef`&&w?(w.end=m+h,w=void 0):n===`scoreDef`&&C?(C.end=m+h,C=void 0):n===`note`&&L?(L.end=m+h,L=void 0):n===`chord`?(F--,j+=I*z()):n===`tuplet`?M.pop():n===`harm`&&R?(R.textEnd=m,R=void 0):n===`layer`?A=``:n===`staff`&&(k=``);return}if(u||S.push(n),T){u||D++;return}if(R&&(R.nested=!0),n===`scoreDef`){let e={start:m,end:m+h,initial:!o.length,measure:O+1,content:!1,keyRanges:[],tagEdits:[],keys:/* @__PURE__ */ new Map},t=B(i,`key.sig`,`key.mode`);t&&e.keys.set(`*`,t);let n=J(_);n!==_&&e.tagEdits.push({start:m,end:m+h,text:n}),/\s(?!xml:id)[\w.:-]+\s*=/.test(n.replace(/^<[\w:]+/,``).replace(/\sxml:id\s*=\s*"[^"]*"/,``))&&(e.content=!0),o.push(e),u||(C=e);return}if(C&&n===`staffGrp`){if(C.initial)return;Oe.test(i)||(C.content=!0);return}if(n===`staffDef`){let e=r(i,`n`)||``,t={start:m,end:m+h,n:e,tag:_,selfClosing:u};if(r(i,`clef.shape`)===`perc`&&p.add(e),C){let n=B(i,`key.sig`,`key.mode`);n&&C.keys.set(e,n);let r=y(e)?he(J(_),C.initial?y(e):void 0):J(_);r!==_&&C.tagEdits.push({start:m,end:m+h,text:r}),Oe.test(i)||(C.content=!0),C.initial&&(s.push(t),e&&!x.includes(e)&&x.push(e))}u||(w=t);return}if(n===`clef`&&w){r(i,`shape`)===`perc`&&p.add(w.n),u&&(w.clefEnd=m+h,w.clef={start:m,end:m+h,id:r(i,`xml:id`)}),C&&(C.content=!0),u&&C&&!C.initial&&y(w.n)&&b.push({start:m,end:m+h,text:``});return}if(n===`keySig`){let e={start:m,end:m+h};u||(T=e,D=1);let t=B(i,`sig`,`mode`);C?(C.keyRanges.push(e),t&&C.keys.set(w?w.n:`*`,t)):k&&f.push(Object.assign(e,{staff:k,measure:O,onset:j,key:t}));return}if(C){C.content=!0;return}if(n===`measure`){O++,c.push(m);return}if(n===`staff`){k=r(i,`n`)||``;return}if(n===`layer`){A=r(i,`n`)||`1`,j=0,M.length=0,F=0;return}if(!k||!A){n===`harm`&&!u&&(R={textStart:m+h,textEnd:m+h,staff:(r(i,`staff`)||``).split(/\s+/)[0],measure:O,nested:!1},d.push(R));return}if(n===`clef`){y(k)&&u&&b.push({start:m,end:m+h,text:``});return}if(n===`tuplet`){let e=Number(r(i,`num`))||1,t=Number(r(i,`numbase`))||1;u||M.push(t/e);return}if(n===`chord`){N=j,I=Se(i),u?j+=I*z():F++;return}if(n===`note`){let e=F>0,t=e?N:j;e||(j+=Se(i)*z());let n=(r(i,`pname`)||``).toUpperCase(),o=Number(r(i,`oct`));if(!n||!ge.includes(n)||!Number.isFinite(o)||!(g(k)||v(k)))return;let s=r(i,`xml:id`)||``,c=r(i,`tie`),d=r(i,`accid`),f=r(i,`accid.ges`);L={start:m,end:m+h,tag:_,selfClosing:u,id:s,staff:k,layer:A,measure:O,onset:t,chord:e,pname:n,oct:o,written:d===null?null:K[d]??null,gestural:f===null?null:K[f]??null,accids:[],tieEnd:a.has(s)||c===`t`||c===`m`,cautionary:!1},l.push(L),u&&(L=void 0);return}if(n===`accid`&&L){let e=r(i,`accid`),t=r(i,`accid.ges`);e!==null&&K[e]!==void 0&&(L.written=K[e]),t!==null&&K[t]!==void 0&&(L.gestural=K[t]),(r(i,`func`)!==null||r(i,`enclose`)!==null)&&(L.cautionary=e!==null),L.accids.push({start:m,end:m+h,attributes:i});return}[`rest`,`space`,`mRest`,`mSpace`,`multiRest`].includes(n)&&F===0&&(j+=(n.startsWith(`m`)?1e3:Se(i))*z())});for(let e of p)x.includes(e)||x.push(e);let V=c.length,H=/* @__PURE__ */ new Map;for(let e of x){if(p.has(e))continue;let t=Array(Math.max(1,V)).fill(void 0),r=m(e).keys;if(r?.length)for(let e=0;e<t.length;e++){let i=[...r].reverse().find(([t])=>t<=e+n)??r[0];t[e]={fifths:i[1],mode:i[2]}}else{let n={fifths:0,mode:`major`},r=/* @__PURE__ */ new Map;for(let n of o){let a=n.keys.get(e)??n.keys.get(`*`);a&&r.set(Math.min(n.measure,t.length-1),{fifths:a.fifths-i,mode:a.mode})}for(let n of f)n.staff===e&&n.key&&(n.onset===0||n.measure+1<t.length)&&r.set(Math.min(n.measure+1,t.length-1),{fifths:n.key.fifths-i,mode:n.key.mode});for(let e=0;e<t.length;e++)n=r.get(e)??n,t[e]=n}H.set(e,t)}let U=/* @__PURE__ */ new Map;for(let e of f)if(e.onset>0&&e.key){let t=`${e.staff}|${e.measure}`;(U.get(t)??U.set(t,[]).get(t)).push(e)}let ae=(e,t,n)=>U.get(`${e}|${t}`)?.findLast(e=>e.onset<=n+1e-6),oe=(e,t,n=0)=>{let r=ae(e,t,n)?.key,a=h(e);return r?{fifths:r.fifths-i+(a?ne(a):0),mode:r.mode}:H.get(e)?.[Math.max(0,Math.min(t,V-1))]??{fifths:0,mode:`major`}},le=/* @__PURE__ */ new Map,W=(e,n,r=0)=>{let i=oe(e,n,r),a=`${e}|${i.fifths}|${i.mode}`,o=le.get(a);return o||(o=se(i.fifths,t.semitones,i.mode,m(e),t.flip),le.set(a,o)),o},de=(e,t,n=0)=>{let r=h(e);return oe(e,t,n).fifths+i-(r?ne(r):0)},G=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.measure}|${ae(e.staff,e.measure,e.onset)?.start??0}`;(G.get(t)??G.set(t,[]).get(t)).push(e)}let xe=/* @__PURE__ */ new Map;for(let e of G.values()){let t=/* @__PURE__ */ new Map;for(let n of[...e].sort((e,t)=>e.onset-t.onset)){let e=`${n.pname}${n.oct}`;xe.set(n,n.written??n.gestural??t.get(e)??be(n.pname,de(n.staff,n.measure,n.onset))),n.written!==null&&t.set(e,n.written)}}let we=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.layer}`;(we.get(t)??we.set(t,[]).get(t)).push(e)}let Y=/* @__PURE__ */ new Map,Ae=e=>(e.octave+1)*12+_e[ge.indexOf(e.step)]+e.alter;for(let e of we.values()){let t=new Map(e.map((e,t)=>[e.id,t])),n=e.map(e=>{let n=h(e.staff),r={step:e.pname,octave:e.oct,alter:xe.get(e)??0},i=n?re(r,n):r,o={...i,octave:i.octave+_(e.staff,e.id)},s=a.get(e.id);return{midi:Ae(o),source:o,key:W(e.staff,e.measure,e.onset),chord:e.chord,tiedFrom:s===void 0?void 0:t.get(s)}});if(!g(e[0].staff)){n.forEach((t,n)=>Y.set(e[n],t.source));continue}ce(n).forEach((t,n)=>Y.set(e[n],t))}let je=new Map(l.map(e=>[e.id,e]));for(let e of l){let t=je.get(a.get(e.id)||``);t&&Y.has(t)&&Ae(Y.get(t))===Ae(Y.get(e))&&Y.set(e,Y.get(t))}let Me=/* @__PURE__ */ new Set,Ne=(e,t,n)=>({...E(0),scale:ge.split(``).map(r=>({step:r,alter:be(r,de(e,t,n))}))});for(let e of G.values()){let t=e[0].staff;if(!y(t)&&!v(t))continue;let n=ue(e.map(e=>({pitch:{step:e.pname,octave:e.oct,alter:xe.get(e)??0},onset:e.onset,key:Ne(e.staff,e.measure,e.onset),tieEnd:e.tieEnd})));e.forEach((e,t)=>{e.written!==null&&!e.tieEnd&&!n[t]&&Me.add(e)})}let Pe=/* @__PURE__ */ new Map;for(let e of G.values()){let t=ue(e.map(e=>({pitch:Y.get(e),onset:e.onset,key:W(e.staff,e.measure,e.onset),tieEnd:e.tieEnd,cautionary:e.cautionary||Me.has(e)})));e.forEach((e,n)=>Pe.set(e,t[n]))}let X=[];for(let e of l){let t=Y.get(e),n=Pe.get(e),i=Ce(Ce(e.tag,`accid`),`accid.ges`);i=q(q(i,`pname`,t.step.toLowerCase()),`oct`,String(t.octave));let a=Number(r(e.tag,`oct.ges`)??NaN);Number.isFinite(a)&&t.octave!==e.oct&&(i=q(i,`oct.ges`,String(a+t.octave-e.oct))),n||(i=q(i,`accid.ges`,ye(t.alter)));let o=e.accids.find(e=>r(e.attributes,`accid`)!==null)??e.accids[0],s=o?r(o.attributes,`xml:id`):null,c=o&&n?[`func`,`enclose`,`place`].map(e=>[e,r(o.attributes,e)]).filter(([,e])=>e!==null).map(([e,t])=>` ${e}="${t}"`).join(``):``,l=n?`<accid${s?` xml:id="${s}"`:``} accid="${ve(t.alter)}"${c}/>`:``;if(e.selfClosing)X.push({start:e.start,end:e.end,text:l?`${Te(i)}${l}</note>`:i});else{X.push({start:e.start,end:e.start+e.tag.length,text:i+l});for(let t of e.accids)X.push({start:t.start,end:t.end,text:``})}}for(let t of d){if(!g(t.staff)||t.nested||t.textEnd<=t.textStart)continue;let n=e.slice(t.textStart,t.textEnd),[,r,i,a]=/^(\s*)([\s\S]*?)(\s*)$/.exec(n),o=h(t.staff),s=P(o?fe(i,[o]):i,W(t.staff,Math.max(0,t.measure)));s!==i&&X.push({start:t.textStart,end:t.textEnd,text:r+s+a})}for(let t of f){let n=t.onset>0&&t.key&&!p.has(t.staff)?Ee(W(t.staff,t.measure,t.onset)):``,i=r(e.slice(t.start,t.end),`xml:id`);n&&i&&(n=q(n,`xml:id`,i)),X.push({start:t.start,end:t.end,text:n})}for(let e of o){if(!e.initial&&!e.content){X.push({start:e.start,end:e.end,text:``});continue}X.push(...e.tagEdits);for(let t of e.keyRanges)X.push({start:t.start,end:t.end,text:``})}let Fe=x.filter(e=>!p.has(e));X.push(...b);for(let e of s){if(p.has(e.n)||!Fe.includes(e.n))continue;let t=Ee(W(e.n,0)),n=y(e.n),r=n?he(J(e.tag),n):J(e.tag),i=n&&!e.clef&&!/\sclef\.shape\s*=/.test(e.tag)?me(n,null):``;if(n&&e.clef&&X.push({start:e.clef.start,end:e.clef.end,text:me(n,e.clef.id)}),e.selfClosing){let n=X.findIndex(t=>t.start===e.start&&t.end===e.end);n>=0&&X.splice(n,1),X.push({start:e.start,end:e.end,text:`${Te(r)}${i}${t}</staffDef>`})}else{let n=e.clefEnd??e.start+e.tag.length;X.push({start:n,end:n,text:i+t})}}for(let e=1;e<V;e++){let t=Fe.filter(t=>{let n=W(t,e-1,1/0),r=W(t,e);return n.fifths!==r.fifths||n.mode!==r.mode});if(!t.length)continue;let n=c[e];X.push({start:n,end:n,text:`<scoreDef><staffGrp>${t.map(t=>`<staffDef n="${t}">${Ee(W(t,e))}</staffDef>`).join(``)}</staffGrp></scoreDef>`})}if(!X.length)return e;X.sort((e,t)=>e.start-t.start||e.end-t.end);let Ie=[],Z=0;for(let t of X)t.start<Z||(Ie.push(e.slice(Z,t.start),t.text),Z=t.end);return Ie.push(e.slice(Z)),Ie.join(``)}const je={id:`violin`,provenance:`ported`,source:`violintab instruments.ts: VIOLIN_FINGER_MIDI`,strings:[`E`,`A`,`D`,`G`],openMidi:[76,69,62,55],fingers:[{1:[78,80,81,83],2:[79,81,83,85],3:[81,83,85,86],4:[83,85,86,88]},{1:[71,73,74,76],2:[72,74,76,77],3:[74,76,77,79],4:[76,77,79,81]},{1:[64,66,67,69],2:[65,67,69,71],3:[67,69,71,72],4:[69,71,72,74]},{1:[57,59,60,62],2:[58,60,62,64],3:[60,62,64,65],4:[62,64,66,67]}]},Me=[.5,1,1.5,2,3,3.5,4,4.5];function Ne(e){return Object.fromEntries(Me.map((t,n)=>{let r=e+n+1;return[t,[r,r+1,r+2,r+3]]}))}const Pe={id:`cello`,provenance:`ported`,source:`violintab CELLO_FINGER_MIDI; Davidoff key correction`,strings:[`A`,`D`,`G`,`C`],openMidi:[57,50,43,36],fingers:[57,50,43,36].map(Ne)},X={violin:je,viola:{id:`viola`,provenance:`derived`,source:`violin transposed -7 semitones`,strings:[`A`,`D`,`G`,`C`],openMidi:[69,62,55,48],fingers:je.fingers.map(e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[t[0]-7,t[1]-7,t[2]-7,t[3]-7]])))},cello:Pe,"double-bass":{id:`double-bass`,provenance:`derived`,source:`cello offsets on bass tuning; provisional four-finger analogy`,strings:[`G`,`D`,`A`,`E`],openMidi:[43,38,33,28],fingers:[43,38,33,28].map(Ne)}},Fe={C:0,D:2,E:4,F:5,G:7,A:9,B:11};function Ie(e,t,n){if(!Number.isInteger(t)||t<0||t>127)return[];let r=[];e.openMidi.forEach((n,i)=>{let a=i+1;t===n&&r.push({string:a,position:0,finger:0,modifier:``});for(let[o,s]of Object.entries(e.fingers[i]??{}))s.forEach((e,i)=>{let s=t-e;t>n&&Math.abs(s)<=1&&r.push({string:a,position:Number(o),finger:i+1,modifier:s===-1?`L`:s===1?`H`:``})})});let i=e.id===`cello`||e.id===`double-bass`,a=(n&&(Fe[n.step]+n.alter+12)%12==t%12?n.alter>0:[1,3,8].includes(t%12))?`H`:`L`,o=e=>Number(e.modifier!==``),s=e=>i&&e.position===.5?1.25:e.position;return r.sort((e,t)=>Number(t.finger===0)-Number(e.finger===0)||(i?o(e)-o(t):0)||s(e)-s(t)||o(e)-o(t)||e.string-t.string||Number(e.modifier!==a)-Number(t.modifier!==a)||e.finger-t.finger)}const Z=(e,t)=>e.missed-t.missed||e.cost-t.cost;function Le(e,t){let n=/* @__PURE__ */ new Map;for(let e of t){let t=n.get(e.onset);t?t.push(e):n.set(e.onset,[e])}let r=[{cost:0,missed:0,position:0,held:[],labels:[]}],i=[...n].sort(([e],[t])=>e-t);for(let[t,[n,a]]of i.entries()){let o=i[t+1],s=/* @__PURE__ */ new Map,c=e=>{let t=o?e.held.filter(e=>e.until>o[0]||e.until===o[0]&&o[1].some(t=>t.tieStop&&t.midi===e.midi)):[],n=JSON.stringify([e.position,t]),r=s.get(n);(!r||Z(e,r)<0)&&s.set(n,e)},l=a.map(t=>t.fixed?[t.fixed]:t.midi===null?[]:Ie(e,t.midi,t.spelling));for(let e of r){let t=a.map(t=>t.tieStop?e.held.find(e=>e.midi===t.midi&&e.until>=n):void 0),r=e.held.filter(e=>e.until>n),i=l.map((e,n)=>!a[n].fixed&&t[n]?[t[n].fingering]:e),o=!1,s=(t,l,u)=>{if(t===a.length){o=!0;let t=l.find(e=>e.position)?.position??e.position,i=e.position&&t!==e.position?4+2*Math.abs(t-e.position):0,s=[...r];l.forEach((e,t)=>{a[t].midi!==null&&s.push({midi:a[t].midi,until:n+a[t].duration,fingering:e})}),c({cost:e.cost+u+i,missed:e.missed,position:t,held:s,previous:e,labels:l.map((e,t)=>[a[t].id,e])});return}i[t].forEach((e,n)=>{[...r,...l.map((e,t)=>({midi:a[t].midi,fingering:e}))].some(n=>n.fingering.string===e.string&&n.midi!==a[t].midi||e.position&&n.fingering.position&&e.position!==n.fingering.position)||s(t+1,[...l,e],u+n)})};new Set(a.map(e=>e.midi)).size<=4&&s(0,[],0),o||c({...e,held:r,previous:e,labels:[],missed:e.missed+a.length})}r=[...s.values()].sort(Z).slice(0,64)}let a=/* @__PURE__ */ new Map,o=[];for(let e=r[0];e;e=e.previous)o.push(e);for(let e of o.reverse())for(let[t,n]of e.labels)a.set(t,n);return a}const Re={c:0,d:2,e:4,f:5,g:7,a:9,b:11},ze={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},Be={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625},Ve=/* @__PURE__ */ new Set([`rest`,`space`,`mRest`,`mSpace`,`multiRest`]),He=/* @__PURE__ */ new Set([`beam`,`tuplet`]),Ue=/* @__PURE__ */ new Set([`bTrem`,`fTrem`,`ligature`,`choice`,`orig`,`reg`,`sic`,`corr`,`supplied`,`add`,`subst`]),We=/* @__PURE__ */ new Set([`harm`,`tempo`,`dir`,`repeatMark`,`fermata`]),Ge=/* @__PURE__ */ new Set([`mRpt`,`mRpt2`,`multiRpt`]),Ke=/* @__PURE__ */ new Set([...Ge,`beatRpt`,`halfmRpt`]),qe=[[`c`],[`c`,`s`],[`d`],[`e`,`f`],[`e`],[`f`],[`f`,`s`],[`g`],[`a`,`f`],[`a`],[`b`,`f`],[`b`]],Je=e=>e.replace(/[&<>"]/g,``),Q=(e,t)=>e?` xml:id="${Je(e)}${t}"`:``;function Ye(e,t,n){let i=Number(r(e,`dur.ppq`));if(t&&Number.isFinite(i)&&r(e,`dur.ppq`)!==null)return i/t;let a=Be[r(e,`dur`)||``];return a===void 0?0:a*(2-1/2**(Number(r(e,`dots`))||0))*n.reduce((e,t)=>e*t,1)}const Xe=(e,t,n)=>{let i=(r(e,`pname`)||``).toLowerCase(),a=Number(r(e,`oct`));if(!(i in Re)||!Number.isFinite(a)||r(e,`oct`)===null)return null;let o=r(e,`accid.ges`)??t.gestural??r(e,`accid`)??t.written??``;return 12*(a+1)+Re[i]+(ze[o]??0)+n},Ze=e=>typeof e==`number`&&Number.isFinite(e)?Math.max(0,Math.min(24,Math.round(e))):0,Qe=e=>Array.isArray(e)&&e.length>=1&&e.length<=31&&e.every(e=>Number.isInteger(e)&&e>=0&&e<=127)?e:F,$e=e=>{if(!e.size)return null;let t=Math.max(...e.keys()),n=Array.from({length:t},(n,r)=>e.get(t-r));return n.every(e=>e!==void 0)?n:null};function et(e,t){return`<tuning>${[...e].reverse().map((e,n)=>{let r=e+t,[i,a]=qe[(r%12+12)%12];return`<course n="${n+1}" pname="${i}" oct="${Math.floor(r/12)-1}"${a?` accid="${a}"`:``}/>`}).join(``)}</tuning>`}function tt(e,t){let n=new Set(t.generate),i=t.refret??{},a=new Set(t.sounding??[]),o=t.switched??{},s=/* @__PURE__ */ new Set([...n,...Object.keys(i)]),c=new Map([...s].map(e=>[e,[]])),l=/* @__PURE__ */ new Map,d=/* @__PURE__ */ new Set,f=/* @__PURE__ */ new Set,p=/* @__PURE__ */ new Set,m=4,h=4,g=4,_=(e,t)=>{let n=Number(r(e,`${t}count`)),i=Number(r(e,`${t}unit`));n>0&&(h=n),i>0&&(g=i),m=h*4/g},v=0,y=0,b=!1,x=!1,S=null,C=0,w=null,T=0,E=[],D=null,O=!1,k=null,A=0,j=[{onset:0,sig:`0`}],M=[],N=(e,t)=>{e!==null&&j.push({staff:t,onset:v+(x?T:0),sig:e})},P=(e,t)=>{let n=Number.parseInt(t)||0;return(t.endsWith(`f`)?`beadgcf`:`fcgdaeb`).slice(0,n).includes(e)?t.endsWith(`f`)?`f`:`s`:`n`},F=()=>{if(!k)return;let e=l.get(S);if(t.fingers?.[S]&&M.push({rec:k.rec,staff:S,onset:k.event.onset,measure:v,semi:e?.semi??0,attributes:k.attributes,written:k.written,gestural:k.gestural}),S in i){let t=Number(r(k.attributes,`tab.course`)),n=Number(r(k.attributes,`tab.fret`)),a=e?.courses?.get(t);k.rec.midi=a!==void 0&&Number.isInteger(n)&&n>=0&&r(k.attributes,`tab.fret`)!==null?a+n+i[S]:null}else{k.rec.midi=Xe(k.attributes,k,e?.semi??0);let t=(r(k.attributes,`pname`)??``).toUpperCase(),n=ze[r(k.attributes,`accid.ges`)??k.gestural??r(k.attributes,`accid`)??k.written??`n`]??0;t.toLowerCase()in Re&&Math.abs(n)<=2&&(k.rec.spelling={step:t,alter:n})}k=null};u(e,({closing:e,name:i,attributes:u,selfClosing:h})=>{if(e){if(i===`staffDef`){w?.courses.size&&(w.entry.courses=w.courses),w=null;return}if(i===`measure`){x=!1,v+=y>0&&!b?y:Math.max(y,m);return}if(!S)return;if(A){A--;return}i===`note`?F():i===`chord`||i===`tabGrp`?(D&&!O&&(T+=D.dur),D=null):i===`tuplet`?E.pop():i===`layer`?y=Math.max(y,T):i===`staff`&&--C===0&&(S=null);return}if(i===`scoreDef`){N(r(u,`keysig`)??r(u,`key.sig`)),_(u,`meter.`);return}if(i===`keySig`){N(r(u,`sig`),S??w?.n);return}if(i===`meterSig`){_(u,``);return}if(i===`staffDef`){_(u,`meter.`);let e=r(u,`n`)||``;if(s.has(e)){N(r(u,`keysig`)??r(u,`key.sig`),e);let t=l.get(e),n=Number(r(u,`ppq`)),i=r(u,`trans.semi`),s={ppq:n>0?n:t?.ppq,semi:e in o?o[e]:a.has(e)?0:i===null?t?.semi??0:Number(i)||0,courses:t?.courses};l.set(e,s),h||(w={n:e,entry:s,courses:/* @__PURE__ */ new Map})}return}if(i===`course`&&w){let e=Number(r(u,`n`)),t=Xe(u,{},0);e>=1&&t!==null&&w.courses.set(e,t);return}if(i===`measure`){x=!0,y=0,b=!1;return}if(i===`tie`&&x){let e=(r(u,`startid`)||``).replace(/^#/,``),t=(r(u,`endid`)||``).replace(/^#/,``);e&&t&&(d.add(e),f.add(t));return}if(i===`staff`&&!S){let e=r(u,`n`)||``;s.has(e)&&!h&&(S=e,C=1);return}if(!S)return;if(A){h||A++;return}if(!h&&i===`staff`){C++;return}let j=c.get(S),M=l.get(S)?.ppq;if(i===`layer`){T=0;return}if(i===`graceGrp`){h||(A=1);return}if(i===`tuplet`){let e=Number(r(u,`num`))||1,t=Number(r(u,`numbase`))||1;h||E.push(t/e);return}if(i===`chord`||i===`tabGrp`){if(O=r(u,`grace`)!==null,O){h||(A=1);return}D={onset:v+T,dur:Ye(u,M,E),notes:[]},j.push(D);let e=r(u,`xml:id`);e&&n.has(S)&&p.add(e),h&&(T+=D.dur,D=null);return}if(i===`note`){if(!D&&r(u,`grace`)!==null){h||(A=1);return}let e=D;e||(e={onset:v+T,dur:Ye(u,M,E),notes:[]},j.push(e),T+=e.dur);let i=r(u,`xml:id`)||``;i&&n.has(S)&&p.add(i);let a=r(u,`tie`)||``,o=Number(r(u,`tab.course`)),s=Number(r(u,`tab.fret`)),c=Number.isInteger(s)&&r(u,`tab.fret`)!==null,l={id:i,midi:null,fixed:t.fixed&&n.has(S)&&!t.unfixed?.includes(S)&&Number.isInteger(o)&&o>=1?c?{string:o,fret:s}:{string:o}:void 0,continuation:/[mt]/.test(a),tieStart:/[im]/.test(a),dur:e.dur};e.notes.push(l),k={rec:l,attributes:u,event:e,inChord:!!D},h&&F();return}if(i===`accid`&&k){let e=r(u,`accid`),t=r(u,`accid.ges`);e!==null&&(k.written=e),t!==null&&(k.gestural=t);return}(Ve.has(i)||Ke.has(i))&&(i===`mRest`||i===`mSpace`||i===`multiRest`||Ge.has(i)?b=!0:T+=i===`halfmRpt`?m/2:i===`beatRpt`?4/g:Ye(u,M,E))});let I=/* @__PURE__ */ new Map;for(let e of M.sort((e,t)=>e.onset-t.onset)){let t=0;j.forEach((n,r)=>{(!n.staff||n.staff===e.staff)&&n.onset<=e.onset&&(n.onset>j[t].onset||n.onset===j[t].onset&&(Number(!!n.staff)>Number(!!j[t].staff)||!!n.staff==!!j[t].staff&&r>t))&&(t=r)});let n=r(e.attributes,`pname`)??``,i=`${e.staff}:${n}:${r(e.attributes,`oct`)}`,a=r(e.attributes,`accid.ges`)??e.gestural??r(e.attributes,`accid`)??e.written,o=I.get(i),s=a??(o?.measure===e.measure&&o.key===t?o.value:P(n,j[t].sig));a!=null&&I.set(i,{value:a,measure:e.measure,key:t}),e.rec.midi=Xe(e.attributes,{...e,gestural:s},e.semi);let c=ze[s]??0;n in Re&&Math.abs(c)<=2&&(e.rec.spelling={step:n.toUpperCase(),alter:c})}return{staves:c,tieStarts:d,tieEnds:f,info:l,ids:p}}function nt(e,t,n,r,i,a){let o=/* @__PURE__ */ new Map,s=Ze(i.capo);for(let[c,l]of e){if(i.fingers?.[c])continue;let e=Qe(i.tunings?.[c]??i.tuning),u=[],d=[];for(let e of l)for(let r of e.notes)u.push(r),d.push({onset:e.onset,duration:r.dur,pitch:r.midi,tieStart:r.tieStart||t.has(r.id),tieStop:r.continuation||n.has(r.id),fixed:a?.get(r.id)??r.fixed});let f=c in(i.refret??{})&&r.get(c)?.courses?$e(r.get(c).courses):null;z(d,f?{tuning:f,capo:0}:{tuning:e,capo:s}).forEach(({result:e,continuation:t},n)=>{let r=u[n];if(r.continuation=t,e){if(t){r.held=e;return}o.set(r.id,e),a&&r.id&&`string`in e&&!a.has(r.id)&&a.set(r.id,{string:e.string,fret:e.fret})}})}return o}const rt=e=>[`dur`,`dots`,`dur.ppq`].map(t=>{let n=r(e,t);return n===null?``:` ${t}="${n}"`}).join(``),it=(e,t)=>t&&`string`in t?`<note${Q(e,``)} tab.course="${t.string}" tab.fret="${t.fret}"/>`:``,at=e=>e&&`string`in e?`<note tab.course="${e.string}" tab.fret="${e.fret}" visible="false"/>`:``,$=(e,t,n)=>{let r=RegExp(`(\\s${t.replace(`.`,`\\.`)}\\s*=\\s*)(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,`$1"${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)};function ot(e,t,n){let i=new Set(t.generate),a=t.refret??{},o=t.retarget,s=Object.keys(o).length>0;if(!i.size&&!s&&!Object.keys(a).length)return e;let c=i.size||Object.keys(a).length,{staves:l,tieStarts:d,tieEnds:f,info:p,ids:m}=c?tt(e,t):{staves:/* @__PURE__ */ new Map,tieStarts:/* @__PURE__ */ new Set,tieEnds:/* @__PURE__ */ new Set,info:/* @__PURE__ */ new Map,ids:/* @__PURE__ */ new Set},h=c?nt(l,d,f,p,t,n):/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Map;for(let[e,n]of l)for(let r of n)for(let n of r.notes)(n.continuation||t.fingers?.[e]&&f.has(n.id))&&g.set(n.id,n.held);let _=/* @__PURE__ */ new Map;for(let[e,r]of l){let i=t.fingers?.[e];if(!i)continue;let a=Le(X[i],r.flatMap(e=>e.notes.map(t=>({id:t.id,onset:e.onset,duration:t.dur,midi:t.midi,spelling:t.spelling,tieStop:t.continuation||f.has(t.id),fixed:n?.get(t.id)?.finger}))));for(let[e,t]of a){_.set(e,t),n?.set(e,{string:t.string,fret:t.finger,finger:t});let r={string:t.string,fret:t.modifier?44:t.finger};h.set(e,r),g.has(e)&&g.set(e,r)}}let v=(e,t)=>{let n=_.get(e),r=it(e?`${e}${t}`:``,h.get(e));return n?r.replace(`/>`,` type="finger-tab-${n.modifier}${n.finger}-p${String(n.position).replace(`.`,`-`)}"/>`):r},y=Ze(t.capo),b=new Set([...i].map(e=>String(100+Number(e)))),x=[],S=0,C=-1,w=!1,T=0,E=null,D=null,O=``,k=[],A=0,j=/* @__PURE__ */ new Map,M=e=>e===.5?`pos. ½`:`${[``,`I`,`II`,`III`,`IV`][Math.floor(e)]??``}${e%1?`½`:``} pos.`,N=0,P=0,F=null,I=-1,L=(e,n,r)=>{let i=t.fingers?.[e],a=i?[...X[i].openMidi].reverse():Qe(t.tunings?.[e]??t.tuning),o=et(a,t.fingers?.[e]?0:y),s=p.get(e)?.ppq;return`<staffDef${Q(n,`-tab`)} n="${100+Number(e)}" lines="${a.length}" notationtype="tab.guitar" keysig="0"${s?` ppq="${s}"`:``}><clef shape="TAB" line="${a.length-1}"/>${o}${r}</staffDef>`};return u(e,({closing:n,name:c,attributes:l,selfClosing:u,index:d,length:f})=>{x.push(e.slice(S,d)),S=d+f;let p=e.slice(d,d+f);if(n?T--:u||T++,!n&&We.has(c)&&s){let e=r(l,`staff`);if(e!==null){let t=e.split(/\s+/).filter(Boolean).map(e=>o[e]??e).join(` `);if(t!==e){p=$(p,`staff`,t);let e=r(l,`startid`)?.replace(/^#/,``)??``;e&&m.has(e)&&t.split(` `).every(e=>b.has(e))&&(p=$(p,`startid`,`#${e}-tab`))}}}if(I<0&&c===`staff`&&!n&&!u&&(r(l,`n`)||``)in a)I=T;else if(I>=0&&n&&c===`staff`&&T===I-1)I=-1;else if(I>=0&&c===`note`&&!n){let e=r(l,`xml:id`)||``,t=g.has(e)?g.get(e):h.get(e);t&&`string`in t?p=$($(p,`tab.course`,String(t.string)),`tab.fret`,String(t.fret)):t&&(p=$(p,`visible`,`false`))}if(x.push(p),c===`scoreDef`&&!n&&!w&&C<0){u?w=!0:C=T;return}if(c===`scoreDef`&&n&&C>=0&&T===C-1){C=-1,w=!0;return}if(C>=0){if(c===`staffDef`&&!n){let e=r(l,`n`)||``;if(!i.has(e))return;let t=r(l,`xml:id`)||``;if(u){x.push(L(e,t,``));return}E={n:e,id:t,meterSig:``,depth:T};return}if(E&&c===`meterSig`&&!n){E.meterSig=p.replace(/\sxml:id\s*=\s*"[^"]*"/,``).replace(/\s*\/?>$/,`/>`);return}E&&c===`staffDef`&&n&&T===E.depth-1&&(x.push(L(E.n,E.id,E.meterSig)),E=null);return}if(!D){if(c===`staff`&&!n&&!u&&i.has(r(l,`n`)||``)){let e=r(l,`n`);O=e,k=[],A=0,D=[`<staff${Q(r(l,`xml:id`)||``,`-tab`)} n="${100+Number(e)}">`],N=T,P=0,F=null}return}if(n&&c===`staff`&&T===N-1){D.push(`</staff>`),x.push(D.join(``),...k),D=null;return}if(P){n?P--:u||P++;return}let y=r(l,`xml:id`)||``;if(!n&&c===`note`&&t.fingers?.[O]&&r(l,`grace`)===null&&_.has(y)&&!g.has(y)){let e=_.get(y)?.position||j.get(O)||0;if(e&&e!==A){let t=!A&&j.get(O)===e,n=` startid="#${Je(y)}-tab"`;n&&k.push(`<dir staff="${100+Number(O)}"${n} place="above" type="finger-position finger-staff-${100+Number(O)}${t?` finger-reassert`:``}"><rend fontsize="30%">${M(e)}</rend></dir>`),A=e,j.set(O,e)}}if(n){c===`layer`||He.has(c)?D.push(`</${c}>`):c===`chord`&&F&&(F.frets||D.push(at(F.held)),D.push(`</tabGrp>`),F=null);return}if(c===`layer`||He.has(c)){let e=[`n`,`num`,`numbase`,`num.visible`,`bracket.visible`,`num.format`,`bracket.place`,`num.place`].map(e=>{let t=r(l,e);return t===null?``:` ${e}="${t}"`}).join(``);D.push(`<${c}${Q(y,`-tab`)}${e}${u?`/>`:`>`}`);return}if(!Ue.has(c)){if(c===`chord`){if(r(l,`grace`)!==null){u||(P=1);return}D.push(`<tabGrp${Q(y,`-tab`)}${rt(l)}><tabDurSym/>`),u?D.push(`</tabGrp>`):F={frets:0};return}if(c===`note`){if(u||(P=1),F){if(g.has(y)){F.held||(F.held=g.get(y));return}let e=v(y,`-tab`);e&&F.frets++,D.push(e);return}if(r(l,`grace`)!==null)return;D.push(`<tabGrp${Q(y,`-tab`)}${rt(l)}><tabDurSym/>${g.has(y)?at(g.get(y)):v(y,`-tabn`)}</tabGrp>`);return}if(Ve.has(c)||Ke.has(c)){u||(P=1);let e=Ke.has(c)?l.replace(/\s+xml:id\s*=\s*(?:"[^"]*"|'[^']*')/,``).trimEnd():rt(l);D.push(`<${c}${Q(y,`-tab`)}${e}/>`);return}u||(P=1)}}),x.push(e.slice(S)),x.join(``)}const st={handwrittenFont:[`Petaluma`],engravingDefaults:JSON.stringify({barlineSeparation:.4,bracketThickness:.5,dashedBarlineDashLength:.5,dashedBarlineGapLength:.25,hairpinThickness:.16,legerLineExtension:.4,legerLineThickness:.16,lyricLineThickness:.16,octaveLineThickness:.16,pedalLineThickness:.16,repeatBarlineDotSeparation:.16,repeatEndingLineThickness:.16,slurEndpointThickness:.1,slurMidpointThickness:.22,staffLineThickness:.13,stemThickness:.12,subBracketThickness:.16,textEnclosureThickness:.16,thickBarlineThickness:.5,thinBarlineThickness:.16,tieEndpointThickness:.1,tieMidpointThickness:.22,tupletBracketThickness:.16})},ct=e=>e===`Petaluma`?st:{};function lt(e,t,n){if(!Number.isFinite(t)||t<=0||!Number.isInteger(n)||n<1||e.some(e=>!Number.isFinite(e)||e<0))throw RangeError(`Invalid PDF line dimensions.`);let r=[],i=0,a=0;for(let o=0;o<e.length;o++){let s=e[o];(!a||a>=n||i+s>t)&&(r.push(o),i=0,a=0),i+=s,a++}return r}const ut={a4:{width:210,height:297},a3:{width:297,height:420},letter:{width:215.9,height:279.4},legal:{width:215.9,height:355.6}},dt=6.5/72;function ft(e,t,n=0){let r=ut[e],i=Math.min(1,(r.height-24)/(Math.max(1,t)*dt)),a=dt*i,o=Math.round(r.width/a),s=Math.round(r.height/a),c=Math.round(12/a);return{pageWidth:o,pageHeight:s,margin:c,scale:i,capacity:o-2*c-n}}function pt(e){let t=/<svg\b[^>]*viewBox="0 0 ([\d.]+) ([\d.]+)"/.exec(e);if(!t)throw Error(`PDF spike: missing SVG page dimensions.`);return[Number(t[1]),Number(t[2])]}function mt(e){let t=[],n=[],i=[],a=-1,o=-1,s=0;return u(e,({closing:e,name:c,attributes:l,selfClosing:u})=>{if(c===`g`){if(e){i.pop();return}let s=(r(l,`class`)||``).split(` `);s.includes(`bounding-box`)||(s.includes(`system`)&&(o=n.length,n.push({left:1/0,right:-1/0}),a=-1),s.includes(`measure`)&&(a=t.length,t.push({left:1/0,right:-1/0}))),u||i.push(s);return}if(e||a<0)return;let d=(e,r)=>{t[a].left=Math.min(t[a].left,e/10),t[a].right=Math.max(t[a].right,r/10),o>=0&&(n[o].left=Math.min(n[o].left,e/10),n[o].right=Math.max(n[o].right,r/10))};if(c===`rect`){let e=Number(r(l,`x`)),t=Number(r(l,`width`));Number.isFinite(e)&&t>0&&(i.at(-1)?.includes(`staff`)&&i.at(-1)?.includes(`bounding-box`)&&d(e,e+t),i.at(-1)?.some(e=>[`clef`,`keySig`,`meterSig`].includes(e))&&(s=Math.max(s,t/10)))}else if(c===`path`&&i.at(-1)?.includes(`staff`)){let e=/^M([\d.-]+) ([\d.-]+) L([\d.-]+) ([\d.-]+)$/.exec(r(l,`d`)||``);e&&e[2]===e[4]&&d(Number(e[1]),Number(e[3]))}}),{bars:t,systems:n,signatureWidth:s}}self.onmessage=async({data:e})=>{let t;try{let{input:n,opts:i,files:a}=e,o=ut[i.paper];if(!o)throw Error(`Unknown PDF paper size.`);lt([],1,i.maxBars);let[s,c]=await Promise.all([import(
2
2
  /* @vite-ignore */
3
3
  a.module),import(
4
4
  /* @vite-ignore */
5
- a.toolkit)]),l=await s.default();c.enableLogToBuffer(1,l);let f=c.VerovioToolkit;t=new f(l);let p=(e,n)=>{if(t.resetOptions(),t.setOptions({xmlIdChecksum:!0,...n}),!t.loadData(e))throw Error(`Could not engrave the PDF notation.`)},g={font:i.font||`Bravura`,fontFallback:`Bravura`,header:`none`,footer:`none`,svgAdditionalAttribute:[`staff@n`],svgViewBox:!0,scale:100,smuflTextFont:`none`,...st(i.font===`Petaluma`?`Petaluma`:`Bravura`),spacingStaff:i.spacingStaff??12,spacingSystem:12+Math.ceil((i.annotationRoom??0)/9)};p(n.data,{...g,breaks:`none`});let _=t.getMEI(),v=n.view??{breakEvery:0,hiddenStaves:[],chordSymbols:!0};_=await Y(_,v.spelling,async(e,n)=>(p(e,{...g,breaks:`none`,...n}),t.getMEI())),v.tab&&(_=at(_,v.tab));let y=d(_).measureIds.length;if(!y){let e=Math.round(o.width/ut),t=Math.round(o.height/ut);self.postMessage({value:{pages:[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${e} ${t}"></svg>`],lines:[],shrunk:!1}});return}p(m(_,{...v,breakBefore:[],breakEvery:0}),{...g,breaks:`none`,pageWidth:1e5,pageHeight:6e4,pageMarginLeft:0,pageMarginRight:0,pageMarginTop:0,pageMarginBottom:0,noJustification:!0,adjustPageWidth:!0,adjustPageHeight:!0,svgBoundingBoxes:!0});let b=h(t.renderToSVG(1)),x=pt(b);if(x.bars.length!==y)throw Error(`PDF spike: contextual measure count differs.`);let S=ft(b)[1],C=120+x.signatureWidth,w=0,T=dt(i.paper,S,C),E=x.bars.map(e=>Math.max(1,e.right-e.left));if(E.some(e=>!Number.isFinite(e)))throw Error(`PDF spike: missing contextual bar extents.`);let D={...g,breaks:`line`,pageWidth:T.pageWidth,pageHeight:T.pageHeight,pageMarginLeft:T.margin,pageMarginRight:T.margin,pageMarginTop:T.margin+Math.round((i.headingMm??0)/ut/T.scale),pageMarginBottom:T.margin+Math.ceil(i.annotationRoom??0),adjustPageWidth:!1,adjustPageHeight:!1},O=[],k=``;for(let e=0;;e++){let n=T.pageWidth-2*T.margin,r=ct(E,Math.max(1,n-w),i.maxBars)[1]??y,a=[0,...ct(E.slice(r),T.capacity,i.maxBars).map(e=>e+r)];O=a.map((e,t)=>({start:e,count:(a[t+1]??y)-e,width:0})),k=m(_,{...v,breakBefore:a}),p(k,{...D,breaks:`encoded`,noJustification:!0,svgBoundingBoxes:!0});let o=Array.from({length:t.getPageCount()},(e,n)=>pt(h(t.renderToSVG(n+1))).systems).flat();if(o.length!==O.length)throw Error(`PDF spike: natural system count differs.`);let s=C,c=w,l=!1;for(let e=0;e<O.length;e++){let t=O[e];t.width=o[e].right-Math.min(0,o[e].left);let r=E.slice(t.start,t.start+t.count).reduce((e,t)=>e+t,0);t.count>1&&t.width>n+2&&(l=!0,e===0?c=Math.max(c,t.width-r+2):s=Math.max(s,t.width-r+2))}if(!l)break;if(e>=y||s<=C&&c<=w)throw Error(`PDF spike: could not fit natural system widths.`);C=s,w=c,T=dt(i.paper,S,C)}p(k,D);let A=Array.from({length:Math.max(1,t.getPageCount())},(e,n)=>h(t.renderToSVG(n+1))),j=[];for(let e of A){let t=-1;u(e,({closing:e,name:n,attributes:i})=>{if(e||n!==`g`)return;let a=(r(i,`class`)||``).split(` `);a.includes(`system`)&&(t=j.length,j.push(0)),a.includes(`measure`)&&t>=0&&j[t]++})}if(y&&(j.length!==O.length||j.some((e,t)=>e!==O[t].count)))throw Error(`PDF spike: encoded system breaks were not honoured (${j.join(`,`)}).`);self.postMessage({value:{pages:A,lines:O,shrunk:T.scale<1}})}catch(e){self.postMessage({error:e instanceof Error?e.message:String(e)})}finally{t?.destroy()}};
5
+ a.toolkit)]),l=await s.default();c.enableLogToBuffer(1,l);let f=c.VerovioToolkit;t=new f(l);let p=(e,n)=>{if(t.resetOptions(),t.setOptions({xmlIdChecksum:!0,...n}),!t.loadData(e))throw Error(`Could not engrave the PDF notation.`)},g={font:i.font||`Bravura`,fontFallback:`Bravura`,header:`none`,footer:`none`,svgAdditionalAttribute:[`staff@n`],svgViewBox:!0,scale:100,smuflTextFont:`none`,...ct(i.font===`Petaluma`?`Petaluma`:`Bravura`),spacingStaff:i.spacingStaff??12,spacingSystem:12+Math.ceil((i.annotationRoom??0)/9)};p(n.data,{...g,breaks:`none`});let _=t.getMEI(),v=n.view??{breakEvery:0,hiddenStaves:[],chordSymbols:!0};_=await Y(_,v.spelling,async(e,n)=>(p(e,{...g,breaks:`none`,...n}),t.getMEI())),v.tab&&(_=ot(_,v.tab));let y=d(_).measureIds.length;if(!y){let e=Math.round(o.width/dt),t=Math.round(o.height/dt);self.postMessage({value:{pages:[`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${e} ${t}"></svg>`],lines:[],shrunk:!1}});return}p(m(_,{...v,breakBefore:[],breakEvery:0}),{...g,breaks:`none`,pageWidth:1e5,pageHeight:6e4,pageMarginLeft:0,pageMarginRight:0,pageMarginTop:0,pageMarginBottom:0,noJustification:!0,adjustPageWidth:!0,adjustPageHeight:!0,svgBoundingBoxes:!0});let b=h(t.renderToSVG(1)),x=mt(b);if(x.bars.length!==y)throw Error(`PDF spike: contextual measure count differs.`);let S=pt(b)[1],C=120+x.signatureWidth,w=0,T=ft(i.paper,S,C),E=x.bars.map(e=>Math.max(1,e.right-e.left));if(E.some(e=>!Number.isFinite(e)))throw Error(`PDF spike: missing contextual bar extents.`);let D={...g,breaks:`line`,pageWidth:T.pageWidth,pageHeight:T.pageHeight,pageMarginLeft:T.margin,pageMarginRight:T.margin,pageMarginTop:T.margin+Math.round((i.headingMm??0)/dt/T.scale),pageMarginBottom:T.margin+Math.ceil(i.annotationRoom??0),adjustPageWidth:!1,adjustPageHeight:!1},O=[],k=``;for(let e=0;;e++){let n=T.pageWidth-2*T.margin,r=lt(E,Math.max(1,n-w),i.maxBars)[1]??y,a=[0,...lt(E.slice(r),T.capacity,i.maxBars).map(e=>e+r)];O=a.map((e,t)=>({start:e,count:(a[t+1]??y)-e,width:0})),k=m(_,{...v,breakBefore:a}),p(k,{...D,breaks:`encoded`,noJustification:!0,svgBoundingBoxes:!0});let o=Array.from({length:t.getPageCount()},(e,n)=>mt(h(t.renderToSVG(n+1))).systems).flat();if(o.length!==O.length)throw Error(`PDF spike: natural system count differs.`);let s=C,c=w,l=!1;for(let e=0;e<O.length;e++){let t=O[e];t.width=o[e].right-Math.min(0,o[e].left);let r=E.slice(t.start,t.start+t.count).reduce((e,t)=>e+t,0);t.count>1&&t.width>n+2&&(l=!0,e===0?c=Math.max(c,t.width-r+2):s=Math.max(s,t.width-r+2))}if(!l)break;if(e>=y||s<=C&&c<=w)throw Error(`PDF spike: could not fit natural system widths.`);C=s,w=c,T=ft(i.paper,S,C)}p(k,D);let A=Array.from({length:Math.max(1,t.getPageCount())},(e,n)=>h(t.renderToSVG(n+1))),j=[];for(let e of A){let t=-1;u(e,({closing:e,name:n,attributes:i})=>{if(e||n!==`g`)return;let a=(r(i,`class`)||``).split(` `);a.includes(`system`)&&(t=j.length,j.push(0)),a.includes(`measure`)&&t>=0&&j[t]++})}if(y&&(j.length!==O.length||j.some((e,t)=>e!==O[t].count)))throw Error(`PDF spike: encoded system breaks were not honoured (${j.join(`,`)}).`);self.postMessage({value:{pages:A,lines:O,shrunk:T.scale<1}})}catch(e){self.postMessage({error:e instanceof Error?e.message:String(e)})}finally{t?.destroy()}};
@@ -0,0 +1,7 @@
1
+ const e=/<(?:!--[\s\S]*?--|\?[\s\S]*?\?|!\[CDATA\[[\s\S]*?\]\]|!DOCTYPE[^>]*|(\/?)([A-Za-z_][\w.:-]*)((?:\s+[^\s=/>]+(?:\s*=\s*(?:"[^"]*"|'[^']*'))?)*)\s*(\/?))>/g,t=/* @__PURE__ */ new Map;function n(e){let n=t.get(e);return n||(n=RegExp(`\\s${e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`),t.set(e,n)),n}function r(e,t){if(!e.includes(t))return null;let r=n(t).exec(e);return r?r[1]??r[2]??``:null}function i(e,t){return e.replace(n(t),``)}function a(e,t,r){return e.replace(n(t),` ${t}="${r}"`)}const o=e=>e.slice(e.indexOf(`:`)+1),s=e=>r(e,`xml:id`)||``,c=e=>(e||``).split(/\s+/).filter(Boolean),l=e=>e.replace(/^#/,``);function u(t,n){e.lastIndex=0;for(let r=e.exec(t);r;r=e.exec(t))if(r[2]&&n({closing:r[1]===`/`,name:o(r[2]),attributes:r[3]||``,selfClosing:r[4]===`/`,index:r.index,length:r[0].length}))return}function d(e){let t=[],n=[],i=[],a=[],o=[],c=-1,l=!1,d=!1,f=0,p=/* @__PURE__ */ new Set,m=0;return u(e,({closing:e,name:u,attributes:h,selfClosing:g})=>{if(e){a.pop(),u===`staff`&&d?(d=!1,f&&(m=Math.max(m,Math.ceil(f/p.size)))):c>=0&&(u===`staffGrp`&&o.pop(),u===`scoreDef`&&a.length===c&&(c=-1,l=!0));return}if(u===`measure`)t.push(s(h));else if(u===`staff`&&!g)d=!0,f=0,p=/* @__PURE__ */ new Set;else if(u===`verse`&&d)f++,p.add(r(h,`n`)||`1`);else if(u===`scoreDef`&&!l&&c<0)g?l=!0:c=a.length;else if(c>=0){if(u===`staffGrp`)i.push({id:s(h),staves:[]}),g||o.push(i.length-1);else if(u===`staffDef`){let e={n:r(h,`n`)||``,id:s(h)};n.push(e),a.at(-1)===`staffGrp`&&o.length&&i[o.at(-1)].staves.push(e)}}g||a.push(u)}),{measureIds:t,lyricDensity:m,staffDefs:n,groups:i}}const f=/* @__PURE__ */ new Set([`meiHead`,`label`,`labelAbbr`,`sb`,`pb`,`pgHead`,`pgFoot`]);function p(e,t){let n=/* @__PURE__ */ new Set,i=[],a=[],o=0;return u(e,({closing:e,name:l,attributes:u,selfClosing:d})=>{if(e){o?o--:l===`staffGrp`&&a.pop();return}let f=l===`staffGrp`?i.push(0)-1:-1;if(o){let e=s(u);e&&n.add(e),d||o++;return}let p=(l===`staffDef`||l===`staff`)&&t.has(r(u,`n`)||``);if(!p){let e=c(r(u,`staff`));p=e.length>0&&e.every(e=>t.has(e))}if(p){let e=s(u);e&&n.add(e),d||(o=1);return}if(l===`staffDef`)for(let e of a)i[e]++;f>=0&&!d&&a.push(f)}),{removed:n,emptyGroups:new Set(i.flatMap((e,t)=>e?[]:[t]))}}function m(e,t,n=1/0,o=0){let d=t.breakBefore===void 0?void 0:new Set(t.breakBefore),m=new Set(t.hiddenStaves),{removed:h,emptyGroups:g}=m.size?p(e,m):{removed:/* @__PURE__ */ new Set,emptyGroups:/* @__PURE__ */ new Set},_=e=>h.size>0&&c(e).some(e=>h.has(l(e))),v=[],y=[],b=0,x=0,S=0,C=0,w=0,T=-1,E=-1,D=()=>++w>=n,O=t.chordSymbols&&t.harmSize&&t.harmSize!==100?Math.round(t.harmSize):0,k=0;if(u(e,({closing:n,name:u,attributes:p,selfClosing:w,index:A,length:j})=>{x||v.push(e.slice(b,A)),b=A+j;let M=e.slice(A,A+j);if(n){if(x){x--;return}return u===`harm`&&k&&y.at(-1)===`rend`&&(y.pop(),k--,v.push(`</rend>`)),y.pop(),E=-1,v.push(M),u===`measure`&&D()?(T=b,!0):void 0}let N=u===`staffGrp`?S++:-1;if(x){if(m.size){let e=s(p);e&&h.add(e)}w||x++;return}let P=f.has(u)||u===`harm`&&!t.chordSymbols,F=M;if(!P&&m.size){let e=c(r(p,`staff`)),t=e.filter(e=>!m.has(e));P=(u===`staffDef`||u===`staff`)&&m.has(r(p,`n`)||``)||N>=0&&g.has(N)||e.length>0&&!t.length||_(r(p,`startid`))||_(r(p,`endid`)),!P&&t.length!==e.length&&(F=a(F,`staff`,t.join(` `)));let n=r(p,`plist`);if(!P&&n&&_(n)){let e=c(n).filter(e=>!h.has(l(e)));e.length?F=a(F,`plist`,e.join(` `)):P=!0}}if(P){if(m.size){let e=s(p);e&&h.add(e)}w||(x=1);return}if((u===`staffDef`||u===`staffGrp`)&&(F=i(i(F,`label`),`label.abbr`)),u===`measure`){if(C>0&&(d?d.has(C+o):t.breakEvery>0&&(C+o)%t.breakEvery===0)){let e=d?`<sb/>`:`<pb/>`;E>=0?v.splice(E,0,e):v.push(e)}C++}if((u===`ending`||u===`section`)&&!w?E<0&&(E=v.length):E=-1,v.push(F),!w)y.push(/^<([^\s/>]+)/.exec(M)[1]);else if(u===`measure`&&D())return T=b,!0;if(O&&u===`harm`&&!w){let t=e.indexOf(`</harm>`,b);(t>=0?e.slice(b,t).includes(`<fb`):e.includes(`<fb`,b))||(v.push(`<rend fontsize="${O}%">`),y.push(`rend`),k++)}}),T<0)return v.push(e.slice(b)),v.join(``);for(let e=y.length-1;e>=0;e--)v.push(`</${y[e]}>`);return v.join(``)}function h(e){let t=[],n=-1,i=-1,a=0,o=``,s=/* @__PURE__ */ new Set,c=-1,l=-1,d=-1,f=``,p=``;u(e,({name:u,closing:m,selfClosing:h,attributes:g,index:_,length:v})=>{if(m?a--:h||a++,c>=0){m&&u===`g`&&a===c-1&&(t.push({start:l,end:_+v,text:``}),c=-1);return}let y=r(g,`class`)??``;if(!m&&u===`g`&&/(?:^|\s)system(?:\s|$)/.test(y)&&s.clear(),!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(y)){let e=/(?:^|\s)finger-staff-(\d+)(?:\s|$)/.exec(y)?.[1]??`default`;if(y.split(/\s+/).includes(`finger-reassert`)&&s.has(e)){c=a,l=_;return}s.add(e)}if(!m&&u===`g`){let e=/(?:^|\s)finger-tab-([LH]?[0-4])-p[\d-]+(?:\s|$)/.exec(r(g,`class`)??``);e&&(n=a,o=e[1])}if(!m&&u===`g`&&/(?:^|\s)finger-position(?:\s|$)/.test(r(g,`class`)??``)&&(i=a),i>=0&&!m&&u===`text`){let n=e.slice(_,_+v).replace(/\stext-anchor="[^"]*"/,``);t.push({start:_,end:_+v,text:`${n.slice(0,-1)} text-anchor="middle">`})}if(m&&u===`g`&&a===i-1&&(i=-1),!(n<0)){if(!m&&u===`text`&&r(g,`class`)!==`finger-label`&&(d=_,f=e.slice(_,_+v),p=r(g,`font-size`)??``),!m&&u===`tspan`&&(p=r(g,`font-size`)??p),m&&u===`text`&&d>=0){let e=f.replace(/\sfont-size="[^"]*"/,``);t.push({start:d,end:_+v,text:`${e.slice(0,-1)} class="finger-label" font-size="${p}" font-family="Arial" fill="currentColor" stroke="white" stroke-width="45" stroke-linejoin="round" paint-order="stroke fill">${o}</text>`}),d=-1}m&&u===`g`&&a===n-1&&(n=-1)}});for(let n of t.reverse())e=e.slice(0,n.start)+n.text+e.slice(n.end);return e}const g=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],_={C:0,D:2,E:4,F:5,G:7,A:9,B:11},v=[`Cb`,`Gb`,`Db`,`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`],y=[`Ab`,`Eb`,`Bb`,`F`,`C`,`G`,`D`,`A`,`E`,`B`,`F#`,`C#`,`G#`,`D#`,`A#`],b=[0,-5,2,-3,4,-1,6,1,-4,3,-2,5],x=[0,7,2,-3,4,-1,6,1,-4,3,-2,5],S=(e,t)=>(e%t+t)%t,C=e=>e>0?`#`.repeat(e):`b`.repeat(-e);function w(e){let t=0;for(let n of e)t+=n===`#`||n===`♯`?1:n===`x`||n===`𝄪`?2:n===`𝄫`?-2:-1;return t}function T(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}function E(e,t=`major`){let n=(t===`minor`?y:v)[e+7];if(!n)throw Error(`No key with ${e} fifths`);return{tonic:n,mode:t,fifths:e,scale:g.map(t=>({step:t,alter:T(t,e)}))}}function D(e){let t=e.fifths>0?e.fifths-12:e.fifths<0?e.fifths+12:null;return t===null||Math.abs(t)>7?null:E(t,e.mode)}function O(e,t=`major`,n={}){let r=S(e+(t===`minor`?3:0),12),i=E((n.family===`sharp`?x:b)[r],t);return n.flip?D(i)??i:i}function k(e,t){return{...t,octave:Math.round((e-_[t.step]-t.alter)/12)-1}}const A=(e,t)=>S(_[t.step]+t.alter,12)===S(e,12),j=e=>g.indexOf(e);function M(e,t){let n=S(j(t.step)-j(e),7);return n===1?1:n===6?-1:0}function N(e,t,n={}){let r=S(e,12),i=n.source&&A(r,n.source)?n.source:void 0;if(i&&Math.abs(i.alter)===2&&!n.transposed)return k(e,i);let a=t.scale.find(e=>A(r,e));if(a)return k(e,a);let o=e=>Math.abs(e.alter)<=1&&![`E1`,`B1`,`F-1`,`C-1`].includes(e.step+e.alter);if(t.mode===`minor`){let n=j(t.tonic.charAt(0));for(let i of[5,6]){let a=t.scale[(n+i)%7],o={step:a.step,alter:a.alter+1};if(A(r,o)&&Math.abs(o.alter)<=1)return k(e,o)}}if(i&&o(i)&&n.next!==void 0&&n.next-e>=1&&n.next-e<=2)return k(e,i);let s=Object.entries(_).find(([,e])=>e===r)?.[0];if(s){let r={step:g[(j(s)+1)%7],alter:-1};if((s===`E`||s===`B`)&&t.fifths<=-6&&n.prev!==void 0&&n.next!==void 0){let i=N(n.prev,t),a=N(n.next,t),o=[M(r.step,i),M(r.step,a)];if(o.includes(1)&&o.includes(-1))return k(e,r)}return k(e,{step:s,alter:0})}let c={step:g.find(e=>_[e]===r-1),alter:1},l={step:g.find(e=>_[e]===r+1),alter:-1};return t.fifths>0?k(e,c):t.fifths<0?k(e,l):k(e,r===6?c:l)}function P(e,t){let n=/^([A-G])([#♯b♭x𝄪𝄫]*)(.*)$/s.exec(e);if(!n)return e;let r=/[♯♭]/.test(e),i=(e,n)=>{let i=N(60+_[e]+w(n),t),a=C(i.alter);return i.step+(r?a.replace(/#/g,`♯`).replace(/b/g,`♭`):a)},a=n[3].replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,n)=>`/${i(t,n)}`);return i(n[1],n[2])+a}const F=[40,45,50,55,59,64],I=.08,L=1e-9;function R(e,t={}){let n=t.tuning&&t.tuning.length?t.tuning:F,r=Math.max(0,Math.floor(t.capo??0)),i=Math.floor(t.maxFret??22),a=t.octaveFold??!0,o=Math.min(n.length,31),s=Math.max(0,i-r),c=new Int32Array(o);for(let e=0;e<o;e++)c[e]=n[n.length-1-e]+r;let l=c.some((e,t)=>t>0&&e>c[t-1]),u=Math.max(1,s),d=u+1,f=e=>{for(let t=0;t<o;t++)if(e>=c[t]&&e<=c[t]+s)return!0;return!1},p=e=>{if(Number.isFinite(e)){if(f(e))return 0;if(a)for(let t=1;t<=10;t++){if(f(e+12*t))return 12*t;if(f(e-12*t))return-12*t}}};function m(e,t,n,r){let i=e.length,a=[];if(i===0||i>o)return a;let u=new Int8Array(i),d=new Int8Array(i),f=()=>{let e=99,t=-1,n=0,r=0;for(let a=0;a<i;a++){let i=d[a];r+=u[a],i===0?n++:(i<e&&(e=i),i>t&&(t=i))}let o=t<0,s=1,c=1,f=0;o||(f=t-e,s=Math.max(1,t-3),c=Math.max(1,e),s>c&&(s=c=Math.max(1,e)));let p=i>1?(l?Math.max(...u)-Math.min(...u):u[i-1]-u[0])+1-i:0,m=-.3*n+.3*Math.max(0,t-12)**2+1*f**1.5+.5*p+.05*r,h=m+I*s;if(a.length===24&&h>=a[23].rank)return;let g={str:u.slice(),fret:d.slice(),open:o,posLo:s,posHi:c,cost:m,rank:h},_=a.length;for(;_>0&&a[_-1].rank>h;)_--;a.splice(_,0,g),a.length>24&&a.pop()},p=(a,m,h,g,_=r)=>{if(a===i){f();return}let v=e[a],y=l?o-1:o-(i-a);for(let e=l?0:m;e<=y;e++){if(t[a]>=0&&e!==t[a]||_&1<<e)continue;let r=v-c[e];if(r<0||r>s||n[a]>=0&&r!==n[a])continue;let i=h,o=g;r>0&&(r<i&&(i=r),r>o&&(o=r),o-i>(i>=7?5:4))||(u[a]=e,d[a]=r,p(a+1,e+1,i,o,_|1<<e))}};return p(0,0,99,-1),a}let h=/* @__PURE__ */ new Map;function g(e,t){let n=String(t);for(let t of e)n+=`,${t.pitch}:${t.fixedT}:${t.fixedFret}`;let r=h.get(n);if(r)return r;let i=e.map((e,t)=>t),a={shapes:[],kept:[]};for(;i.length;){if(i.length<=o){let n=i.map(t=>e[t].pitch),r=i.map(t=>e[t].fixedT),o=i.map(t=>e[t].fixedFret),s=r.some(e=>e>=0),c=i.map(()=>-1),l=[];s&&(l.push([r,o,t]),t&&l.push([r,o,0])),l.push([c,c,t]),t&&l.push([c,c,0]);let u=[];for(let[e,t,r]of l)if(u=m(n,e,t,r),u.length)break;if(u.length){a={shapes:u,kept:i};break}}i=_(e,i)}return h.set(n,a),a}function _(e,t){let n=t.length,r=e=>t.filter((t,n)=>n!==e),i=t=>{let i=t[0],a=1/0;if(t.length>1&&n-1<=o){let o=Array(n-1).fill(-1);for(let n of t){let t=m(r(n).map(t=>e[t].pitch),o,o,0),s=t.length?t[0].rank:1/0;s<a&&(a=s,i=n)}}return r(i)},a=[];for(let r=1;r<n;r++)e[t[r]].pitch===e[t[r-1]].pitch&&a.push(r);if(a.length)return i(a);if(n>2){let r=t.map(t=>(e[t].pitch%12+12)%12),a=[],o=[];for(let e=1;e<n-1;e++)a.push(e),r.some((t,n)=>n!==e&&t===r[e])&&o.push(e);return i(o.length?o:a)}return r(n-1)}let v=e.map(e=>(e.pitches??[]).map(()=>({unplayable:!0}))),y=e.map(e=>{let t=[];return(e.pitches??[]).forEach((n,r)=>{let i=p(n);if(i===void 0)return;let a=n+i,l=-1,u=-1,d=e.fixed?.[r];if(d){let e=Math.floor(d.string)-1,t=d.fret!==void 0&&d.fret!==null&&Number.isFinite(d.fret),n=t?Math.floor(d.fret):a-(c[e]??NaN);e>=0&&e<o&&n>=0&&n<=s&&c[e]+n===a&&(l=e,u=t?n:-1)}t.push({pitch:a,orig:r,shifted:i,fixedT:l,fixedFret:u})}),t.sort((e,t)=>t.pitch-e.pitch||e.orig-t.orig),t.length?t:void 0}),b=new Float64Array(e.length*d),x=new Int32Array(e.length*d),S=new Int32Array(e.length*d),C=new Float64Array(d),w=new Int32Array(d),T=[],E=-1/0,D=0,O=e=>{let t=-1,n=1/0;for(let r=1,i=e*d+1;r<d;r++,i++)b[i]<n&&(n=b[i],t=r);return t},k=t=>{let n=0,r=T.length?O(T.length-1):-1;for(let i=T.length-1;i>=0&&r>=0;i--){let a=T[i];if(a.reach<=t+L)break;if(a.end<=t+L){r=S[i*d+r];continue}let o=a.plan.shapes[x[i*d+r]],s=e[a.event].durations??[];for(let e=0;e<a.plan.kept.length;e++)a.onset+(s[a.notes[a.plan.kept[e]].orig]??0)>t+L&&(n|=1<<o.str[e]);r=S[i*d+r]}return n},A=()=>{if(!T.length)return;let e=O(T.length-1);for(let t=T.length-1;t>=0&&e>=0;t--){let n=T[t],r=n.plan.shapes[x[t*d+e]],i=v[n.event];for(let e=0;e<n.plan.kept.length;e++){let t=n.notes[n.plan.kept[e]],a={string:r.str[e]+1,fret:r.fret[e]};t.shifted&&(a.shifted=t.shifted),i[t.orig]=a}e=S[t*d+e]}T=[]};for(let t=0;t<e.length;t++){let n=y[t];if(!n)continue;let r=e[t],i=Number.isFinite(r.onset)?r.onset:D,a=Math.max(0,i-E);a>=2&&A();let o=g(n,k(i));if(!o.shapes.length)continue;let s=T.length,c=s*d,l=c-d;if(s>0){let e=1+.5*a,t=1.5/e,n=2/e,r=1/0,i=-1;for(let e=1;e<d;e++){C[e]=r,w[e]=i;let t=b[l+e];r+=n,t+n<r&&(r=t+n,i=e)}r=1/0,i=-1;for(let e=d-1;e>=1;e--){let a=C[e],o=w[e];r<a&&(a=r,o=i);let s=b[l+e];r+=n,s+n<r&&(r=s+n,i=e),a+=t,s<=a?(C[e]=s,w[e]=s<1/0?e:-1):(C[e]=a,w[e]=o)}}b.fill(1/0,c,c+d),x.fill(-1,c,c+d),S.fill(-1,c,c+d);let f=o.shapes;for(let e=0;e<f.length;e++){let t=f[e],n=t.open?1:t.posLo,r=t.open?u:t.posHi;for(let i=n;i<=r;i++){let n=t.cost+I*i,r=-1;s>0&&(t.open?(n+=b[l+i],r=i):(n+=C[i],r=w[i])),n<b[c+i]&&(b[c+i]=n,x[c+i]=e,S[c+i]=r)}}let p=r.durations??[],m=0;for(let e of n)m=Math.max(m,p[e.orig]??0);T.push({event:t,plan:o,notes:n,onset:i,end:i+m,reach:Math.max(i+m,T.at(-1)?.reach??-1/0)}),D=i,E=i+m}return A(),v}function ee(e,t={}){let n=e.map(()=>({continuation:!1})),r=e.map((e,t)=>t).filter(t=>{let n=e[t];return n.pitch!==null&&Number.isFinite(n.pitch)&&Number.isFinite(n.onset)}).sort((t,n)=>e[t].onset-e[n].onset||t-n),i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=[],s=[],c=e=>e.onset+(Number.isFinite(e.duration)?Math.max(0,e.duration):0);for(let t=0;t<r.length;){let l=e[r[t]].onset,u=t;for(;u<r.length&&Math.abs(e[r[u]].onset-l)<1e-6;)u++;let d=r.slice(t,u);t=u;let f=[];for(let t of d){let r=e[t],o=r.tieStop?a.get(r.pitch):void 0;o&&(i.set(t,o),n[t].continuation=!0,f.push(t),s[o[0]][o[1]]=Math.max(s[o[0]][o[1]],c(r)))}for(let t of f)e[t].tieStart||a.delete(e[t].pitch);for(let t of f)e[t].tieStart&&a.set(e[t].pitch,i.get(t));let p,m=/* @__PURE__ */ new Map;for(let t of d){if(n[t].continuation)continue;let r=e[t],u=r.pitch;p||(p={onset:l,durations:[],pitches:[],fixed:[]},o.push(p),s.push([]));let d=o.length-1,f=m.get(u);f===void 0?(f=p.pitches.length,m.set(u,f),p.pitches.push(u),p.fixed.push(r.fixed),s[d].push(c(r))):(s[d][f]=Math.max(s[d][f],c(r)),p.fixed[f]||(p.fixed[f]=r.fixed)),i.set(t,[d,f]),r.tieStart&&a.set(u,[d,f])}}o.forEach((e,t)=>{e.durations=s[t].map(t=>t-e.onset)});let l=R(o,t);for(let[e,[t,r]]of i)n[e].result=l[t][r];return n}new TextEncoder,new TextDecoder;const te=e=>{if(!e.startsWith(`n_`))return null;let t=e.replace(/(?:_c\d+)?(?:_s\d+)?$/,``);return t===e?null:t},z=[`C`,`D`,`E`,`F`,`G`,`A`,`B`],ne=[0,2,4,5,7,9,11],re=(e,t)=>(e%t+t)%t;function ie(e){let t=/^([+-]?)(dd|d|m|M|P|A|AA)(\d+)$/.exec(e.trim());if(!t)return{diatonic:0,chromatic:0};let n=Number(t[3])-1,r=n%7,i=ne[r]+12*Math.floor(n/7),a=(r===0||r===3||r===4?{dd:-2,d:-1,P:0,A:1,AA:2}:{dd:-3,d:-2,m:-1,M:0,A:1,AA:2})[t[2]]??0,o=t[1]===`-`?-1:1;return{diatonic:o*n,chromatic:o*(i+a)}}const ae=({diatonic:e,chromatic:t})=>7*t-12*e;function oe(e,t){if(!t.diatonic&&!t.chromatic)return e;let n=z.indexOf(e.step)+t.diatonic,r=z[re(n,7)],i=e.octave+Math.floor(n/7);return{step:r,octave:i,alter:B(e)+t.chromatic-B({step:r,octave:i,alter:0})}}const B=e=>(e.octave+1)*12+ne[z.indexOf(e.step)]+e.alter;function se(e){if(e==null)return null;let t=/^\s*(\d+)\s*([sf]?)\s*$/.exec(e);if(!t)return null;let n=Number(t[1]);return t[2]===`f`?-n:n}const ce=e=>e>0?`${e}s`:e<0?`${-e}f`:`0`,le=e=>{let t=e;for(;t>7;)t-=12;for(;t<-7;)t+=12;return t};function ue(e,t,n,r,i){if(t===0){let t=E(le(e),n);return i?D(t)??t:t}let a=re(7*(e+7*t),12);return O(re(a-(n===`minor`?3:0),12),n,{family:r.profile,flip:i})}function de(e){let t=[];return e.forEach((n,r)=>{if(n.tiedFrom!==void 0&&t[n.tiedFrom]&&B(t[n.tiedFrom])===n.midi){t.push(t[n.tiedFrom]);return}let i=e=>e&&!e.chord&&!n.chord?e.midi:void 0;t.push(N(n.midi,n.key,{source:n.source,prev:i(e[r-1]),next:i(e[r+1]),transposed:!0}))}),t}const fe=(e,t)=>e.scale[z.indexOf(t)]?.alter??0;function pe(e){let t=Array(e.length).fill(!1),n=e.map((e,t)=>t).sort((t,n)=>e[t].onset-e[n].onset||t-n),r=/* @__PURE__ */ new Map;for(let i=0;i<n.length;){let a=i;for(;a<n.length&&Math.abs(e[n[a]].onset-e[n[i]].onset)<1e-6;)a++;let o=[];for(let s of n.slice(i,a)){let{pitch:n,key:i,tieEnd:a,cautionary:c}=e[s],l=`${n.step}${n.octave}`,u=r.get(l)??fe(i,n.step);a||(n.alter!==u||c)&&(t[s]=!0,o.push([l,n.alter]))}for(let[e,t]of o)r.set(e,t);i=a}return t}const V=/^([A-G])([#♯b♭x𝄪𝄫]*)/,me=e=>[...e].reduce((e,t)=>e+(t===`#`||t===`♯`?1:t===`x`||t===`𝄪`?2:t===`𝄫`?-2:-1),0);function he(e,t){let n=(e,n)=>{let r=t.reduce((e,t)=>oe(e,t),{step:e,alter:me(n),octave:4});return r.step+(r.alter>0?`#`.repeat(r.alter):`b`.repeat(-r.alter))},r=V.exec(e);if(!r)return e;let i=e.slice(r[0].length).replace(/\/([A-G])([#♯b♭x𝄪𝄫]*)/g,(e,t,r)=>`/${n(t,r)}`);return n(r[1],r[2])+i}const ge={treble:[`G`,`2`],bass:[`F`,`4`],alto:[`C`,`3`],tenor:[`C`,`4`],treble8vb:[`G`,`2`,`8`]},H=[`clef.shape`,`clef.line`,`clef.dis`,`clef.dis.place`];function _e(e,t){let[n,r,i]=ge[e];return`<clef${t?` xml:id="${t}"`:``} shape="${n}" line="${r}"${i?` dis="${i}" dis.place="below"`:``}/>`}function ve(e,t){if(!/\sclef\.shape\s*=/.test(e))return e;let n=H.reduce(Ee,e);if(!t||!ge[t])return n;let[r,i,a]=ge[t];return n=W(W(n,`clef.shape`,r),`clef.line`,i),a?W(W(n,`clef.dis`,a),`clef.dis.place`,`below`):n}const ye=`CDEFGAB`,be=[0,2,4,5,7,9,11],U={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},xe=e=>({1:`s`,[-1]:`f`,0:`n`,2:`x`,[-2]:`ff`})[e]??`n`,Se=e=>({1:`s`,[-1]:`f`,0:`n`,2:`ss`,[-2]:`ff`})[e]??`n`;function Ce(e,t){let n=(t>0?`FCGDAEB`:`BEADGCF`).indexOf(e),r=n<Math.abs(t)?Math.floor((Math.abs(t)-1-n)/7)+1:0;return t>0?r:-r}const we={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625};function Te(e){return r(e,`grace`)===null?(we[r(e,`dur`)||``]??0)*(2-1/2**(Number(r(e,`dots`))||0)):0}function W(e,t,n){let r=RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,` ${t}="${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)}function Ee(e,t){return e.replace(RegExp(`\\s${t.replace(`.`,`\\.`)}\\s*=\\s*(?:"[^"]*"|'[^']*')`),``)}const De=[`keysig`,`key.sig`,`key.mode`,`key.pname`,`key.accid`,`key.sig.mixed`],Oe=e=>De.reduce(Ee,e),ke=e=>e.replace(/\s*\/>$/,`>`),Ae=e=>`<keySig sig="${ce(e.fifths)}"${e.mode===`minor`?` mode="minor"`:``}/>`,je=e=>e===`minor`?`minor`:e===`major`?`major`:null,Me=/^(?:\s+(?:n|xml:id|keysig|key\.[\w.]+)\s*=\s*(?:"[^"]*"|'[^']*'))*\s*$/;function Ne(e,t){return t?!!t.interval||t.concert||t.flip||t.semitones!==0||/\b(?:clef\.)?shape="perc"/.test(e)||Object.values(t.staves).some(e=>e.percussion||(e.keys?.length??0)>1||!!e.clef||!!e.shift?.[1]||!!e.shift?.[0]||Object.keys(e.octaves??{}).length>0):!1}async function G(e,t,n,r=0){return!t||!Ne(e,t)?e:Pe(t.interval?await n(e,{transpose:t.interval,transposeToSoundingPitch:!1}):e,t,r)}function Pe(e,t,n=0){if(!Ne(e,t))return e;let i=ae(ie(t.interval)),a=/* @__PURE__ */ new Map;u(e,({closing:e,name:t,attributes:n})=>{if(e||t!==`tie`)return;let i=r(n,`startid`)?.replace(/^#/,``),o=r(n,`endid`)?.replace(/^#/,``);i&&o&&a.set(o,i)});let o=[],s=[],c=[],l=[],d=[],f=[],p=new Set(Object.entries(t.staves).filter(([,e])=>e.percussion).map(([e])=>e)),m=e=>t.staves[e]??{profile:`neutral`,moved:t.semitones!==0},h=e=>{let t=m(e).shift;return t&&(t[0]||t[1])?{diatonic:t[0],chromatic:t[1]}:void 0},g=e=>!p.has(e)&&(m(e).moved||t.semitones!==0||t.flip||!!t.interval||!!h(e)),_=(e,t)=>{let n=p.has(e)?void 0:m(e).octaves;if(!n)return 0;let r=n[t]===void 0?te(t):null;return(n[t]??(r?n[r]:void 0)??0)/12},v=e=>!p.has(e)&&Object.keys(m(e).octaves??{}).length>0,y=e=>{let t=p.has(e)?void 0:m(e).clef;return t&&ge[t]?t:void 0},b=[],x=[],S=[],C,w,T,D=0,O=-1,k=``,A=``,j=0,M=[],N=-1,F=0,I=0,L,R,ee=()=>M.reduce((e,t)=>e*t,1),z=(e,t,n)=>{let i=se(r(e,t))??(t===`key.sig`?se(r(e,`keysig`)):null);return i===null?null:{fifths:i,mode:je(r(e,n))??`major`}};u(e,({closing:t,name:n,attributes:i,selfClosing:u,index:m,length:h})=>{let _=e.slice(m,m+h);if(t){if(S.pop(),T){--D===0&&(T.end=m+h,T=void 0);return}n===`staffDef`&&w?(w.end=m+h,w=void 0):n===`scoreDef`&&C?(C.end=m+h,C=void 0):n===`note`&&L?(L.end=m+h,L=void 0):n===`chord`?(F--,j+=I*ee()):n===`tuplet`?M.pop():n===`harm`&&R?(R.textEnd=m,R=void 0):n===`layer`?A=``:n===`staff`&&(k=``);return}if(u||S.push(n),T){u||D++;return}if(R&&(R.nested=!0),n===`scoreDef`){let e={start:m,end:m+h,initial:!o.length,measure:O+1,content:!1,keyRanges:[],tagEdits:[],keys:/* @__PURE__ */ new Map},t=z(i,`key.sig`,`key.mode`);t&&e.keys.set(`*`,t);let n=Oe(_);n!==_&&e.tagEdits.push({start:m,end:m+h,text:n}),/\s(?!xml:id)[\w.:-]+\s*=/.test(n.replace(/^<[\w:]+/,``).replace(/\sxml:id\s*=\s*"[^"]*"/,``))&&(e.content=!0),o.push(e),u||(C=e);return}if(C&&n===`staffGrp`){if(C.initial)return;Me.test(i)||(C.content=!0);return}if(n===`staffDef`){let e=r(i,`n`)||``,t={start:m,end:m+h,n:e,tag:_,selfClosing:u};if(r(i,`clef.shape`)===`perc`&&p.add(e),C){let n=z(i,`key.sig`,`key.mode`);n&&C.keys.set(e,n);let r=y(e)?ve(Oe(_),C.initial?y(e):void 0):Oe(_);r!==_&&C.tagEdits.push({start:m,end:m+h,text:r}),Me.test(i)||(C.content=!0),C.initial&&(s.push(t),e&&!x.includes(e)&&x.push(e))}u||(w=t);return}if(n===`clef`&&w){r(i,`shape`)===`perc`&&p.add(w.n),u&&(w.clefEnd=m+h,w.clef={start:m,end:m+h,id:r(i,`xml:id`)}),C&&(C.content=!0),u&&C&&!C.initial&&y(w.n)&&b.push({start:m,end:m+h,text:``});return}if(n===`keySig`){let e={start:m,end:m+h};u||(T=e,D=1);let t=z(i,`sig`,`mode`);C?(C.keyRanges.push(e),t&&C.keys.set(w?w.n:`*`,t)):k&&f.push(Object.assign(e,{staff:k,measure:O,onset:j,key:t}));return}if(C){C.content=!0;return}if(n===`measure`){O++,c.push(m);return}if(n===`staff`){k=r(i,`n`)||``;return}if(n===`layer`){A=r(i,`n`)||`1`,j=0,M.length=0,F=0;return}if(!k||!A){n===`harm`&&!u&&(R={textStart:m+h,textEnd:m+h,staff:(r(i,`staff`)||``).split(/\s+/)[0],measure:O,nested:!1},d.push(R));return}if(n===`clef`){y(k)&&u&&b.push({start:m,end:m+h,text:``});return}if(n===`tuplet`){let e=Number(r(i,`num`))||1,t=Number(r(i,`numbase`))||1;u||M.push(t/e);return}if(n===`chord`){N=j,I=Te(i),u?j+=I*ee():F++;return}if(n===`note`){let e=F>0,t=e?N:j;e||(j+=Te(i)*ee());let n=(r(i,`pname`)||``).toUpperCase(),o=Number(r(i,`oct`));if(!n||!ye.includes(n)||!Number.isFinite(o)||!(g(k)||v(k)))return;let s=r(i,`xml:id`)||``,c=r(i,`tie`),d=r(i,`accid`),f=r(i,`accid.ges`);L={start:m,end:m+h,tag:_,selfClosing:u,id:s,staff:k,layer:A,measure:O,onset:t,chord:e,pname:n,oct:o,written:d===null?null:U[d]??null,gestural:f===null?null:U[f]??null,accids:[],tieEnd:a.has(s)||c===`t`||c===`m`,cautionary:!1},l.push(L),u&&(L=void 0);return}if(n===`accid`&&L){let e=r(i,`accid`),t=r(i,`accid.ges`);e!==null&&U[e]!==void 0&&(L.written=U[e]),t!==null&&U[t]!==void 0&&(L.gestural=U[t]),(r(i,`func`)!==null||r(i,`enclose`)!==null)&&(L.cautionary=e!==null),L.accids.push({start:m,end:m+h,attributes:i});return}[`rest`,`space`,`mRest`,`mSpace`,`multiRest`].includes(n)&&F===0&&(j+=(n.startsWith(`m`)?1e3:Te(i))*ee())});for(let e of p)x.includes(e)||x.push(e);let ne=c.length,re=/* @__PURE__ */ new Map;for(let e of x){if(p.has(e))continue;let t=Array(Math.max(1,ne)).fill(void 0),r=m(e).keys;if(r?.length)for(let e=0;e<t.length;e++){let i=[...r].reverse().find(([t])=>t<=e+n)??r[0];t[e]={fifths:i[1],mode:i[2]}}else{let n={fifths:0,mode:`major`},r=/* @__PURE__ */ new Map;for(let n of o){let a=n.keys.get(e)??n.keys.get(`*`);a&&r.set(Math.min(n.measure,t.length-1),{fifths:a.fifths-i,mode:a.mode})}for(let n of f)n.staff===e&&n.key&&(n.onset===0||n.measure+1<t.length)&&r.set(Math.min(n.measure+1,t.length-1),{fifths:n.key.fifths-i,mode:n.key.mode});for(let e=0;e<t.length;e++)n=r.get(e)??n,t[e]=n}re.set(e,t)}let B=/* @__PURE__ */ new Map;for(let e of f)if(e.onset>0&&e.key){let t=`${e.staff}|${e.measure}`;(B.get(t)??B.set(t,[]).get(t)).push(e)}let ce=(e,t,n)=>B.get(`${e}|${t}`)?.findLast(e=>e.onset<=n+1e-6),le=(e,t,n=0)=>{let r=ce(e,t,n)?.key,a=h(e);return r?{fifths:r.fifths-i+(a?ae(a):0),mode:r.mode}:re.get(e)?.[Math.max(0,Math.min(t,ne-1))]??{fifths:0,mode:`major`}},fe=/* @__PURE__ */ new Map,V=(e,n,r=0)=>{let i=le(e,n,r),a=`${e}|${i.fifths}|${i.mode}`,o=fe.get(a);return o||(o=ue(i.fifths,t.semitones,i.mode,m(e),t.flip),fe.set(a,o)),o},me=(e,t,n=0)=>{let r=h(e);return le(e,t,n).fifths+i-(r?ae(r):0)},H=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.measure}|${ce(e.staff,e.measure,e.onset)?.start??0}`;(H.get(t)??H.set(t,[]).get(t)).push(e)}let we=/* @__PURE__ */ new Map;for(let e of H.values()){let t=/* @__PURE__ */ new Map;for(let n of[...e].sort((e,t)=>e.onset-t.onset)){let e=`${n.pname}${n.oct}`;we.set(n,n.written??n.gestural??t.get(e)??Ce(n.pname,me(n.staff,n.measure,n.onset))),n.written!==null&&t.set(e,n.written)}}let De=/* @__PURE__ */ new Map;for(let e of l){let t=`${e.staff}|${e.layer}`;(De.get(t)??De.set(t,[]).get(t)).push(e)}let G=/* @__PURE__ */ new Map,Pe=e=>(e.octave+1)*12+be[ye.indexOf(e.step)]+e.alter;for(let e of De.values()){let t=new Map(e.map((e,t)=>[e.id,t])),n=e.map(e=>{let n=h(e.staff),r={step:e.pname,octave:e.oct,alter:we.get(e)??0},i=n?oe(r,n):r,o={...i,octave:i.octave+_(e.staff,e.id)},s=a.get(e.id);return{midi:Pe(o),source:o,key:V(e.staff,e.measure,e.onset),chord:e.chord,tiedFrom:s===void 0?void 0:t.get(s)}});if(!g(e[0].staff)){n.forEach((t,n)=>G.set(e[n],t.source));continue}de(n).forEach((t,n)=>G.set(e[n],t))}let Fe=new Map(l.map(e=>[e.id,e]));for(let e of l){let t=Fe.get(a.get(e.id)||``);t&&G.has(t)&&Pe(G.get(t))===Pe(G.get(e))&&G.set(e,G.get(t))}let Ie=/* @__PURE__ */ new Set,Le=(e,t,n)=>({...E(0),scale:ye.split(``).map(r=>({step:r,alter:Ce(r,me(e,t,n))}))});for(let e of H.values()){let t=e[0].staff;if(!y(t)&&!v(t))continue;let n=pe(e.map(e=>({pitch:{step:e.pname,octave:e.oct,alter:we.get(e)??0},onset:e.onset,key:Le(e.staff,e.measure,e.onset),tieEnd:e.tieEnd})));e.forEach((e,t)=>{e.written!==null&&!e.tieEnd&&!n[t]&&Ie.add(e)})}let Re=/* @__PURE__ */ new Map;for(let e of H.values()){let t=pe(e.map(e=>({pitch:G.get(e),onset:e.onset,key:V(e.staff,e.measure,e.onset),tieEnd:e.tieEnd,cautionary:e.cautionary||Ie.has(e)})));e.forEach((e,n)=>Re.set(e,t[n]))}let K=[];for(let e of l){let t=G.get(e),n=Re.get(e),i=Ee(Ee(e.tag,`accid`),`accid.ges`);i=W(W(i,`pname`,t.step.toLowerCase()),`oct`,String(t.octave));let a=Number(r(e.tag,`oct.ges`)??NaN);Number.isFinite(a)&&t.octave!==e.oct&&(i=W(i,`oct.ges`,String(a+t.octave-e.oct))),n||(i=W(i,`accid.ges`,Se(t.alter)));let o=e.accids.find(e=>r(e.attributes,`accid`)!==null)??e.accids[0],s=o?r(o.attributes,`xml:id`):null,c=o&&n?[`func`,`enclose`,`place`].map(e=>[e,r(o.attributes,e)]).filter(([,e])=>e!==null).map(([e,t])=>` ${e}="${t}"`).join(``):``,l=n?`<accid${s?` xml:id="${s}"`:``} accid="${xe(t.alter)}"${c}/>`:``;if(e.selfClosing)K.push({start:e.start,end:e.end,text:l?`${ke(i)}${l}</note>`:i});else{K.push({start:e.start,end:e.start+e.tag.length,text:i+l});for(let t of e.accids)K.push({start:t.start,end:t.end,text:``})}}for(let t of d){if(!g(t.staff)||t.nested||t.textEnd<=t.textStart)continue;let n=e.slice(t.textStart,t.textEnd),[,r,i,a]=/^(\s*)([\s\S]*?)(\s*)$/.exec(n),o=h(t.staff),s=P(o?he(i,[o]):i,V(t.staff,Math.max(0,t.measure)));s!==i&&K.push({start:t.textStart,end:t.textEnd,text:r+s+a})}for(let t of f){let n=t.onset>0&&t.key&&!p.has(t.staff)?Ae(V(t.staff,t.measure,t.onset)):``,i=r(e.slice(t.start,t.end),`xml:id`);n&&i&&(n=W(n,`xml:id`,i)),K.push({start:t.start,end:t.end,text:n})}for(let e of o){if(!e.initial&&!e.content){K.push({start:e.start,end:e.end,text:``});continue}K.push(...e.tagEdits);for(let t of e.keyRanges)K.push({start:t.start,end:t.end,text:``})}let ze=x.filter(e=>!p.has(e));K.push(...b);for(let e of s){if(p.has(e.n)||!ze.includes(e.n))continue;let t=Ae(V(e.n,0)),n=y(e.n),r=n?ve(Oe(e.tag),n):Oe(e.tag),i=n&&!e.clef&&!/\sclef\.shape\s*=/.test(e.tag)?_e(n,null):``;if(n&&e.clef&&K.push({start:e.clef.start,end:e.clef.end,text:_e(n,e.clef.id)}),e.selfClosing){let n=K.findIndex(t=>t.start===e.start&&t.end===e.end);n>=0&&K.splice(n,1),K.push({start:e.start,end:e.end,text:`${ke(r)}${i}${t}</staffDef>`})}else{let n=e.clefEnd??e.start+e.tag.length;K.push({start:n,end:n,text:i+t})}}for(let e=1;e<ne;e++){let t=ze.filter(t=>{let n=V(t,e-1,1/0),r=V(t,e);return n.fifths!==r.fifths||n.mode!==r.mode});if(!t.length)continue;let n=c[e];K.push({start:n,end:n,text:`<scoreDef><staffGrp>${t.map(t=>`<staffDef n="${t}">${Ae(V(t,e))}</staffDef>`).join(``)}</staffGrp></scoreDef>`})}if(!K.length)return e;K.sort((e,t)=>e.start-t.start||e.end-t.end);let Be=[],q=0;for(let t of K)t.start<q||(Be.push(e.slice(q,t.start),t.text),q=t.end);return Be.push(e.slice(q)),Be.join(``)}const Fe={id:`violin`,provenance:`ported`,source:`violintab instruments.ts: VIOLIN_FINGER_MIDI`,strings:[`E`,`A`,`D`,`G`],openMidi:[76,69,62,55],fingers:[{1:[78,80,81,83],2:[79,81,83,85],3:[81,83,85,86],4:[83,85,86,88]},{1:[71,73,74,76],2:[72,74,76,77],3:[74,76,77,79],4:[76,77,79,81]},{1:[64,66,67,69],2:[65,67,69,71],3:[67,69,71,72],4:[69,71,72,74]},{1:[57,59,60,62],2:[58,60,62,64],3:[60,62,64,65],4:[62,64,66,67]}]},Ie=[.5,1,1.5,2,3,3.5,4,4.5];function Le(e){return Object.fromEntries(Ie.map((t,n)=>{let r=e+n+1;return[t,[r,r+1,r+2,r+3]]}))}const Re={id:`cello`,provenance:`ported`,source:`violintab CELLO_FINGER_MIDI; Davidoff key correction`,strings:[`A`,`D`,`G`,`C`],openMidi:[57,50,43,36],fingers:[57,50,43,36].map(Le)},K={violin:Fe,viola:{id:`viola`,provenance:`derived`,source:`violin transposed -7 semitones`,strings:[`A`,`D`,`G`,`C`],openMidi:[69,62,55,48],fingers:Fe.fingers.map(e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[t[0]-7,t[1]-7,t[2]-7,t[3]-7]])))},cello:Re,"double-bass":{id:`double-bass`,provenance:`derived`,source:`cello offsets on bass tuning; provisional four-finger analogy`,strings:[`G`,`D`,`A`,`E`],openMidi:[43,38,33,28],fingers:[43,38,33,28].map(Le)}},ze={C:0,D:2,E:4,F:5,G:7,A:9,B:11};function Be(e,t,n){if(!Number.isInteger(t)||t<0||t>127)return[];let r=[];e.openMidi.forEach((n,i)=>{let a=i+1;t===n&&r.push({string:a,position:0,finger:0,modifier:``});for(let[o,s]of Object.entries(e.fingers[i]??{}))s.forEach((e,i)=>{let s=t-e;t>n&&Math.abs(s)<=1&&r.push({string:a,position:Number(o),finger:i+1,modifier:s===-1?`L`:s===1?`H`:``})})});let i=e.id===`cello`||e.id===`double-bass`,a=(n&&(ze[n.step]+n.alter+12)%12==t%12?n.alter>0:[1,3,8].includes(t%12))?`H`:`L`,o=e=>Number(e.modifier!==``),s=e=>i&&e.position===.5?1.25:e.position;return r.sort((e,t)=>Number(t.finger===0)-Number(e.finger===0)||(i?o(e)-o(t):0)||s(e)-s(t)||o(e)-o(t)||e.string-t.string||Number(e.modifier!==a)-Number(t.modifier!==a)||e.finger-t.finger)}const q=(e,t)=>e.missed-t.missed||e.cost-t.cost;function Ve(e,t){let n=/* @__PURE__ */ new Map;for(let e of t){let t=n.get(e.onset);t?t.push(e):n.set(e.onset,[e])}let r=[{cost:0,missed:0,position:0,held:[],labels:[]}],i=[...n].sort(([e],[t])=>e-t);for(let[t,[n,a]]of i.entries()){let o=i[t+1],s=/* @__PURE__ */ new Map,c=e=>{let t=o?e.held.filter(e=>e.until>o[0]||e.until===o[0]&&o[1].some(t=>t.tieStop&&t.midi===e.midi)):[],n=JSON.stringify([e.position,t]),r=s.get(n);(!r||q(e,r)<0)&&s.set(n,e)},l=a.map(t=>t.fixed?[t.fixed]:t.midi===null?[]:Be(e,t.midi,t.spelling));for(let e of r){let t=a.map(t=>t.tieStop?e.held.find(e=>e.midi===t.midi&&e.until>=n):void 0),r=e.held.filter(e=>e.until>n),i=l.map((e,n)=>!a[n].fixed&&t[n]?[t[n].fingering]:e),o=!1,s=(t,l,u)=>{if(t===a.length){o=!0;let t=l.find(e=>e.position)?.position??e.position,i=e.position&&t!==e.position?4+2*Math.abs(t-e.position):0,s=[...r];l.forEach((e,t)=>{a[t].midi!==null&&s.push({midi:a[t].midi,until:n+a[t].duration,fingering:e})}),c({cost:e.cost+u+i,missed:e.missed,position:t,held:s,previous:e,labels:l.map((e,t)=>[a[t].id,e])});return}i[t].forEach((e,n)=>{[...r,...l.map((e,t)=>({midi:a[t].midi,fingering:e}))].some(n=>n.fingering.string===e.string&&n.midi!==a[t].midi||e.position&&n.fingering.position&&e.position!==n.fingering.position)||s(t+1,[...l,e],u+n)})};new Set(a.map(e=>e.midi)).size<=4&&s(0,[],0),o||c({...e,held:r,previous:e,labels:[],missed:e.missed+a.length})}r=[...s.values()].sort(q).slice(0,64)}let a=/* @__PURE__ */ new Map,o=[];for(let e=r[0];e;e=e.previous)o.push(e);for(let e of o.reverse())for(let[t,n]of e.labels)a.set(t,n);return a}const He={c:0,d:2,e:4,f:5,g:7,a:9,b:11},Ue={s:1,f:-1,n:0,x:2,ss:2,ff:-2,ts:3,tf:-3,xs:3,sx:3,nf:-1,ns:1,su:1,sd:1,fu:-1,fd:-1,nu:0,nd:0},We={maxima:32,long:16,breve:8,1:4,2:2,4:1,8:.5,16:.25,32:.125,64:.0625,128:.03125,256:.015625},Ge=/* @__PURE__ */ new Set([`rest`,`space`,`mRest`,`mSpace`,`multiRest`]),Ke=/* @__PURE__ */ new Set([`beam`,`tuplet`]),qe=/* @__PURE__ */ new Set([`bTrem`,`fTrem`,`ligature`,`choice`,`orig`,`reg`,`sic`,`corr`,`supplied`,`add`,`subst`]),Je=/* @__PURE__ */ new Set([`harm`,`tempo`,`dir`,`repeatMark`,`fermata`]),Ye=/* @__PURE__ */ new Set([`mRpt`,`mRpt2`,`multiRpt`]),Xe=/* @__PURE__ */ new Set([...Ye,`beatRpt`,`halfmRpt`]),Ze=[[`c`],[`c`,`s`],[`d`],[`e`,`f`],[`e`],[`f`],[`f`,`s`],[`g`],[`a`,`f`],[`a`],[`b`,`f`],[`b`]],Qe=e=>e.replace(/[&<>"]/g,``),J=(e,t)=>e?` xml:id="${Qe(e)}${t}"`:``;function $e(e,t,n){let i=Number(r(e,`dur.ppq`));if(t&&Number.isFinite(i)&&r(e,`dur.ppq`)!==null)return i/t;let a=We[r(e,`dur`)||``];return a===void 0?0:a*(2-1/2**(Number(r(e,`dots`))||0))*n.reduce((e,t)=>e*t,1)}const et=(e,t,n)=>{let i=(r(e,`pname`)||``).toLowerCase(),a=Number(r(e,`oct`));if(!(i in He)||!Number.isFinite(a)||r(e,`oct`)===null)return null;let o=r(e,`accid.ges`)??t.gestural??r(e,`accid`)??t.written??``;return 12*(a+1)+He[i]+(Ue[o]??0)+n},tt=e=>typeof e==`number`&&Number.isFinite(e)?Math.max(0,Math.min(24,Math.round(e))):0,nt=e=>Array.isArray(e)&&e.length>=1&&e.length<=31&&e.every(e=>Number.isInteger(e)&&e>=0&&e<=127)?e:F,rt=e=>{if(!e.size)return null;let t=Math.max(...e.keys()),n=Array.from({length:t},(n,r)=>e.get(t-r));return n.every(e=>e!==void 0)?n:null};function it(e,t){return`<tuning>${[...e].reverse().map((e,n)=>{let r=e+t,[i,a]=Ze[(r%12+12)%12];return`<course n="${n+1}" pname="${i}" oct="${Math.floor(r/12)-1}"${a?` accid="${a}"`:``}/>`}).join(``)}</tuning>`}function at(e,t){let n=new Set(t.generate),i=t.refret??{},a=new Set(t.sounding??[]),o=t.switched??{},s=/* @__PURE__ */ new Set([...n,...Object.keys(i)]),c=new Map([...s].map(e=>[e,[]])),l=/* @__PURE__ */ new Map,d=/* @__PURE__ */ new Set,f=/* @__PURE__ */ new Set,p=/* @__PURE__ */ new Set,m=4,h=4,g=4,_=(e,t)=>{let n=Number(r(e,`${t}count`)),i=Number(r(e,`${t}unit`));n>0&&(h=n),i>0&&(g=i),m=h*4/g},v=0,y=0,b=!1,x=!1,S=null,C=0,w=null,T=0,E=[],D=null,O=!1,k=null,A=0,j=[{onset:0,sig:`0`}],M=[],N=(e,t)=>{e!==null&&j.push({staff:t,onset:v+(x?T:0),sig:e})},P=(e,t)=>{let n=Number.parseInt(t)||0;return(t.endsWith(`f`)?`beadgcf`:`fcgdaeb`).slice(0,n).includes(e)?t.endsWith(`f`)?`f`:`s`:`n`},F=()=>{if(!k)return;let e=l.get(S);if(t.fingers?.[S]&&M.push({rec:k.rec,staff:S,onset:k.event.onset,measure:v,semi:e?.semi??0,attributes:k.attributes,written:k.written,gestural:k.gestural}),S in i){let t=Number(r(k.attributes,`tab.course`)),n=Number(r(k.attributes,`tab.fret`)),a=e?.courses?.get(t);k.rec.midi=a!==void 0&&Number.isInteger(n)&&n>=0&&r(k.attributes,`tab.fret`)!==null?a+n+i[S]:null}else{k.rec.midi=et(k.attributes,k,e?.semi??0);let t=(r(k.attributes,`pname`)??``).toUpperCase(),n=Ue[r(k.attributes,`accid.ges`)??k.gestural??r(k.attributes,`accid`)??k.written??`n`]??0;t.toLowerCase()in He&&Math.abs(n)<=2&&(k.rec.spelling={step:t,alter:n})}k=null};u(e,({closing:e,name:i,attributes:u,selfClosing:h})=>{if(e){if(i===`staffDef`){w?.courses.size&&(w.entry.courses=w.courses),w=null;return}if(i===`measure`){x=!1,v+=y>0&&!b?y:Math.max(y,m);return}if(!S)return;if(A){A--;return}i===`note`?F():i===`chord`||i===`tabGrp`?(D&&!O&&(T+=D.dur),D=null):i===`tuplet`?E.pop():i===`layer`?y=Math.max(y,T):i===`staff`&&--C===0&&(S=null);return}if(i===`scoreDef`){N(r(u,`keysig`)??r(u,`key.sig`)),_(u,`meter.`);return}if(i===`keySig`){N(r(u,`sig`),S??w?.n);return}if(i===`meterSig`){_(u,``);return}if(i===`staffDef`){_(u,`meter.`);let e=r(u,`n`)||``;if(s.has(e)){N(r(u,`keysig`)??r(u,`key.sig`),e);let t=l.get(e),n=Number(r(u,`ppq`)),i=r(u,`trans.semi`),s={ppq:n>0?n:t?.ppq,semi:e in o?o[e]:a.has(e)?0:i===null?t?.semi??0:Number(i)||0,courses:t?.courses};l.set(e,s),h||(w={n:e,entry:s,courses:/* @__PURE__ */ new Map})}return}if(i===`course`&&w){let e=Number(r(u,`n`)),t=et(u,{},0);e>=1&&t!==null&&w.courses.set(e,t);return}if(i===`measure`){x=!0,y=0,b=!1;return}if(i===`tie`&&x){let e=(r(u,`startid`)||``).replace(/^#/,``),t=(r(u,`endid`)||``).replace(/^#/,``);e&&t&&(d.add(e),f.add(t));return}if(i===`staff`&&!S){let e=r(u,`n`)||``;s.has(e)&&!h&&(S=e,C=1);return}if(!S)return;if(A){h||A++;return}if(!h&&i===`staff`){C++;return}let j=c.get(S),M=l.get(S)?.ppq;if(i===`layer`){T=0;return}if(i===`graceGrp`){h||(A=1);return}if(i===`tuplet`){let e=Number(r(u,`num`))||1,t=Number(r(u,`numbase`))||1;h||E.push(t/e);return}if(i===`chord`||i===`tabGrp`){if(O=r(u,`grace`)!==null,O){h||(A=1);return}D={onset:v+T,dur:$e(u,M,E),notes:[]},j.push(D);let e=r(u,`xml:id`);e&&n.has(S)&&p.add(e),h&&(T+=D.dur,D=null);return}if(i===`note`){if(!D&&r(u,`grace`)!==null){h||(A=1);return}let e=D;e||(e={onset:v+T,dur:$e(u,M,E),notes:[]},j.push(e),T+=e.dur);let i=r(u,`xml:id`)||``;i&&n.has(S)&&p.add(i);let a=r(u,`tie`)||``,o=Number(r(u,`tab.course`)),s=Number(r(u,`tab.fret`)),c=Number.isInteger(s)&&r(u,`tab.fret`)!==null,l={id:i,midi:null,fixed:t.fixed&&n.has(S)&&!t.unfixed?.includes(S)&&Number.isInteger(o)&&o>=1?c?{string:o,fret:s}:{string:o}:void 0,continuation:/[mt]/.test(a),tieStart:/[im]/.test(a),dur:e.dur};e.notes.push(l),k={rec:l,attributes:u,event:e,inChord:!!D},h&&F();return}if(i===`accid`&&k){let e=r(u,`accid`),t=r(u,`accid.ges`);e!==null&&(k.written=e),t!==null&&(k.gestural=t);return}(Ge.has(i)||Xe.has(i))&&(i===`mRest`||i===`mSpace`||i===`multiRest`||Ye.has(i)?b=!0:T+=i===`halfmRpt`?m/2:i===`beatRpt`?4/g:$e(u,M,E))});let I=/* @__PURE__ */ new Map;for(let e of M.sort((e,t)=>e.onset-t.onset)){let t=0;j.forEach((n,r)=>{(!n.staff||n.staff===e.staff)&&n.onset<=e.onset&&(n.onset>j[t].onset||n.onset===j[t].onset&&(Number(!!n.staff)>Number(!!j[t].staff)||!!n.staff==!!j[t].staff&&r>t))&&(t=r)});let n=r(e.attributes,`pname`)??``,i=`${e.staff}:${n}:${r(e.attributes,`oct`)}`,a=r(e.attributes,`accid.ges`)??e.gestural??r(e.attributes,`accid`)??e.written,o=I.get(i),s=a??(o?.measure===e.measure&&o.key===t?o.value:P(n,j[t].sig));a!=null&&I.set(i,{value:a,measure:e.measure,key:t}),e.rec.midi=et(e.attributes,{...e,gestural:s},e.semi);let c=Ue[s]??0;n in He&&Math.abs(c)<=2&&(e.rec.spelling={step:n.toUpperCase(),alter:c})}return{staves:c,tieStarts:d,tieEnds:f,info:l,ids:p}}function ot(e,t,n,r,i,a){let o=/* @__PURE__ */ new Map,s=tt(i.capo);for(let[c,l]of e){if(i.fingers?.[c])continue;let e=nt(i.tunings?.[c]??i.tuning),u=[],d=[];for(let e of l)for(let r of e.notes)u.push(r),d.push({onset:e.onset,duration:r.dur,pitch:r.midi,tieStart:r.tieStart||t.has(r.id),tieStop:r.continuation||n.has(r.id),fixed:a?.get(r.id)??r.fixed});let f=c in(i.refret??{})&&r.get(c)?.courses?rt(r.get(c).courses):null;ee(d,f?{tuning:f,capo:0}:{tuning:e,capo:s}).forEach(({result:e,continuation:t},n)=>{let r=u[n];if(r.continuation=t,e){if(t){r.held=e;return}o.set(r.id,e),a&&r.id&&`string`in e&&!a.has(r.id)&&a.set(r.id,{string:e.string,fret:e.fret})}})}return o}const st=e=>[`dur`,`dots`,`dur.ppq`].map(t=>{let n=r(e,t);return n===null?``:` ${t}="${n}"`}).join(``),ct=(e,t)=>t&&`string`in t?`<note${J(e,``)} tab.course="${t.string}" tab.fret="${t.fret}"/>`:``,lt=e=>e&&`string`in e?`<note tab.course="${e.string}" tab.fret="${e.fret}" visible="false"/>`:``,ut=(e,t,n)=>{let r=RegExp(`(\\s${t.replace(`.`,`\\.`)}\\s*=\\s*)(?:"[^"]*"|'[^']*')`);return r.test(e)?e.replace(r,`$1"${n}"`):e.replace(/\s*(\/?)>$/,` ${t}="${n}"$1>`)};function dt(e,t,n){let i=new Set(t.generate),a=t.refret??{},o=t.retarget,s=Object.keys(o).length>0;if(!i.size&&!s&&!Object.keys(a).length)return e;let c=i.size||Object.keys(a).length,{staves:l,tieStarts:d,tieEnds:f,info:p,ids:m}=c?at(e,t):{staves:/* @__PURE__ */ new Map,tieStarts:/* @__PURE__ */ new Set,tieEnds:/* @__PURE__ */ new Set,info:/* @__PURE__ */ new Map,ids:/* @__PURE__ */ new Set},h=c?ot(l,d,f,p,t,n):/* @__PURE__ */ new Map,g=/* @__PURE__ */ new Map;for(let[e,n]of l)for(let r of n)for(let n of r.notes)(n.continuation||t.fingers?.[e]&&f.has(n.id))&&g.set(n.id,n.held);let _=/* @__PURE__ */ new Map;for(let[e,r]of l){let i=t.fingers?.[e];if(!i)continue;let a=Ve(K[i],r.flatMap(e=>e.notes.map(t=>({id:t.id,onset:e.onset,duration:t.dur,midi:t.midi,spelling:t.spelling,tieStop:t.continuation||f.has(t.id),fixed:n?.get(t.id)?.finger}))));for(let[e,t]of a){_.set(e,t),n?.set(e,{string:t.string,fret:t.finger,finger:t});let r={string:t.string,fret:t.modifier?44:t.finger};h.set(e,r),g.has(e)&&g.set(e,r)}}let v=(e,t)=>{let n=_.get(e),r=ct(e?`${e}${t}`:``,h.get(e));return n?r.replace(`/>`,` type="finger-tab-${n.modifier}${n.finger}-p${String(n.position).replace(`.`,`-`)}"/>`):r},y=tt(t.capo),b=new Set([...i].map(e=>String(100+Number(e)))),x=[],S=0,C=-1,w=!1,T=0,E=null,D=null,O=``,k=[],A=0,j=/* @__PURE__ */ new Map,M=e=>e===.5?`pos. ½`:`${[``,`I`,`II`,`III`,`IV`][Math.floor(e)]??``}${e%1?`½`:``} pos.`,N=0,P=0,F=null,I=-1,L=(e,n,r)=>{let i=t.fingers?.[e],a=i?[...K[i].openMidi].reverse():nt(t.tunings?.[e]??t.tuning),o=it(a,t.fingers?.[e]?0:y),s=p.get(e)?.ppq;return`<staffDef${J(n,`-tab`)} n="${100+Number(e)}" lines="${a.length}" notationtype="tab.guitar" keysig="0"${s?` ppq="${s}"`:``}><clef shape="TAB" line="${a.length-1}"/>${o}${r}</staffDef>`};return u(e,({closing:n,name:c,attributes:l,selfClosing:u,index:d,length:f})=>{x.push(e.slice(S,d)),S=d+f;let p=e.slice(d,d+f);if(n?T--:u||T++,!n&&Je.has(c)&&s){let e=r(l,`staff`);if(e!==null){let t=e.split(/\s+/).filter(Boolean).map(e=>o[e]??e).join(` `);if(t!==e){p=ut(p,`staff`,t);let e=r(l,`startid`)?.replace(/^#/,``)??``;e&&m.has(e)&&t.split(` `).every(e=>b.has(e))&&(p=ut(p,`startid`,`#${e}-tab`))}}}if(I<0&&c===`staff`&&!n&&!u&&(r(l,`n`)||``)in a)I=T;else if(I>=0&&n&&c===`staff`&&T===I-1)I=-1;else if(I>=0&&c===`note`&&!n){let e=r(l,`xml:id`)||``,t=g.has(e)?g.get(e):h.get(e);t&&`string`in t?p=ut(ut(p,`tab.course`,String(t.string)),`tab.fret`,String(t.fret)):t&&(p=ut(p,`visible`,`false`))}if(x.push(p),c===`scoreDef`&&!n&&!w&&C<0){u?w=!0:C=T;return}if(c===`scoreDef`&&n&&C>=0&&T===C-1){C=-1,w=!0;return}if(C>=0){if(c===`staffDef`&&!n){let e=r(l,`n`)||``;if(!i.has(e))return;let t=r(l,`xml:id`)||``;if(u){x.push(L(e,t,``));return}E={n:e,id:t,meterSig:``,depth:T};return}if(E&&c===`meterSig`&&!n){E.meterSig=p.replace(/\sxml:id\s*=\s*"[^"]*"/,``).replace(/\s*\/?>$/,`/>`);return}E&&c===`staffDef`&&n&&T===E.depth-1&&(x.push(L(E.n,E.id,E.meterSig)),E=null);return}if(!D){if(c===`staff`&&!n&&!u&&i.has(r(l,`n`)||``)){let e=r(l,`n`);O=e,k=[],A=0,D=[`<staff${J(r(l,`xml:id`)||``,`-tab`)} n="${100+Number(e)}">`],N=T,P=0,F=null}return}if(n&&c===`staff`&&T===N-1){D.push(`</staff>`),x.push(D.join(``),...k),D=null;return}if(P){n?P--:u||P++;return}let y=r(l,`xml:id`)||``;if(!n&&c===`note`&&t.fingers?.[O]&&r(l,`grace`)===null&&_.has(y)&&!g.has(y)){let e=_.get(y)?.position||j.get(O)||0;if(e&&e!==A){let t=!A&&j.get(O)===e,n=` startid="#${Qe(y)}-tab"`;n&&k.push(`<dir staff="${100+Number(O)}"${n} place="above" type="finger-position finger-staff-${100+Number(O)}${t?` finger-reassert`:``}"><rend fontsize="30%">${M(e)}</rend></dir>`),A=e,j.set(O,e)}}if(n){c===`layer`||Ke.has(c)?D.push(`</${c}>`):c===`chord`&&F&&(F.frets||D.push(lt(F.held)),D.push(`</tabGrp>`),F=null);return}if(c===`layer`||Ke.has(c)){let e=[`n`,`num`,`numbase`,`num.visible`,`bracket.visible`,`num.format`,`bracket.place`,`num.place`].map(e=>{let t=r(l,e);return t===null?``:` ${e}="${t}"`}).join(``);D.push(`<${c}${J(y,`-tab`)}${e}${u?`/>`:`>`}`);return}if(!qe.has(c)){if(c===`chord`){if(r(l,`grace`)!==null){u||(P=1);return}D.push(`<tabGrp${J(y,`-tab`)}${st(l)}><tabDurSym/>`),u?D.push(`</tabGrp>`):F={frets:0};return}if(c===`note`){if(u||(P=1),F){if(g.has(y)){F.held||(F.held=g.get(y));return}let e=v(y,`-tab`);e&&F.frets++,D.push(e);return}if(r(l,`grace`)!==null)return;D.push(`<tabGrp${J(y,`-tab`)}${st(l)}><tabDurSym/>${g.has(y)?lt(g.get(y)):v(y,`-tabn`)}</tabGrp>`);return}if(Ge.has(c)||Xe.has(c)){u||(P=1);let e=Xe.has(c)?l.replace(/\s+xml:id\s*=\s*(?:"[^"]*"|'[^']*')/,``).trimEnd():st(l);D.push(`<${c}${J(y,`-tab`)}${e}/>`);return}u||(P=1)}}),x.push(e.slice(S)),x.join(``)}const ft=e=>`reader-m${e+1}`,pt=`(?:[^>"']|"[^"]*"|'[^']*')*`,Y=RegExp(`<!--[\\s\\S]*?-->|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|<\\?[\\s\\S]*?\\?>|<(/?)(part|measure|attributes|lyric|slur|wedge|octave-shift|pedal|bracket|dashes|tuplet|glissando|slide|ending|beam)(?=[\\s/>])(${pt})>`,`g`),mt=/* @__PURE__ */ new Map;function ht(e,t){if(!e.includes(t))return;let n=mt.get(t);n||mt.set(t,n=RegExp(`\\s${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`));let r=n.exec(e);return r?r[1]??r[2]:void 0}const gt=/* @__PURE__ */ new Set([`start`,`up`,`down`,`crescendo`,`diminuendo`]);function _t(e){let t=/<score-partwise[\s>]/.exec(e),n=e.indexOf(`</part-list>`);if(!t||n<0)return;let r=[],i=[],a=/* @__PURE__ */ new Map,o=``,s,c=-1,l=-1,u=0,d=/* @__PURE__ */ new Set,f=0,p=-1;Y.lastIndex=n;for(let t=Y.exec(e);t;t=Y.exec(e)){let n=t[2];if(!n)continue;let m=t[1]===`/`,h=t[3]||``,g=h.endsWith(`/`);if(n===`part`){if(m){if(!s||c>=0)return;s=void 0,p=t.index+t[0].length}else{if(s||g)return;r.length||(o=e.slice(0,t.index)),s={open:t[0],measures:[],attributes:[]},r.push(s),l=-1}continue}if(!s)continue;if(n===`measure`){if(m){if(c<0)return;s.measures.push(c,t.index+t[0].length),c=-1,u&&(f=Math.max(f,Math.ceil(u/Math.max(1,d.size))))}else{if(c>=0)return;l++,u=0,d=/* @__PURE__ */ new Set,g?s.measures.push(t.index,t.index+t[0].length):c=t.index}continue}if(c<0||m)continue;if(n===`attributes`){if(g)continue;let n=e.indexOf(`</attributes>`,t.index);if(n<0)return;let r=n+13;s.attributes.push({measure:l,block:e.slice(t.index,r),leading:!/<note(?=[\s/>])/.test(e.slice(c,t.index))}),Y.lastIndex=r;continue}if(n===`lyric`){u++,d.add(ht(h,`number`)||`1`);continue}let _;if(n===`beam`){let t=/^\s*(begin|end)\b/.exec(e.slice(Y.lastIndex,Y.lastIndex+16))?.[1];_=t===`begin`?`open`:t===`end`?`close`:void 0}else{let e=ht(h,`type`)||``;_=gt.has(e)?`open`:e===`stop`||n===`ending`&&e===`discontinue`?`close`:void 0}if(!_)continue;let v=`${r.length}:${n}:${n===`ending`?``:ht(h,`number`)||`1`}`;if(_===`open`)a.set(v,l);else{let e=a.get(v);e!==void 0&&(a.delete(v),l>e&&i.push({start:e,end:l}))}}if(!r.length||s||c>=0)return;let m=r[0].measures.length/2;if(m)return i.sort((e,t)=>e.start-t.start),{text:e,head:o,tail:e.slice(p),parts:r,measureCount:m,lyricDensity:f,spans:i}}const vt=[`divisions`,`key`,`time`,`staves`,`part-symbol`,`instruments`,`clef`,`staff-details`,`transpose`,`for-part`],yt=RegExp(`<(${vt.join(`|`)})(?=[\\s/>])(${pt})>`,`g`);function bt(e,t){let n=/* @__PURE__ */ new Map;for(let{measure:r,block:i}of e.attributes){if(r>=t)break;yt.lastIndex=0;for(let e=yt.exec(i);e;e=yt.exec(i)){let[t,r,a]=e,o=t;if(!a.endsWith(`/`)){let t=i.indexOf(`</${r}>`,yt.lastIndex);if(t<0)continue;o=i.slice(e.index,t+r.length+3),yt.lastIndex=t+r.length+3}let s=ht(a,`number`)??(r===`clef`?`1`:void 0);if(s===void 0)for(let e of[...n.keys()])e.startsWith(`${r}#`)&&n.delete(e);n.set(`${r}#${s??``}`,o)}}for(let{measure:r,block:i,leading:a}of e.attributes)if(r===t&&a)for(let[,e]of i.matchAll(/<key(?=[\s/>])((?:[^>"']|"[^"]*"|'[^']*')*)>/g)){let t=ht(e,`number`);for(let e of[...n.keys()])e.startsWith(`key#`)&&(t===void 0||e===`key#${t}`||e===`key#`)&&n.delete(e)}if(!n.size)return``;let r=[];for(let e of vt)for(let[t,i]of n)t.startsWith(`${e}#`)&&r.push(e===`time`?i.replace(/^<time\b((?:[^>"']|"[^"]*"|'[^']*')*)/,(e,t)=>`<time print-object="no"${t.replace(/\sprint-object\s*=\s*(?:"[^"]*"|'[^']*')/,``)}`):i);return`<attributes>${r.join(``)}</attributes>`}function xt(e,t,n,r){let i=t.measures[n*2],a=t.measures[n*2+1],o=e.text.slice(i,a),s=/^<measure\b(?:[^>"']|"[^"]*"|'[^']*')*>/.exec(o)[0].length,c=o.slice(0,s),l=` id="${ft(n)}"`;return c=/\sid\s*=\s*(?:"[^"]*"|'[^']*')/.test(c)?c.replace(/\sid\s*=\s*(?:"[^"]*"|'[^']*')/,l):c.replace(/\s*(\/?)>$/,`${l}$1>`),c.endsWith(`/>`)?r?`${c.slice(0,-2)}>${r}</measure>`:c:c+r+o.slice(s)}function St(e,t,n){let r=[t>0?e.head.replace(/<credit\b[\s\S]*?<\/credit>/g,``):e.head];for(let i of e.parts){r.push(i.open);let a=Math.min(n,i.measures.length/2);for(let n=t;n<a;n++)r.push(xt(e,i,n,n===t&&t>0?bt(i,t):``));r.push(`</part>`)}return r.push(e.tail),r.join(``)}function Ct(e,t){let n=t-1;for(let r of e.spans){if(r.start>=t)break;r.end>=t&&(n=Math.min(n,r.start))}return Math.max(0,Math.min(t,16,t-n))}function wt(e,t){let n=t;for(let r of e.spans){if(r.start>=t)break;r.end>=t&&(n=Math.max(n,r.end))}return Math.max(0,Math.min(e.measureCount-t,16,n-t+1))}function Tt(e,t,n,r,i){let a=e.measureCount;if(n<=0)return{from:0,to:a,firstSystem:0,endSystem:1,firstPage:1};let o=Math.ceil(a/n),s=Math.max(1,Math.floor(i/Math.max(1,r*n))),c=Math.floor(Math.max(0,Math.min(o-1,t))/s)*s,l=Math.min(o,c+s),u=c*n,d=Math.min(a,l*n),f=Ct(e,u),p=d<a?wt(e,d):0,m=u-f,h=f?Math.ceil(u/n)-Math.floor(m/n)+1:1;return{from:m,to:d+p,firstSystem:c,endSystem:l,firstPage:h}}const Et=[`breaks`,`transpose`,`transposeToSoundingPitch`,`xmlIdChecksum`];let Dt,Ot,kt;function At(){return Ot??=(async()=>{if(!Dt)throw Error(`The notation renderer was not told where to load Verovio from.`);let{module:e,toolkit:t}=Dt;try{let[n,r]=await Promise.all([import(
2
+ /* @vite-ignore */
3
+ e),import(
4
+ /* @vite-ignore */
5
+ t)]);if(typeof n.default!=`function`||typeof r.VerovioToolkit!=`function`||typeof r.enableLogToBuffer!=`function`)throw Error(`not a compatible Verovio build`);return kt={createModule:n.default,Toolkit:r.VerovioToolkit,enableLogToBuffer:r.enableLogToBuffer}}catch(n){throw Ot=void 0,new Lt(`Could not load Verovio from ${e} and ${t}: ${n instanceof Error?n.message:String(n)}`,void 0)}})()}let X,jt;function Mt(){if(X)return X;let e=At().then(e=>e.createModule()).then(e=>(kt.enableLogToBuffer(1,e),jt=e,e)).catch(t=>{throw X===e&&(X=void 0),t});return X=e}const Nt=async()=>{let e=await Mt();return new kt.Toolkit(e)};let Pt,Ft,Z;const Q=/* @__PURE__ */ new Map,It=[];var Lt=class extends Error{code;constructor(e,t){super(e),this.code=t}};function Rt(e){for(let e of[Pt,Ft])try{e?.destroy()}catch{}Pt=Ft=void 0,Z=void 0,e&&(X=void 0,jt=void 0)}async function zt(e){return e===`main`?Pt??=await Nt():Ft??=await Nt()}function Bt(){let e=jt;return e?.HEAPU8?.length??e?.wasmMemory?.buffer.byteLength}function Vt(e){let t=Q.get(e);if(!t)throw new Lt(`The score is no longer loaded in the renderer.`,`missing`);return Q.delete(e),Q.set(e,t),t}function $(e,t,n){if(e.resetOptions(),e.setOptions(n),!e.loadData(t))throw Error(`Verovio could not import this score.`)}const Ht={breaks:`none`,inputFrom:`auto`,xmlIdChecksum:!0};async function Ut(e){let t=await Nt();try{return $(t,e,Ht),t.getMEI()}finally{try{It.push(t.getLog()||``)}catch{}try{t.destroy()}catch{}}}async function Wt(e,t,n){let r=`${t}-${n}`,i=e.meis.get(r);if(i!==void 0)return e.meis.delete(r),e.meis.set(r,i),i;for(i=await Ut(St(e.index,t,n)),e.meis.set(r,i);e.meis.size>8;)e.meis.delete(e.meis.keys().next().value);return i}async function Gt(e,t){let n=await Nt();try{return $(n,e,{breaks:`none`,xmlIdChecksum:!0,...t}),n.getMEI()}finally{try{It.push(n.getLog()||``)}catch{}try{n.destroy()}catch{}}}const Kt=(e,t,n=0)=>G(e,t,Gt,n);async function qt(e,t){if(!t)return e.mei;let n=JSON.stringify(t);return e.spelled?.key!==n&&(e.spelled={key:n,mei:await Kt(e.mei,t)}),e.spelled.mei}async function Jt(e,t){let n=await qt(e,t.spelling);if(!t.tab)return n;let r=JSON.stringify([t.spelling??null,t.tab]);return e.tabbed?.key!==r&&(e.tabbed={key:r,mei:dt(n,t.tab)}),e.tabbed.mei}async function Yt(e,t,n,r){let i=await Xt(e,t,n,r.spelling);if(!r.tab)return i;let a=JSON.stringify([r.spelling??null,r.tab]),o=e.frets.get(a);if(!o)for(o=/* @__PURE__ */ new Map,e.frets.set(a,o);e.frets.size>4;)e.frets.delete(e.frets.keys().next().value);return dt(i,r.tab,o)}async function Xt(e,t,n,r){let i=await Wt(e,t,n);if(!r||!Ne(i,r))return i;let a=`${t}-${n}|${JSON.stringify(r)}`,o=e.spelled.get(a);if(o!==void 0)return e.spelled.delete(a),e.spelled.set(a,o),o;for(o=await Kt(i,r,t),e.spelled.set(a,o);e.spelled.size>8;)e.spelled.delete(e.spelled.keys().next().value);return o}const Zt=(e,t)=>Object.fromEntries(t.map(t=>[t,e[t]??null]));async function Qt(e,t,n,r){let i=JSON.stringify([...e,t,Zt(n,Et)]),a=JSON.stringify(n),o=await zt(`main`);return Z?.loadKey===i?Z.optionsKey!==a&&(Z=void 0,o.resetOptions(),o.setOptions(n),o.redoLayout(),Z={loadKey:i,optionsKey:a}):(Z=void 0,$(o,await r(),n),Z={loadKey:i,optionsKey:a}),o}function $t(e,t,n){return Math.min(n,Math.max(t*2,rn(e,t,t*4)+1))}const en=/\s(?:endid|tstamp2)\s*=\s*"([^"]*)"/g,tn=/\sxml:id\s*=\s*"([^"]*)"/,nn=/<measure\b/g;function rn(e,t,n){let r=[];nn.lastIndex=0;for(let t=nn.exec(e);t&&r.length<=n;t=nn.exec(e))r.push(t.index);let i=/* @__PURE__ */ new Set,a=0;for(let n=0;n+1<r.length;n++){let o=e.slice(r[n],r[n+1]);if(n<t)for(let[,e]of o.matchAll(en)){let t=/^(\d+)m\+/.exec(e);t?a=Math.max(a,n+Number(t[1])):i.add(e.replace(/^#/,``))}else if(i.size)for(let e of o.match(/<[^>]*\sxml:id\s*=\s*"[^"]*"[^>]*>/g)||[]){let t=tn.exec(e)?.[1];t&&i.delete(t)&&(a=Math.max(a,n))}if(n>=t&&!i.size)break}return Math.min(n-1,a)}async function an(e,t,n){let r=new TextDecoder().decode(t),i=_t(r),a;if(i&&(n||i.parts.length*i.measureCount>=2400)){let{staffDefs:e,groups:t}=d(await Ut(St(i,0,1)));a={kind:`chunked`,index:i,info:{measureIds:Array.from({length:i.measureCount},(e,t)=>ft(t)),lyricDensity:i.lyricDensity,staffDefs:e,groups:t,chunked:!0},meis:/* @__PURE__ */ new Map,spelled:/* @__PURE__ */ new Map,frets:/* @__PURE__ */ new Map}}else{let e=await zt(`main`);Z=void 0,$(e,r,Ht);let t=e.getMEI();a={kind:`whole`,mei:t,info:d(t)}}for(Q.delete(e),Q.set(e,a);Q.size>12;)Q.delete(Q.keys().next().value);return a.info}function on(e,t,n){let r=h(e.renderToSVG(t)),i=/<svg\b[^>]*?\sid="([^"]+)"/.exec(r)?.[1];return!i||!/^[\w-]+$/.test(i)?r:r.replace(RegExp(`(?<=[#"-])${i}(?![\\w-])`,`g`),`${i}-c${n}`)}const sn=(e,t)=>{let n=new Set(t.hiddenStaves);return Math.max(1,e.staffDefs.filter(e=>!n.has(e.n)).length+(t.tab?.generate.length??0))};async function cn(e){if(e.kind===`import`)return an(e.revision,e.bytes,!!e.chunking?.force);if(e.kind===`release`)return Q.delete(e.revision),null;if(e.simulateOom)throw await new Promise(e=>setTimeout(e,300)),RangeError(`Cannot enlarge memory arrays (simulated).`);let t=Vt(e.revision);if(e.kind===`probe`){let n=await zt(`probe`);if(t.kind===`chunked`){let r=t.index.measureCount,i=Math.min(r,e.measures*2),a=e.measures>=r?r:i+wt(t.index,i);return $(n,m(await Yt(t,0,a,e.view),e.view),e.options),{svg:on(n,1,e.channel),pageCount:n.getPageCount(),measures:a}}let{info:r}=t,i=await Jt(t,e.view),a=e.measures>=r.measureIds.length?r.measureIds.length:$t(i,e.measures,r.measureIds.length);return $(n,m(i,e.view,a),e.options),{svg:on(n,1,e.channel),pageCount:n.getPageCount(),measures:a}}if(t.kind===`whole`){let n=await Qt([e.revision],e.view,e.options,async()=>m(await Jt(t,e.view),e.view)),r=n.getPageCount();return{pageCount:r,pages:e.pages.filter(e=>e>=1&&e<=r).map(t=>({page:t,svg:on(n,t,e.channel)}))}}let n=e.view.breakEvery,r=n>0?Math.ceil(t.index.measureCount/n):1,i=/* @__PURE__ */ new Map;for(let a of e.pages){if(a<1||a>r)continue;let o=Tt(t.index,a-1,n,sn(t.info,e.view),e.chunkBudget),s=`${o.from}-${o.to}`;(i.get(s)??i.set(s,{plan:o,pages:[]}).get(s)).pages.push(a)}let a=[];for(let{plan:n,pages:r}of i.values()){let i=await Qt([e.revision,n.from,n.to],e.view,e.options,async()=>m(await Yt(t,n.from,n.to,e.view),e.view,1/0,n.from)),o=i.getPageCount();for(let t of r){let r=n.firstPage+(t-1-n.firstSystem);if(r>o)throw Error(`A score chunk laid out ${o} pages where ${r} were expected.`);a.push({page:t,svg:on(i,r,e.channel)})}}return{pageCount:r,pages:a}}function ln(e){if(e instanceof Lt)return{message:e.message,code:e.code};let t=e instanceof Error?`${e.name}: ${e.message}`:String(e),n=globalThis.WebAssembly?.Exception;return n&&e instanceof n||/out of memory|OOM|Cannot enlarge memory|allocation failed|RangeError/i.test(t)?{message:`This score is too large for the notation renderer on this device (it ran out of memory).`,code:`oom`}:{message:e instanceof Error?e.message:String(e)}}function un(e){let t=It.splice(0).join(``);try{t+=(Pt??Ft)?.getLog()||``}catch{}if(!t)return;let n=t.split(`
6
+ `).filter(Boolean),r=n.filter(e=>e.startsWith(`[Error]`)).length;console.warn(`Verovio ${e}: ${n.length} log message${n.length===1?``:`s`} (${r} error${r===1?``:`s`})${n.length>12?`, first 12`:``}:\n${n.slice(0,12).join(`
7
+ `)}`)}const dn=[],fn=/* @__PURE__ */ new Map;let pn=!1;const mn=e=>self.postMessage(e);async function hn(){let e=dn.shift();if(!e){pn=!1;return}if(e.kind!==`import`&&e.kind!==`release`&&e.ticket<(fn.get(e.channel)??0))mn({id:e.id,error:`Superseded score render.`,code:`superseded`});else try{let t=await cn(e);un(e.kind),mn({id:e.id,value:t,heap:Bt()})}catch(t){un(e.kind);let{message:n,code:r}=ln(t);r!==`missing`&&Rt(r===`oom`||!(t instanceof Error&&t.message===`Verovio could not import this score.`)),mn({id:e.id,error:n,code:r,heap:Bt()})}setTimeout(()=>void hn(),0)}self.onmessage=e=>{let t=e.data;if(t.kind===`configure`){Dt=t.files,Mt().catch(()=>{});return}(t.kind===`probe`||t.kind===`render`)&&fn.set(t.channel,Math.max(fn.get(t.channel)??0,t.ticket)),dn.push(t),pn||(pn=!0,setTimeout(()=>void hn(),0))};
@@ -12,7 +12,7 @@ function t(t, n, r) {
12
12
  try {
13
13
  o = new Worker(new URL(
14
14
  /* @vite-ignore */
15
- new URL("assets/engrave.worker-D334KQnx.js", import.meta.url).href,
15
+ new URL("assets/engrave.worker-B0WfvX6e.js", import.meta.url).href,
16
16
  "" + import.meta.url
17
17
  ), { type: "module" }), r.addEventListener("abort", c, { once: !0 }), o.onmessage = ({ data: e }) => s(e.error ? Error(e.error) : void 0, e.value), o.onerror = (e) => {
18
18
  e.preventDefault(), s(Error(e.message || "PDF engraving worker failed."));
@@ -29,4 +29,4 @@ function t(t, n, r) {
29
29
  //#endregion
30
30
  export { t as engravePages };
31
31
 
32
- //# sourceMappingURL=engrave-DpVrifuu.js.map
32
+ //# sourceMappingURL=engrave-DKNPmehA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engrave-DpVrifuu.js","names":["import.meta.ROLLDOWN_FILE_URL_vf5QbR8o9xsA6ktjjbwuHw","bundledVerovioFiles","engravePages","signal","worker","finish","abort","error","reject","resolve","value","data","event","opts"],"sources":["../src/lib/pdf/engrave.ts"],"sourcesContent":["import type { ViewSpec } from '../notation/mei-view';\nimport type { VerovioFiles } from '../verovio-protocol';\nimport { bundledVerovioFiles } from '../../runtime-files';\nimport type { PaperId } from './paper';\n\n/** A snapshot of source notation and the same view plan used by the reader. */\nexport type PageInput = { data: string; view?: ViewSpec };\nexport type PageOptions = { paper: PaperId; maxBars: number; font?: string; files?: VerovioFiles; spacingStaff?: number; annotationRoom?: number; headingMm?: number };\nexport type LineInfo = { start: number; count: number; width: number };\nexport type PagesResult = { pages: string[]; lines: LineInfo[]; shrunk: boolean };\n\n/** Dynamically import this module on first PDF use. Each call owns and releases its own WASM worker. */\nexport function engravePages(input: PageInput, opts: PageOptions, signal: AbortSignal): Promise<PagesResult> {\n return new Promise((resolve, reject) => {\n if (signal.aborted) { reject(new DOMException('PDF export cancelled.', 'AbortError')); return; }\n let worker: Worker;\n const finish = (error?: Error, value?: PagesResult) => {\n signal.removeEventListener('abort', abort);\n worker?.terminate();\n if (error) reject(error); else resolve(value!);\n };\n const abort = () => finish(new DOMException('PDF export cancelled.', 'AbortError'));\n try {\n worker = new Worker(new URL('./engrave.worker.ts', import.meta.url), { type: 'module' });\n signal.addEventListener('abort', abort, { once: true });\n worker.onmessage = ({ data }: MessageEvent<{ value?: PagesResult; error?: string }>) => finish(data.error ? new Error(data.error) : undefined, data.value);\n worker.onerror = event => { event.preventDefault(); finish(new Error(event.message || 'PDF engraving worker failed.')); };\n worker.postMessage({ input, opts, files: opts.files ?? bundledVerovioFiles() });\n } catch (error) { finish(error instanceof Error ? error : new Error(String(error))); }\n });\n}\n"],"mappings":";;AAYA,SAAgBE,EAAa,GAAkB,GAAmB,GAA2C;CAC3G,OAAO,IAAI,SAAS,GAAS,MAAW;EACtC,IAAIC,EAAO,SAAS;GAAE,EAAO,IAAI,aAAa,yBAAyB,YAAY,CAAC;GAAG;EAAQ;EAC/F,IAAIC,GACEC,KAAU,GAAe,MAAwB;GAGrD,AAFAF,EAAO,oBAAoB,SAASG,CAAK,GACzCF,GAAQ,UAAU,GACdG,IAAOC,EAAOD,CAAK,IAAQE,EAAQC,CAAM;EAC/C,GACMJ,UAAcD,EAAO,IAAI,aAAa,yBAAyB,YAAY,CAAC;EAClF,IAAI;GAKF,AAJA,IAAS,IAAI,OAAO,IAAA;;IAAA,IAAA,IAAA,qCAAA,YAAA,GAAA,CAAA,CAAAL;IAAA,KAAA,YAAA;GAAA,GAAiD,EAAE,MAAM,SAAS,CAAC,GACvFG,EAAO,iBAAiB,SAASG,GAAO,EAAE,MAAM,GAAK,CAAC,GACtD,EAAO,aAAa,EAAE,cAAkED,EAAOM,EAAK,QAAY,MAAMA,EAAK,KAAK,IAAI,KAAA,GAAWA,EAAK,KAAK,GACzJ,EAAO,WAAU,MAAS;IAA0B,AAAxBC,EAAM,eAAe,GAAGP,EAAW,MAAMO,EAAM,WAAW,8BAA8B,CAAC;GAAG,GACxHR,EAAO,YAAY;IAAE;IAAO;IAAM,OAAOS,EAAK,SAASZ,EAAoB;GAAE,CAAC;EAChF,SAASM,GAAO;GAAE,EAAOA,aAAiB,QAAQA,IAAY,MAAM,OAAOA,CAAK,CAAC,CAAC;EAAG;CACvF,CAAC;AACH"}
1
+ {"version":3,"file":"engrave-DKNPmehA.js","names":["import.meta.ROLLDOWN_FILE_URL_t9GS$nfrkXGQzk0aiUkykA","bundledVerovioFiles","engravePages","signal","worker","finish","abort","error","reject","resolve","value","data","event","opts"],"sources":["../src/lib/pdf/engrave.ts"],"sourcesContent":["import type { ViewSpec } from '../notation/mei-view';\nimport type { VerovioFiles } from '../verovio-protocol';\nimport { bundledVerovioFiles } from '../../runtime-files';\nimport type { PaperId } from './paper';\n\n/** A snapshot of source notation and the same view plan used by the reader. */\nexport type PageInput = { data: string; view?: ViewSpec };\nexport type PageOptions = { paper: PaperId; maxBars: number; font?: string; files?: VerovioFiles; spacingStaff?: number; annotationRoom?: number; headingMm?: number };\nexport type LineInfo = { start: number; count: number; width: number };\nexport type PagesResult = { pages: string[]; lines: LineInfo[]; shrunk: boolean };\n\n/** Dynamically import this module on first PDF use. Each call owns and releases its own WASM worker. */\nexport function engravePages(input: PageInput, opts: PageOptions, signal: AbortSignal): Promise<PagesResult> {\n return new Promise((resolve, reject) => {\n if (signal.aborted) { reject(new DOMException('PDF export cancelled.', 'AbortError')); return; }\n let worker: Worker;\n const finish = (error?: Error, value?: PagesResult) => {\n signal.removeEventListener('abort', abort);\n worker?.terminate();\n if (error) reject(error); else resolve(value!);\n };\n const abort = () => finish(new DOMException('PDF export cancelled.', 'AbortError'));\n try {\n worker = new Worker(new URL('./engrave.worker.ts', import.meta.url), { type: 'module' });\n signal.addEventListener('abort', abort, { once: true });\n worker.onmessage = ({ data }: MessageEvent<{ value?: PagesResult; error?: string }>) => finish(data.error ? new Error(data.error) : undefined, data.value);\n worker.onerror = event => { event.preventDefault(); finish(new Error(event.message || 'PDF engraving worker failed.')); };\n worker.postMessage({ input, opts, files: opts.files ?? bundledVerovioFiles() });\n } catch (error) { finish(error instanceof Error ? error : new Error(String(error))); }\n });\n}\n"],"mappings":";;AAYA,SAAgBE,EAAa,GAAkB,GAAmB,GAA2C;CAC3G,OAAO,IAAI,SAAS,GAAS,MAAW;EACtC,IAAIC,EAAO,SAAS;GAAE,EAAO,IAAI,aAAa,yBAAyB,YAAY,CAAC;GAAG;EAAQ;EAC/F,IAAIC,GACEC,KAAU,GAAe,MAAwB;GAGrD,AAFAF,EAAO,oBAAoB,SAASG,CAAK,GACzCF,GAAQ,UAAU,GACdG,IAAOC,EAAOD,CAAK,IAAQE,EAAQC,CAAM;EAC/C,GACMJ,UAAcD,EAAO,IAAI,aAAa,yBAAyB,YAAY,CAAC;EAClF,IAAI;GAKF,AAJA,IAAS,IAAI,OAAO,IAAA;;IAAA,IAAA,IAAA,qCAAA,YAAA,GAAA,CAAA,CAAAL;IAAA,KAAA,YAAA;GAAA,GAAiD,EAAE,MAAM,SAAS,CAAC,GACvFG,EAAO,iBAAiB,SAASG,GAAO,EAAE,MAAM,GAAK,CAAC,GACtD,EAAO,aAAa,EAAE,cAAkED,EAAOM,EAAK,QAAY,MAAMA,EAAK,KAAK,IAAI,KAAA,GAAWA,EAAK,KAAK,GACzJ,EAAO,WAAU,MAAS;IAA0B,AAAxBC,EAAM,eAAe,GAAGP,EAAW,MAAMO,EAAM,WAAW,8BAA8B,CAAC;GAAG,GACxHR,EAAO,YAAY;IAAE;IAAO;IAAM,OAAOS,EAAK,SAASZ,EAAoB;GAAE,CAAC;EAChF,SAASM,GAAO;GAAE,EAAOA,aAAiB,QAAQA,IAAY,MAAM,OAAOA,CAAK,CAAC,CAAC;EAAG;CACvF,CAAC;AACH"}