var an=Object.defineProperty;var ln=(i,e,t)=>e in i?an(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var ct=(i,e,t)=>(ln(i,typeof e!="symbol"?e+"":e,t),t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&s(a)}).observe(document,{childList:!0,subtree:!0});function t(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=t(r);fetch(r.href,o)}})();const index="",common="",popup$1="",SnackbarSfc="",elevation="",loading="",button="",icon="",snackbar="",coreSfc="",cell="",CellSfc="",ripple="",formDetails="",hoverOverlay="",_switch="",SwitchSfc="",style="";function makeMap(i,e){const t=Object.create(null),s=i.split(",");for(let r=0;r!!t[r.toLowerCase()]:r=>!!t[r]}function normalizeStyle(i){if(isArray$8(i)){const e={};for(let t=0;t{if(t){const s=t.split(propertyDelimiterRE);s.length>1&&(e[s[0].trim()]=s[1].trim())}}),e}function normalizeClass(i){let e="";if(isString$2(i))e=i;else if(isArray$8(i))for(let t=0;tisString$2(i)?i:i==null?"":isArray$8(i)||isObject$4(i)&&(i.toString===objectToString$2||!isFunction$4(i.toString))?JSON.stringify(i,replacer,2):String(i),replacer=(i,e)=>e&&e.__v_isRef?replacer(i,e.value):isMap$1(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((t,[s,r])=>(t[`${s} =>`]=r,t),{})}:isSet$1(e)?{[`Set(${e.size})`]:[...e.values()]}:isObject$4(e)&&!isArray$8(e)&&!isPlainObject$3(e)?String(e):e,EMPTY_OBJ={},EMPTY_ARR=[],NOOP=()=>{},NO=()=>!1,onRE=/^on[^a-z]/,isOn=i=>onRE.test(i),isModelListener=i=>i.startsWith("onUpdate:"),extend$3=Object.assign,remove$7=(i,e)=>{const t=i.indexOf(e);t>-1&&i.splice(t,1)},hasOwnProperty$3=Object.prototype.hasOwnProperty,hasOwn$2=(i,e)=>hasOwnProperty$3.call(i,e),isArray$8=Array.isArray,isMap$1=i=>toTypeString(i)==="[object Map]",isSet$1=i=>toTypeString(i)==="[object Set]",isFunction$4=i=>typeof i=="function",isString$2=i=>typeof i=="string",isSymbol$1=i=>typeof i=="symbol",isObject$4=i=>i!==null&&typeof i=="object",isPromise$1=i=>isObject$4(i)&&isFunction$4(i.then)&&isFunction$4(i.catch),objectToString$2=Object.prototype.toString,toTypeString=i=>objectToString$2.call(i),toRawType=i=>toTypeString(i).slice(8,-1),isPlainObject$3=i=>toTypeString(i)==="[object Object]",isIntegerKey=i=>isString$2(i)&&i!=="NaN"&&i[0]!=="-"&&""+parseInt(i,10)===i,isReservedProp=makeMap(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),cacheStringFunction=i=>{const e=Object.create(null);return t=>e[t]||(e[t]=i(t))},camelizeRE$1=/-(\w)/g,camelize$1=cacheStringFunction(i=>i.replace(camelizeRE$1,(e,t)=>t?t.toUpperCase():"")),hyphenateRE=/\B([A-Z])/g,hyphenate=cacheStringFunction(i=>i.replace(hyphenateRE,"-$1").toLowerCase()),capitalize=cacheStringFunction(i=>i.charAt(0).toUpperCase()+i.slice(1)),toHandlerKey=cacheStringFunction(i=>i?`on${capitalize(i)}`:""),hasChanged=(i,e)=>!Object.is(i,e),invokeArrayFns=(i,e)=>{for(let t=0;t{Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value:t})},looseToNumber=i=>{const e=parseFloat(i);return isNaN(e)?i:e},toNumber$1=i=>{const e=isString$2(i)?Number(i):NaN;return isNaN(e)?i:e};let _globalThis;const getGlobalThis=()=>_globalThis||(_globalThis=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let activeEffectScope;class EffectScope{constructor(e=!1){this.detached=e,this._active=!0,this.effects=[],this.cleanups=[],this.parent=activeEffectScope,!e&&activeEffectScope&&(this.index=(activeEffectScope.scopes||(activeEffectScope.scopes=[])).push(this)-1)}get active(){return this._active}run(e){if(this._active){const t=activeEffectScope;try{return activeEffectScope=this,e()}finally{activeEffectScope=t}}}on(){activeEffectScope=this}off(){activeEffectScope=this.parent}stop(e){if(this._active){let t,s;for(t=0,s=this.effects.length;t{const e=new Set(i);return e.w=0,e.n=0,e},wasTracked=i=>(i.w&trackOpBit)>0,newTracked=i=>(i.n&trackOpBit)>0,initDepMarkers=({deps:i})=>{if(i.length)for(let e=0;e{const{deps:e}=i;if(e.length){let t=0;for(let s=0;s{(m==="length"||m>=c)&&l.push(d)})}else switch(t!==void 0&&l.push(a.get(t)),e){case"add":isArray$8(i)?isIntegerKey(t)&&l.push(a.get("length")):(l.push(a.get(ITERATE_KEY)),isMap$1(i)&&l.push(a.get(MAP_KEY_ITERATE_KEY)));break;case"delete":isArray$8(i)||(l.push(a.get(ITERATE_KEY)),isMap$1(i)&&l.push(a.get(MAP_KEY_ITERATE_KEY)));break;case"set":isMap$1(i)&&l.push(a.get(ITERATE_KEY));break}if(l.length===1)l[0]&&triggerEffects(l[0]);else{const c=[];for(const d of l)d&&c.push(...d);triggerEffects(createDep(c))}}function triggerEffects(i,e){const t=isArray$8(i)?i:[...i];for(const s of t)s.computed&&triggerEffect(s);for(const s of t)s.computed||triggerEffect(s)}function triggerEffect(i,e){(i!==activeEffect||i.allowRecurse)&&(i.scheduler?i.scheduler():i.run())}function getDepFromReactive(i,e){var t;return(t=targetMap.get(i))===null||t===void 0?void 0:t.get(e)}const isNonTrackableKeys=makeMap("__proto__,__v_isRef,__isVue"),builtInSymbols=new Set(Object.getOwnPropertyNames(Symbol).filter(i=>i!=="arguments"&&i!=="caller").map(i=>Symbol[i]).filter(isSymbol$1)),get$1=createGetter(),shallowGet=createGetter(!1,!0),readonlyGet=createGetter(!0),arrayInstrumentations=createArrayInstrumentations();function createArrayInstrumentations(){const i={};return["includes","indexOf","lastIndexOf"].forEach(e=>{i[e]=function(...t){const s=toRaw(this);for(let o=0,a=this.length;o{i[e]=function(...t){pauseTracking();const s=toRaw(this)[e].apply(this,t);return resetTracking(),s}}),i}function hasOwnProperty$2(i){const e=toRaw(this);return track(e,"has",i),e.hasOwnProperty(i)}function createGetter(i=!1,e=!1){return function(s,r,o){if(r==="__v_isReactive")return!i;if(r==="__v_isReadonly")return i;if(r==="__v_isShallow")return e;if(r==="__v_raw"&&o===(i?e?shallowReadonlyMap:readonlyMap:e?shallowReactiveMap:reactiveMap).get(s))return s;const a=isArray$8(s);if(!i){if(a&&hasOwn$2(arrayInstrumentations,r))return Reflect.get(arrayInstrumentations,r,o);if(r==="hasOwnProperty")return hasOwnProperty$2}const l=Reflect.get(s,r,o);return(isSymbol$1(r)?builtInSymbols.has(r):isNonTrackableKeys(r))||(i||track(s,"get",r),e)?l:isRef(l)?a&&isIntegerKey(r)?l:l.value:isObject$4(l)?i?readonly(l):reactive(l):l}}const set$1=createSetter(),shallowSet=createSetter(!0);function createSetter(i=!1){return function(t,s,r,o){let a=t[s];if(isReadonly(a)&&isRef(a)&&!isRef(r))return!1;if(!i&&(!isShallow(r)&&!isReadonly(r)&&(a=toRaw(a),r=toRaw(r)),!isArray$8(t)&&isRef(a)&&!isRef(r)))return a.value=r,!0;const l=isArray$8(t)&&isIntegerKey(s)?Number(s)i,getProto$1=i=>Reflect.getPrototypeOf(i);function get$2(i,e,t=!1,s=!1){i=i.__v_raw;const r=toRaw(i),o=toRaw(e);t||(e!==o&&track(r,"get",e),track(r,"get",o));const{has:a}=getProto$1(r),l=s?toShallow:t?toReadonly:toReactive;if(a.call(r,e))return l(i.get(e));if(a.call(r,o))return l(i.get(o));i!==r&&i.get(e)}function has$4(i,e=!1){const t=this.__v_raw,s=toRaw(t),r=toRaw(i);return e||(i!==r&&track(s,"has",i),track(s,"has",r)),i===r?t.has(i):t.has(i)||t.has(r)}function size(i,e=!1){return i=i.__v_raw,!e&&track(toRaw(i),"iterate",ITERATE_KEY),Reflect.get(i,"size",i)}function add(i){i=toRaw(i);const e=toRaw(this);return getProto$1(e).has.call(e,i)||(e.add(i),trigger(e,"add",i,i)),this}function set(i,e){e=toRaw(e);const t=toRaw(this),{has:s,get:r}=getProto$1(t);let o=s.call(t,i);o||(i=toRaw(i),o=s.call(t,i));const a=r.call(t,i);return t.set(i,e),o?hasChanged(e,a)&&trigger(t,"set",i,e):trigger(t,"add",i,e),this}function deleteEntry(i){const e=toRaw(this),{has:t,get:s}=getProto$1(e);let r=t.call(e,i);r||(i=toRaw(i),r=t.call(e,i)),s&&s.call(e,i);const o=e.delete(i);return r&&trigger(e,"delete",i,void 0),o}function clear(){const i=toRaw(this),e=i.size!==0,t=i.clear();return e&&trigger(i,"clear",void 0,void 0),t}function createForEach(i,e){return function(s,r){const o=this,a=o.__v_raw,l=toRaw(a),c=e?toShallow:i?toReadonly:toReactive;return!i&&track(l,"iterate",ITERATE_KEY),a.forEach((d,m)=>s.call(r,c(d),c(m),o))}}function createIterableMethod(i,e,t){return function(...s){const r=this.__v_raw,o=toRaw(r),a=isMap$1(o),l=i==="entries"||i===Symbol.iterator&&a,c=i==="keys"&&a,d=r[i](...s),m=t?toShallow:e?toReadonly:toReactive;return!e&&track(o,"iterate",c?MAP_KEY_ITERATE_KEY:ITERATE_KEY),{next(){const{value:u,done:g}=d.next();return g?{value:u,done:g}:{value:l?[m(u[0]),m(u[1])]:m(u),done:g}},[Symbol.iterator](){return this}}}}function createReadonlyMethod(i){return function(...e){return i==="delete"?!1:this}}function createInstrumentations(){const i={get(o){return get$2(this,o)},get size(){return size(this)},has:has$4,add,set,delete:deleteEntry,clear,forEach:createForEach(!1,!1)},e={get(o){return get$2(this,o,!1,!0)},get size(){return size(this)},has:has$4,add,set,delete:deleteEntry,clear,forEach:createForEach(!1,!0)},t={get(o){return get$2(this,o,!0)},get size(){return size(this,!0)},has(o){return has$4.call(this,o,!0)},add:createReadonlyMethod("add"),set:createReadonlyMethod("set"),delete:createReadonlyMethod("delete"),clear:createReadonlyMethod("clear"),forEach:createForEach(!0,!1)},s={get(o){return get$2(this,o,!0,!0)},get size(){return size(this,!0)},has(o){return has$4.call(this,o,!0)},add:createReadonlyMethod("add"),set:createReadonlyMethod("set"),delete:createReadonlyMethod("delete"),clear:createReadonlyMethod("clear"),forEach:createForEach(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{i[o]=createIterableMethod(o,!1,!1),t[o]=createIterableMethod(o,!0,!1),e[o]=createIterableMethod(o,!1,!0),s[o]=createIterableMethod(o,!0,!0)}),[i,t,e,s]}const[mutableInstrumentations,readonlyInstrumentations,shallowInstrumentations,shallowReadonlyInstrumentations]=createInstrumentations();function createInstrumentationGetter(i,e){const t=e?i?shallowReadonlyInstrumentations:shallowInstrumentations:i?readonlyInstrumentations:mutableInstrumentations;return(s,r,o)=>r==="__v_isReactive"?!i:r==="__v_isReadonly"?i:r==="__v_raw"?s:Reflect.get(hasOwn$2(t,r)&&r in s?t:s,r,o)}const mutableCollectionHandlers={get:createInstrumentationGetter(!1,!1)},shallowCollectionHandlers={get:createInstrumentationGetter(!1,!0)},readonlyCollectionHandlers={get:createInstrumentationGetter(!0,!1)},reactiveMap=new WeakMap,shallowReactiveMap=new WeakMap,readonlyMap=new WeakMap,shallowReadonlyMap=new WeakMap;function targetTypeMap(i){switch(i){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function getTargetType(i){return i.__v_skip||!Object.isExtensible(i)?0:targetTypeMap(toRawType(i))}function reactive(i){return isReadonly(i)?i:createReactiveObject(i,!1,mutableHandlers,mutableCollectionHandlers,reactiveMap)}function shallowReactive(i){return createReactiveObject(i,!1,shallowReactiveHandlers,shallowCollectionHandlers,shallowReactiveMap)}function readonly(i){return createReactiveObject(i,!0,readonlyHandlers,readonlyCollectionHandlers,readonlyMap)}function createReactiveObject(i,e,t,s,r){if(!isObject$4(i)||i.__v_raw&&!(e&&i.__v_isReactive))return i;const o=r.get(i);if(o)return o;const a=getTargetType(i);if(a===0)return i;const l=new Proxy(i,a===2?s:t);return r.set(i,l),l}function isReactive(i){return isReadonly(i)?isReactive(i.__v_raw):!!(i&&i.__v_isReactive)}function isReadonly(i){return!!(i&&i.__v_isReadonly)}function isShallow(i){return!!(i&&i.__v_isShallow)}function isProxy(i){return isReactive(i)||isReadonly(i)}function toRaw(i){const e=i&&i.__v_raw;return e?toRaw(e):i}function markRaw(i){return def(i,"__v_skip",!0),i}const toReactive=i=>isObject$4(i)?reactive(i):i,toReadonly=i=>isObject$4(i)?readonly(i):i;function trackRefValue(i){shouldTrack&&activeEffect&&(i=toRaw(i),trackEffects(i.dep||(i.dep=createDep())))}function triggerRefValue(i,e){i=toRaw(i);const t=i.dep;t&&triggerEffects(t)}function isRef(i){return!!(i&&i.__v_isRef===!0)}function ref(i){return createRef(i,!1)}function shallowRef(i){return createRef(i,!0)}function createRef(i,e){return isRef(i)?i:new RefImpl(i,e)}class RefImpl{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:toRaw(e),this._value=t?e:toReactive(e)}get value(){return trackRefValue(this),this._value}set value(e){const t=this.__v_isShallow||isShallow(e)||isReadonly(e);e=t?e:toRaw(e),hasChanged(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:toReactive(e),triggerRefValue(this))}}function unref(i){return isRef(i)?i.value:i}const shallowUnwrapHandlers={get:(i,e,t)=>unref(Reflect.get(i,e,t)),set:(i,e,t,s)=>{const r=i[e];return isRef(r)&&!isRef(t)?(r.value=t,!0):Reflect.set(i,e,t,s)}};function proxyRefs(i){return isReactive(i)?i:new Proxy(i,shallowUnwrapHandlers)}function toRefs(i){const e=isArray$8(i)?new Array(i.length):{};for(const t in i)e[t]=toRef(i,t);return e}class ObjectRefImpl{constructor(e,t,s){this._object=e,this._key=t,this._defaultValue=s,this.__v_isRef=!0}get value(){const e=this._object[this._key];return e===void 0?this._defaultValue:e}set value(e){this._object[this._key]=e}get dep(){return getDepFromReactive(toRaw(this._object),this._key)}}function toRef(i,e,t){const s=i[e];return isRef(s)?s:new ObjectRefImpl(i,e,t)}var _a$1;class ComputedRefImpl{constructor(e,t,s,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[_a$1]=!1,this._dirty=!0,this.effect=new ReactiveEffect(e,()=>{this._dirty||(this._dirty=!0,triggerRefValue(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const e=toRaw(this);return trackRefValue(e),(e._dirty||!e._cacheable)&&(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}_a$1="__v_isReadonly";function computed$1(i,e,t=!1){let s,r;const o=isFunction$4(i);return o?(s=i,r=NOOP):(s=i.get,r=i.set),new ComputedRefImpl(s,r,o||!r,t)}function warn(i,...e){}function callWithErrorHandling(i,e,t,s){let r;try{r=s?i(...s):i()}catch(o){handleError(o,e,t)}return r}function callWithAsyncErrorHandling(i,e,t,s){if(isFunction$4(i)){const o=callWithErrorHandling(i,e,t,s);return o&&isPromise$1(o)&&o.catch(a=>{handleError(a,e,t)}),o}const r=[];for(let o=0;o>>1;getId(queue$1[s])flushIndex&&queue$1.splice(e,1)}function queuePostFlushCb(i){isArray$8(i)?pendingPostFlushCbs.push(...i):(!activePostFlushCbs||!activePostFlushCbs.includes(i,i.allowRecurse?postFlushIndex+1:postFlushIndex))&&pendingPostFlushCbs.push(i),queueFlush()}function flushPreFlushCbs(i,e=isFlushing?flushIndex+1:0){for(;egetId(t)-getId(s)),postFlushIndex=0;postFlushIndexi.id==null?1/0:i.id,comparator=(i,e)=>{const t=getId(i)-getId(e);if(t===0){if(i.pre&&!e.pre)return-1;if(e.pre&&!i.pre)return 1}return t};function flushJobs(i){isFlushPending=!1,isFlushing=!0,queue$1.sort(comparator);const e=NOOP;try{for(flushIndex=0;flushIndexisString$2(b)?b.trim():b)),u&&(r=t.map(looseToNumber))}let l,c=s[l=toHandlerKey(e)]||s[l=toHandlerKey(camelize$1(e))];!c&&o&&(c=s[l=toHandlerKey(hyphenate(e))]),c&&callWithAsyncErrorHandling(c,i,6,r);const d=s[l+"Once"];if(d){if(!i.emitted)i.emitted={};else if(i.emitted[l])return;i.emitted[l]=!0,callWithAsyncErrorHandling(d,i,6,r)}}function normalizeEmitsOptions(i,e,t=!1){const s=e.emitsCache,r=s.get(i);if(r!==void 0)return r;const o=i.emits;let a={},l=!1;if(!isFunction$4(i)){const c=d=>{const m=normalizeEmitsOptions(d,e,!0);m&&(l=!0,extend$3(a,m))};!t&&e.mixins.length&&e.mixins.forEach(c),i.extends&&c(i.extends),i.mixins&&i.mixins.forEach(c)}return!o&&!l?(isObject$4(i)&&s.set(i,null),null):(isArray$8(o)?o.forEach(c=>a[c]=null):extend$3(a,o),isObject$4(i)&&s.set(i,a),a)}function isEmitListener(i,e){return!i||!isOn(e)?!1:(e=e.slice(2).replace(/Once$/,""),hasOwn$2(i,e[0].toLowerCase()+e.slice(1))||hasOwn$2(i,hyphenate(e))||hasOwn$2(i,e))}let currentRenderingInstance=null,currentScopeId=null;function setCurrentRenderingInstance(i){const e=currentRenderingInstance;return currentRenderingInstance=i,currentScopeId=i&&i.type.__scopeId||null,e}function pushScopeId(i){currentScopeId=i}function popScopeId(){currentScopeId=null}function withCtx(i,e=currentRenderingInstance,t){if(!e||i._n)return i;const s=(...r)=>{s._d&&setBlockTracking(-1);const o=setCurrentRenderingInstance(e);let a;try{a=i(...r)}finally{setCurrentRenderingInstance(o),s._d&&setBlockTracking(1)}return a};return s._n=!0,s._c=!0,s._d=!0,s}function markAttrsAccessed(){}function renderComponentRoot(i){const{type:e,vnode:t,proxy:s,withProxy:r,props:o,propsOptions:[a],slots:l,attrs:c,emit:d,render:m,renderCache:u,data:g,setupState:b,ctx:y,inheritAttrs:S}=i;let v,x;const A=setCurrentRenderingInstance(i);try{if(t.shapeFlag&4){const w=r||s;v=normalizeVNode(m.call(w,w,u,o,b,g,y)),x=c}else{const w=e;v=normalizeVNode(w.length>1?w(o,{attrs:c,slots:l,emit:d}):w(o,null)),x=e.props?c:getFunctionalFallthrough(c)}}catch(w){blockStack.length=0,handleError(w,i,1),v=createVNode(Comment)}let E=v;if(x&&S!==!1){const w=Object.keys(x),{shapeFlag:_}=E;w.length&&_&7&&(a&&w.some(isModelListener)&&(x=filterModelListeners(x,a)),E=cloneVNode(E,x))}return t.dirs&&(E=cloneVNode(E),E.dirs=E.dirs?E.dirs.concat(t.dirs):t.dirs),t.transition&&(E.transition=t.transition),v=E,setCurrentRenderingInstance(A),v}const getFunctionalFallthrough=i=>{let e;for(const t in i)(t==="class"||t==="style"||isOn(t))&&((e||(e={}))[t]=i[t]);return e},filterModelListeners=(i,e)=>{const t={};for(const s in i)(!isModelListener(s)||!(s.slice(9)in e))&&(t[s]=i[s]);return t};function shouldUpdateComponent(i,e,t){const{props:s,children:r,component:o}=i,{props:a,children:l,patchFlag:c}=e,d=o.emitsOptions;if(e.dirs||e.transition)return!0;if(t&&c>=0){if(c&1024)return!0;if(c&16)return s?hasPropsChanged(s,a,d):!!a;if(c&8){const m=e.dynamicProps;for(let u=0;ui.__isSuspense;function queueEffectWithSuspense(i,e){e&&e.pendingBranch?isArray$8(i)?e.effects.push(...i):e.effects.push(i):queuePostFlushCb(i)}function provide(i,e){if(currentInstance){let t=currentInstance.provides;const s=currentInstance.parent&¤tInstance.parent.provides;s===t&&(t=currentInstance.provides=Object.create(s)),t[i]=e}}function inject(i,e,t=!1){const s=currentInstance||currentRenderingInstance;if(s){const r=s.parent==null?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides;if(r&&i in r)return r[i];if(arguments.length>1)return t&&isFunction$4(e)?e.call(s.proxy):e}}function watchEffect(i,e){return doWatch(i,null,e)}const INITIAL_WATCHER_VALUE={};function watch(i,e,t){return doWatch(i,e,t)}function doWatch(i,e,{immediate:t,deep:s,flush:r,onTrack:o,onTrigger:a}=EMPTY_OBJ){const l=getCurrentScope()===(currentInstance==null?void 0:currentInstance.scope)?currentInstance:null;let c,d=!1,m=!1;if(isRef(i)?(c=()=>i.value,d=isShallow(i)):isReactive(i)?(c=()=>i,s=!0):isArray$8(i)?(m=!0,d=i.some(E=>isReactive(E)||isShallow(E)),c=()=>i.map(E=>{if(isRef(E))return E.value;if(isReactive(E))return traverse(E);if(isFunction$4(E))return callWithErrorHandling(E,l,2)})):isFunction$4(i)?e?c=()=>callWithErrorHandling(i,l,2):c=()=>{if(!(l&&l.isUnmounted))return u&&u(),callWithAsyncErrorHandling(i,l,3,[g])}:c=NOOP,e&&s){const E=c;c=()=>traverse(E())}let u,g=E=>{u=x.onStop=()=>{callWithErrorHandling(E,l,4)}},b;if(isInSSRComponentSetup)if(g=NOOP,e?t&&callWithAsyncErrorHandling(e,l,3,[c(),m?[]:void 0,g]):c(),r==="sync"){const E=useSSRContext();b=E.__watcherHandles||(E.__watcherHandles=[])}else return NOOP;let y=m?new Array(i.length).fill(INITIAL_WATCHER_VALUE):INITIAL_WATCHER_VALUE;const S=()=>{if(x.active)if(e){const E=x.run();(s||d||(m?E.some((w,_)=>hasChanged(w,y[_])):hasChanged(E,y)))&&(u&&u(),callWithAsyncErrorHandling(e,l,3,[E,y===INITIAL_WATCHER_VALUE?void 0:m&&y[0]===INITIAL_WATCHER_VALUE?[]:y,g]),y=E)}else x.run()};S.allowRecurse=!!e;let v;r==="sync"?v=S:r==="post"?v=()=>queuePostRenderEffect(S,l&&l.suspense):(S.pre=!0,l&&(S.id=l.uid),v=()=>queueJob(S));const x=new ReactiveEffect(c,v);e?t?S():y=x.run():r==="post"?queuePostRenderEffect(x.run.bind(x),l&&l.suspense):x.run();const A=()=>{x.stop(),l&&l.scope&&remove$7(l.scope.effects,x)};return b&&b.push(A),A}function instanceWatch(i,e,t){const s=this.proxy,r=isString$2(i)?i.includes(".")?createPathGetter(s,i):()=>s[i]:i.bind(s,s);let o;isFunction$4(e)?o=e:(o=e.handler,t=e);const a=currentInstance;setCurrentInstance(this);const l=doWatch(r,o.bind(s),t);return a?setCurrentInstance(a):unsetCurrentInstance(),l}function createPathGetter(i,e){const t=e.split(".");return()=>{let s=i;for(let r=0;r{traverse(t,e)});else if(isPlainObject$3(i))for(const t in i)traverse(i[t],e);return i}function useTransitionState(){const i={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return onMounted(()=>{i.isMounted=!0}),onBeforeUnmount(()=>{i.isUnmounting=!0}),i}const TransitionHookValidator=[Function,Array],BaseTransitionImpl={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:TransitionHookValidator,onEnter:TransitionHookValidator,onAfterEnter:TransitionHookValidator,onEnterCancelled:TransitionHookValidator,onBeforeLeave:TransitionHookValidator,onLeave:TransitionHookValidator,onAfterLeave:TransitionHookValidator,onLeaveCancelled:TransitionHookValidator,onBeforeAppear:TransitionHookValidator,onAppear:TransitionHookValidator,onAfterAppear:TransitionHookValidator,onAppearCancelled:TransitionHookValidator},setup(i,{slots:e}){const t=getCurrentInstance(),s=useTransitionState();let r;return()=>{const o=e.default&&getTransitionRawChildren(e.default(),!0);if(!o||!o.length)return;let a=o[0];if(o.length>1){for(const S of o)if(S.type!==Comment){a=S;break}}const l=toRaw(i),{mode:c}=l;if(s.isLeaving)return emptyPlaceholder(a);const d=getKeepAliveChild(a);if(!d)return emptyPlaceholder(a);const m=resolveTransitionHooks(d,l,s,t);setTransitionHooks(d,m);const u=t.subTree,g=u&&getKeepAliveChild(u);let b=!1;const{getTransitionKey:y}=d.type;if(y){const S=y();r===void 0?r=S:S!==r&&(r=S,b=!0)}if(g&&g.type!==Comment&&(!isSameVNodeType(d,g)||b)){const S=resolveTransitionHooks(g,l,s,t);if(setTransitionHooks(g,S),c==="out-in")return s.isLeaving=!0,S.afterLeave=()=>{s.isLeaving=!1,t.update.active!==!1&&t.update()},emptyPlaceholder(a);c==="in-out"&&d.type!==Comment&&(S.delayLeave=(v,x,A)=>{const E=getLeavingNodesForType(s,g);E[String(g.key)]=g,v._leaveCb=()=>{x(),v._leaveCb=void 0,delete m.delayedLeave},m.delayedLeave=A})}return a}}},BaseTransition=BaseTransitionImpl;function getLeavingNodesForType(i,e){const{leavingVNodes:t}=i;let s=t.get(e.type);return s||(s=Object.create(null),t.set(e.type,s)),s}function resolveTransitionHooks(i,e,t,s){const{appear:r,mode:o,persisted:a=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:d,onEnterCancelled:m,onBeforeLeave:u,onLeave:g,onAfterLeave:b,onLeaveCancelled:y,onBeforeAppear:S,onAppear:v,onAfterAppear:x,onAppearCancelled:A}=e,E=String(i.key),w=getLeavingNodesForType(t,i),_=(I,R)=>{I&&callWithAsyncErrorHandling(I,s,9,R)},C=(I,R)=>{const N=R[1];_(I,R),isArray$8(I)?I.every(G=>G.length<=1)&&N():I.length<=1&&N()},P={mode:o,persisted:a,beforeEnter(I){let R=l;if(!t.isMounted)if(r)R=S||l;else return;I._leaveCb&&I._leaveCb(!0);const N=w[E];N&&isSameVNodeType(i,N)&&N.el._leaveCb&&N.el._leaveCb(),_(R,[I])},enter(I){let R=c,N=d,G=m;if(!t.isMounted)if(r)R=v||c,N=x||d,G=A||m;else return;let B=!1;const k=I._enterCb=T=>{B||(B=!0,T?_(G,[I]):_(N,[I]),P.delayedLeave&&P.delayedLeave(),I._enterCb=void 0)};R?C(R,[I,k]):k()},leave(I,R){const N=String(i.key);if(I._enterCb&&I._enterCb(!0),t.isUnmounting)return R();_(u,[I]);let G=!1;const B=I._leaveCb=k=>{G||(G=!0,R(),k?_(y,[I]):_(b,[I]),I._leaveCb=void 0,w[N]===i&&delete w[N])};w[N]=i,g?C(g,[I,B]):B()},clone(I){return resolveTransitionHooks(I,e,t,s)}};return P}function emptyPlaceholder(i){if(isKeepAlive(i))return i=cloneVNode(i),i.children=null,i}function getKeepAliveChild(i){return isKeepAlive(i)?i.children?i.children[0]:void 0:i}function setTransitionHooks(i,e){i.shapeFlag&6&&i.component?setTransitionHooks(i.component.subTree,e):i.shapeFlag&128?(i.ssContent.transition=e.clone(i.ssContent),i.ssFallback.transition=e.clone(i.ssFallback)):i.transition=e}function getTransitionRawChildren(i,e=!1,t){let s=[],r=0;for(let o=0;o1)for(let o=0;o!!i.type.__asyncLoader,isKeepAlive=i=>i.type.__isKeepAlive;function onActivated(i,e){registerKeepAliveHook(i,"a",e)}function onDeactivated(i,e){registerKeepAliveHook(i,"da",e)}function registerKeepAliveHook(i,e,t=currentInstance){const s=i.__wdc||(i.__wdc=()=>{let r=t;for(;r;){if(r.isDeactivated)return;r=r.parent}return i()});if(injectHook(e,s,t),t){let r=t.parent;for(;r&&r.parent;)isKeepAlive(r.parent.vnode)&&injectToKeepAliveRoot(s,e,t,r),r=r.parent}}function injectToKeepAliveRoot(i,e,t,s){const r=injectHook(e,i,s,!0);onUnmounted(()=>{remove$7(s[e],r)},t)}function injectHook(i,e,t=currentInstance,s=!1){if(t){const r=t[i]||(t[i]=[]),o=e.__weh||(e.__weh=(...a)=>{if(t.isUnmounted)return;pauseTracking(),setCurrentInstance(t);const l=callWithAsyncErrorHandling(e,t,i,a);return unsetCurrentInstance(),resetTracking(),l});return s?r.unshift(o):r.push(o),o}}const createHook=i=>(e,t=currentInstance)=>(!isInSSRComponentSetup||i==="sp")&&injectHook(i,(...s)=>e(...s),t),onBeforeMount=createHook("bm"),onMounted=createHook("m"),onBeforeUpdate=createHook("bu"),onUpdated=createHook("u"),onBeforeUnmount=createHook("bum"),onUnmounted=createHook("um"),onServerPrefetch=createHook("sp"),onRenderTriggered=createHook("rtg"),onRenderTracked=createHook("rtc");function onErrorCaptured(i,e=currentInstance){injectHook("ec",i,e)}function withDirectives(i,e){const t=currentRenderingInstance;if(t===null)return i;const s=getExposeProxy(t)||t.proxy,r=i.dirs||(i.dirs=[]);for(let o=0;oe(a,l,void 0,o&&o[l]));else{const a=Object.keys(i);r=new Array(a.length);for(let l=0,c=a.length;lisVNode(e)?!(e.type===Comment||e.type===Fragment&&!ensureValidVNode(e.children)):!0)?i:null}const getPublicInstance=i=>i?isStatefulComponent(i)?getExposeProxy(i)||i.proxy:getPublicInstance(i.parent):null,publicPropertiesMap=extend$3(Object.create(null),{$:i=>i,$el:i=>i.vnode.el,$data:i=>i.data,$props:i=>i.props,$attrs:i=>i.attrs,$slots:i=>i.slots,$refs:i=>i.refs,$parent:i=>getPublicInstance(i.parent),$root:i=>getPublicInstance(i.root),$emit:i=>i.emit,$options:i=>resolveMergedOptions(i),$forceUpdate:i=>i.f||(i.f=()=>queueJob(i.update)),$nextTick:i=>i.n||(i.n=nextTick.bind(i.proxy)),$watch:i=>instanceWatch.bind(i)}),hasSetupBinding=(i,e)=>i!==EMPTY_OBJ&&!i.__isScriptSetup&&hasOwn$2(i,e),PublicInstanceProxyHandlers={get({_:i},e){const{ctx:t,setupState:s,data:r,props:o,accessCache:a,type:l,appContext:c}=i;let d;if(e[0]!=="$"){const b=a[e];if(b!==void 0)switch(b){case 1:return s[e];case 2:return r[e];case 4:return t[e];case 3:return o[e]}else{if(hasSetupBinding(s,e))return a[e]=1,s[e];if(r!==EMPTY_OBJ&&hasOwn$2(r,e))return a[e]=2,r[e];if((d=i.propsOptions[0])&&hasOwn$2(d,e))return a[e]=3,o[e];if(t!==EMPTY_OBJ&&hasOwn$2(t,e))return a[e]=4,t[e];shouldCacheAccess&&(a[e]=0)}}const m=publicPropertiesMap[e];let u,g;if(m)return e==="$attrs"&&track(i,"get",e),m(i);if((u=l.__cssModules)&&(u=u[e]))return u;if(t!==EMPTY_OBJ&&hasOwn$2(t,e))return a[e]=4,t[e];if(g=c.config.globalProperties,hasOwn$2(g,e))return g[e]},set({_:i},e,t){const{data:s,setupState:r,ctx:o}=i;return hasSetupBinding(r,e)?(r[e]=t,!0):s!==EMPTY_OBJ&&hasOwn$2(s,e)?(s[e]=t,!0):hasOwn$2(i.props,e)||e[0]==="$"&&e.slice(1)in i?!1:(o[e]=t,!0)},has({_:{data:i,setupState:e,accessCache:t,ctx:s,appContext:r,propsOptions:o}},a){let l;return!!t[a]||i!==EMPTY_OBJ&&hasOwn$2(i,a)||hasSetupBinding(e,a)||(l=o[0])&&hasOwn$2(l,a)||hasOwn$2(s,a)||hasOwn$2(publicPropertiesMap,a)||hasOwn$2(r.config.globalProperties,a)},defineProperty(i,e,t){return t.get!=null?i._.accessCache[e]=0:hasOwn$2(t,"value")&&this.set(i,e,t.value,null),Reflect.defineProperty(i,e,t)}};let shouldCacheAccess=!0;function applyOptions(i){const e=resolveMergedOptions(i),t=i.proxy,s=i.ctx;shouldCacheAccess=!1,e.beforeCreate&&callHook$1(e.beforeCreate,i,"bc");const{data:r,computed:o,methods:a,watch:l,provide:c,inject:d,created:m,beforeMount:u,mounted:g,beforeUpdate:b,updated:y,activated:S,deactivated:v,beforeDestroy:x,beforeUnmount:A,destroyed:E,unmounted:w,render:_,renderTracked:C,renderTriggered:P,errorCaptured:I,serverPrefetch:R,expose:N,inheritAttrs:G,components:B,directives:k,filters:T}=e;if(d&&resolveInjections(d,s,null,i.appContext.config.unwrapInjectedRef),a)for(const W in a){const se=a[W];isFunction$4(se)&&(s[W]=se.bind(t))}if(r){const W=r.call(t,t);isObject$4(W)&&(i.data=reactive(W))}if(shouldCacheAccess=!0,o)for(const W in o){const se=o[W],ne=isFunction$4(se)?se.bind(t,t):isFunction$4(se.get)?se.get.bind(t,t):NOOP,fe=!isFunction$4(se)&&isFunction$4(se.set)?se.set.bind(t):NOOP,Z=computed({get:ne,set:fe});Object.defineProperty(s,W,{enumerable:!0,configurable:!0,get:()=>Z.value,set:K=>Z.value=K})}if(l)for(const W in l)createWatcher(l[W],s,t,W);if(c){const W=isFunction$4(c)?c.call(t):c;Reflect.ownKeys(W).forEach(se=>{provide(se,W[se])})}m&&callHook$1(m,i,"c");function J(W,se){isArray$8(se)?se.forEach(ne=>W(ne.bind(t))):se&&W(se.bind(t))}if(J(onBeforeMount,u),J(onMounted,g),J(onBeforeUpdate,b),J(onUpdated,y),J(onActivated,S),J(onDeactivated,v),J(onErrorCaptured,I),J(onRenderTracked,C),J(onRenderTriggered,P),J(onBeforeUnmount,A),J(onUnmounted,w),J(onServerPrefetch,R),isArray$8(N))if(N.length){const W=i.exposed||(i.exposed={});N.forEach(se=>{Object.defineProperty(W,se,{get:()=>t[se],set:ne=>t[se]=ne})})}else i.exposed||(i.exposed={});_&&i.render===NOOP&&(i.render=_),G!=null&&(i.inheritAttrs=G),B&&(i.components=B),k&&(i.directives=k)}function resolveInjections(i,e,t=NOOP,s=!1){isArray$8(i)&&(i=normalizeInject(i));for(const r in i){const o=i[r];let a;isObject$4(o)?"default"in o?a=inject(o.from||r,o.default,!0):a=inject(o.from||r):a=inject(o),isRef(a)&&s?Object.defineProperty(e,r,{enumerable:!0,configurable:!0,get:()=>a.value,set:l=>a.value=l}):e[r]=a}}function callHook$1(i,e,t){callWithAsyncErrorHandling(isArray$8(i)?i.map(s=>s.bind(e.proxy)):i.bind(e.proxy),e,t)}function createWatcher(i,e,t,s){const r=s.includes(".")?createPathGetter(t,s):()=>t[s];if(isString$2(i)){const o=e[i];isFunction$4(o)&&watch(r,o)}else if(isFunction$4(i))watch(r,i.bind(t));else if(isObject$4(i))if(isArray$8(i))i.forEach(o=>createWatcher(o,e,t,s));else{const o=isFunction$4(i.handler)?i.handler.bind(t):e[i.handler];isFunction$4(o)&&watch(r,o,i)}}function resolveMergedOptions(i){const e=i.type,{mixins:t,extends:s}=e,{mixins:r,optionsCache:o,config:{optionMergeStrategies:a}}=i.appContext,l=o.get(e);let c;return l?c=l:!r.length&&!t&&!s?c=e:(c={},r.length&&r.forEach(d=>mergeOptions$1(c,d,a,!0)),mergeOptions$1(c,e,a)),isObject$4(e)&&o.set(e,c),c}function mergeOptions$1(i,e,t,s=!1){const{mixins:r,extends:o}=e;o&&mergeOptions$1(i,o,t,!0),r&&r.forEach(a=>mergeOptions$1(i,a,t,!0));for(const a in e)if(!(s&&a==="expose")){const l=internalOptionMergeStrats[a]||t&&t[a];i[a]=l?l(i[a],e[a]):e[a]}return i}const internalOptionMergeStrats={data:mergeDataFn,props:mergeObjectOptions,emits:mergeObjectOptions,methods:mergeObjectOptions,computed:mergeObjectOptions,beforeCreate:mergeAsArray,created:mergeAsArray,beforeMount:mergeAsArray,mounted:mergeAsArray,beforeUpdate:mergeAsArray,updated:mergeAsArray,beforeDestroy:mergeAsArray,beforeUnmount:mergeAsArray,destroyed:mergeAsArray,unmounted:mergeAsArray,activated:mergeAsArray,deactivated:mergeAsArray,errorCaptured:mergeAsArray,serverPrefetch:mergeAsArray,components:mergeObjectOptions,directives:mergeObjectOptions,watch:mergeWatchOptions,provide:mergeDataFn,inject:mergeInject};function mergeDataFn(i,e){return e?i?function(){return extend$3(isFunction$4(i)?i.call(this,this):i,isFunction$4(e)?e.call(this,this):e)}:e:i}function mergeInject(i,e){return mergeObjectOptions(normalizeInject(i),normalizeInject(e))}function normalizeInject(i){if(isArray$8(i)){const e={};for(let t=0;t0)&&!(a&16)){if(a&8){const m=i.vnode.dynamicProps;for(let u=0;u{c=!0;const[g,b]=normalizePropsOptions(u,e,!0);extend$3(a,g),b&&l.push(...b)};!t&&e.mixins.length&&e.mixins.forEach(m),i.extends&&m(i.extends),i.mixins&&i.mixins.forEach(m)}if(!o&&!c)return isObject$4(i)&&s.set(i,EMPTY_ARR),EMPTY_ARR;if(isArray$8(o))for(let m=0;m-1,b[1]=S<0||y-1||hasOwn$2(b,"default"))&&l.push(u)}}}const d=[a,l];return isObject$4(i)&&s.set(i,d),d}function validatePropName(i){return i[0]!=="$"}function getType(i){const e=i&&i.toString().match(/^\s*(function|class) (\w+)/);return e?e[2]:i===null?"null":""}function isSameType(i,e){return getType(i)===getType(e)}function getTypeIndex(i,e){return isArray$8(e)?e.findIndex(t=>isSameType(t,i)):isFunction$4(e)&&isSameType(e,i)?0:-1}const isInternalKey=i=>i[0]==="_"||i==="$stable",normalizeSlotValue=i=>isArray$8(i)?i.map(normalizeVNode):[normalizeVNode(i)],normalizeSlot$1=(i,e,t)=>{if(e._n)return e;const s=withCtx((...r)=>normalizeSlotValue(e(...r)),t);return s._c=!1,s},normalizeObjectSlots=(i,e,t)=>{const s=i._ctx;for(const r in i){if(isInternalKey(r))continue;const o=i[r];if(isFunction$4(o))e[r]=normalizeSlot$1(r,o,s);else if(o!=null){const a=normalizeSlotValue(o);e[r]=()=>a}}},normalizeVNodeSlots=(i,e)=>{const t=normalizeSlotValue(e);i.slots.default=()=>t},initSlots=(i,e)=>{if(i.vnode.shapeFlag&32){const t=e._;t?(i.slots=toRaw(e),def(e,"_",t)):normalizeObjectSlots(e,i.slots={})}else i.slots={},e&&normalizeVNodeSlots(i,e);def(i.slots,InternalObjectKey,1)},updateSlots=(i,e,t)=>{const{vnode:s,slots:r}=i;let o=!0,a=EMPTY_OBJ;if(s.shapeFlag&32){const l=e._;l?t&&l===1?o=!1:(extend$3(r,e),!t&&l===1&&delete r._):(o=!e.$stable,normalizeObjectSlots(e,r)),a=e}else e&&(normalizeVNodeSlots(i,e),a={default:1});if(o)for(const l in r)!isInternalKey(l)&&!(l in a)&&delete r[l]};function createAppContext(){return{app:null,config:{isNativeTag:NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let uid$1=0;function createAppAPI(i,e){return function(s,r=null){isFunction$4(s)||(s=Object.assign({},s)),r!=null&&!isObject$4(r)&&(r=null);const o=createAppContext(),a=new Set;let l=!1;const c=o.app={_uid:uid$1++,_component:s,_props:r,_container:null,_context:o,_instance:null,version,get config(){return o.config},set config(d){},use(d,...m){return a.has(d)||(d&&isFunction$4(d.install)?(a.add(d),d.install(c,...m)):isFunction$4(d)&&(a.add(d),d(c,...m))),c},mixin(d){return o.mixins.includes(d)||o.mixins.push(d),c},component(d,m){return m?(o.components[d]=m,c):o.components[d]},directive(d,m){return m?(o.directives[d]=m,c):o.directives[d]},mount(d,m,u){if(!l){const g=createVNode(s,r);return g.appContext=o,m&&e?e(g,d):i(g,d,u),l=!0,c._container=d,d.__vue_app__=c,getExposeProxy(g.component)||g.component.proxy}},unmount(){l&&(i(null,c._container),delete c._container.__vue_app__)},provide(d,m){return o.provides[d]=m,c}};return c}}function setRef(i,e,t,s,r=!1){if(isArray$8(i)){i.forEach((g,b)=>setRef(g,e&&(isArray$8(e)?e[b]:e),t,s,r));return}if(isAsyncWrapper(s)&&!r)return;const o=s.shapeFlag&4?getExposeProxy(s.component)||s.component.proxy:s.el,a=r?null:o,{i:l,r:c}=i,d=e&&e.r,m=l.refs===EMPTY_OBJ?l.refs={}:l.refs,u=l.setupState;if(d!=null&&d!==c&&(isString$2(d)?(m[d]=null,hasOwn$2(u,d)&&(u[d]=null)):isRef(d)&&(d.value=null)),isFunction$4(c))callWithErrorHandling(c,l,12,[a,m]);else{const g=isString$2(c),b=isRef(c);if(g||b){const y=()=>{if(i.f){const S=g?hasOwn$2(u,c)?u[c]:m[c]:c.value;r?isArray$8(S)&&remove$7(S,o):isArray$8(S)?S.includes(o)||S.push(o):g?(m[c]=[o],hasOwn$2(u,c)&&(u[c]=m[c])):(c.value=[o],i.k&&(m[i.k]=c.value))}else g?(m[c]=a,hasOwn$2(u,c)&&(u[c]=a)):b&&(c.value=a,i.k&&(m[i.k]=a))};a?(y.id=-1,queuePostRenderEffect(y,t)):y()}}}const queuePostRenderEffect=queueEffectWithSuspense;function createRenderer(i){return baseCreateRenderer(i)}function baseCreateRenderer(i,e){const t=getGlobalThis();t.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:a,createText:l,createComment:c,setText:d,setElementText:m,parentNode:u,nextSibling:g,setScopeId:b=NOOP,insertStaticContent:y}=i,S=(U,Q,M,$=null,z=null,F=null,O=!1,H=null,ie=!!Q.dynamicChildren)=>{if(U===Q)return;U&&!isSameVNodeType(U,Q)&&($=de(U),K(U,z,F,!0),U=null),Q.patchFlag===-2&&(ie=!1,Q.dynamicChildren=null);const{type:ee,ref:te,shapeFlag:ce}=Q;switch(ee){case Text:v(U,Q,M,$);break;case Comment:x(U,Q,M,$);break;case Static:U==null&&A(Q,M,$,O);break;case Fragment:B(U,Q,M,$,z,F,O,H,ie);break;default:ce&1?_(U,Q,M,$,z,F,O,H,ie):ce&6?k(U,Q,M,$,z,F,O,H,ie):(ce&64||ce&128)&&ee.process(U,Q,M,$,z,F,O,H,ie,me)}te!=null&&z&&setRef(te,U&&U.ref,F,Q||U,!Q)},v=(U,Q,M,$)=>{if(U==null)s(Q.el=l(Q.children),M,$);else{const z=Q.el=U.el;Q.children!==U.children&&d(z,Q.children)}},x=(U,Q,M,$)=>{U==null?s(Q.el=c(Q.children||""),M,$):Q.el=U.el},A=(U,Q,M,$)=>{[U.el,U.anchor]=y(U.children,Q,M,$,U.el,U.anchor)},E=({el:U,anchor:Q},M,$)=>{let z;for(;U&&U!==Q;)z=g(U),s(U,M,$),U=z;s(Q,M,$)},w=({el:U,anchor:Q})=>{let M;for(;U&&U!==Q;)M=g(U),r(U),U=M;r(Q)},_=(U,Q,M,$,z,F,O,H,ie)=>{O=O||Q.type==="svg",U==null?C(Q,M,$,z,F,O,H,ie):R(U,Q,z,F,O,H,ie)},C=(U,Q,M,$,z,F,O,H)=>{let ie,ee;const{type:te,props:ce,shapeFlag:he,transition:re,dirs:ge}=U;if(ie=U.el=a(U.type,F,ce&&ce.is,ce),he&8?m(ie,U.children):he&16&&I(U.children,ie,null,$,z,F&&te!=="foreignObject",O,H),ge&&invokeDirectiveHook(U,null,$,"created"),P(ie,U,U.scopeId,O,$),ce){for(const ue in ce)ue!=="value"&&!isReservedProp(ue)&&o(ie,ue,null,ce[ue],F,U.children,$,z,ae);"value"in ce&&o(ie,"value",null,ce.value),(ee=ce.onVnodeBeforeMount)&&invokeVNodeHook(ee,$,U)}ge&&invokeDirectiveHook(U,null,$,"beforeMount");const xe=(!z||z&&!z.pendingBranch)&&re&&!re.persisted;xe&&re.beforeEnter(ie),s(ie,Q,M),((ee=ce&&ce.onVnodeMounted)||xe||ge)&&queuePostRenderEffect(()=>{ee&&invokeVNodeHook(ee,$,U),xe&&re.enter(ie),ge&&invokeDirectiveHook(U,null,$,"mounted")},z)},P=(U,Q,M,$,z)=>{if(M&&b(U,M),$)for(let F=0;F<$.length;F++)b(U,$[F]);if(z){let F=z.subTree;if(Q===F){const O=z.vnode;P(U,O,O.scopeId,O.slotScopeIds,z.parent)}}},I=(U,Q,M,$,z,F,O,H,ie=0)=>{for(let ee=ie;ee{const H=Q.el=U.el;let{patchFlag:ie,dynamicChildren:ee,dirs:te}=Q;ie|=U.patchFlag&16;const ce=U.props||EMPTY_OBJ,he=Q.props||EMPTY_OBJ;let re;M&&toggleRecurse(M,!1),(re=he.onVnodeBeforeUpdate)&&invokeVNodeHook(re,M,Q,U),te&&invokeDirectiveHook(Q,U,M,"beforeUpdate"),M&&toggleRecurse(M,!0);const ge=z&&Q.type!=="foreignObject";if(ee?N(U.dynamicChildren,ee,H,M,$,ge,F):O||se(U,Q,H,null,M,$,ge,F,!1),ie>0){if(ie&16)G(H,Q,ce,he,M,$,z);else if(ie&2&&ce.class!==he.class&&o(H,"class",null,he.class,z),ie&4&&o(H,"style",ce.style,he.style,z),ie&8){const xe=Q.dynamicProps;for(let ue=0;ue{re&&invokeVNodeHook(re,M,Q,U),te&&invokeDirectiveHook(Q,U,M,"updated")},$)},N=(U,Q,M,$,z,F,O)=>{for(let H=0;H{if(M!==$){if(M!==EMPTY_OBJ)for(const H in M)!isReservedProp(H)&&!(H in $)&&o(U,H,M[H],null,O,Q.children,z,F,ae);for(const H in $){if(isReservedProp(H))continue;const ie=$[H],ee=M[H];ie!==ee&&H!=="value"&&o(U,H,ee,ie,O,Q.children,z,F,ae)}"value"in $&&o(U,"value",M.value,$.value)}},B=(U,Q,M,$,z,F,O,H,ie)=>{const ee=Q.el=U?U.el:l(""),te=Q.anchor=U?U.anchor:l("");let{patchFlag:ce,dynamicChildren:he,slotScopeIds:re}=Q;re&&(H=H?H.concat(re):re),U==null?(s(ee,M,$),s(te,M,$),I(Q.children,M,te,z,F,O,H,ie)):ce>0&&ce&64&&he&&U.dynamicChildren?(N(U.dynamicChildren,he,M,z,F,O,H),(Q.key!=null||z&&Q===z.subTree)&&traverseStaticChildren(U,Q,!0)):se(U,Q,M,te,z,F,O,H,ie)},k=(U,Q,M,$,z,F,O,H,ie)=>{Q.slotScopeIds=H,U==null?Q.shapeFlag&512?z.ctx.activate(Q,M,$,O,ie):T(Q,M,$,z,F,O,ie):V(U,Q,ie)},T=(U,Q,M,$,z,F,O)=>{const H=U.component=createComponentInstance(U,$,z);if(isKeepAlive(U)&&(H.ctx.renderer=me),setupComponent(H),H.asyncDep){if(z&&z.registerDep(H,J),!U.el){const ie=H.subTree=createVNode(Comment);x(null,ie,Q,M)}return}J(H,U,Q,M,z,F,O)},V=(U,Q,M)=>{const $=Q.component=U.component;if(shouldUpdateComponent(U,Q,M))if($.asyncDep&&!$.asyncResolved){W($,Q,M);return}else $.next=Q,invalidateJob($.update),$.update();else Q.el=U.el,$.vnode=Q},J=(U,Q,M,$,z,F,O)=>{const H=()=>{if(U.isMounted){let{next:te,bu:ce,u:he,parent:re,vnode:ge}=U,xe=te,ue;toggleRecurse(U,!1),te?(te.el=ge.el,W(U,te,O)):te=ge,ce&&invokeArrayFns(ce),(ue=te.props&&te.props.onVnodeBeforeUpdate)&&invokeVNodeHook(ue,re,te,ge),toggleRecurse(U,!0);const Ae=renderComponentRoot(U),Ee=U.subTree;U.subTree=Ae,S(Ee,Ae,u(Ee.el),de(Ee),U,z,F),te.el=Ae.el,xe===null&&updateHOCHostEl(U,Ae.el),he&&queuePostRenderEffect(he,z),(ue=te.props&&te.props.onVnodeUpdated)&&queuePostRenderEffect(()=>invokeVNodeHook(ue,re,te,ge),z)}else{let te;const{el:ce,props:he}=Q,{bm:re,m:ge,parent:xe}=U,ue=isAsyncWrapper(Q);if(toggleRecurse(U,!1),re&&invokeArrayFns(re),!ue&&(te=he&&he.onVnodeBeforeMount)&&invokeVNodeHook(te,xe,Q),toggleRecurse(U,!0),ce&&ye){const Ae=()=>{U.subTree=renderComponentRoot(U),ye(ce,U.subTree,U,z,null)};ue?Q.type.__asyncLoader().then(()=>!U.isUnmounted&&Ae()):Ae()}else{const Ae=U.subTree=renderComponentRoot(U);S(null,Ae,M,$,U,z,F),Q.el=Ae.el}if(ge&&queuePostRenderEffect(ge,z),!ue&&(te=he&&he.onVnodeMounted)){const Ae=Q;queuePostRenderEffect(()=>invokeVNodeHook(te,xe,Ae),z)}(Q.shapeFlag&256||xe&&isAsyncWrapper(xe.vnode)&&xe.vnode.shapeFlag&256)&&U.a&&queuePostRenderEffect(U.a,z),U.isMounted=!0,Q=M=$=null}},ie=U.effect=new ReactiveEffect(H,()=>queueJob(ee),U.scope),ee=U.update=()=>ie.run();ee.id=U.uid,toggleRecurse(U,!0),ee()},W=(U,Q,M)=>{Q.component=U;const $=U.vnode.props;U.vnode=Q,U.next=null,updateProps(U,Q.props,$,M),updateSlots(U,Q.children,M),pauseTracking(),flushPreFlushCbs(),resetTracking()},se=(U,Q,M,$,z,F,O,H,ie=!1)=>{const ee=U&&U.children,te=U?U.shapeFlag:0,ce=Q.children,{patchFlag:he,shapeFlag:re}=Q;if(he>0){if(he&128){fe(ee,ce,M,$,z,F,O,H,ie);return}else if(he&256){ne(ee,ce,M,$,z,F,O,H,ie);return}}re&8?(te&16&&ae(ee,z,F),ce!==ee&&m(M,ce)):te&16?re&16?fe(ee,ce,M,$,z,F,O,H,ie):ae(ee,z,F,!0):(te&8&&m(M,""),re&16&&I(ce,M,$,z,F,O,H,ie))},ne=(U,Q,M,$,z,F,O,H,ie)=>{U=U||EMPTY_ARR,Q=Q||EMPTY_ARR;const ee=U.length,te=Q.length,ce=Math.min(ee,te);let he;for(he=0;hete?ae(U,z,F,!0,!1,ce):I(Q,M,$,z,F,O,H,ie,ce)},fe=(U,Q,M,$,z,F,O,H,ie)=>{let ee=0;const te=Q.length;let ce=U.length-1,he=te-1;for(;ee<=ce&&ee<=he;){const re=U[ee],ge=Q[ee]=ie?cloneIfMounted(Q[ee]):normalizeVNode(Q[ee]);if(isSameVNodeType(re,ge))S(re,ge,M,null,z,F,O,H,ie);else break;ee++}for(;ee<=ce&&ee<=he;){const re=U[ce],ge=Q[he]=ie?cloneIfMounted(Q[he]):normalizeVNode(Q[he]);if(isSameVNodeType(re,ge))S(re,ge,M,null,z,F,O,H,ie);else break;ce--,he--}if(ee>ce){if(ee<=he){const re=he+1,ge=rehe)for(;ee<=ce;)K(U[ee],z,F,!0),ee++;else{const re=ee,ge=ee,xe=new Map;for(ee=ge;ee<=he;ee++){const Ie=Q[ee]=ie?cloneIfMounted(Q[ee]):normalizeVNode(Q[ee]);Ie.key!=null&&xe.set(Ie.key,ee)}let ue,Ae=0;const Ee=he-ge+1;let _e=!1,Te=0;const Pe=new Array(Ee);for(ee=0;ee=Ee){K(Ie,z,F,!0);continue}let Re;if(Ie.key!=null)Re=xe.get(Ie.key);else for(ue=ge;ue<=he;ue++)if(Pe[ue-ge]===0&&isSameVNodeType(Ie,Q[ue])){Re=ue;break}Re===void 0?K(Ie,z,F,!0):(Pe[Re-ge]=ee+1,Re>=Te?Te=Re:_e=!0,S(Ie,Q[Re],M,null,z,F,O,H,ie),Ae++)}const Ce=_e?getSequence(Pe):EMPTY_ARR;for(ue=Ce.length-1,ee=Ee-1;ee>=0;ee--){const Ie=ge+ee,Re=Q[Ie],qe=Ie+1{const{el:F,type:O,transition:H,children:ie,shapeFlag:ee}=U;if(ee&6){Z(U.component.subTree,Q,M,$);return}if(ee&128){U.suspense.move(Q,M,$);return}if(ee&64){O.move(U,Q,M,me);return}if(O===Fragment){s(F,Q,M);for(let ce=0;ceH.enter(F),z);else{const{leave:ce,delayLeave:he,afterLeave:re}=H,ge=()=>s(F,Q,M),xe=()=>{ce(F,()=>{ge(),re&&re()})};he?he(F,ge,xe):xe()}else s(F,Q,M)},K=(U,Q,M,$=!1,z=!1)=>{const{type:F,props:O,ref:H,children:ie,dynamicChildren:ee,shapeFlag:te,patchFlag:ce,dirs:he}=U;if(H!=null&&setRef(H,null,M,U,!0),te&256){Q.ctx.deactivate(U);return}const re=te&1&&he,ge=!isAsyncWrapper(U);let xe;if(ge&&(xe=O&&O.onVnodeBeforeUnmount)&&invokeVNodeHook(xe,Q,U),te&6)Y(U.component,M,$);else{if(te&128){U.suspense.unmount(M,$);return}re&&invokeDirectiveHook(U,null,Q,"beforeUnmount"),te&64?U.type.remove(U,Q,M,z,me,$):ee&&(F!==Fragment||ce>0&&ce&64)?ae(ee,Q,M,!1,!0):(F===Fragment&&ce&384||!z&&te&16)&&ae(ie,Q,M),$&&be(U)}(ge&&(xe=O&&O.onVnodeUnmounted)||re)&&queuePostRenderEffect(()=>{xe&&invokeVNodeHook(xe,Q,U),re&&invokeDirectiveHook(U,null,Q,"unmounted")},M)},be=U=>{const{type:Q,el:M,anchor:$,transition:z}=U;if(Q===Fragment){oe(M,$);return}if(Q===Static){w(U);return}const F=()=>{r(M),z&&!z.persisted&&z.afterLeave&&z.afterLeave()};if(U.shapeFlag&1&&z&&!z.persisted){const{leave:O,delayLeave:H}=z,ie=()=>O(M,F);H?H(U.el,F,ie):ie()}else F()},oe=(U,Q)=>{let M;for(;U!==Q;)M=g(U),r(U),U=M;r(Q)},Y=(U,Q,M)=>{const{bum:$,scope:z,update:F,subTree:O,um:H}=U;$&&invokeArrayFns($),z.stop(),F&&(F.active=!1,K(O,U,Q,M)),H&&queuePostRenderEffect(H,Q),queuePostRenderEffect(()=>{U.isUnmounted=!0},Q),Q&&Q.pendingBranch&&!Q.isUnmounted&&U.asyncDep&&!U.asyncResolved&&U.suspenseId===Q.pendingId&&(Q.deps--,Q.deps===0&&Q.resolve())},ae=(U,Q,M,$=!1,z=!1,F=0)=>{for(let O=F;OU.shapeFlag&6?de(U.component.subTree):U.shapeFlag&128?U.suspense.next():g(U.anchor||U.el),le=(U,Q,M)=>{U==null?Q._vnode&&K(Q._vnode,null,null,!0):S(Q._vnode||null,U,Q,null,null,null,M),flushPreFlushCbs(),flushPostFlushCbs(),Q._vnode=U},me={p:S,um:K,m:Z,r:be,mt:T,mc:I,pc:se,pbc:N,n:de,o:i};let ve,ye;return e&&([ve,ye]=e(me)),{render:le,hydrate:ve,createApp:createAppAPI(le,ve)}}function toggleRecurse({effect:i,update:e},t){i.allowRecurse=e.allowRecurse=t}function traverseStaticChildren(i,e,t=!1){const s=i.children,r=e.children;if(isArray$8(s)&&isArray$8(r))for(let o=0;o>1,i[t[l]]0&&(e[s]=t[o-1]),t[o]=s)}}for(o=t.length,a=t[o-1];o-- >0;)t[o]=a,a=e[a];return t}const isTeleport=i=>i.__isTeleport,isTeleportDisabled=i=>i&&(i.disabled||i.disabled===""),isTargetSVG=i=>typeof SVGElement<"u"&&i instanceof SVGElement,resolveTarget=(i,e)=>{const t=i&&i.to;return isString$2(t)?e?e(t):null:t},TeleportImpl={__isTeleport:!0,process(i,e,t,s,r,o,a,l,c,d){const{mc:m,pc:u,pbc:g,o:{insert:b,querySelector:y,createText:S,createComment:v}}=d,x=isTeleportDisabled(e.props);let{shapeFlag:A,children:E,dynamicChildren:w}=e;if(i==null){const _=e.el=S(""),C=e.anchor=S("");b(_,t,s),b(C,t,s);const P=e.target=resolveTarget(e.props,y),I=e.targetAnchor=S("");P&&(b(I,P),a=a||isTargetSVG(P));const R=(N,G)=>{A&16&&m(E,N,G,r,o,a,l,c)};x?R(t,C):P&&R(P,I)}else{e.el=i.el;const _=e.anchor=i.anchor,C=e.target=i.target,P=e.targetAnchor=i.targetAnchor,I=isTeleportDisabled(i.props),R=I?t:C,N=I?_:P;if(a=a||isTargetSVG(C),w?(g(i.dynamicChildren,w,R,r,o,a,l),traverseStaticChildren(i,e,!0)):c||u(i,e,R,N,r,o,a,l,!1),x)I||moveTeleport(e,t,_,d,1);else if((e.props&&e.props.to)!==(i.props&&i.props.to)){const G=e.target=resolveTarget(e.props,y);G&&moveTeleport(e,G,null,d,0)}else I&&moveTeleport(e,C,P,d,1)}updateCssVars(e)},remove(i,e,t,s,{um:r,o:{remove:o}},a){const{shapeFlag:l,children:c,anchor:d,targetAnchor:m,target:u,props:g}=i;if(u&&o(m),(a||!isTeleportDisabled(g))&&(o(d),l&16))for(let b=0;b0?currentBlock||EMPTY_ARR:null,closeBlock(),isBlockTreeEnabled>0&¤tBlock&¤tBlock.push(i),i}function createElementBlock(i,e,t,s,r,o){return setupBlock(createBaseVNode(i,e,t,s,r,o,!0))}function createBlock(i,e,t,s,r){return setupBlock(createVNode(i,e,t,s,r,!0))}function isVNode(i){return i?i.__v_isVNode===!0:!1}function isSameVNodeType(i,e){return i.type===e.type&&i.key===e.key}const InternalObjectKey="__vInternal",normalizeKey=({key:i})=>i!=null?i:null,normalizeRef=({ref:i,ref_key:e,ref_for:t})=>i!=null?isString$2(i)||isRef(i)||isFunction$4(i)?{i:currentRenderingInstance,r:i,k:e,f:!!t}:i:null;function createBaseVNode(i,e=null,t=null,s=0,r=null,o=i===Fragment?0:1,a=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:i,props:e,key:e&&normalizeKey(e),ref:e&&normalizeRef(e),scopeId:currentScopeId,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:currentRenderingInstance};return l?(normalizeChildren(c,t),o&128&&i.normalize(c)):t&&(c.shapeFlag|=isString$2(t)?8:16),isBlockTreeEnabled>0&&!a&¤tBlock&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&¤tBlock.push(c),c}const createVNode=_createVNode;function _createVNode(i,e=null,t=null,s=0,r=null,o=!1){if((!i||i===NULL_DYNAMIC_COMPONENT)&&(i=Comment),isVNode(i)){const l=cloneVNode(i,e,!0);return t&&normalizeChildren(l,t),isBlockTreeEnabled>0&&!o&¤tBlock&&(l.shapeFlag&6?currentBlock[currentBlock.indexOf(i)]=l:currentBlock.push(l)),l.patchFlag|=-2,l}if(isClassComponent(i)&&(i=i.__vccOpts),e){e=guardReactiveProps(e);let{class:l,style:c}=e;l&&!isString$2(l)&&(e.class=normalizeClass(l)),isObject$4(c)&&(isProxy(c)&&!isArray$8(c)&&(c=extend$3({},c)),e.style=normalizeStyle(c))}const a=isString$2(i)?1:isSuspense(i)?128:isTeleport(i)?64:isObject$4(i)?4:isFunction$4(i)?2:0;return createBaseVNode(i,e,t,s,r,a,o,!0)}function guardReactiveProps(i){return i?isProxy(i)||InternalObjectKey in i?extend$3({},i):i:null}function cloneVNode(i,e,t=!1){const{props:s,ref:r,patchFlag:o,children:a}=i,l=e?mergeProps(s||{},e):s;return{__v_isVNode:!0,__v_skip:!0,type:i.type,props:l,key:l&&normalizeKey(l),ref:e&&e.ref?t&&r?isArray$8(r)?r.concat(normalizeRef(e)):[r,normalizeRef(e)]:normalizeRef(e):r,scopeId:i.scopeId,slotScopeIds:i.slotScopeIds,children:a,target:i.target,targetAnchor:i.targetAnchor,staticCount:i.staticCount,shapeFlag:i.shapeFlag,patchFlag:e&&i.type!==Fragment?o===-1?16:o|16:o,dynamicProps:i.dynamicProps,dynamicChildren:i.dynamicChildren,appContext:i.appContext,dirs:i.dirs,transition:i.transition,component:i.component,suspense:i.suspense,ssContent:i.ssContent&&cloneVNode(i.ssContent),ssFallback:i.ssFallback&&cloneVNode(i.ssFallback),el:i.el,anchor:i.anchor,ctx:i.ctx,ce:i.ce}}function createTextVNode(i=" ",e=0){return createVNode(Text,null,i,e)}function createCommentVNode(i="",e=!1){return e?(openBlock(),createBlock(Comment,null,i)):createVNode(Comment,null,i)}function normalizeVNode(i){return i==null||typeof i=="boolean"?createVNode(Comment):isArray$8(i)?createVNode(Fragment,null,i.slice()):typeof i=="object"?cloneIfMounted(i):createVNode(Text,null,String(i))}function cloneIfMounted(i){return i.el===null&&i.patchFlag!==-1||i.memo?i:cloneVNode(i)}function normalizeChildren(i,e){let t=0;const{shapeFlag:s}=i;if(e==null)e=null;else if(isArray$8(e))t=16;else if(typeof e=="object")if(s&65){const r=e.default;r&&(r._c&&(r._d=!1),normalizeChildren(i,r()),r._c&&(r._d=!0));return}else{t=32;const r=e._;!r&&!(InternalObjectKey in e)?e._ctx=currentRenderingInstance:r===3&¤tRenderingInstance&&(currentRenderingInstance.slots._===1?e._=1:(e._=2,i.patchFlag|=1024))}else isFunction$4(e)?(e={default:e,_ctx:currentRenderingInstance},t=32):(e=String(e),s&64?(t=16,e=[createTextVNode(e)]):t=8);i.children=e,i.shapeFlag|=t}function mergeProps(...i){const e={};for(let t=0;tcurrentInstance||currentRenderingInstance,setCurrentInstance=i=>{currentInstance=i,i.scope.on()},unsetCurrentInstance=()=>{currentInstance&¤tInstance.scope.off(),currentInstance=null};function isStatefulComponent(i){return i.vnode.shapeFlag&4}let isInSSRComponentSetup=!1;function setupComponent(i,e=!1){isInSSRComponentSetup=e;const{props:t,children:s}=i.vnode,r=isStatefulComponent(i);initProps(i,t,r,e),initSlots(i,s);const o=r?setupStatefulComponent(i,e):void 0;return isInSSRComponentSetup=!1,o}function setupStatefulComponent(i,e){const t=i.type;i.accessCache=Object.create(null),i.proxy=markRaw(new Proxy(i.ctx,PublicInstanceProxyHandlers));const{setup:s}=t;if(s){const r=i.setupContext=s.length>1?createSetupContext(i):null;setCurrentInstance(i),pauseTracking();const o=callWithErrorHandling(s,i,0,[i.props,r]);if(resetTracking(),unsetCurrentInstance(),isPromise$1(o)){if(o.then(unsetCurrentInstance,unsetCurrentInstance),e)return o.then(a=>{handleSetupResult(i,a,e)}).catch(a=>{handleError(a,i,0)});i.asyncDep=o}else handleSetupResult(i,o,e)}else finishComponentSetup(i,e)}function handleSetupResult(i,e,t){isFunction$4(e)?i.type.__ssrInlineRender?i.ssrRender=e:i.render=e:isObject$4(e)&&(i.setupState=proxyRefs(e)),finishComponentSetup(i,t)}let compile$1;function finishComponentSetup(i,e,t){const s=i.type;if(!i.render){if(!e&&compile$1&&!s.render){const r=s.template||resolveMergedOptions(i).template;if(r){const{isCustomElement:o,compilerOptions:a}=i.appContext.config,{delimiters:l,compilerOptions:c}=s,d=extend$3(extend$3({isCustomElement:o,delimiters:l},a),c);s.render=compile$1(r,d)}}i.render=s.render||NOOP}setCurrentInstance(i),pauseTracking(),applyOptions(i),resetTracking(),unsetCurrentInstance()}function createAttrsProxy(i){return new Proxy(i.attrs,{get(e,t){return track(i,"get","$attrs"),e[t]}})}function createSetupContext(i){const e=s=>{i.exposed=s||{}};let t;return{get attrs(){return t||(t=createAttrsProxy(i))},slots:i.slots,emit:i.emit,expose:e}}function getExposeProxy(i){if(i.exposed)return i.exposeProxy||(i.exposeProxy=new Proxy(proxyRefs(markRaw(i.exposed)),{get(e,t){if(t in e)return e[t];if(t in publicPropertiesMap)return publicPropertiesMap[t](i)},has(e,t){return t in e||t in publicPropertiesMap}}))}function getComponentName(i,e=!0){return isFunction$4(i)?i.displayName||i.name:i.name||e&&i.__name}function isClassComponent(i){return isFunction$4(i)&&"__vccOpts"in i}const computed=(i,e)=>computed$1(i,e,isInSSRComponentSetup);function h(i,e,t){const s=arguments.length;return s===2?isObject$4(e)&&!isArray$8(e)?isVNode(e)?createVNode(i,null,[e]):createVNode(i,e):createVNode(i,null,e):(s>3?t=Array.prototype.slice.call(arguments,2):s===3&&isVNode(t)&&(t=[t]),createVNode(i,e,t))}const ssrContextKey=Symbol(""),useSSRContext=()=>inject(ssrContextKey),version="3.2.47",svgNS="http://www.w3.org/2000/svg",doc$2=typeof document<"u"?document:null,templateContainer=doc$2&&doc$2.createElement("template"),nodeOps={insert:(i,e,t)=>{e.insertBefore(i,t||null)},remove:i=>{const e=i.parentNode;e&&e.removeChild(i)},createElement:(i,e,t,s)=>{const r=e?doc$2.createElementNS(svgNS,i):doc$2.createElement(i,t?{is:t}:void 0);return i==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:i=>doc$2.createTextNode(i),createComment:i=>doc$2.createComment(i),setText:(i,e)=>{i.nodeValue=e},setElementText:(i,e)=>{i.textContent=e},parentNode:i=>i.parentNode,nextSibling:i=>i.nextSibling,querySelector:i=>doc$2.querySelector(i),setScopeId(i,e){i.setAttribute(e,"")},insertStaticContent(i,e,t,s,r,o){const a=t?t.previousSibling:e.lastChild;if(r&&(r===o||r.nextSibling))for(;e.insertBefore(r.cloneNode(!0),t),!(r===o||!(r=r.nextSibling)););else{templateContainer.innerHTML=s?`${i}`:i;const l=templateContainer.content;if(s){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}e.insertBefore(l,t)}return[a?a.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}};function patchClass(i,e,t){const s=i._vtc;s&&(e=(e?[e,...s]:[...s]).join(" ")),e==null?i.removeAttribute("class"):t?i.setAttribute("class",e):i.className=e}function patchStyle(i,e,t){const s=i.style,r=isString$2(t);if(t&&!r){if(e&&!isString$2(e))for(const o in e)t[o]==null&&setStyle(s,o,"");for(const o in t)setStyle(s,o,t[o])}else{const o=s.display;r?e!==t&&(s.cssText=t):e&&i.removeAttribute("style"),"_vod"in i&&(s.display=o)}}const importantRE=/\s*!important$/;function setStyle(i,e,t){if(isArray$8(t))t.forEach(s=>setStyle(i,e,s));else if(t==null&&(t=""),e.startsWith("--"))i.setProperty(e,t);else{const s=autoPrefix(i,e);importantRE.test(t)?i.setProperty(hyphenate(s),t.replace(importantRE,""),"important"):i[s]=t}}const prefixes=["Webkit","Moz","ms"],prefixCache={};function autoPrefix(i,e){const t=prefixCache[e];if(t)return t;let s=camelize$1(e);if(s!=="filter"&&s in i)return prefixCache[e]=s;s=capitalize(s);for(let r=0;rcachedNow||(p.then(()=>cachedNow=0),cachedNow=Date.now());function createInvoker(i,e){const t=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=t.attached)return;callWithAsyncErrorHandling(patchStopImmediatePropagation(s,t.value),e,5,[s])};return t.value=i,t.attached=getNow(),t}function patchStopImmediatePropagation(i,e){if(isArray$8(e)){const t=i.stopImmediatePropagation;return i.stopImmediatePropagation=()=>{t.call(i),i._stopped=!0},e.map(s=>r=>!r._stopped&&s&&s(r))}else return e}const nativeOnRE=/^on[a-z]/,patchProp=(i,e,t,s,r=!1,o,a,l,c)=>{e==="class"?patchClass(i,s,r):e==="style"?patchStyle(i,t,s):isOn(e)?isModelListener(e)||patchEvent(i,e,t,s,a):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):shouldSetAsProp(i,e,s,r))?patchDOMProp(i,e,s,o,a,l,c):(e==="true-value"?i._trueValue=s:e==="false-value"&&(i._falseValue=s),patchAttr(i,e,s,r))};function shouldSetAsProp(i,e,t,s){return s?!!(e==="innerHTML"||e==="textContent"||e in i&&nativeOnRE.test(e)&&isFunction$4(t)):e==="spellcheck"||e==="draggable"||e==="translate"||e==="form"||e==="list"&&i.tagName==="INPUT"||e==="type"&&i.tagName==="TEXTAREA"||nativeOnRE.test(e)&&isString$2(t)?!1:e in i}const TRANSITION="transition",ANIMATION="animation",Transition=(i,{slots:e})=>h(BaseTransition,resolveTransitionProps(i),e);Transition.displayName="Transition";const DOMTransitionPropsValidators={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},TransitionPropsValidators=Transition.props=extend$3({},BaseTransition.props,DOMTransitionPropsValidators),callHook=(i,e=[])=>{isArray$8(i)?i.forEach(t=>t(...e)):i&&i(...e)},hasExplicitCallback=i=>i?isArray$8(i)?i.some(e=>e.length>1):i.length>1:!1;function resolveTransitionProps(i){const e={};for(const B in i)B in DOMTransitionPropsValidators||(e[B]=i[B]);if(i.css===!1)return e;const{name:t="v",type:s,duration:r,enterFromClass:o=`${t}-enter-from`,enterActiveClass:a=`${t}-enter-active`,enterToClass:l=`${t}-enter-to`,appearFromClass:c=o,appearActiveClass:d=a,appearToClass:m=l,leaveFromClass:u=`${t}-leave-from`,leaveActiveClass:g=`${t}-leave-active`,leaveToClass:b=`${t}-leave-to`}=i,y=normalizeDuration(r),S=y&&y[0],v=y&&y[1],{onBeforeEnter:x,onEnter:A,onEnterCancelled:E,onLeave:w,onLeaveCancelled:_,onBeforeAppear:C=x,onAppear:P=A,onAppearCancelled:I=E}=e,R=(B,k,T)=>{removeTransitionClass(B,k?m:l),removeTransitionClass(B,k?d:a),T&&T()},N=(B,k)=>{B._isLeaving=!1,removeTransitionClass(B,u),removeTransitionClass(B,b),removeTransitionClass(B,g),k&&k()},G=B=>(k,T)=>{const V=B?P:A,J=()=>R(k,B,T);callHook(V,[k,J]),nextFrame(()=>{removeTransitionClass(k,B?c:o),addTransitionClass(k,B?m:l),hasExplicitCallback(V)||whenTransitionEnds(k,s,S,J)})};return extend$3(e,{onBeforeEnter(B){callHook(x,[B]),addTransitionClass(B,o),addTransitionClass(B,a)},onBeforeAppear(B){callHook(C,[B]),addTransitionClass(B,c),addTransitionClass(B,d)},onEnter:G(!1),onAppear:G(!0),onLeave(B,k){B._isLeaving=!0;const T=()=>N(B,k);addTransitionClass(B,u),forceReflow(),addTransitionClass(B,g),nextFrame(()=>{B._isLeaving&&(removeTransitionClass(B,u),addTransitionClass(B,b),hasExplicitCallback(w)||whenTransitionEnds(B,s,v,T))}),callHook(w,[B,T])},onEnterCancelled(B){R(B,!1),callHook(E,[B])},onAppearCancelled(B){R(B,!0),callHook(I,[B])},onLeaveCancelled(B){N(B),callHook(_,[B])}})}function normalizeDuration(i){if(i==null)return null;if(isObject$4(i))return[NumberOf(i.enter),NumberOf(i.leave)];{const e=NumberOf(i);return[e,e]}}function NumberOf(i){return toNumber$1(i)}function addTransitionClass(i,e){e.split(/\s+/).forEach(t=>t&&i.classList.add(t)),(i._vtc||(i._vtc=new Set)).add(e)}function removeTransitionClass(i,e){e.split(/\s+/).forEach(s=>s&&i.classList.remove(s));const{_vtc:t}=i;t&&(t.delete(e),t.size||(i._vtc=void 0))}function nextFrame(i){requestAnimationFrame(()=>{requestAnimationFrame(i)})}let endId=0;function whenTransitionEnds(i,e,t,s){const r=i._endId=++endId,o=()=>{r===i._endId&&s()};if(t)return setTimeout(o,t);const{type:a,timeout:l,propCount:c}=getTransitionInfo(i,e);if(!a)return s();const d=a+"end";let m=0;const u=()=>{i.removeEventListener(d,g),o()},g=b=>{b.target===i&&++m>=c&&u()};setTimeout(()=>{m(t[y]||"").split(", "),r=s(`${TRANSITION}Delay`),o=s(`${TRANSITION}Duration`),a=getTimeout(r,o),l=s(`${ANIMATION}Delay`),c=s(`${ANIMATION}Duration`),d=getTimeout(l,c);let m=null,u=0,g=0;e===TRANSITION?a>0&&(m=TRANSITION,u=a,g=o.length):e===ANIMATION?d>0&&(m=ANIMATION,u=d,g=c.length):(u=Math.max(a,d),m=u>0?a>d?TRANSITION:ANIMATION:null,g=m?m===TRANSITION?o.length:c.length:0);const b=m===TRANSITION&&/\b(transform|all)(,|$)/.test(s(`${TRANSITION}Property`).toString());return{type:m,timeout:u,propCount:g,hasTransform:b}}function getTimeout(i,e){for(;i.lengthtoMs(t)+toMs(i[s])))}function toMs(i){return Number(i.slice(0,-1).replace(",","."))*1e3}function forceReflow(){return document.body.offsetHeight}const positionMap=new WeakMap,newPositionMap=new WeakMap,TransitionGroupImpl={name:"TransitionGroup",props:extend$3({},TransitionPropsValidators,{tag:String,moveClass:String}),setup(i,{slots:e}){const t=getCurrentInstance(),s=useTransitionState();let r,o;return onUpdated(()=>{if(!r.length)return;const a=i.moveClass||`${i.name||"v"}-move`;if(!hasCSSTransform(r[0].el,t.vnode.el,a))return;r.forEach(callPendingCbs),r.forEach(recordPosition);const l=r.filter(applyTranslation);forceReflow(),l.forEach(c=>{const d=c.el,m=d.style;addTransitionClass(d,a),m.transform=m.webkitTransform=m.transitionDuration="";const u=d._moveCb=g=>{g&&g.target!==d||(!g||/transform$/.test(g.propertyName))&&(d.removeEventListener("transitionend",u),d._moveCb=null,removeTransitionClass(d,a))};d.addEventListener("transitionend",u)})}),()=>{const a=toRaw(i),l=resolveTransitionProps(a);let c=a.tag||Fragment;r=o,o=e.default?getTransitionRawChildren(e.default()):[];for(let d=0;ddelete i.mode;TransitionGroupImpl.props;const TransitionGroup=TransitionGroupImpl;function callPendingCbs(i){const e=i.el;e._moveCb&&e._moveCb(),e._enterCb&&e._enterCb()}function recordPosition(i){newPositionMap.set(i,i.el.getBoundingClientRect())}function applyTranslation(i){const e=positionMap.get(i),t=newPositionMap.get(i),s=e.left-t.left,r=e.top-t.top;if(s||r){const o=i.el.style;return o.transform=o.webkitTransform=`translate(${s}px,${r}px)`,o.transitionDuration="0s",i}}function hasCSSTransform(i,e,t){const s=i.cloneNode();i._vtc&&i._vtc.forEach(a=>{a.split(/\s+/).forEach(l=>l&&s.classList.remove(l))}),t.split(/\s+/).forEach(a=>a&&s.classList.add(a)),s.style.display="none";const r=e.nodeType===1?e:e.parentNode;r.appendChild(s);const{hasTransform:o}=getTransitionInfo(s);return r.removeChild(s),o}const keyNames={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},withKeys=(i,e)=>t=>{if(!("key"in t))return;const s=hyphenate(t.key);if(e.some(r=>r===s||keyNames[r]===s))return i(t)},vShow={beforeMount(i,{value:e},{transition:t}){i._vod=i.style.display==="none"?"":i.style.display,t&&e?t.beforeEnter(i):setDisplay(i,e)},mounted(i,{value:e},{transition:t}){t&&e&&t.enter(i)},updated(i,{value:e,oldValue:t},{transition:s}){!e!=!t&&(s?e?(s.beforeEnter(i),setDisplay(i,!0),s.enter(i)):s.leave(i,()=>{setDisplay(i,!1)}):setDisplay(i,e))},beforeUnmount(i,{value:e}){setDisplay(i,e)}};function setDisplay(i,e){i.style.display=e?i._vod:"none"}const rendererOptions=extend$3({patchProp},nodeOps);let renderer;function ensureRenderer(){return renderer||(renderer=createRenderer(rendererOptions))}const createApp=(...i)=>{const e=ensureRenderer().createApp(...i),{mount:t}=e;return e.mount=s=>{const r=normalizeContainer(s);if(!r)return;const o=e._component;!isFunction$4(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const a=t(r,!1,r instanceof SVGElement);return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),a},e};function normalizeContainer(i){return isString$2(i)?document.querySelector(i):i}/*! * vue-router v4.1.6 * (c) 2022 Eduardo San Martin Morote * @license MIT */const isBrowser=typeof window<"u";function isESModule(i){return i.__esModule||i[Symbol.toStringTag]==="Module"}const assign$2=Object.assign;function applyToParams(i,e){const t={};for(const s in e){const r=e[s];t[s]=isArray$7(r)?r.map(i):i(r)}return t}const noop$2=()=>{},isArray$7=Array.isArray,TRAILING_SLASH_RE=/\/$/,removeTrailingSlash=i=>i.replace(TRAILING_SLASH_RE,"");function parseURL(i,e,t="/"){let s,r={},o="",a="";const l=e.indexOf("#");let c=e.indexOf("?");return l=0&&(c=-1),c>-1&&(s=e.slice(0,c),o=e.slice(c+1,l>-1?l:e.length),r=i(o)),l>-1&&(s=s||e.slice(0,l),a=e.slice(l,e.length)),s=resolveRelativePath(s!=null?s:e,t),{fullPath:s+(o&&"?")+o+a,path:s,query:r,hash:a}}function stringifyURL(i,e){const t=e.query?i(e.query):"";return e.path+(t&&"?")+t+(e.hash||"")}function stripBase(i,e){return!e||!i.toLowerCase().startsWith(e.toLowerCase())?i:i.slice(e.length)||"/"}function isSameRouteLocation(i,e,t){const s=e.matched.length-1,r=t.matched.length-1;return s>-1&&s===r&&isSameRouteRecord(e.matched[s],t.matched[r])&&isSameRouteLocationParams(e.params,t.params)&&i(e.query)===i(t.query)&&e.hash===t.hash}function isSameRouteRecord(i,e){return(i.aliasOf||i)===(e.aliasOf||e)}function isSameRouteLocationParams(i,e){if(Object.keys(i).length!==Object.keys(e).length)return!1;for(const t in i)if(!isSameRouteLocationParamsValue(i[t],e[t]))return!1;return!0}function isSameRouteLocationParamsValue(i,e){return isArray$7(i)?isEquivalentArray(i,e):isArray$7(e)?isEquivalentArray(e,i):i===e}function isEquivalentArray(i,e){return isArray$7(e)?i.length===e.length&&i.every((t,s)=>t===e[s]):i.length===1&&i[0]===e}function resolveRelativePath(i,e){if(i.startsWith("/"))return i;if(!i)return e;const t=e.split("/"),s=i.split("/");let r=t.length-1,o,a;for(o=0;o1&&r--;else break;return t.slice(0,r).join("/")+"/"+s.slice(o-(o===s.length?1:0)).join("/")}var NavigationType;(function(i){i.pop="pop",i.push="push"})(NavigationType||(NavigationType={}));var NavigationDirection;(function(i){i.back="back",i.forward="forward",i.unknown=""})(NavigationDirection||(NavigationDirection={}));function normalizeBase(i){if(!i)if(isBrowser){const e=document.querySelector("base");i=e&&e.getAttribute("href")||"/",i=i.replace(/^\w+:\/\/[^\/]+/,"")}else i="/";return i[0]!=="/"&&i[0]!=="#"&&(i="/"+i),removeTrailingSlash(i)}const BEFORE_HASH_RE=/^[^#]+#/;function createHref(i,e){return i.replace(BEFORE_HASH_RE,"#")+e}function getElementPosition(i,e){const t=document.documentElement.getBoundingClientRect(),s=i.getBoundingClientRect();return{behavior:e.behavior,left:s.left-t.left-(e.left||0),top:s.top-t.top-(e.top||0)}}const computeScrollPosition=()=>({left:window.pageXOffset,top:window.pageYOffset});function scrollToPosition(i){let e;if("el"in i){const t=i.el,s=typeof t=="string"&&t.startsWith("#"),r=typeof t=="string"?s?document.getElementById(t.slice(1)):document.querySelector(t):t;if(!r)return;e=getElementPosition(r,i)}else e=i;"scrollBehavior"in document.documentElement.style?window.scrollTo(e):window.scrollTo(e.left!=null?e.left:window.pageXOffset,e.top!=null?e.top:window.pageYOffset)}function getScrollKey(i,e){return(history.state?history.state.position-e:-1)+i}const scrollPositions=new Map;function saveScrollPosition(i,e){scrollPositions.set(i,e)}function getSavedScrollPosition(i){const e=scrollPositions.get(i);return scrollPositions.delete(i),e}let createBaseLocation=()=>location.protocol+"//"+location.host;function createCurrentLocation(i,e){const{pathname:t,search:s,hash:r}=e,o=i.indexOf("#");if(o>-1){let l=r.includes(i.slice(o))?i.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),stripBase(c,"")}return stripBase(t,i)+s+r}function useHistoryListeners(i,e,t,s){let r=[],o=[],a=null;const l=({state:g})=>{const b=createCurrentLocation(i,location),y=t.value,S=e.value;let v=0;if(g){if(t.value=b,e.value=g,a&&a===y){a=null;return}v=S?g.position-S.position:0}else s(b);r.forEach(x=>{x(t.value,y,{delta:v,type:NavigationType.pop,direction:v?v>0?NavigationDirection.forward:NavigationDirection.back:NavigationDirection.unknown})})};function c(){a=t.value}function d(g){r.push(g);const b=()=>{const y=r.indexOf(g);y>-1&&r.splice(y,1)};return o.push(b),b}function m(){const{history:g}=window;g.state&&g.replaceState(assign$2({},g.state,{scroll:computeScrollPosition()}),"")}function u(){for(const g of o)g();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",m)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",m),{pauseListeners:c,listen:d,destroy:u}}function buildState(i,e,t,s=!1,r=!1){return{back:i,current:e,forward:t,replaced:s,position:window.history.length,scroll:r?computeScrollPosition():null}}function useHistoryStateNavigation(i){const{history:e,location:t}=window,s={value:createCurrentLocation(i,t)},r={value:e.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:e.length-1,replaced:!0,scroll:null},!0);function o(c,d,m){const u=i.indexOf("#"),g=u>-1?(t.host&&document.querySelector("base")?i:i.slice(u))+c:createBaseLocation()+i+c;try{e[m?"replaceState":"pushState"](d,"",g),r.value=d}catch(b){console.error(b),t[m?"replace":"assign"](g)}}function a(c,d){const m=assign$2({},e.state,buildState(r.value.back,c,r.value.forward,!0),d,{position:r.value.position});o(c,m,!0),s.value=c}function l(c,d){const m=assign$2({},r.value,e.state,{forward:c,scroll:computeScrollPosition()});o(m.current,m,!0);const u=assign$2({},buildState(s.value,c,null),{position:m.position+1},d);o(c,u,!1),s.value=c}return{location:s,state:r,push:l,replace:a}}function createWebHistory(i){i=normalizeBase(i);const e=useHistoryStateNavigation(i),t=useHistoryListeners(i,e.state,e.location,e.replace);function s(o,a=!0){a||t.pauseListeners(),history.go(o)}const r=assign$2({location:"",base:i,go:s,createHref:createHref.bind(null,i)},e,t);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>e.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>e.state.value}),r}function createWebHashHistory(i){return i=location.host?i||location.pathname+location.search:"",i.includes("#")||(i+="#"),createWebHistory(i)}function isRouteLocation(i){return typeof i=="string"||i&&typeof i=="object"}function isRouteName(i){return typeof i=="string"||typeof i=="symbol"}const START_LOCATION_NORMALIZED={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},NavigationFailureSymbol=Symbol("");var NavigationFailureType;(function(i){i[i.aborted=4]="aborted",i[i.cancelled=8]="cancelled",i[i.duplicated=16]="duplicated"})(NavigationFailureType||(NavigationFailureType={}));function createRouterError(i,e){return assign$2(new Error,{type:i,[NavigationFailureSymbol]:!0},e)}function isNavigationFailure(i,e){return i instanceof Error&&NavigationFailureSymbol in i&&(e==null||!!(i.type&e))}const BASE_PARAM_PATTERN="[^/]+?",BASE_PATH_PARSER_OPTIONS={sensitive:!1,strict:!1,start:!0,end:!0},REGEX_CHARS_RE=/[.+*?^${}()[\]/\\]/g;function tokensToParser(i,e){const t=assign$2({},BASE_PATH_PARSER_OPTIONS,e),s=[];let r=t.start?"^":"";const o=[];for(const d of i){const m=d.length?[]:[90];t.strict&&!d.length&&(r+="/");for(let u=0;ue.length?e.length===1&&e[0]===40+40?1:-1:0}function comparePathParserScore(i,e){let t=0;const s=i.score,r=e.score;for(;t0&&e[e.length-1]<0}const ROOT_TOKEN={type:0,value:""},VALID_PARAM_RE=/[a-zA-Z0-9_]/;function tokenizePath(i){if(!i)return[[]];if(i==="/")return[[ROOT_TOKEN]];if(!i.startsWith("/"))throw new Error(`Invalid path "${i}"`);function e(b){throw new Error(`ERR (${t})/"${d}": ${b}`)}let t=0,s=t;const r=[];let o;function a(){o&&r.push(o),o=[]}let l=0,c,d="",m="";function u(){d&&(t===0?o.push({type:0,value:d}):t===1||t===2||t===3?(o.length>1&&(c==="*"||c==="+")&&e(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:d,regexp:m,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):e("Invalid state to consume buffer"),d="")}function g(){d+=c}for(;l{a(A)}:noop$2}function a(m){if(isRouteName(m)){const u=s.get(m);u&&(s.delete(m),t.splice(t.indexOf(u),1),u.children.forEach(a),u.alias.forEach(a))}else{const u=t.indexOf(m);u>-1&&(t.splice(u,1),m.record.name&&s.delete(m.record.name),m.children.forEach(a),m.alias.forEach(a))}}function l(){return t}function c(m){let u=0;for(;u=0&&(m.record.path!==t[u].record.path||!isRecordChildOf(m,t[u]));)u++;t.splice(u,0,m),m.record.name&&!isAliasRecord(m)&&s.set(m.record.name,m)}function d(m,u){let g,b={},y,S;if("name"in m&&m.name){if(g=s.get(m.name),!g)throw createRouterError(1,{location:m});S=g.record.name,b=assign$2(paramsFromLocation(u.params,g.keys.filter(A=>!A.optional).map(A=>A.name)),m.params&¶msFromLocation(m.params,g.keys.map(A=>A.name))),y=g.stringify(b)}else if("path"in m)y=m.path,g=t.find(A=>A.re.test(y)),g&&(b=g.parse(y),S=g.record.name);else{if(g=u.name?s.get(u.name):t.find(A=>A.re.test(u.path)),!g)throw createRouterError(1,{location:m,currentLocation:u});S=g.record.name,b=assign$2({},u.params,m.params),y=g.stringify(b)}const v=[];let x=g;for(;x;)v.unshift(x.record),x=x.parent;return{name:S,path:y,params:b,matched:v,meta:mergeMetaFields(v)}}return i.forEach(m=>o(m)),{addRoute:o,resolve:d,removeRoute:a,getRoutes:l,getRecordMatcher:r}}function paramsFromLocation(i,e){const t={};for(const s of e)s in i&&(t[s]=i[s]);return t}function normalizeRouteRecord(i){return{path:i.path,redirect:i.redirect,name:i.name,meta:i.meta||{},aliasOf:void 0,beforeEnter:i.beforeEnter,props:normalizeRecordProps(i),children:i.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in i?i.components||null:i.component&&{default:i.component}}}function normalizeRecordProps(i){const e={},t=i.props||!1;if("component"in i)e.default=t;else for(const s in i.components)e[s]=typeof t=="boolean"?t:t[s];return e}function isAliasRecord(i){for(;i;){if(i.record.aliasOf)return!0;i=i.parent}return!1}function mergeMetaFields(i){return i.reduce((e,t)=>assign$2(e,t.meta),{})}function mergeOptions(i,e){const t={};for(const s in i)t[s]=s in e?e[s]:i[s];return t}function isRecordChildOf(i,e){return e.children.some(t=>t===i||isRecordChildOf(i,t))}const HASH_RE=/#/g,AMPERSAND_RE=/&/g,SLASH_RE=/\//g,EQUAL_RE=/=/g,IM_RE=/\?/g,PLUS_RE=/\+/g,ENC_BRACKET_OPEN_RE=/%5B/g,ENC_BRACKET_CLOSE_RE=/%5D/g,ENC_CARET_RE=/%5E/g,ENC_BACKTICK_RE=/%60/g,ENC_CURLY_OPEN_RE=/%7B/g,ENC_PIPE_RE=/%7C/g,ENC_CURLY_CLOSE_RE=/%7D/g,ENC_SPACE_RE=/%20/g;function commonEncode(i){return encodeURI(""+i).replace(ENC_PIPE_RE,"|").replace(ENC_BRACKET_OPEN_RE,"[").replace(ENC_BRACKET_CLOSE_RE,"]")}function encodeHash(i){return commonEncode(i).replace(ENC_CURLY_OPEN_RE,"{").replace(ENC_CURLY_CLOSE_RE,"}").replace(ENC_CARET_RE,"^")}function encodeQueryValue(i){return commonEncode(i).replace(PLUS_RE,"%2B").replace(ENC_SPACE_RE,"+").replace(HASH_RE,"%23").replace(AMPERSAND_RE,"%26").replace(ENC_BACKTICK_RE,"`").replace(ENC_CURLY_OPEN_RE,"{").replace(ENC_CURLY_CLOSE_RE,"}").replace(ENC_CARET_RE,"^")}function encodeQueryKey(i){return encodeQueryValue(i).replace(EQUAL_RE,"%3D")}function encodePath(i){return commonEncode(i).replace(HASH_RE,"%23").replace(IM_RE,"%3F")}function encodeParam(i){return i==null?"":encodePath(i).replace(SLASH_RE,"%2F")}function decode$5(i){try{return decodeURIComponent(""+i)}catch(e){}return""+i}function parseQuery(i){const e={};if(i===""||i==="?")return e;const s=(i[0]==="?"?i.slice(1):i).split("&");for(let r=0;ro&&encodeQueryValue(o)):[s&&encodeQueryValue(s)]).forEach(o=>{o!==void 0&&(e+=(e.length?"&":"")+t,o!=null&&(e+="="+o))})}return e}function normalizeQuery(i){const e={};for(const t in i){const s=i[t];s!==void 0&&(e[t]=isArray$7(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return e}const matchedRouteKey=Symbol(""),viewDepthKey=Symbol(""),routerKey=Symbol(""),routeLocationKey=Symbol(""),routerViewLocationKey=Symbol("");function useCallbacks(){let i=[];function e(s){return i.push(s),()=>{const r=i.indexOf(s);r>-1&&i.splice(r,1)}}function t(){i=[]}return{add:e,list:()=>i,reset:t}}function guardToPromiseFn(i,e,t,s,r){const o=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((a,l)=>{const c=u=>{u===!1?l(createRouterError(4,{from:t,to:e})):u instanceof Error?l(u):isRouteLocation(u)?l(createRouterError(2,{from:e,to:u})):(o&&s.enterCallbacks[r]===o&&typeof u=="function"&&o.push(u),a())},d=i.call(s&&s.instances[r],e,t,c);let m=Promise.resolve(d);i.length<3&&(m=m.then(c)),m.catch(u=>l(u))})}function extractComponentsGuards(i,e,t,s){const r=[];for(const o of i)for(const a in o.components){let l=o.components[a];if(!(e!=="beforeRouteEnter"&&!o.instances[a]))if(isRouteComponent(l)){const d=(l.__vccOpts||l)[e];d&&r.push(guardToPromiseFn(d,t,s,o,a))}else{let c=l();r.push(()=>c.then(d=>{if(!d)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${o.path}"`));const m=isESModule(d)?d.default:d;o.components[a]=m;const g=(m.__vccOpts||m)[e];return g&&guardToPromiseFn(g,t,s,o,a)()}))}}return r}function isRouteComponent(i){return typeof i=="object"||"displayName"in i||"props"in i||"__vccOpts"in i}function useLink(i){const e=inject(routerKey),t=inject(routeLocationKey),s=computed(()=>e.resolve(unref(i.to))),r=computed(()=>{const{matched:c}=s.value,{length:d}=c,m=c[d-1],u=t.matched;if(!m||!u.length)return-1;const g=u.findIndex(isSameRouteRecord.bind(null,m));if(g>-1)return g;const b=getOriginalPath(c[d-2]);return d>1&&getOriginalPath(m)===b&&u[u.length-1].path!==b?u.findIndex(isSameRouteRecord.bind(null,c[d-2])):g}),o=computed(()=>r.value>-1&&includesParams(t.params,s.value.params)),a=computed(()=>r.value>-1&&r.value===t.matched.length-1&&isSameRouteLocationParams(t.params,s.value.params));function l(c={}){return guardEvent(c)?e[unref(i.replace)?"replace":"push"](unref(i.to)).catch(noop$2):Promise.resolve()}return{route:s,href:computed(()=>s.value.href),isActive:o,isExactActive:a,navigate:l}}const RouterLinkImpl=defineComponent({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink,setup(i,{slots:e}){const t=reactive(useLink(i)),{options:s}=inject(routerKey),r=computed(()=>({[getLinkClass(i.activeClass,s.linkActiveClass,"router-link-active")]:t.isActive,[getLinkClass(i.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:t.isExactActive}));return()=>{const o=e.default&&e.default(t);return i.custom?o:h("a",{"aria-current":t.isExactActive?i.ariaCurrentValue:null,href:t.href,onClick:t.navigate,class:r.value},o)}}}),RouterLink=RouterLinkImpl;function guardEvent(i){if(!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)&&!i.defaultPrevented&&!(i.button!==void 0&&i.button!==0)){if(i.currentTarget&&i.currentTarget.getAttribute){const e=i.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return i.preventDefault&&i.preventDefault(),!0}}function includesParams(i,e){for(const t in e){const s=e[t],r=i[t];if(typeof s=="string"){if(s!==r)return!1}else if(!isArray$7(r)||r.length!==s.length||s.some((o,a)=>o!==r[a]))return!1}return!0}function getOriginalPath(i){return i?i.aliasOf?i.aliasOf.path:i.path:""}const getLinkClass=(i,e,t)=>i!=null?i:e!=null?e:t,RouterViewImpl=defineComponent({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(i,{attrs:e,slots:t}){const s=inject(routerViewLocationKey),r=computed(()=>i.route||s.value),o=inject(viewDepthKey,0),a=computed(()=>{let d=unref(o);const{matched:m}=r.value;let u;for(;(u=m[d])&&!u.components;)d++;return d}),l=computed(()=>r.value.matched[a.value]);provide(viewDepthKey,computed(()=>a.value+1)),provide(matchedRouteKey,l),provide(routerViewLocationKey,r);const c=ref();return watch(()=>[c.value,l.value,i.name],([d,m,u],[g,b,y])=>{m&&(m.instances[u]=d,b&&b!==m&&d&&d===g&&(m.leaveGuards.size||(m.leaveGuards=b.leaveGuards),m.updateGuards.size||(m.updateGuards=b.updateGuards))),d&&m&&(!b||!isSameRouteRecord(m,b)||!g)&&(m.enterCallbacks[u]||[]).forEach(S=>S(d))},{flush:"post"}),()=>{const d=r.value,m=i.name,u=l.value,g=u&&u.components[m];if(!g)return normalizeSlot(t.default,{Component:g,route:d});const b=u.props[m],y=b?b===!0?d.params:typeof b=="function"?b(d):b:null,v=h(g,assign$2({},y,e,{onVnodeUnmounted:x=>{x.component.isUnmounted&&(u.instances[m]=null)},ref:c}));return normalizeSlot(t.default,{Component:v,route:d})||v}}});function normalizeSlot(i,e){if(!i)return null;const t=i(e);return t.length===1?t[0]:t}const RouterView=RouterViewImpl;function createRouter(i){const e=createRouterMatcher(i.routes,i),t=i.parseQuery||parseQuery,s=i.stringifyQuery||stringifyQuery,r=i.history,o=useCallbacks(),a=useCallbacks(),l=useCallbacks(),c=shallowRef(START_LOCATION_NORMALIZED);let d=START_LOCATION_NORMALIZED;isBrowser&&i.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const m=applyToParams.bind(null,Y=>""+Y),u=applyToParams.bind(null,encodeParam),g=applyToParams.bind(null,decode$5);function b(Y,ae){let de,le;return isRouteName(Y)?(de=e.getRecordMatcher(Y),le=ae):le=Y,e.addRoute(le,de)}function y(Y){const ae=e.getRecordMatcher(Y);ae&&e.removeRoute(ae)}function S(){return e.getRoutes().map(Y=>Y.record)}function v(Y){return!!e.getRecordMatcher(Y)}function x(Y,ae){if(ae=assign$2({},ae||c.value),typeof Y=="string"){const U=parseURL(t,Y,ae.path),Q=e.resolve({path:U.path},ae),M=r.createHref(U.fullPath);return assign$2(U,Q,{params:g(Q.params),hash:decode$5(U.hash),redirectedFrom:void 0,href:M})}let de;if("path"in Y)de=assign$2({},Y,{path:parseURL(t,Y.path,ae.path).path});else{const U=assign$2({},Y.params);for(const Q in U)U[Q]==null&&delete U[Q];de=assign$2({},Y,{params:u(Y.params)}),ae.params=u(ae.params)}const le=e.resolve(de,ae),me=Y.hash||"";le.params=m(g(le.params));const ve=stringifyURL(s,assign$2({},Y,{hash:encodeHash(me),path:le.path})),ye=r.createHref(ve);return assign$2({fullPath:ve,hash:me,query:s===stringifyQuery?normalizeQuery(Y.query):Y.query||{}},le,{redirectedFrom:void 0,href:ye})}function A(Y){return typeof Y=="string"?parseURL(t,Y,c.value.path):assign$2({},Y)}function E(Y,ae){if(d!==Y)return createRouterError(8,{from:ae,to:Y})}function w(Y){return P(Y)}function _(Y){return w(assign$2(A(Y),{replace:!0}))}function C(Y){const ae=Y.matched[Y.matched.length-1];if(ae&&ae.redirect){const{redirect:de}=ae;let le=typeof de=="function"?de(Y):de;return typeof le=="string"&&(le=le.includes("?")||le.includes("#")?le=A(le):{path:le},le.params={}),assign$2({query:Y.query,hash:Y.hash,params:"path"in le?{}:Y.params},le)}}function P(Y,ae){const de=d=x(Y),le=c.value,me=Y.state,ve=Y.force,ye=Y.replace===!0,U=C(de);if(U)return P(assign$2(A(U),{state:typeof U=="object"?assign$2({},me,U.state):me,force:ve,replace:ye}),ae||de);const Q=de;Q.redirectedFrom=ae;let M;return!ve&&isSameRouteLocation(s,le,de)&&(M=createRouterError(16,{to:Q,from:le}),fe(le,le,!0,!1)),(M?Promise.resolve(M):R(Q,le)).catch($=>isNavigationFailure($)?isNavigationFailure($,2)?$:ne($):W($,Q,le)).then($=>{if($){if(isNavigationFailure($,2))return P(assign$2({replace:ye},A($.to),{state:typeof $.to=="object"?assign$2({},me,$.to.state):me,force:ve}),ae||Q)}else $=G(Q,le,!0,ye,me);return N(Q,le,$),$})}function I(Y,ae){const de=E(Y,ae);return de?Promise.reject(de):Promise.resolve()}function R(Y,ae){let de;const[le,me,ve]=extractChangingRecords(Y,ae);de=extractComponentsGuards(le.reverse(),"beforeRouteLeave",Y,ae);for(const U of le)U.leaveGuards.forEach(Q=>{de.push(guardToPromiseFn(Q,Y,ae))});const ye=I.bind(null,Y,ae);return de.push(ye),runGuardQueue(de).then(()=>{de=[];for(const U of o.list())de.push(guardToPromiseFn(U,Y,ae));return de.push(ye),runGuardQueue(de)}).then(()=>{de=extractComponentsGuards(me,"beforeRouteUpdate",Y,ae);for(const U of me)U.updateGuards.forEach(Q=>{de.push(guardToPromiseFn(Q,Y,ae))});return de.push(ye),runGuardQueue(de)}).then(()=>{de=[];for(const U of Y.matched)if(U.beforeEnter&&!ae.matched.includes(U))if(isArray$7(U.beforeEnter))for(const Q of U.beforeEnter)de.push(guardToPromiseFn(Q,Y,ae));else de.push(guardToPromiseFn(U.beforeEnter,Y,ae));return de.push(ye),runGuardQueue(de)}).then(()=>(Y.matched.forEach(U=>U.enterCallbacks={}),de=extractComponentsGuards(ve,"beforeRouteEnter",Y,ae),de.push(ye),runGuardQueue(de))).then(()=>{de=[];for(const U of a.list())de.push(guardToPromiseFn(U,Y,ae));return de.push(ye),runGuardQueue(de)}).catch(U=>isNavigationFailure(U,8)?U:Promise.reject(U))}function N(Y,ae,de){for(const le of l.list())le(Y,ae,de)}function G(Y,ae,de,le,me){const ve=E(Y,ae);if(ve)return ve;const ye=ae===START_LOCATION_NORMALIZED,U=isBrowser?history.state:{};de&&(le||ye?r.replace(Y.fullPath,assign$2({scroll:ye&&U&&U.scroll},me)):r.push(Y.fullPath,me)),c.value=Y,fe(Y,ae,de,ye),ne()}let B;function k(){B||(B=r.listen((Y,ae,de)=>{if(!oe.listening)return;const le=x(Y),me=C(le);if(me){P(assign$2(me,{replace:!0}),le).catch(noop$2);return}d=le;const ve=c.value;isBrowser&&saveScrollPosition(getScrollKey(ve.fullPath,de.delta),computeScrollPosition()),R(le,ve).catch(ye=>isNavigationFailure(ye,12)?ye:isNavigationFailure(ye,2)?(P(ye.to,le).then(U=>{isNavigationFailure(U,20)&&!de.delta&&de.type===NavigationType.pop&&r.go(-1,!1)}).catch(noop$2),Promise.reject()):(de.delta&&r.go(-de.delta,!1),W(ye,le,ve))).then(ye=>{ye=ye||G(le,ve,!1),ye&&(de.delta&&!isNavigationFailure(ye,8)?r.go(-de.delta,!1):de.type===NavigationType.pop&&isNavigationFailure(ye,20)&&r.go(-1,!1)),N(le,ve,ye)}).catch(noop$2)}))}let T=useCallbacks(),V=useCallbacks(),J;function W(Y,ae,de){ne(Y);const le=V.list();return le.length?le.forEach(me=>me(Y,ae,de)):console.error(Y),Promise.reject(Y)}function se(){return J&&c.value!==START_LOCATION_NORMALIZED?Promise.resolve():new Promise((Y,ae)=>{T.add([Y,ae])})}function ne(Y){return J||(J=!Y,k(),T.list().forEach(([ae,de])=>Y?de(Y):ae()),T.reset()),Y}function fe(Y,ae,de,le){const{scrollBehavior:me}=i;if(!isBrowser||!me)return Promise.resolve();const ve=!de&&getSavedScrollPosition(getScrollKey(Y.fullPath,0))||(le||!de)&&history.state&&history.state.scroll||null;return nextTick().then(()=>me(Y,ae,ve)).then(ye=>ye&&scrollToPosition(ye)).catch(ye=>W(ye,Y,ae))}const Z=Y=>r.go(Y);let K;const be=new Set,oe={currentRoute:c,listening:!0,addRoute:b,removeRoute:y,hasRoute:v,getRoutes:S,resolve:x,options:i,push:w,replace:_,go:Z,back:()=>Z(-1),forward:()=>Z(1),beforeEach:o.add,beforeResolve:a.add,afterEach:l.add,onError:V.add,isReady:se,install(Y){const ae=this;Y.component("RouterLink",RouterLink),Y.component("RouterView",RouterView),Y.config.globalProperties.$router=ae,Object.defineProperty(Y.config.globalProperties,"$route",{enumerable:!0,get:()=>unref(c)}),isBrowser&&!K&&c.value===START_LOCATION_NORMALIZED&&(K=!0,w(r.location).catch(me=>{}));const de={};for(const me in START_LOCATION_NORMALIZED)de[me]=computed(()=>c.value[me]);Y.provide(routerKey,ae),Y.provide(routeLocationKey,reactive(de)),Y.provide(routerViewLocationKey,c);const le=Y.unmount;be.add(Y),Y.unmount=function(){be.delete(Y),be.size<1&&(d=START_LOCATION_NORMALIZED,B&&B(),B=null,c.value=START_LOCATION_NORMALIZED,K=!1,J=!1),le()}}};return oe}function runGuardQueue(i){return i.reduce((e,t)=>e.then(()=>t()),Promise.resolve())}function extractChangingRecords(i,e){const t=[],s=[],r=[],o=Math.max(e.matched.length,i.matched.length);for(let a=0;aisSameRouteRecord(d,l))?s.push(l):t.push(l));const c=i.matched[a];c&&(e.matched.find(d=>isSameRouteRecord(d,c))||r.push(c))}return[t,s,r]}function useRouter(){return inject(routerKey)}function useRoute$1(){return inject(routeLocationKey)}const isDef$1=i=>i!=null,isFunction$3=i=>typeof i=="function",isObject$3=i=>i!==null&&typeof i=="object",isPromise=i=>isObject$3(i)&&isFunction$3(i.then)&&isFunction$3(i.catch),isNumeric=i=>typeof i=="number"||/^\d+(\.\d+)?$/.test(i),isIOS$1=()=>inBrowser$2?/ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()):!1;function noop$1(){}const extend$2=Object.assign,inBrowser$2=typeof window<"u";function get(i,e){const t=e.split(".");let s=i;return t.forEach(r=>{var o;s=isObject$3(s)&&(o=s[r])!=null?o:""}),s}function pick$1(i,e,t){return e.reduce((s,r)=>((!t||i[r]!==void 0)&&(s[r]=i[r]),s),{})}const isSameValue=(i,e)=>JSON.stringify(i)===JSON.stringify(e),toArray=i=>Array.isArray(i)?i:[i],unknownProp=null,numericProp=[Number,String],truthProp={type:Boolean,default:!0},makeRequiredProp=i=>({type:i,required:!0}),makeArrayProp=()=>({type:Array,default:()=>[]}),makeNumberProp=i=>({type:Number,default:i}),makeNumericProp=i=>({type:numericProp,default:i}),makeStringProp=i=>({type:String,default:i});var inBrowser$1=typeof window<"u";function raf(i){return inBrowser$1?requestAnimationFrame(i):-1}function cancelRaf(i){inBrowser$1&&cancelAnimationFrame(i)}function doubleRaf(i){raf(()=>raf(i))}var isWindow=i=>i===window,makeDOMRect=(i,e)=>({top:0,left:0,right:i,bottom:e,width:i,height:e}),useRect=i=>{const e=unref(i);if(isWindow(e)){const t=e.innerWidth,s=e.innerHeight;return makeDOMRect(t,s)}return e!=null&&e.getBoundingClientRect?e.getBoundingClientRect():makeDOMRect(0,0)};function useParent(i){const e=inject(i,null);if(e){const t=getCurrentInstance(),{link:s,unlink:r,internalChildren:o}=e;s(t),onUnmounted(()=>r(t));const a=computed(()=>o.indexOf(t));return{parent:e,index:a}}return{parent:null,index:ref(-1)}}function flattenVNodes(i){const e=[],t=s=>{Array.isArray(s)&&s.forEach(r=>{var o;isVNode(r)&&(e.push(r),(o=r.component)!=null&&o.subTree&&(e.push(r.component.subTree),t(r.component.subTree.children)),r.children&&t(r.children))})};return t(i),e}var findVNodeIndex=(i,e)=>{const t=i.indexOf(e);return t===-1?i.findIndex(s=>e.key!==void 0&&e.key!==null&&s.type===e.type&&s.key===e.key):t};function sortChildren(i,e,t){const s=flattenVNodes(i.subTree.children);t.sort((o,a)=>findVNodeIndex(s,o.vnode)-findVNodeIndex(s,a.vnode));const r=t.map(o=>o.proxy);e.sort((o,a)=>{const l=r.indexOf(o),c=r.indexOf(a);return l-c})}function useChildren(i){const e=reactive([]),t=reactive([]),s=getCurrentInstance();return{children:e,linkChildren:o=>{provide(i,Object.assign({link:c=>{c.proxy&&(t.push(c),e.push(c.proxy),sortChildren(s,e,t))},unlink:c=>{const d=t.indexOf(c);e.splice(d,1),t.splice(d,1)},children:e,internalChildren:t},o))}}}function onMountedOrActivated(i){let e;onMounted(()=>{i(),nextTick(()=>{e=!0})}),onActivated(()=>{e&&i()})}function useEventListener$1(i,e,t={}){if(!inBrowser$1)return;const{target:s=window,passive:r=!1,capture:o=!1}=t;let a=!1,l;const c=u=>{if(a)return;const g=unref(u);g&&!l&&(g.addEventListener(i,e,{capture:o,passive:r}),l=!0)},d=u=>{if(a)return;const g=unref(u);g&&l&&(g.removeEventListener(i,e,o),l=!1)};onUnmounted(()=>d(s)),onDeactivated(()=>d(s)),onMountedOrActivated(()=>c(s));let m;return isRef(s)&&(m=watch(s,(u,g)=>{d(g),c(u)})),()=>{m==null||m(),d(s),a=!0}}function useClickAway(i,e,t={}){if(!inBrowser$1)return;const{eventName:s="click"}=t;useEventListener$1(s,o=>{(Array.isArray(i)?i:[i]).every(c=>{const d=unref(c);return d&&!d.contains(o.target)})&&e(o)},{target:document})}var width,height;function useWindowSize(){if(!width&&(width=ref(0),height=ref(0),inBrowser$1)){const i=()=>{width.value=window.innerWidth,height.value=window.innerHeight};i(),window.addEventListener("resize",i,{passive:!0}),window.addEventListener("orientationchange",i,{passive:!0})}return{width,height}}var overflowScrollReg=/scroll|auto|overlay/i,defaultRoot=inBrowser$1?window:void 0;function isElement$1(i){return i.tagName!=="HTML"&&i.tagName!=="BODY"&&i.nodeType===1}function getScrollParent(i,e=defaultRoot){let t=i;for(;t&&t!==e&&isElement$1(t);){const{overflowY:s}=window.getComputedStyle(t);if(overflowScrollReg.test(s))return t;t=t.parentNode}return e}function useScrollParent(i,e=defaultRoot){const t=ref();return onMounted(()=>{i.value&&(t.value=getScrollParent(i.value,e))}),t}var visibility;function usePageVisibility(){if(!visibility&&(visibility=ref("visible"),inBrowser$1)){const i=()=>{visibility.value=document.hidden?"hidden":"visible"};i(),window.addEventListener("visibilitychange",i)}return visibility}var CUSTOM_FIELD_INJECTION_KEY=Symbol("van-field");function useCustomFieldValue(i){const e=inject(CUSTOM_FIELD_INJECTION_KEY,null);e&&!e.customValue.value&&(e.customValue.value=i,watch(i,()=>{e.resetValidation(),e.validateWithTrigger("onChange")}))}function getScrollTop(i){const e="scrollTop"in i?i.scrollTop:i.pageYOffset;return Math.max(e,0)}function setScrollTop(i,e){"scrollTop"in i?i.scrollTop=e:i.scrollTo(i.scrollX,e)}function getRootScrollTop(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0}function setRootScrollTop(i){setScrollTop(window,i),setScrollTop(document.body,i)}function getElementTop(i,e){if(i===window)return 0;const t=e?getScrollTop(e):getRootScrollTop();return useRect(i).top+t}const isIOS=isIOS$1();function resetScroll(){isIOS&&setRootScrollTop(getRootScrollTop())}const stopPropagation=i=>i.stopPropagation();function preventDefault(i,e){(typeof i.cancelable!="boolean"||i.cancelable)&&i.preventDefault(),e&&stopPropagation(i)}function isHidden(i){const e=unref(i);if(!e)return!1;const t=window.getComputedStyle(e),s=t.display==="none",r=e.offsetParent===null&&t.position!=="fixed";return s||r}const{width:windowWidth,height:windowHeight}=useWindowSize();function addUnit(i){if(isDef$1(i))return isNumeric(i)?`${i}px`:String(i)}function getSizeStyle(i){if(isDef$1(i)){if(Array.isArray(i))return{width:addUnit(i[0]),height:addUnit(i[1])};const e=addUnit(i);return{width:e,height:e}}}function getZIndexStyle(i){const e={};return i!==void 0&&(e.zIndex=+i),e}let rootFontSize;function getRootFontSize(){if(!rootFontSize){const i=document.documentElement,e=i.style.fontSize||window.getComputedStyle(i).fontSize;rootFontSize=parseFloat(e)}return rootFontSize}function convertRem(i){return i=i.replace(/rem/g,""),+i*getRootFontSize()}function convertVw(i){return i=i.replace(/vw/g,""),+i*windowWidth.value/100}function convertVh(i){return i=i.replace(/vh/g,""),+i*windowHeight.value/100}function unitToPx(i){if(typeof i=="number")return i;if(inBrowser$2){if(i.includes("rem"))return convertRem(i);if(i.includes("vw"))return convertVw(i);if(i.includes("vh"))return convertVh(i)}return parseFloat(i)}const camelizeRE=/-(\w)/g,camelize=i=>i.replace(camelizeRE,(e,t)=>t.toUpperCase()),kebabCase=i=>i.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,""),clamp=(i,e,t)=>Math.min(Math.max(i,e),t);function trimExtraChar(i,e,t){const s=i.indexOf(e);return s===-1?i:e==="-"&&s!==0?i.slice(0,s):i.slice(0,s+1)+i.slice(s).replace(t,"")}function formatNumber(i,e=!0,t=!0){e?i=trimExtraChar(i,".",/\./g):i=i.split(".")[0],t?i=trimExtraChar(i,"-",/-/g):i=i.replace(/-/,"");const s=e?/[^-0-9.]/g:/[^-0-9]/g;return i.replace(s,"")}function addNumber(i,e){return Math.round((i+e)*1e10)/1e10}const{hasOwnProperty:hasOwnProperty$1}=Object.prototype;function assignKey(i,e,t){const s=e[t];isDef$1(s)&&(!hasOwnProperty$1.call(i,t)||!isObject$3(s)?i[t]=s:i[t]=deepAssign(Object(i[t]),s))}function deepAssign(i,e){return Object.keys(e).forEach(t=>{assignKey(i,e,t)}),i}var stdin_default$i={name:"姓名",tel:"电话",save:"保存",confirm:"确认",cancel:"取消",delete:"删除",loading:"加载中...",noCoupon:"暂无优惠券",nameEmpty:"请填写姓名",addContact:"添加联系人",telInvalid:"请填写正确的电话",vanCalendar:{end:"结束",start:"开始",title:"日期选择",weekdays:["日","一","二","三","四","五","六"],monthTitle:(i,e)=>`${i}年${e}月`,rangePrompt:i=>`最多选择 ${i} 天`},vanCascader:{select:"请选择"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{unlimited:"无门槛",discount:i=>`${i}折`,condition:i=>`满${i}元可用`},vanCouponCell:{title:"优惠券",count:i=>`${i}张可用`},vanCouponList:{exchange:"兑换",close:"不使用",enable:"可用",disabled:"不可用",placeholder:"输入优惠码"},vanAddressEdit:{area:"地区",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",addressDetail:"详细地址",defaultAddress:"设为默认收货地址"},vanAddressList:{add:"新增地址"}};const lang=ref("zh-CN"),messages=reactive({"zh-CN":stdin_default$i}),Locale={messages(){return messages[lang.value]},use(i,e){lang.value=i,this.add({[i]:e})},add(i={}){deepAssign(messages,i)}};var stdin_default$h=Locale;function createTranslate(i){const e=camelize(i)+".";return(t,...s)=>{const r=stdin_default$h.messages(),o=get(r,e+t)||get(r,t);return isFunction$3(o)?o(...s):o}}function genBem(i,e){return e?typeof e=="string"?` ${i}--${e}`:Array.isArray(e)?e.reduce((t,s)=>t+genBem(i,s),""):Object.keys(e).reduce((t,s)=>t+(e[s]?genBem(i,s):""),""):""}function createBEM(i){return(e,t)=>(e&&typeof e!="string"&&(t=e,e=""),e=e?`${i}__${e}`:i,`${e}${genBem(e,t)}`)}function createNamespace$1(i){const e=`van-${i}`;return[e,createBEM(e),createTranslate(e)]}const BORDER="van-hairline",BORDER_TOP=`${BORDER}--top`,BORDER_LEFT=`${BORDER}--left`,BORDER_BOTTOM=`${BORDER}--bottom`,BORDER_SURROUND=`${BORDER}--surround`,BORDER_TOP_BOTTOM=`${BORDER}--top-bottom`,BORDER_UNSET_TOP_BOTTOM=`${BORDER}-unset--top-bottom`,HAPTICS_FEEDBACK="van-haptics-feedback",FORM_KEY=Symbol("van-form");function callInterceptor(i,{args:e=[],done:t,canceled:s}){if(i){const r=i.apply(null,e);isPromise(r)?r.then(o=>{o?t():s&&s()}).catch(noop$1):r?t():s&&s()}else t()}function withInstall(i){return i.install=e=>{const{name:t}=i;t&&(e.component(t,i),e.component(camelize(`-${t}`),i))},i}const POPUP_TOGGLE_KEY=Symbol();function onPopupReopen(i){const e=inject(POPUP_TOGGLE_KEY,null);e&&watch(e,t=>{t&&i()})}const useHeight=(i,e)=>{const t=ref(),s=()=>{t.value=useRect(i).height};return onMounted(()=>{if(nextTick(s),e)for(let r=1;r<=3;r++)setTimeout(s,100*r)}),onPopupReopen(()=>nextTick(s)),watch([windowWidth,windowHeight],s),t};function usePlaceholder(i,e){const t=useHeight(i,!0);return s=>createVNode("div",{class:e("placeholder"),style:{height:t.value?`${t.value}px`:void 0}},[s()])}function useExpose(i){const e=getCurrentInstance();e&&extend$2(e.proxy,i)}const routeProps={to:[String,Object],url:String,replace:Boolean};function route({to:i,url:e,replace:t,$router:s}){i&&s?s[t?"replace":"push"](i):e&&(t?location.replace(e):location.href=e)}function useRoute(){const i=getCurrentInstance().proxy;return()=>route(i)}const[name$e,bem$e]=createNamespace$1("badge"),badgeProps={dot:Boolean,max:numericProp,tag:makeStringProp("div"),color:String,offset:Array,content:numericProp,showZero:truthProp,position:makeStringProp("top-right")};var stdin_default$g=defineComponent({name:name$e,props:badgeProps,setup(i,{slots:e}){const t=()=>{if(e.content)return!0;const{content:l,showZero:c}=i;return isDef$1(l)&&l!==""&&(c||l!==0&&l!=="0")},s=()=>{const{dot:l,max:c,content:d}=i;if(!l&&t())return e.content?e.content():isDef$1(c)&&isNumeric(d)&&+d>+c?`${c}+`:d},r=l=>l.startsWith("-")?l.replace("-",""):`-${l}`,o=computed(()=>{const l={background:i.color};if(i.offset){const[c,d]=i.offset,{position:m}=i,[u,g]=m.split("-");e.default?(typeof d=="number"?l[u]=addUnit(u==="top"?d:-d):l[u]=u==="top"?addUnit(d):r(d),typeof c=="number"?l[g]=addUnit(g==="left"?c:-c):l[g]=g==="left"?addUnit(c):r(c)):(l.marginTop=addUnit(d),l.marginLeft=addUnit(c))}return l}),a=()=>{if(t()||i.dot)return createVNode("div",{class:bem$e([i.position,{dot:i.dot,fixed:!!e.default}]),style:o.value},[s()])};return()=>{if(e.default){const{tag:l}=i;return createVNode(l,{class:bem$e("wrapper")},{default:()=>[e.default(),a()]})}return a()}}});const Badge=withInstall(stdin_default$g);let globalZIndex=2e3;const useGlobalZIndex=()=>++globalZIndex,setGlobalZIndex=i=>{globalZIndex=i},[name$d,bem$d]=createNamespace$1("config-provider"),CONFIG_PROVIDER_KEY=Symbol(name$d),configProviderProps={tag:makeStringProp("div"),theme:makeStringProp("light"),zIndex:Number,themeVars:Object,themeVarsDark:Object,themeVarsLight:Object,iconPrefix:String};function mapThemeVarsToCSSVars(i){const e={};return Object.keys(i).forEach(t=>{e[`--van-${kebabCase(t)}`]=i[t]}),e}defineComponent({name:name$d,props:configProviderProps,setup(i,{slots:e}){const t=computed(()=>mapThemeVarsToCSSVars(extend$2({},i.themeVars,i.theme==="dark"?i.themeVarsDark:i.themeVarsLight)));if(inBrowser$2){const s=()=>{document.documentElement.classList.add(`van-theme-${i.theme}`)},r=(o=i.theme)=>{document.documentElement.classList.remove(`van-theme-${o}`)};watch(()=>i.theme,(o,a)=>{a&&r(a),s()},{immediate:!0}),onActivated(s),onDeactivated(r),onBeforeUnmount(r)}return provide(CONFIG_PROVIDER_KEY,i),watchEffect(()=>{i.zIndex!==void 0&&setGlobalZIndex(i.zIndex)}),()=>createVNode(i.tag,{class:bem$d(),style:t.value},{default:()=>{var s;return[(s=e.default)==null?void 0:s.call(e)]}})}});const[name$c,bem$c]=createNamespace$1("icon"),isImage=i=>i==null?void 0:i.includes("/"),iconProps={dot:Boolean,tag:makeStringProp("i"),name:String,size:numericProp,badge:numericProp,color:String,badgeProps:Object,classPrefix:String};var stdin_default$f=defineComponent({name:name$c,props:iconProps,setup(i,{slots:e}){const t=inject(CONFIG_PROVIDER_KEY,null),s=computed(()=>i.classPrefix||(t==null?void 0:t.iconPrefix)||bem$c());return()=>{const{tag:r,dot:o,name:a,size:l,badge:c,color:d}=i,m=isImage(a);return createVNode(Badge,mergeProps({dot:o,tag:r,class:[s.value,m?"":`${s.value}-${a}`],style:{color:d,fontSize:addUnit(l)},content:c},i.badgeProps),{default:()=>{var u;return[(u=e.default)==null?void 0:u.call(e),m&&createVNode("img",{class:bem$c("image"),src:a},null)]}})}}});const Icon$1=withInstall(stdin_default$f),[name$b,bem$b]=createNamespace$1("loading"),SpinIcon=Array(12).fill(null).map((i,e)=>createVNode("i",{class:bem$b("line",String(e+1))},null)),CircularIcon=createVNode("svg",{class:bem$b("circular"),viewBox:"25 25 50 50"},[createVNode("circle",{cx:"50",cy:"50",r:"20",fill:"none"},null)]),loadingProps={size:numericProp,type:makeStringProp("circular"),color:String,vertical:Boolean,textSize:numericProp,textColor:String};var stdin_default$e=defineComponent({name:name$b,props:loadingProps,setup(i,{slots:e}){const t=computed(()=>extend$2({color:i.color},getSizeStyle(i.size))),s=()=>{const o=i.type==="spinner"?SpinIcon:CircularIcon;return createVNode("span",{class:bem$b("spinner",i.type),style:t.value},[e.icon?e.icon():o])},r=()=>{var o;if(e.default)return createVNode("span",{class:bem$b("text"),style:{fontSize:addUnit(i.textSize),color:(o=i.textColor)!=null?o:i.color}},[e.default()])};return()=>{const{type:o,vertical:a}=i;return createVNode("div",{class:bem$b([o,{vertical:a}]),"aria-live":"polite","aria-busy":!0},[s(),r()])}}});const Loading$1=withInstall(stdin_default$e),[name$a,bem$a]=createNamespace$1("button"),buttonProps=extend$2({},routeProps,{tag:makeStringProp("button"),text:String,icon:String,type:makeStringProp("default"),size:makeStringProp("normal"),color:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,iconPrefix:String,nativeType:makeStringProp("button"),loadingSize:numericProp,loadingText:String,loadingType:String,iconPosition:makeStringProp("left")});var stdin_default$d=defineComponent({name:name$a,props:buttonProps,emits:["click"],setup(i,{emit:e,slots:t}){const s=useRoute(),r=()=>t.loading?t.loading():createVNode(Loading$1,{size:i.loadingSize,type:i.loadingType,class:bem$a("loading")},null),o=()=>{if(i.loading)return r();if(t.icon)return createVNode("div",{class:bem$a("icon")},[t.icon()]);if(i.icon)return createVNode(Icon$1,{name:i.icon,class:bem$a("icon"),classPrefix:i.iconPrefix},null)},a=()=>{let d;if(i.loading?d=i.loadingText:d=t.default?t.default():i.text,d)return createVNode("span",{class:bem$a("text")},[d])},l=()=>{const{color:d,plain:m}=i;if(d){const u={color:m?d:"white"};return m||(u.background=d),d.includes("gradient")?u.border=0:u.borderColor=d,u}},c=d=>{i.loading?preventDefault(d):i.disabled||(e("click",d),s())};return()=>{const{tag:d,type:m,size:u,block:g,round:b,plain:y,square:S,loading:v,disabled:x,hairline:A,nativeType:E,iconPosition:w}=i,_=[bem$a([m,u,{plain:y,block:g,round:b,square:S,loading:v,disabled:x,hairline:A}]),{[BORDER_SURROUND]:A}];return createVNode(d,{type:E,class:_,style:l(),disabled:x,onClick:c},{default:()=>[createVNode("div",{class:bem$a("content")},[w==="left"&&o(),a(),w==="right"&&o()])]})}}});const Button=withInstall(stdin_default$d),popupSharedProps={show:Boolean,zIndex:numericProp,overlay:truthProp,duration:numericProp,teleport:[String,Object],lockScroll:truthProp,lazyRender:truthProp,beforeClose:Function,overlayStyle:Object,overlayClass:unknownProp,transitionAppear:Boolean,closeOnClickOverlay:truthProp},popupSharedPropKeys=Object.keys(popupSharedProps);function getDirection(i,e){return i>e?"horizontal":e>i?"vertical":""}function useTouch(){const i=ref(0),e=ref(0),t=ref(0),s=ref(0),r=ref(0),o=ref(0),a=ref(""),l=()=>a.value==="vertical",c=()=>a.value==="horizontal",d=()=>{t.value=0,s.value=0,r.value=0,o.value=0,a.value=""};return{move:g=>{const b=g.touches[0];t.value=(b.clientX<0?0:b.clientX)-i.value,s.value=b.clientY-e.value,r.value=Math.abs(t.value),o.value=Math.abs(s.value);const y=10;(!a.value||r.value{d(),i.value=g.touches[0].clientX,e.value=g.touches[0].clientY},reset:d,startX:i,startY:e,deltaX:t,deltaY:s,offsetX:r,offsetY:o,direction:a,isVertical:l,isHorizontal:c}}let totalLockCount=0;const BODY_LOCK_CLASS="van-overflow-hidden";function useLockScroll(i,e){const t=useTouch(),s="01",r="10",o=m=>{t.move(m);const u=t.deltaY.value>0?r:s,g=getScrollParent(m.target,i.value),{scrollHeight:b,offsetHeight:y,scrollTop:S}=g;let v="11";S===0?v=y>=b?"00":"01":S+y>=b&&(v="10"),v!=="11"&&t.isVertical()&&!(parseInt(v,2)&parseInt(u,2))&&preventDefault(m,!0)},a=()=>{document.addEventListener("touchstart",t.start),document.addEventListener("touchmove",o,{passive:!1}),totalLockCount||document.body.classList.add(BODY_LOCK_CLASS),totalLockCount++},l=()=>{totalLockCount&&(document.removeEventListener("touchstart",t.start),document.removeEventListener("touchmove",o),totalLockCount--,totalLockCount||document.body.classList.remove(BODY_LOCK_CLASS))},c=()=>e()&&a(),d=()=>e()&&l();onMountedOrActivated(c),onDeactivated(d),onBeforeUnmount(d),watch(e,m=>{m?a():l()})}function useLazyRender(i){const e=ref(!1);return watch(i,t=>{t&&(e.value=t)},{immediate:!0}),t=>()=>e.value?t():null}const[name$9,bem$9]=createNamespace$1("overlay"),overlayProps={show:Boolean,zIndex:numericProp,duration:numericProp,className:unknownProp,lockScroll:truthProp,lazyRender:truthProp,customStyle:Object};var stdin_default$c=defineComponent({name:name$9,props:overlayProps,setup(i,{slots:e}){const t=ref(),s=useLazyRender(()=>i.show||!i.lazyRender),r=a=>{i.lockScroll&&preventDefault(a,!0)},o=s(()=>{var a;const l=extend$2(getZIndexStyle(i.zIndex),i.customStyle);return isDef$1(i.duration)&&(l.animationDuration=`${i.duration}s`),withDirectives(createVNode("div",{ref:t,style:l,class:[bem$9(),i.className]},[(a=e.default)==null?void 0:a.call(e)]),[[vShow,i.show]])});return useEventListener$1("touchmove",r,{target:t}),()=>createVNode(Transition,{name:"van-fade",appear:!0},{default:o})}});const Overlay=withInstall(stdin_default$c),popupProps=extend$2({},popupSharedProps,{round:Boolean,position:makeStringProp("center"),closeIcon:makeStringProp("cross"),closeable:Boolean,transition:String,iconPrefix:String,closeOnPopstate:Boolean,closeIconPosition:makeStringProp("top-right"),safeAreaInsetTop:Boolean,safeAreaInsetBottom:Boolean}),[name$8,bem$8]=createNamespace$1("popup");var stdin_default$b=defineComponent({name:name$8,inheritAttrs:!1,props:popupProps,emits:["open","close","opened","closed","keydown","update:show","clickOverlay","clickCloseIcon"],setup(i,{emit:e,attrs:t,slots:s}){let r,o;const a=ref(),l=ref(),c=useLazyRender(()=>i.show||!i.lazyRender),d=computed(()=>{const _={zIndex:a.value};if(isDef$1(i.duration)){const C=i.position==="center"?"animationDuration":"transitionDuration";_[C]=`${i.duration}s`}return _}),m=()=>{r||(r=!0,a.value=i.zIndex!==void 0?+i.zIndex:useGlobalZIndex(),e("open"))},u=()=>{r&&callInterceptor(i.beforeClose,{done(){r=!1,e("close"),e("update:show",!1)}})},g=_=>{e("clickOverlay",_),i.closeOnClickOverlay&&u()},b=()=>{if(i.overlay)return createVNode(Overlay,{show:i.show,class:i.overlayClass,zIndex:a.value,duration:i.duration,customStyle:i.overlayStyle,role:i.closeOnClickOverlay?"button":void 0,tabindex:i.closeOnClickOverlay?0:void 0,onClick:g},{default:s["overlay-content"]})},y=_=>{e("clickCloseIcon",_),u()},S=()=>{if(i.closeable)return createVNode(Icon$1,{role:"button",tabindex:0,name:i.closeIcon,class:[bem$8("close-icon",i.closeIconPosition),HAPTICS_FEEDBACK],classPrefix:i.iconPrefix,onClick:y},null)},v=()=>e("opened"),x=()=>e("closed"),A=_=>e("keydown",_),E=c(()=>{var _;const{round:C,position:P,safeAreaInsetTop:I,safeAreaInsetBottom:R}=i;return withDirectives(createVNode("div",mergeProps({ref:l,style:d.value,role:"dialog",tabindex:0,class:[bem$8({round:C,[P]:P}),{"van-safe-area-top":I,"van-safe-area-bottom":R}],onKeydown:A},t),[(_=s.default)==null?void 0:_.call(s),S()]),[[vShow,i.show]])}),w=()=>{const{position:_,transition:C,transitionAppear:P}=i,I=_==="center"?"van-fade":`van-popup-slide-${_}`;return createVNode(Transition,{name:C||I,appear:P,onAfterEnter:v,onAfterLeave:x},{default:E})};return watch(()=>i.show,_=>{_&&!r&&(m(),t.tabindex===0&&nextTick(()=>{var C;(C=l.value)==null||C.focus()})),!_&&r&&(r=!1,e("close"))}),useExpose({popupRef:l}),useLockScroll(l,()=>i.show&&i.lockScroll),useEventListener$1("popstate",()=>{i.closeOnPopstate&&(u(),o=!1)}),onMounted(()=>{i.show&&m()}),onActivated(()=>{o&&(e("update:show",!0),o=!1)}),onDeactivated(()=>{i.show&&i.teleport&&(u(),o=!0)}),provide(POPUP_TOGGLE_KEY,()=>i.show),()=>i.teleport?createVNode(Teleport,{to:i.teleport},{default:()=>[b(),w()]}):createVNode(Fragment,null,[b(),w()])}});const Popup=withInstall(stdin_default$b);let current=0;function useId(){const i=getCurrentInstance(),{name:e="unknown"}=(i==null?void 0:i.type)||{};return`${e}-${++current}`}let lockCount=0;function lockClick(i){i?(lockCount||document.body.classList.add("van-toast--unclickable"),lockCount++):lockCount&&(lockCount--,lockCount||document.body.classList.remove("van-toast--unclickable"))}const[name$7,bem$7]=createNamespace$1("toast"),popupInheritProps=["show","overlay","teleport","transition","overlayClass","overlayStyle","closeOnClickOverlay"],toastProps={icon:String,show:Boolean,type:makeStringProp("text"),overlay:Boolean,message:numericProp,iconSize:numericProp,duration:makeNumberProp(2e3),position:makeStringProp("middle"),teleport:[String,Object],wordBreak:String,className:unknownProp,iconPrefix:String,transition:makeStringProp("van-fade"),loadingType:String,forbidClick:Boolean,overlayClass:unknownProp,overlayStyle:Object,closeOnClick:Boolean,closeOnClickOverlay:Boolean};var stdin_default$a=defineComponent({name:name$7,props:toastProps,emits:["update:show"],setup(i,{emit:e,slots:t}){let s,r=!1;const o=()=>{const u=i.show&&i.forbidClick;r!==u&&(r=u,lockClick(r))},a=u=>e("update:show",u),l=()=>{i.closeOnClick&&a(!1)},c=()=>clearTimeout(s),d=()=>{const{icon:u,type:g,iconSize:b,iconPrefix:y,loadingType:S}=i;if(u||g==="success"||g==="fail")return createVNode(Icon$1,{name:u||g,size:b,class:bem$7("icon"),classPrefix:y},null);if(g==="loading")return createVNode(Loading$1,{class:bem$7("loading"),size:b,type:S},null)},m=()=>{const{type:u,message:g}=i;if(t.message)return createVNode("div",{class:bem$7("text")},[t.message()]);if(isDef$1(g)&&g!=="")return u==="html"?createVNode("div",{key:0,class:bem$7("text"),innerHTML:String(g)},null):createVNode("div",{class:bem$7("text")},[g])};return watch(()=>[i.show,i.forbidClick],o),watch(()=>[i.show,i.type,i.message,i.duration],()=>{c(),i.show&&i.duration>0&&(s=setTimeout(()=>{a(!1)},i.duration))}),onMounted(o),onUnmounted(o),()=>createVNode(Popup,mergeProps({class:[bem$7([i.position,i.wordBreak==="normal"?"break-normal":i.wordBreak,{[i.type]:!i.icon}]),i.className],lockScroll:!1,onClick:l,onClosed:c,"onUpdate:show":a},pick$1(i,popupInheritProps)),{default:()=>[d(),m()]})}});function usePopupState(){const i=reactive({show:!1}),e=r=>{i.show=r},t=r=>{extend$2(i,r,{transitionAppear:!0}),e(!0)},s=()=>e(!1);return useExpose({open:t,close:s,toggle:e}),{open:t,close:s,state:i,toggle:e}}function mountComponent(i){const e=createApp(i),t=document.createElement("div");return document.body.appendChild(t),{instance:e.mount(t),unmount(){e.unmount(),document.body.removeChild(t)}}}const defaultOptions$1={icon:"",type:"text",message:"",className:"",overlay:!1,onClose:void 0,onOpened:void 0,duration:2e3,teleport:"body",iconSize:void 0,iconPrefix:void 0,position:"middle",transition:"van-fade",forbidClick:!1,loadingType:void 0,overlayClass:"",overlayStyle:void 0,closeOnClick:!1,closeOnClickOverlay:!1};let queue=[],allowMultiple=!1,currentOptions=extend$2({},defaultOptions$1);const defaultOptionsMap=new Map;function parseOptions(i){return isObject$3(i)?i:{message:i}}function createInstance(){const{instance:i,unmount:e}=mountComponent({setup(){const t=ref(""),{open:s,state:r,close:o,toggle:a}=usePopupState(),l=()=>{},c=()=>createVNode(stdin_default$a,mergeProps(r,{onClosed:l,"onUpdate:show":a}),null);return watch(t,d=>{r.message=d}),getCurrentInstance().render=c,{open:s,close:o,message:t}}});return i}function getInstance(){if(!queue.length||allowMultiple){const i=createInstance();queue.push(i)}return queue[queue.length-1]}function showToast(i={}){if(!inBrowser$2)return{};const e=getInstance(),t=parseOptions(i);return e.open(extend$2({},currentOptions,defaultOptionsMap.get(t.type||currentOptions.type),t)),e}const createMethod=i=>e=>showToast(extend$2({type:i},parseOptions(e))),showLoadingToast=createMethod("loading"),closeToast=i=>{queue.length&&(i?(queue.forEach(e=>{e.close()}),queue=[]):queue[0].close())};withInstall(stdin_default$a);const[name$6,bem$6]=createNamespace$1("empty"),emptyProps={image:makeStringProp("default"),imageSize:[Number,String,Array],description:String};var stdin_default$9=defineComponent({name:name$6,props:emptyProps,setup(i,{slots:e}){const t=()=>{const x=e.description?e.description():i.description;if(x)return createVNode("p",{class:bem$6("description")},[x])},s=()=>{if(e.default)return createVNode("div",{class:bem$6("bottom")},[e.default()])},r=useId(),o=x=>`${r}-${x}`,a=x=>`url(#${o(x)})`,l=(x,A,E)=>createVNode("stop",{"stop-color":x,offset:`${A}%`,"stop-opacity":E},null),c=(x,A)=>[l(x,0),l(A,100)],d=x=>[createVNode("defs",null,[createVNode("radialGradient",{id:o(x),cx:"50%",cy:"54%",fx:"50%",fy:"54%",r:"297%",gradientTransform:"matrix(-.16 0 0 -.33 .58 .72)"},[l("#EBEDF0",0),l("#F2F3F5",100,.3)])]),createVNode("ellipse",{fill:a(x),opacity:".8",cx:"80",cy:"140",rx:"46",ry:"8"},null)],m=()=>[createVNode("defs",null,[createVNode("linearGradient",{id:o("a"),x1:"64%",y1:"100%",x2:"64%"},[l("#FFF",0,.5),l("#F2F3F5",100)])]),createVNode("g",{opacity:".8"},[createVNode("path",{d:"M36 131V53H16v20H2v58h34z",fill:a("a")},null),createVNode("path",{d:"M123 15h22v14h9v77h-31V15z",fill:a("a")},null)])],u=()=>[createVNode("defs",null,[createVNode("linearGradient",{id:o("b"),x1:"64%",y1:"97%",x2:"64%",y2:"0%"},[l("#F2F3F5",0,.3),l("#F2F3F5",100)])]),createVNode("g",{opacity:".8"},[createVNode("path",{d:"M87 6c3 0 7 3 8 6a8 8 0 1 1-1 16H80a7 7 0 0 1-8-6c0-4 3-7 6-7 0-5 4-9 9-9Z",fill:a("b")},null),createVNode("path",{d:"M19 23c2 0 3 1 4 3 2 0 4 2 4 4a4 4 0 0 1-4 3v1h-7v-1l-1 1c-2 0-3-2-3-4 0-1 1-3 3-3 0-2 2-4 4-4Z",fill:a("b")},null)])],g=()=>createVNode("svg",{viewBox:"0 0 160 160"},[createVNode("defs",null,[createVNode("linearGradient",{id:o(1),x1:"64%",y1:"100%",x2:"64%"},[l("#FFF",0,.5),l("#F2F3F5",100)]),createVNode("linearGradient",{id:o(2),x1:"50%",x2:"50%",y2:"84%"},[l("#EBEDF0",0),l("#DCDEE0",100,0)]),createVNode("linearGradient",{id:o(3),x1:"100%",x2:"100%",y2:"100%"},[c("#EAEDF0","#DCDEE0")]),createVNode("radialGradient",{id:o(4),cx:"50%",cy:"0%",fx:"50%",fy:"0%",r:"100%",gradientTransform:"matrix(0 1 -.54 0 .5 -.5)"},[l("#EBEDF0",0),l("#FFF",100,0)])]),createVNode("g",{fill:"none"},[m(),createVNode("path",{fill:a(4),d:"M0 139h160v21H0z"},null),createVNode("path",{d:"M80 54a7 7 0 0 1 3 13v27l-2 2h-2a2 2 0 0 1-2-2V67a7 7 0 0 1 3-13z",fill:a(2)},null),createVNode("g",{opacity:".6","stroke-linecap":"round","stroke-width":"7"},[createVNode("path",{d:"M64 47a19 19 0 0 0-5 13c0 5 2 10 5 13",stroke:a(3)},null),createVNode("path",{d:"M53 36a34 34 0 0 0 0 48",stroke:a(3)},null),createVNode("path",{d:"M95 73a19 19 0 0 0 6-13c0-5-2-9-6-13",stroke:a(3)},null),createVNode("path",{d:"M106 84a34 34 0 0 0 0-48",stroke:a(3)},null)]),createVNode("g",{transform:"translate(31 105)"},[createVNode("rect",{fill:"#EBEDF0",width:"98",height:"34",rx:"2"},null),createVNode("rect",{fill:"#FFF",x:"9",y:"8",width:"80",height:"18",rx:"1.1"},null),createVNode("rect",{fill:"#EBEDF0",x:"15",y:"12",width:"18",height:"6",rx:"1.1"},null)])])]),b=()=>createVNode("svg",{viewBox:"0 0 160 160"},[createVNode("defs",null,[createVNode("linearGradient",{x1:"50%",x2:"50%",y2:"100%",id:o(5)},[c("#F2F3F5","#DCDEE0")]),createVNode("linearGradient",{x1:"95%",y1:"48%",x2:"5.5%",y2:"51%",id:o(6)},[c("#EAEDF1","#DCDEE0")]),createVNode("linearGradient",{y1:"45%",x2:"100%",y2:"54%",id:o(7)},[c("#EAEDF1","#DCDEE0")])]),m(),u(),createVNode("g",{transform:"translate(36 50)",fill:"none"},[createVNode("g",{transform:"translate(8)"},[createVNode("rect",{fill:"#EBEDF0",opacity:".6",x:"38",y:"13",width:"36",height:"53",rx:"2"},null),createVNode("rect",{fill:a(5),width:"64",height:"66",rx:"2"},null),createVNode("rect",{fill:"#FFF",x:"6",y:"6",width:"52",height:"55",rx:"1"},null),createVNode("g",{transform:"translate(15 17)",fill:a(6)},[createVNode("rect",{width:"34",height:"6",rx:"1"},null),createVNode("path",{d:"M0 14h34v6H0z"},null),createVNode("rect",{y:"28",width:"34",height:"6",rx:"1"},null)])]),createVNode("rect",{fill:a(7),y:"61",width:"88",height:"28",rx:"1"},null),createVNode("rect",{fill:"#F7F8FA",x:"29",y:"72",width:"30",height:"6",rx:"1"},null)])]),y=()=>createVNode("svg",{viewBox:"0 0 160 160"},[createVNode("defs",null,[createVNode("linearGradient",{x1:"50%",x2:"50%",y2:"100%",id:o(8)},[c("#EAEDF1","#DCDEE0")])]),m(),u(),d("c"),createVNode("path",{d:"m59 60 21 21 21-21h3l9 9v3L92 93l21 21v3l-9 9h-3l-21-21-21 21h-3l-9-9v-3l21-21-21-21v-3l9-9h3Z",fill:a(8)},null)]),S=()=>createVNode("svg",{viewBox:"0 0 160 160"},[createVNode("defs",null,[createVNode("linearGradient",{x1:"50%",y1:"100%",x2:"50%",id:o(9)},[c("#EEE","#D8D8D8")]),createVNode("linearGradient",{x1:"100%",y1:"50%",y2:"50%",id:o(10)},[c("#F2F3F5","#DCDEE0")]),createVNode("linearGradient",{x1:"50%",x2:"50%",y2:"100%",id:o(11)},[c("#F2F3F5","#DCDEE0")]),createVNode("linearGradient",{x1:"50%",x2:"50%",y2:"100%",id:o(12)},[c("#FFF","#F7F8FA")])]),m(),u(),d("d"),createVNode("g",{transform:"rotate(-45 113 -4)",fill:"none"},[createVNode("rect",{fill:a(9),x:"24",y:"52.8",width:"5.8",height:"19",rx:"1"},null),createVNode("rect",{fill:a(10),x:"22.1",y:"67.3",width:"9.9",height:"28",rx:"1"},null),createVNode("circle",{stroke:a(11),"stroke-width":"8",cx:"27",cy:"27",r:"27"},null),createVNode("circle",{fill:a(12),cx:"27",cy:"27",r:"16"},null),createVNode("path",{d:"M37 7c-8 0-15 5-16 12",stroke:a(11),"stroke-width":"3",opacity:".5","stroke-linecap":"round",transform:"rotate(45 29 13)"},null)])]),v=()=>{var x;if(e.image)return e.image();const A={error:y,search:S,network:g,default:b};return((x=A[i.image])==null?void 0:x.call(A))||createVNode("img",{src:i.image},null)};return()=>createVNode("div",{class:bem$6()},[createVNode("div",{class:bem$6("image"),style:getSizeStyle(i.imageSize)},[v()]),t(),s()])}});const Empty=withInstall(stdin_default$9),[name$5,bem$5]=createNamespace$1("nav-bar"),navBarProps={title:String,fixed:Boolean,zIndex:numericProp,border:truthProp,leftText:String,rightText:String,leftArrow:Boolean,placeholder:Boolean,safeAreaInsetTop:Boolean,clickable:truthProp};var stdin_default$8=defineComponent({name:name$5,props:navBarProps,emits:["clickLeft","clickRight"],setup(i,{emit:e,slots:t}){const s=ref(),r=usePlaceholder(s,bem$5),o=m=>e("clickLeft",m),a=m=>e("clickRight",m),l=()=>t.left?t.left():[i.leftArrow&&createVNode(Icon$1,{class:bem$5("arrow"),name:"arrow-left"},null),i.leftText&&createVNode("span",{class:bem$5("text")},[i.leftText])],c=()=>t.right?t.right():createVNode("span",{class:bem$5("text")},[i.rightText]),d=()=>{const{title:m,fixed:u,border:g,zIndex:b}=i,y=getZIndexStyle(b),S=i.leftArrow||i.leftText||t.left,v=i.rightText||t.right;return createVNode("div",{ref:s,style:y,class:[bem$5({fixed:u}),{[BORDER_BOTTOM]:g,"van-safe-area-top":i.safeAreaInsetTop}]},[createVNode("div",{class:bem$5("content")},[S&&createVNode("div",{class:[bem$5("left"),i.clickable?HAPTICS_FEEDBACK:""],onClick:o},[l()]),createVNode("div",{class:[bem$5("title"),"van-ellipsis"]},[t.title?t.title():m]),v&&createVNode("div",{class:[bem$5("right"),i.clickable?HAPTICS_FEEDBACK:""],onClick:a},[c()])])])};return()=>i.fixed&&i.placeholder?r(d):d()}});const NavBar=withInstall(stdin_default$8),[name$4,bem$4]=createNamespace$1("notice-bar"),noticeBarProps={text:String,mode:String,color:String,delay:makeNumericProp(1),speed:makeNumericProp(60),leftIcon:String,wrapable:Boolean,background:String,scrollable:{type:Boolean,default:null}};var stdin_default$7=defineComponent({name:name$4,props:noticeBarProps,emits:["close","replay"],setup(i,{emit:e,slots:t}){let s=0,r=0,o;const a=ref(),l=ref(),c=reactive({show:!0,offset:0,duration:0}),d=()=>{if(t["left-icon"])return t["left-icon"]();if(i.leftIcon)return createVNode(Icon$1,{class:bem$4("left-icon"),name:i.leftIcon},null)},m=()=>{if(i.mode==="closeable")return"cross";if(i.mode==="link")return"arrow"},u=v=>{i.mode==="closeable"&&(c.show=!1,e("close",v))},g=()=>{if(t["right-icon"])return t["right-icon"]();const v=m();if(v)return createVNode(Icon$1,{name:v,class:bem$4("right-icon"),onClick:u},null)},b=()=>{c.offset=s,c.duration=0,raf(()=>{doubleRaf(()=>{c.offset=-r,c.duration=(r+s)/+i.speed,e("replay")})})},y=()=>{const v=i.scrollable===!1&&!i.wrapable,x={transform:c.offset?`translateX(${c.offset}px)`:"",transitionDuration:`${c.duration}s`};return createVNode("div",{ref:a,role:"marquee",class:bem$4("wrap")},[createVNode("div",{ref:l,style:x,class:[bem$4("content"),{"van-ellipsis":v}],onTransitionend:b},[t.default?t.default():i.text])])},S=()=>{const{delay:v,speed:x,scrollable:A}=i,E=isDef$1(v)?+v*1e3:0;s=0,r=0,c.offset=0,c.duration=0,clearTimeout(o),o=setTimeout(()=>{if(!a.value||!l.value||A===!1)return;const w=useRect(a).width,_=useRect(l).width;(A||_>w)&&doubleRaf(()=>{s=w,r=_,c.offset=-r,c.duration=r/+x})},E)};return onPopupReopen(S),onMountedOrActivated(S),useEventListener$1("pageshow",S),useExpose({reset:S}),watch(()=>[i.text,i.scrollable],S),()=>{const{color:v,wrapable:x,background:A}=i;return withDirectives(createVNode("div",{role:"alert",class:bem$4({wrapable:x}),style:{color:v,background:A}},[d(),y(),g()]),[[vShow,c.show]])}}});const NoticeBar=withInstall(stdin_default$7),[name$3,bem$3]=createNamespace$1("skeleton-title"),skeletonTitleProps={round:Boolean,titleWidth:numericProp};var stdin_default$6=defineComponent({name:name$3,props:skeletonTitleProps,setup(i){return()=>createVNode("h3",{class:bem$3([{round:i.round}]),style:{width:addUnit(i.titleWidth)}},null)}});const SkeletonTitle=withInstall(stdin_default$6);var stdin_default$5=SkeletonTitle;const[name$2,bem$2]=createNamespace$1("skeleton-avatar"),skeletonAvatarProps={avatarSize:numericProp,avatarShape:makeStringProp("round")};var stdin_default$4=defineComponent({name:name$2,props:skeletonAvatarProps,setup(i){return()=>createVNode("div",{class:bem$2([i.avatarShape]),style:getSizeStyle(i.avatarSize)},null)}});const SkeletonAvatar=withInstall(stdin_default$4);var stdin_default$3=SkeletonAvatar;const DEFAULT_ROW_WIDTH="100%",skeletonParagraphProps={round:Boolean,rowWidth:{type:numericProp,default:DEFAULT_ROW_WIDTH}},[name$1,bem$1]=createNamespace$1("skeleton-paragraph");var stdin_default$2=defineComponent({name:name$1,props:skeletonParagraphProps,setup(i){return()=>createVNode("div",{class:bem$1([{round:i.round}]),style:{width:i.rowWidth}},null)}});const SkeletonParagraph=withInstall(stdin_default$2);var stdin_default$1=SkeletonParagraph;const[name,bem]=createNamespace$1("skeleton"),DEFAULT_LAST_ROW_WIDTH="60%",skeletonProps={row:makeNumericProp(0),round:Boolean,title:Boolean,titleWidth:numericProp,avatar:Boolean,avatarSize:numericProp,avatarShape:makeStringProp("round"),loading:truthProp,animate:truthProp,rowWidth:{type:[Number,String,Array],default:DEFAULT_ROW_WIDTH}};var stdin_default=defineComponent({name,inheritAttrs:!1,props:skeletonProps,setup(i,{slots:e,attrs:t}){const s=()=>{if(i.avatar)return createVNode(stdin_default$3,{avatarShape:i.avatarShape,avatarSize:i.avatarSize},null)},r=()=>{if(i.title)return createVNode(stdin_default$5,{round:i.round,titleWidth:i.titleWidth},null)},o=c=>{const{rowWidth:d}=i;return d===DEFAULT_ROW_WIDTH&&c===+i.row-1?DEFAULT_LAST_ROW_WIDTH:Array.isArray(d)?d[c]:d},a=()=>Array(+i.row).fill("").map((c,d)=>createVNode(stdin_default$1,{key:d,round:i.round,rowWidth:addUnit(o(d))},null)),l=()=>e.template?e.template():createVNode(Fragment,null,[s(),createVNode("div",{class:bem("content")},[r(),a()])]);return()=>{var c;return i.loading?createVNode("div",mergeProps({class:bem({animate:i.animate,round:i.round})},t),[l()]):(c=e.default)==null?void 0:c.call(e)}}});const Skeleton=withInstall(stdin_default),storeData=reactive({status:"init",user:{},platformType:"STUDENT",platformApi:"/api-student",proxy:"",isApp:!1}),setStoreData=i=>{Object.assign(storeData,i)},setUserInfo=i=>{storeData.status="login",storeData.user=i||{}};var commonjsGlobal=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function getAugmentedNamespace(i){if(i.__esModule)return i;var e=i.default;if(typeof e=="function"){var t=function s(){if(this instanceof s){var r=[null];r.push.apply(r,arguments);var o=Function.bind.apply(e,r);return new o}return e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(i).forEach(function(s){var r=Object.getOwnPropertyDescriptor(i,s);Object.defineProperty(t,s,r.get?r:{enumerable:!0,get:function(){return i[s]}})}),t}var assign$1=make_assign(),create$1=make_create(),trim$1=make_trim(),Global$5=typeof window<"u"?window:commonjsGlobal,util$i={assign:assign$1,create:create$1,trim:trim$1,bind:bind$3,slice:slice$3,each:each$8,map,pluck:pluck$1,isList:isList$1,isFunction:isFunction$2,isObject:isObject$2,Global:Global$5};function make_assign(){return Object.assign?Object.assign:function(e,t,s,r){for(var o=1;o"u"?null:console;if(i){var e=i.warn?i.warn:i.log;e.apply(i,arguments)}}function createStore(i,e,t){t||(t=""),i&&!isList(i)&&(i=[i]),e&&!isList(e)&&(e=[e]);var s=t?"__storejs_"+t+"_":"",r=t?new RegExp("^"+s):null,o=/^[a-zA-Z0-9_\-]*$/;if(!o.test(t))throw new Error("store.js namespaces can only have alphanumerics + underscores and dashes");var a={_namespacePrefix:s,_namespaceRegexp:r,_testStorage:function(c){try{var d="__storejs__test__";c.write(d,d);var m=c.read(d)===d;return c.remove(d),m}catch(u){return!1}},_assignPluginFnProp:function(c,d){var m=this[d];this[d]=function(){var g=slice$2(arguments,0),b=this;function y(){if(m)return each$7(arguments,function(v,x){g[x]=v}),m.apply(b,g)}var S=[y].concat(g);return c.apply(b,S)}},_serialize:function(c){return JSON.stringify(c)},_deserialize:function(c,d){if(!c)return d;var m="";try{m=JSON.parse(c)}catch(u){m=c}return m!==void 0?m:d},_addStorage:function(c){this.enabled||this._testStorage(c)&&(this.storage=c,this.enabled=!0)},_addPlugin:function(c){var d=this;if(isList(c)){each$7(c,function(g){d._addPlugin(g)});return}var m=pluck(this.plugins,function(g){return c===g});if(!m){if(this.plugins.push(c),!isFunction$1(c))throw new Error("Plugins must be function values that return objects");var u=c.call(this);if(!isObject$1(u))throw new Error("Plugins must return an object of function properties");each$7(u,function(g,b){if(!isFunction$1(g))throw new Error("Bad plugin property: "+b+" from plugin "+c.name+". Plugins should only return functions.");d._assignPluginFnProp(g,b)})}},addStorage:function(c){_warn("store.addStorage(storage) is deprecated. Use createStore([storages])"),this._addStorage(c)}},l=create(a,storeAPI,{plugins:[]});return l.raw={},each$7(l,function(c,d){isFunction$1(c)&&(l.raw[d]=bind$2(l,c))}),each$7(i,function(c){l._addStorage(c)}),each$7(e,function(c){l._addPlugin(c)}),l}var util$g=util$i,Global$4=util$g.Global,localStorage_1={name:"localStorage",read:read$5,write:write$5,each:each$6,remove:remove$6,clearAll:clearAll$5};function localStorage$1(){return Global$4.localStorage}function read$5(i){return localStorage$1().getItem(i)}function write$5(i,e){return localStorage$1().setItem(i,e)}function each$6(i){for(var e=localStorage$1().length-1;e>=0;e--){var t=localStorage$1().key(e);i(read$5(t),t)}}function remove$6(i){return localStorage$1().removeItem(i)}function clearAll$5(){return localStorage$1().clear()}var util$f=util$i,Global$3=util$f.Global,oldFFGlobalStorage={name:"oldFF-globalStorage",read:read$4,write:write$4,each:each$5,remove:remove$5,clearAll:clearAll$4},globalStorage=Global$3.globalStorage;function read$4(i){return globalStorage[i]}function write$4(i,e){globalStorage[i]=e}function each$5(i){for(var e=globalStorage.length-1;e>=0;e--){var t=globalStorage.key(e);i(globalStorage[t],t)}}function remove$5(i){return globalStorage.removeItem(i)}function clearAll$4(){each$5(function(i,e){delete globalStorage[i]})}var util$e=util$i,Global$2=util$e.Global,oldIEUserDataStorage={name:"oldIE-userDataStorage",write:write$3,read:read$3,each:each$4,remove:remove$4,clearAll:clearAll$3},storageName="storejs",doc$1=Global$2.document,_withStorageEl=_makeIEStorageElFunction(),disable$1=(Global$2.navigator?Global$2.navigator.userAgent:"").match(/ (MSIE 8|MSIE 9|MSIE 10)\./);function write$3(i,e){if(!disable$1){var t=fixKey(i);_withStorageEl(function(s){s.setAttribute(t,e),s.save(storageName)})}}function read$3(i){if(!disable$1){var e=fixKey(i),t=null;return _withStorageEl(function(s){t=s.getAttribute(e)}),t}}function each$4(i){_withStorageEl(function(e){for(var t=e.XMLDocument.documentElement.attributes,s=t.length-1;s>=0;s--){var r=t[s];i(e.getAttribute(r.name),r.name)}})}function remove$4(i){var e=fixKey(i);_withStorageEl(function(t){t.removeAttribute(e),t.save(storageName)})}function clearAll$3(){_withStorageEl(function(i){var e=i.XMLDocument.documentElement.attributes;i.load(storageName);for(var t=e.length-1;t>=0;t--)i.removeAttribute(e[t].name);i.save(storageName)})}var forbiddenCharsRegex=new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]","g");function fixKey(i){return i.replace(/^\d/,"___$&").replace(forbiddenCharsRegex,"___")}function _makeIEStorageElFunction(){if(!doc$1||!doc$1.documentElement||!doc$1.documentElement.addBehavior)return null;var i="script",e,t,s;try{t=new ActiveXObject("htmlfile"),t.open(),t.write("<"+i+">document.w=window'),t.close(),e=t.w.frames[0].document,s=e.createElement("div")}catch(r){s=doc$1.createElement("div"),e=doc$1.body}return function(r){var o=[].slice.call(arguments,0);o.unshift(s),e.appendChild(s),s.addBehavior("#default#userData"),s.load(storageName),r.apply(this,o),e.removeChild(s)}}var util$d=util$i,Global$1=util$d.Global,trim=util$d.trim,cookieStorage={name:"cookieStorage",read:read$2,write:write$2,each:each$3,remove:remove$3,clearAll:clearAll$2},doc=Global$1.document;function read$2(i){if(!i||!_has(i))return null;var e="(?:^|.*;\\s*)"+escape(i).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*";return unescape(doc.cookie.replace(new RegExp(e),"$1"))}function each$3(i){for(var e=doc.cookie.split(/; ?/g),t=e.length-1;t>=0;t--)if(trim(e[t])){var s=e[t].split("="),r=unescape(s[0]),o=unescape(s[1]);i(o,r)}}function write$2(i,e){i&&(doc.cookie=escape(i)+"="+escape(e)+"; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/")}function remove$3(i){!i||!_has(i)||(doc.cookie=escape(i)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/")}function clearAll$2(){each$3(function(i,e){remove$3(e)})}function _has(i){return new RegExp("(?:^|;\\s*)"+escape(i).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(doc.cookie)}var util$c=util$i,Global=util$c.Global,sessionStorage_1={name:"sessionStorage",read:read$1,write:write$1,each:each$2,remove:remove$2,clearAll:clearAll$1};function sessionStorage$1(){return Global.sessionStorage}function read$1(i){return sessionStorage$1().getItem(i)}function write$1(i,e){return sessionStorage$1().setItem(i,e)}function each$2(i){for(var e=sessionStorage$1().length-1;e>=0;e--){var t=sessionStorage$1().key(e);i(read$1(t),t)}}function remove$2(i){return sessionStorage$1().removeItem(i)}function clearAll$1(){return sessionStorage$1().clear()}var memoryStorage_1={name:"memoryStorage",read,write,each:each$1,remove:remove$1,clearAll},memoryStorage={};function read(i){return memoryStorage[i]}function write(i,e){memoryStorage[i]=e}function each$1(i){for(var e in memoryStorage)memoryStorage.hasOwnProperty(e)&&i(memoryStorage[e],e)}function remove$1(i){delete memoryStorage[i]}function clearAll(i){memoryStorage={}}var all=[localStorage_1,oldFFGlobalStorage,oldIEUserDataStorage,cookieStorage,sessionStorage_1,memoryStorage_1],json2$1={},hasRequiredJson2;function requireJson2(){return hasRequiredJson2||(hasRequiredJson2=1,typeof JSON!="object"&&(JSON={}),function(){var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;function f(i){return i<10?"0"+i:i}function this_value(){return this.valueOf()}typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=this_value,Number.prototype.toJSON=this_value,String.prototype.toJSON=this_value);var gap,indent,meta,rep;function quote(i){return rx_escapable.lastIndex=0,rx_escapable.test(i)?'"'+i.replace(rx_escapable,function(e){var t=meta[e];return typeof t=="string"?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+i+'"'}function str(i,e){var t,s,r,o,a=gap,l,c=e[i];switch(c&&typeof c=="object"&&typeof c.toJSON=="function"&&(c=c.toJSON(i)),typeof rep=="function"&&(c=rep.call(e,i,c)),typeof c){case"string":return quote(c);case"number":return isFinite(c)?String(c):"null";case"boolean":case"null":return String(c);case"object":if(!c)return"null";if(gap+=indent,l=[],Object.prototype.toString.apply(c)==="[object Array]"){for(o=c.length,t=0;t{const i=navigator.userAgent;return{trident:i.indexOf("Trident")>-1,presto:i.indexOf("Presto")>-1,webKit:i.indexOf("AppleWebKit")>-1,gecko:i.indexOf("Gecko")>-1&&i.indexOf("KHTML")==-1,mobile:!!i.match(/AppleWebKit.*Mobile.*/),ios:!!i.match(/Mac OS X/)||/(iPhone|iPad|iPod|iOS)/i.test(i),android:i.indexOf("Android")>-1||i.indexOf("Adr")>-1,iPhone:i.indexOf("ORCHESTRAAPPI")>-1,isApp:i.includes("DAYAAPPA")||i.includes("DAYAAPPI")||i.includes("COLEXIUAPPA")||i.includes("COLEXIUAPPI")||i.includes("ORCHESTRAAPPI")||i.includes("ORCHESTRAAPPA"),isTeacher:i.indexOf("ORCHESTRATEACHER")>-1||i.includes("COLEXIUTEACHER"),isStudent:i.indexOf("ORCHESTRASTUDENT")>-1||i.includes("COLEXIUSTUDENT"),isSchool:i.indexOf("ORCHESTRASCHOOL")>-1,iPad:i.indexOf("iPad")>-1,webApp:i.indexOf("Safari")==-1,weixin:i.indexOf("MicroMessenger")>-1,alipay:i.indexOf("AlipayClient")>-1,huawei:!!i.match(/huawei/i)||!!i.match(/honor/i),xiaomi:!!i.match(/mi\s/i)||!!i.match(/redmi/i)||!!i.match(/mix/i)}},getRandomKey=()=>""+Date.now()+Math.floor(Math.random()*1e6),AuthorizationKey="AUTHORIZATION",setToken=i=>{sessionStorage.setItem(AuthorizationKey,i)},getToken=()=>sessionStorage.getItem(AuthorizationKey)||"",setGlobalData=(i,e)=>{if(!i||!e)return;const t=window.GYM||{};t[i]=e,window.GYM=t},BEHAVIORIDKEY="BEHAVIORID",setBehaviorId=i=>{localStorage.setItem(BEHAVIORIDKEY,i)},getBehaviorId=()=>localStorage.getItem(BEHAVIORIDKEY),campIdKey="CAMPID",setCampId=i=>{sessionStorage.setItem(campIdKey,i)},getCampId=()=>sessionStorage.getItem(campIdKey)||"",getSecondRPM=(i,e)=>{if(isNaN(i))return"00:00";let t=Math.floor(i/60/60%24),s=Math.floor(i/60%60),r=Math.floor(i%60);return e==="cn"?`${t>0?t.toString().padStart(2,"0")+"时":""}${s.toString().padStart(2,"0")}分${r.toString().padStart(2,"0")}秒`:`${t>0?t.toString().padStart(2,"0")+":":""}${s.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`},SPEEDKEY="speeds",setStorageSpeed=(i,e)=>{const t=store_legacy.get(SPEEDKEY)||{};t[i]=e,store_legacy.set(SPEEDKEY,t)},getStorageSpeed=i=>(store_legacy.get(SPEEDKEY)||{})[i]||0,originalPostMessage=window.postMessage;window.postMessage=i=>{originalPostMessage(i,"*")};const loop=()=>{},calls={};var ni,si,ri,oi,ai,li;const instance=window.DAYA||((si=(ni=window.webkit)==null?void 0:ni.messageHandlers)==null?void 0:si.DAYA)||window.COLEXIU||((oi=(ri=window.webkit)==null?void 0:ri.messageHandlers)==null?void 0:oi.COLEXIU)||window.ORCHESTRA||((li=(ai=window.webkit)==null?void 0:ai.messageHandlers)==null?void 0:li.ORCHESTRA);instance&&window.addEventListener("message",i=>{var e,t;try{const s=i.data?typeof i.data=="object"?i.data:JSON.parse(i.data):{},r=((e=s.content)==null?void 0:e.uuid)||s.uuid;try{s.content&&(s.content=JSON.parse(s.content))}catch(l){}if(!r){const l=Object.keys(calls).filter(c=>c.indexOf(s.api)===0);for(const c of l){const d=calls[c]||loop;typeof d=="function"&&d(s),Array.isArray(d)&&d.forEach(m=>{typeof m=="function"&&m(s)})}return}const o=((t=s.content)==null?void 0:t.uuid)||s.uuid||s.api+s.uuid,a=calls[o]||loop;typeof a=="function"&&a(s)}catch(s){console.error("通信消息解析错误",s)}});const postMessage=(i,e)=>{if(instance){const t=getRandomKey();calls[t]=e||loop,i.content=i.content?{...i.content,uuid:t}:{uuid:t},instance.postMessage(JSON.stringify(i)),console.log("h5_请求_api:",i)}},listenerMessage=(i,e)=>{const t=i;calls[t]||(calls[t]=[]),calls[t].push(e||loop)},removeListenerMessage=(i,e)=>{const t=i;if(Array.isArray(calls[t])){const s=calls[t].indexOf(e);calls[t].splice(s,1)}},promisefiyPostMessage=i=>new Promise(e=>{postMessage(i,t=>e(t))}),api_getToken=()=>storeData.isApp?promisefiyPostMessage({api:"getToken"}):Promise.resolve({}),getEarphone=()=>storeData.isApp?promisefiyPostMessage({api:"isWiredHeadsetOn"}):Promise.resolve({}),isSpecialShapedScreen=()=>storeData.isApp?promisefiyPostMessage({api:"isSpecialShapedScreen"}):Promise.resolve({}),sendResult=i=>{listenerMessage("sendResult",i)},removeResult=i=>{removeListenerMessage("sendResult",i)},endSoundCheck=()=>{postMessage({api:"endSoundCheck"})},startEvaluating=i=>storeData.isApp?promisefiyPostMessage({api:"startEvaluating",content:i}):Promise.resolve({}),endEvaluating=i=>storeData.isApp?promisefiyPostMessage({api:"endEvaluating",content:i}):Promise.resolve({}),cancelEvaluating=()=>{postMessage({api:"cancelEvaluating"})},api_startRecording=()=>storeData.isApp?promisefiyPostMessage({api:"startRecording"}):Promise.resolve({}),api_stopRecording=()=>storeData.isApp?promisefiyPostMessage({api:"stopRecording"}):Promise.resolve({}),api_proxyServiceMessage=i=>storeData.isApp?promisefiyPostMessage({api:"proxyServiceMessage",content:i}):Promise.resolve({}),api_recordStartTime=i=>{listenerMessage("recordStartTime",i)},api_remove_recordStartTime=i=>{removeListenerMessage("recordStartTime",i)},api_videoUpdate=i=>{postMessage({api:"videoUpdate"},i)},api_shareAchievements=i=>storeData.isApp?promisefiyPostMessage({api:"shareAchievements",content:i}):Promise.resolve({}),api_openWebView=i=>storeData.isApp?promisefiyPostMessage({api:"openWebView",content:i}):Promise.resolve({}),api_openCamera=()=>storeData.isApp?promisefiyPostMessage({api:"openCamera"}):Promise.resolve({}),api_closeCamera=()=>storeData.isApp?promisefiyPostMessage({api:"closeCamera"}):Promise.resolve({}),api_setStatusBarVisibility=()=>{postMessage({api:"setStatusBarVisibility",content:{isVisibility:0}})},api_cloudToggleFollow=i=>storeData.isApp?promisefiyPostMessage({api:"cloudToggleFollow",content:{state:i}}):Promise.resolve({}),api_cloudFollowTime=(i,e=!0)=>{e?listenerMessage("cloudFollowTime",i):removeListenerMessage("cloudFollowTime",i)},api_goback=()=>{postMessage({api:"goBack"})},api_back=()=>{postMessage({api:"back"})},api_cloudLoading=(i=!1)=>{postMessage({api:"cloudLoading",content:{show:i,type:"fullscreen"}})},api_cloudDestroy=()=>{postMessage({api:"cloudDestroy"})},api_setEventTracking=()=>{postMessage({api:"setEventTracking",content:{type:"klx_xiaokuAI"}})},api_savePicture=i=>storeData.isApp?promisefiyPostMessage({api:"savePicture",content:i}):Promise.resolve({}),api_setCache=i=>{postMessage({api:"setCache",content:i})},api_suspendPlay=i=>{listenerMessage("suspendPlay",i)},api_startCapture=()=>{postMessage({api:"startCapture"})},api_endCapture=()=>{postMessage({api:"endCapture"})},api_getDeviceDelay=()=>storeData.isApp?promisefiyPostMessage({api:"getDeviceDelay"}):Promise.resolve({}),api_toggleTune=(i,e)=>{if(!storeData.isApp)return Promise.resolve({});if(i==="start")return promisefiyPostMessage({api:"startTune",content:{count:e+""}});if(i==="stop")return promisefiyPostMessage({api:"endTune"});if(i==="finishTune")return promisefiyPostMessage({api:"finishTune"})},api_createMusicPlayer=i=>storeData.isApp?promisefiyPostMessage({api:"createMusicPlayer",content:i}):Promise.resolve({}),api_keepScreenLongLight=()=>{postMessage({api:"keepScreenLongLight",content:{isOpenLight:!0}})},api_setRequestedOrientation=i=>{postMessage({api:"setRequestedOrientation",content:{orientation:i}})},api_playProgress=i=>{listenerMessage("playProgress",i)},api_cloudAccompanyMessage=i=>{postMessage({api:"cloudAccompanyMessage",content:{accompanyUrl:i}})},TheError=defineComponent({name:"The-error",setup(i,e){return()=>createVNode("div",null,[createVNode(NavBar,{leftArrow:!0,onClickLeft:()=>{api_back()}},null),createVNode(Empty,{image:"error",description:"网络开小差,请稍后重试"},{default:()=>[createVNode(Button,{type:"primary",size:"small",onClick:()=>history.go(0)},{default:()=>[createTextVNode("重新加载")]})]})])}}),token="%[a-f0-9]{2}",singleMatcher=new RegExp("("+token+")|([^%]+?)","gi"),multiMatcher=new RegExp("("+token+")+","gi");function decodeComponents(i,e){try{return[decodeURIComponent(i.join(""))]}catch(r){}if(i.length===1)return i;e=e||1;const t=i.slice(0,e),s=i.slice(e);return Array.prototype.concat.call([],decodeComponents(t),decodeComponents(s))}function decode$4(i){try{return decodeURIComponent(i)}catch(e){let t=i.match(singleMatcher)||[];for(let s=1;si==null,strictUriEncode=i=>encodeURIComponent(i).replace(/[!'()*]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`),encodeFragmentIdentifier=Symbol("encodeFragmentIdentifier");function encoderForArrayFormat(i){switch(i.arrayFormat){case"index":return e=>(t,s)=>{const r=t.length;return s===void 0||i.skipNull&&s===null||i.skipEmptyString&&s===""?t:s===null?[...t,[encode$1(e,i),"[",r,"]"].join("")]:[...t,[encode$1(e,i),"[",encode$1(r,i),"]=",encode$1(s,i)].join("")]};case"bracket":return e=>(t,s)=>s===void 0||i.skipNull&&s===null||i.skipEmptyString&&s===""?t:s===null?[...t,[encode$1(e,i),"[]"].join("")]:[...t,[encode$1(e,i),"[]=",encode$1(s,i)].join("")];case"colon-list-separator":return e=>(t,s)=>s===void 0||i.skipNull&&s===null||i.skipEmptyString&&s===""?t:s===null?[...t,[encode$1(e,i),":list="].join("")]:[...t,[encode$1(e,i),":list=",encode$1(s,i)].join("")];case"comma":case"separator":case"bracket-separator":{const e=i.arrayFormat==="bracket-separator"?"[]=":"=";return t=>(s,r)=>r===void 0||i.skipNull&&r===null||i.skipEmptyString&&r===""?s:(r=r===null?"":r,s.length===0?[[encode$1(t,i),e,encode$1(r,i)].join("")]:[[s,encode$1(r,i)].join(i.arrayFormatSeparator)])}default:return e=>(t,s)=>s===void 0||i.skipNull&&s===null||i.skipEmptyString&&s===""?t:s===null?[...t,encode$1(e,i)]:[...t,[encode$1(e,i),"=",encode$1(s,i)].join("")]}}function parserForArrayFormat(i){let e;switch(i.arrayFormat){case"index":return(t,s,r)=>{if(e=/\[(\d*)]$/.exec(t),t=t.replace(/\[\d*]$/,""),!e){r[t]=s;return}r[t]===void 0&&(r[t]={}),r[t][e[1]]=s};case"bracket":return(t,s,r)=>{if(e=/(\[])$/.exec(t),t=t.replace(/\[]$/,""),!e){r[t]=s;return}if(r[t]===void 0){r[t]=[s];return}r[t]=[...r[t],s]};case"colon-list-separator":return(t,s,r)=>{if(e=/(:list)$/.exec(t),t=t.replace(/:list$/,""),!e){r[t]=s;return}if(r[t]===void 0){r[t]=[s];return}r[t]=[...r[t],s]};case"comma":case"separator":return(t,s,r)=>{const o=typeof s=="string"&&s.includes(i.arrayFormatSeparator),a=typeof s=="string"&&!o&&decode$3(s,i).includes(i.arrayFormatSeparator);s=a?decode$3(s,i):s;const l=o||a?s.split(i.arrayFormatSeparator).map(c=>decode$3(c,i)):s===null?s:decode$3(s,i);r[t]=l};case"bracket-separator":return(t,s,r)=>{const o=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!o){r[t]=s&&decode$3(s,i);return}const a=s===null?[]:s.split(i.arrayFormatSeparator).map(l=>decode$3(l,i));if(r[t]===void 0){r[t]=a;return}r[t]=[...r[t],...a]};default:return(t,s,r)=>{if(r[t]===void 0){r[t]=s;return}r[t]=[...[r[t]].flat(),s]}}}function validateArrayFormatSeparator(i){if(typeof i!="string"||i.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function encode$1(i,e){return e.encode?e.strict?strictUriEncode(i):encodeURIComponent(i):i}function decode$3(i,e){return e.decode?decodeUriComponent(i):i}function keysSorter(i){return Array.isArray(i)?i.sort():typeof i=="object"?keysSorter(Object.keys(i)).sort((e,t)=>Number(e)-Number(t)).map(e=>i[e]):i}function removeHash(i){const e=i.indexOf("#");return e!==-1&&(i=i.slice(0,e)),i}function getHash(i){let e="";const t=i.indexOf("#");return t!==-1&&(e=i.slice(t)),e}function parseValue(i,e){return e.parseNumbers&&!Number.isNaN(Number(i))&&typeof i=="string"&&i.trim()!==""?i=Number(i):e.parseBooleans&&i!==null&&(i.toLowerCase()==="true"||i.toLowerCase()==="false")&&(i=i.toLowerCase()==="true"),i}function extract(i){i=removeHash(i);const e=i.indexOf("?");return e===-1?"":i.slice(e+1)}function parse$5(i,e){e={decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1,...e},validateArrayFormatSeparator(e.arrayFormatSeparator);const t=parserForArrayFormat(e),s=Object.create(null);if(typeof i!="string"||(i=i.trim().replace(/^[?#&]/,""),!i))return s;for(const r of i.split("&")){if(r==="")continue;const o=e.decode?r.replace(/\+/g," "):r;let[a,l]=splitOnFirst(o,"=");a===void 0&&(a=o),l=l===void 0?null:["comma","separator","bracket-separator"].includes(e.arrayFormat)?l:decode$3(l,e),t(decode$3(a,e),l,s)}for(const[r,o]of Object.entries(s))if(typeof o=="object"&&o!==null)for(const[a,l]of Object.entries(o))o[a]=parseValue(l,e);else s[r]=parseValue(o,e);return e.sort===!1?s:(e.sort===!0?Object.keys(s).sort():Object.keys(s).sort(e.sort)).reduce((r,o)=>{const a=s[o];return a&&typeof a=="object"&&!Array.isArray(a)?r[o]=keysSorter(a):r[o]=a,r},Object.create(null))}function stringify$2(i,e){if(!i)return"";e={encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:",",...e},validateArrayFormatSeparator(e.arrayFormatSeparator);const t=a=>e.skipNull&&isNullOrUndefined(i[a])||e.skipEmptyString&&i[a]==="",s=encoderForArrayFormat(e),r={};for(const[a,l]of Object.entries(i))t(a)||(r[a]=l);const o=Object.keys(r);return e.sort!==!1&&o.sort(e.sort),o.map(a=>{const l=i[a];return l===void 0?"":l===null?encode$1(a,e):Array.isArray(l)?l.length===0&&e.arrayFormat==="bracket-separator"?encode$1(a,e)+"[]":l.reduce(s(a),[]).join("&"):encode$1(a,e)+"="+encode$1(l,e)}).filter(a=>a.length>0).join("&")}function parseUrl(i,e){var r,o;e={decode:!0,...e};let[t,s]=splitOnFirst(i,"#");return t===void 0&&(t=i),{url:(o=(r=t==null?void 0:t.split("?"))==null?void 0:r[0])!=null?o:"",query:parse$5(extract(i),e),...e&&e.parseFragmentIdentifier&&s?{fragmentIdentifier:decode$3(s,e)}:{}}}function stringifyUrl(i,e){e={encode:!0,strict:!0,[encodeFragmentIdentifier]:!0,...e};const t=removeHash(i.url).split("?")[0]||"",s=extract(i.url),r={...parse$5(s,{sort:!1}),...i.query};let o=stringify$2(r,e);o&&(o=`?${o}`);let a=getHash(i.url);if(i.fragmentIdentifier){const l=new URL(t);l.hash=i.fragmentIdentifier,a=e[encodeFragmentIdentifier]?l.hash:`#${i.fragmentIdentifier}`}return`${t}${o}${a}`}function pick(i,e,t){t={parseFragmentIdentifier:!0,[encodeFragmentIdentifier]:!1,...t};const{url:s,query:r,fragmentIdentifier:o}=parseUrl(i,t);return stringifyUrl({url:s,query:includeKeys(r,e),fragmentIdentifier:o},t)}function exclude(i,e,t){const s=Array.isArray(e)?r=>!e.includes(r):(r,o)=>!e(r,o);return pick(i,s,t)}const queryString=Object.freeze(Object.defineProperty({__proto__:null,exclude,extract,parse:parse$5,parseUrl,pick,stringify:stringify$2,stringifyUrl},Symbol.toStringTag,{value:"Module"})),getQuery=()=>{let i={};try{i={...queryString.parse(location.search),...queryString.parse(location.hash.split("?")[1])}}catch(e){}return{...i}};var shams=function i(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},t=Symbol("test"),s=Object(t);if(typeof t=="string"||Object.prototype.toString.call(t)!=="[object Symbol]"||Object.prototype.toString.call(s)!=="[object Symbol]")return!1;var r=42;e[t]=r;for(t in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var o=Object.getOwnPropertySymbols(e);if(o.length!==1||o[0]!==t||!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var a=Object.getOwnPropertyDescriptor(e,t);if(a.value!==r||a.enumerable!==!0)return!1}return!0},origSymbol=typeof Symbol<"u"&&Symbol,hasSymbolSham=shams,hasSymbols$1=function i(){return typeof origSymbol!="function"||typeof Symbol!="function"||typeof origSymbol("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:hasSymbolSham()},ERROR_MESSAGE="Function.prototype.bind called on incompatible ",slice$1=Array.prototype.slice,toStr$1=Object.prototype.toString,funcType="[object Function]",implementation$1=function i(e){var t=this;if(typeof t!="function"||toStr$1.call(t)!==funcType)throw new TypeError(ERROR_MESSAGE+t);for(var s=slice$1.call(arguments,1),r,o=function(){if(this instanceof r){var m=t.apply(this,s.concat(slice$1.call(arguments)));return Object(m)===m?m:this}else return t.apply(e,s.concat(slice$1.call(arguments)))},a=Math.max(0,t.length-s.length),l=[],c=0;c"u"?undefined$1:getProto(Uint8Array),INTRINSICS={"%AggregateError%":typeof AggregateError>"u"?undefined$1:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?undefined$1:ArrayBuffer,"%ArrayIteratorPrototype%":hasSymbols?getProto([][Symbol.iterator]()):undefined$1,"%AsyncFromSyncIteratorPrototype%":undefined$1,"%AsyncFunction%":needsEval,"%AsyncGenerator%":needsEval,"%AsyncGeneratorFunction%":needsEval,"%AsyncIteratorPrototype%":needsEval,"%Atomics%":typeof Atomics>"u"?undefined$1:Atomics,"%BigInt%":typeof BigInt>"u"?undefined$1:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?undefined$1:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?undefined$1:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?undefined$1:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?undefined$1:Float32Array,"%Float64Array%":typeof Float64Array>"u"?undefined$1:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?undefined$1:FinalizationRegistry,"%Function%":$Function,"%GeneratorFunction%":needsEval,"%Int8Array%":typeof Int8Array>"u"?undefined$1:Int8Array,"%Int16Array%":typeof Int16Array>"u"?undefined$1:Int16Array,"%Int32Array%":typeof Int32Array>"u"?undefined$1:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":hasSymbols?getProto(getProto([][Symbol.iterator]())):undefined$1,"%JSON%":typeof JSON=="object"?JSON:undefined$1,"%Map%":typeof Map>"u"?undefined$1:Map,"%MapIteratorPrototype%":typeof Map>"u"||!hasSymbols?undefined$1:getProto(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?undefined$1:Promise,"%Proxy%":typeof Proxy>"u"?undefined$1:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?undefined$1:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?undefined$1:Set,"%SetIteratorPrototype%":typeof Set>"u"||!hasSymbols?undefined$1:getProto(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?undefined$1:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":hasSymbols?getProto(""[Symbol.iterator]()):undefined$1,"%Symbol%":hasSymbols?Symbol:undefined$1,"%SyntaxError%":$SyntaxError,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%TypeError%":$TypeError$1,"%Uint8Array%":typeof Uint8Array>"u"?undefined$1:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?undefined$1:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?undefined$1:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?undefined$1:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?undefined$1:WeakMap,"%WeakRef%":typeof WeakRef>"u"?undefined$1:WeakRef,"%WeakSet%":typeof WeakSet>"u"?undefined$1:WeakSet};try{null.error}catch(i){var errorProto=getProto(getProto(i));INTRINSICS["%Error.prototype%"]=errorProto}var doEval=function i(e){var t;if(e==="%AsyncFunction%")t=getEvalledConstructor("async function () {}");else if(e==="%GeneratorFunction%")t=getEvalledConstructor("function* () {}");else if(e==="%AsyncGeneratorFunction%")t=getEvalledConstructor("async function* () {}");else if(e==="%AsyncGenerator%"){var s=i("%AsyncGeneratorFunction%");s&&(t=s.prototype)}else if(e==="%AsyncIteratorPrototype%"){var r=i("%AsyncGenerator%");r&&(t=getProto(r.prototype))}return INTRINSICS[e]=t,t},LEGACY_ALIASES={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},bind=functionBind,hasOwn$1=src$1,$concat$1=bind.call(Function.call,Array.prototype.concat),$spliceApply=bind.call(Function.apply,Array.prototype.splice),$replace$1=bind.call(Function.call,String.prototype.replace),$strSlice=bind.call(Function.call,String.prototype.slice),$exec=bind.call(Function.call,RegExp.prototype.exec),rePropName=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,reEscapeChar=/\\(\\)?/g,stringToPath=function i(e){var t=$strSlice(e,0,1),s=$strSlice(e,-1);if(t==="%"&&s!=="%")throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");if(s==="%"&&t!=="%")throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");var r=[];return $replace$1(e,rePropName,function(o,a,l,c){r[r.length]=l?$replace$1(c,reEscapeChar,"$1"):a||o}),r},getBaseIntrinsic=function i(e,t){var s=e,r;if(hasOwn$1(LEGACY_ALIASES,s)&&(r=LEGACY_ALIASES[s],s="%"+r[0]+"%"),hasOwn$1(INTRINSICS,s)){var o=INTRINSICS[s];if(o===needsEval&&(o=doEval(s)),typeof o>"u"&&!t)throw new $TypeError$1("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:s,value:o}}throw new $SyntaxError("intrinsic "+e+" does not exist!")},getIntrinsic=function i(e,t){if(typeof e!="string"||e.length===0)throw new $TypeError$1("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof t!="boolean")throw new $TypeError$1('"allowMissing" argument must be a boolean');if($exec(/^%?[^%]*%?$/,e)===null)throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var s=stringToPath(e),r=s.length>0?s[0]:"",o=getBaseIntrinsic("%"+r+"%",t),a=o.name,l=o.value,c=!1,d=o.alias;d&&(r=d[0],$spliceApply(s,$concat$1([0,1],d)));for(var m=1,u=!0;m=s.length){var S=$gOPD(l,g);u=!!S,u&&"get"in S&&!("originalValue"in S.get)?l=S.get:l=l[g]}else u=hasOwn$1(l,g),l=l[g];u&&!c&&(INTRINSICS[a]=l)}}return l},callBindExports={},callBind$1={get exports(){return callBindExports},set exports(i){callBindExports=i}};(function(i){var e=functionBind,t=getIntrinsic,s=t("%Function.prototype.apply%"),r=t("%Function.prototype.call%"),o=t("%Reflect.apply%",!0)||e.call(r,s),a=t("%Object.getOwnPropertyDescriptor%",!0),l=t("%Object.defineProperty%",!0),c=t("%Math.max%");if(l)try{l({},"a",{value:1})}catch(m){l=null}i.exports=function(u){var g=o(e,r,arguments);if(a&&l){var b=a(g,"length");b.configurable&&l(g,"length",{value:1+c(0,u.length-(arguments.length-1))})}return g};var d=function(){return o(e,s,arguments)};l?l(i.exports,"apply",{value:d}):i.exports.apply=d})(callBind$1);var GetIntrinsic$1=getIntrinsic,callBind=callBindExports,$indexOf=callBind(GetIntrinsic$1("String.prototype.indexOf")),callBound$1=function i(e,t){var s=GetIntrinsic$1(e,!!t);return typeof s=="function"&&$indexOf(e,".prototype.")>-1?callBind(s):s};const __viteBrowserExternal={},__viteBrowserExternal$1=Object.freeze(Object.defineProperty({__proto__:null,default:__viteBrowserExternal},Symbol.toStringTag,{value:"Module"})),require$$0$1=getAugmentedNamespace(__viteBrowserExternal$1);var hasMap=typeof Map=="function"&&Map.prototype,mapSizeDescriptor=Object.getOwnPropertyDescriptor&&hasMap?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,mapSize=hasMap&&mapSizeDescriptor&&typeof mapSizeDescriptor.get=="function"?mapSizeDescriptor.get:null,mapForEach=hasMap&&Map.prototype.forEach,hasSet=typeof Set=="function"&&Set.prototype,setSizeDescriptor=Object.getOwnPropertyDescriptor&&hasSet?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,setSize=hasSet&&setSizeDescriptor&&typeof setSizeDescriptor.get=="function"?setSizeDescriptor.get:null,setForEach=hasSet&&Set.prototype.forEach,hasWeakMap=typeof WeakMap=="function"&&WeakMap.prototype,weakMapHas=hasWeakMap?WeakMap.prototype.has:null,hasWeakSet=typeof WeakSet=="function"&&WeakSet.prototype,weakSetHas=hasWeakSet?WeakSet.prototype.has:null,hasWeakRef=typeof WeakRef=="function"&&WeakRef.prototype,weakRefDeref=hasWeakRef?WeakRef.prototype.deref:null,booleanValueOf=Boolean.prototype.valueOf,objectToString$1=Object.prototype.toString,functionToString=Function.prototype.toString,$match=String.prototype.match,$slice=String.prototype.slice,$replace=String.prototype.replace,$toUpperCase=String.prototype.toUpperCase,$toLowerCase=String.prototype.toLowerCase,$test=RegExp.prototype.test,$concat=Array.prototype.concat,$join=Array.prototype.join,$arrSlice=Array.prototype.slice,$floor=Math.floor,bigIntValueOf=typeof BigInt=="function"?BigInt.prototype.valueOf:null,gOPS=Object.getOwnPropertySymbols,symToString=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,hasShammedSymbols=typeof Symbol=="function"&&typeof Symbol.iterator=="object",toStringTag=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===hasShammedSymbols||"symbol")?Symbol.toStringTag:null,isEnumerable=Object.prototype.propertyIsEnumerable,gPO=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(i){return i.__proto__}:null);function addNumericSeparator(i,e){if(i===1/0||i===-1/0||i!==i||i&&i>-1e3&&i<1e3||$test.call(/e/,e))return e;var t=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof i=="number"){var s=i<0?-$floor(-i):$floor(i);if(s!==i){var r=String(s),o=$slice.call(e,r.length+1);return $replace.call(r,t,"$&_")+"."+$replace.call($replace.call(o,/([0-9]{3})/g,"$&_"),/_$/,"")}}return $replace.call(e,t,"$&_")}var utilInspect=require$$0$1,inspectCustom=utilInspect.custom,inspectSymbol=isSymbol(inspectCustom)?inspectCustom:null,objectInspect=function i(e,t,s,r){var o=t||{};if(has$3(o,"quoteStyle")&&o.quoteStyle!=="single"&&o.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(has$3(o,"maxStringLength")&&(typeof o.maxStringLength=="number"?o.maxStringLength<0&&o.maxStringLength!==1/0:o.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=has$3(o,"customInspect")?o.customInspect:!0;if(typeof a!="boolean"&&a!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(has$3(o,"indent")&&o.indent!==null&&o.indent!==" "&&!(parseInt(o.indent,10)===o.indent&&o.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(has$3(o,"numericSeparator")&&typeof o.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var l=o.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return inspectString(e,o);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var c=String(e);return l?addNumericSeparator(e,c):c}if(typeof e=="bigint"){var d=String(e)+"n";return l?addNumericSeparator(e,d):d}var m=typeof o.depth>"u"?5:o.depth;if(typeof s>"u"&&(s=0),s>=m&&m>0&&typeof e=="object")return isArray$6(e)?"[Array]":"[Object]";var u=getIndent(o,s);if(typeof r>"u")r=[];else if(indexOf$2(r,e)>=0)return"[Circular]";function g(k,T,V){if(T&&(r=$arrSlice.call(r),r.push(T)),V){var J={depth:o.depth};return has$3(o,"quoteStyle")&&(J.quoteStyle=o.quoteStyle),i(k,J,s+1,r)}return i(k,o,s+1,r)}if(typeof e=="function"&&!isRegExp$1(e)){var b=nameOf(e),y=arrObjKeys(e,g);return"[Function"+(b?": "+b:" (anonymous)")+"]"+(y.length>0?" { "+$join.call(y,", ")+" }":"")}if(isSymbol(e)){var S=hasShammedSymbols?$replace.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):symToString.call(e);return typeof e=="object"&&!hasShammedSymbols?markBoxed(S):S}if(isElement(e)){for(var v="<"+$toLowerCase.call(String(e.nodeName)),x=e.attributes||[],A=0;A",v}if(isArray$6(e)){if(e.length===0)return"[]";var E=arrObjKeys(e,g);return u&&!singleLineValues(E)?"["+indentedJoin(E,u)+"]":"[ "+$join.call(E,", ")+" ]"}if(isError(e)){var w=arrObjKeys(e,g);return!("cause"in Error.prototype)&&"cause"in e&&!isEnumerable.call(e,"cause")?"{ ["+String(e)+"] "+$join.call($concat.call("[cause]: "+g(e.cause),w),", ")+" }":w.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+$join.call(w,", ")+" }"}if(typeof e=="object"&&a){if(inspectSymbol&&typeof e[inspectSymbol]=="function"&&utilInspect)return utilInspect(e,{depth:m-s});if(a!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(isMap(e)){var _=[];return mapForEach&&mapForEach.call(e,function(k,T){_.push(g(T,e,!0)+" => "+g(k,e))}),collectionOf("Map",mapSize.call(e),_,u)}if(isSet(e)){var C=[];return setForEach&&setForEach.call(e,function(k){C.push(g(k,e))}),collectionOf("Set",setSize.call(e),C,u)}if(isWeakMap(e))return weakCollectionOf("WeakMap");if(isWeakSet(e))return weakCollectionOf("WeakSet");if(isWeakRef(e))return weakCollectionOf("WeakRef");if(isNumber$1(e))return markBoxed(g(Number(e)));if(isBigInt(e))return markBoxed(g(bigIntValueOf.call(e)));if(isBoolean$1(e))return markBoxed(booleanValueOf.call(e));if(isString$1(e))return markBoxed(g(String(e)));if(!isDate$1(e)&&!isRegExp$1(e)){var P=arrObjKeys(e,g),I=gPO?gPO(e)===Object.prototype:e instanceof Object||e.constructor===Object,R=e instanceof Object?"":"null prototype",N=!I&&toStringTag&&Object(e)===e&&toStringTag in e?$slice.call(toStr(e),8,-1):R?"Object":"",G=I||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",B=G+(N||R?"["+$join.call($concat.call([],N||[],R||[]),": ")+"] ":"");return P.length===0?B+"{}":u?B+"{"+indentedJoin(P,u)+"}":B+"{ "+$join.call(P,", ")+" }"}return String(e)};function wrapQuotes(i,e,t){var s=(t.quoteStyle||e)==="double"?'"':"'";return s+i+s}function quote(i){return $replace.call(String(i),/"/g,""")}function isArray$6(i){return toStr(i)==="[object Array]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isDate$1(i){return toStr(i)==="[object Date]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isRegExp$1(i){return toStr(i)==="[object RegExp]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isError(i){return toStr(i)==="[object Error]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isString$1(i){return toStr(i)==="[object String]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isNumber$1(i){return toStr(i)==="[object Number]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isBoolean$1(i){return toStr(i)==="[object Boolean]"&&(!toStringTag||!(typeof i=="object"&&toStringTag in i))}function isSymbol(i){if(hasShammedSymbols)return i&&typeof i=="object"&&i instanceof Symbol;if(typeof i=="symbol")return!0;if(!i||typeof i!="object"||!symToString)return!1;try{return symToString.call(i),!0}catch(e){}return!1}function isBigInt(i){if(!i||typeof i!="object"||!bigIntValueOf)return!1;try{return bigIntValueOf.call(i),!0}catch(e){}return!1}var hasOwn=Object.prototype.hasOwnProperty||function(i){return i in this};function has$3(i,e){return hasOwn.call(i,e)}function toStr(i){return objectToString$1.call(i)}function nameOf(i){if(i.name)return i.name;var e=$match.call(functionToString.call(i),/^function\s*([\w$]+)/);return e?e[1]:null}function indexOf$2(i,e){if(i.indexOf)return i.indexOf(e);for(var t=0,s=i.length;te.maxStringLength){var t=i.length-e.maxStringLength,s="... "+t+" more character"+(t>1?"s":"");return inspectString($slice.call(i,0,e.maxStringLength),e)+s}var r=$replace.call($replace.call(i,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,lowbyte);return wrapQuotes(r,"single",e)}function lowbyte(i){var e=i.charCodeAt(0),t={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return t?"\\"+t:"\\x"+(e<16?"0":"")+$toUpperCase.call(e.toString(16))}function markBoxed(i){return"Object("+i+")"}function weakCollectionOf(i){return i+" { ? }"}function collectionOf(i,e,t,s){var r=s?indentedJoin(t,s):$join.call(t,", ");return i+" ("+e+") {"+r+"}"}function singleLineValues(i){for(var e=0;e=0)return!1;return!0}function getIndent(i,e){var t;if(i.indent===" ")t=" ";else if(typeof i.indent=="number"&&i.indent>0)t=$join.call(Array(i.indent+1)," ");else return null;return{base:t,prev:$join.call(Array(e+1),t)}}function indentedJoin(i,e){if(i.length===0)return"";var t=` `+e.prev+e.base;return t+$join.call(i,","+t)+` `+e.prev}function arrObjKeys(i,e){var t=isArray$6(i),s=[];if(t){s.length=i.length;for(var r=0;r1;){var t=e.pop(),s=t.obj[t.prop];if(isArray$5(s)){for(var r=[],o=0;o=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||o===formats$2.RFC1738&&(d===40||d===41)){l+=a.charAt(c);continue}if(d<128){l=l+hexTable[d];continue}if(d<2048){l=l+(hexTable[192|d>>6]+hexTable[128|d&63]);continue}if(d<55296||d>=57344){l=l+(hexTable[224|d>>12]+hexTable[128|d>>6&63]+hexTable[128|d&63]);continue}c+=1,d=65536+((d&1023)<<10|a.charCodeAt(c)&1023),l+=hexTable[240|d>>18]+hexTable[128|d>>12&63]+hexTable[128|d>>6&63]+hexTable[128|d&63]}return l},compact=function i(e){for(var t=[{obj:{o:e},prop:"o"}],s=[],r=0;r"u"&&(E=0)}if(typeof c=="function"?x=c(t,x):x instanceof Date?x=u(x):s==="comma"&&isArray$4(x)&&(x=utils$2.maybeMap(x,function(J){return J instanceof Date?u(J):J})),x===null){if(o)return l&&!y?l(t,defaults$1.encoder,S,"key",g):t;x=""}if(isNonNullishPrimitive(x)||utils$2.isBuffer(x)){if(l){var C=y?t:l(t,defaults$1.encoder,S,"key",g);return[b(C)+"="+b(l(x,defaults$1.encoder,S,"value",g))]}return[b(t)+"="+b(String(x))]}var P=[];if(typeof x>"u")return P;var I;if(s==="comma"&&isArray$4(x))y&&l&&(x=utils$2.maybeMap(x,l)),I=[{value:x.length>0?x.join(",")||null:void 0}];else if(isArray$4(c))I=c;else{var R=Object.keys(x);I=d?R.sort(d):R}for(var N=r&&isArray$4(x)&&x.length===1?t+"[]":t,G=0;G"u"?defaults$1.allowDots:!!e.allowDots,charset:t,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:defaults$1.charsetSentinel,delimiter:typeof e.delimiter>"u"?defaults$1.delimiter:e.delimiter,encode:typeof e.encode=="boolean"?e.encode:defaults$1.encode,encoder:typeof e.encoder=="function"?e.encoder:defaults$1.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:defaults$1.encodeValuesOnly,filter:o,format:s,formatter:r,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:defaults$1.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:defaults$1.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:defaults$1.strictNullHandling}},stringify_1=function(i,e){var t=i,s=normalizeStringifyOptions(e),r,o;typeof s.filter=="function"?(o=s.filter,t=o("",t)):isArray$4(s.filter)&&(o=s.filter,r=o);var a=[];if(typeof t!="object"||t===null)return"";var l;e&&e.arrayFormat in arrayPrefixGenerators?l=e.arrayFormat:e&&"indices"in e?l=e.indices?"indices":"repeat":l="indices";var c=arrayPrefixGenerators[l];if(e&&"commaRoundTrip"in e&&typeof e.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var d=c==="comma"&&e&&e.commaRoundTrip;r||(r=Object.keys(t)),s.sort&&r.sort(s.sort);for(var m=getSideChannel(),u=0;u0?y+b:""},utils$1=utils$3,has=Object.prototype.hasOwnProperty,isArray$3=Array.isArray,defaults={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:utils$1.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},interpretNumericEntities=function(i){return i.replace(/&#(\d+);/g,function(e,t){return String.fromCharCode(parseInt(t,10))})},parseArrayValue=function(i,e){return i&&typeof i=="string"&&e.comma&&i.indexOf(",")>-1?i.split(","):i},isoSentinel="utf8=%26%2310003%3B",charsetSentinel="utf8=%E2%9C%93",parseValues=function i(e,t){var s={},r=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,o=t.parameterLimit===1/0?void 0:t.parameterLimit,a=r.split(t.delimiter,o),l=-1,c,d=t.charset;if(t.charsetSentinel)for(c=0;c-1&&(y=isArray$3(y)?[y]:y),has.call(s,b)?s[b]=utils$1.combine(s[b],y):s[b]=y}return s},parseObject=function(i,e,t,s){for(var r=s?e:parseArrayValue(e,t),o=i.length-1;o>=0;--o){var a,l=i[o];if(l==="[]"&&t.parseArrays)a=[].concat(r);else{a=t.plainObjects?Object.create(null):{};var c=l.charAt(0)==="["&&l.charAt(l.length-1)==="]"?l.slice(1,-1):l,d=parseInt(c,10);!t.parseArrays&&c===""?a={0:r}:!isNaN(d)&&l!==c&&String(d)===c&&d>=0&&t.parseArrays&&d<=t.arrayLimit?(a=[],a[d]=r):c!=="__proto__"&&(a[c]=r)}r=a}return r},parseKeys=function i(e,t,s,r){if(e){var o=s.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,a=/(\[[^[\]]*])/,l=/(\[[^[\]]*])/g,c=s.depth>0&&a.exec(o),d=c?o.slice(0,c.index):o,m=[];if(d){if(!s.plainObjects&&has.call(Object.prototype,d)&&!s.allowPrototypes)return;m.push(d)}for(var u=0;s.depth>0&&(c=l.exec(o))!==null&&u"u"?defaults.charset:e.charset;return{allowDots:typeof e.allowDots>"u"?defaults.allowDots:!!e.allowDots,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:defaults.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:defaults.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:defaults.arrayLimit,charset:t,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:defaults.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:defaults.comma,decoder:typeof e.decoder=="function"?e.decoder:defaults.decoder,delimiter:typeof e.delimiter=="string"||utils$1.isRegExp(e.delimiter)?e.delimiter:defaults.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:defaults.depth,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:defaults.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:defaults.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:defaults.plainObjects,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:defaults.strictNullHandling}},parse$4=function(i,e){var t=normalizeParseOptions(e);if(i===""||i===null||typeof i>"u")return t.plainObjects?Object.create(null):{};for(var s=typeof i=="string"?parseValues(i,t):i,r=t.plainObjects?Object.create(null):{},o=Object.keys(s),a=0;a-1};function normalizeName(i){if(typeof i!="string"&&(i=String(i)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(i)||i==="")throw new TypeError('Invalid character in header field name: "'+i+'"');return i.toLowerCase()}function normalizeValue(i){return typeof i!="string"&&(i=String(i)),i}function iteratorFor(i){var e={next:function(){var t=i.shift();return{done:t===void 0,value:t}}};return support.iterable&&(e[Symbol.iterator]=function(){return e}),e}function Headers(i){this.map={},i instanceof Headers?i.forEach(function(e,t){this.append(t,e)},this):Array.isArray(i)?i.forEach(function(e){this.append(e[0],e[1])},this):i&&Object.getOwnPropertyNames(i).forEach(function(e){this.append(e,i[e])},this)}Headers.prototype.append=function(i,e){i=normalizeName(i),e=normalizeValue(e);var t=this.map[i];this.map[i]=t?t+", "+e:e};Headers.prototype.delete=function(i){delete this.map[normalizeName(i)]};Headers.prototype.get=function(i){return i=normalizeName(i),this.has(i)?this.map[i]:null};Headers.prototype.has=function(i){return this.map.hasOwnProperty(normalizeName(i))};Headers.prototype.set=function(i,e){this.map[normalizeName(i)]=normalizeValue(e)};Headers.prototype.forEach=function(i,e){for(var t in this.map)this.map.hasOwnProperty(t)&&i.call(e,this.map[t],t,this)};Headers.prototype.keys=function(){var i=[];return this.forEach(function(e,t){i.push(t)}),iteratorFor(i)};Headers.prototype.values=function(){var i=[];return this.forEach(function(e){i.push(e)}),iteratorFor(i)};Headers.prototype.entries=function(){var i=[];return this.forEach(function(e,t){i.push([t,e])}),iteratorFor(i)};support.iterable&&(Headers.prototype[Symbol.iterator]=Headers.prototype.entries);function consumed(i){if(i.bodyUsed)return Promise.reject(new TypeError("Already read"));i.bodyUsed=!0}function fileReaderReady(i){return new Promise(function(e,t){i.onload=function(){e(i.result)},i.onerror=function(){t(i.error)}})}function readBlobAsArrayBuffer(i){var e=new FileReader,t=fileReaderReady(e);return e.readAsArrayBuffer(i),t}function readBlobAsText(i){var e=new FileReader,t=fileReaderReady(e);return e.readAsText(i),t}function readArrayBufferAsText(i){for(var e=new Uint8Array(i),t=new Array(e.length),s=0;s-1?e:i}function Request(i,e){if(!(this instanceof Request))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e=e||{};var t=e.body;if(i instanceof Request){if(i.bodyUsed)throw new TypeError("Already read");this.url=i.url,this.credentials=i.credentials,e.headers||(this.headers=new Headers(i.headers)),this.method=i.method,this.mode=i.mode,this.signal=i.signal,!t&&i._bodyInit!=null&&(t=i._bodyInit,i.bodyUsed=!0)}else this.url=String(i);if(this.credentials=e.credentials||this.credentials||"same-origin",(e.headers||!this.headers)&&(this.headers=new Headers(e.headers)),this.method=normalizeMethod(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&t)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(t),(this.method==="GET"||this.method==="HEAD")&&(e.cache==="no-store"||e.cache==="no-cache")){var s=/([?&])_=[^&]*/;if(s.test(this.url))this.url=this.url.replace(s,"$1_="+new Date().getTime());else{var r=/\?/;this.url+=(r.test(this.url)?"&":"?")+"_="+new Date().getTime()}}}Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})};function decode$1(i){var e=new FormData;return i.trim().split("&").forEach(function(t){if(t){var s=t.split("="),r=s.shift().replace(/\+/g," "),o=s.join("=").replace(/\+/g," ");e.append(decodeURIComponent(r),decodeURIComponent(o))}}),e}function parseHeaders(i){var e=new Headers,t=i.replace(/\r?\n[\t ]+/g," ");return t.split("\r").map(function(s){return s.indexOf(` `)===0?s.substr(1,s.length):s}).forEach(function(s){var r=s.split(":"),o=r.shift().trim();if(o){var a=r.join(":").trim();e.append(o,a)}}),e}Body.call(Request.prototype);function Response(i,e){if(!(this instanceof Response))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');e||(e={}),this.type="default",this.status=e.status===void 0?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=e.statusText===void 0?"":""+e.statusText,this.headers=new Headers(e.headers),this.url=e.url||"",this._initBody(i)}Body.call(Response.prototype);Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})};Response.error=function(){var i=new Response(null,{status:0,statusText:""});return i.type="error",i};var redirectStatuses=[301,302,303,307,308];Response.redirect=function(i,e){if(redirectStatuses.indexOf(e)===-1)throw new RangeError("Invalid status code");return new Response(null,{status:e,headers:{location:i}})};var DOMException=global$1.DOMException;try{new DOMException}catch(i){DOMException=function(e,t){this.message=e,this.name=t;var s=Error(e);this.stack=s.stack},DOMException.prototype=Object.create(Error.prototype),DOMException.prototype.constructor=DOMException}function fetch$2(i,e){return new Promise(function(t,s){var r=new Request(i,e);if(r.signal&&r.signal.aborted)return s(new DOMException("Aborted","AbortError"));var o=new XMLHttpRequest;function a(){o.abort()}o.onload=function(){var c={status:o.status,statusText:o.statusText,headers:parseHeaders(o.getAllResponseHeaders()||"")};c.url="responseURL"in o?o.responseURL:c.headers.get("X-Request-URL");var d="response"in o?o.response:o.responseText;setTimeout(function(){t(new Response(d,c))},0)},o.onerror=function(){setTimeout(function(){s(new TypeError("Network request failed"))},0)},o.ontimeout=function(){setTimeout(function(){s(new TypeError("Network request failed"))},0)},o.onabort=function(){setTimeout(function(){s(new DOMException("Aborted","AbortError"))},0)};function l(c){try{return c===""&&global$1.location.href?global$1.location.href:c}catch(d){return c}}o.open(r.method,l(r.url),!0),r.credentials==="include"?o.withCredentials=!0:r.credentials==="omit"&&(o.withCredentials=!1),"responseType"in o&&(support.blob?o.responseType="blob":support.arrayBuffer&&r.headers.get("Content-Type")&&r.headers.get("Content-Type").indexOf("application/octet-stream")!==-1&&(o.responseType="arraybuffer")),e&&typeof e.headers=="object"&&!(e.headers instanceof Headers)?Object.getOwnPropertyNames(e.headers).forEach(function(c){o.setRequestHeader(c,normalizeValue(e.headers[c]))}):r.headers.forEach(function(c,d){o.setRequestHeader(d,c)}),r.signal&&(r.signal.addEventListener("abort",a),o.onreadystatechange=function(){o.readyState===4&&r.signal.removeEventListener("abort",a)}),o.send(typeof r._bodyInit>"u"?null:r._bodyInit)})}fetch$2.polyfill=!0;global$1.fetch||(global$1.fetch=fetch$2,global$1.Headers=Headers,global$1.Request=Request,global$1.Response=Response);self.fetch.bind(self);function ownKeys(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);e&&(s=s.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,s)}return t}function _objectSpread2(i){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(i){return!1}}function _construct(i,e,t){return _isNativeReflectConstruct()?_construct=Reflect.construct:_construct=function(r,o,a){var l=[null];l.push.apply(l,o);var c=Function.bind.apply(r,l),d=new c;return a&&_setPrototypeOf(d,a.prototype),d},_construct.apply(null,arguments)}function _isNativeFunction(i){return Function.toString.call(i).indexOf("[native code]")!==-1}function _wrapNativeSuper(i){var e=typeof Map=="function"?new Map:void 0;return _wrapNativeSuper=function(s){if(s===null||!_isNativeFunction(s))return s;if(typeof s!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(s))return e.get(s);e.set(s,r)}function r(){return _construct(s,arguments,_getPrototypeOf(this).constructor)}return r.prototype=Object.create(s.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(r,s)},_wrapNativeSuper(i)}function _assertThisInitialized(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}function _possibleConstructorReturn(i,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(i)}function _createSuper(i){var e=_isNativeReflectConstruct();return function(){var s=_getPrototypeOf(i),r;if(e){var o=_getPrototypeOf(this).constructor;r=Reflect.construct(s,arguments,o)}else r=s.apply(this,arguments);return _possibleConstructorReturn(this,r)}}function _toConsumableArray(i){return _arrayWithoutHoles(i)||_iterableToArray(i)||_unsupportedIterableToArray(i)||_nonIterableSpread()}function _arrayWithoutHoles(i){if(Array.isArray(i))return _arrayLikeToArray(i)}function _iterableToArray(i){if(typeof Symbol<"u"&&i[Symbol.iterator]!=null||i["@@iterator"]!=null)return Array.from(i)}function _unsupportedIterableToArray(i,e){if(i){if(typeof i=="string")return _arrayLikeToArray(i,e);var t=Object.prototype.toString.call(i).slice(8,-1);if(t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set")return Array.from(i);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return _arrayLikeToArray(i,e)}}function _arrayLikeToArray(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,s=new Array(e);t1&&arguments[1]!==void 0?arguments[1]:{global:!1,core:!1,defaultInstance:!1},r=!1,o=!1,a=!1;if(typeof s=="number"?(process&&process.env,r=!0,o=!1):_typeof(s)==="object"&&s&&(o=s.global||!1,r=s.core||!1,a=s.defaultInstance||!1),o){i.globalMiddlewares.splice(i.globalMiddlewares.length-i.defaultGlobalMiddlewaresLength,0,t);return}if(r){i.coreMiddlewares.splice(i.coreMiddlewares.length-i.defaultCoreMiddlewaresLength,0,t);return}if(a){this.defaultMiddlewares.push(t);return}this.middlewares.push(t)}},{key:"execute",value:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,s=compose([].concat(_toConsumableArray(this.middlewares),_toConsumableArray(this.defaultMiddlewares),_toConsumableArray(i.globalMiddlewares),_toConsumableArray(i.coreMiddlewares)));return s(t)}}]),i}();Onion.globalMiddlewares=[];Onion.defaultGlobalMiddlewaresLength=0;Onion.coreMiddlewares=[];Onion.defaultCoreMiddlewaresLength=0;var MapCache=function(){function i(e){_classCallCheck(this,i),this.cache=new Map,this.timer={},this.extendOptions(e)}return _createClass(i,[{key:"extendOptions",value:function(t){this.maxCache=t.maxCache||0}},{key:"get",value:function(t){return this.cache.get(JSON.stringify(t))}},{key:"set",value:function(t,s){var r=this,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:6e4;if(this.maxCache>0&&this.cache.size>=this.maxCache){var a=_toConsumableArray(this.cache.keys())[0];this.cache.delete(a),this.timer[a]&&clearTimeout(this.timer[a])}var l=JSON.stringify(t);this.cache.set(l,s),o>0&&(this.timer[l]=setTimeout(function(){r.cache.delete(l),delete r.timer[l]},o))}},{key:"delete",value:function(t){var s=JSON.stringify(t);return delete this.timer[s],this.cache.delete(s)}},{key:"clear",value:function(){return this.timer={},this.cache.clear()}}]),i}(),RequestError=function(i){_inherits(t,i);var e=_createSuper(t);function t(s,r){var o,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"RequestError";return _classCallCheck(this,t),o=e.call(this,s),o.name="RequestError",o.request=r,o.type=a,o}return t}(_wrapNativeSuper(Error)),ResponseError=function(i){_inherits(t,i);var e=_createSuper(t);function t(s,r,o,a){var l,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"ResponseError";return _classCallCheck(this,t),l=e.call(this,r||s.statusText),l.name="ResponseError",l.data=o,l.response=s,l.request=a,l.type=c,l}return t}(_wrapNativeSuper(Error));function readerGBK(i){return new Promise(function(e,t){var s=new FileReader;s.onload=function(){e(s.result)},s.onerror=t,s.readAsText(i,"GBK")})}function safeJsonParse(i){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;try{return JSON.parse(i)}catch(r){if(e)throw new ResponseError(t,"JSON.parse fail",i,s,"ParseError")}return i}function timeout2Throw(i,e,t){return new Promise(function(s,r){setTimeout(function(){r(new RequestError(e||"timeout of ".concat(i,"ms exceeded"),t,"Timeout"))},i)})}function cancel2Throw(i){return new Promise(function(e,t){i.cancelToken&&i.cancelToken.promise.then(function(s){t(s)})})}var toString$2=Object.prototype.toString;function getEnv(){var i;return typeof process<"u"&&toString$2.call(process)==="[object process]"&&(i="NODE"),typeof XMLHttpRequest<"u"&&(i="BROWSER"),i}function isArray$2(i){return _typeof(i)==="object"&&Object.prototype.toString.call(i)==="[object Array]"}function isURLSearchParams(i){return typeof URLSearchParams<"u"&&i instanceof URLSearchParams}function isDate(i){return _typeof(i)==="object"&&Object.prototype.toString.call(i)==="[object Date]"}function isObject(i){return i!==null&&_typeof(i)==="object"}function forEach2ObjArr(i,e){if(i)if(_typeof(i)!=="object"&&(i=[i]),isArray$2(i))for(var t=0;t1&&arguments[1]!==void 0?arguments[1]:{},s=t.prefix,r=t.suffix;return s&&(e="".concat(s).concat(e)),r&&(e="".concat(e).concat(r)),{url:e,options:t}},warnedCoreType=!1;function __defaultValidateCache(i,e){var t=e.method,s=t===void 0?"get":t;return s.toLowerCase()==="get"}function fetchMiddleware(i,e){if(!i)return e();var t=i.req;t=t===void 0?{}:t;var s=t.options,r=s===void 0?{}:s,o=t.url,a=o===void 0?"":o,l=i.cache,c=i.responseInterceptors,d=r.timeout,m=d===void 0?0:d,u=r.timeoutMessage,g=r.__umiRequestCoreType__,b=g===void 0?"normal":g,y=r.useCache,S=y===void 0?!1:y,v=r.method,x=v===void 0?"get":v,A=r.params,E=r.ttl,w=r.validateCache,_=w===void 0?__defaultValidateCache:w;if(b!=="normal")return process&&process.env,e();var C=fetch;if(!C)throw new Error("Global fetch not exist!");var P=getEnv()==="BROWSER",I=_(a,r)&&S&&P;if(I){var R=l.get({url:a,params:A,method:x});if(R)return R=R.clone(),R.useCache=!0,i.res=R,e()}var N;return m>0?N=Promise.race([cancel2Throw(r),C(a,r),timeout2Throw(m,u,i.req)]):N=Promise.race([cancel2Throw(r),C(a,r)]),c.forEach(function(G){N=N.then(function(B){var k=typeof B.clone=="function"?B.clone():B;return G(k,r)})}),N.then(function(G){if(I&&G.status===200){var B=G.clone();B.useCache=!0,l.set({url:a,params:A,method:x},B,E)}return i.res=G,e()})}function parseResponseMiddleware(i,e){var t;return e().then(function(){if(i){var s=i.res,r=s===void 0?{}:s,o=i.req,a=o===void 0?{}:o,l=a||{},c=l.options;c=c===void 0?{}:c;var d=c.responseType,m=d===void 0?"json":d,u=c.charset,g=u===void 0?"utf8":u;c.getResponse;var b=c.throwErrIfParseFail,y=b===void 0?!1:b,S=c.parseResponse,v=S===void 0?!0:S;if(v&&!(!r||!r.clone)){if(t=getEnv()==="BROWSER"?r.clone():r,t.useCache=r.useCache||!1,g==="gbk")try{return r.blob().then(readerGBK).then(function(x){return safeJsonParse(x,!1,t,a)})}catch(x){throw new ResponseError(t,x.message,null,a,"ParseError")}else if(m==="json")return r.text().then(function(x){return safeJsonParse(x,y,t,a)});try{return r[m]()}catch(x){throw new ResponseError(t,"responseType not support",null,a,"ParseError")}}}}).then(function(s){if(i){i.res;var r=i.req,o=r===void 0?{}:r,a=o||{},l=a.options;l=l===void 0?{}:l;var c=l.getResponse,d=c===void 0?!1:c;if(t){if(t.status>=200&&t.status<300){if(d){i.res={data:s,response:t};return}i.res=s;return}throw new ResponseError(t,"http error",s,o,"HttpError")}}}).catch(function(s){if(s instanceof RequestError||s instanceof ResponseError)throw s;var r=i.req,o=i.res;throw s.request=s.request||r,s.response=s.response||o,s.type=s.type||s.name,s.data=s.data||void 0,s})}function simplePostMiddleware(i,e){if(!i)return e();var t=i.req;t=t===void 0?{}:t;var s=t.options,r=s===void 0?{}:s,o=r.method,a=o===void 0?"get":o;if(["post","put","patch","delete"].indexOf(a.toLowerCase())===-1)return e();var l=r.requestType,c=l===void 0?"json":l,d=r.data;if(d){var m=Object.prototype.toString.call(d);m==="[object Object]"||m==="[object Array]"?c==="json"?(r.headers=_objectSpread2({Accept:"application/json","Content-Type":"application/json;charset=UTF-8"},r.headers),r.body=JSON.stringify(d)):c==="form"&&(r.headers=_objectSpread2({Accept:"application/json","Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"},r.headers),r.body=reqStringify(d)):(r.headers=_objectSpread2({Accept:"application/json"},r.headers),r.body=d)}return i.req.options=r,e()}function paramsSerialize(i,e){var t,s;if(i)if(e)t=e(i);else if(isURLSearchParams(i))t=i.toString();else if(isArray$2(i))s=[],forEach2ObjArr(i,function(o){o===null||typeof o>"u"?s.push(o):s.push(isObject(o)?JSON.stringify(o):o)}),t=reqStringify(s);else{s={},forEach2ObjArr(i,function(o,a){var l=o;o===null||typeof o>"u"?s[a]=o:isDate(o)?l=o.toISOString():isArray$2(o)?l=o:isObject(o)&&(l=JSON.stringify(o)),s[a]=l});var r=reqStringify(s);t=r}return t}function simpleGetMiddleware(i,e){if(!i)return e();var t=i.req;t=t===void 0?{}:t;var s=t.options,r=s===void 0?{}:s,o=r.paramsSerializer,a=r.params,l=i.req;l=l===void 0?{}:l;var c=l.url,d=c===void 0?"":c;r.method=r.method?r.method.toUpperCase():"GET",r.credentials=r.credentials||"same-origin";var m=paramsSerialize(a,o);if(i.req.originUrl=d,m){var u=d.indexOf("?")!==-1?"&":"?";i.req.url="".concat(d).concat(u).concat(m)}return i.req.options=r,e()}var globalMiddlewares=[simplePostMiddleware,simpleGetMiddleware,parseResponseMiddleware],coreMiddlewares=[fetchMiddleware];Onion.globalMiddlewares=globalMiddlewares;Onion.defaultGlobalMiddlewaresLength=globalMiddlewares.length;Onion.coreMiddlewares=coreMiddlewares;Onion.defaultCoreMiddlewaresLength=coreMiddlewares.length;var Core=function(){function i(e){_classCallCheck(this,i),this.onion=new Onion([]),this.fetchIndex=0,this.mapCache=new MapCache(e),this.initOptions=e,this.instanceRequestInterceptors=[],this.instanceResponseInterceptors=[]}return _createClass(i,[{key:"use",value:function(t){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!1,core:!1};return this.onion.use(t,s),this}},{key:"extendOptions",value:function(t){this.initOptions=mergeRequestOptions(this.initOptions,t),this.mapCache.extendOptions(t)}},{key:"dealRequestInterceptors",value:function(t){var s=function(a,l){return a.then(function(){var c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t.req.url=c.url||t.req.url,t.req.options=c.options||t.req.options,l(t.req.url,t.req.options)})},r=[].concat(_toConsumableArray(i.requestInterceptors),_toConsumableArray(this.instanceRequestInterceptors));return r.reduce(s,Promise.resolve()).then(function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return t.req.url=o.url||t.req.url,t.req.options=o.options||t.req.options,Promise.resolve()})}},{key:"request",value:function(t,s){var r=this,o=this.onion,a={req:{url:t,options:_objectSpread2(_objectSpread2({},s),{},{url:t})},res:null,cache:this.mapCache,responseInterceptors:[].concat(_toConsumableArray(i.responseInterceptors),_toConsumableArray(this.instanceResponseInterceptors))};if(typeof t!="string")throw new Error("url MUST be a string");return new Promise(function(l,c){r.dealRequestInterceptors(a).then(function(){return o.execute(a)}).then(function(){l(a.res)}).catch(function(d){var m=a.req.options.errorHandler;if(m)try{var u=m(d);l(u)}catch(g){c(g)}else c(d)})})}}],[{key:"requestUse",value:function(t){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!0};if(typeof t!="function")throw new TypeError("Interceptor must be function!");s.global?i.requestInterceptors.push(t):this.instanceRequestInterceptors.push(t)}},{key:"responseUse",value:function(t){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{global:!0};if(typeof t!="function")throw new TypeError("Interceptor must be function!");s.global?i.responseInterceptors.push(t):this.instanceResponseInterceptors.push(t)}}]),i}();Core.requestInterceptors=[addfix];Core.responseInterceptors=[];function Cancel(i){this.message=i}Cancel.prototype.toString=function i(){return this.message?"Cancel: ".concat(this.message):"Cancel"};Cancel.prototype.__CANCEL__=!0;function CancelToken(i){if(typeof i!="function")throw new TypeError("executor must be a function.");var e;this.promise=new Promise(function(r){e=r});var t=this;i(function(r){t.reason||(t.reason=new Cancel(r),e(t.reason))})}CancelToken.prototype.throwIfRequested=function i(){if(this.reason)throw this.reason};CancelToken.source=function i(){var e,t=new CancelToken(function(r){e=r});return{token:t,cancel:e}};function isCancel(i){return!!(i&&i.__CANCEL__)}var request$1=function i(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=new Core(e),s=function(a){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},c=mergeRequestOptions(t.initOptions,l);return t.request(a,c)};s.use=t.use.bind(t),s.fetchIndex=t.fetchIndex,s.interceptors={request:{use:Core.requestUse.bind(t)},response:{use:Core.responseUse.bind(t)}};var r=["get","post","delete","put","patch","head","options","rpc"];return r.forEach(function(o){s[o]=function(a,l){return s(a,_objectSpread2(_objectSpread2({},l),{},{method:o}))}}),s.Cancel=Cancel,s.CancelToken=CancelToken,s.isCancel=isCancel,s.extendOptions=t.extendOptions.bind(t),s.middlewares={instance:t.onion.middlewares,defaultInstance:t.onion.defaultMiddlewares,global:Onion.globalMiddlewares,core:Onion.coreMiddlewares},s},extend$1=function i(e){return request$1(e)};request$1({parseResponse:!1});var request$1$1=request$1({}),lodash_isemptyExports={},lodash_isempty={get exports(){return lodash_isemptyExports},set exports(i){lodash_isemptyExports=i}};(function(i,e){var t=9007199254740991,s="[object Arguments]",r="[object Function]",o="[object GeneratorFunction]",a="[object Map]",l="[object Object]",c="[object Promise]",d="[object Set]",m="[object WeakMap]",u="[object DataView]",g=/[\\^$.*+?()[\]{}|]/g,b=/^\[object .+?Constructor\]$/,y=typeof commonjsGlobal=="object"&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,S=typeof self=="object"&&self&&self.Object===Object&&self,v=y||S||Function("return this")(),x=e&&!e.nodeType&&e,A=x&&!0&&i&&!i.nodeType&&i,E=A&&A.exports===x;function w(ue,Ae){return ue==null?void 0:ue[Ae]}function _(ue){var Ae=!1;if(ue!=null&&typeof ue.toString!="function")try{Ae=!!(ue+"")}catch(Ee){}return Ae}function C(ue,Ae){return function(Ee){return ue(Ae(Ee))}}var P=Function.prototype,I=Object.prototype,R=v["__core-js_shared__"],N=function(){var ue=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||"");return ue?"Symbol(src)_1."+ue:""}(),G=P.toString,B=I.hasOwnProperty,k=I.toString,T=RegExp("^"+G.call(B).replace(g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),V=E?v.Buffer:void 0,J=I.propertyIsEnumerable,W=V?V.isBuffer:void 0,se=C(Object.keys,Object),ne=U(v,"DataView"),fe=U(v,"Map"),Z=U(v,"Promise"),K=U(v,"Set"),be=U(v,"WeakMap"),oe=!J.call({valueOf:1},"valueOf"),Y=z(ne),ae=z(fe),de=z(Z),le=z(K),me=z(be);function ve(ue){return k.call(ue)}function ye(ue){if(!re(ue)||M(ue))return!1;var Ae=ce(ue)||_(ue)?T:b;return Ae.test(z(ue))}function U(ue,Ae){var Ee=w(ue,Ae);return ye(Ee)?Ee:void 0}var Q=ve;(ne&&Q(new ne(new ArrayBuffer(1)))!=u||fe&&Q(new fe)!=a||Z&&Q(Z.resolve())!=c||K&&Q(new K)!=d||be&&Q(new be)!=m)&&(Q=function(ue){var Ae=k.call(ue),Ee=Ae==l?ue.constructor:void 0,_e=Ee?z(Ee):void 0;if(_e)switch(_e){case Y:return u;case ae:return a;case de:return c;case le:return d;case me:return m}return Ae});function M(ue){return!!N&&N in ue}function $(ue){var Ae=ue&&ue.constructor,Ee=typeof Ae=="function"&&Ae.prototype||I;return ue===Ee}function z(ue){if(ue!=null){try{return G.call(ue)}catch(Ae){}try{return ue+""}catch(Ae){}}return""}function F(ue){return ie(ue)&&B.call(ue,"callee")&&(!J.call(ue,"callee")||k.call(ue)==s)}var O=Array.isArray;function H(ue){return ue!=null&&he(ue.length)&&!ce(ue)}function ie(ue){return ge(ue)&&H(ue)}var ee=W||xe;function te(ue){if(H(ue)&&(O(ue)||typeof ue=="string"||typeof ue.splice=="function"||ee(ue)||F(ue)))return!ue.length;var Ae=Q(ue);if(Ae==a||Ae==d)return!ue.size;if(oe||$(ue))return!se(ue).length;for(var Ee in ue)if(B.call(ue,Ee))return!1;return!0}function ce(ue){var Ae=re(ue)?k.call(ue):"";return Ae==r||Ae==o}function he(ue){return typeof ue=="number"&&ue>-1&&ue%1==0&&ue<=t}function re(ue){var Ae=typeof ue;return!!ue&&(Ae=="object"||Ae=="function")}function ge(ue){return!!ue&&typeof ue=="object"}function xe(){return!1}i.exports=te})(lodash_isempty,lodash_isemptyExports);var objectTag="[object Object]";function isHostObject(i){var e=!1;if(i!=null&&typeof i.toString!="function")try{e=!!(i+"")}catch(t){}return e}function overArg(i,e){return function(t){return i(e(t))}}var funcProto=Function.prototype,objectProto=Object.prototype,funcToString=funcProto.toString,hasOwnProperty=objectProto.hasOwnProperty,objectCtorString=funcToString.call(Object),objectToString=objectProto.toString,getPrototype=overArg(Object.getPrototypeOf,Object);function isObjectLike(i){return!!i&&typeof i=="object"}function isPlainObject$2(i){if(!isObjectLike(i)||objectToString.call(i)!=objectTag||isHostObject(i))return!1;var e=getPrototype(i);if(e===null)return!0;var t=hasOwnProperty.call(e,"constructor")&&e.constructor;return typeof t=="function"&&t instanceof t&&funcToString.call(t)==objectCtorString}var lodash_isplainobject=isPlainObject$2,lodash_transformExports={},lodash_transform={get exports(){return lodash_transformExports},set exports(i){lodash_transformExports=i}};(function(i,e){var t=200,s="Expected a function",r="__lodash_hash_undefined__",o=1,a=2,l=1/0,c=9007199254740991,d="[object Arguments]",m="[object Array]",u="[object Boolean]",g="[object Date]",b="[object Error]",y="[object Function]",S="[object GeneratorFunction]",v="[object Map]",x="[object Number]",A="[object Object]",E="[object Promise]",w="[object RegExp]",_="[object Set]",C="[object String]",P="[object Symbol]",I="[object WeakMap]",R="[object ArrayBuffer]",N="[object DataView]",G="[object Float32Array]",B="[object Float64Array]",k="[object Int8Array]",T="[object Int16Array]",V="[object Int32Array]",J="[object Uint8Array]",W="[object Uint8ClampedArray]",se="[object Uint16Array]",ne="[object Uint32Array]",fe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Z=/^\w*$/,K=/^\./,be=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,oe=/[\\^$.*+?()[\]{}|]/g,Y=/\\(\\)?/g,ae=/^\[object .+?Constructor\]$/,de=/^(?:0|[1-9]\d*)$/,le={};le[G]=le[B]=le[k]=le[T]=le[V]=le[J]=le[W]=le[se]=le[ne]=!0,le[d]=le[m]=le[R]=le[u]=le[N]=le[g]=le[b]=le[y]=le[v]=le[x]=le[A]=le[w]=le[_]=le[C]=le[I]=!1;var me=typeof commonjsGlobal=="object"&&commonjsGlobal&&commonjsGlobal.Object===Object&&commonjsGlobal,ve=typeof self=="object"&&self&&self.Object===Object&&self,ye=me||ve||Function("return this")(),U=e&&!e.nodeType&&e,Q=U&&!0&&i&&!i.nodeType&&i,M=Q&&Q.exports===U,$=M&&me.process,z=function(){try{return $&&$.binding("util")}catch(D){}}(),F=z&&z.isTypedArray;function O(D,q){for(var pe=-1,Se=D?D.length:0;++pe-1}function mi(D,q){var pe=this.__data__,Se=Ct(pe,D);return Se<0?pe.push([D,q]):pe[Se][1]=q,this}nt.prototype.clear=hi,nt.prototype.delete=fi,nt.prototype.get=di,nt.prototype.has=pi,nt.prototype.set=mi;function rt(D){var q=-1,pe=D?D.length:0;for(this.clear();++qBe))return!1;var Fe=we.get(D);if(Fe&&we.get(q))return Fe==q;var Ge=-1,Ye=!0,Oe=Me&o?new Tt:void 0;for(we.set(D,q),we.set(q,D);++Ge-1&&D%1==0&&D-1&&D%1==0&&D<=c}function _t(D){var q=typeof D;return!!D&&(q=="object"||q=="function")}function Bt(D){return!!D&&typeof D=="object"}function zt(D){return typeof D=="symbol"||Bt(D)&&Ie.call(D)==P}var ti=F?te(F):Fi;function en(D){return D==null?"":zi(D)}function tn(D,q,pe){var Se=D==null?void 0:Qt(D,q);return Se===void 0?pe:Se}function nn(D,q){return D!=null&&ji(D,q,Bi)}function Nt(D){return ei(D)?Ti(D):Vi(D)}function sn(D,q,pe){var Se=at(D)||ti(D);if(q=Oi(q),pe==null)if(Se||_t(D)){var Me=D.constructor;Se?pe=at(D)?new Me:[]:pe=Ht(Me)?Ci(Ue(D)):{}}else pe={};return(Se?O:Li)(D,function(we,Le,Be){return q(pe,we,Le,Be)}),pe}function rn(D){return D}function on(D){return Lt(D)?ie(Rt(D)):Ui(D)}i.exports=sn})(lodash_transform,lodash_transformExports);const isEmpty$1=lodash_isemptyExports,isPlainObject$1=lodash_isplainobject,transform=lodash_transformExports;var src=function i(e,{cleanKeys:t=[],cleanValues:s=[],emptyArrays:r=!0,emptyObjects:o=!0,emptyStrings:a=!0,NaNValues:l=!1,nullValues:c=!0,undefinedValues:d=!0}={}){return transform(e,(m,u,g)=>{if(!t.includes(g)&&((Array.isArray(u)||isPlainObject$1(u))&&(u=i(u,{NaNValues:l,cleanKeys:t,cleanValues:s,emptyArrays:r,emptyObjects:o,emptyStrings:a,nullValues:c,undefinedValues:d})),!s.includes(u)&&!(o&&isPlainObject$1(u)&&isEmpty$1(u))&&!(r&&Array.isArray(u)&&!u.length)&&!(a&&u==="")&&!(l&&Number.isNaN(u))&&!(c&&u===null)&&!(d&&u===void 0))){if(Array.isArray(m))return m.push(u);m[g]=u}})};const whiteUrl=()=>({"/sysMusicScoreCategories/queryTree":"/eduMusicScore/queryTree","/sysMusicScoreAccompaniment/queryPage":queryString.parse(location.search).platform?"/sysMusicScoreAccompaniment/queryPage":"/eduMusicScore/queryPage","/sysMusicScoreAccompaniment/queryPageLimit":"/eduMusicScore/queryPageLimit","/sysMusicScoreAccompaniment/querySubjectIds":"/eduMusicScore/querySubjectIds"}),apiRouter=whiteUrl();browser();const request=extend$1({requestType:"form",timeout:1e4});request.interceptors.request.use((i,e)=>{const t=storeData.proxy+storeData.platformApi;storeData.platformType==="WEB"&&apiRouter[i]&&(i=apiRouter[i]);const s=getToken(),r={};return s&&(r.Authorization=s),{url:t+i,options:{...e,params:src(e.params),data:src(e.data),headers:{...e.headers,...r}}}},{global:!1});request.interceptors.response.use(async(i,e)=>{if(i.status>299||i.status<200){const s=i.statusText+", 状态码"+i.status;showToast(s)}const t=await i.clone().json();if(t.code===5e3)return t;if(t.code!==200&&t.errCode!==0){const s=t.msg||t.message||"处理失败,请重试";throw t.code===403||t.code,new Error(s)}return t},{global:!1});var dayjs_minExports={},dayjs_min={get exports(){return dayjs_minExports},set exports(i){dayjs_minExports=i}};(function(i,e){(function(t,s){i.exports=s()})(commonjsGlobal,function(){var t=1e3,s=6e4,r=36e5,o="millisecond",a="second",l="minute",c="hour",d="day",m="week",u="month",g="quarter",b="year",y="date",S="Invalid Date",v=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,x=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,A={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(k){var T=["th","st","nd","rd"],V=k%100;return"["+k+(T[(V-20)%10]||T[V]||T[0])+"]"}},E=function(k,T,V){var J=String(k);return!J||J.length>=T?k:""+Array(T+1-J.length).join(V)+k},w={s:E,z:function(k){var T=-k.utcOffset(),V=Math.abs(T),J=Math.floor(V/60),W=V%60;return(T<=0?"+":"-")+E(J,2,"0")+":"+E(W,2,"0")},m:function k(T,V){if(T.date()1)return k(ne[0])}else{var fe=T.name;C[fe]=T,W=fe}return!J&&W&&(_=W),W||!J&&_},R=function(k,T){if(P(k))return k.clone();var V=typeof T=="object"?T:{};return V.date=k,V.args=arguments,new G(V)},N=w;N.l=I,N.i=P,N.w=function(k,T){return R(k,{locale:T.$L,utc:T.$u,x:T.$x,$offset:T.$offset})};var G=function(){function k(V){this.$L=I(V.locale,null,!0),this.parse(V)}var T=k.prototype;return T.parse=function(V){this.$d=function(J){var W=J.date,se=J.utc;if(W===null)return new Date(NaN);if(N.u(W))return new Date;if(W instanceof Date)return new Date(W);if(typeof W=="string"&&!/Z$/i.test(W)){var ne=W.match(v);if(ne){var fe=ne[2]-1||0,Z=(ne[7]||"0").substring(0,3);return se?new Date(Date.UTC(ne[1],fe,ne[3]||1,ne[4]||0,ne[5]||0,ne[6]||0,Z)):new Date(ne[1],fe,ne[3]||1,ne[4]||0,ne[5]||0,ne[6]||0,Z)}}return new Date(W)}(V),this.$x=V.x||{},this.init()},T.init=function(){var V=this.$d;this.$y=V.getFullYear(),this.$M=V.getMonth(),this.$D=V.getDate(),this.$W=V.getDay(),this.$H=V.getHours(),this.$m=V.getMinutes(),this.$s=V.getSeconds(),this.$ms=V.getMilliseconds()},T.$utils=function(){return N},T.isValid=function(){return this.$d.toString()!==S},T.isSame=function(V,J){var W=R(V);return this.startOf(J)<=W&&W<=this.endOf(J)},T.isAfter=function(V,J){return R(V)=0&&u<=1){if(g._volume=u,g._muted)return g;g.usingWebAudio&&g.masterGain.gain.setValueAtTime(u,t.ctx.currentTime);for(var b=0;b=0;g--)u._howls[g].unload();return u.usingWebAudio&&u.ctx&&typeof u.ctx.close<"u"&&(u.ctx.close(),u.ctx=null,m()),u},codecs:function(u){return(this||t)._codecs[u.replace(/^x-/,"")]},_setup:function(){var u=this||t;if(u.state=u.ctx&&u.ctx.state||"suspended",u._autoSuspend(),!u.usingWebAudio)if(typeof Audio<"u")try{var g=new Audio;typeof g.oncanplaythrough>"u"&&(u._canPlayEvent="canplay")}catch(b){u.noAudio=!0}else u.noAudio=!0;try{var g=new Audio;g.muted&&(u.noAudio=!0)}catch(b){}return u.noAudio||u._setupCodecs(),u},_setupCodecs:function(){var u=this||t,g=null;try{g=typeof Audio<"u"?new Audio:null}catch(w){return u}if(!g||typeof g.canPlayType!="function")return u;var b=g.canPlayType("audio/mpeg;").replace(/^no$/,""),y=u._navigator?u._navigator.userAgent:"",S=y.match(/OPR\/([0-6].)/g),v=S&&parseInt(S[0].split("/")[1],10)<33,x=y.indexOf("Safari")!==-1&&y.indexOf("Chrome")===-1,A=y.match(/Version\/(.*?) /),E=x&&A&&parseInt(A[1],10)<15;return u._codecs={mp3:!!(!v&&(b||g.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!b,opus:!!g.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!g.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!g.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(g.canPlayType('audio/wav; codecs="1"')||g.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!g.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!g.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(g.canPlayType("audio/x-m4a;")||g.canPlayType("audio/m4a;")||g.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(g.canPlayType("audio/x-m4b;")||g.canPlayType("audio/m4b;")||g.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(g.canPlayType("audio/x-mp4;")||g.canPlayType("audio/mp4;")||g.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!E&&g.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!E&&g.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!g.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(g.canPlayType("audio/x-flac;")||g.canPlayType("audio/flac;")).replace(/^no$/,"")},u},_unlockAudio:function(){var u=this||t;if(!(u._audioUnlocked||!u.ctx)){u._audioUnlocked=!1,u.autoUnlock=!1,!u._mobileUnloaded&&u.ctx.sampleRate!==44100&&(u._mobileUnloaded=!0,u.unload()),u._scratchBuffer=u.ctx.createBuffer(1,1,22050);var g=function(b){for(;u._html5AudioPool.length"u"?E.noteOn(0):E.start(0),typeof u.ctx.resume=="function"&&u.ctx.resume(),E.onended=function(){E.disconnect(0),u._audioUnlocked=!0,document.removeEventListener("touchstart",g,!0),document.removeEventListener("touchend",g,!0),document.removeEventListener("click",g,!0),document.removeEventListener("keydown",g,!0);for(var w=0;w"u"||!t.usingWebAudio)){for(var g=0;g"u"||!t.usingWebAudio))return u.state==="running"&&u.ctx.state!=="interrupted"&&u._suspendTimer?(clearTimeout(u._suspendTimer),u._suspendTimer=null):u.state==="suspended"||u.state==="running"&&u.ctx.state==="interrupted"?(u.ctx.resume().then(function(){u.state="running";for(var g=0;g"u"&&(u="__default",!b._playLock)){for(var S=0,v=0;v0?x._seek:b._sprite[u][0]/1e3),w=Math.max(0,(b._sprite[u][0]+b._sprite[u][1])/1e3-E),_=w*1e3/Math.abs(x._rate),C=b._sprite[u][0]/1e3,P=(b._sprite[u][0]+b._sprite[u][1])/1e3;x._sprite=u,x._ended=!1;var I=function(){x._paused=!1,x._seek=E,x._start=C,x._stop=P,x._loop=!!(x._loop||b._sprite[u][2])};if(E>=P){b._ended(x);return}var R=x._node;if(b._webAudio){var N=function(){b._playLock=!1,I(),b._refreshBuffer(x);var T=x._muted||b._muted?0:x._volume;R.gain.setValueAtTime(T,t.ctx.currentTime),x._playStart=t.ctx.currentTime,typeof R.bufferSource.start>"u"?x._loop?R.bufferSource.noteGrainOn(0,E,86400):R.bufferSource.noteGrainOn(0,E,w):x._loop?R.bufferSource.start(0,E,86400):R.bufferSource.start(0,E,w),_!==1/0&&(b._endTimers[x._id]=setTimeout(b._ended.bind(b,x),_)),g||setTimeout(function(){b._emit("play",x._id),b._loadQueue()},0)};t.state==="running"&&t.ctx.state!=="interrupted"?N():(b._playLock=!0,b.once("resume",N),b._clearTimer(x._id))}else{var G=function(){R.currentTime=E,R.muted=x._muted||b._muted||t._muted||R.muted,R.volume=x._volume*t.volume(),R.playbackRate=x._rate;try{var T=R.play();if(T&&typeof Promise<"u"&&(T instanceof Promise||typeof T.then=="function")?(b._playLock=!0,I(),T.then(function(){b._playLock=!1,R._unlocked=!0,g?b._loadQueue():b._emit("play",x._id)}).catch(function(){b._playLock=!1,b._emit("playerror",x._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),x._ended=!0,x._paused=!0})):g||(b._playLock=!1,I(),b._emit("play",x._id)),R.playbackRate=x._rate,R.paused){b._emit("playerror",x._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}u!=="__default"||x._loop?b._endTimers[x._id]=setTimeout(b._ended.bind(b,x),_):(b._endTimers[x._id]=function(){b._ended(x),R.removeEventListener("ended",b._endTimers[x._id],!1)},R.addEventListener("ended",b._endTimers[x._id],!1))}catch(V){b._emit("playerror",x._id,V)}};R.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(R.src=b._src,R.load());var B=window&&window.ejecta||!R.readyState&&t._navigator.isCocoonJS;if(R.readyState>=3||B)G();else{b._playLock=!0,b._state="loading";var k=function(){b._state="loaded",G(),R.removeEventListener(t._canPlayEvent,k,!1)};R.addEventListener(t._canPlayEvent,k,!1),b._clearTimer(x._id)}}return x._id},pause:function(u){var g=this;if(g._state!=="loaded"||g._playLock)return g._queue.push({event:"pause",action:function(){g.pause(u)}}),g;for(var b=g._getSoundIds(u),y=0;y"u"?S._node.bufferSource.noteOff(0):S._node.bufferSource.stop(0),g._cleanBuffer(S._node)}else(!isNaN(S._node.duration)||S._node.duration===1/0)&&S._node.pause();arguments[1]||g._emit("pause",S?S._id:null)}return g},stop:function(u,g){var b=this;if(b._state!=="loaded"||b._playLock)return b._queue.push({event:"stop",action:function(){b.stop(u)}}),b;for(var y=b._getSoundIds(u),S=0;S"u"?v._node.bufferSource.noteOff(0):v._node.bufferSource.stop(0),b._cleanBuffer(v._node)):(!isNaN(v._node.duration)||v._node.duration===1/0)&&(v._node.currentTime=v._start||0,v._node.pause(),v._node.duration===1/0&&b._clearSound(v._node))),g||b._emit("stop",v._id))}return b},mute:function(u,g){var b=this;if(b._state!=="loaded"||b._playLock)return b._queue.push({event:"mute",action:function(){b.mute(u,g)}}),b;if(typeof g>"u")if(typeof u=="boolean")b._muted=u;else return b._muted;for(var y=b._getSoundIds(g),S=0;S"u"){var S=u._getSoundIds(),v=S.indexOf(g[0]);v>=0?y=parseInt(g[0],10):b=parseFloat(g[0])}else g.length>=2&&(b=parseFloat(g[0]),y=parseInt(g[1],10));var x;if(typeof b<"u"&&b>=0&&b<=1){if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"volume",action:function(){u.volume.apply(u,g)}}),u;typeof y>"u"&&(u._volume=b),y=u._getSoundIds(y);for(var A=0;A"u")}}return S},_startFadeInterval:function(u,g,b,y,S,v){var x=this,A=g,E=b-g,w=Math.abs(E/.01),_=Math.max(4,w>0?y/w:y),C=Date.now();u._fadeTo=b,u._interval=setInterval(function(){var P=(Date.now()-C)/y;C=Date.now(),A+=E*P,A=Math.round(A*100)/100,E<0?A=Math.max(b,A):A=Math.min(b,A),x._webAudio?u._volume=A:x.volume(A,u._id,!0),v&&(x._volume=A),(bg&&A>=b)&&(clearInterval(u._interval),u._interval=null,u._fadeTo=null,x.volume(b,u._id),x._emit("fade",u._id))},_)},_stopFade:function(u){var g=this,b=g._soundById(u);return b&&b._interval&&(g._webAudio&&b._node.gain.cancelScheduledValues(t.ctx.currentTime),clearInterval(b._interval),b._interval=null,g.volume(b._fadeTo,u),b._fadeTo=null,g._emit("fade",u)),g},loop:function(){var u=this,g=arguments,b,y,S;if(g.length===0)return u._loop;if(g.length===1)if(typeof g[0]=="boolean")b=g[0],u._loop=b;else return S=u._soundById(parseInt(g[0],10)),S?S._loop:!1;else g.length===2&&(b=g[0],y=parseInt(g[1],10));for(var v=u._getSoundIds(y),x=0;x=0?y=parseInt(g[0],10):b=parseFloat(g[0])}else g.length===2&&(b=parseFloat(g[0]),y=parseInt(g[1],10));var x;if(typeof b=="number"){if(u._state!=="loaded"||u._playLock)return u._queue.push({event:"rate",action:function(){u.rate.apply(u,g)}}),u;typeof y>"u"&&(u._rate=b),y=u._getSoundIds(y);for(var A=0;A=0?y=parseInt(g[0],10):u._sounds.length&&(y=u._sounds[0]._id,b=parseFloat(g[0]))}else g.length===2&&(b=parseFloat(g[0]),y=parseInt(g[1],10));if(typeof y>"u")return 0;if(typeof b=="number"&&(u._state!=="loaded"||u._playLock))return u._queue.push({event:"seek",action:function(){u.seek.apply(u,g)}}),u;var x=u._soundById(y);if(x)if(typeof b=="number"&&b>=0){var A=u.playing(y);A&&u.pause(y,!0),x._seek=b,x._ended=!1,u._clearTimer(y),!u._webAudio&&x._node&&!isNaN(x._node.duration)&&(x._node.currentTime=b);var E=function(){A&&u.play(y,!0),u._emit("seek",y)};if(A&&!u._webAudio){var w=function(){u._playLock?setTimeout(w,0):E()};setTimeout(w,0)}else E()}else if(u._webAudio){var _=u.playing(y)?t.ctx.currentTime-x._playStart:0,C=x._rateSeek?x._rateSeek-x._seek:0;return x._seek+(C+_*Math.abs(x._rate))}else return x._node.currentTime;return u},playing:function(u){var g=this;if(typeof u=="number"){var b=g._soundById(u);return b?!b._paused:!1}for(var y=0;y=0&&t._howls.splice(y,1);var S=!0;for(b=0;b=0){S=!1;break}return o&&S&&delete o[u._src],t.noAudio=!1,u._state="unloaded",u._sounds=[],u=null,null},on:function(u,g,b,y){var S=this,v=S["_on"+u];return typeof g=="function"&&v.push(y?{id:b,fn:g,once:y}:{id:b,fn:g}),S},off:function(u,g,b){var y=this,S=y["_on"+u],v=0;if(typeof g=="number"&&(b=g,g=null),g||b)for(v=0;v=0;v--)(!S[v].id||S[v].id===g||u==="load")&&(setTimeout(function(x){x.call(this,g,b)}.bind(y,S[v].fn),0),S[v].once&&y.off(u,S[v].fn,S[v].id));return y._loadQueue(u),y},_loadQueue:function(u){var g=this;if(g._queue.length>0){var b=g._queue[0];b.event===u&&(g._queue.shift(),g._loadQueue()),u||b.action()}return g},_ended:function(u){var g=this,b=u._sprite;if(!g._webAudio&&u._node&&!u._node.paused&&!u._node.ended&&u._node.currentTime=0;y--){if(b<=g)return;u._sounds[y]._ended&&(u._webAudio&&u._sounds[y]._node&&u._sounds[y]._node.disconnect(0),u._sounds.splice(y,1),b--)}}},_getSoundIds:function(u){var g=this;if(typeof u>"u"){for(var b=[],y=0;y=0;if(t._scratchBuffer&&u.bufferSource&&(u.bufferSource.onended=null,u.bufferSource.disconnect(0),b))try{u.bufferSource.buffer=t._scratchBuffer}catch(y){}return u.bufferSource=null,g},_clearSound:function(u){var g=/MSIE |Trident\//.test(t._navigator&&t._navigator.userAgent);g||(u.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var r=function(u){this._parent=u,this.init()};r.prototype={init:function(){var u=this,g=u._parent;return u._muted=g._muted,u._loop=g._loop,u._volume=g._volume,u._rate=g._rate,u._seek=0,u._paused=!0,u._ended=!0,u._sprite="__default",u._id=++t._counter,g._sounds.push(u),u.create(),u},create:function(){var u=this,g=u._parent,b=t._muted||u._muted||u._parent._muted?0:u._volume;return g._webAudio?(u._node=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),u._node.gain.setValueAtTime(b,t.ctx.currentTime),u._node.paused=!0,u._node.connect(t.masterGain)):t.noAudio||(u._node=t._obtainHtml5Audio(),u._errorFn=u._errorListener.bind(u),u._node.addEventListener("error",u._errorFn,!1),u._loadFn=u._loadListener.bind(u),u._node.addEventListener(t._canPlayEvent,u._loadFn,!1),u._endFn=u._endListener.bind(u),u._node.addEventListener("ended",u._endFn,!1),u._node.src=g._src,u._node.preload=g._preload===!0?"auto":g._preload,u._node.volume=b*t.volume(),u._node.load()),u},reset:function(){var u=this,g=u._parent;return u._muted=g._muted,u._loop=g._loop,u._volume=g._volume,u._rate=g._rate,u._seek=0,u._rateSeek=0,u._paused=!0,u._ended=!0,u._sprite="__default",u._id=++t._counter,u},_errorListener:function(){var u=this;u._parent._emit("loaderror",u._id,u._node.error?u._node.error.code:0),u._node.removeEventListener("error",u._errorFn,!1)},_loadListener:function(){var u=this,g=u._parent;g._duration=Math.ceil(u._node.duration*10)/10,Object.keys(g._sprite).length===0&&(g._sprite={__default:[0,g._duration*1e3]}),g._state!=="loaded"&&(g._state="loaded",g._emit("load"),g._loadQueue()),u._node.removeEventListener(t._canPlayEvent,u._loadFn,!1)},_endListener:function(){var u=this,g=u._parent;g._duration===1/0&&(g._duration=Math.ceil(u._node.duration*10)/10,g._sprite.__default[1]===1/0&&(g._sprite.__default[1]=g._duration*1e3),g._ended(u)),u._node.removeEventListener("ended",u._endFn,!1)}};var o={},a=function(u){var g=u._src;if(o[g]){u._duration=o[g].duration,d(u);return}if(/^data:[^;]+;base64,/.test(g)){for(var b=atob(g.split(",")[1]),y=new Uint8Array(b.length),S=0;S0?(o[g._src]=S,d(g,S)):b()};typeof Promise<"u"&&t.ctx.decodeAudioData.length===1?t.ctx.decodeAudioData(u).then(y).catch(b):t.ctx.decodeAudioData(u,y,b)},d=function(u,g){g&&!u._duration&&(u._duration=g.duration),Object.keys(u._sprite).length===0&&(u._sprite={__default:[0,u._duration*1e3]}),u._state!=="loaded"&&(u._state="loaded",u._emit("load"),u._loadQueue())},m=function(){if(t.usingWebAudio){try{typeof AudioContext<"u"?t.ctx=new AudioContext:typeof webkitAudioContext<"u"?t.ctx=new webkitAudioContext:t.usingWebAudio=!1}catch(S){t.usingWebAudio=!1}t.ctx||(t.usingWebAudio=!1);var u=/iP(hone|od|ad)/.test(t._navigator&&t._navigator.platform),g=t._navigator&&t._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),b=g?parseInt(g[1],10):null;if(u&&b&&b<9){var y=/safari/.test(t._navigator&&t._navigator.userAgent.toLowerCase());t._navigator&&!y&&(t.usingWebAudio=!1)}t.usingWebAudio&&(t.masterGain=typeof t.ctx.createGain>"u"?t.ctx.createGainNode():t.ctx.createGain(),t.masterGain.gain.setValueAtTime(t._muted?0:t._volume,t.ctx.currentTime),t.masterGain.connect(t.ctx.destination)),t._setup()}};i.Howler=t,i.Howl=s,typeof commonjsGlobal<"u"?(commonjsGlobal.HowlerGlobal=e,commonjsGlobal.Howler=t,commonjsGlobal.Howl=s,commonjsGlobal.Sound=r):typeof window<"u"&&(window.HowlerGlobal=e,window.Howler=t,window.Howl=s,window.Sound=r)})();/*! * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported. * * howler.js v2.2.3 * howlerjs.com * * (c) 2013-2020, James Simpson of GoldFire Studios * goldfirestudios.com * * MIT License <<<<<<<< HEAD:dist/assets/index-8a5ff51b.js */(function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(t){var s=this;if(!s.ctx||!s.ctx.listener)return s;for(var r=s._howls.length-1;r>=0;r--)s._howls[r].stereo(t);return s},HowlerGlobal.prototype.pos=function(t,s,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(s=typeof s!="number"?o._pos[1]:s,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,s,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,s,r,o,a,l){var c=this;if(!c.ctx||!c.ctx.listener)return c;var d=c._orientation;if(s=typeof s!="number"?d[1]:s,r=typeof r!="number"?d[2]:r,o=typeof o!="number"?d[3]:o,a=typeof a!="number"?d[4]:a,l=typeof l!="number"?d[5]:l,typeof t=="number")c._orientation=[t,s,r,o,a,l],typeof c.ctx.listener.forwardX<"u"?(c.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),c.ctx.listener.forwardY.setTargetAtTime(s,Howler.ctx.currentTime,.1),c.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),c.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),c.ctx.listener.upY.setTargetAtTime(a,Howler.ctx.currentTime,.1),c.ctx.listener.upZ.setTargetAtTime(l,Howler.ctx.currentTime,.1)):c.ctx.listener.setOrientation(t,s,r,o,a,l);else return d;return c},Howl.prototype.init=function(t){return function(s){var r=this;return r._orientation=s.orientation||[1,0,0],r._stereo=s.stereo||null,r._pos=s.pos||null,r._pannerAttr={coneInnerAngle:typeof s.coneInnerAngle<"u"?s.coneInnerAngle:360,coneOuterAngle:typeof s.coneOuterAngle<"u"?s.coneOuterAngle:360,coneOuterGain:typeof s.coneOuterGain<"u"?s.coneOuterGain:0,distanceModel:typeof s.distanceModel<"u"?s.distanceModel:"inverse",maxDistance:typeof s.maxDistance<"u"?s.maxDistance:1e4,panningModel:typeof s.panningModel<"u"?s.panningModel:"HRTF",refDistance:typeof s.refDistance<"u"?s.refDistance:1,rolloffFactor:typeof s.rolloffFactor<"u"?s.rolloffFactor:1},r._onstereo=s.onstereo?[{fn:s.onstereo}]:[],r._onpos=s.onpos?[{fn:s.onpos}]:[],r._onorientation=s.onorientation?[{fn:s.onorientation}]:[],t.call(this,s)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,s){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,s)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof s>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var a=r._getSoundIds(s),l=0;l"u")if(typeof t=="number")a._pos=[t,s,r];else return a._pos;for(var l=a._getSoundIds(o),c=0;c"u")if(typeof t=="number")a._orientation=[t,s,r];else return a._orientation;for(var l=a._getSoundIds(o),c=0;c"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return a=t._soundById(parseInt(s[0],10)),a?a._pannerAttr:t._pannerAttr;else s.length===2&&(r=s[0],o=parseInt(s[1],10));for(var l=t._getSoundIds(o),c=0;c{if(!metronomeData.lineShow)return;const i=document.querySelector("#cursorImg-0");i&&(state$1.times[state$1.activeNoteIndex].multipleRestMeasures?i.classList.remove("lineHide"):i.classList.add("lineHide"))};watch(()=>metronomeData.lineShow,()=>{const i=document.querySelector("#cursorImg-0");i&&(metronomeData.lineShow?i.classList.add("lineHide"):i.classList.remove("lineHide"))});class Metronome{constructor(e){ct(this,"playType","tick");ct(this,"source",null);ct(this,"source1",null);ct(this,"source2",null);ct(this,"sound",e=>{state$1.sectionStatus||(e=setCurrentTime(e));let t=-1,s=-1;for(let r=0;r=o)t=r,s=o;else break}if(t>-1&&metronomeData.activeIndex!==t){metronomeData.activeIndex=t,metronomeData.activeMetro=this.getStep(s),this.playAudio(),metronomeData.isClick=!1;return}toggleLine(),metronomeData.isClick=!1});ct(this,"playAudio",()=>{var e;metronomeData.initPlayerState&&(this.source=((e=metronomeData.activeMetro)==null?void 0:e.index)===0?this.source1:this.source2,this.source.volume(metronomeData.disable||state$1.playState==="paused"?0:.4),this.source.play())});ct(this,"loadAudio1",()=>new howler.Howl({src:tockAndTick.tick}));ct(this,"loadAudio2",()=>new howler.Howl({src:tockAndTick.tock}))}init(e){this.calculation(e),metronomeData.activeList=[]}initPlayer(){this.source1||(this.source1=this.loadAudio1()),this.source2||(this.source2=this.loadAudio2()),metronomeData.initPlayerState=!0}selectPlay(){}getStep(e){for(let t=0;to.time===e);if(r)return r}return{}}calculation(e){var a,l,c,d,m,u,g,b,y,S,v,x,A,E;const t=[];let s=-1;for(let w=0;w-1&&C!=s){const I={measureNumberXML:C,measureNumberIndex:P,numerator:((g=(u=(m=_==null?void 0:_.noteElement)==null?void 0:m.sourceMeasure)==null?void 0:u.ActiveTimeSignature)==null?void 0:g.numerator)||0,start:_.measures[0].time,end:_.measures[_.measures.length-1].endtime,time:_.measures[_.measures.length-1].endtime-_.measures[0].time,stave_x:((x=(v=(S=(y=(b=_==null?void 0:_.noteElement)==null?void 0:b.sourceMeasure)==null?void 0:y.verticalMeasureList)==null?void 0:S[0])==null?void 0:v.stave)==null?void 0:x.x)||0,end_x:((A=_==null?void 0:_.stave)==null?void 0:A.end_x)||0||0,stepList:[],svgs:[],isRestFlag:_.isRestFlag};if([121].includes(state$1.subjectId)){const R=e.filter(N=>{var G,B;return((B=(G=N==null?void 0:N.noteElement)==null?void 0:G.sourceMeasure)==null?void 0:B.measureListIndex)==P});_.measures=R,I.start=_.measures[0].time,I.end=_.measures[_.measures.length-1].endtime,I.time=_.measures[_.measures.length-1].endtime-_.measures[0].time;try{const N=_.noteElement.sourceMeasure.verticalMeasureList.reduce((B,k)=>(B.push(...k.vfVoices[1].tickables),B),[]),G=[];I.svgs=N.map(B=>{const k=B.getBoundingBox().x;if(!G.includes(k)&&B.duration!=="w")return G.push(k),B._start_x=k,B}).filter(Boolean).sort((B,k)=>B._start_x-k._start_x)}catch(N){console.log(N)}I.stepList=calculateMutilpleMetroStep(_.measures,I)}else I.stepList=calculateMetroStep(_.measures,I);t.push(I),s=C}}let r=[];const o=[];try{for(let w=0;w-1?`${B} + ${I}%`:`${B}px + ${I}%`:`${I}%`,_.stepList[R]=G}o[w].push({index:R,time:N,left:(G==null?void 0:G.indexOf("%"))>-1?`calc(${G})`:G,measureNumberXML:_.measureNumberXML,isRestFlag:_.isRestFlag})}}}catch(w){console.log(w)}metronomeData.metroList=r,metronomeData.metroMeasure=o,metronomeData.activeMetro=((E=o[0])==null?void 0:E[0])||{}}}function calculateMetroStep(i,e){var l,c,d,m,u,g,b,y,S,v,x,A,E,w,_,C,P,I,R,N,G,B,k,T,V,J,W,se,ne,fe,Z,K,be,oe,Y,ae,de,le,me,ve,ye,U,Q,M,$;const s=i.reduce((z,F)=>(z+=F._noteLength,z),0)/e.numerator;if(i.length===1){const z=i[0].svgElement;if(z&&!z.isRest()){const F=((u=(m=(d=(c=(l=z==null?void 0:z.attrs)==null?void 0:l.el)==null?void 0:c.parentElement)==null?void 0:d.parentElement)==null?void 0:m.getBoundingClientRect)==null?void 0:u.call(m))||{x:0,right:0};let O=((y=(b=(g=z==null?void 0:z.attrs)==null?void 0:g.el)==null?void 0:b.getBoundingClientRect)==null?void 0:y.call(b))||{x:0},H=Math.abs(F.right-O.x)/e.numerator,ie=[];for(let ee=0;ee=1){r-=s;const ie=((B=(G=(N=(R=(I=(P=F==null?void 0:F.svgElement)==null?void 0:P.attrs)==null?void 0:I.el)==null?void 0:R.parentElement)==null?void 0:N.parentElement)==null?void 0:G.getBoundingClientRect)==null?void 0:B.call(G))||{x:0};if(o.length>0){let he=((W=(J=(V=(T=(k=o[0])==null?void 0:k.svgElement)==null?void 0:T.attrs)==null?void 0:V.el)==null?void 0:J.getBoundingClientRect)==null?void 0:W.call(J))||{x:0},re=he.x-ie.x;if(o[0]._noteLength/s>=1){const ge=((K=(Z=(fe=(ne=(se=i[o[0].index+1])==null?void 0:se.svgElement)==null?void 0:ne.attrs)==null?void 0:fe.el)==null?void 0:Z.getBoundingClientRect)==null?void 0:K.call(Z))||{x:ie.right},xe=Math.abs(he.x-ge.x)/2;re=he.x-ie.x+xe}a.push(re)}else{let re=(((ae=(Y=(oe=(be=F==null?void 0:F.svgElement)==null?void 0:be.attrs)==null?void 0:oe.el)==null?void 0:Y.getBoundingClientRect)==null?void 0:ae.call(Y))||{x:0}).x-ie.x;a.push(re)}o=[];let ee=((ve=(me=(le=(de=F==null?void 0:F.svgElement)==null?void 0:de.attrs)==null?void 0:le.el)==null?void 0:me.getBoundingClientRect)==null?void 0:ve.call(me))||{x:0},te=ee.x-ie.x,ce=0;if(H>1){const he=(($=(M=(Q=(U=(ye=i[z+1])==null?void 0:ye.svgElement)==null?void 0:U.attrs)==null?void 0:Q.el)==null?void 0:M.getBoundingClientRect)==null?void 0:$.call(M))||{x:ie.right};ce=Math.abs(ee.x-he.x)/H}for(let he=1;heNumber.EPSILON&&r>0&&o.push(F)}return a=a.reduce((z,F)=>(z.includes(F)?z.push(void 0):z.push(F),z),[]),a}function calculateMutilpleMetroStep(i,e){var l,c,d,m,u,g,b,y,S,v,x,A,E,w,_,C,P,I,R;const t=e.time/e.numerator,s=((b=(g=(u=(m=(d=(c=(l=i[0])==null?void 0:l.svgElement)==null?void 0:c.attrs)==null?void 0:d.el)==null?void 0:m.parentElement)==null?void 0:u.parentElement)==null?void 0:g.getBoundingClientRect)==null?void 0:b.call(g))||{x:0};if(i.length===1){const N=e.svgs[0];let G=((v=(S=(y=N==null?void 0:N.attrs)==null?void 0:y.el)==null?void 0:S.getBoundingClientRect)==null?void 0:v.call(S))||{x:0};return N&&!N.isRest()?[G.x-s.x]:[]}let r=0,o=[],a=[];for(let N=0;Nt){r-=t;let V=T.x-s.x;o.length>0&&(k=(_=(w=e.svgs[o[0]._index])==null?void 0:w.attrs)==null?void 0:_.el,T=((C=k==null?void 0:k.getBoundingClientRect)==null?void 0:C.call(k))||{x:0},V=T.x-s.x),a.push(V),o=[]}else o.push(G);if(Math.abs(r-t)<.001){let V=T.x-s.x;o.length>0&&(k=(I=(P=e.svgs[o[0]._index])==null?void 0:P.attrs)==null?void 0:I.el,T=((R=k==null?void 0:k.getBoundingClientRect)==null?void 0:R.call(k))||{x:0},V=T.x-s.x),a.push(V),r=0,o=[]}}return a=a.reduce((N,G)=>(N.includes(G)?N.push(void 0):N.push(G),N),[]),a}function setCurrentTime(i){return browserInfo$3.huawei||browserInfo$3.xiaomi?i+=.125:browserInfo$3.android?i+=.11:browserInfo$3.ios&&(i+=.01),i}var GradualVersion=(i=>(i[i.BASE=0]="BASE",i[i.ENSEMBLE=1]="ENSEMBLE",i))(GradualVersion||{});const scoreMode="_scoreMode_11hmk_1",styles$4={scoreMode};var context={locks:{},zIndex:2e3,enableRipple:!0};reactive(context);const Context=reactive(context),isString=i=>typeof i=="string",isBoolean=i=>typeof i=="boolean",isNumber=i=>typeof i=="number",isPlainObject=i=>Object.prototype.toString.call(i)==="[object Object]",isArray$1=i=>Array.isArray(i),isURL=i=>i?/^(http)|(\.*\/)/.test(i):!1,toNumber=i=>i==null?0:isString(i)?(i=parseFloat(i),i=Number.isNaN(i)?0:i,i):isBoolean(i)?Number(i):i,inBrowser=()=>typeof window<"u";function getViewportSize(){var{innerWidth:i,innerHeight:e}=window;return i>e?{vMin:e,vMax:i}:{vMin:i,vMax:e}}var isRem=i=>isString(i)&&i.endsWith("rem"),isPx=i=>isString(i)&&i.endsWith("px")||isNumber(i),isPercent=i=>isString(i)&&i.endsWith("%"),isVw=i=>isString(i)&&i.endsWith("vw"),isVh=i=>isString(i)&&i.endsWith("vh"),isVMin=i=>isString(i)&&i.endsWith("vmin"),isVMax=i=>isString(i)&&i.endsWith("vmax"),isCalc=i=>isString(i)&&i.startsWith("calc("),isVar=i=>isString(i)&&i.startsWith("var("),toPxNum=i=>{if(isNumber(i))return i;if(isPx(i))return+i.replace("px","");if(isVw(i))return+i.replace("vw","")*window.innerWidth/100;if(isVh(i))return+i.replace("vh","")*window.innerHeight/100;if(isRem(i)){var e=+i.replace("rem",""),t=window.getComputedStyle(document.documentElement).fontSize;return e*parseFloat(t)}return isVMin(i)?getViewportSize().vMin:isVMax(i)?getViewportSize().vMax:isString(i)?toNumber(i):0},toSizeUnit=i=>{if(i!=null)return isPercent(i)||isVw(i)||isVh(i)||isRem(i)||isCalc(i)||isVar(i)||isVMin(i)||isVMax(i)?i:toPxNum(i)+"px"},multiplySizeUnit=function(i,e){if(e===void 0&&(e=1),i!=null){var t=toSizeUnit(i),s=t.match(/(vh|%|rem|px|vw)$/)[0];return""+parseFloat(t)*e+s}};function useMounted(i){let e=!1;onMounted(()=>{i(),nextTick(()=>{e=!0})}),onActivated(()=>{e&&i()})}function useEventListener(i,e,t,s={}){if(!inBrowser())return;const{passive:r=!1,capture:o=!1}=s;let a=!1,l=!1;const c=g=>{if(a||l)return;const b=unref(g);b&&(b.addEventListener(e,t,{passive:r,capture:o}),a=!0)},d=g=>{if(!a||l)return;const b=unref(g);b&&(b.removeEventListener(e,t,{capture:o}),a=!1)};let m;isRef(i)&&(m=watch(()=>i.value,(g,b)=>{d(b),c(g)}));const u=()=>{m==null||m(),d(i),l=!0};return useMounted(()=>{c(i)}),onBeforeUnmount(()=>{d(i)}),onDeactivated(()=>{d(i)}),u}globalThis&&globalThis.__rest;function _extends$2(){return _extends$2=Object.assign?Object.assign.bind():function(i){for(var e=1;e(t[s]=i[s],t),{}):i[e]}function mount(i){var e=createApp(i),t=document.createElement("div");return document.body.appendChild(t),{instance:e.mount(t),unmount(){e.unmount(),document.body.removeChild(t)}}}function mountInstance(i,e,t){e===void 0&&(e={}),t===void 0&&(t={});var s={setup(){return()=>h(i,_extends$2({},e,t))}},{unmount:r}=mount(s);return{unmountInstance:r}}function useRouteListener(i){inBrowser()&&(useEventListener(window,"hashchange",i),useEventListener(window,"popstate",i))}function useTeleport(){var i=ref(!1);return onActivated(()=>{i.value=!1}),onDeactivated(()=>{i.value=!0}),{disabled:i}}function createNamespace(i){var e="var",t=e+"-"+i,s=o=>o?o[0]==="$"?o.replace("$",e):o.startsWith("--")?""+t+o:t+"__"+o:t,r=function(){for(var o=arguments.length,a=new Array(o),l=0;l{if(isArray$1(c)){var[d,m,u=null]=c;return d?m:u}return c})};return{n:s,classes:r}}function call(i){for(var e=arguments.length,t=new Array(e>1?e-1:0),s=1;sr(...t));if(i)return i(...t)}function defineListenerProp(i){return{type:[Function,Array],default:i}}function resolveLock(){var i=Object.keys(Context.locks).length;i<=0?document.body.classList.remove("var--lock"):document.body.classList.add("var--lock")}function addLock(i){Context.locks[i]=1,resolveLock()}function releaseLock(i){delete Context.locks[i],resolveLock()}function useLock(i,e){var{uid:t}=getCurrentInstance();e&&watch(e,s=>{s===!1?releaseLock(t):s===!0&&i()===!0&&addLock(t)}),watch(i,s=>{e&&e()===!1||(s===!0?addLock(t):releaseLock(t))}),onBeforeMount(()=>{e&&e()===!1||i()===!0&&addLock(t)}),onUnmounted(()=>{e&&e()===!1||i()===!0&&releaseLock(t)}),onActivated(()=>{e&&e()===!1||i()===!0&&addLock(t)}),onDeactivated(()=>{e&&e()===!1||i()===!0&&releaseLock(t)})}function useZIndex(i,e){var t=ref(Context.zIndex);return watch(i,s=>{s&&(Context.zIndex+=e,t.value=Context.zIndex)},{immediate:!0}),{zIndex:t}}var props$3={name:{type:String},size:{type:[Number,String]},color:{type:String},namespace:{type:String,default:"var-icon"},transition:{type:[Number,String],default:0},animationClass:{type:String},onClick:defineListenerProp()};function asyncGeneratorStep(i,e,t,s,r,o,a){try{var l=i[o](a),c=l.value}catch(d){t(d);return}l.done?e(c):Promise.resolve(c).then(s,r)}function _asyncToGenerator(i){return function(){var e=this,t=arguments;return new Promise(function(s,r){var o=i.apply(e,t);function a(c){asyncGeneratorStep(o,s,r,a,l,"next",c)}function l(c){asyncGeneratorStep(o,s,r,a,l,"throw",c)}a(void 0)})}}var{n:n$3,classes:classes$2}=createNamespace("icon");function __render__$3(i,e){return openBlock(),createBlock(resolveDynamicComponent(i.isURL(i.name)?"img":"i"),{class:normalizeClass(i.classes(i.n(),[i.namespace!==i.n(),i.namespace],i.namespace+"--set",[i.isURL(i.name),i.n("image"),i.namespace+"-"+i.nextName],[i.animateInProgress,i.animationClass==null?i.n("--shrinking"):i.animationClass])),style:normalizeStyle({color:i.color,"transition-duration":i.toNumber(i.transition)+"ms",width:i.isURL(i.name)?i.toSizeUnit(i.size):null,height:i.isURL(i.name)?i.toSizeUnit(i.size):null,fontSize:i.toSizeUnit(i.size)}),src:i.isURL(i.name)?i.nextName:null,onClick:i.onClick},null,8,["class","style","src","onClick"])}var __sfc__$3=defineComponent({name:"VarIcon",props:props$3,setup(i){var e=ref(""),t=ref(!1),s=function(){var r=_asyncToGenerator(function*(o,a){var{transition:l}=i;if(a==null||toNumber(l)===0){e.value=o;return}t.value=!0,yield nextTick(),setTimeout(()=>{a!=null&&(e.value=o),t.value=!1},toNumber(l))});return function(a,l){return r.apply(this,arguments)}}();return watch(()=>i.name,s,{immediate:!0}),{n:n$3,classes:classes$2,nextName:e,animateInProgress:t,isURL,toNumber,toSizeUnit}}});__sfc__$3.render=__render__$3;const Icon=__sfc__$3;Icon.install=function(i){i.component(Icon.name,Icon)};function typeValidator$1(i){return["circle","wave","cube","rect","disappear"].includes(i)}function sizeValidator(i){return["normal","mini","small","large"].includes(i)}var props$2={type:{type:String,default:"circle",validator:typeValidator$1},radius:{type:[String,Number]},size:{type:String,default:"normal",validator:sizeValidator},color:{type:String},description:{type:String},loading:{type:Boolean,default:!1}},{n:n$2,classes:classes$1}=createNamespace("loading"),_withScopeId=i=>(pushScopeId(""),i=i(),popScopeId(),i),_hoisted_1=_withScopeId(()=>createBaseVNode("svg",{viewBox:"25 25 50 50"},[createBaseVNode("circle",{cx:"50",cy:"50",r:"20",fill:"none"})],-1)),_hoisted_2=[_hoisted_1];function __render__$2(i,e){return openBlock(),createElementBlock("div",{class:normalizeClass(i.n())},[i.$slots.default?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.classes(i.n("content"),[i.loading,i.n("content--active")]))},[renderSlot(i.$slots,"default"),i.loading?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.n("content-mask"))},null,2)):createCommentVNode("v-if",!0)],2)):createCommentVNode("v-if",!0),i.isShow?(openBlock(),createElementBlock("div",{key:1,class:normalizeClass(i.classes(i.n("$--box"),i.n("body"),[i.$slots.default,i.n("inside")]))},[i.type==="circle"?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.n("circle"))},[createBaseVNode("span",{class:normalizeClass(i.classes(i.n("circle-block"),i.n("circle-block--"+i.size))),style:normalizeStyle({width:i.multiplySizeUnit(i.radius,2),height:i.multiplySizeUnit(i.radius,2),color:i.color})},_hoisted_2,6)],2)):createCommentVNode("v-if",!0),(openBlock(!0),createElementBlock(Fragment,null,renderList(i.loadingTypeDict,(t,s)=>(openBlock(),createElementBlock(Fragment,{key:s},[i.type===s?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.classes(i.n(s),i.n(s+"--"+i.size)))},[(openBlock(!0),createElementBlock(Fragment,null,renderList(t,r=>(openBlock(),createElementBlock("div",{key:r+s,style:normalizeStyle({backgroundColor:i.color}),class:normalizeClass(i.classes(i.n(s+"-item"),i.n(s+"-item--"+i.size)))},null,6))),128))],2)):createCommentVNode("v-if",!0)],64))),128)),i.$slots.description||i.description?(openBlock(),createElementBlock("div",{key:1,class:normalizeClass(i.classes(i.n("description"),i.n("description--"+i.size))),style:normalizeStyle({color:i.color})},[renderSlot(i.$slots,"description",{},()=>[createTextVNode(toDisplayString(i.description),1)])],6)):createCommentVNode("v-if",!0)],2)):createCommentVNode("v-if",!0)],2)}var __sfc__$2=defineComponent({name:"VarLoading",props:props$2,setup(i,e){var{slots:t}=e,s={wave:5,cube:4,rect:8,disappear:3},r=computed(()=>call(t.default)?i.loading:!0);return{n:n$2,classes:classes$1,multiplySizeUnit,loadingTypeDict:s,isShow:r}}});__sfc__$2.render=__render__$2;const Loading=__sfc__$2;Loading.install=function(i){i.component(Loading.name,Loading)};function _extends$1(){return _extends$1=Object.assign?Object.assign.bind():function(i){for(var e=1;e[createTextVNode(toDisplayString(i.content),1)])],2),createBaseVNode("div",{class:normalizeClass(i.n("action"))},[i.iconName?(openBlock(),createBlock(t,{key:0,name:i.iconName},null,8,["name"])):createCommentVNode("v-if",!0),i.type==="loading"?(openBlock(),createBlock(s,{key:1,type:i.loadingType,size:i.loadingSize,color:i.loadingColor,radius:i.loadingRadius},null,8,["type","size","color","radius"])):createCommentVNode("v-if",!0),renderSlot(i.$slots,"action")],2)],6)],6)),[[vShow,i.show]])}var __sfc__$1=defineComponent({name:"VarSnackbarCore",components:{VarLoading:Loading,VarIcon:Icon},props:props$1,setup(i){var e=ref(null),{zIndex:t}=useZIndex(()=>i.show,1);useLock(()=>i.show,()=>i.lockScroll);var s=computed(()=>i.type==="loading"||i.forbidClick),r=computed(()=>i.type?ICON_TYPE_DICT[i.type]:""),o=()=>{e.value=setTimeout(()=>{i.type!=="loading"&&call(i["onUpdate:show"],!1)},i.duration)};return watch(()=>i.show,a=>{a?(call(i.onOpen),o()):a===!1&&(clearTimeout(e.value),call(i.onClose))}),watch(()=>i._update,()=>{clearTimeout(e.value),o()}),useMounted(()=>{i.show&&(call(i.onOpen),o())}),{SNACKBAR_TYPE,n:n$1,classes,zIndex:t,iconName:r,isForbidClick:s}}});__sfc__$1.render=__render__$1;const VarSnackbarCore=__sfc__$1;var{n}=createNamespace("snackbar");function __render__(i,e){var t=resolveComponent("var-snackbar-core");return openBlock(),createBlock(Teleport,{to:i.teleport,disabled:i.disabled},[createVNode(Transition,{name:i.n()+"-fade",onAfterEnter:i.onOpened,onAfterLeave:i.onClosed},{default:withCtx(()=>[createVNode(t,mergeProps(i.$props,{class:i.n("transition")}),{action:withCtx(()=>[renderSlot(i.$slots,"action")]),default:withCtx(()=>[renderSlot(i.$slots,"default",{},()=>[createTextVNode(toDisplayString(i.content),1)])]),_:3},16,["class"])]),_:3},8,["name","onAfterEnter","onAfterLeave"])],8,["to","disabled"])}var __sfc__=defineComponent({name:"VarSnackbar",components:{VarSnackbarCore},props:props$1,setup(){var{disabled:i}=useTeleport();return{n,disabled:i}}});__sfc__.render=__render__;const VarSnackbar=__sfc__;function _extends(){return _extends=Object.assign?Object.assign.bind():function(i){for(var e=1;e{},onOpened:()=>{},onClose:()=>{},onClosed:()=>{}},uniqSnackbarOptions=reactive([]),defaultOptions=defaultOptionsValue,transitionGroupProps={name:"var-snackbar-fade",tag:"div",class:"var-transition-group"},TransitionGroupHost={setup(){return()=>{var i=uniqSnackbarOptions.map(e=>{var{id:t,reactiveSnackOptions:s,_update:r}=e,o=document.querySelector(".var-transition-group");s.forbidClick||s.type==="loading"?o.classList.add("var-pointer-auto"):o.classList.remove("var-pointer-auto"),isAllowMultiple&&(s.position="top");var a=isAllowMultiple?"relative":"absolute",l=_extends({position:a},getTop(s.position));return createVNode(VarSnackbarCore,mergeProps(s,{key:t,style:l,"data-id":t,_update:r,show:s.show,"onUpdate:show":c=>s.show=c}),null)});return createVNode(TransitionGroup,mergeProps(transitionGroupProps,{style:{zIndex:Context.zIndex},onAfterEnter:opened,onAfterLeave:removeUniqOption}),_isSlot(i)?i:{default:()=>[i]})}}},Snackbar=function(i){var e=normalizeOptions(i),t=reactive(_extends({},defaultOptions,e));t.show=!0,isMount||(isMount=!0,unmount=mountInstance(TransitionGroupHost).unmountInstance);var{length:s}=uniqSnackbarOptions,r={id:sid++,reactiveSnackOptions:t};if(s===0||isAllowMultiple)addUniqOption(r);else{var o="update-"+sid;updateUniqOption(t,o)}return{clear(){!isAllowMultiple&&uniqSnackbarOptions.length?uniqSnackbarOptions[0].reactiveSnackOptions.show=!1:t.show=!1}}};SNACKBAR_TYPE.forEach(i=>{Snackbar[i]=e=>(isPlainObject(e)?e.type=i:e={content:e,type:i},Snackbar(e))});Snackbar.install=function(i){i.component(VarSnackbar.name,VarSnackbar)};Snackbar.allowMultiple=function(i){i===void 0&&(i=!1),i!==isAllowMultiple&&(uniqSnackbarOptions.forEach(e=>{e.reactiveSnackOptions.show=!1}),isAllowMultiple=i)};Snackbar.clear=function(){uniqSnackbarOptions.forEach(i=>{i.reactiveSnackOptions.show=!1})};Snackbar.setDefaultOptions=function(i){defaultOptions=i};Snackbar.resetDefaultOptions=function(){defaultOptions=defaultOptionsValue};Snackbar.Component=VarSnackbar;function opened(i){var e=i.getAttribute("data-id"),t=uniqSnackbarOptions.find(s=>s.id===toNumber(e));t&&call(t.reactiveSnackOptions.onOpened)}function removeUniqOption(i){i.parentElement&&i.parentElement.classList.remove("var-pointer-auto");var e=i.getAttribute("data-id"),t=uniqSnackbarOptions.find(r=>r.id===toNumber(e));t&&(t.animationEnd=!0,call(t.reactiveSnackOptions.onClosed));var s=uniqSnackbarOptions.every(r=>r.animationEnd);s&&(call(unmount),uniqSnackbarOptions=reactive([]),isMount=!1)}function addUniqOption(i){uniqSnackbarOptions.push(i)}function normalizeOptions(i){return i===void 0&&(i={}),isString(i)?{content:i}:i}function updateUniqOption(i,e){var[t]=uniqSnackbarOptions;t.reactiveSnackOptions=_extends({},t.reactiveSnackOptions,i),t._update=e}function getTop(i){return i===void 0&&(i="top"),i==="bottom"?{[i]:"5%"}:{top:i==="top"?"5%":"45%"}}VarSnackbar.install=function(i){i.component(VarSnackbar.name,VarSnackbar)};const Snackbar$1=Snackbar,Image1=""+new URL("5-d8bfbf51.png",import.meta.url).href,Image2=""+new URL("4-cfa387c7.png",import.meta.url).href,Image3=""+new URL("3-d02c685a.png",import.meta.url).href,Image4=""+new URL("2-5c4c2ef5.png",import.meta.url).href,Image5=""+new URL("1-a0d5037d.png",import.meta.url).href,clx1=""+new URL("clx5-b3331931.svg",import.meta.url).href,clx2=""+new URL("clx4-7a8a1657.svg",import.meta.url).href,clx3=""+new URL("clx3-82262a8a.svg",import.meta.url).href,clx4=""+new URL("clx2-99f2ced3.svg",import.meta.url).href,clx5=""+new URL("clx1-3d063166.svg",import.meta.url).href,good="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAACQCAMAAABOB0IDAAADAFBMVEUAAAADBBoCBhMBChQACBYABhUABhUACBYACBYDDhgABxUCCRcABxYACBYACBYABxUACBYACBYACBcABxbc4ODk5uUABxYACBbT2drKzc4ABxYACBXm6Ofo6ejR1tbP0tTn6OiiqKvN09SIkpcjOUW6wsWLmp/j5eUVIjDQ1dZ9h424vLzj5eUHHCm/x8lodn5NW2Q7TVctQEtTZm9FWGJjbnY7TVeaqqyJkJZugIYAGino6ej/nHUAGiUABxD/mXT/08b/WXMADhcAEx0AR2wBdJX/lnIBHir/jG4BFyEAAgb/oHf/zsUDT3EBsx3/iWsBJDABLj4AKTcBP13/kG8Ed5j/k3EtkqsBrBn/pXoBNEP/fmj/Z2ALe5v/q3wAAjshiqUABkX/jXz/cHD/hWgojqgBbZECoxT/eHP/gmwBFGoBaIv/tor/gHUAFQAYhaQXjbD/bWIyla7/sYMADlwBY4cBXYQARGb/pIH/hnn/cmQTgJ4BOlYACk8BmA8begD/eGb/qIX/nX3/aG4bZHsCWX3/xbb/uJH/lXgAAC8oRkwGPUv/rosBUXqi2KsMtSkAGXcIb40PKTMHjQZbaXPFy8wRggEJf6EUTlv/vaT/k4P/emqssbIAAiMSaoQlvj8+mK82TVkTdJOxzdRNWGMdfpsyboRIZnQKyi6WpKffaXQVWmxHT1YbPEKh0KcBME4wRDcYujNQoLS3v8H/nY4qYG//i3YCGjxnqbuYTmgaKiadankVmANtTz2GtsMvgpouWGQ6vUvnWXECJIp3SGkkNDJse4C0eGF+jJAGKXQBDzIBvyKmfYSVwMsCKGCxUmuFl5wodovMWmz83dRKd4ueq65nxW5xXk5KRTdTw16hbFUNVyO7ZHvp5+Y0jaT/qaNuhpTOfmqFX05cTkKU1J/1poXxf24UYwF8aYjwnHviiHdAI1UHKBQJQAbGjnUgHFUnrD0cji5Qh5x8y4dPPngpLHXdm3ksdTum2q5kL1pUnlNNMz9or2VXMiYZhW5GgkdDJtKYAAAAO3RSTlMAChEbOSsxd34XJCBwZIRJX1mJU/7+a0T9JE4/5vJGicnM56iaz8W0k2+6Fptu4LB8pJ6po2aQk0aQV0CopUEAADC6SURBVHja7NlbaFJxHAfw7AYVUZEj7WKLHmTkQy9R0KIezlpQlpuVXSiksAsVwmIZ6IsxV5gW2gSFsG1tlZnMlIUEzXrYFlSgUM02GrbVQxGjC9RT0Pd3jvrfcXZX6MFvF9bmP8/5nO//fy5OKqeccooXueK3I5kkmVROXlYol/xuFldJJJIyYZ6fau3vZ7FCUiYUR66Eyx8IVk2WlA3/pn+sg5Mnl/2YH9+/P+zgjMmTyx3M86uQ/TpSJlguoRB5bv4G2u6rf55gW4snN4unzCh3cHz/XgbcdSa1zfkzQM6iuZUTrJo1o9xBdv54+Qx+zlhseF9NTc0hUfCNHTv2UZwQHNfBWeUOTsr176F7j8nZ8ySiN5uJakc2kDMjRkSvN57itJoOJljuoGRxrn+1JnXsasxgzALWCAEgCZIfxcl11V6XZQSrZtI6+L/e2ckLRfKLCVlozIqf+GUBA+51tdw16ZNWQNmRUF7q3JqggdKptqxbl53Fq6fNEgRLlhUrsEt/FskKuWKpqnLxj1KpqlLIJYhYW1GlUv54jHJpgTErMKhKAHzmXpcBxDQd7Z+QQaTFYNDpdDxgbYdMAJw+rXTLIO2SSqlUVv5ZlMCrWPvzLKlcKuZQLK1csvYXAbxojHypcvHL7A/71jFA/cDZbI4jDop1d/XOx+DjAem1HgFw6nRhEhfdTlW5BAqlCwwVKyQUFKmqEhC/kYrFcM+OEYszQIMBgGTH56TDcfKk1Up+mwiwoUEMuGAqJnGRL6ixcUrMi5JnsUrQUCgZxS8JlYrJhcYwwAiWOQIkPIoVOX16d/XGTUcfgy8fcA4qOKvIFawqvR57JjJ5hWrJnzVXNWOyfOIYBqjTEaDAtx/ZjWzevHH7tr2PGyYCLuQrWExAuaqYU7dCOj4VEzSWrqksPIZlwuxWKkRjJgLqBqh/gh/pIZjARwsBLp8/ZxFWQWp1se+L/pnOE0in00+fXmN5+jSdTjyjLWcRt93zLJFOf8ofkw5ERfR59ZN5ooFAdz3CJWU91EAGKPhVV6//EeC8hYsyJ+JS+L2UeqLRaCCBXWr6rVzv82TwWs5rTZyJQ9TcuOB7Fnv6srSAuCzaZ7fg5xgkDr6jtbdc9hQ40UijieterfAqhGvtibVSA3MzWPD7CeBczOEiAsqVDK/Ck2i5HjRpsV2/GeDU93nA12fv0kLO5m8XxeVqtDnpVec7AtJ8ikQbkXPOxmMu/MqlsfEUP0bbZU/LKvLGPOywgJzeydZI6YxEWhsaqIFsBsOPALf/CHB+MQHllbkJeLnPawEdbdupRuzGMRfLsQJxUfCso77jcl8d9soWH25tMOjFMSJml43jtHvsIkJZOtRl4pzJ+LDevG9HzYQcs6k5U1eoTzZ+uj+kMepkvLUVakir8EVmCrMZTH4bfwQ4ez7Ow/wiWNTn4rI+fuNs7Z2d+8bFjD/sPj1zp0nJ3G661Kau+lCdlnN+ikXogowyQdHcboOGuyWn8TLaUW8xqZORyDD48B8XyCGwW+raotl5XBFtq9dy6ngkFmF8YkChgEIDSw4ofq77LFRn4po+RVqNhCXYsYwnzHvesU9tsoAiTkuRgU88ea37vtfrvR9sSurxb8HQ5eS09W3RzNsl3Hi7ZCymo7dDavzBoNd7/rzXG7Qdyx0lEJrq3IkKYcxDN47wp1iWDxkejseHCdAgBqxmDdQVAJzHAIu1/kkDeC6k/tQT0e8jG6Td5fc3BWmvCof2Ngg/vR6CnFMfiWA3CK/bHg6nRkdHR0ZGU6lUbyjYmTE0n+JM9e5npCFr0VhMzkhPxGA2A9AftPf2hsNDmdx1e22uGuEgNaLgmodSfoZoukxNsScxnk9Hb4Qx4VQ4bO9OxvUAFPzyAXW60gGy+UuFUMeeRIzw4/fIaw/13u2FwL0f5du3b7fIT2/o9LcbdQ06xHCtLZwa6R976zjL5+TbscF7vV4QkqGxER0MRdGlltouztaDOwgjSuz3hnrDXz9++HCFz+0PHz8Ova9T1whHEkvEHvfDl2ulLeTXk/GL37f3jo4M9o+NfRnrHxxJ2YMDVEDmxwAppQFk5w9ponYPv0NYjva1ow6peyODUDjO7s5ZHA7+RunMuXN33hEfRYcQnz01MuZwHBfnTX8qlBQI2zEjQwHZ9VoLF3+C/mFx9KOwXz8IdCwXPw5pgjX8KtGuxsO8h57rGgvX9OQJpq9Ol2wLD/S/yW0cnhu8HRx0wO93ARcywGJ8LlOB+Uv94+dvkz08OjiGrROw+L8pPl9zc7NP2F4Anjlz7s4JAGb1kPj98AD4KNgZx0kkQ/h2MAVBIvRjFofQJd6iQa/v7BbxXcwGX10aOl8DQKOxnTrYkeufbrg7PAo+Xg+hd8I7vhH5MUCDoVSA7PyR0NRxavTPiJXPGx75gi1zkBKcMnH4tmwQ0nyWrx/vB8BxftfCo2OZYdiTk/QHDT4uMJ4cacML8WrqIPrnJz+DIWkPf31Aejdu3HhEbnDMIW69NOSHH5TV3B7Wv7g91S/YZa+crXxyt8D5gEhJAJe+zPZPU2eyUf+w4NhTxHfcYXX4mrc0+6xnNiNnzoIvmy2+02c2k9+dE0cAmPPrDg++4buJ7D69e/d+R/MWXtyH3UTetcXxKl7QwtliPXTOSYbDHx7wfDzgg8+vKc+vAI9+bz085CdA7L8Jl0kR/pYjaR/4gg1E7XJPDk7zxxp4zI8B8hdV7SUAlGc/V0i4NVoOnyvosdzYR7/wfKcdzULfHNiSzXz9WHynq6vPHbhzAoA5P8P9cD/4YJeNj5ELhF86IIhgTXMacM6GBWYv8Ql+t19cyObzg4tb+ewacgEQDbLhPI9LPhoz8IaWCCvR8aWz+pqxsXS0ocf8GCAyAXAR/0z1XwAlquz1X+26Lu7T1R4d1uv78CO+zVby4wWt1dUO+IkFAUgFPJgDNHSnXlH7UM5MrOIRVJa3A8M6it6MUfC7xk/f2wLfo0fwY3kNQkHQzy8TBr3wTslsz3dnst+3hR0oK/nlARrRYaMIcNnKlatWrVqzZs2/fLIkyRYwal9Xa2q6SgU0+sPkB4Rq33gsXz7glgzgkZu0c8L8JT+ejyqLnBUPaT6Otny5Tle1uXMO8wPf1q3PL4gEn1/kAQ8PdbJ1Ausf+pfjQzIzZdzhzgc0Q1AMKJVlP6dRSP6aUFKVKeB3zu01ps0qjAN4vCb6RU003i9fjDHG78ZACsqlBpACtRPwwkXnAJGIlIuC0s6WpjBloEtLzRR0GkEGaicCQ0FA7NTqgCC3oAVWAdHJYN5v/+c579vT1iLq36mZhrb7vc9zznnPe9oajQJ897L3+MHWLJqD/KKsKlWMVZNQl5wcg7/CAKtQgQDkvDo9hrqln1STZEoOQ69Du61NlnJQf7AI9btzZpngZDafJcC7H/pRXCUeQFvhhzdKwi9OpTXsXRr+DkjZLwGDczX2x/+XIR4MKlPwC4nRidUpKMBdOTnHp39oMLGCACS1ZKvBYLYmU+SntEpAXse8b5894Vb8pGCdk2O1Kj/1GEZ434LgQwa7pR9367MvzkxNzczMTG0qkqhBAnzyD7yHyPHp78ivAS/qbAivc441HLD/XiQiINfPdf/z1OUZN10lqvmV6GhdxfHLXsaaNmdwVvgh4oMR25dardZgNiFYCSarjaICisfWgwNut9tsjoqcpAanGAzuy0yK+hBNrAxm30s/GYVykwVnGPChDTQx55CdCt1kVUoan9QZPrgkJ/0dEJGAkZ4w/HdCDIHK9hCerKbFnbqMn2vZV3F1BYPZqgBabQUFBalaQ4KGKMxUVg3mKAlIgqgL6ReZkF+uAYBrp5RZhxtY+BGTjCAcoipcfpYBj/6RI3Jk4ATGP6eKxfPbjhV4F6UoTgKGC16L2fi/EuIJl/jp1/GyWTQE0qC0dMIEPxGTaFtrS0F2dkEBAINBJCCP0I5FKkCbLeizqwkRdAJQ89EupQCHhrgA2Q9MSgKEQ4chOIT/B0CUIKWkmwpQmjnxwnXoZvxKDoy0fwOMp2wLiFz9P84MnqHOIa/hZavj3nv5XQxMxxdNJjPeVqOMYU7nl+Bz+ed7e3v9mm0AkbbpVbe7pQWAki/BgCQkkKCcU6wEuLrANyT2P9UChBHgnlQDQ0VwWe3ho0f/4CNCTy9V4gqHLBD4UiUkJESZoIg0REUGNAIQ6bQH8srrl8mnXGf9tyKE35kC8OJWAkz5FIClpa/O4uNpDOhWoWDQp8Kvfet0YWHhmAYj9jaAHVSA8FMBmU9PYUINA9JiPPk+AGo+4tmg+5ch6Ud8zUqk4BSmEQVwo4TioAKkwUVZFDjFe4kkmCvR3lF/B9xNIcDQJDa9hqdW6jh4TVguv2knwGvFENiJl8rAJEyAR3ymSqjpA4Ba+PUWcn5dxd1vBMB7EbuPCzDPJv202lQaOSGI8hDDJ+5MrJiGNQmf0N5gx48zAOQGhh/zHRBpRhECkLKpViB6GH6HummISXIG5otKXB1cKryZlt8qSiYyYB9nfX399tvJsOkrtQgvuTo8193Iy5udAN8OBhz0YYtKr1UBEwiwvVAFrMR9UkTAg91uAszLy1P99ODjoTNVj9JAIWqoBDOtTgZcXUA32n9RAAHE9Qe/pygQDAC+uDkkALmHSw4ummiMNiUrJeikz8jvxRdre0A8vSknwNHuwVcRPEjsyAKhPG0UeWTkrt4B8IUmFfCl0pda1yrNBq0ERAe7RgrLOACktWsY4J52THAdA/BjwAA8tb7L344/FvxQH0KQt5owxC5QMf0mAEUBSr+vnzrQ3Ew9zOF7kQBgB4YYagPe2YBfEo0y9F5IQeq2gOBjwMQ++ySenyxgD5L2GNNvuwN/dvXUZcTZWQiesT0gn6+TFdhqM9u0qagajSYA+HNZWU1NDQGaHrsvMyKgY4wLkAHVodPl6j3d2Ojp9wMwFS+ZwCXIgBrNV/j83VMAJD8JCL1vH3nkkW8PMKAMA25gErH7AEizBq+jTRoeK1Dq/vGRrX6flgDlvK/2EAMajQAc7T71FnYj2A977rszbidB+9vb16BY30QEPPO8CICvMSA3g3r9/N+ALxeCv56g/d5IgPEOHxcgYuMfE0NnI2fEQPXIJSgBcXN18E8AYgeVAbmDyW8dfhAEoORjYQBi3OxGFwCQosy+YpobGaas4CKJAVeNuc7pJkAjYonr7J7EA2T4Ydrjg6y7U6JJsPX5fxSMSHhGBMCXAOhnQG4GtRV/zqWUeZdOPPwwSjASYOsaFSADqoULv0KReXq6jWvCPSxaOOG7e+/t+HNqamgIG9DBgMATgmGAXILY0+uGXxLYZIKu1fCwLykqgcdbNXVYxrqz+40MWG8/Jfy4/MSB9HIdDYT2F54PS/D6BoI7AcoK9BHgA6li1SwGmJHc3Jq4cqPxjW0A8UneUAG5h0UHny5UsrUWZdPLHk5iQIybv0xRCYYAfv2ImuZnkbAexg03AeIChQK6/BgrOAPmKDmCU5x0I0qA5eXlKZ1Ufy89mPP+Sv9kG/shlvQ75OJQpvUjJuSZRFkh/ivAI2MMyD2srub8PfxwLF5UYFIkwKW8AKBNAfSfLBMpLMNrGtDDDIgIwPj6AKCchL8NAM5FAtz1/oAANHB4iZkAwPFCTmPjkpmmQK0EtALQWtBPfuX1rW9RAeZ89UFsbGz7ym4lRgiGBr+XIyPVIE6ARAI8KwLg4KxZA8AH1B7mz7p4kPz2M2BmRMAvWhAJSC3cfhIjJ4ZOEC7SzM6ALBiF1/wuPr7+NwXw2UiA337/pgT8WADu2rUwgDmYP5Me4fW+Ro91QhkFgvjftkiA5GfhAizd9VV7LGf+VVUw6447sDyUWb+DZ2cpeCMEiXBHwF2ljkV8IgLUKvMwZW06xbi/w74zIEcZOl0nczkQXIoAuHu3IxwQghJwXQFEeQLwYwFYqgLqRTAq4ABgavYILxMgyICpQYDJEjBFGQHnY5W0K4LxRVnro3bHkafVdHTUR/PIGPhWCdfgzoC4v++sXsUo8gCVoCGwHjCvLk53T+MxDnVwOGA+A+YpgG43SpCHTu2v9+d64+K8ZTU9AwTIYyAL0p1OAHBo5kX0MAMiX0MuLSsNU/EoA8IPCQbEIhB+agwARA/3YpXg9UIwHFCTTBGAFUeoAB88BTp3jDsf//pgRQDG79/fRjsih3JKcvD3IcwxRVkk2BnUxXIq2R4QN/j1Xh8+EZegXt0HSMo0PfbDdz801DFgVCTAJQWwxepssWlE58/27KNvWlm8TbOVNoCqgHRkT/vd7qKMX7BzOjTzzBQDsuDR5kfSLfQz6+tzDMh+DHj06IEDElArotdr6AxvQTtmOWNR+T7PF6YIFciAFkv1q7wEXIFcckyduZgEnxOCfMQn5BBQvFHHa2xV8KpbuAa3B+TNBNzgOzyvaDSiBFGDTAhAeqgLPpqDIwNOrwnALzHn0TxMjep/BX64uo6lNTMBqosLvs2bLyqq/5MKcPOnn4Z4IS0yBz/EMbqB3oasBMQqG/uw02ZMSCogXRQ+xOs/aRQnuRRAQzigxWLZV3+KCnABHdwyEYNnC7a9IISg/EKdDEZ8C61vEgNdfO35Yi7eDrCLtrNwh9/h9YzRHCAFGRCC4GO/iIDdPgFIq4YWW1QmP2v0d6YUFXV0drOfXFtoDKjwfgD+OAPA5Z9+2uRBUBV0GIssjtEfscLmAoQtAO986OiBpwD4fh9+nrcOOFqMqySoXyyK5/wj4AIV4ClMIV9OxNDjrSgIfvCaECRDpA2hf6OpD3boohN1OvUk2Q3nSsFIgFn8UBg3617PlgEl8gAidlJY8D6O3EoQ04sE7PPBD7HSsqsFgI+Rtm+gr2/0C1+lzabXsx+HpuiCEaMx60f4vfjMTz9hvwVM6k7g3HpfX/cGH04QfrSkZsCvsYzp02tstDYVodU5L4v8b6TsDgFUL5YETKmng5+8hrFOWAHINciCTNg2udLfP4+sTFLfHHz6iEOn06WnDV4sAM8+53wMg9sCplecYsA2r8fTTzevQlDdzZMbgZKPAfcIwPQxVCADIm6bAMSSbXX1BP6JpoOfLEDcu75hNKbPwY8Bl6kEmRBaz76JE1pUf+JpkgC8G34C0CcBKTQPU9YG+uodHR1fiPmerzvHSo/EBKCDCrCEhsCYCetj97FgrBBse3VlHrBqVtoYcBCn19PS6l9gpev5SPr2gGkVky+/R7c4GZ7G0/N6PbqsgARBqEZ+KnUT2FalAnYtygrEIwAzAFmQY5a3p+qR0dqT5eXpcwS1DECUIFOxFs7GINKPAbmDv8158HjTbEKCAihLMBOJ8s0uDkwvYrpKFYCa4HXgvn37AIgCLOmPjc2fIEBOMQsKPZkPJgF4ZLA1DX5ZWZ8LwEv5IAgEt5mFqQJLnsCTq0baQdHybh5v5wERv5PblYKPAdHBKuBJ+PEkgmAeCRI0m2kLWsKjQnDr0FVenpX+PaA2CXAZ8wjCT0PUQ0VBfujwZgCul+Qc131hMEhAhCZ3EuR3QgxaAUgJAyzdhU0YBRB4nKpguL1IPq1vPrOgAAEIvwDgFVfKM+kSUO4HxvHBwHsdDk9jY6FnxE+ALpcLhkoAKBnYjwHzGbDa42dAdzLHnVcJPyaUB33k9pIrfwSAaWkbqDM+isBNLAIulS+0AHGffKikTWfXG/QM+AAlSJD9bDYMPhJQvRcmwDjHAu0iYBKumphwqoCZxQE9l4v3FLV7UIIZKQSYBb8A4K2X8igYGZDXgZ++hOnHPttVSDnd7yfA2tpafl1y7F8Lrb9QwH4GbFGe47lbzIpgZqifhv32fgPA+rQ5UL24rJxAUPjUMJ9agE82Uwc/8kTJE7ouHxUgA6qGTIi34dGR/iMDCsEGupwATKlusi/koMUA6J6IAaCad/bszd+zJ5U7jluOAKszOggQCQBedIEcBSO1MABLIdFqmz1ZKAh7x/2uWhcEEb+v/7RHeagk+BDDO8UA3EuAGZ4tv+xhIWhSAMM2iFNd+fnjxwBYkZ61wY+NOFMkKCP9EGpg7HTddu8TAHxDq/gJPpUQH0fhowrEbxlQE9XgbMB+YL2uz36c/AjwSwmYSafR1f3zWgQlmI8Wrq5WAdPSFED6Ys4OgAuYzu3myrGeQhHP1kjvZ+Pj45+NjGxRY/+uMZNGwM9QFQCs8Az73snLq8I0EhDEVIJkhjdwcX7+3p8J0KLLmrv7zrvfRAkexl9cg+F+DIgG5g6+HYDpXd4xCcgRhBylJvUMyFHOxug6n36f/e4KBRRPGNivtvbxxxkQa5uR6mrHYCtaGFEB8bUI6uGdAU2Vvl9rygr/np7FykoJSBdcAqZ4hrf8VVVVPApKwhYMS6F+Vej5/M96jlUAMDEr60k4DR1Gnjl8eHnq+7sfCujJ8EYhbbXqcIuQ0eVtLZB8wYaqKupREZSABw+ViE38AKAsQLr3z4YeQoIudHArKlAAYiXzkQC8GYDn7gCIJwcAhODvPbw7JFOG9I2JMx/Ex348CQtAo2d4uL8KoSZW4+Q9Qjwr5uE8sG7ECHj/sRQAokHmSGjzMIcJQ+QQ/EP4YZ+mnr7w0OP19qto2fwLf4f0MwCloDydJfzaxglwwin42A+jCvk9ikAwmzo4QwCSn06nAuJA5g6AOXhyQIBwmv39WE1ZSGqaBioJUNafnodAAkQy8ERirYpCt3OyCvOCUgVw+oGR3Pt79mF7JIMESWnqcCCb30s+TjP78VZ1BSa5/V1er2e+IJvzAH6Jv6QhdzMADSGAytesjq/QXpYVFUh67IcGTi1gPxasRQHG4ot4GQC0k1/ivwd8733s23ba6OSTtW51tu+OHmyyER2S2zO69AOf2lL8cJG1ooMFYAoAt/zFxRBEDcq4JR/5cQPX3H+sywLAiiykmbIpBZeVexLJBz9+VnK7BYDxGQA83Z4tE0GQSjAUED9JfLxe3pMMQNG/ooELXMR3zz33EOBeWsSIIbCT/BITgwHPwf3w9oCH8IcaBaCTj+Nmzg703RF97FhPT09TU1/34ioOheL9AvWnRQEy4DwBFnlIsPhvgl8KPOYTfuM1ufcfyyhHjLzMOgCkjd+k4PcEF+5HG63prGDxYuf+dLuYMmtDFRkQCS5BNCgDMh/7WScmcNAzE5ENDD6EejiWpxDRwTr4Rf8nQAsAK/nAp5W/HLM2+8U0srToO9GA3RgAqn4AJD8C/Iw3kvYNIyPFCAzdVrWHW7j2JN/ez7BRff/9FvIzZtAqQXeA8sum2sNST/BR+FlnCgPGAxCC8wSIMR+RioJQNjGFb3w+iW9T+KrAN0HlgXADSz8GRAGOO9DBg+hg9pOAF+4MiFvuAKD4egx928HUUEcRT+RkAwcAR/j5lmWYBfcwIYrQKsbAKqEn+ODXW1YDv65yBiyHHwSfIsENJlz+bUPYCT3yU58V377/Lo4FgBDsfVxEQZTVGDwQItTBrk8m55nPbY0hP2uD4IMfGpj9BODjj1IBKlNIJ/n9R8C/SLu7mLbKMA7g8Xt+69YqmVcjY35ciN8xUeZHD3boGvsRNKnWiWiDNgvVSE8M7EaobmATIRiqTjJIJ3GF1IhM0cQZgmRbDEUiVzrdlTNhhmjmxe78P8/7vuc5bSmC/qdxLHvpzq/Pe877Pqc7ZjIEuBuAu7GZ1YQc3Q3EnBA/NYO7z4EPOcGC5460tbWpMsQlmOlYT/EtnocfXULYryNhhyjhn6DEiH8qOdEz0xeJNKs0Wu9yzv38Ksc4aknsm3j7SYgc2pIe4fL7dTfrvf82ZhLnQfHTFUgFCL/IFBUg+P4HIDpSIJSwHwpQnwDVGZAAZ/6Oc1Lgo9Iotpns5R+UVubD9MUVCQU4r/0SHdALhb8I/3QGUEB0Inxn4MdBAarETyjBv2dn4KcV4ahiFIHIIT+woA2NyYtPdr/9jubjZSlWgLiAOIDdugADAByAHwMu/DdANInIsISP/AygKixSmSc+LCEz7+rSKBIXsakfCPNNL7+u/PalGRBD4gHwUYIgNFFybj45A3LS75rMFp91UkJJiGoTj/+w369cfO+YrQBXAjfWXH40gYuRSJeFTkIv/DjBpfUDZhTgwwzIHyN4DoaIWnHKEgZ+DEguswSYQDpUZWDZvVxc7G6VUJkuzqL6wAe/Fov88E8CA+0wBJnwjzPGUPTOGj5eRMcaEx18hz8jK/yV88XFGUeAFSEohkgrXzto6r6DT1XoXQBXAS4vqv4EcGYkEomk0QycaNAZeG89gP5VABHuE/EV37xxsgTUBdi9PA8+BkxBUO9bVs7PLnZ3a73F6fPLwNN+e2z2C1gBAowXvtA56T/7h4N45syZP1B8Ts42Dw0NNWcsK9MYKxGkdery+fPnp1fL95wjtHYGHy3CzJ8feZL6B1hAO36QB2AuEglQO9oBzHk3BvjC52/uFkDEtKOk8LGCkQKc2Tev+JDUCT4mCmGBi9Iioa/YL23ZESsQb8YmsGAAT578yPfozp2PU1hNEupXfphdgU56OkUGr6LDb4sKfxACMbrqZhF1AN/GugUHwtNW75qp/WLqTwBRgnYCgD15cwr85IF/B/T7BRA3eHdTtJpEAFF/UoCzLTbzcTLgE789Toye8UtZdlcwYqV/6cQ94JD2A+BHBhCEgvh4sB93vYfSViQa7rLSh17qRA0aPu134MCBUkEBRA+6+032w1WD71VQ6w987CfB1Kez5XQg3k+CfQqw970NAh7VgPsfqgZ49A3XBF5cabEEEDXIB1Xm55IMqPqzCn5UvdVz6HncQSwQXjkg/IxhXyf5of5C2NoXrPRnr6EGO+b1SYH5VFhQETIjHskCwB9pDbNX/KDHq3DwueuPAPl8mUs1smCUAee86wIMGsCvdn3AXeW3sINAF6UcEHyyMOYzYMu+jAIEjBJUhyXHJdkzn9F+XVhkkeDwofbmxngE9YccEEAX4dnh9mQyqeovjLe6y0odehqdFRQhvwq/zEcURQhDg9gz3E+Evz+CtO7HBCY/8EEPfOwnYcBnaCH4bT/uKQ3rSTxe4wBuqQ4YFMAn97+gARHuRQngY/uPlvkV8cHLVIIClQwv7TK8VhY+ScFKGb8wATo12BgIU/0hxk8Is7Ek0p5hP2Yv4KExT3cOxWLxwD68iuYTQhgCkZLvGR4mQd1E2EWAL4tfKR8BohvIt5RkEtMykFNzBwNeuSpgUAOmAfjiY0d/pSYAnJjQgdQ/k32tmsAt+hrCV4WEWhDOt5gDk0M7WcioEs3g/BciCsTfZaePtUMwDsKPTAGK39k+VB8SD9iRKA3iUVHbSh1ux2Ul1pya/0LB44cQMiLSNaUFPy6q+0ZtdPoTv1JBBnyRJ3GHui/MrzahStBLz4paHXApFAyHDWAIdzQ/fwubWOzF3IbSVHH7LeNPaal9iFUIQ7Axxl9l7JYSv5MFO93BSQfgFzWAXE6j7TH6KEAg6iubwX35GPMN0TVH+3HolTpinUOUeNoqALEMUH+yLqsF4z2zKEI2bP2wWgFCEIDU0S9acQKcCslleG1A9K1t3UyInjj39d7Pf/3AbGjJUSLT19TfnpY4b4UDdtgfLNhWut88biiFRQcFF9uE3qukMuCLRLVfE6UhBIzhxmaMwZIm0hdVwcOLYqr42mOY8vh1jOFBelSXhW/bOMShVmk8oROnNI5yGkd7ekgQhB3WLKpQGRpAN6Fup+KWyMtUgmmuwN4GyoinDPCCckCcXEIGMHSCGgK/md0sx60HPuNXRP1hX4uD57+GRr3HcMRGbQAjNuQKjg/I4LPAByIF2KQT7MKYVFyexUVjcdlVxZegQV0YIugcf4heKgNEGmD+1Wl30kmCTJgIZHNFESQv0dMFyIC76DpiJwhwRG1FBPDiaoAhAKqGKgFSs+hIK6VNINmOozdns2pflmqGT3PGDsGPZhc46MA6VNT6Bvc/UHsWShIQ4ucQFiKWelocRY1D6HSpyaVoTXy+pmCUXotGrpW8Q9gRiIzMFmkqt7IgIuWn/BiQSnAkIIDBfwfEUQkg/JAT56YXSUoURQ9+R6ZX1LXW4rc9YUWCBIj4/aGuyicP2nakqxAOotQRYBCFz0lTQ7ggg1xjIoUQIjXb4Pe5g69DBYxcM3kQ6omcyNiR8UUqQZ7FEuJD0FLEPdFd3JJJbQCwTwMew1sf5naluS1cnGmtDNp6s8t6A9DCp6HGgB1iQA4OK8hQEjp+/LICZAxfw7ivFKNiEK1a+BdpApOfryk31+Ae86jvUYqqSAl9ze8lJ9iXn5oiwv5RehBcvghAupAgZXxUgC+iD9tNgIENAUYB+M03L2HeBF9hPdmqL89OTxeLi0dUFovT08uunUYK56r2IXqmkAF0T7OSKEDjN7DgGYSADlvolDAQIFuSn2/Oc+q4H7+zSnZSzBcuyHD2WyIcBiCeyvQzAPViGmHH7ldZDz1E/lBpKwHaPVO51QAvqgKITcGXh3D96nud2bQfQlb7VlaWVVZWIEd6ys82m4SwA7gKHkE5gGHC8PnxLLua8aoUbnNVi1x/OBLPXNPqcIyHf4yhuxSD0SwEAYjrzGHaGr/sFuxWn8tC+1D97dynGDDy8dTYugGjCG3taVPQQbtZCRebRPgoAfJrT9PGQgOW4bmENCAsgg2+7w6eeoAwfIZA4kKUISD3NcCcsjQhv13kSuMuQY4/mgUgn69/BxduxqOZoAI/CTpw+FoBjo2NlwJef+1agH0RK3PopaEYbdPBJlFcsjqVL60kJYP6I0DjV2nnBqRSdf5+qfd4085VY4bgDIaw33d4ZqNKTU5GVRleCRgM9QXUspF2xmhncUMG4RbWjBuRe1qrAF5NgFdUA2TB9OGXhiipE268KmlJJFX9RTDFjJ/oldWWAgzSb5xAKZks9VZFYEAI+vnyMcfm2n1pfOc6CAWQzwTRvo6hdmwAfwTQLt3UQrrBNZ7N8frGpJiLEOBgJeClVQFZEBuJGK4K+NGcmRe9AzolfFanrj9sbDVgbm6A8cRO4pQTnml8Siwwjb8zuzeJNvDhyJlvYFA92UAID+a+wrD1AmKFT2sh1RY7RhWInrTqqtKEBRclO8LXy+nZb+0IMja4McA+/INtl5Vu1nuAOHoCzFcZtEVHkxTVpFMzuCE46Z0cHPCJXiVgaGTBqSR5qPGqhAzImZg76PBJJhdgiK1z9foVQC5AbA/xnoMQpdaGWyJMyJ/nhZadDrCaZGpwcLB3fYAHswQoVRhIxJIq7fG0Pb9vD7cFBG/e6oAxJUGNFQaE38ACPw1/aW7806+0n8vj0YHe3NwnNZCojGfyeA5jygixvhuYGBlcmPRyxVbG631v6fjc4PiqyVF6ae0tfn2HkyRI6xh9b6SNOtBZcOHB4dQBDARsmx5Ans2PkZ9/fYCeBT2HhTATH0oaRDzJN4VCU7Ey/aPQ4zSmtZ/+DI5HnnB/sDKT79WUQHhrSr6qMqZMvLau4h045ampEk/N5EiDBmS/vlE+ILoMH+Wbc3vhtwi/rsDwxyUZI78R+K0DEPG6BbHwL8AQW9PEKBoiVdI+mlJ9KV2A8MOhbSA1O+68/YENxrvtrs231W7oVQb95gqCRIfpT578C3N474PIUfIbgZ+N1tWYBHpcf03/CnjrA2WCaguFRNXWNBDAFj9RHnSloMd8BnBgY37eujs3b75lh2dDY26vv2Xz5s3bt22E0HO8F6de+DFgPkmhOdz2xBP72/R6pStLejmho/D056wFeL88AZkxBCRIb1sBitaqodZAyW8/viGL2ttAgdRvwMKzYzuPuWbzPds8G2CfzA2EDWA2yaGVYFsbL5hz8IvAL4e/45+TjPcOuDpn1QGvvP9mqUHD4ewq+FvQEsAVhSY/23j9naqpq2cITn2dZ116t4Ocx2zi1NfVrhsR/4uJLPthlinA5488orI4bvwmGpw1tzSK/hXw8isvubfWqXW0VSv4fBJVzvCk5TDFBX7aHA3O3N7qll6vx3P7jrtvEQmy2Fa75hgMqt1Wv92MuYyzadN99Tvqams8a8Qr/EtZ5RfSy4vT2m8kAsA8/EbkaCvSFFwL8NJ7a53nIPeCws3nK48WDJKgJBh26q92++a76m/bVi231d+l64ghrkJYY/vdt+2oNmZH/T083dWYq0zIcBO+0faquau+Rpaa3zJgKBxIasGfZ2YWczav93Deg590yHxlXSHcGa4A5ADwoisuveneOudl5tB1Q1x65Q0SAiwVxE9PG7/bcWVYO9cQnpa44YYbrsa/BoNSbYzRwwgVMwzjqsZ1hq0Z4wIMB9VNvueTycP5rO349fqNnkQaGnMowHJAU4IAvPjaO2pldT83wMUn38wdRzBIMfM9tOCR+pPjrTy2TRyRuE5FMDjVxlyGMRhyvYoZxgVcLdfc45yfTnMBYnbln9cZZj5eL483VO7epa04h0KuMoV5Dl9849Y76lyr29O9QeebrdLgMKdBk3Bu8pSpv7tIjw+3auCg9a7fsmXL1q1bt2wBBiqKZmX1yJit11KcYTSu+tBNjuAn8ONGrj9/TOeHfD6v1ssNDl7ljrBp0Jle95V0Y+QkeNO1W+5wL2lrlga/88k3c0UEHcKJBf3+iB8bVQkcXBI3IsDYajBuWHMMBm3FkJsoGGcMMXD1MOzdWnBS+2FV3HPs2I8mg+TXJHiVh4z6U6m97wanHyiAF16EEvynvfPnbSKIgjhnwCZ2jGM5iS1bFDgBISRCICGIhhZR8rUoI0eioERCSLiio6JJRElDyXdh3h/frL235ACJLFLmEIWlxd4f897tvIviybi/vxemrC3Npi/DNBsSLB82zN9/51libxf4hJ5sN6UNqK/0hpNrrslQGKIqoRprmipZpusGUs+Vsk55tGk1/AYN0JPtGyXneqdmIb2VOC79z/m1tsOJNC0oXXC8sb+3+rVZ+Ma2s4+n4UAPKu8ix8evZ99PiA/3D+XnjSqhgWgsJCYAcV1lMKQqocQiXTP0Ne12u1wm66BBpbRRrk/NE+9f4eeSfLb6JcgbxyG+aCQ0Gy22d3hj3QGuhQBxG7Ei3niwUxkKtkYnbyv0qWTH+weqF/xQnrLdhIBB4IGEgOhAoGEwQGNYZ81VEddd85KOBbZg2L1jtfUNBwz+4tT5fH4qktkb2a3q89fSf49vtta78Tf5FXqSQRGDYBcI68eJONneNHyoNDVYUk2zUQck1iDCAI1fLeKaRqPh69TBrngRuPYG/Z1bdkSz0VSYNILOZ357vTQOm3044fEMu9vuDuzbH8CPAK2IjeD20R8i3Lp9L+AnZknIqrbtJBqmkiGUXqPe0yXyockQC2OxN/TG+1OPqi8q+JEe9HG0FSgsL9hDK5inGBKkB/toGK0j5Krfxnfo7Q/VC3xqloQ60NUFvMJkMEADSqyh9QoXIerKWO5rHNLu+Mc8E4JMqMTnmkUb5/FCDLgRVbAXsXiQBFtHmk1r09u8c1/sZ/zGwk9LLSVwID2ygPB6vTVX9BK5g6vk/hSCT8s08iLiB3z0X2pydKDlheoa8juxqwgOx2i5gvAGsund23vnWxEh/74d/lr6BuPhBPi81NIqHISLFJMivEDknxBqqyMEpwuCZwIwwW+W5Kf+0wI2A/JjkCCqWN0+UIQeTe/tPj44uJvWw0e7Ohkw+yk/sZ/SK9IiCH4OOKqGuKbeOic44cBp9oL8BB/1bjM1xD0s+eEMExgw7oNNabkDi1Ut5vtUxGfobQk/tD/h1xF+v6RAeEskSCO9KK0ivkRCEFn1CT3oACN+owXjUaip9idvT9ieGzB6c38nMWHPXAiGCvFcWU7tevsDP8N33nb/WPX/NToDBOlBEIz4PWdee3RvSdqeUvyowkKdmlARMqeHyZx/licDwCftDwZ3fldyUZn2n5UeBEEC5HnZZ+UHQXF5gWGPXeeX3p41DEPoDAUic3p1xGfIH9rddy0vfrovLeLBPgfv82PoM/RSdTo7+VH6z9mt1tfA+dGAkRYEFwh7QUyvMRm4preP3PiFA6dnU4b8JTGUjg59WM7y8vrqpf3HHuwI4UJlaEGdMT1O+Az5ig//P7nhMwtqFxz33YNpTZWf0GN5+RBtkvYfVUCWq8KcPoTSGd9Cb1Pxuf2yI6jPLVDESYKsX8UXDMv7Xl/YYR1/FN4K1xbRlBE9qWY5ImlkyW9p4GRVnMwbnkdBz0doUM+maDVvjwxI8OFyUG9WXCuDgSK7+uXUuG0E0x7ctHGIB4KxTdAg8cj1oL6gOgwbiXyfGg00ssXHw6C0QXhwq1LTu+DnB5aBdXWffSs+8qt1Kg0DvqjGYCBbfMHcHQRlbLyzcz/Sw90wj3JYbia5Sny1lY7p6clAdu2Pe9GzjBHsIhtYRo2fOm+r/QSfcAsnb4yTtRUn08bStVCON47KNugEfVgSJ9Igj7YVnKrxtwUmdEjK/+YL+cOzTZQEezZvWo8eO3seNXwGztnl3Z/+gZj1F/MmIBStPHWG/ZwfwP1PBfZPVE5LFkGf8kAq+CxvZH5PvBAVJOjP8ZFN7eKjauZRwVdke1e8IHnUL4P+cDWR4ujSyXAckossp9q8yRJqnEgv+dUoY0MYSeNGvnk0E1k0KCOqX+Vj59wTVQZizl+LEmnOeT4jJRPq5Xk5oRoPTy/Txl9TlNfynYZkqBVSl/QuQj8BPazivNDIlckAAAAASUVORK5CYII=",bad="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANgAAAB4CAMAAACn4swxAAAC8VBMVEUAAAABEEAKEDoJEkAND0IKEEIJEkIKEkIKEUEJEEMJEUEKEUIJEkIIEkMHDz8IEEIIEEIKEkEHDz8IEEL3+PkKEUH8/P0JEkIJEUL39/gJEkK1uMb39/mOkqfW2OH7+/z////+/v6tscEJEUKhpLX09Pf8/P339/n3+Pnp6u77/Pzt7vPd3ufX2OKAhJxHTHH09PjQ09uanbG/wc6AhJzJzNZuco7MztfS0tyIi6Pa3OJ2epS6vMvAwc1ye5L/////ao0uE3RxgNv/S27/V3n/T3H/UnX/R2n/Z4r/Y4f/Wn0oPLX/XYD/YIMtMlb/QGL/RGZvftoWGTJaadD/b5JretgUFy8KAjlXZs9ebdIwNlo3PmZ2hd0YGzVjctRCU8L/e55ndtZ6ieCGleU0OWCCkeT/tsdPX8NRYMvW2vJUY83/dpp+jeJlc8n/pLU7QWr/c5YoLU8bClYNAz7/rsAqEm0aHTjl5epebcf/i6//hKXLz+v/f6IRFCtOXcohDV0mKkoqPa0PEiiJmehIV8b/h6oiJkNDSncjJ0ePnurgXX0bHzsfI0Dk5vf/qbv/kbX/ssSZqe8WCE09JzARBUUlD2W1vOg8Tb3iV3c/RnEdIT6UpO01SLtsetH/lbmfrvFDQqVwQlfBx+9ESZOnqbksNH5WZKnp6/cuQbg2G3ccJFgqMFP/m7D2U3cyRbnxXoNibr6UXa02QW8TGSDy8/n/kqpPH28xL0jwVnsoMGH0ZYqpsuavebv/fZiGQFWapOA5MIvMUXYTFjk8RH21R3aPmtylabErNGplNEN3gtP/t8lVXrLuiKxRTaMnNpRYVnhLVLpiZIEpIyzEd66Qcb9XYrreX4hnKHSnT2jNao06EkWCjtOMkK9MWpp8NX2YRFocE0pGMUKytceEZrdAT4OyZn90grdwfrVMVqpAPJqSV2/bdp2aPn2YgdDvdJioX5iENG7/uMtEF1n/u8x8f5eKVo5lJl6TlaplXaaRlbT/vM5Vh9ILAAAAP3RSTlMACA8cFjCIgUk2WGNQKiFBPXwlXPdo/nN2xW22e7f6efbWyG8R7sKuimyZQhcospx0dL2sje2moF5elnVR0zhFgRY8AAAa10lEQVR42uzXXWjTUBQHcFsV/FZUCqKgQrXbdKD4oIjg8LM1Dq1a0Fmta60xmvrxImpFlFWl1aEy6BQTpRW6gFBHWxGsWIYWVhHECaKUIYOh4IMgvvjoOTe5vcmWblPng+D/Sdfcs/O75ybNxvzPvx37fJZ5QwQ+rbVbLGP+WpYuG1kfkJE0srRu7YizoAYKWv4SbqljwS80YhmuEXudbe3IM3uZdbRhbIPBNfLUWoeW2R3kslZhmHTQrZpnpxX/zrxswnDJqdfVWK1DbLK9xkZcJX6YFHOabFHtOFpwVF01mit8ethWbOoWs0aqnsNWmfPxfMRXPRJXhJnRgmrFvzKvsE/heV/7EElzKMPQRqrOS5A5PpnM39TnTiVRjL9dKVPZ7Nqxoy2z12muJK+UwwXR7THErWXdOq/Xu19S6MxIIyZ9WNTxd8iKLynE7xkygBj1p5VijsqWU9mon0OeKwvxoHedSbwYv98vetJUZltFGzF1lbgBLsPk6NS87dwg2WjOCxPmlZKQD4CrOkwUgx6JK2i3hekWL1PLCe2+ZGsSOeVPLJ9ZylFMyzqFx8NIsmg0Z2bHRkjyXKk1WQSXJ2UeGWDBYMDDnaZbrM3MMLDFazVYqEMgN9iVNtO8ARVETAOMxjFz9GZWD41QWKEjLsJ0Qj3mrfzAgQUCIsC0rGaNmMLI8XvdFTPLW2RBNR3M5pgKBUdnZBYjLO9HWGJgE7cwsafgGgCbOo00oqtnhN2BvI41OJ0uNU5IgxqABSB+A2wiFKwqs5jH3GUOa2BxkqYaGxtdLoCBq0UHWzl+gMxiCqMloIaLwna9BVUwGGQwyOw5juVr1hhl9UuWLKl1OBYvNM0cRx18Xm8E2uFHjjmzh4ORprZCW0/FIMKCOtiM8TOnsT4QZjXA8MGHMGRthRoAo7K3QYzopTCmq1tmp9Oor6lbvGD4d9fFdbXsNXrpfAc1mcLYwLCnLdAWgbVE9bDp9OxUgUUJzKWWgBogYzARgzCTt+wlVkt9rWOBbeQv5o5VaLMvYRvBYMVWCmMu0tQWzNan6DLAVkyYPn6qDmYxwsI38cGHMCyxQZXRkb0lLr9X8uXjkLDQkdMxFtbWLGb/tdlyuZwghOO6JAVYgUvYpOut9ppF+jXqijJXEExg2NQGiClsyvSJ43VnEVzj5uhhLZCDANuq1dgCMgrzqznP0fClfKvJiHJCvCjzac4kEl8qJHOVKxfVLKywwsVQO70sXSiQr+fOxCDXJuzqKd5h0WhAD5sAdxmOzBx2JwB5HNNqbNq0AWEuA8zr3XkYE/FJCse1y4KBZsuFixH4QFHSks8XOcwCC3xSWoGufWW6hq0qwEbAkkjkCFx5pNnvR5cRhj1twhBYywDYJBjZ1CFg+NxDGHFRmdOpwbws+Is9OyNpLl0WWIfhIs9xiu/IfnkdXjIonuad530KJ5E1zJWHVbxcDorGNQhjA0PXRgjMbPDE5s5C2DQzWDgdag1H8QHxONZIimBAVoExlK7T3RInxdXD1ZE/rXDtfCkgwn5XjdvdfF6Cw8a+DAVZkUJw+Pz4cVVYI2lp/XrsafDE5k6eNAGfixWY1TqWwi4iTGQwUoWOjMIYiv6j2adIZZDlkMWXikXRoGJ/aujSfD6tyFSW5Dm+EC8wFlvAYGRg0BCkGgxuMoBZTWHJqAh3EcLARatsoTD4TXJn7+29TZnb/amQu9LHfomDbwqek0JFtu3k4lRvfyazt6lpbybT30uX0DV8K5lXPK2Uk/mgl67BJU0HM897O90Mpg1s/ebNm6GnqrCZ1WF+hN3SYFhkI4xMg8mp55f3ZbNt3d1tPTuuNaVk2ugekJ2Gbc8XKcvtCfVmLl/dkYXL4fpueHHN7rv2oL/T464MmguhLA5/uoY1lzt0//KpbLanrS/R19Zz9UFvKqE7iejCqLDAr8Fa8Pnw+BaeRHBBYGQAcyHsa0+2LfE+9qQB86TrY/fj/pB2xJrhQR3xBkS67anMhWy2L/Gx65aLJQZL2k72y/Tu9HF8B8yLK4TzImGlmrI9iS8fXl26dPbcgaMn3r3v7umuwLaSgW3fTlr6DZiXwuj2wFlEGMic72MPEUjzJPasr1dWaZ49ezyVA/j8Kkz1RewhahrV0NfOh13P+vplN5WdLkhKKUlc7s6mbN+XV2fOnLl0Fl1HT+za5Yx1OTE4MISBi8gQRr6gRw4LUNgmPYzcZGaJPbsS0j8asL+9O7Ld7x82OLV3IJpG+t7Z9ex4qDIzjjtSLATJuK72fHl1HVjgenT90dmju3BQGArDgWEILPjHsPUUZp6uRMqthrB6T2bbPj7Bi9GFrC1a0Kb+reCMwRp1F3ZHdrvJc1bOZBOvrqPrzN0b379/e3noxrGzDS4SdFHYtm3bCEwkI/sVGP6Wn6za2c8LURQA8H9t0Na0+QZNb6WNbSpU02EMKWEyVEQRD9OG2B4qGiGpTGJLiUbFFmvFvvTBFprgs0aIeHLOXebOtCQG50lCe+c3595zz73lw2jeJcxy7I7neZ2O3SMyaa2jUrZs3t1n20Z71hgGpbGcsc/wBPPp+0q46pUfyCoWG41KR8E0Q+B3pQKwODu2RIJNDcGmTShE5RtZzSzKaHg9IVM/iZxBeb7aDfV2oJKhWT2nZ7Hcvz0a2uuOnxju20ddkK1iA1A0TGhZKS0Ig7cNMJSJg2Z02ETHM13Ts7AqesVwVHxZ9+0yITt6VvktjJgufdge/czXdMB1AF2QsJrjIavih0VnsCZgsxA2E2ELqexvYSnPNE3XrbhWUiWN4kjYsjx+bWZ/DQvIVGBBQDZMQ1FI96WEHZr9lrsMvQIs1/NcCBwYZjCH4ROBS8CobGEUGDwewHAbi9smg1U8Mg6r6IofD1/iNe04DGWCZuOTIgwyYhNi3WsK17IVrTrA0EWSxO4lE4l4QrNgPdus6qAMX/V0H3aZXSzO/TuY5glYpacSM+y6bhIJUwfLshASFqiKvH6kOghjsmLFIZZ+X0zEV3f7vgtrHwRrdeFjwYxNC8KoLAosLWFJ04c5itKrXOdBYa6hBONylkYQxnImbDGtBylwGazoWoZzL80TtpotMBtccpehMAixxibCsKkoWzj1z2GL8WcADpvwM+bCgie61ygC6zPKRFGUk7EpYVImOg9xHNeUjltBWFE3nP41nrCrLGE6UWnl8/uCGJ2FyBqH0d8l/g4GHXBPwDrgIpZl2J0ObmM1x1JG41ihAJ+8gTApQxoGk9FzKzExZdc7ulN7zxK2ecAnoqLRblC4UnxDxxiDZaksHQGW9WHw9TaDeeAClo5hQBNnEUICD69gTC4rAC0M40Fl/ok8aQLsc0e3a2co7MkLWjlsHSYia5r8Pg5fJ5HNfQhGTwnZP4ctBVdBwGbFScc0PQeeHVkODbRxmcqDlvz7BQgJC+FgQlJYHGAxy4WM1QB2j8KOv2UJs9SJRMilwtvEwKHGYAUsVdFghYKEYcMJ57GkQgzdsWsYrPW2LAFLCtnl+fN9WPfh+XfvnkK8u3RE5fURYPyqoQeLTAdYH13Nu5O8cmixOAwpXHRMGgbS1BEYjIUp+CcYDEIseI61LIDmsMHEEmKyyfkgo7Ajl54+ak9h0X50qctvmDgskUpWihUDvxCrx9EX/bpMGIdxl2PDW6SDjcOobH4EWAGebxSmUle9Xu9P3usDjcn4XbqgdedDAOz8U4qS8bQbhGE2asWOD3vyts4rR4xXDpwjGrgGg8maGOwXMKRFgC1ksFQQpimGg67+15PtdvtrHwejMGAFfrh4mQdYy8+VjHddCgMXv0OxXIfCoCymLw7ra1nloCOyI7umkocnd+7c+WgSZ4ijj8GO5fMoiwKbPz+fD8NSSaLb4Nr3kWcABnN0CtPYEZLB7sNgD55PGY/2pRFY0iE+bM4kuByLJUyc/5LKw5PVanVl9SSdILpBxmF5gOX/HDYXXJkQLAEwTNg+gLH4SMdiMP+YBdUjk8+HYKsw8A8nR2GqD8vu7YPL4AkTE1Elj4CF8baObhhsBJbJoCwKDFyZDSEYLDGnVg/A4DVSGHVBsJQBLCNhq6rPL8xet3H27AvPq6tWbRuBKQizcYduLu9D+ok6IXoOnrCdzLW9hSvwN7B8BNiuueDKjcAUw8aEIYwmYNUwAKOND4PlMhkOq17AS7qzzx4/fnb26o4T654lkwyGsjDslm3rFjw2c4kVdgldEqaHYdPix3I0ZZk/h13L53JlhInaCwcIHwYsSmvhGkMYuOQPMpfLOQZbdeHE3bPnt6niLuv840ujMAtqOYc5jsETNkvOxE8hmK2PZSxHZVFgmVy5FILFNKLXOIyvmhesUOGlM8YIrLrx7rMjKmURGorC/m1CwBS36PkwnSaMDufPRPJu5RgMn2imn7FyVNhUcJW2yqkYgrXP7d//pj1lJ8CwdmijsHLuwfNzp09c3YZTE108RmFO43NxLey+WDzuGCJhGKLpuLSyevD1jQPtlWwqctisICwXDZbOlUrrfwO7vHsTxO5zz6/yJSZhWBaPlcq5JQcOnDgLF6VMRmSzl9R8WCLVaVz/4jmOfR/K/a0PlpKcSIzAHlYPNNPQWRxgMLBjwxWEYcqiwJrl0vr1myUsuMbObKKxf+PQMXAmhjOmfgdY5vXsZ/x/LGAPaxg665kxvRIGB7svLvTUAMtuAZim9XrxEMz6iq5s4UGLl3t1QsJwjcFYuWgwcG0KwXhVrAvY/sM7PrDteSIE697EwU7vOMLbEf9EQNtYNSlhMRPOLRVdR1hz0QfIveOavWk+DIqHNfje5DBcYiypYVg5MmyThMl9DGVnbu/ef/DwiR0Df3eOBWAP95dK5dd3z7N2RGNdrD54+/bx4AMkOAhzG43rDVDfn5puzhgQVTVd11QQRpcg/ezjRa8OPVjzuhVoPMZhuQgwcI3AWEuFveKpdfATz+MPvosnjMHe7V9fKl85S10phFm68+FRG3bq1Xchw+z+jFUPuB4oNmCa3k+nm1eeAcwFmCdShvUee+Crd+fNm93CHpjga/nvsHgKFhk7tQyHw0nbCeZL1o7uU4AtWbGHtyNakgDsEW9DhvDOR2GWZVDYN54xkTJxyDT0D4Ph44E4tLAlJmElrB4RYQs4TB5biMXPmciyRLpCsPNtgL1+obG/wU3WcAaiv2rpQVgCYI0G4bCTsDl0EObFWcqoDGsP0A2LNds8YbIqri9FzFhBwkInaEseZ0WdxzsMCXs3BdbY/qsIiwnYRwmzxmDwnQDLXlx1Kan1EGZagYs3SsMQkyMehCUYLBMF9pNVu2ltIorCAPzXHDpJNUxFsdFGJZJVJWIW0YESpBVRkC5c1AaCq5agMJIQRDLEQEtSBi10E0SbUugXIrS0i9BF177nnDs5iSniaF8QrdY5eWbux/TeC9cwjN8FcP8kpk7cRFz4EJue1bmfLa+Ka+SJyduFwiDDFb8lk4B1MYzmCFZZUZksvSFmmTyusGt9WOo/YKhj7h8HKmHFEPymQ4dlPQdsz3FsgV0B7NgLYdrHFHaJYWW8+08k5JFVJseuST/DlSkgcaiewsYZFnG4TwvMURiq0KeXUCVRiUwaIj8wD7V2toTNsyzWE3YVxqNijFwCe2xg71y3V0s4dcCQQszI8F0adl0YTNf4IDORGlRFaocNsQlBC6UOt8glp16wdPzk+HZ55uH38ptlGbDjArMZhi5EsJmi6waO7dRznEmzYCoVNPg0FwNLKIxkiKIo8rfswgML0OaWDExaaUKG0p8Ht+9cvfkxkFeqcDUnB9grgmWQ967ro+knVhi2QjXticTYQM6DkSsi7J7CcC2+eXrbDEtd3MHacHkdlNpYtRkmsywNpQ+2lpe3NsmlXdOuAJbDW/IPgpVdyBr4V6dQyVVsDA0rBByB0X02sNg/w9CdqZNJtIImpi50sK5FLXEKr8AHBGM1DaU6E5FLh9I6YBWG0Yqd6xaLvQb+H17eHHz6S3BBKLXHRx4Z/8TBMCwORG2KcuRIZEYyyrLNYsembyEduoU7ayXu5zrL6oE8JIQVACsQLI2kWoAVuySTioUcxRmorY+MXWOAsSudijTcPwds4OSSRovER1wtbhrl/Z7A+rMsIrtIEnbZk7QJKzBkg2BzZ207LhW5s9Xj/dJc0DyycAL6MAVYOhJs1sDobE5MLRJBGZa4AriQDrlS5bzXDmcrnSXMbq3GqT9+cZlgKU6LYHOngTTjcbsOlzN4J3XElwkcMHZl0lFfguVMMC6mHPolJkQ2hulxmZmqxa70Yd7ySjEdXehbkbbMthTzDgaWwjoWYMhZuypHCROJ8BrCkkDdP7b2gaplIsHuM8wcwI0Px+bo9mntxDeuaVnn25izrK7KhNZYfd1gljw9PRrOsBvIEsPyeaENZaBuvN99AWNXMvP3sGR2dnb25bye0tDoySFSNeeDXc912eV1xJWeeYuv/JPqgKy9+vXZ2rpwEMJNiAuwG5LskcDyC/nTXlA6514ihkYu25FtpOuZiIs5T+ebzRrSOCeldjsIgl7P992ia2BHwkKbb5mtoxLLqtWghzX4orveaNSG06QwbAqZ9gwM2d8+2wtK1d/TGPyi9hkubGkmIyy/YV0x+4l7M9VZXHzEuYXwHxaRhYV8Hh8XLoEtUYNHaEfTMvG7iO9Zf0xnyiQ7/TaE4fpccHsopxy/n43Ie9B3qdF/EZhUEZXKRmBLIYsafcuKkI5hIdMtA9OSWnaopEX5RbsdrSQSxXEcf5N9l70+IGQoORlS65JIi0yxIoTmbOIWuhddlGgrDSzTagMi3Xm1UiyDhEN74TvkW+zvf/47HmfVnFnYLwTdNH8/ncFMz3kCi7ZDhPwYycElvAVbB+uaYEkXbxvohoVlqUxmf3oSBgYWnUYJs2sAT6KAnSiYGrEIezucsIpZ6CUkjF2o9NwlGI9cB5vw+bFwe6liMQlTrtWwt9PCLpdJZRnWni5+8GeugoHFMJZNL5fAjmawyzkYVHT4MNRmZ+xQOPEtmMoPG5qFGLdLx11KvAMuNu76WdOt7OFqmHKhitk9XA1jl5T1sW8WvQ8K+34s990zTLl8QzADqo/d8aRNDFlFGJYhsgdJKSsMuzNV18wmEvsPr96KQDGMaM+mhclHizB1JxIMKpzgexcQVvgiz7Yc3I5l35Z1+/TU739ot5PqUMMuXI7tGGL0c2+DaS/TIZqak80E2hqaS9uHC+GMT6NSgszr2ZwOrVmPiGePZ42u0cVFUJgYHd+c4yAmcODJ9jh8x197XkkZ0bZ6wh3oum0ZndEPltHdiSchimCbf9paDLJSRxhCpEreotF7ofzSk/8KJ2k+7wHmG5BM1M1pQ/QDwN7cQ3Z1cQ4abNAt6UB5GbexmRKGa5cBi1hGD2vGMI+mZCq/Ei53gBu5B5pkyXev6cU7sZJJH+p6hkLXKeH+CgLbdlzRvpKnNKHjYGSmCrw9iGK7iUQm1RF4WGdlCdPw8PZxjy7AIFseuywtYg8sV4hOI1WplHi9wIKLWFAxipIm7rQi3EgwWMQxOvh3bH2NRuNrr9eBygDrzIOlIes1SuppDuH43KthvbRIxNZ10AzYOr0erp6iKlB6awgt2vRKoBRcekCY5hgiSIZhuK5rWc5dvVWvKlg6NzREyNw0w3RcxLFc6ILm2npgGM5DcY4zGNi2XsZy1OutVq328FfRHSpf88O2c/f3j5YvXEjlODTgUYVDWBIGF2ZVq2fobm18LVsPCtM0emxUGtOgqtZByu9E4/F4sfhpvmIxHo9GZzBdwvCzuVwOP61pkWVpCPZcs/mZazZzcpQ9g9UxESPz+R0UpeJzRWkkzeTfZghYmmD02BQMIxZhRYKRq0YzyoFgCAOWwuZdLeVaCWuFhmkMwzQF81asuAyGEf8Oa0qYpmD1/wVj13oYu3ww+3c7d8+bNhDHcVxtAtg82TwZZAmrDWIFCZFIUdX6HWToSNfsKEtZmUKHvIF0RsrQlfeB2DPxGpBQtv7+57scF2x8R9p06RdUV5HPlw93dja0tmIyLH7B0AvXcVtRLBjBfqXCxLNjiilG2+tjYGMOkzsRLgHjSdefhdHDQ5HBhTCNvMWmV+vF/Bqwsc5WvFdhfCdGLgGjXg370g2pyVITRiyxEyPY7NwLvfk4dcUSYKPxjbjD8EhUXegQbMNd3WEMrHwZyYL7gzAk12tnJ/64WQUhWsyZyxw22gSbK0wGl4Apsh0Xm3QHtpxwV7vzEvYOsNLlx0i2FA8PFYabjMlkmEbApqu1F7K89UwTNlNg20XoBZux8uiQMjVaMAlbCddFy2ew8i7stFyyL+t8zRJgXxWY3Im3N8s1XVzIlqYwnLxZsLHBdjy9U2Boz8VhtwR7Xq/6oNLyY75r4KRkO5/4bpzFbEW2F5F0ff95dzX6tlxt50LFe5iv7g1hj8wV2eab5eiWZDLVFd1i/G/Ms6uXqzQbcbBqxrW47GGi3cNiEe7lLSbrp6fHndbB5GALdTh+sp6nt0YB34e9bK6FW4xgJyqsDFhxWA9fUzAJ/031QRYL5heULyqRN5lj5Yfd8Mi84HM/2w+88Oi8rnesqwcXPTrETgRM3YvF2rBuXLfbDc7b7X4W9QeTupf4m9cPdt7rDQIcP3iG1c+y2Ii4w5QF4zC2ZCRr+K1KLpfLHlOO6rfPErrIanXRNozWi1x5y2FfUyJg8i6zHcgKfrNVgc24CksMTeGnZPhpkos2olgwCYs2I5c1QIPNqBar2cRIPjYeb5D2xwlWh7vkgimbMZLlieY3jer4VIPCsUPApA5fhx9bBmHyRqHGXeIOU5eMy4hWaJhVoGoUjpz3Mp/XSM03qcFYluMq362nyLBmeIIwGqrpl6eKUWJsIa7Ui8h5C3qxkUW47EycS65ZKUM0CziTLJZDWUj41GDHW7N89NJ40+yOy10SpsgEzXZd1zHJRTZLjLX2cxjdSrwGe/Fwsl44EyqwqtIVLyNaKYNs7TKsEk8MddVsV+ciyDYuE7HEPkyQEa1crUKnUxVvOqAyS47N7FXKJF4m+leZFqenF40DK1ouwBJkoMEGnHmnFB9bPlzKlcpm0dxgJbsgi2iwmfc+SgxOwOtn8HmmsCQNOMPe4bo8/P+tI5VwpdiOLxlIPzEYrv1CqSqJo5du7Ozd4s7RuYzZtOrQNwiz/O8v9hu34zXikIrgqQAAAABJRU5ErkJggg==",perfect="data:image/png;base64,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",great="data:image/png;base64,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",scoreIcon={good,bad,perfect,great},leveByScoreMeasureIcons=[{icon:scoreIcon.bad,text:"bad",color:"#EE4C6A"},{icon:scoreIcon.good,text:"good",color:"#FF958B"},{icon:scoreIcon.great,text:"great",color:"#FF8E5A"},{icon:scoreIcon.perfect,text:"perfect",color:"#516AFF"}],icons=[{img:Image1,tips:"你的演奏不太好,再练一练吧~",mome:"敢于尝试",clxImg:clx1,clxtip:"你的演奏不太好,音准和完整性还需加强,再练一练吧~",clxmome:"敢于尝试"},{img:Image2,tips:"你的演奏还不熟练,加紧训练才能有好成绩哦~",mome:"还要加油哦~",clxImg:clx2,clxtip:"你的演奏还不熟练,音准和完整性还需加强,加紧训练才能有好成绩哦~",clxmome:"还要加油哦~"},{img:Image3,tips:"你的演奏还不流畅,科学的练习才能更完美哦~",mome:"突破自我",clxImg:clx3,clxtip:"你的演奏还不流畅,音准和节奏还需加强,科学的练习才能更完美哦~",clxmome:"突破自我"},{img:Image4,tips:"你的演奏还不错,继续加油吧,离完美就差一步啦~",mome:"崭露头角",clxImg:clx4,clxtip:"你的演奏还不错,继续加油吧,加强音准,离完美就差一步啦~",clxmome:"崭露头角"},{img:Image5,tips:"你的演奏完美无缺,继续努力吧~",mome:"你很棒",clxImg:clx5,clxtip:"你的演奏非常不错,音准的把握和节奏稍有瑕疵,完整性把握的很好~",clxmome:"你很棒"}],getLeveByScore=i=>{if(!i&&typeof i!="number")return{};let e=0;return i>20&&i<=40?e=1:i>40&&i<=60?e=2:i>60&&i<=80?e=3:i>80&&(e=4),{...icons[e],leve:e}},getLeveByScoreMeasure=i=>{if(!i&&typeof i!="number")return{};let e=0;return i>=40&&i<70?e=1:i>=70&&i<90?e=2:i>=90&&(e=3),e},audioList="_audioList_1j0z3_1",styles$3={audioList};let timer=null;const midiData=reactive({iframeRef:null,playing:!1,index:0,rate:1}),playNote=()=>{var t,s;if(!midiData.playing)return;const i=state$1.times[midiData.index];if(!i){onEnded();return}midiData.index++;const e=i.endtime-i.time;(s=(t=midiData.iframeRef)==null?void 0:t.contentWindow)==null||s.playNote(i.realKey,e),timer=setTimeout(()=>{playNote()},e/midiData.rate*1e3)},stopPlay=()=>{midiData.playing=!1},hanldeInitMidiData=i=>{midiData.iframeRef=i},handleTogglePlayMidi=i=>{i==="play"?(midiData.playing=!0,playNote(),onPlay()):stopPlay()},hanldeSetMidiPlaybackRate=i=>{midiData.rate=i},getMidiCurrentTime=()=>{let i=midiData.index-1;return i=i<0?0:i,state$1.times[i].time},getMidiDuration=()=>state$1.times[state$1.times.length-1].endtime,setMidiCurrentTime=i=>{clearTimeout(timer),midiData.index=i,playNote()},audioData=reactive({songEle:null,backgroundEle:null,midiRender:!1,progress:0,duration:0}),midiRef=ref(),audioListStart=i=>{var e,t,s,r;if(i==="play"&&state$1.originSpeed!==0&&setAudioPlaybackRate(state$1.speed/state$1.originSpeed),audioData.midiRender){handleTogglePlayMidi(i);return}i==="play"?((e=audioData.songEle)==null||e.play(),(t=audioData.backgroundEle)==null||t.play()):i==="paused"&&((s=audioData.songEle)==null||s.pause(),(r=audioData.backgroundEle)==null||r.pause())},setAudioPlaybackRate=i=>{if(audioData.midiRender){hanldeSetMidiPlaybackRate(i);return}audioData.songEle&&(audioData.songEle.playbackRate=i),audioData.backgroundEle&&(audioData.backgroundEle.playbackRate=i)},getAudioCurrentTime=()=>{var i,e,t;return audioData.midiRender?getMidiCurrentTime():state$1.playSource==="music"?((i=audioData.songEle)==null?void 0:i.currentTime)||audioData.progress:state$1.playSource==="background"?((e=audioData.backgroundEle)==null?void 0:e.currentTime)||audioData.progress:((t=audioData.songEle)==null?void 0:t.currentTime)||audioData.progress},getAudioDuration=()=>{var i,e;return audioData.midiRender?getMidiDuration():((i=audioData.songEle)==null?void 0:i.duration)||((e=audioData.backgroundEle)==null?void 0:e.duration)||audioData.duration},setAudioCurrentTime=(i,e=0)=>{if(audioData.midiRender){setMidiCurrentTime(e);return}audioData.songEle&&(audioData.songEle.currentTime=i),audioData.backgroundEle&&(audioData.backgroundEle.currentTime=i),audioData.progress=i},toggleMutePlayAudio=(i,e)=>{i==="music"?audioData.songEle&&(audioData.songEle.muted=e):i==="background"&&audioData.backgroundEle&&(audioData.backgroundEle.muted=e)},AudioList=defineComponent({name:"audio-list",setup(){const i=()=>{midiRef.value.contentWindow.handleRendered=()=>{audioData.midiRender=!0},hanldeInitMidiData(midiRef.value)};watch(()=>state$1.playSource,()=>{if(state$1.modeType==="evaluating"&&!state$1.setting.enableAccompaniment){console.log("评测模式设置了关闭伴奏,不切换原音伴奏");return}state$1.playSource==="music"?(audioData.songEle&&(audioData.songEle.muted=!1),audioData.backgroundEle&&(audioData.backgroundEle.muted=!0)):(audioData.songEle&&(audioData.songEle.muted=!0),audioData.backgroundEle&&(audioData.backgroundEle.muted=!1))});const e=s=>new Promise(r=>{const o=new Audio(s+"?v="+Date.now());o.load(),o.onloadedmetadata=()=>{r(o)},o.onerror=()=>{r(null)}}),t=s=>{var l,c,d;const r=(s==null?void 0:s.currentTime)||((l=s==null?void 0:s.content)==null?void 0:l.currentTime),o=(s==null?void 0:s.totalDuration)||((c=s==null?void 0:s.content)==null?void 0:c.totalDuration),a=r/1e3;audioData.progress=a,audioData.duration=o/1e3,((d=s==null?void 0:s.content)==null?void 0:d.totalDuration)>1e3&&r>=o&&onEnded()};return onMounted(()=>{state$1.playMode!=="MIDI"&&(Promise.all([e(state$1.music),e(state$1.accompany)]).then(([s,r])=>{s&&(audioData.songEle=s),r&&(audioData.backgroundEle=r),audioData.songEle?(audioData.songEle.addEventListener("play",onPlay),audioData.songEle.addEventListener("ended",onEnded),r&&(r.muted=!0)):audioData.backgroundEle&&(audioData.backgroundEle.addEventListener("play",onPlay),audioData.backgroundEle.addEventListener("ended",onEnded))}),api_playProgress(t))}),()=>createVNode("div",{class:styles$3.audioList},[state$1.playMode==="MIDI"&&state$1.speed!=0&&createVNode("iframe",{style:{display:"none"},ref:midiRef,src:"/midi/index.html",onLoad:i},null)])}}),popup="_popup_1838h_1",dots="_dots_1838h_6",dot="_dot_1838h_6",active="_active_1838h_20",one="_one_1838h_23",styles$2={popup,dots,dot,active,one},tickData=reactive({list:[],len:0,tickEnd:!1,beatLengthInMilliseconds:0,state:"",source1:"",source2:"",index:0,show:!1}),handlePlay=(i,e)=>new Promise(t=>{setTimeout(()=>{if(tickData.tickEnd){t(i);return}tickData.index++,e&&e.play(),t(i)},tickData.beatLengthInMilliseconds)}),handleInitTick=(i,e)=>{tickData.state="",tickData.beatLengthInMilliseconds=i,tickData.len=e},handleStartTick=async()=>{tickData.show=!0,tickData.tickEnd=!1,tickData.state!=="ok"&&(tickData.source1=new howler.Howl({src:tockAndTick.tick}),tickData.source2=new howler.Howl({src:tockAndTick.tock}),tickData.state="ok"),tickData.index=0,tickData.beatLengthInMilliseconds=60/state$1.speed*1e3;for(let i=0;i<=tickData.len;i++){if(tickData.tickEnd)return!1;const e=i===0?tickData.source1:i===tickData.len?null:tickData.source2;await handlePlay(i,e)}return tickData.show=!1,!0},Tick=defineComponent({name:"metronome",setup(){const i=()=>{tickData.tickEnd=!0};return()=>createVNode(Popup,{class:styles$2.popup,show:tickData.show,"onUpdate:show":e=>tickData.show=e,closeable:!0,onClickCloseIcon:i},{default:()=>[createVNode("div",{class:styles$2.dots},[Array(tickData.len).fill(0).map((e,t)=>createVNode("div",{class:[styles$2.dot,tickData.index>t&&styles$2.active,tickData.index>t&&t===0&&styles$2.one]},null))])]})}}),browserInfo$2=browser(),evaluatingData=reactive({contentData:{},rendered:!1,earphone:!1,soundEffect:!1,soundEffectFrequency:0,checkStep:0,checkEnd:!1,earphoneMode:!1,soundEffectMode:!1,websocketState:!1,startBegin:!1,backtime:0,evaluatings:{},resultData:{},resulstMode:!1,isComplete:!1,isDisabledPlayMusic:!1}),handleStartEvaluat=()=>{state$1.modeType==="evaluating"?handleCancelEvaluat():handleStopPlay(),state$1.modeType=state$1.modeType==="evaluating"?"practise":"evaluating",state$1.modeType!=="evaluating"&&(evaluatingData.rendered=!1)},check_currentTime=()=>{let i=0;if(state$1.isSelectMeasureMode&&(i=state$1.section[0].time*1e3),getAudioCurrentTime()*1e3-i>=500){sendEvaluatingOffsetTime(500);return}setTimeout(()=>{check_currentTime()},10)},sendEvaluatingOffsetTime=async i=>{if(!evaluatingData.backtime)return;const t=Date.now()-evaluatingData.backtime-i;console.error("真正播放延迟",t,"currentTime:",i),await api_proxyServiceMessage({header:{commond:"audioPlayStart",type:"SOUND_COMPARE"},body:{offsetTime:t<0?0:t,micDelay:0}})},checkUseEarphone=async()=>{var e;const i=await getEarphone();return((e=i==null?void 0:i.content)==null?void 0:e.checkIsWired)||!1},handleEndSoundCheck=()=>{endSoundCheck()},connectWebsocket=async i=>{evaluatingData.contentData=i,evaluatingData.websocketState=!0},handlePerformDetection=async()=>{if(!evaluatingData.checkEnd){if(evaluatingData.checkStep===0){if(evaluatingData.checkStep=5,state$1.setting.soundEffect){evaluatingData.soundEffectMode=!0;return}const i=await api_getDeviceDelay();if(console.log("🚀 ~ delayTime:",i),!i){evaluatingData.soundEffectMode=!0;return}handlePerformDetection();return}if(evaluatingData.checkStep=5){if(evaluatingData.checkStep=10,!await checkUseEarphone()){evaluatingData.earphoneMode=!0;return}handlePerformDetection();return}evaluatingData.checkStep===10&&(evaluatingData.checkEnd=!0)}},addMeasureScore=(i,e=!0)=>{evaluatingData.evaluatings[i.measureRenderIndex]={...i,leve:getLeveByScoreMeasure(i.score),show:e}},handleScoreResult=i=>{if(i!=null&&i.content){const{header:e,body:t}=i.content;e.commond==="checking"&&(evaluatingData.soundEffectFrequency=t.frequency);const s=()=>Math.floor(Math.random()*20)+80;(e==null?void 0:e.commond)==="measureScore"&&(console.log("🚀 ~ 评测返回:",i),t.score=s(),addMeasureScore(t)),(e==null?void 0:e.commond)==="overall"&&(console.log("🚀 ~ 评测返回:",i),t.score=s(),t.intonation=s(),t.cadence=s(),t.integrity=s(),evaluatingData.resulstMode=!0,evaluatingData.resultData={...t,...getLeveByScore(t.score)},closeToast())}},handleStartBegin=async()=>{var e;evaluatingData.isComplete=!1,evaluatingData.evaluatings={},evaluatingData.resultData={},evaluatingData.backtime=0,resetPlaybackToStart();const i=await startEvaluating(evaluatingData.contentData);if((i==null?void 0:i.api)!=="startEvaluating"){Snackbar$1.error("请在APP端进行评测"),evaluatingData.startBegin=!1;return}if((e=i==null?void 0:i.content)!=null&&e.reson){showToast(i.content.reson),evaluatingData.startBegin=!1;return}if(evaluatingData.startBegin=!0,evaluatingData.isDisabledPlayMusic){if(state$1.playState=state$1.playState==="paused"?"play":"paused",state$1.playState==="play"&&state$1.needTick&&!await handleStartTick()){state$1.playState="paused",evaluatingData.startBegin=!1;return}onPlay()}await api_startRecording(),state$1.setting.camera&&state$1.setting.saveToAlbum&&(console.log("开始录制视频"),api_startCapture())},playMusic=async()=>{if(!await togglePlay("play")){evaluatingData.startBegin=!1,handleCancelEvaluat();return}check_currentTime(),state$1.setting.camera&&state$1.setting.saveToAlbum&&(console.log("开始录制视频"),api_startCapture())},recordStartTimePoint=async i=>{var t;if(console.error("开始录音"),!evaluatingData.startBegin)return;let e=((t=i==null?void 0:i.content)==null?void 0:t.inteveral)||0;browserInfo$2.ios&&(e*=1e3),evaluatingData.backtime=e||Date.now(),console.log("🚀 ~ 开始时间点:",evaluatingData.backtime,"已经录的时间:",Date.now()-e,"记录时间点:",Date.now()),!evaluatingData.isDisabledPlayMusic&&playMusic()},handleEndEvaluat=(i=!1)=>{!evaluatingData.startBegin||state$1.modeType!=="evaluating"||(evaluatingData.startBegin=!1,api_stopRecording(),endEvaluating({musicScoreId:state$1.examSongId}),showLoadingToast({message:"评分中",duration:0,overlay:!0,overlayClass:styles$4.scoreMode}),evaluatingData.isComplete=i,state$1.setting.camera&&state$1.setting.saveToAlbum&&(console.log("结束录制视频"),api_endCapture()))},handleEndBegin=()=>{handleEndEvaluat(),handleStopPlay()},handleCancelEvaluat=()=>{evaluatingData.evaluatings={},evaluatingData.startBegin=!1,closeToast(),api_proxyServiceMessage({header:{commond:"recordCancel",type:"SOUND_COMPARE",status:200}}),cancelEvaluating(),handleStopPlay()},handleViewReport=(i,e)=>{var r;const t=((r=evaluatingData.resultData)==null?void 0:r[i])||"";let s="";switch(e){case"gym":s=location.origin+location.pathname+"#/report/"+t;break;case"orchestra":s=location.origin+location.pathname+"report-share.html?id="+t;break;case"instrument":s=location.origin+location.pathname+"#/evaluat-report?id="+t;break;default:s=location.origin+location.pathname+"report-share.html?id="+t;break}api_openWebView({url:s,orientation:0,isHideTitle:!0,statusBarTextColor:!1,isOpenLight:!0,c_orientation:0})},Evaluating=defineComponent({name:"evaluating",setup(){const i=usePageVisibility(),e=reactive({finger:!1,play_mode:"",enableAccompaniment:!0}),t=()=>{e.finger=state$1.setting.displayFingering,state$1.setting.displayFingering=!1,e.play_mode=state$1.playSource,e.enableAccompaniment=state$1.setting.enableAccompaniment,e.enableAccompaniment||(console.log("关闭伴奏"),toggleMutePlayAudio(e.play_mode==="music"?"music":"background",!0))},s=()=>{state$1.setting.displayFingering=e.finger,state$1.playSource=e.play_mode,e.enableAccompaniment||toggleMutePlayAudio(e.play_mode==="music"?"music":"background",!1)};return watch(i,r=>{r=="hidden"&&evaluatingData.startBegin&&handleEndBegin()}),onMounted(()=>{resetPlaybackToStart(),t(),evaluatingData.resultData={},evaluatingData.evaluatings={},evaluatingData.soundEffectFrequency=0,evaluatingData.checkStep=0,evaluatingData.rendered=!0,sendResult(handleScoreResult),api_recordStartTime(recordStartTimePoint),state$1.isSelectMeasureMode||clearSelection(),console.log("加载评测模块成功")}),onUnmounted(()=>{evaluatingData.checkEnd=!1,evaluatingData.rendered=!1,resetPlaybackToStart(),removeResult(handleScoreResult),api_remove_recordStartTime(recordStartTimePoint),s(),console.log("卸载评测模块成功")}),()=>createVNode("div",null,null)}});function autoCorrelate(i,e){for(var t=i.length,s=0,r=0;rd[u+1];)u++;for(var g=-1,b=-1,r=u;rg&&(g=d[r],b=r);var y=b,S=d[y-1],v=d[y],x=d[y+1];let A=(S+x-2*v)/2,E=(x-S)/2;return A&&(y=y-E/(2*A)),e/y}const audioRecorder={audioContext:null,mediaRecorder:null,recordeState:!1,progress:i=>{},init(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)},toggleRecord(i){return new Promise((e,t)=>{i?navigator.mediaDevices.getUserMedia({audio:!0}).then(s=>{audioRecorder.mediaRecorder=s.getAudioTracks()[0],audioRecorder.recordeState=!0;const r=this.audioContext.createMediaStreamSource(s),o=this.audioContext.createAnalyser();o.fftSize=2048,r.connect(o);var a=new Float32Array(o.fftSize);const l=this.audioContext.sampleRate;function c(){if(!audioRecorder.recordeState)return;o.getFloatTimeDomainData(a);const d=autoCorrelate(a,l);audioRecorder.progress(d),setTimeout(()=>{c()},10)}c(),e(!0)}).catch(s=>{e(!1),console.error("Error accessing media devices:",s)}):audioRecorder.mediaRecorder.stop()})},checkSupport(){return new Promise((i,e)=>{if(navigator.mediaDevices.getUserMedia){const t={audio:!0};navigator.mediaDevices.getUserMedia(t).then(s=>{i(!0),console.log("授权成功!")},()=>{i(!1),console.error("授权失败!")})}else i(!1),console.error("浏览器不支持 getUserMedia")})}},followData=reactive({list:[],index:0,start:!1,rendered:!1,earphone:!1}),toggleFollow=(i=!0)=>{state$1.modeType=state$1.modeType==="follow"?"practise":"follow",i||(followData.start=!1,openToggleRecord(!1))},noteFrequency=ref(0),audioFrequency=ref(0),followTime=ref(0),openToggleRecord=async(i=!0)=>{if(api_cloudToggleFollow(i?"start":"end"),i)followTime.value=Date.now();else{const e=Date.now()-followTime.value;followTime.value!==0&&e>0&&(followTime.value=0)}storeData.isApp||!await(audioRecorder==null?void 0:audioRecorder.toggleRecord(i))&&followData.start&&(followData.earphone=!0,followData.start=!1)},onClear=()=>{state$1.times.forEach(i=>{const e=document.querySelector(`div[data-vf=vf${i.id}]`);e&&e.classList.remove("follow-up","follow-down","follow-error","follow-success");const t=document.getElementById(`vf-${i.id}`);t&&t.classList.remove("follow-up","follow-down")})},handleFollowStart=()=>{onClear(),followData.start=!0,followData.index=0,followData.list=[],resetPlaybackToStart(),openToggleRecord(!0),getNoteIndex()},handleFollowEnd=()=>{followData.start=!1,openToggleRecord(!1),followData.index=0,console.log("结束")},next=()=>{gotoNext(state$1.times[followData.index])},getNoteIndex=()=>{const i=state$1.times[followData.index];return i.frequency<=0?(followData.index=followData.index+1,next(),getNoteIndex()):(noteFrequency.value=i.frequency,{id:i.id,min:i.frequency-(i.frequency-i.prevFrequency)*.5,max:i.frequency+(i.nextFrequency-i.frequency)*.5,duration:i.duration,baseFrequency:i.frequency})};let checking=!1;const onFollowTime=i=>{var t;const e=(t=i==null?void 0:i.content)==null?void 0:t.frequency;followData.start&&e>0&&(audioFrequency.value=e,checked())};let startTime=0;const checked=()=>{if(checking)return;checking=!0;const i=getNoteIndex();if(audioFrequency.value=i.min&&audioFrequency.value<=i.max){if(startTime===0)startTime=Date.now();else if((Date.now()-startTime)/1e3>=i.duration*.6){startTime=0,followData.index=followData.index+1,setColor(i,"",!0),next(),checking=!1;return}}setColor(i,audioFrequency.value>i.baseFrequency?"follow-up":"follow-down"),checking=!1},setColor=(i,e,t=!1)=>{const s=document.querySelector(`div[data-vf=vf${i.id}]`);s&&(s.classList.remove("follow-up","follow-down","follow-error","follow-success"),t?s.classList.add("follow-success"):s.classList.add("follow-error",e));const r=document.getElementById(`vf-${i.id}`);r&&(r.classList.remove("follow-up","follow-down"),e&&r.classList.add(e))},FollowPractice=defineComponent({name:"follow",setup(){return onMounted(async()=>{storeData.isApp?api_cloudFollowTime(onFollowTime):await audioRecorder.checkSupport()?(audioRecorder.init(),audioRecorder.progress=e=>{onFollowTime({api:"",content:{frequency:e}})}):followData.earphone=!0,console.log("进入跟练模式")}),onUnmounted(()=>{api_cloudFollowTime(onFollowTime,!1),resetPlaybackToStart(),onClear(),openToggleRecord(!1),console.log("退出跟练模式")}),()=>createVNode("div",null,null)}});var EnumMusicRenderType=(i=>(i.staff="staff",i.firstTone="firstTone",i.fixedTone="fixedTone",i))(EnumMusicRenderType||{});const musicscoresettingKey="musicscoresetting";var IPlatform=(i=>(i.APP="APP",i.PC="PC",i))(IPlatform||{});const state=reactive({platform:"",appName:"",musicRenderType:"staff",musicRendered:!1,detailId:"",xmlUrl:"",subjectId:0,categoriesId:0,categoriesName:"",enableEvaluation:!0,enableNotation:!1,examSongId:"",examSongName:"",extConfigJson:{},extStyleConfigJson:{},isOpenMetronome:!1,isShowFingering:!1,music:"",accompany:"",midiUrl:"",parentCategoriesId:0,musicSheetCategoriesId:0,playMode:"MP3",speed:0,originSpeed:0,track:"",partIndex:0,needTick:!1,osmd:null,isSpecialBookCategory:!1,playState:"paused",playEnd:!1,playSource:"music",playProgress:0,activeNoteIndex:0,activeMeasureIndex:0,sectionStatus:!1,section:[],sectionBoundingBoxs:[],isOpenPrepare:!1,sectionFirst:null,times:[],modeType:"practise",setting:{soundEffect:!0,eyeProtection:!1,camera:!1,cameraOpacity:70,repeatAutoPlay:!0,displayFingering:!0,displayCursor:!0,frequency:442,evaluationDifficulty:"ADVANCED",saveToAlbum:!1,enableAccompaniment:!0,reactionTimeMs:0},fixtime:0,fingeringInfo:{},scrollContainer:"musicAndSelection",isPercussion:!1,repeatedBeats:0,partListNames:[],gradual:[],gradualVersion:GradualVersion.BASE,gradualTimes:null,multitrack:0,zoom:.8,musicZoom:1,isSelectMeasureMode:!1,isReport:!1}),browserInfo$1=browser();let offset_duration=0;const customData=reactive({customNoteRealValue:[],customNoteCurrentTime:!1}),setStep=()=>{if(state.playState!=="play"){console.log("暂停播放");return}let i=Date.now();requestAnimationFrame(()=>{Date.now()-i<16.7?(handlePlaying(),setStep()):setTimeout(()=>{handlePlaying(),setStep()},16.7)})},onPlay=()=>{console.log("开始播放"),state.playEnd=!1,offset_duration=browserInfo$1.xiaomi?.2:.08,setStep()},autoResetPlay=()=>{state.modeType==="practise"&&(skipNotePlay(0,!0),state.setting.repeatAutoPlay&&(scrollViewNote(),setTimeout(()=>{togglePlay("play")},1e3)))},onEnded=()=>{console.log("音频播放结束"),state.playEnd=!0,state.playState="paused",audioListStart(state.playState),handleEndEvaluat(!0),autoResetPlay()},handlePlaying=()=>{var s;const i=getAudioCurrentTime(),e=getAudioDuration();state.playProgress=i/e*100;let t=getNote(i);if(t){if(state.sectionStatus&&state.section.length===2){const r=state.sectionFirst?state.sectionFirst:state.section[0],o=state.section[1];if(Math.abs(o.endtime-i){var r;const t=state.times[i];let s=t.time;e&&(s=0),t&&(setAudioCurrentTime(s,i),gotoNext(t),(r=metronomeData.metro)==null||r.sound(s))},togglePlay=async i=>(state.playState=i||(state.playState==="paused"?"play":"paused"),state.playState==="play"&&state.needTick&&!await handleStartTick()?(state.playState="paused",!1):(state.playState=="play"&&state.sectionStatus&&state.section.length<2&&clearSelection(),audioListStart(state.playState),!0)),handleStopPlay=()=>{state.playState="paused",audioListStart(state.playState)},resetPlaybackToStart=()=>{if(state.sectionStatus&&state.section.length===2){state.section=formateSelectMearure(state.section);return}skipNotePlay(0,!0)},gotoCustomNote=i=>{try{state.osmd.cursor.reset()}catch(e){}for(let e=0;e{(state.musicRenderType==="firstTone"||state.musicRenderType==="fixedTone")&&nextTick(()=>{var o,a,l,c;let t=i.bbox;if(!t){const m=(((o=document.getElementById("musicAndSelection"))==null?void 0:o.getBoundingClientRect())||{x:0,y:0}).x||0,u=document.querySelector(`#vf-${(l=(a=i.svgElement)==null?void 0:a.attrs)==null?void 0:l.id}`);if(u){const g=u.querySelector(".vf-numbered-note-head"),b=(c=g==null?void 0:g.getBoundingClientRect)==null?void 0:c.call(g);b&&(i.bbox={left:b.x-m-b.width/4,width:b.width*1.5},t=i.bbox)}}if(!t)return;const s=state.platform==="PC"?29:18,r=(t.width-s)/3;e.cursorElement.style.left=t.left+"px",e.cursorElement.style.transform=`translateX(${r}px)`})},gotoNext=i=>{const e=i.i;if(state.activeNoteIndex===i.i){try{setCursorPosition(i,state.osmd.cursor)}catch(r){console.log(r)}return}const t=state.osmd;let s=state.activeNoteIndex;if(state.activeNoteIndex=e,state.activeMeasureIndex=i.MeasureNumberXML,s&&e-s===1)t.cursor.next();else if(s&&e-s>0)for(;e-s>0;)s++,t.cursor.next();else gotoCustomNote(e);try{setCursorPosition(i,state.osmd.cursor)}catch(r){console.log(r)}scrollViewNote()},getNote=i=>{const e=state.times,t=state.times.length;if(i>e[t-1].endtime+2){onEnded();return}let s=null;for(let r=state.activeNoteIndex;r=o.time)(!a||o.time!=a.time)&&(s=o);else break}return s},handleResetPlay=()=>{resetPlaybackToStart(),togglePlay("play")},handleSetSpeed=i=>{setStorageSpeed(state.examSongId,i),state.speed=i},clearSelection=()=>{state.sectionStatus=!1,state.section=[],closeToast()},handleChangeSection=()=>{if(state.sectionStatus){togglePlay("paused"),skipNotePlay(0,!0),clearSelection();return}state.sectionStatus=!0,state.sectionStatus&&togglePlay("paused"),showToast({message:"请选择开始小节",duration:0,position:"top",className:"selectionToast"})},formateSelectMearure=i=>{var l,c;if(!i.length)return[];const e=i.sort((d,m)=>d.time-m.time),t=(l=e[0])==null?void 0:l.measureOpenIndex,s=(c=e.last())==null?void 0:c.measureOpenIndex,r=state.times.filter(d=>t===d.measureOpenIndex)||[],o=state.times.filter(d=>s===d.measureOpenIndex)||[];if(!r.length||!o.length)return clearSelection(),[];e[0]=r[0],e[1]=o.last();let a=e[0].i;if(state.isOpenPrepare){const d=e[0].MeasureNumberXML;state.sectionFirst=state.times.find(m=>d-m.MeasureNumberXML===1),a=state.sectionFirst?state.sectionFirst.i:a}return skipNotePlay(a,a===0),e},handleSelection=i=>{!state.sectionStatus||state.section.length>1||(state.section.length!==2&&i&&(state.section.push(i),state.section.length===2&&(state.section=formateSelectMearure(state.section),closeToast())),state.section.length===1&&showToast({message:"请选择结束小节",duration:0,position:"top",className:"selectionToast"}))},hanldeDirectSelection=i=>{!Array.isArray(i)||i.length!==2||(state.sectionStatus=!0,state.section=formateSelectMearure(i))};let offsetTop=0;const scrollViewNote=()=>{const i=document.getElementById("cursorImg-0"),e=document.getElementById(state.scrollContainer);!i||!e||offsetTop===i.offsetTop||(offsetTop=i.offsetTop,offsetTop>50?e.scrollTo({top:(offsetTop-50)*state.musicZoom,behavior:"smooth"}):e.scrollTo({top:0,behavior:"smooth"}))},isRhythmicExercises=()=>state.examSongName.indexOf("节奏练习")>-1,handleRessetState=()=>{state.modeType==="evaluating"?handleStartEvaluat():state.modeType==="practise"?togglePlay("paused"):state.modeType==="follow"&&toggleFollow(!1)},state$1=state,evaluatCreateMusicPlayer=()=>api_createMusicPlayer({musicSrc:state.accompany||state.music,tuneSrc:"https://cloud-coach.ks3-cn-beijing.ksyuncs.com/1686725501654check_music1_(1).mp3"});class AJAX{static ajax(e,t=9e3){let s;const r=e.indexOf(".mxl")>-1?"text/plain; charset=x-user-defined":"application/xml";if(XMLHttpRequest)s=new XMLHttpRequest;else if(ActiveXObject)s=new ActiveXObject("Microsoft.XMLHTTP");else return Promise.reject(new Error("XMLHttp not supported."));return s.timeout=t,new Promise((o,a)=>{s.onreadystatechange=()=>{s.readyState===XMLHttpRequest.DONE&&(s.status===200||s.status===0&&s.responseText?o(s.responseText):a(new Error("Could not retrieve requested URL "+s.status)))},s.ontimeout=l=>{a(new Error("Server request Timeout"))},s.overrideMimeType(r),s.open("GET",e,!0),s.send()})}}const _Fraction=class{constructor(i=0,e=1,t=0,s=!0){this.numerator=0,this.denominator=1,this.wholeValue=0,this.numerator=i,this.denominator=e,this.wholeValue=t,s&&this.simplify(),this.setRealValue()}static max(i,e){return i.RealValue>e.RealValue?i:e}static Equal(i,e){return i.wholeValue===e.wholeValue&&i.Denominator===e.Denominator&&i.Numerator===e.Numerator}static createFromFraction(i){return new _Fraction(i.numerator,i.denominator,i.wholeValue,!1)}static plus(i,e){const t=i.clone();return t.Add(e),t}static minus(i,e){const t=i.clone();return t.Sub(e),t}static multiply(i,e){return new _Fraction((i.wholeValue*i.denominator+i.numerator)*(e.wholeValue*e.denominator+e.numerator),i.denominator*e.denominator)}static greatestCommonDenominator(i,e){if(i===0)return e;if(e===1)return 1;for(;Math.abs(e)>1e-8;)i>e?i-=e:e-=i;return Math.round(i)}toString(){let i=this.numerator+"/"+this.denominator;return this.wholeValue!==0&&(i=this.wholeValue+" "+i),i}clone(){return new _Fraction(this.numerator,this.denominator,this.wholeValue,!1)}get Numerator(){return this.numerator}set Numerator(i){this.numerator!==i&&(this.numerator=i,this.simplify(),this.setRealValue())}get Denominator(){return this.denominator}set Denominator(i){this.denominator!==i&&(this.denominator=i,this.numerator!==0&&this.simplify(),this.setRealValue())}get WholeValue(){return this.wholeValue}set WholeValue(i){this.wholeValue!==i&&(this.wholeValue=i,this.setRealValue())}GetExpandedNumerator(){return this.wholeValue*this.denominator+this.numerator}calculateNumberOfNeededDots(){let i=1,e=2;const t=this.GetExpandedNumerator();for(;ei;)e.Numerator++;if(this.numerator>this.denominator){const t=new _Fraction(this.numerator-1,this.denominator,this.wholeValue);for(;t.Denominator>i;)t.Numerator--;if(t.Denominator_Fraction.maximumAllowedNumber){const t=this.denominator/_Fraction.maximumAllowedNumber;this.numerator=Math.round(this.numerator/t),this.denominator=Math.round(this.denominator/t)}if(this.numerator>_Fraction.maximumAllowedNumber){const t=this.numerator/_Fraction.maximumAllowedNumber;this.numerator=Math.round(this.numerator/t),this.denominator=Math.round(this.denominator/t)}}isOnBeat(i){const e=this.distanceFromBeat(i);return Math.abs(e)<_Fraction.FloatInaccuracyTolerance}distanceFromBeat(i){const e=new _Fraction(1,i.Denominator);return this.RealValue%e.RealValue}};let Fraction$1=_Fraction;Fraction$1.maximumAllowedNumber=46340;Fraction$1.FloatInaccuracyTolerance=1e-4;class AbstractExpression{constructor(e){this.placement=e}static isStringInStringList(e,t){for(let s=0,r=e.length;s(i[i.Above=0]="Above",i[i.Below=1]="Below",i[i.Left=2]="Left",i[i.Right=3]="Right",i[i.NotYetDefined=4]="NotYetDefined",i[i.AboveOrBelow=5]="AboveOrBelow",i))(PlacementEnum||{});const _ContinuousDynamicExpression=class extends AbstractExpression{constructor(i,e,t,s,r,o,a=""){super(e),super.parentMeasure=s,this.NumberXml=o,this.dynamicType=i,this.label=a,this.staffNumber=t,this.activeInstantaneousDynamic=r,this.startVolume=1,this.endVolume=1,this.setStartAndEndVolume(),a!==""&&this.setType()}setStartAndEndVolume(){this.activeInstantaneousDynamic&&(this.dynamicType===0&&(this.startVolume=this.activeInstantaneousDynamic.Volume,this.endVolume=this.activeInstantaneousDynamic.Volume*1.2),this.dynamicType===1&&(this.startVolume=this.activeInstantaneousDynamic.Volume,this.endVolume=this.activeInstantaneousDynamic.Volume*.8))}get DynamicType(){return this.dynamicType}set DynamicType(i){this.dynamicType=i}get StartMultiExpression(){return this.startMultiExpression}set StartMultiExpression(i){this.startMultiExpression=i}get EndMultiExpression(){return this.endMultiExpression}set EndMultiExpression(i){this.endMultiExpression=i}get Placement(){return this.placement}set Placement(i){this.placement=i}get StartVolume(){return this.startVolume}set StartVolume(i){this.startVolume=i}get EndVolume(){return this.endVolume}set EndVolume(i){this.endVolume=i}get StaffNumber(){return this.staffNumber}set StaffNumber(i){this.staffNumber=i}get Label(){return this.label}set Label(i){this.label=i,this.setType()}static isInputStringContinuousDynamic(i){return i?_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicIncreasing,i)||_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicDecreasing,i):!1}getInterpolatedDynamic(i){const e=this.StartMultiExpression.AbsoluteTimestamp;let t;if(this.EndMultiExpression?t=this.EndMultiExpression.AbsoluteTimestamp:t=Fraction$1.plus(this.startMultiExpression.SourceMeasureParent.AbsoluteTimestamp,this.startMultiExpression.SourceMeasureParent.Duration),i.lt(e))return-1;if(t.lt(i))return-2;const s=Fraction$1.minus(i,e).RealValue/Fraction$1.minus(t,e).RealValue;return Math.max(0,Math.min(99.9,this.startVolume+(this.endVolume-this.startVolume)*s))}isWedge(){return!this.label}setType(){_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicIncreasing,this.label)?this.dynamicType=0:_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicDecreasing,this.label)&&(this.dynamicType=1)}};let ContinuousDynamicExpression=_ContinuousDynamicExpression;ContinuousDynamicExpression.listContinuousDynamicIncreasing=["crescendo","cresc","cresc.","cres."];ContinuousDynamicExpression.listContinuousDynamicDecreasing=["decrescendo","decresc","decr.","diminuendo","dim.","dim"];var ContDynamicEnum=(i=>(i[i.crescendo=0]="crescendo",i[i.diminuendo=1]="diminuendo",i))(ContDynamicEnum||{}),DynamicExpressionSymbolEnum=(i=>(i[i.p=0]="p",i[i.f=1]="f",i[i.s=2]="s",i[i.z=3]="z",i[i.m=4]="m",i[i.r=5]="r",i))(DynamicExpressionSymbolEnum||{});class MusicSheetReadingException{constructor(e,t){this.message=e,t&&(this.message+=" "+t.toString())}}class ArgumentOutOfRangeException{constructor(e){this.message=e}}class InvalidEnumArgumentException{constructor(e){this.message=e}}var loglevelExports={},loglevel={get exports(){return loglevelExports},set exports(i){loglevelExports=i}};(function(i){(function(e,t){i.exports?i.exports=t():e.log=t()})(commonjsGlobal,function(){var e=function(){},t="undefined",s=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function o(S,v){var x=S[v];if(typeof x.bind=="function")return x.bind(S);try{return Function.prototype.bind.call(x,S)}catch(A){return function(){return Function.prototype.apply.apply(x,[S,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(S){return S==="debug"&&(S="log"),typeof console===t?!1:S==="trace"&&s?a:console[S]!==void 0?o(console,S):console.log!==void 0?o(console,"log"):e}function c(S,v){for(var x=0;x=0&&R<=A.levels.SILENT){if(E=R,N!==!1&&_(R),c.call(A,R,S),typeof console===t&&R"u"}i.isUndefined=l;function c(u){return Object.prototype.toString.call(u)==="[object String]"}i.isString=c;function d(u){return l(u)||!a(u)?function(g,b){return g=0;o--)if(s(i[o],e))return o;return-1}arrays$4.lastIndexOf=lastIndexOf;function contains(i,e,t){return indexOf$1(i,e,t)>=0}arrays$4.contains=contains;function remove(i,e,t){var s=indexOf$1(i,e,t);return s<0?!1:(i.splice(s,1),!0)}arrays$4.remove=remove;function frequency(i,e,t){for(var s=t||util$a.defaultEquals,r=i.length,o=0,a=0;a=i.length||t<0||t>=i.length)return!1;var s=i[e];return i[e]=i[t],i[t]=s,!0}arrays$4.swap=swap;function toString$1(i){return"["+i.toString()+"]"}arrays$4.toString=toString$1;function forEach(i,e){for(var t=0,s=i;t=0;r--)s._howls[r].stereo(t);return s},HowlerGlobal.prototype.pos=function(t,s,r){var o=this;if(!o.ctx||!o.ctx.listener)return o;if(s=typeof s!="number"?o._pos[1]:s,r=typeof r!="number"?o._pos[2]:r,typeof t=="number")o._pos=[t,s,r],typeof o.ctx.listener.positionX<"u"?(o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1),o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1),o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)):o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);else return o._pos;return o},HowlerGlobal.prototype.orientation=function(t,s,r,o,a,l){var c=this;if(!c.ctx||!c.ctx.listener)return c;var d=c._orientation;if(s=typeof s!="number"?d[1]:s,r=typeof r!="number"?d[2]:r,o=typeof o!="number"?d[3]:o,a=typeof a!="number"?d[4]:a,l=typeof l!="number"?d[5]:l,typeof t=="number")c._orientation=[t,s,r,o,a,l],typeof c.ctx.listener.forwardX<"u"?(c.ctx.listener.forwardX.setTargetAtTime(t,Howler.ctx.currentTime,.1),c.ctx.listener.forwardY.setTargetAtTime(s,Howler.ctx.currentTime,.1),c.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),c.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1),c.ctx.listener.upY.setTargetAtTime(a,Howler.ctx.currentTime,.1),c.ctx.listener.upZ.setTargetAtTime(l,Howler.ctx.currentTime,.1)):c.ctx.listener.setOrientation(t,s,r,o,a,l);else return d;return c},Howl.prototype.init=function(t){return function(s){var r=this;return r._orientation=s.orientation||[1,0,0],r._stereo=s.stereo||null,r._pos=s.pos||null,r._pannerAttr={coneInnerAngle:typeof s.coneInnerAngle<"u"?s.coneInnerAngle:360,coneOuterAngle:typeof s.coneOuterAngle<"u"?s.coneOuterAngle:360,coneOuterGain:typeof s.coneOuterGain<"u"?s.coneOuterGain:0,distanceModel:typeof s.distanceModel<"u"?s.distanceModel:"inverse",maxDistance:typeof s.maxDistance<"u"?s.maxDistance:1e4,panningModel:typeof s.panningModel<"u"?s.panningModel:"HRTF",refDistance:typeof s.refDistance<"u"?s.refDistance:1,rolloffFactor:typeof s.rolloffFactor<"u"?s.rolloffFactor:1},r._onstereo=s.onstereo?[{fn:s.onstereo}]:[],r._onpos=s.onpos?[{fn:s.onpos}]:[],r._onorientation=s.onorientation?[{fn:s.onorientation}]:[],t.call(this,s)}}(Howl.prototype.init),Howl.prototype.stereo=function(t,s){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(t,s)}}),r;var o=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof s>"u")if(typeof t=="number")r._stereo=t,r._pos=[t,0,0];else return r._stereo;for(var a=r._getSoundIds(s),l=0;l"u")if(typeof t=="number")a._pos=[t,s,r];else return a._pos;for(var l=a._getSoundIds(o),c=0;c"u")if(typeof t=="number")a._orientation=[t,s,r];else return a._orientation;for(var l=a._getSoundIds(o),c=0;c"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),t._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:t._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:t._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:t._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:t._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:t._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:t._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:t._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:t._panningModel});else return a=t._soundById(parseInt(s[0],10)),a?a._pannerAttr:t._pannerAttr;else s.length===2&&(r=s[0],o=parseInt(s[1],10));for(var l=t._getSoundIds(o),c=0;c{if(!metronomeData.lineShow)return;const i=document.querySelector("#cursorImg-0");i&&(state$1.times[state$1.activeNoteIndex].multipleRestMeasures?i.classList.remove("lineHide"):i.classList.add("lineHide"))};watch(()=>metronomeData.lineShow,()=>{const i=document.querySelector("#cursorImg-0");i&&(metronomeData.lineShow?i.classList.add("lineHide"):i.classList.remove("lineHide"))});class Metronome{constructor(e){ct(this,"playType","tick");ct(this,"source",null);ct(this,"source1",null);ct(this,"source2",null);ct(this,"sound",e=>{state$1.sectionStatus||(e=setCurrentTime(e));let t=-1,s=-1;for(let r=0;r=o)t=r,s=o;else break}if(t>-1&&metronomeData.activeIndex!==t){metronomeData.activeIndex=t,metronomeData.activeMetro=this.getStep(s),this.playAudio(),metronomeData.isClick=!1;return}toggleLine(),metronomeData.isClick=!1});ct(this,"playAudio",()=>{var e;metronomeData.initPlayerState&&(this.source=((e=metronomeData.activeMetro)==null?void 0:e.index)===0?this.source1:this.source2,this.source.volume(metronomeData.disable||state$1.playState==="paused"?0:.4),this.source.play())});ct(this,"loadAudio1",()=>new howler.Howl({src:tockAndTick.tick}));ct(this,"loadAudio2",()=>new howler.Howl({src:tockAndTick.tock}))}init(e){this.calculation(e),metronomeData.activeList=[]}initPlayer(){this.source1||(this.source1=this.loadAudio1()),this.source2||(this.source2=this.loadAudio2()),metronomeData.initPlayerState=!0}selectPlay(){}getStep(e){for(let t=0;to.time===e);if(r)return r}return{}}calculation(e){var a,l,c,d,m,u,g,b,y,S,v,x,A,E;const t=[];let s=-1;for(let w=0;w-1&&C!=s){const I={measureNumberXML:C,measureNumberIndex:P,numerator:((g=(u=(m=_==null?void 0:_.noteElement)==null?void 0:m.sourceMeasure)==null?void 0:u.ActiveTimeSignature)==null?void 0:g.numerator)||0,start:_.measures[0].time,end:_.measures[_.measures.length-1].endtime,time:_.measures[_.measures.length-1].endtime-_.measures[0].time,stave_x:((x=(v=(S=(y=(b=_==null?void 0:_.noteElement)==null?void 0:b.sourceMeasure)==null?void 0:y.verticalMeasureList)==null?void 0:S[0])==null?void 0:v.stave)==null?void 0:x.x)||0,end_x:((A=_==null?void 0:_.stave)==null?void 0:A.end_x)||0||0,stepList:[],svgs:[],isRestFlag:_.isRestFlag};if([121].includes(state$1.subjectId)){const R=e.filter(N=>{var G,B;return((B=(G=N==null?void 0:N.noteElement)==null?void 0:G.sourceMeasure)==null?void 0:B.measureListIndex)==P});_.measures=R,I.start=_.measures[0].time,I.end=_.measures[_.measures.length-1].endtime,I.time=_.measures[_.measures.length-1].endtime-_.measures[0].time;try{const N=_.noteElement.sourceMeasure.verticalMeasureList.reduce((B,k)=>(B.push(...k.vfVoices[1].tickables),B),[]),G=[];I.svgs=N.map(B=>{const k=B.getBoundingBox().x;if(!G.includes(k)&&B.duration!=="w")return G.push(k),B._start_x=k,B}).filter(Boolean).sort((B,k)=>B._start_x-k._start_x)}catch(N){console.log(N)}I.stepList=calculateMutilpleMetroStep(_.measures,I)}else I.stepList=calculateMetroStep(_.measures,I);t.push(I),s=C}}let r=[];const o=[];try{for(let w=0;w-1?`${B} + ${I}%`:`${B}px + ${I}%`:`${I}%`,_.stepList[R]=G}o[w].push({index:R,time:N,left:(G==null?void 0:G.indexOf("%"))>-1?`calc(${G})`:G,measureNumberXML:_.measureNumberXML,isRestFlag:_.isRestFlag})}}}catch(w){console.log(w)}metronomeData.metroList=r,metronomeData.metroMeasure=o,metronomeData.activeMetro=((E=o[0])==null?void 0:E[0])||{}}}function calculateMetroStep(i,e){var l,c,d,m,u,g,b,y,S,v,x,A,E,w,_,C,P,I,R,N,G,B,k,T,V,J,W,se,ne,fe,Z,K,be,oe,Y,ae,de,le,me,ve,ye,U,Q,M,$;const s=i.reduce((z,F)=>(z+=F._noteLength,z),0)/e.numerator;if(i.length===1){const z=i[0].svgElement;if(z&&!z.isRest()){const F=((u=(m=(d=(c=(l=z==null?void 0:z.attrs)==null?void 0:l.el)==null?void 0:c.parentElement)==null?void 0:d.parentElement)==null?void 0:m.getBoundingClientRect)==null?void 0:u.call(m))||{x:0,right:0};let O=((y=(b=(g=z==null?void 0:z.attrs)==null?void 0:g.el)==null?void 0:b.getBoundingClientRect)==null?void 0:y.call(b))||{x:0},H=Math.abs(F.right-O.x)/e.numerator,ie=[];for(let ee=0;ee=1){r-=s;const ie=((B=(G=(N=(R=(I=(P=F==null?void 0:F.svgElement)==null?void 0:P.attrs)==null?void 0:I.el)==null?void 0:R.parentElement)==null?void 0:N.parentElement)==null?void 0:G.getBoundingClientRect)==null?void 0:B.call(G))||{x:0};if(o.length>0){let he=((W=(J=(V=(T=(k=o[0])==null?void 0:k.svgElement)==null?void 0:T.attrs)==null?void 0:V.el)==null?void 0:J.getBoundingClientRect)==null?void 0:W.call(J))||{x:0},re=he.x-ie.x;if(o[0]._noteLength/s>=1){const ge=((K=(Z=(fe=(ne=(se=i[o[0].index+1])==null?void 0:se.svgElement)==null?void 0:ne.attrs)==null?void 0:fe.el)==null?void 0:Z.getBoundingClientRect)==null?void 0:K.call(Z))||{x:ie.right},xe=Math.abs(he.x-ge.x)/2;re=he.x-ie.x+xe}a.push(re)}else{let re=(((ae=(Y=(oe=(be=F==null?void 0:F.svgElement)==null?void 0:be.attrs)==null?void 0:oe.el)==null?void 0:Y.getBoundingClientRect)==null?void 0:ae.call(Y))||{x:0}).x-ie.x;a.push(re)}o=[];let ee=((ve=(me=(le=(de=F==null?void 0:F.svgElement)==null?void 0:de.attrs)==null?void 0:le.el)==null?void 0:me.getBoundingClientRect)==null?void 0:ve.call(me))||{x:0},te=ee.x-ie.x,ce=0;if(H>1){const he=(($=(M=(Q=(U=(ye=i[z+1])==null?void 0:ye.svgElement)==null?void 0:U.attrs)==null?void 0:Q.el)==null?void 0:M.getBoundingClientRect)==null?void 0:$.call(M))||{x:ie.right};ce=Math.abs(ee.x-he.x)/H}for(let he=1;heNumber.EPSILON&&r>0&&o.push(F)}return a=a.reduce((z,F)=>(z.includes(F)?z.push(void 0):z.push(F),z),[]),a}function calculateMutilpleMetroStep(i,e){var l,c,d,m,u,g,b,y,S,v,x,A,E,w,_,C,P,I,R;const t=e.time/e.numerator,s=((b=(g=(u=(m=(d=(c=(l=i[0])==null?void 0:l.svgElement)==null?void 0:c.attrs)==null?void 0:d.el)==null?void 0:m.parentElement)==null?void 0:u.parentElement)==null?void 0:g.getBoundingClientRect)==null?void 0:b.call(g))||{x:0};if(i.length===1){const N=e.svgs[0];let G=((v=(S=(y=N==null?void 0:N.attrs)==null?void 0:y.el)==null?void 0:S.getBoundingClientRect)==null?void 0:v.call(S))||{x:0};return N&&!N.isRest()?[G.x-s.x]:[]}let r=0,o=[],a=[];for(let N=0;Nt){r-=t;let V=T.x-s.x;o.length>0&&(k=(_=(w=e.svgs[o[0]._index])==null?void 0:w.attrs)==null?void 0:_.el,T=((C=k==null?void 0:k.getBoundingClientRect)==null?void 0:C.call(k))||{x:0},V=T.x-s.x),a.push(V),o=[]}else o.push(G);if(Math.abs(r-t)<.001){let V=T.x-s.x;o.length>0&&(k=(I=(P=e.svgs[o[0]._index])==null?void 0:P.attrs)==null?void 0:I.el,T=((R=k==null?void 0:k.getBoundingClientRect)==null?void 0:R.call(k))||{x:0},V=T.x-s.x),a.push(V),r=0,o=[]}}return a=a.reduce((N,G)=>(N.includes(G)?N.push(void 0):N.push(G),N),[]),a}function setCurrentTime(i){return browserInfo$3.huawei||browserInfo$3.xiaomi?i+=.125:browserInfo$3.android?i+=.11:browserInfo$3.ios&&(i+=.01),i}var GradualVersion=(i=>(i[i.BASE=0]="BASE",i[i.ENSEMBLE=1]="ENSEMBLE",i))(GradualVersion||{});const scoreMode="_scoreMode_11hmk_1",styles$4={scoreMode};var context={locks:{},zIndex:2e3,enableRipple:!0};reactive(context);const Context=reactive(context),isString=i=>typeof i=="string",isBoolean=i=>typeof i=="boolean",isNumber=i=>typeof i=="number",isPlainObject=i=>Object.prototype.toString.call(i)==="[object Object]",isArray$1=i=>Array.isArray(i),isURL=i=>i?/^(http)|(\.*\/)/.test(i):!1,toNumber=i=>i==null?0:isString(i)?(i=parseFloat(i),i=Number.isNaN(i)?0:i,i):isBoolean(i)?Number(i):i,inBrowser=()=>typeof window<"u";function getViewportSize(){var{innerWidth:i,innerHeight:e}=window;return i>e?{vMin:e,vMax:i}:{vMin:i,vMax:e}}var isRem=i=>isString(i)&&i.endsWith("rem"),isPx=i=>isString(i)&&i.endsWith("px")||isNumber(i),isPercent=i=>isString(i)&&i.endsWith("%"),isVw=i=>isString(i)&&i.endsWith("vw"),isVh=i=>isString(i)&&i.endsWith("vh"),isVMin=i=>isString(i)&&i.endsWith("vmin"),isVMax=i=>isString(i)&&i.endsWith("vmax"),isCalc=i=>isString(i)&&i.startsWith("calc("),isVar=i=>isString(i)&&i.startsWith("var("),toPxNum=i=>{if(isNumber(i))return i;if(isPx(i))return+i.replace("px","");if(isVw(i))return+i.replace("vw","")*window.innerWidth/100;if(isVh(i))return+i.replace("vh","")*window.innerHeight/100;if(isRem(i)){var e=+i.replace("rem",""),t=window.getComputedStyle(document.documentElement).fontSize;return e*parseFloat(t)}return isVMin(i)?getViewportSize().vMin:isVMax(i)?getViewportSize().vMax:isString(i)?toNumber(i):0},toSizeUnit=i=>{if(i!=null)return isPercent(i)||isVw(i)||isVh(i)||isRem(i)||isCalc(i)||isVar(i)||isVMin(i)||isVMax(i)?i:toPxNum(i)+"px"},multiplySizeUnit=function(i,e){if(e===void 0&&(e=1),i!=null){var t=toSizeUnit(i),s=t.match(/(vh|%|rem|px|vw)$/)[0];return""+parseFloat(t)*e+s}};function useMounted(i){let e=!1;onMounted(()=>{i(),nextTick(()=>{e=!0})}),onActivated(()=>{e&&i()})}function useEventListener(i,e,t,s={}){if(!inBrowser())return;const{passive:r=!1,capture:o=!1}=s;let a=!1,l=!1;const c=g=>{if(a||l)return;const b=unref(g);b&&(b.addEventListener(e,t,{passive:r,capture:o}),a=!0)},d=g=>{if(!a||l)return;const b=unref(g);b&&(b.removeEventListener(e,t,{capture:o}),a=!1)};let m;isRef(i)&&(m=watch(()=>i.value,(g,b)=>{d(b),c(g)}));const u=()=>{m==null||m(),d(i),l=!0};return useMounted(()=>{c(i)}),onBeforeUnmount(()=>{d(i)}),onDeactivated(()=>{d(i)}),u}globalThis&&globalThis.__rest;function _extends$2(){return _extends$2=Object.assign?Object.assign.bind():function(i){for(var e=1;e(t[s]=i[s],t),{}):i[e]}function mount(i){var e=createApp(i),t=document.createElement("div");return document.body.appendChild(t),{instance:e.mount(t),unmount(){e.unmount(),document.body.removeChild(t)}}}function mountInstance(i,e,t){e===void 0&&(e={}),t===void 0&&(t={});var s={setup(){return()=>h(i,_extends$2({},e,t))}},{unmount:r}=mount(s);return{unmountInstance:r}}function useRouteListener(i){inBrowser()&&(useEventListener(window,"hashchange",i),useEventListener(window,"popstate",i))}function useTeleport(){var i=ref(!1);return onActivated(()=>{i.value=!1}),onDeactivated(()=>{i.value=!0}),{disabled:i}}function createNamespace(i){var e="var",t=e+"-"+i,s=o=>o?o[0]==="$"?o.replace("$",e):o.startsWith("--")?""+t+o:t+"__"+o:t,r=function(){for(var o=arguments.length,a=new Array(o),l=0;l{if(isArray$1(c)){var[d,m,u=null]=c;return d?m:u}return c})};return{n:s,classes:r}}function call(i){for(var e=arguments.length,t=new Array(e>1?e-1:0),s=1;sr(...t));if(i)return i(...t)}function defineListenerProp(i){return{type:[Function,Array],default:i}}function resolveLock(){var i=Object.keys(Context.locks).length;i<=0?document.body.classList.remove("var--lock"):document.body.classList.add("var--lock")}function addLock(i){Context.locks[i]=1,resolveLock()}function releaseLock(i){delete Context.locks[i],resolveLock()}function useLock(i,e){var{uid:t}=getCurrentInstance();e&&watch(e,s=>{s===!1?releaseLock(t):s===!0&&i()===!0&&addLock(t)}),watch(i,s=>{e&&e()===!1||(s===!0?addLock(t):releaseLock(t))}),onBeforeMount(()=>{e&&e()===!1||i()===!0&&addLock(t)}),onUnmounted(()=>{e&&e()===!1||i()===!0&&releaseLock(t)}),onActivated(()=>{e&&e()===!1||i()===!0&&addLock(t)}),onDeactivated(()=>{e&&e()===!1||i()===!0&&releaseLock(t)})}function useZIndex(i,e){var t=ref(Context.zIndex);return watch(i,s=>{s&&(Context.zIndex+=e,t.value=Context.zIndex)},{immediate:!0}),{zIndex:t}}var props$3={name:{type:String},size:{type:[Number,String]},color:{type:String},namespace:{type:String,default:"var-icon"},transition:{type:[Number,String],default:0},animationClass:{type:String},onClick:defineListenerProp()};function asyncGeneratorStep(i,e,t,s,r,o,a){try{var l=i[o](a),c=l.value}catch(d){t(d);return}l.done?e(c):Promise.resolve(c).then(s,r)}function _asyncToGenerator(i){return function(){var e=this,t=arguments;return new Promise(function(s,r){var o=i.apply(e,t);function a(c){asyncGeneratorStep(o,s,r,a,l,"next",c)}function l(c){asyncGeneratorStep(o,s,r,a,l,"throw",c)}a(void 0)})}}var{n:n$3,classes:classes$2}=createNamespace("icon");function __render__$3(i,e){return openBlock(),createBlock(resolveDynamicComponent(i.isURL(i.name)?"img":"i"),{class:normalizeClass(i.classes(i.n(),[i.namespace!==i.n(),i.namespace],i.namespace+"--set",[i.isURL(i.name),i.n("image"),i.namespace+"-"+i.nextName],[i.animateInProgress,i.animationClass==null?i.n("--shrinking"):i.animationClass])),style:normalizeStyle({color:i.color,"transition-duration":i.toNumber(i.transition)+"ms",width:i.isURL(i.name)?i.toSizeUnit(i.size):null,height:i.isURL(i.name)?i.toSizeUnit(i.size):null,fontSize:i.toSizeUnit(i.size)}),src:i.isURL(i.name)?i.nextName:null,onClick:i.onClick},null,8,["class","style","src","onClick"])}var __sfc__$3=defineComponent({name:"VarIcon",props:props$3,setup(i){var e=ref(""),t=ref(!1),s=function(){var r=_asyncToGenerator(function*(o,a){var{transition:l}=i;if(a==null||toNumber(l)===0){e.value=o;return}t.value=!0,yield nextTick(),setTimeout(()=>{a!=null&&(e.value=o),t.value=!1},toNumber(l))});return function(a,l){return r.apply(this,arguments)}}();return watch(()=>i.name,s,{immediate:!0}),{n:n$3,classes:classes$2,nextName:e,animateInProgress:t,isURL,toNumber,toSizeUnit}}});__sfc__$3.render=__render__$3;const Icon=__sfc__$3;Icon.install=function(i){i.component(Icon.name,Icon)};function typeValidator$1(i){return["circle","wave","cube","rect","disappear"].includes(i)}function sizeValidator(i){return["normal","mini","small","large"].includes(i)}var props$2={type:{type:String,default:"circle",validator:typeValidator$1},radius:{type:[String,Number]},size:{type:String,default:"normal",validator:sizeValidator},color:{type:String},description:{type:String},loading:{type:Boolean,default:!1}},{n:n$2,classes:classes$1}=createNamespace("loading"),_withScopeId=i=>(pushScopeId(""),i=i(),popScopeId(),i),_hoisted_1=_withScopeId(()=>createBaseVNode("svg",{viewBox:"25 25 50 50"},[createBaseVNode("circle",{cx:"50",cy:"50",r:"20",fill:"none"})],-1)),_hoisted_2=[_hoisted_1];function __render__$2(i,e){return openBlock(),createElementBlock("div",{class:normalizeClass(i.n())},[i.$slots.default?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.classes(i.n("content"),[i.loading,i.n("content--active")]))},[renderSlot(i.$slots,"default"),i.loading?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.n("content-mask"))},null,2)):createCommentVNode("v-if",!0)],2)):createCommentVNode("v-if",!0),i.isShow?(openBlock(),createElementBlock("div",{key:1,class:normalizeClass(i.classes(i.n("$--box"),i.n("body"),[i.$slots.default,i.n("inside")]))},[i.type==="circle"?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.n("circle"))},[createBaseVNode("span",{class:normalizeClass(i.classes(i.n("circle-block"),i.n("circle-block--"+i.size))),style:normalizeStyle({width:i.multiplySizeUnit(i.radius,2),height:i.multiplySizeUnit(i.radius,2),color:i.color})},_hoisted_2,6)],2)):createCommentVNode("v-if",!0),(openBlock(!0),createElementBlock(Fragment,null,renderList(i.loadingTypeDict,(t,s)=>(openBlock(),createElementBlock(Fragment,{key:s},[i.type===s?(openBlock(),createElementBlock("div",{key:0,class:normalizeClass(i.classes(i.n(s),i.n(s+"--"+i.size)))},[(openBlock(!0),createElementBlock(Fragment,null,renderList(t,r=>(openBlock(),createElementBlock("div",{key:r+s,style:normalizeStyle({backgroundColor:i.color}),class:normalizeClass(i.classes(i.n(s+"-item"),i.n(s+"-item--"+i.size)))},null,6))),128))],2)):createCommentVNode("v-if",!0)],64))),128)),i.$slots.description||i.description?(openBlock(),createElementBlock("div",{key:1,class:normalizeClass(i.classes(i.n("description"),i.n("description--"+i.size))),style:normalizeStyle({color:i.color})},[renderSlot(i.$slots,"description",{},()=>[createTextVNode(toDisplayString(i.description),1)])],6)):createCommentVNode("v-if",!0)],2)):createCommentVNode("v-if",!0)],2)}var __sfc__$2=defineComponent({name:"VarLoading",props:props$2,setup(i,e){var{slots:t}=e,s={wave:5,cube:4,rect:8,disappear:3},r=computed(()=>call(t.default)?i.loading:!0);return{n:n$2,classes:classes$1,multiplySizeUnit,loadingTypeDict:s,isShow:r}}});__sfc__$2.render=__render__$2;const Loading=__sfc__$2;Loading.install=function(i){i.component(Loading.name,Loading)};function _extends$1(){return _extends$1=Object.assign?Object.assign.bind():function(i){for(var e=1;e[createTextVNode(toDisplayString(i.content),1)])],2),createBaseVNode("div",{class:normalizeClass(i.n("action"))},[i.iconName?(openBlock(),createBlock(t,{key:0,name:i.iconName},null,8,["name"])):createCommentVNode("v-if",!0),i.type==="loading"?(openBlock(),createBlock(s,{key:1,type:i.loadingType,size:i.loadingSize,color:i.loadingColor,radius:i.loadingRadius},null,8,["type","size","color","radius"])):createCommentVNode("v-if",!0),renderSlot(i.$slots,"action")],2)],6)],6)),[[vShow,i.show]])}var __sfc__$1=defineComponent({name:"VarSnackbarCore",components:{VarLoading:Loading,VarIcon:Icon},props:props$1,setup(i){var e=ref(null),{zIndex:t}=useZIndex(()=>i.show,1);useLock(()=>i.show,()=>i.lockScroll);var s=computed(()=>i.type==="loading"||i.forbidClick),r=computed(()=>i.type?ICON_TYPE_DICT[i.type]:""),o=()=>{e.value=setTimeout(()=>{i.type!=="loading"&&call(i["onUpdate:show"],!1)},i.duration)};return watch(()=>i.show,a=>{a?(call(i.onOpen),o()):a===!1&&(clearTimeout(e.value),call(i.onClose))}),watch(()=>i._update,()=>{clearTimeout(e.value),o()}),useMounted(()=>{i.show&&(call(i.onOpen),o())}),{SNACKBAR_TYPE,n:n$1,classes,zIndex:t,iconName:r,isForbidClick:s}}});__sfc__$1.render=__render__$1;const VarSnackbarCore=__sfc__$1;var{n}=createNamespace("snackbar");function __render__(i,e){var t=resolveComponent("var-snackbar-core");return openBlock(),createBlock(Teleport,{to:i.teleport,disabled:i.disabled},[createVNode(Transition,{name:i.n()+"-fade",onAfterEnter:i.onOpened,onAfterLeave:i.onClosed},{default:withCtx(()=>[createVNode(t,mergeProps(i.$props,{class:i.n("transition")}),{action:withCtx(()=>[renderSlot(i.$slots,"action")]),default:withCtx(()=>[renderSlot(i.$slots,"default",{},()=>[createTextVNode(toDisplayString(i.content),1)])]),_:3},16,["class"])]),_:3},8,["name","onAfterEnter","onAfterLeave"])],8,["to","disabled"])}var __sfc__=defineComponent({name:"VarSnackbar",components:{VarSnackbarCore},props:props$1,setup(){var{disabled:i}=useTeleport();return{n,disabled:i}}});__sfc__.render=__render__;const VarSnackbar=__sfc__;function _extends(){return _extends=Object.assign?Object.assign.bind():function(i){for(var e=1;e{},onOpened:()=>{},onClose:()=>{},onClosed:()=>{}},uniqSnackbarOptions=reactive([]),defaultOptions=defaultOptionsValue,transitionGroupProps={name:"var-snackbar-fade",tag:"div",class:"var-transition-group"},TransitionGroupHost={setup(){return()=>{var i=uniqSnackbarOptions.map(e=>{var{id:t,reactiveSnackOptions:s,_update:r}=e,o=document.querySelector(".var-transition-group");s.forbidClick||s.type==="loading"?o.classList.add("var-pointer-auto"):o.classList.remove("var-pointer-auto"),isAllowMultiple&&(s.position="top");var a=isAllowMultiple?"relative":"absolute",l=_extends({position:a},getTop(s.position));return createVNode(VarSnackbarCore,mergeProps(s,{key:t,style:l,"data-id":t,_update:r,show:s.show,"onUpdate:show":c=>s.show=c}),null)});return createVNode(TransitionGroup,mergeProps(transitionGroupProps,{style:{zIndex:Context.zIndex},onAfterEnter:opened,onAfterLeave:removeUniqOption}),_isSlot(i)?i:{default:()=>[i]})}}},Snackbar=function(i){var e=normalizeOptions(i),t=reactive(_extends({},defaultOptions,e));t.show=!0,isMount||(isMount=!0,unmount=mountInstance(TransitionGroupHost).unmountInstance);var{length:s}=uniqSnackbarOptions,r={id:sid++,reactiveSnackOptions:t};if(s===0||isAllowMultiple)addUniqOption(r);else{var o="update-"+sid;updateUniqOption(t,o)}return{clear(){!isAllowMultiple&&uniqSnackbarOptions.length?uniqSnackbarOptions[0].reactiveSnackOptions.show=!1:t.show=!1}}};SNACKBAR_TYPE.forEach(i=>{Snackbar[i]=e=>(isPlainObject(e)?e.type=i:e={content:e,type:i},Snackbar(e))});Snackbar.install=function(i){i.component(VarSnackbar.name,VarSnackbar)};Snackbar.allowMultiple=function(i){i===void 0&&(i=!1),i!==isAllowMultiple&&(uniqSnackbarOptions.forEach(e=>{e.reactiveSnackOptions.show=!1}),isAllowMultiple=i)};Snackbar.clear=function(){uniqSnackbarOptions.forEach(i=>{i.reactiveSnackOptions.show=!1})};Snackbar.setDefaultOptions=function(i){defaultOptions=i};Snackbar.resetDefaultOptions=function(){defaultOptions=defaultOptionsValue};Snackbar.Component=VarSnackbar;function opened(i){var e=i.getAttribute("data-id"),t=uniqSnackbarOptions.find(s=>s.id===toNumber(e));t&&call(t.reactiveSnackOptions.onOpened)}function removeUniqOption(i){i.parentElement&&i.parentElement.classList.remove("var-pointer-auto");var e=i.getAttribute("data-id"),t=uniqSnackbarOptions.find(r=>r.id===toNumber(e));t&&(t.animationEnd=!0,call(t.reactiveSnackOptions.onClosed));var s=uniqSnackbarOptions.every(r=>r.animationEnd);s&&(call(unmount),uniqSnackbarOptions=reactive([]),isMount=!1)}function addUniqOption(i){uniqSnackbarOptions.push(i)}function normalizeOptions(i){return i===void 0&&(i={}),isString(i)?{content:i}:i}function updateUniqOption(i,e){var[t]=uniqSnackbarOptions;t.reactiveSnackOptions=_extends({},t.reactiveSnackOptions,i),t._update=e}function getTop(i){return i===void 0&&(i="top"),i==="bottom"?{[i]:"5%"}:{top:i==="top"?"5%":"45%"}}VarSnackbar.install=function(i){i.component(VarSnackbar.name,VarSnackbar)};const Snackbar$1=Snackbar,Image1=""+new URL("5-d8bfbf51.png",import.meta.url).href,Image2=""+new URL("4-cfa387c7.png",import.meta.url).href,Image3=""+new URL("3-d02c685a.png",import.meta.url).href,Image4=""+new URL("2-5c4c2ef5.png",import.meta.url).href,Image5=""+new URL("1-a0d5037d.png",import.meta.url).href,clx1=""+new URL("clx5-b3331931.svg",import.meta.url).href,clx2=""+new URL("clx4-7a8a1657.svg",import.meta.url).href,clx3=""+new URL("clx3-82262a8a.svg",import.meta.url).href,clx4=""+new URL("clx2-99f2ced3.svg",import.meta.url).href,clx5=""+new URL("clx1-3d063166.svg",import.meta.url).href,good="data:image/png;base64,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",bad="data:image/png;base64,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",perfect="data:image/png;base64,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",great="data:image/png;base64,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",scoreIcon={good,bad,perfect,great},leveByScoreMeasureIcons=[{icon:scoreIcon.bad,text:"bad",color:"#EE4C6A"},{icon:scoreIcon.good,text:"good",color:"#FF958B"},{icon:scoreIcon.great,text:"great",color:"#FF8E5A"},{icon:scoreIcon.perfect,text:"perfect",color:"#516AFF"}],icons=[{img:Image1,tips:"你的演奏不太好,再练一练吧~",mome:"敢于尝试",clxImg:clx1,clxtip:"你的演奏不太好,音准和完整性还需加强,再练一练吧~",clxmome:"敢于尝试"},{img:Image2,tips:"你的演奏还不熟练,加紧训练才能有好成绩哦~",mome:"还要加油哦~",clxImg:clx2,clxtip:"你的演奏还不熟练,音准和完整性还需加强,加紧训练才能有好成绩哦~",clxmome:"还要加油哦~"},{img:Image3,tips:"你的演奏还不流畅,科学的练习才能更完美哦~",mome:"突破自我",clxImg:clx3,clxtip:"你的演奏还不流畅,音准和节奏还需加强,科学的练习才能更完美哦~",clxmome:"突破自我"},{img:Image4,tips:"你的演奏还不错,继续加油吧,离完美就差一步啦~",mome:"崭露头角",clxImg:clx4,clxtip:"你的演奏还不错,继续加油吧,加强音准,离完美就差一步啦~",clxmome:"崭露头角"},{img:Image5,tips:"你的演奏完美无缺,继续努力吧~",mome:"你很棒",clxImg:clx5,clxtip:"你的演奏非常不错,音准的把握和节奏稍有瑕疵,完整性把握的很好~",clxmome:"你很棒"}],getLeveByScore=i=>{if(!i&&typeof i!="number")return{};let e=0;return i>20&&i<=40?e=1:i>40&&i<=60?e=2:i>60&&i<=80?e=3:i>80&&(e=4),{...icons[e],leve:e}},getLeveByScoreMeasure=i=>{if(!i&&typeof i!="number")return{};let e=0;return i>=40&&i<70?e=1:i>=70&&i<90?e=2:i>=90&&(e=3),e},audioList="_audioList_1j0z3_1",styles$3={audioList};let timer=null;const midiData=reactive({iframeRef:null,playing:!1,index:0,rate:1}),playNote=()=>{var t,s;if(!midiData.playing)return;const i=state$1.times[midiData.index];if(!i){onEnded();return}midiData.index++;const e=i.endtime-i.time;(s=(t=midiData.iframeRef)==null?void 0:t.contentWindow)==null||s.playNote(i.realKey,e),timer=setTimeout(()=>{playNote()},e/midiData.rate*1e3)},stopPlay=()=>{midiData.playing=!1},hanldeInitMidiData=i=>{midiData.iframeRef=i},handleTogglePlayMidi=i=>{i==="play"?(midiData.playing=!0,playNote(),onPlay()):stopPlay()},hanldeSetMidiPlaybackRate=i=>{midiData.rate=i},getMidiCurrentTime=()=>{let i=midiData.index-1;return i=i<0?0:i,state$1.times[i].time},getMidiDuration=()=>state$1.times[state$1.times.length-1].endtime,setMidiCurrentTime=i=>{clearTimeout(timer),midiData.index=i,playNote()},audioData=reactive({songEle:null,backgroundEle:null,midiRender:!1,progress:0,duration:0}),midiRef=ref(),audioListStart=i=>{var e,t,s,r;if(i==="play"&&state$1.originSpeed!==0&&setAudioPlaybackRate(state$1.speed/state$1.originSpeed),audioData.midiRender){handleTogglePlayMidi(i);return}i==="play"?((e=audioData.songEle)==null||e.play(),(t=audioData.backgroundEle)==null||t.play()):i==="paused"&&((s=audioData.songEle)==null||s.pause(),(r=audioData.backgroundEle)==null||r.pause())},setAudioPlaybackRate=i=>{if(audioData.midiRender){hanldeSetMidiPlaybackRate(i);return}audioData.songEle&&(audioData.songEle.playbackRate=i),audioData.backgroundEle&&(audioData.backgroundEle.playbackRate=i)},getAudioCurrentTime=()=>{var i,e,t;return audioData.midiRender?getMidiCurrentTime():state$1.playSource==="music"?((i=audioData.songEle)==null?void 0:i.currentTime)||audioData.progress:state$1.playSource==="background"?((e=audioData.backgroundEle)==null?void 0:e.currentTime)||audioData.progress:((t=audioData.songEle)==null?void 0:t.currentTime)||audioData.progress},getAudioDuration=()=>{var i,e;return audioData.midiRender?getMidiDuration():((i=audioData.songEle)==null?void 0:i.duration)||((e=audioData.backgroundEle)==null?void 0:e.duration)||audioData.duration},setAudioCurrentTime=(i,e=0)=>{if(audioData.midiRender){setMidiCurrentTime(e);return}audioData.songEle&&(audioData.songEle.currentTime=i),audioData.backgroundEle&&(audioData.backgroundEle.currentTime=i),audioData.progress=i},toggleMutePlayAudio=(i,e)=>{i==="music"?audioData.songEle&&(audioData.songEle.muted=e):i==="background"&&audioData.backgroundEle&&(audioData.backgroundEle.muted=e)},AudioList=defineComponent({name:"audio-list",setup(){const i=()=>{midiRef.value.contentWindow.handleRendered=()=>{audioData.midiRender=!0},hanldeInitMidiData(midiRef.value)};watch(()=>state$1.playSource,()=>{if(state$1.modeType==="evaluating"&&!state$1.setting.enableAccompaniment){console.log("评测模式设置了关闭伴奏,不切换原音伴奏");return}state$1.playSource==="music"?(audioData.songEle&&(audioData.songEle.muted=!1),audioData.backgroundEle&&(audioData.backgroundEle.muted=!0)):(audioData.songEle&&(audioData.songEle.muted=!0),audioData.backgroundEle&&(audioData.backgroundEle.muted=!1))});const e=s=>new Promise(r=>{const o=new Audio(s+"?v="+Date.now());o.load(),o.onloadedmetadata=()=>{r(o)},o.onerror=()=>{r(null)}}),t=s=>{var l,c,d;const r=(s==null?void 0:s.currentTime)||((l=s==null?void 0:s.content)==null?void 0:l.currentTime),o=(s==null?void 0:s.totalDuration)||((c=s==null?void 0:s.content)==null?void 0:c.totalDuration),a=r/1e3;audioData.progress=a,audioData.duration=o/1e3,((d=s==null?void 0:s.content)==null?void 0:d.totalDuration)>1e3&&r>=o&&onEnded()};return onMounted(()=>{state$1.playMode!=="MIDI"&&(Promise.all([e(state$1.music),e(state$1.accompany)]).then(([s,r])=>{s&&(audioData.songEle=s),r&&(audioData.backgroundEle=r),audioData.songEle?(audioData.songEle.addEventListener("play",onPlay),audioData.songEle.addEventListener("ended",onEnded),r&&(r.muted=!0)):audioData.backgroundEle&&(audioData.backgroundEle.addEventListener("play",onPlay),audioData.backgroundEle.addEventListener("ended",onEnded))}),api_playProgress(t))}),()=>createVNode("div",{class:styles$3.audioList},[state$1.playMode==="MIDI"&&state$1.speed!=0&&createVNode("iframe",{style:{display:"none"},ref:midiRef,src:"/midi/index.html",onLoad:i},null)])}}),popup="_popup_1838h_1",dots="_dots_1838h_6",dot="_dot_1838h_6",active="_active_1838h_20",one="_one_1838h_23",styles$2={popup,dots,dot,active,one},tickData=reactive({list:[],len:0,tickEnd:!1,beatLengthInMilliseconds:0,state:"",source1:"",source2:"",index:0,show:!1}),handlePlay=(i,e)=>new Promise(t=>{setTimeout(()=>{if(tickData.tickEnd){t(i);return}tickData.index++,e&&e.play(),t(i)},tickData.beatLengthInMilliseconds)}),handleInitTick=(i,e)=>{tickData.state="",tickData.beatLengthInMilliseconds=i,tickData.len=e},handleStartTick=async()=>{tickData.show=!0,tickData.tickEnd=!1,tickData.state!=="ok"&&(tickData.source1=new howler.Howl({src:tockAndTick.tick}),tickData.source2=new howler.Howl({src:tockAndTick.tock}),tickData.state="ok"),tickData.index=0,tickData.beatLengthInMilliseconds=60/state$1.speed*1e3;for(let i=0;i<=tickData.len;i++){if(tickData.tickEnd)return!1;const e=i===0?tickData.source1:i===tickData.len?null:tickData.source2;await handlePlay(i,e)}return tickData.show=!1,!0},Tick=defineComponent({name:"metronome",setup(){const i=()=>{tickData.tickEnd=!0};return()=>createVNode(Popup,{class:styles$2.popup,show:tickData.show,"onUpdate:show":e=>tickData.show=e,closeable:!0,onClickCloseIcon:i},{default:()=>[createVNode("div",{class:styles$2.dots},[Array(tickData.len).fill(0).map((e,t)=>createVNode("div",{class:[styles$2.dot,tickData.index>t&&styles$2.active,tickData.index>t&&t===0&&styles$2.one]},null))])]})}}),browserInfo$2=browser(),evaluatingData=reactive({contentData:{},rendered:!1,earphone:!1,soundEffect:!1,soundEffectFrequency:0,checkStep:0,checkEnd:!1,earphoneMode:!1,soundEffectMode:!1,websocketState:!1,startBegin:!1,backtime:0,evaluatings:{},resultData:{},resulstMode:!1,isComplete:!1,isDisabledPlayMusic:!1}),handleStartEvaluat=()=>{state$1.modeType==="evaluating"?handleCancelEvaluat():handleStopPlay(),state$1.modeType=state$1.modeType==="evaluating"?"practise":"evaluating",state$1.modeType!=="evaluating"&&(evaluatingData.rendered=!1)},check_currentTime=()=>{let i=0;if(state$1.isSelectMeasureMode&&(i=state$1.section[0].time*1e3),getAudioCurrentTime()*1e3-i>=500){sendEvaluatingOffsetTime(500);return}setTimeout(()=>{check_currentTime()},10)},sendEvaluatingOffsetTime=async i=>{if(!evaluatingData.backtime)return;const t=Date.now()-evaluatingData.backtime-i;console.error("真正播放延迟",t,"currentTime:",i),await api_proxyServiceMessage({header:{commond:"audioPlayStart",type:"SOUND_COMPARE"},body:{offsetTime:t<0?0:t,micDelay:0}})},checkUseEarphone=async()=>{var e;const i=await getEarphone();return((e=i==null?void 0:i.content)==null?void 0:e.checkIsWired)||!1},handleEndSoundCheck=()=>{endSoundCheck()},connectWebsocket=async i=>{evaluatingData.contentData=i,evaluatingData.websocketState=!0},handlePerformDetection=async()=>{if(!evaluatingData.checkEnd){if(evaluatingData.checkStep===0){if(evaluatingData.checkStep=5,state$1.setting.soundEffect){evaluatingData.soundEffectMode=!0;return}const i=await api_getDeviceDelay();if(console.log("🚀 ~ delayTime:",i),!i){evaluatingData.soundEffectMode=!0;return}handlePerformDetection();return}if(evaluatingData.checkStep=5){if(evaluatingData.checkStep=10,!await checkUseEarphone()){evaluatingData.earphoneMode=!0;return}handlePerformDetection();return}evaluatingData.checkStep===10&&(evaluatingData.checkEnd=!0)}},addMeasureScore=(i,e=!0)=>{evaluatingData.evaluatings[i.measureRenderIndex]={...i,leve:getLeveByScoreMeasure(i.score),show:e}},handleScoreResult=i=>{if(i!=null&&i.content){const{header:e,body:t}=i.content;e.commond==="checking"&&(evaluatingData.soundEffectFrequency=t.frequency),(e==null?void 0:e.commond)==="measureScore"&&(console.log("🚀 ~ 评测返回:",i),addMeasureScore(t)),(e==null?void 0:e.commond)==="overall"&&(console.log("🚀 ~ 评测返回:",i),evaluatingData.resulstMode=!0,evaluatingData.resultData={...t,...getLeveByScore(t.score)},closeToast())}},handleStartBegin=async()=>{var e;evaluatingData.isComplete=!1,evaluatingData.evaluatings={},evaluatingData.resultData={},evaluatingData.backtime=0,resetPlaybackToStart();const i=await startEvaluating(evaluatingData.contentData);if((i==null?void 0:i.api)!=="startEvaluating"){Snackbar$1.error("请在APP端进行评测"),evaluatingData.startBegin=!1;return}if((e=i==null?void 0:i.content)!=null&&e.reson){showToast(i.content.reson),evaluatingData.startBegin=!1;return}if(evaluatingData.startBegin=!0,evaluatingData.isDisabledPlayMusic){if(state$1.playState=state$1.playState==="paused"?"play":"paused",state$1.playState==="play"&&state$1.needTick&&!await handleStartTick()){state$1.playState="paused",evaluatingData.startBegin=!1;return}onPlay()}await api_startRecording()},playMusic=async()=>{if(!await togglePlay("play")){evaluatingData.startBegin=!1,handleCancelEvaluat();return}check_currentTime(),state$1.setting.camera&&state$1.setting.saveToAlbum&&(console.log("开始录制视频"),api_startCapture())},recordStartTimePoint=async i=>{var t;if(console.error("开始录音"),!evaluatingData.startBegin)return;let e=((t=i==null?void 0:i.content)==null?void 0:t.inteveral)||0;browserInfo$2.ios&&(e*=1e3),evaluatingData.backtime=e||Date.now(),console.log("🚀 ~ 开始时间点:",evaluatingData.backtime,"已经录的时间:",Date.now()-e,"记录时间点:",Date.now()),!evaluatingData.isDisabledPlayMusic&&playMusic()},handleEndEvaluat=(i=!1)=>{!evaluatingData.startBegin||state$1.modeType!=="evaluating"||(evaluatingData.startBegin=!1,api_stopRecording(),endEvaluating({musicScoreId:state$1.examSongId}),showLoadingToast({message:"评分中",duration:0,overlay:!0,overlayClass:styles$4.scoreMode}),evaluatingData.isComplete=i,state$1.setting.camera&&state$1.setting.saveToAlbum&&(console.log("结束录制视频"),api_endCapture()))},handleEndBegin=()=>{handleEndEvaluat(),handleStopPlay()},handleCancelEvaluat=()=>{evaluatingData.evaluatings={},evaluatingData.startBegin=!1,closeToast(),api_proxyServiceMessage({header:{commond:"recordCancel",type:"SOUND_COMPARE",status:200}}),cancelEvaluating(),handleStopPlay()},handleViewReport=(i,e)=>{var r;const t=((r=evaluatingData.resultData)==null?void 0:r[i])||"";let s="";switch(e){case"gym":s=location.origin+location.pathname+"#/report/"+t;break;case"orchestra":s=location.origin+location.pathname+"report-share.html?id="+t;break;case"instrument":s=location.origin+location.pathname+"#/evaluat-report?id="+t;break;default:s=location.origin+location.pathname+"report-share.html?id="+t;break}api_openWebView({url:s,orientation:0,isHideTitle:!0,statusBarTextColor:!1,isOpenLight:!0,c_orientation:0})},Evaluating=defineComponent({name:"evaluating",setup(){const i=usePageVisibility(),e=reactive({finger:!1,play_mode:"",enableAccompaniment:!0}),t=()=>{e.finger=state$1.setting.displayFingering,state$1.setting.displayFingering=!1,e.play_mode=state$1.playSource,e.enableAccompaniment=state$1.setting.enableAccompaniment,e.enableAccompaniment||(console.log("关闭伴奏"),toggleMutePlayAudio(e.play_mode==="music"?"music":"background",!0))},s=()=>{state$1.setting.displayFingering=e.finger,state$1.playSource=e.play_mode,e.enableAccompaniment||toggleMutePlayAudio(e.play_mode==="music"?"music":"background",!1)};return watch(i,r=>{r=="hidden"&&evaluatingData.startBegin&&handleEndBegin()}),onMounted(()=>{resetPlaybackToStart(),t(),evaluatingData.resultData={},evaluatingData.evaluatings={},evaluatingData.soundEffectFrequency=0,evaluatingData.checkStep=0,evaluatingData.rendered=!0,sendResult(handleScoreResult),api_recordStartTime(recordStartTimePoint),state$1.isSelectMeasureMode||clearSelection(),console.log("加载评测模块成功")}),onUnmounted(()=>{evaluatingData.checkEnd=!1,evaluatingData.rendered=!1,resetPlaybackToStart(),removeResult(handleScoreResult),api_remove_recordStartTime(recordStartTimePoint),s(),console.log("卸载评测模块成功")}),()=>createVNode("div",null,null)}});function autoCorrelate(i,e){for(var t=i.length,s=0,r=0;rd[u+1];)u++;for(var g=-1,b=-1,r=u;rg&&(g=d[r],b=r);var y=b,S=d[y-1],v=d[y],x=d[y+1];let A=(S+x-2*v)/2,E=(x-S)/2;return A&&(y=y-E/(2*A)),e/y}const audioRecorder={audioContext:null,mediaRecorder:null,recordeState:!1,progress:i=>{},init(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)},toggleRecord(i){return new Promise((e,t)=>{i?navigator.mediaDevices.getUserMedia({audio:!0}).then(s=>{audioRecorder.mediaRecorder=s.getAudioTracks()[0],audioRecorder.recordeState=!0;const r=this.audioContext.createMediaStreamSource(s),o=this.audioContext.createAnalyser();o.fftSize=2048,r.connect(o);var a=new Float32Array(o.fftSize);const l=this.audioContext.sampleRate;function c(){if(!audioRecorder.recordeState)return;o.getFloatTimeDomainData(a);const d=autoCorrelate(a,l);audioRecorder.progress(d),setTimeout(()=>{c()},10)}c(),e(!0)}).catch(s=>{e(!1),console.error("Error accessing media devices:",s)}):audioRecorder.mediaRecorder.stop()})},checkSupport(){return new Promise((i,e)=>{if(navigator.mediaDevices.getUserMedia){const t={audio:!0};navigator.mediaDevices.getUserMedia(t).then(s=>{i(!0),console.log("授权成功!")},()=>{i(!1),console.error("授权失败!")})}else i(!1),console.error("浏览器不支持 getUserMedia")})}},followData=reactive({list:[],index:0,start:!1,rendered:!1,earphone:!1}),toggleFollow=(i=!0)=>{state$1.modeType=state$1.modeType==="follow"?"practise":"follow",i||(followData.start=!1,openToggleRecord(!1))},noteFrequency=ref(0),audioFrequency=ref(0),followTime=ref(0),openToggleRecord=async(i=!0)=>{if(api_cloudToggleFollow(i?"start":"end"),i)followTime.value=Date.now();else{const e=Date.now()-followTime.value;followTime.value!==0&&e>0&&(followTime.value=0)}storeData.isApp||!await(audioRecorder==null?void 0:audioRecorder.toggleRecord(i))&&followData.start&&(followData.earphone=!0,followData.start=!1)},onClear=()=>{state$1.times.forEach(i=>{const e=document.querySelector(`div[data-vf=vf${i.id}]`);e&&e.classList.remove("follow-up","follow-down","follow-error","follow-success");const t=document.getElementById(`vf-${i.id}`);t&&t.classList.remove("follow-up","follow-down")})},handleFollowStart=()=>{onClear(),followData.start=!0,followData.index=0,followData.list=[],resetPlaybackToStart(),openToggleRecord(!0),getNoteIndex()},handleFollowEnd=()=>{followData.start=!1,openToggleRecord(!1),followData.index=0,console.log("结束")},next=()=>{gotoNext(state$1.times[followData.index])},getNoteIndex=()=>{const i=state$1.times[followData.index];return i.frequency<=0?(followData.index=followData.index+1,next(),getNoteIndex()):(noteFrequency.value=i.frequency,{id:i.id,min:i.frequency-(i.frequency-i.prevFrequency)*.5,max:i.frequency+(i.nextFrequency-i.frequency)*.5,duration:i.duration,baseFrequency:i.frequency})};let checking=!1;const onFollowTime=i=>{var t;const e=(t=i==null?void 0:i.content)==null?void 0:t.frequency;followData.start&&e>0&&(audioFrequency.value=e,checked())};let startTime=0;const checked=()=>{if(checking)return;checking=!0;const i=getNoteIndex();if(audioFrequency.value=i.min&&audioFrequency.value<=i.max){if(startTime===0)startTime=Date.now();else if((Date.now()-startTime)/1e3>=i.duration*.6){startTime=0,followData.index=followData.index+1,setColor(i,"",!0),next(),checking=!1;return}}setColor(i,audioFrequency.value>i.baseFrequency?"follow-up":"follow-down"),checking=!1},setColor=(i,e,t=!1)=>{const s=document.querySelector(`div[data-vf=vf${i.id}]`);s&&(s.classList.remove("follow-up","follow-down","follow-error","follow-success"),t?s.classList.add("follow-success"):s.classList.add("follow-error",e));const r=document.getElementById(`vf-${i.id}`);r&&(r.classList.remove("follow-up","follow-down"),e&&r.classList.add(e))},FollowPractice=defineComponent({name:"follow",setup(){return onMounted(async()=>{storeData.isApp?api_cloudFollowTime(onFollowTime):await audioRecorder.checkSupport()?(audioRecorder.init(),audioRecorder.progress=e=>{onFollowTime({api:"",content:{frequency:e}})}):followData.earphone=!0,console.log("进入跟练模式")}),onUnmounted(()=>{api_cloudFollowTime(onFollowTime,!1),resetPlaybackToStart(),onClear(),openToggleRecord(!1),console.log("退出跟练模式")}),()=>createVNode("div",null,null)}});var EnumMusicRenderType=(i=>(i.staff="staff",i.firstTone="firstTone",i.fixedTone="fixedTone",i))(EnumMusicRenderType||{});const musicscoresettingKey="musicscoresetting";var IPlatform=(i=>(i.APP="APP",i.PC="PC",i))(IPlatform||{});const state=reactive({platform:"",appName:"",musicRenderType:"staff",musicRendered:!1,detailId:"",xmlUrl:"",subjectId:0,categoriesId:0,categoriesName:"",enableEvaluation:!0,enableNotation:!1,examSongId:"",examSongName:"",extConfigJson:{},extStyleConfigJson:{},isOpenMetronome:!1,isShowFingering:!1,music:"",accompany:"",midiUrl:"",parentCategoriesId:0,musicSheetCategoriesId:0,playMode:"MP3",speed:0,originSpeed:0,track:"",partIndex:0,needTick:!1,osmd:null,isSpecialBookCategory:!1,playState:"paused",playEnd:!1,playSource:"music",playProgress:0,activeNoteIndex:0,activeMeasureIndex:0,sectionStatus:!1,section:[],sectionBoundingBoxs:[],isOpenPrepare:!1,sectionFirst:null,times:[],modeType:"practise",setting:{soundEffect:!0,eyeProtection:!1,camera:!1,cameraOpacity:70,repeatAutoPlay:!0,displayFingering:!0,displayCursor:!0,frequency:442,evaluationDifficulty:"ADVANCED",saveToAlbum:!1,enableAccompaniment:!0,reactionTimeMs:0},fixtime:0,fingeringInfo:{},scrollContainer:"musicAndSelection",isPercussion:!1,repeatedBeats:0,partListNames:[],gradual:[],gradualVersion:GradualVersion.BASE,gradualTimes:null,multitrack:0,zoom:.8,musicZoom:1,isSelectMeasureMode:!1,isReport:!1}),browserInfo$1=browser();let offset_duration=0;const customData=reactive({customNoteRealValue:[],customNoteCurrentTime:!1}),setStep=()=>{if(state.playState!=="play"){console.log("暂停播放");return}let i=Date.now();requestAnimationFrame(()=>{Date.now()-i<16.7?(handlePlaying(),setStep()):setTimeout(()=>{handlePlaying(),setStep()},16.7)})},onPlay=()=>{console.log("开始播放"),state.playEnd=!1,offset_duration=browserInfo$1.xiaomi?.2:.08,setStep()},autoResetPlay=()=>{state.modeType==="practise"&&(skipNotePlay(0,!0),state.setting.repeatAutoPlay&&(scrollViewNote(),setTimeout(()=>{togglePlay("play")},1e3)))},onEnded=()=>{console.log("音频播放结束"),state.playEnd=!0,state.playState="paused",audioListStart(state.playState),handleEndEvaluat(!0),autoResetPlay()},handlePlaying=()=>{var s;const i=getAudioCurrentTime(),e=getAudioDuration();state.playProgress=i/e*100;let t=getNote(i);if(t){if(state.sectionStatus&&state.section.length===2){const r=state.sectionFirst?state.sectionFirst:state.section[0],o=state.section[1];if(Math.abs(o.endtime-i){var r;const t=state.times[i];let s=t.time;e&&(s=0),t&&(setAudioCurrentTime(s,i),gotoNext(t),(r=metronomeData.metro)==null||r.sound(s))},togglePlay=async i=>(state.playState=i||(state.playState==="paused"?"play":"paused"),state.playState==="play"&&state.needTick&&!await handleStartTick()?(state.playState="paused",!1):(state.playState=="play"&&state.sectionStatus&&state.section.length<2&&clearSelection(),audioListStart(state.playState),!0)),handleStopPlay=()=>{state.playState="paused",audioListStart(state.playState)},resetPlaybackToStart=()=>{if(state.sectionStatus&&state.section.length===2){state.section=formateSelectMearure(state.section);return}skipNotePlay(0,!0)},gotoCustomNote=i=>{try{state.osmd.cursor.reset()}catch(e){}for(let e=0;e{(state.musicRenderType==="firstTone"||state.musicRenderType==="fixedTone")&&nextTick(()=>{var o,a,l,c;let t=i.bbox;if(!t){const m=(((o=document.getElementById("musicAndSelection"))==null?void 0:o.getBoundingClientRect())||{x:0,y:0}).x||0,u=document.querySelector(`#vf-${(l=(a=i.svgElement)==null?void 0:a.attrs)==null?void 0:l.id}`);if(u){const g=u.querySelector(".vf-numbered-note-head"),b=(c=g==null?void 0:g.getBoundingClientRect)==null?void 0:c.call(g);b&&(i.bbox={left:b.x-m-b.width/4,width:b.width*1.5},t=i.bbox)}}if(!t)return;const s=state.platform==="PC"?29:18,r=(t.width-s)/3;e.cursorElement.style.left=t.left+"px",e.cursorElement.style.transform=`translateX(${r}px)`})},gotoNext=i=>{const e=i.i;if(state.activeNoteIndex===i.i){try{setCursorPosition(i,state.osmd.cursor)}catch(r){console.log(r)}return}const t=state.osmd;let s=state.activeNoteIndex;if(state.activeNoteIndex=e,state.activeMeasureIndex=i.MeasureNumberXML,s&&e-s===1)t.cursor.next();else if(s&&e-s>0)for(;e-s>0;)s++,t.cursor.next();else gotoCustomNote(e);try{setCursorPosition(i,state.osmd.cursor)}catch(r){console.log(r)}scrollViewNote()},getNote=i=>{const e=state.times,t=state.times.length;if(i>e[t-1].endtime+2){onEnded();return}let s=null;for(let r=state.activeNoteIndex;r=o.time)(!a||o.time!=a.time)&&(s=o);else break}return s},handleResetPlay=()=>{resetPlaybackToStart(),togglePlay("play")},handleSetSpeed=i=>{setStorageSpeed(state.examSongId,i),state.speed=i},clearSelection=()=>{state.sectionStatus=!1,state.section=[],closeToast()},handleChangeSection=()=>{if(state.sectionStatus){togglePlay("paused"),skipNotePlay(0,!0),clearSelection();return}state.sectionStatus=!0,state.sectionStatus&&togglePlay("paused"),showToast({message:"请选择开始小节",duration:0,position:"top",className:"selectionToast"})},formateSelectMearure=i=>{var l,c;if(!i.length)return[];const e=i.sort((d,m)=>d.time-m.time),t=(l=e[0])==null?void 0:l.measureOpenIndex,s=(c=e.last())==null?void 0:c.measureOpenIndex,r=state.times.filter(d=>t===d.measureOpenIndex)||[],o=state.times.filter(d=>s===d.measureOpenIndex)||[];if(!r.length||!o.length)return clearSelection(),[];e[0]=r[0],e[1]=o.last();let a=e[0].i;if(state.isOpenPrepare){const d=e[0].MeasureNumberXML;state.sectionFirst=state.times.find(m=>d-m.MeasureNumberXML===1),a=state.sectionFirst?state.sectionFirst.i:a}return skipNotePlay(a,a===0),e},handleSelection=i=>{!state.sectionStatus||state.section.length>1||(state.section.length!==2&&i&&(state.section.push(i),state.section.length===2&&(state.section=formateSelectMearure(state.section),closeToast())),state.section.length===1&&showToast({message:"请选择结束小节",duration:0,position:"top",className:"selectionToast"}))},hanldeDirectSelection=i=>{!Array.isArray(i)||i.length!==2||(state.sectionStatus=!0,state.section=formateSelectMearure(i))};let offsetTop=0;const scrollViewNote=()=>{const i=document.getElementById("cursorImg-0"),e=document.getElementById(state.scrollContainer);!i||!e||offsetTop===i.offsetTop||(offsetTop=i.offsetTop,offsetTop>50?e.scrollTo({top:(offsetTop-50)*state.musicZoom,behavior:"smooth"}):e.scrollTo({top:0,behavior:"smooth"}))},isRhythmicExercises=()=>state.examSongName.indexOf("节奏练习")>-1,handleRessetState=()=>{state.modeType==="evaluating"?handleStartEvaluat():state.modeType==="practise"?togglePlay("paused"):state.modeType==="follow"&&toggleFollow(!1)},state$1=state,evaluatCreateMusicPlayer=()=>api_createMusicPlayer({musicSrc:state.accompany||state.music,tuneSrc:"https://cloud-coach.ks3-cn-beijing.ksyuncs.com/1686725501654check_music1_(1).mp3"});class AJAX{static ajax(e,t=9e3){let s;const r=e.indexOf(".mxl")>-1?"text/plain; charset=x-user-defined":"application/xml";if(XMLHttpRequest)s=new XMLHttpRequest;else if(ActiveXObject)s=new ActiveXObject("Microsoft.XMLHTTP");else return Promise.reject(new Error("XMLHttp not supported."));return s.timeout=t,new Promise((o,a)=>{s.onreadystatechange=()=>{s.readyState===XMLHttpRequest.DONE&&(s.status===200||s.status===0&&s.responseText?o(s.responseText):a(new Error("Could not retrieve requested URL "+s.status)))},s.ontimeout=l=>{a(new Error("Server request Timeout"))},s.overrideMimeType(r),s.open("GET",e,!0),s.send()})}}const _Fraction=class{constructor(i=0,e=1,t=0,s=!0){this.numerator=0,this.denominator=1,this.wholeValue=0,this.numerator=i,this.denominator=e,this.wholeValue=t,s&&this.simplify(),this.setRealValue()}static max(i,e){return i.RealValue>e.RealValue?i:e}static Equal(i,e){return i.wholeValue===e.wholeValue&&i.Denominator===e.Denominator&&i.Numerator===e.Numerator}static createFromFraction(i){return new _Fraction(i.numerator,i.denominator,i.wholeValue,!1)}static plus(i,e){const t=i.clone();return t.Add(e),t}static minus(i,e){const t=i.clone();return t.Sub(e),t}static multiply(i,e){return new _Fraction((i.wholeValue*i.denominator+i.numerator)*(e.wholeValue*e.denominator+e.numerator),i.denominator*e.denominator)}static greatestCommonDenominator(i,e){if(i===0)return e;if(e===1)return 1;for(;Math.abs(e)>1e-8;)i>e?i-=e:e-=i;return Math.round(i)}toString(){let i=this.numerator+"/"+this.denominator;return this.wholeValue!==0&&(i=this.wholeValue+" "+i),i}clone(){return new _Fraction(this.numerator,this.denominator,this.wholeValue,!1)}get Numerator(){return this.numerator}set Numerator(i){this.numerator!==i&&(this.numerator=i,this.simplify(),this.setRealValue())}get Denominator(){return this.denominator}set Denominator(i){this.denominator!==i&&(this.denominator=i,this.numerator!==0&&this.simplify(),this.setRealValue())}get WholeValue(){return this.wholeValue}set WholeValue(i){this.wholeValue!==i&&(this.wholeValue=i,this.setRealValue())}GetExpandedNumerator(){return this.wholeValue*this.denominator+this.numerator}calculateNumberOfNeededDots(){let i=1,e=2;const t=this.GetExpandedNumerator();for(;ei;)e.Numerator++;if(this.numerator>this.denominator){const t=new _Fraction(this.numerator-1,this.denominator,this.wholeValue);for(;t.Denominator>i;)t.Numerator--;if(t.Denominator_Fraction.maximumAllowedNumber){const t=this.denominator/_Fraction.maximumAllowedNumber;this.numerator=Math.round(this.numerator/t),this.denominator=Math.round(this.denominator/t)}if(this.numerator>_Fraction.maximumAllowedNumber){const t=this.numerator/_Fraction.maximumAllowedNumber;this.numerator=Math.round(this.numerator/t),this.denominator=Math.round(this.denominator/t)}}isOnBeat(i){const e=this.distanceFromBeat(i);return Math.abs(e)<_Fraction.FloatInaccuracyTolerance}distanceFromBeat(i){const e=new _Fraction(1,i.Denominator);return this.RealValue%e.RealValue}};let Fraction$1=_Fraction;Fraction$1.maximumAllowedNumber=46340;Fraction$1.FloatInaccuracyTolerance=1e-4;class AbstractExpression{constructor(e){this.placement=e}static isStringInStringList(e,t){for(let s=0,r=e.length;s(i[i.Above=0]="Above",i[i.Below=1]="Below",i[i.Left=2]="Left",i[i.Right=3]="Right",i[i.NotYetDefined=4]="NotYetDefined",i[i.AboveOrBelow=5]="AboveOrBelow",i))(PlacementEnum||{});const _ContinuousDynamicExpression=class extends AbstractExpression{constructor(i,e,t,s,r,o,a=""){super(e),super.parentMeasure=s,this.NumberXml=o,this.dynamicType=i,this.label=a,this.staffNumber=t,this.activeInstantaneousDynamic=r,this.startVolume=1,this.endVolume=1,this.setStartAndEndVolume(),a!==""&&this.setType()}setStartAndEndVolume(){this.activeInstantaneousDynamic&&(this.dynamicType===0&&(this.startVolume=this.activeInstantaneousDynamic.Volume,this.endVolume=this.activeInstantaneousDynamic.Volume*1.2),this.dynamicType===1&&(this.startVolume=this.activeInstantaneousDynamic.Volume,this.endVolume=this.activeInstantaneousDynamic.Volume*.8))}get DynamicType(){return this.dynamicType}set DynamicType(i){this.dynamicType=i}get StartMultiExpression(){return this.startMultiExpression}set StartMultiExpression(i){this.startMultiExpression=i}get EndMultiExpression(){return this.endMultiExpression}set EndMultiExpression(i){this.endMultiExpression=i}get Placement(){return this.placement}set Placement(i){this.placement=i}get StartVolume(){return this.startVolume}set StartVolume(i){this.startVolume=i}get EndVolume(){return this.endVolume}set EndVolume(i){this.endVolume=i}get StaffNumber(){return this.staffNumber}set StaffNumber(i){this.staffNumber=i}get Label(){return this.label}set Label(i){this.label=i,this.setType()}static isInputStringContinuousDynamic(i){return i?_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicIncreasing,i)||_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicDecreasing,i):!1}getInterpolatedDynamic(i){const e=this.StartMultiExpression.AbsoluteTimestamp;let t;if(this.EndMultiExpression?t=this.EndMultiExpression.AbsoluteTimestamp:t=Fraction$1.plus(this.startMultiExpression.SourceMeasureParent.AbsoluteTimestamp,this.startMultiExpression.SourceMeasureParent.Duration),i.lt(e))return-1;if(t.lt(i))return-2;const s=Fraction$1.minus(i,e).RealValue/Fraction$1.minus(t,e).RealValue;return Math.max(0,Math.min(99.9,this.startVolume+(this.endVolume-this.startVolume)*s))}isWedge(){return!this.label}setType(){_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicIncreasing,this.label)?this.dynamicType=0:_ContinuousDynamicExpression.isStringInStringList(_ContinuousDynamicExpression.listContinuousDynamicDecreasing,this.label)&&(this.dynamicType=1)}};let ContinuousDynamicExpression=_ContinuousDynamicExpression;ContinuousDynamicExpression.listContinuousDynamicIncreasing=["crescendo","cresc","cresc.","cres."];ContinuousDynamicExpression.listContinuousDynamicDecreasing=["decrescendo","decresc","decr.","diminuendo","dim.","dim"];var ContDynamicEnum=(i=>(i[i.crescendo=0]="crescendo",i[i.diminuendo=1]="diminuendo",i))(ContDynamicEnum||{}),DynamicExpressionSymbolEnum=(i=>(i[i.p=0]="p",i[i.f=1]="f",i[i.s=2]="s",i[i.z=3]="z",i[i.m=4]="m",i[i.r=5]="r",i))(DynamicExpressionSymbolEnum||{});class MusicSheetReadingException{constructor(e,t){this.message=e,t&&(this.message+=" "+t.toString())}}class ArgumentOutOfRangeException{constructor(e){this.message=e}}class InvalidEnumArgumentException{constructor(e){this.message=e}}var loglevelExports={},loglevel={get exports(){return loglevelExports},set exports(i){loglevelExports=i}};(function(i){(function(e,t){i.exports?i.exports=t():e.log=t()})(commonjsGlobal,function(){var e=function(){},t="undefined",s=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function o(S,v){var x=S[v];if(typeof x.bind=="function")return x.bind(S);try{return Function.prototype.bind.call(x,S)}catch(A){return function(){return Function.prototype.apply.apply(x,[S,arguments])}}}function a(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(S){return S==="debug"&&(S="log"),typeof console===t?!1:S==="trace"&&s?a:console[S]!==void 0?o(console,S):console.log!==void 0?o(console,"log"):e}function c(S,v){for(var x=0;x=0&&R<=A.levels.SILENT){if(E=R,N!==!1&&_(R),c.call(A,R,S),typeof console===t&&R"u"}i.isUndefined=l;function c(u){return Object.prototype.toString.call(u)==="[object String]"}i.isString=c;function d(u){return l(u)||!a(u)?function(g,b){return g=0;o--)if(s(i[o],e))return o;return-1}arrays$4.lastIndexOf=lastIndexOf;function contains(i,e,t){return indexOf$1(i,e,t)>=0}arrays$4.contains=contains;function remove(i,e,t){var s=indexOf$1(i,e,t);return s<0?!1:(i.splice(s,1),!0)}arrays$4.remove=remove;function frequency(i,e,t){for(var s=t||util$a.defaultEquals,r=i.length,o=0,a=0;a=i.length||t<0||t>=i.length)return!1;var s=i[e];return i[e]=i[t],i[t]=s,!0}arrays$4.swap=swap;function toString$1(i){return"["+i.toString()+"]"}arrays$4.toString=toString$1;function forEach(i,e){for(var t=0,s=i;t>>>>>>> iteration-0810:dist/assets/index-74ea4cc3.js `+t+" : "+s}),e+` }`},i}(),_default=Dictionary$2.default=Dictionary$1,_Set={};Object.defineProperty(_Set,"__esModule",{value:!0});var util$8=util$b,arrays$3=arrays$4,Dictionary_1$5=Dictionary$2,Set$1=function(){function i(e){this.dictionary=new Dictionary_1$5.default(e)}return i.prototype.contains=function(e){return this.dictionary.containsKey(e)},i.prototype.add=function(e){return this.contains(e)||util$8.isUndefined(e)?!1:(this.dictionary.setValue(e,e),!0)},i.prototype.intersection=function(e){var t=this;this.forEach(function(s){return e.contains(s)||t.remove(s),!0})},i.prototype.union=function(e){var t=this;e.forEach(function(s){return t.add(s),!0})},i.prototype.difference=function(e){var t=this;e.forEach(function(s){return t.remove(s),!0})},i.prototype.isSubsetOf=function(e){if(this.size()>e.size())return!1;var t=!0;return this.forEach(function(s){return e.contains(s)?!0:(t=!1,!1)}),t},i.prototype.remove=function(e){return this.contains(e)?(this.dictionary.remove(e),!0):!1},i.prototype.forEach=function(e){this.dictionary.forEach(function(t,s){return e(s)})},i.prototype.toArray=function(){return this.dictionary.values()},i.prototype.isEmpty=function(){return this.dictionary.isEmpty()},i.prototype.size=function(){return this.dictionary.size()},i.prototype.clear=function(){this.dictionary.clear()},i.prototype.toString=function(){return arrays$3.toString(this.toArray())},i}();_Set.default=Set$1;Object.defineProperty(Bag$1,"__esModule",{value:!0});var util$7=util$b,Dictionary_1$4=Dictionary$2,Set_1$1=_Set,Bag=function(){function i(e){this.toStrF=e||util$7.defaultToString,this.dictionary=new Dictionary_1$4.default(this.toStrF),this.nElements=0}return i.prototype.add=function(e,t){if(t===void 0&&(t=1),util$7.isUndefined(e)||t<=0)return!1;if(this.contains(e))this.dictionary.getValue(e).copies+=t;else{var s={value:e,copies:t};this.dictionary.setValue(e,s)}return this.nElements+=t,!0},i.prototype.count=function(e){return this.contains(e)?this.dictionary.getValue(e).copies:0},i.prototype.contains=function(e){return this.dictionary.containsKey(e)},i.prototype.remove=function(e,t){if(t===void 0&&(t=1),util$7.isUndefined(e)||t<=0)return!1;if(this.contains(e)){var s=this.dictionary.getValue(e);return t>s.copies?this.nElements-=s.copies:this.nElements-=t,s.copies-=t,s.copies<=0&&this.dictionary.remove(e),!0}else return!1},i.prototype.toArray=function(){for(var e=[],t=this.dictionary.values(),s=0,r=t;sthis.nElements||util$6.isUndefined(e))return!1;var s=this.createNode(e);if(this.nElements===0||this.lastNode===null)this.firstNode=s,this.lastNode=s;else if(t===this.nElements)this.lastNode.next=s,this.lastNode=s;else if(t===0)s.next=this.firstNode,this.firstNode=s;else{var r=this.nodeAtIndex(t-1);if(r===null)return!1;s.next=r.next,r.next=s}return this.nElements++,!0},i.prototype.first=function(){if(this.firstNode!==null)return this.firstNode.element},i.prototype.last=function(){if(this.lastNode!==null)return this.lastNode.element},i.prototype.elementAtIndex=function(e){var t=this.nodeAtIndex(e);if(t!==null)return t.element},i.prototype.indexOf=function(e,t){var s=t||util$6.defaultEquals;if(util$6.isUndefined(e))return-1;for(var r=this.firstNode,o=0;r!==null;){if(s(r.element,e))return o;o++,r=r.next}return-1},i.prototype.contains=function(e,t){return this.indexOf(e,t)>=0},i.prototype.remove=function(e,t){var s=t||util$6.defaultEquals;if(this.nElements<1||util$6.isUndefined(e))return!1;for(var r=null,o=this.firstNode;o!==null;){if(s(o.element,e))return r===null?(this.firstNode=o.next,o===this.lastNode&&(this.lastNode=null)):o===this.lastNode?(this.lastNode=r,r.next=o.next,o.next=null):(r.next=o.next,o.next=null),this.nElements--,!0;r=o,o=o.next}return!1},i.prototype.clear=function(){this.firstNode=null,this.lastNode=null,this.nElements=0},i.prototype.equals=function(e,t){var s=t||util$6.defaultEquals;return!(e instanceof i)||this.size()!==e.size()?!1:this.equalsAux(this.firstNode,e.firstNode,s)},i.prototype.equalsAux=function(e,t,s){for(;e!==null&&t!==null;){if(!s(e.element,t.element))return!1;e=e.next,t=t.next}return!0},i.prototype.removeElementAtIndex=function(e){if(!(e<0||e>=this.nElements||this.firstNode===null||this.lastNode===null)){var t;if(this.nElements===1)t=this.firstNode.element,this.firstNode=null,this.lastNode=null;else{var s=this.nodeAtIndex(e-1);s===null?(t=this.firstNode.element,this.firstNode=this.firstNode.next):s.next===this.lastNode&&(t=this.lastNode.element,this.lastNode=s),s!==null&&s.next!==null&&(t=s.next.element,s.next=s.next.next)}return this.nElements--,t}},i.prototype.forEach=function(e){for(var t=this.firstNode;t!==null&&e(t.element)!==!1;)t=t.next},i.prototype.reverse=function(){for(var e=null,t=this.firstNode,s=null;t!==null;)s=t.next,t.next=e,e=t,t=s;s=this.firstNode,this.firstNode=this.lastNode,this.lastNode=s},i.prototype.toArray=function(){for(var e=[],t=this.firstNode;t!==null;)e.push(t.element),t=t.next;return e},i.prototype.size=function(){return this.nElements},i.prototype.isEmpty=function(){return this.nElements<=0},i.prototype.toString=function(){return arrays$2.toString(this.toArray())},i.prototype.nodeAtIndex=function(e){if(e<0||e>=this.nElements)return null;if(e===this.nElements-1)return this.lastNode;for(var t=this.firstNode,s=0;s0&&(e=e.rightCh);return e},i.prototype.transplant=function(e,t){e.parent===null?this.root=t:e===e.parent.leftCh?e.parent.leftCh=t:e.parent.rightCh=t,t!==null&&(t.parent=e.parent)},i.prototype.removeNode=function(e){if(e.leftCh===null)this.transplant(e,e.rightCh);else if(e.rightCh===null)this.transplant(e,e.leftCh);else{var t=this.minimumAux(e.rightCh);t.parent!==e&&(this.transplant(t,t.rightCh),t.rightCh=e.rightCh,t.rightCh.parent=t),this.transplant(e,t),t.leftCh=e.leftCh,t.leftCh.parent=t}},i.prototype.inorderTraversalAux=function(e,t,s){e===null||s.stop||(this.inorderTraversalAux(e.leftCh,t,s),!s.stop&&(s.stop=t(e.element)===!1,!s.stop&&this.inorderTraversalAux(e.rightCh,t,s)))},i.prototype.levelTraversalAux=function(e,t){var s=new Queue_1$1.default;for(e!==null&&s.enqueue(e),e=s.dequeue()||null;e!=null;){if(t(e.element)===!1)return;e.leftCh!==null&&s.enqueue(e.leftCh),e.rightCh!==null&&s.enqueue(e.rightCh),e=s.dequeue()||null}},i.prototype.preorderTraversalAux=function(e,t,s){e===null||s.stop||(s.stop=t(e.element)===!1,!s.stop&&(this.preorderTraversalAux(e.leftCh,t,s),!s.stop&&this.preorderTraversalAux(e.rightCh,t,s)))},i.prototype.postorderTraversalAux=function(e,t,s){e===null||s.stop||(this.postorderTraversalAux(e.leftCh,t,s),!s.stop&&(this.postorderTraversalAux(e.rightCh,t,s),!s.stop&&(s.stop=t(e.element)===!1)))},i.prototype.minimumAux=function(e){for(;e!=null&&e.leftCh!==null;)e=e.leftCh;return e},i.prototype.maximumAux=function(e){for(;e!=null&&e.rightCh!==null;)e=e.rightCh;return e},i.prototype.heightAux=function(e){return e===null?-1:Math.max(this.heightAux(e.leftCh),this.heightAux(e.rightCh))+1},i.prototype.insertNode=function(e){for(var t=null,s=this.root;s!==null;){var r=this.compare(e.element,s.element);if(r===0)return null;r<0?(t=s,s=s.leftCh):(t=s,s=s.rightCh)}return e.parent=t,t===null?this.root=e:this.compare(e.element,t.element)<0?t.leftCh=e:t.rightCh=e,e},i.prototype.createNode=function(e){return{element:e,leftCh:null,rightCh:null,parent:null}},i}();BSTreeKV$1.default=BSTreeKV;var __extends$2=commonjsGlobal&&commonjsGlobal.__extends||function(){var i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var s in t)t.hasOwnProperty(s)&&(e[s]=t[s])};return function(e,t){i(e,t);function s(){this.constructor=e}e.prototype=t===null?Object.create(t):(s.prototype=t.prototype,new s)}}();Object.defineProperty(BSTree$1,"__esModule",{value:!0});var BSTreeKV_1$1=BSTreeKV$1,BSTree=function(i){__extends$2(e,i);function e(){return i!==null&&i.apply(this,arguments)||this}return e}(BSTreeKV_1$1.default);BSTree$1.default=BSTree;var Heap$1={};Object.defineProperty(Heap$1,"__esModule",{value:!0});var collections=util$b,arrays$1=arrays$4,Heap=function(){function i(e){this.data=[],this.compare=e||collections.defaultCompare}return i.prototype.leftChildIndex=function(e){return 2*e+1},i.prototype.rightChildIndex=function(e){return 2*e+2},i.prototype.parentIndex=function(e){return Math.floor((e-1)/2)},i.prototype.minIndex=function(e,t){return t>=this.data.length?e>=this.data.length?-1:e:this.compare(this.data[e],this.data[t])<=0?e:t},i.prototype.siftUp=function(e){for(var t=this.parentIndex(e);e>0&&this.compare(this.data[t],this.data[e])>0;)arrays$1.swap(this.data,t,e),e=t,t=this.parentIndex(e)},i.prototype.siftDown=function(e){for(var t=this.minIndex(this.leftChildIndex(e),this.rightChildIndex(e));t>=0&&this.compare(this.data[e],this.data[t])>0;)arrays$1.swap(this.data,t,e),e=t,t=this.minIndex(this.leftChildIndex(e),this.rightChildIndex(e))},i.prototype.peek=function(){if(this.data.length>0)return this.data[0]},i.prototype.add=function(e){return collections.isUndefined(e)?!1:(this.data.push(e),this.siftUp(this.data.length-1),!0)},i.prototype.removeRoot=function(){if(this.data.length>0){var e=this.data[0];return this.data[0]=this.data[this.data.length-1],this.data.splice(this.data.length-1,1),this.data.length>0&&this.siftDown(0),e}},i.prototype.contains=function(e){var t=collections.compareToEquals(this.compare);return arrays$1.contains(this.data,e,t)},i.prototype.size=function(){return this.data.length},i.prototype.isEmpty=function(){return this.data.length<=0},i.prototype.clear=function(){this.data.length=0},i.prototype.forEach=function(e){arrays$1.forEach(this.data,e)},i}();Heap$1.default=Heap;var LinkedDictionary$1={},__extends$1=commonjsGlobal&&commonjsGlobal.__extends||function(){var i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var s in t)t.hasOwnProperty(s)&&(e[s]=t[s])};return function(e,t){i(e,t);function s(){this.constructor=e}e.prototype=t===null?Object.create(t):(s.prototype=t.prototype,new s)}}();Object.defineProperty(LinkedDictionary$1,"__esModule",{value:!0});var Dictionary_1$3=Dictionary$2,util$4=util$b,LinkedDictionaryPair=function(){function i(e,t){this.key=e,this.value=t}return i.prototype.unlink=function(){this.prev.next=this.next,this.next.prev=this.prev},i}(),HeadOrTailLinkedDictionaryPair=function(){function i(){this.key=null,this.value=null}return i.prototype.unlink=function(){this.prev.next=this.next,this.next.prev=this.prev},i}();function isHeadOrTailLinkedDictionaryPair(i){return!i.next}var LinkedDictionary=function(i){__extends$1(e,i);function e(t){var s=i.call(this,t)||this;return s.head=new HeadOrTailLinkedDictionaryPair,s.tail=new HeadOrTailLinkedDictionaryPair,s.head.next=s.tail,s.tail.prev=s.head,s}return e.prototype.appendToTail=function(t){var s=this.tail.prev;s.next=t,t.prev=s,t.next=this.tail,this.tail.prev=t},e.prototype.getLinkedDictionaryPair=function(t){if(!util$4.isUndefined(t)){var s="$"+this.toStr(t),r=this.table[s];return r}},e.prototype.getValue=function(t){var s=this.getLinkedDictionaryPair(t);if(!util$4.isUndefined(s))return s.value},e.prototype.remove=function(t){var s=this.getLinkedDictionaryPair(t);if(!util$4.isUndefined(s))return i.prototype.remove.call(this,t),s.unlink(),s.value},e.prototype.clear=function(){i.prototype.clear.call(this),this.head.next=this.tail,this.tail.prev=this.head},e.prototype.replace=function(t,s){var r="$"+this.toStr(s.key);s.next=t.next,s.prev=t.prev,this.remove(t.key),s.prev.next=s,s.next.prev=s,this.table[r]=s,++this.nElements},e.prototype.setValue=function(t,s){if(!(util$4.isUndefined(t)||util$4.isUndefined(s))){var r=this.getLinkedDictionaryPair(t),o=new LinkedDictionaryPair(t,s),a="$"+this.toStr(t);if(util$4.isUndefined(r)){this.appendToTail(o),this.table[a]=o,++this.nElements;return}else return this.replace(r,o),r.value}},e.prototype.keys=function(){var t=[];return this.forEach(function(s,r){t.push(s)}),t},e.prototype.values=function(){var t=[];return this.forEach(function(s,r){t.push(r)}),t},e.prototype.forEach=function(t){for(var s=this.head.next;!isHeadOrTailLinkedDictionaryPair(s);){var r=t(s.key,s.value);if(r===!1)return;s=s.next}},e}(Dictionary_1$3.default);LinkedDictionary$1.default=LinkedDictionary;var MultiDictionary$1={};Object.defineProperty(MultiDictionary$1,"__esModule",{value:!0});var util$3=util$b,Dictionary_1$2=Dictionary$2,arrays=arrays$4,MultiDictionary=function(){function i(e,t,s){s===void 0&&(s=!1),this.dict=new Dictionary_1$2.default(e),this.equalsF=t||util$3.defaultEquals,this.allowDuplicate=s}return i.prototype.getValue=function(e){var t=this.dict.getValue(e);return util$3.isUndefined(t)?[]:arrays.copy(t)},i.prototype.setValue=function(e,t){if(util$3.isUndefined(e)||util$3.isUndefined(t))return!1;var s=this.dict.getValue(e);return util$3.isUndefined(s)?(this.dict.setValue(e,[t]),!0):!this.allowDuplicate&&arrays.contains(s,t,this.equalsF)?!1:(s.push(t),!0)},i.prototype.remove=function(e,t){if(util$3.isUndefined(t)){var s=this.dict.remove(e);return!util$3.isUndefined(s)}var r=this.dict.getValue(e);return!util$3.isUndefined(r)&&arrays.remove(r,t,this.equalsF)?(r.length===0&&this.dict.remove(e),!0):!1},i.prototype.keys=function(){return this.dict.keys()},i.prototype.values=function(){for(var e=this.dict.values(),t=[],s=0,r=e;s-1&&this.insertIdIntoRoot(t,s);for(var r in this.nodes)if(this.nodes.hasOwnProperty(r)){var o=this.findNodeId(r,e);o>-1&&this.insertIdIntoNode(r,t,o)}},i.prototype.insertIdAfterId=function(e,t){var s=this.findRootId(e);s>-1&&this.insertIdIntoRoot(t,s+1);for(var r in this.nodes)if(this.nodes.hasOwnProperty(r)){var o=this.findNodeId(r,e);o>-1&&this.insertIdIntoNode(r,t,o+1)}},i.prototype.insertIdIntoId=function(e,t){this.nodeInsertAtEnd(e,t),this.nodes[t]=[]},i.prototype.insertIdIntoRoot=function(e,t){if(t===void 0)this.rootInsertAtEnd(e);else if(t<0){var s=this.rootIds.length;this.rootIds.splice(t+s+1,0,e)}else this.rootIds.splice(t,0,e);this.nodes[e]=this.nodes[e]||[]},i.prototype.insertIdIntoNode=function(e,t,s){if(this.nodes[e]=this.nodes[e]||[],this.nodes[t]=this.nodes[t]||[],s===void 0)this.nodeInsertAtEnd(e,t);else if(s<0){var r=this.nodes[e].length;this.nodes[e].splice(s+r+1,0,t)}else this.nodes[e].splice(s,0,t)},i.prototype.moveId=function(e,t,s){var r=e,o=this.findRootId(r);this.nodes[t];for(var a in this.nodes)if(this.nodes.hasOwnProperty(a)){this.findNodeId(a,t);break}var l=t,c=this.findRootId(l);this.nodes[t];for(var a in this.nodes)if(this.nodes.hasOwnProperty(a)){this.findNodeId(a,t);break}if(o>-1)if(c>-1)switch(this.rootDelete(o),c>o&&c--,s){case Direction.BEFORE:this.insertIdIntoRoot(r,c);break;case Direction.AFTER:this.insertIdIntoRoot(r,c+1);break;case Direction.INSIDE_AT_START:this.nodeInsertAtStart(l,r);break;case Direction.INSIDE_AT_END:this.nodeInsertAtEnd(l,r);break}else{this.rootDelete(o);for(var a in this.nodes)if(this.nodes.hasOwnProperty(a)){var d=this.findNodeId(a,l);if(d>-1){switch(s){case Direction.BEFORE:this.insertIdIntoNode(a,r,d);break;case Direction.AFTER:this.insertIdIntoNode(a,r,d+1);break;case Direction.INSIDE_AT_START:this.nodeInsertAtStart(l,r);break;case Direction.INSIDE_AT_END:this.nodeInsertAtEnd(l,r);break}break}}}else if(c>-1){for(var a in this.nodes)if(this.nodes.hasOwnProperty(a)){var d=this.findNodeId(a,r);if(d>-1){this.nodeDeleteAtIndex(a,d);break}}switch(s){case Direction.BEFORE:this.insertIdIntoRoot(r,c);break;case Direction.AFTER:this.insertIdIntoRoot(r,c+1);break;case Direction.INSIDE_AT_START:this.nodeInsertAtStart(l,r);break;case Direction.INSIDE_AT_END:this.nodeInsertAtEnd(l,r);break}}else{for(var a in this.nodes)if(this.nodes.hasOwnProperty(a)){var d=this.findNodeId(a,r);if(d>-1){this.nodeDeleteAtIndex(a,d);break}}for(var a in this.nodes)if(this.nodes.hasOwnProperty(a)){var d=this.findNodeId(a,l);if(d>-1){switch(s){case Direction.BEFORE:this.insertIdIntoNode(a,r,d);break;case Direction.AFTER:this.insertIdIntoNode(a,r,d+1);break;case Direction.INSIDE_AT_START:this.nodeInsertAtStart(l,r);break;case Direction.INSIDE_AT_END:this.nodeInsertAtEnd(l,r);break}break}}}},i.prototype.swapArrayElements=function(e,t,s){var r=e[t];return e[t]=e[s],e[s]=r,e},i.prototype.rootDeleteId=function(e){var t=this.findRootId(e);t>-1&&this.rootDelete(t)},i.prototype.nodeAndSubNodesDelete=function(e){for(var t=[],s=0;s(i[i.pppppp=0]="pppppp",i[i.ppppp=1]="ppppp",i[i.pppp=2]="pppp",i[i.ppp=3]="ppp",i[i.pp=4]="pp",i[i.p=5]="p",i[i.mp=6]="mp",i[i.mf=7]="mf",i[i.f=8]="f",i[i.ff=9]="ff",i[i.fff=10]="fff",i[i.ffff=11]="ffff",i[i.fffff=12]="fffff",i[i.ffffff=13]="ffffff",i[i.sf=14]="sf",i[i.sff=15]="sff",i[i.sfp=16]="sfp",i[i.sfpp=17]="sfpp",i[i.fp=18]="fp",i[i.rf=19]="rf",i[i.rfz=20]="rfz",i[i.sfz=21]="sfz",i[i.sffz=22]="sffz",i[i.fz=23]="fz",i[i.other=24]="other",i))(DynamicEnum||{});InstantaneousDynamicExpression.staticConstructor();class DynamicsContainer{constructor(e,t){e instanceof ContinuousDynamicExpression?this.continuousDynamicExpression=e:e instanceof InstantaneousDynamicExpression&&(this.instantaneousDynamicExpression=e),this.staffNumber=t}static Compare(e,t){return e.parMultiExpression().AbsoluteTimestamp.CompareTo(t.parMultiExpression().AbsoluteTimestamp)}parMultiExpression(){if(this.continuousDynamicExpression)return this.continuousDynamicExpression.StartMultiExpression;if(this.instantaneousDynamicExpression)return this.instantaneousDynamicExpression.ParentMultiExpression}}class AbstractNotationInstruction{constructor(e){this.printObject=!0,this.parent=e}get Parent(){return this.parent}set Parent(e){this.parent=e}get PrintObject(){return this.printObject}set PrintObject(e){this.printObject=e}}class RhythmInstruction extends AbstractNotationInstruction{constructor(e,t){super(void 0),this.rhythm=e,this.numerator=e.Numerator,this.denominator=e.Denominator,this.symbolEnum=t}get Rhythm(){return this.rhythm}set Rhythm(e){this.rhythm=e}get SymbolEnum(){return this.symbolEnum}set SymbolEnum(e){this.symbolEnum=e}clone(){return new RhythmInstruction(this.rhythm.clone(),this.symbolEnum)}OperatorEquals(e){const t=this;return t===e?!0:!t||!e?!1:t.numerator===e.numerator&&t.denominator===e.denominator}OperatorNotEqual(e){return this!==e}ToString(){return"Rhythm: "+this.rhythm.toString()}}var RhythmSymbolEnum=(i=>(i[i.NONE=0]="NONE",i[i.COMMON=1]="COMMON",i[i.CUT=2]="CUT",i))(RhythmSymbolEnum||{});class MusicPartManagerIterator{constructor(e,t,s){this.currentMeasureIndex=0,this.currentPartIndex=0,this.currentVoiceEntryIndex=-1,this.currentDynamicEntryIndex=0,this.currentTempoEntryIndex=0,this.currentDynamicChangingExpressions=[],this.repetitionIterationCountDictKeys=[],this.repetitionIterationCountDictValues=[],this.currentRepetition=void 0,this.endReached=!1,this.frontReached=!1,this.currentTimeStamp=new Fraction$1(0,1),this.currentEnrolledMeasureTimestamp=new Fraction$1(0,1),this.currentRelativeInMeasureTimestamp=new Fraction$1(0,1),this.currentVerticalContainerInMeasureTimestamp=new Fraction$1(0,1),this.jumpResponsibleRepetition=void 0,this.activeDynamicExpressions=[];try{this.frontReached=!0,this.musicSheet=e,this.currentBpm=e.userStartTempoInBPM,this.currentVoiceEntries=void 0,this.frontReached=!1;for(const r of this.musicSheet.Repetitions)this.setRepetitionIterationCount(r,1);for(let r=0;r=this.JumpResponsibleRepetition.StartIndex&&r.EndIndex<=this.JumpResponsibleRepetition.EndIndex&&this.resetRepetitionIterationCount(r)}}handleRepetitionsAtMeasureEnd(){for(let e=0,t=this.currentMeasure.LastRepetitionInstructions.length;e-1&&this.getRepetitionIterationCount(r)=this.JumpResponsibleRepetition.StartIndex&&r.EndIndex<=this.JumpResponsibleRepetition.EndIndex&&this.resetRepetitionIterationCount(r),this.repetitionIterationCountDictKeys.contains(r))){const o=r.getForwardJumpTargetForIteration(this.getRepetitionIterationCount(r));if(o>=0){this.currentMeasureIndex=o,this.currentMeasure=this.musicSheet.SourceMeasures[this.currentMeasureIndex],this.currentVoiceEntryIndex=-1,this.jumpResponsibleRepetition=r,this.forwardJumpOccurred=!0;return}o===-2&&(this.endReached=!0)}}}this.currentMeasureIndex++,this.JumpResponsibleRepetition!==void 0&&this.currentMeasureIndex>this.JumpResponsibleRepetition.EndIndex&&(this.jumpResponsibleRepetition=void 0)}doBackJump(e){this.currentMeasureIndex=e.getBackwardJumpTarget(),this.currentMeasure=this.musicSheet.SourceMeasures[this.currentMeasureIndex],this.currentVoiceEntryIndex=-1,this.incrementRepetitionIterationCount(e),this.jumpResponsibleRepetition=e,this.backJumpOccurred=!0}activateCurrentRhythmInstructions(){if(this.currentMeasure!==void 0&&this.currentMeasure.FirstInstructionsStaffEntries.length>0&&this.currentMeasure.FirstInstructionsStaffEntries[0]!==void 0){const e=this.currentMeasure.FirstInstructionsStaffEntries[0].Instructions;for(let t=0,s=e.length;t0&&(this.currentDynamicEntryIndex>=e.length||e[this.currentDynamicEntryIndex].parMultiExpression().AbsoluteTimestamp.gte(this.CurrentSourceTimestamp));)this.currentDynamicEntryIndex--;for(;this.currentDynamicEntryIndex0&&(this.currentTempoEntryIndex>=t.length||t[this.currentTempoEntryIndex].AbsoluteTimestamp.gte(this.CurrentSourceTimestamp));)this.currentTempoEntryIndex--;for(;this.currentTempoEntryIndex=0&&this.currentVoiceEntryIndex=0&&this.currentMeasureIndex0){if(!e)return!0;for(let s=0,r=t.length;st&&(this.openSheetMusicDisplay.Sheet.SelectionStart=this.openSheetMusicDisplay.Sheet.SourceMeasures[t].AbsoluteTimestamp),this.openSheetMusicDisplay.Sheet&&this.openSheetMusicDisplay.Sheet.SourceMeasures.length>s){const o=this.openSheetMusicDisplay.Sheet.SourceMeasures[s];this.openSheetMusicDisplay.Sheet.SelectionEnd=Fraction$1.plus(o.AbsoluteTimestamp,o.Duration)}this.iterator=this.manager.getIterator()}getStaffEntryFromVoiceEntry(e){const t=e.ParentSourceStaffEntry.VerticalContainerParent.ParentMeasure.measureListIndex,s=e.ParentSourceStaffEntry.ParentStaff.idInMusicSheet;return this.graphic.findGraphicalStaffEntryFromMeasureList(s,t,e.ParentSourceStaffEntry)}updateWithTimestamp(e){const t=this.manager.absoluteEnrolledToSheetTimestamp(e),s=this.graphic.calculateXPositionFromTimestamp(t),r=s[0],o=s[1];this.updateCurrentPageFromSystem(o);const a=s[2];if(!a)return;const l=Math.max(a.parentMeasure.MeasureNumber,1);let c;for(const g of this.graphic.MeasureList[l-1])if(g){c=g;break}const d=this.graphic.calculateCursorPoints(r,o),m=d[0].y,u=d[1].y-m;if(c){if(this.updateWidthAndStyle(c.PositionAndShape,r,m,u),this.openSheetMusicDisplay.FollowCursor){const g=this.cursorElement.getBoundingClientRect().top;this.cursorElement.scrollIntoView({behavior:g<1e3?"smooth":"auto",block:"center"})}this.cursorElement.style.display=""}}update(){if(this.hidden||this.hidden===void 0||this.hidden===null)return;this.updateCurrentPage();const e=this.Iterator,t=e.CurrentVisibleVoiceEntries();if(e.EndReached||!e.CurrentVoiceEntries||t.length===0)return;let s=0,r=0,o=0,a;if(e.CurrentMeasure.isReducedToMultiRest){const m=this.graphic.findGraphicalMeasure(e.CurrentMeasureIndex,0),u=m.parentSourceMeasure.multipleRestMeasures,b=e.CurrentMeasure.multipleRestMeasureNumber/(u+1),y=m.PositionAndShape.Size.width-m.beginInstructionsWidth;s=m.PositionAndShape.AbsolutePosition.x+m.beginInstructionsWidth+b*y,a=m.ParentMusicSystem}else{const u=t.map(g=>this.getStaffEntryFromVoiceEntry(g)).sort((g,b)=>{var y,S,v,x;return((S=(y=g==null?void 0:g.PositionAndShape)==null?void 0:y.AbsolutePosition)==null?void 0:S.x)<=((x=(v=b==null?void 0:b.PositionAndShape)==null?void 0:v.AbsolutePosition)==null?void 0:x.x)?-1:1})[0];u&&(s=u.PositionAndShape.AbsolutePosition.x,a=u.parentMeasure.ParentMusicSystem)}if(!a)return;r=a.PositionAndShape.AbsolutePosition.y+a.StaffLines[0].PositionAndShape.RelativePosition.y;const l=a.StaffLines[a.StaffLines.length-1];o=a.PositionAndShape.AbsolutePosition.y+l.PositionAndShape.RelativePosition.y+l.StaffHeight-r;const d=this.graphic.findGraphicalMeasure(e.CurrentMeasureIndex,0).PositionAndShape;if(this.updateWidthAndStyle(d,s,r,o),this.openSheetMusicDisplay.FollowCursor&&this.cursorOptions.follow)if(this.openSheetMusicDisplay.EngravingRules.RenderSingleHorizontalStaffline)this.cursorElement.scrollIntoView({behavior:"smooth",inline:"center"});else{const m=this.cursorElement.getBoundingClientRect().top;this.cursorElement.scrollIntoView({behavior:m<1e3?"smooth":"auto",block:"center"})}this.cursorElement.style.display=""}updateWidthAndStyle(e,t,s,r){var c;const o=this.cursorElement;let a=0,l=r;switch(this.cursorOptions.type){case 1:o.style.top=s*10*this.openSheetMusicDisplay.zoom+"px",o.style.left=(t-1.5)*10*this.openSheetMusicDisplay.zoom+"px",l=r*10*this.openSheetMusicDisplay.zoom,o.height=l,o.style.height=l+"px",a=5*this.openSheetMusicDisplay.zoom;break;case 2:o.style.top=(s-2.5)*10*this.openSheetMusicDisplay.zoom+"px",o.style.left=t*10*this.openSheetMusicDisplay.zoom+"px",l=1.5*10*this.openSheetMusicDisplay.zoom,o.height=l,o.style.height=l+"px",a=5*this.openSheetMusicDisplay.zoom;break;case 3:o.style.top=e.AbsolutePosition.y*10*this.openSheetMusicDisplay.zoom+"px",o.style.left=e.AbsolutePosition.x*10*this.openSheetMusicDisplay.zoom+"px",l=r*10*this.openSheetMusicDisplay.zoom,o.height=l,o.style.height=l+"px",a=e.Size.width*10*this.openSheetMusicDisplay.zoom;break;case 4:o.style.top=e.AbsolutePosition.y*10*this.openSheetMusicDisplay.zoom+"px",o.style.left=e.AbsolutePosition.x*10*this.openSheetMusicDisplay.zoom+"px",l=r*10*this.openSheetMusicDisplay.zoom,o.height=l,o.style.height=l+"px",a=(t-e.AbsolutePosition.x)*10*this.openSheetMusicDisplay.zoom;break;default:o.style.top=s*10*this.openSheetMusicDisplay.zoom+"px",o.style.left=(t-1.5)*10*this.openSheetMusicDisplay.zoom+"px",l=r*10*this.openSheetMusicDisplay.zoom,o.height=l,o.style.height=l+"px",a=3*10*this.openSheetMusicDisplay.zoom;break}(c=window.GYM)!=null&&c.multitrack&&(o.height=l+24,o.style.height=l+24+"px"),a!==o.width&&(o.width=a,this.updateStyle(a,this.cursorOptions))}hide(){this.cursorElement.style.display="none",this.hidden=!0}next(){this.Iterator.moveToNextVisibleVoiceEntry(!1),this.update()}reset(){this.resetIterator();const e=this.manager.getIterator(this.graphic.ParentMusicSheet.SelectionStart);this.updateWithTimestamp(e.CurrentEnrolledTimestamp)}updateStyle(e,t=void 0){t!==void 0&&(this.cursorOptions=t);const s=document.createElement("canvas");s.width=this.cursorElement.width,s.height=1;const r=s.getContext("2d");r.globalAlpha=this.cursorOptions.alpha;const o=r.createLinearGradient(0,0,this.cursorElement.width,0);switch(this.cursorOptions.type){case 1:case 2:case 3:case 4:o.addColorStop(1,this.cursorOptions.color);break;default:o.addColorStop(0,"white"),o.addColorStop(.2,this.cursorOptions.color),o.addColorStop(.8,this.cursorOptions.color),o.addColorStop(1,"white");break}r.fillStyle=o,r.fillRect(0,0,e,1),this.cursorElement.src=s.toDataURL("image/png")}get Iterator(){return this.iterator}get Hidden(){return this.hidden}VoicesUnderCursor(e){return this.Iterator.CurrentVisibleVoiceEntries(e)}NotesUnderCursor(e){const t=this.VoicesUnderCursor(e),s=[];return t.forEach(r=>{s.push.apply(s,r.Notes)}),s}GNotesUnderCursor(e){const t=this.VoicesUnderCursor(e),s=[];return t.forEach(r=>{s.push(...r.Notes.map(o=>this.rules.GNote(o)))}),s}updateCurrentPage(){const e=this.Iterator.currentTimeStamp;for(const t of this.graphic.MusicPages)if(t.MusicSystems.last().GetSystemsLastTimeStamp().gt(e)){const r=t.PageNumber;return r!==this.currentPageNumber&&(this.container.removeChild(this.cursorElement),this.container=document.getElementById(this.rules.DYContainerId+r),this.container.appendChild(this.cursorElement)),this.currentPageNumber=r}return 1}updateCurrentPageFromSystem(e){if(e!=null&&e.Parent){const t=e.Parent.PageNumber;return t!==this.currentPageNumber&&(this.container.removeChild(this.cursorElement),this.container=document.getElementById(this.rules.DYContainerId+t),this.container.appendChild(this.cursorElement)),this.currentPageNumber=t}return 1}}class PointF2D{constructor(e=0,t=0){this.x=0,this.y=0,this.x=e,this.y=t}static get Empty(){return new PointF2D}static pointsAreEqual(e,t){return e.x===t.x&&e.y===t.y}ToString(){return"["+this.x+", "+this.y+"]"}}class SizeF2D{constructor(e=0,t=0){this.width=e,this.height=t}}class RectangleF2D{constructor(e,t,s,r){this.x=0,this.y=0,this.width=0,this.height=0,this.x=e,this.y=t,this.width=s,this.height=r}static createFromLocationAndSize(e,t){return new RectangleF2D(e.x,e.y,t.width,t.height)}get Location(){return new PointF2D(this.x,this.y)}get Size(){return new SizeF2D(this.width,this.height)}}class AClassHierarchyTrackable{isInstanceOfClass(e){let t=this.constructor.prototype;for(;t;){if(e===t.constructor.name)return!0;t=t.__proto__}return!1}}class GraphicalObject extends AClassHierarchyTrackable{get PositionAndShape(){return this.boundingBox}set PositionAndShape(e){this.boundingBox=e}}class StaffLineActivitySymbol extends GraphicalObject{constructor(e){super(),this.parentStaffLine=e;const t=e.PositionAndShape;this.boundingBox=new BoundingBox$1(this,t),this.boundingBox.BorderRight=6,this.boundingBox.BorderBottom=4.5,this.boundingBox.BorderLeft=-1.5,this.boundingBox.BorderTop=-1.5}}class Clickable extends GraphicalObject{}let BoundingBox$1=class{constructor(e=void 0,t=void 0,s=!1){this.isSymbol=!1,this.relativePositionHasBeenSet=!1,this.xBordersHaveBeenSet=!1,this.yBordersHaveBeenSet=!1,this.absolutePosition=new PointF2D,this.relativePosition=new PointF2D,this.size=new SizeF2D,this.marginSize=new SizeF2D,this.upperLeftCorner=new PointF2D,this.upperLeftMarginCorner=new PointF2D,this.borderLeft=0,this.borderRight=0,this.borderTop=0,this.borderBottom=0,this.borderMarginLeft=0,this.borderMarginRight=0,this.borderMarginTop=0,this.borderMarginBottom=0,this.childElements=[],this.parent=t,this.dataObject=e,this.isSymbol=s,this.xBordersHaveBeenSet=!1,this.yBordersHaveBeenSet=!1,t&&(this.Parent=t)}get RelativePositionHasBeenSet(){return this.relativePositionHasBeenSet}get XBordersHaveBeenSet(){return this.xBordersHaveBeenSet}set XBordersHaveBeenSet(e){this.xBordersHaveBeenSet=e}get YBordersHaveBeenSet(){return this.yBordersHaveBeenSet}set YBordersHaveBeenSet(e){this.yBordersHaveBeenSet=e}get AbsolutePosition(){return this.absolutePosition}set AbsolutePosition(e){this.absolutePosition=e}get RelativePosition(){return this.relativePosition}set RelativePosition(e){this.relativePosition=e,this.relativePositionHasBeenSet=!0}get Size(){return this.size}set Size(e){this.size=e}get MarginSize(){return this.marginSize}get UpperLeftCorner(){return this.upperLeftCorner}get UpperLeftMarginCorner(){return this.upperLeftMarginCorner}get BorderLeft(){return this.borderLeft}set BorderLeft(e){this.borderLeft=e,this.calculateRectangle()}get BorderRight(){return this.borderRight}set BorderRight(e){this.borderRight=e,this.calculateRectangle()}get BorderTop(){return this.borderTop}set BorderTop(e){this.borderTop=e,this.calculateRectangle()}get BorderBottom(){return this.borderBottom}set BorderBottom(e){this.borderBottom=e,this.calculateRectangle()}get BorderMarginLeft(){return this.borderMarginLeft>this.borderLeft?this.borderLeft:this.borderMarginLeft}set BorderMarginLeft(e){this.borderMarginLeft=e,this.calculateMarginRectangle()}get BorderMarginRight(){return this.borderMarginRightthis.borderTop?this.borderTop:this.borderMarginTop}set BorderMarginTop(e){this.borderMarginTop=e,this.calculateMarginRectangle()}get BorderMarginBottom(){return this.borderMarginBottom-1&&this.parent.ChildElements.splice(a,1)}this.parent=e,((s=(t=this.parent)==null?void 0:t.ChildElements)==null?void 0:s.indexOf(this))>-1?loglevelExports.error("BoundingBox of "+this.dataObject.constructor.name+" already in children list of "+this.parent.dataObject.constructor.name+"'s BoundingBox"):(o=(r=this.parent)==null?void 0:r.ChildElements)==null||o.push(this)}get DataObject(){return this.dataObject}get Center(){return new PointF2D(this.RelativePosition.x+(this.BorderMarginRight+this.BorderMarginLeft),this.RelativePosition.y+(this.BorderMarginBottom+this.BorderMarginTop))}setAbsolutePositionFromParent(){this.parent?(this.absolutePosition.x=this.parent.AbsolutePosition.x+this.relativePosition.x,this.absolutePosition.y=this.parent.AbsolutePosition.y+this.relativePosition.y):this.absolutePosition=this.relativePosition}calculateAbsolutePosition(){this.absolutePosition.x=this.relativePosition.x,this.absolutePosition.y=this.relativePosition.y;let e=this.parent;for(;e;)this.absolutePosition.x+=e.relativePosition.x,this.absolutePosition.y+=e.relativePosition.y,e=e.parent}calculateAbsolutePositionsRecursiveWithoutTopelement(){this.absolutePosition.x=0,this.absolutePosition.y=0;for(let e=0,t=this.ChildElements.length;e.001;break;case 2:case 3:r=this.relativePosition.y,e.calculateMarginPositionAlongDirection(this,t),o=Math.abs(r-this.relativePosition.y)>.001;break;default:throw new ArgumentOutOfRangeException("direction")}while(o)}collisionDetection(e){const t=Math.min(this.AbsolutePosition.x+this.borderRight,e.absolutePosition.x+e.borderRight)-Math.max(this.AbsolutePosition.x+this.borderLeft,e.absolutePosition.x+e.borderLeft),s=Math.min(this.AbsolutePosition.y+this.borderBottom,e.absolutePosition.y+e.borderBottom)-Math.max(this.AbsolutePosition.y+this.borderTop,e.absolutePosition.y+e.borderTop);return t>0&&s>0}liesInsideBorders(e){const t=this.AbsolutePosition.x+this.borderLeft<=e.absolutePosition.x+e.borderLeft&&e.absolutePosition.x+e.borderLeft<=this.AbsolutePosition.x+this.borderRight,s=this.AbsolutePosition.x+this.borderLeft<=e.absolutePosition.x+e.borderRight&&e.absolutePosition.x+e.borderRight<=this.AbsolutePosition.x+this.borderRight;if(t&&s){const r=this.AbsolutePosition.y+this.borderTop<=e.absolutePosition.y+e.borderTop&&e.absolutePosition.y+e.borderTop<=this.AbsolutePosition.y+this.borderBottom,o=this.AbsolutePosition.y+this.borderTop<=e.absolutePosition.y+e.borderBottom&&e.absolutePosition.y+e.borderBottom<=this.AbsolutePosition.y+this.borderBottom;if(r&&o)return!0}return!1}pointLiesInsideBorders(e){return this.AbsolutePosition.x+this.borderLeft<=e.x&&e.x<=this.AbsolutePosition.x+this.borderRight&&this.AbsolutePosition.y+this.borderTop<=e.y&&e.y<=this.AbsolutePosition.y+this.borderBottom}marginCollisionDetection(e){const t=Math.min(this.AbsolutePosition.x+this.borderMarginRight,e.absolutePosition.x+e.borderMarginRight)-Math.max(this.AbsolutePosition.x+this.borderMarginLeft,e.absolutePosition.x+e.borderMarginLeft),s=Math.min(this.AbsolutePosition.y+this.borderMarginBottom,e.absolutePosition.y+e.borderMarginBottom)-Math.max(this.AbsolutePosition.y+this.borderMarginTop,e.absolutePosition.y+e.borderMarginTop);return t>0&&s>0}liesInsideMargins(e){const t=this.AbsolutePosition.x+this.borderMarginLeft<=e.absolutePosition.x+e.borderMarginLeft&&e.absolutePosition.x+e.borderMarginLeft<=this.AbsolutePosition.x+this.borderMarginRight,s=this.AbsolutePosition.x+this.borderMarginLeft<=e.absolutePosition.x+e.borderMarginRight&&e.absolutePosition.x+e.borderMarginRight<=this.AbsolutePosition.x+this.borderMarginRight;if(t&&s){const r=this.AbsolutePosition.y+this.borderMarginTop<=e.absolutePosition.y+e.borderMarginTop&&e.absolutePosition.y+e.borderMarginTop<=this.AbsolutePosition.y+this.borderMarginBottom,o=this.AbsolutePosition.y+this.borderMarginTop<=e.absolutePosition.y+e.borderMarginBottom&&e.absolutePosition.y+e.borderMarginBottom<=this.AbsolutePosition.y+this.borderMarginBottom;if(r&&o)return!0}return!1}pointLiesInsideMargins(e){return this.AbsolutePosition.x+this.borderMarginLeft<=e.x&&e.x<=this.AbsolutePosition.x+this.borderMarginRight&&this.AbsolutePosition.y+this.borderMarginTop<=e.y&&e.y<=this.AbsolutePosition.y+this.borderMarginBottom}computeNonOverlappingPosition(e,t,s){this.RelativePosition=new PointF2D(s.x,s.y),this.setAbsolutePositionFromParent();let r=0,o=!1;do switch(t){case 0:case 1:r=this.relativePosition.x,e.calculatePositionAlongDirection(this,t),o=Math.abs(r-this.relativePosition.x)>1e-4;break;case 2:case 3:r=this.relativePosition.y,e.calculatePositionAlongDirection(this,t),o=Math.abs(r-this.relativePosition.y)>1e-4;break;default:throw new ArgumentOutOfRangeException("direction")}while(o)}getClickedObjectOfType(e){const t=this.dataObject;if(this.pointLiesInsideBorders(e)&&t)return t;for(let s=0,r=this.childElements.length;s(i[i.Left=0]="Left",i[i.Right=1]="Right",i[i.Up=2]="Up",i[i.Down=3]="Down",i))(ColDirEnum||{});class GraphicalMusicPage extends GraphicalObject{constructor(e){super(),this.musicSystems=[],this.labels=[],this.parent=e,this.boundingBox=new BoundingBox$1(this,void 0)}get MusicSystems(){return this.musicSystems}set MusicSystems(e){this.musicSystems=e}get Labels(){return this.labels}set Labels(e){this.labels=e}get Parent(){return this.parent}set Parent(e){this.parent=e}get PageNumber(){return this.pageNumber}set PageNumber(e){this.pageNumber=e}setMusicPageAbsolutePosition(e,t){return new PointF2D(0,0)}}var PagePlacementEnum=(i=>(i[i.Down=0]="Down",i[i.Right=1]="Right",i[i.RightDown=2]="RightDown",i))(PagePlacementEnum||{}),TextAlignmentEnum=(i=>(i[i.LeftTop=0]="LeftTop",i[i.LeftCenter=1]="LeftCenter",i[i.LeftBottom=2]="LeftBottom",i[i.CenterTop=3]="CenterTop",i[i.CenterCenter=4]="CenterCenter",i[i.CenterBottom=5]="CenterBottom",i[i.RightTop=6]="RightTop",i[i.RightCenter=7]="RightCenter",i[i.RightBottom=8]="RightBottom",i))(TextAlignmentEnum||{});class TextAlignment{static IsLeft(e){return e===0||e===1||e===2}static IsCenterAligned(e){return e===3||e===4||e===5}static IsRight(e){return e===6||e===7||e===8}}var FontStyles=(i=>(i[i.Regular=0]="Regular",i[i.Bold=1]="Bold",i[i.Italic=2]="Italic",i[i.BoldItalic=3]="BoldItalic",i[i.Underlined=4]="Underlined",i))(FontStyles||{}),Fonts=(i=>(i[i.TimesNewRoman=0]="TimesNewRoman",i[i.Kokila=1]="Kokila",i[i.Gonville=2]="Gonville",i))(Fonts||{});const FontStringNames={0:"Times New Roman",1:"Kokila",2:"Gonville"};var TieTypes=(i=>(i.SIMPLE="",i.HAMMERON="H",i.PULLOFF="P",i.SLIDE="S",i.TAPPING="T",i))(TieTypes||{});const Additional={"-2":[4,12,23],"-7":[13],"-9":[6]};var NoteEnum=(i=>(i[i.C=0]="C",i[i.D=2]="D",i[i.E=4]="E",i[i.F=5]="F",i[i.G=7]="G",i[i.A=9]="A",i[i.B=11]="B",i))(NoteEnum||{}),AccidentalEnum=(i=>(i[i.SHARP=0]="SHARP",i[i.FLAT=1]="FLAT",i[i.NONE=2]="NONE",i[i.NATURAL=3]="NATURAL",i[i.DOUBLESHARP=4]="DOUBLESHARP",i[i.DOUBLEFLAT=5]="DOUBLEFLAT",i[i.TRIPLESHARP=6]="TRIPLESHARP",i[i.TRIPLEFLAT=7]="TRIPLEFLAT",i[i.QUARTERTONESHARP=8]="QUARTERTONESHARP",i[i.QUARTERTONEFLAT=9]="QUARTERTONEFLAT",i[i.SLASHFLAT=10]="SLASHFLAT",i[i.THREEQUARTERSSHARP=11]="THREEQUARTERSSHARP",i[i.THREEQUARTERSFLAT=12]="THREEQUARTERSFLAT",i[i.SLASHQUARTERSHARP=13]="SLASHQUARTERSHARP",i[i.SLASHSHARP=14]="SLASHSHARP",i[i.DOUBLESLASHFLAT=15]="DOUBLESLASHFLAT",i[i.SORI=16]="SORI",i[i.KORON=17]="KORON",i))(AccidentalEnum||{});const _Pitch=class{constructor(i,e,t,s=void 0){this.accidental=2,this.fundamentalNote=i,this.octave=e,this.accidental=t,this.accidentalXml=s,this.halfTone=i+(e+_Pitch.octXmlDiff)*12+_Pitch.HalfTonesFromAccidental(t),this.frequency=_Pitch.calcFrequency(this),this.nextFrequency=_Pitch.calcFrequency(this,"next"),this.prevFrequency=_Pitch.calcFrequency(this,"prev")}static getNoteEnumString(i){switch(i){case 0:return"C";case 2:return"D";case 4:return"E";case 5:return"F";case 7:return"G";case 9:return"A";case 11:return"B";default:return""}}static lineShiftFromNoteEnum(i,e){if(e===0)return[i,0];const t=_Pitch.pitchEnumValues,s=t.indexOf(i);let r=0,o=(s+e)%t.length;return s+e>t.length-1&&(r=1),o<0&&(o=t.length+o,r=-1),[t[o],r]}static CalculateTransposedHalfTone(i,e){const t=i.fundamentalNote+i.AccidentalHalfTones+e;return _Pitch.WrapAroundCheck(t,12)}static WrapAroundCheck(i,e){let t=0;for(;i<0;)i+=e,t--;for(;i>=e;)i-=e,t++;return{overflow:t,halftone:i}}static calcFrequency(i,e){let t=0,s;if(i instanceof _Pitch){const l=i;t=l.octave-1,s=l.fundamentalNote-9+l.AccidentalHalfTones}else typeof i=="number"&&(s=i-57);const r=window.DYSubjectId;let o=0;window.DYEnvironment==="COLEXIU"&&(Additional[12]=[120]);for(const l in Additional)if(Object.prototype.hasOwnProperty.call(Additional,l)&&Additional[l].includes(r)){o=parseFloat(l);break}let a=s+o;return e==="next"&&a++,e==="prev"&&a--,442*Math.pow(2,t)*Math.pow(2,a/12)}static calcFractionalKey(i){return Math.log(i/440)/Math.LN10*_Pitch.halftoneFactor+57}static fromFrequency(i){const e=_Pitch.calcFractionalKey(i)+.5,t=Math.floor(e/12)-_Pitch.octXmlDiff,s=Math.floor(e)%12;let r=s,o=2;return this.pitchEnumValues.indexOf(r)===-1&&(r=s-1,o=0),new _Pitch(r,t,o)}static fromHalftone(i){const e=Math.floor(i/12)-_Pitch.octXmlDiff,t=i%12;let s=t,r=2;return this.pitchEnumValues.indexOf(s)===-1&&(s=t-1,r=0),new _Pitch(s,e,r)}static ceiling(i){i=i%12;let e=i;return this.pitchEnumValues.indexOf(e)===-1&&(e=i+1),e}static floor(i){i=i%12;let e=i;return this.pitchEnumValues.indexOf(e)===-1&&(e=i-1),e}static HalfTonesFromAccidental(i){switch(i){case 2:return 0;case 0:return 1;case 1:return-1;case 3:return 0;case 4:return 2;case 5:return-2;case 6:return 3;case 7:return-3;case 8:return .5;case 9:return-.5;case 10:return-.51;case 11:return 1.5;case 12:return-1.5;case 13:return .0013;case 14:return .0014;case 15:return-.0015;case 16:return .0016;case 17:return .0017;default:throw new Error("Unhandled AccidentalEnum value")}}static AccidentalFromHalfTones(i){switch(i){case 0:return 2;case 1:return 0;case-1:return 1;case 2:return 4;case-2:return 5;case 3:return 6;case-3:return 7;case .5:return 8;case-.5:return 9;case 1.5:return 11;case-1.5:return 12;default:return i>0&&i<1?8:i<0&&i>-1?9:8}}static accidentalVexflow(i){let e;switch(i){case 3:e="n";break;case 1:e="b";break;case 0:e="#";break;case 4:e="##";break;case 6:e="###";break;case 5:e="bb";break;case 7:e="bbs";break;case 8:e="+";break;case 9:e="d";break;case 10:e="bs";break;case 11:e="++";break;case 12:e="db";break;case 13:e="+-";break;case 14:e="++-";break;case 15:e="bss";break;case 16:e="o";break;case 17:e="k";break}return e}get AccidentalHalfTones(){return _Pitch.HalfTonesFromAccidental(this.accidental)}get Octave(){return this.octave}get FundamentalNote(){return this.fundamentalNote}get Accidental(){return this.accidental}get AccidentalXml(){return this.accidentalXml}get Frequency(){return this.frequency}static get OctaveXmlDifference(){return _Pitch.octXmlDiff}getHalfTone(){return this.halfTone}getTransposedPitch(i){if(i>12)throw new Error("rewrite this method to handle bigger octave changes or don't use is with bigger octave changes!");return i>0?this.getHigherPitchByTransposeFactor(i):i<0?this.getLowerPitchByTransposeFactor(-i):this}DoEnharmonicChange(){switch(this.accidental){case 1:case 5:this.fundamentalNote=this.getPreviousFundamentalNote(this.fundamentalNote),this.accidental=_Pitch.AccidentalFromHalfTones(this.halfTone-(this.fundamentalNote+(this.octave+_Pitch.octXmlDiff)*12));break;case 0:case 4:this.fundamentalNote=this.getNextFundamentalNote(this.fundamentalNote),this.accidental=_Pitch.AccidentalFromHalfTones(this.halfTone-(this.fundamentalNote+(this.octave+_Pitch.octXmlDiff)*12));break;default:return}}ToString(){let i=_Pitch.accidentalVexflow(this.accidental);return i||(i=""),"Key: "+_Pitch.getNoteEnumString(this.fundamentalNote)+i+", Note: "+this.fundamentalNote+", octave: "+this.octave.toString()}OperatorEquals(i){const e=this;return!e||!i?!1:e.FundamentalNote===i.FundamentalNote&&e.Octave===i.Octave&&e.Accidental===i.Accidental}OperatorNotEqual(i){return this!==i}OperatorFundamentalGreaterThan(i){const e=this;return e.Octave===i.Octave?e.FundamentalNote>i.FundamentalNote:e.Octave>i.Octave}OperatorFundamentalLessThan(i){const e=this;return e.Octave===i.Octave?e.FundamentalNote_Pitch.pitchEnumValues.length-1?(s=_Pitch.pitchEnumValues[e+i-_Pitch.pitchEnumValues.length],t++):s=_Pitch.pitchEnumValues[e+i],new _Pitch(s,t,2)}getLowerPitchByTransposeFactor(i){const e=_Pitch.pitchEnumValues.indexOf(this.fundamentalNote);let t=this.octave,s;return e-i<0?(s=_Pitch.pitchEnumValues[_Pitch.pitchEnumValues.length+e-i],t--):s=_Pitch.pitchEnumValues[e-i],new _Pitch(s,t,2)}getNextFundamentalNote(i){let e=_Pitch.pitchEnumValues.indexOf(i);return e=(e+1)%_Pitch.pitchEnumValues.length,_Pitch.pitchEnumValues[e]}getPreviousFundamentalNote(i){const e=_Pitch.pitchEnumValues.indexOf(i);return e>0?_Pitch.pitchEnumValues[e-1]:_Pitch.pitchEnumValues[_Pitch.pitchEnumValues.length-1]}};let Pitch=_Pitch;Pitch.pitchEnumValues=[0,2,4,5,7,9,11];Pitch.halftoneFactor=12/(Math.LN2/Math.LN10);Pitch.octXmlDiff=3;class VerticalGraphicalStaffEntryContainer{constructor(e,t){this.staffEntries=[],this.absoluteTimestamp=t,this.staffEntries=new Array(e)}get Index(){return this.index}set Index(e){this.index=e}get AbsoluteTimestamp(){return this.absoluteTimestamp}get StaffEntries(){return this.staffEntries}set StaffEntries(e){this.staffEntries=e}static compareByTimestamp(e,t){const s=e.absoluteTimestamp.RealValue,r=t.absoluteTimestamp.RealValue;return sr?1:0}getFirstNonNullStaffEntry(){for(let e=0,t=this.staffEntries.length;e(i[i.BaseWritingColor=0]="BaseWritingColor",i[i.FollowingCursor=1]="FollowingCursor",i[i.AlternativeFollowingCursor=2]="AlternativeFollowingCursor",i[i.PlaybackCursor=3]="PlaybackCursor",i[i.Highlighted=4]="Highlighted",i[i.ErrorUnderlay=5]="ErrorUnderlay",i[i.Selected=6]="Selected",i[i.SelectionSymbol=7]="SelectionSymbol",i[i.DebugColor1=8]="DebugColor1",i[i.DebugColor2=9]="DebugColor2",i[i.DebugColor3=10]="DebugColor3",i[i.SplitScreenDivision=11]="SplitScreenDivision",i[i.GreyTransparentOverlay=12]="GreyTransparentOverlay",i[i.MarkedArea1=13]="MarkedArea1",i[i.MarkedArea2=14]="MarkedArea2",i[i.MarkedArea3=15]="MarkedArea3",i[i.MarkedArea4=16]="MarkedArea4",i[i.MarkedArea5=17]="MarkedArea5",i[i.MarkedArea6=18]="MarkedArea6",i[i.MarkedArea7=19]="MarkedArea7",i[i.MarkedArea8=20]="MarkedArea8",i[i.MarkedArea9=21]="MarkedArea9",i[i.MarkedArea10=22]="MarkedArea10",i[i.Comment1=23]="Comment1",i[i.Comment2=24]="Comment2",i[i.Comment3=25]="Comment3",i[i.Comment4=26]="Comment4",i[i.Comment5=27]="Comment5",i[i.Comment6=28]="Comment6",i[i.Comment7=29]="Comment7",i[i.Comment8=30]="Comment8",i[i.Comment9=31]="Comment9",i[i.Comment10=32]="Comment10",i))(OutlineAndFillStyleEnum||{});const OUTLINE_AND_FILL_STYLE_DICT=new Dictionary;OUTLINE_AND_FILL_STYLE_DICT.setValue(0,"Thistle");OUTLINE_AND_FILL_STYLE_DICT.setValue(1,"Aqua");OUTLINE_AND_FILL_STYLE_DICT.setValue(2,"Azure");OUTLINE_AND_FILL_STYLE_DICT.setValue(3,"Bisque");OUTLINE_AND_FILL_STYLE_DICT.setValue(4,"CadetBlue");OUTLINE_AND_FILL_STYLE_DICT.setValue(5,"DarkBlue");OUTLINE_AND_FILL_STYLE_DICT.setValue(6,"DarkGoldenRod");OUTLINE_AND_FILL_STYLE_DICT.setValue(7,"BlanchedAlmond");OUTLINE_AND_FILL_STYLE_DICT.setValue(8,"Chartreuse");OUTLINE_AND_FILL_STYLE_DICT.setValue(9,"DarkGreen");OUTLINE_AND_FILL_STYLE_DICT.setValue(10,"DarkOrange");OUTLINE_AND_FILL_STYLE_DICT.setValue(11,"FireBrick");OUTLINE_AND_FILL_STYLE_DICT.setValue(12,"DarkSalmon");OUTLINE_AND_FILL_STYLE_DICT.setValue(13,"DarkSeaGreen");OUTLINE_AND_FILL_STYLE_DICT.setValue(14,"DarkOrchid");OUTLINE_AND_FILL_STYLE_DICT.setValue(15,"Aquamarine");OUTLINE_AND_FILL_STYLE_DICT.setValue(16,"DarkKhaki");OUTLINE_AND_FILL_STYLE_DICT.setValue(17,"ForestGreen");OUTLINE_AND_FILL_STYLE_DICT.setValue(18,"AliceBlue");OUTLINE_AND_FILL_STYLE_DICT.setValue(19,"DeepPink");OUTLINE_AND_FILL_STYLE_DICT.setValue(20,"Coral");OUTLINE_AND_FILL_STYLE_DICT.setValue(21,"DarkOliveGreen");OUTLINE_AND_FILL_STYLE_DICT.setValue(22,"Chocolate");OUTLINE_AND_FILL_STYLE_DICT.setValue(23,"DodgerBlue");OUTLINE_AND_FILL_STYLE_DICT.setValue(24,"Blue");OUTLINE_AND_FILL_STYLE_DICT.setValue(25,"Beige");OUTLINE_AND_FILL_STYLE_DICT.setValue(26,"Crimson");OUTLINE_AND_FILL_STYLE_DICT.setValue(27,"Fuchsia");OUTLINE_AND_FILL_STYLE_DICT.setValue(28,"Brown");OUTLINE_AND_FILL_STYLE_DICT.setValue(29,"BlanchedAlmond");OUTLINE_AND_FILL_STYLE_DICT.setValue(30,"CornflowerBlue");OUTLINE_AND_FILL_STYLE_DICT.setValue(31,"Cornsilk");OUTLINE_AND_FILL_STYLE_DICT.setValue(32,"DarkGrey");var GraphicalLayers=(i=>(i[i.Background=0]="Background",i[i.Highlight=1]="Highlight",i[i.MeasureError=2]="MeasureError",i[i.SelectionSymbol=3]="SelectionSymbol",i[i.Cursor=4]="Cursor",i[i.PSI_Debug=5]="PSI_Debug",i[i.Notes=6]="Notes",i[i.Comment=7]="Comment",i[i.Debug_above=8]="Debug_above",i))(GraphicalLayers||{}),NoteState=(i=>(i[i.Normal=0]="Normal",i[i.Selected=1]="Selected",i[i.Follow_Confirmed=2]="Follow_Confirmed",i[i.QFeedback_NotFound=3]="QFeedback_NotFound",i[i.QFeedback_OK=4]="QFeedback_OK",i[i.QFeedback_Perfect=5]="QFeedback_Perfect",i[i.Debug1=6]="Debug1",i[i.Debug2=7]="Debug2",i[i.Debug3=8]="Debug3",i))(NoteState||{}),AutoColorSet=(i=>(i.C="#d82c6b",i.D="#F89D15",i.E="#FFE21A",i.F="#4dbd5c",i.G="#009D96",i.A="#43469d",i.B="#76429c",i.Rest="#000000",i))(AutoColorSet||{});class GraphicalLine{constructor(e,t,s=0,r=OutlineAndFillStyleEnum.BaseWritingColor,o=void 0){this.start=e,this.end=t,this.width=s,this.styleId=r,this.colorHex=o}get Start(){return this.start}set Start(e){this.start=e}get End(){return this.end}set End(e){this.end=e}get Width(){return this.width}set Width(e){this.width=e}}class ClefInstruction extends AbstractNotationInstruction{constructor(e=0,t=0,s=2){super(void 0),this.clefType=0,this.line=2,this.octaveOffset=0,this.line=s,this.clefType=e,this.octaveOffset=t,this.calcParameters()}static getDefaultClefFromMidiInstrument(e){switch(e){case 0:return new ClefInstruction(1,0,4);case 33:return new ClefInstruction(1,0,4);case 34:return new ClefInstruction(1,0,4);case 35:return new ClefInstruction(1,0,4);case 36:return new ClefInstruction(1,0,4);case 37:return new ClefInstruction(1,0,4);case 38:return new ClefInstruction(1,0,4);case 39:return new ClefInstruction(1,0,4);case 43:return new ClefInstruction(1,0,4);default:return new ClefInstruction(0,0,2)}}static getAllPossibleClefs(){const e=[];for(let t=0;t<=2;t++){const s=new ClefInstruction(0,t,2);e.push(s)}for(let t=-2;t<=0;t++){const s=new ClefInstruction(1,t,4);e.push(s)}return e}static isSupportedClef(e){switch(e){case 0:case 1:case 2:case 3:case 4:return!0;default:return!1}}get ClefType(){return this.clefType}set ClefType(e){this.clefType=e}get Line(){return this.line}set Line(e){this.line=e}get OctaveOffset(){return this.octaveOffset}set OctaveOffset(e){this.octaveOffset=e}get ClefPitch(){return this.clefPitch}set ClefPitch(e){this.clefPitch=e}get ReferenceCyPosition(){return this.referenceCyPosition}set ReferenceCyPosition(e){this.referenceCyPosition=e}Equals(e){return this===e?!0:!this||!e?!1:this.clefPitch===e.clefPitch&&this.Line===e.Line}NotEqual(e){return!this.Equals(e)}ToString(){return"ClefType: "+this.clefType}calcParameters(){switch(this.clefType){case 0:this.clefPitch=new Pitch(NoteEnum.G,1+this.octaveOffset,AccidentalEnum.NONE),this.referenceCyPosition=5-this.line+2;break;case 1:this.clefPitch=new Pitch(NoteEnum.F,0+this.octaveOffset,AccidentalEnum.NONE),this.referenceCyPosition=5-this.line+1.5;break;case 2:this.clefPitch=new Pitch(NoteEnum.C,1+this.octaveOffset,AccidentalEnum.NONE),this.referenceCyPosition=5-this.line;break;case 3:this.clefPitch=new Pitch(NoteEnum.C,2,AccidentalEnum.NONE),this.referenceCyPosition=2;break;case 4:this.clefPitch=new Pitch(NoteEnum.G,0,AccidentalEnum.NONE),this.referenceCyPosition=0;break;default:throw new ArgumentOutOfRangeException("clefType")}}}var ClefEnum=(i=>(i[i.G=0]="G",i[i.F=1]="F",i[i.C=2]="C",i[i.percussion=3]="percussion",i[i.TAB=4]="TAB",i))(ClefEnum||{}),MidiInstrument=(i=>(i[i.None=-1]="None",i[i.Acoustic_Grand_Piano=0]="Acoustic_Grand_Piano",i[i.Bright_Acoustic_Piano=1]="Bright_Acoustic_Piano",i[i.Electric_Grand_Piano=2]="Electric_Grand_Piano",i[i.Honky_tonk_Piano=3]="Honky_tonk_Piano",i[i.Electric_Piano_1=4]="Electric_Piano_1",i[i.Electric_Piano_2=5]="Electric_Piano_2",i[i.Harpsichord=6]="Harpsichord",i[i.Clavinet=7]="Clavinet",i[i.Celesta=8]="Celesta",i[i.Glockenspiel=9]="Glockenspiel",i[i.Music_Box=10]="Music_Box",i[i.Vibraphone=11]="Vibraphone",i[i.Marimba=12]="Marimba",i[i.Xylophone=13]="Xylophone",i[i.Tubular_Bells=14]="Tubular_Bells",i[i.Dulcimer=15]="Dulcimer",i[i.Drawbar_Organ=16]="Drawbar_Organ",i[i.Percussive_Organ=17]="Percussive_Organ",i[i.Rock_Organ=18]="Rock_Organ",i[i.Church_Organ=19]="Church_Organ",i[i.Reed_Organ=20]="Reed_Organ",i[i.Accordion=21]="Accordion",i[i.Harmonica=22]="Harmonica",i[i.Tango_Accordion=23]="Tango_Accordion",i[i.Acoustic_Guitar_nylon=24]="Acoustic_Guitar_nylon",i[i.Acoustic_Guitar_steel=25]="Acoustic_Guitar_steel",i[i.Electric_Guitar_jazz=26]="Electric_Guitar_jazz",i[i.Electric_Guitar_clean=27]="Electric_Guitar_clean",i[i.Electric_Guitar_muted=28]="Electric_Guitar_muted",i[i.Overdriven_Guitar=29]="Overdriven_Guitar",i[i.Distortion_Guitar=30]="Distortion_Guitar",i[i.Guitar_harmonics=31]="Guitar_harmonics",i[i.Acoustic_Bass=32]="Acoustic_Bass",i[i.Electric_Bass_finger=33]="Electric_Bass_finger",i[i.Electric_Bass_pick=34]="Electric_Bass_pick",i[i.Fretless_Bass=35]="Fretless_Bass",i[i.Slap_Bass_1=36]="Slap_Bass_1",i[i.Slap_Bass_2=37]="Slap_Bass_2",i[i.Synth_Bass_1=38]="Synth_Bass_1",i[i.Synth_Bass_2=39]="Synth_Bass_2",i[i.Violin=40]="Violin",i[i.Viola=41]="Viola",i[i.Cello=42]="Cello",i[i.Contrabass=43]="Contrabass",i[i.Tremolo_Strings=44]="Tremolo_Strings",i[i.Pizzicato_Strings=45]="Pizzicato_Strings",i[i.Orchestral_Harp=46]="Orchestral_Harp",i[i.Timpani=47]="Timpani",i[i.String_Ensemble_1=48]="String_Ensemble_1",i[i.String_Ensemble_2=49]="String_Ensemble_2",i[i.Synth_Strings_1=50]="Synth_Strings_1",i[i.Synth_Strings_2=51]="Synth_Strings_2",i[i.Choir_Aahs=52]="Choir_Aahs",i[i.Voice_Oohs=53]="Voice_Oohs",i[i.Synth_Voice=54]="Synth_Voice",i[i.Orchestra_Hit=55]="Orchestra_Hit",i[i.Trumpet=56]="Trumpet",i[i.Trombone=57]="Trombone",i[i.Tuba=58]="Tuba",i[i.Muted_Trumpet=59]="Muted_Trumpet",i[i.French_Horn=60]="French_Horn",i[i.Brass_Section=61]="Brass_Section",i[i.Synth_Brass_1=62]="Synth_Brass_1",i[i.Synth_Brass_2=63]="Synth_Brass_2",i[i.Soprano_Sax=64]="Soprano_Sax",i[i.Alto_Sax=65]="Alto_Sax",i[i.Tenor_Sax=66]="Tenor_Sax",i[i.Baritone_Sax=67]="Baritone_Sax",i[i.Oboe=68]="Oboe",i[i.English_Horn=69]="English_Horn",i[i.Bassoon=70]="Bassoon",i[i.Clarinet=71]="Clarinet",i[i.Piccolo=72]="Piccolo",i[i.Flute=73]="Flute",i[i.Recorder=74]="Recorder",i[i.Pan_Flute=75]="Pan_Flute",i[i.Blown_Bottle=76]="Blown_Bottle",i[i.Shakuhachi=77]="Shakuhachi",i[i.Whistle=78]="Whistle",i[i.Ocarina=79]="Ocarina",i[i.Lead_1_square=80]="Lead_1_square",i[i.Lead_2_sawtooth=81]="Lead_2_sawtooth",i[i.Lead_3_calliope=82]="Lead_3_calliope",i[i.Lead_4_chiff=83]="Lead_4_chiff",i[i.Lead_5_charang=84]="Lead_5_charang",i[i.Lead_6_voice=85]="Lead_6_voice",i[i.Lead_7_fifths=86]="Lead_7_fifths",i[i.Lead_8_bass_lead=87]="Lead_8_bass_lead",i[i.Pad_1_new_age=88]="Pad_1_new_age",i[i.Pad_2_warm=89]="Pad_2_warm",i[i.Pad_3_polysynth=90]="Pad_3_polysynth",i[i.Pad_4_choir=91]="Pad_4_choir",i[i.Pad_5_bowed=92]="Pad_5_bowed",i[i.Pad_6_metallic=93]="Pad_6_metallic",i[i.Pad_7_halo=94]="Pad_7_halo",i[i.Pad_8_sweep=95]="Pad_8_sweep",i[i.FX_1_rain=96]="FX_1_rain",i[i.FX_2_soundtrack=97]="FX_2_soundtrack",i[i.FX_3_crystal=98]="FX_3_crystal",i[i.FX_4_atmosphere=99]="FX_4_atmosphere",i[i.FX_5_brightness=100]="FX_5_brightness",i[i.FX_6_goblins=101]="FX_6_goblins",i[i.FX_7_echoes=102]="FX_7_echoes",i[i.FX_8_scifi=103]="FX_8_scifi",i[i.Sitar=104]="Sitar",i[i.Banjo=105]="Banjo",i[i.Shamisen=106]="Shamisen",i[i.Koto=107]="Koto",i[i.Kalimba=108]="Kalimba",i[i.Bag_pipe=109]="Bag_pipe",i[i.Fiddle=110]="Fiddle",i[i.Shanai=111]="Shanai",i[i.Tinkle_Bell=112]="Tinkle_Bell",i[i.Agogo=113]="Agogo",i[i.Steel_Drums=114]="Steel_Drums",i[i.Woodblock=115]="Woodblock",i[i.Taiko_Drum=116]="Taiko_Drum",i[i.Melodic_Tom=117]="Melodic_Tom",i[i.Synth_Drum=118]="Synth_Drum",i[i.Reverse_Cymbal=119]="Reverse_Cymbal",i[i.Guitar_Fret_Noise=120]="Guitar_Fret_Noise",i[i.Breath_Noise=121]="Breath_Noise",i[i.Seashore=122]="Seashore",i[i.Bird_Tweet=123]="Bird_Tweet",i[i.Telephone_Ring=124]="Telephone_Ring",i[i.Helicopter=125]="Helicopter",i[i.Applause=126]="Applause",i[i.Gunshot=127]="Gunshot",i[i.euphonium=128]="euphonium",i[i.AltoClarinetInEb=200]="AltoClarinetInEb",i[i.TrumpetInBb=201]="TrumpetInBb",i[i.BaritoneSaxophone=202]="BaritoneSaxophone",i[i.TenorSaxophone=203]="TenorSaxophone",i[i.ClarinetInEb=204]="ClarinetInEb",i[i.Euphonium=205]="Euphonium",i[i.Alto_Clarinet=206]="Alto_Clarinet",i[i.Bass_Clarinet=207]="Bass_Clarinet",i[i.Bass_Trombone=208]="Bass_Trombone",i[i.clarinet_in_bb=209]="clarinet_in_bb",i[i.clarinet_in_eb=210]="clarinet_in_eb",i[i.Percussion=135]="Percussion",i))(MidiInstrument||{});const _KeyInstruction=class extends AbstractNotationInstruction{constructor(i=void 0,e=0,t=0){super(i),this.isTransposedBy=0,this.Key=e,this.keyTypeOriginal=e,this.mode=t,this.alteratedNotes=this.calcAlteratedNotes()}static copy(i){const e=new _KeyInstruction(i.parent,i.Key,i.Mode);return e.keyTypeOriginal=i.keyTypeOriginal,e}static getAllPossibleMajorKeyInstructions(){const i=[];for(let e=-7;e<7;e++){const t=new _KeyInstruction(void 0,e,0);i.push(t)}return i}get Key(){return this.keyType}set Key(i){this.keyType=i,this.alteratedNotes=this.calcAlteratedNotes()}get Mode(){return this.mode}set Mode(i){this.mode=i}get AlteratedNotes(){return this.alteratedNotes}calcAlteratedNotes(){const i=[];if(this.keyType>0)for(let e=0;e=0}getAlterationForPitch(i){return this.keyType>0&&this.alteratedNotes.indexOf(i.FundamentalNote)<=this.keyType?AccidentalEnum.SHARP:this.keyType<0&&this.alteratedNotes.indexOf(i.FundamentalNote)<=Math.abs(this.keyType)?AccidentalEnum.FLAT:AccidentalEnum.NONE}ToString(){return"Key: "+this.keyType+this.mode}OperatorEquals(i){const e=this;return e===i?!0:!e||!i?!1:e.Key===i.Key&&e.Mode===i.Mode}OperatorNotEqual(i){return!this.OperatorEquals(i)}};let KeyInstruction=_KeyInstruction;KeyInstruction.sharpPositionList=[NoteEnum.F,NoteEnum.C,NoteEnum.G,NoteEnum.D,NoteEnum.A,NoteEnum.E,NoteEnum.B];KeyInstruction.flatPositionList=[NoteEnum.B,NoteEnum.E,NoteEnum.A,NoteEnum.D,NoteEnum.G,NoteEnum.C,NoteEnum.F];var KeyEnum=(i=>(i[i.major=0]="major",i[i.minor=1]="minor",i[i.none=2]="none",i[i.dorian=3]="dorian",i[i.phrygian=4]="phrygian",i[i.lydian=5]="lydian",i[i.mixolydian=6]="mixolydian",i[i.aeolian=7]="aeolian",i[i.ionian=8]="ionian",i[i.locrian=9]="locrian",i))(KeyEnum||{});Array.prototype.last||Object.defineProperty(Array.prototype,"last",{enumerable:!1,value:function(){return this[this.length-1]}});Array.prototype.clear||Object.defineProperty(Array.prototype,"clear",{enumerable:!1,value:function(){this.length=0}});Array.prototype.contains||Object.defineProperty(Array.prototype,"contains",{enumerable:!1,value:function(i){return this.indexOf(i)!==-1}});class CollectionUtil{static contains2(e,t){for(let s=0;s{var s,r,o,a;return((r=(s=t.sourceNote.Pitch)==null?void 0:s.getHalfTone())!=null?r:0)-((a=(o=e.sourceNote.Pitch)==null?void 0:o.getHalfTone())!=null?a:0)}),this.notes}sortForVexflow(){return this.notes.sort((e,t)=>{var s,r,o;return((r=(s=e.sourceNote.Pitch)==null?void 0:s.getHalfTone())!=null?r:0)-((o=t.sourceNote.Pitch.getHalfTone())!=null?o:0)}),this.notes}color(){}}class GraphicalMusicSheet{constructor(e,t){this.musicPages=[],this.measureList=[],this.verticalGraphicalStaffEntryContainers=[],this.cursors=[],this.leadSheet=!1,this.musicSheet=e,this.numberOfStaves=this.musicSheet.Staves.length,this.calculator=t,this.calculator.initialize(this)}get ParentMusicSheet(){return this.musicSheet}get GetCalculator(){return this.calculator}get JianpuKeySignature(){return this.jianpuKeySignature}set JianpuKeySignature(e){this.jianpuKeySignature=e}get MusicPages(){return this.musicPages}set MusicPages(e){this.musicPages=e}get MeasureList(){return this.measureList}set MeasureList(e){this.measureList=e}get VerticalGraphicalStaffEntryContainers(){return this.verticalGraphicalStaffEntryContainers}set VerticalGraphicalStaffEntryContainers(e){this.verticalGraphicalStaffEntryContainers=e}get Title(){return this.title}set Title(e){this.title=e}get Subtitle(){return this.subtitle}set Subtitle(e){this.subtitle=e}get Composer(){return this.composer}set Composer(e){this.composer=e}get Lyricist(){return this.lyricist}set Lyricist(e){this.lyricist=e}get Cursors(){return this.cursors}get SelectionStartSymbol(){return this.selectionStartSymbol}get SelectionEndSymbol(){return this.selectionEndSymbol}get MinAllowedSystemWidth(){return this.minAllowedSystemWidth}set MinAllowedSystemWidth(e){this.minAllowedSystemWidth=e}get NumberOfStaves(){return this.numberOfStaves}get LeadSheet(){return this.leadSheet}set LeadSheet(e){this.leadSheet=e}static transformRelativeToAbsolutePosition(e){for(let t=0;t=0;s--){const r=this.measureList[s][t];if(r)return r}}findGraphicalStaffEntryFromMeasureList(e,t,s){for(let r=t;r0)return a.staffEntries[0]}}getFirstVisibleMeasuresListFromIndices(e,t){const s=[],r=this.measureList[0].length;for(let o=e;o<=t;o++)for(let a=0;a=0;t--){if(this.verticalGraphicalStaffEntryContainers[t].AbsoluteTimestamp.lt(e)){const s=new VerticalGraphicalStaffEntryContainer(this.numberOfStaves,e);return this.verticalGraphicalStaffEntryContainers.splice(t+1,0,s),s}if(this.verticalGraphicalStaffEntryContainers[t].AbsoluteTimestamp.Equals(e))return this.verticalGraphicalStaffEntryContainers[t]}}GetVerticalContainerFromTimestamp(e,t=0){const s=CollectionUtil.binarySearch(this.verticalGraphicalStaffEntryContainers,new VerticalGraphicalStaffEntryContainer(0,e),VerticalGraphicalStaffEntryContainer.compareByTimestamp,t);if(s>=0)return this.verticalGraphicalStaffEntryContainers[s]}GetInterpolatedIndexInVerticalContainers(e){const t=this.verticalGraphicalStaffEntryContainers;let s=0,r=t.length-1,o,a;if(e.lte(t[t.length-1].AbsoluteTimestamp)){for(;r-s>1;){const m=Math.floor((r+s)/2);if(t[s].AbsoluteTimestamp.Equals(e)){r=s;break}else if(t[r].AbsoluteTimestamp.Equals(e)){s=r;break}else{if(t[m].AbsoluteTimestamp.Equals(e))return this.verticalGraphicalStaffEntryContainers.indexOf(t[m]);e.lt(t[m].AbsoluteTimestamp)?r=m:s=m}}if(s===r)return this.verticalGraphicalStaffEntryContainers.indexOf(t[s]);o=t[s].AbsoluteTimestamp,a=t[r].AbsoluteTimestamp}else o=t[t.length-1].AbsoluteTimestamp,a=Fraction$1.plus(this.getLongestStaffEntryDuration(t.length-1),o),r=t.length;const l=a.RealValue-o.RealValue,c=a.RealValue-e.RealValue,d=r-c/l;return Math.min(d,this.verticalGraphicalStaffEntryContainers.length)}getVisibleStavesIndicesFromSourceMeasure(e){const t=[],s=[];for(let r=0,o=e.length;r{var s;return((s=t.parentStaffEntry)==null?void 0:s.relInMeasureTimestamp)!==void 0})}GetNearestNote(e,t){const s=this.GetNearestVoiceEntry(e);if(!s)return;let r,o=Number.MAX_SAFE_INTEGER;for(const a of s.notes){const l=a.PositionAndShape.AbsolutePosition.y,c=Math.abs(a.PositionAndShape.AbsolutePosition.x-e.x),d=Math.abs(l-e.y);c+da.PositionAndShape.RelativePosition.x&&(s=a):s=a)}}catch(r){loglevelExports.info("GraphicalMusicSheet.getStaffEntry",r)}return s}GetPreviousVisibleContainerIndex(e){for(let t=e-1;t>=0;t--){const s=this.verticalGraphicalStaffEntryContainers[t].StaffEntries;for(let r=0,o=s.length;r=0;o--)if(s=this.getStaffEntry(o),s)if(t){if(s.sourceStaffEntry.ParentStaff.ParentInstrument.Visible)return s}else return s}findClosestRightStaffEntry(e,t){let s;const r=Math.max(0,Math.ceil(e));for(let o=r;o{};Vex.L=(i,e)=>{if(!e)return;const t=Array.prototype.slice.call(e).join(" ");window.console.log(i+": "+t)};Vex.MakeException=i=>class extends Error{constructor(t,s){super(t),this.name=i,this.message=t,this.data=s}};class RuntimeError{constructor(e,t){this.code=e,this.message=t}toString(){return"[RuntimeError] "+this.code+":"+this.message}}Vex.RuntimeError=RuntimeError;Vex.RERR=Vex.RuntimeError;Vex.Merge=(i,e)=>{for(const t in e)i[t]=e[t];return i};Vex.Min=Math.min;Vex.Max=Math.max;Vex.forEach=(i,e)=>{for(let t=0;ti%e>=e/2?parseInt(i/e,10)*e+e:parseInt(i/e,10)*e;Vex.MidLine=(i,e)=>{let t=e+(i-e)/2;return t%2>0&&(t=Vex.RoundN(t*10,5)/10),t};Vex.SortAndUnique=(i,e,t)=>{if(i.length>1){const s=[];let r;i.sort(e);for(let o=0;o{let t=i.length;for(;t--;)if(i[t]===e)return!0;return!1};Vex.getCanvasContext=i=>{if(!i)throw new Vex.RERR("BadArgument","Invalid canvas selector: "+i);const e=document.getElementById(i);if(!(e&&e.getContext))throw new Vex.RERR("UnsupportedBrowserError","This browser does not support HTML5 Canvas");return e.getContext("2d")};Vex.drawDot=(i,e,t,s="#55")=>{i.save(),i.setFillStyle(s),i.beginPath(),i.arc(e,t,3,0,Math.PI*2,!0),i.closePath(),i.fill(),i.restore()};Vex.BM=(i,e)=>{const t=new Date().getTime();e();const s=new Date().getTime()-t;Vex.L(i+s+"ms")};Vex.StackTrace=()=>new Error().stack;Vex.W=(...i)=>{const e=i.join(" ");window.console.log("Warning: ",e,Vex.StackTrace())};Vex.Prefix=i=>Vex.Prefix.prefix+i;Vex.Prefix.prefix="vf-";class Fraction{static GCD(e,t){if(typeof e!="number"||typeof t!="number")throw new Vex.RERR("BadArgument",`Invalid numbers: ${e}, ${t}`);let s;for(;t!==0;)s=t,t=e%t,e=s;return e}static LCM(e,t){return e*t/Fraction.GCD(e,t)}static LCMM(e){if(e.length===0)return 0;if(e.length===1)return e[0];if(e.length===2)return Fraction.LCM(e[0],e[1]);{const t=e[0];return e.shift(),Fraction.LCM(t,Fraction.LCMM(e))}}constructor(e,t){this.set(e,t)}set(e,t){return this.numerator=e===void 0?1:e,this.denominator=t===void 0?1:t,this}value(){return this.numerator/this.denominator}simplify(){let e=this.numerator,t=this.denominator;const s=Fraction.GCD(e,t);return e/=s,t/=s,t<0&&(t=-t,e=-e),this.set(e,t)}add(e,t){let s,r;e instanceof Fraction?(s=e.numerator,r=e.denominator):(e!==void 0?s=e:s=0,t!==void 0?r=t:r=1);const o=Fraction.LCM(this.denominator,r),a=o/this.denominator,l=o/r,c=this.numerator*a+s*l;return this.set(c,o)}subtract(e,t){let s,r;e instanceof Fraction?(s=e.numerator,r=e.denominator):(e!==void 0?s=e:s=0,t!==void 0?r=t:r=1);const o=Fraction.LCM(this.denominator,r),a=o/this.denominator,l=o/r,c=this.numerator*a-s*l;return this.set(c,o)}multiply(e,t){let s,r;return e instanceof Fraction?(s=e.numerator,r=e.denominator):(e!==void 0?s=e:s=1,t!==void 0?r=t:r=1),this.set(this.numerator*s,this.denominator*r)}divide(e,t){let s,r;return e instanceof Fraction?(s=e.numerator,r=e.denominator):(e!==void 0?s=e:s=1,t!==void 0?r=t:r=1),this.set(this.numerator*r,this.denominator*s)}equals(e){const t=Fraction.__compareA.copy(e).simplify(),s=Fraction.__compareB.copy(this).simplify();return t.numerator===s.numerator&&t.denominator===s.denominator}greaterThan(e){const t=Fraction.__compareB.copy(this);return t.subtract(e),t.numerator>0}greaterThanEquals(e){const t=Fraction.__compareB.copy(this);return t.subtract(e),t.numerator>=0}lessThan(e){return!this.greaterThanEquals(e)}lessThanEquals(e){return!this.greaterThan(e)}clone(){return new Fraction(this.numerator,this.denominator)}copy(e){return typeof e=="number"?this.set(e||0,1):this.set(e.numerator,e.denominator)}quotient(){return Math.floor(this.numerator/this.denominator)}fraction(){return this.numerator%this.denominator}abs(){return this.denominator=Math.abs(this.denominator),this.numerator=Math.abs(this.numerator),this}toString(){return this.numerator+"/"+this.denominator}toSimplifiedString(){return Fraction.__tmp.copy(this).simplify().toString()}toMixedString(){let e="";const t=this.quotient(),s=Fraction.__tmp.copy(this);return t<0?s.abs().fraction():s.fraction(),t!==0?(e+=t,s.numerator!==0&&(e+=" "+s.toSimplifiedString())):s.numerator===0?e="0":e=s.toSimplifiedString(),e}parse(e){const t=e.split("/"),s=parseInt(t[0],10),r=t[1]?parseInt(t[1],10):1;return this.set(s,r)}}Fraction.__compareA=new Fraction;Fraction.__compareB=new Fraction;Fraction.__tmp=new Fraction;const X$3=Vex.MakeException("RegistryError");function setIndexValue(i,e,t,s,r){i[e][t]||(i[e][t]={}),i[e][t][s]=r}class Registry{static get INDEXES(){return["type"]}constructor(){this.clear()}static enableDefaultRegistry(e){Registry.defaultRegistry=e}static getDefaultRegistry(){return Registry.defaultRegistry}static disableDefaultRegistry(){Registry.defaultRegistry=null}clear(){return this.index={id:{},type:{},class:{}},this}updateIndex({id:e,name:t,value:s,oldValue:r}){const o=this.getElementById(e);r!==null&&this.index[t][r]&&delete this.index[t][r][e],s!==null&&setIndexValue(this.index,t,s,o.getAttribute("id"),o)}register(e,t){if(t=t||e.getAttribute("id"),!t)throw new X$3("Can't add element without `id` attribute to registry",e);return e.setAttribute("id",t),setIndexValue(this.index,"id",t,t,e),Registry.INDEXES.forEach(s=>{this.updateIndex({id:t,name:s,value:e.getAttribute(s),oldValue:null})}),e.onRegister(this),this}getElementById(e){return this.index.id[e]?this.index.id[e][e]:null}getElementsByAttribute(e,t){const s=this.index[e];return s&&s[t]?Object.keys(s[t]).map(r=>s[t][r]):[]}getElementsByType(e){return this.getElementsByAttribute("type",e)}getElementsByClass(e){return this.getElementsByAttribute("class",e)}onUpdate({id:e,name:t,value:s,oldValue:r}){function o(a,l){return a.filter(c=>c===l).length>0}return o(Registry.INDEXES.concat(["id","class"]),t)?(this.updateIndex({id:e,name:t,value:s,oldValue:r}),this):this}}Registry.defaultRegistry=null;let Element$1=class Wt{static newID(){return"auto"+Wt.ID++}constructor({type:e}={}){this.attrs={id:Wt.newID(),el:null,type:e||"Base",classes:{}},this.boundingBox=null,this.context=null,this.rendered=!1,Registry.getDefaultRegistry()&&Registry.getDefaultRegistry().register(this)}setStyle(e){return this.style=e,this}getStyle(){return this.style}applyStyle(e=this.context,t=this.getStyle()){return t?(e.save(),t.shadowColor&&e.setShadowColor(t.shadowColor),t.shadowBlur&&e.setShadowBlur(t.shadowBlur),t.fillStyle&&e.setFillStyle(t.fillStyle),t.strokeStyle&&e.setStrokeStyle(t.strokeStyle),t.lineWidth&&e.setLineWidth(t.lineWidth),this):this}restoreStyle(e=this.context,t=this.getStyle()){return t?(e.restore(),this):this}drawWithStyle(){this.checkContext(),this.applyStyle(),this.draw(),this.restoreStyle()}hasClass(e){return this.attrs.classes[e]===!0}addClass(e){return this.attrs.classes[e]=!0,this.registry&&this.registry.onUpdate({id:this.getAttribute("id"),name:"class",value:e,oldValue:null}),this}removeClass(e){return delete this.attrs.classes[e],this.registry&&this.registry.onUpdate({id:this.getAttribute("id"),name:"class",value:null,oldValue:e}),this}onRegister(e){return this.registry=e,this}isRendered(){return this.rendered}setRendered(e=!0){return this.rendered=e,this}getAttributes(){return this.attrs}getAttribute(e){return this.attrs[e]}setAttribute(e,t){const s=this.attrs.id,r=this.attrs[e];return this.attrs[e]=t,this.registry&&this.registry.onUpdate({id:s,name:e,value:t,oldValue:r}),this}getContext(){return this.context}setContext(e){return this.context=e,this}getBoundingBox(){return this.boundingBox}checkContext(){if(!this.context)throw new Vex.RERR("NoContext","No rendering context attached to instance");return this.context}};Element$1.ID=1e3;class BoundingBoxComputation{constructor(e,t,s,r){this.x1=Number.NaN,this.y1=Number.NaN,this.x2=Number.NaN,this.y2=Number.NaN,this.addPoint(e,t),this.addPoint(s,r)}width(){return this.x2-this.x1}height(){return this.y2-this.y1}addPoint(e,t){e!=null&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=e,this.x2=e),ethis.x2&&(this.x2=e)),t!=null&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),tthis.y2&&(this.y2=t))}addX(e){this.addPoint(e,null)}addY(e){this.addPoint(null,e)}addQuadraticCurve(e,t,s,r,o,a){const l=e+.6666666666666666*(s-e),c=t+2/3*(r-t),d=l+1/3*(o-e),m=c+1/3*(a-t);this.addBezierCurve(e,t,l,c,d,m,o,a)}addBezierCurve(e,t,s,r,o,a,l,c){const d=[e,t],m=[s,r],u=[o,a],g=[l,c];let b;this.addPoint(d[0],d[1]),this.addPoint(g[0],g[1]);const y=(S,v)=>Math.pow(1-S,3)*d[v]+3*Math.pow(1-S,2)*S*m[v]+3*(1-S)*Math.pow(S,2)*u[v]+Math.pow(S,3)*g[v];for(b=0;b<=1;b++){const S=6*d[b]-12*m[b]+6*u[b],v=-3*d[b]+9*m[b]-9*u[b]+3*g[b],x=3*m[b]-3*d[b];if(v===0){if(S===0)continue;const _=-x/S;0<_&&_<1&&(b===0&&this.addX(y(_,b)),b===1&&this.addY(y(_,b)));continue}const A=Math.pow(S,2)-4*x*v;if(A<0)continue;const E=(-S+Math.sqrt(A))/(2*v);0{if(!i)throw new Vex.RERR("BadArgument","Invalid clef: "+i);const e=Flow.clefProperties.values[i];if(!e)throw new Vex.RERR("BadArgument","Invalid clef: "+i);return e};Flow.clefProperties.values={treble:{line_shift:0},bass:{line_shift:6},tenor:{line_shift:4},alto:{line_shift:3},soprano:{line_shift:1},percussion:{line_shift:0},"mezzo-soprano":{line_shift:2},"baritone-c":{line_shift:5},"baritone-f":{line_shift:5},subbass:{line_shift:7},french:{line_shift:-1}};Flow.keyProperties=(i,e,t)=>{e===void 0&&(e="treble");const s={octave_shift:0};typeof t=="object"&&Vex.Merge(s,t);const r=i.split("/");if(r.length<2)throw new Vex.RERR("BadArguments",`Key must have note + octave and an optional glyph: ${i}`);const o=r[0].toUpperCase(),a=Flow.keyProperties.note_values[o];if(!a)throw new Vex.RERR("BadArguments","Invalid key name: "+o);a.octave&&(r[1]=a.octave);let l=parseInt(r[1],10);l+=-1*s.octave_shift;let d=(l*7-4*7+a.index)/2;d+=Flow.clefProperties(e).line_shift;let m=0;d<=0&&d*2%2===0&&(m=1),d>=6&&d*2%2===0&&(m=-1);const u=typeof a.int_val<"u"?l*12+a.int_val:null,g=a.code,b=a.shift_right;let y={};if(r.length>2&&r[2]){const S=r[2].toUpperCase();y=Flow.keyProperties.customNoteHeads[S]||{}}return{key:o,octave:l,line:d,int_value:u,accidental:a.accidental,code:g,stroke:m,shift_right:b,displaced:!1,...y}};Flow.keyProperties.note_values={C:{index:0,int_val:0,accidental:null},CN:{index:0,int_val:0,accidental:"n"},"C#":{index:0,int_val:1,accidental:"#"},"C##":{index:0,int_val:2,accidental:"##"},CB:{index:0,int_val:-1,accidental:"b"},CBB:{index:0,int_val:-2,accidental:"bb"},D:{index:1,int_val:2,accidental:null},DN:{index:1,int_val:2,accidental:"n"},"D#":{index:1,int_val:3,accidental:"#"},"D##":{index:1,int_val:4,accidental:"##"},DB:{index:1,int_val:1,accidental:"b"},DBB:{index:1,int_val:0,accidental:"bb"},E:{index:2,int_val:4,accidental:null},EN:{index:2,int_val:4,accidental:"n"},"E#":{index:2,int_val:5,accidental:"#"},"E##":{index:2,int_val:6,accidental:"##"},EB:{index:2,int_val:3,accidental:"b"},EBB:{index:2,int_val:2,accidental:"bb"},F:{index:3,int_val:5,accidental:null},FN:{index:3,int_val:5,accidental:"n"},"F#":{index:3,int_val:6,accidental:"#"},"F##":{index:3,int_val:7,accidental:"##"},FB:{index:3,int_val:4,accidental:"b"},FBB:{index:3,int_val:3,accidental:"bb"},G:{index:4,int_val:7,accidental:null},GN:{index:4,int_val:7,accidental:"n"},"G#":{index:4,int_val:8,accidental:"#"},"G##":{index:4,int_val:9,accidental:"##"},GB:{index:4,int_val:6,accidental:"b"},GBB:{index:4,int_val:5,accidental:"bb"},A:{index:5,int_val:9,accidental:null},AN:{index:5,int_val:9,accidental:"n"},"A#":{index:5,int_val:10,accidental:"#"},"A##":{index:5,int_val:11,accidental:"##"},AB:{index:5,int_val:8,accidental:"b"},ABB:{index:5,int_val:7,accidental:"bb"},B:{index:6,int_val:11,accidental:null},BN:{index:6,int_val:11,accidental:"n"},"B#":{index:6,int_val:12,accidental:"#"},"B##":{index:6,int_val:13,accidental:"##"},BB:{index:6,int_val:10,accidental:"b"},BBB:{index:6,int_val:9,accidental:"bb"},R:{index:6,int_val:9,rest:!0},X:{index:6,accidental:"",octave:4,code:"v3e",shift_right:5.5}};Flow.keyProperties.customNoteHeads={D0:{code:"v27",shift_right:0,stem_up_x_offset:0,stem_down_x_offset:0,stem_up_y_offset:-1,stem_down_y_offset:0},D1:{code:"v2d",shift_right:-.5},D2:{code:"v22",shift_right:-.5},D3:{code:"v70",shift_right:-.5},T0:{code:"v49",shift_right:-2,stem_up_y_offset:-4,stem_down_y_offset:4},T1:{code:"v93",shift_right:.5,stem_up_y_offset:-4,stem_down_y_offset:4},T2:{code:"v40",shift_right:.5,stem_up_y_offset:-4,stem_down_y_offset:4},T3:{code:"v7d",shift_right:.5,stem_up_y_offset:-4,stem_down_y_offset:4},X0:{code:"v92",stem_up_x_offset:-2,stem_down_x_offset:0,stem_up_y_offset:4,stem_down_y_offset:4},X1:{code:"v95",shift_right:-.5,stem_up_y_offset:4,stem_down_y_offset:4},X2:{code:"v3e",shift_right:.5,stem_up_y_offset:4,stem_down_y_offset:4},X3:{code:"v3b",shift_right:0,stem_up_x_offset:-1.2,stem_down_x_offset:0,stem_up_y_offset:-1,stem_down_y_offset:2},S1:{code:"vd3",shift_right:0},S2:{code:"vd2",shift_right:0},R1:{code:"vd5",shift_right:0},R2:{code:"vd4",shift_right:0}};Flow.integerToNote=i=>{if(typeof i>"u")throw new Vex.RERR("BadArguments","Undefined integer for integerToNote");if(i<-2)throw new Vex.RERR("BadArguments",`integerToNote requires integer > -2: ${i}`);const e=Flow.integerToNote.table[i];if(!e)throw new Vex.RERR("BadArguments",`Unknown note value for integer: ${i}`);return e};Flow.integerToNote.table={0:"C",1:"C#",2:"D",3:"D#",4:"E",5:"F",6:"F#",7:"G",8:"G#",9:"A",10:"A#",11:"B"};Flow.tabToGlyph=(i,e=1)=>{let t=null,s=0,r=0;if(i.toString().toUpperCase()==="X"){const o=new Glyph("v7f",Flow.DEFAULT_TABLATURE_FONT_SCALE).getMetrics();t="v7f",s=o.width,r=-o.height/2}else s=Flow.textWidth(i.toString());return{text:i,code:t,getWidth:()=>s*e,shift_y:r}};Flow.textWidth=i=>7*i.toString().length;Flow.articulationCodes=i=>Flow.articulationCodes.articulations[i];Flow.articulationCodes.articulations={"a.":{code:"v23",between_lines:!0},av:{code:"v28",between_lines:!0},"a>":{code:"v42",between_lines:!0},"a-":{code:"v25",between_lines:!0},"a^":{code:"va",between_lines:!1},"a+":{code:"v8b",between_lines:!1},ao:{code:"v94",between_lines:!1},ah:{code:"vb9",between_lines:!1},"a@a":{code:"v43",between_lines:!1},"a@u":{code:"v5b",between_lines:!1},"a|":{code:"v75",between_lines:!1},am:{code:"v97",between_lines:!1},"a,":{code:"vb3",between_lines:!1}};Flow.accidentalCodes=i=>Flow.accidentalCodes.accidentals[i];Flow.accidentalCodes.accidentals={"#":{code:"v18",parenRightPaddingAdjustment:-1},"##":{code:"v7f",parenRightPaddingAdjustment:-1},b:{code:"v44",parenRightPaddingAdjustment:-2},bb:{code:"v26",parenRightPaddingAdjustment:-2},n:{code:"v4e",parenRightPaddingAdjustment:-1},"{":{code:"v9c",parenRightPaddingAdjustment:-1},"}":{code:"v84",parenRightPaddingAdjustment:-1},db:{code:"v9e",parenRightPaddingAdjustment:-1},d:{code:"vab",parenRightPaddingAdjustment:0},bbs:{code:"v90",parenRightPaddingAdjustment:-1},"++":{code:"v51",parenRightPaddingAdjustment:-1},"+":{code:"v78",parenRightPaddingAdjustment:-1},"+-":{code:"v8d",parenRightPaddingAdjustment:-1},"++-":{code:"v7a",parenRightPaddingAdjustment:-1},bs:{code:"vb7",parenRightPaddingAdjustment:-1},bss:{code:"v39",parenRightPaddingAdjustment:-1},o:{code:"vd0",parenRightPaddingAdjustment:-1},k:{code:"vd1",parenRightPaddingAdjustment:-1},ashs:{code:"vd6",parenRightPaddingAdjustment:-1},afhf:{code:"vd7",parenRightPaddingAdjustment:-1}};Flow.accidentalColumnsTable={1:{a:[1],b:[1]},2:{a:[1,2]},3:{a:[1,3,2],b:[1,2,1],second_on_bottom:[1,2,3]},4:{a:[1,3,4,2],b:[1,2,3,1],spaced_out_tetrachord:[1,2,1,2]},5:{a:[1,3,5,4,2],b:[1,2,4,3,1],spaced_out_pentachord:[1,2,3,2,1],very_spaced_out_pentachord:[1,2,1,2,1]},6:{a:[1,3,5,6,4,2],b:[1,2,4,5,3,1],spaced_out_hexachord:[1,3,2,1,3,2],very_spaced_out_hexachord:[1,2,1,2,1,2]}};Flow.ornamentCodes=i=>Flow.ornamentCodes.ornaments[i];Flow.ornamentCodes.ornaments={mordent:{code:"v1e"},mordent_inverted:{code:"v45"},turn:{code:"v72"},turn_inverted:{code:"v33"},tr:{code:"v1f"},upprall:{code:"v60"},downprall:{code:"vb4"},prallup:{code:"v6d"},pralldown:{code:"v2c"},upmordent:{code:"v29"},downmordent:{code:"v68"},lineprall:{code:"v20"},prallprall:{code:"v86"}};Flow.keySignature=i=>{const e=Flow.keySignature.keySpecs[i];if(!e)throw new Vex.RERR("BadKeySignature",`Bad key signature spec: '${i}'`);if(!e.acc)return[];const t=Flow.keySignature.accidentalList(e.acc),s=[];for(let r=0;r({b:[2,.5,2.5,1,3,1.5,3.5],"#":[0,1.5,-.5,1,2.5,.5,2]})[i];Flow.parseNoteDurationString=i=>{if(typeof i!="string")return null;const t=/(\d*\/?\d+|[a-z])(d*)([nrhms]|$)/.exec(i);if(!t)return null;const s=t[1],r=t[2].length;let o=t[3];return o.length===0&&(o="n"),{duration:s,dots:r,type:o}};Flow.parseNoteStruct=i=>{const e=i.duration,t=Flow.parseNoteDurationString(e);if(!t)return null;let s=Flow.durationToTicks(t.duration);if(s==null)return null;let r=i.type;const o=[];if(r){if(!Flow.getGlyphProps.validTypes[r])return null}else r=t.type||"n",i.keys!==void 0&&i.keys.forEach((c,d)=>{const m=c.split("/");m&&m.length===3&&(o[d]=m[2])});const a=i.dots?i.dots:t.dots;if(typeof a!="number")return null;let l=s;for(let c=0;c{const e=Flow.durationAliases[i];if(e!==void 0&&(i=e),Flow.durationToTicks.durations[i]===void 0)throw new Vex.RERR("BadArguments",`The provided duration is not valid: ${i}`);return i};Flow.durationToFraction=i=>new Fraction().parse(Flow.sanitizeDuration(i));Flow.durationToNumber=i=>Flow.durationToFraction(i).value();Flow.durationToTicks=i=>{i=Flow.sanitizeDuration(i);const e=Flow.durationToTicks.durations[i];return e===void 0?null:e};Flow.durationToTicks.durations={"1/2":Flow.RESOLUTION*2,1:Flow.RESOLUTION/1,2:Flow.RESOLUTION/2,4:Flow.RESOLUTION/4,8:Flow.RESOLUTION/8,16:Flow.RESOLUTION/16,32:Flow.RESOLUTION/32,64:Flow.RESOLUTION/64,128:Flow.RESOLUTION/128,256:Flow.RESOLUTION/256};Flow.durationAliases={w:"1",h:"2",q:"4",b:"256"};Flow.getGlyphProps=(i,e)=>{i=Flow.sanitizeDuration(i);const t=Flow.getGlyphProps.duration_codes[i];if(t===void 0)return null;e||(e="n");let s=t.type[e];if(s===void 0){const r=Flow.keyProperties.customNoteHeads[e.toUpperCase()];if(r===void 0)return null;s={code_head:r.code,...r}}return{...t.common,...s}};Flow.getGlyphProps.validTypes={n:{name:"note"},r:{name:"rest"},h:{name:"harmonic"},m:{name:"muted"},s:{name:"slash"}};Flow.getGlyphProps.duration_codes={"1/2":{common:{getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"v53",i).getMetrics().width},stem:!1,stem_offset:0,flag:!1,stem_up_extension:-Flow.STEM_HEIGHT,stem_down_extension:-Flow.STEM_HEIGHT,tabnote_stem_up_extension:-Flow.STEM_HEIGHT,tabnote_stem_down_extension:-Flow.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"v53"},h:{code_head:"v59"},m:{code_head:"vf",stem_offset:0},r:{code_head:"v31",rest:!0,position:"B/5",dot_shiftY:.5},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},1:{common:{getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"v1d",i).getMetrics().width},stem:!1,stem_offset:0,flag:!1,stem_up_extension:-Flow.STEM_HEIGHT,stem_down_extension:-Flow.STEM_HEIGHT,tabnote_stem_up_extension:-Flow.STEM_HEIGHT,tabnote_stem_down_extension:-Flow.STEM_HEIGHT,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"v1d"},h:{code_head:"v46"},m:{code_head:"v92",stem_offset:-3},r:{code_head:"v5c",rest:!0,position:"D/5",dot_shiftY:.5},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},2:{common:{getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"v81",i).getMetrics().width},stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"v81"},h:{code_head:"v2d"},m:{code_head:"v95",stem_offset:-3},r:{code_head:"vc",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},4:{common:{getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"vb",i).getMetrics().width},stem:!0,stem_offset:0,flag:!1,stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"vb"},h:{code_head:"v22"},m:{code_head:"v3e",stem_offset:-3},r:{code_head:"v7c",stem:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1.5,line_below:1.5},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},8:{common:{getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"vb",i).getMetrics().width},stem:!0,stem_offset:0,flag:!0,beam_count:1,code_flag_upstem:"v54",code_flag_downstem:"v9a",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"vb"},h:{code_head:"v22"},m:{code_head:"v3e"},r:{code_head:"va5",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:1},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},16:{common:{beam_count:2,getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"vb",i).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"v3f",code_flag_downstem:"v8f",stem_up_extension:0,stem_down_extension:0,tabnote_stem_up_extension:0,tabnote_stem_down_extension:0,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"vb"},h:{code_head:"v22"},m:{code_head:"v3e"},r:{code_head:"v3c",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-.5,line_above:1,line_below:2},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},32:{common:{beam_count:3,getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"vb",i).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"v47",code_flag_downstem:"v2a",stem_up_extension:9,stem_down_extension:9,tabnote_stem_up_extension:8,tabnote_stem_down_extension:5,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"vb"},h:{code_head:"v22"},m:{code_head:"v3e"},r:{code_head:"v55",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:2},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},64:{common:{beam_count:4,getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"vb",i).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"va9",code_flag_downstem:"v58",stem_up_extension:13,stem_down_extension:13,tabnote_stem_up_extension:12,tabnote_stem_down_extension:9,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"vb"},h:{code_head:"v22"},m:{code_head:"v3e"},r:{code_head:"v38",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:-1.5,line_above:2,line_below:3},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}},128:{common:{beam_count:5,getWidth(i=Flow.DEFAULT_NOTATION_FONT_SCALE){return new Glyph(this.code_head||"vb",i).getMetrics().width},stem:!0,stem_offset:0,flag:!0,code_flag_upstem:"v9b",code_flag_downstem:"v30",stem_up_extension:22,stem_down_extension:22,tabnote_stem_up_extension:21,tabnote_stem_down_extension:18,dot_shiftY:0,line_above:0,line_below:0},type:{n:{code_head:"vb"},h:{code_head:"v22"},m:{code_head:"v3e"},r:{code_head:"vaa",stem:!1,flag:!1,rest:!0,position:"B/4",dot_shiftY:1.5,line_above:3,line_below:3},s:{getWidth:()=>Flow.SLASH_NOTEHEAD_WIDTH,position:"B/4"}}}};Flow.smufl={};Flow.smufl.to_code_points={bracketTop:"v1b",bracketBottom:"v10",barlineTick:"v6f",segno:"v8c",coda:"v4d",gClef:"v83",cClef:"vad",fClef:"v79",unpitchedPercussionClef1:"v59","6stringTabClef":"v2f",timeSig0:"v0",timeSig1:"v1",timeSig2:"v2",timeSig3:"v3",timeSig4:"v4",timeSig5:"v5",timeSig6:"v6",timeSig7:"v7",timeSig8:"v8",timeSig9:"v9",timeSigCommon:"v41",timeSigCutCommon:"vb6",noteheadDoubleWhole:"v53",noteheadWhole:"v1d",noteheadHalf:"v81",noteheadBlack:"vb",noteheadXWhole:"v92",noteheadXHalf:"v95",noteheadXBlack:"v3e",noteheadCircleX:"v3b",noteheadTriangleUpWhole:"v49",noteheadTriangleUpHalf:"v93",noteheadTriangleUpBlack:"v40",noteheadDiamondWhole:"v46",noteheadDiamondHalf:"v2d",noteheadDiamondBlack:"v22",augmentationDot:"v23",tremolo1:"v74",flag8thUp:"v54",flag8thDown:"v9a",flag16thUp:"v3f",flag16thDown:"v8f",flag32ndUp:"v47",flag32ndDown:"v2a",flag64thUp:"va9",flag64thDown:"v58",flag128thUp:"v9b",flag128thDown:"v30",accidentalFlat:"v44",accidentalNatural:"v4e",accidentalSharp:"v18",accidentalDoubleSharp:"v7f",accidentalDoubleFlat:"v26",accidentalParensLeft:"v9c",accidentalParensRight:"v84",accidentalQuarterToneFlatStein:"vab",accidentalThreeQuarterTonesFlatZimmermann:"v9e",accidentalQuarterToneSharpStein:"v78",accidentalThreeQuarterTonesSharpStein:"v51",accidentalBuyukMucennebFlat:"v39",accidentalBakiyeFlat:"vb7",accidentalKomaSharp:"v51",accidentalKucukMucennebSharp:"v8d",accidentalKoron:"vd1",accidentalSori:"vd0",articAccentAbove:"v42",articAccentBelow:"v42",articTenutoAbove:"v25",articTenutoBelow:"v25",articStaccatoAbove:"v23",articStaccatoBelow:"v23",articStaccatissimoAbove:"v28",articMarcatoAbove:"va",fermataAbove:"v43",fermataBelow:"v5b",breathMarkComma:"v6c",breathMarkUpbow:"v8a",caesura:"v34",caesuraCurved:"v4b",restMaxima:"v59",restDoubleWhole:"v31",restWhole:"v5c",restHalf:"vc",restQuarter:"v7c",rest8th:"va5",rest16th:"v3c",rest32nd:"v55",rest64th:"v38",rest128th:"vaa",dynamicPiano:"vbf",dynamicMezzo:"v62",dynamicForte:"vba",dynamicRinforzando:"vba",dynamicSforzando:"v4a",dynamicZ:"v80",ornamentTrill:"v1f",ornamentTurn:"v72",ornamentTurnSlash:"v33",ornamentMordent:"v45",ornamentMordentInverted:"v1e",ornamentTremblement:"v86",ornamentPrecompAppoggTrill:"v20",ornamentPrecompSlideTrillDAnglebert:"v60",ornamentPrecompSlideTrillBach:"v29",ornamentPrecompTrillSuffixDandrieu:"v6d",ornamentPrecompDoubleCadenceUpperPrefix:"vb4",ornamentPrecompDoubleCadenceUpperPrefixTurn:"v68",ornamentPrecompTrillLowerSuffix:"v2c",stringsDownBow:"v94",stringsUpBow:"v75",stringsHarmonic:"vb9",pluckedSnapPizzicatoAbove:"v94",pluckedLeftHandPizzicato:"v8b",keyboardPedalPed:"v36",keyboardPedalUp:"v5d",pictChokeCymbal:"vb3",wiggleArpeggiatoUp:"va3",arrowheadBlackUp:"vc3",arrowheadBlackDown:"v52"};Flow.TIME4_4={num_beats:4,beat_value:4,resolution:Flow.RESOLUTION};class CanvasContext{static get WIDTH(){return 600}static get HEIGHT(){return 400}static get CANVAS_BROWSER_SIZE_LIMIT(){return 32767}static SanitizeCanvasDims(e,t){return Math.max(e,t)>this.CANVAS_BROWSER_SIZE_LIMIT&&(Vex.W("Canvas dimensions exceed browser limit. Cropping to "+this.CANVAS_BROWSER_SIZE_LIMIT),e>this.CANVAS_BROWSER_SIZE_LIMIT&&(e=this.CANVAS_BROWSER_SIZE_LIMIT),t>this.CANVAS_BROWSER_SIZE_LIMIT&&(t=this.CANVAS_BROWSER_SIZE_LIMIT)),[e,t]}constructor(e){this.vexFlowCanvasContext=e,e.canvas?this.canvas=e.canvas:this.canvas={width:CanvasContext.WIDTH,height:CanvasContext.HEIGHT}}clear(){this.vexFlowCanvasContext.clearRect(0,0,this.canvas.width,this.canvas.height)}openGroup(){}closeGroup(){}add(){}setFont(e,t,s){return this.vexFlowCanvasContext.font=(s||"")+" "+t+"pt "+e,this}setRawFont(e){return this.vexFlowCanvasContext.font=e,this}setFillStyle(e){return this.vexFlowCanvasContext.fillStyle=e,this}setBackgroundFillStyle(e){return this.background_fillStyle=e,this}setStrokeStyle(e){return this.vexFlowCanvasContext.strokeStyle=e,this}setShadowColor(e){return this.vexFlowCanvasContext.shadowColor=e,this}setShadowBlur(e){return this.vexFlowCanvasContext.shadowBlur=e,this}setLineWidth(e){return this.vexFlowCanvasContext.lineWidth=e,this}setLineCap(e){return this.vexFlowCanvasContext.lineCap=e,this}setLineDash(e){return this.vexFlowCanvasContext.lineDash=e,this}scale(e,t){return this.vexFlowCanvasContext.scale(parseFloat(e),parseFloat(t))}resize(e,t){return[e,t]=this.SanitizeCanvasDims(parseInt(e,10),parseInt(t,10)),this.vexFlowCanvasContext.resize(e,t)}rect(e,t,s,r){return this.vexFlowCanvasContext.rect(e,t,s,r)}fillRect(e,t,s,r){return this.vexFlowCanvasContext.fillRect(e,t,s,r)}clearRect(e,t,s,r){return this.vexFlowCanvasContext.clearRect(e,t,s,r)}beginPath(){return this.vexFlowCanvasContext.beginPath()}moveTo(e,t){return this.vexFlowCanvasContext.moveTo(e,t)}lineTo(e,t){return this.vexFlowCanvasContext.lineTo(e,t)}bezierCurveTo(e,t,s,r,o,a){return this.vexFlowCanvasContext.bezierCurveTo(e,t,s,r,o,a)}quadraticCurveTo(e,t,s,r){return this.vexFlowCanvasContext.quadraticCurveTo(e,t,s,r)}arc(e,t,s,r,o,a){return this.vexFlowCanvasContext.arc(e,t,s,r,o,a)}glow(){return this.vexFlowCanvasContext.glow()}fill(){return this.vexFlowCanvasContext.fill()}stroke(){return this.vexFlowCanvasContext.stroke()}closePath(){return this.vexFlowCanvasContext.closePath()}measureText(e){return this.vexFlowCanvasContext.measureText(e)}fillText(e,t,s){return this.vexFlowCanvasContext.fillText(e,t,s)}save(){return this.vexFlowCanvasContext.save()}restore(){return this.vexFlowCanvasContext.restore()}}class RaphaelContext{constructor(e){this.element=e,this.paper=Raphael(e),this.path="",this.pen={x:0,y:0},this.lineWidth=1,this.state={scale:{x:1,y:1},font_family:"Arial",font_size:8,font_weight:800},this.attributes={"stroke-width":.3,fill:"black",stroke:"black",font:"10pt Arial"},this.background_attributes={"stroke-width":0,fill:"white",stroke:"white",font:"10pt Arial"},this.shadow_attributes={width:0,color:"black"},this.state_stack=[]}openGroup(){}closeGroup(){}add(){}setFont(e,t,s){return this.state.font_family=e,this.state.font_size=t,this.state.font_weight=s,this.attributes.font=(this.state.font_weight||"")+" "+this.state.font_size*this.state.scale.x+"pt "+this.state.font_family,this}setRawFont(e){return this.attributes.font=e,this}setFillStyle(e){return this.attributes.fill=e,this}setBackgroundFillStyle(e){return this.background_attributes.fill=e,this.background_attributes.stroke=e,this}setStrokeStyle(e){return this.attributes.stroke=e,this}setShadowColor(e){return this.shadow_attributes.color=e,this}setShadowBlur(e){return this.shadow_attributes.width=e,this}setLineWidth(e){this.attributes["stroke-width"]=e,this.lineWidth=e}setLineDash(){return this}setLineCap(){return this}scale(e,t){return this.state.scale={x:e,y:t},this.attributes.transform="S"+e+","+t+",0,0",this.attributes.scale=e+","+t+",0,0",this.attributes.font=this.state.font_size*this.state.scale.x+"pt "+this.state.font_family,this.background_attributes.transform="S"+e+","+t+",0,0",this.background_attributes.font=this.state.font_size*this.state.scale.x+"pt "+this.state.font_family,this}clear(){this.paper.clear()}resize(e,t){return this.element.style.width=e,this.paper.setSize(e,t),this}setViewBox(e){this.paper.canvas.setAttribute("viewBox",e)}rect(e,t,s,r){return r<0&&(t+=r,r=-r),this.paper.rect(e,t,s-.5,r-.5).attr(this.attributes).attr("fill","none").attr("stroke-width",this.lineWidth),this}fillRect(e,t,s,r){return r<0&&(t+=r,r=-r),this.paper.rect(e,t,s-.5,r-.5).attr(this.attributes),this}clearRect(e,t,s,r){return r<0&&(t+=r,r=-r),this.paper.rect(e,t,s-.5,r-.5).attr(this.background_attributes),this}beginPath(){return this.path="",this.pen.x=0,this.pen.y=0,this}moveTo(e,t){return this.path+="M"+e+","+t,this.pen.x=e,this.pen.y=t,this}lineTo(e,t){return this.path+="L"+e+","+t,this.pen.x=e,this.pen.y=t,this}bezierCurveTo(e,t,s,r,o,a){return this.path+="C"+e+","+t+","+s+","+r+","+o+","+a,this.pen.x=o,this.pen.y=a,this}quadraticCurveTo(e,t,s,r){return this.path+="Q"+e+","+t+","+s+","+r,this.pen.x=s,this.pen.y=r,this}arc(e,t,s,r,o,a){function l(d){for(;d<0;)d+=Math.PI*2;for(;d>Math.PI*2;)d-=Math.PI*2;return d}if(r=l(r),o=l(o),r>o){const d=r;r=o,o=d,a=!a}const c=o-r;return c>Math.PI?(this.arcHelper(e,t,s,r,r+c/2,a),this.arcHelper(e,t,s,r+c/2,o,a)):this.arcHelper(e,t,s,r,o,a),this}arcHelper(e,t,s,r,o,a){const l=e+s*Math.cos(r),c=t+s*Math.sin(r),d=e+s*Math.cos(o),m=t+s*Math.sin(o);let u=0,g=0;a?(g=1,o-rMath.PI&&(u=1),this.path+="M"+l+","+c+",A"+s+","+s+",0,"+u+","+g+","+d+","+m+"M"+this.pen.x+","+this.pen.y}glow(){const e=this.paper.set();if(this.shadow_attributes.width>0){const t=this.shadow_attributes,s=t.width/2;for(let r=1;r<=s;r++)e.push(this.paper.path(this.path).attr({stroke:t.color,"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(t.width/s*r).toFixed(3),opacity:+((t.opacity||.3)/s).toFixed(3),transform:this.attributes.transform,scale:this.attributes.scale}))}return e}fill(){const e=this.paper.path(this.path).attr(this.attributes).attr("stroke-width",0);return this.glow(e),this}stroke(){const e=this.lineWidth*(this.state.scale.x+this.state.scale.y)/2,t=this.paper.path(this.path).attr(this.attributes).attr("fill","none").attr("stroke-width",e);return this.glow(t),this}closePath(){return this.path+="Z",this}measureText(e){const t=this.paper.text(0,0,e).attr(this.attributes).attr("fill","none").attr("stroke","none"),s=t.getBBox();return t.remove(),{width:s.width,height:s.height}}fillText(e,t,s){return this.paper.text(t+this.measureText(e).width/2,s-this.state.font_size/(2.25*this.state.scale.y),e).attr(this.attributes),this}save(){return this.state_stack.push({state:{font_family:this.state.font_family},attributes:{font:this.attributes.font,fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color}}),this}restore(){const e=this.state_stack.pop();return this.state.font_family=e.state.font_family,this.attributes.font=e.attributes.font,this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this}}const attrNamesToIgnoreMap={path:{x:!0,y:!0,width:!0,height:!0},rect:{},text:{width:!0,height:!0}};{const i={"font-family":!0,"font-weight":!0,"font-style":!0,"font-size":!0};Vex.Merge(attrNamesToIgnoreMap.rect,i),Vex.Merge(attrNamesToIgnoreMap.path,i)}class SVGContext{constructor(e){this.element=e,this.svgNS="http://www.w3.org/2000/svg";const t=this.create("svg");this.element.appendChild(t),this.svg=t,this.groups=[this.svg],this.parent=this.svg,this.path="",this.pen={x:NaN,y:NaN},this.lineWidth=1,this.state={scale:{x:1,y:1},"font-family":"Arial","font-size":"8pt","font-weight":"normal"},this.attributes={"stroke-width":.3,fill:"black",stroke:"black","stroke-dasharray":"none","font-family":"Arial","font-size":"10pt","font-weight":"normal","font-style":"normal"},this.background_attributes={"stroke-width":0,fill:"white",stroke:"white","stroke-dasharray":"none","font-family":"Arial","font-size":"10pt","font-weight":"normal","font-style":"normal"},this.shadow_attributes={width:0,color:"black"},this.state_stack=[],this.iePolyfill()}create(e){return document.createElementNS(this.svgNS,e)}openGroup(e,t,s){const r=this.create("g");return this.groups.push(r),this.parent.appendChild(r),this.parent=r,e&&r.setAttribute("class",Vex.Prefix(e)),t&&r.setAttribute("id",Vex.Prefix(t)),s&&s.pointerBBox&&r.setAttribute("pointer-events","bounding-box"),r}closeGroup(){this.groups.pop(),this.parent=this.groups[this.groups.length-1]}add(e){this.parent.appendChild(e)}iePolyfill(){typeof navigator<"u"&&(this.ie=/MSIE 9/i.test(navigator.userAgent)||/MSIE 10/i.test(navigator.userAgent)||/rv:11\.0/i.test(navigator.userAgent)||/Trident/i.test(navigator.userAgent))}setFont(e,t,s){let r=!1,o=!1,a="normal";typeof s=="string"&&(s.indexOf("italic")!==-1&&(s=s.replace(/italic/g,""),o=!0),s.indexOf("bold")!==-1&&(s=s.replace(/bold/g,""),r=!0),s=s.replace(/ /g,"")),s=r?"bold":s,s=typeof s>"u"||s===""?"normal":s,a=o?"italic":a;const l={"font-family":e,"font-size":t+"pt","font-weight":s,"font-style":a};return this.fontSize=Number(t),Vex.Merge(this.attributes,l),Vex.Merge(this.state,l),this}setRawFont(e){e=e.trim();const t=e.split(" ");return this.attributes["font-family"]=t[1],this.state["font-family"]=t[1],this.attributes["font-size"]=t[0],this.state["font-size"]=t[0],this.fontSize=Number(t[0].match(/\d+/)),this}setFillStyle(e){return this.attributes.fill=e,this}setBackgroundFillStyle(e){return this.background_attributes.fill=e,this.background_attributes.stroke=e,this}setStrokeStyle(e){return this.attributes.stroke=e,this}setShadowColor(e){return this.shadow_attributes.color=e,this}setShadowBlur(e){return this.shadow_attributes.width=e,this}setLineWidth(e){this.attributes["stroke-width"]=e,this.lineWidth=e}setLineDash(e){if(Object.prototype.toString.call(e)==="[object Array]")return e=e.join(", "),this.attributes["stroke-dasharray"]=e,this;throw new Vex.RERR("ArgumentError","lineDash must be an array of integers.")}setLineCap(e){return this.attributes["stroke-linecap"]=e,this}resize(e,t){this.width=e,this.height=t,this.element.style.width=e;const s={width:e,height:t};return this.applyAttributes(this.svg,s),this.scale(this.state.scale.x,this.state.scale.y),this}scale(e,t){this.state.scale={x:e,y:t};const s=this.width/e,r=this.height/t;return this.setViewBox(0,0,s,r),this}setViewBox(...e){if(e.length===1){const[t]=e;this.svg.setAttribute("viewBox",t)}else{const[t,s,r,o]=e,a=t+" "+s+" "+r+" "+o;this.svg.setAttribute("viewBox",a)}}applyAttributes(e,t){const s=attrNamesToIgnoreMap[e.nodeName];return Object.keys(t).forEach(r=>{var o;s&&s[r]||!r||!t[r]||r==="d"&&((o=t[r])==null?void 0:o.indexOf("NaN"))>-1||e.setAttributeNS(null,r,t[r])}),e}clear(){for(;this.svg.lastChild;)this.svg.removeChild(this.svg.lastChild);this.scale(this.state.scale.x,this.state.scale.y)}rect(e,t,s,r,o){r<0&&(t+=r,r*=-1);const a=this.create("rect");return typeof o>"u"&&(o={fill:"none","stroke-width":this.lineWidth,stroke:"black"}),Vex.Merge(o,{x:e,y:t,width:s,height:r}),this.applyAttributes(a,o),this.add(a),this}fillRect(e,t,s,r){return r<0&&(t+=r,r*=-1),this.rect(e,t,s,r,this.attributes),this}clearRect(e,t,s,r){return this.rect(e,t,s,r,this.background_attributes),this}beginPath(){return this.path="",this.pen.x=NaN,this.pen.y=NaN,this}moveTo(e,t){return this.path+="M"+e+" "+t,this.pen.x=e,this.pen.y=t,this}lineTo(e,t){return this.path+="L"+e+" "+t,this.pen.x=e,this.pen.y=t,this}bezierCurveTo(e,t,s,r,o,a){return this.path+="C"+e+" "+t+","+s+" "+r+","+o+" "+a,this.pen.x=o,this.pen.y=a,this}quadraticCurveTo(e,t,s,r){return this.path+="Q"+e+" "+t+","+s+" "+r,this.pen.x=s,this.pen.y=r,this}arc(e,t,s,r,o,a){function l(d){for(;d<0;)d+=Math.PI*2;for(;d>Math.PI*2;)d-=Math.PI*2;return d}if(r=l(r),o=l(o),r>o){const d=r;r=o,o=d,a=!a}const c=o-r;return c>Math.PI?(this.arcHelper(e,t,s,r,r+c/2,a),this.arcHelper(e,t,s,r+c/2,o,a)):this.arcHelper(e,t,s,r,o,a),this}arcHelper(e,t,s,r,o,a){const l=e+s*Math.cos(r),c=t+s*Math.sin(r),d=e+s*Math.cos(o),m=t+s*Math.sin(o);let u=0,g=0;a?(g=1,o-rMath.PI&&(u=1),this.path+="M"+l+" "+c+" A"+s+" "+s+" 0 "+u+" "+g+" "+d+" "+m,!isNaN(this.pen.x)&&!isNaN(this.pen.y)&&(this.peth+="M"+this.pen.x+" "+this.pen.y)}closePath(){return this.path+="Z",this}glow(){if(this.shadow_attributes.width>0){const e=this.shadow_attributes,t=e.width/2;for(let s=1;s<=t;s++){const r={stroke:e.color,"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(e.width*.4/t*s).toFixed(3),opacity:+((e.opacity||.3)/t).toFixed(3)},o=this.create("path");r.d=this.path,this.applyAttributes(o,r),this.add(o)}}return this}fill(e){this.glow();const t=this.create("path");let s=e;return typeof e>"u"?(e={},Vex.Merge(e,this.attributes),e.stroke="none",s=e):(s=e,Vex.Merge(s,this.attributes),e.class&&(s.class=e.class),e.id&&(s.id=e.id)),e.d=this.path,this.applyAttributes(t,e),this.add(t),this}stroke(e=void 0){this.glow();const t=this.create("path"),s={};return Vex.Merge(s,this.attributes),e&&Vex.Merge(s,e),s.fill="none",s["stroke-width"]=this.lineWidth,s.d=this.path,this.applyAttributes(t,s),this.add(t),this}measureText(e){const t=this.create("text");if(typeof t.getBBox!="function")return{x:0,y:0,width:0,height:0};t.textContent=e,this.applyAttributes(t,this.attributes),this.svg.appendChild(t);let s=t.getBBox();return this.ie&&e!==""&&this.attributes["font-style"]==="italic"&&(s=this.ieMeasureTextFix(s,e)),this.svg.removeChild(t),s}ieMeasureTextFix(e){const t=Number(this.fontSize),s=1.196,r=1.9598,o=s*t+r,a=e.width-o,l=e.height-1.5;return{x:e.x,y:e.y,width:a,height:l}}fillText(e,t,s){if(!e||e.length<=0)return;const r={};Vex.Merge(r,this.attributes),r.stroke="none",r.x=t,r.y=s;const o=this.create("text");o.textContent=e,this.applyAttributes(o,r),this.add(o)}save(){return this.state_stack.push({state:{"font-family":this.state["font-family"],"font-weight":this.state["font-weight"],"font-style":this.state["font-style"],"font-size":this.state["font-size"],scale:this.state.scale},attributes:{"font-family":this.attributes["font-family"],"font-weight":this.attributes["font-weight"],"font-style":this.attributes["font-style"],"font-size":this.attributes["font-size"],fill:this.attributes.fill,stroke:this.attributes.stroke,"stroke-width":this.attributes["stroke-width"],"stroke-dasharray":this.attributes["stroke-dasharray"]},shadow_attributes:{width:this.shadow_attributes.width,color:this.shadow_attributes.color},lineWidth:this.lineWidth}),this}restore(){const e=this.state_stack.pop();return this.state["font-family"]=e.state["font-family"],this.state["font-weight"]=e.state["font-weight"],this.state["font-style"]=e.state["font-style"],this.state["font-size"]=e.state["font-size"],this.state.scale=e.state.scale,this.attributes["font-family"]=e.attributes["font-family"],this.attributes["font-weight"]=e.attributes["font-weight"],this.attributes["font-style"]=e.attributes["font-style"],this.attributes["font-size"]=e.attributes["font-size"],this.attributes.fill=e.attributes.fill,this.attributes.stroke=e.attributes.stroke,this.attributes["stroke-width"]=e.attributes["stroke-width"],this.attributes["stroke-dasharray"]=e.attributes["stroke-dasharray"],this.shadow_attributes.width=e.shadow_attributes.width,this.shadow_attributes.color=e.shadow_attributes.color,this.lineWidth=e.lineWidth,this}}let lastContext=null;class Renderer{static get Backends(){return{CANVAS:1,RAPHAEL:2,SVG:3,VML:4}}static get LineEndType(){return{NONE:1,UP:2,DOWN:3}}static get USE_CANVAS_PROXY(){return!1}static get lastContext(){return lastContext}static set lastContext(e){lastContext=e}static buildContext(e,t,s,r,o){const a=new Renderer(e,t);s&&r&&a.resize(s,r),o||(o="#FFF");const l=a.getContext();return l.setBackgroundFillStyle(o),Renderer.lastContext=l,l}static getCanvasContext(e,t,s,r){return Renderer.buildContext(e,Renderer.Backends.CANVAS,t,s,r)}static getRaphaelContext(e,t,s,r){return Renderer.buildContext(e,Renderer.Backends.RAPHAEL,t,s,r)}static getSVGContext(e,t,s,r){return Renderer.buildContext(e,Renderer.Backends.SVG,t,s,r)}static bolsterCanvasContext(e){if(Renderer.USE_CANVAS_PROXY)return new CanvasContext(e);const t=["clear","setFont","setRawFont","setFillStyle","setBackgroundFillStyle","setStrokeStyle","setShadowColor","setShadowBlur","setLineWidth","setLineCap","setLineDash","openGroup","closeGroup","getGroup"];return e.vexFlowCanvasContext=e,t.forEach(s=>{e[s]=e[s]||CanvasContext.prototype[s]}),e}static drawDashedLine(e,t,s,r,o,a){e.beginPath();const l=r-t,c=o-s,d=Math.atan2(c,l);let m=t,u=s;e.moveTo(t,s);let g=0,b=!0;for(;!((l<0?m<=r:m>=r)&&(c<0?u<=o:u>=o));){const y=a[g++%a.length],S=m+Math.cos(d)*y;m=l<0?Math.max(r,S):Math.min(r,S);const v=u+Math.sin(d)*y;u=c<0?Math.max(o,v):Math.min(o,v),b?e.lineTo(m,u):e.moveTo(m,u),b=!b}e.closePath(),e.stroke()}constructor(e,t){if(this.elementId=e,!this.elementId)throw new Vex.RERR("BadArgument","Invalid id for renderer.");if(this.element=document.getElementById(e),this.element||(this.element=e),this.ctx=null,this.paper=null,this.backend=t,this.backend===Renderer.Backends.CANVAS){if(!this.element.getContext)throw new Vex.RERR("BadElement",`Can't get canvas context from element: ${e}`);this.ctx=Renderer.bolsterCanvasContext(this.element.getContext("2d"))}else if(this.backend===Renderer.Backends.RAPHAEL)this.ctx=new RaphaelContext(this.element);else if(this.backend===Renderer.Backends.SVG)this.ctx=new SVGContext(this.element);else throw new Vex.RERR("InvalidBackend",`No support for backend: ${this.backend}`)}resize(e,t){if(this.backend===Renderer.Backends.CANVAS){if(!this.element.getContext)throw new Vex.RERR("BadElement",`Can't get canvas context from element: ${this.elementId}`);[e,t]=CanvasContext.SanitizeCanvasDims(e,t);const s=window.devicePixelRatio||1;this.element.width=e*s,this.element.height=t*s,this.element.style.width=e+"px",this.element.style.height=t+"px",this.ctx=Renderer.bolsterCanvasContext(this.element.getContext("2d")),this.ctx.scale(s,s)}else this.ctx.resize(e,t);return this}getContext(){return this.ctx}}function L$j(...i){Stem.DEBUG&&Vex.L("Vex.Flow.Stem",i)}class Stem extends Element$1{static get CATEGORY(){return"stem"}static get UP(){return 1}static get DOWN(){return-1}static get WIDTH(){return Flow.STEM_WIDTH}static get HEIGHT(){return Flow.STEM_HEIGHT}constructor(e={}){super(),this.setAttribute("type","Stem"),this.x_begin=e.x_begin||0,this.x_end=e.x_end||0,this.y_top=e.y_top||0,this.y_bottom=e.y_bottom||0,this.stem_extension=e.stem_extension||0,this.stem_direction=e.stem_direction||0,this.hide=e.hide||!1,this.isStemlet=e.isStemlet||!1,this.stemletHeight=e.stemletHeight||0,this.resetHeight=0,this.renderHeightAdjustment=0,this.setOptions(e)}setResetHeight(e){this.resetHeight=e}setOptions(e){this.stem_up_y_offset=e.stem_up_y_offset||0,this.stem_down_y_offset=e.stem_down_y_offset||0}setNoteHeadXBounds(e,t){return this.x_begin=e,this.x_end=t,this}setDirection(e){this.stem_direction=e}setExtension(e){this.stem_extension=e}getExtension(){return this.stem_extension}setYBounds(e,t){this.y_top=e,this.y_bottom=t}getCategory(){return Stem.CATEGORY}getHeight(){const e=this.stem_direction===Stem.UP?this.stem_up_y_offset:this.stem_down_y_offset;return(this.y_bottom-this.y_top)*this.stem_direction+(Stem.HEIGHT-e+this.stem_extension)*this.stem_direction}getBoundingBox(){throw new Vex.RERR("NotImplemented","getBoundingBox() not implemented.")}getExtents(){const e=this.stem_direction===Stem.UP,t=[this.y_top,this.y_bottom],s=Stem.HEIGHT+this.stem_extension,r=(e?Math.min:Math.max)(...t),o=(e?Math.max:Math.min)(...t);return{topY:r+s*-this.stem_direction+this.resetHeight*-this.stem_direction,baseY:o}}setVisibility(e){return this.hide=!e,this}setStemlet(e,t){return this.isStemlet=e,this.stemletHeight=t,this}draw(){if(this.setRendered(),this.hide)return;const e=this.checkContext();let t,s;const r=this.stem_direction;r===Stem.DOWN?(t=this.x_begin,s=this.y_top+this.stem_down_y_offset):(t=this.x_end,s=this.y_bottom-this.stem_up_y_offset);const o=this.getHeight();L$j("Rendering stem - ","Top Y: ",this.y_top,"Bottom Y: ",this.y_bottom);const a=this.isStemlet?o-this.stemletHeight*this.stem_direction:0;if(e.save(),this.applyStyle(e),e.beginPath(),e.setLineWidth(Stem.WIDTH),e.moveTo(t,s-a),e.lineTo(t,s-o-this.renderHeightAdjustment*r-this.resetHeight*r),e.svg){const l={class:Vex.Prefix("stem")};this.id&&(l.id=this.id),e.stroke(l)}else e.stroke();this.restoreStyle(e),e.restore()}}let Tuplet$1=class ut extends Element$1{static get LOCATION_TOP(){return 1}static get LOCATION_BOTTOM(){return-1}static get NESTING_OFFSET(){return 15}constructor(e,t){if(super(),this.setAttribute("type","Tuplet"),!e||!e.length)throw new Vex.RuntimeError("BadArguments","No notes provided for tuplet.");this.options=Vex.Merge({},t),this.notes=e,this.num_notes="num_notes"in this.options?this.options.num_notes:e.length,this.options.beats_occupied&&this.beatsOccupiedDeprecationWarning(),this.notes_occupied=this.options.notes_occupied||this.options.beats_occupied||2,"bracketed"in this.options?this.bracketed=this.options.bracketed:this.bracketed=e.some(s=>s.beam===null),this.ratioed="ratioed"in this.options?this.options.ratioed:Math.abs(this.notes_occupied-this.num_notes)>1,this.point=28,this.y_pos=16,this.x_pos=100,this.width=200,this.location=this.options.location||ut.LOCATION_TOP,Formatter.AlignRestsToNotes(e,!0,!0),this.resolveGlyphs(),this.attach()}attach(){for(let e=0;e=1;)this.numerator_glyphs.unshift(new Glyph("v"+e%10,this.point)),e=parseInt(e/10,10);for(this.denom_glyphs=[],e=this.notes_occupied;e>=1;)this.denom_glyphs.unshift(new Glyph("v"+e%10,this.point)),e=parseInt(e/10,10)}getNestedTupletCount(){const e=this.location,t=this.notes[0];let s=o(t,e),r=o(t,e);function o(a,l){return a.tupletStack.filter(c=>c.location===l).length}return this.notes.forEach(a=>{const l=o(a,e);s=l>s?l:s,r=lr&&(r=a)}}return r+e+t}draw(){this.checkContext(),this.setRendered();const e=this.notes[0],t=this.notes[this.notes.length-1];this.bracketed?(this.x_pos=e.getTieLeftX()-5,this.width=t.getTieRightX()-this.x_pos+5):(this.x_pos=e.getStemX(),this.width=t.getStemX()-this.x_pos),this.y_pos=this.getYPosition();const s=(c,d)=>c+d.getMetrics().width;let r=this.numerator_glyphs.reduce(s,0);this.ratioed&&(r=this.denom_glyphs.reduce(s,r),r+=this.point*.32);const a=this.x_pos+this.width/2-r/2;if(this.bracketed){const c=this.width/2-r/2-5;c>0&&(this.context.fillRect(this.x_pos,this.y_pos,c,1),this.context.fillRect(this.x_pos+this.width/2+r/2+5,this.y_pos,c,1),this.context.fillRect(this.x_pos,this.y_pos+(this.location===ut.LOCATION_BOTTOM),1,this.location*10),this.context.fillRect(this.x_pos+this.width,this.y_pos+(this.location===ut.LOCATION_BOTTOM),1,this.location*10))}let l=0;if(this.numerator_glyphs.forEach(c=>{c.render(this.context,a+l,this.y_pos+this.point/3-2),l+=c.getMetrics().width}),this.ratioed){const c=a+l+this.point*.16,d=this.point*.06;this.context.beginPath(),this.context.arc(c,this.y_pos-this.point*.08,d,0,Math.PI*2,!0),this.context.closePath(),this.context.fill(),this.context.beginPath(),this.context.arc(c,this.y_pos+this.point*.12,d,0,Math.PI*2,!0),this.context.closePath(),this.context.fill(),l+=this.point*.32,this.denom_glyphs.forEach(m=>{m.render(this.context,a+l,this.y_pos+this.point/3-2),l+=m.getMetrics().width})}}};function calculateStemDirection(i){let e=0;return i.forEach(t=>{t.keyProps&&t.keyProps.forEach(s=>{e+=s.line-3})}),e>=0?Stem.DOWN:Stem.UP}const getStemSlope=(i,e)=>{const t=i.getStemExtents().topY,s=i.getStemX(),r=e.getStemExtents().topY,o=e.getStemX();return(r-t)/(o-s)},BEAM_LEFT="L",BEAM_RIGHT="R",BEAM_BOTH="B";let Beam$1=class Yt extends Element$1{static getDefaultBeamGroups(e){(!e||e==="c")&&(e="4/4");const s={"1/2":["1/2"],"2/2":["1/2"],"3/2":["1/2"],"4/2":["1/2"],"1/4":["1/4"],"2/4":["1/4"],"3/4":["1/4"],"4/4":["1/4"],"1/8":["1/8"],"2/8":["2/8"],"3/8":["3/8"],"4/8":["2/8"],"1/16":["1/16"],"2/16":["2/16"],"3/16":["3/16"],"4/16":["2/16"]}[e];if(s===void 0){const r=parseInt(e.split("/")[0],10),o=parseInt(e.split("/")[1],10);if(r%3===0)return[new Fraction(3,o)];if(o>4)return[new Fraction(2,o)];if(o<=4)return[new Fraction(1,o)]}else return s.map(r=>new Fraction().parse(r));return[new Fraction(1,4)]}static applyAndGetBeams(e,t,s){return Yt.generateBeams(e.getTickables(),{groups:s,stem_direction:t})}static generateBeams(e,t){t||(t={}),(!t.groups||!t.groups.length)&&(t.groups=[new Fraction(2,8)]);const s=t.groups.map(w=>{if(!w.multiply)throw new Vex.RuntimeError("InvalidBeamGroups","The beam groups must be an array of Vex.Flow.Fractions");return w.clone().multiply(Flow.RESOLUTION,1)}),r=e;let o=0,a=[],l=[];function c(w){return w.reduce((_,C)=>C.getTicks().clone().add(_),new Fraction(0,1))}function d(){s.length-1>o?o+=1:o=0}function m(){let w=[];r.forEach(_=>{if(w=[],_.shouldIgnoreTicks()){a.push(l),l=w;return}l.push(_);const C=s[o].clone(),P=c(l),I=Flow.durationToNumber(_.duration)<8;I&&_.tuplet&&(C.numerator*=2),P.greaterThan(C)?(I||w.push(l.pop()),a.push(l),l=w,d()):P.equals(C)&&(a.push(l),l=w,d())}),l.length>0&&a.push(l)}function u(){return a.filter(w=>{if(w.length>1){let _=!0;return w.forEach(C=>{C.getIntrinsicTicks()>=Flow.durationToTicks("4")&&(_=!1)}),_}return!1})}function g(){const w=[];a.forEach(_=>{let C=[];_.forEach((P,I,R)=>{const N=I===0||I===R.length-1,G=R[I-1],B=!t.beam_rests&&P.isRest(),k=t.beam_rests&&t.beam_middle_only&&P.isRest()&&N;let T=!1;if(t.maintain_stem_directions&&G&&!P.isRest()&&!G.isRest()){const W=G.getStemDirection();T=P.getStemDirection()!==W}const V=parseInt(P.duration,10)<8;B||k||T||V?(C.length>0&&w.push(C),C=T?[P]:[]):C.push(P)}),C.length>0&&w.push(C)}),a=w}function b(){a.forEach(w=>{let _;if(t.maintain_stem_directions){const C=y(w);_=C?C.getStemDirection():Stem.UP}else t.stem_direction?_=t.stem_direction:_=calculateStemDirection(w);S(w,_)})}function y(w){for(let _=0;_{C.setStemDirection(_)})}function v(){const w=[];return a.forEach(_=>{let C=null;_.forEach(P=>{P.tuplet&&C!==P.tuplet&&(C=P.tuplet,w.push(C))})}),w}m(),g(),b();const x=u(),A=v(),E=[];return x.forEach(w=>{const _=new Yt(w);t.show_stemlets&&(_.render_options.show_stemlets=!0),t.secondary_breaks&&(_.render_options.secondary_break_ticks=Flow.durationToTicks(t.secondary_breaks)),t.flat_beams===!0&&(_.render_options.flat_beams=!0,_.render_options.flat_beam_offset=t.flat_beam_offset),E.push(_)}),A.forEach(w=>{const _=w.notes[0].stem_direction===Stem.DOWN?Tuplet$1.LOCATION_BOTTOM:Tuplet$1.LOCATION_TOP;w.setTupletLocation(_);let C=!1;for(let P=0;P=Flow.durationToTicks("4"))throw new Vex.RuntimeError("BadArguments","Beams can only be applied to notes shorter than a quarter note.");let s,r;for(this.stem_direction=Stem.UP,s=0;sl+c.stem_direction,0)>-1?Stem.UP:Stem.DOWN),s=0;ss.getGlyph().beam_count).reduce((s,r)=>r>s?r:s)}breakSecondaryAt(e){return this.break_on_indices=e,this}getSlopeY(e,t,s,r){return s+(e-t)*r}calculateSlope(){const{notes:e,stem_direction:t,render_options:{max_slope:s,min_slope:r,slope_iterations:o,slope_cost:a}}=this,l=e[0],c=getStemSlope(l,e[e.length-1]),d=(s-r)/o;let m=Number.MAX_VALUE,u=0,g=0;for(let b=r;b<=s;b+=d){let y=0,S=0;for(let E=1;Ev)&&(d=v,l=Math.min(...S.getYs()),c=S.getBeamCount())}let m=a/e.length;const u=s*1.5,g=r+c*u,b=l+g*-t;t===Stem.DOWN&&mb&&(m=l-g),o+this.render_options.flat_beam_offset_per_beam>0?t===Stem.DOWN&&m>o&&!this.render_options.flat_beams?this.render_options.flat_beam_offset=m:t===Stem.UP&&m0){let r=this.render_options.flat_beam_offset;this.render_options.flat_beam_offset_per_beam&&(r+=this.render_options.flat_beam_offset_per_beam*this.getBeamCount());let o=this.notes[0].note_heads[0].y;const a=this.stem_direction>0?Math.min:Math.max;for(const l of this.notes)for(const c of l.note_heads)o=a(o,c.y);s=o+r*-this.stem_direction}return s}applyStemExtensions(){const{notes:e,slope:t,y_shift:s,stem_direction:r,beam_count:o,render_options:{show_stemlets:a,stemlet_extension:l,beam_width:c}}=this,d=e[0],m=this.getBeamYToDraw(),u=d.getStemX();for(let g=0;g=8&&(b=this.break_on_indices.indexOf(m)!==-1,this.render_options.secondary_break_ticks&&c>=this.render_options.secondary_break_ticks&&(c=0,b=!0));const y=u.getIntrinsicTicks(){e.getStem()&&(this.context.openGroup("stem",e.getAttribute("id")+"-stem"),e.getStem().setContext(this.context).draw(),this.context.closeGroup())},this)}drawBeamLines(){this.checkContext();const e=["4","8","16","32","64"],t=this.notes[0];let s=this.getBeamYToDraw();const r=t.getStemX(),o=this.render_options.beam_width*this.stem_direction,a={};for(const l of this.notes)a[l.getAttribute("id")]=0;for(let l=0;l{e.getStave()||e.setStave(this.stave)}),this.preFormatted=!0,this)}draw(e=this.context,t=this.stave){this.setRendered();let s=null;for(let r=0;r0&&s){const a=o.getBoundingBox();a&&s.mergeWith(a)}o.setContext(e),o.drawWithStyle()}this.boundingBox=s}};function drawBoldDoubleLine(i,e,t,s,r){if(e!==StaveConnector.type.BOLD_DOUBLE_LEFT&&e!==StaveConnector.type.BOLD_DOUBLE_RIGHT)throw new Vex.RERR("InvalidConnector","A REPEAT_BEGIN or REPEAT_END type must be provided.");let o=3,a=3.5;const l=2;e===StaveConnector.type.BOLD_DOUBLE_RIGHT&&(o=-5,a=3),i.fillRect(t+o,s,1,r-s),i.fillRect(t-l,s,a,r-s)}class StaveConnector extends Element$1{static get type(){return{SINGLE_RIGHT:0,SINGLE_LEFT:1,SINGLE:1,DOUBLE:2,BRACE:3,BRACKET:4,BOLD_DOUBLE_LEFT:5,BOLD_DOUBLE_RIGHT:6,THIN_DOUBLE:7,NONE:8}}static get typeString(){return{singleRight:StaveConnector.type.SINGLE_RIGHT,singleLeft:StaveConnector.type.SINGLE_LEFT,single:StaveConnector.type.SINGLE,double:StaveConnector.type.DOUBLE,brace:StaveConnector.type.BRACE,bracket:StaveConnector.type.BRACKET,boldDoubleLeft:StaveConnector.type.BOLD_DOUBLE_LEFT,boldDoubleRight:StaveConnector.type.BOLD_DOUBLE_RIGHT,thinDouble:StaveConnector.type.THIN_DOUBLE,none:StaveConnector.type.NONE}}constructor(e,t){super(),this.setAttribute("type","StaveConnector"),this.thickness=Flow.STAVE_LINE_THICKNESS,this.width=3,this.top_stave=e,this.bottom_stave=t,this.type=StaveConnector.type.DOUBLE,this.font={family:"times",size:16,weight:"normal"},this.x_shift=0,this.texts=[]}setType(e){return e=typeof e=="string"?StaveConnector.typeString[e]:e,e>=StaveConnector.type.SINGLE_RIGHT&&e<=StaveConnector.type.NONE&&(this.type=e),this}setText(e,t){return this.texts.push({content:e,options:Vex.Merge({shift_x:0,shift_y:0},t)}),this}setFont(e){Vex.Merge(this.font,e)}setXShift(e){if(typeof e!="number")throw Vex.RERR("InvalidType","x_shift must be a Number");return this.x_shift=e,this}draw(){const e=this.checkContext();this.setRendered();let t=this.top_stave.getYForLine(0),s=this.bottom_stave.getYForLine(this.bottom_stave.getNumLines()-1)+this.thickness,r=this.width,o=this.top_stave.getX();(this.type===StaveConnector.type.SINGLE_RIGHT||this.type===StaveConnector.type.BOLD_DOUBLE_RIGHT||this.type===StaveConnector.type.THIN_DOUBLE)&&(o=this.top_stave.getX()+this.top_stave.width);let l=s-t;switch(this.type){case StaveConnector.type.SINGLE:r=1;break;case StaveConnector.type.SINGLE_LEFT:r=1;break;case StaveConnector.type.SINGLE_RIGHT:r=1;break;case StaveConnector.type.DOUBLE:o-=this.width+2;break;case StaveConnector.type.BRACE:{r=12;const c=this.top_stave.getX()-2+this.x_shift,d=t,m=c,u=s,g=c-r,b=d+l/2,y=g-.9*r,S=d+.2*l,v=c+1.1*r,x=b-.135*l,A=v,E=b+.135*l,w=y,_=u-.2*l,C=g-r,P=_,I=c+.4*r,R=b+.135*l,N=I,G=b-.135*l,B=C,k=S;e.beginPath(),e.moveTo(c,d),e.bezierCurveTo(y,S,v,x,g,b),e.bezierCurveTo(A,E,w,_,m,u),e.bezierCurveTo(C,P,I,R,g,b),e.bezierCurveTo(N,G,B,k,c,d),e.fill(),e.stroke();break}case StaveConnector.type.BRACKET:t-=4,s+=4,l=s-t,Glyph.renderGlyph(e,o-5,t-3,40,"v1b",!0),Glyph.renderGlyph(e,o-5,s+3,40,"v10",!0),o-=this.width+2;break;case StaveConnector.type.BOLD_DOUBLE_LEFT:drawBoldDoubleLine(e,this.type,o+this.x_shift,t,s);break;case StaveConnector.type.BOLD_DOUBLE_RIGHT:drawBoldDoubleLine(e,this.type,o,t,s);break;case StaveConnector.type.THIN_DOUBLE:r=1;break;case StaveConnector.type.NONE:break;default:throw new Vex.RERR("InvalidType",`The provided StaveConnector.type (${this.type}) is invalid`)}this.type!==StaveConnector.type.BRACE&&this.type!==StaveConnector.type.BOLD_DOUBLE_LEFT&&this.type!==StaveConnector.type.BOLD_DOUBLE_RIGHT&&this.type!==StaveConnector.type.NONE&&e.fillRect(o,t,r,l),this.type===StaveConnector.type.THIN_DOUBLE&&e.fillRect(o-3,t,r,l),e.save(),e.lineWidth=2,e.setFont(this.font.family,this.font.size,this.font.weight);for(let c=0;c0){const v=S.space.deviation,x=v>=0?"+":"";e.setFillStyle("red"),e.fillText(x+Math.round(v),l+t.getXShift(),s-10)}e.restore()}constructor(e){if(super(),this.setAttribute("type","Note"),!e)throw new Vex.RuntimeError("BadArguments","Note must have valid initialization data to identify duration and type.");const t=Flow.parseNoteStruct(e);if(!t)throw new Vex.RuntimeError("BadArguments",`Invalid note initialization object: ${JSON.stringify(e)}`);if(this.duration=t.duration,this.dots=t.dots,this.noteType=t.type,this.customTypes=t.customTypes,this.DYMusicScoreType=e.DYMusicScoreType,e.duration_override?this.setDuration(e.duration_override):this.setIntrinsicTicks(t.ticks),this.modifiers=[],this.glyph=Flow.getGlyphProps(this.duration,this.noteType),this.customGlyphs=this.customTypes.map(s=>Flow.getGlyphProps(this.duration,s)),this.positions&&(typeof this.positions!="object"||!this.positions.length))throw new Vex.RuntimeError("BadArguments","Note keys must be array type.");this.playNote=null,this.tickContext=null,this.modifierContext=null,this.ignore_ticks=!1,this.width=0,this.extraLeftPx=0,this.extraRightPx=0,this.x_shift=0,this.left_modPx=0,this.right_modPx=0,this.voice=null,this.preFormatted=!1,this.ys=[],e.align_center&&this.setCenterAlignment(e.align_center),this.stave=null,this.render_options={annotation_spacing:5,stave_padding:Note.STAVEPADDING}}getPlayNote(){return this.playNote}setPlayNote(e){return this.playNote=e,this}isRest(){return!1}addStroke(e,t){return t.setNote(this),t.setIndex(e),this.modifiers.push(t),this.setPreFormatted(!1),this}getStave(){return this.stave}setStave(e){return this.stave=e,this.setYs([e.getYForLine(0)]),this.context=this.stave.context,this}getCategory(){return Note.CATEGORY}setContext(e){return this.context=e,this}getExtraLeftPx(){return this.extraLeftPx}getExtraRightPx(){return this.extraRightPx}setExtraLeftPx(e){return this.extraLeftPx=e,this}setExtraRightPx(e){return this.extraRightPx=e,this}shouldIgnoreTicks(){return this.ignore_ticks}getLineNumber(){return 0}getLineForRest(){return 0}getGlyph(){return this.glyph}getGlyphWidth(){return this.glyph.getWidth?this.glyph.getWidth(this.render_options.glyph_font_scale):15}setYs(e){return this.ys=e,this}getYs(){if(this.ys.length===0)throw new Vex.RERR("NoYValues","No Y-values calculated for this note.");return this.ys}getYForTopText(e){if(!this.stave)throw new Vex.RERR("NoStave","No stave attached to this note.");return this.stave.getYForTopText(e)}getBoundingBox(){return null}getVoice(){if(!this.voice)throw new Vex.RERR("NoVoice","Note has no voice.");return this.voice}setVoice(e){return this.voice=e,this.preFormatted=!1,this}getTickContext(){return this.tickContext}setTickContext(e){return this.tickContext=e,this.preFormatted=!1,this}getDuration(){return this.duration}isDotted(){return this.dots>0}hasStem(){return!1}getDots(){return this.dots}getNoteType(){return this.noteType}setBeam(){return this}setModifierContext(e){return this.modifierContext=e,this}addModifier(e,t=0){return e.setNote(this),e.setIndex(t),this.modifiers.push(e),this.setPreFormatted(!1),this}getModifierStartXY(){if(!this.preFormatted)throw new Vex.RERR("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");return{x:this.getAbsoluteX(),y:this.ys[0]}}getMetrics(){if(!this.preFormatted)throw new Vex.RERR("UnformattedNote","Can't call getMetrics on an unformatted note.");let e=0,t=0;this.modifierContext!=null&&(e=this.modifierContext.state.left_shift,t=this.modifierContext.state.right_shift);const s=this.getWidth();return{width:s,noteWidth:s-e-t-this.extraLeftPx-this.extraRightPx,left_shift:this.x_shift,modLeftPx:e,modRightPx:t,extraLeftPx:this.extraLeftPx,extraRightPx:this.extraRightPx}}setWidth(e){this.width=e}getWidth(){if(!this.preFormatted)throw new Vex.RERR("UnformattedNote","Can't call GetWidth on an unformatted note.");return this.width+(this.modifierContext?this.modifierContext.getWidth():0)}setXShift(e){return this.x_shift=e,this}getXShift(){return this.x_shift}getX(){if(!this.tickContext)throw new Vex.RERR("NoTickContext","Note needs a TickContext assigned for an X-Value");return this.tickContext.getX()+this.x_shift}getAbsoluteX(){if(!this.tickContext)throw new Vex.RERR("NoTickContext","Note needs a TickContext assigned for an X-Value");let e=this.tickContext.getX();return this.stave&&(e+=this.stave.getNoteStartX()+this.render_options.stave_padding),this.isCenterAligned()&&(this.DYMusicScoreType==="jianpu"||(e+=this.getCenterXShift())),e}setPreFormatted(e){if(this.preFormatted=e,this.preFormatted){const t=this.tickContext.getExtraPx();this.left_modPx=Math.max(this.left_modPx,t.left),this.right_modPx=Math.max(this.right_modPx,t.right)}}}function L$i(...i){NoteHead.DEBUG&&Vex.L("Vex.Flow.NoteHead",i)}function drawSlashNoteHead(i,e,t,s,r,o){const a=Flow.SLASH_NOTEHEAD_WIDTH;i.save(),i.setLineWidth(Flow.STEM_WIDTH);let l=!1;if(Flow.durationToNumber(e)>2&&(l=!0),l||(t-=Flow.STEM_WIDTH/2*r),i.beginPath(),i.moveTo(t,s+o),i.lineTo(t,s+1),i.lineTo(t+a,s-o),i.lineTo(t+a,s),i.lineTo(t,s+o),i.closePath(),l?i.fill():i.stroke(),Flow.durationToFraction(e).equals(.5)){const c=[-3,-1,a+1,a+3];for(let d=0;d{const l=a.getTickContext();a.setStave(t.stave),l.setXOffset(o)})}}class Dot extends Modifier{static get CATEGORY(){return"dots"}static format(e,t){const s=t.right_shift,r=1;if(!e||e.length===0)return!1;const o=[],a={};for(let b=0;by.line-b.line);let l=s,c=0,d=null,m=null,u=null,g=0;for(let b=0;bc?l:c,d=x,m=S}return t.right_shift+=c,!0}constructor(){super(),this.setAttribute("type","Dot"),this.note=null,this.index=null,this.position=Modifier.Position.RIGHT,this.radius=2,this.setWidth(5),this.dot_shiftY=0}getCategory(){return Dot.CATEGORY}setNote(e){this.note=e,this.note.getCategory()==="gracenotes"&&(this.radius*=.5,this.setWidth(3))}setDotShiftY(e){return this.dot_shiftY=e,this}draw(){if(this.checkContext(),this.setRendered(),!this.note||this.index===null)throw new Vex.RERR("NoAttachedNote","Can't draw dot without a note and index.");const e=this.note.stave.options.spacing_between_lines_px,t=this.note.getModifierStartXY(this.position,this.index,{forceFlagRight:!0});this.note.getCategory()==="tabnotes"&&(t.y=this.note.getStemExtents().baseY+1);const s=t.x+this.x_shift+this.width-this.radius;let r=this.dot_shiftY*e;this.note&&this.note.DYMusicScoreType=="jianpu"&&(r=-5);const o=t.y+this.y_shift+r,a=this.context;a.beginPath(),a.arc(s,o,this.radius,0,Math.PI*2,!1),a.fill()}}function L$h(...i){StaveNote.DEBUG&&Vex.L("Vex.Flow.StaveNote",i)}const getStemAdjustment=i=>Stem.WIDTH/(2*-i.getStemDirection()),isInnerNoteIndex=(i,e)=>e===(i.getStemDirection()===Stem.UP?i.keyProps.length-1:0);function shiftRestVertical(i,e,t){const s=(e.isrest?0:1)*t;i.line+=s,i.maxLine+=s,i.minLine+=s,i.note.setKeyLine(0,i.note.getKeyLine(0)+s)}function centerRest(i,e,t){const s=i.line-Vex.MidLine(e.minLine,t.maxLine);i.note.setKeyLine(0,i.note.getKeyLine(0)-s),i.line-=s,i.maxLine-=s,i.minLine-=s}class StaveNote extends StemmableNote{static get CATEGORY(){return"stavenotes"}static get STEM_UP(){return Stem.UP}static get STEM_DOWN(){return Stem.DOWN}static get DEFAULT_LEDGER_LINE_OFFSET(){return 3}static renderVibrato(e,t,s,r){let{width:o,height:a,wave_width:l,wave_girth:c,wave_height:d,stem_direction:m}=r;const u=Math.floor(o/l);let g=a/(u/2)*m;g==0&&(m=1,g=.3),e.beginPath(),e.moveTo(t,s+c);for(let b=0;b2?s[1]:null;let c=o>2?s[2]:s[1];o===2&&a.stemDirection===-1&&c.stemDirection===1&&(a=s[1],c=s[0]);const d=Math.max(a.voice_shift,c.voice_shift);let m=0,u;if(o===2){const g=a.stemDirection===c.stemDirection?0:.5;if(a.stemDirection===c.stemDirection&&a.minLine<=c.maxLine&&(a.isrest||(u=Math.abs(a.line-(c.maxLine+.5)),u=Math.max(u,a.stemMin),a.minLine=a.line-u,a.note.setStemLength(u*10))),a.minLine<=c.maxLine+g)if(a.isrest)shiftRestVertical(a,c,1);else if(c.isrest)shiftRestVertical(c,a,-1);else{m=d;const b=Math.abs(a.line-c.line);let y=0,S=0;a.note.duration==="h"?y++:a.note.duration==="w"&&S++,c.note.duration==="h"?y++:c.note.duration==="w"&&S++;let v=y===1||S===1||a.note.dots!==c.note.dots;if(r&&(v=v||S===2),b===0&&v){if(c.note.setXShift(m),a.note.dots>0){let x=0;for(const A of a.note.modifiers)if(A instanceof Dot&&(x++,A.setYShift(-10*(c.maxLine-a.line+1)),x===a.note.dots))break}}else b<1&&b>0?c.note.setXShift(m):a.note.voice!==c.note.voice&&a.stemDirection===c.stemDirection&&(a.line>c.line?a.stemDirection===1?c.note.renderFlag=!1:a.note.renderFlag=!1:c.line>a.line?c.stemDirection===1?a.note.renderFlag=!1:c.note.renderFlag=!1:c.stemDirection===1&&(c.stemDirection=-1,c.note.setStemDirection(-1)))}return!0}if(l!==null&&l.minLinet.postFormat()),!0):!1}constructor(e){if(super(e),this.setAttribute("type","StaveNote"),this.keys=e.keys,this.clef=e.clef,this.octave_shift=e.octave_shift,this.beam=null,this.vibrato=null,this.slideNote=null,this.glyph=Flow.getGlyphProps(this.duration,this.noteType),!this.glyph)throw new Vex.RuntimeError("BadArguments",`Invalid note initialization data (No glyph found): ${JSON.stringify(e)}`);this.displaced=!1,this.dot_shiftY=0,this.addDotsCount=0,this.keyProps=[],this.use_default_head_x=!1,this.note_heads=[],this.modifiers=[],Vex.Merge(this.render_options,{glyph_font_scale:e.glyph_font_scale||Flow.DEFAULT_NOTATION_FONT_SCALE,stroke_px:e.stroke_px||StaveNote.DEFAULT_LEDGER_LINE_OFFSET}),this.calculateKeyProps(),this.buildStem(),e.auto_stem?this.autoStem():this.setStemDirection(e.stem_direction),this.reset(),this.buildFlag()}reset(){super.reset();const e=this.note_heads.map(t=>t.getStyle());this.buildNoteHeads(),this.note_heads.forEach((t,s)=>t.setStyle(e[s])),this.stave&&this.note_heads.forEach(t=>t.setStave(this.stave)),this.calcExtraPx()}setBeam(e){return this.beam=e,this.calcExtraPx(),this}setVibrato(e){this.vibrato=e}setSlideNote(e){this.slideNote=e}getCategory(){return StaveNote.CATEGORY}buildStem(){this.setStem(new Stem({hide:!!this.isRest()})),this.stem.id=Vex.Prefix(`${this.getAttribute("id")}-stem`)}buildNoteHeads(){this.note_heads=[];const e=this.getStemDirection(),t=this.getKeys();let s=null,r=null,o=!1,a,l,c;e===Stem.UP?(a=0,l=t.length,c=1):e===Stem.DOWN&&(a=t.length-1,l=-1,c=-1);for(let d=a;d!==l;d+=c){const m=this.keyProps[d],u=m.line;s===null?s=u:(r=Math.abs(s-u),r===0||r===.5?o=!o:(o=!1,this.use_default_head_x=!0)),s=u;const g=new NoteHead({duration:this.duration,note_type:this.noteType,displaced:o,stem_direction:e,custom_glyph_code:m.code,glyph_font_scale:this.render_options.glyph_font_scale,x_shift:m.shift_right,stem_up_x_offset:m.stem_up_x_offset,stem_down_x_offset:m.stem_down_x_offset,line:m.line});this.note_heads[d]=g}}autoStem(){this.minLine=this.keyProps[0].line,this.maxLine=this.keyProps[this.keyProps.length-1].line;const e=3,s=(this.minLine+this.maxLine)/20&&(this.keyProps[t-1].displaced=!0)),e=a,this.keyProps.push(o)}e=-1/0,this.keyProps.forEach(t=>{t.linet.line-s.line)}getBoundingBox(){if(!this.preFormatted)throw new Vex.RERR("UnformattedNote","Can't call getBoundingBox on an unformatted note.");const{width:e,modLeftPx:t,extraLeftPx:s}=this.getMetrics(),r=this.getAbsoluteX()-t-s;let o=0,a=0;const l=this.getStave().getSpacingBetweenLines()/2,c=l*2;if(this.isRest()){const d=this.ys[0],m=Flow.durationToFraction(this.duration);m.equals(1)||m.equals(2)?(o=d-l,a=d+l):(o=d-this.glyph.line_above*c,a=d+this.glyph.line_below*c)}else if(this.glyph.stem){const d=this.getStemExtents();d.baseY+=l*this.stem_direction,o=Math.min(d.topY,d.baseY),a=Math.max(d.topY,d.baseY)}else{o=null,a=null;for(let d=0;dt&&(t=r):r1}hasStem(){return this.glyph.stem}hasFlag(){return super.hasFlag()&&!this.isRest()&&this.renderFlag}getStemX(){return this.noteType==="r"?this.getCenterGlyphX():super.getStemX()+getStemAdjustment(this)}getYForTopText(e){const t=this.getStemExtents();return Math.min(this.stave.getYForTopText(e),t.topY-this.render_options.annotation_spacing*(e+1))}getYForBottomText(e){const t=this.getStemExtents();return Math.max(this.stave.getYForTopText(e),t.baseY+this.render_options.annotation_spacing*e)}setStave(e){super.setStave(e);const t=this.note_heads.map(s=>(s.setStave(e),s.getY()));if(this.setYs(t),this.stem){const{y_top:s,y_bottom:r}=this.getNoteHeadBounds();this.stem.setYBounds(s,r)}return this}getKeys(){return this.keys}getKeyProps(){return this.keyProps}isDisplaced(){return this.displaced}setNoteDisplaced(e){return this.displaced=e,this}getTieRightX(){let e=this.getAbsoluteX();return e+=this.getGlyphWidth()+this.x_shift+this.extraRightPx,this.modifierContext&&(e+=this.modifierContext.getExtraRightPx()),e}getTieLeftX(){let e=this.getAbsoluteX();return e+=this.x_shift-this.extraLeftPx,e}getLineForRest(){let e=this.keyProps[0].line;if(this.keyProps.length>1){const t=this.keyProps[this.keyProps.length-1].line,s=Math.max(e,t),r=Math.min(e,t);e=Vex.MidLine(s,r)}return e}getModifierStartXY(e,t,s){if(s=s||{},!this.preFormatted)throw new Vex.RERR("UnformattedNote","Can't call GetModifierStartXY on an unformatted note");if(this.ys.length===0)throw new Vex.RERR("NoYValues","No Y-Values calculated for this note.");const{ABOVE:r,BELOW:o,LEFT:a,RIGHT:l}=Modifier.Position;let c=0;return e===a?c=-1*2:e===l?(c=this.getGlyphWidth()+this.x_shift+2,this.stem_direction===Stem.UP&&this.hasFlag()&&(s.forceFlagRight||isInnerNoteIndex(this,t))&&(c+=this.flag.getMetrics().width)):(e===o||e===r)&&(c=this.getGlyphWidth()/2),{x:this.getAbsoluteX()+c,y:this.ys[t]}}setStyle(e){super.setStyle(e),this.note_heads.forEach(t=>t.setStyle(e)),this.stem&&this.stem.setStyle(e)}setStemStyle(e){this.stem&&this.getStem().setStyle(e)}getStemStyle(){return this.stem.getStyle()}setLedgerLineStyle(e){this.ledgerLineStyle=e}getLedgerLineStyle(){return this.ledgerLineStyle}setFlagStyle(e){this.flagStyle=e}getFlagStyle(){return this.flagStyle}setKeyStyle(e,t){return this.note_heads[e].setStyle(t),this}setKeyLine(e,t){return this.keyProps[e].line=t,this.reset(),this}getKeyLine(e){return this.keyProps[e].line}addToModifierContext(e){this.setModifierContext(e);for(let t=0;t{const g=u.getLine(),b=u.getY();(e===null||bt)&&(t=b),r===null&&u.isDisplaced()&&(r=u.getAbsoluteX()),s===null&&!u.isDisplaced()&&(s=u.getAbsoluteX()),o=g>o?g:o,a=g{let _;w&&E?_=S-s:E?_=y-s:_=b-s;const C=E&&w?a:o;r.beginPath(),r.moveTo(_,A),r.lineTo(_+C,A),r.stroke()},x={...e.getStyle()||{},...this.getLedgerLineStyle()||{}};this.applyStyle(r,x);for(let A=6;A<=l;++A){const E=y!==null&&A<=m,w=b!==null&&A<=d;v(e.getYForNote(A),E,w)}for(let A=0;A>=c;--A){const E=y!==null&&A>=g,w=b!==null&&A>=u;v(e.getYForNote(A),E,w)}this.restoreStyle(r,x)}drawVibrato(){if(this.vibrato){const e=this.context,t=this.vibrato.getNoteHeadEndX()+2;let{y_bottom:s}=this.vibrato.getNoteHeadBounds(),{y_top:r}=this.getNoteHeadBounds();const o=s6.5||u<-.5)&&(m=m+(u>6.5?(u-6.5)*10:(u+.5)*10))}s.openGroup("flag",null,{pointerBBox:!0}),this.applyStyle(s,this.getFlagStyle()||!1),this.flag.render(s,d,m),this.restoreStyle(s,this.getFlagStyle()||!1),s.closeGroup()}}drawNoteHeads(){this.note_heads.forEach(e=>{this.context.openGroup("notehead",null,{pointerBBox:!0});try{if(this.isRest()&&this.duration==="w"){const t=this.stave.options.line_config.filter(r=>r.visible).length;this.keyProps[0].line===4&&t<5&&e.setY(e.getY()+10),t===1&&e.setLine(3)}}catch(t){}e.setContext(this.context).draw(),this.context.closeGroup()})}drawStem(e){if(!this.context)throw new Vex.RERR("NoCanvasContext","Can't draw without a canvas context.");e&&this.setStem(new Stem(e)),this.stem.id=Vex.Prefix(`${this.getAttribute("id")}-stem`),this.stem&&(this.context.openGroup("stem",null,{pointerBBox:!0}),this.stem.setContext(this.context).draw(),this.context.closeGroup())}draw(){if(!this.context)throw new Vex.RERR("NoCanvasContext","Can't draw without a canvas context.");if(!this.stave)throw new Vex.RERR("NoStave","Can't draw without a stave.");if(this.ys.length===0)throw new Vex.RERR("NoYValues","Can't draw note without Y values.");const e=this.stave.getLines();if(e===2||e===3||e===4)for(let r=0;rr.setX(t)),this.stem){let r=this.getStemX();const o=this.keyProps[0].line;(o>6.5||o<-.5)&&(this.beam||(this.stem.renderHeightAdjustment=o>6.5?(o-6.5)*10:Math.abs(o+.5)*10)),this.stem.setNoteHeadXBounds(r,r)}L$h("Rendering ",this.isChord()?"chord :":"note :",this.keys),this.drawLedgerLines(),this.applyStyle(),this.setAttribute("el",this.context.openGroup("stavenote",this.getAttribute("id"))),this.context.openGroup("note",null,{pointerBBox:!0}),s&&this.drawStem(),this.drawNoteHeads(),this.drawFlag(),this.context.closeGroup(),this.drawModifiers(),this.context.closeGroup(),this.restoreStyle(),this.setRendered()}}class FretHandFinger extends Modifier{static get CATEGORY(){return"frethandfinger"}static format(e,t){const{left_shift:s,right_shift:r}=t,o=1;if(!e||e.length===0)return!1;const a=[];let l=null,c=0,d=0;for(let v=0;vx.line-v.line);let m=0,u=0,g=0,b=0,y=null,S=null;for(let v=0;vg?x:g):E===Modifier.Position.RIGHT&&(w.setXShift(u),x=d+I,b=x>b?x:b),y=_,S=A}return t.left_shift+=g,t.right_shift+=b,!0}constructor(e){super(),this.setAttribute("type","FretHandFinger"),this.note=null,this.index=null,this.finger=e,this.width=7,this.position=Modifier.Position.LEFT,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.font={family:"sans-serif",size:9,weight:"bold"}}getCategory(){return FretHandFinger.CATEGORY}setFretHandFinger(e){return this.finger=e,this}setOffsetX(e){return this.x_offset=e,this}setOffsetY(e){return this.y_offset=e,this}draw(){if(this.checkContext(),!this.note||this.index==null)throw new Vex.RERR("NoAttachedNote","Can't draw string number without a note and index.");this.setRendered();const e=this.context,t=this.note.getModifierStartXY(this.position,this.index);let s=t.x+this.x_shift+this.x_offset,r=t.y+this.y_shift+this.y_offset+5;switch(this.position){case Modifier.Position.ABOVE:s-=4,r-=12;break;case Modifier.Position.BELOW:s-=2,r+=10;break;case Modifier.Position.LEFT:s-=this.width;break;case Modifier.Position.RIGHT:s+=1;break;default:throw new Vex.RERR("InvalidPostion",`The position ${this.position} does not exist`)}e.save(),e.setFont(this.font.family,this.font.size,this.font.weight),e.fillText(""+this.finger,s,r),e.restore()}}class Music{static get NUM_TONES(){return 12}static get roots(){return["c","d","e","f","g","a","b"]}static get root_values(){return[0,2,4,5,7,9,11]}static get root_indices(){return{c:0,d:1,e:2,f:3,g:4,a:5,b:6}}static get canonical_notes(){return["c","c#","d","d#","e","f","f#","g","g#","a","a#","b"]}static get diatonic_intervals(){return["unison","m2","M2","m3","M3","p4","dim5","p5","m6","M6","b7","M7","octave"]}static get diatonic_accidentals(){return{unison:{note:0,accidental:0},m2:{note:1,accidental:-1},M2:{note:1,accidental:0},m3:{note:2,accidental:-1},M3:{note:2,accidental:0},p4:{note:3,accidental:0},dim5:{note:4,accidental:-1},p5:{note:4,accidental:0},m6:{note:5,accidental:-1},M6:{note:5,accidental:0},b7:{note:6,accidental:-1},M7:{note:6,accidental:0},octave:{note:7,accidental:0}}}static get intervals(){return{u:0,unison:0,m2:1,b2:1,min2:1,S:1,H:1,2:2,M2:2,maj2:2,T:2,W:2,m3:3,b3:3,min3:3,M3:4,3:4,maj3:4,4:5,p4:5,"#4":6,b5:6,aug4:6,dim5:6,5:7,p5:7,"#5":8,b6:8,aug5:8,6:9,M6:9,maj6:9,b7:10,m7:10,min7:10,dom7:10,M7:11,maj7:11,8:12,octave:12}}static get scales(){return{major:[2,2,1,2,2,2,1],dorian:[2,1,2,2,2,1,2],mixolydian:[2,2,1,2,2,1,2],minor:[2,1,2,2,1,2,2]}}static get scaleTypes(){return{M:Music.scales.major,m:Music.scales.minor}}static get accidentals(){return["bb","b","n","#","##"]}static get noteValues(){return{c:{root_index:0,int_val:0},cn:{root_index:0,int_val:0},"c#":{root_index:0,int_val:1},"c##":{root_index:0,int_val:2},cb:{root_index:0,int_val:11},cbb:{root_index:0,int_val:10},d:{root_index:1,int_val:2},dn:{root_index:1,int_val:2},"d#":{root_index:1,int_val:3},"d##":{root_index:1,int_val:4},db:{root_index:1,int_val:1},dbb:{root_index:1,int_val:0},e:{root_index:2,int_val:4},en:{root_index:2,int_val:4},"e#":{root_index:2,int_val:5},"e##":{root_index:2,int_val:6},eb:{root_index:2,int_val:3},ebb:{root_index:2,int_val:2},f:{root_index:3,int_val:5},fn:{root_index:3,int_val:5},"f#":{root_index:3,int_val:6},"f##":{root_index:3,int_val:7},fb:{root_index:3,int_val:4},fbb:{root_index:3,int_val:3},g:{root_index:4,int_val:7},gn:{root_index:4,int_val:7},"g#":{root_index:4,int_val:8},"g##":{root_index:4,int_val:9},gb:{root_index:4,int_val:6},gbb:{root_index:4,int_val:5},a:{root_index:5,int_val:9},an:{root_index:5,int_val:9},"a#":{root_index:5,int_val:10},"a##":{root_index:5,int_val:11},ab:{root_index:5,int_val:8},abb:{root_index:5,int_val:7},b:{root_index:6,int_val:11},bn:{root_index:6,int_val:11},"b#":{root_index:6,int_val:0},"b##":{root_index:6,int_val:1},bb:{root_index:6,int_val:10},bbb:{root_index:6,int_val:9}}}isValidNoteValue(e){return!(e==null||e<0||e>=Music.NUM_TONES)}isValidIntervalValue(e){return this.isValidNoteValue(e)}getNoteParts(e){if(!e||e.length<1)throw new Vex.RERR("BadArguments","Invalid note name: "+e);if(e.length>3)throw new Vex.RERR("BadArguments","Invalid note name: "+e);const t=e.toLowerCase(),r=/^([cdefgab])(b|bb|n|#|##)?$/.exec(t);if(r!=null){const o=r[1],a=r[2];return{root:o,accidental:a}}else throw new Vex.RERR("BadArguments","Invalid note name: "+e)}getKeyParts(e){if(!e||e.length<1)throw new Vex.RERR("BadArguments","Invalid key: "+e);const t=e.toLowerCase(),r=/^([cdefgab])(b|#)?(mel|harm|m|M)?$/.exec(t);if(r!=null){const o=r[1],a=r[2];let l=r[3];return l||(l="M"),{root:o,accidental:a,type:l}}else throw new Vex.RERR("BadArguments",`Invalid key: ${e}`)}getNoteValue(e){const t=Music.noteValues[e];if(t==null)throw new Vex.RERR("BadArguments",`Invalid note name: ${e}`);return t.int_val}getIntervalValue(e){const t=Music.intervals[e];if(t==null)throw new Vex.RERR("BadArguments",`Invalid interval name: ${e}`);return t}getCanonicalNoteName(e){if(!this.isValidNoteValue(e))throw new Vex.RERR("BadArguments",`Invalid note value: ${e}`);return Music.canonical_notes[e]}getCanonicalIntervalName(e){if(!this.isValidIntervalValue(e))throw new Vex.RERR("BadArguments",`Invalid interval value: ${e}`);return Music.diatonic_intervals[e]}getRelativeNoteValue(e,t,s){if(s==null&&(s=1),s!==1&&s!==-1)throw new Vex.RERR("BadArguments",`Invalid direction: ${s}`);let r=(e+s*t)%Music.NUM_TONES;return r<0&&(r+=Music.NUM_TONES),r}getRelativeNoteName(e,t){const s=this.getNoteParts(e),r=this.getNoteValue(s.root);let o=t-r;if(Math.abs(o)>Music.NUM_TONES-3){let l=1;o>0&&(l=-1);const c=(t+1+(r+1))%Music.NUM_TONES*l;if(Math.abs(c)>2)throw new Vex.RERR("BadArguments",`Notes not related: ${e}, ${t})`);o=c}if(Math.abs(o)>2)throw new Vex.RERR("BadArguments",`Notes not related: ${e}, ${t})`);let a=s.root;if(o>0)for(let l=1;l<=o;++l)a+="#";else if(o<0)for(let l=-1;l>=o;--l)a+="b";return a}getScaleTones(e,t){const s=[e];let r=e;for(let o=0;oi.getMetrics().width;class Accidental extends Modifier{static get CATEGORY(){return"accidentals"}static format(e,t){const r=t.left_shift+1,o=3;if(!e||e.length===0)return;const a=[];let l=null,c=0,d;for(let A=0;AE.line-A.line);const m=[];let u=0,g=null;for(let A=0;Au?E.shift:u,g=E.line}let b=0;for(let A=0;Am[w+T],P=T=>T.map(C),I=(T,V)=>{const[J,W]=P([T,V]).map(se=>se.line);return J-W},R=(...T)=>T.map(P).every(V=>!this.checkCollision(...V)),N=_-w+1;let G=this.checkCollision(m[w],m[_])?"a":"b";switch(N){case 3:G==="a"&&I(1,2)===.5&&I(0,1)!==.5&&(G="second_on_bottom");break;case 4:R([0,2],[1,3])&&(G="spaced_out_tetrachord");break;case 5:G==="b"&&R([1,3])&&(G="spaced_out_pentachord",R([0,2],[2,4])&&(G="very_spaced_out_pentachord"));break;case 6:R([0,3],[1,4],[2,5])&&(G="spaced_out_hexachord"),R([0,2],[2,4],[1,3],[3,5])&&(G="very_spaced_out_hexachord");break}let B,k;if(N>=7){let T=2,V=!0;for(;V===!0;){V=!1;for(let J=0;J+Tk?b:k}else for(B=A;B<=_;B++)k=Flow.accidentalColumnsTable[N][G][B-A],m[B].column=k,b=b>k?b:k;A=_}const y=[],S=[];for(let A=0;A<=b;A++)y[A]=0,S[A]=0;y[0]=u+r,S[0]=u+r,m.forEach(A=>{A.width>y[A.column]&&(y[A.column]=A.width)});for(let A=1;A{let E=0;const w=x+A.numAcc;for(x;x0?(r=t.flatLine||t.dblSharpLine?2.5:3,e.dblSharpLine&&(s-=.5)):(r=e.flatLine||e.dblSharpLine?2.5:3,t.dblSharpLine&&(s-=.5));const o=Math.abs(s){const c=new Fraction(0,1);l.getTickables().forEach(m=>{if(m.shouldIgnoreTicks())return;const u=r[c.value()];u?u.push(m):(s.push(c.value()),r[c.value()]=[m]),c.add(m.getTicks())})});const o=new Music;t||(t="C");const a=o.createScaleMap(t);s.forEach(l=>{const c=r[l],d=[],m=u=>{u.isRest()||u.shouldIgnoreTicks()||(u.keys.forEach((g,b)=>{const y=o.getNoteParts(g.split("/")[0]),S=y.accidental||"n",v=y.root+S,x=a[y.root]===v,A=d.indexOf(v)>-1;if(!x||x&&A){a[y.root]=v;const E=new Accidental(S);u.addAccidental(b,E),d.push(v)}}),u.getModifiers().forEach(g=>{g.getCategory()==="gracenotegroups"&&g.getGraceNotes().forEach(m)}))};c.forEach(m)})}constructor(e=null){if(super(),this.setAttribute("type","Accidental"),L$g("New accidental: ",e),this.note=null,this.index=null,this.type=e,this.position=Modifier.Position.LEFT,this.render_options={font_scale:38,stroke_px:3,parenLeftPadding:2,parenRightPadding:2},this.accidental=Flow.accidentalCodes(this.type),!this.accidental)throw new Vex.RERR("ArgumentError",`Unknown accidental type: ${e}`);this.cautionary=!1,this.parenLeft=null,this.parenRight=null,this.reset()}reset(){const e=this.render_options.font_scale;this.glyph=new Glyph(this.accidental.code,e),this.glyph.setOriginX(1),this.cautionary&&(this.parenLeft=new Glyph(Flow.accidentalCodes("{").code,e),this.parenRight=new Glyph(Flow.accidentalCodes("}").code,e),this.parenLeft.setOriginX(1),this.parenRight.setOriginX(1))}getCategory(){return Accidental.CATEGORY}getWidth(){const e=this.cautionary?getGlyphWidth(this.parenLeft)+getGlyphWidth(this.parenRight)+this.render_options.parenLeftPadding+this.render_options.parenRightPadding:0;return getGlyphWidth(this.glyph)+e}setNote(e){if(!e)throw new Vex.RERR("ArgumentError",`Bad note value: ${e}`);this.note=e,this.note.getCategory()==="gracenotes"&&(this.render_options.font_scale=25,this.reset())}setAsCautionary(){return this.cautionary=!0,this.render_options.font_scale=28,this.reset(),this}draw(){const{context:e,type:t,position:s,note:r,index:o,cautionary:a,x_shift:l,y_shift:c,glyph:d,parenLeft:m,parenRight:u,render_options:{parenLeftPadding:g,parenRightPadding:b}}=this;if(this.checkContext(),!(r&&o!=null))throw new Vex.RERR("NoAttachedNote","Can't draw accidental without a note and index.");const y=r.getModifierStartXY(s,o);let S=y.x+l;const v=y.y+c;L$g("Rendering: ",t,S,v),a?(u.render(e,S,v),S-=getGlyphWidth(u),S-=b,S-=this.accidental.parenRightPaddingAdjustment,d.render(e,S,v),S-=getGlyphWidth(d),S-=g,m.render(e,S,v)):d.render(e,S,v),this.setRendered()}}let NoteSubGroup$1=class ci extends Modifier{static get CATEGORY(){return"notesubgroup"}static format(e,t){if(!e||e.length===0)return!1;let s=0;for(let r=0;r{t.ignore_ticks=!1}),this.width=0,this.preFormatted=!1,this.formatter=new Formatter,this.voice=new Voice$1({num_beats:4,beat_value:4,resolution:Flow.RESOLUTION}).setStrict(!1),this.voice.addTickables(this.subNotes),this}getCategory(){return ci.CATEGORY}preFormat(){this.preFormatted||(this.formatter.joinVoices([this.voice]).format([this.voice],0),this.setWidth(this.formatter.getMinTotalWidth()),this.preFormatted=!0)}setNote(e){this.note=e}setWidth(e){this.width=e}getWidth(){return this.width}draw(){this.checkContext();const e=this.getNote();if(!(e&&this.index!==null))throw new Vex.RuntimeError("NoAttachedNote","Can't draw notes without a parent note and parent note index.");this.setRendered(),this.alignSubNotesWithNote(this.subNotes,e),this.subNotes.forEach(t=>t.setContext(this.context).drawWithStyle())}};class StaveTie extends Element$1{constructor(e,t){super(),this.setAttribute("type","StaveTie"),this.notes=e,this.context=null,this.text=t,this.direction=null,this.render_options={cp1:8,cp2:12,text_shift_x:0,first_x_shift:0,last_x_shift:0,y_shift:7,tie_spacing:0,font:{family:"Arial",size:15,style:""}},this.font=this.render_options.font,this.setNotes(e)}setFont(e){return this.font=e,this}setDirection(e){return this.direction=e,this}setNotes(e){if(!e.first_note&&!e.last_note)throw new Vex.RuntimeError("BadArguments","Tie needs to have either first_note or last_note set.");if(e.first_indices||(e.first_indices=[0]),e.last_indices||(e.last_indices=[0]),e.first_indices.length!==e.last_indices.length)throw new Vex.RuntimeError("BadArguments","Tied notes must have similar index sizes");return this.first_note=e.first_note,this.first_indices=e.first_indices,this.last_note=e.last_note,this.last_indices=e.last_indices,this}isPartial(){return!this.first_note||!this.last_note}renderTie(e){if(e.first_ys.length===0||e.last_ys.length===0)throw new Vex.RERR("BadArguments","No Y-values to render");const t=this.context;let s=this.render_options.cp1,r=this.render_options.cp2;Math.abs(e.last_x_px-e.first_x_px)<10&&(s=2,r=8);const o=this.render_options.first_x_shift,a=this.render_options.last_x_shift,l=this.render_options.y_shift*e.direction;for(let c=0;cg&&Math.abs(m-g)<10?-6:0;if(this.first_note&&this.first_note.DYMusicScoreType==="jianpu"){if(this.getAttribute("type")==="TabTie")continue;m1){const t=new Beam$1(e);t.render_options.beam_width=3,t.render_options.partial_beam_length=4,this.beams.push(t)}return this}setNote(e){this.note=e}setWidth(e){this.width=e}getWidth(){return this.width}getGraceNotes(){return this.grace_notes}draw(){this.checkContext();const e=this.getNote();if(L$f("Drawing grace note group for:",e),!(e&&this.index!==null))throw new Vex.RuntimeError("NoAttachedNote","Can't draw grace note without a parent note and parent note index.");if(this.setRendered(),this.alignSubNotesWithNote(this.getGraceNotes(),e),this.grace_notes.forEach(t=>{t.setContext(this.context).draw()}),this.beams.forEach(t=>{t.setContext(this.context).draw()}),this.show_slur){const t=this.getNote().getCategory()===StaveNote.CATEGORY,s=t?StaveTie:TabTie;this.slur=new s({last_note:this.grace_notes[0],first_note:e,first_indices:[0],last_indices:[0]}),this.slur.render_options.cp2=12,this.slur.render_options.y_shift=(t?7:5)+this.render_options.slur_y_shift,this.slur.setContext(this.context).draw()}}}class Stroke extends Modifier{static get CATEGORY(){return"strokes"}static get Type(){return{BRUSH_DOWN:1,BRUSH_UP:2,ROLL_DOWN:3,ROLL_UP:4,RASQUEDO_DOWN:5,RASQUEDO_UP:6,ARPEGGIO_DIRECTIONLESS:7}}static format(e,t){const s=t.left_shift,r=0;if(!e||e.length===0)return this;const o=e.map(c=>{const d=c.getNote();if(d instanceof StaveNote){const{line:m,displaced:u}=d.getKeyProps()[c.getIndex()],g=u?d.getExtraLeftPx():0;return{line:m,shift:g,stroke:c}}else{const{str:m}=d.getPositions()[c.getIndex()];return{line:m,shift:0,stroke:c}}}),a=s,l=o.reduce((c,{stroke:d,shift:m})=>(d.setXShift(a+m),Math.max(d.getWidth()+r,c)),0);return t.left_shift+=l,!0}constructor(e,t){super(),this.setAttribute("type","Stroke"),this.note=null,this.options=Vex.Merge({},t),this.all_voices="all_voices"in this.options?this.options.all_voices:!0,this.note_end=null,this.index=null,this.type=e,this.position=Modifier.Position.LEFT,this.render_options={font_scale:38,stroke_px:3,stroke_spacing:10},this.font={family:"serif",size:10,weight:"bold italic"},this.setXShift(0),this.setWidth(10)}getCategory(){return Stroke.CATEGORY}getPosition(){return this.position}addEndNote(e){return this.note_end=e,this}draw(){if(this.checkContext(),this.setRendered(),!(this.note&&this.index!=null))throw new Vex.RERR("NoAttachedNote","Can't draw stroke without a note and index.");const e=this.note.getModifierStartXY(this.position,this.index);let t=this.note.getYs(),s=e.y,r=e.y;const o=e.x-5,a=this.note.stave.options.spacing_between_lines_px,l=this.getModifierContext().getModifiers(this.note.getCategory());for(let b=0;b_.line-w.line);let S=0,v=0,x=0,A=null,E=null;for(m=0;mv?w:v):b===Modifier.Position.RIGHT&&(u.setXShift(S),w+=P,x=w>x?w:x),A=_,E=g}return t.left_shift+=v,t.right_shift+=x,!0}constructor(e){super(),this.setAttribute("type","StringNumber"),this.note=null,this.last_note=null,this.index=null,this.string_number=e,this.setWidth(20),this.position=Modifier.Position.ABOVE,this.x_shift=0,this.y_shift=0,this.x_offset=0,this.y_offset=0,this.dashed=!0,this.leg=Renderer.LineEndType.NONE,this.radius=8,this.font={family:"sans-serif",size:10,weight:"bold"}}getCategory(){return StringNumber.CATEGORY}getNote(){return this.note}setNote(e){return this.note=e,this}getIndex(){return this.index}setIndex(e){return this.index=e,this}setLineEndType(e){return e>=Renderer.LineEndType.NONE&&e<=Renderer.LineEndType.DOWN&&(this.leg=e),this}setStringNumber(e){return this.string_number=e,this}setOffsetX(e){return this.x_offset=e,this}setOffsetY(e){return this.y_offset=e,this}setLastNote(e){return this.last_note=e,this}setDashed(e){return this.dashed=e,this}draw(){const e=this.checkContext();if(!(this.note&&this.index!=null))throw new Vex.RERR("NoAttachedNote","Can't draw string number without a note and index.");this.setRendered();const t=this.note.stave.options.spacing_between_lines_px,s=this.note.getModifierStartXY(this.position,this.index);let r=s.x+this.x_shift+this.x_offset,o=s.y+this.y_shift+this.y_offset;switch(this.position){case Modifier.Position.ABOVE:case Modifier.Position.BELOW:{const l=this.note.getStemExtents();let c=l.topY,d=l.baseY+2;this.note.stem_direction===StaveNote.STEM_DOWN&&(c=l.baseY,d=l.topY-2),this.position===Modifier.Position.ABOVE?o=this.note.hasStem()?c-t*1.75:s.y-t*1.75:o=this.note.hasStem()?d+t*1.5:s.y+t*1.75,o+=this.y_shift+this.y_offset;break}case Modifier.Position.LEFT:r-=this.radius/2+5;break;case Modifier.Position.RIGHT:r+=this.radius/2+6;break;default:throw new Vex.RERR("InvalidPosition",`The position ${this.position} is invalid`)}e.save(),e.beginPath(),e.arc(r,o,this.radius,0,Math.PI*2,!1),e.lineWidth=1.5,e.stroke(),e.setFont(this.font.family,this.font.size,this.font.weight);const a=r-e.measureText(this.string_number).width/2;if(e.fillText(""+this.string_number,a,o+4.5),this.last_note!=null){const l=this.last_note.getStemX()-this.note.getX()+5;e.strokeStyle="#000000",e.lineCap="round",e.lineWidth=.6,this.dashed?Renderer.drawDashedLine(e,r+10,o,r+l,o,[3,3]):Renderer.drawDashedLine(e,r+10,o,r+l,o,[3,0]);let c,d;switch(this.leg){case Renderer.LineEndType.UP:c=-10,d=this.dashed?[3,3]:[3,0],Renderer.drawDashedLine(e,r+l,o,r+l,o+c,d);break;case Renderer.LineEndType.DOWN:c=10,d=this.dashed?[3,3]:[3,0],Renderer.drawDashedLine(e,r+l,o,r+l,o+c,d);break}}e.restore()}}function L$e(...i){Articulation$1.DEBUG&&Vex.L("Vex.Flow.Articulation",i)}const{ABOVE,BELOW}=Modifier.Position,roundToNearestHalf=(i,e)=>i(e/.5)*.5,isWithinLines=(i,e)=>e===ABOVE?i<=5:i>=1,getRoundingFunction=(i,e)=>isWithinLines(i,e)?e===ABOVE?Math.ceil:Math.floor:Math.round,snapLineToStaff=(i,e,t,s)=>{const r=roundToNearestHalf(getRoundingFunction(e,t),e),o=i&&isWithinLines(r,t),a=r%1===0;return o&&a?r+.5*-s:r},isStaveNote=i=>{const e=i.getCategory();return e==="stavenotes"||e==="gracenotes"},isTabNote=i=>{const e=i.getCategory();return e==="tabnotes"||e==="numberednotes"},getTopY=(i,e)=>{const t=i.getStave(),s=i.getStemDirection(),{topY:r,baseY:o}=i.getStemExtents();if(isStaveNote(i))return i.hasStem()?s===Stem.UP?r:o:Math.min(...i.getYs());if(isTabNote(i))return i.hasStem()&&s===Stem.UP?r:t.getYForTopText(e);throw new Vex.RERR("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")},getBottomY=(i,e)=>{const t=i.getStave(),s=i.getStemDirection(),{topY:r,baseY:o}=i.getStemExtents();if(isStaveNote(i))return i.hasStem()?s===Stem.UP?o:r:Math.max(...i.getYs());if(isTabNote(i))return i.hasStem()?s===Stem.UP?t.getYForBottomText(e):r:t.getYForBottomText(e);throw new Vex.RERR("UnknownCategory","Only can get the top and bottom ys of stavenotes and tabnotes")},getInitialOffset=(i,e)=>{const t=e===ABOVE&&i.getStemDirection()===Stem.UP||e===BELOW&&i.getStemDirection()===Stem.DOWN;return isStaveNote(i)?i.hasStem()&&t?.5:1:i.hasStem()&&t?1:0};let Articulation$1=class Ft extends Modifier{static get CATEGORY(){return"articulations"}static get INITIAL_OFFSET(){return-.5}static format(e,t){if(!e||e.length===0)return!1;const s=c=>c.getPosition()===ABOVE,r=c=>c.getPosition()===BELOW,o=.5,a=(c,d,m)=>roundToNearestHalf(getRoundingFunction(d,m),c.glyph.getMetrics().height/10+o);e.filter(s).forEach(c=>{c.setTextLine(t.top_text_line),t.top_text_line+=a(c,t.top_text_line,ABOVE)}),e.filter(r).forEach(c=>{c.setTextLine(t.text_line),t.text_line+=a(c,t.text_line,BELOW)});const l=e.map(c=>c.getWidth()).reduce((c,d)=>Math.max(d,c));return t.left_shift+=l/2,t.right_shift+=l/2,!0}static easyScoreHook({articulations:e},t,s){if(!e)return;const r={staccato:"a.",tenuto:"a-"};e.split(",").map(o=>o.trim().split(".")).map(([o,a])=>{const l={type:r[o]};return a&&(l.position=Modifier.PositionString[a]),s.getFactory().Articulation(l)}).map(o=>t.addModifier(0,o))}constructor(e){if(super(),this.setAttribute("type","Articulation"),this.note=null,this.index=null,this.type=e,this.position=BELOW,this.render_options={font_scale:38},this.articulation=Flow.articulationCodes(this.type),!this.articulation)throw new Vex.RERR("ArgumentError",`Articulation not found: ${this.type}`);this.glyph=new Glyph(this.articulation.code,this.render_options.font_scale),this.setWidth(this.glyph.getMetrics().width)}getCategory(){return Ft.CATEGORY}draw(){const{note:e,index:t,position:s,glyph:r,articulation:{between_lines:o},text_line:a,context:l}=this;if(this.checkContext(),!e||t==null)throw new Vex.RERR("NoAttachedNote","Can't draw Articulation without a note and index.");this.setRendered();const c=e.getStave(),d=c.getSpacingBetweenLines(),m=e.getCategory()==="tabnotes",{x:u}=e.getModifierStartXY(s,t),g=!o||m,b=getInitialOffset(e,s);let y={[ABOVE]:()=>{r.setOrigin(.5,1);const S=getTopY(e,a)-(a+b)*d+(this.y_shift||0);return g?Math.min(c.getYForTopText(Ft.INITIAL_OFFSET),S):S},[BELOW]:()=>{r.setOrigin(.5,0);const S=getBottomY(e,a)+(a+b)*d;return g?Math.max(c.getYForBottomText(Ft.INITIAL_OFFSET),S):S}}[s]();if(!m){const S=s===ABOVE?-1:1,v=m?e.positions[t].str:e.getKeyProps()[t].line,A=(e.getYs()[t]-y)/d+v,E=snapLineToStaff(o,A,s,S);isWithinLines(E,s)&&r.setOrigin(.5,.5),y+=Math.abs(E-A)*d*S}L$e(`Rendering articulation at (x: ${u}, y: ${y})`),r.render(l,u,y)}};class TickContext extends Tickable{static getNextContext(e){const t=e.tContexts,s=t.indexOf(e);return t[s+1]}constructor(){super(),this.setAttribute("type","TickContext"),this.currentTick=new Fraction(0,1),this.maxTicks=new Fraction(0,1),this.minTicks=null,this.padding=3,this.x=0,this.xBase=0,this.xOffset=0,this.tickables=[],this.notePx=0,this.extraLeftPx=0,this.extraRightPx=0,this.tContexts=[]}getX(){return this.x}setX(e){return this.x=e,this.xBase=e,this.xOffset=0,this}getXBase(){return this.xBase}setXBase(e){this.xBase=e,this.x=e+this.xOffset}getXOffset(){return this.xOffset}setXOffset(e){this.xOffset=e,this.x=this.xBase+e}getWidth(){return this.width+this.padding*2}setPadding(e){return this.padding=e,this}getMaxTicks(){return this.maxTicks}getMinTicks(){return this.minTicks}getTickables(){return this.tickables}getCenterAlignedTickables(){return this.tickables.filter(e=>e.isCenterAligned())}getMetrics(){const{width:e,notePx:t,extraLeftPx:s,extraRightPx:r}=this;return{width:e,notePx:t,extraLeftPx:s,extraRightPx:r}}getCurrentTick(){return this.currentTick}setCurrentTick(e){this.currentTick=e,this.preFormatted=!1}getExtraPx(){let e=0,t=0,s=0,r=0;for(let o=0;o0&&r--;for(let c=0;c{L$b("Preformatting ModifierContext: ",e.CATEGORY),e.format(this.getModifiers(e.CATEGORY),this.state,this)}),this.width=this.state.left_shift+this.state.right_shift,this.preFormatted=!0)}postFormat(){this.postFormatted||this.POSTFORMAT.forEach(e=>{L$b("Postformatting ModifierContext: ",e.CATEGORY),e.postFormat(this.getModifiers(e.CATEGORY),this)})}}function L$a(...i){Formatter.DEBUG&&Vex.L("Vex.Flow.Formatter",i)}function getNext(i,e){var s,r;const t=i[e+1];return t&&((s=t==null?void 0:t.keys)!=null&&s.includes("b/4"))||(r=t==null?void 0:t.keys)!=null&&r.includes("r/4")?getNext(i,e+1):t}function createContexts(i,e,t){if(!i||!i.length)throw new Vex.RERR("BadArgument","No voices to format");const s=i[0].getTotalTicks(),r=i.reduce((c,d)=>{if(!d.getTotalTicks().equals(s))throw new Vex.RERR("TickMismatch","Voices should have same total note duration in ticks.");if(d.getMode()===Voice$1.Mode.STRICT&&!d.isComplete())throw new Vex.RERR("IncompleteVoice","Voice does not have enough notes.");return Math.max(c,Fraction.LCM(c,d.getResolutionMultiplier()))},1),o={},a=[],l=[];return i.forEach(c=>{const d=new Fraction(0,r);c.getTickables().forEach(m=>{const u=d.numerator;if(!o[u]){const g=new e;l.push(g),o[u]=g}t(m,o[u]),a.push(u),d.add(m.getTicks())})}),{map:o,array:l,list:Vex.SortAndUnique(a,(c,d)=>c-d,(c,d)=>c===d),resolutionMultiplier:r}}class Formatter{static SimpleFormat(e,t=0,{paddingBetween:s=10}={}){e.reduce((r,o)=>{o.addToModifierContext(new ModifierContext);const a=new TickContext().addTickable(o).preFormat(),l=a.getExtraPx();return a.setX(r+l.left),r+a.getWidth()+l.right+s},t)}static plotDebugging(e,t,s,r,o){const a=s+Note.STAVEPADDING,l=t.contextGaps;function c(d,m,u){e.beginPath(),e.setStrokeStyle(u),e.setFillStyle(u),e.setLineWidth(1),e.fillRect(d,r,m-d,o-r)}e.save(),e.setFont("Arial",8,""),l.gaps.forEach(d=>{c(a+d.x1,a+d.x2,"#aaa"),e.fillText(Math.round(d.x2-d.x1),a+d.x1,o+12)}),e.fillText(Math.round(l.total)+"px",a-20,o+12),e.setFillStyle("red"),e.fillText("Loss: "+t.lossHistory.map(d=>Math.round(d)),a-20,o+22),e.restore()}static FormatAndDraw(e,t,s,r){const o={auto_beam:!1,align_rests:!1};typeof r=="object"?Vex.Merge(o,r):typeof r=="boolean"&&(o.auto_beam=r);const a=new Voice$1(Flow.TIME4_4).setMode(Voice$1.Mode.SOFT).addTickables(s),l=o.auto_beam?Beam$1.applyAndGetBeams(a):[];return new Formatter().joinVoices([a],{align_rests:o.align_rests}).formatToStave([a],t,{align_rests:o.align_rests,stave:t}),a.setStave(t).draw(e,t),l.forEach(c=>c.setContext(e).draw()),a.getBoundingBox()}static FormatAndDrawTab(e,t,s,r,o,a,l){const c={auto_beam:a,align_rests:!1};typeof l=="object"?Vex.Merge(c,l):typeof l=="boolean"&&(c.auto_beam=l);const d=new Voice$1(Flow.TIME4_4).setMode(Voice$1.Mode.SOFT).addTickables(o),m=new Voice$1(Flow.TIME4_4).setMode(Voice$1.Mode.SOFT).addTickables(r),u=c.auto_beam?Beam$1.applyAndGetBeams(d):[];new Formatter().joinVoices([d],{align_rests:c.align_rests}).joinVoices([m]).formatToStave([d,m],s,{align_rests:c.align_rests}),d.draw(e,s),m.draw(e,t),u.forEach(g=>g.setContext(e).draw()),new StaveConnector(s,t).setContext(e).draw()}static AlignRestsToNotes(e,t,s){return e.forEach((r,o)=>{if(r instanceof StaveNote&&r.isRest()){if(r.tuplet&&!s)return;if(["va5","v3c"].includes(r.glyph.code_head)){const a=r.glyph.code_head==="va5"?10:14,l=e[o-1],c=getNext(e,o);let d=!1;if(l&&c&&l.beam&&c.beam&&(d=l.beam.notes.includes(c)),d){r.setKeyLine(0,3);let m=[...l.beam.notes,...c.beam.notes];r.beam&&r.beam.notes&&m.push(...r.beam.notes),m=Array.from(new Set(m));for(let u=0;u0){const y=g<1.5?Math.abs(g-1.5)*a:0;b.setResetHeight(y)}else{const y=g>4.5?Math.abs(g-4.5)*a:0;b.setResetHeight(y)}}}}}}),this}constructor(){this.minTotalWidth=0,this.hasMinTotalWidth=!1,this.totalTicks=new Fraction(0,1),this.tickContexts=null,this.modiferContexts=null,this.contextGaps={total:0,gaps:[]},this.voices=[]}alignRests(e,t){if(!e||!e.length)throw new Vex.RERR("BadArgument","No voices to format rests");e.forEach(s=>Formatter.AlignRestsToNotes(s.getTickables(),t))}preCalculateMinTotalWidth(e){if(this.hasMinTotalWidth)return this.minTotalWidth;if(!this.tickContexts){if(!e)throw new Vex.RERR("BadArgument","'voices' required to run preCalculateMinTotalWidth");this.createTickContexts(e)}const{list:t,map:s}=this.tickContexts;return this.minTotalWidth=t.map(r=>{const o=s[r];return o.preFormat(),o.getWidth()}).reduce((r,o)=>r+o,0),this.hasMinTotalWidth=!0,this.minTotalWidth}getMinTotalWidth(){if(!this.hasMinTotalWidth)throw new Vex.RERR("NoMinTotalWidth","Call 'preCalculateMinTotalWidth' or 'preFormat' before calling 'getMinTotalWidth'");return this.minTotalWidth}createModifierContexts(e){const t=createContexts(e,ModifierContext,(s,r)=>s.addToModifierContext(r));return this.modiferContexts=t,t}createTickContexts(e){const t=createContexts(e,TickContext,(s,r)=>r.addTickable(s));return t.array.forEach(s=>{s.tContexts=t.array}),this.totalTicks=e[0].getTicksUsed().clone(),this.tickContexts=t,t}preFormat(e=0,t,s,r){const o=this.tickContexts,{list:a,map:l,resolutionMultiplier:c}=o;s&&r&&s.forEach(S=>S.setStave(r).preFormat());let d=0,m=0;const u=e/2;if(this.minTotalWidth=0,a.forEach(S=>{const v=l[S];t&&v.setContext(t),v.preFormat();const x=v.getWidth();this.minTotalWidth+=x;const A=v.getMetrics();d=d+m+A.extraLeftPx,v.setX(d),m=x-A.extraLeftPx}),this.minTotalWidth=d+m,this.hasMinTotalWidth=!0,e<=0)return;const b=(e-this.minTotalWidth)/(this.totalTicks.value()*c);let y=0;a.forEach((S,v)=>{const x=a[v-1]||0,A=l[S],E=(S-x)*b;y+=E,A.setX(A.getX()+y),A.getCenterAlignedTickables().forEach(w=>{w.center_x_shift=u-A.getX()})}),a.length!==1&&(this.justifyWidth=e,this.lossHistory=[],this.evaluate())}evaluate(){const e=this.justifyWidth;this.contextGaps={total:0,gaps:[]},this.tickContexts.list.forEach((o,a)=>{if(a===0)return;const l=this.tickContexts.list[a-1],c=this.tickContexts.map[l],d=this.tickContexts.map[o],m=c.getMetrics(),u=c.getX()+m.width,g=d.getX(),b=g-u;this.contextGaps.total+=b,this.contextGaps.gaps.push({x1:u,x2:g}),d.getFormatterMetrics().freedom.left=b,c.getFormatterMetrics().freedom.right=b});const t=this.durationStats={};function s(o,a){const l=t[o];l===void 0?t[o]={mean:a,count:1}:(l.count+=1,l.mean=(l.mean+a)/2)}this.voices.forEach(o=>{o.getTickables().forEach((a,l,c)=>{const d=a.getTicks().clone().simplify().toString(),m=a.getMetrics(),u=a.getFormatterMetrics(),g=a.getX()+m.noteWidth+m.modRightPx+m.extraRightPx;let b=0;if(l{o.getTickables().forEach(a=>{const l=a.getTicks().clone().simplify().toString(),c=a.getFormatterMetrics();c.iterations+=1,c.space.deviation=c.space.used-t[l].mean,c.duration=l,c.space.mean=t[l].mean,r+=Math.pow(t[l].mean,2)})}),this.totalCost=Math.sqrt(r),this.lossHistory.push(this.totalCost),this}tune(){const e=r=>r.reduce((o,a)=>o+a);function t(r,o,a,l){r.setX(r.getX()+l),r.getFormatterMetrics().freedom.left+=l,r.getFormatterMetrics().freedom.right-=l,o&&(o.getFormatterMetrics().freedom.right+=l),a&&(a.getFormatterMetrics().freedom.left-=l)}let s=0;return this.tickContexts.list.forEach((r,o,a)=>{const l=this.tickContexts.map[r],c=o>0?this.tickContexts.map[a[o-1]]:null,d=og.getFormatterMetrics().space.deviation));m>0?s=-Math.min(l.getFormatterMetrics().freedom.right,Math.abs(m)):m<0&&(d?s=Math.min(d.getFormatterMetrics().freedom.right,Math.abs(m)):s=0);const u=Math.min(5,Math.abs(s));s=s>0?u:-u}),this.evaluate()}postFormat(){const e=t=>t.list.forEach(s=>t.map[s].postFormat());return e(this.modiferContexts),e(this.tickContexts),this}joinVoices(e){return this.createModifierContexts(e),this.hasMinTotalWidth=!1,this}format(e,t,s){const r={align_rests:!1,context:null,stave:null};return Vex.Merge(r,s),this.voices=e,this.alignRests(e,r.align_rests),this.createTickContexts(e),this.preFormat(t,r.context,e,r.stave),this}formatToStave(e,t,s){const r=t.getNoteEndX()-t.getNoteStartX()-10;L$a("Formatting voices to width: ",r);const o={context:t.getContext()};return Vex.Merge(o,s),this.format(e,r,o)}}class StaveModifier extends Element$1{static get Position(){return{LEFT:1,RIGHT:2,ABOVE:3,BELOW:4,BEGIN:5,END:6}}constructor(){super(),this.setAttribute("type","StaveModifier"),this.padding=10,this.position=StaveModifier.Position.ABOVE,this.layoutMetrics=null}getPosition(){return this.position}setPosition(e){return this.position=e,this}getStave(){return this.stave}setStave(e){return this.stave=e,this}getWidth(){return this.width}setWidth(e){return this.width=e,this}getX(){return this.x}setX(e){return this.x=e,this}getCategory(){return""}makeSpacer(e){return{getContext(){return!0},setStave(){},renderToStave(){},getMetrics(){return{width:e}}}}placeGlyphOnLine(e,t,s){e.setYShift(t.getYForLine(s)-t.getYForGlyphs())}getPadding(e){return e!==void 0&&e<2?0:this.padding}setPadding(e){return this.padding=e,this}setLayoutMetrics(e){return this.layoutMetrics=e,this}getLayoutMetrics(){return this.layoutMetrics}}class Barline extends StaveModifier{static get CATEGORY(){return"barlines"}static get type(){return{SINGLE:1,DOUBLE:2,END:3,REPEAT_BEGIN:4,REPEAT_END:5,REPEAT_BOTH:6,NONE:7}}static get typeString(){return{single:Barline.type.SINGLE,double:Barline.type.DOUBLE,end:Barline.type.END,repeatBegin:Barline.type.REPEAT_BEGIN,repeatEnd:Barline.type.REPEAT_END,repeatBoth:Barline.type.REPEAT_BOTH,none:Barline.type.NONE}}constructor(e){super(),this.setAttribute("type","Barline"),this.thickness=Flow.STAVE_LINE_THICKNESS;const t=Barline.type;this.widths={},this.widths[t.SINGLE]=5,this.widths[t.DOUBLE]=5,this.widths[t.END]=5,this.widths[t.REPEAT_BEGIN]=5,this.widths[t.REPEAT_END]=5,this.widths[t.REPEAT_BOTH]=5,this.widths[t.NONE]=5,this.paddings={},this.paddings[t.SINGLE]=0,this.paddings[t.DOUBLE]=0,this.paddings[t.END]=0,this.paddings[t.REPEAT_BEGIN]=15,this.paddings[t.REPEAT_END]=15,this.paddings[t.REPEAT_BOTH]=15,this.paddings[t.NONE]=0,this.layoutMetricsMap={},this.layoutMetricsMap[t.SINGLE]={xMin:0,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[t.DOUBLE]={xMin:-3,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[t.END]={xMin:-5,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[t.REPEAT_END]={xMin:-10,xMax:1,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[t.REPEAT_BEGIN]={xMin:-2,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[t.REPEAT_BOTH]={xMin:-10,xMax:10,paddingLeft:5,paddingRight:5},this.layoutMetricsMap[t.NONE]={xMin:0,xMax:0,paddingLeft:5,paddingRight:5},this.setPosition(StaveModifier.Position.BEGIN),this.setType(e)}getCategory(){return Barline.CATEGORY}getType(){return this.type}setType(e){return this.type=typeof e=="string"?Barline.typeString[e]:e,this.setWidth(this.widths[this.type]),this.setPadding(this.paddings[this.type]),this.setLayoutMetrics(this.layoutMetricsMap[this.type]),this}draw(e){switch(e.checkContext(),this.setRendered(),this.type){case Barline.type.SINGLE:this.drawVerticalBar(e,this.x,!1);break;case Barline.type.DOUBLE:this.drawVerticalBar(e,this.x,!0);break;case Barline.type.END:this.drawVerticalEndBar(e,this.x);break;case Barline.type.REPEAT_BEGIN:this.drawRepeatBar(e,this.x,!0),e.getX()!==this.x&&this.drawVerticalBar(e,e.getX());break;case Barline.type.REPEAT_END:this.drawRepeatBar(e,this.x,!1);break;case Barline.type.REPEAT_BOTH:this.drawRepeatBar(e,this.x,!1),this.drawRepeatBar(e,this.x,!0);break}}drawVerticalBar(e,t,s){e.checkContext();const r=e.getTopLineTopY(),o=e.getBottomLineBottomY();s&&e.context.fillRect(t-3,r,1,o-r),e.context.fillRect(t,r,1,o-r)}drawVerticalEndBar(e,t){e.checkContext();const s=e.getTopLineTopY(),r=e.getBottomLineBottomY();e.context.fillRect(t-5,s,1,r-s),e.context.fillRect(t-2,s,3,r-s)}drawRepeatBar(e,t,s){e.checkContext();const r=e.getTopLineTopY(),o=e.getBottomLineBottomY();let a=3;s||(a=-5),e.context.fillRect(t+a,r,1,o-r),e.context.fillRect(t-2,r,3,o-r);const l=2;s?a+=4:a-=4;const c=t+a+l/2;let d=(e.getNumLines()-1)*e.getSpacingBetweenLines();d=d/2-e.getSpacingBetweenLines()/2;let m=r+d+l/2;e.context.beginPath(),e.context.arc(c,m,l,0,Math.PI*2,!1),e.context.fill(),m+=e.getSpacingBetweenLines(),e.context.beginPath(),e.context.arc(c,m,l,0,Math.PI*2,!1),e.context.fill()}}let Repetition$1=class He extends StaveModifier{static get CATEGORY(){return"repetitions"}static get type(){return{NONE:1,CODA_LEFT:2,CODA_RIGHT:3,SEGNO_LEFT:4,SEGNO_RIGHT:5,DC:6,DC_AL_CODA:7,DC_AL_FINE:8,DS:9,DS_AL_CODA:10,DS_AL_FINE:11,FINE:12,TO_CODA:13}}constructor(e,t,s){super(),this.setAttribute("type","Repetition"),this.symbol_type=e,this.x=t,this.x_shift=0,this.y_shift=s,this.font={family:"times",size:12,weight:"bold italic"}}getCategory(){return He.CATEGORY}setShiftX(e){return this.x_shift=e,this}setShiftY(e){return this.y_shift=e,this}setX(e){return this.x=e,this}draw(e,t){switch(this.setRendered(),this.symbol_type){case He.type.CODA_RIGHT:this.drawCodaFixed(e,t+e.width);break;case He.type.CODA_LEFT:this.drawSymbolText(e,t,"Coda",!1);break;case He.type.SEGNO_LEFT:this.drawSignoFixed(e,t);break;case He.type.SEGNO_RIGHT:this.drawSignoFixed(e,t+e.width);break;case He.type.DC:this.drawSymbolText(e,t,"D.C.",!1);break;case He.type.DC_AL_CODA:this.drawSymbolText(e,t,"D.C. al Coda",!0);break;case He.type.DC_AL_FINE:this.drawSymbolText(e,t,"D.C. al Fine",!1);break;case He.type.DS:this.drawSymbolText(e,t,"D.S.",!1);break;case He.type.DS_AL_CODA:this.drawSymbolText(e,t,"D.S. al Coda",!0);break;case He.type.DS_AL_FINE:this.drawSymbolText(e,t,"D.S. al Fine",!1);break;case He.type.FINE:this.drawSymbolText(e,t,"Fine",!1);break;case He.type.TO_CODA:this.drawSymbolText(e,t,"To Coda",!0);break}return this}drawCodaFixed(e,t){const s=e.getYForTopText(e.options.num_lines)+this.y_shift;return Glyph.renderGlyph(e.context,this.x+t+this.x_shift,s+25,40,"v4d",!0),this}drawSignoFixed(e,t){const s=e.getYForTopText(e.options.num_lines)+this.y_shift;return Glyph.renderGlyph(e.context,this.x+t+this.x_shift,s+25,30,"v8c",!0),this}drawSymbolText(e,t,s,r){const o=e.checkContext();o.save(),o.setFont(this.font.family,this.font.size,this.font.weight);let a=0+this.x_shift,l=t+this.x_shift;this.symbol_type===He.type.CODA_LEFT?(a=this.x+e.options.vertical_bar_width,l=a+o.measureText(s).width+12):(this.x_shift=-(a+o.measureText(s).width+12+e.options.vertical_bar_width+12),a=this.x+this.x_shift+e.options.vertical_bar_width,l=a+o.measureText(s).width+12);const c=e.getYForTopText(e.options.num_lines)+this.y_shift+25;return r&&Glyph.renderGlyph(o,l,c,40,"v4d",!0),o.fillText(s,a,c+5),o.restore(),this}};class StaveSection extends StaveModifier{static get CATEGORY(){return"stavesection"}constructor(e,t,s){super(),this.setAttribute("type","StaveSection"),this.setWidth(16),this.section=e,this.x=t,this.shift_x=0,this.shift_y=s,this.font={family:"sans-serif",size:12,weight:"bold"}}getCategory(){return StaveSection.CATEGORY}setStaveSection(e){return this.section=e,this}setShiftX(e){return this.shift_x=e,this}setShiftY(e){return this.shift_y=e,this}draw(e,t){const s=e.checkContext();this.setRendered(),s.save(),s.lineWidth=2,s.setFont(this.font.family,this.font.size,this.font.weight);const r=s.measureText(""+this.section),o=r.width,a=r.height;let l=o+6;l<18&&(l=18);const c=a,d=e.getYForTopText(3)+this.shift_y;let m=this.x+t;return s.beginPath(),s.lineWidth=2,s.rect(m,d+a/4,l,c),s.stroke(),m+=(l-o)/2,s.fillText(""+this.section,m,d+16),s.restore(),this}}class StaveTempo extends StaveModifier{static get CATEGORY(){return"stavetempo"}constructor(e,t,s){super(),this.setAttribute("type","StaveTempo"),this.tempo=e,this.position=Modifier.Position.ABOVE,this.x=t,this.shift_x=10,this.shift_y=s,this.font={family:"times",size:14,weight:"bold"},this.render_options={glyph_font_scale:30}}getCategory(){return StaveTempo.CATEGORY}setTempo(e){return this.tempo=e,this}setShiftX(e){return this.shift_x=e,this}setShiftY(e){return this.shift_y=e,this}draw(e,t){const s=e.checkContext();this.setRendered();const r=this.render_options,o=r.glyph_font_scale/38,a=this.tempo.name,l=this.tempo.duration,c=this.tempo.dots,d=this.tempo.bpm,m=this.font;let u=this.x+this.shift_x+t;const g=e.getYForTopText(1)+this.shift_y;if(s.save(),s.openGroup("stavetempo",null,{}),a&&(s.setFont(m.family,m.size,m.weight),s.fillText(a,u,g),u+=s.measureText(a).width),l&&d){s.setFont(m.family,m.size,"normal"),a&&(u+=s.measureText(" ").width,s.fillText("(",u,g),u+=s.measureText("(").width);const b=Flow.getGlyphProps(l);if(u+=3*o,Glyph.renderGlyph(s,u,g,r.glyph_font_scale,b.code_head),u+=b.getWidth()*o,b.stem){let y=30;b.beam_count&&(y+=3*(b.beam_count-1)),y*=o;const S=g-y;s.fillRect(u-o,S,o,y),b.flag&&(Glyph.renderGlyph(s,u,S,r.glyph_font_scale,b.code_flag_upstem),c||(u+=6*o))}for(let y=0;y=e.line?c.above:c.below)}this.placeGlyphOnLine(r,this.stave,e.line),this.glyphs.push(r);const a=this.xPositions[this.xPositions.length-1],l=r.getMetrics().width+o;this.xPositions.push(a+l),this.width+=l}cancelKey(e){return this.formatted=!1,this.cancelKeySpec=e,this}convertToCancelAccList(e){const t=Flow.keySignature(e),s=this.accList.length>0&&t.length>0&&t[0].type!==this.accList[0].type,r=s?t.length:t.length-this.accList.length;if(r<1)return;const o=[];for(let a=0;a0?e[0].type:null;let s;if(this.cancelKeySpec&&(s=this.convertToCancelAccList(this.cancelKeySpec)),this.alterKeySpec&&this.convertToAlterAccList(this.alterKeySpec),this.accList.length>0){const r=(this.position===StaveModifier.Position.END?this.stave.endClef:this.stave.clef)||this.stave.clef;s&&this.convertAccLines(r,s.type,s.accList),this.convertAccLines(r,t,e);for(let o=0;o0){this.stave.context.openGroup("keysignature");for(let e=0;e{const e=i.split("/").filter(t=>t!=="");if(e.length!==2)throw new Vex.RERR("BadTimeSignature",`Invalid time spec: ${i}. Must be in the form "/"`);e.forEach(t=>{if(isNaN(Number(t)))throw new Vex.RERR("BadTimeSignature",`Invalid time spec: ${i}. Must contain two valid numbers.`)})};class TimeSignature extends StaveModifier{static get CATEGORY(){return"timesignatures"}static get glyphs(){return{C:{code:"v41",point:40,line:2},"C|":{code:"vb6",point:40,line:2}}}constructor(e=null,t=15,s=!0){if(super(),this.setAttribute("type","TimeSignature"),this.validate_args=s,e===null)return;const r=t;this.point=40,this.topLine=2,this.bottomLine=4,this.setPosition(StaveModifier.Position.BEGIN),this.setTimeSig(e),this.setWidth(this.timeSig.glyph.getMetrics().width),this.setPadding(r)}getCategory(){return TimeSignature.CATEGORY}parseTimeSpec(e){if(e==="C"||e==="C|"){const{line:r,code:o,point:a}=TimeSignature.glyphs[e];return{line:r,num:!1,glyph:new Glyph(o,a)}}this.validate_args&&assertIsValidFraction(e);const[t,s]=e.split("/").map(r=>r.split(""));return{num:!0,glyph:this.makeTimeSignatureGlyph(t,s)}}makeTimeSignatureGlyph(e,t){const s=new Glyph("v0",this.point);s.topGlyphs=[],s.botGlyphs=[];let r=0;for(let u=0;uo?r:o,l=s.getMetrics().x_min;s.getMetrics=()=>({x_min:l,x_max:l+a,width:a});const c=(a-r)/2,d=(a-o)/2,m=this;return s.renderToStave=function(g){let b=g+c;for(let y=0;yt.visible).filter(Boolean).length}getOptions(){return this.options}setNoteStartX(e){this.formatted||this.format(),this.setStartX(e);const t=this.modifiers[0];return t.setX(this.start_x-t.getWidth()),this}setStartX(e){this.start_x=e}getNoteStartX(){return this.formatted||this.format(),this.start_x}getNoteEndX(){return this.formatted||this.format(),this.end_x}getTieStartX(){return this.start_x}getTieEndX(){return this.x+this.width}getX(){return this.x}getNumLines(){return this.options.num_lines}setNumLines(e){return this.options.num_lines=parseInt(e,10),this.resetLines(),this}setY(e){return this.y=e,this}getTopLineTopY(){return this.getYForLine(0)-Flow.STAVE_LINE_THICKNESS/2}getBottomLineBottomY(){return this.getLines()===2?this.getYForLine(6)+Flow.STAVE_LINE_THICKNESS/2:this.getYForLine(this.getNumLines()-1)+Flow.STAVE_LINE_THICKNESS/2}setX(e){const t=e-this.x;this.formatted=!1,this.x=e,this.start_x+=t,this.end_x+=t;for(let s=0;ss.getWidth()&&(t-=s.getWidth()),t}setRepetitionTypeLeft(e,t){return this.modifiers.push(new Repetition$1(e,this.x,t)),this}setRepetitionTypeRight(e,t){return this.modifiers.push(new Repetition$1(e,this.x,t)),this}setVoltaType(e,t,s){if(e===2)volta.type===2&&volta.stave.modifiers.push(new Volta(volta.type,volta.number_t,volta.x,volta.y)),volta={stave:this,type:e,number_t:t,MeasureNumber:this.MeasureNumber,y:s,x:this.x};else if(e===4){let r=this.MeasureNumber-volta.MeasureNumber,o=Math.max(volta.y,s);for(let a=0;a<=r;a++)voltaMeasureNumber[volta.MeasureNumber+a]={type:a===0?2:a===r?4:0,number_t:t,y:o};volta={}}else this.modifiers.push(new Volta(e,t,this.x,s));return this}drawVolta(){let e=voltaMeasureNumber[this.MeasureNumber];e&&(this.modifiers.push(new Volta(e.type,e.number_t,this.x,e.y)),delete voltaMeasureNumber[this.MeasureNumber]),volta.type&&volta.MeasureNumber==this.MeasureNumber&&(this.modifiers.push(new Volta(volta.type,volta.number_t,this.x,volta.y)),volta={})}setSection(e,t,s=0,r=12){const o=new StaveSection(e,this.x+s,t);return o.font.size=r,this.modifiers.push(o),this}setTempo(e,t){return this.modifiers.push(new StaveTempo(e,this.x,t)),this}setText(e,t,s){let r=new StaveText(e,t,s);return r.setFont({family:"Arial",size:14,weight:"normal"}),this.modifiers.push(r),this}getHeight(){return this.height}getSpacingBetweenLines(){return this.options.spacing_between_lines_px}getBoundingBox(){return new BoundingBox(this.x,this.y,this.width,this.getBottomY()-this.y)}getBottomY(){const e=this.options,t=e.spacing_between_lines_px;return this.getYForLine(e.num_lines)+e.space_below_staff_ln*t}getBottomLineY(){return this.getYForLine(this.options.num_lines)}getYForLine(e){const t=this.options,s=t.spacing_between_lines_px,r=t.space_above_staff_ln;return this.y+e*s+r*s}getLineForY(e){const t=this.options,s=t.spacing_between_lines_px,r=t.space_above_staff_ln;return(e-this.y)/s-r}getYForTopText(e){const t=e||0;return this.getYForLine(-t-this.options.top_text_position)}getYForBottomText(e){const t=e||0;return this.getYForLine(this.options.bottom_text_position+t)}getYForNote(e){const t=this.options,s=t.spacing_between_lines_px,r=t.space_above_staff_ln;return this.y+r*s+5*s-e*s}getYForGlyphs(){return this.getYForLine(3)}addModifier(e,t,s){return t!==void 0&&e.setPosition(t),s&&(this.timeSignature.numerator=s.numerator,this.timeSignature.denominator=s.denominator),e.setStave(this),this.formatted=!1,this.modifiers.push(e),this}addEndModifier(e){return this.addModifier(e,StaveModifier.Position.END),this}setBegBarType(e){const{SINGLE:t,REPEAT_BEGIN:s,NONE:r}=Barline.type;return(e===t||e===s||e===r)&&(this.modifiers[0].setType(e),this.formatted=!1),this}setEndBarType(e){return e!==Barline.type.REPEAT_BEGIN&&(this.modifiers[1].setType(e),this.formatted=!1),this}setClef(e,t,s,r){r===void 0&&(r=StaveModifier.Position.BEGIN),r===StaveModifier.Position.END?this.endClef=e:this.clef=e;const o=this.getModifiers(r,Clef.CATEGORY);return o.length===0?this.addClef(e,t,s,r):o[0].setType(e,t,s),this}setEndClef(e,t,s){return this.setClef(e,t,s,StaveModifier.Position.END),this}setKeySignature(e,t,s){this.options.keySignature=e,s===void 0&&(s=StaveModifier.Position.BEGIN);const r=this.getModifiers(s,KeySignature.CATEGORY);return r.length===0?this.options.DYMusicScoreType!=="jianpu"&&this.addKeySignature(e,t,s):r[0].setKeySig(e,t),this}setEndKeySignature(e,t){return this.setKeySignature(e,t,StaveModifier.Position.END),this}setTimeSignature(e,t,s){s===void 0&&(s=StaveModifier.Position.BEGIN);const r=this.getModifiers(s,TimeSignature.CATEGORY);return r.length===0?this.addTimeSignature(e,t,s):r[0].setTimeSig(e),this}setEndTimeSignature(e,t){return this.setTimeSignature(e,t,StaveModifier.Position.END),this}addKeySignature(e,t,s){return s===void 0&&(s=StaveModifier.Position.BEGIN),this.addModifier(new KeySignature(e,t).setPosition(s),s),this}addClef(e,t,s,r){return r===void 0||r===StaveModifier.Position.BEGIN?this.clef=e:r===StaveModifier.Position.END&&(this.endClef=e),this.addModifier(new Clef(e,t,s),r),this}addEndClef(e,t,s){return this.addClef(e,t,s,StaveModifier.Position.END),this}addTimeSignature(e,t,s){return this.addModifier(new TimeSignature(e,t),s),this}addEndTimeSignature(e,t){return this.addTimeSignature(e,t,StaveModifier.Position.END),this}addTrebleGlyph(){return this.addClef("treble"),this}getModifiers(e,t){return e===void 0&&t===void 0?this.modifiers:this.modifiers.filter(s=>(e===void 0||e===s.getPosition())&&(t===void 0||t===s.getCategory()))}sortByCategory(e,t){for(let s=e.length-1;s>=0;s--)for(let r=0;rt[e[r+1].getCategory()]){const o=e[r];e[r]=e[r+1],e[r+1]=o}}format(){const e=this.modifiers[0],t=this.modifiers[1],s=this.getModifiers(StaveModifier.Position.BEGIN),r=this.getModifiers(StaveModifier.Position.END);this.sortByCategory(s,{barlines:0,clefs:1,keysignatures:2,timesignatures:3}),this.sortByCategory(r,{timesignatures:0,keysignatures:1,barlines:2,clefs:3}),s.length>1&&e.getType()===Barline.type.REPEAT_BEGIN&&(s.push(s.splice(0,1)[0]),s.splice(0,0,new Barline(Barline.type.SINGLE))),r.indexOf(t)>0&&r.splice(0,0,new Barline(Barline.type.NONE));let o,a,l,c=0,d=this.x;for(let g=0;g{a.includes(c)?l.visible=!0:l.visible=!1})}for(let a=0;athis.drawStaveTempo()),this.measure>0){this.context.save(),this.context.setFont(this.font.family,this.font.size,this.font.weight);const a=this.context.measureText(""+this.measure).width;r=this.getYForTopText(0)+3,this.context.fillText(""+this.measure,this.x-a/2,r),this.context.restore()}return this}drawStaveTempo(){if(!this.staveTempos.length)return;const e=document.querySelector(`#${this.attrs.id}`);if(!e)return;const t=e.parentElement.getBBox(),s=this.getYForLine(0),r=e.parentElement.parentElement.querySelectorAll(".vf-curve");if(r.length){const o=this.x+this.staveTempos[0].shift_x+this.getModifierXShift(0),a=this.getYForTopText(1)+t.y-s+5;r.forEach(l=>{const c=l.getBBox();c.x-10o&&c.y-10a&&(t.y=c.y+5)})}for(let o=0;o=0&&this.timeSignature.numerator){let e=40,t=0;this.MeasureNumber<2&&(e=70,t=-72),this.setText(`${this.timeSignature.numerator}`,1,{justification:1,shift_x:e,shift_y:t-13}),this.setText("ᅳ",1,{justification:1,shift_x:e+3,shift_y:t-2}),this.setText(`${this.timeSignature.denominator}`,1,{justification:1,shift_x:e,shift_y:t+8})}}drawVertical(e,t){this.drawVerticalFixed(this.x+e,t)}drawVerticalFixed(e,t){this.checkContext();const s=this.getYForLine(0),r=this.getYForLine(this.options.num_lines-1);t&&this.context.fillRect(e-3,s,1,r-s+1),this.context.fillRect(e,s,1,r-s+1)}drawVerticalBar(e){this.drawVerticalBarFixed(this.x+e,!1)}drawVerticalBarFixed(e){this.checkContext();const t=this.getYForLine(0),s=this.getYForLine(this.options.num_lines-1);this.context.fillRect(e,t,1,s-t+1)}getConfigForLines(){return this.options.line_config}setConfigForLine(e,t){if(e>=this.options.num_lines||e<0)throw new Vex.RERR("StaveConfigError","The line number must be within the range of the number of lines in the Stave.");if(t.visible===void 0)throw new Vex.RERR("StaveConfigError","The line configuration object is missing the 'visible' property.");if(typeof t.visible!="boolean")throw new Vex.RERR("StaveConfigError","The line configuration objects 'visible' property must be true or false.");return this.options.line_config[e]=t,this}setConfigForLines(e){if(e.length!==this.options.num_lines)throw new Vex.RERR("StaveConfigError","The length of the lines configuration array must match the number of lines in the Stave");for(const t in e)e[t]||(e[t]=this.options.line_config[t]),Vex.Merge(this.options.line_config[t],e[t]);return this.options.line_config=e,this}}class TabStave extends Stave{constructor(e,t,s,r){const o={spacing_between_lines_px:13,num_lines:6,top_text_position:1};Vex.Merge(o,r),super(e,t,s,o),this.setAttribute("type","TabStave")}getYForGlyphs(){return this.getYForLine(2.5)}addTabGlyph(){return this.addClef("tab"),this}}function getUnusedStringGroups(i,e){const t=[];let s=[];for(let r=1;r<=i;r++)e.indexOf(r)>-1?(t.push(s),s=[]):s.push(r);return s.length>0&&t.push(s),t}function getPartialStemLines(i,e,t,s){const r=s!==1,o=s!==-1,a=t.getSpacingBetweenLines(),l=t.getNumLines(),c=[];return e.forEach(d=>{const m=d.indexOf(l)>-1,u=d.indexOf(1)>-1;if(r&&u||o&&m)return;d.length===1&&d.push(d[0]);const g=[];d.forEach((b,y,S)=>{const v=b===1,x=b===l;let A=t.getYForLine(b-1);y===0&&!v?A-=a/2-1:y===S.length-1&&!x&&(A+=a/2-1),g.push(A),s===1&&v?g.push(i-2):s===-1&&x&&g.push(i+2)}),c.push(g.sort((b,y)=>b-y))}),c}let TabNote$1=class ui extends StemmableNote{static get CATEGORY(){return"tabnotes"}constructor(e,t){if(super(e),this.setAttribute("type","TabNote"),this.ghost=!1,this.positions=e.positions,Vex.Merge(this.render_options,{glyph_font_scale:Flow.DEFAULT_TABLATURE_FONT_SCALE,draw_stem:t,draw_dots:t,draw_stem_through_stave:!1,y_shift:0,scale:1,font:"10pt Arial"}),this.glyph=Flow.getGlyphProps(this.duration,this.noteType),!this.glyph)throw new Vex.RuntimeError("BadArguments",`Invalid note initialization data (No glyph found): ${JSON.stringify(e)}`);this.buildStem(),e.stem_direction?this.setStemDirection(e.stem_direction):this.setStemDirection(Stem.UP),this.ghost=!1,this.updateWidth()}reset(){this.stave&&this.setStave(this.stave)}getCategory(){return ui.CATEGORY}setGhost(e){return this.ghost=e,this.updateWidth(),this}hasStem(){return this.render_options.draw_stem}getStemExtension(){const e=this.getGlyph();return this.stem_extension_override!=null?this.stem_extension_override:e?this.getStemDirection()===1?e.tabnote_stem_up_extension:e.tabnote_stem_down_extension:0}addDot(){const e=new Dot;return this.dots+=1,this.addModifier(e,0)}updateWidth(){this.glyphs=[],this.width=0;for(let e=0;ethis.width}setStave(e){super.setStave(e),this.context=e.context;let t;if(this.context){const r=this.context;for(this.width=0,t=0;to.width),this.width=Math.max(o.getWidth(),this.width)}this.glyph.getWidth=()=>this.width}const s=this.positions.map(({str:r})=>e.getYForLine(r-1));return this.setYs(s),this.stem&&this.stem.setYBounds(this.getStemY(),this.getStemY()),this}getPositions(){return this.positions}addToModifierContext(e){this.setModifierContext(e);for(let t=0;t{e.getCategory()==="dots"&&!this.render_options.draw_dots||(e.setContext(this.context),e.drawWithStyle())})}drawStemThrough(){const e=this.getStemX(),t=this.getStemY(),s=this.context,r=this.render_options.draw_stem_through_stave;if(this.render_options.draw_stem&&r){const a=this.stave.getNumLines(),l=this.positions.map(m=>m.str),c=getUnusedStringGroups(a,l),d=getPartialStemLines(t,c,this.getStave(),this.getStemDirection());s.save(),s.setLineWidth(Stem.WIDTH),d.forEach(m=>{m.length!==0&&(s.beginPath(),s.moveTo(e,m[0]),s.lineTo(e,m[m.length-1]),s.stroke(),s.closePath())}),s.restore()}}drawPositions(){const e=this.context,t=this.getAbsoluteX(),s=this.ys;for(let r=0;rparseInt(r,10)?TabSlide.SLIDE_DOWN:TabSlide.SLIDE_UP}this.slide_direction=t,this.render_options.cp1=11,this.render_options.cp2=14,this.render_options.y_shift=.5,this.setFont({font:"Times",size:10,style:"bold italic"}),this.setNotes(e)}renderTie(e){if(e.first_ys.length===0||e.last_ys.length===0)throw new Vex.RERR("BadArguments","No Y-values to render");const t=this.context,s=e.first_x_px,r=e.first_ys,o=e.last_x_px,a=this.slide_direction;if(a!==TabSlide.SLIDE_UP&&a!==TabSlide.SLIDE_DOWN)throw new Vex.RERR("BadSlide","Invalid slide direction");for(let l=0;lthis.numStrings)throw new Vex.RERR("BadArguments",`String number must be between 1 and ${this.numStrings}:${e}`);return this.tuningValues[t-1]}getValueForFret(e,t){const s=this.getValueForString(t),r=parseInt(e,10);if(r<0)throw new Vex.RERR("BadArguments","Fret number must be 0 or higher: "+e);return s+r}getNoteForFret(e,t){const s=this.getValueForFret(e,t),r=Math.floor(s/12),o=s%12;return Flow.integerToNote(o)+"/"+r}}class KeyManager{constructor(e){this.music=new Music,this.setKey(e)}setKey(e){return this.key=e,this.reset(),this}getKey(){return this.key}reset(){if(this.keyParts=this.music.getKeyParts(this.key),this.keyString=this.keyParts.root,this.keyParts.accidental&&(this.keyString+=this.keyParts.accidental),!Music.scaleTypes[this.keyParts.type])throw new Vex.RERR("BadArguments",`Unsupported key type: ${this.key}`);this.scale=this.music.getScaleTones(this.music.getNoteValue(this.keyString),Music.scaleTypes[this.keyParts.type]),this.scaleMap={},this.scaleMapByValue={},this.originalScaleMapByValue={};const t=Music.root_indices[this.keyParts.root];for(let s=0;s{const s=TextDynamics.GLYPHS[t];if(!s)throw new Vex.RERR("Invalid dynamics character: "+t);const r=this.render_options.glyph_font_size,o=new Glyph(s.code,r);this.glyphs.push(o),e+=s.width}),this.setWidth(e),this.preFormatted=!0,this}draw(){this.setRendered();const e=this.getAbsoluteX(),t=this.stave.getYForLine(this.line+-3);L$7("Rendering Dynamics: ",this.sequence);let s=e;this.glyphs.forEach((r,o)=>{const a=this.sequence[o];r.render(this.context,s,t),s+=TextDynamics.GLYPHS[a].width})}}function drawArrowHead(i,e,t,s,r,o,a){i.beginPath(),i.moveTo(e,t),i.lineTo(s,r),i.lineTo(o,a),i.lineTo(e,t),i.closePath(),i.fill()}function drawArrowLine(i,e,t,s){const r=s.draw_start_arrow&&s.draw_end_arrow,o=e.x,a=e.y,l=t.x,c=t.y,d=Math.sqrt((l-o)*(l-o)+(c-a)*(c-a)),m=(d-s.arrowhead_length/3)/d;let u,g,b,y;s.draw_end_arrow||r?(u=Math.round(o+(l-o)*m),g=Math.round(a+(c-a)*m)):(u=l,g=c),s.draw_start_arrow||r?(b=o+(l-o)*(1-m),y=a+(c-a)*(1-m)):(b=o,y=a),s.color&&(i.setStrokeStyle(s.color),i.setFillStyle(s.color)),i.beginPath(),i.moveTo(b,y),i.lineTo(u,g),i.stroke(),i.closePath();const S=Math.atan2(c-a,l-o),v=Math.abs(s.arrowhead_length/Math.cos(s.arrowhead_angle));let x,A,E,w,_,C;(s.draw_end_arrow||r)&&(x=S+Math.PI+s.arrowhead_angle,E=l+Math.cos(x)*v,w=c+Math.sin(x)*v,A=S+Math.PI-s.arrowhead_angle,_=l+Math.cos(A)*v,C=c+Math.sin(A)*v,drawArrowHead(i,E,w,l,c,_,C)),(s.draw_start_arrow||r)&&(x=S+s.arrowhead_angle,E=o+Math.cos(x)*v,w=a+Math.sin(x)*v,A=S-s.arrowhead_angle,_=o+Math.cos(A)*v,C=a+Math.sin(A)*v,drawArrowHead(i,E,w,o,a,_,C))}class StaveLine extends Element$1{static get TextVerticalPosition(){return{TOP:1,BOTTOM:2}}static get TextJustification(){return{LEFT:1,CENTER:2,RIGHT:3}}constructor(e){super(),this.setAttribute("type","StaveLine"),this.notes=e,this.text="",this.font={family:"Arial",size:10,weight:""},this.render_options={padding_left:4,padding_right:3,line_width:1,line_dash:null,rounded_end:!0,color:null,draw_start_arrow:!1,draw_end_arrow:!1,arrowhead_length:10,arrowhead_angle:Math.PI/8,text_position_vertical:StaveLine.TextVerticalPosition.TOP,text_justification:StaveLine.TextJustification.CENTER},this.setNotes(e)}setFont(e){return this.font=e,this}setText(e){return this.text=e,this}setNotes(e){if(!e.first_note&&!e.last_note)throw new Vex.RuntimeError("BadArguments","Notes needs to have either first_note or last_note set.");if(e.first_indices||(e.first_indices=[0]),e.last_indices||(e.last_indices=[0]),e.first_indices.length!==e.last_indices.length)throw new Vex.RuntimeError("BadArguments","Connected notes must have similar index sizes");return this.first_note=e.first_note,this.first_indices=e.first_indices,this.last_note=e.last_note,this.last_indices=e.last_indices,this}applyLineStyle(){const e=this.checkContext(),t=this.render_options;t.line_dash&&e.setLineDash(t.line_dash),t.line_width&&e.setLineWidth(t.line_width),t.rounded_end?e.setLineCap("round"):e.setLineCap("square")}applyFontStyle(){const e=this.checkContext();this.font&&e.setFont(this.font.family,this.font.size,this.font.weight),this.render_options.color&&(e.setStrokeStyle(this.render_options.color),e.setFillStyle(this.render_options.color))}draw(){const e=this.checkContext();this.setRendered();const t=this.first_note,s=this.last_note,r=this.render_options;e.save(),this.applyLineStyle();let o,a;this.first_indices.forEach((g,b)=>{const y=this.last_indices[b];o=t.getModifierStartXY(2,g),a=s.getModifierStartXY(1,y);const S=o.y>a.y;o.x+=t.getMetrics().modRightPx+r.padding_left,a.x-=s.getMetrics().modLeftPx+r.padding_right;const v=t.getGlyph().getWidth();t.getKeyProps()[g].displaced&&t.getStemDirection()===1&&(o.x+=v+r.padding_left),s.getKeyProps()[y].displaced&&s.getStemDirection()===-1&&(a.x-=v+r.padding_right),o.y+=S?-3:1,a.y+=S?2:0,drawArrowLine(e,o,a,this.render_options)}),e.restore();const l=e.measureText(this.text).width,c=r.text_justification;let d=0;c===StaveLine.TextJustification.LEFT?d=o.x:c===StaveLine.TextJustification.CENTER?d=(a.x-o.x)/2+o.x-l/2:c===StaveLine.TextJustification.RIGHT&&(d=a.x-l);let m;const u=r.text_position_vertical;return u===StaveLine.TextVerticalPosition.TOP?m=t.getStave().getYForTopText():u===StaveLine.TextVerticalPosition.BOTTOM&&(m=t.getStave().getYForBottomText(Flow.TEXT_HEIGHT_OFFSET_HACK)),e.save(),this.applyFontStyle(),e.fillText(this.text,d,m),e.restore(),this}}function L$6(...i){PedalMarking.DEBUG&&Vex.L("Vex.Flow.PedalMarking",i)}function drawPedalGlyph(i,e,t,s,r){const o=PedalMarking.GLYPHS[i];new Glyph(o.code,r).render(e,t+o.x_shift,s+o.y_shift)}class PedalMarking extends Element$1{static get GLYPHS(){return{pedal_depress:{code:"v36",x_shift:-10,y_shift:0},pedal_release:{code:"v5d",x_shift:-2,y_shift:3}}}static get Styles(){return{TEXT:1,BRACKET:2,MIXED:3,MIXED_OPEN_END:4,BRACKET_OPEN_BEGIN:5,BRACKET_OPEN_END:6,BRACKET_OPEN_BOTH:7}}static get StylesString(){return{text:PedalMarking.Styles.TEXT,bracket:PedalMarking.Styles.BRACKET,mixed:PedalMarking.Styles.MIXED,mixed_open_end:PedalMarking.Styles.MIXED_OPEN_END,bracket_open_begin:PedalMarking.Styles.BRACKET_OPEN_BEGIN,bracket_open_end:PedalMarking.Styles.BRACKET_OPEN_END,bracket_open_both:PedalMarking.Styles.BRACKET_OPEN_BOTH}}static createSustain(e){return new PedalMarking(e)}static createSostenuto(e){const t=new PedalMarking(e);return t.setStyle(PedalMarking.Styles.MIXED),t.setCustomText("Sost. Ped."),t}static createUnaCorda(e){const t=new PedalMarking(e);return t.setStyle(PedalMarking.Styles.TEXT),t.setCustomText("una corda","tre corda"),t}constructor(e){super(),this.setAttribute("type","PedalMarking"),this.EndsStave=!1,this.ChangeBegin=!1,this.ChangeEnd=!1,this.notes=e,this.style=PedalMarking.TEXT,this.line=0,this.custom_depress_text="",this.custom_release_text="",this.font={family:"Times New Roman",size:12,weight:"italic bold"},this.render_options={bracket_height:10,text_margin_right:6,bracket_line_width:1,glyph_point_size:40,color:"black"}}setEndStave(e){if(this.endStave=e,this.endStaveAddedWidth=0,this.startMargin=0,this.endMargin=0,Array.isArray(this.endStave.modifiers))for(let t=0;t3)throw new Vex.RERR("InvalidParameter","The style must be one found in PedalMarking.Styles");return this.style=e,this}setLine(e){return this.line=e,this}drawBracketed(){const e=this.context;let t=!1,s,r;const o=this;this.notes.forEach((a,l,c)=>{t=!t;let d=0;if(a?d=a.getNoteHeadBeginX():d=this.endStave.end_x+this.endStaveAddedWidth,this.EndsStave)t?this.ChangeBegin&&(d=a.getAbsoluteX()):(a?this.ChangeEnd?d=a.getAbsoluteX():d=a.getStave().end_x+this.endStaveAddedWidth-o.render_options.text_margin_right:d=this.endStave.end_x+this.endStaveAddedWidth-o.render_options.text_margin_right,this.endMargin=-o.render_options.text_margin_right);else if(a)if(t)this.ChangeBegin&&(d=a.getAbsoluteX());else switch(o.style){case PedalMarking.Styles.BRACKET_OPEN_END:case PedalMarking.Styles.BRACKET_OPEN_BOTH:case PedalMarking.Styles.MIXED_OPEN_END:d=a.getNoteHeadEndX();break;default:this.ChangeEnd?d=a.getAbsoluteX():(d=a.getNoteHeadBeginX()-o.render_options.text_margin_right,this.startMargin=-o.render_options.text_margin_right);break}let m=this.endStave;a&&(m=a.getStave());let u=m.getYForBottomText(o.line+3);r&&r>u&&(u=r);const g=c[l+1]===a,b=c[l-1]===a;let y=0;if(t)if(y=b?5:0,(o.style===PedalMarking.Styles.MIXED||o.style===PedalMarking.Styles.MIXED_OPEN_END)&&!b)if(o.custom_depress_text){const S=e.measureText(o.custom_depress_text).width;e.fillText(o.custom_depress_text,d-S/2,u),y=S/2+o.render_options.text_margin_right}else drawPedalGlyph("pedal_depress",e,d,u,o.render_options.glyph_point_size),y=20+o.render_options.text_margin_right;else e.beginPath(),o.style===PedalMarking.Styles.BRACKET_OPEN_BEGIN||o.style===PedalMarking.Styles.BRACKET_OPEN_BOTH?e.moveTo(d+y,u):(this.ChangeBegin&&(d+=5),e.moveTo(d,u-o.render_options.bracket_height),this.ChangeBegin&&(d+=5),e.lineTo(d+y,u)),e.stroke(),e.closePath();else y=g&&!this.EndsStave?-5:0,e.beginPath(),e.moveTo(s,r),e.lineTo(d+y,u),o.style!==PedalMarking.Styles.BRACKET_OPEN_END&&o.style!==PedalMarking.Styles.MIXED_OPEN_END&&o.style!==PedalMarking.Styles.BRACKET_OPEN_BOTH&&(this.ChangeEnd&&(d+=5),e.lineTo(d,u-o.render_options.bracket_height)),e.stroke(),e.closePath();s=d+y,r=u})}drawText(){const e=this.context;let t=!1;const s=this,r=s.render_options.glyph_point_size;this.notes.forEach(o=>{t=!t;const a=o.getStave(),l=o.getAbsoluteX(),c=a.getYForBottomText(s.line+3);let d=0;t?s.custom_depress_text?(d=e.measureText(s.custom_depress_text).width,e.fillText(s.custom_depress_text,l-d/2,c)):drawPedalGlyph("pedal_depress",e,l,c,r):s.custom_release_text?(d=e.measureText(s.custom_release_text).width,e.fillText(s.custom_release_text,l-d/2,c)):drawPedalGlyph("pedal_release",e,l,c,r)})}draw(){const e=this.checkContext();this.setRendered(),e.save(),e.setStrokeStyle(this.render_options.color),e.setFillStyle(this.render_options.color),e.setFont(this.font.family,this.font.size,this.font.weight),L$6("Rendering Pedal Marking"),this.style===PedalMarking.Styles.BRACKET||this.style===PedalMarking.Styles.MIXED||this.style===PedalMarking.Styles.MIXED_OPEN_END||this.style===PedalMarking.Styles.BRACKET_OPEN_BEGIN||this.style===PedalMarking.Styles.BRACKET_OPEN_END||this.style===PedalMarking.Styles.BRACKET_OPEN_BOTH?(e.setLineWidth(this.render_options.bracket_line_width),this.drawBracketed()):this.style===PedalMarking.Styles.TEXT&&this.drawText(),e.restore()}}function L$5(...i){TextBracket.DEBUG&&Vex.L("Vex.Flow.TextBracket",i)}class TextBracket extends Element$1{static get Positions(){return{TOP:1,BOTTOM:-1}}static get PositionString(){return{top:TextBracket.Positions.TOP,bottom:TextBracket.Positions.BOTTOM}}constructor({start:e,stop:t,text:s="",superscript:r="",position:o=TextBracket.Positions.TOP}){super(),this.setAttribute("type","TextBracket"),this.start=e,this.stop=t,this.text=s,this.superscript=r,this.position=typeof o=="string"?TextBracket.PositionString[o]:o,this.line=1,this.font={family:"Serif",size:15,weight:"italic"},this.render_options={dashed:!0,dash:[5],color:"black",line_width:1,show_bracket:!0,bracket_height:8,underline_superscript:!0}}applyStyle(e){return e.setFont(this.font.family,this.font.size,this.font.weight),e.setStrokeStyle(this.render_options.color),e.setFillStyle(this.render_options.color),e.setLineWidth(this.render_options.line_width),this}setDashed(e,t){return this.render_options.dashed=e,t&&(this.render_options.dash=t),this}setFont(e){return this.font={...this.font,...e},this}setLine(e){return this.line=e,this}draw(){const e=this.context;this.setRendered();let t=0;switch(this.position){case TextBracket.Positions.TOP:t=this.start.getStave().getYForTopText(this.line);break;case TextBracket.Positions.BOTTOM:t=this.start.getStave().getYForBottomText(this.line+Flow.TEXT_HEIGHT_OFFSET_HACK);break;default:throw new Vex.RERR("InvalidPosition",`The position ${this.position} is invalid`)}const s={x:this.start.getAbsoluteX(),y:t},r={x:this.stop.getAbsoluteX(),y:t};L$5("Rendering TextBracket: start:",s,"stop:",r,"y:",t);const o=this.render_options.bracket_height*this.position;e.save(),this.applyStyle(e),e.fillText(this.text,s.x,s.y);const a=e.measureText(this.text).width,l=e.measureText("M").width,c=s.y-l/2.5;e.setFont(this.font.family,this.font.size/1.4,this.font.weight),e.fillText(this.superscript,s.x+a+1,c);const d=e.measureText(this.superscript).width,m=e.measureText("M").width;let u=s.x,g=c;const b=r.x+this.stop.getGlyph().getWidth();this.position===TextBracket.Positions.TOP?(u+=a+d+5,g-=m/2.7):this.position===TextBracket.Positions.BOTTOM&&(g+=m/2.7,u+=a+2,this.render_options.underline_superscript||(u+=d)),this.render_options.dashed?(Renderer.drawDashedLine(e,u,g,b,g,this.render_options.dash),this.render_options.show_bracket&&Renderer.drawDashedLine(e,b,g+1*this.position,b,g+o,this.render_options.dash)):(e.beginPath(),e.moveTo(u,g),e.lineTo(b,g),this.render_options.show_bracket&&e.lineTo(b,g+o),e.stroke(),e.closePath()),e.restore()}}function L$4(...i){BarNote.DEBUG&&Vex.L("Vex.Flow.BarNote",i)}class BarNote extends Note{constructor(e=Barline.type.SINGLE){super({duration:"b"}),this.setAttribute("type","BarNote"),this.metrics={widths:{}};const t=Barline.type;this.metrics.widths={[t.SINGLE]:8,[t.DOUBLE]:12,[t.END]:15,[t.REPEAT_BEGIN]:14,[t.REPEAT_END]:14,[t.REPEAT_BOTH]:18,[t.NONE]:0},this.ignore_ticks=!0,this.setType(e)}getType(){return this.type}setType(e){return this.type=typeof e=="string"?Barline.typeString[e]:e,this.setWidth(this.metrics.widths[this.type]),this}getBoundingBox(){return super.getBoundingBox()}addToModifierContext(){return this}preFormat(){return this.setPreFormatted(!0),this}draw(){if(this.checkContext(),!this.stave)throw new Vex.RERR("NoStave","Can't draw without a stave.");L$4("Rendering bar line at: ",this.getAbsoluteX());const e=new Barline(this.type);e.setX(this.getAbsoluteX()),e.draw(this.stave),this.setRendered()}}class GhostNote extends StemmableNote{constructor(e){if(!e)throw new Vex.RuntimeError("BadArguments","Ghost note must have valid initialization data to identify duration.");let t;if(typeof e=="string")t={duration:e};else if(typeof e=="object")t=e;else throw new Vex.RuntimeError("BadArguments","Ghost note must have valid initialization data to identify duration.");super(t),this.setAttribute("type","GhostNote"),this.setWidth(0)}isRest(){return!0}setStave(e){super.setStave(e)}addToModifierContext(){return this}preFormat(){return this.setPreFormatted(!0),this}draw(){if(!this.stave)throw new Vex.RERR("NoStave","Can't draw without a stave.");this.setRendered();for(let e=0;e0||t===!0;return t&&!(o>0)&&(this.pos=r),l?this.matchSuccess():this.matchFail(r),{success:l,results:s,numMatches:o}}expectZeroOrMore(e){return this.expectOneOrMore(e,!0)}expect(e){L$2("Evaluating rules:",e);let t;if(!e)throw new X$2("Invalid Rule: "+e,e);const s=e.bind(this.grammar)();if(s.token)t=this.matchToken(s.token,s.noSpace===!0),t.success&&(this.pos+=t.incrementPos);else if(s.expect)s.oneOrMore?t=this.expectOneOrMore(s):s.zeroOrMore?t=this.expectZeroOrMore(s):t=this.expectOne(s);else throw new X$2("Bad grammar! No `token` or `expect` property",s);return t.matches=[],t.results&&t.results.forEach(r=>t.matches.push(flattenMatches(r))),s.run&&t.success&&s.run(t),t}}function L$1(...i){EasyScore.DEBUG&&Vex.L("Vex.Flow.EasyScore",i)}const X$1=Vex.MakeException("EasyScoreError");class Grammar{constructor(e){this.builder=e}begin(){return this.LINE}LINE(){return{expect:[this.PIECE,this.PIECES,this.EOL]}}PIECE(){return{expect:[this.CHORDORNOTE,this.PARAMS],run:()=>this.builder.commitPiece()}}PIECES(){return{expect:[this.COMMA,this.PIECE],zeroOrMore:!0}}PARAMS(){return{expect:[this.DURATION,this.TYPE,this.DOTS,this.OPTS]}}CHORDORNOTE(){return{expect:[this.CHORD,this.SINGLENOTE],or:!0}}CHORD(){return{expect:[this.LPAREN,this.NOTES,this.RPAREN],run:e=>this.builder.addChord(e.matches[1])}}NOTES(){return{expect:[this.NOTE],oneOrMore:!0}}NOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE]}}SINGLENOTE(){return{expect:[this.NOTENAME,this.ACCIDENTAL,this.OCTAVE],run:e=>this.builder.addSingleNote(e.matches[0],e.matches[1],e.matches[2])}}ACCIDENTAL(){return{expect:[this.ACCIDENTALS],maybe:!0}}DOTS(){return{expect:[this.DOT],zeroOrMore:!0,run:e=>this.builder.setNoteDots(e.matches[0])}}TYPE(){return{expect:[this.SLASH,this.MAYBESLASH,this.TYPES],maybe:!0,run:e=>this.builder.setNoteType(e.matches[2])}}DURATION(){return{expect:[this.SLASH,this.DURATIONS],maybe:!0,run:e=>this.builder.setNoteDuration(e.matches[1])}}OPTS(){return{expect:[this.LBRACKET,this.KEYVAL,this.KEYVALS,this.RBRACKET],maybe:!0}}KEYVALS(){return{expect:[this.COMMA,this.KEYVAL],zeroOrMore:!0}}KEYVAL(){const e=t=>t.slice(1,-1);return{expect:[this.KEY,this.EQUALS,this.VAL],run:t=>this.builder.addNoteOption(t.matches[0],e(t.matches[2]))}}VAL(){return{expect:[this.SVAL,this.DVAL],or:!0}}KEY(){return{token:"[a-zA-Z][a-zA-Z0-9]*"}}DVAL(){return{token:'["][^"]*["]'}}SVAL(){return{token:"['][^']*[']"}}NOTENAME(){return{token:"[a-gA-G]"}}OCTAVE(){return{token:"[0-9]+"}}ACCIDENTALS(){return{token:"bbs|bb|bss|bs|b|db|d|##|#|n|\\+\\+-|\\+-|\\+\\+|\\+|k|o"}}DURATIONS(){return{token:"[0-9whq]+"}}TYPES(){return{token:"[rRsSxX]"}}LPAREN(){return{token:"[(]"}}RPAREN(){return{token:"[)]"}}COMMA(){return{token:"[,]"}}DOT(){return{token:"[.]"}}SLASH(){return{token:"[/]"}}MAYBESLASH(){return{token:"[/]?"}}EQUALS(){return{token:"[=]"}}LBRACKET(){return{token:"\\["}}RBRACKET(){return{token:"\\]"}}EOL(){return{token:"$"}}}class Builder{constructor(e){this.factory=e,this.commitHooks=[],this.reset()}reset(e={}){this.options={stem:"auto",clef:"treble"},this.elements={notes:[],accidentals:[]},this.rollingDuration="8",this.resetPiece(),Object.assign(this.options,e)}getFactory(){return this.factory}getElements(){return this.elements}addCommitHook(e){this.commitHooks.push(e)}resetPiece(){L$1("resetPiece"),this.piece={chord:[],duration:this.rollingDuration,dots:0,type:void 0,options:{}}}setNoteDots(e){L$1("setNoteDots:",e),e&&(this.piece.dots=e.length)}setNoteDuration(e){L$1("setNoteDuration:",e),this.rollingDuration=this.piece.duration=e||this.rollingDuration}setNoteType(e){L$1("setNoteType:",e),e&&(this.piece.type=e)}addNoteOption(e,t){L$1("addNoteOption: key:",e,"value:",t),this.piece.options[e]=t}addNote(e,t,s){L$1("addNote:",e,t,s),this.piece.chord.push({key:e,accid:t,octave:s})}addSingleNote(e,t,s){L$1("addSingleNote:",e,t,s),this.addNote(e,t,s)}addChord(e){L$1("startChord"),typeof e[0]!="object"?this.addSingleNote(e[0]):e.forEach(t=>{t&&this.addNote(...t)}),L$1("endChord")}commitPiece(){L$1("commitPiece");const{factory:e}=this;if(!e)return;const t={...this.options,...this.piece.options},{stem:s,clef:r}=t,o=s.toLowerCase()==="auto",a=!o&&s.toLowerCase()==="up"?StaveNote.STEM_UP:StaveNote.STEM_DOWN,{chord:l,duration:c,dots:d,type:m}=this.piece,u=l.map(y=>y.key+"/"+y.octave),g=e.StaveNote({keys:u,duration:c,dots:d,type:m,clef:r,auto_stem:o});o||g.setStemDirection(a);const b=l.map(y=>y.accid||null);b.forEach((y,S)=>{y&&g.addAccidental(S,e.Accidental({type:y}))});for(let y=0;yy(t,g,this)),this.elements.notes.push(g),this.elements.accidentals.concat(b),this.resetPiece()}}function setId({id:i},e){i!==void 0&&e.setAttribute("id",i)}function setClass(i,e){if(!i.class)return;const t=/\s*,\s*/;i.class.split(t).forEach(s=>e.addClass(s))}class EasyScore{constructor(e={}){this.setOptions(e),this.defaults={clef:"treble",time:"4/4",stem:"auto"}}set(e){return Object.assign(this.defaults,e),this}setOptions(e){return this.options={factory:null,builder:null,commitHooks:[setId,setClass,Articulation$1.easyScoreHook],throwOnError:!1,...e},this.factory=this.options.factory,this.builder=this.options.builder||new Builder(this.factory),this.grammar=new Grammar(this.builder),this.parser=new Parser(this.grammar),this.options.commitHooks.forEach(t=>this.addCommitHook(t)),this}setContext(e){return this.factory&&this.factory.setContext(e),this}parse(e,t={}){this.builder.reset(t);const s=this.parser.parse(e);if(!s.success&&this.options.throwOnError)throw new X$1("Error parsing line: "+e,s);return s}beam(e,t={}){return this.factory.Beam({notes:e,options:t}),e}tuplet(e,t={}){return this.factory.Tuplet({notes:e,options:t}),e}notes(e,t={}){return t={clef:this.defaults.clef,stem:this.defaults.stem,...t},this.parse(e,t),this.builder.getElements().notes}voice(e,t){return t={time:this.defaults.time,...t},this.factory.Voice(t).addTickables(e)}addCommitHook(e){return this.builder.addCommitHook(e)}}function initGroup(){return{notes:[],finish:!1,total:0,staveId:""}}let _text_width=null,tone="C",group=initGroup(),_denominator="",_numerator="",ornamentGroup="";class NumberedNote extends StaveNote{static get CATEGORY(){return"numberednotes"}static accidentalAndKey(e){switch(e){case"G":return{4:"#"};case"D":return{1:"#",4:"#"};case"A":return{1:"#",4:"#",5:"#"};case"E":return{1:"#",2:"#",4:"#",5:"#"};case"B":return{1:"#",2:"#",4:"#",5:"#",6:"#"};case"F#":return{1:"#",2:"#",3:"#",4:"#",5:"#",6:"#"};case"C#":return{1:"#",2:"#",3:"#",4:"#",5:"#",6:"#",7:"#"};case"F":return{7:"b"};case"Bb":return{7:"b",3:"b"};case"Eb":return{7:"b",3:"b",6:"b"};case"Ab":return{7:"b",2:"b",3:"b",6:"b"};case"Db":return{7:"b",2:"b",3:"b",5:"b",6:"b"};case"Gb":return{7:"b",1:"b",2:"b",3:"b",5:"b",6:"b"};case"Cb":return{7:"b",1:"b",2:"b",3:"b",4:"b",5:"b",6:"b"};default:return{}}}static accidentalMap(e){switch(e){case"C":return"";case"F":case"Bb":case"Eb":case"Ab":case"Db":case"Gb":case"Cb":return{bb:"b",b:"",n:"#","#":"##"};default:return{b:"bb",n:"b","#":"","##":"#"}}}static get noteLift(){switch(tone){case"G":return["7"];case"D":return["7","3"];case"A":return["7","3","6"];case"E":return["2","6","3","7"];case"B":return["5","2","6","3","7"];case"F#":return["1","5","2","6","3","7"];case"C#":return["4","1","5","2","6","3","7"];case"F":return["4"];case"Bb":return["1","4"];case"Eb":return["5","1","4"];case"Ab":return["2","5","1","4"];case"Db":return["6","2","5","1","4"];case"Gb":return["3","6","2","5","1","4"];case"Cb":return["7","3","6","2","5","1","4"]}}static get longDurationLine(){return{1:3,2:1,6:2}}static get numberedDurationLine(){return{8:1,16:2,32:3,64:4,128:5}}static get durationTime(){return{8:6144,4:4096}}constructor(e){super(e),this.setAttribute("type","NumberedNote"),tone=e.keyString,this.ornament=!!e.ornament,this.line=0,this.keys=e.keys||[],this.fontSize=20,this.offset_x=0,this.offset_y=0,this.note_tones=[],this.duration_lines=0,this.long_duration_lines=0,this.note_size=e.note_size||16;const t=Flow.sanitizeDuration(this.duration);var s=NumberedNote.numberedDurationLine[t.toString()];if(s&&(this.duration_lines=s),s=NumberedNote.longDurationLine[t.toString()],s&&(this.long_duration_lines=s),!_text_width){var r="__$text_wraper$$__";let a=document.createElement("canvas");a.id=r,document.body.append(a);const l=document.getElementById(r),c=l.getContext("2d");c.font="Arial 22px";var o=c.measureText("5");_text_width=o.width+2,document.body.removeChild(l)}}getCategory(){return NumberedNote.CATEGORY}setKeySignature(e){this.keySignature=e}preFormat(){this.preFormatted||(this.modifierContext&&this.modifierContext.preFormat(),this.setWidth(this.full_width),this.setPreFormatted(!0))}filterNote(){if(window&&window.sett&&window.sett.keySignature||!this.keys||!this.keys.length)return;const e=NumberedNote.accidentalMap(tone);if(!e)return;const t=NumberedNote.noteLift;if(!t)return;var s=this.keys[0].split("/"),r=s[0];r==="b"&&(r="R"),r=r.replace(new RegExp("#","g"),""),r=r.replace(new RegExp("n","g"),""),r.length>1&&(r=r.replace(new RegExp("b","g"),""));const o=NumberedNoteHead.numberedNotationMapping[r.toUpperCase()];if(t.includes(o))for(let a=0;a{switch(s.getAttribute("type")){case"Accidental":s.render_options.font_scale=this.note_width*1.4,s.x_shift=2,s.y_shift=this.unit_height/2,this.ornament&&(s.render_options.font_scale=this.note_width,s.x_shift=14,s.y_shift=-10);break;case"Stroke":s.x_shift=-1*e,s.y_shift=1*this.unit_height;break;case"Dot":s.x_shift=t*this.duration_dot_width+7,s.y_shift=1*this.unit_height,t++;break;case"Ornament":s.y_shift=-3;break;default:s.y_shift=1*this.unit_height}s.reset&&s.reset(),e+=s.getWidth()/2})}handleDeleteDot(){for(let e=0;ea),s=t.length?t[0]/t[1]:0;if(this.ornament)return;if(s===0)return this.long_duration_lines=this.intrinsicTicks/e-1,this.long_duration_lines>=_numerator&&(this.long_duration_lines=_numerator-1),_denominator==8&&(this.long_duration_lines=0,_numerator==3&&this.draw_dot(this.context,this.bottom_x+25,this.bottom_y-30,this.dot_width),_numerator==6&&(this.draw_dot(this.context,this.bottom_x+25,this.bottom_y-30,this.dot_width),new Glyph("v0",40).render(this.context,this.bottom_x+40,this.top_y),this.draw_dot(this.context,this.bottom_x+65,this.bottom_y-30,this.dot_width))),group=initGroup();let r={lines:this.duration_lines,duration:s,id:this.attrs.id,x:this.x-this.duration_line_space/2-this.left_width,y:this.y,width:this.full_width};s>e*2&&(this.long_duration_lines=parseInt(s/e)-1,this.handleDeleteDot()),ornamentGroup&&(r.x+=this.note_width),group.notes.push(r);let o=group.notes.reduce((a,l)=>a+l.duration,0);o=parseInt(o),o>e&&(o-=e),o>e-10&&ol.lines===0).length&&(this.drawDurationLoneLine(),group=initGroup()))}draw(){if(this.checkContext(),!this.stave)throw new Vex.RERR("NoStave","Can't draw without a stave.");let e=this.context;e.save(),e.setFont("Arial",this.note_height,"normal"),this.setAttribute("el",e.openGroup("stavenote",this.getAttribute("id"))),e.openGroup("note",null,{pointerBBox:!0});let t=this.getAbsoluteX()+2.5;this.x=t;let s=this.stave.getYForLine(2)+this.note_height/2;this.y=s,this.buildToneHeads(),this.preFormatModifier(),this.applyStyle(),this.note_tones.forEach(r=>{r.draw(e)}),e.openGroup("modifier",null,{pointerBBox:!0}),this.drawModifiers(),e.closeGroup(),e.closeGroup(),e.closeGroup(),this.calcGroup(),group.staveId=this.stave.attrs.id,this.drawDurationLine(e,{}),this.drawLongDurationLines(e),this.restoreStyle(),this.setRendered(),this.ornament?ornamentGroup?ornamentGroup=Object.assign(ornamentGroup,{lines:this.duration_lines,id:this.attrs.id,x:this.x-this.duration_line_space/2-this.left_width,width:this.full_width}):ornamentGroup={lines:this.duration_lines,id:this.attrs.id,x:this.x-this.duration_line_space/2-this.left_width,width:this.full_width}:ornamentGroup=""}drawDurationLoneLine(e,t){e=e||this.context;let s=t||this.y+this.duration_line_space;for(let r=0;r<5;r++){let o=[],a=0;for(let l=0;lr)o.push(c),a++;else{if(o.length>1){let d=o.length-1;s=o[0].y+this.duration_line_space,e.rect(o[0].x,s+r*3,o[d].x-o[0].x+o[d].width,.5)}o=[],a=l+1}}if(o.length>1){let l=o.length-1;s=o[0].y+this.duration_line_space,e.rect(o[0].x,s+r*3,o[l].x-o[0].x+o[l].width,.5)}}}draw_dot(e,t,s,r){e.openGroup("numbered-note-dot"),e.beginPath(),e.arc(t,s,r,0,2*Math.PI),e.closePath(),e.fill(),e.closeGroup()}drawDurationLine(e,t){var s=this.attrs.id+"-lines";e.openGroup("numbered_note_lines",s);var r,o;if(this.duration_lines>0){const c=this.duration_line_space;var a=this.full_width;if(t&&t.width&&(a=t.width),a<0&&(a=this.note_width),!t||typeof t.startX>"u"?r=this.x-c/2-this.left_width:r=t.startX,!t||typeof t.startY>"u"?o=this.y+this.duration_line_space:o=t.startY,group.finish&&(this.drawDurationLoneLine(e,o),group=initGroup()),this.ornament?(r+=12,o-=22,a=15,ornamentGroup&&(r-=10,a+=10)):ornamentGroup&&(r+=this.note_width,a-=this.note_width),a>0){for(var l=0;ll.getAttribute("type")==="Accidental"),a=this.modifiers.findIndex(l=>l.getAttribute("type")==="Accidental");r&&a>-1?this.modifiers[a].accidental.code=r==="#"?"v18":"v44":this.modifiers.splice(a,1)}}catch(r){console.log("🚀 ~ error",r)}}this.setYs(e)}getFullWidth(){return this.full_width}getFullHeight(){return this.full_height}getLine(){return this.keyProps[0].line}get full_width(){return this.note_width+this.left_width+this.right_width+this.long_duration_line_width}get long_duration_line_width(){return(this.long_duration_width+this.long_duration_space)*this.long_duration_lines}get full_height(){return this.bottom_y-this.top_y}get note_width(){return this.note_size||0}get note_dot_width(){return 6}get note_height(){return this.unit_height}get unit_height(){return this.note_size||0}get note_x(){return this.x||0}get top_x(){return this.x||0}get top_y(){var e=this;return(this.y||0)-(e.note_tones.map(s=>(s.td+s.bd)*(e.dot_space+e.dot_width)).reduce((s,r)=>s+r,0)+this.note_height*this.note_tones.length-this.unit_height-this.note_tones[0].bd*(e.dot_space+e.dot_width)+(this.note_tones.length-1)*this.head_space)}get bottom_x(){return this.x||0}get bottom_y(){return(this.y||0)+this.unit_height+this.duration_lines*(this.duration_line_height+this.duration_line_space)+this.note_tones[0].meta.bd*(this.dot_width+this.dot_space)}get left_width(){return this.modifiers_width}get right_width(){return this.full_duration_dot_width}get duration_dot_width(){return 6}get full_duration_dot_width(){return this.duration_dot_width*this.getModifiersByCategory(Dot.CATEGORY).length}getModifiersByCategory(e){var t=[];return this.modifiers.forEach(s=>{s.getCategory()===e&&t.push(s)}),t}get head_space(){return 6}get duration_line_height(){return 2}get duration_line_space(){return 4}get dot_width(){return 2}get dot_space(){return 2}get long_duration_space(){return 10}get long_duration_width(){return 20}getWidth(){return this.full_width}get modifiers_width(){let e=0;return this.modifiers.forEach(t=>{e+=t.getWidth()}),e}}class NumberedNoteHead{static get numberedNotationMapping(){let e=tone;switch(window&&window.sett&&window.sett.keySignature&&(e="C"),e){case"A":return{C:"3",D:"4",E:"5",F:"6",G:"7",A:"1",B:"2",R:"0",min:2.5,max:5.5};case"B":return{C:"2",D:"3",E:"4",F:"5",G:"6",A:"7",B:"1",R:"0",min:-.5,max:2.5};case"D":return{C:"7",D:"1",E:"2",F:"3",G:"4",A:"5",B:"6",R:"0",min:.5,max:3.5};case"E":return{C:"6",D:"7",E:"1",F:"2",G:"3",A:"4",B:"5",R:"0",min:1,max:4};case"F":return{C:"5",D:"6",E:"7",F:"1",G:"2",A:"3",B:"4",R:"0",min:1.5,max:4.5};case"G":case"Gb":return{C:"4",D:"5",E:"6",F:"7",G:"1",A:"2",B:"3",R:"0",min:2,max:5};case"Eb":return{C:"6",D:"7",E:"1",F:"2",G:"3",A:"4",B:"5",R:"0",min:1,max:4};case"D#":case"Db":return{C:"7",D:"1",E:"2",F:"3",G:"4",A:"5",B:"6",R:"0",min:.5,max:3.5};case"F#":return{C:"5",D:"6",E:"7",F:"1",G:"2",A:"3",B:"4",R:"0",min:1.5,max:4.5};case"Ab":case"G#":return{C:"3",D:"4",E:"5",F:"6",G:"7",A:"1",B:"2",R:"0",min:-1,max:2};case"Bb":case"A#":return{C:"2",D:"3",E:"4",F:"5",G:"6",A:"7",B:"1",R:"0",min:-.5,max:2.5};case"C#":case"Cb":default:return{C:"1",D:"2",E:"3",F:"4",G:"5",A:"6",B:"7",R:"0",min:0,max:3}}}tone_to_numbered_key(){var e=this.key.split("/"),t=e[0];t==="b"&&(t="R"),t=t.replace(new RegExp("#","g"),""),t=t.replace(new RegExp("n","g"),""),t.length>1&&(t=t.replace(new RegExp("b","g"),""));let s=0,r=0;this.note.stave&&this.note.stave.options&&this.note.stave.options.keySignature&&(tone=this.note.stave.options.keySignature);const o=this.note.getLine();return oNumberedNoteHead.numberedNotationMapping.max&&(r=Math.ceil((o-NumberedNoteHead.numberedNotationMapping.max)/3.5)),t.toUpperCase()==="R"&&(s=0,r=0),{key:NumberedNoteHead.numberedNotationMapping[t.toUpperCase()],td:r,bd:s}}constructor(e){this.key=e.key,this.x=e.x||0,this.y=e.y||0,this.idx=e.idx||0,this.note=e.note||0,this.meta=this.tone_to_numbered_key(),this.noteSize=e.noteSize||16,this.td=this.meta.td,this.bd=this.meta.bd}draw(e){let t=this.y;e.openGroup("numbered-note-head");var s=this.x+(this.note.ornament?-2:0);let r=t-this.note.unit_height-this.note.dot_space-(this.note.ornament?-4:2);for(let a=0;a1&&(l-=this.note.duration_line_space),t+=l}this.draw_dot(e,s+_text_width,t,this.note.dot_width),t+=this.note.dot_width+this.note.dot_space}e.closeGroup()}get height(){return this.note.note_height+(this.meta.bd+this.meta.td)*(this.note.dot_width+this.note.dot_space)}draw_dot(e,t,s,r){e.openGroup("numbered-note-dot"),e.beginPath(),e.arc(t,s,r,0,2*Math.PI),e.closePath(),e.fill(),e.closeGroup()}}function L(...i){Factory.DEBUG&&Vex.L("Vex.Flow.Factory",i)}const X=Vex.MakeException("FactoryError");function setDefaults$1(i={},e){const t=e.options;return i=Object.assign(e,i),i.options=Object.assign(t,i.options),i}class Factory{constructor(e){L("New factory: ",e);const t={stave:{space:10},renderer:{context:null,elementId:"",backend:Renderer.Backends.SVG,width:500,height:200,background:"#FFF"},font:{face:"Arial",point:10,style:""}};this.options=t,this.setOptions(e)}static newFromElementId(e,t=500,s=200){return new Factory({renderer:{elementId:e,width:t,height:s}})}reset(){this.renderQ=[],this.systems=[],this.staves=[],this.voices=[],this.stave=null}getOptions(){return this.options}setOptions(e){for(const t of["stave","renderer","font"])Object.assign(this.options[t],e[t]);(this.options.renderer.elementId!==null||this.options.renderer.context)&&this.initRenderer(),this.reset()}initRenderer(){const{elementId:e,backend:t,width:s,height:r,background:o}=this.options.renderer;if(e==="")throw new X("HTML DOM element not set in Factory");this.context=Renderer.buildContext(e,t,s,r,o)}getContext(){return this.context}setContext(e){return this.context=e,this}getStave(){return this.stave}getVoices(){return this.voices}space(e){return this.options.stave.space*e}Stave(e){e=setDefaults$1(e,{x:0,y:0,width:this.options.renderer.width-this.space(1),options:{spacing_between_lines_px:this.options.stave.space}});const t=new Stave(e.x,e.y,e.width,e.options);return this.staves.push(t),t.setContext(this.context),this.stave=t,t}TabStave(e){e=setDefaults$1(e,{x:0,y:0,width:this.options.renderer.width-this.space(1),options:{spacing_between_lines_px:this.options.stave.space*1.3}});const t=new TabStave(e.x,e.y,e.width,e.options);return this.staves.push(t),t.setContext(this.context),this.stave=t,t}StaveNote(e){const t=new StaveNote(e);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}GhostNote(e){const t=new GhostNote(e);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}TextNote(e){const t=new TextNote(e);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}NumberedNote(e){const t=new NumberedNote(e);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}BarNote(e){e=setDefaults$1(e,{type:"single",options:{}});const t=new BarNote(e.type);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}ClefNote(e){e=setDefaults$1(e,{type:"treble",options:{size:"default"}});const t=new ClefNote(e.type,e.options.size,e.options.annotation);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}TimeSigNote(e){e=setDefaults$1(e,{time:"4/4",options:{}});const t=new TimeSigNote(e.time);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}KeySigNote(e){const t=new KeySigNote(e.key,e.cancelKey,e.alterKey);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}TabNote(e){const t=new TabNote$1(e);return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}GraceNote(e){const t=new GraceNote(e);return this.stave&&t.setStave(this.stave),t.setContext(this.context),t}GraceNoteGroup(e){const t=new GraceNoteGroup(e.notes,e.slur);return t.setContext(this.context),t}Accidental(e){e=setDefaults$1(e,{type:null,options:{}});const t=new Accidental(e.type);return t.setContext(this.context),t}Annotation(e){e=setDefaults$1(e,{text:"p",vJustify:"below",hJustify:"center",fontFamily:"Times",fontSize:14,fontWeight:"bold italic",options:{}});const t=new Annotation(e.text);return t.setJustification(e.hJustify),t.setVerticalJustification(e.vJustify),t.setFont(e.fontFamily,e.fontSize,e.fontWeight),t.setContext(this.context),t}Articulation(e){e=setDefaults$1(e,{type:"a.",position:"above",options:{}});const t=new Articulation$1(e.type);return t.setPosition(e.position),t.setContext(this.context),t}TextDynamics(e){e=setDefaults$1(e,{text:"p",duration:"q",dots:0,line:0,options:{}});const t=new TextDynamics({text:e.text,line:e.line,duration:e.duration,dots:e.dots});return this.stave&&t.setStave(this.stave),t.setContext(this.context),this.renderQ.push(t),t}Fingering(e){e=setDefaults$1(e,{number:"0",position:"left",options:{}});const t=new FretHandFinger(e.number);return t.setPosition(e.position),t.setContext(this.context),t}StringNumber(e){e=setDefaults$1(e,{number:"0",position:"left",options:{}});const t=new StringNumber(e.number);return t.setPosition(e.position),t.setContext(this.context),t}TickContext(){return new TickContext().setContext(this.context)}ModifierContext(){return new ModifierContext}MultiMeasureRest(e){const t=new MultiMeasureRest(e.number_of_measures,e);return t.setContext(this.context),this.renderQ.push(t),t}Voice(e){e=setDefaults$1(e,{time:"4/4",options:{}});const t=new Voice$1(e.time);return this.voices.push(t),t}StaveConnector(e){e=setDefaults$1(e,{top_stave:null,bottom_stave:null,type:"double",options:{}});const t=new StaveConnector(e.top_stave,e.bottom_stave);return t.setType(e.type).setContext(this.context),this.renderQ.push(t),t}Formatter(){return new Formatter}Tuplet(e){e=setDefaults$1(e,{notes:[],options:{}});const t=new Tuplet$1(e.notes,e.options).setContext(this.context);return this.renderQ.push(t),t}Beam(e){e=setDefaults$1(e,{notes:[],options:{autoStem:!1,secondaryBeamBreaks:[]}});const t=new Beam$1(e.notes,e.options.autoStem).setContext(this.context);return t.breakSecondaryAt(e.options.secondaryBeamBreaks),this.renderQ.push(t),t}Curve(e){e=setDefaults$1(e,{from:null,to:null,options:{}});const t=new Curve(e.from,e.to,e.options).setContext(this.context);return this.renderQ.push(t),t}StaveTie(e){e=setDefaults$1(e,{from:null,to:null,first_indices:[0],last_indices:[0],text:null,options:{direction:void 0}});const t=new StaveTie({first_note:e.from,last_note:e.to,first_indices:e.first_indices,last_indices:e.last_indices},e.text);return e.options.direction&&t.setDirection(e.options.direction),t.setContext(this.context),this.renderQ.push(t),t}StaveLine(e){e=setDefaults$1(e,{from:null,to:null,first_indices:[0],last_indices:[0],options:{}});const t=new StaveLine({first_note:e.from,last_note:e.to,first_indices:e.first_indices,last_indices:e.last_indices});return e.options.text&&t.setText(e.options.text),e.options.font&&t.setFont(e.options.font),t.setContext(this.context),this.renderQ.push(t),t}VibratoBracket(e){e=setDefaults$1(e,{from:null,to:null,options:{harsh:!1}});const t=new VibratoBracket({start:e.from,stop:e.to});return e.options.line&&t.setLine(e.options.line),e.options.harsh&&t.setHarsh(e.options.harsh),t.setContext(this.context),this.renderQ.push(t),t}TextBracket(e){e=setDefaults$1(e,{from:null,to:null,text:"",options:{superscript:"",position:1}});const t=new TextBracket({start:e.from,stop:e.to,text:e.text,superscript:e.options.superscript,position:e.options.position});return e.options.line&&t.setLine(e.options.line),e.options.font&&t.setFont(e.options.font),t.setContext(this.context),this.renderQ.push(t),t}System(e={}){e.factory=this;const t=new System(e).setContext(this.context);return this.systems.push(t),t}EasyScore(e={}){return e.factory=this,new EasyScore(e)}PedalMarking(e={}){e=setDefaults$1(e,{notes:[],options:{style:"mixed"}});const t=new PedalMarking(e.notes);return t.setStyle(PedalMarking.StylesString[e.options.style]),t.setContext(this.context),this.renderQ.push(t),t}NoteSubGroup(e={}){e=setDefaults$1(e,{notes:[],options:{}});const t=new NoteSubGroup$1(e.notes);return t.setContext(this.context),t}draw(){this.systems.forEach(e=>e.setContext(this.context).format()),this.staves.forEach(e=>e.setContext(this.context).draw()),this.voices.forEach(e=>e.setContext(this.context).draw()),this.renderQ.forEach(e=>{e.isRendered()||e.setContext(this.context).draw()}),this.systems.forEach(e=>e.setContext(this.context).draw()),this.reset()}}function setDefaults(i,e){const t=e.options;return i=Object.assign(e,i),i.options=Object.assign(t,i.options),i}class System extends Element$1{constructor(e={}){super(),this.setAttribute("type","System"),this.setOptions(e),this.parts=[]}setOptions(e={}){this.options=setDefaults(e,{x:10,y:10,width:500,connector:null,spaceBetweenStaves:12,factory:null,debugFormatter:!1,formatIterations:0,options:{}}),this.factory=this.options.factory||new Factory({renderer:{el:null}})}setContext(e){return super.setContext(e),this.factory.setContext(e),this}addConnector(e="double"){return this.connector=this.factory.StaveConnector({top_stave:this.parts[0].stave,bottom_stave:this.parts[this.parts.length-1].stave,type:e}),this.connector}addStave(e){return e=setDefaults(e,{stave:null,voices:[],spaceAbove:0,spaceBelow:0,debugNoteMetrics:!1,options:{left_bar:!1}}),e.stave||(e.stave=this.factory.Stave({x:this.options.x,y:this.options.y,width:this.options.width,options:e.options})),e.voices.forEach(t=>t.setContext(this.context).setStave(e.stave).getTickables().forEach(s=>s.setStave(e.stave))),this.parts.push(e),e.stave}format(){const e=new Formatter;this.formatter=e;let t=this.options.y,s=0,r=[];const o=[];this.parts.forEach(l=>{t=t+l.stave.space(l.spaceAbove),l.stave.setY(t),e.joinVoices(l.voices),t=t+l.stave.space(l.spaceBelow),t=t+l.stave.space(this.options.spaceBetweenStaves),l.debugNoteMetrics&&(o.push({y:t,voice:l.voices[0]}),t+=15),r=r.concat(l.voices),s=Math.max(s,l.stave.getNoteStartX())}),this.parts.forEach(l=>l.stave.setNoteStartX(s));const a=this.options.width-(s-this.options.x)-Note.STAVEPADDING;e.format(r,a);for(let l=0;l{t.voice.getTickables().forEach(s=>Note.plotMetrics(e,s,t.y))})}}Vex.Flow=Flow;Vex.Flow.Element=Element$1;Vex.Flow.Fraction=Fraction;Vex.Flow.Renderer=Renderer;Vex.Flow.Formatter=Formatter;Vex.Flow.Music=Music;Vex.Flow.Glyph=Glyph;Vex.Flow.Stave=Stave;Vex.Flow.StaveNote=StaveNote;Vex.Flow.StaveModifier=StaveModifier;Vex.Flow.StaveTempo=StaveTempo;Vex.Flow.Voice=Voice$1;Vex.Flow.Accidental=Accidental;Vex.Flow.Beam=Beam$1;Vex.Flow.StaveTie=StaveTie;Vex.Flow.TabStave=TabStave;Vex.Flow.TabNote=TabNote$1;Vex.Flow.Bend=Bend;Vex.Flow.Vibrato=Vibrato;Vex.Flow.VibratoBracket=VibratoBracket;Vex.Flow.Note=Note;Vex.Flow.ModifierContext=ModifierContext;Vex.Flow.MultiMeasureRest=MultiMeasureRest;Vex.Flow.TickContext=TickContext;Vex.Flow.Articulation=Articulation$1;Vex.Flow.Annotation=Annotation;Vex.Flow.Barline=Barline;Vex.Flow.NoteHead=NoteHead;Vex.Flow.StaveConnector=StaveConnector;Vex.Flow.ClefNote=ClefNote;Vex.Flow.KeySignature=KeySignature;Vex.Flow.KeySigNote=KeySigNote;Vex.Flow.TimeSignature=TimeSignature;Vex.Flow.TimeSigNote=TimeSigNote;Vex.Flow.Stem=Stem;Vex.Flow.TabTie=TabTie;Vex.Flow.Clef=Clef;Vex.Flow.Dot=Dot;Vex.Flow.Modifier=Modifier;Vex.Flow.TabSlide=TabSlide;Vex.Flow.Tuplet=Tuplet$1;Vex.Flow.GraceNote=GraceNote;Vex.Flow.GraceTabNote=GraceTabNote;Vex.Flow.Tuning=Tuning;Vex.Flow.KeyManager=KeyManager;Vex.Flow.StaveHairpin=StaveHairpin;Vex.Flow.BoundingBox=BoundingBox;Vex.Flow.Stroke=Stroke;Vex.Flow.TextNote=TextNote;Vex.Flow.Curve=Curve;Vex.Flow.TextDynamics=TextDynamics;Vex.Flow.StaveLine=StaveLine;Vex.Flow.Ornament=Ornament;Vex.Flow.PedalMarking=PedalMarking;Vex.Flow.TextBracket=TextBracket;Vex.Flow.FretHandFinger=FretHandFinger;Vex.Flow.Repetition=Repetition$1;Vex.Flow.BarNote=BarNote;Vex.Flow.GhostNote=GhostNote;Vex.Flow.NoteSubGroup=NoteSubGroup$1;Vex.Flow.GraceNoteGroup=GraceNoteGroup;Vex.Flow.Tremolo=Tremolo;Vex.Flow.StringNumber=StringNumber;Vex.Flow.Crescendo=Crescendo;Vex.Flow.Volta=Volta;Vex.Flow.Font=Font;Vex.Flow.System=System;Vex.Flow.Factory=Factory;Vex.Flow.Parser=Parser;Vex.Flow.EasyScore=EasyScore;Vex.Flow.Registry=Registry;var SystemLinesEnum=(i=>(i[i.SingleThin=0]="SingleThin",i[i.DoubleThin=1]="DoubleThin",i[i.ThinBold=2]="ThinBold",i[i.BoldThinDots=3]="BoldThinDots",i[i.DotsThinBold=4]="DotsThinBold",i[i.DotsBoldBoldDots=5]="DotsBoldBoldDots",i[i.None=6]="None",i[i.Dotted=7]="Dotted",i[i.Dashed=8]="Dashed",i[i.Bold=9]="Bold",i[i.BoldThin=10]="BoldThin",i[i.DoubleBold=11]="DoubleBold",i[i.Tick=12]="Tick",i[i.Short=13]="Short",i))(SystemLinesEnum||{});class SystemLinesEnumHelper{static xmlBarlineStyleToSystemLinesEnum(e){return e==="regular"?0:e==="dotted"?7:e==="dashed"?8:e==="heavy"?9:e==="light-light"?1:e==="light-heavy"?2:e==="heavy-light"?10:e==="heavy-heavy"?11:e==="tick"?12:e==="short"?13:e==="none"?6:0}}class Matrix2D{constructor(){this.matrix=[];for(let e=0;e<2;e++){this.matrix[e]=[];for(let t=0;t<2;t++)this.matrix[e][t]=0}}static getRotationMatrix(e){const t=new Matrix2D,s=Math.cos(e),r=Math.sin(e);return t.matrix[0][0]=s,t.matrix[0][1]=-r,t.matrix[1][0]=r,t.matrix[1][1]=s,t}scalarMultiplication(e){for(let t=0;t<2;t++)for(let s=0;s<2;s++)this.matrix[t][s]*=e}getTransposeMatrix(){const e=new Matrix2D;for(let t=0;t<2;t++)for(let s=0;s<2;s++)e.matrix[t][s]=this.matrix[s][t];return e}vectorMultiplication(e){const t=new PointF2D;return t.x=e.x*this.matrix[0][0]+e.y*this.matrix[0][1],t.y=e.x*this.matrix[1][0]+e.y*this.matrix[1][1],t}}class MusicSheetErrors{constructor(){this.measureErrors={},this.errors=[],this.tempErrors=[]}finalizeMeasure(e){let t=this.measureErrors[e];t||(t=[]),this.measureErrors[e]=t.concat(this.tempErrors),this.tempErrors=[]}pushMeasureError(e){this.tempErrors.push(e)}push(e){this.errors.push(e)}}class Arpeggio{constructor(e,t=7){this.parentVoiceEntry=e,this.type=t,this.notes=[]}addNote(e){this.notes.push(e),e.Arpeggio=this}}var ArpeggioType=(i=>(i[i.BRUSH_DOWN=1]="BRUSH_DOWN",i[i.BRUSH_UP=2]="BRUSH_UP",i[i.ROLL_DOWN=3]="ROLL_DOWN",i[i.ROLL_UP=4]="ROLL_UP",i[i.RASQUEDO_DOWN=5]="RASQUEDO_DOWN",i[i.RASQUEDO_UP=6]="RASQUEDO_UP",i[i.ARPEGGIO_DIRECTIONLESS=7]="ARPEGGIO_DIRECTIONLESS",i))(ArpeggioType||{});class Beam{constructor(e=1,t=0){this.notes=[],this.extendedNoteList=[],this.BeamNumberOffsetToXML=0,this.BeamNumber=e,this.BeamNumberOffsetToXML=t}get Notes(){return this.notes}set Notes(e){this.notes=e}get ExtendedNoteList(){return this.extendedNoteList}set ExtendedNoteList(e){this.extendedNoteList=e}addNoteToBeam(e){e&&(e.NoteBeam=this,this.notes.push(e),this.extendedNoteList.push(e))}}class Voice{constructor(e,t){this.voiceEntries=[],this.volume=1,this.parent=e,this.visible=!0,this.audible=!0,this.following=!0,this.voiceId=t,this.uniqueVoiceId="I:"+this.parent.Id+" V: "+this.voiceId}get VoiceEntries(){return this.voiceEntries}get Parent(){return this.parent}get Visible(){return this.visible}set Visible(e){this.visible=e}get Audible(){return this.audible}set Audible(e){this.audible=e}get Following(){return this.following}set Following(e){this.following=e}get Solo(){return this.solo}set Solo(e){this.solo=e}get VoiceId(){return this.voiceId}get Volume(){return this.volume}set Volume(e){this.volume=e}toString(){return this.uniqueVoiceId}}class LinkedVoice extends Voice{constructor(e,t,s){super(e,t),this.master=s}get Master(){return this.master}}class Notehead{constructor(e,t,s=void 0){this.sourceNote=e,this.setShapeFromXml(t,s)}setShapeFromXml(e,t=void 0){this.shape=Notehead.ShapeTypeXmlToShape(e);let s=t;s===void 0&&(this.sourceNote?s=this.sourceNote.Length.Denominator>2:(loglevelExports.warn("notehead: sourceNote and filledXmlAttribute undefined."),s=!0)),this.filled=s}get SourceNote(){return this.sourceNote}get Shape(){return this.shape}get Filled(){return this.filled}static ShapeTypeXmlToShape(e){switch(e.toLowerCase()){case"normal":return 2;case"x":return 7;case"slash":return 4;case"diamond":return 1;case"square":return 5;case"la":return 5;case"do":case"triangle":return 6;case"rectangle":return 3;case"circle-x":return 0;default:return loglevelExports.info("unsupported/unhandled xml notehead '"+e+"'. Using normal notehead."),2}}}var NoteHeadShape=(i=>(i[i.CIRCLEX=0]="CIRCLEX",i[i.DIAMOND=1]="DIAMOND",i[i.NORMAL=2]="NORMAL",i[i.RECTANGLE=3]="RECTANGLE",i[i.SLASH=4]="SLASH",i[i.SQUARE=5]="SQUARE",i[i.TRIANGLE=6]="TRIANGLE",i[i.X=7]="X",i))(NoteHeadShape||{});class ITextTranslation{static translateText(e,t){if(!this.defaultTextTranslation)return t}}var NoteType=(i=>(i[i.UNDEFINED=0]="UNDEFINED",i[i._1024th=1]="_1024th",i[i._512th=2]="_512th",i[i._256th=3]="_256th",i[i._128th=4]="_128th",i[i._64th=5]="_64th",i[i._32nd=6]="_32nd",i[i._16th=7]="_16th",i[i.EIGTH=8]="EIGTH",i[i.QUARTER=9]="QUARTER",i[i.HALF=10]="HALF",i[i.WHOLE=11]="WHOLE",i[i.BREVE=12]="BREVE",i[i.LONG=13]="LONG",i[i.MAXIMA=14]="MAXIMA",i))(NoteType||{});class NoteTypeHandler{static NoteTypeToString(e){return this.NoteTypeXmlValues[e]}static StringToNoteType(e){const t=this.NoteTypeXmlValues.indexOf(e);return t!==-1?t:0}static getNoteDurationFromType(e){switch(e){case"1024th":return new Fraction$1(1,1024);case"512th":return new Fraction$1(1,512);case"256th":return new Fraction$1(1,256);case"128th":return new Fraction$1(1,128);case"64th":return new Fraction$1(1,64);case"32th":case"32nd":return new Fraction$1(1,32);case"16th":return new Fraction$1(1,16);case"eighth":return new Fraction$1(1,8);case"quarter":return new Fraction$1(1,4);case"half":return new Fraction$1(1,2);case"whole":return new Fraction$1(1,1);case"breve":return new Fraction$1(2,1);case"long":return new Fraction$1(4,1);case"maxima":return new Fraction$1(8,1);default:{const t=ITextTranslation.translateText("ReaderErrorMessages/NoteDurationError","Invalid note duration.");throw new MusicSheetReadingException(t)}}}}NoteTypeHandler.NoteTypeXmlValues=["","1024th","512th","256th","128th","64th","32nd","16th","eigth","quarter","half","whole","breve","long","maxima"];class OrnamentContainer{constructor(e){this.placement=PlacementEnum.Above,this.accidentalAbove=AccidentalEnum.NONE,this.accidentalBelow=AccidentalEnum.NONE,this.ornament=e}get GetOrnament(){return this.ornament}get AccidentalAbove(){return this.accidentalAbove}set AccidentalAbove(e){this.accidentalAbove=e}get AccidentalBelow(){return this.accidentalBelow}set AccidentalBelow(e){this.accidentalBelow=e}}var OrnamentEnum=(i=>(i[i.Trill=0]="Trill",i[i.Turn=1]="Turn",i[i.InvertedTurn=2]="InvertedTurn",i[i.DelayedTurn=3]="DelayedTurn",i[i.DelayedInvertedTurn=4]="DelayedInvertedTurn",i[i.Mordent=5]="Mordent",i[i.InvertedMordent=6]="InvertedMordent",i))(OrnamentEnum||{});class VerticalSourceStaffEntryContainer{constructor(e,t,s){this.staffEntries=[],this.comments=[],this.timestamp=t,this.staffEntries=new Array(s),this.parentMeasure=e}$get$(e){return this.staffEntries[e]}$set$(e,t){this.staffEntries[e]=t}get Timestamp(){return this.timestamp}set Timestamp(e){this.timestamp=e}get StaffEntries(){return this.staffEntries}set StaffEntries(e){this.staffEntries=e}get Comments(){return this.comments}set Comments(e){this.comments=e}get ParentMeasure(){return this.parentMeasure}set ParentMeasure(e){this.parentMeasure=e}getAbsoluteTimestamp(){return Fraction$1.plus(this.timestamp,this.parentMeasure.AbsoluteTimestamp)}}class SourceStaffEntry{constructor(e,t){this.voiceEntries=[],this.instructions=[],this.chordSymbolContainers=[],this.verticalContainerParent=e,this.parentStaff=t}get ParentStaff(){return this.parentStaff}get VerticalContainerParent(){return this.verticalContainerParent}get Timestamp(){if(this.VerticalContainerParent)return this.VerticalContainerParent.Timestamp}get AbsoluteTimestamp(){if(this.VerticalContainerParent)return Fraction$1.plus(this.VerticalContainerParent.ParentMeasure.AbsoluteTimestamp,this.VerticalContainerParent.Timestamp)}get VoiceEntries(){return this.voiceEntries}set VoiceEntries(e){this.voiceEntries=e}get Link(){return this.staffEntryLink}set Link(e){this.staffEntryLink=e}get Instructions(){return this.instructions}set Instructions(e){this.instructions=e}get ChordContainers(){return this.chordSymbolContainers}set ChordContainers(e){this.chordSymbolContainers=e}removeAllInstructionsOfTypeClefInstruction(){let e=0,t=0;for(;e0)return!0;return!1}hasTie(){for(let e=0,t=this.VoiceEntries.length;et.parentRepetition.StartIndex)return-1}if(e.alignment===0&&t.alignment===0){if(e.parentRepetition.EndIndext.parentRepetition.EndIndex)return-1}}return 0}}class RepetitionInstruction{constructor(e,t,s=1,r=void 0,o=void 0){this.endingIndices=void 0,this.measureIndex=e,o&&(this.endingIndices=o.slice()),this.type=t,this.alignment=s,this.parentRepetition=r}CompareTo(e){const t=e;if(this.measureIndex>t.measureIndex)return 1;if(this.measureIndex(i[i.StartLine=0]="StartLine",i[i.ForwardJump=1]="ForwardJump",i[i.BackJumpLine=2]="BackJumpLine",i[i.Ending=3]="Ending",i[i.DaCapo=4]="DaCapo",i[i.DalSegno=5]="DalSegno",i[i.Fine=6]="Fine",i[i.ToCoda=7]="ToCoda",i[i.DalSegnoAlFine=8]="DalSegnoAlFine",i[i.DaCapoAlFine=9]="DaCapoAlFine",i[i.DalSegnoAlCoda=10]="DalSegnoAlCoda",i[i.DaCapoAlCoda=11]="DaCapoAlCoda",i[i.Coda=12]="Coda",i[i.Segno=13]="Segno",i[i.None=14]="None",i))(RepetitionInstructionEnum||{}),AlignmentType=(i=>(i[i.Begin=0]="Begin",i[i.End=1]="End",i))(AlignmentType||{});let prevSourceMeasure=null;class SourceMeasure{constructor(e,t){this.printNewSystemXml=!1,this.printNewPageXml=!1,this.IsSystemStartMeasure=!1,this.hasLyrics=!1,this.hasMoodExpressions=!1,this.allRests=!1,this.isReducedToMultiRest=!1,this.multipleRestMeasureNumber=0,this.staffLinkedExpressions=[],this.tempoExpressions=[],this.verticalSourceStaffEntryContainers=[],this.graphicalMeasureErrors=[],this.firstRepetitionInstructions=[],this.lastRepetitionInstructions=[],this.metronomeNoteIndex=0,this.completeNumberOfStaves=e,this.implicitMeasure=!1,this.hasEndLine=!1,this.endingBarStyleXml="",this.endingBarStyleEnum=SystemLinesEnum.SingleThin,this.firstInstructionsStaffEntries=new Array(e),this.lastInstructionsStaffEntries=new Array(e),this.rules=t,this.TempoInBPM=0;for(let s=0;s1)return e[this.measureListIndex-1]}get Rules(){return this.rules}get VerticalMeasureList(){return this.verticalMeasureList}set VerticalMeasureList(e){this.verticalMeasureList=e}get TempoInBPM(){return this.tempoInBPM}set TempoInBPM(e){this.tempoInBPM=e}findOrCreateStaffEntry(e,t,s){let r,o;for(const l of this.verticalSourceStaffEntryContainers)if(l.Timestamp.Equals(e)){o=l;break}if(o)return o.StaffEntries[t]?r=o.StaffEntries[t]:(r=new SourceStaffEntry(o,s),o.StaffEntries[t]=r),{createdNewContainer:!1,staffEntry:r};const a=this.verticalSourceStaffEntryContainers[this.verticalSourceStaffEntryContainers.length-1];if(this.verticalSourceStaffEntryContainers.length===0||a.Timestamp.lt(e)){const l=new VerticalSourceStaffEntryContainer(this,e.clone(),this.completeNumberOfStaves);this.verticalSourceStaffEntryContainers.push(l),r=new SourceStaffEntry(l,s),l.StaffEntries[t]=r}else for(let l=this.verticalSourceStaffEntryContainers.length-1;l>=0;l--){if(this.verticalSourceStaffEntryContainers[l].Timestamp.lt(e)){const c=new VerticalSourceStaffEntryContainer(this,e.clone(),this.completeNumberOfStaves);this.verticalSourceStaffEntryContainers.splice(l+1,0,c),r=new SourceStaffEntry(c,s),c.StaffEntries[t]=r;break}if(l===0){const c=new VerticalSourceStaffEntryContainer(this,e.clone(),this.completeNumberOfStaves);this.verticalSourceStaffEntryContainers.splice(l,0,c),r=new SourceStaffEntry(c,s),c.StaffEntries[t]=r;break}}return{createdNewContainer:!0,staffEntry:r}}findOrCreateVoiceEntry(e,t){let s,r=!1;for(const o of e.VoiceEntries)if(o.ParentVoice===t){s=o;break}return s||(s=new VoiceEntry(e.Timestamp,t,e),r=!0),{createdVoiceEntry:r,voiceEntry:s}}getPreviousSourceStaffEntryFromIndex(e,t){for(let s=t-1;s>=0;s--)if(this.verticalSourceStaffEntryContainers[s][e])return this.verticalSourceStaffEntryContainers[s][e]}getVerticalContainerIndexByTimestamp(e){for(let t=0,s=this.VerticalSourceStaffEntryContainers.length;t=0;u--){const g=this.verticalSourceStaffEntryContainers[u][l+c];if(g!==void 0&&g.hasTie()&&a.lt(Fraction$1.plus(g.Timestamp,g.calculateMaxNoteLength()))){a=Fraction$1.plus(g.Timestamp,g.calculateMaxNoteLength());break}}}}r.push(a)}for(let o=0,a=r.length;o0)return!0}return!1}beginsWithLineRepetition(){for(let e=0,t=this.FirstRepetitionInstructions.length;e=0&&(t=this.verticalSourceStaffEntryContainers[s].StaffEntries[e],!t);s--);return t}canBeReducedToMultiRest(){var s,r,o,a,l,c;let e=!0,t=!1;for(const d of this.verticalSourceStaffEntryContainers)if(d){for(const m of d.StaffEntries)if(!(!m||!m.ParentStaff.ParentInstrument.Visible)){if(m.ChordContainers.length>0||(m.ParentStaff.hasLyrics&&(t=!0),this.firstRepetitionInstructions.length>0||this.lastRepetitionInstructions.length>0))return!1;for(const u of m.VoiceEntries){for(const g of u.Notes)if(!g.isRest()){e=!1;break}if(!e)break}}}if(!e||t||this.hasMoodExpressions||this.tempoExpressions.length>0)return!1;for(const d of this.staffLinkedExpressions)if(d.length>0)return!1;for(const d of this.lastInstructionsStaffEntries)for(let m=0,u=d==null?void 0:d.Instructions.length;m=0;t--)for(let s=0;s(i[i.Fingering=0]="Fingering",i[i.String=1]="String",i))(TechnicalInstructionType||{});class TechnicalInstruction{}class PlaybackNote{constructor(e,t){this.parentEntry=e,this.parentNote=t,this.ParentNote.PlaybackNote=this,this.Length=this.ParentNote.Length,t.Pitch!==void 0?this.ParentNote.ParentStaff.ParentInstrument.MidiInstrumentId===MidiInstrument.Percussion?this.MidiKey=PlaybackNote.noteToMidiDrumKey(t):this.MidiKey=t.Pitch.getHalfTone()+12:this.MidiKey=0}setLength(){this.ParentNote.NoteTie!==void 0&&this.ParentNote.NoteTie.StartNote===this.ParentNote&&(this.Length=this.ParentNote.NoteTie.Duration)}get ParentEntry(){return this.parentEntry}get ParentNote(){return this.parentNote}static noteToMidiDrumKey(e){var r;const t=e.Pitch.getHalfTone()-12,s=(r=e.Notehead)==null?void 0:r.Shape;switch(e.Pitch.Octave){case 1:switch(e.Pitch.FundamentalNote){case NoteEnum.D:switch(s){default:return 44}case NoteEnum.E:switch(s){default:return 35}case NoteEnum.F:switch(s){default:return 36}case NoteEnum.G:switch(s){default:return 41}case NoteEnum.A:switch(s){default:return 43}case NoteEnum.B:switch(s){case NoteHeadShape.TRIANGLE:return 54;default:return 47}default:return t}case 2:switch(e.Pitch.FundamentalNote){case NoteEnum.C:switch(s){case NoteHeadShape.X:return 37;default:return 38}case NoteEnum.D:switch(s){case NoteHeadShape.X:return 59;default:return 48}case NoteEnum.E:switch(s){case NoteHeadShape.X:return 42;case NoteHeadShape.CIRCLEX:return 46;case NoteHeadShape.TRIANGLE:return 56;default:return 50}case NoteEnum.F:switch(s){case NoteHeadShape.DIAMOND:return 53;default:return 51}case NoteEnum.G:switch(s){case NoteHeadShape.CIRCLEX:case NoteHeadShape.DIAMOND:return 46;default:return 42}case NoteEnum.A:switch(s){default:return 49}case NoteEnum.B:switch(s){default:return 57}default:return t}case 3:switch(e.Pitch.FundamentalNote){case NoteEnum.C:switch(s){case NoteHeadShape.CIRCLEX:return 52;default:return 55}default:return t}default:return t}}}class PlaybackEntry{constructor(e){this.notes=[],this.TimestampShift=new Fraction$1,this.parentVoiceEntry=e;for(const t of e.Notes)this.Notes.push(new PlaybackNote(this,t))}get ParentVoiceEntry(){return this.parentVoiceEntry}get Notes(){return this.notes}get Length(){if(this.Notes.length>0)return this.Notes[0].Length}set Length(e){for(const t of this.Notes)t.Length=e}get HasNotes(){return this.Notes.length>0}}class VoiceEntry{constructor(e,t,s,r=!0,o=!1,a=!1,l=!1){if(this.notes=[],this.graceVoiceEntriesBefore=[],this.graceVoiceEntriesAfter=[],this.articulations=[],this.playbackEntries=[],this.technicalInstructions=[],this.lyricsEntries=new Dictionary,this.wantedStemDirection=-1,this.stemDirectionXml=-1,this.stemDirection=-1,this.timestamp=e,this.parentVoice=t,this.parentSourceStaffEntry=s,this.isGrace=o,this.graceAfterMainNote=!1,this.graceNoteSlash=a,this.graceSlur=l,o||t.VoiceEntries.push(this),r&&s!==void 0){const c=s.VoiceEntries;c.indexOf(this)===-1&&c.push(this)}this.mainPlaybackEntry=new PlaybackEntry(this),this.PlaybackEntries.push(this.mainPlaybackEntry)}get ParentSourceStaffEntry(){return this.parentSourceStaffEntry}get ParentVoice(){return this.parentVoice}get Timestamp(){return this.timestamp}set Timestamp(e){this.timestamp=e}get Notes(){return this.notes}addNote(e){this.notes.push(e),!e.isRest()&&(e.NoteTie===void 0||e.NoteTie.StartNote===e)&&this.MainPlaybackEntry.Notes.push(new PlaybackNote(this.MainPlaybackEntry,e))}get GraceVoiceEntriesBefore(){return this.graceVoiceEntriesBefore}set GraceVoiceEntriesBefore(e){this.graceVoiceEntriesBefore=e;for(const t of this.graceVoiceEntriesBefore)t.parentSourceStaffEntry=this.ParentSourceStaffEntry}get GraceVoiceEntriesAfter(){return this.graceVoiceEntriesAfter}set GraceVoiceEntriesAfter(e){this.graceVoiceEntriesAfter=e;for(const t of this.graceVoiceEntriesAfter)t.parentSourceStaffEntry=this.ParentSourceStaffEntry}get IsGrace(){return this.isGrace}set IsGrace(e){this.isGrace=e}get GraceAfterMainNote(){return this.graceAfterMainNote}set GraceAfterMainNote(e){this.graceAfterMainNote=e}get GraceNoteSlash(){return this.graceNoteSlash}set GraceNoteSlash(e){this.graceNoteSlash=e}get GraceSlur(){return this.graceSlur}set GraceSlur(e){this.graceSlur=e}get Articulations(){return this.articulations}get PlaybackEntries(){return this.playbackEntries}get Fermata(){return this.fermata}get MainPlaybackEntry(){return this.mainPlaybackEntry}set MainPlaybackEntry(e){this.mainPlaybackEntry=e}removeMainPlaybackEntry(){this.mainPlaybackEntry!==void 0&&this.removePlaybackEntry(this.mainPlaybackEntry)}removePlaybackEntry(e){this.mainPlaybackEntry===e&&(this.mainPlaybackEntry=void 0);const t=this.playbackEntries.indexOf(e);t>-1&&this.playbackEntries.splice(t,1)}get TechnicalInstructions(){return this.technicalInstructions}get LyricsEntries(){return this.lyricsEntries}get Arpeggio(){return this.arpeggio}set Arpeggio(e){this.arpeggio=e}get OrnamentContainer(){return this.ornamentContainer}set OrnamentContainer(e){this.ornamentContainer=e}set WantedStemDirection(e){this.wantedStemDirection=e}get WantedStemDirection(){return this.wantedStemDirection}set StemDirectionXml(e){this.stemDirectionXml=e}get StemDirectionXml(){return this.stemDirectionXml}set StemDirection(e){this.stemDirection=e}get StemDirection(){return this.stemDirection}get StemColorXml(){return this.stemColorXml}set StemColorXml(e){this.stemColorXml=e}get StemColor(){return this.stemColor}set StemColor(e){this.stemColor=e}get VolumeModifier(){return this.volumeModifier}set VolumeModifier(e){this.volumeModifier=e}get DurationModifier(){return this.durationModifier}set DurationModifier(e){this.durationModifier=e}hasArticulation(e){for(const t of this.articulations)if(t.Equals(e))return!0;return!1}static isSupportedArticulation(e){switch(e){case 0:case 1:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 26:case 24:return!0;default:return!1}}hasTie(){for(let e=0,t=this.Notes.length;e0)return!0;return!1}isStaccato(){for(const e of this.Articulations)if(e.articulationEnum===5)return!0;return!1}isAccent(){for(const e of this.Articulations)if(e.articulationEnum===0||e.articulationEnum===1)return!0;return!1}getVerseNumberForLyricEntry(e){let t=1;return this.lyricsEntries.forEach((s,r)=>{e===r&&(t=s)}),t}}var ArticulationEnum=(i=>(i[i.accent=0]="accent",i[i.strongaccent=1]="strongaccent",i[i.marcatoup=2]="marcatoup",i[i.marcatodown=3]="marcatodown",i[i.invertedstrongaccent=4]="invertedstrongaccent",i[i.staccato=5]="staccato",i[i.staccatissimo=6]="staccatissimo",i[i.spiccato=7]="spiccato",i[i.tenuto=8]="tenuto",i[i.fermata=9]="fermata",i[i.invertedfermata=10]="invertedfermata",i[i.breathmark=11]="breathmark",i[i.caesura=12]="caesura",i[i.lefthandpizzicato=13]="lefthandpizzicato",i[i.naturalharmonic=14]="naturalharmonic",i[i.snappizzicato=15]="snappizzicato",i[i.upbow=16]="upbow",i[i.downbow=17]="downbow",i[i.scoop=18]="scoop",i[i.plop=19]="plop",i[i.doit=20]="doit",i[i.falloff=21]="falloff",i[i.stress=22]="stress",i[i.unstress=23]="unstress",i[i.detachedlegato=24]="detachedlegato",i[i.otherarticulation=25]="otherarticulation",i[i.bend=26]="bend",i))(ArticulationEnum||{}),StemDirectionType=(i=>(i[i.Undefined=-1]="Undefined",i[i.Up=0]="Up",i[i.Down=1]="Down",i[i.None=2]="None",i[i.Double=3]="Double",i))(StemDirectionType||{}),SystemLinePosition=(i=>(i[i.MeasureBegin=0]="MeasureBegin",i[i.MeasureEnd=1]="MeasureEnd",i))(SystemLinePosition||{});class GraphicalLabel extends Clickable{constructor(e,t,s,r,o=void 0){super(),this.label=e,this.boundingBox=new BoundingBox$1(this,o),this.label.fontHeight=t,this.label.textAlignment=s,this.rules=r,this.rules.MpatMode&&this.label.text==="TRIO"&&(this.label.fontFamily="Arial")}get Label(){return this.label}toString(){return`${this.label.text} (${this.boundingBox.RelativePosition.x},${this.boundingBox.RelativePosition.y})`}setLabelPositionAndShapeBorders(){var l,c;if(this.Label.text.trim()==="")return;this.TextLines=[];const e=(c=(l=this.rules)==null?void 0:l.LabelMarginBorderFactor)!=null?c:.1,t=this.Label.text.split(/[\n\r]+/g),s=t.length;let r=0;for(let d=0;d0&&this.TextLines.length>1&&(o+=this.rules.SpacingBetweenTextLines*s/10);const a=this.PositionAndShape;switch(this.Label.textAlignment){case TextAlignmentEnum.CenterBottom:a.BorderTop=-o,a.BorderLeft=-r/2,a.BorderBottom=0,a.BorderRight=r/2;break;case TextAlignmentEnum.CenterCenter:a.BorderTop=-o/2,a.BorderLeft=-r/2,a.BorderBottom=o/2,a.BorderRight=r/2;break;case TextAlignmentEnum.CenterTop:a.BorderTop=0,a.BorderLeft=-r/2,a.BorderBottom=o,a.BorderRight=r/2;break;case TextAlignmentEnum.LeftBottom:a.BorderTop=-o,a.BorderLeft=0,a.BorderBottom=0,a.BorderRight=r;break;case TextAlignmentEnum.LeftCenter:a.BorderTop=-o/2,a.BorderLeft=0,a.BorderBottom=o/2,a.BorderRight=r;break;case TextAlignmentEnum.LeftTop:a.BorderTop=0,a.BorderLeft=0,a.BorderBottom=o,a.BorderRight=r;break;case TextAlignmentEnum.RightBottom:a.BorderTop=-o,a.BorderLeft=-r,a.BorderBottom=0,a.BorderRight=0;break;case TextAlignmentEnum.RightCenter:a.BorderTop=-o/2,a.BorderLeft=-r,a.BorderBottom=o/2,a.BorderRight=0;break;case TextAlignmentEnum.RightTop:a.BorderTop=0,a.BorderLeft=-r,a.BorderBottom=o,a.BorderRight=0;break}a.BorderMarginTop=a.BorderTop-o*e,a.BorderMarginLeft=a.BorderLeft-o*e,a.BorderMarginBottom=a.BorderBottom+o*e,a.BorderMarginRight=a.BorderRight+o*e}}class Label{constructor(e="",t=TextAlignmentEnum.CenterBottom,s=void 0,r=!0){this.IsCreditLabel=!1,this.text=e,this.print=r,this.textAlignment=t,this.font=s,this.fontFamily=void 0}set font(e){this.fontEnumValue=e,this.fontFamily=FontStringNames[e]}get font(){return this.fontEnumValue}ToString(){return this.text}}const SpeedTag={Grava:40,Largo:46,Lento:52,Adagio:56,Larghetto:60,Andante:66,Anderato:69,Andantino:69,Moderato:88,Allegretto:108,"Allegro Moderato":108,Allegro:132,Vivace:152,Vivo:160,Vivacissimo:168,Presto:184,Prestissimo:208},SpecialMarks=["纯律","纯律结束"],HideWords=["跳过下一个","b","#","§","º","X"],GradientWords=["poco rit.","rall.","rit.","accel.","molto rit.","molto rall","lentando","poco accel.","calando"],GRADIENT_SPEED_CLOSE_TAG="结束范围速度",GRADIENT_SPEED_RESET_TAG="a tempo",SpecialWords=[GRADIENT_SPEED_CLOSE_TAG],SpeedKeyword="速度 ",SpeedHiddenKeyword="仅文本速度 ";function isSpeedKeyword(i){return i.indexOf(SpeedKeyword)===0}function isSpeedHiddenKeyword(i){return i.indexOf(SpeedHiddenKeyword)===0}function formatSpeedKeyword(i){return i.replace(SpeedHiddenKeyword,"").replace(SpeedKeyword,"")}function isGradientWords(i){return GradientWords.includes(i)}function isSpecialMark(i){return[...Object.keys(SpeedTag),...SpecialMarks,...SpecialWords,...HideWords].map(e=>e.trim().toLocaleUpperCase()).includes(i.toLocaleUpperCase().trim())}function isTopFont(i){return[TextAlignmentEnum.CenterTop,TextAlignmentEnum.RightTop].includes(i)}var MusicSymbol=(i=>(i[i.Unused_first_Symbol=0]="Unused_first_Symbol",i[i.BLACK_HEAD=1]="BLACK_HEAD",i[i.UPWARDS_TAIL=2]="UPWARDS_TAIL",i[i.DOWNWARDS_TAIL=3]="DOWNWARDS_TAIL",i[i.UPWARDS_DOUBLE_TAIL=4]="UPWARDS_DOUBLE_TAIL",i[i.DOWNWARDS_DOUBLE_TAIL=5]="DOWNWARDS_DOUBLE_TAIL",i[i.UPWARDS_TRIPLE_TAIL=6]="UPWARDS_TRIPLE_TAIL",i[i.DOWNWARDS_TRIPLE_TAIL=7]="DOWNWARDS_TRIPLE_TAIL",i[i.UPWARDS_QUAD_TAIL=8]="UPWARDS_QUAD_TAIL",i[i.DOWNWARDS_QUAD_TAIL=9]="DOWNWARDS_QUAD_TAIL",i[i.ROUND_HEAD=10]="ROUND_HEAD",i[i.WHITE_HEAD=11]="WHITE_HEAD",i[i.G_CLEF=12]="G_CLEF",i[i.F_CLEF=13]="F_CLEF",i[i.C_CLEF=14]="C_CLEF",i[i.BREVE=15]="BREVE",i[i.BREVE_REST=16]="BREVE_REST",i[i.COMMON_TIME=17]="COMMON_TIME",i[i.CUT_TIME=18]="CUT_TIME",i[i.WHOLE_REST=19]="WHOLE_REST",i[i.HALF_REST=20]="HALF_REST",i[i.QUARTER_REST=21]="QUARTER_REST",i[i.EIGHTH_REST=22]="EIGHTH_REST",i[i.SIXTEENTH_REST=23]="SIXTEENTH_REST",i[i.THIRTYSECOND_REST=24]="THIRTYSECOND_REST",i[i.SIXTYFOURTH_REST=25]="SIXTYFOURTH_REST",i[i.FLAT=26]="FLAT",i[i.SHARP=27]="SHARP",i[i.NATURAL=28]="NATURAL",i[i.DOUBLE_FLAT=29]="DOUBLE_FLAT",i[i.DOUBLE_SHARP=30]="DOUBLE_SHARP",i[i.ZERO=31]="ZERO",i[i.ONE=32]="ONE",i[i.TWO=33]="TWO",i[i.THREE=34]="THREE",i[i.FOUR=35]="FOUR",i[i.FIVE=36]="FIVE",i[i.SIX=37]="SIX",i[i.SEVEN=38]="SEVEN",i[i.EIGHT=39]="EIGHT",i[i.NINE=40]="NINE",i[i.DOT=41]="DOT",i[i.FERMATA=42]="FERMATA",i[i.INVERTED_FERMATA=43]="INVERTED_FERMATA",i[i.SPICCATO=44]="SPICCATO",i[i.TENUTO=45]="TENUTO",i[i.MARCATO=46]="MARCATO",i[i.MARCATISSIMO=47]="MARCATISSIMO",i[i.INVERTED_MARCATISSIMO=48]="INVERTED_MARCATISSIMO",i[i.P=49]="P",i[i.F=50]="F",i[i.S=51]="S",i[i.Z=52]="Z",i[i.M=53]="M",i[i.R=54]="R",i[i.SEGNO=55]="SEGNO",i[i.CODA=56]="CODA",i[i.DRUM_CLEF=57]="DRUM_CLEF",i[i.G_CLEF_SUB8=58]="G_CLEF_SUB8",i[i.G_CLEF_SUPER8=59]="G_CLEF_SUPER8",i[i.G_CLEF_SUB15=60]="G_CLEF_SUB15",i[i.G_CLEF_SUPER15=61]="G_CLEF_SUPER15",i[i.F_CLEF_SUB8=62]="F_CLEF_SUB8",i[i.F_CLEF_SUPER8=63]="F_CLEF_SUPER8",i[i.F_CLEF_SUB15=64]="F_CLEF_SUB15",i[i.F_CLEF_SUPER15=65]="F_CLEF_SUPER15",i[i.DOWN_BOW=66]="DOWN_BOW",i[i.MORDENT=67]="MORDENT",i[i.INVERTED_MORDENT=68]="INVERTED_MORDENT",i[i.TURN=69]="TURN",i[i.INVERTED_TURN=70]="INVERTED_TURN",i[i.LEFTHAND_PIZZICATO=71]="LEFTHAND_PIZZICATO",i[i.RELEASE_PED=72]="RELEASE_PED",i[i.ENGAGE_PED=73]="ENGAGE_PED",i[i.VA8=74]="VA8",i[i.VB8=75]="VB8",i[i.TRILL=76]="TRILL",i[i.MA15=77]="MA15",i[i.MB15=78]="MB15",i[i.HIGH=79]="HIGH",i[i.PLAY=80]="PLAY",i[i.MIC=81]="MIC",i[i.SNAP_PIZZICATO=82]="SNAP_PIZZICATO",i[i.NATURAL_HARMONIC=83]="NATURAL_HARMONIC",i[i.EditPen=84]="EditPen",i[i.PEDAL_BRACKET=85]="PEDAL_BRACKET",i[i.PEDAL_MIXED=86]="PEDAL_MIXED",i[i.PEDAL_SYMBOL=87]="PEDAL_SYMBOL",i))(MusicSymbol||{}),MusicSymbolDrawingStyle=(i=>(i[i.Normal=0]="Normal",i[i.Disabled=1]="Disabled",i[i.Selected=2]="Selected",i[i.Clickable=3]="Clickable",i[i.PlaybackSymbols=4]="PlaybackSymbols",i[i.FollowSymbols=5]="FollowSymbols",i[i.QFeedbackNotFound=6]="QFeedbackNotFound",i[i.QFeedbackOk=7]="QFeedbackOk",i[i.QFeedbackPerfect=8]="QFeedbackPerfect",i[i.Debug1=9]="Debug1",i[i.Debug2=10]="Debug2",i[i.Debug3=11]="Debug3",i))(MusicSymbolDrawingStyle||{}),PhonicScoreModes=(i=>(i[i.Following=0]="Following",i[i.Midi=1]="Midi",i[i.Manual=2]="Manual",i))(PhonicScoreModes||{});class LabelRenderSpecs{}class MusicSheetDrawer{constructor(e,t){this.drawableBoundingBoxElement="None",this.skyLineVisible=!1,this.bottomLineVisible=!1,this.phonicScoreMode=PhonicScoreModes.Manual,this.textMeasurer=e,this.splitScreenLineColor=-1,this.drawingParameters=t,this.rules=t.Rules}set Mode(e){this.phonicScoreMode=e}drawSheet(e){if(this.graphicalMusicSheet=e,this.rules=e.ParentMusicSheet.Rules,this.drawSplitScreenLine(),this.drawingParameters.drawCursors)for(const s of e.Cursors){if(!s)continue;const r=new BoundingBox$1(s);r.AbsolutePosition=s.Start,r.BorderBottom=s.End.y-s.Start.y,r.BorderRight=s.Width/2,r.BorderLeft=-s.Width/2,this.isVisible(r)&&this.drawLineAsVerticalRectangle(s,GraphicalLayers.Cursor)}this.drawingParameters.drawScrollIndicator&&this.drawScrollIndicator();const t=Math.min(this.graphicalMusicSheet.MusicPages.length,this.rules.MaxPageToDrawNumber);for(let s=0;sZ[0]).filter(Boolean))||[],ne=[];let fe=!1;for(let Z=0;ZZ.x-K.x))==null?void 0:_[0])==null?void 0:C.measure;break}}}catch(J){console.log("🚀 ~ error",J)}let T=0;k?T=((P=k.stave)==null?void 0:P.end_x)||0:T=((I=s.sourceNote.SourceMeasure.VerticalMeasureList[0])==null?void 0:I.getVFStave()).end_x;const V=0;o.ScreenPosition.x=T,o.ScreenPosition.y=G===0?(e.PositionAndShape.Parent.AbsolutePosition.y-3-V)*10:G*10}const c=["C","G","D","A","E","B","F#","C#","G#","F","Bb","Eb","Ab","Db","Gb","Cb","Fb","D#","A#","E#"];c.includes(r.text)&&(o.ScreenPosition.y=(e.PositionAndShape.Parent.AbsolutePosition.y+e.PositionAndShape.Parent.BorderTop+e.PositionAndShape.Parent.BorderMarginTop)*10),["play","listen"].includes(r.text.toLocaleLowerCase())&&r.textAlignment===TextAlignmentEnum.LeftBottom&&(o.ScreenPosition.y=(e.PositionAndShape.Parent.AbsolutePosition.y-1+e.PositionAndShape.Parent.BorderBottom)*10);const d=["ffp","p-f","sfzp","szf","sffzp"];for(let G=0;G0&&(isTopFont(e.Label.textAlignment)||[TextAlignmentEnum.CenterBottom].includes(e.Label.textAlignment))){let G=-1,B=!1;for(const k of(l==null?void 0:l.AbstractExpressions)||[])if(k.Label===e?G=(R=k==null?void 0:k.parentMeasure)==null?void 0:R.measureListIndex:(N=k.expression)!=null&&N.TempoInBpm&&(B=k.expression.TempoInBpm>0),B&&G>-1){o.ScreenPosition.y-=4*10;break}}this.rules.DYMusicScoreType==="jianpu"?isNaN(parseInt(e.Label.text,10))&&this.renderLabel(e,t,o):this.renderLabel(e,t,o)}calculateLabel(e){const t=new LabelRenderSpecs,s=e.Label,r=new BoundingBox$1(this);r.AbsolutePosition.x=e.PositionAndShape.AbsolutePosition.x,r.AbsolutePosition.y=e.PositionAndShape.AbsolutePosition.y||e.PositionAndShape.Parent.AbsolutePosition.y,t.ScreenPosition=this.applyScreenTransformation(r.AbsolutePosition),t.FontHeightInPixel=this.calculatePixelDistance(s.fontHeight);const o=this.calculatePixelDistance(e.PositionAndShape.Size.width);switch(t.BitmapWidth=Math.ceil(o),t.BitmapHeight=e.TextLines?Math.ceil(t.FontHeightInPixel*(.2+e.TextLines.length)):10,s.textAlignment){case TextAlignmentEnum.LeftTop:t.ScreenPosition.x-=t.BitmapWidth/2,t.ScreenPosition.y+=t.BitmapHeight*1.5;break;case TextAlignmentEnum.LeftCenter:t.ScreenPosition.y-=t.BitmapHeight/2;break;case TextAlignmentEnum.LeftBottom:t.ScreenPosition.y-=t.BitmapHeight;break;case TextAlignmentEnum.CenterTop:t.ScreenPosition.x-=t.BitmapWidth/2;break;case TextAlignmentEnum.CenterCenter:t.ScreenPosition.x-=t.BitmapWidth/2,t.ScreenPosition.y-=t.BitmapHeight/2;break;case TextAlignmentEnum.CenterBottom:t.ScreenPosition.x-=t.BitmapWidth/2,t.ScreenPosition.y-=t.BitmapHeight;break;case TextAlignmentEnum.RightTop:t.ScreenPosition.x-=t.BitmapWidth;break;case TextAlignmentEnum.RightCenter:t.ScreenPosition.x-=t.BitmapWidth,t.ScreenPosition.y-=t.BitmapHeight/2;break;case TextAlignmentEnum.RightBottom:t.ScreenPosition.x-=t.BitmapWidth,t.ScreenPosition.y-=t.BitmapHeight;break;default:throw new ArgumentOutOfRangeException("")}return t}applyScreenTransformations(e){const t=[];for(const s of e)t.push(this.applyScreenTransformation(s));return t}drawSplitScreenLine(){}renderRectangle(e,t,s,r=void 0,o=1){throw new Error("not implemented")}drawScrollIndicator(){}drawSelectionStartSymbol(e){}drawSelectionEndSymbol(e){}renderLabel(e,t,s){throw new Error("not implemented")}renderSystemToScreen(e,t,s){}drawSkyLine(e){}drawBottomLine(e){}drawInstrumentBrace(e,t){}drawGroupBracket(e,t){}isVisible(e){return!0}drawMusicSystem(e){const t=this.getSystemAbsBoundingRect(e),s=this.getSytemBoundingBoxInPixels(t);this.drawMusicSystemComponents(e,s,t)}getSytemBoundingBoxInPixels(e){const t=this.applyScreenTransformationForRect(e);return t.x=Math.round(t.x),t.y=Math.round(t.y),t}getSystemAbsBoundingRect(e){const t=e.PositionAndShape.BoundingRectangle;return new RectangleF2D(e.PositionAndShape.AbsolutePosition.x+e.PositionAndShape.BorderLeft-1,e.PositionAndShape.AbsolutePosition.y+e.PositionAndShape.BorderTop-1,t.width+6,t.height+2)}drawMusicSystemComponents(e,t,s){const r=this.graphicalMusicSheet.SelectionStartSymbol,o=this.graphicalMusicSheet.SelectionEndSymbol;this.drawingParameters.drawSelectionStartSymbol&&r!==void 0&&this.isVisible(r.PositionAndShape)&&this.drawSelectionStartSymbol(r),this.drawingParameters.drawSelectionEndSymbol&&o!==void 0&&this.isVisible(o.PositionAndShape)&&this.drawSelectionEndSymbol(o);for(const c of e.StaffLines)this.drawStaffLine(c),this.rules.RenderLyrics&&(c.LyricsDashes.length>0&&this.drawDashes(c.LyricsDashes),c.LyricLines.length>0&&this.drawLyricLines(c.LyricLines,c));for(const c of e.SystemLines)this.drawSystemLineObject(c);if(e.Parent===e.Parent.Parent.MusicPages[0])for(const c of e.Labels)c.SVGNode=this.drawLabel(c,GraphicalLayers.Notes);const a=this.graphicalMusicSheet.ParentMusicSheet.Instruments,l=a.filter(c=>c.Visible).length;for(const c of e.InstrumentBrackets)this.drawInstrumentBrace(c,e);if(a.length>0)if(l>1)for(const c of e.GroupBrackets)this.drawGroupBracket(c,e);else for(const c of e.GroupBrackets)c.Visible=!1;if(!this.leadSheet)for(const c of e.MeasureNumberLabels)c.SVGNode=this.drawLabel(c,GraphicalLayers.Notes);for(const c of e.StaffLines)this.drawStaffLineSymbols(c);this.drawingParameters.drawMarkedAreas&&this.drawMarkedAreas(e)}activateSystemRendering(e,t,s,r){return!0}drawSystemLineObject(e){}drawStaffLine(e){for(const t of e.Measures)this.drawMeasure(t);this.rules.RenderLyrics&&e.LyricsDashes.length>0&&this.drawDashes(e.LyricsDashes),this.drawOctaveShifts(e),this.drawPedals(e),this.drawWavyLines(e),this.drawExpressions(e),this.skyLineVisible&&this.drawSkyLine(e),this.bottomLineVisible&&this.drawBottomLine(e)}drawLyricLines(e,t){t.LyricLines.forEach(s=>{s.Start.y+=t.PositionAndShape.AbsolutePosition.y,s.End.y+=t.PositionAndShape.AbsolutePosition.y,s.Start.x+=t.PositionAndShape.AbsolutePosition.x,s.End.x+=t.PositionAndShape.AbsolutePosition.x,this.drawGraphicalLine(s,this.rules.LyricUnderscoreLineWidth)})}drawExpressions(e){}drawGraphicalLine(e,t,s="black"){return this.drawLine(e.Start,e.End,s,t)}drawLine(e,t,s="#FF0000FF",r){}drawDashes(e){e.forEach(t=>t.SVGNode=this.drawLabel(t,GraphicalLayers.Notes))}drawOctaveShifts(e){}drawStaffLines(e){if(e.StaffLines){const t=e.PositionAndShape.AbsolutePosition;for(let s=0;s<5;s++)this.drawLineAsHorizontalRectangleWithOffset(e.StaffLines[s],t,GraphicalLayers.Notes)}}drawSymbol(e,t,s,r=1,o=GraphicalLayers.Notes){}get leadSheet(){return this.graphicalMusicSheet.LeadSheet}set leadSheet(e){this.graphicalMusicSheet.LeadSheet=e}drawPage(e){if(this.isVisible(e.PositionAndShape)){for(const t of e.MusicSystems)this.isVisible(t.PositionAndShape)&&this.drawMusicSystem(t);if(e===e.Parent.MusicPages[0])for(const t of e.Labels)t.SVGNode=this.drawLabel(t,GraphicalLayers.Notes);this.drawableBoundingBoxElement&&this.drawBoundingBoxes(e.PositionAndShape,0,this.drawableBoundingBoxElement)}}drawBoundingBoxes(e,t=0,s="all"){const r=e.DataObject.constructor.name;let o=!1;s==="all"&&(o=!0),(o||r===s)&&this.drawBoundingBox(e,void 0,!0,r,t),t++,e.ChildElements.forEach(a=>this.drawBoundingBoxes(a,t,s))}drawBoundingBox(e,t=void 0,s=!1,r=void 0,o=0){let a=new RectangleF2D(e.AbsolutePosition.x+e.BorderMarginLeft,e.AbsolutePosition.y+e.BorderMarginTop,e.BorderMarginRight-e.BorderMarginLeft,e.BorderMarginBottom-e.BorderMarginTop);s&&(this.drawLineAsHorizontalRectangle(new GraphicalLine(new PointF2D(e.AbsolutePosition.x-1,e.AbsolutePosition.y),new PointF2D(e.AbsolutePosition.x+1,e.AbsolutePosition.y),.1,OutlineAndFillStyleEnum.BaseWritingColor,t),o-1),this.drawLineAsVerticalRectangle(new GraphicalLine(new PointF2D(e.AbsolutePosition.x,e.AbsolutePosition.y-1),new PointF2D(e.AbsolutePosition.x,e.AbsolutePosition.y+1),.1,OutlineAndFillStyleEnum.BaseWritingColor,t),o-1)),a=this.applyScreenTransformationForRect(a);const l=this.renderRectangle(a,GraphicalLayers.Background,o,t,.5);if(r){const c=new Label(r),d=new LabelRenderSpecs;d.BitmapWidth=a.width,d.BitmapHeight=a.height,d.FontHeightInPixel=a.height,d.ScreenPosition=new PointF2D(a.x,a.y+12),this.renderLabel(new GraphicalLabel(c,.8,TextAlignmentEnum.CenterCenter,this.rules),o,d)}return l}drawMarkedAreas(e){for(const t of e.GraphicalMarkedAreas)t&&(t.systemRectangle&&this.drawRectangle(t.systemRectangle,GraphicalLayers.Background),t.settings&&(t.settings.SVGNode=this.drawLabel(t.settings,GraphicalLayers.Comment)),t.labelRectangle&&this.drawRectangle(t.labelRectangle,GraphicalLayers.Background),t.label&&(t.label.SVGNode=this.drawLabel(t.label,GraphicalLayers.Comment)))}drawStaffLineSymbols(e){const t=e.ParentStaff.ParentInstrument,s=e.PositionAndShape.AbsolutePosition.x,r=e.PositionAndShape.AbsolutePosition.y+2,o=e.PositionAndShape.BorderRight;t.highlight&&this.drawingParameters.drawHighlights&&this.drawLineAsHorizontalRectangle(new GraphicalLine(new PointF2D(s,r),new PointF2D(s+o,r),4,OutlineAndFillStyleEnum.Highlighted),GraphicalLayers.Highlight);let a=MusicSymbolDrawingStyle.Disabled,l=MusicSymbol.PLAY,c=this.drawingParameters.drawActivitySymbols;switch(this.phonicScoreMode){case PhonicScoreModes.Midi:l=MusicSymbol.PLAY,this.midiPlaybackAvailable&&e.ParentStaff.audible&&(a=MusicSymbolDrawingStyle.PlaybackSymbols);break;case PhonicScoreModes.Following:l=MusicSymbol.MIC,e.ParentStaff.following&&(a=MusicSymbolDrawingStyle.FollowSymbols);break;default:c=!1;break}if(c){const d=new PointF2D(s+o+2,r);this.drawSymbol(l,a,d)}if(this.drawingParameters.drawErrors)for(const d of e.Measures){const m=d.PositionAndShape,u=m.AbsolutePosition.x,g=m.AbsolutePosition.y+2;d.hasError&&this.graphicalMusicSheet.ParentMusicSheet.DrawErroneousMeasures&&this.drawLineAsHorizontalRectangle(new GraphicalLine(new PointF2D(u,g),new PointF2D(u+m.BorderRight,g),4,OutlineAndFillStyleEnum.ErrorUnderlay),GraphicalLayers.MeasureError)}}}class VexFlowTextMeasurer{constructor(e){this.fontSize=20,this.fontSizeStandard=this.fontSize;const t=document.createElement("canvas");this.context=t.getContext("2d"),this.rules=e}computeTextWidthToHeightRatio(e,t,s,r=void 0,o=this.fontSize){return this.context.font=VexFlowConverter.font(o,s,t,this.rules,r),this.context.measureText(e).width/o}setFontSize(e=this.fontSizeStandard){return this.fontSize=e,e}}class AbstractGraphicalExpression extends GraphicalObject{constructor(e,t,s){super(),this.expression=t,this.parentMeasure=s,this.boundingBox=new BoundingBox$1(this,e.PositionAndShape),this.parentStaffLine=e,this.parentStaffLine.AbstractExpressions.push(this),this.rules=e.ParentMusicSystem.rules}get Label(){return this.label}get ParentStaffLine(){return this.parentStaffLine}get SourceExpression(){return this.expression}get Placement(){return this.expression.Placement}}class GraphicalInstantaneousTempoExpression extends AbstractGraphicalExpression{constructor(e,t){super(t.PositionAndShape.Parent.DataObject,e,e.parentMeasure),this.label=t}get GraphicalLabel(){return this.label}updateSkyBottomLine(){}}class GraphicalInstantaneousDynamicExpression extends AbstractGraphicalExpression{constructor(e,t,s){super(t,e,s.parentSourceMeasure),this.mInstantaneousDynamicExpression=e,this.mMeasure=s}updateSkyBottomLine(){const e=this.parentStaffLine.SkyBottomLineCalculator,t=this.PositionAndShape.RelativePosition.x+this.PositionAndShape.BorderMarginLeft,s=this.PositionAndShape.RelativePosition.x+this.PositionAndShape.BorderMarginRight;let r=0;switch(this.Placement){case PlacementEnum.Above:r=this.PositionAndShape.RelativePosition.y+this.PositionAndShape.BorderMarginTop,e.updateSkyLineInRange(t,s,r);break;case PlacementEnum.Below:r=this.PositionAndShape.RelativePosition.y+this.PositionAndShape.BorderMarginBottom,e.updateBottomLineInRange(t,s,r);break;default:loglevelExports.error("Placement for GraphicalInstantaneousDynamicExpression is unknown")}}}class GraphicalContinuousDynamicExpression extends AbstractGraphicalExpression{constructor(e,t,s){super(t,e,s),this.lines=[],this.isSplittedPart=!1,this.notToBeRemoved=!1}get StartMeasure(){return this.startMeasure}set StartMeasure(e){this.startMeasure=e}get EndMeasure(){return this.endMeasure}set EndMeasure(e){this.endMeasure=e}get EndStaffLine(){return this.endMeasure?this.endMeasure.ParentStaffLine:void 0}get IsSplittedPart(){return this.isSplittedPart}set IsSplittedPart(e){this.isSplittedPart=e}get IsVerbal(){return this.ContinuousDynamic.Label&&this.ContinuousDynamic.Label.length>0}get NotToBeRemoved(){return this.notToBeRemoved}set NotToBeRemoved(e){this.notToBeRemoved=e}get Lines(){return this.lines}get ContinuousDynamic(){return this.SourceExpression}updateSkyBottomLine(){var r;const e=this.parentStaffLine.SkyBottomLineCalculator,t=this.IsVerbal?this.label.PositionAndShape.RelativePosition.x+this.label.PositionAndShape.BorderMarginLeft:0,s=this.IsVerbal?this.label.PositionAndShape.RelativePosition.x+this.label.PositionAndShape.BorderMarginRight:0;switch(!this.IsVerbal&&this.lines.length<2&&loglevelExports.warn("Not enough lines for SkyBottomLine calculation"),this.IsVerbal||this.ContinuousDynamic.DynamicType!==ContDynamicEnum.crescendo&&this.ContinuousDynamic.DynamicType!==ContDynamicEnum.diminuendo&&loglevelExports.warn("GraphicalContinuousDynamicExpression.updateSkyBottomLine(): unhandled continuous dynamic type. start measure: "+((r=this.startMeasure)==null?void 0:r.MeasureNumber)),this.Placement){case PlacementEnum.Above:if(!this.IsVerbal)this.ContinuousDynamic.DynamicType===ContDynamicEnum.crescendo?e.updateSkyLineWithWedge(this.lines[0].Start,this.lines[0].End):this.ContinuousDynamic.DynamicType===ContDynamicEnum.diminuendo&&e.updateSkyLineWithWedge(this.lines[0].End,this.lines[0].Start);else{const o=this.label.PositionAndShape.BorderMarginTop+this.label.PositionAndShape.RelativePosition.y;e.updateSkyLineInRange(t,s,o)}break;case PlacementEnum.Below:if(!this.IsVerbal)this.ContinuousDynamic.DynamicType===ContDynamicEnum.crescendo?e.updateBottomLineWithWedge(this.lines[1].Start,this.lines[1].End):this.ContinuousDynamic.DynamicType===ContDynamicEnum.diminuendo&&e.updateBottomLineWithWedge(this.lines[1].End,this.lines[1].Start);else{const o=this.label.PositionAndShape.BorderMarginBottom+this.label.PositionAndShape.RelativePosition.y;e.updateBottomLineInRange(t,s,o)}break;default:loglevelExports.error("Placement for GraphicalContinuousDynamicExpression is unknown")}}createCrescendoLines(e,t,s,r=this.rules.WedgeOpeningLength,o=this.rules.WedgeLineWidth){const a=new PointF2D(e,s),l=new PointF2D(t,s-r/2),c=new PointF2D(t,s+r/2);this.addWedgeLines(a,l,c,o)}createFirstHalfCrescendoLines(e,t,s,r=this.rules.WedgeMeasureEndOpeningLength,o=this.rules.WedgeLineWidth){const a=new PointF2D(e,s),l=new PointF2D(t,s-r/2),c=new PointF2D(t,s+r/2);this.addWedgeLines(a,l,c,o)}createSecondHalfCrescendoLines(e,t,s,r=this.rules.WedgeMeasureBeginOpeningLength,o=this.rules.WedgeOpeningLength,a=this.rules.WedgeLineWidth){const l=new PointF2D(e,s-r/2),c=new PointF2D(e,s+r/2),d=new PointF2D(t,s-o/2),m=new PointF2D(t,s+o/2);this.addDoubleLines(l,d,c,m,a)}recalculateCrescendoLines(e,t,s){const r=Math.abs(this.lines[0].Start.y-this.lines[1].Start.y)>1e-4;this.lines.clear(),r?this.createSecondHalfCrescendoLines(e,t,s):this.isSplittedPart?this.createFirstHalfCrescendoLines(e,t,s):this.createCrescendoLines(e,t,s)}createDiminuendoLines(e,t,s,r=this.rules.WedgeOpeningLength,o=this.rules.WedgeLineWidth){const a=new PointF2D(e,s-r/2),l=new PointF2D(e,s+r/2),c=new PointF2D(t,s);this.addWedgeLines(c,a,l,o)}createFirstHalfDiminuendoLines(e,t,s,r=this.rules.WedgeOpeningLength,o=this.rules.WedgeMeasureEndOpeningLength,a=this.rules.WedgeLineWidth){const l=new PointF2D(e,s-r/2),c=new PointF2D(e,s+r/2),d=new PointF2D(t,s-o/2),m=new PointF2D(t,s+o/2);this.addDoubleLines(l,d,c,m,a)}createSecondHalfDiminuendoLines(e,t,s,r=this.rules.WedgeMeasureBeginOpeningLength,o=this.rules.WedgeLineWidth){const a=new PointF2D(e,s-r/2),l=new PointF2D(e,s+r/2),c=new PointF2D(t,s);this.addWedgeLines(c,a,l,o)}recalculateDiminuendoLines(e,t,s){const r=Math.abs(this.lines[0].End.y-this.lines[1].End.y)>1e-4;this.lines.clear(),r?this.createFirstHalfDiminuendoLines(e,t,s):this.isSplittedPart?this.createSecondHalfDiminuendoLines(e,t,s):this.createDiminuendoLines(e,t,s)}calcPsi(){if(this.IsVerbal){this.PositionAndShape.calculateBoundingBox();return}this.PositionAndShape.RelativePosition=this.lines[0].Start,this.PositionAndShape.BorderMarginTop=this.lines[0].End.y-this.lines[0].Start.y,this.PositionAndShape.BorderMarginBottom=this.lines[1].End.y-this.lines[1].Start.y,this.PositionAndShape.Center.y=(this.PositionAndShape.BorderMarginTop+this.PositionAndShape.BorderMarginBottom)/2,this.ContinuousDynamic.DynamicType===ContDynamicEnum.crescendo?(this.PositionAndShape.BorderMarginLeft=0,this.PositionAndShape.BorderMarginRight=this.lines[0].End.x-this.lines[0].Start.x):(this.PositionAndShape.BorderMarginLeft=this.lines[0].End.x-this.lines[0].Start.x,this.PositionAndShape.BorderMarginRight=0)}cleanUp(){this.lines.clear()}shiftYPosition(e){this.IsVerbal?(this.PositionAndShape.RelativePosition.y+=e,this.PositionAndShape.calculateBoundingBox()):(this.lines[0].Start.y+=e,this.lines[0].End.y+=e,this.lines[1].End.y+=e)}squeeze(e){this.IsVerbal||Math.abs(this.lines[0].End.x-this.lines[0].Start.x)0?this.lines[0].Start.x+=e:(this.lines[0].End.x+=e,this.lines[1].End.x+=e):e<0?this.lines[0].Start.x+=e:(this.lines[0].End.x+=e,this.lines[1].End.x+=e),this.calcPsi())}addWedgeLines(e,t,s,r){const o=new GraphicalLine(e,t,r),a=new GraphicalLine(e,s,r);this.lines.push(o),this.lines.push(a)}addDoubleLines(e,t,s,r,o){const a=new GraphicalLine(e,t,o),l=new GraphicalLine(s,r,o);this.lines.push(a),this.lines.push(l)}}class GraphicalUnknownExpression extends AbstractGraphicalExpression{constructor(e,t,s,r,o=void 0){super(e,new AbstractExpression(s),r),this.label=t,this.sourceMultiExpression=o}updateSkyBottomLine(){const e=this.parentStaffLine.SkyBottomLineCalculator,t=this.label.PositionAndShape.RelativePosition.x+this.label.PositionAndShape.BorderMarginLeft,s=this.label.PositionAndShape.RelativePosition.x+this.label.PositionAndShape.BorderMarginRight;switch(this.Placement){case PlacementEnum.Above:const r=this.label.PositionAndShape.BorderMarginTop+this.label.PositionAndShape.RelativePosition.y;e.updateSkyLineInRange(t,s,r);break;case PlacementEnum.Below:const o=this.label.PositionAndShape.BorderMarginBottom+this.label.PositionAndShape.RelativePosition.y;e.updateBottomLineInRange(t,s,o);break;default:loglevelExports.error("Placement for GraphicalUnknownExpression is unknown")}}}const unitInPixels=10;class VexFlowMusicSheetDrawer extends MusicSheetDrawer{constructor(e=new DrawingParameters){super(new VexFlowTextMeasurer(e.Rules),e),this.backends=[],this.zoom=1,this.pageIdx=0,this.getDotId=(t,s)=>s?String(t.Label.PositionAndShape.RelativePosition[s]):String(t.Label.PositionAndShape.RelativePosition.x)+String(t.Label.PositionAndShape.RelativePosition.y),this.hasDot=(t,s,r,o)=>{const a=s||Object.values(o);for(const l of a){if(r)return t.x===l.x&&t.y===l.y;if(t.x===l.x)return!0}return!1}}get Zoom(){return this.zoom}get Backends(){return this.backends}initializeBackendForPage(e){this.backend=this.backends[e.PageNumber-1]}drawSheet(e){var t,s,r;this.rules.DefaultVexFlowNoteFont==="gonville"&&(Vex.Flow.DEFAULT_FONT_STACK=[(t=Vex.Flow.Fonts)==null?void 0:t.Gonville,(s=Vex.Flow.Fonts)==null?void 0:s.Bravura,(r=Vex.Flow.Fonts)==null?void 0:r.Custom]),Vex.Flow.STAVE_LINE_THICKNESS=this.rules.StaffLineWidth*unitInPixels,Vex.Flow.STEM_WIDTH=this.rules.StemWidth*unitInPixels,Vex.Flow.DEFAULT_NOTATION_FONT_SCALE=this.rules.VexFlowDefaultNotationFontScale,Vex.Flow.DEFAULT_TAB_FONT_SCALE=this.rules.VexFlowDefaultTabFontScale,this.pageIdx=0;for(const o of e.MusicPages){if(o.PageNumber>this.rules.MaxPageToDrawNumber)break;const a=this.backends[this.pageIdx];a.graphicalMusicPage=o,a.scale(this.zoom),this.pageIdx+=1}this.pageIdx=0,this.backend=this.backends[0],super.drawSheet(e)}drawPage(e){e&&(this.backend=this.backends[e.PageNumber-1],super.drawPage(e),this.pageIdx+=1)}clear(){for(const e of this.backends)e.clear()}setZoom(e){this.zoom=e}calculatePixelDistance(e){return e*unitInPixels}drawStaffLine(e){const t=this.backend.getContext().openGroup();t&&t.classList.add("staffline"),super.drawStaffLine(e);const s=e.PositionAndShape.AbsolutePosition;this.rules.RenderSlurs&&this.drawSlurs(e,s),this.backend.getContext().closeGroup()}drawSlurs(e,t){var r,o,a,l;const s=(r=window.GYM)==null?void 0:r.vfcurveItem;for(let c=0;c(u.index?u.index===c:!0)&&u.MeasureNumberXML==d.staffEntries[d.staffEntries.length-1].parentMeasure.MeasureNumber);m&&(d.bezierEndControlPt.y+=(o=m==null?void 0:m.bezierEndControlPt)!=null&&o.y?m.bezierEndControlPt.y:0,d.bezierEndPt.y+=(a=m==null?void 0:m.bezierEndPt)!=null&&a.y?m.bezierEndPt.y:0,d.bezierStartControlPt.y+=(l=m==null?void 0:m.bezierStartControlPt)!=null&&l.y?m.bezierStartControlPt.y:0)}catch(m){console.log(m)}this.drawSlur(d,t)}}}drawSlur(e,t){const s=[];let r,o,a,l;this.rules.DYMusicScoreType==="jianpu"?((e.placement>0||e.bezierStartPt.y>0)&&(e.bezierStartPt.y=-.8,e.bezierStartControlPt.y=-2.5),r=new PointF2D(e.bezierStartPt.x+t.x,e.bezierStartPt.y+t.y),o=new PointF2D(e.bezierStartControlPt.x+t.x,e.bezierStartControlPt.y+t.y),a=new PointF2D(e.bezierEndControlPt.x+t.x,e.bezierStartControlPt.y+t.y),l=new PointF2D(e.bezierEndPt.x+t.x,e.bezierStartPt.y+t.y)):(r=new PointF2D(e.bezierStartPt.x+t.x,e.bezierStartPt.y+t.y),o=new PointF2D(e.bezierStartControlPt.x+t.x,e.bezierStartControlPt.y+t.y),a=new PointF2D(e.bezierEndControlPt.x+t.x,e.bezierEndControlPt.y+t.y),l=new PointF2D(e.bezierEndPt.x+t.x,e.bezierEndPt.y+t.y)),s.push(this.applyScreenTransformation(r)),s.push(this.applyScreenTransformation(o)),s.push(this.applyScreenTransformation(a)),s.push(this.applyScreenTransformation(l)),e.placement===PlacementEnum.Above?(r.y-=.05,o.y-=.3,a.y-=.3,l.y-=.05):(r.y+=.05,o.y+=.3,a.y+=.3,l.y+=.05),s.push(this.applyScreenTransformation(r)),s.push(this.applyScreenTransformation(o)),s.push(this.applyScreenTransformation(a)),s.push(this.applyScreenTransformation(l)),e.SVGElement=this.backend.renderCurve(s)}drawMeasure(e){e.setAbsoluteCoordinates(e.PositionAndShape.AbsolutePosition.x*unitInPixels,e.PositionAndShape.AbsolutePosition.y*unitInPixels);const t=this.backend.getContext();try{e.draw(t)}catch(s){loglevelExports.warn("VexFlowMusicSheetDrawer.drawMeasure",s)}for(const s of e.staffEntries)this.drawStaffEntry(s)}drawLine(e,t,s="#FF0000FF",r=.2){return e=this.applyScreenTransformation(e),t=this.applyScreenTransformation(t),this.backend.renderLine(e,t,s,r*unitInPixels)}DrawOverlayLine(e,t,s,r="#FF0000FF",o=.2){if(!s.PageNumber||s.PageNumber>this.backends.length||s.PageNumber<1){console.log("VexFlowMusicSheetDrawer.drawOverlayLine: invalid page number / music page number doesn't correspond to an existing backend.");return}const a=s.PageNumber-1,l=this.backends[a];return e=this.applyScreenTransformation(e),t=this.applyScreenTransformation(t),l.renderLine(e,t,r,o*unitInPixels)}drawSkyLine(e){const t=e.PositionAndShape.AbsolutePosition,s=e.PositionAndShape.Size.width;this.drawSampledLine(e.SkyLine,t,s)}drawBottomLine(e){const t=new PointF2D(e.PositionAndShape.AbsolutePosition.x,e.PositionAndShape.AbsolutePosition.y),s=e.PositionAndShape.Size.width;this.drawSampledLine(e.BottomLine,t,s,"#0000FFFF")}drawSampledLine(e,t,s,r="#FF0000FF"){const o=[];let a=0;for(let c=0;c0){const c=this.rules.SamplingUnit;let d=new PointF2D(l.x,l.y),m=new PointF2D(o[0]/c+l.x,l.y);this.drawLine(d,m,r);let u,g;e[0]>=0&&(u=new PointF2D(o[0]/c+l.x,l.y),g=new PointF2D(o[0]/c+l.x,l.y+e[o[0]]),this.drawLine(u,g,r));for(let b=1;b0)for(const t of e.FingeringEntries)t.SVGNode=this.drawLabel(t,GraphicalLayers.Notes);if(e.graphicalChordContainers!==void 0&&e.graphicalChordContainers.length>0)for(const t of e.graphicalChordContainers){const s=t.GraphicalLabel;s.SVGNode=this.drawLabel(s,GraphicalLayers.Notes)}this.rules.RenderLyrics&&e.LyricsEntries.length>0&&this.drawLyrics(e.LyricsEntries,GraphicalLayers.Notes)}drawLyrics(e,t){e.forEach(s=>{const r=s.GraphicalLabel;r.SVGNode=this.drawLabel(r,t)})}drawInstrumentBrace(e,t){e.draw(this.backend.getContext())}drawGroupBracket(e,t){e.draw(this.backend.getContext())}drawOctaveShifts(e){for(const t of e.OctaveShifts)if(t){const s=t,r=this.backend.getContext(),o=s.getTextBracket();o.setContext(r);try{o.draw()}catch(a){loglevelExports.warn(a)}}}drawPedals(e){for(const t of e.Pedals)if(t){const s=t,r=this.backend.getContext(),o=s.getPedalMarking();o.setContext(r),o.draw()}}drawWavyLines(e){for(const t of e.WavyLines)if(t){const s=t,r=this.backend.getContext(),o=s.getVibratoBracket();o.setContext(r),o.draw()}}getMaxExpressionsYAndDots(e){var c,d;const t=[];let s=0;for(const m of e.measures)t.push(m.measureNumber);const r={},o={},a={};for(const m of e.AbstractExpressions)if(m instanceof GraphicalUnknownExpression&&t.includes(m.parentMeasure.MeasureNumber)){const u=this.getDotId(m),g=this.getDotId(m,"x");o[u]||(o[u]=[]),a[g]||(a[g]=[]),this.hasDot(m.Label.PositionAndShape.RelativePosition,o[u],!0)||(o[u].push(m.Label.PositionAndShape.RelativePosition),a[g].push(m.Label.PositionAndShape.RelativePosition)),r[u]=m.Label.PositionAndShape.RelativePosition}let l=0;for(const m of e.AbstractExpressions){const u=(c=m.parentMeasure)==null?void 0:c.MeasureNumber;if(m instanceof GraphicalUnknownExpression&&t.includes(u)){const g=(d=m.parentMeasure.verticalMeasureList[0])==null?void 0:d.stave,b=(g==null?void 0:g.end_x)-(g==null?void 0:g.x),y=this.getDotId(m,"x");if((a[y]||[]).length===1&&l!==u){const S=m.Label.PositionAndShape.AbsolutePosition.y;s=s===0?S:Math.min(s,S)}(a[y]||[]).length!==1&&b/10Number.EPSILON){let s=Math.min(...e.Lines.map(o=>o.Start.x)),r=Math.min(...e.Lines.map(o=>o.Start.y));e.Lines[0].Start.x=s,e.Lines[1].Start.x=s,e.Lines[0].Start.y=r+this.rules.WedgeOpeningLength/2,e.Lines[1].Start.y=r+this.rules.WedgeOpeningLength*2,e.Lines[0].End.y+=this.rules.WedgeOpeningLength/2,e.Lines[1].End.y+=this.rules.WedgeOpeningLength}}catch(s){}const t=this.backend.getContext();t.openGroup("lineGroup");for(const s of e.Lines){const r=new PointF2D(e.ParentStaffLine.PositionAndShape.AbsolutePosition.x+s.Start.x,e.ParentStaffLine.PositionAndShape.AbsolutePosition.y+s.Start.y),o=new PointF2D(e.ParentStaffLine.PositionAndShape.AbsolutePosition.x+s.End.x,e.ParentStaffLine.PositionAndShape.AbsolutePosition.y+s.End.y);this.drawLine(r,o,"black",s.Width)}t.closeGroup()}}renderLabel(e,t,s){return this._renderLabel(e,s)}_renderLabel(e,t){var d;if(!e.Label.print)return;const s=e.Label.fontHeight*unitInPixels,{font:r}=e.Label;let o;this.rules.ColoringEnabled&&(o=e.Label.colorDefault,e.Label.color&&(o=e.Label.color.toString()),o||(o=this.rules.DefaultColorLabel));let{fontStyle:a,fontFamily:l}=e.Label;a||(a=this.rules.DefaultFontStyle),l||(l=this.rules.DefaultFontFamily);let c;for(let m=0;m<((d=e.TextLines)==null?void 0:d.length);m++){const u=e.TextLines[m],g=this.calculatePixelDistance(u.xOffset),b=new PointF2D(t.ScreenPosition.x+g,t.ScreenPosition.y),y=this.backend.renderText(s,a,r,u.text,t.FontHeightInPixel,b,o,e.Label.fontFamily);c?c.appendChild(y):c=y,t.ScreenPosition.y=t.ScreenPosition.y+t.FontHeightInPixel,e.TextLines.length>1&&(t.ScreenPosition.y+=this.rules.SpacingBetweenTextLines)}return c}renderRectangle(e,t,s,r,o){return this.backend.renderRectangle(e,s,r,o)}applyScreenTransformation(e){return new PointF2D(e.x*unitInPixels,e.y*unitInPixels)}applyScreenTransformationForRect(e){return new RectangleF2D(e.x*unitInPixels,e.y*unitInPixels,e.width*unitInPixels,e.height*unitInPixels)}}const VF$c=Vex.Flow,_VexFlowConverter=class{static durations(i,e){const t=[],s=i.clone();for(;s.RealValue>0;){const r=s.RealValue;if(r>=2)t.push("1/2"),s.Sub(new Fraction$1(2,1));else if(r>=1)t.push("w"),s.Sub(new Fraction$1(1,1));else if(r<1&&r>=.5){if(e&&r>.5)return["w"];t.push("h"),s.Sub(new Fraction$1(1,2))}else if(r<.5&&r>=.25){if(e&&r>.25)return["h"];t.push("q"),s.Sub(new Fraction$1(1,4))}else if(r<.25&&r>=.125){if(e&&r>.125)return["q"];t.push("8"),s.Sub(new Fraction$1(1,8))}else if(r<.125&&r>=.0625){if(e&&r>.0625)return["8"];t.push("16"),s.Sub(new Fraction$1(1,16))}else if(r<.0625&&r>=.03125){if(e&&r>.03125)return["16"];t.push("32"),s.Sub(new Fraction$1(1,32))}else if(r<.03125&&r>=.015625){if(e&&r>.015625)return["32"];t.push("64"),s.Sub(new Fraction$1(1,64))}else{if(e)return["64"];t.push("128"),s.Sub(new Fraction$1(1,128))}}return t}static pitch(i,e,t,s=void 0,r=void 0){let o=r;r===void 0&&(o=3),e&&r===void 0&&(o=0,t.ClefType===ClefEnum.F&&(o=2),t.ClefType===ClefEnum.C&&(o=2));const a=NoteEnum[i.FundamentalNote].toLowerCase(),l=Pitch.accidentalVexflow(i.Accidental),c=i.Octave-t.OctaveOffset+o;let d="";return s&&(d=this.NoteHeadCode(s)),[a+"n/"+c+d,l,t]}static restToNotePitch(i,e){let t=i.Octave;switch(e){case ClefEnum.C:case ClefEnum.F:{t+=2;break}case ClefEnum.G:}return new Pitch(i.FundamentalNote,t,AccidentalEnum.NONE)}static NoteHeadCode(i){const e="/",t=i.Filled?"2":"1";switch(i.Shape){case NoteHeadShape.NORMAL:return"";case NoteHeadShape.DIAMOND:return e+"D"+t;case NoteHeadShape.TRIANGLE:return e+"T"+t;case NoteHeadShape.X:return e+"X"+t;case NoteHeadShape.CIRCLEX:return e+"X3";case NoteHeadShape.RECTANGLE:return e+"R"+t;case NoteHeadShape.SQUARE:return e+"S"+t;case NoteHeadShape.SLASH:return"";default:return""}}static GhostNotes(i){const e=[],t=_VexFlowConverter.durations(i,!1);for(const s of t)e.push(new VF$c.GhostNote({duration:s}));return e}static StaveNote(i){var P,I,R,N,G,B,k,T,V,J,W,se,ne,fe,Z,K,be;i.sortForVexflow();const e=i.notes,t=i.parentStaffEntry.parentMeasure.parentSourceMeasure.Rules,s=e[0];let r=[],o;const a=[],l=s.graphicalNoteLength,c=s.sourceNote.NoteTuplet!==void 0;let d=_VexFlowConverter.durations(l,c)[0];s.sourceNote.TypeLength!==void 0&&s.sourceNote.TypeLength!==l&&s.sourceNote.TypeLength.RealValue!==0&&(d=_VexFlowConverter.durations(s.sourceNote.TypeLength,c)[0],s.numberOfDots=s.sourceNote.DotsXml);let m,u=s.numberOfDots,g=!1,b=0,y=!1,S=!1,v;for(const oe of e){if(u=1&&me.length-1>=U+1&&(ve=(G=(N=me[U-1])==null?void 0:N.graphicalVoiceEntries[0])==null?void 0:G.parentVoiceEntry,ye=(k=(B=me[U+1])==null?void 0:B.graphicalVoiceEntries[0])==null?void 0:k.parentVoiceEntry,ve&&ye)){const Q=ve.Notes[0],M=ye.Notes[0];if((T=Q.NoteBeam)!=null&&T.Notes.includes(M)&&M.ParentStaffEntry.ParentStaff.StafflineCount!==1){const $=ve.Notes.last().Pitch,z=oe.Clef(),F=_VexFlowConverter.pitch(_VexFlowConverter.restToNotePitch($.getTransposedPitch(-2),z.ClefType),!1,z);$.FundamentalNote===4&&(r=[F[0]])}}}}if(l.RealValue===oe.sourceNote.SourceMeasure.ActiveTimeSignature.RealValue&&(r=t.DYMusicScoreType==="staff"?["d/5"]:["R/5"],d="w",u=0,g=!0,b=t.WholeRestXShiftVexflow*unitInPixels),[...oe.sourceNote.ParentStaff.Voices].filter(le=>(le==null?void 0:le.VoiceId)!=1).length){const le=oe.parentVoiceEntry.parentStaffEntry.graphicalVoiceEntries,me=oe.parentVoiceEntry.parentVoiceEntry.ParentVoice.VoiceId;let ve,ye;for(const U of le)for(const Q of U.notes){if(Q===oe||Q.sourceNote.isRest()||!Q.sourceNote.PrintObject){oe.lineShift=-2;continue}const M=Q.parentVoiceEntry.parentVoiceEntry.WantedStemDirection,$=me===1||me===5,z=$?1:-1,O=Q.sourceNote.Pitch.getHalfTone(),H=z===1&&O>ve,ie=z===-1&&O0){let U=3;const Q=oe.Clef();switch(Q.ClefType){case ClefEnum.F:U=5;break;case ClefEnum.C:U=4;break}v=Pitch.fromHalftone(ve),r=[_VexFlowConverter.pitch(v,!0,Q,void 0,U)[0]]}}break}oe.sourceNote.Notehead&&oe.sourceNote.Notehead.Shape===NoteHeadShape.SLASH&&(y=!0);const Y=oe.vfpitch;if((J=(V=Y[2])==null?void 0:V.Parent)!=null&&J.Instructions)for(let ae=0,de=Y[2].Parent.Instructions.length;ae1&&i.notes[0].sourceNote.ParentVoiceEntry.ParentVoice.VoiceId==1&&(x.getKeyProps()[0].line=4.5);const C=(fe=window.GYM)==null?void 0:fe.customBassDrum;if(C&&x.isRest()&&(x.getDuration()==="q"&&(x.getKeyProps()[0].line=C),x.getDuration()==="h"&&(x.getKeyProps()[0].line=C-1)),x.getKeyProps().forEach(({line:oe},Y)=>i.notes[Y].staffLine=oe),(t.LedgerLineWidth||t.LedgerLineStrokeStyle)&&(x.ledgerLineStyle||(x.ledgerLineStyle={}),t.LedgerLineWidth&&(x.ledgerLineStyle.lineWidth=t.LedgerLineWidth),t.LedgerLineStrokeStyle&&(x.ledgerLineStyle.strokeStyle=t.LedgerLineStrokeStyle)),t.ColoringEnabled){const oe=t.DefaultColorStem;let Y=i.parentVoiceEntry.StemColor;!Y&&oe&&(Y=oe);const ae={fillStyle:Y,strokeStyle:Y};Y&&(x.setStemStyle(ae),x.flag&&t.ColorFlags&&x.setFlagStyle(ae))}if(x.x_shift=b,i.parentVoiceEntry.IsGrace&&i.notes[0].sourceNote.NoteBeam&&(i.parentVoiceEntry.WantedStemDirection=i.notes[0].sourceNote.NoteBeam.Notes[0].ParentVoiceEntry.WantedStemDirection),i.parentVoiceEntry){let oe=i.parentVoiceEntry.WantedStemDirection;const Y=((Z=window.GYM)==null?void 0:Z.stemDirectionNote)||[],ae=Y==null?void 0:Y.find(de=>de.id===i.notes[0].sourceNote.NoteToGraphicalNoteObjectId);switch(ae&&typeof(ae==null?void 0:ae.direction)=="number"&&(oe=ae.direction),oe){case StemDirectionType.Up:x.setStemDirection(VF$c.Stem.UP),i.parentVoiceEntry.StemDirection=StemDirectionType.Up;break;case StemDirectionType.Down:x.setStemDirection(VF$c.Stem.DOWN),i.parentVoiceEntry.StemDirection=StemDirectionType.Down;break}}for(let oe=0,Y=e.length;oe0&&de==="single"){const le=new VF$c.Tremolo(ae);le.extra_stroke_scale=t.TremoloStrokeScale,le.y_spacing_scale=t.TremoloYSpacingScale,x&&x.duration==="w"&&x.stem.setExtension(-9),x.addModifier(oe,le)}if(ae>0&&de==="start"&&this.noteTremoloList.push(x),ae>0&&de==="stop"){if(this.noteTremoloList.push(x),this.noteTremoloList.filter(ve=>ve.duration==="w").length===this.noteTremoloList.length)try{this.noteTremoloList[0].keyProps&&this.noteTremoloList[1].keyProps&&((K=(this.noteTremoloList[0].keyProps[0].line>this.noteTremoloList[1].keyProps[0].line?this.noteTremoloList[1]:this.noteTremoloList[0]).stem)==null||K.setResetHeight(30))}catch(ve){console.error("设置都是全音符,stem的高度失败")}const me=new VF$c.Tremolo(ae,[...this.noteTremoloList]);me.extra_stroke_scale=1.2,me.y_spacing_scale=1.2,me.x_shift=-30,x.addModifier(oe,me),this.noteTremoloList=[]}this.glissandoList.length&&(x.setVibrato(this.glissandoList[0].vfnote[0]),this.glissandoList=[]),e[oe].sourceNote.glissandoType==="start"&&this.glissandoList.push(e[oe])}if(this.slideNote){try{x.setSlideNote(this.slideNote)}catch(oe){console.error(oe)}this.slideNote=null}if(i.notes[0].sourceNote.slideType==="start"&&(this.slideNote=x),E.Length.RealValue===.25&&E.Notehead&&E.Notehead.Filled===!1){const oe=x.getKeyProps();for(let Y=0;Y1){let oe=x.getKeyProps().filter(ae=>!ae.code&&ae.line>3);!((be=window.GYM)==null?void 0:be.stemDirectionNote)&&oe.length===r.length&&x.setStemDirection(-1)}t.DYMusicScoreType==="jianpu"&&window&&window.sett&&window.sett.keySignature&&x.addAccidental(0,new VF$c.Accidental("#"));try{const oe=["b","#","§","º","X"],Y={b:"b","#":"#","§":"n",º:"bb",X:"##"};for(const ae of e){const de=ae.sourceNote.voiceEntry.Timestamp;for(const le of ae.sourceNote.SourceMeasure.StaffLinkedExpressions)for(const me of le){const ve=Fraction$1.Equal(de,me.Timestamp),U=me.EntriesList.map(Q=>Q.label).filter(Q=>oe.includes(Q)).map(Q=>Y[Q]);if(ve){for(const Q of U)Q&&x.addAnnotation(0,new VF$c.Annotation(Q));break}}}}catch(oe){}return x}static generateArticulations(i,e,t){var s,r,o,a,l,c;if(!(!i||i.getAttribute("type")==="GhostNote"))for(const d of e){let m=VF$c.Modifier.Position.ABOVE;i.getStemDirection()===VF$c.Stem.UP&&(m=VF$c.Modifier.Position.BELOW);let u;const g=d.articulationEnum;switch(t.ArticulationPlacementFromXML&&(d.placement===PlacementEnum.Above?m=VF$c.Modifier.Position.ABOVE:d.placement===PlacementEnum.Below&&(m=VF$c.Modifier.Position.BELOW)),g){case ArticulationEnum.accent:{u=new VF$c.Articulation("a>");break}case ArticulationEnum.downbow:{u=new VF$c.Articulation("am"),d.placement===void 0&&(m=VF$c.Modifier.Position.ABOVE);break}case ArticulationEnum.fermata:{u=new VF$c.Articulation("a@a"),m=VF$c.Modifier.Position.ABOVE;break}case ArticulationEnum.marcatodown:{u=new VF$c.Articulation("a|");break}case ArticulationEnum.marcatoup:{u=new VF$c.Articulation("a^");break}case ArticulationEnum.invertedfermata:{u=new VF$c.Articulation("a@u"),m=VF$c.Modifier.Position.BELOW;break}case ArticulationEnum.lefthandpizzicato:{u=new VF$c.Articulation("a+");break}case ArticulationEnum.naturalharmonic:{u=new VF$c.Articulation("ah");break}case ArticulationEnum.snappizzicato:{u=new VF$c.Articulation("ao");break}case ArticulationEnum.staccatissimo:{u=new VF$c.Articulation("av");break}case ArticulationEnum.staccato:{u=new VF$c.Articulation("a.");break}case ArticulationEnum.tenuto:{u=new VF$c.Articulation("a-");break}case ArticulationEnum.upbow:{u=new VF$c.Articulation("a|"),d.placement===void 0&&(m=VF$c.Modifier.Position.ABOVE);break}case ArticulationEnum.strongaccent:{u=new VF$c.Articulation("a^");break}}u&&(!i.hasStem()&&!i.isRest()&&g==ArticulationEnum.accent&&i.getLineNumber()>=3&&(m=VF$c.Modifier.Position.ABOVE,(r=(s=i==null?void 0:i.modifiers)==null?void 0:s.filter(S=>["TREMOLO"].includes(S.getCategory().toLocaleUpperCase())))!=null&&r.length&&u.setYShift(-16)),g===ArticulationEnum.strongaccent&&(m=VF$c.Modifier.Position.ABOVE,(o=window.GYM)!=null&&o.customArtPosition&&(i.getStemDirection()===1?m=VF$c.Modifier.Position.ABOVE:(m=VF$c.Modifier.Position.BELOW,u=new VF$c.Articulation("a|")))),(a=window.GYM)!=null&&a.customAccentItem&&g===ArticulationEnum.accent&&(m=VF$c.Modifier.Position.ABOVE),(l=window.GYM)!=null&&l.customLefthandpizzicatoItem&&(g===ArticulationEnum.lefthandpizzicato||g===ArticulationEnum.naturalharmonic)&&(m=VF$c.Modifier.Position.ABOVE),g===ArticulationEnum.tenuto&&i.getDuration()==="w"&&((c=window.GYM)!=null&&c.customTenutoItem)&&(m=VF$c.Modifier.Position.ABOVE),u.setPosition(m),i.addModifier(0,u))}}static generateOrnaments(i,e){let t=VF$c.Modifier.Position.ABOVE;e.placement===PlacementEnum.Below&&(t=VF$c.Modifier.Position.BELOW);let s;switch(e.GetOrnament){case OrnamentEnum.DelayedInvertedTurn:{s=new VF$c.Ornament("turn_inverted"),s.setDelayed(!0);break}case OrnamentEnum.DelayedTurn:{s=new VF$c.Ornament("turn"),s.setDelayed(!0);break}case OrnamentEnum.InvertedMordent:{s=new VF$c.Ornament("mordent"),s.setDelayed(!1);break}case OrnamentEnum.InvertedTurn:{s=new VF$c.Ornament("turn_inverted"),s.setDelayed(!1);break}case OrnamentEnum.Mordent:{s=new VF$c.Ornament("mordent_inverted"),s.setDelayed(!1);break}case OrnamentEnum.Trill:{s=new VF$c.Ornament("tr"),s.setDelayed(!1);break}case OrnamentEnum.Turn:{s=new VF$c.Ornament("turn"),s.setDelayed(!1);break}default:{loglevelExports.warn("unhandled OrnamentEnum type: "+e.GetOrnament);return}}s&&(e.AccidentalBelow!==AccidentalEnum.NONE&&s.setLowerAccidental(Pitch.accidentalVexflow(e.AccidentalBelow)),e.AccidentalAbove!==AccidentalEnum.NONE&&s.setUpperAccidental(Pitch.accidentalVexflow(e.AccidentalAbove)),s.setPosition(t),i.addModifier(0,s))}static StrokeTypeFromArpeggioType(i){switch(i){case ArpeggioType.ARPEGGIO_DIRECTIONLESS:return VF$c.Stroke.Type.ARPEGGIO_DIRECTIONLESS;case ArpeggioType.BRUSH_DOWN:return VF$c.Stroke.Type.BRUSH_UP;case ArpeggioType.BRUSH_UP:return VF$c.Stroke.Type.BRUSH_DOWN;case ArpeggioType.RASQUEDO_DOWN:return VF$c.Stroke.Type.RASQUEDO_UP;case ArpeggioType.RASQUEDO_UP:return VF$c.Stroke.Type.RASQUEDO_DOWN;case ArpeggioType.ROLL_DOWN:return VF$c.Stroke.Type.ROLL_UP;case ArpeggioType.ROLL_UP:return VF$c.Stroke.Type.ROLL_DOWN;default:return VF$c.Stroke.Type.ARPEGGIO_DIRECTIONLESS}}static CreateTabNote(i){const e=[],t=i.notes.reverse(),s=[],r=i.notes[0].graphicalNoteLength,o=i.notes[0].sourceNote.NoteTuplet!==void 0;let a=_VexFlowConverter.durations(r,o)[0],l=0;for(const d of i.notes){const m=d.sourceNote,u={str:m.StringNumberTab,fret:m.FretNumber};e.push(u),m.BendArray&&m.BendArray.forEach(function(g){let b;const y=g.bendalter-u.fret;y>1?b="Full":y===1?b="1/2":b="1/4",g.direction==="up"?s.push({type:VF$c.Bend.UP,text:b,width:10}):s.push({type:VF$c.Bend.DOWN,text:b,width:10})}),l(i[i.VA8=0]="VA8",i[i.VB8=1]="VB8",i[i.MA15=2]="MA15",i[i.MB15=3]="MB15",i[i.NONE=4]="NONE",i))(OctaveEnum||{});class AbstractTempoExpression extends AbstractExpression{constructor(e,t,s,r){super(t),this.label=e,this.staffNumber=s,this.parentMultiTempoExpression=r}get Label(){return this.label}set Label(e){this.label=e}get Placement(){return this.placement}set Placement(e){this.placement=e}get StaffNumber(){return this.staffNumber}set StaffNumber(e){this.staffNumber=e}get ParentMultiTempoExpression(){return this.parentMultiTempoExpression}static isStringInStringList(e,t){for(const s of e)if(AbstractTempoExpression.stringContainsSeparatedWord(t.toLowerCase().trim(),s.toLowerCase().trim()))return!0;return!1}static stringContainsSeparatedWord(e,t){return e===t||e.indexOf(" "+t)!==-1||e.indexOf(t+" ")!==-1}}const _InstantaneousTempoExpression=class extends AbstractTempoExpression{constructor(i,e,t,s,r,o=!1){super(i,e,t,r),this.setTempoAndTempoType(s)}static getDefaultValueForTempoType(i){switch(i){case 1:return 20;case 2:return 30;case 3:return 48;case 4:return 52;case 5:return 63;case 6:return 70;case 7:return 75;case 8:return 88;case 9:return 92;case 10:return 96;case 11:return 106;case 12:return 112;case 13:return 118;case 14:return 130;case 15:return 140;case 16:return 155;case 17:return 170;case 18:return 184;case 19:return 200;default:throw new ArgumentOutOfRangeException("tempoEnum")}}static isInputStringInstantaneousTempo(i){return i?_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLarghissimo,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoGrave,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLento,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLargo,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLarghetto,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAdagio,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAdagietto,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAndanteModerato,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAndante,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAndantino,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoModerato,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegretto,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegroModerato,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegro,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoVivace,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoVivacissimo,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegrissimo,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoPresto,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoPrestissimo,i)||_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoChangesGeneral,i):!1}get Label(){return this.label}set Label(i){this.label=i}get Placement(){return this.placement}set Placement(i){this.placement=i}get StaffNumber(){return this.staffNumber}set StaffNumber(i){this.staffNumber=i}get Enum(){return this.tempoEnum}get TempoInBpm(){return this.tempoInBpm}set TempoInBpm(i){this.tempoInBpm=i}get ParentMultiTempoExpression(){return this.parentMultiTempoExpression}getAbsoluteTimestamp(){return Fraction$1.plus(this.ParentMultiTempoExpression.SourceMeasureParent.AbsoluteTimestamp,this.ParentMultiTempoExpression.Timestamp)}getAbsoluteFloatTimestamp(){return Fraction$1.plus(this.ParentMultiTempoExpression.SourceMeasureParent.AbsoluteTimestamp,this.ParentMultiTempoExpression.Timestamp).RealValue}setTempoAndTempoType(i){if(!this.label){this.tempoInBpm=i,this.tempoEnum=23;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLarghissimo,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(1)),this.tempoInBpm=i,this.tempoEnum=1;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoGrave,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(2)),this.tempoInBpm=i,this.tempoEnum=2;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLento,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(3)),this.tempoInBpm=i,this.tempoEnum=3;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLargo,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(4)),this.tempoInBpm=i,this.tempoEnum=4;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoLarghetto,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(5)),this.tempoInBpm=i,this.tempoEnum=5;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAdagio,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(6)),this.tempoInBpm=i,this.tempoEnum=6;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAdagietto,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(7)),this.tempoInBpm=i,this.tempoEnum=7;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAndanteModerato,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(8)),this.tempoInBpm=i,this.tempoEnum=8;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAndante,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(9)),this.tempoInBpm=i,this.tempoEnum=9;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAndantino,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(10)),this.tempoInBpm=i,this.tempoEnum=10;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoModerato,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(11)),this.tempoInBpm=i,this.tempoEnum=11;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegretto,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(12)),this.tempoInBpm=i,this.tempoEnum=12;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegroModerato,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(13)),this.tempoInBpm=i,this.tempoEnum=13;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegro,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(14)),this.tempoInBpm=i,this.tempoEnum=14;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoVivace,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(15)),this.tempoInBpm=i,this.tempoEnum=15;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoVivacissimo,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(16)),this.tempoInBpm=i,this.tempoEnum=16;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAllegrissimo,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(17)),this.tempoInBpm=i,this.tempoEnum=17;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoPresto,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(18)),this.tempoInBpm=i,this.tempoEnum=18;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoPrestissimo,this.label)){i===0&&(i=_InstantaneousTempoExpression.getDefaultValueForTempoType(19)),this.tempoInBpm=i,this.tempoEnum=19;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoAddons,this.label)){this.tempoInBpm=0,this.tempoEnum=21;return}if(_InstantaneousTempoExpression.isStringInStringList(_InstantaneousTempoExpression.listInstantaneousTempoChangesGeneral,this.label)){this.tempoInBpm=0,this.tempoEnum=22;return}}};let InstantaneousTempoExpression=_InstantaneousTempoExpression;InstantaneousTempoExpression.listInstantaneousTempoLarghissimo=["Larghissimo","Sehr breit","very, very slow"];InstantaneousTempoExpression.listInstantaneousTempoGrave=["Grave","Schwer","slow and solemn"];InstantaneousTempoExpression.listInstantaneousTempoLento=["Lento","Lent","Langsam","slowly"];InstantaneousTempoExpression.listInstantaneousTempoLargo=["Largo","Breit","broadly"];InstantaneousTempoExpression.listInstantaneousTempoLarghetto=["Larghetto","Etwas breit","rather broadly"];InstantaneousTempoExpression.listInstantaneousTempoAdagio=["Adagio","Langsam","Ruhig","slow and stately"];InstantaneousTempoExpression.listInstantaneousTempoAdagietto=["Adagietto","Ziemlich ruhig","Ziemlich langsam","rather slow"];InstantaneousTempoExpression.listInstantaneousTempoAndanteModerato=["Andante moderato"];InstantaneousTempoExpression.listInstantaneousTempoAndante=["Andante","Gehend","Schreitend","at a walking pace"];InstantaneousTempoExpression.listInstantaneousTempoAndantino=["Andantino"];InstantaneousTempoExpression.listInstantaneousTempoModerato=["Moderato","Mäßig","Mod�r�","moderately"];InstantaneousTempoExpression.listInstantaneousTempoAllegretto=["Allegretto","fast"];InstantaneousTempoExpression.listInstantaneousTempoAllegroModerato=["Allegro moderato"];InstantaneousTempoExpression.listInstantaneousTempoAllegro=["Allegro","Rapide","Vite","Rasch","Schnell","Fr�hlich"];InstantaneousTempoExpression.listInstantaneousTempoVivace=["Vivace","Lebhaft","Lebendig","lively and fast"];InstantaneousTempoExpression.listInstantaneousTempoVivacissimo=["Vivacissimo","Sehr lebhaft","Sehr lebendig"];InstantaneousTempoExpression.listInstantaneousTempoAllegrissimo=["Allegrissimo","very fast"];InstantaneousTempoExpression.listInstantaneousTempoPresto=["Presto","Sehr schnell","Geschwind"];InstantaneousTempoExpression.listInstantaneousTempoPrestissimo=["Prestissimo","äußerst schnell"];InstantaneousTempoExpression.listInstantaneousTempoChangesGeneral=["tempo primo","a tempo","tempo i","rubato","doppio movimento"];InstantaneousTempoExpression.listInstantaneousTempoAddons=["assai","amoroso","cantabile","con brio","con dolore","con espressione","con fuoco","con moto","con spirito","spiritoso","espressivo","giocoso","giusto","grazioso","lesto","lugubre","maestoso","ma non troppo","marcato","molto","morendo","mosso","non tanto","piu","un poco","poco","quasi","risoluto","scherzando","sostenuto","teneramente","tempo giusto","tranquillo","sehr","lieblich","liebevoll","mit Leidenschaft","mit Liebe","amourös","gesanglich","mit Schwung","mit Feuer","mit Schmerz","mit Ausdruck","mit Bewegung","geistvoll","ausdrucksvoll","freudig","verspielt","angemessen","graziös","mit Grazie","flink","behände","traurig","klagend","majestätisch","aber nicht zu sehr","markant","gemäßigt","viel","sehr","ersterbend","bewegt","nicht zu sehr","mehr","ein wenig","gleichsam","entschlossen","zupackend","heiter","nachdrücklich","getragen","gewichtig","zart","zärtlich","im angemessenen Zeitmaß","ruhig","ein wenig","alla marcia","ad libitum","alla breve"];var TempoEnum=(i=>(i[i.none=0]="none",i[i.larghissimo=1]="larghissimo",i[i.grave=2]="grave",i[i.lento=3]="lento",i[i.largo=4]="largo",i[i.larghetto=5]="larghetto",i[i.adagio=6]="adagio",i[i.adagietto=7]="adagietto",i[i.andanteModerato=8]="andanteModerato",i[i.andante=9]="andante",i[i.andantino=10]="andantino",i[i.moderato=11]="moderato",i[i.allegretto=12]="allegretto",i[i.allegroModerato=13]="allegroModerato",i[i.allegro=14]="allegro",i[i.vivace=15]="vivace",i[i.vivacissimo=16]="vivacissimo",i[i.allegrissimo=17]="allegrissimo",i[i.presto=18]="presto",i[i.prestissimo=19]="prestissimo",i[i.lastRealTempo=20]="lastRealTempo",i[i.addon=21]="addon",i[i.changes=22]="changes",i[i.metronomeMark=23]="metronomeMark",i))(TempoEnum||{});const _MoodExpression=class extends AbstractExpression{constructor(i,e,t){super(e),this.label=i,this.staffNumber=t,this.setMoodType()}static isInputStringMood(i){return i?_MoodExpression.isStringInStringList(_MoodExpression.listMoodAffettuoso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodAgitato,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodAnimato,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodAppassionato,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodBrillante,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodCantabile,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodDolce,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodEnergico,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodEroico,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodEspressivo,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodFurioso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodGiocoso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodGioioso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodGrandioso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodGrazioso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodLacrimoso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodLeggiero,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodMaestoso,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodMalinconico,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodMarcato,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodMarziale,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodMesto,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodMorendo,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodNobilmente,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodPatetico,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodPesante,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodSaltando,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodSautille,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodScherzando,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodSostenuto,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodSpiccato,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodTenerezza,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodTranquillamente,i)||_MoodExpression.isStringInStringList(_MoodExpression.listMoodTrionfante,i):!1}get Label(){return this.label}set Label(i){this.label=i}get Mood(){return this.moodType}set Mood(i){this.moodType=i}get StaffNumber(){return this.staffNumber}set StaffNumber(i){this.staffNumber=i}get Placement(){return this.placement}set Placement(i){this.placement=i}setMoodType(){_MoodExpression.isStringInStringList(_MoodExpression.listMoodAffettuoso,this.label)?this.moodType=0:_MoodExpression.isStringInStringList(_MoodExpression.listMoodAgitato,this.label)?this.moodType=1:_MoodExpression.isStringInStringList(_MoodExpression.listMoodAnimato,this.label)?this.moodType=3:_MoodExpression.isStringInStringList(_MoodExpression.listMoodAppassionato,this.label)?this.moodType=2:_MoodExpression.isStringInStringList(_MoodExpression.listMoodBrillante,this.label)?this.moodType=4:_MoodExpression.isStringInStringList(_MoodExpression.listMoodCantabile,this.label)?this.moodType=5:_MoodExpression.isStringInStringList(_MoodExpression.listMoodDolce,this.label)?this.moodType=6:_MoodExpression.isStringInStringList(_MoodExpression.listMoodEnergico,this.label)?this.moodType=7:_MoodExpression.isStringInStringList(_MoodExpression.listMoodEroico,this.label)?this.moodType=8:_MoodExpression.isStringInStringList(_MoodExpression.listMoodEspressivo,this.label)?this.moodType=9:_MoodExpression.isStringInStringList(_MoodExpression.listMoodFurioso,this.label)?this.moodType=10:_MoodExpression.isStringInStringList(_MoodExpression.listMoodGiocoso,this.label)?this.moodType=11:_MoodExpression.isStringInStringList(_MoodExpression.listMoodGioioso,this.label)?this.moodType=12:_MoodExpression.isStringInStringList(_MoodExpression.listMoodGrandioso,this.label)?this.moodType=14:_MoodExpression.isStringInStringList(_MoodExpression.listMoodGrazioso,this.label)?this.moodType=15:_MoodExpression.isStringInStringList(_MoodExpression.listMoodLacrimoso,this.label)?this.moodType=13:_MoodExpression.isStringInStringList(_MoodExpression.listMoodLeggiero,this.label)?this.moodType=16:_MoodExpression.isStringInStringList(_MoodExpression.listMoodMaestoso,this.label)?this.moodType=17:_MoodExpression.isStringInStringList(_MoodExpression.listMoodMalinconico,this.label)?this.moodType=18:_MoodExpression.isStringInStringList(_MoodExpression.listMoodMarcato,this.label)?this.moodType=19:_MoodExpression.isStringInStringList(_MoodExpression.listMoodMarziale,this.label)?this.moodType=20:_MoodExpression.isStringInStringList(_MoodExpression.listMoodMesto,this.label)?this.moodType=21:_MoodExpression.isStringInStringList(_MoodExpression.listMoodMorendo,this.label)?this.moodType=22:_MoodExpression.isStringInStringList(_MoodExpression.listMoodNobilmente,this.label)?this.moodType=23:_MoodExpression.isStringInStringList(_MoodExpression.listMoodPatetico,this.label)?this.moodType=24:_MoodExpression.isStringInStringList(_MoodExpression.listMoodPesante,this.label)?this.moodType=25:_MoodExpression.isStringInStringList(_MoodExpression.listMoodSaltando,this.label)?this.moodType=27:_MoodExpression.isStringInStringList(_MoodExpression.listMoodSautille,this.label)?this.moodType=26:_MoodExpression.isStringInStringList(_MoodExpression.listMoodScherzando,this.label)?this.moodType=28:_MoodExpression.isStringInStringList(_MoodExpression.listMoodSostenuto,this.label)?this.moodType=29:_MoodExpression.isStringInStringList(_MoodExpression.listMoodSpiccato,this.label)?this.moodType=30:_MoodExpression.isStringInStringList(_MoodExpression.listMoodTenerezza,this.label)?this.moodType=31:_MoodExpression.isStringInStringList(_MoodExpression.listMoodTranquillamente,this.label)?this.moodType=32:_MoodExpression.isStringInStringList(_MoodExpression.listMoodTrionfante,this.label)&&(this.moodType=33)}};let MoodExpression=_MoodExpression;MoodExpression.listMoodAffettuoso=["affettuoso"];MoodExpression.listMoodAgitato=["agitato"];MoodExpression.listMoodAppassionato=["appassionato"];MoodExpression.listMoodAnimato=["animato","lively"];MoodExpression.listMoodBrillante=["brillante"];MoodExpression.listMoodCantabile=["cantabile"];MoodExpression.listMoodDolce=["dolce"];MoodExpression.listMoodEnergico=["energico"];MoodExpression.listMoodEroico=["eroico"];MoodExpression.listMoodEspressivo=["espressivo"];MoodExpression.listMoodFurioso=["furioso"];MoodExpression.listMoodGiocoso=["giocoso"];MoodExpression.listMoodGioioso=["gioioso"];MoodExpression.listMoodLacrimoso=["lacrimoso"];MoodExpression.listMoodGrandioso=["grandioso"];MoodExpression.listMoodGrazioso=["grazioso"];MoodExpression.listMoodLeggiero=["leggiero"];MoodExpression.listMoodMaestoso=["maestoso"];MoodExpression.listMoodMalinconico=["malinconico"];MoodExpression.listMoodMarcato=["marcato"];MoodExpression.listMoodMarziale=["marziale"];MoodExpression.listMoodMesto=["mesto"];MoodExpression.listMoodMorendo=["morendo"];MoodExpression.listMoodNobilmente=["nobilmente"];MoodExpression.listMoodPatetico=["patetico"];MoodExpression.listMoodPesante=["pesante"];MoodExpression.listMoodSautille=["sautille"];MoodExpression.listMoodSaltando=["saltando"];MoodExpression.listMoodScherzando=["scherzando"];MoodExpression.listMoodSostenuto=["sostenuto"];MoodExpression.listMoodSpiccato=["spiccato"];MoodExpression.listMoodTenerezza=["tenerezza"];MoodExpression.listMoodTranquillamente=["tranquillamente"];MoodExpression.listMoodTrionfante=["trionfante"];class UnknownExpression extends AbstractExpression{constructor(e,t,s,r){super(t),this.label=e,this.staffNumber=r,s===void 0&&(s=TextAlignmentEnum.LeftBottom),this.textAlignment=s}get Label(){return this.label}get Placement(){return this.placement}set Placement(e){this.placement=e}get StaffNumber(){return this.staffNumber}set StaffNumber(e){this.staffNumber=e}get TextAlignment(){return this.textAlignment}}class MultiExpression{constructor(e,t){this.unknownList=[],this.moodList=[],this.expressions=[],this.sourceMeasure=e,this.timestamp=t}get SourceMeasureParent(){return this.sourceMeasure}set SourceMeasureParent(e){this.sourceMeasure=e}get StaffNumber(){return this.staffNumber}set StaffNumber(e){this.staffNumber=e}get Timestamp(){return this.timestamp}set Timestamp(e){this.timestamp=e}get AbsoluteTimestamp(){return Fraction$1.plus(this.timestamp,this.sourceMeasure.AbsoluteTimestamp)}get InstantaneousDynamic(){return this.instantaneousDynamic}set InstantaneousDynamic(e){this.instantaneousDynamic=e}get EndingContinuousDynamic(){return this.endingContinuousDynamic}set EndingContinuousDynamic(e){this.endingContinuousDynamic=e}get StartingContinuousDynamic(){return this.startingContinuousDynamic}set StartingContinuousDynamic(e){this.startingContinuousDynamic=e}get MoodList(){return this.moodList}get UnknownList(){return this.unknownList}get EntriesList(){return this.expressions}get OctaveShiftStart(){return this.octaveShiftStart}set OctaveShiftStart(e){this.octaveShiftStart=e}get OctaveShiftEnd(){return this.octaveShiftEnd}set OctaveShiftEnd(e){this.octaveShiftEnd=e}get CombinedExpressionsText(){return this.combinedExpressionsText}set CombinedExpressionsText(e){this.combinedExpressionsText=e}getPlacementOfFirstEntry(){let e=PlacementEnum.Above;return this.expressions.length>0&&(this.expressions[0].expression instanceof InstantaneousDynamicExpression?e=this.expressions[0].expression.Placement:this.expressions[0].expression instanceof ContinuousDynamicExpression?e=this.expressions[0].expression.Placement:this.expressions[0].expression instanceof MoodExpression?e=this.expressions[0].expression.Placement:this.expressions[0].expression instanceof UnknownExpression&&(e=this.expressions[0].expression.Placement)),e}getFontstyleOfFirstEntry(){var t;let e=FontStyles.Regular;return this.expressions.length>0&&(this.expressions[0].expression instanceof ContinuousDynamicExpression||this.expressions[0].expression instanceof MoodExpression?e=FontStyles.Italic:this.expressions[0].expression instanceof UnknownExpression&&(e=(t=this.expressions[0].expression.fontStyle)!=null?t:FontStyles.Regular)),e}addExpression(e,t){e instanceof InstantaneousDynamicExpression?(this.instantaneousDynamic&&this.removeExpressionFromEntryList(this.InstantaneousDynamic),this.instantaneousDynamic=e,this.instantaneousDynamic.ParentMultiExpression=this):e instanceof ContinuousDynamicExpression?this.startingContinuousDynamic=e:e instanceof MoodExpression?this.moodList.push(e):e instanceof UnknownExpression&&this.unknownList.push(e),this.addExpressionToEntryList(e,t)}CompareTo(e){return this.Timestamp.RealValue>e.Timestamp.RealValue?1:this.Timestamp.RealValue=5&&i<=12}get TempoType(){return this.tempoType}set TempoType(i){this.tempoType=i}get StartTempo(){return this.startTempo}set StartTempo(i){this.startTempo=i}get EndTempo(){return this.endTempo}set EndTempo(i){this.endTempo=i}get AbsoluteEndTimestamp(){return this.absoluteEndTimestamp}set AbsoluteEndTimestamp(i){this.absoluteEndTimestamp=i}get AbsoluteTimestamp(){return this.ParentMultiTempoExpression.AbsoluteTimestamp}getAbsoluteFloatTimestamp(){return this.ParentMultiTempoExpression.AbsoluteTimestamp.RealValue}getInterpolatedTempo(i){const e=Fraction$1.plus(this.parentMultiTempoExpression.SourceMeasureParent.AbsoluteTimestamp,this.parentMultiTempoExpression.Timestamp);if(i.lt(e))return-1;if(this.absoluteEndTimestamp.lt(i))return-2;const t=Fraction$1.minus(i,e).RealValue/Fraction$1.minus(this.absoluteEndTimestamp,e).RealValue;return Math.max(0,Math.min(250,this.startTempo+(this.endTempo-this.startTempo)*t))}setTempoType(){_ContinuousTempoExpression.isStringInStringList(_ContinuousTempoExpression.listContinuousTempoFaster,this.label)?this.tempoType=0:_ContinuousTempoExpression.isStringInStringList(_ContinuousTempoExpression.listContinuousTempoSlower,this.label)&&(this.tempoType=9)}};let ContinuousTempoExpression=_ContinuousTempoExpression;ContinuousTempoExpression.listContinuousTempoFaster=["accelerando","piu mosso","poco piu","stretto"];ContinuousTempoExpression.listContinuousTempoSlower=["poco meno","meno mosso","piu lento","rallentando","ritardando","ritenuto","ritard.","ritard","riten.","riten"];class MultiTempoExpression{constructor(e,t){this.expressions=[],this.sourceMeasure=e,this.timestamp=t}get Timestamp(){return this.timestamp}get AbsoluteTimestamp(){return Fraction$1.plus(this.sourceMeasure.AbsoluteTimestamp,this.timestamp)}get SourceMeasureParent(){return this.sourceMeasure}set SourceMeasureParent(e){this.sourceMeasure=e}get InstantaneousTempo(){return this.instantaneousTempo}get ContinuousTempo(){return this.continuousTempo}get EntriesList(){return this.expressions}get CombinedExpressionsText(){return this.combinedExpressionsText}set CombinedExpressionsText(e){this.combinedExpressionsText=e}getPlacementOfFirstEntry(){let e=PlacementEnum.Above;return this.expressions.length>0&&(this.expressions[0].Expression instanceof InstantaneousTempoExpression?e=this.expressions[0].Expression.Placement:this.expressions[0].Expression instanceof ContinuousTempoExpression&&(e=this.expressions[0].Expression.Placement)),e}getFontstyleOfFirstEntry(){let e=FontStyles.Regular;return this.expressions[0].Expression instanceof InstantaneousTempoExpression?e=FontStyles.Bold:this.expressions[0].Expression instanceof ContinuousTempoExpression&&(e=FontStyles.Italic),e}addExpression(e,t){if(this.checkIfAlreadyExists(e))return;e instanceof InstantaneousTempoExpression?this.instantaneousTempo=e:e instanceof ContinuousTempoExpression&&(this.continuousTempo=e);const s=new TempoExpressionEntry;s.prefix=t,s.Expression=e,s.label=e.Label,this.expressions.push(s)}CompareTo(e){return this.Timestamp.RealValue>e.Timestamp.RealValue?1:this.Timestamp.RealValue0){if(this.rules.MaxSystemToDrawNumber===this.musicSystems.length)return this.finalizeCurrentSystem(this.measureList[this.measureList.length-1],!this.rules.StretchLastSystemLine,!1),this.musicSystems;this.finalizeCurrentAndCreateNewSystem(this.measureList[this.measureList.length-1],!this.rules.StretchLastSystemLine,!1)}return this.musicSystems}calculateSystemYLayout(){for(const e of this.musicSystems)this.optimizeDistanceBetweenStaffLines(e);this.calculateMusicSystemsRelativePositions()}setMeasureWidth(e,t,s,r){for(let o=0,a=e.length;o0&&(l.beginInstructionsWidth=s),r>0&&(l.endInstructionsWidth=r)}}finalizeCurrentAndCreateNewSystem(e,t=!1,s=!0,r=!1){this.finalizeCurrentSystem(e,t,s,r),this.currentSystemParams=new SystemBuildParameters,e!==void 0&&this.measureListIndex=1){const t=this.currentSystemParams.currentSystem.GraphicalMeasures[this.currentSystemParams.currentSystem.GraphicalMeasures.length-1];let s=0;const r=e[e.length-1];r.endLine===SystemLinesEnum.DotsBoldBoldDots&&(r.endLine=SystemLinesEnum.DotsThinBold,s=t[0].getLineWidth(SystemLinesEnum.DotsBoldBoldDots)/2-t[0].getLineWidth(SystemLinesEnum.DotsThinBold)),this.currentSystemParams.currentSystemFixWidth-=s;for(let o=0,a=t.length;o1){a=!0;break}}let l=0;for(let c=0;c=0&&this.measureList[C]){const I=(E=this.measureList[C][0])==null?void 0:E.parentSourceMeasure;I!=null&&I.ImplicitMeasure&&(I!=null&&I.RhythmPrinted)&&(w=!1)}w&&(t.addRhythmAtBegin(d),t.parentSourceMeasure.RhythmPrinted=d,b=!0)}return(u||g||b)&&(a+=t.beginInstructionsWidth,b&&(a+=this.rules.RhythmRightMargin)),a}addInstructionsAtMeasureEnd(e,t,s){if(!e||!e.Instructions||e.Instructions.length===0)return 0;for(let r=0,o=e.Instructions.length;r0&&(this.currentSystemParams.systemMeasures.push({beginLine:SystemLinesEnum.None,endLine:SystemLinesEnum.None}),this.currentSystemParams.currentWidth+=r,this.currentSystemParams.currentSystemFixWidth+=r)}addExtraInstructionMeasure(e,t,s){const r=this.currentSystemParams.currentSystem,o=MusicSheetCalculator.symbolFactory.createExtraGraphicalMeasure(r.StaffLines[e]);t&&o.addKeyAtBegin(t,this.activeKeys[e],this.activeClefs[e]),s!==void 0&&s.PrintObject&&o.addRhythmAtBegin(s),o.PositionAndShape.BorderLeft=0,o.PositionAndShape.BorderTop=0,o.PositionAndShape.BorderBottom=this.rules.StaffHeight;const a=this.rules.MeasureLeftMargin+o.beginInstructionsWidth+this.rules.MeasureRightMargin;return o.PositionAndShape.BorderRight=a,r.StaffLines[e].Measures.push(o),a}addStaveMeasuresToSystem(e){if(e[0]){const t=[];for(let r=0;r1){const l=Math.min(this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length-1,e.measureListIndex+e.multipleRestMeasures-1);e=this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[l]}}finally{}const t=this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures,s=t[this.measureListIndex];let r=!1;return s.allRests&&(r=(a=(o=t[this.measureListIndex+s.multipleRestMeasures-1])==null?void 0:o.endsWithLineRepetition)==null?void 0:a.call(o)),this.nextMeasureBeginsLineRepetition()&&this.thisMeasureEndsLineRepetition()?SystemLinesEnum.DotsBoldBoldDots:this.thisMeasureEndsLineRepetition()||r?SystemLinesEnum.DotsThinBold:this.nextMeasureHasKeyInstructionChange()||this.thisMeasureEndsWordRepetition()||this.nextMeasureBeginsWordRepetition()?SystemLinesEnum.DoubleThin:e&&e.endingBarStyleEnum!==void 0?e.endingBarStyleEnum:SystemLinesEnum.SingleThin}getLineWidth(e,t,s){let r=e.getLineWidth(t);return t===SystemLinesEnum.DotsBoldBoldDots&&(r/=2),s&&t===SystemLinesEnum.BoldThinDots&&(r+=this.rules.DistanceBetweenLastInstructionAndRepetitionBarline),r}previousMeasureEndsLineRepetition(){if(this.measureListIndex===0)return!1;for(let e=0,t=this.measureList[this.measureListIndex-1].length;e=this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length||!this.measureList[e])return!1;for(let t=0,s=this.measureList[e].length;t=this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length||e>this.measureList.length-1)return!1;for(let t=0,s=this.measureList[e].length;t1)for(let l=1;lo&&(o=m)}for(let l=0;lthis.rules.PageHeight-this.rules.PageBottomMargin&&(r++,r<=4&&console.log(`warning: could not fit a single system on page ${e.PageNumber} and measure number ${s.GraphicalMeasures[0][0].MeasureNumber}. The PageFormat may be too small for this sheet." Will not give further warnings for all pages, only total.`))}else{const c=this.musicSystems[l-1],d=c.StaffLines[c.StaffLines.length-1],m=d.PositionAndShape;let u=this.findRequiredDistanceWithSkyBottomLine(c,s);u=Math.max(o,u),u+=this.rules.MinSkyBottomDistBetweenSystems,((a=window==null?void 0:window.appName)==null?void 0:a.toLocaleUpperCase())==="GYM"&&(u=u<16?16:u);const g=this.hasExpressionCounts(s);g.TempoCount>0&&this.rules.MetronomeMarksDrawn&&(u+=2),g.OtherCount>0&&this.rules.MetronomeMarksDrawn&&(u+=2),u=Math.max(u,this.rules.MinimumDistanceBetweenSystems+d.StaffHeight);const b=t+m.RelativePosition.y+u,y=b+s.PositionAndShape.BorderMarginBottom;if(!(this.rules.NewPageAtXMLNewPageAttribute&&c.breaksPage)&&y0&&console.log(`total amount of pages that couldn't fit a single music system: ${r} of ${e.PageNumber}`)}findRequiredDistanceWithSkyBottomLine(e,t){const s=e.StaffLines[e.StaffLines.length-1],r=t.StaffLines[0],o=s.BottomLine,a=r.SkyLine,l=s.PositionAndShape,c=r.PositionAndShape,d=1/this.rules.SamplingUnit;let m=0;for(let u=0;u=a.length)break;const y=Math.max(0,b-6),S=Math.min(a.length-1,b+6);let v=0;for(let A=y;A<=S;A++)v=Math.min(v,a[A]);const x=g-v;m=Math.max(x,m)}return m===0&&(m=l.BorderBottom-c.BorderTop),m}}class SystemBuildParameters{constructor(){this.systemMeasures=[],this.systemMeasureIndex=0,this.currentWidth=0,this.currentSystemFixWidth=0,this.currentSystemVarWidth=0,this.maxLabelLength=0}IsSystemStartMeasure(){return this.systemMeasureIndex===0}}class OctaveShiftParams{constructor(e,t,s){this.getOpenOctaveShift=e,this.getAbsoluteStartTimestamp=t,this.getAbsoluteEndTimestamp=s}}class AccidentalCalculator{constructor(){this.keySignatureNoteAlterationsDict=new Dictionary,this.currentAlterationsComparedToKeyInstructionList=[],this.currentInMeasureNoteAlterationsDict=new Dictionary}get ActiveKeyInstruction(){return this.activeKeyInstruction}set ActiveKeyInstruction(e){this.activeKeyInstruction=e,this.reactOnKeyInstructionChange()}doCalculationsAtEndOfMeasure(){this.currentInMeasureNoteAlterationsDict.clear(),this.currentAlterationsComparedToKeyInstructionList.clear();for(const e of this.keySignatureNoteAlterationsDict.keys())this.currentInMeasureNoteAlterationsDict.setValue(e,this.keySignatureNoteAlterationsDict.getValue(e))}checkAccidental(e,t){if(!t)return;const s=t.FundamentalNote+t.Octave*12,r=this.currentAlterationsComparedToKeyInstructionList.indexOf(s)>=0;if(this.currentInMeasureNoteAlterationsDict.containsKey(s)){if(r&&this.currentAlterationsComparedToKeyInstructionList.splice(this.currentAlterationsComparedToKeyInstructionList.indexOf(s),1),this.currentInMeasureNoteAlterationsDict.getValue(s)!==t.AccidentalHalfTones){this.keySignatureNoteAlterationsDict.containsKey(s)&&this.keySignatureNoteAlterationsDict.getValue(s)!==t.AccidentalHalfTones?(this.currentAlterationsComparedToKeyInstructionList.push(s),this.currentInMeasureNoteAlterationsDict.setValue(s,t.AccidentalHalfTones)):t.Accidental!==AccidentalEnum.NONE&&this.currentInMeasureNoteAlterationsDict.remove(s);const o=this.currentInMeasureNoteAlterationsDict.getValue(s);if(t.Accidental===AccidentalEnum.NONE&&(Math.abs(o)===.5?t=new Pitch(t.FundamentalNote,t.Octave,AccidentalEnum.NONE):t=new Pitch(t.FundamentalNote,t.Octave,AccidentalEnum.NATURAL)),this.isAlterAmbiguousAccidental(t.Accidental)&&!t.AccidentalXml)return;MusicSheetCalculator.symbolFactory.addGraphicalAccidental(e,t)}}else if(t.Accidental!==AccidentalEnum.NONE){if(r||this.currentAlterationsComparedToKeyInstructionList.push(s),this.currentInMeasureNoteAlterationsDict.setValue(s,t.AccidentalHalfTones),this.isAlterAmbiguousAccidental(t.Accidental)&&!t.AccidentalXml)return;MusicSheetCalculator.symbolFactory.addGraphicalAccidental(e,t)}else r&&(t=new Pitch(t.FundamentalNote,t.Octave,AccidentalEnum.NATURAL),this.currentAlterationsComparedToKeyInstructionList.splice(this.currentAlterationsComparedToKeyInstructionList.indexOf(s),1),MusicSheetCalculator.symbolFactory.addGraphicalAccidental(e,t))}isAlterAmbiguousAccidental(e){return e===AccidentalEnum.SLASHFLAT||e===AccidentalEnum.QUARTERTONEFLAT}reactOnKeyInstructionChange(){const e=this.activeKeyInstruction.AlteratedNotes;let t;this.activeKeyInstruction.Key>0?t=AccidentalEnum.SHARP:t=AccidentalEnum.FLAT,this.keySignatureNoteAlterationsDict.clear(),this.currentAlterationsComparedToKeyInstructionList.length=0;for(let s=-9;s<9;s++)for(let r=0;r0?(s=m-1,e.push({startIndex:t,endIndex:s}),t=m):b.HasEndLine&&this.rules.NewPartAndSystemAfterFinalBarline&&(s=m,e.push({startIndex:t,endIndex:s}),t=m+1)}t0?Number(B):6,_===B||w+R>S&&_%2===0?(o.push(_),w=I,_=1):_++}else w>S?(o.push(_),w=I,_=1):_++;I>S?N=C+1:N=Math.ceil(N),A===N?E+=1:(r.push(E),A=N,E=1)}r.push(E),o.push(_),o=o.filter(Boolean)}return o.length>1&&o[o.length-1]===1&&(o[o.length-2]=o[o.length-2]-1,o[o.length-1]=o[o.length-1]+1),console.log(o,r),this.buildPreparedMusicSystems(o)}buildPreparedMusicSystems(e){let t=!1;this.currentSystemParams=new SystemBuildParameters,this.currentSystemParams.currentSystem=this.initMusicSystem();for(let s=0,r=this.measureList.length;s0&&this.rules.RenderMultipleRestMeasures){u.isReducedToMultiRest=!0,u.multipleRestMeasureNumber=1;const b=u.multipleRestMeasures-1;d+=b;for(let y=1;y<=b;y++){const S=e.SourceMeasures[u.MeasureNumber-1+y];S.multipleRestMeasureNumber=y+1,S.isReducedToMultiRest=!0,t.push([void 0])}}}if(this.rules.AutoGenerateMutipleRestMeasuresFromRestMeasures&&this.rules.RenderMultipleRestMeasures){let d,m=0;for(let u=0,g=e.SourceMeasures.length;u0){d.isReducedToMultiRest=!0,d.multipleRestMeasureNumber=1,m++,b.multipleRestMeasureNumber=m,b.isReducedToMultiRest=!0;for(let y=0;y1){d.multipleRestMeasures=m;const y=this.createGraphicalMeasuresForSourceMeasure(d,s,o,l,r);t[d.measureListIndex]=y,m=0,d=void 0}else m=0,d=void 0}if(m>1){d.multipleRestMeasures=m,d.isReducedToMultiRest=!0;const u=this.createGraphicalMeasuresForSourceMeasure(d,s,o,l,r);t[d.measureListIndex]=u,m=0,d=void 0}}const c=r.map(d=>d.ClefType===ClefEnum.percussion);this.handleStaffEntries(c),this.calculateVerticalContainersList(),this.setIndicesToVerticalGraphicalContainers()}calculate(){this.musicSystems=[],this.clearSystemsAndMeasures(),this.clearRecreatedObjects(),this.createGraphicalTies(),this.calculateSheetLabelBoundingBoxes(),this.calculateXLayout(this.graphicalMusicSheet,this.maxInstrNameLabelLength()),this.graphicalMusicSheet.MusicPages.length=0,this.calculateMusicSystems(),GraphicalMusicSheet.transformRelativeToAbsolutePosition(this.graphicalMusicSheet)}calculateXLayout(e,t){let s=0;const r=this.rules.MaxInstructionsConstValue;if(this.graphicalMusicSheet.MeasureList.length>0){let o=this.graphicalMusicSheet.MeasureList[0],a=this.calculateMeasureXLayout(o);a=this.calculateMeasureWidthFromStaffEntries(o,a),MusicSheetCalculator.setMeasuresMinStaffEntriesWidth(o,a),s=a*1.2+t+r;for(let l=1;l0)return;const a=t.Measures[o];(a.MeasureNumber===0||a.MeasureNumber===1)&&(s=a.MeasureNumber),a!==t.Measures[0]&&this.rules.MeasureNumberLabelXOffset?r=this.rules.MeasureNumberLabelXOffset:r=0;const l=this.rules.UseXMLMeasureNumbers&&a.MeasureNumber===1&&a.parentSourceMeasure.getPrintedMeasureNumber()!==1;((a.MeasureNumber===s||a.MeasureNumber>=s+this.rules.MeasureNumberLabelOffset)&&!a.parentSourceMeasure.ImplicitMeasure||l)&&((a.MeasureNumber!==1||a.MeasureNumber===1&&a!==t.Measures[0]||l)&&this.calculateSingleMeasureNumberPlacement(a,t,e,r),s=a.MeasureNumber)}}calculateSingleMeasureNumberPlacement(e,t,s,r=0){const o=e.parentSourceMeasure.getPrintedMeasureNumber().toString(),a=new Label(o),l=new GraphicalLabel(a,this.rules.MeasureNumberLabelHeight,TextAlignmentEnum.LeftBottom,this.rules),c=t.SkyBottomLineCalculator;l.setLabelPositionAndShapeBorders(),l.PositionAndShape.Parent=s.PositionAndShape;const d=t.PositionAndShape.RelativePosition.x+e.PositionAndShape.RelativePosition.x-l.PositionAndShape.BorderMarginLeft+r;let m,u=d,g=d-l.PositionAndShape.BorderLeft+l.PositionAndShape.BorderRight;u-=t.PositionAndShape.RelativePosition.x,g-=t.PositionAndShape.RelativePosition.x;const b=u+.5,y=g-.5,S=c.getSkyLineMinInRange(b,y);if(e===t.Measures[0]){let v=0;if(s.GroupBrackets.length>0)for(const x of s.GroupBrackets)v=Math.min(v,x.PositionAndShape.BorderTop);m=Math.min(S,v)}else m=S;m=Math.min(0,m),l.PositionAndShape.RelativePosition=new PointF2D(d,m),s.MeasureNumberLabels.push(l)}calculateMeasureNumberSkyline(e){const t=e.StaffLines[0];for(const s of e.MeasureNumberLabels){let r=s.PositionAndShape.RelativePosition.x,o=r-s.PositionAndShape.BorderLeft+s.PositionAndShape.BorderRight;r-=t.PositionAndShape.RelativePosition.x,o-=t.PositionAndShape.RelativePosition.x,t.SkyBottomLineCalculator.updateSkyLineInRange(r,o,s.PositionAndShape.RelativePosition.y+s.PositionAndShape.BorderMarginTop)}}layoutGraphicalTie(e,t,s){throw new Error(this.abstractNotImplementedErrorMessage)}calculateSingleStaffLineLyricsPosition(e,t){let s=0,r=this.rules.StaffHeight;const o=[],a=e.SkyBottomLineCalculator;let l=e.Measures.length;for(let d=0;d0){o.push(y),s=Math.max(s,y.LyricsEntries.length);const S=y.PositionAndShape.RelativePosition.x+u.x;let v=Number.MAX_VALUE,x=Number.MIN_VALUE;for(let E=0;E0){const d=e.PositionAndShape.Size.width;let m=o[0].PositionAndShape.RelativePosition.x+o[0].PositionAndShape.BorderMarginLeft+o[0].parentMeasure.PositionAndShape.RelativePosition.x;m=m>d?d:m,a.updateBottomLineInRange(m,d,c)}return o}calculateLyricsExtendsAndDashes(e){for(let t=0,s=e.length;t0||e.UnknownList.length>0){let c="";for(let b=0,y=e.EntriesList.length;be.length-1&&(loglevelExports.debug("minimum measure to draw index out of range. resetting min measure index to limit."),this.rules.MinMeasureToDrawIndex=e.length-1);const t=[];for(let a=this.rules.MinMeasureToDrawIndex,l=e.length;a0)&&(r=s.getSkyLineMinInRange(u,g));let b=0;l===0?(b+=this.rules.ChordSymbolYOffset,b+=.1):b+=this.rules.ChordSymbolYPadding,b*=-1;const y=c.GraphicalLabel;y.PositionAndShape.RelativePosition.y=r+b,y.setLabelPositionAndShapeBorders(),y.PositionAndShape.calculateBoundingBox(),s.updateSkyLineInRange(u,g,r+y.PositionAndShape.BorderMarginTop)}}}}calculateAlignedChordSymbolsOffset(e,t){let s=Number.MAX_SAFE_INTEGER;for(const r of e)for(const o of r.graphicalChordContainers){const a=r.PositionAndShape,l=o.PositionAndShape,c=l.BorderMarginLeft+a.AbsolutePosition.x,d=l.BorderMarginRight+a.AbsolutePosition.x;s=Math.min(s,t.getSkyLineMinInRange(c,d))}return s}layoutMeasureWithWholeRest(e,t,s){}layoutBeams(e){}layoutArticulationMarks(e,t,s){}layoutOrnament(e,t,s){}calculateRestNotePlacementWithinGraphicalBeam(e,t,s,r,o){}calculateTupletNumbers(){}calculateSlurs(){}calculateDynamicExpressionsForMultiExpression(e,t,s){}calculateGraphicalVerbalContinuousDynamic(e,t){const s=e.Label,r=t.x+s.PositionAndShape.BorderMarginLeft,o=t.x+s.PositionAndShape.BorderMarginRight,a=e.ContinuousDynamic.Placement,c=e.ParentStaffLine.SkyBottomLineCalculator;let d;a===PlacementEnum.Below?(d=c.getBottomLineMaxInRange(r,o),s.PositionAndShape.RelativePosition=new PointF2D(t.x,d-s.PositionAndShape.BorderMarginTop)):(d=c.getSkyLineMinInRange(r,o),s.PositionAndShape.RelativePosition=new PointF2D(t.x,d-s.PositionAndShape.BorderMarginBottom))}calculateGraphicalContinuousDynamic(e,t){var T,V,J;const s=e.ParentStaffLine.ParentStaff.idInMusicSheet,r=this.graphicalMusicSheet.getGraphicalMeasureFromSourceMeasureAndIndex(e.ContinuousDynamic.EndMultiExpression.SourceMeasureParent,s);if(!r){loglevelExports.warn("MusicSheetCalculator.calculateGraphicalContinuousDynamic: No endMeasure found");return}e.EndMeasure=r;const o=e.ParentStaffLine,a=r.ParentStaffLine,l=a&&o===a;let c=!1;a?c=a==null?void 0:a.isPartOfMultiStaffInstrument():o&&(c=o==null?void 0:o.isPartOfMultiStaffInstrument());const d=Fraction$1.createFromFraction(e.ContinuousDynamic.EndMultiExpression.AbsoluteTimestamp),m=this.graphicalMusicSheet.GetVerticalContainerFromTimestamp(d),u=m.getFirstNonNullStaffEntry().parentMeasure,g=u.PositionAndShape.AbsolutePosition.x+u.PositionAndShape.BorderRight;let b=new Fraction$1(0,0,0);for(const W of m.StaffEntries){const se=(T=W==null?void 0:W.sourceStaffEntry)==null?void 0:T.calculateMaxNoteLength();se!=null&&se.gt(b)&&(b=se)}const y=this.getRelativePositionInStaffLineFromTimestamp(d,s,a,c,0),S=Fraction$1.plus(d,b),v=this.getRelativePositionInStaffLineFromTimestamp(S,s,a,c,0);v.x>y.x&&v.xE){const fe=A.StaffLines[W].PositionAndShape.RelativePosition.y-o.PositionAndShape.RelativePosition.y-this.rules.StaffHeight;B=this.rules.StaffHeight+fe/2}else B=this.rules.WedgePlacementBelowY;B-=this.rules.WedgeOpeningLength/2,l||(k=B);let se=w.getBottomLineMaxInRange(I,N);if(se>B&&(B=se),Ek&&(k=se),k+=this.rules.WedgeOpeningLength/2,k+=this.rules.WedgeVerticalMargin),B+=this.rules.WedgeOpeningLength/2,B+=this.rules.WedgeVerticalMargin}else if(_===PlacementEnum.Above){if(o.ParentStaff.ParentInstrument.Staves.length===1)B=this.rules.WedgePlacementAboveY;else{let se=0;E>0&&(se=E-1);const ne=A.StaffLines[se];B=-(o.PositionAndShape.RelativePosition.y-ne.PositionAndShape.RelativePosition.y-this.rules.StaffHeight)/2}B+=this.rules.WedgeOpeningLength/2,l||(k=B);let W=w.getSkyLineMinInRange(I,N);if(W1&&E>0){const se=o.findClosestStaffEntry(I),ne=o.findClosestStaffEntry(N);se&&ne&&se.parentVerticalContainer}l||(W=a.SkyBottomLineCalculator.getSkyLineMinInRange(R,G),W-u/2?c=-u/2:c=d-e.PositionAndShape.BorderMarginBottom}else c=d-e.PositionAndShape.BorderMarginBottom;e.PositionAndShape.RelativePosition=new PointF2D(t.x,c)}else if(e.Placement===PlacementEnum.Below){const d=l.getBottomLineMaxInRange(o,a),m=r.ParentStaff.ParentInstrument.Staves[r.ParentStaff.ParentInstrument.Staves.length-1];if(r.isPartOfMultiStaffInstrument()&&r.ParentStaff!==m){const g=r.ParentMusicSystem.StaffLines[r.ParentMusicSystem.StaffLines.indexOf(r)+1].PositionAndShape.RelativePosition.y-r.PositionAndShape.RelativePosition.y-this.rules.StaffHeight,b=e.PositionAndShape.BorderMarginBottom;d+be.PositionAndShape.Size.width&&(g=e.PositionAndShape.Size.width-this.rules.MeasureRightMargin,u=g-d.PositionAndShape.MarginSize.width,t.x=u-d.PositionAndShape.BorderMarginLeft);let b;const y=e.SkyBottomLineCalculator;return o===PlacementEnum.Below?b=y.getBottomLineMaxInRange(u,g):b=y.getSkyLineMinInRange(u,g),d.PositionAndShape.RelativePosition=new PointF2D(t.x,b),o===PlacementEnum.Below?y.updateBottomLineInRange(u,g,d.PositionAndShape.BorderMarginBottom+b):y.updateSkyLineInRange(u,g,d.PositionAndShape.BorderMarginTop+b),d}calculateTempoExpressionsForMultiTempoExpression(e,t,s,r){metronomeMarks={};const o=Fraction$1.plus(e.AbsoluteTimestamp,t.Timestamp),a=this.graphicalMusicSheet.MeasureList[s];let l=new PointF2D;if(t.ContinuousTempo||t.InstantaneousTempo){if(this.rules.MinMeasureToDrawIndex>0||!a[0])return;let c=a[0].ParentStaffLine,d=a[0].PositionAndShape.RelativePosition.x,m=0;for(let u=0;u0){c=a[u].ParentStaffLine,d=a[u].PositionAndShape.RelativePosition.x,m=u;break}if(l=this.getRelativePositionInStaffLineFromTimestamp(o,m,c,c.isPartOfMultiStaffInstrument(),d),t.EntriesList.length>0&&t.EntriesList[0].Expression instanceof InstantaneousTempoExpression){const u=t.EntriesList[0].Expression;if(u.Placement=PlacementEnum.Above,c.Measures[0].staffEntries.length>0&&Math.abs(l.x-c.Measures[0].staffEntries[0].PositionAndShape.RelativePosition.x)===0&&c.ParentMusicSystem===this.musicSystems[0]){const g=c.Measures[0].FirstInstructionStaffEntry;if(g){const b=g.GraphicalInstructions.last();l.x=b.PositionAndShape.RelativePosition.x}this.rules.CompactMode&&(l.x=c.PositionAndShape.RelativePosition.x+c.Measures[0].PositionAndShape.RelativePosition.x)}}for(const u of t.EntriesList){let g=TextAlignmentEnum.CenterBottom;this.rules.CompactMode&&(g=TextAlignmentEnum.LeftBottom);const b=this.calculateLabel(c,l,u.label,t.getFontstyleOfFirstEntry(),u.Expression.Placement,this.rules.UnknownTextHeight,g);if(u.Expression instanceof InstantaneousTempoExpression){for(const S of c.AbstractExpressions)S instanceof GraphicalInstantaneousTempoExpression&&(S.SourceExpression.Label,u.Expression.Label);new GraphicalInstantaneousTempoExpression(u.Expression,b).ParentStaffLine||loglevelExports.warn("Adding staffline didn't work"),u.Expression.Enum===TempoEnum.metronomeMark&&(metronomeMarks[s]=u.Expression)}else u.Expression instanceof ContinuousTempoExpression;if(r===e.TempoExpressions.length-1)for(const y of Object.values(metronomeMarks))this.createMetronomeMark(y,s)}}}createMetronomeMark(e,t){throw new Error(this.abstractNotImplementedErrorMessage)}graphicalMeasureCreatedCalculations(e){}clearSystemsAndMeasures(){for(let e=0,t=this.graphicalMusicSheet.MusicPages.length;e-1&&g.PositionAndShape.ChildElements.splice(b,1),g.FirstInstructionStaffEntry=void 0,g.beginInstructionsWidth=0}if(g.LastInstructionStaffEntry){const b=g.PositionAndShape.ChildElements.indexOf(g.LastInstructionStaffEntry.PositionAndShape);b>-1&&g.PositionAndShape.ChildElements.splice(b,1),g.LastInstructionStaffEntry=void 0,g.endInstructionsWidth=0}}d.Measures=[],d.PositionAndShape.ChildElements=[]}a.StaffLines.length=0,a.PositionAndShape.ChildElements=[]}s.MusicSystems=[],s.PositionAndShape.ChildElements=[]}this.graphicalMusicSheet.MusicPages=[]}handleVoiceEntry(e,t,s,r,o,a,l,c,d,m=void 0,u=void 0){e.StemDirectionXml!==StemDirectionType.Undefined&&this.rules.SetWantedStemDirectionByXml&&e.StemDirectionXml!==void 0?e.WantedStemDirection=e.StemDirectionXml:this.calculateStemDirectionFromVoices(e);const g=t.findOrCreateGraphicalVoiceEntry(e);g.octaveShiftValue=c;const b=t.tabStaffEntry;let y;b&&(y=b.findOrCreateGraphicalVoiceEntry(e));for(let S=0,v=e.Notes.length;S-1)continue;let A;if(e.IsGrace?A=MusicSheetCalculator.symbolFactory.createGraceNote(x,g,o,this.rules,c):(A=MusicSheetCalculator.symbolFactory.createNote(x,g,o,c,this.rules,void 0),MusicSheetCalculator.stafflineNoteCalculator.trackNote(A)),x.Pitch&&this.checkNoteForAccidental(A,s,o,c),this.resetYPositionForLeadSheet(A.PositionAndShape),t.addGraphicalNoteToListAtCorrectYPosition(g,A),A.PositionAndShape.calculateBoundingBox(),this.leadSheet||(x.NoteBeam!==void 0&&x.PrintObject&&this.handleBeam(A,x.NoteBeam,l),x.NoteTuplet!==void 0&&x.PrintObject&&this.handleTuplet(A,x.NoteTuplet,a)),y){const E=MusicSheetCalculator.symbolFactory.createNote(x,y,o,c,this.rules,void 0);b.addGraphicalNoteToListAtCorrectYPosition(y,E),E.PositionAndShape.calculateBoundingBox(),this.leadSheet||x.NoteTuplet&&this.handleTuplet(E,x.NoteTuplet,a)}}return e.Articulations.length>0&&this.handleVoiceEntryArticulations(e.Articulations,e,t),e.TechnicalInstructions.length>0&&this.handleVoiceEntryTechnicalInstructions(e.TechnicalInstructions,e,t),e.LyricsEntries.size()>0&&this.handleVoiceEntryLyrics(e,t,r),e.OrnamentContainer&&this.handleVoiceEntryOrnaments(e.OrnamentContainer,e,t),c}resetYPositionForLeadSheet(e){this.leadSheet&&(e.RelativePosition=new PointF2D(e.RelativePosition.x,0))}layoutVoiceEntries(e,t){if(e.PositionAndShape.RelativePosition=new PointF2D(0,0),!this.leadSheet)for(const s of e.graphicalVoiceEntries){const r=s.notes;if(r.length===0)continue;const o=r[0].sourceNote.ParentVoiceEntry,a=r[0].sourceNote.Pitch!==void 0;this.layoutVoiceEntry(o,r,e,a)}}maxInstrNameLabelLength(){var t;let e=0;for(const s of this.graphicalMusicSheet.ParentMusicSheet.Instruments)if((t=s.NameLabel)!=null&&t.print&&s.Voices.length>0&&s.Voices[0].Visible){let r=s.NameLabel;this.rules.RenderPartNames||(r=new Label("",r.textAlignment,r.font));const o=new GraphicalLabel(r,this.rules.InstrumentLabelTextHeight,TextAlignmentEnum.LeftCenter,this.rules);o.setLabelPositionAndShapeBorders(),e=Math.max(e,o.PositionAndShape.MarginSize.width)}return this.rules.RenderPartNames?e:0}calculateSheetLabelBoundingBoxes(){var r;const e=this.graphicalMusicSheet.ParentMusicSheet,t=this.rules.DefaultColorTitle;if(e.Title!==void 0&&this.rules.RenderTitle){const o=new GraphicalLabel(e.Title,this.rules.SheetTitleHeight,TextAlignmentEnum.CenterBottom,this.rules);o.Label.IsCreditLabel=!0,o.Label.colorDefault=t,this.graphicalMusicSheet.Title=o,o.setLabelPositionAndShapeBorders()}else this.rules.RenderTitle||(this.graphicalMusicSheet.Title=void 0);if(e.Subtitle!==void 0&&this.rules.RenderSubtitle){const o=new GraphicalLabel(e.Subtitle,this.rules.SheetSubtitleHeight,TextAlignmentEnum.CenterCenter,this.rules);o.Label.IsCreditLabel=!0,o.Label.colorDefault=t,this.graphicalMusicSheet.Subtitle=o,o.setLabelPositionAndShapeBorders()}else this.rules.RenderSubtitle||(this.graphicalMusicSheet.Subtitle=void 0);if(e.Composer!==void 0&&this.rules.RenderComposer){const o=new GraphicalLabel(e.Composer,this.rules.SheetComposerHeight,TextAlignmentEnum.RightCenter,this.rules);o.Label.IsCreditLabel=!0,o.Label.colorDefault=t,this.graphicalMusicSheet.Composer=o,o.setLabelPositionAndShapeBorders()}else this.rules.RenderComposer||(this.graphicalMusicSheet.Composer=void 0);if(e.Lyricist!==void 0&&this.rules.RenderLyricist){const o=new GraphicalLabel(e.Lyricist,this.rules.SheetAuthorHeight,TextAlignmentEnum.LeftCenter,this.rules);o.Label.IsCreditLabel=!0,o.Label.colorDefault=t,this.graphicalMusicSheet.Lyricist=o,o.setLabelPositionAndShapeBorders()}else this.rules.RenderLyricist||(this.graphicalMusicSheet.Lyricist=void 0);const s=(r=this.graphicalMusicSheet.musicSheet.sourceMeasures)==null?void 0:r[0];if(s&&s.FirstInstructionsStaffEntries.length>0){const o=s.FirstInstructionsStaffEntries[0];let a,l;for(let c=0,d=o.Instructions.length;c0&&m.graphicalVoiceEntries[0].notes.length===1){const u=m.graphicalVoiceEntries[0].notes[0];!u.sourceNote.Pitch&&new Fraction$1(1,2).lt(u.sourceNote.Length)&&this.layoutMeasureWithWholeRest(u,m,d)}}}}}}optimizeRestNotePlacement(e,t){if(e.graphicalVoiceEntries.length===0)return;const s=e.graphicalVoiceEntries[0].notes;if(s.length===0)return;const r=s[0],o=r.sourceNote.isRest();if(e.graphicalVoiceEntries.length===2){let a=!1;const l=e.graphicalVoiceEntries[1].notes;l.length>0&&(a=l[0].sourceNote.isRest()),o&&a?this.calculateTwoRestNotesPlacementWithCollisionDetection(e):(o||a)&&this.calculateRestNotePlacementWithCollisionDetectionFromGraphicalNote(e)}else if(o&&e!==t.staffEntries[0]&&e!==t.staffEntries[t.staffEntries.length-1]){const a=t.staffEntries.indexOf(e),l=t.staffEntries[a-1],c=t.staffEntries[a+1];if(l.graphicalVoiceEntries.length===1){const d=l.graphicalVoiceEntries[0].notes[0];if(d.sourceNote.NoteBeam!==void 0&&c.graphicalVoiceEntries.length===1){const m=c.graphicalVoiceEntries[0].notes[0];m.sourceNote.NoteBeam!==void 0&&d.sourceNote.NoteBeam===m.sourceNote.NoteBeam&&(this.calculateRestNotePlacementWithinGraphicalBeam(e,r,d,c,m),e.PositionAndShape.calculateBoundingBox())}}}}getRelativePositionInStaffLineFromTimestamp(e,t,s,r,o=0){let a=new PointF2D,l,c;const d=this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers.length,m=this.graphicalMusicSheet.GetInterpolatedIndexInVerticalContainers(e),u=Math.min(Math.floor(m),d-1),g=Math.min(Math.ceil(m),d-1);if(u<0||t<0)return a;if(l=this.getFirstLeftNotNullStaffEntryFromContainer(u,t,r),c=this.getFirstRightNotNullStaffEntryFromContainer(g,t,r),l&&c){let b=l.parentMeasure.PositionAndShape.RelativePosition.x;o>0&&(b=o);let y=l.PositionAndShape.RelativePosition.x+b,S=c.PositionAndShape.RelativePosition.x+c.parentMeasure.PositionAndShape.RelativePosition.x;o>0&&(S=c.PositionAndShape.RelativePosition.x+b);let v=0;if(l!==c){const x=l.getAbsoluteTimestamp(),A=c.getAbsoluteTimestamp();v=Fraction$1.minus(e,x).RealValue/Fraction$1.minus(A,x).RealValue}l.parentMeasure.ParentStaffLine!==c.parentMeasure.ParentStaffLine&&(l.parentMeasure.ParentStaffLine===s?S=s.PositionAndShape.Size.width:y=s.PositionAndShape.RelativePosition.x),a=new PointF2D(y+(S-y)*v,0)}return a}getRelativeXPositionFromTimestamp(e){const t=this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers.length,s=this.graphicalMusicSheet.GetInterpolatedIndexInVerticalContainers(e),r=Math.max(0,Math.min(Math.round(s),t-1)),o=this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[r].getFirstNonNullStaffEntry();return o.PositionAndShape.RelativePosition.x+o.parentMeasure.PositionAndShape.RelativePosition.x}calculatePageLabels(e){var a;this.rules.RenderSingleHorizontalStaffline&&(e.PositionAndShape.BorderRight=e.PositionAndShape.Size.width,e.PositionAndShape.calculateBoundingBox(),this.graphicalMusicSheet.ParentMusicSheet.pageWidth=e.PositionAndShape.Size.width);let t=10;if(e.MusicSystems.length>0){const l=e.MusicSystems[0];t=l.PositionAndShape.RelativePosition.y+l.PositionAndShape.BorderTop}if(this.graphicalMusicSheet.Title){const l=this.graphicalMusicSheet.Title;l.PositionAndShape.Parent=e.PositionAndShape;const c=new PointF2D;c.x=this.graphicalMusicSheet.ParentMusicSheet.pageWidth/2,c.y=this.rules.TitleTopDistance+this.rules.SheetTitleHeight,l.PositionAndShape.RelativePosition=c,e.Labels.push(l)}if(this.graphicalMusicSheet.Subtitle){const l=this.graphicalMusicSheet.Subtitle;l.PositionAndShape.Parent=e.PositionAndShape;const c=new PointF2D;c.x=this.graphicalMusicSheet.ParentMusicSheet.pageWidth/2,c.y=this.rules.TitleTopDistance+this.rules.SheetTitleHeight+this.rules.SheetMinimumDistanceBetweenTitleAndSubtitle,l.PositionAndShape.RelativePosition=c,e.Labels.push(l)}const s=this.graphicalMusicSheet.Composer;let r;if(s){s.PositionAndShape.Parent=e.PositionAndShape,s.setLabelPositionAndShapeBorders();const l=new PointF2D;l.x=this.graphicalMusicSheet.ParentMusicSheet.pageWidth-this.rules.PageRightMargin,l.y=t,l.y-=this.rules.SystemComposerDistance;const c=(a=s.TextLines)==null?void 0:a.length;c>1&&(l.y-=s.PositionAndShape.BorderBottom*(c-1)/c),r=l.y,s.PositionAndShape.RelativePosition=l,e.Labels.push(s)}const o=this.graphicalMusicSheet.Lyricist;if(o){o.PositionAndShape.Parent=e.PositionAndShape,o.setLabelPositionAndShapeBorders();const l=new PointF2D;l.x=this.rules.PageLeftMargin,l.y=t,l.y+=o.PositionAndShape.BorderBottom,l.y=Math.min(l.y,r!=null?r:Number.MAX_SAFE_INTEGER),o.PositionAndShape.RelativePosition=l,e.Labels.push(o)}}createGraphicalTies(){for(let e=0;e=0&&this.staffEntriesWithGraphicalTies.push(o)}o=l}}setTieDirections(e){if(!e)return;const t=e.ties;if(t.length>1){let s;for(const r of t){const o=r.Notes[0];(!s||o.Pitch.getHalfTone()>s.Pitch.getHalfTone())&&(s=o)}for(const r of t)r.TieDirection===PlacementEnum.NotYetDefined&&(r.Notes[0]===s?r.TieDirection=PlacementEnum.Above:r.TieDirection=PlacementEnum.Below)}}createAccidentalCalculators(){const e=[],t=this.graphicalMusicSheet.ParentMusicSheet.getFirstSourceMeasure();if(t)for(let s=0;s1)return;u=MusicSheetCalculator.symbolFactory.createGraphicalMeasure(e,m)}if(u.hasError=e.getErrorInMeasure(c),e.FirstInstructionsStaffEntries[c])for(let E=0,w=e.FirstInstructionsStaffEntries[c].Instructions.length;E0){const I=w.Instructions[0];MusicSheetCalculator.symbolFactory.createInStaffClef(_,I)}this.rules.RenderChordSymbols&&((A=w.ChordContainers)==null?void 0:A.length)>0&&(w.ParentStaff.ParentInstrument.HasChordSymbols=!0,MusicSheetCalculator.symbolFactory.createChordSymbols(w,_,r.ActiveKeyInstruction,this.graphicalMusicSheet.ParentMusicSheet.Transpose))}}if(r.doCalculationsAtEndOfMeasure(),e.LastInstructionsStaffEntries[c]){const E=e.LastInstructionsStaffEntries[c];for(let w=0,_=E.Instructions.length;w<_;++w){const C=E.Instructions[w];C instanceof ClefInstruction&&(o[c]=C)}}for(let E=0,w=e.StaffLinkedExpressions[c].length;E=1&&u.staffEntries.length===0){const E=new SourceStaffEntry(new VerticalSourceStaffEntryContainer(u.parentSourceMeasure,u.parentSourceMeasure.AbsoluteTimestamp,u.parentSourceMeasure.CompleteNumberOfStaves),m),w=new VoiceEntry(new Fraction$1(0,1),m.Voices[0],E),_=new Note$1(w,E,Fraction$1.createFromFraction(e.Duration),void 0,e);_.PrintObject=this.rules.FillEmptyMeasuresWithWholeRest===FillEmptyMeasuresWithWholeRests.YesVisible,w.addNote(_);const C=MusicSheetCalculator.symbolFactory.createStaffEntry(E,u);u.addGraphicalStaffEntry(C),C.relInMeasureTimestamp=w.Timestamp;const P=MusicSheetCalculator.symbolFactory.createVoiceEntry(w,C);C.graphicalVoiceEntries.push(P);const I=MusicSheetCalculator.symbolFactory.createNote(_,P,new ClefInstruction,OctaveEnum.NONE,void 0);MusicSheetCalculator.stafflineNoteCalculator.trackNote(I),P.notes.push(I)}u.hasOnlyRests=!0;for(const E of u.staffEntries)if(u.hasOnlyRests=E.hasOnlyRests(),!u.hasOnlyRests)break;return u}checkNoteForAccidental(e,t,s,r){let o=e.sourceNote.Pitch;const a=e.parentVoiceEntry.parentStaffEntry.parentMeasure.getTransposedHalftones();a!==0&&e.sourceNote.ParentStaffEntry.ParentStaff.ParentInstrument.MidiInstrumentId!==MidiInstrument.Percussion&&(o=e.Transpose(t.ActiveKeyInstruction,s,a,r),e.sourceNote.TransposedPitch=o),e.sourceNote.halfTone=o.getHalfTone(),t.checkAccidental(e,o)}handleStaffEntries(e){for(let t=0,s=this.graphicalMusicSheet.MeasureList.length;t0&&c.graphicalVoiceEntries[0].notes.length>0&&(this.layoutVoiceEntries(c,o),this.layoutStaffEntry(c));this.graphicalMeasureCreatedCalculations(l)}}}}calculateSkyBottomLines(){for(const e of this.musicSystems)for(const t of e.StaffLines)t.SkyBottomLineCalculator.calculateLines()}calculateExpressionAlignements(){}calculateStaffEntryArticulationMarks(){for(let e=0,t=this.musicSystems.length;e0&&this.layoutArticulationMarks(S.Articulations,S,g)}}}}}}calculateOrnaments(){for(let e=0,t=this.musicSystems.length;e0&&r.LyricVersesNumbers.sort()}for(let t=0,s=this.musicSystems.length;t=0&&(r=t.GraphicalLyricsEntries[s+1]),!r)return;const o=e.StaffEntryParent.parentMeasure.ParentStaffLine,a=r.StaffEntryParent.parentMeasure.ParentStaffLine,l=e.StaffEntryParent,c=r.StaffEntryParent;if(e.StaffEntryParent.parentMeasure.ParentStaffLine===r.StaffEntryParent.parentMeasure.ParentStaffLine){const d=l.parentMeasure.PositionAndShape.RelativePosition.x+l.PositionAndShape.RelativePosition.x+e.GraphicalLabel.PositionAndShape.RelativePosition.x+e.GraphicalLabel.PositionAndShape.BorderMarginRight,m=c.parentMeasure.PositionAndShape.RelativePosition.x+c.PositionAndShape.RelativePosition.x+e.GraphicalLabel.PositionAndShape.RelativePosition.x+r.GraphicalLabel.PositionAndShape.BorderMarginLeft,u=e.GraphicalLabel.PositionAndShape.RelativePosition.y;let g=1;m-d>this.rules.MinimumDistanceBetweenDashes*3&&(g=Math.floor((m-d)/this.rules.MinimumDistanceBetweenDashes)-1),g===1?this.calculateSingleDashForLyricWord(o,d,m,u):this.calculateDashes(o,d,m,u)}else{const d=l.parentMeasure.PositionAndShape.RelativePosition.x+l.PositionAndShape.RelativePosition.x+e.GraphicalLabel.PositionAndShape.BorderMarginRight,m=o.Measures[o.Measures.length-1],u=m.PositionAndShape.RelativePosition.x+m.PositionAndShape.Size.width;let g=e.GraphicalLabel.PositionAndShape.RelativePosition.y;if(this.calculateDashes(o,d,u,g),a&&a.Measures[0]&&c.parentMeasure.ParentStaffLine&&!(c===c.parentMeasure.staffEntries[0]&&c.parentMeasure===c.parentMeasure.ParentStaffLine.Measures[0])){const b=a.Measures[0].staffEntries[0].PositionAndShape.RelativePosition.x,y=c.parentMeasure.PositionAndShape.RelativePosition.x+c.PositionAndShape.RelativePosition.x+r.GraphicalLabel.PositionAndShape.BorderMarginLeft;g=r.GraphicalLabel.PositionAndShape.RelativePosition.y,this.calculateDashes(a,b,y,g)}}}calculateDashes(e,t,s,r){let o=s-t;if(ot;)o=this.calculateRightAndLeftDashesForLyricWord(e,t,s,r),t+=l,s-=l,c++;o>l*2&&this.calculateSingleDashForLyricWord(e,t,s,r)}}calculateSingleDashForLyricWord(e,t,s,r){const o=new Label("-"),a=new GraphicalLabel(o,this.rules.LyricsHeight,TextAlignmentEnum.CenterBottom,this.rules);a.setLabelPositionAndShapeBorders(),e.LyricsDashes.push(a),this.staffLinesWithLyricWords.indexOf(e)===-1&&this.staffLinesWithLyricWords.push(e),a.PositionAndShape.Parent=e.PositionAndShape;const l=new PointF2D(t+(s-t)/2,r);a.PositionAndShape.RelativePosition=l}calculateLyricExtend(e){let t=e.GraphicalLabel.PositionAndShape.RelativePosition.y;const s=e.StaffEntryParent,r=s.parentMeasure.ParentStaffLine;let o,a;const l=s.parentMeasure.ParentStaff.idInMusicSheet;for(let c=s.parentVerticalContainer.Index+1;c0)break;o=d,a=o.parentMeasure.ParentStaffLine,a||(a=s.parentMeasure.ParentStaffLine)}}if(!(!o||!a))if(r===a&&o.parentMeasure.ParentStaffLine){const c=s.parentMeasure.PositionAndShape.RelativePosition.x+s.PositionAndShape.RelativePosition.x+e.GraphicalLabel.PositionAndShape.BorderMarginRight,d=o.parentMeasure.PositionAndShape.RelativePosition.x+o.PositionAndShape.RelativePosition.x+o.PositionAndShape.BorderMarginRight;t-=e.GraphicalLabel.PositionAndShape.Size.height/4,this.calculateSingleLyricWordWithUnderscore(r,c,d,t)}else{const c=r.Measures[r.Measures.length-1].PositionAndShape,d=s.parentMeasure.PositionAndShape.RelativePosition.x+s.PositionAndShape.RelativePosition.x+e.GraphicalLabel.PositionAndShape.BorderMarginRight,m=c.RelativePosition.x+c.Size.width;if(t-=e.GraphicalLabel.PositionAndShape.Size.height/4,this.calculateSingleLyricWordWithUnderscore(r,d,m,t),!o)return;if(o.parentMeasure.ParentStaffLine&&o.parentMeasure.staffEntries&&!(o===o.parentMeasure.staffEntries[0]&&o.parentMeasure===o.parentMeasure.ParentStaffLine.Measures[0])){const u=a.Measures[0].staffEntries[0].PositionAndShape.RelativePosition.x,g=o.parentMeasure.PositionAndShape.RelativePosition.x+o.PositionAndShape.RelativePosition.x+o.PositionAndShape.BorderMarginRight;this.calculateSingleLyricWordWithUnderscore(a,u,g,t)}}}calculateSingleLyricWordWithUnderscore(e,t,s,r){const o=new PointF2D(t,r),a=new PointF2D(s,r),l=new GraphicalLine(o,a,this.rules.LyricUnderscoreLineWidth);e.LyricLines.push(l),this.staffLinesWithLyricWords.indexOf(e)===-1&&this.staffLinesWithLyricWords.push(e)}calculateRightAndLeftDashesForLyricWord(e,t,s,r){const o=new Label("-"),a=new GraphicalLabel(o,this.rules.LyricsHeight,TextAlignmentEnum.CenterBottom,this.rules);a.setLabelPositionAndShapeBorders(),e.LyricsDashes.push(a),this.staffLinesWithLyricWords.indexOf(e)===-1&&this.staffLinesWithLyricWords.push(e),a.PositionAndShape.Parent=e.PositionAndShape;const l=new PointF2D(t,r);a.PositionAndShape.RelativePosition=l;const c=new Label("-"),d=new GraphicalLabel(c,this.rules.LyricsHeight,TextAlignmentEnum.CenterBottom,this.rules);d.setLabelPositionAndShapeBorders(),e.LyricsDashes.push(d),d.PositionAndShape.Parent=e.PositionAndShape;const m=new PointF2D(s,r);return d.PositionAndShape.RelativePosition=m,d.PositionAndShape.RelativePosition.x-a.PositionAndShape.RelativePosition.x}calculateDynamicExpressions(){const e=Math.min(this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length-1,this.rules.MaxMeasureToDrawIndex),t=Math.min(this.rules.MinMeasureToDrawIndex,this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures.length);for(let s=t;s<=e;s++){const r=this.graphicalMusicSheet.ParentMusicSheet.SourceMeasures[s];this.dynamicExpressionMap.clear();for(let o=0;o=0;a--)if((o=this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[a])!=null&&o.StaffEntries[t])return this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[a].StaffEntries[t]}getFirstRightNotNullStaffEntryFromContainer(e,t,s){var r,o;if((r=this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[e])!=null&&r.StaffEntries[t])return this.graphicalMusicSheet.VerticalGraphicalStaffEntryContainers[e].StaffEntries[t];for(let a=e+1;a0||t.StaffLinkedExpressions[s][r].UnknownList.length>0)&&this.calculateMoodAndUnknownExpression(t.StaffLinkedExpressions[s][r],e,s)}}calculateStemDirectionFromVoices(e){if(e.ParentSourceStaffEntry.Link!==void 0)if(e===e.ParentSourceStaffEntry.VoiceEntries[0]){e.WantedStemDirection=StemDirectionType.Up;return}else{e.WantedStemDirection=StemDirectionType.Down;return}else e.ParentVoice instanceof LinkedVoice?e.WantedStemDirection=StemDirectionType.Down:e.ParentSourceStaffEntry.VoiceEntries.length>1&&(e.WantedStemDirection=StemDirectionType.Up)}setBeamNotesWantedStemDirections(e){if(!(e.Notes.length>0))return;const t=e.Notes[0].NoteBeam;if(t){for(const s of t.Notes)if(s.ParentVoiceEntry.WantedStemDirection!==StemDirectionType.Undefined&&s.ParentVoiceEntry.ParentSourceStaffEntry.ParentStaff.Id===e.ParentSourceStaffEntry.ParentStaff.Id){e.WantedStemDirection=s.ParentVoiceEntry.WantedStemDirection;break}}}}class ChordSymbolContainer{constructor(e,t,s,r,o){this.rootPitch=e,this.chordKind=t,this.bassPitch=s,this.degrees=r,this.rules=o}get RootPitch(){return this.rootPitch}get ChordKind(){return this.chordKind}get BassPitch(){return this.bassPitch}get ChordDegrees(){return this.degrees}static calculateChordText(e,t,s){let r=e.RootPitch;if(MusicSheetCalculator.transposeCalculator&&(r=MusicSheetCalculator.transposeCalculator.transposePitch(e.RootPitch,s,t)),e.ChordKind===31)return e.getTextFromChordKindEnum(e.ChordKind);let o=Pitch.getNoteEnumString(r.FundamentalNote);r.Accidental!==AccidentalEnum.NONE&&(o+=this.getTextForAccidental(r.Accidental));const a={adds:[],alts:[],subs:[]};for(const m of e.ChordDegrees)if(m){let u="";switch(m.alteration!==AccidentalEnum.NONE&&(u+=this.getTextForAccidental(m.alteration)),u+=m.value,m.text){case 0:a.adds.push(u);break;case 1:a.alts.push(u);break;case 2:a.subs.push(u);break}}let l=e.getTextFromChordKindEnum(e.ChordKind);const c=["adds","alts","subs"],d=e.rules.CustomChords;for(const m of d){if(m.chordKind!==e.chordKind)continue;let u=!0;for(const g of c){for(const b of m.degrees[g]||[])if(a[g].indexOf(b)<0){u=!1;break}if(!u)break}if(u){for(const g of c)for(const b of m.degrees[g]||[])a[g].splice(a[g].indexOf(b),1);l=m.alternateName}}if(o+=l,a.adds.length>0&&(o+="("+a.adds.join(",")+")"),a.alts.length>0&&(o+="(alt "+a.alts.join(",")+")"),a.subs.length>0&&(o+="(omit "+a.subs.join(",")+")"),e.BassPitch){let m=e.BassPitch;MusicSheetCalculator.transposeCalculator&&(m=MusicSheetCalculator.transposeCalculator.transposePitch(e.BassPitch,s,t)),o+="/",o+=Pitch.getNoteEnumString(m.FundamentalNote),o+=this.getTextForAccidental(m.Accidental)}return o}static getTextForAccidental(e){let t="";switch(e){case AccidentalEnum.DOUBLEFLAT:t+="bb";break;case AccidentalEnum.FLAT:t+="b";break;case AccidentalEnum.SHARP:t+="#";break;case AccidentalEnum.DOUBLESHARP:t+="x";break}return t}getTextFromChordKindEnum(e){var t;return(t=this.rules.ChordSymbolLabelTexts.getValue(e))!=null?t:""}}class Degree{constructor(e,t,s){this.value=e,this.alteration=t,this.text=s}}class CustomChord{constructor(e,t,s){this.alternateName=e,this.chordKind=t,this.degrees=s}static createCustomChord(e,t,s){return new CustomChord(e,t,s)}static renameCustomChord(e,t,s){for(const r of s)r.alternateName===e&&(r.alternateName=t)}}var ChordDegreeText=(i=>(i[i.add=0]="add",i[i.alter=1]="alter",i[i.subtract=2]="subtract",i))(ChordDegreeText||{}),ChordSymbolEnum=(i=>(i[i.major=0]="major",i[i.minor=1]="minor",i[i.augmented=2]="augmented",i[i.diminished=3]="diminished",i[i.dominant=4]="dominant",i[i.majorseventh=5]="majorseventh",i[i.minorseventh=6]="minorseventh",i[i.diminishedseventh=7]="diminishedseventh",i[i.augmentedseventh=8]="augmentedseventh",i[i.halfdiminished=9]="halfdiminished",i[i.majorminor=10]="majorminor",i[i.majorsixth=11]="majorsixth",i[i.minorsixth=12]="minorsixth",i[i.dominantninth=13]="dominantninth",i[i.majorninth=14]="majorninth",i[i.minorninth=15]="minorninth",i[i.dominant11th=16]="dominant11th",i[i.major11th=17]="major11th",i[i.minor11th=18]="minor11th",i[i.dominant13th=19]="dominant13th",i[i.major13th=20]="major13th",i[i.minor13th=21]="minor13th",i[i.suspendedsecond=22]="suspendedsecond",i[i.suspendedfourth=23]="suspendedfourth",i[i.Neapolitan=24]="Neapolitan",i[i.Italian=25]="Italian",i[i.French=26]="French",i[i.German=27]="German",i[i.pedal=28]="pedal",i[i.power=29]="power",i[i.Tristan=30]="Tristan",i[i.none=31]="none",i))(ChordSymbolEnum||{});class GraphicalNote extends GraphicalObject{constructor(e,t,s,r=void 0){super(),this.DrawnAccidental=AccidentalEnum.NONE,this.lineShift=0,this.sourceNote=e,this.parentVoiceEntry=t,this.PositionAndShape=new BoundingBox$1(this,t.PositionAndShape),r?this.graphicalNoteLength=r:this.graphicalNoteLength=e.Length,this.numberOfDots=this.calculateNumberOfNeededDots(this.graphicalNoteLength),this.rules=s,this.rules.addGraphicalNoteToNoteMap(e,this)}Transpose(e,t,s,r){let o=this.sourceNote.Pitch;return MusicSheetCalculator.transposeCalculator&&(o=MusicSheetCalculator.transposeCalculator.transposePitch(this.sourceNote.Pitch,e,s)),o}calculateNumberOfNeededDots(e){return!this.sourceNote||!this.sourceNote.NoteTuplet?e.calculateNumberOfNeededDots():0}get ParentMusicPage(){return this.parentVoiceEntry.parentStaffEntry.parentMeasure.ParentMusicSystem.Parent}static FromNote(e,t){return t.NoteToGraphicalNoteMap.getValue(e.NoteToGraphicalNoteObjectId)}}const _EngravingRules=class{constructor(){this.DYSlursStartingAtSameStaffEntryYOffset=0,this.DYMinNoteWidth=0,this.DYWorkId=0,this.DYWorkSpecial=!1,this.DYContainerId="osmdCanvasPage",this.DYSVGContainerId="osmdSvgPage",this.DYMusicScoreType="staff",this.NoteDistances=[1,1,1.3,1.6,2,2.5,3,4],this.NoteDistancesScalingFactors=[1,2,4,8,16,32,64,128],this.DurationDistanceDict={},this.DurationScalingDistanceDict={},this.NoteToGraphicalNoteMapObjectCount=0,this.PlayAlreadyStartedNotesFromCursorPosition=!1,this.PlaybackSkipNotesSafetyInterval=.02,this.UseDefaultVoiceInteractionListener=!0,this.loadDefaultValues()}loadDefaultValues(){this.SamplingUnit=_EngravingRules.unit*3,this.MpatMode=!0,this.SheetTitleHeight=4,this.SheetSubtitleHeight=2,this.SheetMinimumDistanceBetweenTitleAndSubtitle=1,this.SheetComposerHeight=2,this.SheetAuthorHeight=2,this.CompactMode=!1,this.PagePlacementEnum=PagePlacementEnum.Down,this.PageHeight=100001,this.PageTopMargin=5,this.PageTopMarginNarrow=0,this.PageBottomMargin=5,this.PageLeftMargin=5,this.PageRightMargin=5,this.TitleTopDistance=5,this.TitleBottomDistance=1,this.StaffDistance=7,this.BetweenStaffDistance=5,this.MinimumStaffLineDistance=4,this.MinSkyBottomDistBetweenStaves=1,this.StaffHeight=4,this.TabStaffInterlineHeight=1.1111,this.BetweenStaffLinesDistance=_EngravingRules.unit,this.SystemLeftMargin=0,this.SystemRightMargin=0,this.SystemLabelsRightMargin=2,this.SystemComposerDistance=2,this.InstrumentLabelTextHeight=2,this.MinimumDistanceBetweenSystems=7,this.MinSkyBottomDistBetweenSystems=5,this.LastSystemMaxScalingFactor=1.4,this.AutoBeamNotes=!1,this.AutoBeamOptions={beam_middle_rests_only:!1,beam_rests:!1,maintain_stem_directions:!1},this.AutoBeamTabs=!1,this.BeamWidth=_EngravingRules.unit/2,this.BeamSpaceWidth=_EngravingRules.unit/3,this.BeamForwardLength=1.25*_EngravingRules.unit,this.FlatBeams=!1,this.FlatBeamOffset=20,this.FlatBeamOffsetPerBeam=10,this.ClefLeftMargin=.5,this.ClefRightMargin=.75,this.PercussionOneLineCutoff=3,this.PercussionForceVoicesOneLineCutoff=1,this.PercussionUseXMLDisplayStep=!0,this.PercussionXMLDisplayStepNoteValueShift=0,this.PercussionOneLineXMLDisplayStepOctaveOffset=0,this.BetweenKeySymbolsDistance=.2,this.KeyRightMargin=.75,this.RhythmRightMargin=1.25,this.ShowRhythmAgainAfterPartEndOrFinalBarline=!0,this.NewPartAndSystemAfterFinalBarline=!1,this.InStaffClefScalingFactor=.8,this.DistanceBetweenNaturalAndSymbolWhenCancelling=.4,this.NoteHelperLinesOffset=.25,this.MeasureLeftMargin=.7,this.MeasureRightMargin=0,this.DistanceBetweenLastInstructionAndRepetitionBarline=1,this.ArpeggioDistance=.6,this.StaccatoShorteningFactor=2,this.IdealStemLength=3,this.StemNoteHeadBorderYOffset=.2,this.StemMargin=.2,this.StemMinLength=2.5,this.StemMaxLength=4.5,this.BeamSlopeMaxAngle=10,this.StemMinAllowedDistanceBetweenNoteHeadAndBeamLine=1,this.SetWantedStemDirectionByXml=!0,this.GraceNoteScalingFactor=.6,this.GraceNoteXOffset=.2,this.WedgeOpeningLength=1.2,this.WedgeMeasureEndOpeningLength=.75,this.WedgeMeasureBeginOpeningLength=.75,this.WedgePlacementAboveY=-1.5,this.WedgePlacementBelowY=1.5,this.WedgeHorizontalMargin=.6,this.WedgeVerticalMargin=.5,this.DistanceOffsetBetweenTwoHorizontallyCrossedWedges=.3,this.WedgeMinLength=2,this.WedgeEndDistanceBetweenTimestampsFactor=1.75,this.DistanceBetweenAdjacentDynamics=.75,this.TempoChangeMeasureValidity=4,this.TempoContinousFactor=.7,this.StaccatoScalingFactor=.8,this.BetweenDotsDistance=.8,this.OrnamentAccidentalScalingFactor=.65,this.ChordSymbolTextHeight=2,this.ChordSymbolTextAlignment=TextAlignmentEnum.LeftBottom,this.ChordSymbolRelativeXOffset=-1,this.ChordSymbolXSpacing=1,this.ChordOverlapAllowedIntoNextMeasure=0,this.ChordSymbolYOffset=.1,this.ChordSymbolYPadding=0,this.ChordSymbolYAlignment=!0,this.ChordSymbolYAlignmentScope="staffline",this.ChordSymbolLabelTexts=new Dictionary,this.resetChordSymbolLabelTexts(this.ChordSymbolLabelTexts),this.CustomChords=[],this.resetChordNames(),this.RepetitionSymbolsYOffset=0,this.RehearsalMarkXOffsetDefault=10,this.RehearsalMarkXOffset=0,this.RehearsalMarkXOffsetSystemStartMeasure=-20,this.RehearsalMarkYOffsetDefault=-15,this.RehearsalMarkYOffset=0,this.RehearsalMarkFontSize=10,this.MeasureNumberLabelHeight=1.5*_EngravingRules.unit,this.MeasureNumberLabelOffset=2,this.MeasureNumberLabelXOffset=-.5,this.TupletsRatioed=!1,this.TupletsBracketed=!1,this.TripletsBracketed=!1,this.TupletNumberLabelHeight=1.5*_EngravingRules.unit,this.TupletNumberYOffset=.5,this.LabelMarginBorderFactor=.1,this.TupletVerticalLineLength=.5,this.TupletNumbersInTabs=!1,this.SlurPlacementFromXML=!0,this.BezierCurveStepSize=1e3,this.calculateCurveParametersArrays(),this.TieGhostObjectWidth=.75,this.TieYPositionOffsetFactor=.3,this.MinimumNeededXspaceForTieGhostObject=1,this.TieHeightMinimum=.28,this.TieHeightMaximum=1.2,this.TieHeightInterpolationK=.0288,this.TieHeightInterpolationD=.136,this.SlurNoteHeadYOffset=.5,this.SlurStemXOffset=.3,this.SlurSlopeMaxAngle=15,this.SlurTangentMinAngle=30,this.SlurTangentMaxAngle=80,this.SlurHeightFactor=1,this.SlurHeightFlattenLongSlursFactorByWidth=.24,this.SlurHeightFlattenLongSlursFactorByAngle=.36,this.SlurHeightFlattenLongSlursCutoffAngle=47,this.SlurHeightFlattenLongSlursCutoffWidth=16,this.SlursStartingAtSameStaffEntryYOffset=.8,this.SlurMaximumYControlPointDistance=void 0,this.RepetitionEndingLabelHeight=2,this.RepetitionEndingLabelXOffset=.5,this.RepetitionEndingLabelYOffset=.3,this.RepetitionEndingLineYLowerOffset=.5,this.RepetitionEndingLineYUpperOffset=.3,this.VoltaOffset=2.5,this.LyricsAlignmentStandard=TextAlignmentEnum.LeftBottom,this.LyricsHeight=2,this.LyricsYOffsetToStaffHeight=0,this.VerticalBetweenLyricsDistance=.5,this.HorizontalBetweenLyricsDistance=.2,this.BetweenSyllableMaximumDistance=10,this.BetweenSyllableMinimumDistance=.5,this.LyricOverlapAllowedIntoNextMeasure=3.4,this.MinimumDistanceBetweenDashes=10,this.MaximumLyricsElongationFactor=2.5,this.InstantaneousTempoTextHeight=2.3,this.ContinuousDynamicTextHeight=2.3,this.MoodTextHeight=2.3,this.UnknownTextHeight=2,this.ContinuousTempoTextHeight=2.3,this.DynamicExpressionMaxDistance=2,this.DynamicExpressionSpacer=.5,this.VexFlowDefaultNotationFontScale=39,this.VexFlowDefaultTabFontScale=39,this.TremoloStrokeScale=1,this.TremoloYSpacingScale=1,this.StemWidth=.15,this.StaffLineWidth=.1,this.StaffLineColor=void 0,this.LedgerLineWidth=1,this.LedgerLineStrokeStyle=void 0,this.LedgerLineColorDefault="#000000",this.WedgeLineWidth=.12,this.TupletLineWidth=.12,this.LyricUnderscoreLineWidth=.12,this.SystemThinLineWidth=.12,this.SystemBoldLineWidth=_EngravingRules.unit/2,this.SystemRepetitionEndingLineWidth=.12,this.SystemDotWidth=_EngravingRules.unit/2,this.DistanceBetweenVerticalSystemLines=.35,this.DistanceBetweenDotAndLine=.7,this.RepeatEndStartPadding=2,this.OctaveShiftLineWidth=.12,this.OctaveShiftVerticalLineLength=_EngravingRules.unit,this.GraceLineWidth=this.StaffLineWidth*this.GraceNoteScalingFactor,this.MultipleRestMeasureDefaultWidth=4,this.MinimumCrossedBeamDifferenceMargin=1e-4,this.SheetMaximumWidth=32767,this.VoiceSpacingMultiplierVexflow=.85,this.VoiceSpacingAddendVexflow=3,this.PickupMeasureWidthMultiplier=1,this.DisplacedNoteMargin=.1,this.MinNoteDistance=2,this.SubMeasureXSpacingThreshold=35,this.MeasureDynamicsMaxScalingFactor=2.5,this.WholeRestXShiftVexflow=-1.5,this.MetronomeMarksDrawn=!0,this.MetronomeMarkXShift=-6,this.MetronomeMarkYShift=-.5,this.SoftmaxFactorVexFlow=15,this.StaggerSameWholeNotes=!0,this.AlignRests=AlignRestOption.Never,this.RestCollisionYPadding=0,this.FillEmptyMeasuresWithWholeRest=FillEmptyMeasuresWithWholeRests.No,this.ArpeggiosGoAcrossVoices=!1,this.RenderArpeggios=!0,this.RenderSlurs=!0,this.ColoringMode=ColoringModes.XML,this.ColoringEnabled=!0,this.ColorStemsLikeNoteheads=!1,this.ColorBeams=!0,this.ColorFlags=!0,this.applyDefaultColorMusic("#000000"),this.DefaultColorCursor="#33e02f",this.DefaultFontFamily="Times New Roman",this.DefaultFontStyle=FontStyles.Regular,this.DefaultVexFlowNoteFont="gonville",this.MaxMeasureToDrawIndex=Number.MAX_VALUE,this.MinMeasureToDrawIndex=0,this.MaxSystemToDrawNumber=Number.MAX_VALUE,this.MaxPageToDrawNumber=Number.MAX_VALUE,this.RenderComposer=!0,this.RenderTitle=!0,this.RenderSubtitle=!0,this.RenderLyricist=!0,this.RenderPartNames=!0,this.RenderPartAbbreviations=!0,this.RenderFingerings=!0,this.RenderMeasureNumbers=!0,this.RenderMeasureNumbersOnlyAtSystemStart=!1,this.UseXMLMeasureNumbers=!0,this.RenderLyrics=!0,this.RenderChordSymbols=!0,this.RenderMultipleRestMeasures=!0,this.AutoGenerateMutipleRestMeasuresFromRestMeasures=!0,this.RenderRehearsalMarks=!0,this.RenderClefsAtBeginningOfStaffline=!0,this.RenderKeySignatures=!0,this.RenderTimeSignatures=!0,this.ArticulationPlacementFromXML=!0,this.FingeringPosition=PlacementEnum.AboveOrBelow,this.FingeringPositionFromXML=!0,this.FingeringPositionGrace=PlacementEnum.Left,this.FingeringInsideStafflines=!1,this.FingeringLabelFontHeight=1.7,this.FingeringOffsetX=0,this.FingeringOffsetY=0,this.FingeringPaddingY=-.2,this.FingeringTextSize=1.5,this.RenderStringNumbersClassical=!0,this.StringNumberOffsetY=0,this.NewSystemAtXMLNewSystemAttribute=!1,this.NewPageAtXMLNewPageAttribute=!1,this.RestoreCursorAfterRerender=!0,this.StretchLastSystemLine=!1,_EngravingRules.FixStafflineBoundingBox=!1,this.PageFormat=PageFormat.UndefinedPageFormat,this.PageBackgroundColor=void 0,this.PerformanceMode=!1,this.RenderSingleHorizontalStaffline=!1,this.SpacingBetweenTextLines=0,this.NoteToGraphicalNoteMap=new Dictionary,this.NoteToGraphicalNoteMapObjectCount=0;try{this.MaxInstructionsConstValue=this.ClefLeftMargin+this.ClefRightMargin+this.KeyRightMargin+this.RhythmRightMargin+11}catch(i){loglevelExports.info("EngravingRules()",i)}this.MpatMode&&(this.NewPartAndSystemAfterFinalBarline=!0)}applyDefaultColorMusic(i){this.DefaultColorMusic=i,this.DefaultColorNotehead=this.DefaultColorMusic,this.DefaultColorRest=this.DefaultColorNotehead,this.DefaultColorStem=this.DefaultColorNotehead,this.DefaultColorLabel=this.DefaultColorNotehead,this.DefaultColorTitle=this.DefaultColorNotehead,this.LedgerLineColorDefault=this.DefaultColorNotehead}addGraphicalNoteToNoteMap(i,e){i.NoteToGraphicalNoteObjectId=this.NoteToGraphicalNoteMapObjectCount,this.NoteToGraphicalNoteMap.setValue(i.NoteToGraphicalNoteObjectId,e),this.NoteToGraphicalNoteMapObjectCount++}GNote(i){return GraphicalNote.FromNote(i,this)}clearMusicSheetObjects(){this.NoteToGraphicalNoteMap=new Dictionary,this.NoteToGraphicalNoteMapObjectCount=0}setChordSymbolLabelText(i,e){this.ChordSymbolLabelTexts.setValue(i,e)}resetChordSymbolLabelTexts(i){return i.setValue(ChordSymbolEnum.minor,"m"),i.setValue(ChordSymbolEnum.augmented,"aug"),i.setValue(ChordSymbolEnum.diminished,"dim"),i.setValue(ChordSymbolEnum.dominant,"7"),i.setValue(ChordSymbolEnum.majorseventh,"maj7"),i.setValue(ChordSymbolEnum.minorseventh,"m7"),i.setValue(ChordSymbolEnum.diminishedseventh,"dim7"),i.setValue(ChordSymbolEnum.augmentedseventh,"aug7"),i.setValue(ChordSymbolEnum.halfdiminished,"m7b5"),i.setValue(ChordSymbolEnum.majorminor,"m(maj7)"),i.setValue(ChordSymbolEnum.majorsixth,"maj6"),i.setValue(ChordSymbolEnum.minorsixth,"m6"),i.setValue(ChordSymbolEnum.dominantninth,"9"),i.setValue(ChordSymbolEnum.majorninth,"maj9"),i.setValue(ChordSymbolEnum.minorninth,"m9"),i.setValue(ChordSymbolEnum.dominant11th,"11"),i.setValue(ChordSymbolEnum.major11th,"maj11"),i.setValue(ChordSymbolEnum.minor11th,"m11"),i.setValue(ChordSymbolEnum.dominant13th,"13"),i.setValue(ChordSymbolEnum.major13th,"maj13"),i.setValue(ChordSymbolEnum.minor13th,"m13"),i.setValue(ChordSymbolEnum.suspendedsecond,"sus2"),i.setValue(ChordSymbolEnum.suspendedfourth,"sus4"),i.setValue(ChordSymbolEnum.power,"5"),i.setValue(ChordSymbolEnum.none,"N.C."),i}addChordName(i,e,t,s,r){if(ChordSymbolEnum[e]!==void 0){const o={adds:t,alts:s,subs:r};this.CustomChords.push(CustomChord.createCustomChord(i,ChordSymbolEnum[e],o))}}renameChord(i,e){CustomChord.renameCustomChord(i,e,this.CustomChords)}resetChordNames(){this.addChordName("alt","major",["#5","b9","#9"],["b5"],[]),this.addChordName("7alt","dominant",["#5","b9","#9"],["b5"],[]),this.addChordName("7sus4","dominant",["4"],[],["3"]),this.addChordName("7sus4","suspendedfourth",["7"],[],[]),this.addChordName("9sus4","dominantninth",["4"],[],["3"]),this.addChordName("9sus4","suspendedfourth",["9"],[],[]),this.addChordName("11sus4","dominant11th",["4"],[],["3"]),this.addChordName("11sus4","suspendedfourth",["11"],[],[]),this.addChordName("13sus4","dominant13th",["4"],[],["3"]),this.addChordName("13sus4","suspendedfourth",["13"],[],[]),this.addChordName("7sus2","dominant",["2"],[],["3"]),this.addChordName("7sus2","suspendedsecond",["7"],[],[]),this.addChordName("m7b5","minorseventh",[],["b5"],[]),this.addChordName("9sus2","dominantninth",["2"],[],["3"]),this.addChordName("9sus2","suspendedsecond",["9"],[],[]),this.addChordName("11sus2","dominant11th",["2"],[],["3"]),this.addChordName("11sus2","suspendedsecond",["11"],[],[]),this.addChordName("13sus2","dominant13th",["2"],[],["3"]),this.addChordName("13sus2","suspendedsecond",["13"],[],[]),this.addChordName("m(maj9)","majorminor",["9"],[],[]),this.addChordName("m(maj11)","majorminor",["11"],[],[]),this.addChordName("m(maj13)","majorminor",["13"],[],[]),this.addChordName("69","majorsixth",["9"],[],[]),this.addChordName("mi69","minorsixth",["9"],[],[])}calculateCurveParametersArrays(){this.TPower3=new Array(this.BezierCurveStepSize),this.OneMinusTPower3=new Array(this.BezierCurveStepSize),this.FactorOne=new Array(this.BezierCurveStepSize),this.FactorTwo=new Array(this.BezierCurveStepSize);for(let i=0;i(i[i.XML=0]="XML",i[i.AutoColoring=1]="AutoColoring",i[i.CustomColorSet=2]="CustomColorSet",i))(ColoringModes||{}),DrawingParametersEnum=(i=>(i.allon="allon",i.compact="compact",i.compacttight="compacttight",i.default="default",i.leadsheet="leadsheet",i.preview="preview",i.thumbnail="thumbnail",i))(DrawingParametersEnum||{});class DrawingParameters{constructor(e="default"){this.rules=new EngravingRules,this.drawCursors=!0,this.drawTitle=!0,this.drawSubtitle=!0,this.drawLyricist=!0,this.drawComposer=!0,this.drawCredits=!0,this.drawPartNames=!0,this.fingeringPosition=PlacementEnum.Left,this.drawHiddenNotes=!1,this.DrawingParametersEnum=e}set DrawingParametersEnum(e){switch(this.drawingParametersEnum=e,e){case"allon":this.setForAllOn();break;case"thumbnail":this.setForThumbnail();break;case"leadsheet":this.setForLeadsheet();break;case"compact":this.setForCompactMode();break;case"compacttight":this.setForCompactTightMode();break;case"default":default:this.setForDefault()}}get DrawingParametersEnum(){return this.drawingParametersEnum}setForAllOn(){this.drawHighlights=!0,this.drawErrors=!0,this.drawSelectionStartSymbol=!0,this.drawSelectionEndSymbol=!0,this.drawCursors=!0,this.drawActivitySymbols=!0,this.drawScrollIndicator=!0,this.drawAnnotations=!0,this.drawComments=!0,this.drawMarkedAreas=!0,this.DrawTitle=!0,this.DrawSubtitle=!0,this.DrawComposer=!0,this.DrawLyricist=!0,this.drawCredits=!0,this.DrawPartNames=!0,this.drawHiddenNotes=!0,this.rules.CompactMode=!1}setForDefault(){this.rules.loadDefaultValues(),this.setForAllOn(),this.drawHiddenNotes=!1}setForThumbnail(){this.drawHighlights=!1,this.drawErrors=!1,this.drawSelectionStartSymbol=!1,this.drawSelectionStartSymbol=!1,this.drawCursors=!1,this.drawActivitySymbols=!1,this.drawScrollIndicator=!1,this.drawAnnotations=!0,this.drawComments=!0,this.drawMarkedAreas=!0,this.drawHiddenNotes=!1}setForCompactMode(){this.rules.CompactMode=!0,this.DrawCredits=!1,this.drawHiddenNotes=!1}setForCompactTightMode(){this.setForCompactMode(),this.DrawPartNames=!1,this.rules.VoiceSpacingMultiplierVexflow=.65,this.rules.VoiceSpacingAddendVexflow=2,this.rules.MinSkyBottomDistBetweenStaves=1,this.rules.MinSkyBottomDistBetweenSystems=1,this.rules.BetweenStaffDistance=2.5,this.rules.StaffDistance=3.5,this.rules.MinimumDistanceBetweenSystems=1,this.rules.PageBottomMargin=0,this.rules.PageLeftMargin=2,this.rules.PageRightMargin=2}setForLeadsheet(){this.drawHighlights=!1,this.drawErrors=!1,this.drawSelectionStartSymbol=!0,this.drawSelectionEndSymbol=!0,this.drawCursors=!0,this.drawActivitySymbols=!1,this.drawScrollIndicator=!0,this.drawAnnotations=!0,this.drawComments=!0,this.drawMarkedAreas=!0}get DrawCredits(){return this.drawCredits}set DrawCredits(e){this.drawCredits=e,this.DrawComposer=e,this.DrawTitle=e,this.DrawSubtitle=e,this.DrawLyricist=e}get DrawTitle(){return this.drawTitle}set DrawTitle(e){this.drawTitle=e,this.rules.RenderTitle=e,e||(this.DrawSubtitle=!1)}get DrawSubtitle(){return this.drawSubtitle}set DrawSubtitle(e){this.drawSubtitle=e,this.rules.RenderSubtitle=e,e&&(this.DrawTitle=!0)}get DrawComposer(){return this.drawComposer}set DrawComposer(e){this.drawComposer=e,this.rules.RenderComposer=e}get DrawLyricist(){return this.drawLyricist}set DrawLyricist(e){this.drawLyricist=e,this.rules.RenderLyricist=e}get DrawPartNames(){return this.drawPartNames}set DrawPartNames(e){this.drawPartNames=e,this.rules.RenderPartNames=e,this.rules.RenderPartNames||(this.rules.RenderPartAbbreviations=!1)}get FingeringPosition(){return this.fingeringPosition}set FingeringPosition(e){this.fingeringPosition=e,this.rules.FingeringPosition=e}get Rules(){return this.rules}set Rules(e){this.rules=e}}var AlignRestOption=(i=>(i[i.Never=0]="Never",i[i.Always=1]="Always",i[i.Auto=2]="Auto",i))(AlignRestOption||{}),FillEmptyMeasuresWithWholeRests=(i=>(i[i.No=0]="No",i[i.YesVisible=1]="YesVisible",i[i.YesInvisible=2]="YesInvisible",i))(FillEmptyMeasuresWithWholeRests||{}),BackendType=(i=>(i[i.SVG=0]="SVG",i[i.Canvas=1]="Canvas",i))(BackendType||{});class OSMDOptions{static OSMDOptionsStandard(){return{autoResize:!0,backend:"svg",drawingParameters:DrawingParametersEnum.default}}static BackendTypeFromString(e){return e&&e.toLowerCase()==="canvas"?1:0}}class IXmlElement{constructor(e){if(this.hasAttributes=!1,!e)throw new Error("IXmlElement: expected Element, got undefined");this.elem=e,this.name=e.nodeName.toLowerCase(),e.hasAttributes()&&(this.hasAttributes=!0,this.firstAttribute=e.attributes[0]),this.hasElements=e.hasChildNodes(),e.childNodes.length===1&&e.childNodes[0].nodeType===Node.TEXT_NODE?this.value=e.childNodes[0].nodeValue:this.value=""}attribute(e){return this.elem.attributes.getNamedItem(e)}attributes(){if(!this.attrs){const e=this.elem.attributes,t=[];for(let s=0;s0?this.Voices[0].Visible:!1}set Visible(e){for(let t=0,s=this.Voices.length;t-1&&this.parent.MusicSystems.splice(t,1)}this.parent=e,this.boundingBox.Parent=e.PositionAndShape}get NextSystem(){const e=this.Parent.MusicSystems.indexOf(this);return e!==this.Parent.MusicSystems.length?this.Parent.MusicSystems[e+1]:void 0}get StaffLines(){return this.staffLines}get GraphicalMeasures(){return this.graphicalMeasures}get MeasureNumberLabels(){return this.measureNumberLabels}get Labels(){return this.labels.values()}get ObjectsToRedraw(){return this.objectsToRedraw}get InstrumentBrackets(){return this.instrumentBrackets}get GroupBrackets(){return this.groupBrackets}get GraphicalMarkedAreas(){return this.graphicalMarkedAreas}get SystemLines(){return this.systemLines}get Id(){return this.id}createSystemLeftLine(e,t,s){let r=-e/2;s&&(r=this.maxLabelLength+t-e/2);const o=this.staffLines[0].Measures[0];let a;this.staffLines.length>1&&(a=this.staffLines[this.staffLines.length-1].Measures[0]);const l=this.createSystemLine(r,e,SystemLinesEnum.SingleThin,SystemLinePosition.MeasureBegin,this,o,a);this.SystemLines.push(l),l.PositionAndShape.RelativePosition=new PointF2D(r,0),l.PositionAndShape.BorderLeft=0,l.PositionAndShape.BorderRight=e,l.PositionAndShape.BorderTop=0,l.PositionAndShape.BorderBottom=this.boundingBox.Size.height,this.createLinesForSystemLine(l)}createVerticalLineForMeasure(e,t,s,r,o,a){const l=a.ParentStaffLine,c=new PointF2D(l.PositionAndShape.RelativePosition.x,l.PositionAndShape.RelativePosition.y),d=l.ParentStaff.ParentInstrument.Staves;if(l.ParentStaff===d[0]){let m;d.length>1&&(m=this.getBottomStaffLine(l).Measures[o]);const u=this.createSystemLine(e,t,s,r,this,a,m),g=c.x+e;u.PositionAndShape.RelativePosition=new PointF2D(g,0),u.PositionAndShape.BorderLeft=0,u.PositionAndShape.BorderRight=t,this.SystemLines.push(u)}}setYPositionsToVerticalLineObjectsAndCreateLines(e){}calculateBorders(e){}alignBeginInstructions(){}GetLeftBorderAbsoluteXPosition(){return this.StaffLines[0].PositionAndShape.AbsolutePosition.x+this.StaffLines[0].Measures[0].beginInstructionsWidth}GetRightBorderAbsoluteXPosition(){return this.StaffLines[0].PositionAndShape.AbsolutePosition.x+this.StaffLines[0].StaffLines[0].End.x}AddGraphicalMeasures(e){for(let t=0,s=e.length;t1){let a,l;for(let c=0,d=this.staffLines.length;cthis.maxLabelLength&&(this.maxLabelLength=m.PositionAndShape.Size.width,t=o)}this.updateMusicSystemStaffLineXPosition(t)}setMusicSystemLabelsYPosition(){this.labels.forEach((e,t)=>{let s=0,r=0;for(let o=0;o0&&(t.PositionAndShape.RelativePosition=new PointF2D(0,s/r+2))})}checkStaffEntriesForStaffEntryLink(){let e=!1,t=!1;for(let s=0;s=0;s--){if(t=e.InstrumentalGroups[s],t instanceof Instrument){if(t.Visible===!0)return t;continue}return this.findLastVisibleInstrumentInInstrumentalGroup(t)}}updateMusicSystemStaffLineXPosition(e){for(let t=0,s=this.StaffLines.length;t1}isVisible(){return this.ParentStaff.ParentInstrument.Visible}getGraphicalMeasureDurationFromStaffEntries(){let e=new Fraction$1(0,1);const t=[];for(let s=0,r=this.staffEntries.length;s0&&a.Add(c.notes[0].graphicalNoteLength);e.lt(a)&&(e=Fraction$1.createFromFraction(a))}return e}addGraphicalStaffEntry(e){this.staffEntries.push(e)}addGraphicalStaffEntryAtTimestamp(e){if(e)if(this.staffEntries.length===0||this.staffEntries[this.staffEntries.length-1].relInMeasureTimestamp.lt(e.relInMeasureTimestamp))this.staffEntries.push(e);else for(let t=this.staffEntries.length-1;t>=0;t--){if(this.staffEntries[t].relInMeasureTimestamp.lt(e.relInMeasureTimestamp)){this.staffEntries.splice(t+1,0,e);break}t===0&&this.staffEntries.splice(t,0,e)}}isPianoRightHand(){return this.isUpperStaffOfInstrument()}isPianoLeftHand(){return this.isLowerStaffOfInstrument()}isUpperStaffOfInstrument(){return this.parentStaff.ParentInstrument.Staves.length===1?!0:this.ParentStaff===this.parentStaff.ParentInstrument.Staves[0]}isLowerStaffOfInstrument(){return this.parentStaff.ParentInstrument.Staves.length===1?!1:this.ParentStaff===this.ParentStaff.ParentInstrument.Staves.last()}beginsWithLineRepetition(){const e=this.parentSourceMeasure;return e?e.beginsWithLineRepetition():!1}endsWithLineRepetition(){const e=this.parentSourceMeasure;return e?e.endsWithLineRepetition():!1}beginsWithWordRepetition(){const e=this.parentSourceMeasure;return e?e.beginsWithWordRepetition():!1}endsWithWordRepetition(){const e=this.parentSourceMeasure;return e?e.endsWithWordRepetition():!1}getTransposedHalftones(){return this.parentStaff.ParentInstrument.GetMusicSheet.Transpose+this.parentStaff.ParentInstrument.Transpose}}class VexFlowVoiceEntry extends GraphicalVoiceEntry{constructor(e,t){super(e,t)}applyBordersFromVexflow(){const e=this.vfStaveNote;if(!e.getNoteHeadBeginX)return;const t=e.getBoundingBox(),s=e.getNoteHeadBeginX()-t.x;this.PositionAndShape.RelativePosition.y=t.y/unitInPixels,this.PositionAndShape.BorderTop=0,this.PositionAndShape.BorderBottom=t.h/unitInPixels,this.PositionAndShape.BorderLeft=-(s+e.width/2)/unitInPixels,this.PositionAndShape.BorderRight=(t.w-s)/unitInPixels}set vfStaveNote(e){this.mVexFlowStaveNote=e}get vfStaveNote(){return this.mVexFlowStaveNote}color(){var g;const e=this.rules.DefaultColorNotehead,t=this.rules.DefaultColorRest,s=this.rules.DefaultColorStem,r="#00000000";let o,a;const l=this.vfStaveNote;for(let b=0;bc.symbol_type===t))return;const l=new VF$9.Repetition(t,r,-this.rules.RepetitionSymbolsYOffset);this.stave.addModifier(l,s);return}this.addVolta(e)}addVolta(e){var s;let t=VF$9.Volta.type.BEGIN;if(e.type===RepetitionInstructionEnum.Ending){switch(e.alignment){case AlignmentType.Begin:this.parentSourceMeasure.endsRepetitionEnding()?t=VF$9.Volta.type.BEGIN_END:t=VF$9.Volta.type.BEGIN;break;case AlignmentType.End:if(this.parentSourceMeasure.beginsRepetitionEnding())return;t=VF$9.Volta.type.END;break}const r=this.ParentStaffLine.SkyBottomLineCalculator,o=this.PositionAndShape.AbsolutePosition.x+this.PositionAndShape.BorderMarginLeft+.4,a=Math.max(this.PositionAndShape.AbsolutePosition.x+this.PositionAndShape.BorderMarginRight,o+.4),l=r.getSkyLineMinInRange(o,a)-2;let c=-6.1+this.rules.VoltaOffset,d=this.rules.VoltaOffset;if(l0){loglevelExports.trace(`Ghost Found in between (measure ${this.MeasureNumber})`);const u=this.createGhostGves(m);s.splice(a,0,...u),a+=u.length}}else{const m=Fraction$1.minus(c,this.parentSourceMeasure.AbsoluteTimestamp);if(m.RealValue>0){loglevelExports.trace(`Ghost Found at start (measure ${this.MeasureNumber})`);const u=this.createGhostGves(m);s.splice(0,0,...u),a+=u.length}}t=d}const r=Fraction$1.plus(this.parentSourceMeasure.AbsoluteTimestamp,this.parentSourceMeasure.Duration),o=Fraction$1.minus(r,t);if(o.RealValue>0){loglevelExports.trace(`Ghost Found at end (measure ${this.MeasureNumber})`);const a=this.createGhostGves(o);s=s.concat(a)}return s}createGhostGves(e){const t=VexFlowConverter.GhostNotes(e),s=[];for(const r of t){const o=new VexFlowVoiceEntry(void 0,void 0);o.vfStaveNote=r,s.push(o)}return s}handleBeam(e,t){const s=e.sourceNote.ParentVoiceEntry.ParentVoice.VoiceId;let r=this.beams[s];r||(r=this.beams[s]=[]);let o;for(const l of r)l[0]===t&&(o=l);o||(o=[t,[]],r.push(o));const a=e.parentVoiceEntry;o[1].indexOf(a)<0&&o[1].push(a)}handleTuplet(e,t){const s=e.sourceNote.ParentVoiceEntry.ParentVoice.VoiceId;t=e.sourceNote.NoteTuplet;let r=this.tuplets[s];r||(r=this.tuplets[s]=[]);let o;for(const l of r)l[0]===t&&(o=l);o||(o=[t,[]],r.push(o));const a=e.parentVoiceEntry;o[1].indexOf(a)<0&&o[1].push(a)}finalizeBeams(){this.vfbeams={};const e=[];for(const t in this.beams)if(this.beams.hasOwnProperty(t)){let s=this.vfbeams[t];s||(s=this.vfbeams[t]=[]);for(const r of this.beams[t]){let o=!1;for(const b of r[0].Notes)if(b.Length.RealValue>=new Fraction$1(1,4).RealValue&&(!b.TypeLength||b.TypeLength.RealValue>.125)){o=!0;break}if(o){loglevelExports.debug("Beam between note >= quarter, likely tremolo, currently unsupported. continuing.");continue}const a=[],l=r[0],c=r[1];let d=!0;for(const b of c)b.parentVoiceEntry.ParentVoice===l.Notes[0].ParentVoiceEntry.ParentVoice&&(d=b.parentVoiceEntry.WantedStemDirection===StemDirectionType.Undefined);let m=!1,u;const g=[];for(const b of c){const y=b.vfStaveNote;y&&(a.push(y),e.push(y)),b.parentVoiceEntry.IsGrace&&(m=!0),b.parentVoiceEntry.StemColor&&this.rules.ColoringEnabled&&g.push(b.parentVoiceEntry.StemColor)}if(a.length>1){const b=new VF$9.Beam(a,d);if(m&&(b.render_options.beam_width=3,b.render_options.partial_beam_length=4),g.length>=2&&this.rules.ColorBeams){u=g[0];for(const y of g)if(y!==u){u=void 0;break}b.setStyle({fillStyle:u,strokeStyle:u})}this.rules.FlatBeams&&(b.render_options.flat_beams=!0,b.render_options.flat_beam_offset=this.rules.FlatBeamOffset,b.render_options.flat_beam_offset_per_beam=this.rules.FlatBeamOffsetPerBeam),s.push(b)}else loglevelExports.debug("Warning! Beam with no notes!")}}this.rules.AutoBeamNotes&&this.autoBeamNotes(e)}autoBeamNotes(e){if(!this.rules.AutoBeamTabs&&this.isTabMeasure)return;let t=[],s=[],r,o=[];this.autoTupletVfBeams=[];const a=[];this.autoVfBeams=[];let l=this.parentSourceMeasure.ActiveTimeSignature;l||(l=this.parentSourceMeasure.Duration);for(const m of this.staffEntries)for(const u of m.graphicalVoiceEntries){const g=u.vfStaveNote,b=u.notes[0],y=m.relInMeasureTimestamp.isOnBeat(l),S=s.length>=2,v=b.sourceNote.Length.RealValue-new Fraction$1(1,4).RealValue>-Fraction$1.FloatInaccuracyTolerance,x=u.parentVoiceEntry.IsGrace||v||e.contains(g);if(x||y){if(S){for(const E of s)t.push(E);a.push(t.slice()),t=[]}if(s=[],x)continue}const A=u.notes[0].sourceNote.NoteTuplet;if(A){let E=!1;for(const w of A.Notes){for(const _ of w)if(_.NoteTypeXml>=NoteType.QUARTER||_.ParentVoiceEntry.IsGrace||_.isRest()&&!this.rules.AutoBeamOptions.beam_rests){E=!0;break}if(E)break}if(!r)r=A;else if(r!==A){if(o.length>1){const w=new VF$9.Beam(o,!0);this.rules.FlatBeams&&(w.render_options.flat_beams=!0,w.render_options.flat_beam_offset=this.rules.FlatBeamOffset,w.render_options.flat_beam_offset_per_beam=this.rules.FlatBeamOffsetPerBeam),this.autoTupletVfBeams.push(w)}o=[],r=A}E||o.push(g);continue}else r=void 0;s.push(g)}if(o.length>=2){const m=new VF$9.Beam(o,!0);this.rules.FlatBeams&&(m.render_options.flat_beams=!0,m.render_options.flat_beam_offset=this.rules.FlatBeamOffset,m.render_options.flat_beam_offset_per_beam=this.rules.FlatBeamOffsetPerBeam),this.autoTupletVfBeams.push(m)}if(s.length>=2){for(const m of s)t.push(m);a.push(t)}const c=this.rules.AutoBeamOptions,d={beam_middle_only:c.beam_middle_rests_only,beam_rests:c.beam_rests,maintain_stem_directions:c.maintain_stem_directions};if(c.groups&&c.groups.length){const m=[];for(const u of c.groups)m.push(new VF$9.Fraction(u[0],u[1]));d.groups=m}for(const m of a){const u=VF$9.Beam.generateBeams(m,d);for(const g of u)this.rules.FlatBeams&&(g.render_options.flat_beams=!0,g.render_options.flat_beam_offset=this.rules.FlatBeamOffset,g.render_options.flat_beam_offset_per_beam=this.rules.FlatBeamOffsetPerBeam),this.autoVfBeams.push(g)}}finalizeTuplets(){this.vftuplets={};for(const e in this.tuplets)if(this.tuplets.hasOwnProperty(e)){let t=this.vftuplets[e];t||(t=this.vftuplets[e]=[]);for(const s of this.tuplets[e]){const r=[],o=s[1];for(const a of o)r.push(a.vfStaveNote);if(r.length>1){const a=s[0],l=a.Notes[0][0].NormalNotes,c=a.Bracket||a.TupletLabelNumber===3&&this.rules.TripletsBracketed||a.TupletLabelNumber!==3&&this.rules.TupletsBracketed;let d=VF$9.Tuplet.LOCATION_TOP;a.tupletLabelNumberPlacement===PlacementEnum.Below&&(d=VF$9.Tuplet.LOCATION_BOTTOM),t.push(new VF$9.Tuplet(r,{bracketed:c,location:d,notes_occupied:l,num_notes:a.TupletLabelNumber,ratioed:this.rules.TupletsRatioed}))}else loglevelExports.debug("Warning! Tuplet with no notes! Trying to ignore, but this is a serious problem.")}}}layoutStaffEntry(e){}graphicalMeasureCreatedCalculations(){let e,t=[];const s=[];for(const o of this.staffEntries){e=!1,t=[];for(const a of o.graphicalVoiceEntries){if(a.parentVoiceEntry.IsGrace){t.push(a),s.push(a),e||(e=a.parentVoiceEntry.GraceSlur);continue}if(a.vfStaveNote=VexFlowConverter.StaveNote(a),t.length>0){const l=[];for(let d=0;d0&&(m.GraceSlash=!1);const u=VexFlowConverter.StaveNote(m);m.vfStaveNote=u,l.push(u)}const c=new VF$9.GraceNoteGroup(l,e);a.vfStaveNote.addModifier(0,c),t=[]}}}if(t.length>0)for(const o of t)o.vfStaveNote=VexFlowConverter.StaveNote(o),o.parentVoiceEntry.GraceAfterMainNote=!0;this.finalizeBeams(),this.finalizeTuplets();const r=this.getVoicesWithinMeasure();if(this.rules.RenderFingerings)for(const o of this.staffEntries)o.setModifierXOffsets();for(const o of r){if(!o)continue;this.vfVoices[o.VoiceId]=new VF$9.Voice({beat_value:this.parentSourceMeasure.Duration.Denominator,num_beats:this.parentSourceMeasure.Duration.Numerator,resolution:VF$9.RESOLUTION}).setMode(VF$9.Voice.Mode.SOFT);const a=this.getRestFilledVexFlowStaveNotesPerVoice(o);for(const l of a){if(l.parentVoiceEntry&&l.parentVoiceEntry.IsGrace&&!l.parentVoiceEntry.GraceAfterMainNote)continue;const c=l;if(c.vfStaveNote.ticks.denominator===0)continue;if(l.notes.length===0||!l.notes[0]||!l.notes[0].sourceNote.PrintObject){this.vfVoices[o.VoiceId].addTickable(c.vfStaveNote);continue}const d=c.parentStaffEntry;if(d&&d.vfClefBefore){const m=new NoteSubGroup([d.vfClefBefore]);c.vfStaveNote.getCategory&&c.vfStaveNote.getCategory()==="stavenotes"&&c.vfStaveNote.addModifier(0,m)}l.parentVoiceEntry&&this.rules.RenderFingerings&&((this.rules.FingeringPosition===PlacementEnum.Left||this.rules.FingeringPosition===PlacementEnum.Right)&&this.createFingerings(l),this.createStringNumber(l)),this.createArpeggio(l),this.vfVoices[o.VoiceId].addTickable(c.vfStaveNote)}}this.setStemDirectionFromVexFlow();for(const o of s)this.createFingerings(o),this.createStringNumber(o),this.createArpeggio(o);this.createArticulations(),this.createOrnaments()}createArpeggio(e){if(e.parentVoiceEntry&&e.parentVoiceEntry.Arpeggio){const t=e.parentVoiceEntry.Arpeggio;if(e.notes&&e.notes.length>1){const s=VexFlowConverter.StrokeTypeFromArpeggioType(t.type),r=new VF$9.Stroke(s,{all_voices:this.rules.ArpeggiosGoAcrossVoices});this.rules.RenderArpeggios&&e.vfStaveNote.addStroke(0,r)}else loglevelExports.debug(`[OSMD] arpeggio in measure ${this.MeasureNumber} could not be drawn. voice entry had less than two notes, arpeggio is likely between voice entries, not currently supported in Vexflow.`)}}setStemDirectionFromVexFlow(){for(const e of this.staffEntries)for(const t of e.graphicalVoiceEntries)for(const s of t.notes){const r=s.vfnote;if(!r||!r[0])continue;switch(r[0].getStemDirection()){case VF$9.Stem.UP:t.parentVoiceEntry.StemDirection=StemDirectionType.Up;break;case VF$9.Stem.DOWN:t.parentVoiceEntry.StemDirection=StemDirectionType.Down;break}}}createArticulations(){for(let e=0,t=this.staffEntries.length;e1||e.parentStaffEntry.graphicalVoiceEntries.length>1?d=VF$9.StaveModifier.Position.LEFT:u.idInMusicSheet===0?(d=VF$9.StaveModifier.Position.ABOVE,l=PlacementEnum.Above):(d=VF$9.StaveModifier.Position.BELOW,l=PlacementEnum.Below)}const m=new VF$9.FretHandFinger(a.value);if(m.setPosition(d),m.setOffsetX(c),l===PlacementEnum.Above||l===PlacementEnum.Below){const u=l===PlacementEnum.Above?-1:1,g=l===PlacementEnum.Above?r:s-1-r;if(this.rules.FingeringInsideStafflines&&s>1){const b=m.getWidth()/2,y=s*2.5;m.setOffsetY(u*(g+y)*b)}else if(!this.rules.FingeringInsideStafflines){const b=new VF$9.StringNumber(a.value);b.radius=0,b.setPosition(d),b.setOffsetY(u*g*b.getWidth()*2/3),t.vfStaveNote.addModifier(r,b);continue}}t.vfStaveNote.addModifier(r,m)}}createStringNumber(e){if(!this.rules.RenderStringNumbersClassical)return;const t=e;e.notes.forEach((s,r)=>{const o=s.sourceNote.StringInstruction;if(o){let a=o.value;switch(a){case"1":a="I";break;case"2":a="II";break;case"3":a="III";break;case"4":a="IV";break;case"5":a="V";break;case"6":a="VI";break}const l=new VF$9.StringNumber(a);l.radius=0;const c=-this.rules.StringNumberOffsetY;e.notes.length>1||e.parentStaffEntry.graphicalVoiceEntries.length>1?(l.setOffsetX(s.baseStringNumberXOffset*13),l.setPosition(VF$9.Modifier.Position.RIGHT)):l.setPosition(VF$9.Modifier.Position.ABOVE),l.setOffsetY(c),t.vfStaveNote.addModifier(r,l)}})}lineTo(e,t){const s=new VF$9.StaveConnector(e.getVFStave(),this.stave);s.setType(t),this.connectors.push(s)}getVFStave(){return this.stave}updateInstructionWidth(){let e=0,t=0;const s=this.stave.getModifiers();for(const r of s)r.getPosition()===5?e+=r.getWidth()+r.getPadding(void 0):r.getPosition()===6&&(t+=r.getWidth()+r.getPadding(void 0));this.beginInstructionsWidth=(e!=null?e:0)/unitInPixels,this.endInstructionsWidth=(t!=null?t:0)/unitInPixels}addStaveTie(e,t){this.vfTies.push(e),t.vfTie=e}}class GraphicalStaffEntry extends GraphicalObject{constructor(e,t=void 0,s=void 0){super(),this.graphicalChordContainers=[],this.tabStaffEntry=void 0,this.MaxAccidentals=0,this.graphicalInstructions=[],this.ties=[],this.graphicalTies=[],this.lyricsEntries=[],this.parentMeasure=e,this.graphicalVoiceEntries=[],this.sourceStaffEntry=t,s?(this.staffEntryParent=s,this.parentVerticalContainer=s.parentVerticalContainer,this.PositionAndShape=new BoundingBox$1(this,s.PositionAndShape)):this.PositionAndShape=new BoundingBox$1(this,e.PositionAndShape),t&&(this.relInMeasureTimestamp=t.Timestamp),this.FingeringEntries=[]}get GraphicalInstructions(){return this.graphicalInstructions}get GraphicalTies(){return this.graphicalTies}get LyricsEntries(){return this.lyricsEntries}set LyricsEntries(e){this.lyricsEntries=e}getAbsoluteTimestamp(){const e=this.parentMeasure.parentSourceMeasure.AbsoluteTimestamp.clone();return this.relInMeasureTimestamp&&e.Add(this.relInMeasureTimestamp),e}findTieGraphicalNoteFromNote(e){var s;const t=((s=window.GYM)==null?void 0:s.graceCustom)||!1;for(const r of this.graphicalVoiceEntries)for(const o of r.notes){const a=o.sourceNote;if(t){if(e.NoteToGraphicalNoteObjectId==a.NoteToGraphicalNoteObjectId)return o}else if(!a.isRest()&&a.Pitch.FundamentalNote===e.Pitch.FundamentalNote&&a.Pitch.Octave===e.Pitch.Octave&&a.getAbsoluteTimestamp().Equals(e.getAbsoluteTimestamp()))return o}}findEndTieGraphicalNoteFromNoteWithStartingSlur(e,t){if(e){for(const s of this.graphicalVoiceEntries)if(s.parentVoiceEntry===e.ParentVoiceEntry)for(const r of s.notes){const o=r.sourceNote;if(o.NoteTie&&o.NoteSlurs.indexOf(t)!==-1)return r}}}findGraphicalNoteFromGraceNote(e){if(e){for(const t of this.graphicalVoiceEntries)if(t.parentVoiceEntry===e.ParentVoiceEntry){for(const s of t.notes)if(s.sourceNote===e)return s}}}findGraphicalNoteFromNote(e){if(e){for(const t of this.graphicalVoiceEntries)if(t.parentVoiceEntry===e.ParentVoiceEntry){for(const s of t.notes)if(s.sourceNote===e&&this.getAbsoluteTimestamp().Equals(e.getAbsoluteTimestamp()))return s}}}getGraphicalNoteDurationFromVoice(e){for(const t of this.graphicalVoiceEntries)if(t.parentVoiceEntry.ParentVoice===e)return t.notes[0].graphicalNoteLength;return new Fraction$1(0,1)}findVoiceEntryGraphicalNotes(e){for(const t of this.graphicalVoiceEntries)if(t.parentVoiceEntry===e)return t.notes}isVoiceEntryPartOfLinkedVoiceEntry(e){if(this.sourceStaffEntry.Link)for(let t=0,s=this.sourceStaffEntry.Link.LinkStaffEntries.length;t0&&(e=r)}return e}findStaffEntryMaxNoteLength(){let e=new Fraction$1(0,1);for(const t of this.graphicalVoiceEntries)for(const s of t.notes){const r=s.graphicalNoteLength;e.lt(r)&&r.GetExpandedNumerator()>0&&(e=r)}return e}findOrCreateGraphicalVoiceEntry(e){for(const s of this.graphicalVoiceEntries)if(s.parentVoiceEntry===e)return s;const t=MusicSheetCalculator.symbolFactory.createVoiceEntry(e,this);return this.graphicalVoiceEntries.push(t),t}findOrCreateGraphicalVoiceEntryFromGraphicalNote(e){for(const s of this.graphicalVoiceEntries)if(s===e.parentVoiceEntry)return s;const t=MusicSheetCalculator.symbolFactory.createVoiceEntry(e.sourceNote.ParentVoiceEntry,this);return this.graphicalVoiceEntries.push(t),t}addGraphicalNoteToListAtCorrectYPosition(e,t){const s=e.notes;if(s.length===0||t.PositionAndShape.RelativePosition.y=0;r--){if(s[r].PositionAndShape.RelativePosition.y>t.PositionAndShape.RelativePosition.y){s.splice(r+1,0,t);break}if(r===0){s.splice(0,0,t);break}}}hasOnlyRests(){for(const t of this.graphicalVoiceEntries)for(const s of t.notes)if(!s.sourceNote.isRest())return!1;return!0}getSkylineMin(){var r;const e=(r=this.parentMeasure)==null?void 0:r.ParentStaffLine.SkyBottomLineCalculator;if(!e)return;const[t,s]=this.getAbsoluteStartAndEnd();return e.getSkyLineMinInRange(t,s)}getHighestYAtEntry(){return this.parentMeasure.ParentStaffLine.PositionAndShape.AbsolutePosition.y+this.getSkylineMin()}getLowestYAtEntry(){return this.parentMeasure.ParentStaffLine.PositionAndShape.AbsolutePosition.y+this.getBottomlineMax()}getBottomlineMax(){var r;const e=(r=this.parentMeasure)==null?void 0:r.ParentStaffLine.SkyBottomLineCalculator;if(!e)return;const[t,s]=this.getAbsoluteStartAndEnd();return e.getBottomLineMaxInRange(t,s)}getAbsoluteStartAndEnd(){let e=this.PositionAndShape.AbsolutePosition.x;e-=this.parentMeasure.ParentStaffLine.PositionAndShape.AbsolutePosition.x;const t=e+this.PositionAndShape.Size.width;return[e,t]}}const VF$8=Vex.Flow;class VexFlowStaffEntry extends GraphicalStaffEntry{constructor(e,t,s){super(e,t,s)}calculateXPosition(){const e=this.parentMeasure.getVFStave();let t=0;for(const s of this.graphicalVoiceEntries)if(s.vfStaveNote){if(s.vfStaveNote.setStave(e),e&&e.getLines&&e.getLines()===1&&s.vfStaveNote.getStemDirection()<0&&(s.vfStaveNote.setStemDirection(VF$8.Stem.UP),s.parentVoiceEntry.StemDirection=StemDirectionType.Up),!s.vfStaveNote.preFormatted)continue;s.applyBordersFromVexflow(),this.parentMeasure.ParentStaff.isTab?this.PositionAndShape.RelativePosition.x=(s.vfStaveNote.getAbsoluteX()+s.vfStaveNote.glyph.getWidth())/unitInPixels:this.PositionAndShape.RelativePosition.x=s.vfStaveNote.getBoundingBox().getX()/unitInPixels;const r=s.notes[0].sourceNote;r.isRest()&&r.Length.RealValue===this.parentMeasure.parentSourceMeasure.ActiveTimeSignature.RealValue&&(this.PositionAndShape.RelativePosition.x+=this.parentMeasure.parentSourceMeasure.Rules.WholeRestXShiftVexflow-.1,s.PositionAndShape.BorderLeft=-.7,s.PositionAndShape.BorderRight=.7),s.PositionAndShape.BorderLefto.staffLine),s=this.calculateModifierXOffsets(t,1),r=this.calculateModifierXOffsets(t,.5);e.forEach((o,a)=>{o.baseFingeringXOffset=r[a],o.baseStringNumberXOffset=s[a]})}calculateModifierXOffsets(e,t){const s=[];for(let r=0;r=0;l--){if(Math.abs(e[r]-e[l])<=t&&o===s[l]){o++,a=!0;break}a=!1}s.push(o)}return s}}class VexFlowGraphicalNote extends GraphicalNote{constructor(e,t,s,r=OctaveEnum.NONE,o,a=void 0){if(super(e,t,o,a),this.clef=s,this.octaveShift=r,e.Pitch){const l=e.isRest()?e.Pitch:OctaveShift.getPitchFromOctaveShift(e.Pitch,r);this.vfpitch=VexFlowConverter.pitch(l,e.isRest(),this.clef,this.sourceNote.Notehead),this.vfpitch[1]=void 0}}setAccidental(e){const t=this.drawPitch(e);this.vfpitch=VexFlowConverter.pitch(t,this.sourceNote.isRest(),this.clef,this.sourceNote.Notehead),this.DrawnAccidental=t.Accidental}drawPitch(e){return OctaveShift.getPitchFromOctaveShift(e,this.octaveShift)}Transpose(e,t,s,r){const o=super.Transpose(e,t,s,r),a=OctaveShift.getPitchFromOctaveShift(o,this.octaveShift);return this.vfpitch=VexFlowConverter.pitch(a,this.sourceNote.isRest(),this.clef,this.sourceNote.Notehead),this.vfpitch[1]=void 0,a}setIndex(e,t){this.vfnote=[e,t],this.vfnoteIndex=t}notehead(e=void 0){let t=e;t||(t=this.vfnote[0]);const s=t.note_heads;return s&&s.length>this.vfnoteIndex&&s[this.vfnoteIndex]?t.note_heads[this.vfnoteIndex]:{line:0}}Clef(){return this.clef}getSVGId(){if(this.vfnote)return this.vfnote[0].getAttribute("id")}getSVGGElement(){if(this.vfnote)return this.vfnote[0].getAttribute("el")}getStemSVG(){return document.getElementById("vf-"+this.getSVGId()+"-stem")}getBeamSVGs(){const e=[];for(let t=0;;t++){const s=document.getElementById(`vf-${this.getSVGId()}-beam${t}`);if(!s)break;e.push(s)}return e}}class GraphicalChordSymbolContainer extends GraphicalObject{constructor(e,t,s,r,o,a){super(),this.chordSymbolContainer=e,this.boundingBox=new BoundingBox$1(this,t),this.rules=a,this.calculateLabel(s,o,r)}get GetChordSymbolContainer(){return this.chordSymbolContainer}get GraphicalLabel(){return this.graphicalLabel}calculateLabel(e,t,s){const r=ChordSymbolContainer.calculateChordText(this.chordSymbolContainer,t,s);this.graphicalLabel=new GraphicalLabel(new Label(r),e,this.rules.ChordSymbolTextAlignment,this.rules,this.boundingBox),this.graphicalLabel.PositionAndShape.RelativePosition=new PointF2D(this.rules.ChordSymbolRelativeXOffset,0),this.graphicalLabel.Label.colorDefault=this.rules.DefaultColorChordSymbol}}const VF$7=Vex.Flow;class VexFlowTabMeasure extends VexFlowMeasure{constructor(e,t=void 0,s=void 0){super(e,t,s),this.isTabMeasure=!0}resetLayout(){var t;const e=(t=this.ParentStaff.StafflineCount)!=null?t:6;this.stave=new VF$7.TabStave(0,0,0,{space_above_staff_ln:0,space_below_staff_ln:0,num_lines:e}),this.updateInstructionWidth()}graphicalMeasureCreatedCalculations(){for(let t=0,s=this.staffEntries.length;t1){const l=VexFlowConverter.StrokeTypeFromArpeggioType(a.type),c=new VF$7.Stroke(l,{all_voices:this.rules.ArpeggiosGoAcrossVoices});this.rules.RenderArpeggios&&o.vfStaveNote.addStroke(0,c)}else loglevelExports.debug(`[OSMD] arpeggio in measure ${this.MeasureNumber} could not be drawn. voice entry had less than two notes, arpeggio is likely between voice entries, not currently supported in Vexflow.`)}this.vfVoices[t.VoiceId].addTickable(o.vfStaveNote)}}}}class StaffLine extends GraphicalObject{constructor(e,t){super(),this.measures=[],this.staffLines=new Array(5),this.octaveShifts=[],this.lyricLines=[],this.lyricsDashes=[],this.abstractExpressions=[],this.graphicalSlurs=[],this.Pedals=[],this.WavyLines=[],this.parentMusicSystem=e,this.parentStaff=t,this.boundingBox=new BoundingBox$1(this,e.PositionAndShape),this.skyBottomLine=MusicSheetCalculator.symbolFactory.createSkyBottomLineCalculator(this),this.staffHeight=this.parentMusicSystem.rules.StaffHeight,this.topLineOffset=0,this.bottomLineOffset=4,this.calculateStaffLineOffsets()}calculateStaffLineOffsets(){if(this.ParentStaff.isTab)switch(this.ParentStaff.StafflineCount){case 5:this.staffHeight=this.bottomLineOffset=this.ParentStaff.ParentInstrument.GetMusicSheet.Rules.TabStaffInterlineHeight*6;break;default:this.staffHeight=this.bottomLineOffset=this.ParentStaff.ParentInstrument.GetMusicSheet.Rules.TabStaffInterlineHeight*this.ParentStaff.StafflineCount;break}else switch(this.ParentStaff.StafflineCount){case 4:this.bottomLineOffset=1;break;case 3:this.topLineOffset=1,this.bottomLineOffset=1;break;case 2:this.topLineOffset=2,this.bottomLineOffset=1;break;case 1:this.topLineOffset=2,this.bottomLineOffset=2;break}}get Measures(){return this.measures}set Measures(e){this.measures=e}get StaffLines(){return this.staffLines}set StaffLines(e){this.staffLines=e}get Index(){return this.parentMusicSystem.StaffLines.indexOf(this)}get NextStaffLine(){const e=this.Index;return e!==this.parentMusicSystem.StaffLines.length?this.parentMusicSystem.StaffLines[e+1]:void 0}get LyricLines(){return this.lyricLines}get AbstractExpressions(){return this.abstractExpressions}set AbstractExpressions(e){this.abstractExpressions=e}set LyricLines(e){this.lyricLines=e}get LyricsDashes(){return this.lyricsDashes}set LyricsDashes(e){this.lyricsDashes=e}get ParentMusicSystem(){return this.parentMusicSystem}set ParentMusicSystem(e){this.parentMusicSystem=e}get ParentStaff(){return this.parentStaff}set ParentStaff(e){this.parentStaff=e}get SkyBottomLineCalculator(){return this.skyBottomLine}get SkyLine(){return this.skyBottomLine.SkyLine}get BottomLine(){return this.skyBottomLine.BottomLine}get OctaveShifts(){return this.octaveShifts}set OctaveShifts(e){this.octaveShifts=e}get StaffHeight(){return this.staffHeight}get TopLineOffset(){return this.topLineOffset}get BottomLineOffset(){return this.bottomLineOffset}get GraphicalSlurs(){return this.graphicalSlurs}addSlurToStaffline(e){this.graphicalSlurs.push(e)}addActivitySymbolClickArea(){const e=new StaffLineActivitySymbol(this),t=this.PositionAndShape;e.PositionAndShape.RelativePosition=new PointF2D(t.RelativePosition.x+t.BorderRight+.5,t.RelativePosition.y+.5),e.PositionAndShape.Parent=this.parentMusicSystem.PositionAndShape}isPartOfMultiStaffInstrument(){return this.parentStaff.ParentInstrument.Staves.length>1}findClosestStaffEntry(e){let t;for(let s=0,r=this.Measures.length;s0){const c=l.map(g=>g.PositionAndShape.Center.y),d=Math.max(...c),m=((o=window.GYM)==null?void 0:o.noNeedContinuousDynamic)||!1,u=((a=window.GYM)==null?void 0:a.noNeedGraphicalContinuousDynamic)||!1;for(let g=0;g0?l[g-1]:void 0;if(S){const x=this.getOverlap(b.PositionAndShape,S.PositionAndShape);b.squeeze(-(x.x+this.rules.DynamicExpressionSpacer))}if(v){const x=this.getOverlap(v.PositionAndShape,b.PositionAndShape);b.squeeze(x.x+this.rules.DynamicExpressionSpacer)}}}}}getDistance(e,t){const s=e.RelativePosition.x+e.BorderMarginRight,r=t.RelativePosition.x+t.BorderMarginLeft,o=e.RelativePosition.y+e.BorderMarginBottom,a=t.RelativePosition.y+t.BorderMarginTop;return new PointF2D(r-s,a-o)}getOverlap(e,t){return new PointF2D(e.RelativePosition.x+e.BorderMarginRight-(t.RelativePosition.x+t.BorderMarginLeft),e.RelativePosition.y+e.BorderMarginBottom-(t.RelativePosition.y+t.BorderMarginTop))}}class VexFlowStaffLine extends StaffLine{constructor(e,t){super(e,t),this.slursInVFStaffLine=[],this.alignmentManager=new AlignmentManager(this)}get SlursInVFStaffLine(){return this.slursInVFStaffLine}addVFSlurToVFStaffline(e){this.slursInVFStaffLine.push(e)}get AlignmentManager(){return this.alignmentManager}}const VF$6=Vex.Flow;class VexFlowMultiRestMeasure extends VexFlowMeasure{constructor(e,t=void 0,s=void 0){super(e,t,s),this.minimumStaffEntriesWidth=-1,s?this.rules=s.ParentMusicSystem.rules:t&&(this.rules=t.Rules),this.resetLayout(),this.multiRestElement=new VF$6.MultiMeasureRest(t.multipleRestMeasures,{})}draw(e){var o,a,l,c,d;const t=e.openGroup();(o=t==null?void 0:t.classList)==null||o.add("vf-measure");const s=e.openGroup();(a=s==null?void 0:s.classList)==null||a.add("vf-stave"),s==null||s.setAttribute("id",(c=(l=this.stave)==null?void 0:l.attrs)==null?void 0:c.id),this.stave.setContext(e).draw(),e.closeGroup();const r=e.openGroup();(d=r==null?void 0:r.classList)==null||d.add("vf-voices"),this.multiRestElement.setStave(this.stave),this.multiRestElement.setContext(e),this.multiRestElement.draw(),e.closeGroup();for(const m of this.connectors)m.setContext(e).draw();return e.closeGroup(),t}format(){}getVoicesWithinMeasure(){return[]}getGraphicalVoiceEntriesPerVoice(e){return[]}getRestFilledVexFlowStaveNotesPerVoice(e){return[]}handleBeam(e,t){}handleTuplet(e,t){}finalizeBeams(){}finalizeTuplets(){}layoutStaffEntry(e){}graphicalMeasureCreatedCalculations(){}createArticulations(){}createOrnaments(){}createFingerings(e){}getVFStave(){return this.stave}}const VF$5=Vex.Flow;class VexFlowBackend{getInnerElement(){return this.inner}getCanvas(){return this.canvas}getRenderElement(){let e=this.canvas;return this.getVexflowBackendType()===VF$5.Renderer.Backends.CANVAS&&(e=this.inner),e}getRenderer(){return this.renderer}removeAllChildrenFromContainer(e){for(;e.children.length!==0;)e.removeChild(e.children.item(0))}removeFromContainer(e){const t=this.getRenderElement();for(let s=0;s \r<`)),o.download="opensheetmusicdisplay_download.svg",o.innerHTML=window.location.href+"/download",document.body.appendChild(o)}}class VexFlowInstantaneousDynamicExpression extends GraphicalInstantaneousDynamicExpression{constructor(e,t,s){super(e,t,s);const r=new Label(this.Expression);this.label=new GraphicalLabel(r,this.rules.ContinuousDynamicTextHeight,TextAlignmentEnum.CenterCenter,this.rules,this.PositionAndShape),this.label.Label.fontStyle=FontStyles.BoldItalic,this.label.setLabelPositionAndShapeBorders(),this.PositionAndShape.calculateBoundingBox()}get InstantaneousDynamic(){return this.mInstantaneousDynamicExpression}get Expression(){return DynamicEnum[this.mInstantaneousDynamicExpression.DynEnum]}}class GraphicalOctaveShift extends GraphicalObject{constructor(e,t){super(),this.getOctaveShift=e,this.setSymbol(),this.PositionAndShape=new BoundingBox$1(this,t)}setSymbol(){switch(this.getOctaveShift.Type){case OctaveEnum.VA8:this.octaveSymbol=MusicSymbol.VA8;break;case OctaveEnum.VB8:this.octaveSymbol=MusicSymbol.VB8;break;case OctaveEnum.MA15:this.octaveSymbol=MusicSymbol.MA15;break;case OctaveEnum.MB15:this.octaveSymbol=MusicSymbol.MB15;break;default:throw new ArgumentOutOfRangeException("")}}}const VF$2=Vex.Flow;class VexFlowOctaveShift extends GraphicalOctaveShift{constructor(e,t){switch(super(e,t),e.Type){case OctaveEnum.VA8:this.position=VF$2.TextBracket.Positions.TOP,this.supscript="va",this.text="8";break;case OctaveEnum.MA15:this.position=VF$2.TextBracket.Positions.TOP,this.supscript="ma",this.text="15";break;case OctaveEnum.VB8:this.position=VF$2.TextBracket.Positions.BOTTOM,this.supscript="vb",this.text="8";break;case OctaveEnum.MB15:this.position=VF$2.TextBracket.Positions.BOTTOM,this.supscript="mb",this.text="15";break;default:loglevelExports.error("Unknown or NONE octaveshift. This should not be called!");break}}setStartNote(e){for(const t of e.graphicalVoiceEntries){const s=t;if(s!=null&&s.vfStaveNote)return this.startNote=s.vfStaveNote,!0}return!1}setEndNote(e){for(const t of e.graphicalVoiceEntries){const s=t;if(s!=null&&s.vfStaveNote)return this.endNote=s.vfStaveNote,!0}return!1}getTextBracket(){return new VF$2.TextBracket({position:this.position,start:this.startNote,stop:this.endNote,superscript:this.supscript,text:this.text})}}class VexflowStafflineNoteCalculator{constructor(e){this.staffPitchListMapping=new Dictionary,this.baseLineNote=NoteEnum.B,this.baseLineOctave=1,this.rules=e}trackNote(e){if(!(e instanceof VexFlowGraphicalNote)||e.Clef().ClefType!==ClefEnum.percussion||e.sourceNote.isRest()||this.rules.PercussionOneLineCutoff===0||this.rules.PercussionForceVoicesOneLineCutoff===-1)return;const t=e.parentVoiceEntry.parentStaffEntry.sourceStaffEntry.ParentStaff.idInMusicSheet;let s;this.staffPitchListMapping.containsKey(t)||this.staffPitchListMapping.setValue(t,new Array),s=this.staffPitchListMapping.getValue(t);const r=e.sourceNote.Pitch;VexflowStafflineNoteCalculator.findOrInsert(s,r)}static PitchIndexOf(e,t,s=0){if(s>e.length-1)return-1;for(let r=s;rthis.rules.PercussionOneLineCutoff&&!r)return e;const o=e,a=e.sourceNote.Pitch;let l=this.baseLineNote,c=this.baseLineOctave;if(this.rules.PercussionUseXMLDisplayStep&&e.sourceNote.displayStepUnpitched!==void 0&&(l=e.sourceNote.displayStepUnpitched,c=e.sourceNote.displayOctaveUnpitched+this.rules.PercussionOneLineXMLDisplayStepOctaveOffset),s.length<=this.rules.PercussionForceVoicesOneLineCutoff)o.setAccidental(new Pitch(l,c,a.Accidental));else{const d=VexflowStafflineNoteCalculator.PitchIndexOf(s,a);if(d>-1){const m=Math.ceil(s.length/2);if(!this.rules.PercussionUseXMLDisplayStep)if(d>=m)switch(c=2,(d-m)%5){case 1:l=NoteEnum.E;break;case 2:l=NoteEnum.G;break;case 3:l=NoteEnum.B;break;case 4:l=NoteEnum.D,c=3;break;default:l=NoteEnum.C;break}else switch(d%5){case 1:l=NoteEnum.F;break;case 2:l=NoteEnum.D;break;case 3:l=NoteEnum.B,c=0;break;case 4:l=NoteEnum.G,c=0;break;default:l=NoteEnum.A;break}const u=new Pitch(l,c,a.Accidental);o.setAccidental(u);const g=o.parentVoiceEntry.parentVoiceEntry;!this.rules.SetWantedStemDirectionByXml&&g.Notes.length<2&&(u.Octave>this.baseLineOctave||u.FundamentalNote===this.baseLineNote&&u.Octave===this.baseLineOctave?o.parentVoiceEntry.parentVoiceEntry.WantedStemDirection=StemDirectionType.Up:o.parentVoiceEntry.parentVoiceEntry.WantedStemDirection=StemDirectionType.Down)}}return o}getStafflineUniquePositionCount(e){return this.staffPitchListMapping.containsKey(e)?this.staffPitchListMapping.getValue(e).length:0}}class SkyBottomLineCalculator{constructor(e){this.mStaffLineParent=e,this.mRules=e.ParentMusicSystem.rules}calculateLines(){const e=Math.max(Math.ceil(this.StaffLineParent.PositionAndShape.Size.width*this.SamplingUnit),1);this.mSkyLine=[],this.mBottomLine=[];const t=new CanvasVexFlowBackend(this.StaffLineParent.ParentMusicSystem.rules);for(const a of this.StaffLineParent.Measures){a.PositionAndShape.calculateAbsolutePositionsRecursive(0,0);const l=a.getVFStave();let c=l.getWidth();if(!(c>0)&&!a.IsExtraGraphicalMeasure&&(loglevelExports.warn("SkyBottomLineCalculator: width not > 0 in measure "+a.MeasureNumber),c=50),!(c>=50)&&a.IsExtraGraphicalMeasure)continue;t.initializeHeadless(c);const d=t.getContext(),m=t.getCanvas();c=m.width;const u=m.height;this.mRules.DYMusicScoreType==="jianpu"?l.setY(l.y-50):l.setY(l.y+100);const g=l.getWidth();l.setWidth(c),a.format(),l.setWidth(g);try{a.draw(d)}catch(A){loglevelExports.warn("SkyBottomLineCalculator.calculateLines.draw",A)}const b=d.getImageData(0,0,c,u),y=4,S=Math.max(Math.ceil(a.PositionAndShape.Size.width*this.mRules.SamplingUnit),1),v=new Array(S),x=new Array(S);for(let A=0;A0){v[A]=E;break}}for(let E=u;E>0;E--){const _=E*c*y+A*y;if(b.data[_+3]>0){x[A]=E;break}}}for(let A=0;A(a-Math.max(...this.mSkyLine))/unitInPixels+this.StaffLineParent.TopLineOffset),this.mBottomLine=this.mBottomLine.map(a=>(a-Math.min(...this.mBottomLine))/unitInPixels+this.StaffLineParent.BottomLineOffset)}findPreviousValidNumber(e,t){for(let s=e;s>=0;s--)if(!isNaN(t[s]))return t[s];return 0}findNextValidNumber(e,t){if(e>=t.length)return t[e-1];for(let s=e;s=this.BottomLine.length&&(s=this.BottomLine.length-1),r<0&&(r=0),r>=this.BottomLine.length&&(r=this.BottomLine.length),this.SkyLine[s]=e.y;for(let a=s+1;a=this.BottomLine.length&&(s=this.BottomLine.length-1),r<0&&(r=0),r>=this.BottomLine.length&&(r=this.BottomLine.length),this.BottomLine[s]=e.y;for(let a=s+1;ae)}setBottomLineWithValue(e){this.BottomLine.forEach(t=>e)}getLeftIndexForPointX(e,t){const s=Math.floor(e*this.SamplingUnit);return s<0?0:s>=t?t-1:s}getRightIndexForPointX(e,t){const s=Math.ceil(e*this.SamplingUnit);return s<0?0:s>=t?t-1:s}updateStaffLineBorders(){this.mStaffLineParent.PositionAndShape.BorderTop=this.getSkyLineMin(),this.mStaffLineParent.PositionAndShape.BorderMarginTop=this.getSkyLineMin(),this.mStaffLineParent.PositionAndShape.BorderBottom=this.getBottomLineMax(),this.mStaffLineParent.PositionAndShape.BorderMarginBottom=this.getBottomLineMax()}getSkyLineMin(){return Math.min(...this.SkyLine.filter(e=>!isNaN(e)))}getSkyLineMinAtPoint(e){const t=Math.round(e*this.SamplingUnit);return this.mSkyLine[t]}getSkyLineMinInRange(e,t){return this.getMinInRange(this.SkyLine,e,t)}getBottomLineMax(){return Math.max(...this.BottomLine.filter(e=>!isNaN(e)))}getBottomLineMaxAtPoint(e){const t=Math.round(e*this.SamplingUnit);return this.mBottomLine[t]}getBottomLineMaxInRange(e,t){return this.getMaxInRange(this.BottomLine,e,t)}getBottomLineMaxInBoundingBox(e){const t=Math.floor(e.AbsolutePosition.x+e.BorderLeft),s=Math.ceil(e.AbsolutePosition.x+e.BorderRight);return this.getMaxInRange(this.mBottomLine,t,s)}updateWithBoundingBoxRecursively(e){if(e.ChildElements&&e.ChildElements.length>0)for(const t of e.ChildElements)this.updateWithBoundingBoxRecursively(t);else{const t=e.BorderTop+e.AbsolutePosition.y,s=e.BorderBottom+e.AbsolutePosition.y;if(t<0){const r=Math.floor(e.AbsolutePosition.x+e.BorderLeft),o=Math.ceil(e.AbsolutePosition.x+e.BorderRight);this.updateInRange(this.mSkyLine,r,o,t)}else if(s>this.StaffLineParent.StaffHeight){const r=Math.floor(e.AbsolutePosition.x+e.BorderLeft),o=Math.ceil(e.AbsolutePosition.x+e.BorderRight);this.updateInRange(this.mBottomLine,r,o,s)}}}updateInRange(e,t=0,s=e.length,r=0){if(t=Math.floor(t*this.SamplingUnit),s=Math.ceil(s*this.SamplingUnit),se.length&&(s=e.length);for(let o=t;oMath.abs(e[o])?r:e[o]}setInRange(e,t=0,s=e.length,r=0){if(t=Math.floor(t*this.SamplingUnit),s=Math.ceil(s*this.SamplingUnit),se.length&&(s=e.length);for(let o=t;o=e.length&&(t=e.length-1),s<0&&(s=0),s>=e.length&&(s=e.length),t>=0&&s<=e.length)return Math.min(...e.slice(t,s+1))}getMaxInRange(e,t,s){if(t=Math.floor(t*this.SamplingUnit),s=Math.ceil(s*this.SamplingUnit),!e)return Number.MIN_VALUE;if(t<0&&(t=0),t>=e.length&&(t=e.length-1),s<0&&(s=0),s>=e.length&&(s=e.length),t>=0&&s<=e.length)return Math.max(...e.slice(t,s+1))}get SamplingUnit(){return this.mRules.SamplingUnit}get StaffLineParent(){return this.mStaffLineParent}get SkyLine(){return this.mSkyLine}get BottomLine(){return this.mBottomLine}}var parserExports$1={},parser$2={get exports(){return parserExports$1},set exports(i){parserExports$1=i}};/*! * d-path-parser - v1.0.0 * by Massimo Artizzu (MaxArt2501) * * https://github.com/MaxArt2501/d-path-parser * * Licensed under the MIT License * See LICENSE for details */(function(i,e){(function(t,s){i.exports=s()})(commonjsGlobal,function(){return function(s){for(var r={command:/\s*([achlmqstvz])/gi,number:/\s*([+-]?\d*\.?\d+(?:e[+-]?\d+)?)/gi,comma:/\s*(?:(,)|\s)/g,flag:/\s*([01])/g},o={number:function(S){return+b("number",S)},"coordinate pair":function(S){var v=b("number",S);if(v===null&&!S)return null;b("comma");var x=b("number",!0);return{x:+v,y:+x}},"arc definition":function(S){var v=o["coordinate pair"](S);if(!v&&!S)return null;b("comma");var x=+b("number",!0);b("comma",!0);var A=!!+b("flag",!0);b("comma");var E=!!+b("flag",!0);b("comma");var w=o["coordinate pair"](!0);return{radii:v,rotation:x,large:A,clockwise:E,end:w}}},a=0,l=[];at.bottom)switch(e.tagName.toLowerCase()){case"g":for(const g of e.children)this.recursiveUpdate(g,t,s,r);break;case"circle":case"rect":case"line":case"path":let m=Math.floor((o.x-s.x)/unitInPixels*this.mRules.SamplingUnit);const u=m+Math.ceil(o.width/unitInPixels*this.mRules.SamplingUnit);if(e.parentElement.classList.contains("vf-beams")&&e.hasAttribute("d")){const g=parserExports$1(e.getAttribute("d"));if(g.length===5){const b=g[0],y=g[3],S=(y.end.y-b.end.y)/(y.end.x-b.end.x);let v=b.end.y/unitInPixels;for(m;m<=u;m++)vd[m]&&(d[m]=v),v+=S/this.mRules.SamplingUnit}}else for(m;m<=u;m++)ad[m]&&(d[m]=l);break}}calculateLinesForMeasure(e,t){var C,P,I;const s=t.getBBox(),r=Math.max(Math.round(e.PositionAndShape.Size.width*this.mRules.SamplingUnit),1),o=s.height/unitInPixels,l=t.getElementsByClassName("vf-stave")[0].getBBox();let c=(l==null?void 0:l.height)/unitInPixels,d=(l==null?void 0:l.y)/unitInPixels;const m=e.getVFStave();let u=((C=m.options)!=null&&C.num_lines?m.options.num_lines:5)-1,g=-1,b=0;const y=[u];for(const R of(P=m.options)==null?void 0:P.line_config)R.visible?(g===-1&&(g=b),y.push(b)):u--,b++;const S=y.pop();g===-1&&(g=0),u=S-g;const v=(I=m.options)==null?void 0:I.spacing_between_lines_px,x=u*v/unitInPixels;c-x>.2&&(c=x,d=g*v/unitInPixels);const A=d+c,E=new Array(r).fill(d),w=new Array(r).fill(A),_=[E,w];if(o>c)for(const R of t.children)this.recursiveUpdate(R,{top:d,bottom:A},s,[E,w]);return _}calculateLines(){this.mSkyLine=[],this.mBottomLine=[];const e=document.createElement("div");document.body.append(e);const t=new SvgVexFlowBackend(this.mRules);t.initialize(e,1,"0");const s=t.getContext(),r=s.openGroup();r.classList.add("staffline");for(const o of this.StaffLineParent.Measures){o.PositionAndShape.calculateAbsolutePositionsRecursive(0,0),o.setAbsoluteCoordinates(o.PositionAndShape.AbsolutePosition.x*unitInPixels,o.PositionAndShape.AbsolutePosition.y*unitInPixels);const a=o.draw(s),[l,c]=this.calculateLinesForMeasure(o,a);this.mSkyLine.push(...l),this.mBottomLine.push(...c)}s.closeGroup();for(const o of r.getElementsByClassName("vf-ties"))for(const a of o.childNodes)if(a.nodeName.toLowerCase()==="path"){const l=a.getBBox();let c=Math.floor(l.x/unitInPixels*this.mRules.SamplingUnit);const d=c+Math.ceil(l.width/unitInPixels*this.mRules.SamplingUnit),m=l.y/unitInPixels,u=l.height/unitInPixels+m;for(c;c<=d;c++)mthis.mBottomLine[c]&&(this.mBottomLine[c]=u)}t.clear(),e.remove()}}const VF$1=Vex.Flow;class VexFlowGraphicalSymbolFactory{constructor(){this.hasBBox=!1,document.createElementNS("http://www.w3.org/2000/svg","g").getBBox!==void 0&&(this.hasBBox=!0)}createMusicSystem(e,t){return new VexFlowMusicSystem(e,t)}createStaffLine(e,t){return new VexFlowStaffLine(e,t)}createSkyBottomLineCalculator(e){return e.ParentMusicSystem.rules.PerformanceMode&&this.hasBBox?new SkyBottomLineCalculatorSVG(e):new SkyBottomLineCalculator(e)}createGraphicalMeasure(e,t,s=!1){return new VexFlowMeasure(t,e,void 0)}createMultiRestMeasure(e,t,s){return new VexFlowMultiRestMeasure(t,e,s)}createTabStaffMeasure(e,t){return new VexFlowTabMeasure(t,e)}createExtraGraphicalMeasure(e){const t=new VexFlowMeasure(e.ParentStaff,void 0,e);return t.IsExtraGraphicalMeasure=!0,t.ExtraGraphicalMeasurePreviousMeasure=e.Measures.last(),t}createStaffEntry(e,t){return new VexFlowStaffEntry(t,e,void 0)}createVoiceEntry(e,t){return new VexFlowVoiceEntry(e,t)}createNote(e,t,s,r=OctaveEnum.NONE,o,a=void 0){return new VexFlowGraphicalNote(e,t,s,r,o,a)}createGraceNote(e,t,s,r,o=OctaveEnum.NONE){return new VexFlowGraphicalNote(e,t,s,o,r)}addGraphicalAccidental(e,t){e.setAccidental(t)}addFermataAtTiedEndNote(e,t){}createInStaffClef(e,t){const s=e,r=VexFlowConverter.Clef(t,"small");s.vfClefBefore=new VF$1.ClefNote(r.type,r.size,r.annotation)}createChordSymbols(e,t,s,r){const o=t.parentMeasure.parentSourceMeasure.Rules;let a=0;const l=o.ChordSymbolXSpacing;for(const c of e.ChordContainers){const d=new GraphicalChordSymbolContainer(c,t.PositionAndShape,o.ChordSymbolTextHeight,s,r,t.parentMeasure.parentSourceMeasure.Rules),m=d.GraphicalLabel;m.PositionAndShape.RelativePosition.y-=o.ChordSymbolYOffset,m.PositionAndShape.RelativePosition.x+=a,m.setLabelPositionAndShapeBorders(),d.PositionAndShape.calculateBoundingBox(),t.graphicalChordContainers.push(d),a+=m.PositionAndShape.Size.width+l}}createGraphicalTechnicalInstruction(e,t){}}class GraphicalTie{constructor(e,t=void 0,s=void 0){this.tie=e,this.startNote=t,this.endNote=s}get SVGElement(){return this.vfTie.getAttribute("el")}get GetTie(){return this.tie}get StartNote(){return this.startNote}get Tie(){return this.tie}set StartNote(e){this.startNote=e}get EndNote(){return this.endNote}set EndNote(e){this.endNote=e}}class GraphicalLyricEntry{constructor(e,t,s,r){this.lyricsEntry=e,this.graphicalStaffEntry=t;const o=t.parentMeasure.parentSourceMeasure.Rules.LyricsAlignmentStandard;e.Text.length>=4&&e.Parent.Notes[0].Length.Denominator>4&&TextAlignmentEnum.LeftBottom;const a=new Label(e.Text);this.graphicalLabel=new GraphicalLabel(a,s,o,this.graphicalStaffEntry.parentMeasure.parentSourceMeasure.Rules,t.PositionAndShape),this.graphicalLabel.PositionAndShape.RelativePosition=new PointF2D(0,r),o===TextAlignmentEnum.LeftBottom&&(this.graphicalLabel.PositionAndShape.RelativePosition.x-=1)}get LyricsEntry(){return this.lyricsEntry}get ParentLyricWord(){return this.graphicalLyricWord}set ParentLyricWord(e){this.graphicalLyricWord=e}get GraphicalLabel(){return this.graphicalLabel}set GraphicalLabel(e){this.graphicalLabel=e}get StaffEntryParent(){return this.graphicalStaffEntry}set StaffEntryParent(e){this.graphicalStaffEntry=e}}class GraphicalLyricWord{constructor(e){this.graphicalLyricsEntries=[],this.lyricWord=e,this.initialize()}get GetLyricWord(){return this.lyricWord}get GraphicalLyricsEntries(){return this.graphicalLyricsEntries}set GraphicalLyricsEntries(e){this.graphicalLyricsEntries=e}isFilled(){for(let e=0;e=_GraphicalCurve.bezierCurveStepSize?new PointF2D:new PointF2D(_GraphicalCurve.oneMinusTPow3[e]*this.bezierStartPt.x+_GraphicalCurve.bezierFactorOne[e]*this.bezierStartControlPt.x+_GraphicalCurve.bezierFactorTwo[e]*this.bezierEndControlPt.x+_GraphicalCurve.tPow3[e]*this.bezierEndPt.x,_GraphicalCurve.oneMinusTPow3[e]*this.bezierStartPt.y+_GraphicalCurve.bezierFactorOne[e]*this.bezierStartControlPt.y+_GraphicalCurve.bezierFactorTwo[e]*this.bezierEndControlPt.y+_GraphicalCurve.tPow3[e]*this.bezierEndPt.y)}};let GraphicalCurve=_GraphicalCurve;GraphicalCurve.bezierCurveStepSize=1e3;const _GraphicalSlur=class extends GraphicalCurve{constructor(i,e){super(),this.staffEntries=[],this.slur=i,this.rules=e}static Compare(i,e){if(i.staffEntries.length<1)return-1;if(e.staffEntries.length<1)return 1;const t=Fraction$1.minus(i.staffEntries[i.staffEntries.length-1].getAbsoluteTimestamp(),i.staffEntries[0].getAbsoluteTimestamp()),s=Fraction$1.minus(e.staffEntries[e.staffEntries.length-1].getAbsoluteTimestamp(),e.staffEntries[0].getAbsoluteTimestamp());return t.RealValue>s.RealValue?1:s.RealValue>t.RealValue?-1:0}calculateCurve(i){const e=this.staffEntries[0],t=this.staffEntries[this.staffEntries.length-1];let s=e.findGraphicalNoteFromNote(this.slur.StartNote);!s&&this.graceStart&&(s=e.findGraphicalNoteFromGraceNote(this.slur.StartNote)),s||(s=e.findEndTieGraphicalNoteFromNoteWithStartingSlur(this.slur.StartNote,this.slur));let r=t.findGraphicalNoteFromNote(this.slur.EndNote);!r&&this.graceEnd&&(r=t.findGraphicalNoteFromGraceNote(this.slur.EndNote));const o=e.parentMeasure.ParentStaffLine,a=o.SkyBottomLineCalculator;this.calculatePlacement(a,o);const l=this.calculateStartAndEnd(s,r,o,i,a),c=l.startX,d=l.endX;let m=l.startY,u=l.endY;const g=i.SlurTangentMinAngle,b=i.SlurTangentMaxAngle;let y;if(this.placement===PlacementEnum.Above){m-=i.SlurNoteHeadYOffset,u-=i.SlurNoteHeadYOffset;const S=new PointF2D(this.staffEntries[0].parentMeasure.PositionAndShape.RelativePosition.x+this.staffEntries[0].PositionAndShape.RelativePosition.x,m);s?S.x+=this.staffEntries[0].PositionAndShape.BorderRight:S.x=this.staffEntries[0].parentMeasure.beginInstructionsWidth,this.graceStart&&(S.x+=t.PositionAndShape.RelativePosition.x);const v=new PointF2D(this.staffEntries[this.staffEntries.length-1].parentMeasure.PositionAndShape.RelativePosition.x+this.staffEntries[this.staffEntries.length-1].PositionAndShape.RelativePosition.x,u);if(r?v.x+=this.staffEntries[this.staffEntries.length-1].PositionAndShape.BorderLeft:v.x=this.staffEntries[this.staffEntries.length-1].parentMeasure.PositionAndShape.RelativePosition.x+this.staffEntries[this.staffEntries.length-1].parentMeasure.PositionAndShape.Size.width,this.graceEnd&&(v.x+=t.staffEntryParent.PositionAndShape.RelativePosition.x),y=this.calculateTopPoints(S,v,o,a),y.length===0){const ae=new PointF2D((v.x-S.x)/2+S.x,(v.y-S.y)/2+S.y);y.push(ae)}const x=Math.atan((u-m)/(d-c)),A=new PointF2D(0,0);let E=new PointF2D(d-c,-(u-m));const w=Matrix2D.getRotationMatrix(x),_=w.getTransposeMatrix();E=w.vectorMultiplication(E);const C=this.calculateTranslatedAndRotatedPointListAbove(y,c,m,w);let P=this.calculateMaxLeftSlope(C,A,E),I=this.calculateMaxRightSlope(C,A,E);const R=A.y-A.x*P,N=E.y-E.x*I,G=new PointF2D;let B=!1;Math.abs(Math.abs(P)-Math.abs(I))<1e-4?(G.x=E.x/2,G.y=0,B=!0):(G.x=(N-R)/(P-I),G.y=P*G.x+R);const k=this.calculateHeightWidthRatio(E.x,C);let T=0,V=0;if(Math.abs(k)>.001){const ae=Math.abs(P/(k*2)),de=Math.abs(P);T=Math.max(0,de*(Math.min(10,ae-1)/10)),P-=T;const le=Math.abs(I/(k*2)),me=Math.abs(I);V=Math.max(0,me*(Math.min(10,le-1)/10)),I+=V}let J=g,W=-g;if(!B){const ae=this.calculateAngles(g,P,I,b);J=ae.startAngle,W=ae.endAngle}const se=this.calculateControlPoints(E.x,J,W,C,k,m,u);let ne=se.startControlPoint,fe=se.endControlPoint;ne=_.vectorMultiplication(ne),ne.x+=c,ne.y=-ne.y+m,fe=_.vectorMultiplication(fe),fe.x+=c,fe.y=-fe.y+m,this.bezierStartPt=new PointF2D(c,m-T),this.bezierStartControlPt=new PointF2D(ne.x,ne.y-T),this.bezierEndControlPt=new PointF2D(fe.x,fe.y-V),this.bezierEndPt=new PointF2D(d,u-V);const Z=o.SkyLine.length,K=a.getLeftIndexForPointX(this.bezierStartPt.x,Z),be=a.getLeftIndexForPointX(this.bezierEndPt.x,Z),oe=this.bezierEndPt.x-this.bezierStartPt.x,Y=a.SamplingUnit;for(let ae=K;ae=K&&(o.SkyLine[me]=Math.min(o.SkyLine[me],le.y)),me++,me.001){const ae=Math.abs(P/(k*2)),de=Math.abs(P);T=Math.max(0,de*(Math.min(10,ae-1)/10)),P-=T;const le=Math.abs(I/(k*2)),me=Math.abs(I);V=Math.max(0,me*(Math.min(10,le-1)/10)),I+=V}let J=g,W=-g;if(!B){const ae=this.calculateAngles(g,P,I,b);J=ae.startAngle,W=ae.endAngle}const se=this.calculateControlPoints(E.x,J,W,C,k,m,u);let ne=se.startControlPoint,fe=se.endControlPoint;ne=_.vectorMultiplication(ne),ne.x+=c,ne.y+=m,fe=_.vectorMultiplication(fe),fe.x+=c,fe.y+=m,this.bezierStartPt=new PointF2D(c,m+T),this.bezierStartControlPt=new PointF2D(ne.x,ne.y+T),this.bezierEndControlPt=new PointF2D(fe.x,fe.y+V),this.bezierEndPt=new PointF2D(d,u+V);const Z=o.BottomLine.length,K=a.getLeftIndexForPointX(this.bezierStartPt.x,Z),be=a.getLeftIndexForPointX(this.bezierEndPt.x,Z),oe=this.bezierEndPt.x-this.bezierStartPt.x,Y=a.SamplingUnit;for(let ae=K;ae=K&&(o.BottomLine[me]=Math.max(o.BottomLine[me],le.y)),me++,me0){this.placement=PlacementEnum.Above;return}const t=this.staffEntries[0],s=this.staffEntries[this.staffEntries.length-1],r=t.graphicalVoiceEntries[0].parentVoiceEntry.StemDirection,o=s.graphicalVoiceEntries[0].parentVoiceEntry.StemDirection;if(r===o)this.placement=r===StemDirectionType.Up?PlacementEnum.Below:PlacementEnum.Above;else{let a=t.PositionAndShape.BorderLeft+t.PositionAndShape.RelativePosition.x+t.parentMeasure.PositionAndShape.RelativePosition.x,l=s.PositionAndShape.BorderRight+s.PositionAndShape.RelativePosition.x+s.parentMeasure.PositionAndShape.RelativePosition.x;this.graceStart&&(a+=s.PositionAndShape.RelativePosition.x),this.graceEnd&&(l+=s.staffEntryParent.PositionAndShape.RelativePosition.x);const c=i.getSkyLineMinInRange(a,l)*-1;i.getBottomLineMaxInRange(a,l)-e.StaffHeight>c?this.placement=PlacementEnum.Above:this.placement=PlacementEnum.Below}}calculateTopPoints(i,e,t,s){const r=[];let o=s.getRightIndexForPointX(i.x,t.SkyLine.length),a=s.getLeftIndexForPointX(e.x,t.SkyLine.length);o<0&&(o=0),a>=t.SkyLine.length&&(a=t.SkyLine.length-1);for(let l=o;l=t.BottomLine.length&&(a=t.BottomLine.length-1);for(let l=o;ld&&i>m&&(c+=i/70*this.rules.SlurHeightFlattenLongSlursFactorByWidth,c*=1+e/30*this.rules.SlurHeightFlattenLongSlursFactorByAngle,l/=c);const u=Math.min(.5,Math.max(.1,1.7*e/80*l*Math.pow(Math.max(r,.05),.4))),g=Math.min(.5,Math.max(.1,1.7*-t/80*l*Math.pow(Math.max(r,.05),.4))),b=new PointF2D;b.x=i*u*Math.cos(e*_GraphicalSlur.degreesToRadiansFactor),b.y=i*u*Math.sin(e*_GraphicalSlur.degreesToRadiansFactor);const y=new PointF2D;y.x=i-i*g*Math.cos(t*_GraphicalSlur.degreesToRadiansFactor),y.y=-(i*g*Math.sin(t*_GraphicalSlur.degreesToRadiansFactor));let S=b.y-y.y;for(;this.rules.SlurMaximumYControlPointDistance&&Math.abs(S)>this.rules.SlurMaximumYControlPointDistance;)S<0?(b.y+=1,y.y-=1):(b.y-=1,y.y+=1),S=b.y-y.y;return{startControlPoint:b,endControlPoint:y}}calculateAngles(i,e,t,s){let o=Math.atan(e)/_GraphicalSlur.degreesToRadiansFactor;e>0?o+=20:o-=20;let a=Math.atan(t)/_GraphicalSlur.degreesToRadiansFactor;t<0?a-=20:a+=20;const l=Math.min(Math.max(i,o),s),c=Math.max(Math.min(-i,a),-s);return{startAngle:l,endAngle:c}}};let GraphicalSlur=_GraphicalSlur;GraphicalSlur.degreesToRadiansFactor=Math.PI/180;class GraphicalPedal extends GraphicalObject{constructor(e,t){super(),this.getPedal=e,this.setSymbol(),this.PositionAndShape=new BoundingBox$1(this,t)}setSymbol(){!this.getPedal.IsLine&&this.getPedal.IsSign?this.pedalSymbol=MusicSymbol.PEDAL_SYMBOL:this.getPedal.IsLine&&this.getPedal.IsSign?this.pedalSymbol=MusicSymbol.PEDAL_MIXED:this.pedalSymbol=MusicSymbol.PEDAL_BRACKET}}class VexFlowPedal extends GraphicalPedal{constructor(e,t,s=!1,r=!1){switch(super(e,t),this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET,this.ChangeBegin=!1,this.ChangeEnd=!1,this.line=-3,this.EndSymbolPositionAndShape=void 0,this.ChangeBegin=e.ChangeBegin,this.ChangeEnd=e.ChangeEnd,this.pedalSymbol){case MusicSymbol.PEDAL_SYMBOL:this.vfStyle=Vex.Flow.PedalMarking.Styles.TEXT,this.EndSymbolPositionAndShape=new BoundingBox$1(this,t);break;case MusicSymbol.PEDAL_MIXED:s&&r?this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET_OPEN_BOTH:s?this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET_OPEN_BEGIN:r?this.vfStyle=Vex.Flow.PedalMarking.Styles.MIXED_OPEN_END:this.vfStyle=Vex.Flow.PedalMarking.Styles.MIXED;break;case MusicSymbol.PEDAL_BRACKET:default:s&&r?this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET_OPEN_BOTH:s?this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET_OPEN_BEGIN:r?this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET_OPEN_END:this.vfStyle=Vex.Flow.PedalMarking.Styles.BRACKET;break}}setStartNote(e){if(!e)return!1;for(const t of e.graphicalVoiceEntries){const s=t;if(s!=null&&s.vfStaveNote)return this.startNote=s.vfStaveNote,this.startVfVoiceEntry=s,!0}return!1}setEndNote(e){if(!e)return!1;for(const t of e.graphicalVoiceEntries){const s=t;if(s!=null&&s.vfStaveNote)return this.endNote=s.vfStaveNote,this.endVfVoiceEntry=s,!0}return!1}setEndMeasure(e){this.endMeasure=e}CalculateBoundingBox(){}setLine(e){this.line=e}getPedalMarking(){var t,s,r,o;const e=new Vex.Flow.PedalMarking([this.startNote,this.endNote]);return this.endMeasure&&e.setEndStave(this.endMeasure.getVFStave()),e.setStyle(this.vfStyle),e.setLine(this.line),e.setCustomText(this.DepressText,this.ReleaseText),(((t=this.endVfVoiceEntry)==null?void 0:t.parentStaffEntry)===((o=(r=(s=this.endVfVoiceEntry)==null?void 0:s.parentStaffEntry)==null?void 0:r.parentMeasure)==null?void 0:o.staffEntries.last())||!this.endVfVoiceEntry)&&(e.EndsStave=!0),e.ChangeBegin=this.ChangeBegin,e.ChangeEnd=this.ChangeEnd,e}}class GraphicalWavyLine extends GraphicalObject{constructor(e,t){super(),this.getWavyLine=e,this.PositionAndShape=new BoundingBox$1(this,t)}}class VexflowVibratoBracket extends GraphicalWavyLine{constructor(e,t,s=!1){super(e,t),this.line=1,this.isVibrato=!1,this.toEndOfStopStave=!1,this.isVibrato=s}get ToEndOfStopStave(){return this.toEndOfStopStave}setStartNote(e){for(const t of e.graphicalVoiceEntries){const s=t;if(s!=null&&s.vfStaveNote)return this.startNote=s.vfStaveNote,this.startVfVoiceEntry=s,!0}return!1}setEndNote(e){for(const t of e.graphicalVoiceEntries){const s=t;if(s!=null&&s.vfStaveNote){this.endNote=s.vfStaveNote,this.endVfVoiceEntry=s;const r=this.endVfVoiceEntry.parentStaffEntry.parentMeasure.staffEntries,o=r[r.length-1];return this.toEndOfStopStave=o===this.endVfVoiceEntry.parentStaffEntry,!0}}return!1}CalculateBoundingBox(){const e=this.getVibratoBracket();this.boundingBox.Size.height=e.render_options.wave_height*.2}getVibratoBracket(){const e=new Vex.Flow.VibratoBracket({start:this.startNote,stop:this.endNote,toEndOfStopStave:this.toEndOfStopStave});return e.setLine(this.line),this.isVibrato?e.render_options.vibrato_width=20:e.render_options.wave_girth=4,e}}const VF=Vex.Flow;class VexFlowMusicSheetCalculator extends MusicSheetCalculator{constructor(e){var t,s,r,o,a,l,c,d;super(),this.beamsNeedUpdate=!1,this.rules=e,MusicSheetCalculator.symbolFactory=new VexFlowGraphicalSymbolFactory,MusicSheetCalculator.TextMeasurer=new VexFlowTextMeasurer(this.rules),MusicSheetCalculator.stafflineNoteCalculator=new VexflowStafflineNoteCalculator(this.rules),((t=this.rules.DefaultVexFlowNoteFont)==null?void 0:t.toLowerCase())==="gonville"?Vex.Flow.DEFAULT_FONT_STACK=[(s=Vex.Flow.Fonts)==null?void 0:s.Gonville,(r=Vex.Flow.Fonts)==null?void 0:r.Bravura,(o=Vex.Flow.Fonts)==null?void 0:o.Custom]:((a=this.rules.DefaultVexFlowNoteFont)==null?void 0:a.toLowerCase())==="petaluma"&&(Vex.Flow.DEFAULT_FONT_STACK=[(l=Vex.Flow.Fonts)==null?void 0:l.Petaluma,(c=Vex.Flow.Fonts)==null?void 0:c.Gonville,(d=Vex.Flow.Fonts)==null?void 0:d.Bravura])}clearRecreatedObjects(){super.clearRecreatedObjects(),MusicSheetCalculator.stafflineNoteCalculator=new VexflowStafflineNoteCalculator(this.rules);for(const e of this.graphicalMusicSheet.MeasureList)for(const t of e)t==null||t.clean()}formatMeasures(){for(const e of this.graphicalMusicSheet.MeasureList){if(!e||!e[0])continue;e[0].format();for(const s of e){for(const r of s.staffEntries)r.calculateXPosition();s.finalizeBeams()}}this.beamsNeedUpdate=!1}calculateMeasureXLayout(e){const t=[];for(const m of e)m&&t.push(m);if(t.length===0)return 0;e=t;const s=[],r=new VF.Formatter({softmaxFactor:this.rules.SoftmaxFactorVexFlow});let o=e[0].staffEntries.length,a=1;for(const m of e){if(!m)continue;let u=0;for(const y of m.staffEntries)u+=y.setMaxAccidentals();m.parentSourceMeasure.ImplicitMeasure&&(o=Math.max(m.staffEntries.length,o),a=Math.max(m.staffEntries.length+u,a));const g=m.vfVoices,b=[];for(const y in g)g.hasOwnProperty(y)&&(b.push(g[y]),s.push(g[y]));if(b.length===0){loglevelExports.debug("Found a measure with no voices. Continuing anyway.",g);continue}r.joinVoices(b)}let l=12;const c=e[0].parentSourceMeasure,d=.3;if(s.length>0){l=r.preCalculateMinTotalWidth(s)/unitInPixels*this.rules.VoiceSpacingMultiplierVexflow+this.rules.VoiceSpacingAddendVexflow+o*d,c!=null&&c.ImplicitMeasure&&(l=c.Duration.RealValue/c.ActiveTimeSignature.RealValue*l,o>1&&(l+=a*d*1.5),l*=this.rules.PickupMeasureWidthMultiplier),MusicSheetCalculator.setMeasuresMinStaffEntriesWidth(e,l);const m=(g,b)=>{r.formatToStave(s,b.getVFStave())},u=(g,b)=>{r.formatToStave(s,b.getVFStave(),{align_rests:!0,context:void 0})};for(const g of e){if(this.rules.AlignRests===AlignRestOption.Never)g.formatVoices=m;else if(this.rules.AlignRests===AlignRestOption.Always)g.formatVoices=u;else if(this.rules.AlignRests===AlignRestOption.Auto){let b=!1;for(const y of g.staffEntries){let S=0,v=0;for(const x of y.graphicalVoiceEntries)if(x.parentVoiceEntry.IsGrace||x&&x.notes&&x.notes[0]&&x.notes[0].sourceNote&&x.notes[0].sourceNote.PrintObject&&S++,x&&x.notes&&x.notes[0]&&x.notes[0].sourceNote&&x.notes[0].sourceNote.isRest()&&x.notes[0].sourceNote.PrintObject&&v++,S>1&&v>=1){b=!0;break}if(b)break}b?g.formatVoices=u:g.formatVoices=m}if(g===e[0]){const b=g;b.formatVoices(l*unitInPixels,b)}}}for(const m of e)if(m)for(const u of m.staffEntries)u.calculateXPosition();for(const m of e){if(!m)continue;const u=m.vfVoices,g=[];for(const b in u)u.hasOwnProperty(b)&&g.push(u[b]);if(g.length===0){loglevelExports.debug("Found a measure with no voices. Continuing anyway.",u);continue}r.joinVoices(g)}return l}calculateElongationFactor(e,t,s,r,o,a,l,c){let d=o,m=0;for(const u of e){const g=u.GraphicalLabel.Label.textAlignment;let b=l,y=c;if(u instanceof GraphicalLyricEntry&&u.ParentLyricWord){u.LyricsEntry.SyllableIndex>0&&(b=this.rules.BetweenSyllableMinimumDistance,TextAlignment.IsCenterAligned(g)&&(b+=1));const B=u.ParentLyricWord.GetLyricWord.Syllables;B.length>1&&u.LyricsEntry.SyllableIndex4&&(N*=1.1)}}else s[m]&&(N=E/w);I=Math.max(R,N),d=Math.max(d,I);let G=Math.max(E-w||0,0);s[m]&&(G+=s[m].cumulativeOverlap),s[m]={cumulativeOverlap:G,extend:u instanceof GraphicalLyricEntry?u.LyricsEntry.extend:!1,labelWidth:v,measureNumber:a,sourceNoteDuration:u instanceof GraphicalLyricEntry?u.LyricsEntry&&u.LyricsEntry.Parent.Notes[0].Length:!1,text:u instanceof GraphicalLyricEntry?u.LyricsEntry.Text:u.GraphicalLabel.Label.text,xPosition:A},m++}return d}calculateElongationFactorFromStaffEntries(e,t,s,r){let o=s;const a={},l={};for(const c of e)c.LyricsEntries.length>0&&(o=this.calculateElongationFactor(c.LyricsEntries,c,a,t,o,r,this.rules.HorizontalBetweenLyricsDistance,this.rules.LyricOverlapAllowedIntoNextMeasure)),c.graphicalChordContainers.length>0&&(o=this.calculateElongationFactor(c.graphicalChordContainers,c,l,t,o,r,this.rules.ChordSymbolXSpacing,this.rules.ChordOverlapAllowedIntoNextMeasure));return o}calculateMeasureWidthFromStaffEntries(e,t){var a;let s=1;if(!((a=window.GYM)==null?void 0:a.multitrack))for(const l of e)!l||l.staffEntries.length===0||(s=this.calculateElongationFactorFromStaffEntries(l.staffEntries,t,s,l.MeasureNumber),s=1);return s=Math.min(s,this.rules.MaximumLyricsElongationFactor),t*s}createGraphicalTie(e,t,s,r,o){return new GraphicalTie(e,r,o)}updateStaffLineBorders(e){e.SkyBottomLineCalculator.updateStaffLineBorders()}graphicalMeasureCreatedCalculations(e){e.rules=this.rules,e.graphicalMeasureCreatedCalculations()}layoutVoiceEntry(e,t,s,r){for(let o=0;o=2&&(a=r.vfnote[0],l=r.vfnote[1]);let c,d=0;if(o&&o.vfnote&&o.vfnote.length>=2&&(c=o.vfnote[0],d=o.vfnote[1]),t){if(a){const v=new VF.StaveTie({first_indices:[l],first_note:a}),x=r.parentVoiceEntry.parentStaffEntry.parentMeasure;if(c){c.getDuration()==="w"&&((u=(m=c.keyProps)==null?void 0:m[0])==null?void 0:u.line)>=3&&c.setStemDirection(-1);let A=((g=window.GYM)==null?void 0:g.tieDirection)||0;Math.abs(A)===1&&(((y=(b=c.keyProps)==null?void 0:b[0])==null?void 0:y.line)>=3?c.setStemDirection(-A):c.setStemDirection(A)),v==null||v.setDirection(c.getStemDirection())}if(x.vfTies.length>0){const A=x.vfTies[0].direction;v==null||v.setDirection(A?-A:1)}x.addStaveTie(v,e)}if(c){const v=new VF.StaveTie({last_indices:[d],last_note:c}),x=o.parentVoiceEntry.parentStaffEntry.parentMeasure;if(x.vfTies.length>0){const A=x.vfTies[0].direction;v==null||v.setDirection(A?-A:1)}x.addStaveTie(v,e)}}else if(a||c){let v;if(s)if(e.Tie.Type==="S"){const E=e.StartNote.sourceNote,w=e.EndNote.sourceNote;let _=1;E.FretNumber>w.FretNumber&&(_=-1),v=new VF.TabSlide({first_indices:[l],first_note:a,last_indices:[d],last_note:c},_)}else v=new VF.TabTie({first_indices:[l],first_note:a,last_indices:[d],last_note:c},e.Tie.Type);else{v=new VF.StaveTie({first_indices:[l],first_note:a,last_indices:[d],last_note:c});const E=e.Tie.getTieDirection(r.sourceNote);E===PlacementEnum.Below?v.setDirection(1):E===PlacementEnum.Above&&v.setDirection(-1);try{Math.abs((a==null?void 0:a.getTieRightX())-(c==null?void 0:c.getTieLeftX()))<10&&(v.render_options.first_x_shift=-3,v.render_options.last_x_shift=3)}catch(w){console.log(w)}}const x=o.parentVoiceEntry.parentStaffEntry.parentMeasure,A=((S=window.GYM)==null?void 0:S.graceCustom)||!1;A&&v.setDirection(A.direction),x.addStaveTie(v,e)}}calculateDynamicExpressionsForMultiExpression(e,t,s){if(tthis.rules.MaxMeasureToDrawIndex)return;const r=e.AbsoluteTimestamp,o=this.graphicalMusicSheet.MeasureList[t],a=o[s].ParentStaffLine,l=o[s];if(!a)return;const c=this.getRelativePositionInStaffLineFromTimestamp(r,s,a,a==null?void 0:a.isPartOfMultiStaffInstrument());if(c.x<=0&&(c.x=l.beginInstructionsWidth+this.rules.RhythmRightMargin),e.InstantaneousDynamic){const d=new VexFlowInstantaneousDynamicExpression(e.InstantaneousDynamic,a,l);this.calculateGraphicalInstantaneousDynamicExpression(d,c,r),this.dynamicExpressionMap.set(r.RealValue,d.PositionAndShape)}if(e.StartingContinuousDynamic){const d=e.StartingContinuousDynamic,m=new VexFlowContinuousDynamicExpression(e.StartingContinuousDynamic,a,l.parentSourceMeasure);if(m.StartMeasure=l,!m.IsVerbal&&d.EndMultiExpression)try{this.calculateGraphicalContinuousDynamic(m,c),m.updateSkyBottomLine()}catch(u){}else m.IsVerbal?this.calculateGraphicalVerbalContinuousDynamic(m,c):loglevelExports.warn("This continuous dynamic is not covered. measure"+e.SourceMeasureParent.MeasureNumber)}}createMetronomeMark(e,t){var A,E,w,_,C,P,I,R,N;const s=Math.max(e.ParentMultiTempoExpression.SourceMeasureParent.MeasureNumber-1,0),r=t||s,o=Math.max(e.StaffNumber-1,0),a=this.graphicalMusicSheet.MeasureList[r][o].getVFStave();let l="q";if(e.beatUnit){const G=NoteTypeHandler.getNoteDurationFromType(e.beatUnit);l=VexFlowConverter.durations(G,!1)[0]}let c=this.rules.MetronomeMarkYShift,d=!1;const m=[];if(e.parentMeasure){for(const G of e.parentMeasure.StaffLinkedExpressions)for(const B of G)B&&B instanceof UnknownExpression&&m.push(B);for(const G of e.parentMeasure.TempoExpressions){const B=((A=G.InstantaneousTempo)==null?void 0:A.Enum)===TempoEnum.metronomeMark;if(!e.beatUnit&&G.InstantaneousTempo.beatUnit){const k=NoteTypeHandler.getNoteDurationFromType(e.beatUnit);l=VexFlowConverter.durations(k,!1)[0]}if(G.getPlacementOfFirstEntry()===PlacementEnum.Above&&!B){d=!0;break}}}d&&(c-=1.4);const u=(E=this.graphicalMusicSheet.MeasureList[0][0].ParentStaffLine)==null?void 0:E.SkyLine;let g=e.TempoInBpm,b="",y="",S="";for(const G of this.graphicalMusicSheet.MeasureList[r][o].parentSourceMeasure.TempoExpressions){if(y=G.CombinedExpressionsText,isSpecialMark(G.CombinedExpressionsText)){b=G.CombinedExpressionsText;break}if(isSpeedKeyword(G.CombinedExpressionsText)||isSpeedHiddenKeyword(G.CombinedExpressionsText)){b=formatSpeedKeyword(G.CombinedExpressionsText),g=G.sourceMeasure.TempoInBPM,isSpeedKeyword(G.CombinedExpressionsText)&&(S=l);break}}const v={bpm:e.TempoInBpm,dots:e.dotted,duration:l,name:b};b&&(v.bpm=g/(v.dots?1.5:1),isSpeedKeyword(y)?v.duration=S:(g===SpeedTag[b]||!SpeedTag[b])&&(v.duration=""));const x=((_=(w=this.graphicalMusicSheet.MeasureList[r][o].vfVoices)==null?void 0:w[1])==null?void 0:_.boundingBox.y)||0;if(this.rules.MetronomeMarksDrawn){if(u){const T=((P=(C=this.graphicalMusicSheet.MeasureList[0])==null?void 0:C[o])==null?void 0:P.ParentStaffLine).Measures.map(V=>V.MeasureNumber-1);if(x&&T.includes(r)&&(isSpeedKeyword(y)||isSpeedHiddenKeyword(y))){const V=u.slice(0,9);let J=Math.min(...V);J=J<0?J-1:J,c+=J}T.includes(r)&&m.length?u[0]=Math.min(u[0],-4.5+c-4):u[0]=Math.min(u[0],-4.5+c)}a.options.line_config.reduce((k,T)=>(T.visible&&k++,k),0)<5&&(c-=2),a.setTempo(v,c*unitInPixels);let B=0;try{const k=(N=(R=(I=this.graphicalMusicSheet.MeasureList[r][o])==null?void 0:I.vfVoices)==null?void 0:R[1])==null?void 0:N.getTickables();B+=k[e.parentMeasure.metronomeNoteIndex].getBoundingBox().getX()-a.getNoteStartX()}catch(k){}a.getModifiers()[a.getModifiers().length-1].setShiftX(B)}}calculateRehearsalMark(e){var d,m,u,g,b,y,S,v;const t=e.rehearsalExpression;if(!t)return;const s=(u=(m=(d=e.VerticalMeasureList)==null?void 0:d[0])==null?void 0:m.getVFStave)==null?void 0:u.call(m);if(!s)return;const r=-this.rules.RehearsalMarkYOffsetDefault-this.rules.RehearsalMarkYOffset;let o=this.rules.RehearsalMarkXOffsetDefault+this.rules.RehearsalMarkXOffset;e.IsSystemStartMeasure&&(o+=this.rules.RehearsalMarkXOffsetSystemStartMeasure);const a=this.rules.RehearsalMarkFontSize,l=s.getModifiers(),c=l.find(x=>x.getCategory().toLocaleLowerCase()==="repetitions");if(c&&c.setShiftY(c.y_shift-10),s.setSection(t.label,r,o,a),(b=(g=e.VerticalMeasureList)==null?void 0:g[0])!=null&&b.ParentStaffLine.AbstractExpressions){const x=l.find(A=>A.getCategory().toLocaleLowerCase()==="stavesection");for(let A of((v=(S=(y=e==null?void 0:e.VerticalMeasureList)==null?void 0:y[0])==null?void 0:S.ParentStaffLine)==null?void 0:v.AbstractExpressions)||[])A instanceof GraphicalUnknownExpression&&(x&&(A.Label.PositionAndShape.RelativePosition.y-=.5),c&&(A.Label.PositionAndShape.RelativePosition.y-=1.7))}}calculateSingleOctaveShift(e,t,s,r){var y;const o=t.OctaveShiftStart,a=o.ParentStartMultiExpression.Timestamp,l=(y=o.ParentEndMultiExpression)==null?void 0:y.Timestamp,c=this.rules.MinMeasureToDrawIndex,d=this.rules.MaxMeasureToDrawIndex;let m=this.graphicalMusicSheet.MeasureList[s][r].ParentStaffLine;m||(m=this.graphicalMusicSheet.MeasureList[c][r].ParentStaffLine);let u;o.ParentEndMultiExpression?u=this.graphicalMusicSheet.getGraphicalMeasureFromSourceMeasureAndIndex(o.ParentEndMultiExpression.SourceMeasureParent,r):u=this.graphicalMusicSheet.getLastGraphicalMeasureFromIndex(r,!0),u.MeasureNumber>d+1&&(u=this.graphicalMusicSheet.getLastGraphicalMeasureFromIndex(r,!0));let g;if(o.ParentEndMultiExpression?g=this.graphicalMusicSheet.getGraphicalMeasureFromSourceMeasureAndIndex(o.ParentStartMultiExpression.SourceMeasureParent,r):g=this.graphicalMusicSheet.MeasureList[c][r],g.MeasureNumberd||u.parentSourceMeasure.measureListIndexd)return;let b=u.ParentStaffLine;if(b||(b=m),u&&m&&b){const S=new VexFlowOctaveShift(o,m.PositionAndShape);if(!S.startNote){let A;for(const E of g.staffEntries)if(E){A=E;break}if(!A||(S.setStartNote(A),!S.startNote))return}if(!S.endNote){let A;for(let E=u.staffEntries.length-1;E>=0;E++)if(u.staffEntries[E]){A=u.staffEntries[E];break}if(S.setEndNote(A),!S.endNote)return}let v=g.findGraphicalStaffEntryFromTimestamp(a);v||(v=g.staffEntries[0]);let x=u.findGraphicalStaffEntryFromTimestamp(l);if(x||(x=u.staffEntries[u.staffEntries.length-1]),S.setStartNote(v),b!==m){S.endsOnDifferentStaffLine=!0;let A=m.Measures[m.Measures.length-1];A===void 0&&(A=u);const E=A.staffEntries[A.staffEntries.length-1];S.setEndNote(E);const w=b.ParentMusicSystem.Id-m.ParentMusicSystem.Id;if(w>0)for(let _=m.ParentMusicSystem.Id;_d+1&&(u=this.graphicalMusicSheet.getLastGraphicalMeasureFromIndex(r,!0));let g;if(o.ParentEndMultiExpression?g=this.graphicalMusicSheet.getGraphicalMeasureFromSourceMeasureAndIndex(o.ParentStartMultiExpression.SourceMeasureParent,r):(g=this.graphicalMusicSheet.getGraphicalMeasureFromSourceMeasureAndIndex(o.ParentStartMultiExpression.SourceMeasureParent,r),g||(g=this.graphicalMusicSheet.MeasureList[c][r])),g.MeasureNumberd||u.parentSourceMeasure.measureListIndexd)return;let b=u.ParentStaffLine;if(b||(b=m),u&&m&&b){let S=!1;m!==b&&(S=!0);const v=new VexFlowPedal(o,m.PositionAndShape,!1,S);let x=g.findGraphicalStaffEntryFromTimestamp(a);x||(x=g.staffEntries[0]);let A=u.findGraphicalStaffEntryFromTimestamp(l);if(A||(A=u.staffEntries[u.staffEntries.length-1]),!v.setStartNote(x))return;if(b!==m)if(v.pedalSymbol===MusicSymbol.PEDAL_SYMBOL){v.setEndNote(A),v.setEndMeasure(u),v.ReleaseText=" ",v.CalculateBoundingBox(),this.calculatePedalSkyBottomLine(v.startVfVoiceEntry,v.endVfVoiceEntry,v,m);const E=b.Measures[0],w=new VexFlowPedal(o,E.PositionAndShape),_=E.staffEntries[0];if(!w.setStartNote(_))return;w.setEndNote(A),v.setEndMeasure(u),b.Pedals.push(w),w.CalculateBoundingBox(),w.DepressText=" ",this.calculatePedalSkyBottomLine(w.startVfVoiceEntry,w.endVfVoiceEntry,w,b)}else{let E=m.Measures[m.Measures.length-1];E===void 0&&(E=u);const w=E.staffEntries[E.staffEntries.length-1];v.setEndNote(w),v.setEndMeasure(u),v.ChangeEnd=!1;const _=b.ParentMusicSystem.Id-m.ParentMusicSystem.Id;if(_>0){let C=1;for(let P=m.ParentMusicSystem.Id;Pd+1&&(u=this.graphicalMusicSheet.getLastGraphicalMeasureFromIndex(r,!0));let g;if(o.ParentEndMultiExpression?g=this.graphicalMusicSheet.getGraphicalMeasureFromSourceMeasureAndIndex(o.ParentStartMultiExpression.SourceMeasureParent,r):g=this.graphicalMusicSheet.MeasureList[c][r],g.MeasureNumberd||u.parentSourceMeasure.measureListIndexd)return;let b=u.ParentStaffLine;if(b||(b=m),u&&m&&b){const v=new VexflowVibratoBracket(o,m.PositionAndShape,g.ParentStaff.isTab);let x=g.findGraphicalStaffEntryFromTimestamp(a);x||(x=g.staffEntries[0]);let A=u.findGraphicalStaffEntryFromTimestamp(l);if(A||(A=u.staffEntries[u.staffEntries.length-1]),v.setStartNote(x),b!==m){let E=m.Measures[m.Measures.length-1];E===void 0&&(E=u);const w=E.staffEntries[E.staffEntries.length-1];if(v.setEndNote(w),b.ParentMusicSystem.Id-m.ParentMusicSystem.Id>0)for(let C=m.ParentMusicSystem.Id;Cu){const E=u;u=m,m=E}r.SkyBottomLineCalculator.updateBottomLineInRange(m,u,g+x)}for(const x of r.Pedals){const A=x,E=A.getPedalMarking(),w=E.line+3+(r.StaffLines.length-1);if(g>w){const _=E.render_options.text_margin_right/10;let C=A.startVfVoiceEntry.PositionAndShape.AbsolutePosition.x-_,P;A.setLine(g-3-(r.StaffLines.length-1));let I=(y=A.endVfVoiceEntry)==null?void 0:y.PositionAndShape;if(I||(I=A.endMeasure.PositionAndShape),A.EndSymbolPositionAndShape){const R=l.render_options.glyph_point_size/20;P=C+3.4;const N=I.AbsolutePosition.x-_,G=N+1.5;r.SkyBottomLineCalculator.updateBottomLineInRange(C,P,g+R),r.SkyBottomLineCalculator.updateBottomLineInRange(N,G,g+R)}else{const R=E.render_options.bracket_height/10;if(E.EndsStave)P=I.AbsolutePosition.x+I.Size.width-_;else switch(l.style){case a.BRACKET_OPEN_END:case a.BRACKET_OPEN_BOTH:case a.MIXED_OPEN_END:P=I.AbsolutePosition.x+I.BorderRight-_;break;default:P=I.AbsolutePosition.x+I.BorderLeft-_;break}const N=(v=(S=A.endVfVoiceEntry)==null?void 0:S.parentStaffEntry)==null?void 0:v.vfClefBefore;if(N){const G=N.getWidth()/10;P+=G}if(C>P){const G=C;C=P,P=G}r.SkyBottomLineCalculator.updateBottomLineInRange(C,P,g+R)}}}}calculateOctaveShiftSkyBottomLine(e,t,s,r){if(!t){loglevelExports.warn("octaveshift: no endStaffEntry");return}let o=e.PositionAndShape.Size.width,a=t.PositionAndShape.Size.width;e.hasOnlyRests()?o=-o:o/=2,t.hasOnlyRests()?a*=2:a/=2,e===t&&(a*=2);const l=e.PositionAndShape.AbsolutePosition.x-o,c=t.PositionAndShape.AbsolutePosition.x+a;s.PositionAndShape.Size.width=l-c;const d=s.getTextBracket(),m=d.font.size/10;if(d.position===VF.TextBracket.Positions.TOP){const u=Math.ceil(r.SkyBottomLineCalculator.getSkyLineMinInRange(l,c));if(u===1/0)return;d.start.getStave().options.top_text_position=Math.abs(u),r.SkyBottomLineCalculator.updateSkyLineInRange(l,c,u-m*2)}else{const u=r.SkyBottomLineCalculator.getBottomLineMaxInRange(l,c);if(u===1/0)return;d.start.getStave().options.bottom_text_position=u,e.parentMeasure!==t.parentMeasure&&(d.stop.getStave().options.bottom_text_position=u),r.SkyBottomLineCalculator.updateBottomLineInRange(l,c,u+m*1.5)}}calculateWordRepetitionInstruction(e,t){let s;const r=this.graphicalMusicSheet.MeasureList[t];for(let o=0,a=r.length;o{s.updateSkyBottomLine()})}catch(s){}}handleTiedGraphicalNote(e,t,s,r,o,a,l,c){}handleBeam(e,t,s){e.parentVoiceEntry.parentStaffEntry.parentMeasure.handleBeam(e,t)}handleVoiceEntryLyrics(e,t,s){e.LyricsEntries.forEach((r,o)=>{const a=new GraphicalLyricEntry(o,t,this.rules.LyricsHeight,this.rules.StaffHeight);if(t.LyricsEntries.push(a),a.GraphicalLabel.setLabelPositionAndShapeBorders(),o.Word){const c=o.Word.Syllables.indexOf(o);let d=s.indexOf(o.Word);if(d===-1&&(s.push(o.Word),d=s.indexOf(o.Word)),this.graphicalLyricWords.length===0||d>this.graphicalLyricWords.length-1){const m=new GraphicalLyricWord(o.Word);a.ParentLyricWord=m,m.GraphicalLyricsEntries[c]=a,this.graphicalLyricWords.push(m)}else{const m=this.graphicalLyricWords[d];a.ParentLyricWord=m,m.GraphicalLyricsEntries[c]=a,m.isFilled()&&(s.splice(d,1),this.graphicalLyricWords.splice(this.graphicalLyricWords.indexOf(m),1))}}})}handleVoiceEntryOrnaments(e,t,s){}handleVoiceEntryArticulations(e,t,s){}handleVoiceEntryTechnicalInstructions(e,t,s){}handleTuplet(e,t,s){e.parentVoiceEntry.parentStaffEntry.parentMeasure.handleTuplet(e,t)}findIndexGraphicalSlurFromSlur(e,t){for(let s=0;s=0){const u=r[m];u.staffEntries.indexOf(a)===-1&&u.staffEntries.push(a),r.splice(m,1)}}}for(const l of r)l.staffEntries.indexOf(a)===-1&&l.staffEntries.push(a)}}for(const t of this.musicSystems)for(const s of t.StaffLines){const r=s.GraphicalSlurs.sort(GraphicalSlur.Compare);for(const o of r)o.slur.isCrossed()||o.calculateCurve(this.rules)}}}class MusicPartManager{constructor(e){this.musicSheet=e}reInit(){this.init()}init(){this.parts=this.musicSheet.Repetitions.slice(),this.sheetStart=this.musicSheet.SelectionStart=new Fraction$1(0,1),this.sheetEnd=this.musicSheet.SelectionEnd=this.musicSheet.SheetEndTimestamp,this.calcMapping()}getCurrentRepetitionTimestampTransform(e){let t;for(let s=this.timestamps.length-1;s>=0;s--)if(t=this.timestamps[s],e.gte(t.from))return t;return this.timestamps[0]}absoluteEnrolledToSheetTimestamp(e){if(this.timestamps.length===0)return e;const t=this.getCurrentRepetitionTimestampTransform(e);return Fraction$1.plus(e,Fraction$1.minus(t.to,t.from))}get Parts(){return this.parts}get MusicSheet(){return this.musicSheet}getIterator(e){return e?new MusicPartManagerIterator(this.musicSheet,e,void 0):new MusicPartManagerIterator(this.musicSheet,this.musicSheet.SelectionStart,this.musicSheet.SelectionEnd)}setSelectionStart(e){this.musicSheet.SelectionStart=e,this.musicSheet.SelectionEnd=void 0}setSelectionRange(e,t){this.musicSheet.SelectionStart=e!=null?e:this.sheetStart,this.musicSheet.SelectionEnd=t!=null?t:this.sheetEnd}calcMapping(){this.timestamps=[];const e=this.getIterator();let t=e.CurrentRepetition,s=new TimestampTransform(e.CurrentEnrolledTimestamp.clone(),e.CurrentSourceTimestamp.clone(),void 0,0);for(this.timestamps.push(s);!e.EndReached;){if(e.JumpOccurred||t!==e.CurrentRepetition){if(t=e.CurrentRepetition,e.backJumpOccurred){const r=e.JumpResponsibleRepetition;s.nextBackJump=e.CurrentEnrolledTimestamp,s.curRepetition=r,s.curRepetitionIteration=e.CurrentJumpResponsibleRepetitionIterationBeforeJump;for(let o=this.timestamps.length-2;o>=0&&!(r.AbsoluteTimestamp.gt(this.timestamps[o].to)||this.timestamps[o].curRepetition);o--)this.timestamps[o].nextBackJump=s.nextBackJump,this.timestamps[o].curRepetition=r,this.timestamps[o].curRepetitionIteration=s.curRepetitionIteration}s=new TimestampTransform(e.CurrentEnrolledTimestamp.clone(),e.CurrentSourceTimestamp.clone(),void 0,0),this.timestamps.push(s)}e.moveToNext()}}}class TimestampTransform{constructor(e,t,s,r){this.from=e,this.to=t,this.curRepetition=s,this.curRepetitionIteration=r,this.nextBackJump=void 0,this.nextForwardJump=void 0}}class PartListEntry{constructor(e){this.enrolledTimestamps=[],this.visible=!0,this.musicSheet=e}get Visible(){return this.visible}set Visible(e){this.visible=e}getFirstSourceMeasure(){return this.musicSheet.SourceMeasures[this.startIndex]}getLastSourceMeasure(){return this.musicSheet.SourceMeasures[this.endIndex]}}class SourceMusicPart extends PartListEntry{constructor(e,t,s){super(e),this.musicSheet=e,this.startIndex=t,this.endIndex=s}get MeasuresCount(){return this.endIndex-this.startIndex+1}get StartIndex(){return this.startIndex}get EndIndex(){return this.endIndex}get ParentRepetition(){return this.parentRepetition}set ParentRepetition(e){this.parentRepetition=e}get AbsoluteTimestamp(){return Fraction$1.createFromFraction(this.musicSheet.SourceMeasures[this.startIndex].AbsoluteTimestamp)}setStartIndex(e){this.startIndex=e}setEndIndex(e){this.endIndex=e}}class Repetition extends PartListEntry{constructor(e,t=!1){super(e),this.backwardJumpInstructions=[],this.endingParts=[],this.endingIndexDict={},this.userNumberOfRepetitions=0,this.visibles=[],this.fromWords=!1,this.repetitonIterationOrder=[],this.numberOfEndings=1,this.musicSheet2=e,this.virtualOverallRepetition=t}get BackwardJumpInstructions(){return this.backwardJumpInstructions}get EndingIndexDict(){return this.endingIndexDict}get EndingParts(){return this.endingParts}get Visibles(){return this.visibles}set Visibles(e){this.visibles=e}get DefaultNumberOfRepetitions(){let e=2;return this.virtualOverallRepetition&&(e=1),Math.max(e,Object.keys(this.endingIndexDict).length,this.checkRepetitionForMultipleLyricVerses())}get UserNumberOfRepetitions(){return this.userNumberOfRepetitions}set UserNumberOfRepetitions(e){this.userNumberOfRepetitions=e,this.repetitonIterationOrder=[];const t=this.userNumberOfRepetitions-this.NumberOfEndings;for(let s=1;s<=this.userNumberOfRepetitions;s++)s<=t?this.repetitonIterationOrder.push(1):this.repetitonIterationOrder.push(s-t)}getForwardJumpTargetForIteration(e){const t=this.repetitonIterationOrder[e-1];return this.endingIndexDict[t]?this.endingIndexDict[t].part.StartIndex:-1}getBackwardJumpTarget(){return this.startMarker.measureIndex}setEndingsStartIndex(e,t){const s=new RepetitionEndingPart(new SourceMusicPart(this.musicSheet2,t,t));this.endingParts.push(s);for(const r of e)try{this.endingIndexDict[r]=s,s.endingIndices.push(r),this.numberOfEndings0&&(r=1),o.Add(new Fraction$1(r,t)),o}}class MusicSheet{constructor(){this.idString="random idString, not initialized",this.sourceMeasures=[],this.repetitions=[],this.dynListStaves=[],this.timestampSortedDynamicExpressionsList=[],this.timestampSortedTempoExpressionsList=[],this.instrumentalGroups=[],this.instruments=[],this.musicPartManager=void 0,this.musicSheetErrors=new MusicSheetErrors,this.staves=[],this.playbackDataDict=new Dictionary,this.transpose=0,this.defaultStartTempoInBpm=0,this.drawErroneousMeasures=!1,this.hasBeenOpenedForTheFirstTime=!1,this.currentEnrolledPosition=new Fraction$1(0,1),this.soundTempos=new Map,this.playbackSettings=new PlaybackSettings,this.playbackSettings.rhythm=new Fraction$1(4,4,0,!1),this.userStartTempoInBPM=100,this.pageWidth=120,this.MusicPartManager=new MusicPartManager(this),this.hasBPMInfo=!1}get SoundTempos(){return this.soundTempos}set SoundTempos(e){this.soundTempos=e}static getIndexFromStaff(e){return e.idInMusicSheet}get CurrentKeyInstruction(){return this.currentKeyInstruction}set CurrentKeyInstruction(e){this.currentKeyInstruction=e}get SourceMeasures(){return this.sourceMeasures}set SourceMeasures(e){this.sourceMeasures=e}get Repetitions(){return this.repetitions}set Repetitions(e){this.repetitions=e}get DynListStaves(){return this.dynListStaves}get TimestampSortedTempoExpressionsList(){return this.timestampSortedTempoExpressionsList}get TimestampSortedDynamicExpressionsList(){return this.timestampSortedDynamicExpressionsList}get InstrumentalGroups(){return this.instrumentalGroups}get Parts(){return this.instruments}get Instruments(){return this.instruments}get SheetPlaybackSetting(){return this.playbackSettings}set SheetPlaybackSetting(e){this.playbackSettings=e}get DrawErroneousMeasures(){return this.drawErroneousMeasures}set DrawErroneousMeasures(e){this.drawErroneousMeasures=e}get HasBeenOpenedForTheFirstTime(){return this.hasBeenOpenedForTheFirstTime}set HasBeenOpenedForTheFirstTime(e){this.hasBeenOpenedForTheFirstTime=e}InitializeStartTempoInBPM(e){this.playbackSettings.BeatsPerMinute=e,this.userStartTempoInBPM=e}get DefaultStartTempoInBpm(){return this.defaultStartTempoInBpm}set DefaultStartTempoInBpm(e){this.defaultStartTempoInBpm=e,this.InitializeStartTempoInBPM(e)}get Path(){return this.path}set Path(e){this.path=e}get Staves(){return this.staves}get TitleString(){return this.title?this.title.text:""}set TitleString(e){this.Title=new Label(e)}get SubtitleString(){return this.subtitle?this.subtitle.text:""}set SubtitleString(e){this.Subtitle=new Label(e)}get ComposerString(){return this.composer?this.composer.text:""}set ComposerString(e){this.Composer=new Label(e)}get LyricistString(){return this.lyricist?this.lyricist.text:""}set LyricistString(e){this.Lyricist=new Label(e)}get Title(){return this.title}set Title(e){this.title=e}get Subtitle(){return this.subtitle}set Subtitle(e){this.subtitle=e}get Composer(){return this.composer}set Composer(e){this.composer=e}get Lyricist(){return this.lyricist}set Lyricist(e){this.lyricist=e}get Rules(){return this.rules||(loglevelExports.debug("warning: sheet.Rules was undefined. Creating new EngravingRules."),this.rules=new EngravingRules),this.rules}set Rules(e){this.rules=e}get SheetErrors(){return this.musicSheetErrors}get PlaybackDataDict(){return this.playbackDataDict}get SelectionStart(){return this.selectionStart}set SelectionStart(e){this.selectionStart=e.clone(),this.currentEnrolledPosition=e.clone()}get SelectionEnd(){return this.selectionEnd}set SelectionEnd(e){this.selectionEnd=e}set HasBPMInfo(e){this.hasBPMInfo=e}get HasBPMInfo(){return this.hasBPMInfo}addMeasure(e){this.sourceMeasures.push(e),e.measureListIndex=this.sourceMeasures.length-1}checkForInstrumentWithNoVoice(){for(let e=0,t=this.instruments.length;e0){const e=this.TimestampSortedTempoExpressionsList[0];if(e.InstantaneousTempo)return e.InstantaneousTempo.TempoInBpm;if(e.ContinuousTempo)return e.ContinuousTempo.StartTempo}return this.userStartTempoInBPM}get Errors(){return this.musicSheetErrors.measureErrors}get FirstMeasureNumber(){try{return this.getFirstSourceMeasure().MeasureNumber}catch(e){return loglevelExports.info("MusicSheet.FirstMeasureNumber: ",e),0}}get LastMeasureNumber(){try{return this.getLastSourceMeasure().MeasureNumber}catch(e){return loglevelExports.info("MusicSheet.LastMeasureNumber: ",e),0}}get CurrentEnrolledPosition(){return this.currentEnrolledPosition.clone()}set CurrentEnrolledPosition(e){this.currentEnrolledPosition=e.clone()}get Transpose(){return this.transpose}set Transpose(e){this.transpose=e}get FullNameString(){return this.ComposerString+" "+this.TitleString}get IdString(){return this.idString}set IdString(e){this.idString=e}getEnrolledSelectionStartTimeStampWorkaround(){const e=this.MusicPartManager.getIterator(this.SelectionStart);return Fraction$1.createFromFraction(e.CurrentEnrolledTimestamp)}get SheetEndTimestamp(){const e=this.getLastSourceMeasure();return Fraction$1.plus(e.AbsoluteTimestamp,e.Duration)}getSourceMeasureFromTimeStamp(e){for(let t=0,s=this.sourceMeasures.length;t0&&r.Voices[0].Visible&&e.push(r)}return e}}MusicSheet.defaultTitle="[no title given]";class LyricWord{constructor(){this.syllables=[]}get Syllables(){return this.syllables}containsVoiceEntry(e){for(let t=0,s=this.Syllables.length;t=0&&(this.syllableIndex=o)}get Text(){return this.text}set Text(e){this.text=e}get Word(){return this.word}get Parent(){return this.parent}set Parent(e){this.parent=e}get VerseNumber(){return this.verseNumber}get SyllableIndex(){return this.syllableIndex}}class LyricsReader{constructor(e){this.openLyricWords={},this.musicSheet=e}addLyricEntry(e,t){var s,r;if(e){const o=e;for(let a=0,l=o.length;a0)for(let w=x;w1&&(b=parseInt(v[1],10))}catch(v){const x=ITextTranslation.translateText("ReaderErrorMessages/LyricVerseNumberError","Invalid lyric verse number");this.musicSheet.SheetErrors.pushMeasureError(x);continue}}let S;if(d==="single"||d==="end"){if(this.openLyricWords[b]){this.currentLyricWord=this.openLyricWords[b];const v=this.currentLyricWord.Syllables.length;S=new LyricsEntry(u,b,this.currentLyricWord,t,v),this.currentLyricWord.Syllables.push(S),delete this.openLyricWords[b],this.currentLyricWord=void 0}else S=new LyricsEntry(u,b,void 0,t);S.extend=c.element("extend")!==void 0}else if(d==="begin")this.openLyricWords[b]&&(delete this.openLyricWords[b],this.currentLyricWord=void 0),this.currentLyricWord=new LyricWord,this.openLyricWords[b]=this.currentLyricWord,S=new LyricsEntry(u,b,this.currentLyricWord,t,0),this.currentLyricWord.Syllables.push(S);else if(d==="middle")if(this.openLyricWords[b]){this.currentLyricWord=this.openLyricWords[b];const v=this.currentLyricWord.Syllables.length;S=new LyricsEntry(u,b,this.currentLyricWord,t,v),this.currentLyricWord.Syllables.push(S)}else S=new LyricsEntry(u,b,void 0,t);S&&(t.LyricsEntries[b]||(t.LyricsEntries.setValue(b,S),(r=(s=t.ParentSourceStaffEntry)==null?void 0:s.VerticalContainerParent)!=null&&r.ParentMeasure&&(t.ParentSourceStaffEntry.VerticalContainerParent.ParentMeasure.hasLyrics=!0)),t.ParentVoice.Parent.LyricVersesNumbers[b]||t.ParentVoice.Parent.LyricVersesNumbers.push(b))}}}catch(d){const m=ITextTranslation.translateText("ReaderErrorMessages/LyricError","Error while reading lyric entry.");this.musicSheet.SheetErrors.pushMeasureError(m);continue}}t.ParentVoice.Parent.LyricVersesNumbers=t.ParentVoice.Parent.LyricVersesNumbers.filter((a,l,c)=>c.indexOf(a)===l)}}}class Articulation{constructor(e,t){this.articulationEnum=e,this.placement=t}Equals(e){return e.articulationEnum===this.articulationEnum&&e.placement===this.placement}}class ArticulationReader{constructor(e){this.rules=e}getAccEnumFromString(e){switch(e){case"sharp":return AccidentalEnum.SHARP;case"flat":return AccidentalEnum.FLAT;case"natural":return AccidentalEnum.NATURAL;case"double-sharp":case"sharp-sharp":return AccidentalEnum.DOUBLESHARP;case"double-flat":case"flat-flat":return AccidentalEnum.DOUBLEFLAT;case"triple-sharp":return AccidentalEnum.TRIPLESHARP;case"triple-flat":return AccidentalEnum.TRIPLEFLAT;case"quarter-sharp":return AccidentalEnum.QUARTERTONESHARP;case"quarter-flat":return AccidentalEnum.QUARTERTONEFLAT;case"three-quarters-sharp":return AccidentalEnum.THREEQUARTERSSHARP;case"three-quarters-flat":return AccidentalEnum.THREEQUARTERSFLAT;case"slash-quarter-sharp":return AccidentalEnum.SLASHQUARTERSHARP;case"slash-sharp":return AccidentalEnum.SLASHSHARP;case"double-slash-flat":return AccidentalEnum.DOUBLESLASHFLAT;case"sori":return AccidentalEnum.SORI;case"koron":return AccidentalEnum.KORON;default:return AccidentalEnum.NONE}}addArticulationExpression(e,t){var s,r;if(e!==void 0&&e.elements().length>0){const o=e.elements();for(let a=0,l=o.length;a0&&t.Articulations[0].articulationEnum!==ArticulationEnum.staccato&&t.Articulations.splice(0,0,b),d==="strongaccent"){const y=(r=c==null?void 0:c.attribute("type"))==null?void 0:r.value;y==="up"?b.articulationEnum=ArticulationEnum.marcatoup:y==="down"&&(b.articulationEnum=ArticulationEnum.marcatodown)}if(d==="detachedlegato"){const y=new Articulation(ArticulationEnum.staccato,u),S=new Articulation(ArticulationEnum.tenuto,u);t.Articulations.push(y,S)}if(!t.hasArticulation(b))switch(t.Articulations.push(b),b.articulationEnum){case ArticulationEnum.staccato:case ArticulationEnum.staccatissimo:t.DurationModifier=b;break;case ArticulationEnum.accent:case ArticulationEnum.strongaccent:t.VolumeModifier=b;break;default:break}}}catch(m){const u="Invalid note articulation.";loglevelExports.debug("addArticulationExpression",u,m);return}}}}addFermata(e,t){var o;let s=ArticulationEnum.fermata;e.attributes().length>0&&e.attribute("type")&&e.attribute("type").value==="inverted"&&(s=ArticulationEnum.invertedfermata);let r=PlacementEnum.Above;((o=e.attribute("placement"))==null?void 0:o.value)==="below"&&(r=PlacementEnum.Below),t.Articulations.push(new Articulation(s,r))}addTechnicalArticulations(e,t,s){var l,c;const r={bend:ArticulationEnum.bend,"down-bow":ArticulationEnum.downbow,"open-string":ArticulationEnum.naturalharmonic,"snap-pizzicato":ArticulationEnum.snappizzicato,stopped:ArticulationEnum.lefthandpizzicato,"up-bow":ArticulationEnum.upbow};for(const d in r){if(!r.hasOwnProperty(d))continue;const m=r[d],u=e.element(d);if(u){let g;((l=u.attribute("placement"))==null?void 0:l.value)==="above"&&(g=PlacementEnum.Above),((c=u.attribute("placement"))==null?void 0:c.value)==="below"&&(g=PlacementEnum.Below);const b=new Articulation(m,g);t.hasArticulation(b)||t.Articulations.push(b)}}const o=e.element("fingering");if(o){const d=this.createTechnicalInstruction(o,s);d.type=TechnicalInstructionType.Fingering,s.Fingering=d,t.TechnicalInstructions.push(d)}const a=e.element("string");if(a){const d=this.createTechnicalInstruction(a,s);d.type=TechnicalInstructionType.String,s.StringInstruction=d,t.TechnicalInstructions.push(d)}}createTechnicalInstruction(e,t){const s=new TechnicalInstruction;s.sourceNote=t,s.value=e.value;const r=e.attribute("placement");return this.rules.FingeringPositionFromXML&&(s.placement=this.getPlacement(r)),s}getPlacement(e,t=PlacementEnum.NotYetDefined){if(t!==PlacementEnum.NotYetDefined)return t;if(e)switch(e.value){case"above":return PlacementEnum.Above;case"below":return PlacementEnum.Below;case"left":return PlacementEnum.Left;case"right":return PlacementEnum.Right;default:return PlacementEnum.NotYetDefined}else return PlacementEnum.NotYetDefined}addOrnament(e,t){if(e){let s;const r={"delayed-inverted-turn":OrnamentEnum.DelayedInvertedTurn,"delayed-turn":OrnamentEnum.DelayedTurn,"inverted-mordent":OrnamentEnum.InvertedMordent,"inverted-turn":OrnamentEnum.InvertedTurn,mordent:OrnamentEnum.Mordent,"trill-mark":OrnamentEnum.Trill,turn:OrnamentEnum.Turn};for(const o in r){if(!r.hasOwnProperty(o))continue;const a=e.element(o);if(a){s=new OrnamentContainer(r[o]);const l=a.attribute("placement");l&&l.value==="below"&&(s.placement=PlacementEnum.Below)}}if(s){const o=e.elements("accidental-mark");if(o){let a=PlacementEnum.Below,l=AccidentalEnum.NONE;const c=o;for(let d=0,m=c.length;d0&&(this.currentVoiceEntry.GraceVoiceEntriesBefore=this.graceVoiceEntriesTempList,this.graceVoiceEntriesTempList=[]))}finalizeReadingMeasure(){this.graceVoiceEntriesTempList.length>0&&this.currentNormalVoiceEntry!==void 0&&this.currentNormalVoiceEntry.GraceVoiceEntriesAfter.concat(this.graceVoiceEntriesTempList),this.graceVoiceEntriesTempList=[],this.pluginManager.processVoiceMeasureReadPlugins(this.currMeasureVoiceEntries,this.activeKey,this.activeRhythm),this.currMeasureVoiceEntries.length=0,this.openBeams.length>1&&this.handleOpenBeam()}read(e,t,s,r,o,a,l,c,d,m,u,g,b,y,S,v,x,A,E,w,_,C,P){this.currentStaffEntry=l,this.currentMeasure=c;try{this.currentNote=a?this.addRestNote(e.element("rest"),t,r,o,b,y,E):this.addSingleNote(e,t,r,s,o,u,g,b,y,S,v,x,A,E,_,C,P),this.currentNote.DotsXml=w;const I=e.elements("lyric");this.lyricsReader!==void 0&&I&&(this.lyricsReader.addLyricEntry(I,this.currentVoiceEntry),this.voice.Parent.HasLyrics=!0);let R=!1;const N=e.element("notations");if(N){this.articulationReader&&this.readArticulations(N,this.currentVoiceEntry,this.currentNote);const G=N.elements("slur");this.slurReader!==void 0&&G.length>0&&!this.currentNote.ParentVoiceEntry.IsGrace&&this.slurReader.addSlur(G,this.currentNote);const B=N.elements("tuplet");B.length>0&&(this.openTupletNumber=this.addTuplet(e,B),R=!0);const k=N.element("arpeggiate");if(k!==void 0){let W;if(this.currentVoiceEntry.Arpeggio)W=this.currentVoiceEntry.Arpeggio;else{let se=!1;for(const ne of this.currentStaffEntry.VoiceEntries)if(ne.Arpeggio){se=!0,W=ne.Arpeggio;break}if(!se){let ne=ArpeggioType.ARPEGGIO_DIRECTIONLESS;const fe=k.attribute("direction");if(fe)switch(fe.value){case"up":ne=ArpeggioType.ROLL_UP;break;case"down":ne=ArpeggioType.ROLL_DOWN;break;default:ne=ArpeggioType.ARPEGGIO_DIRECTIONLESS}W=new Arpeggio(this.currentVoiceEntry,ne),this.currentVoiceEntry.Arpeggio=W}}W.addNote(this.currentNote)}const T=N.elements("tied");T.length>0&&this.addTie(T,d,m,TieTypes.SIMPLE);const V=N.elements("slide");V.length>0&&this.addTie(V,d,m,TieTypes.SLIDE);const J=N.element("technical");if(J){const W=J.elements("hammer-on");W.length>0&&this.addTie(W,d,m,TieTypes.HAMMERON);const se=J.elements("pull-off");se.length>0&&this.addTie(se,d,m,TieTypes.PULLOFF)}}e.element("time-modification")!==void 0&&!R&&this.handleTimeModificationNode(e)}catch(I){loglevelExports.warn(I);const R=ITextTranslation.translateText("ReaderErrorMessages/NoteError","Ignored erroneous Note.");this.musicSheet.SheetErrors.pushMeasureError(R),this.musicSheet.SheetErrors.pushMeasureError(I)}return this.currentNote}checkForStaffEntryLink(e,t,s,r){const o=new StaffEntryLink(this.currentVoiceEntry);o.LinkStaffEntries.push(s),s.Link=o;const a=this.currentVoiceEntry.Timestamp.clone(),l=r.getVerticalContainerByTimestamp(a);return s=l.StaffEntries[e],s||(s=new SourceStaffEntry(l,t),l.StaffEntries[e]=s),s.VoiceEntries.push(this.currentVoiceEntry),o.LinkStaffEntries.push(s),s.Link=o,s}checkForOpenBeam(){this.openBeams.length>0&&this.currentNote&&this.handleOpenBeam()}checkOpenTies(){const e=this.openTieDict;for(const t in e)if(e.hasOwnProperty(t)){const s=e[t];Fraction$1.plus(s.StartNote.ParentStaffEntry.Timestamp,s.Duration).lt(s.StartNote.SourceMeasure.Duration)&&delete e[t]}}hasVoiceEntry(){return this.currentVoiceEntry!==void 0}readArticulations(e,t,s){const r=e.element("articulations");r&&this.articulationReader.addArticulationExpression(r,t);const o=e.element("fermata");o&&this.articulationReader.addFermata(o,t);const a=e.element("technical");a&&this.articulationReader.addTechnicalArticulations(a,t,s);const l=e.element("ornaments");l&&this.articulationReader.addOrnament(l,t)}addSingleNote(e,t,s,r,o,a,l,c,d,m,u,g,b,y,S,v,x){let A=0,E,w=AccidentalEnum.NONE,_=NoteEnum.C,C=NoteEnum.C,P=0,I=0,R,N,G;const B=e.elements();for(let fe=0,Z=B.length;fe0&&this.openBeams.last().ExtendedNoteList.push(y),y}addNoteInfo(e,t,s,r,o,a,l,c,d){e.NoteTypeXml=t,e.PrintObject=s,e.IsCueNote=r,e.NormalNotes=o,e.displayStepUnpitched=a,e.displayOctaveUnpitched=l,e.NoteheadColorXml=c,e.NoteheadColor=c}createBeam(e,t){var s;try{const r=e.element("beam");let o;if(r!==void 0&&r.hasAttributes&&(o=r.attribute("number")),o){let a=parseInt(o.value,10);const l=e.elements("beam"),c=l[0].value;l&&(c==="begin"?(a===((s=this.openBeams.last())==null?void 0:s.BeamNumber)?(this.beamNumberOffset++,a+=this.beamNumberOffset):this.openBeams.last()&&this.handleOpenBeam(),this.openBeams.push(new Beam(a,this.beamNumberOffset))):a+=this.beamNumberOffset);let d=!1;if(!(a>0&&a<=this.openBeams.length)||!this.openBeams[a-1]){loglevelExports.debug("[OSMD] invalid beamnumber");return}for(let m=0,u=this.openBeams[a-1].Notes.length;m1){let r=e.element("time-modification");r&&(r=r.element("actual-notes"));const o=t;for(let a=0,l=o.length;a1&&this.openTupletNumber--),this.tupletDict[u]=b;const S=[];S.push(this.currentNote),b.Notes.push(S),b.Fractions.push(this.getTupletNoteDurationFromType(e)),this.currentNote.NoteTuplet=b,this.openTupletNumber=u}else if(m.value==="stop"){let u=1;c.attribute("number")&&(u=parseInt(c.attribute("number").value,10));const g=this.tupletDict[u];if(g){const b=c.attribute("placement");b&&(b.value==="below"?g.tupletLabelNumberPlacement=PlacementEnum.Below:g.tupletLabelNumberPlacement=PlacementEnum.Above,g.PlacementFromXml=!0);const y=[];if(y.push(this.currentNote),g.Notes.push(y),!g.PlacementFromXml){let S=!1;for(const v of g.Notes){for(const x of v)if(!x.isRest()){x.StemDirectionXml===StemDirectionType.Down?g.tupletLabelNumberPlacement=PlacementEnum.Below:g.tupletLabelNumberPlacement=PlacementEnum.Above,S=!0;break}if(S)break}}g.Fractions.push(this.getTupletNoteDurationFromType(e)),this.currentNote.NoteTuplet=g,delete this.tupletDict[u],Object.keys(this.tupletDict).length===0?this.openTupletNumber=0:Object.keys(this.tupletDict).length>1&&this.openTupletNumber--}}}}}else if(t[0]){const r=t[0];if(r.hasAttributes){const o=r.attribute("type").value;let a=1;r.attribute("number")&&(a=parseInt(r.attribute("number").value,10));const l=isNaN(a),c=r.attribute("bracket");if(c&&c.value==="yes"&&(s=!0),o==="start"){let d=0,m=e.element("time-modification");if(m&&(m=m.element("actual-notes")),m&&(d=parseInt(m.value,10),isNaN(d))){const y=ITextTranslation.translateText("ReaderErrorMessages/TupletNoteDurationError","Invalid tuplet note duration.");throw this.musicSheet.SheetErrors.pushMeasureError(y),new MusicSheetReadingException(y)}l&&(this.openTupletNumber++,a=this.openTupletNumber);let u=this.tupletDict[a];u||(u=this.tupletDict[a]=new Tuplet(d,s),u.tupletLabelNumberPlacement=PlacementEnum.Above);const g=r.attribute("placement");g&&(g.value==="below"?u.tupletLabelNumberPlacement=PlacementEnum.Below:u.tupletLabelNumberPlacement=PlacementEnum.Above,u.PlacementFromXml=!0);const b=[];b.push(this.currentNote),u.Notes.push(b),u.Fractions.push(this.getTupletNoteDurationFromType(e)),this.currentNote.NoteTuplet=u,this.openTupletNumber=a}else if(o==="stop"){l&&(a=this.openTupletNumber);const d=this.tupletDict[this.openTupletNumber];if(d){const m=r.attribute("placement");m&&(m.value==="below"?d.tupletLabelNumberPlacement=PlacementEnum.Below:d.tupletLabelNumberPlacement=PlacementEnum.Above,d.PlacementFromXml=!0);const u=[];if(u.push(this.currentNote),d.Notes.push(u),!d.PlacementFromXml){let g=!1;for(const b of d.Notes){for(const y of b)if(!y.isRest()){y.StemDirectionXml===StemDirectionType.Down?d.tupletLabelNumberPlacement=PlacementEnum.Below:d.tupletLabelNumberPlacement=PlacementEnum.Above,g=!0;break}if(g)break}}d.Fractions.push(this.getTupletNoteDurationFromType(e)),this.currentNote.NoteTuplet=d,Object.keys(this.tupletDict).length===0?this.openTupletNumber=0:Object.keys(this.tupletDict).length>1&&this.openTupletNumber--,delete this.tupletDict[a]}}}}return this.openTupletNumber}handleTimeModificationNode(e){if(this.tupletDict[this.openTupletNumber])try{const t=this.tupletDict[this.openTupletNumber],s=CollectionUtil.last(t.Notes),r=s[0].ParentVoiceEntry;let o;r.Timestamp.Equals(this.currentVoiceEntry.Timestamp)?o=s:(o=[],t.Notes.push(o),t.Fractions.push(this.getTupletNoteDurationFromType(e))),o.push(this.currentNote),this.currentNote.NoteTuplet=t}catch(t){const s=ITextTranslation.translateText("ReaderErrorMessages/TupletNumberError","Invalid tuplet number.");throw this.musicSheet.SheetErrors.pushMeasureError(s),t}else if(this.currentVoiceEntry.Notes.length>0){const t=this.currentVoiceEntry.Notes[0];if(t.NoteTuplet){const s=t.NoteTuplet;CollectionUtil.last(s.Notes).push(this.currentNote),this.currentNote.NoteTuplet=s}}}addTie(e,t,s,r){if(e){if(e.length===1){const o=e[0];if(o!==void 0&&o.attributes()){const a=this.getTieDirection(o),l=o.attribute("type").value;try{if(l==="start"){const c=this.findCurrentNoteInTieDict(this.currentNote);c<0&&delete this.openTieDict[c];const d=this.getNextAvailableNumberForTie(),m=new Tie(this.currentNote,r);this.openTieDict[d]=m,m.TieNumber=d,m.TieDirection=a}else if(l==="stop"){const c=this.findCurrentNoteInTieDict(this.currentNote),d=this.openTieDict[c];d&&(d.AddNote(this.currentNote),delete this.openTieDict[c])}}catch(c){const d=ITextTranslation.translateText("ReaderErrorMessages/TieError","Error while reading tie.");this.musicSheet.SheetErrors.pushMeasureError(d)}}}else if(e.length===2){const o=this.findCurrentNoteInTieDict(this.currentNote);if(o>=0){const a=this.openTieDict[o];a.AddNote(this.currentNote);for(const l of e)if(l.attribute("type").value==="start"){const d=this.getTieDirection(l);a.NoteIndexToTieDirection[a.Notes.length-1]=d}}}}}getTieDirection(e){let t=PlacementEnum.NotYetDefined;const s=e.attribute("placement");s&&(s.value==="above"?t=PlacementEnum.Above:s.value==="below"&&(t=PlacementEnum.Below));const r=e.attribute("orientation");return r&&(r.value==="over"?t=PlacementEnum.Above:r.value==="under"&&(t=PlacementEnum.Below)),t}getNextAvailableNumberForTie(){const e=Object.keys(this.openTieDict);if(e.length===0)return 1;e.sort((t,s)=>+t-+s);for(let t=0;t0?r.RealValue>0?(d=Fraction$1.multiply(Fraction$1.minus(r,o),d),this.directionTimestamp=Fraction$1.plus(d,r)):this.directionTimestamp=Fraction$1.createFromFraction(d):this.offsetDivisions<0&&(r.RealValue>0?(d=Fraction$1.multiply(Fraction$1.minus(r,o),d),this.directionTimestamp=Fraction$1.minus(r,d)):this.directionTimestamp=Fraction$1.createFromFraction(d));const m=e.attribute("placement");if(m)try{const u=m.value;u==="below"?this.placement=PlacementEnum.Below:u==="above"&&(this.placement=PlacementEnum.Above)}catch(u){const g=ITextTranslation.translateText("ReaderErrorMessages/ExpressionPlacementError","Invalid expression placement -> set to default.");loglevelExports.debug("ExpressionReader.readExpressionParameters",g,u),this.musicSheet.SheetErrors.pushMeasureError(g),this.placement=PlacementEnum.Below}if(this.placement===PlacementEnum.NotYetDefined)try{const u=e.element("direction-type");if(u){const g=u.element("dynamics");if(g){const v=g.attribute("default-y");v&&this.readExpressionPlacement(v,"read dynamics y pos")}const b=u.element("wedge");if(b){const v=b.attribute("default-y");v&&this.readExpressionPlacement(v,"read wedge y pos")}const y=u.element("words");if(y){const v=y.attribute("default-y");v&&this.readExpressionPlacement(v,"read words y pos")}const S=u.element("rehearsal");if(S){const v=S.attribute("default-y");v&&this.readExpressionPlacement(v,"read rehearsal pos")}}}catch(u){const g=ITextTranslation.translateText("ReaderErrorMessages/ExpressionPlacementError","Invalid expression placement -> set to default.");loglevelExports.debug("ExpressionReader.readExpressionParameters",g,u),this.musicSheet.SheetErrors.pushMeasureError(g),this.placement=PlacementEnum.Below}this.placement===PlacementEnum.NotYetDefined&&(t.Staves.length>1?this.placement=PlacementEnum.Below:t.HasLyrics?this.placement=PlacementEnum.Above:this.placement=PlacementEnum.Below)}read(e,t,s,r=void 0,o=0){let a=!1,l=!1;const c=e.element("sound");if(c){const u=c.attribute("tempo"),g=c.attribute("dynamics");if(u){const b=u.value.match(/^(\d+)(\.\d+)?$/);(b==null?void 0:b.length)>0?this.soundTempo=Math.round(Number.parseFloat(u.value)):(loglevelExports.info("invalid xml tempo: "+u.value),this.soundTempo=100),t.TempoInBPM=this.soundTempo,this.musicSheet.DefaultStartTempoInBpm===0&&(this.musicSheet.DefaultStartTempoInBpm=this.soundTempo),this.musicSheet.HasBPMInfo=!0,a=!0}if(g){const b=g.value.match(/\d+/);this.soundDynamic=b!==void 0?parseInt(b[0],10):100,l=!0}}const d=e.element("direction-type");if(!d)return;let m=d.element("metronome");if(m){t.metronomeNoteIndex=o;const u=m.element("beat-unit"),g=m.element("beat-unit-dot")!==void 0,b=m.element("per-minute");if(u!==void 0&&b){m.hasAttributes&&m.attribute("default-x")!==void 0&&(this.directionTimestamp=Fraction$1.createFromFraction(s));const S=parseFloat(b.value);this.createNewTempoExpressionIfNeeded(t);const v=new InstantaneousTempoExpression(void 0,this.placement,this.staffNumber,S,this.currentMultiTempoExpression,!0);v.parentMeasure=t,this.soundTempo=S,t.TempoInBPM=this.soundTempo*(g?1.5:1),this.musicSheet.DefaultStartTempoInBpm===0&&(this.musicSheet.DefaultStartTempoInBpm=this.soundTempo),t.MeasureNumberXML===1&&this.musicSheet.SourceMeasures.length===0&&(this.musicSheet.DefaultStartTempoInBpm=this.soundTempo),this.musicSheet.HasBPMInfo=!0,v.dotted=g,v.beatUnit=u.value,this.currentMultiTempoExpression.addExpression(v,""),this.currentMultiTempoExpression.CombinedExpressionsText="test"}return}if(m=d.element("dynamics"),m){const u=e.element("notations")!==void 0;this.interpretInstantaneousDynamics(m,t,s,u);return}if(m=d.element("words"),m){const u=d.elements("words");let g="";for(const b of u)g+=b.value;if(m.value=g,a||isSpeedKeyword(m.value)||isSpeedHiddenKeyword(m.value)){this.createNewTempoExpressionIfNeeded(t),this.currentMultiTempoExpression.CombinedExpressionsText=m.value,(isSpeedKeyword(m.value)||isSpeedHiddenKeyword(m.value))&&(m.value=void 0);const b=new InstantaneousTempoExpression(m.value,this.placement,this.staffNumber,this.soundTempo,this.currentMultiTempoExpression);this.currentMultiTempoExpression.addExpression(b,"")}else l||this.interpretWords(m,t,s);return}if(m=d.element("wedge"),m){this.interpretWedge(m,t,r,t.MeasureNumber);return}if(m=d.element("rehearsal"),m){this.interpretRehearsalMark(m,t,s,t.MeasureNumber);return}}closeOpenExpressions(e,t){for(const s of this.openContinuousDynamicExpressions)this.createNewMultiExpressionIfNeeded(e,s.NumberXml,t),this.closeOpenContinuousDynamic(s,e,t);this.openContinuousTempoExpression&&this.closeOpenContinuousTempo(Fraction$1.plus(e.AbsoluteTimestamp,t))}addOctaveShift(e,t,s){var l;let r=1;const o=e.element("staff");if(o)try{r=parseInt(o.value,10)}catch(c){const d=ITextTranslation.translateText("ReaderErrorMessages/OctaveShiftStaffError","Invalid octave shift staff number -> set to default");this.musicSheet.SheetErrors.pushMeasureError(d),r=1,loglevelExports.debug("ExpressionReader.addOctaveShift",d,c)}const a=e.element("direction-type");if(a){const c=a.element("octave-shift"),d=this.readPlacement(e);if(c!==void 0&&c.hasAttributes)try{const m=this.readNumber(c);if(c.attribute("size")){const u=parseInt(c.attribute("size").value,10);let g=0;u===8?g=1:u===15&&(g=2);let b=(l=c.attribute("type"))==null?void 0:l.value;if(b||(d===PlacementEnum.Above?b="down":d===PlacementEnum.Below&&(b="up")),b==="up"||b==="down"){const y=new OctaveShift(b,g);y.StaffNumber=r,this.getMultiExpression=this.createNewMultiExpressionIfNeeded(t,m),this.getMultiExpression.OctaveShiftStart=y,y.ParentStartMultiExpression=this.getMultiExpression,this.openOctaveShift=y}else if(b==="stop"){if(this.openOctaveShift){this.getMultiExpression=this.createNewMultiExpressionIfNeeded(t,this.openOctaveShift.numberXml,s);const y=this.getMultiExpression;y.OctaveShiftEnd=this.openOctaveShift,this.openOctaveShift.ParentEndMultiExpression=this.getMultiExpression,this.openOctaveShift=void 0}}else b||loglevelExports.debug("octave-shift missing type in xml")}}catch(m){const u=ITextTranslation.translateText("ReaderErrorMessages/OctaveShiftError","Error while reading octave shift.");this.musicSheet.SheetErrors.pushMeasureError(u),loglevelExports.debug("ExpressionReader.addOctaveShift",u,m)}}}addPedalMarking(e,t,s){var o,a,l,c;const r=e.element("direction-type");if(r){const d=r.element("pedal");if(d!==void 0&&d.hasAttributes){let m=!1,u=!1;try{switch(((o=d.attribute("line"))==null?void 0:o.value)==="yes"?u=!0:((a=d.attribute("line"))==null?void 0:a.value)==="no"&&(u=!1,m=!0),((l=d.attribute("sign"))==null?void 0:l.value)==="yes"?m=!0:((c=d.attribute("sign"))==null?void 0:c.value)==="no"&&(m=!1,u=!0),d.attribute("type").value){case"start":this.openPedal&&this.openPedal.IsLine&&this.endOpenPedal(t),this.createNewMultiExpressionIfNeeded(t,-1),this.openPedal=new Pedal(u,m),this.getMultiExpression.PedalStart=this.openPedal,this.openPedal.ParentStartMultiExpression=this.getMultiExpression;break;case"stop":this.openPedal&&this.endOpenPedal(t);break;case"change":this.openPedal&&this.openPedal.IsLine&&(this.openPedal.ChangeEnd=!0,this.createNewMultiExpressionIfNeeded(t,-1),this.getMultiExpression.PedalEnd=this.openPedal,this.openPedal.ParentEndMultiExpression=this.getMultiExpression,this.createNewMultiExpressionIfNeeded(t,-1),this.openPedal=new Pedal(u,m),this.openPedal.ChangeBegin=!0,this.getMultiExpression.PedalStart=this.openPedal,this.openPedal.ParentStartMultiExpression=this.getMultiExpression);break;case"continue":break;default:break}}catch(g){const b=ITextTranslation.translateText("ReaderErrorMessages/PedalError","Error while reading pedal.");this.musicSheet.SheetErrors.pushMeasureError(b),loglevelExports.debug("ExpressionReader.addPedalMarking",b,g)}}}}endOpenPedal(e){this.createNewMultiExpressionIfNeeded(e,-1),this.getMultiExpression.PedalEnd=this.openPedal,this.openPedal.ParentEndMultiExpression=this.getMultiExpression,this.openPedal=void 0}addWavyLine(e,t,s,r){if(e&&e.hasAttributes)try{switch(e.attribute("type").value){case"start":this.createNewMultiExpressionIfNeeded(t,-1),this.openWavyLine=new WavyLine(this.placement),this.getMultiExpression.WavyLineStart=this.openWavyLine,this.openWavyLine.ParentStartMultiExpression=this.getMultiExpression;break;case"stop":this.openWavyLine&&(this.createNewMultiExpressionIfNeeded(t,-1,s),this.getMultiExpression.WavyLineEnd=this.openWavyLine,this.openWavyLine.ParentEndMultiExpression=this.getMultiExpression,this.openWavyLine=void 0);break;case"continue":break;default:break}}catch(o){const a=ITextTranslation.translateText("ReaderErrorMessages/WavyLineError","Error while reading wavy-line.");this.musicSheet.SheetErrors.pushMeasureError(a),loglevelExports.debug("ExpressionReader.addWavyLine",a,o)}}initialize(){this.placement=PlacementEnum.NotYetDefined,this.soundTempo=0,this.soundDynamic=0,this.offsetDivisions=0}readPlacement(e){var s;const t=(s=e.attribute("placement"))==null?void 0:s.value;return t==="above"?PlacementEnum.Above:t==="below"?PlacementEnum.Below:PlacementEnum.NotYetDefined}readExpressionPlacement(e,t){try{const s=parseInt(e.value,10);s<0?this.placement=PlacementEnum.Below:s>0&&(this.placement=PlacementEnum.Above)}catch(s){loglevelExports.debug("ExpressionReader.readExpressionParameters",t,s)}}interpretInstantaneousDynamics(e,t,s,r){if(e.hasElements){e.hasAttributes&&e.attribute("default-x")&&(this.directionTimestamp=Fraction$1.createFromFraction(s));const o=this.readNumber(e);let a=e.elements()[0].name;if(a==="other-dynamics"&&(a=e.elements()[0].value),a){r?this.createNewMultiExpressionIfNeeded(t,o,Fraction$1.createFromFraction(s)):this.createNewMultiExpressionIfNeeded(t,o);const l=new InstantaneousDynamicExpression(a,this.soundDynamic,this.placement,this.staffNumber,t);l.InMeasureTimestamp=s.clone(),this.getMultiExpression.addExpression(l,""),this.initialize(),this.activeInstantaneousDynamic?this.activeInstantaneousDynamic.DynEnum=l.DynEnum:this.activeInstantaneousDynamic=new InstantaneousDynamicExpression(a,0,PlacementEnum.NotYetDefined,1,t)}}}interpretWords(e,t,s){const r=e.value;let o;const a=e.attribute("font-style");if(a&&a.value==="italic"&&(o=FontStyles.Italic),r.length>0){if(e.hasAttributes&&e.attribute("default-x")&&(this.directionTimestamp=Fraction$1.createFromFraction(s)),this.checkIfWordsNodeIsRepetitionInstruction(r))return;this.fillMultiOrTempoExpression(r,t,s,o),this.initialize()}}readNumber(e){var r;let t=1;const s=(r=e.attribute("number"))==null?void 0:r.value;return s&&(t=Number.parseInt(s,10)),t}interpretWedge(e,t,s,r){var a,l;e!==void 0&&e.hasAttributes&&e.attribute("default-x")&&(this.directionTimestamp=Fraction$1.createFromFraction(s));const o=this.readNumber(e);((l=(a=e.attribute("type"))==null?void 0:a.value)==null?void 0:l.toLowerCase())==="stop"?this.createNewMultiExpressionIfNeeded(t,o,s):this.createNewMultiExpressionIfNeeded(t,o),this.addWedge(e,t,s),this.initialize()}interpretRehearsalMark(e,t,s,r){t.rehearsalExpression=new RehearsalExpression(e.value,this.placement)}createNewMultiExpressionIfNeeded(e,t,s=void 0){s||(s=this.directionTimestamp);let r=this.getMultiExpression;return(!r||r&&(r.SourceMeasureParent!==e||r.numberXml!==t||r.SourceMeasureParent===e&&r.Timestamp!==s))&&(this.getMultiExpression=r=new MultiExpression(e,Fraction$1.createFromFraction(s)),e.StaffLinkedExpressions[this.globalStaffIndex].push(r)),r}createNewTempoExpressionIfNeeded(e){(!this.currentMultiTempoExpression||this.currentMultiTempoExpression.SourceMeasureParent!==e||this.currentMultiTempoExpression.Timestamp!==this.directionTimestamp)&&(this.currentMultiTempoExpression=new MultiTempoExpression(e,Fraction$1.createFromFraction(this.directionTimestamp)),e.TempoExpressions.push(this.currentMultiTempoExpression))}addWedge(e,t,s){if(e!==void 0&&e.hasAttributes){const r=this.readNumber(e),o=e.attribute("type").value.toLowerCase();try{if(o==="crescendo"||o==="diminuendo"){const a=new ContinuousDynamicExpression(ContDynamicEnum[o],this.placement,this.staffNumber,t,this.activeInstantaneousDynamic,r);this.openContinuousDynamicExpressions.push(a);let l=this.getMultiExpression;l||(l=this.createNewMultiExpressionIfNeeded(t,r)),l.StartingContinuousDynamic=a,a.StartMultiExpression=l,this.activeInstantaneousDynamic!==void 0&&this.activeInstantaneousDynamic.StaffNumber===a.StaffNumber&&(this.activeInstantaneousDynamic=void 0)}else if(o==="stop")for(const a of this.openContinuousDynamicExpressions)a.NumberXml===r&&a.NumberXml===r&&this.closeOpenContinuousDynamic(a,t,s)}catch(a){const l="ReaderErrorMessages/WedgeError, Error while reading Crescendo / Diminuendo.";this.musicSheet.SheetErrors.pushMeasureError(l),loglevelExports.debug("ExpressionReader.addWedge",l,a)}}}fillMultiOrTempoExpression(e,t,s,r){if(!e)return;const o=e.trim();this.createExpressionFromString("",o,t,s,e,r)}createExpressionFromString(e,t,s,r,o,a){if(InstantaneousTempoExpression.isInputStringInstantaneousTempo(t)||ContinuousTempoExpression.isInputStringContinuousTempo(t)){if(s.TempoExpressions.length>0)for(let m=0,u=s.TempoExpressions.length;m0)for(let m=0,u=s.TempoExpressions.length;m0&&!this.hasDigit(t)&&this.globalStaffIndex>0){if(g.EntriesList[0].label.indexOf(t)>=0)return!1;break}}let c=TextAlignmentEnum.CenterBottom;this.musicSheet.Rules.CompactMode&&(c=TextAlignmentEnum.LeftBottom);const d=new UnknownExpression(t,this.placement,c,this.staffNumber);return d.fontStyle=a,l.addExpression(d,e),!1}closeOpenContinuousDynamic(e,t,s){if(!e)return;const r=e.NumberXml;e.EndMultiExpression=this.createNewMultiExpressionIfNeeded(t,r,s),e.StartMultiExpression.EndingContinuousDynamic=e,this.openContinuousDynamicExpressions=this.openContinuousDynamicExpressions.filter(o=>o!==e)}closeOpenContinuousTempo(e){this.openContinuousTempoExpression.AbsoluteEndTimestamp=e,this.openContinuousTempoExpression=void 0}checkIfWordsNodeIsRepetitionInstruction(e){return e=e.trim().toLowerCase(),e==="coda"||e==="tocoda"||e==="to coda"||e==="fine"||e==="d.c."||e==="dacapo"||e==="da capo"||e==="d.s."||e==="dalsegno"||e==="dal segno"||e==="d.c. al fine"||e==="d.s. al fine"||e==="d.c. al coda"||e==="d.s. al coda"}hasDigit(e){return/\d/.test(e)}}class Slur{constructor(){}get StartNote(){return this.startNote}set StartNote(e){this.startNote=e}get EndNote(){return this.endNote}set EndNote(e){this.endNote=e}startNoteHasMoreStartingSlurs(){if(!this.startNote)return!1;for(let e=0,t=this.startNote.NoteSlurs.length;e0){const r=s.attribute("type").value;let o=1;try{s.attribute("number")&&(o=parseInt(s.attribute("number").value,10))}catch(d){loglevelExports.debug("VoiceGenerator.addSlur number: ",d)}let a=PlacementEnum.NotYetDefined;const l=s.attribute("placement");l&&l.value&&(l.value==="above"?a=PlacementEnum.Above:l.value==="below"&&(a=PlacementEnum.Below));const c=s.attribute("orientation");if(c&&c.value&&(c.value==="over"?a=PlacementEnum.Above:c.value==="under"&&(a=PlacementEnum.Below)),r==="start"){let d=this.openSlurDict[o];d||(d=new Slur,this.openSlurDict[o]=d),d.StartNote=t,d.PlacementXml=a}else if(r==="stop"){const d=this.openSlurDict[o];d&&(d.EndNote=t,t.checkForDoubleSlur(d)||(t.NoteSlurs.push(d),d.StartNote.NoteSlurs.push(d)),delete this.openSlurDict[o])}}}}catch(s){const r=ITextTranslation.translateText("ReaderErrorMessages/SlurError","Error while reading slur.");this.musicSheet.SheetErrors.pushMeasureError(r)}}}class InstrumentReader{constructor(e,t,s,r){this.voiceGeneratorsDict={},this.staffMainVoiceGeneratorDict={},this.divisions=0,this.currentClefNumber=1,this.currentXmlMeasureIndex=0,this.activeKeyHasBeenInitialized=!1,this.abstractInstructions=[],this.openChordSymbolContainers=[],this.soundTempos=new Map,this.xmlNotes=[],this.repetitionInstructionReader=t,this.xmlMeasureList=s,this.musicSheet=r.GetMusicSheet,this.instrument=r,this.activeClefs=new Array(r.Staves.length),this.activeClefsHaveBeenInitialized=new Array(r.Staves.length);for(let o=0;o=this.xmlMeasureList.length)return!1;this.currentMeasure=e,this.followingMultirestMeasures=Math.max(this.followingMultirestMeasures-1,0),this.inSourceMeasureInstrumentIndex=this.musicSheet.getGlobalStaffIndexOfFirstStaff(this.instrument),this.repetitionInstructionReader&&this.repetitionInstructionReader.prepareReadingMeasure(e,this.currentXmlMeasureIndex);let r=new Fraction$1(0,1),o=new Fraction$1(0,1),a=!1;this.maxTieNoteFraction=new Fraction$1(0,1);let l=!1;const c=[];try{const E=this.xmlMeasureList[this.currentXmlMeasureIndex],w=E.elements();if(e.Rules.UseXMLMeasureNumbers&&!Number.isInteger(e.MeasureNumberXML)){const C=parseInt((d=E.attribute("number"))==null?void 0:d.value,10);Number.isInteger(C)&&(e.MeasureNumberXML=C)}let _;for(let C=0;C0&&(_=w[C-1]),P.name==="print"){const I=P.attribute("new-system");(I==null?void 0:I.value)==="yes"&&(e.printNewSystemXml=!0);const R=P.attribute("new-page");(R==null?void 0:R.value)==="yes"&&(e.printNewPageXml=!0)}else if(P.name==="note"){P.element("grace")||(this.xmlNotes.push(P),c.push(P));let I=!0;((m=P.attribute("print-object"))==null?void 0:m.value)==="no"&&(I=!1);let R=1;this.instrument.Staves.length>1&&P.element("staff")&&(R=parseInt(P.element("staff").value,10),isNaN(R)&&(loglevelExports.debug("InstrumentReader.readNextXmlMeasure.get staff number"),R=1)),this.currentStaff=this.instrument.Staves[R-1];const N=P.element("chord")!==void 0;if(P.element("voice")){const H=parseInt(P.element("voice").value,10);this.currentVoiceGenerator=this.getOrCreateVoiceGenerator(H,R-1)}else(!N||!this.currentVoiceGenerator)&&(this.currentVoiceGenerator=this.getOrCreateVoiceGenerator(1,R-1));let G=0,B=new Fraction$1(0,1),k=2,T,V=!1;if(P.element("duration")){if(G=parseInt(P.element("duration").value,10),isNaN(G)){const H=ITextTranslation.translateText("ReaderErrorMessages/NoteDurationError","Invalid Note Duration.");this.musicSheet.SheetErrors.pushMeasureError(H),loglevelExports.debug("InstrumentReader.readNextXmlMeasure",H);continue}else if(B=new Fraction$1(G,4*this.divisions),G===0?B=this.getNoteDurationFromTypeNode(P):T=this.getNoteDurationFromTypeNode(P),P.element("time-modification")){B=this.getNoteDurationForTuplet(P);const H=P.element("time-modification");H!=null&&H.element("normal-notes")&&(k=parseInt(H.element("normal-notes").value,10)),V=!0}}const J=P.element("rest")!==void 0,W=P.element("notations"),se=P.element("grace")!==void 0||G===0||N&&l;let ne=!1,fe=!1;if(se){const H=P.element("duration"),ie=P.element("grace");ie&&ie.attributes()&&ie.attribute("slash")&&ie.attribute("slash").value==="yes"&&(ne=!0),H||(B=this.getNoteDurationFromTypeNode(P));const ee=P.element("notations");ee&&ee.element("slur")&&(fe=!0)}let Z=!1;P.element("cue")&&(Z=!0);const be=P.element("type");let oe=NoteType.UNDEFINED;if(be){const H=be.attribute("size");(H==null?void 0:H.value)==="cue"&&(Z=!0),oe=NoteTypeHandler.StringToNoteType(be.value)}let Y=StemDirectionType.Undefined,ae;const de=P.element("stem");if(de){switch(de.value){case"down":Y=StemDirectionType.Down;break;case"up":Y=StemDirectionType.Up;break;case"double":Y=StemDirectionType.Double;break;case"none":Y=StemDirectionType.None;break;default:Y=StemDirectionType.Undefined}const H=de.attribute("color");H&&(ae=this.parseXmlColor(H.value))}let le=0,me="",ve="",ye="";if(W){const H=W.element("ornaments");if(H){const he=H.element("tremolo");if(he){const ge=he.attribute("type");if(me=ge.value,ge){const xe=parseInt(he.value,10);xe>0&&(le=xe),(ge.value==="start"||ge.value==="stop")&&(B=new Fraction$1(parseInt(P.element("duration").value,10),4*this.divisions))}}const re=H.elements("wavy-line");if(re!==void 0)for(const ge of re){const xe=this.expressionReaders[this.readExpressionStaffNumber(P)-1];xe&&(xe.readExpressionParameters(ge,this.instrument,this.divisions,r,o,this.currentMeasure.MeasureNumber,!1),xe.addWavyLine(ge,this.currentMeasure,r,o))}}W.elements("glissando").find(he=>he.attribute("type").value==="start")&&(ve="start"),W.elements("slide").find(he=>he.attribute("type").value==="start")&&(ye="start")}let U;const Q=P.element("notehead");if(Q){const H=Q.attribute("color");H&&(U=this.parseXmlColor(H.value))}let M;const $=P.attribute("color");$&&(M=this.parseXmlColor($.value),U||(U=M),ae||(ae=M));let z=r.clone();N&&(z=o.clone()),this.currentStaffEntry=this.currentMeasure.findOrCreateStaffEntry(z,this.inSourceMeasureInstrumentIndex+R-1,this.currentStaff).staffEntry,(!this.currentVoiceGenerator.hasVoiceEntry()||!N&&!se&&!l||se&&!l||se&&!N||!se&&l)&&this.currentVoiceGenerator.createVoiceEntry(z,this.currentStaffEntry,this.activeKey,this.ActiveRhythm,se,ne,fe),!se&&!N&&(o=r.clone(),r.Add(B)),N&&this.currentStaffEntry!==void 0&&this.currentStaffEntry.ParentStaff!==this.currentStaff&&(this.currentStaffEntry=this.currentVoiceGenerator.checkForStaffEntryLink(this.inSourceMeasureInstrumentIndex+R-1,this.currentStaff,this.currentStaffEntry,this.currentMeasure));const F=this.currentStaffEntry!==void 0&&this.currentStaffEntry.Timestamp!==void 0&&this.currentStaffEntry.Timestamp.Equals(new Fraction$1(0,1))&&!this.currentStaffEntry.hasNotes();this.saveAbstractInstructionList(this.instrument.Staves.length,F),this.openChordSymbolContainers.length!==0&&(this.currentStaffEntry.ChordContainers=this.openChordSymbolContainers,this.openChordSymbolContainers=[]),this.activeRhythm,!V&&!se&&(B=new Fraction$1(G,4*this.divisions));const O=P.elements("dot").length;if(this.currentVoiceGenerator.read(P,B,T,oe,k,J,this.currentStaffEntry,this.currentMeasure,t,this.maxTieNoteFraction,N,s,I,Z,se,Y,le,ae,U,O,me,ve,ye),W!==void 0&&W.element("dynamics")){const H=this.expressionReaders[this.readExpressionStaffNumber(P)-1];H&&(H.readExpressionParameters(P,this.instrument,this.divisions,r,o,this.currentMeasure.MeasureNumber,!1),H.read(P,this.currentMeasure,o,void 0,c.length))}l=se}else if(P.name==="attributes"){const I=P.element("divisions");if(I&&(this.divisions=parseInt(I.value,10),isNaN(this.divisions))){const G=ITextTranslation.translateText("ReaderErrorMessages/DivisionError","Invalid divisions value at Instrument: ");if(loglevelExports.debug("InstrumentReader.readNextXmlMeasure",G),this.divisions=this.readDivisionsFromNotes(),this.divisions>0)this.musicSheet.SheetErrors.push(G+this.instrument.Name);else throw a=!0,new MusicSheetReadingException(G+this.instrument.Name)}if(!P.element("divisions")&&this.divisions===0&&this.currentXmlMeasureIndex===0){const G=ITextTranslation.translateText("ReaderErrorMessages/DivisionError","Invalid divisions value at Instrument: ");if(this.divisions=this.readDivisionsFromNotes(),this.divisions>0)this.musicSheet.SheetErrors.push(G+this.instrument.Name);else throw a=!0,new MusicSheetReadingException(G+this.instrument.Name)}this.addAbstractInstruction(P,s,_,r.clone()),r.Equals(new Fraction$1(0,1))&&this.isAttributesNodeAtBeginOfMeasure(this.xmlMeasureList[this.currentXmlMeasureIndex],P)&&this.saveAbstractInstructionList(this.instrument.Staves.length,!0),this.isAttributesNodeAtEndOfMeasure(this.xmlMeasureList[this.currentXmlMeasureIndex],P)&&this.saveClefInstructionAtEndOfMeasure();const R=P.elements("staff-details");for(const G of R){const B=G.element("staff-lines");if(B){let k=1;const T=G.attribute("number");T&&(k=parseInt(T.value,10)),this.instrument.Staves[k-1].StafflineCount=parseInt(B.value,10)}}const N=P.element("measure-style");if(N){const G=N.element("multiple-rest");if(G){const B=G.value;let k=0;try{k=Number.parseInt(B,10),e.multipleRestMeasures!==void 0&&k!==e.multipleRestMeasures?e.multipleRestMeasures=0:(e.multipleRestMeasures=k,this.currentMultirestStartMeasure=e,this.followingMultirestMeasures=k+1)}catch(T){console.log("multirest parse error: "+T)}}}}else if(P.name==="forward"){const I=parseInt(P.element("duration").value,10);r.Add(new Fraction$1(I,4*this.divisions))}else if(P.name==="backup"){const I=parseInt(P.element("duration").value,10);r.Sub(new Fraction$1(I,4*this.divisions)),r.IsNegative()&&(r=new Fraction$1(0,1)),o.Sub(new Fraction$1(I,4*this.divisions)),o.IsNegative()&&(o=new Fraction$1(0,1))}else if(P.name==="direction"){const I=P.elements("direction-type"),R=P.element("direction-type");let N=Math.min(1,r.RealValue);this.activeRhythm!==void 0&&this.activeRhythm.Rhythm&&(N/=this.activeRhythm.Rhythm.RealValue);let G=!1;if(this.repetitionInstructionReader&&(G=this.repetitionInstructionReader.handleRepetitionInstructionsFromWordsOrSymbols(R,N)),!G){let B=this.expressionReaders[0];const k=this.readExpressionStaffNumber(P)-1;if(kJ==null?void 0:J.toLocaleLowerCase()).includes((u=T.value)==null?void 0:u.toLocaleLowerCase())&&(this.currentGradualChangeMeasure=this.currentMeasure,this.currentMeasure.speedInfo={startWord:(g=T.value)==null?void 0:g.toLocaleLowerCase(),startXmlNoteIndex:c.length,endXmlNoteIndex:0,resetXmlNoteIndex:0,startMeasureListIndex:this.currentXmlMeasureIndex,endMeasureListIndex:0,resetMeasureListIndex:0},this.xmlNotes=[]),T.value.startsWith(GRADIENT_SPEED_CLOSE_TAG)&&((b=this.currentGradualChangeMeasure)!=null&&b.speedInfo)&&(this.currentGradualChangeMeasure.speedInfo={...this.currentGradualChangeMeasure.speedInfo,endXmlNoteIndex:this.xmlNotes.length,endMeasureListIndex:this.currentXmlMeasureIndex}),((y=T.value)==null?void 0:y.toLocaleLowerCase())==="a tempo".toLocaleLowerCase()&&((S=this.currentGradualChangeMeasure)!=null&&S.speedInfo))){const{endXmlNoteIndex:J,resetXmlNoteIndex:W,endMeasureListIndex:se}=this.currentGradualChangeMeasure.speedInfo;W===0&&(this.currentGradualChangeMeasure.speedInfo={...this.currentGradualChangeMeasure.speedInfo,endXmlNoteIndex:J||this.xmlNotes.length,endMeasureListIndex:se||this.currentXmlMeasureIndex,resetXmlNoteIndex:this.xmlNotes.length,resetMeasureListIndex:this.currentXmlMeasureIndex}),this.xmlNotes=[]}if(I.find(V=>V.element("metronome"))&&((v=this.currentGradualChangeMeasure)!=null&&v.speedInfo)){const{endXmlNoteIndex:V,resetXmlNoteIndex:J,endMeasureListIndex:W}=this.currentGradualChangeMeasure.speedInfo;J===0&&(this.currentGradualChangeMeasure.speedInfo={...this.currentGradualChangeMeasure.speedInfo,endXmlNoteIndex:V||this.xmlNotes.length,endMeasureListIndex:W||this.currentXmlMeasureIndex,resetXmlNoteIndex:this.xmlNotes.length,resetMeasureListIndex:this.currentXmlMeasureIndex}),this.xmlNotes=[]}B.readExpressionParameters(P,this.instrument,this.divisions,r,o,this.currentMeasure.MeasureNumber,!1),B.read(P,this.currentMeasure,r,o.clone(),c.length)}}}else if(P.name==="barline"){this.repetitionInstructionReader&&this.repetitionInstructionReader.handleLineRepetitionInstructions(P)&&(this.currentMeasure.HasEndLine=!0);const I=P.attribute("location");if(C===w.length-1||I&&I.value==="right"){const N=(x=P.element("bar-style"))==null?void 0:x.value;if(N&&(this.currentMeasure.endingBarStyleXml=N,this.currentMeasure.endingBarStyleEnum=SystemLinesEnumHelper.xmlBarlineStyleToSystemLinesEnum(N),(A=this.currentGradualChangeMeasure)!=null&&A.speedInfo)){const{endXmlNoteIndex:G,resetXmlNoteIndex:B,endMeasureListIndex:k}=this.currentGradualChangeMeasure.speedInfo;B===0&&(this.currentGradualChangeMeasure.speedInfo={...this.currentGradualChangeMeasure.speedInfo,endXmlNoteIndex:G||this.xmlNotes.length,endMeasureListIndex:k||this.currentXmlMeasureIndex,resetXmlNoteIndex:this.xmlNotes.length,resetMeasureListIndex:this.currentXmlMeasureIndex}),this.currentGradualChangeMeasure=void 0,this.xmlNotes=[]}}}else if(P.name==="sound")try{if(P.attribute("tempo")){const I=parseFloat(P.attribute("tempo").value);P.element("offset")&&(this.soundTempos.has(this.currentXmlMeasureIndex)||this.soundTempos.set(this.currentXmlMeasureIndex,[]),this.soundTempos.get(this.currentXmlMeasureIndex).push(I)),this.currentXmlMeasureIndex===0&&(this.musicSheet.DefaultStartTempoInBpm=I,this.musicSheet.HasBPMInfo=!0)}}catch(I){loglevelExports.debug("InstrumentReader.readTempoInstruction",I)}else P.name==="harmony"&&this.openChordSymbolContainers.push(ChordSymbolReader.readChordSymbol(P,this.musicSheet,this.activeKey))}for(const C in this.voiceGeneratorsDict)this.voiceGeneratorsDict.hasOwnProperty(C)&&this.voiceGeneratorsDict[C].checkForOpenBeam();if(this.currentXmlMeasureIndex===this.xmlMeasureList.length-1){for(let C=0;C{this.voiceGeneratorsDict[C].finalizeReadingMeasure()}),this.musicSheet.HasBPMInfo?e.TempoInBPM===0&&this.previousMeasure&&(this.currentMeasure.TempoInBPM=this.previousMeasure.TempoInBPM):this.currentMeasure.TempoInBPM=120,this.currentMeasure.TempoInBPM||(this.currentMeasure.TempoInBPM=this.musicSheet.DefaultStartTempoInBpm)}catch(E){if(a)throw new MusicSheetReadingException(E.Message);const w=ITextTranslation.translateText("ReaderErrorMessages/MeasureError","Error while reading Measure.");this.musicSheet.SheetErrors.pushMeasureError(w),loglevelExports.debug("InstrumentReader.readNextXmlMeasure",w,E)}return this.previousMeasure=this.currentMeasure,this.currentXmlMeasureIndex+=1,!0}parseXmlColor(e){if(e)return e.length===7?e:e.length===9?"#"+e.substr(3):void 0}doCalculationsAfterDurationHasBeenSet(){for(const e in this.voiceGeneratorsDict)this.voiceGeneratorsDict.hasOwnProperty(e)&&this.voiceGeneratorsDict[e].checkOpenTies()}getOrCreateVoiceGenerator(e,t){const s=this.instrument.Staves[t];let r=this.voiceGeneratorsDict[e];if(r)s.Voices.indexOf(r.GetVoice)===-1&&s.Voices.push(r.GetVoice);else{const o=this.staffMainVoiceGeneratorDict[t];o?(r=new VoiceGenerator(this.pluginManager,s,e,this.slurReader,o.GetVoice),s.Voices.push(r.GetVoice),this.voiceGeneratorsDict[e]=r):(r=new VoiceGenerator(this.pluginManager,s,e,this.slurReader),s.Voices.push(r.GetVoice),this.voiceGeneratorsDict[e]=r,this.staffMainVoiceGeneratorDict[t]=r)}return r}createExpressionGenerators(e){this.expressionReaders=new Array(e);for(let t=0;t0?t=this.musicSheet.SourceMeasures[0]:t=this.currentMeasure;const s=new ClefInstruction(ClefEnum.G,0,2);let r;t.FirstInstructionsStaffEntries[e]?(r=t.FirstInstructionsStaffEntries[e],r.removeFirstInstructionOfTypeClefInstruction()):(r=new SourceStaffEntry(void 0,void 0),t.FirstInstructionsStaffEntries[e]=r),s.Parent=r,r.Instructions.splice(0,0,s)}createDefaultKeyInstruction(){let e;this.musicSheet.SourceMeasures.length>0?e=this.musicSheet.SourceMeasures[0]:e=this.currentMeasure;const t=new KeyInstruction(void 0,0,KeyEnum.major);for(let s=this.inSourceMeasureInstrumentIndex;s0&&s[r-1].name==="backup")return!0;let o=-1;for(let a=0;a0||o<0}isAttributesNodeAtEndOfMeasure(e,t){const s=e.elements().slice();let r=0;for(let a=0;ao}getNoteDurationFromTypeNode(e){const t=e.element("type");if(t){const s=t.value;return NoteTypeHandler.getNoteDurationFromType(s)}return new Fraction$1(0,4*this.divisions)}addAbstractInstruction(e,t,s,r){if(e.element("divisions")&&e.elements().length===1)return;const o=e.element("transpose");if(o){const c=o.element("chromatic");c&&(this.instrument.PlaybackTranspose=parseInt(c.value,10))}const a=e.elements("clef");let l;if(a.length>0)for(let c=0,d=a.length;c using default clef line."),this.musicSheet.SheetErrors.pushMeasureError(l),g=2,loglevelExports.debug("InstrumentReader.addAbstractInstruction",l,E)}const v=m.element("sign");if(v)try{u=ClefEnum[v.value],ClefInstruction.isSupportedClef(u)||(l=ITextTranslation.translateText("ReaderErrorMessages/ClefError","Unsupported clef found -> using default clef."),this.musicSheet.SheetErrors.pushMeasureError(l),u=ClefEnum.G,g=2),u===ClefEnum.TAB&&(y=-1)}catch(E){l=ITextTranslation.translateText("ReaderErrorMessages/ClefError","Invalid clef found -> using default clef."),this.musicSheet.SheetErrors.pushMeasureError(l),u=ClefEnum.G,g=2,loglevelExports.debug("InstrumentReader.addAbstractInstruction",l,E)}const x=m.element("clef-octave-change");if(x)try{y=parseInt(x.value,10)}catch(E){l=ITextTranslation.translateText("ReaderErrorMessages/ClefOctaveError","Invalid clef octave found -> using default clef octave."),this.musicSheet.SheetErrors.pushMeasureError(l),y=0}if(m.hasAttributes&&m.attribute("number"))try{b=parseInt(m.attribute("number").value,10),b>this.currentClefNumber&&(b=this.currentClefNumber),this.currentClefNumber=b+1}catch(E){l=ITextTranslation.translateText("ReaderErrorMessages/ClefError","Invalid clef found -> using default clef."),this.musicSheet.SheetErrors.pushMeasureError(l),b=1,this.currentClefNumber=b+1}const A=new ClefInstruction(u,y,g);this.abstractInstructions.push([b,A,r])}if(e.element("key")!==void 0&&this.instrument.MidiInstrumentId!==MidiInstrument.Percussion){let c=0;const d=e.element("key").element("fifths");if(d)try{c=parseInt(d.value,10)}catch(b){l=ITextTranslation.translateText("ReaderErrorMessages/KeyError","Invalid key found -> set to default."),this.musicSheet.SheetErrors.pushMeasureError(l),c=0,loglevelExports.debug("InstrumentReader.addAbstractInstruction",l,b)}let m=KeyEnum.none,u=e.element("key");if(u&&(u=u.element("mode")),u)try{m=KeyEnum[u.value]}catch(b){l=ITextTranslation.translateText("ReaderErrorMessages/KeyError","Invalid key found -> set to default."),this.musicSheet.SheetErrors.pushMeasureError(l),m=KeyEnum.major,loglevelExports.debug("InstrumentReader.addAbstractInstruction",l,b)}const g=new KeyInstruction(void 0,c,m);this.abstractInstructions.push([1,g,r])}if(e.element("time")){const c=e.element("time");let d=RhythmSymbolEnum.NONE,m=!0;if(c!==void 0&&c.hasAttributes){const x=c.attribute("symbol");x&&(x.value==="common"?d=RhythmSymbolEnum.COMMON:x.value==="cut"&&(d=RhythmSymbolEnum.CUT));const A=c.attribute("print-object");A&&A.value==="no"&&(m=!1)}let u=0,g=0;const b=c&&c.element("senza-misura")!==void 0,y=e.elements("time"),S=[],v=[];for(let x=0,A=y.length;x0&&v!==void 0&&S.length===v.length){const A=S.length,E=new Array(A);let w=0;for(let _=0;_ set to default."),this.musicSheet.SheetErrors.pushMeasureError(l),u=4,g=4,loglevelExports.debug("InstrumentReader.addAbstractInstruction",l,A)}const x=new RhythmInstruction(new Fraction$1(u,g,0,!1),d);x.PrintObject=m,this.abstractInstructions.push([1,x,r])}}}saveAbstractInstructionList(e,t){for(let s=this.abstractInstructions.length-1;s>=0;s--){const r=this.abstractInstructions[s],o=r[0],a=r[1],l=r[2];if(a instanceof ClefInstruction){const c=a;if(this.currentXmlMeasureIndex===0||o<=this.activeClefs.length&&c!==this.activeClefs[o-1])if(!t&&this.currentStaffEntry!==void 0&&!this.currentStaffEntry.hasNotes()&&o-1===this.instrument.Staves.indexOf(this.currentStaffEntry.ParentStaff)){const d=c,m=this.currentStaffEntry;if(l&&Math.abs(l.RealValue-m.Timestamp.RealValue)>.01)continue;d.Parent=m,m.removeFirstInstructionOfTypeClefInstruction(),m.Instructions.push(d),this.activeClefs[o-1]=c,this.abstractInstructions.splice(s,1)}else if(t){if(l.RealValue!==0)continue;let d;if(this.currentMeasure){const m=c,u=this.inSourceMeasureInstrumentIndex+o-1,g=this.currentMeasure.FirstInstructionsStaffEntries[u];if(this.currentXmlMeasureIndex===0)if(!g)d=new SourceStaffEntry(void 0,void 0),this.currentMeasure.FirstInstructionsStaffEntries[u]=d,m.Parent=d,d.Instructions.push(m),this.activeClefsHaveBeenInitialized[o-1]=!0;else if(this.currentMeasure.FirstInstructionsStaffEntries[u]!==void 0&&!(g.Instructions[0]instanceof ClefInstruction))d=g,m.Parent=d,d.removeFirstInstructionOfTypeClefInstruction(),d.Instructions.splice(0,0,m),this.activeClefsHaveBeenInitialized[o-1]=!0;else{const b=new SourceStaffEntry(void 0,void 0);this.currentMeasure.LastInstructionsStaffEntries[u]=b,m.Parent=b,b.Instructions.push(m)}else if(this.activeClefsHaveBeenInitialized[o-1]){let b=this.previousMeasure;this.followingMultirestMeasures>0&&this.currentMeasure.Rules.RenderMultipleRestMeasures&&(b=this.currentMultirestStartMeasure);const y=new SourceStaffEntry(void 0,void 0);b.LastInstructionsStaffEntries[u]=y,m.Parent=y,y.Instructions.push(m)}else{const b=this.musicSheet.SourceMeasures[0];b.FirstInstructionsStaffEntries[u]?(d=b.FirstInstructionsStaffEntries[u],d.removeFirstInstructionOfTypeClefInstruction()):d=new SourceStaffEntry(void 0,void 0),m.Parent=d,d.Instructions.splice(0,0,m),this.activeClefsHaveBeenInitialized[o-1]=!0}this.activeClefs[o-1]=c,this.abstractInstructions.splice(s,1)}}else{let d;const m=this.activeRhythm.Rhythm;m.RealValue>0&&l.RealValue/m.RealValue>.9&&(this.currentMeasure.LastInstructionsStaffEntries[o-1]||(this.currentMeasure.LastInstructionsStaffEntries[o-1]=new SourceStaffEntry(void 0,this.instrument.Staves[o-1])),d=this.currentMeasure.LastInstructionsStaffEntries[o-1]),d&&(c.Parent=d,d.Instructions.push(c),this.activeClefs[o-1]=c,this.abstractInstructions.splice(s,1))}else o<=this.activeClefs.length&&c===this.activeClefs[o-1]&&this.abstractInstructions.splice(s,1)}if(a instanceof KeyInstruction){const c=a;if(!this.activeKey||this.activeKey.Key!==c.Key){this.activeKey=c,this.abstractInstructions.splice(s,1);let d;if(this.activeKeyHasBeenInitialized?d=this.currentMeasure:(this.activeKeyHasBeenInitialized=!0,this.currentXmlMeasureIndex>0?d=this.musicSheet.SourceMeasures[0]:d=this.currentMeasure),d)for(let m=this.inSourceMeasureInstrumentIndex;m=0;e--){const t=this.abstractInstructions[e][0],s=this.abstractInstructions[e][1];if(s instanceof ClefInstruction){const r=s;if(!this.activeClefs[t-1]||r.ClefType!==this.activeClefs[t-1].ClefType||r.ClefType===this.activeClefs[t-1].ClefType&&r.Line!==this.activeClefs[t-1].Line){const o=new SourceStaffEntry(void 0,void 0);this.currentMeasure.LastInstructionsStaffEntries[this.inSourceMeasureInstrumentIndex+t-1]=o;const a=r;a.Parent=o,o.Instructions.push(a),this.activeClefs[t-1]=r,this.abstractInstructions.splice(e,1)}}}}getNoteDurationForTuplet(e){let t=new Fraction$1(0,1);const s=this.getNoteDurationFromTypeNode(e);if(e.element("time-modification")){const r=e.element("time-modification");if(r&&r.element("actual-notes")!==void 0&&r.element("normal-notes")){const o=r.element("actual-notes"),a=r.element("normal-notes");if(o!==void 0&&a){const l=parseInt(o.value,10),c=parseInt(a.value,10);t=new Fraction$1(c*s.Numerator,l*s.Denominator)}}}return t}readExpressionStaffNumber(e){let t=1;if(e.element("staff")){const s=e.element("staff");if(s)try{t=parseInt(s.value,10)}catch(r){const o=ITextTranslation.translateText("ReaderErrorMessages/ExpressionStaffError","Invalid Expression staff number -> set to default.");this.musicSheet.SheetErrors.pushMeasureError(o),t=1,loglevelExports.debug("InstrumentReader.readExpressionStaffNumber",o,r)}}return t}readDivisionsFromNotes(){let e=0,t=this.currentXmlMeasureIndex,s=!1;for(;!s;){const r=this.xmlMeasureList[t].elements();for(let o=0,a=r.length;o0){s=!0;break}}if(e===0&&(t++,t===this.xmlMeasureList.length)){const o=ITextTranslation.translateText("ReaderErrorMEssages/DivisionsError","Invalid divisions value at Instrument: ");throw new MusicSheetReadingException(o+this.instrument.Name)}}return e}}const _SubInstrument=class{constructor(i){this.parentInstrument=i,this.fixedKey=-1,this.name=this.parseMidiInstrument(this.parentInstrument.Name),this.midiInstrumentID=_SubInstrument.midiInstrument[this.name],this.volume=1}get ParentInstrument(){return this.parentInstrument}static isPianoInstrument(i){return i===MidiInstrument.Acoustic_Grand_Piano||i===MidiInstrument.Bright_Acoustic_Piano||i===MidiInstrument.Electric_Grand_Piano||i===MidiInstrument.Electric_Piano_1||i===MidiInstrument.Electric_Piano_2}setMidiInstrument(i){this.midiInstrumentID=_SubInstrument.midiInstrument[this.parseMidiInstrument(i)]}parseMidiInstrument(i){try{if(i){let e=i.toLowerCase().trim();e=e.replace(/\s+/g,"_");for(const t in _SubInstrument.midiInstrument)if(e.indexOf(t)!==-1)return t}if(this.parentInstrument.Name){let e=this.parentInstrument.Name.toLowerCase().trim();e=e.replace(/\s+/g,"_");for(const t in _SubInstrument.midiInstrument)if(e.indexOf(t)!==-1)return t}}catch(e){loglevelExports.error("Error parsing MIDI Instrument. Default to Grand Piano.")}return"unnamed"}};let SubInstrument=_SubInstrument;SubInstrument.midiInstrument={alto_saxophone:MidiInstrument.Alto_Sax,baritone_saxophone:MidiInstrument.Baritone_Sax,horn_in_f:MidiInstrument.French_Horn,english_horn:MidiInstrument.English_Horn,euphonium:MidiInstrument.Euphonium,clarinet_in_bb:MidiInstrument.clarinet_in_bb,clarinet_in_eb:MidiInstrument.clarinet_in_eb,clarinet:MidiInstrument.Clarinet,alto_clarinet:MidiInstrument.Alto_Clarinet,bass_clarinet:MidiInstrument.Bass_Clarinet,bassoon:MidiInstrument.Bassoon,bass_trombone:MidiInstrument.Bass_Trombone,alt:MidiInstrument.Synth_Voice,alto:MidiInstrument.Synth_Voice,banjo:MidiInstrument.Banjo,bariton:MidiInstrument.Synth_Voice,baritone:MidiInstrument.Synth_Voice,bass:MidiInstrument.Synth_Voice,blockflöte:MidiInstrument.Recorder,brass:MidiInstrument.Trombone,bratsche:MidiInstrument.Viola,cello:MidiInstrument.Cello,contrabass:MidiInstrument.Contrabass,drums:MidiInstrument.Percussion,flute:MidiInstrument.Flute,flöte:MidiInstrument.Flute,frenchhorn:MidiInstrument.French_Horn,gitarre:MidiInstrument.Acoustic_Guitar_nylon,guitar:MidiInstrument.Acoustic_Guitar_nylon,harfe:MidiInstrument.Orchestral_Harp,harp:MidiInstrument.Orchestral_Harp,klarinette:MidiInstrument.Clarinet,klavier:MidiInstrument.Acoustic_Grand_Piano,kontrabass:MidiInstrument.Contrabass,oboe:MidiInstrument.Oboe,organ:MidiInstrument.Church_Organ,orgel:MidiInstrument.Church_Organ,orgue:MidiInstrument.Church_Organ,percussion:MidiInstrument.Synth_Drum,小军鼓:MidiInstrument.Synth_Drum,snare_drum:MidiInstrument.Synth_Drum,bass_drum:MidiInstrument.Synth_Drum,side_drum:MidiInstrument.Synth_Drum,piano:MidiInstrument.Acoustic_Grand_Piano,piccolo:MidiInstrument.Piccolo,posaune:MidiInstrument.Trombone,recorder:MidiInstrument.Recorder,sax:MidiInstrument.Tenor_Sax,schlagwerk:MidiInstrument.Percussion,schlagzeug:MidiInstrument.Percussion,sopran:MidiInstrument.Synth_Voice,steeldrum:MidiInstrument.Steel_Drums,streicher:MidiInstrument.String_Ensemble_1,strings:MidiInstrument.String_Ensemble_1,tenor:MidiInstrument.Synth_Voice,tpt:MidiInstrument.Trumpet,trombone:MidiInstrument.Trombone,trompete:MidiInstrument.Trumpet,trumpet:MidiInstrument.Trumpet,tuba:MidiInstrument.Tuba,unnamed:MidiInstrument.Acoustic_Grand_Piano,viola:MidiInstrument.Viola,violin:MidiInstrument.Violin,"violon-c":MidiInstrument.Cello,"violon.":MidiInstrument.Violin,voice:MidiInstrument.Synth_Voice,woodblock:MidiInstrument.Woodblock,alto_clarinet_in_eb:MidiInstrument.AltoClarinetInEb,trumpet_in_bb:MidiInstrument.TrumpetInBb,tenor_saxophone:MidiInstrument.TenorSaxophone};class StringUtil{static StringContainsSeparatedWord(e,t,s=!1){return new RegExp("( |^)"+t+"([ .]|$)",s?"i":void 0).test(e)}}class RepetitionInstructionReader{set MusicSheet(e){this.musicSheet=e,this.xmlMeasureList=new Array(this.musicSheet.Instruments.length),this.repetitionInstructions=[]}prepareReadingMeasure(e,t){this.currentMeasureIndex=t}handleLineRepetitionInstructions(e){let t=!1;if(e.elements().length>0){let s="",r=!1,o="",a="",l="";const c=[],d=e.element("bar-style");d&&(l=d.value),e.attributes().length>0&&e.attribute("location")?s=e.attribute("location").value:s="right";const m=e.elements();for(let u=0,g=m.length;u0)if(s==="left"){if(a==="start"){const u=new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.Ending,AlignmentType.Begin,void 0,c);this.addInstruction(this.repetitionInstructions,u)}if(o==="forward"){const u=new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.StartLine);this.addInstruction(this.repetitionInstructions,u)}}else{if(a==="stop"){const u=new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.Ending,AlignmentType.End,void 0,c);this.addInstruction(this.repetitionInstructions,u)}if(o==="backward"){const u=new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.BackJumpLine);this.addInstruction(this.repetitionInstructions,u)}}}return t}handleRepetitionInstructionsFromWordsOrSymbols(e,t){const s=e.element("words"),r=this.currentMeasureIndex;if(s){const o="d\\s?\\.s\\.",a=s.value.trim().toLowerCase();if(StringUtil.StringContainsSeparatedWord(a,o+" al fine",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.DalSegnoAlFine);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,o+" al coda",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.DalSegnoAlCoda);return this.addInstruction(this.repetitionInstructions,c),!0}const l="d\\.\\s?c\\.";if(StringUtil.StringContainsSeparatedWord(a,l+" al fine",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.DaCapoAlFine);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,l+" al coda",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.DaCapoAlCoda);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,l)||StringUtil.StringContainsSeparatedWord(a,"da\\s?capo",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.DaCapo);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,o,!0)||StringUtil.StringContainsSeparatedWord(a,"dal\\s?segno",!0)){let c;return StringUtil.StringContainsSeparatedWord(a,"al\\s?coda",!0)?c=new RepetitionInstruction(r,RepetitionInstructionEnum.DalSegnoAlCoda):c=new RepetitionInstruction(r,RepetitionInstructionEnum.DalSegno),this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,"to\\s?coda",!0)||StringUtil.StringContainsSeparatedWord(a,"a (la )?coda",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.ToCoda);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,"fine",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.Fine);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,"coda",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.Coda);return this.addInstruction(this.repetitionInstructions,c),!0}if(StringUtil.StringContainsSeparatedWord(a,"segno",!0)){const c=new RepetitionInstruction(r,RepetitionInstructionEnum.Segno);return this.addInstruction(this.repetitionInstructions,c),!0}}else if(e.element("segno")){const o=new RepetitionInstruction(r,RepetitionInstructionEnum.Segno);return this.addInstruction(this.repetitionInstructions,o),!0}else if(e.element("coda")){const o=new RepetitionInstruction(r,RepetitionInstructionEnum.Coda);return this.addInstruction(this.repetitionInstructions,o),!0}return!1}removeRedundantInstructions(){let e=0,t=0,s=0,r=0;for(let o=0;o0&&this.findInstructionInPreviousMeasure(o,a.measureIndex,RepetitionInstructionEnum.ToCoda)&&(a.type=RepetitionInstructionEnum.None),t===0&&s===0&&(a.type=RepetitionInstructionEnum.ToCoda,a.alignment=AlignmentType.End,a.measureIndex--);break;case RepetitionInstructionEnum.Segno:if(e-r>0){let l=!1;for(let c=0,d=this.repetitionInstructions.length;c0?m.type=RepetitionInstructionEnum.DalSegnoAlCoda:m.type=RepetitionInstructionEnum.DalSegno,a.type=RepetitionInstructionEnum.None,l=!0;break;case RepetitionInstructionEnum.DalSegno:case RepetitionInstructionEnum.DalSegnoAlFine:case RepetitionInstructionEnum.DalSegnoAlCoda:a.type=RepetitionInstructionEnum.None,l=!0;break}if(l)break}if(l)break;s-t>0?a.type=RepetitionInstructionEnum.DalSegnoAlCoda:a.type=RepetitionInstructionEnum.DalSegno,a.alignment=AlignmentType.End,a.measureIndex--}break}if(this.backwardSearchForPreviousIdenticalInstruction(o,a)||a.type===RepetitionInstructionEnum.None)this.repetitionInstructions.splice(o,1),o--;else switch(a.type){case RepetitionInstructionEnum.Fine:break;case RepetitionInstructionEnum.ToCoda:s++;break;case RepetitionInstructionEnum.Coda:t++;break;case RepetitionInstructionEnum.Segno:e++;break;case RepetitionInstructionEnum.DalSegnoAlFine:case RepetitionInstructionEnum.DalSegnoAlCoda:r++;break}}this.repetitionInstructions.sort(RepetitionInstructionComparer.Compare)}findInstructionInPreviousMeasure(e,t,s){for(let r=e-1;r>=0;r--){const o=this.repetitionInstructions[r];if(t-o.measureIndex===1&&o.type===s)return!0}return!1}backwardSearchForPreviousIdenticalInstruction(e,t){for(let s=e-1;s>=0;s--)if(this.repetitionInstructions[s].equals(t))return!0;return!1}addInstruction(e,t){let s=!0;for(let r=0,o=e.length;r0;)try{const l=this.openRepetitions.last();if(l.RepetitonUnderConstruction.FromWords){if(l.WaitingForCoda){let c=l.RepetitonUnderConstruction.BackwardJumpInstructions.last().measureIndex+1;c>=this.musicSheet.SourceMeasures.length&&(c=-1),l.RepetitonUnderConstruction.setEndingStartIndex(2,c)}else if(l.RepetitonUnderConstruction.BackwardJumpInstructions.length===0){this.openRepetitions.splice(this.openRepetitions.length-1,1);continue}}else if(l.RepetitonUnderConstruction.BackwardJumpInstructions.length===0){const c=s.length-1,d=new RepetitionInstruction(c,RepetitionInstructionEnum.BackJumpLine,AlignmentType.End,l.RepetitonUnderConstruction);l.RepetitonUnderConstruction.BackwardJumpInstructions.push(d),s[c].LastRepetitionInstructions.push(d)}this.finalizeRepetition(this.openRepetitions.last())}catch(l){try{const c=this.openRepetitions.last().RepetitonUnderConstruction;for(const d of this.repetitionInstructions)d.parentRepetition===c&&(d.parentRepetition=void 0);this.openRepetitions.splice(this.openRepetitions.length-1,1)}catch(c){loglevelExports.error("RepetitionCalculator: calculateRepetitions2",c)}}let r=!1;const o=0,a=this.musicSheet.SourceMeasures.length-1;for(const l of this.musicSheet.Repetitions)if(l.StartIndex===o&&l.EndIndex===a){r=!0;break}if(!r){const l=new Repetition(this.musicSheet,!0);l.FromWords=!0,l.startMarker=new RepetitionInstruction(o,RepetitionInstructionEnum.StartLine),l.startMarker.parentRepetition=l,this.musicSheet.SourceMeasures[o].FirstRepetitionInstructions.push(l.startMarker),l.endMarker=new RepetitionInstruction(a,RepetitionInstructionEnum.BackJumpLine),l.endMarker.parentRepetition=l,l.BackwardJumpInstructions.push(l.endMarker),l.UserNumberOfRepetitions=l.DefaultNumberOfRepetitions,this.musicSheet.Repetitions.push(l)}for(let l=0,c=this.musicSheet.SourceMeasures.length;l1&&d.FirstRepetitionInstructions.sort(RepetitionInstructionComparer.Compare),d.LastRepetitionInstructions.length>1&&d.LastRepetitionInstructions.sort(RepetitionInstructionComparer.Compare)}}handleRepetitionInstructions(e){let t;switch(e.type){case RepetitionInstructionEnum.StartLine:t=this.createNewRepetition(this.currentMeasureIndex),e.parentRepetition=t.RepetitonUnderConstruction,t.RepetitonUnderConstruction.FromWords=!1,t.RepetitonUnderConstruction.startMarker=e,this.currentMeasure.FirstRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.BackJumpLine:t=this.getOrCreateCurrentRepetition2(!1),e.parentRepetition=t.RepetitonUnderConstruction,t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e),t.RepetitonUnderConstruction.EndingParts.length===0&&this.finalizeRepetition(t);break;case RepetitionInstructionEnum.Ending:if(t=this.getOrCreateCurrentRepetition(),e.parentRepetition=t.RepetitonUnderConstruction,e.endingIndices.contains(1)&&e.alignment===AlignmentType.Begin){if(t.RepetitonUnderConstruction.BackwardJumpInstructions.length>0||t.RepetitonUnderConstruction.EndingIndexDict.hasOwnProperty(1)){t=void 0;for(let r=this.openRepetitions.length-1;r>=0;r--){const o=this.openRepetitions[r];if(o.RepetitonUnderConstruction.BackwardJumpInstructions.length===0)for(t=o;this.openRepetitions.length-1>r;){const a=this.openRepetitions.last();this.finalizeRepetition(a)}}t===void 0&&(t=this.createNewRepetition(0),t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(0,RepetitionInstructionEnum.None))}t.RepetitonUnderConstruction.forwardJumpInstruction===void 0&&(t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(this.currentMeasureIndex-1,RepetitionInstructionEnum.ForwardJump,AlignmentType.End,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[this.currentMeasureIndex-1].LastRepetitionInstructions.push(t.RepetitonUnderConstruction.forwardJumpInstruction))}if(e.alignment===AlignmentType.Begin)t.RepetitonUnderConstruction.setEndingsStartIndex(e.endingIndices,this.currentMeasureIndex),this.currentMeasure.FirstRepetitionInstructions.push(e);else for(let r=0,o=e.endingIndices.length;r0&&Math.abs(t.RepetitonUnderConstruction.BackwardJumpInstructions.last().measureIndex-this.currentMeasureIndex)<=1||this.openRepetitions.length&&this.openRepetitions.find(r=>r.RepetitonUnderConstruction.startMarker.type===RepetitionInstructionEnum.StartLine).RepetitonUnderConstruction.StartIndex===this.currentMeasureIndex)break;t=this.createNewRepetition(this.currentMeasureIndex),e.parentRepetition=t.RepetitonUnderConstruction,t.RepetitonUnderConstruction.FromWords=!0,t.SegnoFound=!0,t.RepetitonUnderConstruction.startMarker=e,this.currentMeasure.FirstRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.Fine:if(this.openRepetitions.length===0||(t=this.getCurrentRepetition(!0),t===void 0))break;e.parentRepetition=t.RepetitonUnderConstruction,t.RepetitonUnderConstruction.FromWords=!0,t.RepetitonUnderConstruction.forwardJumpInstruction===void 0?(t.FineFound=!0,t.RepetitonUnderConstruction.forwardJumpInstruction=e,t.RepetitonUnderConstruction.setEndingStartIndex(2,-2),this.currentMeasure.LastRepetitionInstructions.push(e)):this.currentMeasure.LastRepetitionInstructions.push(new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.Fine,AlignmentType.End,void 0));break;case RepetitionInstructionEnum.ToCoda:if(this.openRepetitions.length===0||(t=this.getCurrentRepetition(!0),t===void 0))break;t.RepetitonUnderConstruction.forwardJumpInstruction===void 0&&(e.parentRepetition=t.RepetitonUnderConstruction,t.RepetitonUnderConstruction.FromWords=!0,t.ToCodaFound=!0,t.RepetitonUnderConstruction.forwardJumpInstruction=e,this.currentMeasure.LastRepetitionInstructions.push(e));break;case RepetitionInstructionEnum.Coda:if(this.openRepetitions.length===0)break;t=this.getOrCreateCurrentRepetition2(!0),e.parentRepetition=t.RepetitonUnderConstruction,t.WaitingForCoda?(t.CodaFound=!0,t.RepetitonUnderConstruction.setEndingStartIndex(2,this.currentMeasureIndex),this.currentMeasure.LastRepetitionInstructions.push(e),this.finalizeRepetition(t),this.currentMeasureIndex>0&&(this.musicSheet.SourceMeasures[this.currentMeasureIndex-1].printNewSystemXml=!0)):t.ToCodaFound||(t.RepetitonUnderConstruction.BackwardJumpInstructions.length===0?(t.ToCodaFound=!0,t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.ToCoda,AlignmentType.End,t.RepetitonUnderConstruction),this.currentMeasure.LastRepetitionInstructions.push(t.RepetitonUnderConstruction.forwardJumpInstruction)):this.currentMeasure.LastRepetitionInstructions.push(new RepetitionInstruction(this.currentMeasureIndex,RepetitionInstructionEnum.Coda,AlignmentType.Begin,void 0)));break;case RepetitionInstructionEnum.DaCapo:t=this.getOrCreateCurrentRepetition(),t.RepetitonUnderConstruction.BackwardJumpInstructions.length>0&&this.finalizeRepetition(t),t.RepetitonUnderConstruction.StartIndex!==0&&(t=this.createNewRepetition(0)),e.parentRepetition=t.RepetitonUnderConstruction,t.RepetitonUnderConstruction.FromWords=!0,t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(0,RepetitionInstructionEnum.None,AlignmentType.Begin,t.RepetitonUnderConstruction),t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e),t.RepetitonUnderConstruction.EndingParts.length===0&&this.finalizeRepetition(t);break;case RepetitionInstructionEnum.DalSegno:if(t=this.getOrCreateCurrentRepetition2(!0),t.RepetitonUnderConstruction.BackwardJumpInstructions.length>0&&(this.finalizeRepetition(t),t=this.createNewRepetition(0),t.RepetitonUnderConstruction.FromWords=!0,t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(0,RepetitionInstructionEnum.None,AlignmentType.Begin,t.RepetitonUnderConstruction)),e.parentRepetition=t.RepetitonUnderConstruction,!t.SegnoFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Segno,e.measureIndex);r>=0&&(t.SegnoFound=!0,t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(r,RepetitionInstructionEnum.Segno,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[r].FirstRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.startMarker))}t.RepetitonUnderConstruction.EndingIndexDict.hasOwnProperty(1)&&t.RepetitonUnderConstruction.setEndingEndIndex(1,this.currentMeasureIndex),t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.DalSegnoAlFine:if(this.openRepetitions.length===0)break;if(t=this.getOrCreateCurrentRepetition2(!0),e.parentRepetition=t.RepetitonUnderConstruction,!t.SegnoFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Segno,e.measureIndex);r>=0&&(t.SegnoFound=!0,t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(r,RepetitionInstructionEnum.Segno,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[r].FirstRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.startMarker))}if(!t.FineFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Fine,e.measureIndex);r>=0&&(t.FineFound=!0,t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(r,RepetitionInstructionEnum.Fine,AlignmentType.Begin,t.RepetitonUnderConstruction),t.RepetitonUnderConstruction.setEndingStartIndex(2,-2),this.musicSheet.SourceMeasures[r].LastRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.forwardJumpInstruction))}t.RepetitonUnderConstruction.EndingIndexDict.hasOwnProperty(1)||t.RepetitonUnderConstruction.setEndingEndIndex(1,this.currentMeasureIndex),t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.DaCapoAlFine:if(t=this.getOrCreateCurrentRepetition(),t.RepetitonUnderConstruction.BackwardJumpInstructions.length>0&&(this.finalizeRepetition(t),t=this.createNewRepetition(0)),t.RepetitonUnderConstruction.startMarker!==void 0&&t.RepetitonUnderConstruction.StartIndex!==0&&(t=this.createNewRepetition(0)),t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(0,RepetitionInstructionEnum.None,AlignmentType.Begin,t.RepetitonUnderConstruction),t.RepetitonUnderConstruction.FromWords=!0,e.parentRepetition=t.RepetitonUnderConstruction,!t.FineFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Fine,e.measureIndex);r>=0&&(t.FineFound=!0,t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(r,RepetitionInstructionEnum.Fine,AlignmentType.Begin,t.RepetitonUnderConstruction),t.RepetitonUnderConstruction.setEndingStartIndex(2,-2),this.musicSheet.SourceMeasures[r].LastRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.forwardJumpInstruction))}t.RepetitonUnderConstruction.EndingIndexDict.hasOwnProperty(1)||t.RepetitonUnderConstruction.setEndingEndIndex(1,this.currentMeasureIndex),t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.DalSegnoAlCoda:if(this.openRepetitions.length===0)break;if(t=this.getOrCreateCurrentRepetition2(!0),e.parentRepetition=t.RepetitonUnderConstruction,!t.SegnoFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Segno,e.measureIndex);r>=0&&(t.SegnoFound=!0,t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(r,RepetitionInstructionEnum.Segno,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[r].FirstRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.startMarker))}if(!t.ToCodaFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.ToCoda,e.measureIndex);if(r>=0)t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(r,RepetitionInstructionEnum.ToCoda,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[r].LastRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.forwardJumpInstruction),t.ToCodaFound=!0;else{const o=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Coda,e.measureIndex);o>=0&&(t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(o,RepetitionInstructionEnum.ToCoda,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[o].LastRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.forwardJumpInstruction),t.ToCodaFound=!0)}}t.ToCodaFound&&(t.WaitingForCoda=!0),t.RepetitonUnderConstruction.EndingIndexDict.hasOwnProperty(1)||t.RepetitonUnderConstruction.setEndingEndIndex(1,this.currentMeasureIndex),t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.DaCapoAlCoda:if(t=this.getOrCreateCurrentRepetition(),t.RepetitonUnderConstruction.BackwardJumpInstructions.length>0?(this.finalizeRepetition(t),t=this.createNewRepetition(0)):t.RepetitonUnderConstruction.EndingParts.length===0&&(this.finalizeRepetition(t),t=this.createNewRepetition(0)),t.RepetitonUnderConstruction.startMarker!==void 0&&t.RepetitonUnderConstruction.StartIndex!==0&&(t=this.createNewRepetition(0)),t.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(0,RepetitionInstructionEnum.None,AlignmentType.Begin,t.RepetitonUnderConstruction),t.RepetitonUnderConstruction.FromWords=!0,e.parentRepetition=t.RepetitonUnderConstruction,!t.ToCodaFound){const r=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.ToCoda,e.measureIndex);if(r>=0)t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(r,RepetitionInstructionEnum.ToCoda,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[r].LastRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.forwardJumpInstruction),t.ToCodaFound=!0;else{const o=this.findInstructionInMainListBackwards(RepetitionInstructionEnum.Coda,e.measureIndex);o>=0&&(t.RepetitonUnderConstruction.forwardJumpInstruction=new RepetitionInstruction(o,RepetitionInstructionEnum.ToCoda,AlignmentType.Begin,t.RepetitonUnderConstruction),this.musicSheet.SourceMeasures[o].LastRepetitionInstructions.splice(0,0,t.RepetitonUnderConstruction.forwardJumpInstruction),t.ToCodaFound=!0)}}t.ToCodaFound&&(t.WaitingForCoda=!0),t.RepetitonUnderConstruction.EndingIndexDict.hasOwnProperty(1)||t.RepetitonUnderConstruction.setEndingEndIndex(1,this.currentMeasureIndex),t.RepetitonUnderConstruction.BackwardJumpInstructions.push(e),this.currentMeasure.LastRepetitionInstructions.push(e);break;case RepetitionInstructionEnum.None:break;default:throw new ArgumentOutOfRangeException("currentRepetitionInstruction")}return!0}findInstructionInMainListBackwards(e,t){for(let s=this.repetitionInstructions.length-1;s>=0;s--){const r=this.repetitionInstructions[s];if(r.measureIndex<=t&&r.type===e)return r.measureIndex}return-1}finalizeRepetition(e){const t=e.RepetitonUnderConstruction;if(t.BackwardJumpInstructions.length>0){let s=!0;const r=this.getLastFinalizedRepetition();if(r!==void 0&&t.coversIdenticalMeasures(r)){if(t.NumberOfEndings>r.NumberOfEndings){const o=this.musicSheet.Repetitions.indexOf(r,0);o>-1&&this.musicSheet.Repetitions.splice(o,1),r.removeFromRepetitionInstructions(),this.musicSheet.Repetitions.push(t)}s=!1,t.removeFromRepetitionInstructions()}else this.musicSheet.Repetitions.push(t);s&&(t.startMarker.type===RepetitionInstructionEnum.None&&this.musicSheet.SourceMeasures[t.StartIndex].FirstRepetitionInstructions.push(t.startMarker),t.UserNumberOfRepetitions=t.DefaultNumberOfRepetitions)}this.openRepetitions.splice(this.openRepetitions.length-1,1)}getCurrentRepetition(e){let t;for(let s=this.openRepetitions.length-1;s>=0;s--)if(this.openRepetitions[s].RepetitonUnderConstruction.FromWords===e){for(t=this.openRepetitions[s];s0)return this.openRepetitions.last();const e=this.createNewRepetition(0);return e.RepetitonUnderConstruction.startMarker=new RepetitionInstruction(0,RepetitionInstructionEnum.None,AlignmentType.Begin,e.RepetitonUnderConstruction),e}getOrCreateCurrentRepetition2(e){let t;if(this.openRepetitions.length&&this.openRepetitions.last().RepetitonUnderConstruction.EndingParts.length<2){for(let r=this.openRepetitions.length-1;r>=0;r--)if(t=this.openRepetitions[r],t.RepetitonUnderConstruction.FromWords===e){for(;r0){const s=this.openRepetitions.last(),r=s.RepetitonUnderConstruction;if(r.BackwardJumpInstructions.length>0){const o=Object.keys(r.EndingIndexDict);(o.length===0||r.EndingIndexDict[o[o.length-1]].part.EndIndex>=0)&&this.finalizeRepetition(s)}}const t=new RepetitionBuildingContainer(this.musicSheet);return this.lastRepetitionCommonPartStartIndex=e,this.openRepetitions.push(t),t}getLastFinalizedRepetition(){if(this.musicSheet.Repetitions.length>0)return this.musicSheet.Repetitions.last()}}class RepetitionBuildingContainer{constructor(e){this.RepetitonUnderConstruction=new Repetition(e)}}class MusicSymbolModuleFactory{static createRepetitionInstructionReader(){return new RepetitionInstructionReader}static createRepetitionCalculator(){return new RepetitionCalculator}}class ReaderPluginManager{constructor(){this.voiceMeasureReadPlugins=[]}addVoiceMeasureReadPlugin(e){this.voiceMeasureReadPlugins.push(e)}processVoiceMeasureReadPlugins(e,t,s){for(const r of this.voiceMeasureReadPlugins)try{r.measureReadCalculations(e,t,s)}catch(o){loglevelExports.info("VoiceGenerator.addSingleNote: ",o)}}}class MusicSheetReader{constructor(e=void 0,t=new EngravingRules){this.completeNumberOfStaves=0,this.pluginManager=new ReaderPluginManager,e?this.afterSheetReadingModules=e:this.afterSheetReadingModules=[],this.repetitionInstructionReader=MusicSymbolModuleFactory.createRepetitionInstructionReader(),this.repetitionCalculator=MusicSymbolModuleFactory.createRepetitionCalculator(),this.rules=t}get PluginManager(){return this.pluginManager}get CompleteNumberOfStaves(){return this.completeNumberOfStaves}static doCalculationsAfterDurationHasBeenSet(e){for(const t of e)t.doCalculationsAfterDurationHasBeenSet()}createMusicSheet(e,t){try{return this._createMusicSheet(e,t)}catch(s){loglevelExports.error("MusicSheetReader.CreateMusicSheet",s);return}}_removeFromArray(e,t){const s=e.indexOf(t);s!==-1&&e.splice(s,1)}trimString(e){return e.replace(/^\s+|\s+$/g,"")}_lastElement(e){return e[e.length-1]}_createMusicSheet(e,t){var u;const s=[];let r=0;if(this.musicSheet=new MusicSheet,this.musicSheet.Path=t,this.musicSheet.Rules=this.rules,!e)throw new MusicSheetReadingException("Undefined root element");this.pushSheetLabels(e,t);const o=e.element("part-list");if(!o)throw new MusicSheetReadingException("Undefined partListNode");const a=e.elements("part"),l=o.elements();this.initializeReading(l,a,s);let c=!0;this.currentFraction=new Fraction$1(0,1);let d=!1,m=e.element("identification");for(m&&(m=m.element("encoding")),m&&(m=m.element("software")),m!==void 0&&m.value==="Guitar Pro 5"&&(d=!0);c;){this.currentMeasure!==void 0&&this.currentMeasure.HasEndLine&&this.rules.NewPartAndSystemAfterFinalBarline&&(r=0),this.currentMeasure=new SourceMeasure(this.completeNumberOfStaves,this.musicSheet.Rules);for(const g of s)try{c=c&&g.readNextXmlMeasure(this.currentMeasure,this.currentFraction,d)}catch(b){const y=ITextTranslation.translateText("ReaderErrorMessages/InstrumentError","Error while reading instruments.");throw new MusicSheetReadingException(y,b)}c&&(this.musicSheet.addMeasure(this.currentMeasure),this.checkIfRhythmInstructionsAreSetAndEqual(s),this.checkSourceMeasureForNullEntries(),r=this.setSourceMeasureDuration(s,r),MusicSheetReader.doCalculationsAfterDurationHasBeenSet(s),this.currentMeasure.AbsoluteTimestamp=this.currentFraction.clone(),this.musicSheet.SheetErrors.finalizeMeasure(this.currentMeasure.MeasureNumber),this.currentFraction.Add(this.currentMeasure.Duration),this.previousMeasure=this.currentMeasure,this.musicSheet.SoundTempos=(u=s[0])==null?void 0:u.SoundTempos)}this.repetitionInstructionReader&&(this.repetitionInstructionReader.removeRedundantInstructions(),this.repetitionCalculator&&this.repetitionCalculator.calculateRepetitions(this.musicSheet,this.repetitionInstructionReader.repetitionInstructions)),this.musicSheet.DefaultStartTempoInBpm===0&&(this.musicSheet.DefaultStartTempoInBpm=100),this.musicSheet.checkForInstrumentWithNoVoice(),this.musicSheet.fillStaffList();for(let g=0,b=this.afterSheetReadingModules.length;gs){if(this.areRhythmInstructionsMixed(t)&&l.SymbolEnum!==RhythmSymbolEnum.NONE)continue;s=l.Rhythm.RealValue,r=t.indexOf(l)}}if(t.length>0&&t.lengthe.Denominator){const s=t.Denominator/e.Denominator;e.expand(s)}}checkIfMeasureIsImplicit(e,t){return!this.previousMeasure&&e.lt(t)?!0:this.previousMeasure?Fraction$1.plus(this.previousMeasure.Duration,e).Equals(t):!1}allInstrumentsHaveSameDuration(e,t){let s=0;for(let r=0,o=e.length;r=0;e--)for(let t=this.currentMeasure.VerticalSourceStaffEntryContainers[e].StaffEntries.length-1;t>=0;t--){const s=this.currentMeasure.VerticalSourceStaffEntryContainers[e].StaffEntries[t];if(s)for(let r=s.VoiceEntries.length-1;r>=0;r--){const o=s.VoiceEntries[r];o.Notes.length===0&&(this._removeFromArray(o.ParentVoice.VoiceEntries,o),this._removeFromArray(s.VoiceEntries,o))}s!==void 0&&s.VoiceEntries.length===0&&(this.currentMeasure.VerticalSourceStaffEntryContainers[e].StaffEntries[t]=void 0)}for(let e=this.currentMeasure.VerticalSourceStaffEntryContainers.length-1;e>=0;e--){let t=0;for(let s=0,r=this.currentMeasure.VerticalSourceStaffEntryContainers[e].StaffEntries.length;st){if(!this.musicSheet.Title){const E=y.attribute("font-size").value,w=parseFloat(E);s0&&m.MidiInstrumentId!==MidiInstrument.Percussion&&(S.midiInstrumentID=Math.max(0,parseInt(E.value,10)-1));else if(E.name==="midi-unpitched")S.fixedKey=Math.max(0,parseInt(E.value,10));else if(E.name==="volume")try{const w=parseFloat(E.value);S.volume=w/127}catch(w){loglevelExports.debug("ExpressionReader.readExpressionParameters","read volume",w)}else if(E.name==="pan")try{const w=parseFloat(E.value);S.pan=w/64}catch(w){loglevelExports.debug("ExpressionReader.readExpressionParameters","read pan",w)}}catch(w){loglevelExports.info("MusicSheetReader.createInstrumentGroups midi settings: ",w)}}}}catch(S){loglevelExports.info("MusicSheetReader.createInstrumentGroups: ",S)}}if(m.SubInstruments.length===0){const g=new SubInstrument(m);m.SubInstruments.push(g)}s[d]=m,r?(r.InstrumentalGroups.push(m),this.musicSheet.Instruments.push(m)):(this.musicSheet.InstrumentalGroups.push(m),this.musicSheet.Instruments.push(m))}else if(c.name==="part-group"&&c.attribute("type").value==="start"){const d=new InstrumentalGroup("group",this.musicSheet,r);r?r.InstrumentalGroups.push(d):this.musicSheet.InstrumentalGroups.push(d),r=d}else if(c.name==="part-group"&&c.attribute("type").value==="stop"&&r){if(r.InstrumentalGroups.length===1){const d=r.InstrumentalGroups[0];r.Parent?(r.Parent.InstrumentalGroups.push(d),this._removeFromArray(r.Parent.InstrumentalGroups,r)):(this.musicSheet.InstrumentalGroups.push(d),this._removeFromArray(this.musicSheet.InstrumentalGroups,r))}r=r.Parent}}}catch(o){const a=ITextTranslation.translateText("ReaderErrorMessages/InstrumentError","Error while reading Instruments");throw new MusicSheetReadingException(a,o)}for(let o=0,a=this.musicSheet.Instruments.length;o0){const o=r[0];if(o){let a=o.element("attributes");a&&(a=a.element("staves")),a?t+=parseInt(a.value,10):t++}}}if(isNaN(t)||t<=0){const s=ITextTranslation.translateText("ReaderErrorMessages/StaffError","Invalid number of staves.");throw new MusicSheetReadingException(s)}return t}getInstrumentNumberOfStavesFromXml(e){let t=0;const s=e.element("measure");if(s){const r=s.element("attributes");let o;r&&(o=r.element("staves")),!r||!o?t=1:t=parseInt(o.value,10)}if(isNaN(t)||t<=0){const r=ITextTranslation.translateText("ReaderErrorMessages/StaffError","Invalid number of Staves.");throw new MusicSheetReadingException(r)}return t}}function commonjsRequire(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var jszip_minExports={},jszip_min={get exports(){return jszip_minExports},set exports(i){jszip_minExports=i}};/*! JSZip v3.7.1 - A JavaScript class for generating and reading zip files (c) 2009-2016 Stuart Knightley Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. JSZip uses the library pako released under the MIT license : https://github.com/nodeca/pako/blob/master/LICENSE */(function(i,e){(function(t){i.exports=t()})(function(){return function t(s,r,o){function a(d,m){if(!r[d]){if(!s[d]){var u=typeof commonjsRequire=="function"&&commonjsRequire;if(!m&&u)return u(d,!0);if(l)return l(d,!0);var g=new Error("Cannot find module '"+d+"'");throw g.code="MODULE_NOT_FOUND",g}var b=r[d]={exports:{}};s[d][0].call(b.exports,function(y){var S=s[d][1][y];return a(S||y)},b,b.exports,t,s,r,o)}return r[d].exports}for(var l=typeof commonjsRequire=="function"&&commonjsRequire,c=0;c>2,b=(3&d)<<4|m>>4,y=1>6:64,S=2>4,m=(15&g)<<4|(b=l.indexOf(c.charAt(S++)))>>2,u=(3&b)<<6|(y=l.indexOf(c.charAt(S++))),A[v++]=d,b!==64&&(A[v++]=m),y!==64&&(A[v++]=u);return A}},{"./support":30,"./utils":32}],2:[function(t,s,r){var o=t("./external"),a=t("./stream/DataWorker"),l=t("./stream/Crc32Probe"),c=t("./stream/DataLengthProbe");function d(m,u,g,b,y){this.compressedSize=m,this.uncompressedSize=u,this.crc32=g,this.compression=b,this.compressedContent=y}d.prototype={getContentWorker:function(){var m=new a(o.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new c("data_length")),u=this;return m.on("end",function(){if(this.streamInfo.data_length!==u.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),m},getCompressedWorker:function(){return new a(o.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},d.createWorkerFrom=function(m,u,g){return m.pipe(new l).pipe(new c("uncompressedSize")).pipe(u.compressWorker(g)).pipe(new c("compressedSize")).withStreamInfo("compression",u)},s.exports=d},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,s,r){var o=t("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(a){return new o("STORE compression")},uncompressWorker:function(){return new o("STORE decompression")}},r.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,s,r){var o=t("./utils"),a=function(){for(var l,c=[],d=0;d<256;d++){l=d;for(var m=0;m<8;m++)l=1&l?3988292384^l>>>1:l>>>1;c[d]=l}return c}();s.exports=function(l,c){return l!==void 0&&l.length?o.getTypeOf(l)!=="string"?function(d,m,u,g){var b=a,y=g+u;d^=-1;for(var S=g;S>>8^b[255&(d^m[S])];return-1^d}(0|c,l,l.length,0):function(d,m,u,g){var b=a,y=g+u;d^=-1;for(var S=g;S>>8^b[255&(d^m.charCodeAt(S))];return-1^d}(0|c,l,l.length,0):0}},{"./utils":32}],5:[function(t,s,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,s,r){var o=null;o=typeof Promise<"u"?Promise:t("lie"),s.exports={Promise:o}},{lie:37}],7:[function(t,s,r){var o=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",a=t("pako"),l=t("./utils"),c=t("./stream/GenericWorker"),d=o?"uint8array":"array";function m(u,g){c.call(this,"FlateWorker/"+u),this._pako=null,this._pakoAction=u,this._pakoOptions=g,this.meta={}}r.magic="\b\0",l.inherits(m,c),m.prototype.processChunk=function(u){this.meta=u.meta,this._pako===null&&this._createPako(),this._pako.push(l.transformTo(d,u.data),!1)},m.prototype.flush=function(){c.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},m.prototype.cleanUp=function(){c.prototype.cleanUp.call(this),this._pako=null},m.prototype._createPako=function(){this._pako=new a[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var u=this;this._pako.onData=function(g){u.push({data:g,meta:u.meta})}},r.compressWorker=function(u){return new m("Deflate",u)},r.uncompressWorker=function(){return new m("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,s,r){function o(b,y){var S,v="";for(S=0;S>>=8;return v}function a(b,y,S,v,x,A){var E,w,_=b.file,C=b.compression,P=A!==d.utf8encode,I=l.transformTo("string",A(_.name)),R=l.transformTo("string",d.utf8encode(_.name)),N=_.comment,G=l.transformTo("string",A(N)),B=l.transformTo("string",d.utf8encode(N)),k=R.length!==_.name.length,T=B.length!==N.length,V="",J="",W="",se=_.dir,ne=_.date,fe={crc32:0,compressedSize:0,uncompressedSize:0};y&&!S||(fe.crc32=b.crc32,fe.compressedSize=b.compressedSize,fe.uncompressedSize=b.uncompressedSize);var Z=0;y&&(Z|=8),P||!k&&!T||(Z|=2048);var K=0,be=0;se&&(K|=16),x==="UNIX"?(be=798,K|=function(Y,ae){var de=Y;return Y||(de=ae?16893:33204),(65535&de)<<16}(_.unixPermissions,se)):(be=20,K|=function(Y){return 63&(Y||0)}(_.dosPermissions)),E=ne.getUTCHours(),E<<=6,E|=ne.getUTCMinutes(),E<<=5,E|=ne.getUTCSeconds()/2,w=ne.getUTCFullYear()-1980,w<<=4,w|=ne.getUTCMonth()+1,w<<=5,w|=ne.getUTCDate(),k&&(J=o(1,1)+o(m(I),4)+R,V+="up"+o(J.length,2)+J),T&&(W=o(1,1)+o(m(G),4)+B,V+="uc"+o(W.length,2)+W);var oe="";return oe+=` \0`,oe+=o(Z,2),oe+=C.magic,oe+=o(E,2),oe+=o(w,2),oe+=o(fe.crc32,4),oe+=o(fe.compressedSize,4),oe+=o(fe.uncompressedSize,4),oe+=o(I.length,2),oe+=o(V.length,2),{fileRecord:u.LOCAL_FILE_HEADER+oe+I+V,dirRecord:u.CENTRAL_FILE_HEADER+o(be,2)+oe+o(G.length,2)+"\0\0\0\0"+o(K,4)+o(v,4)+I+V+G}}var l=t("../utils"),c=t("../stream/GenericWorker"),d=t("../utf8"),m=t("../crc32"),u=t("../signature");function g(b,y,S,v){c.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=y,this.zipPlatform=S,this.encodeFileName=v,this.streamFiles=b,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}l.inherits(g,c),g.prototype.push=function(b){var y=b.meta.percent||0,S=this.entriesCount,v=this._sources.length;this.accumulate?this.contentBuffer.push(b):(this.bytesWritten+=b.data.length,c.prototype.push.call(this,{data:b.data,meta:{currentFile:this.currentFile,percent:S?(y+100*(S-v-1))/S:100}}))},g.prototype.openedSource=function(b){this.currentSourceOffset=this.bytesWritten,this.currentFile=b.file.name;var y=this.streamFiles&&!b.file.dir;if(y){var S=a(b,y,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:S.fileRecord,meta:{percent:0}})}else this.accumulate=!0},g.prototype.closedSource=function(b){this.accumulate=!1;var y=this.streamFiles&&!b.file.dir,S=a(b,y,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(S.dirRecord),y)this.push({data:function(v){return u.DATA_DESCRIPTOR+o(v.crc32,4)+o(v.compressedSize,4)+o(v.uncompressedSize,4)}(b),meta:{percent:100}});else for(this.push({data:S.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},g.prototype.flush=function(){for(var b=this.bytesWritten,y=0;y=this.index;c--)d=(d<<8)+this.byteAt(c);return this.index+=l,d},readString:function(l){return o.transformTo("string",this.readData(l))},readData:function(l){},lastIndexOfSignature:function(l){},readAndCheckSignature:function(l){},readDate:function(){var l=this.readInt(4);return new Date(Date.UTC(1980+(l>>25&127),(l>>21&15)-1,l>>16&31,l>>11&31,l>>5&63,(31&l)<<1))}},s.exports=a},{"../utils":32}],19:[function(t,s,r){var o=t("./Uint8ArrayReader");function a(l){o.call(this,l)}t("../utils").inherits(a,o),a.prototype.readData=function(l){this.checkOffset(l);var c=this.data.slice(this.zero+this.index,this.zero+this.index+l);return this.index+=l,c},s.exports=a},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,s,r){var o=t("./DataReader");function a(l){o.call(this,l)}t("../utils").inherits(a,o),a.prototype.byteAt=function(l){return this.data.charCodeAt(this.zero+l)},a.prototype.lastIndexOfSignature=function(l){return this.data.lastIndexOf(l)-this.zero},a.prototype.readAndCheckSignature=function(l){return l===this.readData(4)},a.prototype.readData=function(l){this.checkOffset(l);var c=this.data.slice(this.zero+this.index,this.zero+this.index+l);return this.index+=l,c},s.exports=a},{"../utils":32,"./DataReader":18}],21:[function(t,s,r){var o=t("./ArrayReader");function a(l){o.call(this,l)}t("../utils").inherits(a,o),a.prototype.readData=function(l){if(this.checkOffset(l),l===0)return new Uint8Array(0);var c=this.data.subarray(this.zero+this.index,this.zero+this.index+l);return this.index+=l,c},s.exports=a},{"../utils":32,"./ArrayReader":17}],22:[function(t,s,r){var o=t("../utils"),a=t("../support"),l=t("./ArrayReader"),c=t("./StringReader"),d=t("./NodeBufferReader"),m=t("./Uint8ArrayReader");s.exports=function(u){var g=o.getTypeOf(u);return o.checkSupport(g),g!=="string"||a.uint8array?g==="nodebuffer"?new d(u):a.uint8array?new m(o.transformTo("uint8array",u)):new l(o.transformTo("array",u)):new c(u)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,s,r){r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,s,r){var o=t("./GenericWorker"),a=t("../utils");function l(c){o.call(this,"ConvertWorker to "+c),this.destType=c}a.inherits(l,o),l.prototype.processChunk=function(c){this.push({data:a.transformTo(this.destType,c.data),meta:c.meta})},s.exports=l},{"../utils":32,"./GenericWorker":28}],25:[function(t,s,r){var o=t("./GenericWorker"),a=t("../crc32");function l(){o.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(l,o),l.prototype.processChunk=function(c){this.streamInfo.crc32=a(c.data,this.streamInfo.crc32||0),this.push(c)},s.exports=l},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,s,r){var o=t("../utils"),a=t("./GenericWorker");function l(c){a.call(this,"DataLengthProbe for "+c),this.propName=c,this.withStreamInfo(c,0)}o.inherits(l,a),l.prototype.processChunk=function(c){if(c){var d=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=d+c.data.length}a.prototype.processChunk.call(this,c)},s.exports=l},{"../utils":32,"./GenericWorker":28}],27:[function(t,s,r){var o=t("../utils"),a=t("./GenericWorker");function l(c){a.call(this,"DataWorker");var d=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,c.then(function(m){d.dataIsReady=!0,d.data=m,d.max=m&&m.length||0,d.type=o.getTypeOf(m),d.isPaused||d._tickAndRepeat()},function(m){d.error(m)})}o.inherits(l,a),l.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this.data=null},l.prototype.resume=function(){return!!a.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,o.delay(this._tickAndRepeat,[],this)),!0)},l.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(o.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},l.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var c=null,d=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":c=this.data.substring(this.index,d);break;case"uint8array":c=this.data.subarray(this.index,d);break;case"array":case"nodebuffer":c=this.data.slice(this.index,d)}return this.index=d,this.push({data:c,meta:{percent:this.max?this.index/this.max*100:0}})},s.exports=l},{"../utils":32,"./GenericWorker":28}],28:[function(t,s,r){function o(a){this.name=a||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}o.prototype={push:function(a){this.emit("data",a)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(a){this.emit("error",a)}return!0},error:function(a){return!this.isFinished&&(this.isPaused?this.generatedError=a:(this.isFinished=!0,this.emit("error",a),this.previous&&this.previous.error(a),this.cleanUp()),!0)},on:function(a,l){return this._listeners[a].push(l),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(a,l){if(this._listeners[a])for(var c=0;c "+a:a}},s.exports=o},{}],29:[function(t,s,r){var o=t("../utils"),a=t("./ConvertWorker"),l=t("./GenericWorker"),c=t("../base64"),d=t("../support"),m=t("../external"),u=null;if(d.nodestream)try{u=t("../nodejs/NodejsStreamOutputAdapter")}catch(y){}function g(y,S){return new m.Promise(function(v,x){var A=[],E=y._internalType,w=y._outputType,_=y._mimeType;y.on("data",function(C,P){A.push(C),S&&S(P)}).on("error",function(C){A=[],x(C)}).on("end",function(){try{var C=function(P,I,R){switch(P){case"blob":return o.newBlob(o.transformTo("arraybuffer",I),R);case"base64":return c.encode(I);default:return o.transformTo(P,I)}}(w,function(P,I){var R,N=0,G=null,B=0;for(R=0;R"u")r.blob=!1;else{var o=new ArrayBuffer(0);try{r.blob=new Blob([o],{type:"application/zip"}).size===0}catch(l){try{var a=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);a.append(o),r.blob=a.getBlob("application/zip").size===0}catch(c){r.blob=!1}}}try{r.nodestream=!!t("readable-stream").Readable}catch(l){r.nodestream=!1}},{"readable-stream":16}],31:[function(t,s,r){for(var o=t("./utils"),a=t("./support"),l=t("./nodejsUtils"),c=t("./stream/GenericWorker"),d=new Array(256),m=0;m<256;m++)d[m]=252<=m?6:248<=m?5:240<=m?4:224<=m?3:192<=m?2:1;d[254]=d[254]=1;function u(){c.call(this,"utf-8 decode"),this.leftOver=null}function g(){c.call(this,"utf-8 encode")}r.utf8encode=function(b){return a.nodebuffer?l.newBufferFrom(b,"utf-8"):function(y){var S,v,x,A,E,w=y.length,_=0;for(A=0;A>>6:(v<65536?S[E++]=224|v>>>12:(S[E++]=240|v>>>18,S[E++]=128|v>>>12&63),S[E++]=128|v>>>6&63),S[E++]=128|63&v);return S}(b)},r.utf8decode=function(b){return a.nodebuffer?o.transformTo("nodebuffer",b).toString("utf-8"):function(y){var S,v,x,A,E=y.length,w=new Array(2*E);for(S=v=0;S>10&1023,w[v++]=56320|1023&x)}return w.length!==v&&(w.subarray?w=w.subarray(0,v):w.length=v),o.applyFromCharCode(w)}(b=o.transformTo(a.uint8array?"uint8array":"array",b))},o.inherits(u,c),u.prototype.processChunk=function(b){var y=o.transformTo(a.uint8array?"uint8array":"array",b.data);if(this.leftOver&&this.leftOver.length){if(a.uint8array){var S=y;(y=new Uint8Array(S.length+this.leftOver.length)).set(this.leftOver,0),y.set(S,this.leftOver.length)}else y=this.leftOver.concat(y);this.leftOver=null}var v=function(A,E){var w;for((E=E||A.length)>A.length&&(E=A.length),w=E-1;0<=w&&(192&A[w])==128;)w--;return w<0||w===0?E:w+d[A[w]]>E?w:E}(y),x=y;v!==y.length&&(a.uint8array?(x=y.subarray(0,v),this.leftOver=y.subarray(v,y.length)):(x=y.slice(0,v),this.leftOver=y.slice(v,y.length))),this.push({data:r.utf8decode(x),meta:b.meta})},u.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=u,o.inherits(g,c),g.prototype.processChunk=function(b){this.push({data:r.utf8encode(b.data),meta:b.meta})},r.Utf8EncodeWorker=g},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,s,r){var o=t("./support"),a=t("./base64"),l=t("./nodejsUtils"),c=t("set-immediate-shim"),d=t("./external");function m(v){return v}function u(v,x){for(var A=0;A>8;this.dir=!!(16&this.externalFileAttributes),b==0&&(this.dosPermissions=63&this.externalFileAttributes),b==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(b){if(this.extraFields[1]){var y=o(this.extraFields[1].value);this.uncompressedSize===a.MAX_VALUE_32BITS&&(this.uncompressedSize=y.readInt(8)),this.compressedSize===a.MAX_VALUE_32BITS&&(this.compressedSize=y.readInt(8)),this.localHeaderOffset===a.MAX_VALUE_32BITS&&(this.localHeaderOffset=y.readInt(8)),this.diskNumberStart===a.MAX_VALUE_32BITS&&(this.diskNumberStart=y.readInt(4))}},readExtraFields:function(b){var y,S,v,x=b.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});b.index+4>>6:(b<65536?g[v++]=224|b>>>12:(g[v++]=240|b>>>18,g[v++]=128|b>>>12&63),g[v++]=128|b>>>6&63),g[v++]=128|63&b);return g},r.buf2binstring=function(u){return m(u,u.length)},r.binstring2buf=function(u){for(var g=new o.Buf8(u.length),b=0,y=g.length;b>10&1023,A[y++]=56320|1023&S)}return m(A,y)},r.utf8border=function(u,g){var b;for((g=g||u.length)>u.length&&(g=u.length),b=g-1;0<=b&&(192&u[b])==128;)b--;return b<0||b===0?g:b+c[u[b]]>g?b:g}},{"./common":41}],43:[function(t,s,r){s.exports=function(o,a,l,c){for(var d=65535&o|0,m=o>>>16&65535|0,u=0;l!==0;){for(l-=u=2e3>>1:a>>>1;l[c]=a}return l}();s.exports=function(a,l,c,d){var m=o,u=d+c;a^=-1;for(var g=d;g>>8^m[255&(a^l[g])];return-1^a}},{}],46:[function(t,s,r){var o,a=t("../utils/common"),l=t("./trees"),c=t("./adler32"),d=t("./crc32"),m=t("./messages"),u=0,g=4,b=0,y=-2,S=-1,v=4,x=2,A=8,E=9,w=286,_=30,C=19,P=2*w+1,I=15,R=3,N=258,G=N+R+1,B=42,k=113,T=1,V=2,J=3,W=4;function se(M,$){return M.msg=m[$],$}function ne(M){return(M<<1)-(4M.avail_out&&(z=M.avail_out),z!==0&&(a.arraySet(M.output,$.pending_buf,$.pending_out,z,M.next_out),M.next_out+=z,$.pending_out+=z,M.total_out+=z,M.avail_out-=z,$.pending-=z,$.pending===0&&($.pending_out=0))}function K(M,$){l._tr_flush_block(M,0<=M.block_start?M.block_start:-1,M.strstart-M.block_start,$),M.block_start=M.strstart,Z(M.strm)}function be(M,$){M.pending_buf[M.pending++]=$}function oe(M,$){M.pending_buf[M.pending++]=$>>>8&255,M.pending_buf[M.pending++]=255&$}function Y(M,$){var z,F,O=M.max_chain_length,H=M.strstart,ie=M.prev_length,ee=M.nice_match,te=M.strstart>M.w_size-G?M.strstart-(M.w_size-G):0,ce=M.window,he=M.w_mask,re=M.prev,ge=M.strstart+N,xe=ce[H+ie-1],ue=ce[H+ie];M.prev_length>=M.good_match&&(O>>=2),ee>M.lookahead&&(ee=M.lookahead);do if(ce[(z=$)+ie]===ue&&ce[z+ie-1]===xe&&ce[z]===ce[H]&&ce[++z]===ce[H+1]){H+=2,z++;do;while(ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&ce[++H]===ce[++z]&&Hte&&--O!=0);return ie<=M.lookahead?ie:M.lookahead}function ae(M){var $,z,F,O,H,ie,ee,te,ce,he,re=M.w_size;do{if(O=M.window_size-M.lookahead-M.strstart,M.strstart>=re+(re-G)){for(a.arraySet(M.window,M.window,re,re,0),M.match_start-=re,M.strstart-=re,M.block_start-=re,$=z=M.hash_size;F=M.head[--$],M.head[$]=re<=F?F-re:0,--z;);for($=z=re;F=M.prev[--$],M.prev[$]=re<=F?F-re:0,--z;);O+=re}if(M.strm.avail_in===0)break;if(ie=M.strm,ee=M.window,te=M.strstart+M.lookahead,ce=O,he=void 0,he=ie.avail_in,ce=R)for(H=M.strstart-M.insert,M.ins_h=M.window[H],M.ins_h=(M.ins_h<=R&&(M.ins_h=(M.ins_h<=R)if(F=l._tr_tally(M,M.strstart-M.match_start,M.match_length-R),M.lookahead-=M.match_length,M.match_length<=M.max_lazy_match&&M.lookahead>=R){for(M.match_length--;M.strstart++,M.ins_h=(M.ins_h<=R&&(M.ins_h=(M.ins_h<=R&&M.match_length<=M.prev_length){for(O=M.strstart+M.lookahead-R,F=l._tr_tally(M,M.strstart-1-M.prev_match,M.prev_length-R),M.lookahead-=M.prev_length-1,M.prev_length-=2;++M.strstart<=O&&(M.ins_h=(M.ins_h<M.pending_buf_size-5&&(z=M.pending_buf_size-5);;){if(M.lookahead<=1){if(ae(M),M.lookahead===0&&$===u)return T;if(M.lookahead===0)break}M.strstart+=M.lookahead,M.lookahead=0;var F=M.block_start+z;if((M.strstart===0||M.strstart>=F)&&(M.lookahead=M.strstart-F,M.strstart=F,K(M,!1),M.strm.avail_out===0)||M.strstart-M.block_start>=M.w_size-G&&(K(M,!1),M.strm.avail_out===0))return T}return M.insert=0,$===g?(K(M,!0),M.strm.avail_out===0?J:W):(M.strstart>M.block_start&&(K(M,!1),M.strm.avail_out),T)}),new me(4,4,8,4,de),new me(4,5,16,8,de),new me(4,6,32,32,de),new me(4,4,16,16,le),new me(8,16,32,32,le),new me(8,16,128,128,le),new me(8,32,128,256,le),new me(32,128,258,1024,le),new me(32,258,258,4096,le)],r.deflateInit=function(M,$){return Q(M,$,A,15,8,0)},r.deflateInit2=Q,r.deflateReset=U,r.deflateResetKeep=ye,r.deflateSetHeader=function(M,$){return M&&M.state?M.state.wrap!==2?y:(M.state.gzhead=$,b):y},r.deflate=function(M,$){var z,F,O,H;if(!M||!M.state||5<$||$<0)return M?se(M,y):y;if(F=M.state,!M.output||!M.input&&M.avail_in!==0||F.status===666&&$!==g)return se(M,M.avail_out===0?-5:y);if(F.strm=M,z=F.last_flush,F.last_flush=$,F.status===B)if(F.wrap===2)M.adler=0,be(F,31),be(F,139),be(F,8),F.gzhead?(be(F,(F.gzhead.text?1:0)+(F.gzhead.hcrc?2:0)+(F.gzhead.extra?4:0)+(F.gzhead.name?8:0)+(F.gzhead.comment?16:0)),be(F,255&F.gzhead.time),be(F,F.gzhead.time>>8&255),be(F,F.gzhead.time>>16&255),be(F,F.gzhead.time>>24&255),be(F,F.level===9?2:2<=F.strategy||F.level<2?4:0),be(F,255&F.gzhead.os),F.gzhead.extra&&F.gzhead.extra.length&&(be(F,255&F.gzhead.extra.length),be(F,F.gzhead.extra.length>>8&255)),F.gzhead.hcrc&&(M.adler=d(M.adler,F.pending_buf,F.pending,0)),F.gzindex=0,F.status=69):(be(F,0),be(F,0),be(F,0),be(F,0),be(F,0),be(F,F.level===9?2:2<=F.strategy||F.level<2?4:0),be(F,3),F.status=k);else{var ie=A+(F.w_bits-8<<4)<<8;ie|=(2<=F.strategy||F.level<2?0:F.level<6?1:F.level===6?2:3)<<6,F.strstart!==0&&(ie|=32),ie+=31-ie%31,F.status=k,oe(F,ie),F.strstart!==0&&(oe(F,M.adler>>>16),oe(F,65535&M.adler)),M.adler=1}if(F.status===69)if(F.gzhead.extra){for(O=F.pending;F.gzindex<(65535&F.gzhead.extra.length)&&(F.pending!==F.pending_buf_size||(F.gzhead.hcrc&&F.pending>O&&(M.adler=d(M.adler,F.pending_buf,F.pending-O,O)),Z(M),O=F.pending,F.pending!==F.pending_buf_size));)be(F,255&F.gzhead.extra[F.gzindex]),F.gzindex++;F.gzhead.hcrc&&F.pending>O&&(M.adler=d(M.adler,F.pending_buf,F.pending-O,O)),F.gzindex===F.gzhead.extra.length&&(F.gzindex=0,F.status=73)}else F.status=73;if(F.status===73)if(F.gzhead.name){O=F.pending;do{if(F.pending===F.pending_buf_size&&(F.gzhead.hcrc&&F.pending>O&&(M.adler=d(M.adler,F.pending_buf,F.pending-O,O)),Z(M),O=F.pending,F.pending===F.pending_buf_size)){H=1;break}H=F.gzindexO&&(M.adler=d(M.adler,F.pending_buf,F.pending-O,O)),H===0&&(F.gzindex=0,F.status=91)}else F.status=91;if(F.status===91)if(F.gzhead.comment){O=F.pending;do{if(F.pending===F.pending_buf_size&&(F.gzhead.hcrc&&F.pending>O&&(M.adler=d(M.adler,F.pending_buf,F.pending-O,O)),Z(M),O=F.pending,F.pending===F.pending_buf_size)){H=1;break}H=F.gzindexO&&(M.adler=d(M.adler,F.pending_buf,F.pending-O,O)),H===0&&(F.status=103)}else F.status=103;if(F.status===103&&(F.gzhead.hcrc?(F.pending+2>F.pending_buf_size&&Z(M),F.pending+2<=F.pending_buf_size&&(be(F,255&M.adler),be(F,M.adler>>8&255),M.adler=0,F.status=k)):F.status=k),F.pending!==0){if(Z(M),M.avail_out===0)return F.last_flush=-1,b}else if(M.avail_in===0&&ne($)<=ne(z)&&$!==g)return se(M,-5);if(F.status===666&&M.avail_in!==0)return se(M,-5);if(M.avail_in!==0||F.lookahead!==0||$!==u&&F.status!==666){var ee=F.strategy===2?function(te,ce){for(var he;;){if(te.lookahead===0&&(ae(te),te.lookahead===0)){if(ce===u)return T;break}if(te.match_length=0,he=l._tr_tally(te,0,te.window[te.strstart]),te.lookahead--,te.strstart++,he&&(K(te,!1),te.strm.avail_out===0))return T}return te.insert=0,ce===g?(K(te,!0),te.strm.avail_out===0?J:W):te.last_lit&&(K(te,!1),te.strm.avail_out===0)?T:V}(F,$):F.strategy===3?function(te,ce){for(var he,re,ge,xe,ue=te.window;;){if(te.lookahead<=N){if(ae(te),te.lookahead<=N&&ce===u)return T;if(te.lookahead===0)break}if(te.match_length=0,te.lookahead>=R&&0te.lookahead&&(te.match_length=te.lookahead)}if(te.match_length>=R?(he=l._tr_tally(te,1,te.match_length-R),te.lookahead-=te.match_length,te.strstart+=te.match_length,te.match_length=0):(he=l._tr_tally(te,0,te.window[te.strstart]),te.lookahead--,te.strstart++),he&&(K(te,!1),te.strm.avail_out===0))return T}return te.insert=0,ce===g?(K(te,!0),te.strm.avail_out===0?J:W):te.last_lit&&(K(te,!1),te.strm.avail_out===0)?T:V}(F,$):o[F.level].func(F,$);if(ee!==J&&ee!==W||(F.status=666),ee===T||ee===J)return M.avail_out===0&&(F.last_flush=-1),b;if(ee===V&&($===1?l._tr_align(F):$!==5&&(l._tr_stored_block(F,0,0,!1),$===3&&(fe(F.head),F.lookahead===0&&(F.strstart=0,F.block_start=0,F.insert=0))),Z(M),M.avail_out===0))return F.last_flush=-1,b}return $!==g?b:F.wrap<=0?1:(F.wrap===2?(be(F,255&M.adler),be(F,M.adler>>8&255),be(F,M.adler>>16&255),be(F,M.adler>>24&255),be(F,255&M.total_in),be(F,M.total_in>>8&255),be(F,M.total_in>>16&255),be(F,M.total_in>>24&255)):(oe(F,M.adler>>>16),oe(F,65535&M.adler)),Z(M),0=z.w_size&&(H===0&&(fe(z.head),z.strstart=0,z.block_start=0,z.insert=0),ce=new a.Buf8(z.w_size),a.arraySet(ce,$,he-z.w_size,z.w_size,0),$=ce,he=z.w_size),ie=M.avail_in,ee=M.next_in,te=M.input,M.avail_in=he,M.next_in=0,M.input=$,ae(z);z.lookahead>=R;){for(F=z.strstart,O=z.lookahead-(R-1);z.ins_h=(z.ins_h<>>=R=I>>>24,E-=R,(R=I>>>16&255)===0)V[m++]=65535&I;else{if(!(16&R)){if(!(64&R)){I=w[(65535&I)+(A&(1<>>=R,E-=R),E<15&&(A+=T[c++]<>>=R=I>>>24,E-=R,!(16&(R=I>>>16&255))){if(!(64&R)){I=_[(65535&I)+(A&(1<>>=R,E-=R,(R=m-u)>3,A&=(1<<(E-=N<<3))-1,o.next_in=c,o.next_out=m,o.avail_in=c>>24&255)+(B>>>8&65280)+((65280&B)<<8)+((255&B)<<24)}function A(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new o.Buf16(320),this.work=new o.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function E(B){var k;return B&&B.state?(k=B.state,B.total_in=B.total_out=k.total=0,B.msg="",k.wrap&&(B.adler=1&k.wrap),k.mode=y,k.last=0,k.havedict=0,k.dmax=32768,k.head=null,k.hold=0,k.bits=0,k.lencode=k.lendyn=new o.Buf32(S),k.distcode=k.distdyn=new o.Buf32(v),k.sane=1,k.back=-1,g):b}function w(B){var k;return B&&B.state?((k=B.state).wsize=0,k.whave=0,k.wnext=0,E(B)):b}function _(B,k){var T,V;return B&&B.state?(V=B.state,k<0?(T=0,k=-k):(T=1+(k>>4),k<48&&(k&=15)),k&&(k<8||15=W.wsize?(o.arraySet(W.window,k,T-W.wsize,W.wsize,0),W.wnext=0,W.whave=W.wsize):(V<(J=W.wsize-W.wnext)&&(J=V),o.arraySet(W.window,k,T-V,J,W.wnext),(V-=J)?(o.arraySet(W.window,k,T-V,V,0),W.wnext=V,W.whave=W.wsize):(W.wnext+=J,W.wnext===W.wsize&&(W.wnext=0),W.whave>>8&255,T.check=l(T.check,H,2,0),K=Z=0,T.mode=2;break}if(T.flags=0,T.head&&(T.head.done=!1),!(1&T.wrap)||(((255&Z)<<8)+(Z>>8))%31){B.msg="incorrect header check",T.mode=30;break}if((15&Z)!=8){B.msg="unknown compression method",T.mode=30;break}if(K-=4,M=8+(15&(Z>>>=4)),T.wbits===0)T.wbits=M;else if(M>T.wbits){B.msg="invalid window size",T.mode=30;break}T.dmax=1<>8&1),512&T.flags&&(H[0]=255&Z,H[1]=Z>>>8&255,T.check=l(T.check,H,2,0)),K=Z=0,T.mode=3;case 3:for(;K<32;){if(ne===0)break e;ne--,Z+=V[W++]<>>8&255,H[2]=Z>>>16&255,H[3]=Z>>>24&255,T.check=l(T.check,H,4,0)),K=Z=0,T.mode=4;case 4:for(;K<16;){if(ne===0)break e;ne--,Z+=V[W++]<>8),512&T.flags&&(H[0]=255&Z,H[1]=Z>>>8&255,T.check=l(T.check,H,2,0)),K=Z=0,T.mode=5;case 5:if(1024&T.flags){for(;K<16;){if(ne===0)break e;ne--,Z+=V[W++]<>>8&255,T.check=l(T.check,H,2,0)),K=Z=0}else T.head&&(T.head.extra=null);T.mode=6;case 6:if(1024&T.flags&&(ne<(Y=T.length)&&(Y=ne),Y&&(T.head&&(M=T.head.extra_len-T.length,T.head.extra||(T.head.extra=new Array(T.head.extra_len)),o.arraySet(T.head.extra,V,W,Y,M)),512&T.flags&&(T.check=l(T.check,V,Y,W)),ne-=Y,W+=Y,T.length-=Y),T.length))break e;T.length=0,T.mode=7;case 7:if(2048&T.flags){if(ne===0)break e;for(Y=0;M=V[W+Y++],T.head&&M&&T.length<65536&&(T.head.name+=String.fromCharCode(M)),M&&Y>9&1,T.head.done=!0),B.adler=T.check=0,T.mode=12;break;case 10:for(;K<32;){if(ne===0)break e;ne--,Z+=V[W++]<>>=7&K,K-=7&K,T.mode=27;break}for(;K<3;){if(ne===0)break e;ne--,Z+=V[W++]<>>=1)){case 0:T.mode=14;break;case 1:if(N(T),T.mode=20,k!==6)break;Z>>>=2,K-=2;break e;case 2:T.mode=17;break;case 3:B.msg="invalid block type",T.mode=30}Z>>>=2,K-=2;break;case 14:for(Z>>>=7&K,K-=7&K;K<32;){if(ne===0)break e;ne--,Z+=V[W++]<>>16^65535)){B.msg="invalid stored block lengths",T.mode=30;break}if(T.length=65535&Z,K=Z=0,T.mode=15,k===6)break e;case 15:T.mode=16;case 16:if(Y=T.length){if(ne>>=5,K-=5,T.ndist=1+(31&Z),Z>>>=5,K-=5,T.ncode=4+(15&Z),Z>>>=4,K-=4,286>>=3,K-=3}for(;T.have<19;)T.lens[ie[T.have++]]=0;if(T.lencode=T.lendyn,T.lenbits=7,z={bits:T.lenbits},$=d(0,T.lens,0,19,T.lencode,0,T.work,z),T.lenbits=z.bits,$){B.msg="invalid code lengths set",T.mode=30;break}T.have=0,T.mode=19;case 19:for(;T.have>>16&255,ve=65535&O,!((le=O>>>24)<=K);){if(ne===0)break e;ne--,Z+=V[W++]<>>=le,K-=le,T.lens[T.have++]=ve;else{if(ve===16){for(F=le+2;K>>=le,K-=le,T.have===0){B.msg="invalid bit length repeat",T.mode=30;break}M=T.lens[T.have-1],Y=3+(3&Z),Z>>>=2,K-=2}else if(ve===17){for(F=le+3;K>>=le)),Z>>>=3,K-=3}else{for(F=le+7;K>>=le)),Z>>>=7,K-=7}if(T.have+Y>T.nlen+T.ndist){B.msg="invalid bit length repeat",T.mode=30;break}for(;Y--;)T.lens[T.have++]=M}}if(T.mode===30)break;if(T.lens[256]===0){B.msg="invalid code -- missing end-of-block",T.mode=30;break}if(T.lenbits=9,z={bits:T.lenbits},$=d(m,T.lens,0,T.nlen,T.lencode,0,T.work,z),T.lenbits=z.bits,$){B.msg="invalid literal/lengths set",T.mode=30;break}if(T.distbits=6,T.distcode=T.distdyn,z={bits:T.distbits},$=d(u,T.lens,T.nlen,T.ndist,T.distcode,0,T.work,z),T.distbits=z.bits,$){B.msg="invalid distances set",T.mode=30;break}if(T.mode=20,k===6)break e;case 20:T.mode=21;case 21:if(6<=ne&&258<=fe){B.next_out=se,B.avail_out=fe,B.next_in=W,B.avail_in=ne,T.hold=Z,T.bits=K,c(B,oe),se=B.next_out,J=B.output,fe=B.avail_out,W=B.next_in,V=B.input,ne=B.avail_in,Z=T.hold,K=T.bits,T.mode===12&&(T.back=-1);break}for(T.back=0;me=(O=T.lencode[Z&(1<>>16&255,ve=65535&O,!((le=O>>>24)<=K);){if(ne===0)break e;ne--,Z+=V[W++]<>ye)])>>>16&255,ve=65535&O,!(ye+(le=O>>>24)<=K);){if(ne===0)break e;ne--,Z+=V[W++]<>>=ye,K-=ye,T.back+=ye}if(Z>>>=le,K-=le,T.back+=le,T.length=ve,me===0){T.mode=26;break}if(32&me){T.back=-1,T.mode=12;break}if(64&me){B.msg="invalid literal/length code",T.mode=30;break}T.extra=15&me,T.mode=22;case 22:if(T.extra){for(F=T.extra;K>>=T.extra,K-=T.extra,T.back+=T.extra}T.was=T.length,T.mode=23;case 23:for(;me=(O=T.distcode[Z&(1<>>16&255,ve=65535&O,!((le=O>>>24)<=K);){if(ne===0)break e;ne--,Z+=V[W++]<>ye)])>>>16&255,ve=65535&O,!(ye+(le=O>>>24)<=K);){if(ne===0)break e;ne--,Z+=V[W++]<>>=ye,K-=ye,T.back+=ye}if(Z>>>=le,K-=le,T.back+=le,64&me){B.msg="invalid distance code",T.mode=30;break}T.offset=ve,T.extra=15&me,T.mode=24;case 24:if(T.extra){for(F=T.extra;K>>=T.extra,K-=T.extra,T.back+=T.extra}if(T.offset>T.dmax){B.msg="invalid distance too far back",T.mode=30;break}T.mode=25;case 25:if(fe===0)break e;if(Y=oe-fe,T.offset>Y){if((Y=T.offset-Y)>T.whave&&T.sane){B.msg="invalid distance too far back",T.mode=30;break}ae=Y>T.wnext?(Y-=T.wnext,T.wsize-Y):T.wnext-Y,Y>T.length&&(Y=T.length),de=T.window}else de=J,ae=se-T.offset,Y=T.length;for(feP?(R=ae[de+v[k]],K[be+v[k]]):(R=96,0),A=1<>se)+(E-=A)]=I<<24|R<<16|N|0,E!==0;);for(A=1<>=1;if(A!==0?(Z&=A-1,Z+=A):Z=0,k++,--oe[B]==0){if(B===V)break;B=u[g+v[k]]}if(J>>7)]}function be(O,H){O.pending_buf[O.pending++]=255&H,O.pending_buf[O.pending++]=H>>>8&255}function oe(O,H,ie){O.bi_valid>x-ie?(O.bi_buf|=H<>x-O.bi_valid,O.bi_valid+=ie-x):(O.bi_buf|=H<>>=1,ie<<=1,0<--H;);return ie>>>1}function de(O,H,ie){var ee,te,ce=new Array(v+1),he=0;for(ee=1;ee<=v;ee++)ce[ee]=he=he+ie[ee-1]<<1;for(te=0;te<=H;te++){var re=O[2*te+1];re!==0&&(O[2*te]=ae(ce[re]++,re))}}function le(O){var H;for(H=0;H>1;1<=ie;ie--)ye(O,ce,ie);for(te=ge;ie=O.heap[1],O.heap[1]=O.heap[O.heap_len--],ye(O,ce,1),ee=O.heap[1],O.heap[--O.heap_max]=ie,O.heap[--O.heap_max]=ee,ce[2*te]=ce[2*ie]+ce[2*ee],O.depth[te]=(O.depth[ie]>=O.depth[ee]?O.depth[ie]:O.depth[ee])+1,ce[2*ie+1]=ce[2*ee+1]=te,O.heap[1]=te++,ye(O,ce,1),2<=O.heap_len;);O.heap[--O.heap_max]=O.heap[1],function(ue,Ae){var Ee,_e,Te,Pe,Ce,Ie,Re=Ae.dyn_tree,qe=Ae.max_code,bt=Ae.stat_desc.static_tree,Ue=Ae.stat_desc.has_stree,ht=Ae.stat_desc.extra_bits,Je=Ae.stat_desc.extra_base,je=Ae.stat_desc.max_length,ze=0;for(Pe=0;Pe<=v;Pe++)ue.bl_count[Pe]=0;for(Re[2*ue.heap[ue.heap_max]+1]=0,Ee=ue.heap_max+1;Ee>=7;te>>=1)if(1&xe&&re.dyn_ltree[2*ge]!==0)return a;if(re.dyn_ltree[18]!==0||re.dyn_ltree[20]!==0||re.dyn_ltree[26]!==0)return l;for(ge=32;ge>>3,(ce=O.static_len+3+7>>>3)<=te&&(te=ce)):te=ce=ie+5,ie+4<=te&&H!==-1?F(O,H,ie,ee):O.strategy===4||ce===te?(oe(O,2+(ee?1:0),3),U(O,G,B)):(oe(O,4+(ee?1:0),3),function(re,ge,xe,ue){var Ae;for(oe(re,ge-257,5),oe(re,xe-1,5),oe(re,ue-4,4),Ae=0;Ae>>8&255,O.pending_buf[O.d_buf+2*O.last_lit+1]=255&H,O.pending_buf[O.l_buf+O.last_lit]=255&ie,O.last_lit++,H===0?O.dyn_ltree[2*ie]++:(O.matches++,H--,O.dyn_ltree[2*(T[ie]+u+1)]++,O.dyn_dtree[2*K(H)]++),O.last_lit===O.lit_bufsize-1},r._tr_align=function(O){oe(O,2,3),Y(O,E,G),function(H){H.bi_valid===16?(be(H,H.bi_buf),H.bi_buf=0,H.bi_valid=0):8<=H.bi_valid&&(H.pending_buf[H.pending++]=255&H.bi_buf,H.bi_buf>>=8,H.bi_valid-=8)}(O)}},{"../utils/common":41}],53:[function(t,s,r){s.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,s,r){s.exports=typeof setImmediate=="function"?setImmediate:function(){var o=[].slice.apply(arguments);o.splice(1,0,0),setTimeout.apply(null,o)}},{}]},{},[10])(10)})})(jszip_min);class MXLHelper{static MXLtoIXmlElement(e){const t=new jszip_minExports;return t.loadAsync(e).then(o=>t.file("META-INF/container.xml").async("text"),o=>{throw o}).then(o=>{const c=new DOMParser().parseFromString(o,"text/xml").getElementsByTagName("rootfile")[0].getAttribute("full-path");return t.file(c).async("text")},o=>{throw o}).then(o=>{const l=new DOMParser().parseFromString(o,"text/xml"),c=new IXmlElement(l.documentElement);return Promise.resolve(c)},o=>{throw o}).then(o=>o,o=>{throw new Error("extractSheetFromMxl: "+o.message)})}static MXLtoXMLstring(e){const t=new jszip_minExports;return t.loadAsync(e).then(s=>t.file("META-INF/container.xml").async("text"),s=>{throw loglevelExports.error(s),s}).then(s=>{const a=new DOMParser().parseFromString(s,"text/xml").getElementsByTagName("rootfile")[0].getAttribute("full-path");return t.file(a).async("text")},s=>{throw s})}}class PlaybackNoteGenerator{calculate(e){const t=new MusicPartManagerIterator(e);for(;!t.EndReached;){const s=t.CurrentEnrolledTimestamp,r=t.CurrentAudibleVoiceEntries();for(const o of r)this.handleVoiceEntry(e,o,s);t.moveToNext()}}handleVoiceEntry(e,t,s){if(t.IsGrace)return;const r=t.ParentVoice;let o;e.PlaybackDataDict.containsKey(r)?o=e.PlaybackDataDict.getValue(r):(o=[],e.PlaybackDataDict.setValue(r,o));for(const a of t.PlaybackEntries)if(a.HasNotes){for(const c of a.Notes)c.setLength();const l=Fraction$1.plus(s,a.TimestampShift);PlaybackNoteGenerator.addEntrySorted(o,a,l)}}static addEntrySorted(e,t,s){if(e.length===0)e.push({enrolledTimestamp:s,playbackEntry:t});else for(let r=e.length-1;r>=0;r--){const o=e[r];if(s.RealValue>o.enrolledTimestamp.RealValue)if(r===e.length-1){e.push({enrolledTimestamp:s,playbackEntry:t});break}else{e.splice(r+1,0,{enrolledTimestamp:s,playbackEntry:t});break}}}}class ScreenViewingRegion{constructor(e,t,s,r){this.psi=new BoundingBox$1(void 0),this.displaySizeInPixel=e,this.RelativeDisplaySize=t,this.RelativeDisplayPosition=s,this.WidthInUnits=r}static createWithRelativeDefaults(e,t){return new ScreenViewingRegion(e,new SizeF2D(1,1),new PointF2D(0,0),t)}static createWithDefaults(){return new ScreenViewingRegion(new SizeF2D(1,1),new SizeF2D(1,1),new PointF2D(0,0),1)}get UpperLeftPositionInUnits(){return this.psi.AbsolutePosition}set UpperLeftPositionInUnits(e){this.psi.AbsolutePosition=e}get DisplaySizeInPixel(){return this.displaySizeInPixel}set DisplaySizeInPixel(e){this.displaySizeInPixel=e,this.regionSizeInPixel=new SizeF2D(this.displaySizeInPixel.width*this.relativeRegionSize.width,this.displaySizeInPixel.height*this.relativeRegionSize.height),this.recalculateDependentVariables()}get RelativeDisplaySize(){return this.relativeRegionSize}set RelativeDisplaySize(e){this.relativeRegionSize=e,this.regionSizeInPixel=new SizeF2D(this.displaySizeInPixel.width*this.relativeRegionSize.width,this.displaySizeInPixel.height*this.relativeRegionSize.height),this.recalculateDependentVariables()}get RegionSizeInPixel(){return this.regionSizeInPixel}get WidthInUnits(){return this.psi.BorderRight}set WidthInUnits(e){this.psi.BorderRight=e,this.recalculateDependentVariables()}get ViewRegionInUnits(){return new SizeF2D(this.psi.BorderRight,this.psi.BorderBottom)}isVisible(e,t){const s=this.psi.collisionDetection(e);return this.psi.liesInsideBorders(e),s}isInsideDisplayArea(e,t){return this.RelativeDisplayPosition.x<=e&&e<=this.RelativeDisplayPosition.x+this.RelativeDisplaySize.width&&this.RelativeDisplayPosition.y<=t&&t<=this.RelativeDisplayPosition.y+this.RelativeDisplaySize.height}transformToUnitCoordinates(e){return new PointF2D(this.UpperLeftPositionInUnits.x+this.ViewRegionInUnits.width*((e.x-this.RelativeDisplayPosition.x)/this.RelativeDisplaySize.width),this.UpperLeftPositionInUnits.y+this.ViewRegionInUnits.height*((e.y-this.RelativeDisplayPosition.y)/this.RelativeDisplaySize.height))}transformLengthXToUnitCoordinates(e){return e/this.horizontalUnitToPixelRatio}transformLengthYToUnitCoordinates(e){return e/this.verticalUnitToPixelRatio}recalculateDependentVariables(){const e=this.regionSizeInPixel.width/this.regionSizeInPixel.height;this.psi.BorderBottom=this.psi.BorderRight/e,this.horizontalUnitToPixelRatio=this.regionSizeInPixel.width/this.ViewRegionInUnits.width,this.verticalUnitToPixelRatio=this.regionSizeInPixel.height/this.ViewRegionInUnits.height}}class AbstractZoomView{constructor(e){this.aspectRatio=1,this.zoomViews=[],this.mouseZoomMode=!1,this.autoScrollY=!0,this.displayInteractionManager=e,this.displayInteractionManager.addListener(this),this.offsetXMin=Number.MIN_VALUE,this.offsetYMin=Number.MIN_VALUE,this.rangeXMin=1,this.rangeYMin=1,this.offsetXMax=Number.MAX_VALUE,this.offsetYMax=Number.MAX_VALUE,this.rangeXMax=1e9,this.rangeYMax=1e9,this.XScrollingEnabled=!1,this.YScrollingEnabled=!0}positionTouched(e,t){if(!this.convertToUnitsReady())return;const s=this.getPositionInUnits(e,t);this.unitPosTouched(s,e,t)}get TouchActive(){return this.displayInteractionManager.TouchActive}get TouchMoving(){return this.displayInteractionManager.TouchMoving}positionDoubleTouched(e,t){if(!this.convertToUnitsReady())return;const s=this.getPositionInUnits(e,t);this.unitPosDoubleTouched(s,e,t)}get UsesManuallyControlledZoomMode(){return this.usesManuallyControlledZoomMode}set UsesManuallyControlledZoomMode(e){this.usesManuallyControlledZoomMode=e}mouseDown(e,t,s=!1){if(!this.convertToUnitsReady())return;this.selectScrollControllerY(!1),this.lastRangeX=Math.max(1,this.RangeX),this.lastRangeY=Math.max(1,this.RangeY),this.lastOffsetX=this.OffsetX,this.lastOffsetY=this.OffsetY;const r=this.getPositionInUnits(e,t);this.unitPosTouchDown(r,e,t),this.usesManuallyControlledZoomMode||(s?this.mouseZoomMode=!0:this.mouseZoomMode=!1)}mouseUp(e,t){const s=this.getPositionInUnits(e,t);this.unitPosTouchUp(s,e,t)}mouseMove(e,t,s,r){this.mouseZoomMode?(Math.abs(s-0)>1e-8&&(this.RangeX=Math.abs(this.lastRangeX/(1+s))),!this.lockRanges&&Math.abs(r-0)>1e-8&&(this.RangeY=Math.abs(this.lastRangeY/(1-r)))):(Math.abs(s-0)>1e-8&&(this.OffsetX=this.lastOffsetX-s*this.RangeX),Math.abs(r-0)>1e-8&&(this.OffsetY=this.lastOffsetY-r*this.RangeY));const o=this.getPositionInUnits(e,t);this.unitPosMove(o,e,t)}zoom(e){this.RangeX=Math.abs(this.lastRangeX/e)}addZoomView(e){this.zoomViews.push(e)}get OffsetX(){return this.offsetX}set OffsetX(e){this.offsetX=Math.min(this.offsetXMax,Math.max(this.offsetXMin,e));for(const t of this.zoomViews)t.viewportXChanged(this.offsetX,this.RangeX)}get OffsetY(){return this.offsetY}set OffsetY(e){this.offsetY=e,this.offsetY>this.offsetYMax?this.offsetY=this.offsetYMax:this.offsetY(i[i.SingleTouch=0]="SingleTouch",i[i.DoubleTouch=1]="DoubleTouch",i[i.TouchUp=2]="TouchUp",i[i.TouchDown=3]="TouchDown",i[i.Move=4]="Move",i))(InteractionType||{});class VoiceEntryInteractionListener{constructor(e){this.renderingManager=e}userDisplayInteraction(e,t,s){var r,o;switch(s){case InteractionType.TouchDown:case InteractionType.SingleTouch:case InteractionType.DoubleTouch:{const a=this.renderingManager.GraphicalMusicSheet.GetNearestVoiceEntry(t);a&&a.parentStaffEntry.parentVerticalContainer!==void 0&&((r=a.notes[0])==null?void 0:r.sourceNote.Pitch)!==void 0&&((o=this.renderingManager.PlaybackManager)==null||o.playVoiceEntry(a.parentVoiceEntry));break}}}}class SheetRenderingManager extends AbstractZoomView{constructor(e,t){super(e),this.mainViewingRegion=ScreenViewingRegion.createWithDefaults(),this.tryAgainToRenderCount=0,this.yOffsetMouseDown=Number.MIN_VALUE,this.unlockCursorDistancePixel=50,this.relativeTopPosition=.06,this.internalPreviewImageScale=3,this.listeners=[],this.LockDisplayToCursor=!0,this.ZoomActive=!1,this.rules=t,this.addZoomView(this),this.lockRanges=!0,this.TopBarHeightInPixel=70,this.BottomBarHeightInPixel=0,this.rules.UseDefaultVoiceInteractionListener&&this.listeners.push(new VoiceEntryInteractionListener(this))}addListener(e){this.listeners.push(e)}get Listeners(){return this.listeners}convertToUnitsReady(){return this.graphicalMusicSheet!==void 0}unitPosTouched(e,t,s){if(!this.SingleTouchDisabled){const r=new PointF2D(t,s);this.handleUserDisplayInteraction(r,e,InteractionType.SingleTouch)}}unitPosDoubleTouched(e,t,s){if(!this.DoubleTouchDisabled){const r=new PointF2D(t,s);this.handleUserDisplayInteraction(r,e,InteractionType.DoubleTouch)}}unitPosTouchDown(e,t,s){const r=new PointF2D(t,s);this.handleUserDisplayInteraction(r,e,InteractionType.TouchDown),this.yOffsetMouseDown=e.y}unitPosTouchUp(e,t,s){const r=new PointF2D(t,s);this.handleUserDisplayInteraction(r,e,InteractionType.TouchUp),this.displayInteractionManager.WasZoomGestureActive===!1&&this.unlockFromCursorIfNecessary(e),this.yOffsetMouseDown=Number.MIN_VALUE}unitPosMove(e,t,s){const r=new PointF2D(t,s);this.handleUserDisplayInteraction(r,e,InteractionType.Move),this.unlockFromCursorIfNecessary(e)}get MainViewingRegion(){return this.mainViewingRegion}setMusicSheet(e){this.graphicalMusicSheet=e,this.adaptDisplayLimitsToSheet(),this.setYOffset(0,!0)}viewportXChanged(e,t){this.graphicalMusicSheet!==void 0&&this.horizontalViewportChanged(e,t)}viewportYChanged(e,t){this.graphicalMusicSheet!==void 0&&(this.yOffsetMouseDown<=Number.MIN_VALUE+.5&&(this.yOffsetMouseDown=e),this.verticalViewportChanged(e,t))}displaySizeChanged(e,t){super.viewSizeChanged(e,t),!(Math.abs(e-0)<1e-7||Math.abs(t-0)<1e-7)&&(this.graphicalMusicSheet!==void 0&&this.graphicalMusicSheet.EnforceRedrawOfMusicSystems(),this.mainViewingRegion.DisplaySizeInPixel=new SizeF2D(e,t),this.adaptDisplayLimitsToSheet())}calcDisplayYPosition(e){return e.PositionAndShape.AbsolutePosition.y+e.PositionAndShape.BorderMarginTop-this.topBarHeightInUnits()-this.relativeTopPosition*this.heightWithoutTopBottomBarsInUnits()}yPositionForLastSystem(e){return e.PositionAndShape.AbsolutePosition.y+e.PositionAndShape.BorderMarginBottom-this.topBarHeightInUnits()-(1-this.relativeTopPosition)*this.heightWithoutTopBottomBarsInUnits()}scorePositionChanged(e,t,s,r,o,a){const l=this.calcDisplayYPosition(r);this.setYPosition(l,a)}setXPosition(e,t){this.LockDisplayToCursor&&this.setXOffset(e,t)}setYPosition(e,t){this.LockDisplayToCursor&&this.setYOffset(e,t)}get DrawingParameters(){return this.musicSheetDrawer.drawingParameters}topBarHeightInUnits(){return this.mainViewingRegion.transformLengthYToUnitCoordinates(this.TopBarHeightInPixel)}bottomBarHeightInUnits(){return this.mainViewingRegion.transformLengthYToUnitCoordinates(this.BottomBarHeightInPixel)}heightWithoutTopBottomBarsInUnits(){return this.mainViewingRegion.ViewRegionInUnits.height-this.topBarHeightInUnits()-this.bottomBarHeightInUnits()}activePositionToBottomBarHeight(){return(this.mainViewingRegion.ViewRegionInUnits.height-this.topBarHeightInUnits()-this.bottomBarHeightInUnits())*(1-2*this.relativeTopPosition)}getClickPosition(e,t){return this.mainViewingRegion.transformToUnitCoordinates(new PointF2D(e,t))}graphicalObjectIsVisible(e){return this.mainViewingRegion.isVisible(e,!1)}adaptDisplayLimitsToSheet(){if(this.graphicalMusicSheet===void 0||this.graphicalMusicSheet.MusicPages.length===0||this.graphicalMusicSheet.MusicPages[0].MusicSystems.length===0)return;this.offsetXMin=0,this.rangeXMin=this.graphicalMusicSheet.MinAllowedSystemWidth,this.rangeXMax=300,this.offsetYMin=-.3*this.RangeY;const e=this.graphicalMusicSheet.MusicPages.last().PositionAndShape;this.offsetYMax=Math.max(0,e.BorderMarginBottom-.7*this.RangeY),this.OffsetY>this.offsetYMax&&this.setYOffset(this.offsetYMax,!0)}horizontalViewportChanged(e,t){this.mainViewingRegion.WidthInUnits!==t&&(this.mainViewingRegion.WidthInUnits=t)}verticalViewportChanged(e,t){this.mainViewingRegion.UpperLeftPositionInUnits=new PointF2D(this.mainViewingRegion.UpperLeftPositionInUnits.x,e)}unlockFromCursorIfNecessary(e){if(this.LockDisplayToCursor===!1||this.ZoomActive||this.displayInteractionManager.ZoomGestureActive||this.displayInteractionManager.WasZoomGestureActive)return;Math.abs((e.y-this.yOffsetMouseDown)*this.mainViewingRegion.RegionSizeInPixel.height/this.mainViewingRegion.ViewRegionInUnits.height)>this.unlockCursorDistancePixel&&(this.LockDisplayToCursor=!1)}getPositionInUnits(e,t){return this.mainViewingRegion.transformToUnitCoordinates(new PointF2D(e,t))}handleUserDisplayInteraction(e,t,s){switch(s){case InteractionType.TouchDown:case InteractionType.SingleTouch:case InteractionType.DoubleTouch:{const r=this.graphicalMusicSheet.GetNearestVoiceEntry(t);if(r){const o=new CustomEvent("note-click",{detail:{...r,setAvtivePlay:()=>{var a,l;if(r.parentStaffEntry.parentVerticalContainer!==void 0){const c=r.parentStaffEntry.parentVerticalContainer.AbsoluteTimestamp;this.setStartPosition(c),((a=r.notes[0])==null?void 0:a.sourceNote.Pitch)!==void 0&&(console.log("playback clicked note",r.parentVoiceEntry),(l=this.PlaybackManager)==null||l.playVoiceEntry(r.parentVoiceEntry))}}}});window.dispatchEvent(o)}}case InteractionType.TouchUp:case InteractionType.TouchDown:case InteractionType.Move:for(const r of this.listeners)r.userDisplayInteraction(e,t,s);break;default:throw new Error("type")}}setStartPosition(e){var t;this.graphicalMusicSheet!==void 0&&(this.graphicalMusicSheet.ParentMusicSheet.SelectionStart=e,(t=this.PlaybackManager)==null||t.reset())}get GraphicalMusicSheet(){return this.graphicalMusicSheet}}class WebSheetRenderingManager extends SheetRenderingManager{mouseMove(e,t,s,r){const o=this.getPositionInUnits(e,t);this.unitPosMove(o,e,t)}}class AbstractDisplayInteractionManager{constructor(){this.listeners=[],this.zoomGestureActive=!1,this.touchCount=0,this.touchActive=!1,this.touchMoving=!1,this.displayWidth=1,this.displayHeight=1,this.displayDpi=96,this.maxNumerOfFingers=2,this.movementThreshInch=.075,this.interactionWasZoomGesture=!1}addListener(e){this.listeners.push(e)}get ZoomGestureActive(){return this.zoomGestureActive}get WasZoomGestureActive(){return this.interactionWasZoomGesture}displaySizeChanged(e,t){this.displayWidth=e,this.displayHeight=t;for(const s of this.listeners)s.displaySizeChanged(this.displayWidth,this.displayHeight)}Dispose(){this.dispose()}Initialize(){this.initialize()}get DisplayDpi(){return this.displayDpi}get TouchActive(){return this.touchActive}get TouchMoving(){return this.touchMoving}touchDown(e,t,s){this.interactionWasZoomGesture=!1;const r=e/this.displayWidth,o=t/this.displayHeight;this.lastRelPosX=r,this.lastRelPosY=o,this.lastPixelX=e,this.lastPixelY=t,this.touchActive=!0,this.touchMoving=!1,this.touchCount=Math.min(this.touchCount+1,this.maxNumerOfFingers);for(const a of this.listeners)a.mouseDown(r,o,!s)}move(e,t){if(this.touchActive&&!this.zoomGestureActive){const s=e/this.displayWidth,r=t/this.displayHeight,o=s-this.lastRelPosX,a=r-this.lastRelPosY;this.touchMoving=!0;for(const l of this.listeners)l.mouseMove(s,r,o,a)}}zoomGestureStarted(){this.zoomGestureActive=!0}zoomGestureCompleted(){this.zoomGestureActive=!1,this.interactionWasZoomGesture=!0}zoomGestureMove(e){this.zoomGestureActive&&this.listeners.forEach(function(t){t.zoom(e)})}touchUp(e,t){this.touchActive=!1,this.touchMoving=!1,this.touchCount=Math.max(0,this.touchCount-1);const s=e/this.displayWidth,r=t/this.displayHeight;for(const o of this.listeners)o.mouseUp(s,r)}click(e,t){if(!this.mouseDidMove(this.lastPixelX,e,this.lastPixelY,t)&&!this.ZoomGestureActive){const s=e/this.displayWidth,r=t/this.displayHeight;for(const o of this.listeners)o.positionTouched(s,r)}}doubleClick(e,t){if(!this.mouseDidMove(this.lastPixelX,e,this.lastPixelY,t)&&!this.ZoomGestureActive){const s=e/this.displayWidth,r=t/this.displayHeight;for(const o of this.listeners)o.positionDoubleTouched(s,r)}}mouseDidMove(e,t,s,r){const o=Math.abs(e-t)/this.displayDpi,a=Math.abs(s-r)/this.displayDpi;return o>this.movementThreshInch||a>this.movementThreshInch}}class WebDisplayInteractionManager extends AbstractDisplayInteractionManager{constructor(e){super(),this.fullOffsetLeft=0,this.fullOffsetTop=0,this.fullScrollTop=0,this.fullScrollLeft=0,this.parentScrollMap=new Map,this.scrollCallbackMap=new Map,this.timeout=void 0,this.resizeObserver=void 0,this.EventCallbackMap=new Dictionary,this.DOUBLE_CLICK_WINDOW=200,this.lastClick=0,this.osmdSheetMusicContainer=e,this.listenForInteractions()}get FullOffsetTop(){return this.fullOffsetTop}get FullScrollTop(){return this.fullScrollTop}get FullOffsetLeft(){return this.fullOffsetLeft}get FullScrollLeft(){return this.fullScrollLeft}static resizeCallback(e,t){clearTimeout(t.timeout),t.timeout=setTimeout(()=>{t.fullOffsetLeft=0,t.fullOffsetTop=0;let s=t.osmdSheetMusicContainer;for(;s;)t.fullOffsetLeft+=s.offsetLeft,t.fullOffsetTop+=s.offsetTop,s=s.offsetParent;t.resizeEventListener(),t.deregisterScrollOffsets(),t.registerScrollOffsets()},500)}registerScrollOffsets(){let e=this.osmdSheetMusicContainer;this.fullScrollTop=0,this.fullScrollLeft=0;const t=this;for(;e&&e!==document.documentElement;){if(this.parentScrollMap.set(e,[e.scrollTop,e.scrollLeft]),this.fullScrollLeft+=e.scrollLeft,this.fullScrollTop+=e.scrollTop,e.scrollHeight>e.clientHeight){const s=function(r){const o=t.parentScrollMap.get(this),a=o[0],l=o[1];t.fullScrollTop=t.fullScrollTop-a+this.scrollTop,t.fullScrollLeft=t.fullScrollLeft-l+this.scrollLeft,t.parentScrollMap.set(this,[this.scrollTop,this.scrollLeft])};this.scrollCallbackMap.set(e,s),e.addEventListener("scroll",s)}e=e.parentElement}}deregisterScrollOffsets(){for(const e of this.scrollCallbackMap.keys())e.removeEventListener("scroll",this.scrollCallbackMap.get(e));this.scrollCallbackMap.clear()}initialize(){this.fullOffsetLeft=0,this.fullOffsetTop=0;let e=this.osmdSheetMusicContainer;const t=[],s=this;for(window.ResizeObserver&&(this.resizeObserver=new ResizeObserver(r=>{WebDisplayInteractionManager.resizeCallback(r,s)}));e;)this.fullOffsetLeft+=e.offsetLeft,this.fullOffsetTop+=e.offsetTop,this.resizeObserver?this.resizeObserver.observe(e):t.push(e),e=e.offsetParent;if(this.resizeObserver)this.disposeResizeListener=()=>{s.resizeObserver.disconnect(),s.resizeObserver=void 0};else{let r=()=>{WebDisplayInteractionManager.resizeCallback(t,s)};window.addEventListener("resize",r),this.disposeResizeListener=()=>{window.removeEventListener("resize",r),r=void 0}}s.registerScrollOffsets()}dispose(){this.disposeResizeListener();for(const e of this.EventCallbackMap.keys()){const t=this.EventCallbackMap.getValue(e);t[0].removeEventListener(e,t[1])}this.EventCallbackMap.clear(),this.deregisterScrollOffsets(),this.scrollCallbackMap.clear(),this.parentScrollMap.clear()}isTouch(){if("ontouchstart"in window||window.DocumentTouch)return!0;if(!window.matchMedia)return!1;const t=["(",["-webkit-","-moz-","-o-","-ms-"].join("touch-enabled),("),"heartz",")"].join("");return window.matchMedia(t).matches}get downEventName(){return this.isTouch()?"touchstart":"mousedown"}get moveEventName(){return this.isTouch()?"touchmove":"mousemove"}listenForInteractions(){const e=this.downEventListener.bind(this),t=this.touchEndEventListener.bind(this),s=this.moveEventListener.bind(this);this.osmdSheetMusicContainer.addEventListener("mousedown",e),this.osmdSheetMusicContainer.addEventListener("touchend",t),document.addEventListener(this.moveEventName,s),this.EventCallbackMap.setValue("mousedown",[this.osmdSheetMusicContainer,e]),this.EventCallbackMap.setValue("touchend",[this.osmdSheetMusicContainer,t]),this.EventCallbackMap.setValue(this.moveEventName,[document,s])}downEventListener(e){const t=new Date().getTime(),s=t-this.lastClick;clearTimeout(this.clickTimeout);let r=0,o=0;this.isTouch()&&e instanceof TouchEvent?(r=e.touches[0].pageX,o=e.touches[0].pageY):e instanceof MouseEvent&&(r=e.pageX,o=e.pageY);const a=this.getOffsetCoordinates(r,o);if(s0)this.doubleClick(a.x,a.y);else{const l=this;this.clickTimeout=setTimeout(function(){clearTimeout(this.clickTimeout),l.isTouch()?l.touchDown(a.x,a.y,void 0):l.click(a.x,a.y)},this.DOUBLE_CLICK_WINDOW)}this.lastClick=t}moveEventListener(e){let t=0,s=0;if(this.isTouch()&&e instanceof TouchEvent){let o;e.touches&&e.touches.length>0?o=e.touches[0]:e.changedTouches&&e.changedTouches.length>0&&(o=e.changedTouches[0]),t=o==null?void 0:o.clientX,s=o==null?void 0:o.clientY}else e instanceof MouseEvent&&(t=e.clientX,s=e.clientY);const r=this.getOffsetCoordinates(t,s);this.move(r.x,r.y)}touchEndEventListener(e){let t;e.touches&&e.touches.length>0?t=e.touches[0]:e.changedTouches&&e.changedTouches.length>0&&(t=e.changedTouches[0]);const s=this.getOffsetCoordinates(t==null?void 0:t.pageX,t==null?void 0:t.pageY);this.touchUp(s.x,s.y)}resizeEventListener(){this.displaySizeChanged(this.osmdSheetMusicContainer.clientWidth,this.osmdSheetMusicContainer.clientHeight)}getOffsetCoordinates(e,t){const s=e-this.fullOffsetLeft+this.fullScrollLeft,r=t-this.fullOffsetTop+this.fullScrollTop;return new PointF2D(s,r)}}class DynamicsCalculator{static fillDynamicsList(e,t,s){for(let r=0;r=0&&s[c].push(new DynamicsContainer(l.InstantaneousDynamic,c))}if(l.StartingContinuousDynamic!==void 0){s[r].push(new DynamicsContainer(l.StartingContinuousDynamic,l.StaffNumber));const c=this.getOtherStaffIndexIfLinkedStavesAreDetected(e,r,l.StartingContinuousDynamic.Placement);c>=0&&s[c].push(new DynamicsContainer(l.StartingContinuousDynamic,c))}}}}static getOtherStaffIndexIfLinkedStavesAreDetected(e,t,s){const r=e.getStaffFromIndex(t),o=r.ParentInstrument.Staves.indexOf(r),a=r.ParentInstrument.Staves.length;return a>1&&o===0&&s===PlacementEnum.Below?t+1:a>1&&o===1&&s===PlacementEnum.Above?t-1:-1}static fillDynamicExpressions(e){const t=e.DynListStaves,s=e.getCompleteNumberOfStaves(),r=e.TimestampSortedDynamicExpressionsList;for(let o=0;o{e(this.processStringXml(s))},s=>{loglevelExports.error(new Error("[OSMD] Invalid MXL file: "+s)),t(new Error("[OSMD] Invalid MXL file: "+s))})}processStringXml(i){const e=new DOMParser;if(i.substr(0,3)==="")return loglevelExports.debug("[OSMD] UTF with BOM detected, truncate first three bytes and pass along: "+i),e.parseFromString(i.substr(3),"application/xml");if(i.substr(0,6).includes("{t.isMxl(u)?t.processMxl(u,l,c):l(t.processStringXml(u))},u=>{throw c(u),u});else{const u=new Error("[OSMD] osmd.load(string): Could not process string. Did not find {e.init(this.sheet.MusicPartManager,this.graphic)}),this.renderingManager.setMusicSheet(this.graphic),this.interactionManager.Initialize()}render(){var e;if(!this.graphic)throw new Error("OpenSheetMusicDisplay: Before rendering a music sheet, please load a MusicXML file");(e=this.drawer)==null||e.clear();let i=this.container.offsetWidth;this.rules.RenderSingleHorizontalStaffline&&(i=this.rules.SheetMaximumWidth),this.sheet.pageWidth=i/this.zoom/10,this.renderingManager.MainViewingRegion.WidthInUnits=this.sheet.pageWidth,this.rules.PageFormat&&!this.rules.PageFormat.IsUndefined?(this.rules.PageHeight=this.sheet.pageWidth/this.rules.PageFormat.aspectRatio,loglevelExports.debug("[OSMD] PageHeight: "+this.rules.PageHeight)):(loglevelExports.debug("[OSMD] endless/undefined pageformat, id: "+this.rules.PageFormat.idString),this.rules.PageHeight=100001),this.graphic.reCalculate(),this.drawingParameters.drawCursors&&(this.graphic.Cursors.length=0),this.createOrRefreshRenderBackend(),this.needBackendUpdate=!1,this.drawer.setZoom(this.zoom),this.drawer.drawSheet(this.graphic),this.enableOrDisableCursors(this.drawingParameters.drawCursors),this.drawingParameters.drawCursors&&this.cursors.forEach(t=>{t.update()}),this.zoomUpdated=!1,this.interactionManager.displaySizeChanged(this.container.clientWidth,this.container.clientHeight)}createOrRefreshRenderBackend(){this.drawer&&this.drawer.Backends&&(this.drawer.Backends[0]&&this.drawer.Backends[0].removeAllChildrenFromContainer(this.container),this.drawer.Backends.clear()),this.drawingParameters.Rules=this.rules,this.drawer=new VexFlowMusicSheetDrawer(this.drawingParameters),this.drawer.drawableBoundingBoxElement=this.DrawBoundingBox,this.drawer.bottomLineVisible=this.drawBottomLine,this.drawer.skyLineVisible=this.drawSkyLine;let i=this.container.offsetWidth;this.rules.RenderSingleHorizontalStaffline&&(i=this.graphic.MusicPages[0].PositionAndShape.Size.width*10*this.zoom);let e;const t=32767;for(const s of this.graphic.MusicPages){if(s.PageNumber>this.rules.MaxPageToDrawNumber)break;const r=this.createBackend(this.backendType,s),o=" exceeds CanvasBackend limit of 32767. Cutting off score.";r.getOSMDBackendType()===BackendType.Canvas&&i>t&&(loglevelExports.warn("[OSMD] Warning: width of "+i+o),i=t),this.rules.PageFormat&&!this.rules.PageFormat.IsUndefined?e=i/this.rules.PageFormat.aspectRatio:(e=s.PositionAndShape.Size.height,e+=this.rules.PageBottomMargin,e+=this.rules.CompactMode?this.rules.PageTopMarginNarrow:this.rules.PageTopMargin,this.rules.RenderTitle&&(e+=this.rules.TitleTopDistance),e*=this.zoom*10),r.getOSMDBackendType()===BackendType.Canvas&&e>t&&(loglevelExports.warn("[OSMD] Warning: height of "+e+o),e=Math.min(e,t)),r.resize(i,e),r.clear(),this.drawer.Backends.push(r),this.graphic.drawer=this.drawer}}exportSVG(){var i;for(const e of(i=this.drawer)==null?void 0:i.Backends)e instanceof SvgVexFlowBackend&&e.export()}IsReadyToRender(){return this.graphic!==void 0}clear(){var i;(i=this.drawer)==null||i.clear(),this.reset()}dispose(){this.disposeResizeListener&&this.disposeResizeListener(),this.InteractionManager&&this.InteractionManager.Dispose()}setOptions(i){if(this.rules||(this.rules=new EngravingRules),this.drawingParameters||(this.drawingParameters=new DrawingParameters,this.drawingParameters.Rules=this.rules),i==null){loglevelExports.warn(`warning: osmd.setOptions() called without an options parameter, has no effect. example usage: osmd.setOptions({drawCredits: false, drawPartNames: false})`);return}this.OnXMLRead=function(r){return r},i.onXMLRead&&(this.OnXMLRead=i.onXMLRead),i.drawingParameters&&(this.drawingParameters.DrawingParametersEnum=DrawingParametersEnum[i.drawingParameters.toLowerCase()]);let t=!this.drawer||!this.drawer.Backends||this.drawer.Backends.length<1;if(i.backend!==void 0){const r=OSMDOptions.BackendTypeFromString(i.backend);t=t||this.backendType!==r,this.backendType=r}this.needBackendUpdate=t,i.autoBeam!==void 0&&(this.rules.AutoBeamNotes=i.autoBeam);const s=i.autoBeamOptions;if(s&&(s.maintain_stem_directions===void 0&&(s.maintain_stem_directions=!1),this.rules.AutoBeamOptions=s,s.groups&&s.groups.length)){for(const r of s.groups)if(r.length!==2)throw new Error("Each fraction in autoBeamOptions.groups must be of length 2, e.g. [3,4] for beaming three fourths")}i.percussionOneLineCutoff!==void 0&&(this.rules.PercussionOneLineCutoff=i.percussionOneLineCutoff),this.rules.PercussionOneLineCutoff!==0&&i.percussionForceVoicesOneLineCutoff!==void 0&&(this.rules.PercussionForceVoicesOneLineCutoff=i.percussionForceVoicesOneLineCutoff),i.alignRests!==void 0&&(this.rules.AlignRests=i.alignRests),i.coloringMode!==void 0&&this.setColoringMode(i),i.coloringEnabled!==void 0&&(this.rules.ColoringEnabled=i.coloringEnabled),i.colorStemsLikeNoteheads!==void 0&&(this.rules.ColorStemsLikeNoteheads=i.colorStemsLikeNoteheads),i.disableCursor&&(this.drawingParameters.drawCursors=!1),i.drawHiddenNotes&&(this.drawingParameters.drawHiddenNotes=!0),i.drawCredits!==void 0&&(this.drawingParameters.DrawCredits=i.drawCredits),i.drawComposer!==void 0&&(this.drawingParameters.DrawComposer=i.drawComposer),i.drawTitle!==void 0&&(this.drawingParameters.DrawTitle=i.drawTitle),i.drawSubtitle!==void 0&&(this.drawingParameters.DrawSubtitle=i.drawSubtitle),i.drawLyricist!==void 0&&(this.drawingParameters.DrawLyricist=i.drawLyricist),i.drawMetronomeMarks!==void 0&&(this.rules.MetronomeMarksDrawn=i.drawMetronomeMarks),i.drawPartNames!==void 0&&(this.drawingParameters.DrawPartNames=i.drawPartNames,i.drawPartAbbreviations||(this.rules.RenderPartAbbreviations=i.drawPartNames)),i.drawPartAbbreviations!==void 0&&(this.rules.RenderPartAbbreviations=i.drawPartAbbreviations),i.drawFingerings===!1&&(this.rules.RenderFingerings=!1),i.drawMeasureNumbers!==void 0&&(this.rules.RenderMeasureNumbers=i.drawMeasureNumbers),i.drawMeasureNumbersOnlyAtSystemStart&&(this.rules.RenderMeasureNumbersOnlyAtSystemStart=i.drawMeasureNumbersOnlyAtSystemStart),i.drawLyrics!==void 0&&(this.rules.RenderLyrics=i.drawLyrics),i.drawTimeSignatures!==void 0&&(this.rules.RenderTimeSignatures=i.drawTimeSignatures),i.drawSlurs!==void 0&&(this.rules.RenderSlurs=i.drawSlurs),i.measureNumberInterval!==void 0&&(this.rules.MeasureNumberLabelOffset=i.measureNumberInterval),i.useXMLMeasureNumbers!==void 0&&(this.rules.UseXMLMeasureNumbers=i.useXMLMeasureNumbers),i.fingeringPosition!==void 0&&(this.rules.FingeringPosition=AbstractExpression.PlacementEnumFromString(i.fingeringPosition)),i.fingeringInsideStafflines!==void 0&&(this.rules.FingeringInsideStafflines=i.fingeringInsideStafflines),i.newSystemFromXML!==void 0&&(this.rules.NewSystemAtXMLNewSystemAttribute=i.newSystemFromXML),i.newPageFromXML!==void 0&&(this.rules.NewPageAtXMLNewPageAttribute=i.newPageFromXML),i.fillEmptyMeasuresWithWholeRest!==void 0&&(this.rules.FillEmptyMeasuresWithWholeRest=i.fillEmptyMeasuresWithWholeRest),i.followCursor!==void 0&&(this.FollowCursor=i.followCursor),i.setWantedStemDirectionByXml!==void 0&&(this.rules.SetWantedStemDirectionByXml=i.setWantedStemDirectionByXml),i.darkMode?(this.rules.applyDefaultColorMusic("#FFFFFF"),this.rules.PageBackgroundColor="#000000"):i.darkMode===!1&&(this.rules.applyDefaultColorMusic("#000000"),this.rules.PageBackgroundColor=void 0),i.defaultColorMusic&&this.rules.applyDefaultColorMusic(i.defaultColorMusic),i.defaultColorNotehead&&(this.rules.DefaultColorNotehead=i.defaultColorNotehead),i.defaultColorRest&&(this.rules.DefaultColorRest=i.defaultColorRest),i.defaultColorStem&&(this.rules.DefaultColorStem=i.defaultColorStem),i.defaultColorLabel&&(this.rules.DefaultColorLabel=i.defaultColorLabel),i.defaultColorTitle&&(this.rules.DefaultColorTitle=i.defaultColorTitle),i.defaultFontFamily&&(this.rules.DefaultFontFamily=i.defaultFontFamily),i.defaultFontStyle&&(this.rules.DefaultFontStyle=i.defaultFontStyle),i.drawUpToMeasureNumber&&(this.rules.MaxMeasureToDrawIndex=i.drawUpToMeasureNumber-1),i.drawFromMeasureNumber&&(this.rules.MinMeasureToDrawIndex=i.drawFromMeasureNumber-1),i.drawUpToPageNumber&&(this.rules.MaxPageToDrawNumber=i.drawUpToPageNumber),i.drawUpToSystemNumber&&(this.rules.MaxSystemToDrawNumber=i.drawUpToSystemNumber),i.tupletsRatioed&&(this.rules.TupletsRatioed=!0),i.tupletsBracketed&&(this.rules.TupletsBracketed=!0),i.tripletsBracketed&&(this.rules.TripletsBracketed=!0),i.autoResize?(this.resizeHandlerAttached||this.autoResize(),this.autoResizeEnabled=!0):i.autoResize===!1&&(this.autoResizeEnabled=!1),i.pageFormat!==void 0&&this.setPageFormat(i.pageFormat),i.pageBackgroundColor!==void 0&&(this.rules.PageBackgroundColor=i.pageBackgroundColor),i.performanceMode!==void 0&&(this.rules.PerformanceMode=i.performanceMode),i.renderSingleHorizontalStaffline!==void 0&&(this.rules.RenderSingleHorizontalStaffline=i.renderSingleHorizontalStaffline),i.spacingFactorSoftmax!==void 0&&(this.rules.SoftmaxFactorVexFlow=i.spacingFactorSoftmax),i.spacingBetweenTextLines!==void 0&&(this.rules.SpacingBetweenTextLines=i.spacingBetweenTextLines),i.stretchLastSystemLine!==void 0&&(this.rules.StretchLastSystemLine=i.stretchLastSystemLine),i.autoGenerateMutipleRestMeasuresFromRestMeasures!==void 0&&(this.rules.AutoGenerateMutipleRestMeasuresFromRestMeasures=i.autoGenerateMutipleRestMeasuresFromRestMeasures),i.cursorsOptions!==void 0?this.cursorsOptions=i.cursorsOptions:this.cursorsOptions=[{type:0,color:this.EngravingRules.DefaultColorCursor,alpha:.5,follow:!0}]}setColoringMode(i){if(i.coloringMode===ColoringModes.XML){this.rules.ColoringMode=ColoringModes.XML;return}const e=[NoteEnum.C,NoteEnum.D,NoteEnum.E,NoteEnum.F,NoteEnum.G,NoteEnum.A,NoteEnum.B,-1];let t;if(i.coloringMode===ColoringModes.CustomColorSet){if(!i.coloringSetCustom||i.coloringSetCustom.length!==8)throw new Error("Invalid amount of colors: With coloringModes.customColorSet, you have to provide a coloringSetCustom parameter with 8 strings (C to B, rest note).");for(const r of i.coloringSetCustom)if(!/^\#[0-9a-fA-F]{6}$/.test(r))throw new Error(`One of the color strings in options.coloringSetCustom was not a valid HTML Hex color: `+r);t=i.coloringSetCustom}else if(i.coloringMode===ColoringModes.AutoColoring){t=[];const r=Object.keys(AutoColorSet);for(let o=0;o{i.hide()}),this.sheet=void 0,this.graphic=void 0,this.zoom=1}autoResize(){const i=this;this.handleResize(()=>{},()=>{var e;((e=this.graphic)==null?void 0:e.GetCalculator)instanceof VexFlowMusicSheetCalculator&&(this.graphic.GetCalculator.beamsNeedUpdate=!0),i.IsReadyToRender()&&i.render()})}handleResize(i,e){let t,s;const o=this;function a(){o.AutoResizeEnabled&&(t=new Date().getTime(),s||(i(),t=new Date().getTime(),s=window.setTimeout(l,200)))}function l(){s=void 0,window.clearTimeout(s),new Date().getTime()-t<200?s=window.setTimeout(l,200):e()}window.attachEvent?window.attachEvent("onresize",a):window.addEventListener("resize",a),this.disposeResizeListener=()=>{window.detachEvent?window.detachEvent("onresize",a):window.removeEventListener("resize",a),this.resizeHandlerAttached=!1},this.resizeHandlerAttached=!0,window.setTimeout(i,0),window.setTimeout(e,1)}enableOrDisableCursors(i){var e,t,s,r,o,a;if(this.drawingParameters.drawCursors=i,i){for(let l=0;l{l.hide()})}createBackend(i,e){let t;return i===void 0||i===BackendType.SVG?t=new SvgVexFlowBackend(this.rules):t=new CanvasVexFlowBackend(this.rules),t.graphicalMusicPage=e,t.initialize(this.container,this.zoom),t.getContext().setFillStyle(this.rules.DefaultColorMusic),t.getContext().setStrokeStyle(this.rules.DefaultColorMusic),t}static StringToPageFormat(i){let e=PageFormat.UndefinedPageFormat;if(i.match("^[0-9]+x[0-9]+$")){const t=i.split("x"),s=Number.parseInt(t[0],10),r=Number.parseInt(t[1],10);s>0&&s<32768&&r>0&&r<32768&&(e=new PageFormat(s,r,`customPageFormat${i}`))}return i=i.replace(" ","_"),i=i.replace("Landscape","L"),i=i.replace("Portrait","P"),_OpenSheetMusicDisplay.PageFormatStandards.hasOwnProperty(i)&&(e=_OpenSheetMusicDisplay.PageFormatStandards[i]),e}setPageFormat(i){const e=_OpenSheetMusicDisplay.StringToPageFormat(i);this.needBackendUpdate=!e.Equals(this.rules.PageFormat),this.rules.PageFormat=e}setCustomPageFormat(i,e){if(i>0&&e>0){const t=new PageFormat(i,e);this.rules.PageFormat=t}}set DrawSkyLine(i){this.drawSkyLine=i,this.drawer&&(this.drawer.skyLineVisible=i)}get DrawSkyLine(){return this.drawer.skyLineVisible}set DrawBottomLine(i){this.drawBottomLine=i,this.drawer&&(this.drawer.bottomLineVisible=i)}get DrawBottomLine(){return this.drawer.bottomLineVisible}set DrawBoundingBox(i){this.setDrawBoundingBox(i,!0)}get DrawBoundingBox(){return this.drawBoundingBox}setDrawBoundingBox(i,e=!1){this.drawBoundingBox=i,this.drawer&&(this.drawer.drawableBoundingBoxElement=i),e&&this.render()}get AutoResizeEnabled(){return this.autoResizeEnabled}set AutoResizeEnabled(i){this.autoResizeEnabled=i}get Zoom(){return this.zoom}set Zoom(i){var e;this.zoom=i,this.zoomUpdated=!0,((e=this.graphic)==null?void 0:e.GetCalculator)instanceof VexFlowMusicSheetCalculator&&(this.graphic.GetCalculator.beamsNeedUpdate=this.zoomUpdated)}set FollowCursor(i){this.followCursor=i}get FollowCursor(){return this.followCursor}set TransposeCalculator(i){MusicSheetCalculator.transposeCalculator=i}get TransposeCalculator(){return MusicSheetCalculator.transposeCalculator}get Sheet(){return this.sheet}get Drawer(){return this.drawer}get GraphicSheet(){return this.graphic}get DrawingParameters(){return this.drawingParameters}get EngravingRules(){return this.rules}get InteractionManager(){return this.interactionManager}get Version(){return this.version}};let OpenSheetMusicDisplay=_OpenSheetMusicDisplay;OpenSheetMusicDisplay.PageFormatStandards={A3_L:new PageFormat(420,297,"A3_L"),A3_P:new PageFormat(297,420,"A3_P"),A4_L:new PageFormat(297,210,"A4_L"),A4_P:new PageFormat(210,297,"A4_P"),A5_L:new PageFormat(210,148,"A5_L"),A5_P:new PageFormat(148,210,"A5_P"),A6_L:new PageFormat(148,105,"A6_L"),A6_P:new PageFormat(105,148,"A6_P"),Endless:PageFormat.UndefinedPageFormat,Letter_L:new PageFormat(279.4,215.9,"Letter_L"),Letter_P:new PageFormat(215.9,279.4,"Letter_P")};var handlebarsExports={},handlebars={get exports(){return handlebarsExports},set exports(i){handlebarsExports=i}},handlebars_runtimeExports={},handlebars_runtime={get exports(){return handlebars_runtimeExports},set exports(i){handlebars_runtimeExports=i}},base$1={},utils={};utils.__esModule=!0;utils.extend=extend;utils.indexOf=indexOf;utils.escapeExpression=escapeExpression;utils.isEmpty=isEmpty;utils.createFrame=createFrame;utils.blockParams=blockParams;utils.appendContextPath=appendContextPath;var escape$1={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},badChars=/[&<>"'`=]/g,possible=/[&<>"'`=]/;function escapeChar(i){return escape$1[i]}function extend(i){for(var e=1;e0?(o.ids&&(o.ids=[o.name]),s.helpers.each(r,o)):a(this);if(o.data&&o.ids){var c=t.createFrame(o.data);c.contextPath=t.appendContextPath(o.data.contextPath,o.name),o={data:c}}return l(r,o)})},i.exports=e.default})(blockHelperMissing,blockHelperMissingExports);var eachExports={},each={get exports(){return eachExports},set exports(i){eachExports=i}};(function(i,e){e.__esModule=!0;function t(a){return a&&a.__esModule?a:{default:a}}var s=utils,r=exceptionExports,o=t(r);e.default=function(a){a.registerHelper("each",function(l,c){if(!c)throw new o.default("Must pass iterator to #each");var d=c.fn,m=c.inverse,u=0,g="",b=void 0,y=void 0;c.data&&c.ids&&(y=s.appendContextPath(c.data.contextPath,c.ids[0])+"."),s.isFunction(l)&&(l=l.call(this)),c.data&&(b=s.createFrame(c.data));function S(w,_,C){b&&(b.key=w,b.index=_,b.first=_===0,b.last=!!C,y&&(b.contextPath=y+w)),g=g+d(l[w],{data:b,blockParams:s.blockParams([l[w],w],[y+w,null])})}if(l&&typeof l=="object")if(s.isArray(l))for(var v=l.length;u=0?o=a:o=parseInt(o,10)}return o},log:function(o){if(o=s.lookupLevel(o),typeof console<"u"&&s.lookupLevel(s.level)<=o){var a=s.methodMap[o];console[a]||(a="log");for(var l=arguments.length,c=Array(l>1?l-1:0),d=1;d= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};base$1.REVISION_CHANGES=REVISION_CHANGES;var objectType="[object Object]";function HandlebarsEnvironment(i,e,t){this.helpers=i||{},this.partials=e||{},this.decorators=t||{},_helpers$2.registerDefaultHelpers(this),_decorators.registerDefaultDecorators(this)}HandlebarsEnvironment.prototype={constructor:HandlebarsEnvironment,logger:_logger2.default,log:_logger2.default.log,registerHelper:function i(e,t){if(_utils$3.toString.call(e)===objectType){if(t)throw new _exception2$3.default("Arg not supported with multiple helpers");_utils$3.extend(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function i(e){delete this.helpers[e]},registerPartial:function i(e,t){if(_utils$3.toString.call(e)===objectType)_utils$3.extend(this.partials,e);else{if(typeof t>"u")throw new _exception2$3.default('Attempting to register a partial called "'+e+'" as undefined');this.partials[e]=t}},unregisterPartial:function i(e){delete this.partials[e]},registerDecorator:function i(e,t){if(_utils$3.toString.call(e)===objectType){if(t)throw new _exception2$3.default("Arg not supported with multiple decorators");_utils$3.extend(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function i(e){delete this.decorators[e]},resetLoggedPropertyAccesses:function i(){_internalProtoAccess$1.resetLoggedProperties()}};var log=_logger2.default.log;base$1.log=log;base$1.createFrame=_utils$3.createFrame;base$1.logger=_logger2.default;var safeStringExports={},safeString={get exports(){return safeStringExports},set exports(i){safeStringExports=i}};(function(i,e){e.__esModule=!0;function t(s){this.string=s}t.prototype.toString=t.prototype.toHTML=function(){return""+this.string},e.default=t,i.exports=e.default})(safeString,safeStringExports);var runtime={},wrapHelper$1={};wrapHelper$1.__esModule=!0;wrapHelper$1.wrapHelper=wrapHelper;function wrapHelper(i,e){if(typeof i!="function")return i;var t=function(){var r=arguments[arguments.length-1];return arguments[arguments.length-1]=e(r),i.apply(this,arguments)};return t}runtime.__esModule=!0;runtime.checkRevision=checkRevision;runtime.template=template;runtime.wrapProgram=wrapProgram;runtime.resolvePartial=resolvePartial;runtime.invokePartial=invokePartial;runtime.noop=noop;function _interopRequireDefault$3(i){return i&&i.__esModule?i:{default:i}}function _interopRequireWildcard$1(i){if(i&&i.__esModule)return i;var e={};if(i!=null)for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t]);return e.default=i,e}var _utils$2=utils,Utils=_interopRequireWildcard$1(_utils$2),_exception$2=exceptionExports,_exception2$2=_interopRequireDefault$3(_exception$2),_base=base$1,_helpers$1=helpers$1,_internalWrapHelper=wrapHelper$1,_internalProtoAccess=protoAccess;function checkRevision(i){var e=i&&i[0]||1,t=_base.COMPILER_REVISION;if(!(e>=_base.LAST_COMPATIBLE_COMPILER_REVISION&&e<=_base.COMPILER_REVISION))if(e<_base.LAST_COMPATIBLE_COMPILER_REVISION){var s=_base.REVISION_CHANGES[t],r=_base.REVISION_CHANGES[e];throw new _exception2$2.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+s+") or downgrade your runtime to an older version ("+r+").")}else throw new _exception2$2.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+i[1]+").")}function template(i,e){if(!e)throw new _exception2$2.default("No environment passed to template");if(!i||!i.main)throw new _exception2$2.default("Unknown template object: "+typeof i);i.main.decorator=i.main_d,e.VM.checkRevision(i.compiler);var t=i.compiler&&i.compiler[0]===7;function s(a,l,c){c.hash&&(l=Utils.extend({},l,c.hash),c.ids&&(c.ids[0]=!0)),a=e.VM.resolvePartial.call(this,a,l,c);var d=Utils.extend({},c,{hooks:this.hooks,protoAccessControl:this.protoAccessControl}),m=e.VM.invokePartial.call(this,a,l,d);if(m==null&&e.compile&&(c.partials[c.name]=e.compile(a,i.compilerOptions,e),m=c.partials[c.name](l,d)),m!=null){if(c.indent){for(var u=m.split(` `),g=0,b=u.length;g"u"&&(this.lexer.yylloc={});var v=this.lexer.yylloc;u.push(v);var x=this.lexer.options&&this.lexer.options.ranges;typeof this.yy.parseError=="function"&&(this.parseError=this.yy.parseError);function A(){var k;return k=c.lexer.lex()||1,typeof k!="number"&&(k=c.symbols_[k]||k),k}for(var E,w,_,C,P={},I,R,N,G;;){if(w=d[d.length-1],this.defaultActions[w]?_=this.defaultActions[w]:((E===null||typeof E>"u")&&(E=A()),_=g[w]&&g[w][E]),typeof _>"u"||!_.length||!_[0]){var B="";{G=[];for(I in g[w])this.terminals_[I]&&I>2&&G.push("'"+this.terminals_[I]+"'");this.lexer.showPosition?B="Parse error on line "+(y+1)+`: `+this.lexer.showPosition()+` Expecting `+G.join(", ")+", got '"+(this.terminals_[E]||E)+"'":B="Parse error on line "+(y+1)+": Unexpected "+(E==1?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(B,{text:this.lexer.match,token:this.terminals_[E]||E,line:this.lexer.yylineno,loc:v,expected:G})}}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+E);switch(_[0]){case 1:d.push(E),m.push(this.lexer.yytext),u.push(this.lexer.yylloc),d.push(_[1]),E=null,S=this.lexer.yyleng,b=this.lexer.yytext,y=this.lexer.yylineno,v=this.lexer.yylloc;break;case 2:if(R=this.productions_[_[1]][1],P.$=m[m.length-R],P._$={first_line:u[u.length-(R||1)].first_line,last_line:u[u.length-1].last_line,first_column:u[u.length-(R||1)].first_column,last_column:u[u.length-1].last_column},x&&(P._$.range=[u[u.length-(R||1)].range[0],u[u.length-1].range[1]]),C=this.performAction.call(P,b,S,y,this.yy,_[1],m,u),typeof C<"u")return C;R&&(d=d.slice(0,-1*R*2),m=m.slice(0,-1*R),u=u.slice(0,-1*R)),d.push(this.productions_[_[1]][0]),m.push(P.$),u.push(P._$),N=g[d[d.length-2]][d[d.length-1]],d.push(N);break;case 3:return!0}}return!0}},r=function(){var a={EOF:1,parseError:function(c,d){if(this.yy.parser)this.yy.parser.parseError(c,d);else throw new Error(c)},setInput:function(c){return this._input=c,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var c=this._input[0];this.yytext+=c,this.yyleng++,this.offset++,this.match+=c,this.matched+=c;var d=c.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),c},unput:function(c){var d=c.length,m=c.split(/(?:\r\n?|\n)/g);this._input=c+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d-1),this.offset-=d;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var g=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===u.length?this.yylloc.first_column:0)+u[u.length-m.length].length-m[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[g[0],g[0]+this.yyleng-d]),this},more:function(){return this._more=!0,this},less:function(c){this.unput(this.match.slice(c))},pastInput:function(){var c=this.matched.substr(0,this.matched.length-this.match.length);return(c.length>20?"...":"")+c.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var c=this.match;return c.length<20&&(c+=this._input.substr(0,20-c.length)),(c.substr(0,20)+(c.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var c=this.pastInput(),d=new Array(c.length+1).join("-");return c+this.upcomingInput()+` `+d+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var c,d,m,u,g;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),y=0;yd[0].length)&&(d=m,u=y,!this.options.flex)));y++);return d?(g=d[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+d[0].length},this.yytext+=d[0],this.match+=d[0],this.matches=d,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(d[0].length),this.matched+=d[0],c=this.performAction.call(this,this.yy,this,b[u],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c||void 0):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var c=this.next();return typeof c<"u"?c:this.lex()},begin:function(c){this.conditionStack.push(c)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(c){this.begin(c)}};return a.options={},a.performAction=function(c,d,m,u){function g(b,y){return d.yytext=d.yytext.substring(b,d.yyleng-y+b)}switch(m){case 0:if(d.yytext.slice(-2)==="\\\\"?(g(0,1),this.begin("mu")):d.yytext.slice(-1)==="\\"?(g(0,1),this.begin("emu")):this.begin("mu"),d.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),this.conditionStack[this.conditionStack.length-1]==="raw"?15:(g(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(d.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return d.yytext=g(1,2).replace(/\\"/g,'"'),80;case 32:return d.yytext=g(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return d.yytext=d.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},a}();s.lexer=r;function o(){this.yy={}}return o.prototype=s,s.Parser=o,new o}();e.default=t,i.exports=e.default})(parser$1,parserExports);var whitespaceControlExports={},whitespaceControl={get exports(){return whitespaceControlExports},set exports(i){whitespaceControlExports=i}},visitorExports={},visitor={get exports(){return visitorExports},set exports(i){visitorExports=i}};(function(i,e){e.__esModule=!0;function t(d){return d&&d.__esModule?d:{default:d}}var s=exceptionExports,r=t(s);function o(){this.parents=[]}o.prototype={constructor:o,mutating:!1,acceptKey:function(m,u){var g=this.accept(m[u]);if(this.mutating){if(g&&!o.prototype[g.type])throw new r.default('Unexpected node type "'+g.type+'" found when accepting '+u+" on "+m.type);m[u]=g}},acceptRequired:function(m,u){if(this.acceptKey(m,u),!m[u])throw new r.default(m.type+" requires "+u)},acceptArray:function(m){for(var u=0,g=m.length;u0)throw new _exception2$1.default("Invalid path: "+s,{loc:t});c===".."&&o++}else r.push(c)}return{type:"PathExpression",data:i,depth:o,parts:r,original:s,loc:t}}function prepareMustache(i,e,t,s,r,o){var a=s.charAt(3)||s.charAt(2),l=a!=="{"&&a!=="&",c=/\*/.test(s);return{type:c?"Decorator":"MustacheStatement",path:i,params:e,hash:t,escaped:l,strip:r,loc:this.locInfo(o)}}function prepareRawBlock(i,e,t,s){validateClose(i,t),s=this.locInfo(s);var r={type:"Program",body:e,strip:{},loc:s};return{type:"BlockStatement",path:i.path,params:i.params,hash:i.hash,program:r,openStrip:{},inverseStrip:{},closeStrip:{},loc:s}}function prepareBlock(i,e,t,s,r,o){s&&s.path&&validateClose(i,s);var a=/\*/.test(i.open);e.blockParams=i.blockParams;var l=void 0,c=void 0;if(t){if(a)throw new _exception2$1.default("Unexpected inverse block on decorator",t);t.chain&&(t.program.body[0].closeStrip=s.strip),c=t.strip,l=t.program}return r&&(r=l,l=e,e=r),{type:a?"DecoratorBlock":"BlockStatement",path:i.path,params:i.params,hash:i.hash,program:e,inverse:l,openStrip:i.strip,inverseStrip:c,closeStrip:s&&s.strip,loc:this.locInfo(o)}}function prepareProgram(i,e){if(!e&&i.length){var t=i[0].loc,s=i[i.length-1].loc;t&&s&&(e={source:t.source,start:{line:t.start.line,column:t.start.column},end:{line:s.end.line,column:s.end.column}})}return{type:"Program",body:i,strip:{},loc:e}}function preparePartialBlock(i,e,t,s){return validateClose(i,t),{type:"PartialBlockStatement",name:i.path,params:i.params,hash:i.hash,program:e,openStrip:i.strip,closeStrip:t&&t.strip,loc:this.locInfo(s)}}base.__esModule=!0;base.parseWithoutProcessing=parseWithoutProcessing;base.parse=parse$2;function _interopRequireWildcard(i){if(i&&i.__esModule)return i;var e={};if(i!=null)for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(e[t]=i[t]);return e.default=i,e}function _interopRequireDefault$1(i){return i&&i.__esModule?i:{default:i}}var _parser=parserExports,_parser2=_interopRequireDefault$1(_parser),_whitespaceControl=whitespaceControlExports,_whitespaceControl2=_interopRequireDefault$1(_whitespaceControl),_helpers=helpers,Helpers=_interopRequireWildcard(_helpers),_utils$1=utils;base.parser=_parser2.default;var yy={};_utils$1.extend(yy,Helpers);function parseWithoutProcessing(i,e){if(i.type==="Program")return i;_parser2.default.yy=yy,yy.locInfo=function(s){return new yy.SourceLocation(e&&e.srcName,s)};var t=_parser2.default.parse(i);return t}function parse$2(i,e){var t=parseWithoutProcessing(i,e),s=new _whitespaceControl2.default(e);return s.accept(t)}var compiler={};compiler.__esModule=!0;compiler.Compiler=Compiler;compiler.precompile=precompile;compiler.compile=compile;function _interopRequireDefault(i){return i&&i.__esModule?i:{default:i}}var _exception=exceptionExports,_exception2=_interopRequireDefault(_exception),_utils=utils,_ast=astExports,_ast2=_interopRequireDefault(_ast),slice=[].slice;function Compiler(){}Compiler.prototype={compiler:Compiler,equals:function i(e){var t=this.opcodes.length;if(e.opcodes.length!==t)return!1;for(var s=0;s1)throw new _exception2.default("Unsupported number of partial arguments: "+s.length,e);s.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):s.push({type:"PathExpression",parts:[],depth:0}));var r=e.name.original,o=e.name.type==="SubExpression";o&&this.accept(e.name),this.setupFullMustacheParams(e,t,void 0,!0);var a=e.indent||"";this.options.preventIndent&&a&&(this.opcode("appendContent",a),a=""),this.opcode("invokePartial",o,r,a),this.opcode("append")},PartialBlockStatement:function i(e){this.PartialStatement(e)},MustacheStatement:function i(e){this.SubExpression(e),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function i(e){this.DecoratorBlock(e)},ContentStatement:function i(e){e.value&&this.opcode("appendContent",e.value)},CommentStatement:function i(){},SubExpression:function i(e){transformLiteralToPath(e);var t=this.classifySexpr(e);t==="simple"?this.simpleSexpr(e):t==="helper"?this.helperSexpr(e):this.ambiguousSexpr(e)},ambiguousSexpr:function i(e,t,s){var r=e.path,o=r.parts[0],a=t!=null||s!=null;this.opcode("getContext",r.depth),this.opcode("pushProgram",t),this.opcode("pushProgram",s),r.strict=!0,this.accept(r),this.opcode("invokeAmbiguous",o,a)},simpleSexpr:function i(e){var t=e.path;t.strict=!0,this.accept(t),this.opcode("resolvePossibleLambda")},helperSexpr:function i(e,t,s){var r=this.setupFullMustacheParams(e,t,s),o=e.path,a=o.parts[0];if(this.options.knownHelpers[a])this.opcode("invokeKnownHelper",r.length,a);else{if(this.options.knownHelpersOnly)throw new _exception2.default("You specified knownHelpersOnly, but used the unknown helper "+a,e);o.strict=!0,o.falsy=!0,this.accept(o),this.opcode("invokeHelper",r.length,o.original,_ast2.default.helpers.simpleId(o))}},PathExpression:function i(e){this.addDepth(e.depth),this.opcode("getContext",e.depth);var t=e.parts[0],s=_ast2.default.helpers.scopedId(e),r=!e.depth&&!s&&this.blockParamIndex(t);r?this.opcode("lookupBlockParam",r,e.parts):t?e.data?(this.options.data=!0,this.opcode("lookupData",e.depth,e.parts,e.strict)):this.opcode("lookupOnContext",e.parts,e.falsy,e.strict,s):this.opcode("pushContext")},StringLiteral:function i(e){this.opcode("pushString",e.value)},NumberLiteral:function i(e){this.opcode("pushLiteral",e.value)},BooleanLiteral:function i(e){this.opcode("pushLiteral",e.value)},UndefinedLiteral:function i(){this.opcode("pushLiteral","undefined")},NullLiteral:function i(){this.opcode("pushLiteral","null")},Hash:function i(e){var t=e.pairs,s=0,r=t.length;for(this.opcode("pushHash");s=0)return[t,o]}}};function precompile(i,e,t){if(i==null||typeof i!="string"&&i.type!=="Program")throw new _exception2.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+i);e=e||{},"data"in e||(e.data=!0),e.compat&&(e.useDepths=!0);var s=t.parse(i,e),r=new t.Compiler().compile(s,e);return new t.JavaScriptCompiler().compile(r,e)}function compile(i,e,t){if(e===void 0&&(e={}),i==null||typeof i!="string"&&i.type!=="Program")throw new _exception2.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+i);e=_utils.extend({},e),"data"in e||(e.data=!0),e.compat&&(e.useDepths=!0);var s=void 0;function r(){var a=t.parse(i,e),l=new t.Compiler().compile(a,e),c=new t.JavaScriptCompiler().compile(l,e,void 0,!0);return t.template(c)}function o(a,l){return s||(s=r()),s.call(this,a,l)}return o._setup=function(a){return s||(s=r()),s._setup(a)},o._child=function(a,l,c,d){return s||(s=r()),s._child(a,l,c,d)},o}function argEquals(i,e){if(i===e)return!0;if(_utils.isArray(i)&&_utils.isArray(e)&&i.length===e.length){for(var t=0;t>1;return c?-d:d}return base64Vlq.encode=function(c){var d="",m,u=o(c);do m=u&s,u>>>=e,u>0&&(m|=r),d+=i.encode(m);while(u>0);return d},base64Vlq.decode=function(c,d,m){var u=c.length,g=0,b=0,y,S;do{if(d>=u)throw new Error("Expected more digits in base 64 VLQ value.");if(S=i.decode(c.charCodeAt(d++)),S===-1)throw new Error("Invalid base64 digit: "+c.charAt(d-1));y=!!(S&r),S&=s,g=g+(S<=0;G--)R=I[G],R==="."?I.splice(G,1):R===".."?N++:N>0&&(R===""?(I.splice(G+1,N),N=0):(I.splice(G,2),N--));return _=I.join("/"),_===""&&(_=P?"/":"."),C?(C.path=_,o(C)):_}i.normalize=a;function l(w,_){w===""&&(w="."),_===""&&(_=".");var C=r(_),P=r(w);if(P&&(w=P.path||"/"),C&&!C.scheme)return P&&(C.scheme=P.scheme),o(C);if(C||_.match(s))return _;if(P&&!P.host&&!P.path)return P.host=_,o(P);var I=_.charAt(0)==="/"?_:a(w.replace(/\/+$/,"")+"/"+_);return P?(P.path=I,o(P)):I}i.join=l,i.isAbsolute=function(w){return w.charAt(0)==="/"||t.test(w)};function c(w,_){w===""&&(w="."),w=w.replace(/\/$/,"");for(var C=0;_.indexOf(w+"/")!==0;){var P=w.lastIndexOf("/");if(P<0||(w=w.slice(0,P),w.match(/^([^\/]+:\/)?\/*$/)))return _;++C}return Array(C+1).join("../")+_.substr(w.length+1)}i.relative=c;var d=function(){var w=Object.create(null);return!("__proto__"in w)}();function m(w){return w}function u(w){return b(w)?"$"+w:w}i.toSetString=d?m:u;function g(w){return b(w)?w.slice(1):w}i.fromSetString=d?m:g;function b(w){if(!w)return!1;var _=w.length;if(_<9||w.charCodeAt(_-1)!==95||w.charCodeAt(_-2)!==95||w.charCodeAt(_-3)!==111||w.charCodeAt(_-4)!==116||w.charCodeAt(_-5)!==111||w.charCodeAt(_-6)!==114||w.charCodeAt(_-7)!==112||w.charCodeAt(_-8)!==95||w.charCodeAt(_-9)!==95)return!1;for(var C=_-10;C>=0;C--)if(w.charCodeAt(C)!==36)return!1;return!0}function y(w,_,C){var P=v(w.source,_.source);return P!==0||(P=w.originalLine-_.originalLine,P!==0)||(P=w.originalColumn-_.originalColumn,P!==0||C)||(P=w.generatedColumn-_.generatedColumn,P!==0)||(P=w.generatedLine-_.generatedLine,P!==0)?P:v(w.name,_.name)}i.compareByOriginalPositions=y;function S(w,_,C){var P=w.generatedLine-_.generatedLine;return P!==0||(P=w.generatedColumn-_.generatedColumn,P!==0||C)||(P=v(w.source,_.source),P!==0)||(P=w.originalLine-_.originalLine,P!==0)||(P=w.originalColumn-_.originalColumn,P!==0)?P:v(w.name,_.name)}i.compareByGeneratedPositionsDeflated=S;function v(w,_){return w===_?0:w===null?1:_===null?-1:w>_?1:-1}function x(w,_){var C=w.generatedLine-_.generatedLine;return C!==0||(C=w.generatedColumn-_.generatedColumn,C!==0)||(C=v(w.source,_.source),C!==0)||(C=w.originalLine-_.originalLine,C!==0)||(C=w.originalColumn-_.originalColumn,C!==0)?C:v(w.name,_.name)}i.compareByGeneratedPositionsInflated=x;function A(w){return JSON.parse(w.replace(/^\)]}'[^\n]*\n/,""))}i.parseSourceMapInput=A;function E(w,_,C){if(_=_||"",w&&(w[w.length-1]!=="/"&&_[0]!=="/"&&(w+="/"),_=w+_),C){var P=r(C);if(!P)throw new Error("sourceMapURL could not be parsed");if(P.path){var I=P.path.lastIndexOf("/");I>=0&&(P.path=P.path.substring(0,I+1))}_=l(o(P),_)}return a(_)}i.computeSourceURL=E}(util)),util}var arraySet={},hasRequiredArraySet;function requireArraySet(){if(hasRequiredArraySet)return arraySet;hasRequiredArraySet=1;var i=requireUtil(),e=Object.prototype.hasOwnProperty,t=typeof Map<"u";function s(){this._array=[],this._set=t?new Map:Object.create(null)}return s.fromArray=function(o,a){for(var l=new s,c=0,d=o.length;c=0)return a}else{var l=i.toSetString(o);if(e.call(this._set,l))return this._set[l]}throw new Error('"'+o+'" is not in the set.')},s.prototype.at=function(o){if(o>=0&&oo||a==o&&c>=l||i.compareByGeneratedPositionsInflated(s,r)<=0}function t(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}return t.prototype.unsortedForEach=function(r,o){this._array.forEach(r,o)},t.prototype.add=function(r){e(this._last,r)?(this._last=r,this._array.push(r)):(this._sorted=!1,this._array.push(r))},t.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},mappingList.MappingList=t,mappingList}var hasRequiredSourceMapGenerator;function requireSourceMapGenerator(){if(hasRequiredSourceMapGenerator)return sourceMapGenerator;hasRequiredSourceMapGenerator=1;var i=requireBase64Vlq(),e=requireUtil(),t=requireArraySet().ArraySet,s=requireMappingList().MappingList;function r(o){o||(o={}),this._file=e.getArg(o,"file",null),this._sourceRoot=e.getArg(o,"sourceRoot",null),this._skipValidation=e.getArg(o,"skipValidation",!1),this._sources=new t,this._names=new t,this._mappings=new s,this._sourcesContents=null}return r.prototype._version=3,r.fromSourceMap=function(a){var l=a.sourceRoot,c=new r({file:a.file,sourceRoot:l});return a.eachMapping(function(d){var m={generated:{line:d.generatedLine,column:d.generatedColumn}};d.source!=null&&(m.source=d.source,l!=null&&(m.source=e.relative(l,m.source)),m.original={line:d.originalLine,column:d.originalColumn},d.name!=null&&(m.name=d.name)),c.addMapping(m)}),a.sources.forEach(function(d){var m=d;l!==null&&(m=e.relative(l,d)),c._sources.has(m)||c._sources.add(m);var u=a.sourceContentFor(d);u!=null&&c.setSourceContent(d,u)}),c},r.prototype.addMapping=function(a){var l=e.getArg(a,"generated"),c=e.getArg(a,"original",null),d=e.getArg(a,"source",null),m=e.getArg(a,"name",null);this._skipValidation||this._validateMapping(l,c,d,m),d!=null&&(d=String(d),this._sources.has(d)||this._sources.add(d)),m!=null&&(m=String(m),this._names.has(m)||this._names.add(m)),this._mappings.add({generatedLine:l.line,generatedColumn:l.column,originalLine:c!=null&&c.line,originalColumn:c!=null&&c.column,source:d,name:m})},r.prototype.setSourceContent=function(a,l){var c=a;this._sourceRoot!=null&&(c=e.relative(this._sourceRoot,c)),l!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[e.toSetString(c)]=l):this._sourcesContents&&(delete this._sourcesContents[e.toSetString(c)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))},r.prototype.applySourceMap=function(a,l,c){var d=l;if(l==null){if(a.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's "file" property. Both were omitted.`);d=a.file}var m=this._sourceRoot;m!=null&&(d=e.relative(m,d));var u=new t,g=new t;this._mappings.unsortedForEach(function(b){if(b.source===d&&b.originalLine!=null){var y=a.originalPositionFor({line:b.originalLine,column:b.originalColumn});y.source!=null&&(b.source=y.source,c!=null&&(b.source=e.join(c,b.source)),m!=null&&(b.source=e.relative(m,b.source)),b.originalLine=y.line,b.originalColumn=y.column,y.name!=null&&(b.name=y.name))}var S=b.source;S!=null&&!u.has(S)&&u.add(S);var v=b.name;v!=null&&!g.has(v)&&g.add(v)},this),this._sources=u,this._names=g,a.sources.forEach(function(b){var y=a.sourceContentFor(b);y!=null&&(c!=null&&(b=e.join(c,b)),m!=null&&(b=e.relative(m,b)),this.setSourceContent(b,y))},this)},r.prototype._validateMapping=function(a,l,c,d){if(l&&typeof l.line!="number"&&typeof l.column!="number")throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if(!(a&&"line"in a&&"column"in a&&a.line>0&&a.column>=0&&!l&&!c&&!d)){if(a&&"line"in a&&"column"in a&&l&&"line"in l&&"column"in l&&a.line>0&&a.column>=0&&l.line>0&&l.column>=0&&c)return;throw new Error("Invalid mapping: "+JSON.stringify({generated:a,source:c,original:l,name:d}))}},r.prototype._serializeMappings=function(){for(var a=0,l=1,c=0,d=0,m=0,u=0,g="",b,y,S,v,x=this._mappings.toArray(),A=0,E=x.length;A0){if(!e.compareByGeneratedPositionsInflated(y,x[A-1]))continue;b+=","}b+=i.encode(y.generatedColumn-a),a=y.generatedColumn,y.source!=null&&(v=this._sources.indexOf(y.source),b+=i.encode(v-u),u=v,b+=i.encode(y.originalLine-1-d),d=y.originalLine-1,b+=i.encode(y.originalColumn-c),c=y.originalColumn,y.name!=null&&(S=this._names.indexOf(y.name),b+=i.encode(S-m),m=S)),g+=b}return g},r.prototype._generateSourcesContent=function(a,l){return a.map(function(c){if(!this._sourcesContents)return null;l!=null&&(c=e.relative(l,c));var d=e.toSetString(c);return Object.prototype.hasOwnProperty.call(this._sourcesContents,d)?this._sourcesContents[d]:null},this)},r.prototype.toJSON=function(){var a={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(a.file=this._file),this._sourceRoot!=null&&(a.sourceRoot=this._sourceRoot),this._sourcesContents&&(a.sourcesContent=this._generateSourcesContent(a.sources,a.sourceRoot)),a},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},sourceMapGenerator.SourceMapGenerator=r,sourceMapGenerator}var sourceMapConsumer={},binarySearch={},hasRequiredBinarySearch;function requireBinarySearch(){return hasRequiredBinarySearch||(hasRequiredBinarySearch=1,function(i){i.GREATEST_LOWER_BOUND=1,i.LEAST_UPPER_BOUND=2;function e(t,s,r,o,a,l){var c=Math.floor((s-t)/2)+t,d=a(r,o[c],!0);return d===0?c:d>0?s-c>1?e(c,s,r,o,a,l):l==i.LEAST_UPPER_BOUND?s1?e(t,c,r,o,a,l):l==i.LEAST_UPPER_BOUND?c:t<0?-1:t}i.search=function(s,r,o,a){if(r.length===0)return-1;var l=e(-1,r.length,s,r,o,a||i.GREATEST_LOWER_BOUND);if(l<0)return-1;for(;l-1>=0&&o(r[l],r[l-1],!0)===0;)--l;return l}}(binarySearch)),binarySearch}var quickSort={},hasRequiredQuickSort;function requireQuickSort(){if(hasRequiredQuickSort)return quickSort;hasRequiredQuickSort=1;function i(s,r,o){var a=s[r];s[r]=s[o],s[o]=a}function e(s,r){return Math.round(s+Math.random()*(r-s))}function t(s,r,o,a){if(o=0){var S=this._originalMappings[y];if(m.column===void 0)for(var v=S.originalLine;S&&S.originalLine===v;)b.push({line:i.getArg(S,"generatedLine",null),column:i.getArg(S,"generatedColumn",null),lastColumn:i.getArg(S,"lastGeneratedColumn",null)}),S=this._originalMappings[++y];else for(var x=S.originalColumn;S&&S.originalLine===u&&S.originalColumn==x;)b.push({line:i.getArg(S,"generatedLine",null),column:i.getArg(S,"generatedColumn",null),lastColumn:i.getArg(S,"lastGeneratedColumn",null)}),S=this._originalMappings[++y]}return b},sourceMapConsumer.SourceMapConsumer=o;function a(d,m){var u=d;typeof d=="string"&&(u=i.parseSourceMapInput(d));var g=i.getArg(u,"version"),b=i.getArg(u,"sources"),y=i.getArg(u,"names",[]),S=i.getArg(u,"sourceRoot",null),v=i.getArg(u,"sourcesContent",null),x=i.getArg(u,"mappings"),A=i.getArg(u,"file",null);if(g!=this._version)throw new Error("Unsupported version: "+g);S&&(S=i.normalize(S)),b=b.map(String).map(i.normalize).map(function(E){return S&&i.isAbsolute(S)&&i.isAbsolute(E)?i.relative(S,E):E}),this._names=t.fromArray(y.map(String),!0),this._sources=t.fromArray(b,!0),this._absoluteSources=this._sources.toArray().map(function(E){return i.computeSourceURL(S,E,m)}),this.sourceRoot=S,this.sourcesContent=v,this._mappings=x,this._sourceMapURL=m,this.file=A}a.prototype=Object.create(o.prototype),a.prototype.consumer=o,a.prototype._findSourceIndex=function(d){var m=d;if(this.sourceRoot!=null&&(m=i.relative(this.sourceRoot,m)),this._sources.has(m))return this._sources.indexOf(m);var u;for(u=0;u1&&(I.source=v+N[1],v+=N[1],I.originalLine=y+N[2],y=I.originalLine,I.originalLine+=1,I.originalColumn=S+N[3],S=I.originalColumn,N.length>4&&(I.name=x+N[4],x+=N[4])),P.push(I),typeof I.originalLine=="number"&&C.push(I)}r(P,i.compareByGeneratedPositionsDeflated),this.__generatedMappings=P,r(C,i.compareByOriginalPositions),this.__originalMappings=C},a.prototype._findMapping=function(m,u,g,b,y,S){if(m[g]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+m[g]);if(m[b]<0)throw new TypeError("Column must be greater than or equal to 0, got "+m[b]);return e.search(m,u,y,S)},a.prototype.computeColumnSpans=function(){for(var m=0;m=0){var b=this._generatedMappings[g];if(b.generatedLine===u.generatedLine){var y=i.getArg(b,"source",null);y!==null&&(y=this._sources.at(y),y=i.computeSourceURL(this.sourceRoot,y,this._sourceMapURL));var S=i.getArg(b,"name",null);return S!==null&&(S=this._names.at(S)),{source:y,line:i.getArg(b,"originalLine",null),column:i.getArg(b,"originalColumn",null),name:S}}}return{source:null,line:null,column:null,name:null}},a.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(m){return m==null}):!1},a.prototype.sourceContentFor=function(m,u){if(!this.sourcesContent)return null;var g=this._findSourceIndex(m);if(g>=0)return this.sourcesContent[g];var b=m;this.sourceRoot!=null&&(b=i.relative(this.sourceRoot,b));var y;if(this.sourceRoot!=null&&(y=i.urlParse(this.sourceRoot))){var S=b.replace(/^file:\/\//,"");if(y.scheme=="file"&&this._sources.has(S))return this.sourcesContent[this._sources.indexOf(S)];if((!y.path||y.path=="/")&&this._sources.has("/"+b))return this.sourcesContent[this._sources.indexOf("/"+b)]}if(u)return null;throw new Error('"'+b+'" is not in the SourceMap.')},a.prototype.generatedPositionFor=function(m){var u=i.getArg(m,"source");if(u=this._findSourceIndex(u),u<0)return{line:null,column:null,lastColumn:null};var g={source:u,originalLine:i.getArg(m,"line"),originalColumn:i.getArg(m,"column")},b=this._findMapping(g,this._originalMappings,"originalLine","originalColumn",i.compareByOriginalPositions,i.getArg(m,"bias",o.GREATEST_LOWER_BOUND));if(b>=0){var y=this._originalMappings[b];if(y.source===g.source)return{line:i.getArg(y,"generatedLine",null),column:i.getArg(y,"generatedColumn",null),lastColumn:i.getArg(y,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},sourceMapConsumer.BasicSourceMapConsumer=a;function c(d,m){var u=d;typeof d=="string"&&(u=i.parseSourceMapInput(d));var g=i.getArg(u,"version"),b=i.getArg(u,"sections");if(g!=this._version)throw new Error("Unsupported version: "+g);this._sources=new t,this._names=new t;var y={line:-1,column:0};this._sections=b.map(function(S){if(S.url)throw new Error("Support for url field in sections not implemented.");var v=i.getArg(S,"offset"),x=i.getArg(v,"line"),A=i.getArg(v,"column");if(x=0;c--)this.prepend(l[c]);else if(l[r]||typeof l=="string")this.children.unshift(l);else throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+l);return this},o.prototype.walk=function(l){for(var c,d=0,m=this.children.length;d0){for(c=[],d=0;d0&&(S+=", "+v.join(", "));var x=0;Object.keys(this.aliases).forEach(function(w){var _=y.aliases[w];_.children&&_.referenceCount>1&&(S+=", alias"+ ++x+"="+w,_.children[0]="alias"+x)}),this.lookupPropertyFunctionIsUsed&&(S+=", "+this.lookupPropertyFunctionVarDeclaration());var A=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&A.push("blockParams"),this.useDepths&&A.push("depths");var E=this.mergeSource(S);return b?(A.push(E),Function.apply(this,A)):this.source.wrap(["function(",A.join(","),`) { `,E,"}"])},mergeSource:function(b){var y=this.environment.isSimple,S=!this.forceBuffer,v=void 0,x=void 0,A=void 0,E=void 0;return this.source.each(function(w){w.appendToBuffer?(A?w.prepend(" + "):A=w,E=w):(A&&(x?A.prepend("buffer += "):v=!0,E.add(";"),A=E=void 0),x=!0,y||(S=!1))}),S?A?(A.prepend("return "),E.add(";")):x||this.source.push('return "";'):(b+=", buffer = "+(v?"":this.initializeBuffer()),A?(A.prepend("return buffer + "),E.add(";")):this.source.push("return buffer;")),b&&this.source.prepend("var "+b.substring(2)+(v?"":`; `)),this.source.merge()},lookupPropertyFunctionVarDeclaration:function(){return` lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { return parent[propertyName]; } return undefined } `.trim()},blockValue:function(b){var y=this.aliasable("container.hooks.blockHelperMissing"),S=[this.contextName(0)];this.setupHelperArgs(b,0,S);var v=this.popStack();S.splice(1,0,v),this.push(this.source.functionCall(y,"call",S))},ambiguousBlockValue:function(){var b=this.aliasable("container.hooks.blockHelperMissing"),y=[this.contextName(0)];this.setupHelperArgs("",0,y,!0),this.flushInline();var S=this.topStack();y.splice(1,0,S),this.pushSource(["if (!",this.lastHelper,") { ",S," = ",this.source.functionCall(b,"call",y),"}"])},appendContent:function(b){this.pendingContent?b=this.pendingContent+b:this.pendingLocation=this.source.currentLocation,this.pendingContent=b},append:function(){if(this.isInline())this.replaceStack(function(y){return[" != null ? ",y,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var b=this.popStack();this.pushSource(["if (",b," != null) { ",this.appendToBuffer(b,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(b){this.lastContext=b},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(b,y,S,v){var x=0;!v&&this.options.compat&&!this.lastContext?this.push(this.depthedLookup(b[x++])):this.pushContext(),this.resolvePath("context",b,x,y,S)},lookupBlockParam:function(b,y){this.useBlockParams=!0,this.push(["blockParams[",b[0],"][",b[1],"]"]),this.resolvePath("context",y,1)},lookupData:function(b,y,S){b?this.pushStackLiteral("container.data(data, "+b+")"):this.pushStackLiteral("data"),this.resolvePath("data",y,0,!0,S)},resolvePath:function(b,y,S,v,x){var A=this;if(this.options.strict||this.options.assumeObjects){this.push(u(this.options.strict&&x,this,y,b));return}for(var E=y.length;Sthis.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var b=this.inlineStack;this.inlineStack=[];for(var y=0,S=b.length;yi!==null&&i.isSecureContext,createNativeAudioBufferConstructor=i=>i===null?null:i.hasOwnProperty("AudioBuffer")?i.AudioBuffer:null,createNativeAudioContextConstructor=i=>i===null?null:i.hasOwnProperty("AudioContext")?i.AudioContext:i.hasOwnProperty("webkitAudioContext")?i.webkitAudioContext:null,createNativeAudioWorkletNodeConstructor=i=>i===null?null:i.hasOwnProperty("AudioWorkletNode")?i.AudioWorkletNode:null,createNativeOfflineAudioContextConstructor=i=>i===null?null:i.hasOwnProperty("OfflineAudioContext")?i.OfflineAudioContext:i.hasOwnProperty("webkitOfflineAudioContext")?i.webkitOfflineAudioContext:null,createWindow=()=>typeof window>"u"?null:window,window$1=createWindow();createNativeOfflineAudioContextConstructor(window$1);createNativeAudioContextConstructor(window$1);createNativeAudioWorkletNodeConstructor(window$1);createNativeAudioBufferConstructor(window$1);createIsSecureContext(window$1);var libExports$2={},lib$2={get exports(){return libExports$2},set exports(i){libExports$2=i}},libExports$1={},lib$1={get exports(){return libExports$1},set exports(i){libExports$1=i}};function b64ToUint6(i){return i>64&&i<91?i-65:i>96&&i<123?i-71:i>47&&i<58?i+4:i===43?62:i===47?63:0}function decode(i,e){for(var t=i.replace(/[^A-Za-z0-9\+\/]/g,""),s=t.length,r=e?Math.ceil((s*3+1>>2)/e)*e:s*3+1>>2,o=new Uint8Array(r),a,l,c=0,d=0,m=0;m>>(16>>>a&24)&255;c=0}return o}var base64={decode},fetch$1=function(i,e){return new Promise(function(t,s){var r=new XMLHttpRequest;e&&(r.responseType=e),r.open("GET",i),r.onload=function(){r.status===200?t(r.response):s(Error(r.statusText))},r.onerror=function(){s(Error("Network Error"))},r.send()})};(function(i){var e=base64,t=fetch$1;function s(P){return function(I){return typeof I=="string"&&P.test(I)}}function r(P,I){return typeof P=="string"?P+I:typeof P=="function"?P(I):I}function o(P,I,R,N){var G=a(I)?l:c(I)?d:m(I)?u:g(I)?b:y(I)?S:v(I)?x:A(I)?E:w(I)?_:null,B=R||{};return G?G(P,I,B):N?Promise.resolve(N):Promise.reject("Source not valid ("+I+")")}o.fetch=t;function a(P){return P instanceof ArrayBuffer}function l(P,I,R){return new Promise(function(N,G){P.decodeAudioData(I,function(B){N(B)},function(){G("Can't decode audio data ("+I.slice(0,30)+"...)")})})}var c=s(/\.(mp3|wav|ogg)(\?.*)?$/i);function d(P,I,R){var N=r(R.from,I);return o(P,o.fetch(N,"arraybuffer"),R)}function m(P){return P&&typeof P.then=="function"}function u(P,I,R){return I.then(function(N){return o(P,N,R)})}var g=Array.isArray;function b(P,I,R){return Promise.all(I.map(function(N){return o(P,N,R,N)}))}function y(P){return P&&typeof P=="object"}function S(P,I,R){var N={},G=Object.keys(I).map(function(B){if(R.only&&R.only.indexOf(B)===-1)return null;var k=I[B];return o(P,k,R,k).then(function(T){N[B]=T})});return Promise.all(G).then(function(){return N})}var v=s(/\.json(\?.*)?$/i);function x(P,I,R){var N=r(R.from,I);return o(P,o.fetch(N,"text").then(JSON.parse),R)}var A=s(/^data:audio/);function E(P,I,R){var N=I.indexOf(",");return o(P,e.decode(I.slice(N+1)).buffer,R)}var w=s(/\.js(\?.*)?$/i);function _(P,I,R){var N=r(R.from,I);return o(P,o.fetch(N,"text").then(C),R)}function C(P){var I=P.indexOf("MIDI.Soundfont.");if(I<0)throw Error("Invalid MIDI.js Soundfont format");I=P.indexOf("=",I)+2;var R=P.lastIndexOf(",");return JSON.parse(P.slice(I,R)+"}")}i.exports&&(i.exports=o),typeof window<"u"&&(window.loadAudio=o)})(lib$1);var libExports={},lib={get exports(){return libExports},set exports(i){libExports=i}},adsr=ADSR$1;function ADSR$1(i){var e=i.createGain(),t=e._voltage=getVoltage(i),s=scale(t),r=scale(t),o=scale(t);return e._startAmount=scale(r),e._endAmount=scale(o),e._multiplier=scale(s),e._multiplier.connect(e),e._startAmount.connect(e),e._endAmount.connect(e),e.value=s.gain,e.startValue=r.gain,e.endValue=o.gain,e.startValue.value=0,e.endValue.value=0,Object.defineProperties(e,props),e}var props={attack:{value:0,writable:!0},decay:{value:0,writable:!0},sustain:{value:1,writable:!0},release:{value:0,writable:!0},getReleaseDuration:{value:function(){return this.release}},start:{value:function(i){var e=this._multiplier.gain,t=this._startAmount.gain,s=this._endAmount.gain;this._voltage.start(i),this._decayFrom=this._decayFrom=i+this.attack,this._startedAt=i;var r=this.sustain;e.cancelScheduledValues(i),t.cancelScheduledValues(i),s.cancelScheduledValues(i),s.setValueAtTime(0,i),this.attack?(e.setValueAtTime(0,i),e.linearRampToValueAtTime(1,i+this.attack),t.setValueAtTime(1,i),t.linearRampToValueAtTime(0,i+this.attack)):(e.setValueAtTime(1,i),t.setValueAtTime(0,i)),this.decay&&e.setTargetAtTime(r,this._decayFrom,getTimeConstant(this.decay))}},stop:{value:function(i,e){e&&(i=i-this.release);var t=i+this.release;if(this.release){var s=this._multiplier.gain,r=this._startAmount.gain,o=this._endAmount.gain;s.cancelScheduledValues(i),r.cancelScheduledValues(i),o.cancelScheduledValues(i);var a=getTimeConstant(this.release);if(this.attack&&i=e&&(d=e),d}var ADSR=adsr,EMPTY={},DEFAULTS={gain:1,attack:.01,decay:.1,sustain:.9,release:.3,loop:!1,cents:0,loopStart:0,loopEnd:0};function SamplePlayer(i,e,t){var s=!1,r=0,o={},a=i.createGain();a.gain.value=1;var l=Object.assign({},DEFAULTS,t),c={context:i,out:a,opts:l};return e instanceof AudioBuffer?c.buffer=e:c.buffers=e,c.start=function(u,g,b){if(c.buffer&&u!==null)return c.start(null,u,g);var y=u?c.buffers[u]:c.buffer;if(y){if(!s){console.warn("SamplePlayer not connected to any node.");return}}else{console.warn("Buffer "+u+" not found.");return}var S=b||EMPTY;g=Math.max(i.currentTime,g||0),c.emit("start",g,u,S);var v=m(u,y,S);return v.id=d(u,v),v.env.start(g),v.source.start(g),c.emit("started",g,v.id,v),S.duration&&v.stop(g+S.duration),v},c.play=function(u,g,b){return c.start(u,g,b)},c.stop=function(u,g){var b;return g=g||Object.keys(o),g.map(function(y){return b=o[y],b?(b.stop(u),b.id):null})},c.connect=function(u){return s=!0,a.connect(u),c},c.emit=function(u,g,b,y){c.onevent&&c.onevent(u,g,b,y);var S=c["on"+u];S&&S(g,b,y)},c;function d(u,g){return g.id=r++,o[g.id]=g,g.source.onended=function(){var b=i.currentTime;g.source.disconnect(),g.env.disconnect(),g.disconnect(),c.emit("ended",b,g.id,g)},g.id}function m(u,g,b){var y=i.createGain();return y.gain.value=0,y.connect(a),y.env=envelope(i,b,l),y.env.connect(y.gain),y.source=i.createBufferSource(),y.source.buffer=g,y.source.connect(y),y.source.loop=b.loop||l.loop,y.source.playbackRate.value=centsToRate(b.cents||l.cents),y.source.loopStart=b.loopStart||l.loopStart,y.source.loopEnd=b.loopEnd||l.loopEnd,y.stop=function(S){var v=S||i.currentTime;c.emit("stop",v,u);var x=y.env.stop(v);y.source.stop(x)},y}}function isNum$1(i){return typeof i=="number"}var PARAMS=["attack","decay","sustain","release"];function envelope(i,e,t){var s=ADSR(i),r=e.adsr||t.adsr;return PARAMS.forEach(function(o,a){r?s[o]=r[a]:s[o]=e[o]||t[o]}),s.value.value=isNum$1(e.gain)?e.gain:isNum$1(t.gain)?t.gain:1,s}function centsToRate(i){return i?Math.pow(2,i/1200):1}var player=SamplePlayer,events=function(i){return i.on=function(e,t){if(arguments.length===1&&typeof e=="function")return i.on("event",e);var s="on"+e,r=i[s];return i[s]=r?chain(r,t):t,i},i};function chain(i,e){return function(t,s,r,o){i(t,s,r,o),e(t,s,r,o)}}var REGEX$1=/^([a-gA-G])(#{1,}|b{1,}|x{1,}|)(-?\d*)\s*(.*)\s*$/;function regex$1(){return REGEX$1}var SEMITONES$1=[0,2,4,5,7,9,11];function parse$1(i,e,t){if(typeof i!="string")return null;var s=REGEX$1.exec(i);if(!s||!e&&s[4])return null;var r={letter:s[1].toUpperCase(),acc:s[2].replace(/x/g,"##")};return r.pc=r.letter+r.acc,r.step=(r.letter.charCodeAt(0)+3)%7,r.alt=r.acc[0]==="b"?-r.acc.length:r.acc.length,r.chroma=SEMITONES$1[r.step]+r.alt,s[3]&&(r.oct=+s[3],r.midi=r.chroma+12*(r.oct+1),r.freq=midiToFreq$1(r.midi,t)),e&&(r.tonicOf=s[4]),r}function midiToFreq$1(i,e){return Math.pow(2,(i-69)/12)*(e||440)}var parser={parse:parse$1,regex:regex$1,midiToFreq:midiToFreq$1},FNS=["letter","acc","pc","step","alt","chroma","oct","midi","freq"];FNS.forEach(function(i){parser[i]=function(e){var t=parse$1(e);return t&&typeof t[i]<"u"?t[i]:null}});var noteParser$1=parser,note$1=noteParser$1,isMidi=function(i){return i!==null&&i!==[]&&i>=0&&i<129},toMidi=function(i){return isMidi(i)?+i:note$1.midi(i)},notes=function(i){if(i.buffers){var e=i.opts.map,t=typeof e=="function"?e:toMidi,s=function(o){return o?t(o)||o:null};i.buffers=mapBuffers(i.buffers,s);var r=i.start;i.start=function(o,a,l){var c=s(o),d=c%1;return d&&(c=Math.floor(c),l=Object.assign(l||{},{cents:Math.floor(d*100)})),r(c,a,l)}}return i};function mapBuffers(i,e){return Object.keys(i).reduce(function(t,s){return t[e(s)]=i[s],t},{})}var isArr=Array.isArray,isObj=function(i){return i&&typeof i=="object"},OPTS={},scheduler=function(i){return i.schedule=function(e,t){var s=i.context.currentTime,r=e"u"?null:i.step?build(i.step,i.alt,i.oct):i<0||i>6?null:LETTERS.charAt(i)+accStr(e)+octStr(t)}function midi(i){if((isNum(i)||isStr(i))&&i>=0&&i<128)return+i;var e=parse(i);return e&&isDef(e.midi)?e.midi:null}function freq(i,e){var t=midi(i);return t===null?null:midiToFreq(t,e)}function letter(i){return(parse(i)||{}).letter}function acc(i){return(parse(i)||{}).acc}function pc(i){return(parse(i)||{}).pc}function step(i){return(parse(i)||{}).step}function alt(i){return(parse(i)||{}).alt}function chroma(i){return(parse(i)||{}).chroma}function oct(i){return(parse(i)||{}).oct}const noteParser=Object.freeze(Object.defineProperty({__proto__:null,acc,alt,build,chroma,freq,letter,midi,oct,parse,pc,regex,step},Symbol.toStringTag,{value:"Module"})),require$$0=getAugmentedNamespace(noteParser);var legacy,hasRequiredLegacy;function requireLegacy(){if(hasRequiredLegacy)return legacy;hasRequiredLegacy=1;var i=require$$0;function e(r,o){if(console.warn("new Soundfont() is deprected"),console.log("Please use Soundfont.instrument() instead of new Soundfont().instrument()"),!(this instanceof e))return new e(r);this.nameToUrl=o||e.nameToUrl,this.ctx=r,this.instruments={},this.promises=[]}e.prototype.onready=function(r){console.warn("deprecated API"),console.log("Please use Promise.all(Soundfont.instrument(), Soundfont.instrument()).then() instead of new Soundfont().onready()"),Promise.all(this.promises).then(r)},e.prototype.instrument=function(r,o){console.warn("new Soundfont().instrument() is deprecated."),console.log("Please use Soundfont.instrument() instead.");var a=this.ctx;if(r=r||"default",r in this.instruments)return this.instruments[r];var l={name:r,play:s(a,o)};if(this.instruments[r]=l,r!=="default"){var c=e.instrument(a,r,o).then(function(d){return l.play=d.play,l});this.promises.push(c),l.onready=function(d){console.warn("onready is deprecated. Use Soundfont.instrument().then()"),c.then(d)}}else l.onready=function(d){console.warn("onready is deprecated. Use Soundfont.instrument().then()"),d()};return l};function t(r,o,a){return console.warn("Soundfont.loadBuffers is deprecate."),console.log("Use Soundfont.instrument(..) and get buffers properties from the result."),e.instrument(r,o,a).then(function(l){return l.buffers})}e.loadBuffers=t;function s(r,o){return o=o||{},function(a,l,c,d){console.warn("The oscillator player is deprecated."),console.log("Starting with version 0.9.0 you will have to wait until the soundfont is loaded to play sounds.");var m=a>0&&a<129?+a:i.midi(a),u=m?i.midiToFreq(m,440):null;if(u){c=c||.2,d=d||{};var g=d.destination||o.destination||r.destination,b=d.vcoType||o.vcoType||"sine",y=d.gain||o.gain||.4,S=r.createOscillator();S.type=b,S.frequency.value=u;var v=r.createGain();return v.gain.value=y,S.connect(v),v.connect(g),S.start(l),c>0&&S.stop(l+c),S}}}return e.noteToMidi=i.midi,legacy=e,legacy}(function(i){var e=libExports$1,t=libExports;function s(l,c,d){if(arguments.length===1)return function(y,S){return s(l,y,S)};var m=d||{},u=m.isSoundfontURL||r,g=m.nameToUrl||o,b=u(c)?c:g(c,m.soundfont,m.format);return e(l,b,{only:m.only||m.notes}).then(function(y){var S=t(l,y,m).connect(m.destination?m.destination:l.destination);return S.url=b,S.name=c,S})}function r(l){return/\.js(\?.*)?$/i.test(l)}function o(l,c,d){return d=d==="ogg"?d:"mp3",c=c==="FluidR3_GM"?c:"MusyngKite","https://gleitz.github.io/midi-js-soundfonts/"+c+"/"+l+"-"+d+".js"}var a=requireLegacy();a.instrument=s,a.nameToUrl=o,i.exports&&(i.exports=a),typeof window<"u"&&(window.Soundfont=a)})(lib$2);NoteEnum.C,NoteEnum.D,NoteEnum.E,NoteEnum.F,NoteEnum.G,NoteEnum.A,NoteEnum.B;const speedInfo={"rall.":1.333333333,"poco rit.":1.333333333,"rit.":1.333333333,"molto rit.":1.333333333,"molto rall":1.333333333,molto:1.333333333,lentando:1.333333333,allargando:1.333333333,morendo:1.333333333,"accel.":.8,calando:2,"poco accel.":.8,"gradually slowing":1.333333333,slowing:1.333333333,slow:1.333333333,slowly:1.333333333,faster:1.333333333},getNextNote=(i,e)=>{var l;let t=0;const s=i.closest(e);let r=s;const o=s==null?void 0:s.closest("measure");let a=null;for(;!a&&t<((o==null?void 0:o.childNodes.length)||50);)t++,((l=r==null?void 0:r.nextElementSibling)==null?void 0:l.tagName)==="note"&&(a=r==null?void 0:r.nextElementSibling),r=r==null?void 0:r.nextElementSibling;return a},getGradualLengthByXml=i=>{var d,m,u,g;const e=new DOMParser().parseFromString(i,"text/xml"),t=Array.from(e.querySelectorAll("measure")),s=Array.from(e.querySelectorAll("note")),r=Array.from(e.querySelectorAll("words")),o=Array.from(e.querySelectorAll("metronome")),a=[];for(const b of[...r,...o]){const y=getNextNote(b,"direction");if(y){const S=y==null?void 0:y.closest("measure"),v=Array.from(S.querySelectorAll("note")),x=Array.from(S.childNodes).filter(w=>w.nodeName==="note").findIndex(w=>w===y);let A=0,E=0;for(let w=0;wb.index-y.index);const c=Object.keys(speedInfo).map(b=>b.toLocaleLowerCase());for(const b of a){let y=!1,S=0;const v=(m=b.textContent)==null?void 0:m.toLocaleLowerCase().trim();b===a[a.length-1]&&((u=l[l.length-1])==null?void 0:u.length)===1&&(y=!0);const x=c.find(A=>{const E=A.split(" ");return v&&E.includes(v)});if(b.type==="metronome"||b.type==="words"&&(v.startsWith("a tempo")||x)||y){const A=l.findIndex(E=>E.length===1);A>-1&&b.index>((g=l[A])==null?void 0:g[0].start)&&(S=-1,l[A][1]={start:b.index,measureIndex:b.measureIndex,closedMeasureIndex:b.measureIndex,noteInMeasureIndex:b.noteInMeasureIndex,allDuration:b.allDuration,leftDuration:b.leftDuration,type:v})}b.type==="words"&&x&&l.push([{start:b.index,measureIndex:b.measureIndex,closedMeasureIndex:b.measureIndex+S,noteInMeasureIndex:b.noteInMeasureIndex,allDuration:b.allDuration,leftDuration:b.leftDuration,type:v}])}return l},browserInfo=browser();dayjs.extend(duration);const getFixTime=i=>{const e=getDuration(state$1.osmd);let t=e.numerator||0,s=e.denominator||4;const r=e.beatUnit||"quarter";return state$1.repeatedBeats?t=t===2?4:t:t===2&&s===4&&(t=4),state$1.isOpenMetronome?60/i*formatBeatUnit(r)*(t/s):0},retain=i=>Math.ceil(i*1e6)/1e6,formatLyricsEntries=i=>{var s,r;const e=((s=i.parentStaffEntry)==null?void 0:s.voiceEntries)||[],t=[];for(const o of e)if((r=o.lyricsEntries)!=null&&r.table){const a=Object.values(o.lyricsEntries.table);for(const l of a)t.push(l==null?void 0:l.value.text)}return t},createSpeedInfo=(i,e)=>{var t,s;if(i&&speedInfo[(t=i.startWord)==null?void 0:t.toLocaleLowerCase()]){const r=Math.max(i.endXmlNoteIndex,3),o=[],a=e,l=e/speedInfo[(s=i.startWord)==null?void 0:s.toLocaleLowerCase()];for(let c=0;c{let e=i;const t=i.split(":");return t.length===1?e=`00:${t[0]}:00`:t.length===2&&(e=`00:${t[0]}:${t[1]}`),`1970-01-01 00:${e}0`},getDuration=i=>{var t;if(i){const{Duration:s,TempoInBPM:r,ActiveTimeSignature:o,TempoExpressions:a}=(t=i.GraphicSheet.MeasureList[0][0])==null?void 0:t.parentSourceMeasure;if(s){let l="quarter";for(const d of a)l=d.InstantaneousTempo.beatUnit||"quarter";return{...formatDuration(o),TempoInBPM:r,beatUnit:l}}}return{...new Fraction$1,TempoInBPM:90,beatUnit:"quarter"}};function formatDuration(i,e){return i}function formatBeatUnit(i){let e=4;switch(i){case"1024th":e=1024;break;case"512th":e=512;break;case"256th":e=256;break;case"128th":e=128;break;case"64th":e=64;break;case"32nd":e=32;break;case"16th":e=16;break;case"eighth":e=8;break;case"quarter":e=4;break;case"half":e=2;break;case"whole":e=1;break;case"breve":e=.5;break;case"long":e=.25;break;case"maxima":e=.125;break}return e}function getTimeByBeatUnit(i,e,t){return t/formatBeatUnit(i)*e}const setElementNoteBefore=(i,e,t)=>{let s=0;if(e){for(let r=0;r0){let r=0;const o=Array.from(t.childNodes).filter(l=>l.nodeName==="note"),a=o[o.length-1];if(s>=o.length&&a){t.insertBefore(i,t.childNodes[Array.from(t.childNodes).indexOf(a)]);return}for(let l=0;l{if(i){const e=i.toLocaleLowerCase(),t="d\\s?\\.s\\.",s="d\\.\\s?c\\.";return e==="@"||StringUtil.StringContainsSeparatedWord(e,t+" al fine",!0)||StringUtil.StringContainsSeparatedWord(e,t+" al coda",!0)||StringUtil.StringContainsSeparatedWord(e,s+" al fine",!0)||StringUtil.StringContainsSeparatedWord(e,s+" al coda",!0)||StringUtil.StringContainsSeparatedWord(e,s)||StringUtil.StringContainsSeparatedWord(e,"da\\s?capo",!0)||StringUtil.StringContainsSeparatedWord(e,t,!0)||StringUtil.StringContainsSeparatedWord(e,"dal\\s?segno",!0)||StringUtil.StringContainsSeparatedWord(e,"al\\s?coda",!0)||StringUtil.StringContainsSeparatedWord(e,"to\\s?coda",!0)||StringUtil.StringContainsSeparatedWord(e,"a (la )?coda",!0)||StringUtil.StringContainsSeparatedWord(e,"fine",!0)||StringUtil.StringContainsSeparatedWord(e,"coda",!0)||StringUtil.StringContainsSeparatedWord(e,"segno",!0)}return!1},onlyVisible=(i,e)=>{var b,y,S,v,x,A,E,w,_;if(!i)return"";const t=state$1.examSongId+"",s=new DOMParser().parseFromString(i,"text/xml"),r=((y=(b=s.getElementsByTagName("part-list"))==null?void 0:b[0])==null?void 0:y.getElementsByTagName("score-part"))||[],o=Array.from(r).map(C=>{var P;return((P=C.getElementsByTagName("part-name"))==null?void 0:P[0].textContent)||""}),a=s.getElementsByTagName("part"),l=[...(S=a[0])==null?void 0:S.getElementsByTagName("measure")],c=[...(v=a[0])==null?void 0:v.getElementsByTagName("metronome")],d=[...(x=a[0])==null?void 0:x.getElementsByTagName("words")],m=[...(A=a[0])==null?void 0:A.getElementsByTagName("coda")],u=[...(E=a[0])==null?void 0:E.getElementsByTagName("rehearsal")];((_=(w=o[0])==null?void 0:w.toLocaleUpperCase)==null?void 0:_.call(w))==="COMMON"&&(e++,o.shift());const g=r[e];if(state$1.partListNames=o,g){const C=g.getAttribute("id");Array.from(a).forEach(P=>{var I,R,N,G,B;if(P&&P.getAttribute("id")!==C)(I=P.parentNode)==null||I.removeChild(P);else if(P&&P.getAttribute("id")!=="P1"){const k={};for(let T=0;T{var ne;const V=(ne=T.parentElement)==null?void 0:ne.parentElement,J=V==null?void 0:V.parentElement,W=[...(J==null?void 0:J.childNodes)||[]],se=V?W.indexOf(V):-1;if(J&&se>-1){const fe=l.indexOf(J),Z=P.getElementsByTagName("measure")[fe];setElementNoteBefore(V,J,Z)}}),d.forEach(T=>{var J;let V=T.textContent||"";if(V=["cresc."].includes(V)?"":V,(isSpecialMark(V)||isSpeedKeyword(V)||isGradientWords(V)||isRepeatWord(V)||GRADIENT_SPEED_RESET_TAG)&&V){const W=(J=T.parentElement)==null?void 0:J.parentElement,se=W==null?void 0:W.parentElement,ne=[...(se==null?void 0:se.childNodes)||[]],fe=W?ne.indexOf(W):-1;if(W&&se&&fe>-1){const Z=l.indexOf(se),K=P.getElementsByTagName("measure")[Z];Array.from((K==null?void 0:K.getElementsByTagName("words"))||[]).reduce((Y,ae)=>{var de;return(de=ae.textContent)!=null&&de.includes(V)&&Y++,Y},0)===0&&(["12280"].includes(t)?K==null||K.insertBefore(W.cloneNode(!0),K==null?void 0:K.childNodes[fe]):setElementNoteBefore(W,se,K))}}}),m.forEach(T=>{var ne;const V=(ne=T.parentElement)==null?void 0:ne.parentElement,J=V==null?void 0:V.parentElement,W=[...(J==null?void 0:J.childNodes)||[]],se=V?W.indexOf(V):-1;if(V&&J&&se>-1){const fe=l.indexOf(J),Z=P.getElementsByTagName("measure")[fe];["12280"].includes(t)?Z==null||Z.insertBefore(V.cloneNode(!0),Z==null?void 0:Z.childNodes[se]):setElementNoteBefore(V,J,Z)}}),u.forEach(T=>{var W,se;const V=(W=T.parentElement)==null?void 0:W.parentElement,J=V==null?void 0:V.parentElement;if(J){const ne=l.indexOf(J);(se=P.getElementsByTagName("measure")[ne])==null||se.appendChild(V.cloneNode(!0))}})}else d.forEach(k=>{var V,J,W;const T=k.textContent||"";if(isSpeedKeyword(T)&&T){const se=(J=(V=k.parentElement)==null?void 0:V.parentElement)==null?void 0:J.parentElement;if(se&&se.firstElementChild&&se.firstElementChild!==k){const ne=(W=k.parentElement)==null?void 0:W.parentElement,fe=se.firstElementChild;se.insertBefore(ne,fe)}}});if(P&&P.getAttribute("id")===C){const k=P.getElementsByTagName("barline"),T=(G=k[k.length-1])==null?void 0:G.parentElement;if(((B=T==null?void 0:T.lastElementChild)==null?void 0:B.tagName)!=="barline"){const V=(T==null?void 0:T.children)||[];for(let J of V)if(J.tagName==="barline"){T==null||T.appendChild(J);break}}}}),Array.from(r).forEach(P=>{var I;P&&P.getAttribute("id")!==C&&((I=P.parentNode)==null||I.removeChild(P))})}return new XMLSerializer().serializeToString(appoggianceFormate(s))},appoggianceFormate=i=>{var s,r,o,a;if(!i)return i;const e=i.querySelectorAll("grace");if(!e.length)return i;const t=l=>l.querySelector("grace")?t(l==null?void 0:l.nextElementSibling):l;for(let l of e){const c=(s=l.parentElement)==null?void 0:s.querySelector("notations");if(c&&c.querySelectorAll("slur").length>1){let d=t((r=l.parentElement)==null?void 0:r.nextElementSibling);if(d&&d.querySelectorAll("slur").length>0){const m=Array.from(((o=d.querySelector("notations"))==null?void 0:o.children)||[]).map(g=>g.getAttribute("number")),u=c.querySelectorAll("slur");for(let g of u)m.includes(g.getAttribute("number"))||(a=d.querySelector("notations"))==null||a.appendChild(g)}}}return i},formatXML=i=>{var o,a;if(!i)return"";const e=new DOMParser().parseFromString(i,"text/xml"),t=Array.from(e.getElementsByTagName("measure"));let s=-1,r=-1;for(const l of t){s===-1&&l.getElementsByTagName("beats").length&&(s=parseInt(l.getElementsByTagName("beats")[0].textContent||"4")),r===-1&&l.getElementsByTagName("beat-type").length&&(r=parseInt(l.getElementsByTagName("beat-type")[0].textContent||"4"));const c=parseInt(((o=l.getElementsByTagName("divisions")[0])==null?void 0:o.textContent)||"256");if(l.getElementsByTagName("note").length===0){const d=(a=l.getElementsByTagName("forward")[0])==null?void 0:a.getElementsByTagName("duration")[0];d&&(d.textContent="0"),l.innerHTML=l.innerHTML+` ${c*s} 1 whole `}}return new XMLSerializer().serializeToString(e)},formateTimes=i=>{var T,V,J,W,se,ne,fe,Z,K,be,oe,Y,ae,de,le,me,ve,ye,U,Q,M,$,z,F,O,H,ie,ee,te,ce,he;const e=customData.customNoteRealValue,t=customData.customNoteCurrentTime,s=state$1.examSongId+"";state$1.partIndex+"";let r=browserInfo.huawei?.08:0;const o=[],a=[],l=[],{originSpeed:c}=state$1,d=(re,ge)=>{var Ee,_e,Te,Pe,Ce,Ie;return state$1.appName!=="GYM"?re:["906"].includes(s)?((Ee=ge.measures[0])==null?void 0:Ee.realKey)||re:["782","784"].includes(s)&&[14,16,30,32].includes((_e=ge.firstVerticalMeasure)==null?void 0:_e.measureNumber)?((Te=o[o.length-1])==null?void 0:Te.realKey)||re:["900","901","640","641","739","740","800","801","773","774","869","872","714","715"].includes(s)&&(((Pe=ge.firstVerticalMeasure)==null?void 0:Pe.measureNumber)===3||((Ce=ge.firstVerticalMeasure)==null?void 0:Ce.measureNumber)===9)&&((Ie=ge.measures[0])==null?void 0:Ie.realKey)||re};if(!i.cursor)return[];const m=i.cursor.Iterator;console.time("音符跑完时间");let u=0,g=0,b=[],y=[],S=0,v=0,x=0,A="quarter",E,w,_=0,C=0,P=0;const I=[];state$1.gradualTimes&&console.log("后台设置的渐慢小节时间",state$1.gradual,state$1.gradualTimes);let R=m.currentTimeStamp.RealValue;const N=[];let G=!1,B=0;for(;!m.EndReached;){const re=(T=m.CurrentVoiceEntries)!=null&&T[0]?[(V=m.CurrentVoiceEntries)==null?void 0:V[0]]:[];let ge=[];state$1.multitrack>0?ge=[...m.CurrentVoiceEntries]:ge=[...m.CurrentVoiceEntries].filter(Ee=>{var _e;return Ee&&((_e=Ee==null?void 0:Ee.ParentVoice)==null?void 0:_e.VoiceId)!=1});let xe=0,ue=!1,Ae=!1;if(ge.length&&!G){ue=!0;let Ee=[...m.CurrentVoiceEntries].reduce((_e,Te)=>(_e.push(...Te.Notes),_e),[]);if(Ee=Ee.sort((_e,Te)=>{var Pe,Ce;return((Pe=_e==null?void 0:_e.length)==null?void 0:Pe.realValue)-((Ce=Te==null?void 0:Te.length)==null?void 0:Ce.realValue)}),xe=((W=(J=Ee==null?void 0:Ee[0])==null?void 0:J.length)==null?void 0:W.realValue)||0,state$1.multitrack>0&&ge.length===2){const _e=((ne=(se=Ee[0])==null?void 0:se.length)==null?void 0:ne.realValue)||0;B=(((Z=(fe=Ee[Ee.length-1])==null?void 0:fe.length)==null?void 0:Z.realValue)||0)-_e,G=B!==0}}(K=I[I.length-1])!=null&&K.isDouble&&!ge.length&&(Ae=!0),state$1.multitrack>0&&!ue&&G&&(ue=!0,xe=B,G=!1,B=0),N.push(m.currentTimeStamp.realValue-R),R=m.currentTimeStamp.realValue;for(const Ee of re){let _e=Ee.notes[0];if(_e.IsGraceNote&&(_e=_e.parentStaffEntry.voiceEntries.find(Pe=>!Pe.isGrace).notes[0]),_e.fixedKey=_e.ParentVoiceEntry.ParentVoice.Parent.SubInstruments[0].fixedKey||0,(be=_e==null?void 0:_e.voiceEntry)!=null&&be.isGrace){ue=!0;let Te=[...m.currentVoiceEntries].reduce((Pe,Ce)=>(Pe.push(...Ce.notes),Pe),[]);Te=Te.sort((Pe,Ce)=>{var Ie,Re;return((Ie=Ce==null?void 0:Ce.length)==null?void 0:Ie.realValue)-((Re=Pe==null?void 0:Pe.length)==null?void 0:Re.realValue)}),xe=xe!=0?Math.min((Y=(oe=Te==null?void 0:Te[0])==null?void 0:oe.length)==null?void 0:Y.realValue,xe):(de=(ae=Te==null?void 0:Te[0])==null?void 0:ae.length)==null?void 0:de.realValue}state$1.multitrack>0&&xe>_e.length.realValue&&(xe=_e.length.realValue),I.push({note:_e,iterator:{...m},currentTime:xe,isDouble:ue,isMutileSubject:Ae})}m.moveToNextVisibleVoiceEntry(!1)}for(let{note:re,iterator:ge,currentTime:xe,isDouble:ue,isMutileSubject:Ae}of I){if(re){if(g===0&&l.push(re.sourceMeasure),g===0&&state$1.isSpecialBookCategory)for(const Qe of(le=re.sourceMeasure)==null?void 0:le.TempoExpressions)(me=Qe==null?void 0:Qe.InstantaneousTempo)!=null&&me.beatUnit&&(A=Qe.InstantaneousTempo.beatUnit);let Ee=re.sourceMeasure.tempoInBPM;const{metronomeNoteIndex:_e}=ge.currentMeasure;_e!==0&&_e>g&&(Ee=((ve=o[o.length-1])==null?void 0:ve.speed)||100);const Te=[(ye=re.sourceMeasure.verticalMeasureList)==null?void 0:ye[0]],{realValue:Pe}=ge.currentTimeStamp,{RealValue:Ce,Denominator:Ie}=formatDuration(ge.currentMeasure.activeTimeSignature,ge.currentMeasure.duration);let{wholeValue:Re,numerator:qe,denominator:bt,realValue:Ue}=re.length;e[u]&&(Ue=e[u]),ue&&xe>0&&xe!=Ue&&(console.log(`小节 ${re.sourceMeasure.MeasureNumberXML} 替换: noteLength: ${Ue}, 最小: ${xe}`),Ue=xe),t&&Ae&&N[u+1]>0&&Ue>N[u+1]&&(console.log(Ue,N[u+1]),Ue=N[u+1]);let ht=v,Je=(state$1.isSpecialBookCategory?Ee:c)||1;u===0&&(r+=getFixTime(Je),state$1.fixtime=r,console.log("fixtime:",r,"速度:",Je,"state.isSpecialBookCategory:",state$1.isSpecialBookCategory,"state.isOpenMetronome:",state$1.isOpenMetronome));let je=0,ze=(state$1.isSpecialBookCategory?Ee:c)||1;w=ge.currentMeasure.speedInfo||w,E=((U=i.Sheet.SoundTempos)==null?void 0:U.get(re.sourceMeasure.measureListIndex))||E,(!E||E.length<2)&&(E=createSpeedInfo(w,ze));const Ze=ge.currentMeasure.measureListIndex;if(state$1.gradualTimes&&Object.keys(state$1.gradualTimes).length>0){const Qe=state$1.gradual.find((We,ke)=>{var tt;const $e=state$1.gradual[ke+1];return We[0].measureIndex<=Ze&&((tt=We[1])==null?void 0:tt.measureIndex)>=Ze&&(!$e||($e==null?void 0:$e[0].measureIndex)!==Ze)}),[Ve,De]=Qe||[];if(Ve&&De){const We=De.measureIndex-Ve.measureIndex,ke=Ve.closedMeasureIndex==Ze&&g>=Ve.noteInMeasureIndex,$e=De.closedMeasureIndex===Ze&&g0)){const Qe=E[0]-(E[1]-E[0]),{resetXmlNoteIndex:Ve,endXmlNoteIndex:De}=w,We=De;let ke=(E[E.length-1]-Qe)/We;if(ke=re.DotsXml?ke/1.5:ke,__&&(ze=(Q=o[u-1])==null?void 0:Q.speed);Je=(state$1.isSpecialBookCategory?getTimeByBeatUnit(A,ze,ge.currentMeasure.activeTimeSignature.Denominator):c)||1;const $e=!(__);_++,$e&&(_=0,w=void 0,E=void 0,y=[])}const yt=Ue;let ft=je||Math.min(Ce,Ue)*formatBeatUnit(A)*(60/Je);const xt=Ce*Ie*(60/Je);v+=ft,x+=ft;let At=ft+ht;const dt=re.fixedKey||0,Et=($=(M=Te[0])==null?void 0:M.vfVoices["1"])==null?void 0:$.tickables[g];if(o.length&&o[o.length-1].relativeTime===ht)continue;if(u===0){let Qe=0;(((F=(z=re.sourceMeasure.verticalMeasureList)==null?void 0:z[0])==null?void 0:F.staffEntries)||[]).forEach(De=>{var We,ke,$e,tt,it,st;(st=(it=(tt=($e=(ke=(We=De==null?void 0:De.sourceStaffEntry)==null?void 0:We.voiceEntries)==null?void 0:ke[0])==null?void 0:$e.notes)==null?void 0:tt[0])==null?void 0:it.length)!=null&&st.realValue&&(Qe+=De.sourceStaffEntry.voiceEntries[0].notes[0].length.realValue)}),Qe0&&(r+=S)}let Ot=(O=Te[0])==null?void 0:O.stave;re.sourceMeasure.multipleRestMeasures&&(C=re.sourceMeasure.multipleRestMeasures,P=0),Pre.relativeTime-ge.relativeTime).map((re,ge)=>({...re,i:ge}));console.timeEnd("音符跑完时间");try{i.cursor.reset()}catch(re){}return state$1.activeMeasureIndex=k[0].MeasureNumberXML,k},getNoteByMeasuresSlursStart=i=>{let e=i,t;if(i.noteElement.tie&&i.noteElement.tie.StartNote&&(t=i.noteElement.tie.StartNote),e&&t&&t!==e.noteElement){for(const s of state$1.times)if(t===s.noteElement)return s}return e},selectionContainer="_selectionContainer_1pol0_1",position="_position_1pol0_8",note="_note_1pol0_11",staveBox="_staveBox_1pol0_14",leftStaveBox="_leftStaveBox_1pol0_17",rightStaveBox="_rightStaveBox_1pol0_31",centerStaveBox="_centerStaveBox_1pol0_45",prepareStaveBox="_prepareStaveBox_1pol0_70",disable="_disable_1pol0_73",line="_line_1pol0_76",scoreItem="_scoreItem_1pol0_86",dotWrap="_dotWrap_1pol0_123",noteFollow="_noteFollow_1pol0_138",styles$1={selectionContainer,position,note,staveBox,leftStaveBox,rightStaveBox,centerStaveBox,prepareStaveBox,disable,line,scoreItem,dotWrap,noteFollow},selectData=reactive({notes:[],staves:[]}),calcNoteData=()=>{var a,l,c,d,m,u,g,b,y,S,v,x,A;const i=((a=document.getElementById("musicAndSelection"))==null?void 0:a.getBoundingClientRect())||{x:0,y:0},e=i.x||0,t=i.y||0,s=state$1.times,r=[],o=[];for(let E=0;E{var N;(N=R==null?void 0:R.style)==null||N.setProperty("display","none")})}catch(R){}const I=((A=C==null?void 0:C.getBoundingClientRect)==null?void 0:A.call(C))||{x:0,width:0,y:0,height:0};try{P.length&&P.forEach(R=>{var N;(N=R==null?void 0:R.style)==null||N.removeProperty("display")})}catch(R){}_.staveBox={left:I.x-e+"px",top:I.y-t+"px",width:I.width+"px",height:I.height+"px"},selectData.staves.push(_)}o.push(w.MeasureNumberXML)}else if(w.multipleRestMeasures){const C=selectData.staves.find(P=>P.MeasureNumberXML===w.MeasureNumberXML-1);C!=null&&C.staveBox&&(_.staveBox={left:C.staveBox.left,top:C.staveBox.top,width:C.staveBox.width},selectData.staves.push(_),o.push(w.MeasureNumberXML))}}}},Selection=defineComponent({name:"selection",setup(){const i=useRoute$1();({...getQuery(),...i.query});const e=computed(()=>state$1.sectionStatus||state$1.modeType!=="practise"),t=computed(()=>s=>{if(state$1.sectionStatus){if(state$1.section.length===1&&s.MeasureNumberXML==state$1.section[0].MeasureNumberXML)return styles$1.leftStaveBox;if(state$1.section.length===2){if(state$1.sectionFirst&&s.MeasureNumberXML===state$1.sectionFirst.MeasureNumberXML)return styles$1.prepareStaveBox;if(s.MeasureNumberXML>=state$1.section[0].MeasureNumberXML&&s.MeasureNumberXML<=state$1.section[1].MeasureNumberXML)return s.MeasureNumberXML==state$1.section[0].MeasureNumberXML&&s.MeasureNumberXML==state$1.section[1].MeasureNumberXML?styles$1.centerStaveBox:s.MeasureNumberXML==state$1.section[0].MeasureNumberXML?styles$1.leftStaveBox:s.MeasureNumberXML==state$1.section[1].MeasureNumberXML?styles$1.rightStaveBox:styles$1.staveBox}}else if(state$1.activeMeasureIndex==s.MeasureNumberXML&&!state$1.isReport)return styles$1.staveBox});return onMounted(()=>{calcNoteData()}),()=>createVNode("div",{id:"selectionBox",class:styles$1.selectionContainer,onClick:s=>s.stopPropagation()},[selectData.staves.map(s=>{var a;const r=s.id&&evaluatingData.evaluatings[s.measureListIndex],o=!state$1.isReport&&!state$1.times[state$1.activeNoteIndex].multipleRestMeasures&&metronomeData.lineShow&&s.MeasureNumberXML===((a=metronomeData.activeMetro)==null?void 0:a.measureNumberXML)&&state$1.times[state$1.activeNoteIndex].MeasureNumberXML===s.MeasureNumberXML;return createVNode(Fragment,null,[s.staveBox&&createVNode("div",{class:[styles$1.position,t.value(s),r?`scoreItemLeve${r.leve}`:""],style:s.staveBox,onClick:()=>handleSelection(s)},[o&&createVNode("div",{class:styles$1.line,style:{left:metronomeData.activeMetro.left}},null),!state$1.isReport&&!!s.multipleRestMeasures&&state$1.activeMeasureIndex==s.MeasureNumberXML&&createVNode("div",{class:styles$1.dotWrap},[s.multipleRestMeasures]),createVNode(Transition,{name:"centerTop",onAfterEnter:()=>{r.show=!1}},{default:()=>{var l,c;return[(r==null?void 0:r.show)&&createVNode("div",{class:styles$1.scoreItem,style:{color:((l=leveByScoreMeasureIcons[r.leve])==null?void 0:l.color)||""}},[createVNode("img",{src:(c=leveByScoreMeasureIcons[r.leve])==null?void 0:c.icon},null),createVNode("span",null,[r.score])])]}})])])}),selectData.notes.map(s=>createVNode("div",{class:[styles$1.position,e.value&&styles$1.disable,styles$1.note,`noteIndex_${s.index}`],style:s.bbox,onClick:()=>skipNotePlay(s.index)},[createVNode("div",{class:styles$1.noteFollow,"data-vf":"vf"+s.id},[createVNode(Icon$1,{name:"success"},null),createVNode(Icon$1,{name:"cross"},null)])]))])}}),inGradualRange="_inGradualRange_1ryfw_24",styles={inGradualRange},musicRenderTypeKey="musicRenderType",musicData=reactive({showSelection:!1,isRenderLoading:!0,score:"",containerWidth:0}),resetMusicScore=()=>{var e;const i=((e=document.getElementById("musicAndSelection"))==null?void 0:e.offsetWidth)||625;state$1.musicZoom=i/musicData.containerWidth},resetRenderMusicScore=()=>{const i=queryString.parse(location.search),e=queryString.stringify({...i,_t:Date.now()});location.search="?"+e},MusicScore=defineComponent({name:"music-score",emits:["rendered"],props:{showSelection:{type:Boolean,default:!0},renderTypeKey:{type:String,default:""}},setup(i,{emit:e}){const t=()=>{const l=sessionStorage.getItem(i.renderTypeKey||musicRenderTypeKey);l in EnumMusicRenderType&&(state$1.musicRenderType=l)},s=async()=>{const l=await fetch(state$1.xmlUrl).then(d=>d.text()),c=formatXML(l);musicData.score=onlyVisible(c,state$1.partIndex),state$1.gradualTimes&&(state$1.gradual=getGradualLengthByXml(c))},r=async()=>{const l=document.getElementById("musicAndSelection");if(!l||!musicData.score)return;const c=new OpenSheetMusicDisplay(l,{drawTitle:!1,drawSubtitle:!1,autoResize:!1,followCursor:!1,drawPartNames:!1,drawComposer:!1});c.EngravingRules.PageRightMargin=2,c.EngravingRules.PageTopMargin=10,c.EngravingRules.PageTopMarginNarrow=3,c.EngravingRules.PageLeftMargin=2,c.EngravingRules.PageBottomMargin=2,c.EngravingRules.DYMusicScoreType=state$1.musicRenderType===EnumMusicRenderType.staff?"staff":"jianpu",state$1.musicRenderType===EnumMusicRenderType.fixedTone&&(window.sett={keySignature:!0}),await c.load(musicData.score),c.zoom=state$1.zoom,c.render(),e("rendered",c),musicData.showSelection=!0},o=()=>{var l;musicData.containerWidth=((l=document.getElementById("musicAndSelection"))==null?void 0:l.offsetWidth)||625};onMounted(async()=>{o(),t(),await s(),await r(),musicData.isRenderLoading=!1});const a=computed(()=>{var d;let l=!1;const c=((d=state$1.times[state$1.activeNoteIndex])==null?void 0:d.measureListIndex)||-1;for(const[m,u]of state$1.gradual)if(m&&u&&(l=m.measureIndex<=c&&ccreateVNode("div",{id:"musicAndSelection",style:{"--music-zoom":state$1.musicZoom},class:[a.value&&styles.inGradualRange,state$1.musicRenderType==EnumMusicRenderType.staff?"staff":"jianpuTone"]},[i.showSelection&&musicData.showSelection&&createVNode(Selection,null,null)])}}),scriptRel="modulepreload",assetsURL=function(i,e){return new URL(i,e).href},seen={},__vitePreload=function i(e,t,s){if(!t||t.length===0)return e();const r=document.getElementsByTagName("link");return Promise.all(t.map(o=>{if(o=assetsURL(o,s),o in seen)return;seen[o]=!0;const a=o.endsWith(".css"),l=a?'[rel="stylesheet"]':"";if(!!s)for(let m=r.length-1;m>=0;m--){const u=r[m];if(u.href===o&&(!a||u.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${l}`))return;const d=document.createElement("link");if(d.rel=a?"stylesheet":scriptRel,a||(d.as="script",d.crossOrigin=""),d.href=o,document.head.appendChild(d),a)return new Promise((m,u)=>{d.addEventListener("load",m),d.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>e())},relationships={flute:{59:[27,26,25,15,24,22,17,20],60:[27,26,25,15,24,22,17,20],61:[27,26,25,15,24,22,17,21],62:[27,26,25,15,24,22,17],63:[27,26,25,15,24,22,17,19],64:[27,26,25,15,24,22,19],65:[27,26,25,15,24,19],66:[27,26,25,15,17,19],67:[27,26,25,15,19],68:[27,26,25,15,18,19],69:[27,26,15,19],70:[[27,14,19],[27,24,15,19]],71:[27,15,19],72:[27,19],73:[19],74:[26,25,24,22,17,15],75:[26,25,24,22,17,19,15],76:[27,26,25,15,24,22,19],77:[27,26,25,15,24,19],78:[27,26,25,15,17,19],79:[27,26,25,15,19],80:[27,26,25,15,18,19],81:[27,26,15,19],82:[[27,14,19],[27,24,15,19]],83:[27,15,19],84:[27,19],85:[19],86:[26,25,15,19],87:[27,26,25,15,24,22,17,18,19],88:[27,26,15,24,22,19],89:[27,25,24,15,19],90:[27,25,17,15,19],91:[27,26,25,19],92:[26,25,18,19],93:[26,24,15,19],94:[23,24,15,19],95:[27,25,15,16],96:[27,26,25,18,24,19]},clarinet:{52:[[3,4,6,8,9,11,14,18,20],[3,4,6,8,9,11,14,20]],53:[[3,4,6,8,9,11,12,20],[3,4,6,8,9,11,18,20]],54:[[3,4,6,8,9,11,13,18,20],[3,4,6,8,9,11,13,20],[3,4,6,8,9,11,15]],55:[3,4,6,8,9,11,20],56:[3,4,6,8,9,11,16,20],57:[3,4,6,8,9,20],58:[3,4,6,8,20],59:[[3,4,6,9,20],[3,4,6,8,10,20]],60:[3,4,6,20],61:[3,4,6,7,20],62:[3,4,20],63:[[3,4,20,24],[3,4,5,20],[3,8,20]],64:[3,20],65:[20],66:[[3],[20,23,24]],67:[],68:[2],69:[1],70:[1,19],71:[[3,4,6,8,9,11,14,18,19,20],[3,4,6,8,9,11,14,19,20]],72:[[3,4,6,8,9,11,12,19,20],[3,4,6,8,9,11,18,19,20]],73:[[3,4,6,8,9,11,13,19,20],[3,4,6,8,9,11,13,18,19,20],[3,4,6,8,9,11,15,19,20]],74:[3,4,6,8,9,11,19,20],75:[3,4,6,8,9,11,16,19,20],76:[3,4,6,8,9,19,20],77:[3,4,6,8,19,20],78:[[3,4,6,9,19,20],[3,4,6,8,10,19,20]],79:[3,4,6,19,20],80:[3,4,6,7,19,20],81:[3,4,19,20],82:[[3,4,19,20,24],[3,4,5,19,20],[3,4,8,19,20]],83:[3,19,20],84:[19,20],85:[4,6,8,9,19,20],86:[4,6,8,16,19,20],87:[[4,6,8,10,16,19,20],[4,6,9,16,19,20]],88:[4,6,16,19,20],89:[4,6,7,16,19,20]},trumpet:{0:[1,2,3],54:[4,5,6],55:[4,2,6],56:[1,5,6],57:[4,5,3],58:[4,2,3],59:[1,5,3],60:[1,2,3],61:[4,5,6],62:[4,2,6],63:[1,5,6],64:[4,5,3],65:[4,2,3],66:[1,5,3],67:[1,2,3],68:[1,5,6],69:[4,5,3],70:[4,2,3],71:[1,5,3],72:[1,2,3],73:[4,5,3],74:[4,2,3],75:[1,5,3],76:[1,2,3],77:[4,2,3],78:[1,4,3],79:[1,2,3],80:[1,5,6],81:[4,5,3],82:[4,2,3],83:[1,5,3],84:[1,2,3]},horn:{53:[1],54:[2],55:[],56:[2,3],57:[1,2],58:[1],59:[2],60:[],61:[1,2],62:[1],63:[2],64:[],65:[1],66:[2],67:[],68:[0,2,3],69:[0,1,2],70:[0,1],71:[0,2],72:[0],73:[0,2,3],74:[0,1,2],75:[0,1],76:[0,2],77:[0],78:[0,2],79:[0],80:[0,2,3],81:[0,1,2],82:[0,1],83:[0,2],84:[0]},"up-bass-horn":{0:[1,2,3],40:[4,5,6],41:[4,2,6],42:[1,5,6],43:[4,5,3],44:[4,2,3],45:[1,5,3],46:[1,2,3],47:[4,5,6],48:[4,2,6],49:[1,5,6],50:[4,5,3],51:[4,2,3],52:[1,5,3],53:[1,2,3],54:[1,5,6],55:[4,5,3],56:[4,2,3],57:[1,5,3],58:[1,2,3],59:[4,5,3],60:[4,2,3],61:[1,5,3],62:[1,2,3],63:[4,2,3],64:[1,5,3],65:[1,2,3],66:[1,5,6],67:[4,5,3],68:[4,2,3],69:[1,5,3],70:[1,2,3]},trombone:{0:[1],40:[22],41:[11],42:[5],43:[4],44:[3],45:[2],46:[1],47:[22],48:[11],49:[5],50:[4],51:[3],52:[2],53:[1],54:[5],55:[4],56:[3],57:[2],58:[1],59:[4],60:[3],61:[2],62:[1],63:[3],64:[2],65:[1],66:[5],67:[4],68:[3],69:[2],70:[1]},saxophone:{58:[2,4,5,13,17,18,19,23],59:[2,4,5,11,17,18,19,23],60:[2,4,5,17,18,19,23],61:[2,4,5,12,17,18,19,23],62:[2,4,5,17,18,19],63:[2,4,5,17,18,19,22],64:[2,4,5,17,18],65:[2,4,5,17],66:[[2,4,5,18],[2,4,5,17,21]],67:[2,4,5],68:[2,4,5,10],69:[2,4],70:[[2,4,16],[2,17],[2,3]],71:[2],72:[[4],[2,15]],73:[],74:[2,4,5,6,17,18,19],75:[2,4,5,6,17,18,19,22],76:[2,4,5,6,17,18],77:[2,4,5,6,17],78:[[2,4,5,6,18],[2,4,5,6,17,21]],79:[2,4,5,6],80:[2,4,5,6,10],81:[2,4,6],82:[[2,4,6,16],[2,6,17],[2,3,6]],83:[2,6],84:[[4,6],[2,6,15]],85:[6],86:[6,9],87:[6,7,8],88:[6,8,9,14],89:[[6,7,8,9,14],[1,4,6]]},tuba:{0:[1,2,3],28:[4,5,6],29:[4,2,6],30:[1,5,6],31:[4,5,3],32:[4,2,3],33:[4,2,6],34:[1,2,3],35:[4,5,6],36:[4,2,6],37:[1,5,6],38:[4,5,3],39:[4,2,3],40:[1,5,3],41:[1,2,3],42:[1,5,6],43:[4,5,3],44:[4,2,3],45:[1,5,3],46:[1,2,3],47:[4,5,3],48:[4,2,3],49:[1,5,3],50:[1,2,3],51:[4,2,3],52:[1,5,3],53:[1,2,3],54:[1,5,6],55:[4,5,3],56:[4,2,3],57:[1,5,3],58:[1,2,3]},piccolo:{60:[11,2,33,4,5,6,7,8],61:[11,2,33,4,5,6,7,88],62:[11,2,33,4,5,6,7],63:[11,2,33,4,5,6,77],64:[11,2,33,4,5,6],65:[11,2,33,4,5],66:[11,2,33,4,6,7],67:[11,2,33,4],68:[11,2,33,5,6,77],69:[11,2,33],70:[[11,2,4,5],[1,11,2,4,6,7]],71:[[11,2],[11,33,4]],72:[11,33],73:[[2,33],[11]],74:[33],75:[33,4,5,6,7],76:[1,2,33,4,5,6],77:[1,2,33,4,5],78:[1,2,33,4,6,8],79:[1,2,33,4],80:[1,2,33,4,6,7,8],81:[1,2,33],82:[1,2,33,5,6,7],83:[1,2,33,5,6],84:[1,2,5,6],85:[1,2,4,5,7,8],86:[1,2,4,5,7,88]},"small-drum":{0:["active","active-left","active-right"],64:["left","right"]},hulusi:{64:[7,6,5,4,3,2,1,91],65:[7,6,5,4,3,2,11,91],66:[7,6,5,4,3,2,91],67:[7,6,5,4,3,2,1,92],68:[7,6,5,4,3,2,11,92],69:[7,6,5,4,3,2,93],70:[7,6,5,4,3,1,93],71:[7,6,5,4,3,93],72:[7,6,5,4,94],73:[7,6,5,3,2,94],74:[7,6,5,94],75:[7,6,4,3,94],76:[7,6,94],77:[7,5,4,3,2,95],78:[7,5,4,95],79:[7,95],80:[6,95],81:[96]},pan:{55:[21],57:[20],59:[19],60:[18],62:[17],64:[16],65:[15],67:[14],69:[13],71:[12],72:[11],74:[10],76:[9],77:[8],79:[7],81:[6],83:[5],84:[4],86:[3],88:[2],89:[1]},ocarina:{57:[1,2,3,4,5,6,7,8,9,10,11,12],58:[1,2,3,4,5,6,8,9,10,11,12],59:[1,2,4,5,6,8,9,10,11,12],60:[1,2,4,5,6,8,9,10,11,12],61:[1,2,4,5,6,7,8,9,11,12],62:[1,2,4,5,6,8,9,11,12],63:[1,2,4,5,6,9,11,12],64:[1,2,4,5,6,8,11,12],65:[1,2,4,5,6,11,12],66:[1,2,4,6,9,11,12],67:[1,2,4,6,11,12],68:[1,2,6,9,11,12],69:[1,2,6,11,12],70:[1,6,9,11,12],71:[1,6,11,12],72:[6,11,12],73:[6,9,12],74:[6,12],75:[6,9],76:[6],77:[]},melodica:{53:[1],54:[101],55:[2],56:[102],57:[3],58:[103],59:[4],60:[5],61:[104],62:[6],63:[105],64:[7],65:[8],66:[106],67:[9],68:[107],69:[10],70:[108],71:[11],72:[12],73:[109],74:[13],75:[110],76:[14],77:[15],78:[111],79:[16],80:[112],81:[17],82:[113],83:[18],84:[19]}},mappingVoicePart=(i,e)=>{if(e==="GYM")return Number(i);if(e==="COLEXIU")return{Flute:2,Clarinet:4,Trombone:14,Tuba:17,Trumpet:12,Horn:13,AltoSaxophone:6,TenorSaxophone:6,Saxophone:6,UpBassHorn:15,Melodica:137,HulusiFlute:136,PanFlute:135,Ocarina:134,Recorder:120,Ukulele:130,Mouthorgan:140,Piano:150}[i];if(e==="ORCHESTRA")return{1:23,2:2,3:5,4:4,5:12,6:14,7:13,8:15,9:17}[i];if(e==="INSTRUMENT"){let t=i;return typeof t=="string"&&(t=t.toLocaleLowerCase().replace(/ /g,"")),{flute:2,clarinet:4,trombone:14,tuba:17,trumpet:12,horn:13,altosaxophone:6,tenorsaxophone:6,saxophone:6,upbasshorn:15,melodica:137,hulusiFlute:136,panflute:135,recorder:120,ukulele:130,mouthorgan:140,piano:150,4:"piccolo",3:"hulusi-flute",1:"pan-flute",2:"ocarina",5:"melodica",tenorrecorder:"piccolo",woodwind:"hulusi-flute",panpipes:"pan-flute",ocarina:"ocarina",nai:"melodica"}[t]||0}return 0},subjectFingering=i=>{switch(i){case 2:return{name:"flute",direction:"transverse",height:"1.6rem",hasTizhi:!0};case 4:return{name:"clarinet",direction:"vertical",width:"3rem",hasTizhi:!0};case 5:case 6:return{name:"saxophone",direction:"vertical",width:"4.34rem",hasTizhi:!0};case 12:return{name:"trumpet",direction:"transverse",height:"1.6rem",hasTizhi:!1};case 13:return{name:"horn",direction:"vertical",width:"4.98rem",hasTizhi:!1};case 14:return{name:"trombone",direction:"transverse",height:"1.6rem",hasTizhi:!1};case 15:return{name:"up-bass-horn",direction:"vertical",width:"4.34rem",hasTizhi:!1};case 17:return{name:"tuba",direction:"vertical",width:"4.34rem",hasTizhi:!1};case 120:return{name:"piccolo",direction:"vertical",width:"3rem",orientation:1,hasTizhi:!0};case"piccolo":return{name:"piccolo",direction:"vertical",width:"3rem",orientation:1,code:"竖笛",hasTizhi:!0};case"hulusi-flute":return{name:"hulusi-flute",direction:"vertical",width:"3rem",orientation:1,code:"葫芦丝",hasTizhi:!1};case"pan-flute":return{name:"pan-flute",direction:"transverse",height:"2rem",disabledFinger:!0,orientation:0,code:"排箫",hasTizhi:!1};case"ocarina":return{name:"ocarina",direction:"vertical",width:"3rem",disabledFinger:!0,orientation:0,code:"陶笛",hasTizhi:!1};case"melodica":return{name:"melodica",direction:"transverse",height:"2rem",orientation:0,code:"口风琴",hasTizhi:!1};default:return{}}},getFingeringConfig=async i=>{switch(i){case"flute":return{json:(await __vitePreload(()=>import("./index-7f22768f.js"),[],import.meta.url)).default,relationship:relationships.flute,height:"60px",styles:{}};case"clarinet":return{json:(await __vitePreload(()=>import("./index-2499965c.js"),[],import.meta.url)).default,relationship:relationships.clarinet,styles:{marginLeft:".4rem",marginRight:".7rem"}};case"trumpet":return{json:(await __vitePreload(()=>import("./index-f01bef28.js"),[],import.meta.url)).default,relationship:relationships.trumpet};case"horn":return{json:(await __vitePreload(()=>import("./index-20c025d3.js"),[],import.meta.url)).default,relationship:relationships.horn,height:"212px",width:"252px"};case"tuba":return{json:(await __vitePreload(()=>import("./index-902205b3.js"),[],import.meta.url)).default,relationship:relationships.tuba};case"piccolo":return{json:(await __vitePreload(()=>import("./index-89cfcfe0.js"),[],import.meta.url)).default,relationship:relationships.piccolo};case"up-bass-horn":return{json:(await __vitePreload(()=>import("./index-ad5b3309.js"),[],import.meta.url)).default,relationship:relationships["up-bass-horn"]};case"trombone":return{json:(await __vitePreload(()=>import("./index-514ebf48.js"),[],import.meta.url)).default,relationship:relationships.trombone};case"saxophone":return{json:(await __vitePreload(()=>import("./index-5f35fb88.js"),[],import.meta.url)).default,relationship:relationships.saxophone,styles:{marginLeft:".2rem",marginRight:".3rem"}};case"small-drum":return{json:(await __vitePreload(()=>import("./index-f45b4b54.js"),[],import.meta.url)).default,relationship:relationships["up-bass-horn"],width:"180px"};case"hulusi-flute":return{json:(await __vitePreload(()=>import("./index-c5128d8d.js"),[],import.meta.url)).default,relationship:relationships.hulusi,styles:{marginLeft:".6rem",marginRight:".7rem"}};case"pan-flute":return{json:(await __vitePreload(()=>import("./index-5e1abd24.js"),[],import.meta.url)).default,relationship:relationships.pan};case"pan-flute1":return{json:(await __vitePreload(()=>import("./index-090ae1c2.js"),[],import.meta.url)).default,relationship:relationships.pan};case"pan-flute2":return{json:(await __vitePreload(()=>import("./index-f43a6980.js"),[],import.meta.url)).default,relationship:relationships.pan};case"pan-flute3":return{json:(await __vitePreload(()=>import("./index-6065c55a.js"),[],import.meta.url)).default,relationship:relationships.pan};case"pan-flute4":return{json:(await __vitePreload(()=>import("./index-384d7ea0.js"),[],import.meta.url)).default,relationship:relationships.pan};case"ocarina":return{json:(await __vitePreload(()=>import("./index-1c398a73.js"),[],import.meta.url)).default,relationship:relationships.ocarina,width:"180px",styles:{marginTop:"auto"}};case"ocarina1":return{json:(await __vitePreload(()=>import("./index-6e6ad231.js"),[],import.meta.url)).default,relationship:relationships.ocarina,width:"180px",styles:{marginTop:"auto"}};case"melodica":return{json:(await __vitePreload(()=>import("./index-2158d6ad.js"),[],import.meta.url)).default,relationship:relationships.melodica,height:"80px",styles:{marginTop:"auto"}};default:return null}},Notfind=defineComponent({name:"notfund",render(){return createVNode(Empty,{image:"error",description:this.$route.path+" 路径不存在"},{default:()=>[createVNode(Button,{type:"primary",onClick:()=>this.$router.replace("/")},{default:()=>[createTextVNode("返回首页")]})]})}});export{browser as $,nextTick as A,BORDER_UNSET_TOP_BOTTOM as B,withInstall as C,request as D,getQuery as E,onBeforeMount as F,setToken as G,HAPTICS_FEEDBACK as H,setBehaviorId as I,setCampId as J,onMounted as K,Loading$1 as L,storeData as M,Fragment as N,setUserInfo as O,getRandomKey as P,createTextVNode as Q,RouterView as R,state$1 as S,TheError as T,reactive as U,Icon$1 as V,evaluatingData as W,showToast as X,queryString as Y,api_shareAchievements as Z,Snackbar$1 as _,clamp as a,resetRenderMusicScore as a$,handlePerformDetection as a0,handleStartBegin as a1,handleEndBegin as a2,NoticeBar as a3,Popup as a4,handleEndSoundCheck as a5,handleViewReport as a6,handleStartEvaluat as a7,api_videoUpdate as a8,api_proxyServiceMessage as a9,getSecondRPM as aA,customData as aB,setGlobalData as aC,api_setStatusBarVisibility as aD,resetMusicScore as aE,onBeforeUnmount as aF,Skeleton as aG,Transition as aH,MusicScore as aI,AudioList as aJ,Evaluating as aK,isSpecialShapedScreen as aL,mappingVoicePart as aM,isRhythmicExercises as aN,subjectFingering as aO,formateTimes as aP,Metronome as aQ,getStorageSpeed as aR,api_cloudLoading as aS,addMeasureScore as aT,createRouter as aU,createWebHashHistory as aV,Notfind as aW,setStoreData as aX,createApp as aY,api_savePicture as aZ,musicRenderTypeKey as a_,connectWebsocket as aa,getNoteByMeasuresSlursStart as ab,useClickAway as ac,Button as ad,handleSetSpeed as ae,api_openCamera as af,api_closeCamera as ag,store_legacy as ah,toRefs as ai,isVNode as aj,api_cloudDestroy as ak,postMessage as al,useRoute$1 as am,showLoadingToast as an,request$1$1 as ao,closeToast as ap,getBehaviorId as aq,getCampId as ar,onUnmounted as as,handleChangeSection as at,togglePlay as au,metronomeData as av,handleResetPlay as aw,Badge as ax,api_back as ay,useRouter as az,makeArrayProp as b,raf as b$,handleRessetState as b0,toggleFollow as b1,getAudioCurrentTime as b2,handleFollowStart as b3,handleFollowEnd as b4,api_setEventTracking as b5,Tick as b6,FollowPractice as b7,handleInitTick as b8,promisefiyPostMessage as b9,api_setRequestedOrientation as bA,api_cloudAccompanyMessage as bB,__vitePreload as bC,useScrollParent as bD,onUpdated as bE,useRect as bF,isHidden as bG,addUnit as bH,usePlaceholder as bI,routeProps as bJ,useRoute as bK,popupSharedProps as bL,unknownProp as bM,popupSharedPropKeys as bN,withKeys as bO,noop$1 as bP,isFunction$3 as bQ,BORDER_LEFT as bR,BORDER_TOP as bS,callInterceptor as bT,inBrowser$2 as bU,mountComponent as bV,usePopupState as bW,useCustomFieldValue as bX,openBlock as bY,createElementBlock as bZ,normalizeStyle as b_,api_setCache as ba,getToken as bb,api_suspendPlay as bc,followData as bd,hanldeDirectSelection as be,api_openWebView as bf,musicscoresettingKey as bg,Comment as bh,Text as bi,api_getToken as bj,getAudioDuration as bk,sendResult as bl,removeResult as bm,api_toggleTune as bn,getEarphone as bo,api_getDeviceDelay as bp,commonjsGlobal as bq,IPlatform as br,api_goback as bs,usePageVisibility as bt,getFingeringConfig as bu,howler as bv,api_keepScreenLongLight as bw,EnumMusicRenderType as bx,evaluatCreateMusicPlayer as by,resetPlaybackToStart as bz,createNamespace$1 as c,getScrollTop as c0,setScrollTop as c1,onBeforeUpdate as c2,onDeactivated as c3,onMountedOrActivated as c4,getZIndexStyle as c5,windowWidth as c6,windowHeight as c7,onActivated as c8,onPopupReopen as c9,useTeleport as cA,useLock as cB,useRouteListener as cC,Teleport as cD,call as cE,createNamespace as cF,doubleRaf as ca,useId as cb,BORDER_TOP_BOTTOM as cc,setRootScrollTop as cd,getElementTop as ce,route as cf,inject as cg,provide as ch,withDirectives as ci,vShow as cj,getRootScrollTop as ck,isObject$3 as cl,isPromise as cm,FORM_KEY as cn,toArray as co,formatNumber as cp,CUSTOM_FIELD_INJECTION_KEY as cq,resetScroll as cr,makeNumberProp as cs,cancelRaf as ct,getSizeStyle as cu,BORDER_BOTTOM as cv,stopPropagation as cw,addNumber as cx,defineListenerProp as cy,useZIndex as cz,defineComponent as d,extend$2 as e,useParent as f,useExpose as g,useEventListener$1 as h,isDef$1 as i,createVNode as j,useChildren as k,pick$1 as l,makeRequiredProp as m,numericProp as n,makeNumericProp as o,preventDefault as p,makeStringProp as q,ref as r,computed as s,truthProp as t,useTouch as u,unitToPx as v,watchEffect as w,watch as x,isSameValue as y,mergeProps as z};