diff --git "a/dist/assets/playground-BB247pEx.js" "b/dist/assets/playground-BB247pEx.js" new file mode 100644--- /dev/null +++ "b/dist/assets/playground-BB247pEx.js" @@ -0,0 +1,5043 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./jszip.min-C1swU7HS.js","./bool-store-input-BqSYkTSj.js","./index-DvfQQ4hm.js","./index-BTzhfVTa.css"])))=>i.map(i=>d[i]); +import{p as watch,q as computed,s as toValue,u as shallowRef,x as onMounted,y as getCurrentInstance,_ as _export_sfc,c as createElementBlock,o as openBlock,F as Fragment,e as renderList,a as createBaseVNode,b as createCommentVNode,l as normalizeClass,t as toDisplayString,r as resolveComponent,f as createBlock,z as renderSlot,k as withModifiers,w as withDirectives,g as vShow,d as createVNode,v as vModelSelect,h as createTextVNode,j as vModelText,A as withCtx,m as __vitePreload}from"./index-DvfQQ4hm.js";import{t as tryOnScopeDispose,i as isClient,u as useDebounceFn,I as Icon,C as CheckButton,S as SheetSigns,a as SheetLive,b as bakeRawSvgs,m as matchNotations,c as Scheduler,p as parseNotationFromSheetDocument,d as assignTickByLocationTable}from"./check-button-DKH0cWTY.js";import{g as ContextedMusic,V as Variable,h as Command,D as Duration,i as Lyric,F as FractionNumber,T as Times,M as MusicBlock,j as LyricMode,k as LiteralString,W as WHOLE_DURATION_MAGNITUDE,t as termDictionary,u as ue,l as he,X,p as pick,B as BoolStoreInput,S as StoreInput,m as mutexDelay,n as SingleMLayout,o as VoltaMLayout,r as recoverJSON,q as measureLayout,s as replaceSourceToken,e as SheetDocument,f as StaffToken,d as downloadUrl,C as CM_TO_PX,v as TextSource,P as PitchContextTable,w as matchWithExactMIDI,x as LogRecorder,y as pe,z as animationDelay,A as f,E as npmPackage}from"./bool-store-input-BqSYkTSj.js";import{L as Loading,S as SheetSimple,a as SourceEditor,M as MusicTrack,b as LilyDocument,l as load}from"./loading-dots-Dk5xtdK1.js";const COLOR_NAMES=["lyrGray","lyrRed","lyrGreen","lyrYellow"],createPianoRhythmTrack=({ticks:t,durationMagnitude:e,subdivider:r,color:s=null})=>{const n=WHOLE_DURATION_MAGNITUDE/r,o=2**Math.floor(Math.log2(r)),l=new Duration({number:o,dots:0});let a=[];s&&a.push(new Variable({name:s}));for(let u=0;u{const o=WHOLE_DURATION_MAGNITUDE/e,l=2**Math.floor(Math.log2(e)),a=new Duration({number:l,dots:0}),u=[];let c=1;for(let d=0;dg===d)&&(c=1);let m=0;s.forEach((p,g)=>p.has(d)&&(m+=2**g)),u.push({number:c,type:m}),++c}let h=[].concat(...u.map(({number:d,type:m},p)=>[n?new Variable({name:COLOR_NAMES[m]}):null,new Lyric({content:LiteralString.fromString(d.toString()),duration:p===0?a.clone():null})])).map(d=>d);if(l!==e){const d=new FractionNumber(l,e).reduced;h=[new Times({cmd:"times",args:[d.toString(),new MusicBlock({body:h})]})]}return new LyricMode({cmd:"lyricmode",args:[new MusicBlock({body:h})]})},isPianoStaff=t=>t instanceof ContextedMusic&&t.type==="PianoStaff",createPianoRhythm=(t,{dotTracks:e=!0,numberTrack:r,colored:s}={})=>{console.assert(!!t.scores.length,"interpreter.scores is empty.");let n=t.mainScore&&t.mainScore.findFirst(isPianoStaff);if(n||(n=t.scores[0]&&t.scores[0].findFirst(isPianoStaff)),!n)throw new Error("[createPianoRhythm] no pianoMusic");const o=n.body;o.list=o.list.filter(m=>!(m instanceof ContextedMusic)||m.type!=="Lyrics");const l=o.list.filter(m=>m instanceof ContextedMusic&&m.type==="Staff"),a=o.list.indexOf(l[0])+1;t.updateTrackAssignments();const u=t.layoutMusic,c=l.map(m=>{const p=m.findAll(Variable).map(y=>y.name),g=u.musicTracks.filter(y=>p.includes(y.name));return new Set([].concat(...g.map(y=>y.block.noteTicks)))}),h=u.getNoteDurationSubdivider(),d=u.musicTracks[0].durationMagnitude;if(e&&c.forEach((m,p)=>{const g=COLOR_NAMES[2**Math.min(p,1)],y=createPianoRhythmTrack({ticks:m,durationMagnitude:d,subdivider:h,color:s?g:null}),w=new ContextedMusic({head:new Command({cmd:"new",args:["Lyrics"]}),body:y});o.list.splice(a+p,0,w)}),r){const m=a+(e?1:0),p=u.musicTracks[0].block.measureTicks,g=createPianoNumberTrack({durationMagnitude:d,subdivider:h,measureTicks:p,trackTicks:c,colored:s}),y=new ContextedMusic({head:new Command({cmd:"new",args:["Lyrics"]}),body:g});o.list.splice(m,0,y)}t.addIncludeFile("rhythmSymbols.ly"),t.appendReservedVariables(["dotB","dotW","lyrRed","lyrGreen","lyrYellow","lyrGray"])},LilyTerms=termDictionary,defaultWindow=isClient?window:void 0;function unrefElement(t){var e;const r=toValue(t);return(e=r==null?void 0:r.$el)!==null&&e!==void 0?e:r}function useMounted(){const t=shallowRef(!1),e=getCurrentInstance();return e&&onMounted(()=>{t.value=!0},e),t}function useSupported(t){const e=useMounted();return computed(()=>(e.value,!!t()))}function useResizeObserver(t,e,r={}){const{window:s=defaultWindow,...n}=r;let o;const l=useSupported(()=>s&&"ResizeObserver"in s),a=()=>{o&&(o.disconnect(),o=void 0)},u=watch(computed(()=>{const h=toValue(t);return Array.isArray(h)?h.map(d=>unrefElement(d)):[unrefElement(h)]}),h=>{if(a(),l.value&&s){o=new ResizeObserver(e);for(const d of h)d&&o.observe(d,n)}},{immediate:!0,flush:"post"}),c=()=>{a(),u()};return tryOnScopeDispose(c),{isSupported:l,stop:c}}const _sfc_main$6={name:"svg-piano-roll",props:{notation:Object,timeScale:{type:Number,default:.001},pitchScale:{type:Number,default:1},focusNoteIndex:Number,tooltips:{type:Boolean,default:!1}},computed:{notationObj(){return this.notation?this.notation:(console.warn("property of 'notation' is required."),null)}},methods:{onClickNote(t){this.$emit("clickNote",t)}}},_hoisted_1$6={class:"piano-roll-root"},_hoisted_2$5=["transform"],_hoisted_3$3=["width","height","onClick"],_hoisted_4$3=["y2"],_hoisted_5$3={key:0};function _sfc_render$6(t,e,r,s,n,o){return openBlock(),createElementBlock("g",_hoisted_1$6,[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.notationObj.notes,(l,a)=>(openBlock(),createElementBlock("g",{key:a,class:"note",transform:`translate(${l.start*r.timeScale}, ${-l.pitch*r.pitchScale})`},[createBaseVNode("rect",{width:l.duration*r.timeScale,height:r.pitchScale,onClick:u=>o.onClickNote(l),class:normalizeClass({focus:l.index===r.focusNoteIndex,...l.classes||{},on:l.on})},null,10,_hoisted_3$3),createBaseVNode("line",{x1:0,x2:0,y1:0,y2:r.pitchScale},null,8,_hoisted_4$3),r.tooltips?(openBlock(),createElementBlock("title",_hoisted_5$3,` + p: `+toDisplayString(l.pitch)+` + + id: `+toDisplayString(l.id)+` + + `,1)):createCommentVNode("",!0)],8,_hoisted_2$5))),128))])}const SvgPianoRoll=_export_sfc(_sfc_main$6,[["render",_sfc_render$6],["__scopeId","data-v-4f7393e0"]]),{parseMidiData}=ue,{Notation}=he,PADDINGS={left:3,right:1},_sfc_main$5={name:"midi-roll",props:{midiURL:String,player:Object,height:{type:Number,default:200},width:Number,timeScale:{type:Number,default:.001}},components:{SvgPianoRoll},data(){return{notation:null,timeScroll:0}},computed:{widthLimited(){return Number.isFinite(this.width)},aspectRatio(){return this.widthLimited?this.width/this.height:1.6},viewHeight(){if(this.notation){const{low:t,high:e}=this.notation.keyRange;return e-t+5}return 90},justifyWidth(){return(this.notation?this.notation.endTime:this.height*this.aspectRatio)*this.timeScale+PADDINGS.left+PADDINGS.right},viewWidth(){return this.widthLimited?this.width*this.viewHeight/this.height:this.justifyWidth},viewBox(){return`-${PADDINGS.left} ${this.notation?-this.notation.keyRange.high-1:0} ${this.viewWidth} ${this.viewHeight}`},pitchScales(){return this.notation?Array(9).fill().map((t,e)=>e*12).filter(t=>t>=this.notation.keyRange.low):[]},timeScales(){return this.notation?Array(Math.ceil(this.notation.endTime/15e3)).fill().map((t,e)=>e*15e3):[]},progressTime(){return this.player?this.player.progressTime:null},visibleTimeSpan(){return this.widthLimited?(this.viewWidth-(PADDINGS.left+PADDINGS.right))/this.timeScale:1/0},xScroll(){return this.timeScroll*this.timeScale}},created(){this.$nextTick(()=>this.load())},methods:{async load(){if(this.notation=null,this.player)this.notation=this.player.notation,this.updateNoteStatus();else if(this.midiURL){const t=await(await fetch(this.midiURL)).arrayBuffer(),e=parseMidiData(t);this.notation=Notation.parseMidi(e)}},updateNoteStatus(){if(!this.notation)return;const t=Number.isFinite(this.progressTime);for(const e of this.notation.notes)e.on=t&&e.startthis.progressTime},onClickCanvas(t){if(this.player){const e=(this.notation.keyRange.high-this.notation.keyRange.low+5)/this.height,s=(t.offsetX*e-PADDINGS.left+this.xScroll)/this.timeScale;s>=0&&sthis.visibleTimeSpan*.6?this.timeScroll=Math.max(Math.min(this.progressTime-this.visibleTimeSpan*.6,this.notation.endTime-this.visibleTimeSpan),0):this.progressTime-this.timeScrollo.onClickCanvas&&o.onClickCanvas(...a)),onMousewheel:e[1]||(e[1]=(...a)=>o.onMouseWheel&&o.onMouseWheel(...a))},[createBaseVNode("g",{transform:`translate(${-o.xScroll}, 0)`},[o.progressTime?(openBlock(),createElementBlock("g",_hoisted_3$2,[createBaseVNode("rect",{x:0,y:-120,height:121-n.notation.keyRange.low,width:o.progressTime*r.timeScale},null,8,_hoisted_4$2),createBaseVNode("line",{x1:o.progressTime*r.timeScale,x2:o.progressTime*r.timeScale,y1:-n.notation.keyRange.low+1,y2:"-120"},null,8,_hoisted_5$2)])):createCommentVNode("",!0),n.notation?(openBlock(),createElementBlock("g",_hoisted_6$2,[(openBlock(!0),createElementBlock(Fragment,null,renderList(n.notation.bars,(a,u)=>(openBlock(),createElementBlock("g",{class:"bar measure",key:u},[a.index===0?(openBlock(),createElementBlock("line",{key:0,x1:a.time*r.timeScale,x2:a.time*r.timeScale,y1:-n.notation.keyRange.low+1,y2:"-120"},null,8,_hoisted_7$1)):createCommentVNode("",!0)]))),128)),(openBlock(!0),createElementBlock(Fragment,null,renderList(o.pitchScales,a=>(openBlock(),createElementBlock("g",{class:"bar pitch-group",key:`p-${a}`},[createBaseVNode("line",{x1:0,x2:r.timeScale*n.notation.endTime,y1:-a+1,y2:-a+1},null,8,_hoisted_8$1)]))),128))])):createCommentVNode("",!0),n.notation?(openBlock(),createBlock(l,{key:2,notation:n.notation,timeScale:r.timeScale,pitchScale:1},null,8,["notation","timeScale"])):createCommentVNode("",!0)],8,_hoisted_2$4),n.notation?(openBlock(),createElementBlock("g",_hoisted_9$1,[createBaseVNode("rect",{class:"pitch-padding",x:-10,y:-120,width:10,height:-n.notation.keyRange.low+121},null,8,_hoisted_10$1),createBaseVNode("line",{x1:"0",x2:"0",y1:-n.notation.keyRange.low+1,y2:"-120"},null,8,_hoisted_11$1),createBaseVNode("line",{x1:"0",x2:r.timeScale*n.notation.endTime-o.xScroll,y1:-n.notation.keyRange.low+1,y2:-n.notation.keyRange.low+1},null,8,_hoisted_12$1),(openBlock(!0),createElementBlock(Fragment,null,renderList(o.pitchScales,a=>(openBlock(),createElementBlock("g",{class:"pitch-bar",key:`p-${a}`},[createBaseVNode("line",{x1:"-.8",x2:"0",y1:-a+.5,y2:-a+.5},null,8,_hoisted_13$1),createBaseVNode("text",{x:"-2",y:-a+1},toDisplayString(a),9,_hoisted_14$1)]))),128)),createBaseVNode("g",{transform:`translate(${-o.xScroll}, 0)`},[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.timeScales,a=>(openBlock(),createElementBlock("g",{class:"time-bar",key:`t-${a}`},[createBaseVNode("line",{x1:a*r.timeScale,x2:a*r.timeScale,y1:-n.notation.keyRange.low+1,y2:-n.notation.keyRange.low+1.8},null,8,_hoisted_16$1),createBaseVNode("text",{x:a*r.timeScale,y:-n.notation.keyRange.low+4},toDisplayString(a*.001)+"s",9,_hoisted_17$1)]))),128))],8,_hoisted_15$1)])):createCommentVNode("",!0)],40,_hoisted_1$5)}const MidiRoll=_export_sfc(_sfc_main$5,[["render",_sfc_render$5],["__scopeId","data-v-6b70e64a"]]),copyNotation=t=>({notes:t.notes.map(e=>pick(e,["startTick","endTick","softIndex","duration","classes","pitch","index","id"]))}),_sfc_main$4={name:"notations-matcher",props:{criterion:Object,sample:Object,path:Array,softIndexAsX:{type:Boolean,default:!1},timeFactorC:{type:Number,default:1}},components:{PinaoRoll:X},data(){return{timeScale:.001,positionC:{x:0,y:90},positionS:{x:0,y:160}}},computed:{links(){return this.path&&this.path.map((t,e)=>({ci:t,si:e})).filter(({ci:t})=>t>=0).map(({ci:t,si:e})=>({c:this.innerCriterion.notes[t],s:this.innerSample.notes[e]}))},linkIndices(){return this.path&&this.path.map((t,e)=>({c:t,s:e}))},width(){const t=this.innerCriterion&&this.innerCriterion.notes[this.innerCriterion.notes.length-1],e=this.innerSample&&this.innerSample.notes[this.innerSample.notes.length-1],r=t?t.start+t.duration:0,s=e?e.start+e.duration:0;return Math.max(r,s,1)*this.timeScale},innerCriterion(){if(!this.criterion)return null;const t=copyNotation(this.criterion);return this.satisfyNotation(t,"c"),t},innerSample(){if(!this.sample)return null;const t=copyNotation(this.sample);return this.satisfyNotation(t,"s"),t}},methods:{satisfyNotation(t,e){t&&t.notes.forEach(r=>{this.softIndexAsX?(r.start=r.softIndex*4e3,r.duration=2e3):(r.start=r.startTick*32*(e==="s"?this.timeFactorC:1),r.duration=2e3),r.classes=r.classes||{};const s=this.linkIndices.some(n=>n[e]===r.index);r.classes.missed=!s})},onClickCNote(t){const e=this.criterion.notes[t.index];this.$emit("clickCNote",e)},onClickSNote(t){const e=this.sample.notes[t.index];this.$emit("clickSNote",e)}}},_hoisted_1$4={class:"notations-matcher"},_hoisted_2$3=["viewBox"],_hoisted_3$1=["transform"],_hoisted_4$1=["transform"],_hoisted_5$1={key:0,class:"links"},_hoisted_6$1=["x1","x2","y1","y2"];function _sfc_render$4(t,e,r,s,n,o){const l=resolveComponent("PinaoRoll");return openBlock(),createElementBlock("div",_hoisted_1$4,[(openBlock(),createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",height:"480",viewBox:`-20 -20 ${o.width+40} 160`},[createBaseVNode("g",{transform:`translate(${n.positionC.x}, ${n.positionC.y})`,class:"criterion"},[o.innerCriterion?(openBlock(),createBlock(l,{key:0,notation:o.innerCriterion,timeScale:n.timeScale,pitchScale:1,tooltips:!0,onClickNote:o.onClickCNote},null,8,["notation","timeScale","onClickNote"])):createCommentVNode("",!0)],8,_hoisted_3$1),createBaseVNode("g",{transform:`translate(${n.positionS.x}, ${n.positionS.y})`,class:"sample"},[o.innerSample?(openBlock(),createBlock(l,{key:0,notation:o.innerSample,timeScale:n.timeScale,pitchScale:1,tooltips:!0,onClickNote:o.onClickSNote},null,8,["notation","timeScale","onClickNote"])):createCommentVNode("",!0)],8,_hoisted_4$1),o.links?(openBlock(),createElementBlock("g",_hoisted_5$1,[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.links,a=>(openBlock(),createElementBlock("line",{key:a.s.index,class:normalizeClass({oblique:a.s.start!==a.c.start,"heavy-oblique":Math.abs(a.s.start-a.c.start)>128}),x1:n.positionS.x+a.s.start*n.timeScale,x2:n.positionC.x+a.c.start*n.timeScale,y1:n.positionS.y-a.s.pitch+.5,y2:n.positionC.y-a.c.pitch+.5},null,10,_hoisted_6$1))),128))])):createCommentVNode("",!0)],8,_hoisted_2$3))])}const NotationsMatcher=_export_sfc(_sfc_main$4,[["render",_sfc_render$4],["__scopeId","data-v-b7701f59"]]),_sfc_main$3={name:"popup-dialog",props:{visible:Boolean},methods:{close(){this.$emit("update:visible",!1)}}},_hoisted_1$3=["open"];function _sfc_render$3(t,e,r,s,n,o){return openBlock(),createElementBlock("dialog",{open:r.visible,onClick:e[1]||(e[1]=(...l)=>o.close&&o.close(...l))},[createBaseVNode("main",{onClick:e[0]||(e[0]=withModifiers(()=>{},["stop"]))},[renderSlot(t.$slots,"default",{},void 0,!0)])],8,_hoisted_1$3)}const Dialog=_export_sfc(_sfc_main$3,[["render",_sfc_render$3],["__scopeId","data-v-42cf594d"]]);var LIB=function(t){var e={};function r(s){if(e[s])return e[s].exports;var n=e[s]={i:s,l:!1,exports:{}};return t[s].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(s,n,o){r.o(s,n)||Object.defineProperty(s,n,{enumerable:!0,get:o})},r.r=function(s){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})},r.t=function(s,n){if(n&1&&(s=r(s)),n&8||n&4&&typeof s=="object"&&s&&s.__esModule)return s;var o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:s}),n&2&&typeof s!="string")for(var l in s)r.d(o,l,(function(a){return s[a]}).bind(null,l));return o},r.n=function(s){var n=s&&s.__esModule?function(){return s.default}:function(){return s};return r.d(n,"a",n),n},r.o=function(s,n){return Object.prototype.hasOwnProperty.call(s,n)},r.p="",r(r.s="./lib.browser/index.frontend.js")}({"./lib.browser/frontend/remoteFile.js":function(module,__webpack_exports__,__webpack_require__){eval(`__webpack_require__.r(__webpack_exports__); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ "./node_modules/events/events.js"); +/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var sha1__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! sha1 */ "./node_modules/sha1/sha1.js"); +/* harmony import */ var sha1__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(sha1__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var diff__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! diff */ "./node_modules/diff/dist/diff.js"); +/* harmony import */ var diff__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(diff__WEBPACK_IMPORTED_MODULE_3__); + + + + +var RemoteFile = /** @class */ (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(RemoteFile, _super); + function RemoteFile(_a) { + var _b = _a === void 0 ? {} : _a, _c = _b.autoReconnect, autoReconnect = _c === void 0 ? false : _c; + var _this = _super.call(this) || this; + _this.connected = false; + _this.autoReconnect = autoReconnect; + return _this; + } + Object.defineProperty(RemoteFile.prototype, "hash", { + get: function () { + return sha1__WEBPACK_IMPORTED_MODULE_2___default()(this._content); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(RemoteFile.prototype, "content", { + get: function () { + return this._content; + }, + set: function (value) { + var timestamp = Date.now(); + var patch = diff__WEBPACK_IMPORTED_MODULE_3__["createPatch"](this.filePath, this._content, value); + this.socket.send(JSON.stringify({ + command: "increase", + timestamp: timestamp, + fromHash: this.hash, + toHash: sha1__WEBPACK_IMPORTED_MODULE_2___default()(value), + patch: patch, + })); + this.timestamp = timestamp; + this._content = value; + }, + enumerable: false, + configurable: true + }); + RemoteFile.prototype.connect = function (host, filePath) { + var _this = this; + if (this.socket) + this.socket.close(); + this.socket = new WebSocket(host, "editor-frontend"); + this.socket.onopen = function () { + console.debug("[RemoteFile] socket open."); + _this.connected = true; + _this.emit("connected"); + _this.socket.send(JSON.stringify({ command: "bindFile", filePath: filePath })); + }; + this.socket.onclose = function (event) { + console.debug("Synchronizer service socket closed:", event.code, event.reason); + _this.connected = false; + _this.emit("disconnected"); + if (_this.autoReconnect && event.code === 1006) { + console.log("[RemoteFile] try to reconnect..."); + setTimeout(function () { return _this.connect(host, filePath); }, 100); + } + }; + this.socket.onmessage = function (event) { + var message = JSON.parse(event.data); + switch (message.command) { + case "failure": + console.warn("service failure:", message.description); + _this.close(); + break; + case "fullSync": + _this.timestamp = message.timestamp; + _this._content = message.content; + console.assert(_this.hash === message.hash, "[RemoteFile] verify failed:", _this.hash, message.hash); + _this.emit("sync", { timestamp: _this.timestamp }); + break; + case "increase": + //console.log("increase:", this.hash, message); + // already consistent with remote, update timestemp only + if (_this.hash === message.toHash) { + _this.timestamp = Math.max(_this.timestamp, message.timestamp); + break; + } + if (_this.hash !== message.fromHash) { + if (message.timestamp < _this.timestamp) + break; + console.warn("hash mismatched:", _this.hash, message.fromHash); + _this.socket.send(JSON.stringify({ command: "requestFullSync", timestamp: _this.timestamp })); + } + else { + _this.timestamp = message.timestamp; + _this._content = diff__WEBPACK_IMPORTED_MODULE_3__["applyPatch"](_this._content, message.patch); + console.assert(_this.hash === message.toHash, "[RemoteFile] verify failed:", _this.hash, message.toHash); + _this.emit("sync", { timestamp: _this.timestamp }); + } + break; + default: + console.warn("[RemoteFile] unexpected command:", message); + } + }; + this.filePath = filePath; + }; + RemoteFile.prototype.close = function () { + this.socket.close(); + }; + return RemoteFile; +}(events__WEBPACK_IMPORTED_MODULE_1__["EventEmitter"])); +/* harmony default export */ __webpack_exports__["default"] = (RemoteFile); +; +//# sourceMappingURL=remoteFile.js.map + +//# sourceURL=webpack://LIB/./lib.browser/frontend/remoteFile.js?`)},"./lib.browser/index.frontend.js":function(module,__webpack_exports__,__webpack_require__){eval(`__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _frontend_remoteFile__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./frontend/remoteFile */ "./lib.browser/frontend/remoteFile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RemoteFile", function() { return _frontend_remoteFile__WEBPACK_IMPORTED_MODULE_0__["default"]; }); + + + +//# sourceMappingURL=index.frontend.js.map + +//# sourceURL=webpack://LIB/./lib.browser/index.frontend.js?`)},"./node_modules/base64-js/index.js":function(module,exports,__webpack_require__){eval(` + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + + +//# sourceURL=webpack://LIB/./node_modules/base64-js/index.js?`)},"./node_modules/buffer/index.js":function(module,exports,__webpack_require__){eval(`/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js") +var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js") +var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js") + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If \`Buffer.TYPED_ARRAY_SUPPORT\`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to \`Uint8Array\` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the \`TypedArray.prototype.subarray\` function. + * + * - IE10 has a broken \`TypedArray.prototype.subarray\` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set \`Buffer.TYPED_ARRAY_SUPPORT\` to \`false\` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack \`subarray\` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken \`subarray\` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented \`Uint8Array\` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of \`Uint8Array\` that have their + * prototype changed to \`Buffer.prototype\`. Furthermore, \`Buffer\` is a subclass of + * \`Uint8Array\`, so the returned instances will have all the node \`Buffer\` methods + * and the \`Uint8Array\` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The \`Uint8Array\` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if \`array\` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\\'offset\\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\\'length\\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented \`Uint8Array\` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use \`length < kMaxLength()\` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by \`Buffer.isBuffer\` and \`is-buffer\` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of \`val\` in \`buffer\` at offset >= \`byteOffset\`, +// OR the last index of \`val\` in \`buffer\` at offset <= \`byteOffset\`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into \`buffer\`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \\n and \\t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\\s+|\\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +//# sourceURL=webpack://LIB/./node_modules/buffer/index.js?`)},"./node_modules/charenc/charenc.js":function(module,exports){eval(`var charenc = { + // UTF-8 encoding + utf8: { + // Convert a string to a byte array + stringToBytes: function(str) { + return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); + }, + + // Convert a byte array to a string + bytesToString: function(bytes) { + return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); + } + }, + + // Binary encoding + bin: { + // Convert a string to a byte array + stringToBytes: function(str) { + for (var bytes = [], i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i) & 0xFF); + return bytes; + }, + + // Convert a byte array to a string + bytesToString: function(bytes) { + for (var str = [], i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(''); + } + } +}; + +module.exports = charenc; + + +//# sourceURL=webpack://LIB/./node_modules/charenc/charenc.js?`)},"./node_modules/crypt/crypt.js":function(module,exports){eval(`(function() { + var base64map + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + + crypt = { + // Bit-wise rotation left + rotl: function(n, b) { + return (n << b) | (n >>> (32 - b)); + }, + + // Bit-wise rotation right + rotr: function(n, b) { + return (n << (32 - b)) | (n >>> b); + }, + + // Swap big-endian to little-endian and vice versa + endian: function(n) { + // If number given, swap endian + if (n.constructor == Number) { + return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; + } + + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = crypt.endian(n[i]); + return n; + }, + + // Generate an array of any length of random bytes + randomBytes: function(n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, + + // Convert a byte array to big-endian 32-bit words + bytesToWords: function(bytes) { + for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, + + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function(words) { + for (var bytes = [], b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, + + // Convert a byte array to a hex string + bytesToHex: function(bytes) { + for (var hex = [], i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(''); + }, + + // Convert a hex string to a byte array + hexToBytes: function(hex) { + for (var bytes = [], c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, + + // Convert a byte array to a base-64 string + bytesToBase64: function(bytes) { + for (var base64 = [], i = 0; i < bytes.length; i += 3) { + var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; + for (var j = 0; j < 4; j++) + if (i * 8 + j * 6 <= bytes.length * 8) + base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); + else + base64.push('='); + } + return base64.join(''); + }, + + // Convert a base-64 string to a byte array + base64ToBytes: function(base64) { + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\\/]/ig, ''); + + for (var bytes = [], i = 0, imod4 = 0; i < base64.length; + imod4 = ++i % 4) { + if (imod4 == 0) continue; + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) + & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) + | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); + } + return bytes; + } + }; + + module.exports = crypt; +})(); + + +//# sourceURL=webpack://LIB/./node_modules/crypt/crypt.js?`)},"./node_modules/diff/dist/diff.js":function(module,exports,__webpack_require__){eval(`/*! + + diff v4.0.1 + +Software License Agreement (BSD License) + +Copyright (c) 2009-2015, Kevin Decker + +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Kevin Decker nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@license +*/ +(function (global, factory) { + true ? factory(exports) : + undefined; +}(this, function (exports) { 'use strict'; + + function Diff() {} + Diff.prototype = { + diff: function diff(oldString, newString) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var callback = options.callback; + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + this.options = options; + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } // Allow subclasses to massage the input prior to running + + + oldString = this.castInput(oldString); + newString = this.castInput(newString); + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + var bestPath = [{ + newPos: -1, + components: [] + }]; // Seed editLength = 0, i.e. the content starts with the same values + + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ + value: this.join(newString), + count: newString.length + }]); + } // Main worker method. checks all permutations of a given edit length for acceptance. + + + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = void 0; + + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + + + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done + + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced. + + + if (callback) { + (function exec() { + setTimeout(function () { + // This should not happen, but we want to be safe. + + /* istanbul ignore next */ + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + + if (ret) { + return ret; + } + } + } + }, + pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { + count: last.count + 1, + added: added, + removed: removed + }; + } else { + components.push({ + count: 1, + added: added, + removed: removed + }); + } + }, + extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ + count: commonCount + }); + } + + basePath.newPos = newPos; + return oldPos; + }, + equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + removeEmpty: function removeEmpty(array) { + var ret = []; + + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + + return ret; + }, + castInput: function castInput(value) { + return value; + }, + tokenize: function tokenize(value) { + return value.split(''); + }, + join: function join(chars) { + return chars.join(''); + } + }; + + function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + + newPos += component.count; // Common case + + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + + + var lastComponent = components[componentLen - 1]; + + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; + } + + function clonePath(path) { + return { + newPos: path.newPos, + components: path.components.slice(0) + }; + } + + var characterDiff = new Diff(); + function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); + } + + function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + + return defaults; + } + + // + // Ranges and exceptions: + // Latin-1 Supplement, 0080–00FF + // - U+00D7 × Multiplication sign + // - U+00F7 ÷ Division sign + // Latin Extended-A, 0100–017F + // Latin Extended-B, 0180–024F + // IPA Extensions, 0250–02AF + // Spacing Modifier Letters, 02B0–02FF + // - U+02C7 ˇ ˇ Caron + // - U+02D8 ˘ ˘ Breve + // - U+02D9 ˙ ˙ Dot Above + // - U+02DA ˚ ˚ Ring Above + // - U+02DB ˛ ˛ Ogonek + // - U+02DC ˜ ˜ Small Tilde + // - U+02DD ˝ ˝ Double Acute Accent + // Latin Extended Additional, 1E00–1EFF + + var extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/; + var reWhitespace = /\\S/; + var wordDiff = new Diff(); + + wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); + }; + + wordDiff.tokenize = function (value) { + var tokens = value.split(/(\\s+|[()[\\]{}'"]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set. + + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; + }; + + function diffWords(oldStr, newStr, options) { + options = generateOptions(options, { + ignoreWhitespace: true + }); + return wordDiff.diff(oldStr, newStr, options); + } + function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); + } + + var lineDiff = new Diff(); + + lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line + + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } // Merge the content and line separators into single tokens + + + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + + retLines.push(line); + } + } + + return retLines; + }; + + function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); + } + function diffTrimmedLines(oldStr, newStr, callback) { + var options = generateOptions(callback, { + ignoreWhitespace: true + }); + return lineDiff.diff(oldStr, newStr, options); + } + + var sentenceDiff = new Diff(); + + sentenceDiff.tokenize = function (value) { + return value.split(/(\\S.+?[.!?])(?=\\s+|$)/); + }; + + function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); + } + + var cssDiff = new Diff(); + + cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\\s+)/); + }; + + function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); + } + + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } + } + + function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); + } + + var objectPrototypeToString = Object.prototype.toString; + var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a + // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + + jsonDiff.useLongestToken = true; + jsonDiff.tokenize = lineDiff.tokenize; + + jsonDiff.castInput = function (value) { + var _this$options = this.options, + undefinedReplacement = _this$options.undefinedReplacement, + _this$options$stringi = _this$options.stringifyReplacer, + stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) { + return typeof v === 'undefined' ? undefinedReplacement : v; + } : _this$options$stringi; + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); + }; + + jsonDiff.equals = function (left, right) { + return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1')); + }; + + function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); + } // This function handles the presence of circular references by bailing out when encountering an + // object that is already on the "stack" of items being processed. Accepts an optional replacer + + function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if (_typeof(obj) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + + var sortedKeys = [], + _key; + + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + + sortedKeys.sort(); + + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + + return canonicalizedObj; + } + + var arrayDiff = new Diff(); + + arrayDiff.tokenize = function (value) { + return value.slice(); + }; + + arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; + }; + + function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); + } + + function parsePatch(uniDiff) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/), + delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); // Parse diff metadata + + while (i < diffstr.length) { + var line = diffstr[i]; // File header found, end parsing diff metadata + + if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) { + break; + } // Diff index + + + var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line); + + if (header) { + index.index = header[1]; + } + + i++; + } // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + + + parseFileHeader(index); + parseFileHeader(index); // Parse hunks + + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + + + function parseFileHeader(index) { + var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]); + + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\\t', 2); + var fileName = data[0].replace(/\\\\\\\\/g, '\\\\'); + + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + i++; + } + } // Parses a hunk + // This assumes that we are at the start of a hunk. + + + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/); + var hunk = { + oldStart: +chunkHeader[1], + oldLines: +chunkHeader[2] || 1, + newStart: +chunkHeader[3], + newLines: +chunkHeader[4] || 1, + lines: [], + linedelimiters: [] + }; + var addCount = 0, + removeCount = 0; + + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } // Handle the empty block count case + + + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } // Perform optional sanity checking + + + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; + } + + // Iterator that traverses in the range of [min, max], stepping + // by distance from a given start position. I.e. for [0, 4], with + // start of 2, this will iterate 2, 3, 1, 4, 0. + function distanceIterator (start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + + + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + + + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + + }; + } + + function applyPatch(source, uniDiff) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } // Apply the diff to the input + + + var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/), + delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) { + return line === patchContent; + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL, + addEOFNL; + /** + * Checks if the hunk exactly fits on the provided location + */ + + + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + + toPos++; + } + } + + return true; + } // Search best fit offsets for each hunk based on the previous ones + + + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + var iterator = distanceIterator(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + + + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } // Apply patch hunks + + + var diffOffset = 0; + + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + + diffOffset += _hunk.newLines - _hunk.oldLines; + + if (_toPos < 0) { + // Creating a new file + _toPos = 0; + } + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } // Handle EOFNL insertion/removal + + + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\\n'); + } + + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + + return lines.join(''); + } // Wrapper that supports multiple file patches via callbacks. + + function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = parsePatch(uniDiff); + } + + var currentIndex = 0; + + function processIndex() { + var index = uniDiff[currentIndex++]; + + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + + processIndex(); + } + + function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = diffLines(oldStr, newStr, options); + diff.push({ + value: '', + lines: [] + }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + var _loop = function _loop(i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\\n$/, '').split('\\n'); + current.lines = lines; + + if (current.added || current.removed) { + var _curRange; + + // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } // Output our changes + + + (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); // Track the updated file position + + + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + var _curRange2; + + // Overlapping + (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines))); + } else { + var _curRange3; + + // end the range and output + var contextSize = Math.min(lines.length, options.context); + + (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\\n$/.test(oldStr); + var newEOFNewline = /\\n$/.test(newStr); + var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines; + + if (!oldEOFNewline && noNlBeforeAdds) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file'); + } + + if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) { + curRange.push('\\\\ No newline at end of file'); + } + } + + hunks.push(hunk); + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + _loop(i); + } + + return { + oldFileName: oldFileName, + newFileName: newFileName, + oldHeader: oldHeader, + newHeader: newHeader, + hunks: hunks + }; + } + function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options); + var ret = []; + + if (oldFileName == newFileName) { + ret.push('Index: ' + oldFileName); + } + + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\\n') + '\\n'; + } + function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); + } + + function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); + } + function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; + } + + function calcLineCount(hunk) { + var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } + } + function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { + oldStart: Infinity + }, + theirsCurrent = theirs.hunks[theirsIndex] || { + oldStart: Infinity + }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + ret.hunks.push(mergedHunk); + } + } + + return ret; + } + + function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return parsePatch(param)[0]; + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + + return structuredPatch(undefined, undefined, base, param); + } + + return param; + } + + function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; + } + + function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { + mine: mine, + theirs: theirs + }; + } + } + + function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; + } + + function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, + oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, + newLines: hunk.newLines, + lines: hunk.lines + }; + } + + function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { + offset: mineOffset, + lines: mineLines, + index: 0 + }, + their = { + offset: theirOffset, + lines: theirLines, + index: 0 + }; // Handle any leading content + + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each. + + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + var _hunk$lines; + + // Mine inserted + (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + var _hunk$lines2; + + // Theirs inserted + (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } // Now push anything that may be remaining + + + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + calcLineCount(hunk); + } + + function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + var _hunk$lines3; + + (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges)); + + return; + } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + var _hunk$lines4; + + (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges)); + + return; + } + } else if (arrayEqual(myChanges, theirChanges)) { + var _hunk$lines5; + + (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges)); + + return; + } + + conflict(hunk, myChanges, theirChanges); + } + + function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + + if (theirChanges.merged) { + var _hunk$lines6; + + (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } + } + + function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); + } + + function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } + } + + function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } + } + + function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + + while (state.index < state.lines.length) { + var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; + } + + function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; // Once we've hit our add, then we are done + + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + merged.push(match); + matchIndex++; // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; + } + + function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); + } + + function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; + } + + function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + return { + oldLines: oldLines, + newLines: newLines + }; + } + + // See: http://code.google.com/p/google-diff-match-patch/wiki/API + function convertChangesToDMP(changes) { + var ret = [], + change, + operation; + + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + + return ret; + } + + function convertChangesToXML(changes) { + var ret = []; + + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + + return ret.join(''); + } + + function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + return n; + } + + /* See LICENSE file for terms of use */ + + exports.Diff = Diff; + exports.diffChars = diffChars; + exports.diffWords = diffWords; + exports.diffWordsWithSpace = diffWordsWithSpace; + exports.diffLines = diffLines; + exports.diffTrimmedLines = diffTrimmedLines; + exports.diffSentences = diffSentences; + exports.diffCss = diffCss; + exports.diffJson = diffJson; + exports.diffArrays = diffArrays; + exports.structuredPatch = structuredPatch; + exports.createTwoFilesPatch = createTwoFilesPatch; + exports.createPatch = createPatch; + exports.applyPatch = applyPatch; + exports.applyPatches = applyPatches; + exports.parsePatch = parsePatch; + exports.merge = merge; + exports.convertChangesToDMP = convertChangesToDMP; + exports.convertChangesToXML = convertChangesToXML; + exports.canonicalize = canonicalize; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); + + +//# sourceURL=webpack://LIB/./node_modules/diff/dist/diff.js?`)},"./node_modules/events/events.js":function(module,exports,__webpack_require__){eval(`// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +var R = typeof Reflect === 'object' ? Reflect : null +var ReflectApply = R && typeof R.apply === 'function' + ? R.apply + : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); + } + +var ReflectOwnKeys +if (R && typeof R.ownKeys === 'function') { + ReflectOwnKeys = R.ownKeys +} else if (Object.getOwnPropertySymbols) { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target) + .concat(Object.getOwnPropertySymbols(target)); + }; +} else { + ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); + }; +} + +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} + +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +} + +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; + +function checkListener(listener) { + if (typeof listener !== 'function') { + throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); + } +} + +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) { + throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + } + defaultMaxListeners = arg; + } +}); + +EventEmitter.init = function() { + + if (this._events === undefined || + this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; +}; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) { + throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + } + this._maxListeners = n; + return this; +}; + +function _getMaxListeners(that) { + if (that._maxListeners === undefined) + return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} + +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; + +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); + var doError = (type === 'error'); + + var events = this._events; + if (events !== undefined) + doError = (doError && events.error === undefined); + else if (!doError) + return false; + + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) + er = args[0]; + if (er instanceof Error) { + // Note: The comments on the \`throw\` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + } + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + + var handler = events[type]; + + if (handler === undefined) + return false; + + if (typeof handler === 'function') { + ReflectApply(handler, this, args); + } else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for (var i = 0; i < len; ++i) + ReflectApply(listeners[i], this, args); + } + + return true; +}; + +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + + checkListener(listener); + + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, + listener.listener ? listener.listener : listener); + + // Re-assign \`events\` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = + prepend ? [listener, existing] : [existing, listener]; + // If we've already got an array, just append. + } else if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + + existing.length + ' ' + String(type) + ' listeners ' + + 'added. Use emitter.setMaxListeners() to ' + + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + + return target; +} + +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.prependListener = + function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) + return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} + +function _onceWrap(target, type, listener) { + var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} + +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; + +EventEmitter.prototype.prependOnceListener = + function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; + +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = + function removeListener(type, listener) { + var list, events, position, i, originalListener; + + checkListener(listener); + + events = this._events; + if (events === undefined) + return this; + + list = events[type]; + if (list === undefined) + return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) + this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) + return this; + + if (position === 0) + list.shift(); + else { + spliceOne(list, position); + } + + if (list.length === 1) + events[type] = list[0]; + + if (events.removeListener !== undefined) + this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; + +EventEmitter.prototype.removeAllListeners = + function removeAllListeners(type) { + var listeners, events, i; + + events = this._events; + if (events === undefined) + return this; + + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) + this._events = Object.create(null); + else + delete events[type]; + } + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners !== undefined) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + +function _listeners(target, type, unwrap) { + var events = target._events; + + if (events === undefined) + return []; + + var evlistener = events[type]; + if (evlistener === undefined) + return []; + + if (typeof evlistener === 'function') + return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + + return unwrap ? + unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} + +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; + +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; + +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } +}; + +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + + if (events !== undefined) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener !== undefined) { + return evlistener.length; + } + } + + return 0; +} + +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; + +function arrayClone(arr, n) { + var copy = new Array(n); + for (var i = 0; i < n; ++i) + copy[i] = arr[i]; + return copy; +} + +function spliceOne(list, index) { + for (; index + 1 < list.length; index++) + list[index] = list[index + 1]; + list.pop(); +} + +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + return ret; +} + +function once(emitter, name) { + return new Promise(function (resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + + function resolver() { + if (typeof emitter.removeListener === 'function') { + emitter.removeListener('error', errorListener); + } + resolve([].slice.call(arguments)); + }; + + eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); + if (name !== 'error') { + addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); + } + }); +} + +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') { + eventTargetAgnosticAddListener(emitter, 'error', handler, flags); + } +} + +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) { + emitter.once(name, listener); + } else { + emitter.on(name, listener); + } + } else if (typeof emitter.addEventListener === 'function') { + // EventTarget does not have \`error\` event semantics like Node + // EventEmitters, we do not listen for \`error\` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin \`{ once: true }\` support so we + // have to do it manually. + if (flags.once) { + emitter.removeEventListener(name, wrapListener); + } + listener(arg); + }); + } else { + throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); + } +} + + +//# sourceURL=webpack://LIB/./node_modules/events/events.js?`)},"./node_modules/ieee754/index.js":function(module,exports){eval(`/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +//# sourceURL=webpack://LIB/./node_modules/ieee754/index.js?`)},"./node_modules/isarray/index.js":function(module,exports){eval(`var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +//# sourceURL=webpack://LIB/./node_modules/isarray/index.js?`)},"./node_modules/sha1/sha1.js":function(module,exports,__webpack_require__){eval(`/* WEBPACK VAR INJECTION */(function(Buffer) {(function() { + var crypt = __webpack_require__(/*! crypt */ "./node_modules/crypt/crypt.js"), + utf8 = __webpack_require__(/*! charenc */ "./node_modules/charenc/charenc.js").utf8, + bin = __webpack_require__(/*! charenc */ "./node_modules/charenc/charenc.js").bin, + + // The core + sha1 = function (message) { + // Convert to byte array + if (message.constructor == String) + message = utf8.stringToBytes(message); + else if (typeof Buffer !== 'undefined' && typeof Buffer.isBuffer == 'function' && Buffer.isBuffer(message)) + message = Array.prototype.slice.call(message, 0); + else if (!Array.isArray(message)) + message = message.toString(); + + // otherwise assume byte array + + var m = crypt.bytesToWords(message), + l = message.length * 8, + w = [], + H0 = 1732584193, + H1 = -271733879, + H2 = -1732584194, + H3 = 271733878, + H4 = -1009589776; + + // Padding + m[l >> 5] |= 0x80 << (24 - l % 32); + m[((l + 64 >>> 9) << 4) + 15] = l; + + for (var i = 0; i < m.length; i += 16) { + var a = H0, + b = H1, + c = H2, + d = H3, + e = H4; + + for (var j = 0; j < 80; j++) { + + if (j < 16) + w[j] = m[i + j]; + else { + var n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16]; + w[j] = (n << 1) | (n >>> 31); + } + + var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + ( + j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 : + j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 : + j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 : + (H1 ^ H2 ^ H3) - 899497514); + + H4 = H3; + H3 = H2; + H2 = (H1 << 30) | (H1 >>> 2); + H1 = H0; + H0 = t; + } + + H0 += a; + H1 += b; + H2 += c; + H3 += d; + H4 += e; + } + + return [H0, H1, H2, H3, H4]; + }, + + // Public API + api = function (message, options) { + var digestbytes = crypt.wordsToBytes(sha1(message)); + return options && options.asBytes ? digestbytes : + options && options.asString ? bin.bytesToString(digestbytes) : + crypt.bytesToHex(digestbytes); + }; + + api._blocksize = 16; + api._digestsize = 20; + + module.exports = api; +})(); + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) + +//# sourceURL=webpack://LIB/./node_modules/sha1/sha1.js?`)},"./node_modules/tslib/tslib.es6.js":function(module,__webpack_exports__,__webpack_require__){eval(`__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__createBinding", function() { return __createBinding; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldGet", function() { return __classPrivateFieldGet; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__classPrivateFieldSet", function() { return __classPrivateFieldSet; }); +/*! *****************************************************************************\r +Copyright (c) Microsoft Corporation.\r +\r +Permission to use, copy, modify, and/or distribute this software for any\r +purpose with or without fee is hereby granted.\r +\r +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r +PERFORMANCE OF THIS SOFTWARE.\r +***************************************************************************** */\r +/* global Reflect, Promise */\r +\r +var extendStatics = function(d, b) {\r + extendStatics = Object.setPrototypeOf ||\r + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r + return extendStatics(d, b);\r +};\r +\r +function __extends(d, b) {\r + extendStatics(d, b);\r + function __() { this.constructor = d; }\r + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r +}\r +\r +var __assign = function() {\r + __assign = Object.assign || function __assign(t) {\r + for (var s, i = 1, n = arguments.length; i < n; i++) {\r + s = arguments[i];\r + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r + }\r + return t;\r + }\r + return __assign.apply(this, arguments);\r +}\r +\r +function __rest(s, e) {\r + var t = {};\r + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r + t[p] = s[p];\r + if (s != null && typeof Object.getOwnPropertySymbols === "function")\r + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r + t[p[i]] = s[p[i]];\r + }\r + return t;\r +}\r +\r +function __decorate(decorators, target, key, desc) {\r + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\r + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r + return c > 3 && r && Object.defineProperty(target, key, r), r;\r +}\r +\r +function __param(paramIndex, decorator) {\r + return function (target, key) { decorator(target, key, paramIndex); }\r +}\r +\r +function __metadata(metadataKey, metadataValue) {\r + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);\r +}\r +\r +function __awaiter(thisArg, _arguments, P, generator) {\r + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r + return new (P || (P = Promise))(function (resolve, reject) {\r + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\r + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r + step((generator = generator.apply(thisArg, _arguments || [])).next());\r + });\r +}\r +\r +function __generator(thisArg, body) {\r + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;\r + function verb(n) { return function (v) { return step([n, v]); }; }\r + function step(op) {\r + if (f) throw new TypeError("Generator is already executing.");\r + while (_) try {\r + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r + if (y = 0, t) op = [op[0] & 2, t.value];\r + switch (op[0]) {\r + case 0: case 1: t = op; break;\r + case 4: _.label++; return { value: op[1], done: false };\r + case 5: _.label++; y = op[1]; op = [0]; continue;\r + case 7: op = _.ops.pop(); _.trys.pop(); continue;\r + default:\r + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r + if (t[2]) _.ops.pop();\r + _.trys.pop(); continue;\r + }\r + op = body.call(thisArg, _);\r + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r + }\r +}\r +\r +function __createBinding(o, m, k, k2) {\r + if (k2 === undefined) k2 = k;\r + o[k2] = m[k];\r +}\r +\r +function __exportStar(m, exports) {\r + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r +}\r +\r +function __values(o) {\r + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;\r + if (m) return m.call(o);\r + if (o && typeof o.length === "number") return {\r + next: function () {\r + if (o && i >= o.length) o = void 0;\r + return { value: o && o[i++], done: !o };\r + }\r + };\r + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");\r +}\r +\r +function __read(o, n) {\r + var m = typeof Symbol === "function" && o[Symbol.iterator];\r + if (!m) return o;\r + var i = m.call(o), r, ar = [], e;\r + try {\r + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r + }\r + catch (error) { e = { error: error }; }\r + finally {\r + try {\r + if (r && !r.done && (m = i["return"])) m.call(i);\r + }\r + finally { if (e) throw e.error; }\r + }\r + return ar;\r +}\r +\r +function __spread() {\r + for (var ar = [], i = 0; i < arguments.length; i++)\r + ar = ar.concat(__read(arguments[i]));\r + return ar;\r +}\r +\r +function __spreadArrays() {\r + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r + for (var r = Array(s), k = 0, i = 0; i < il; i++)\r + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r + r[k] = a[j];\r + return r;\r +};\r +\r +function __await(v) {\r + return this instanceof __await ? (this.v = v, this) : new __await(v);\r +}\r +\r +function __asyncGenerator(thisArg, _arguments, generator) {\r + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r + var g = generator.apply(thisArg, _arguments || []), i, q = [];\r + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\r + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r + function fulfill(value) { resume("next", value); }\r + function reject(value) { resume("throw", value); }\r + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r +}\r +\r +function __asyncDelegator(o) {\r + var i, p;\r + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;\r + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }\r +}\r +\r +function __asyncValues(o) {\r + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r + var m = o[Symbol.asyncIterator], i;\r + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);\r + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r +}\r +\r +function __makeTemplateObject(cooked, raw) {\r + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }\r + return cooked;\r +};\r +\r +function __importStar(mod) {\r + if (mod && mod.__esModule) return mod;\r + var result = {};\r + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r + result.default = mod;\r + return result;\r +}\r +\r +function __importDefault(mod) {\r + return (mod && mod.__esModule) ? mod : { default: mod };\r +}\r +\r +function __classPrivateFieldGet(receiver, privateMap) {\r + if (!privateMap.has(receiver)) {\r + throw new TypeError("attempted to get private field on non-instance");\r + }\r + return privateMap.get(receiver);\r +}\r +\r +function __classPrivateFieldSet(receiver, privateMap, value) {\r + if (!privateMap.has(receiver)) {\r + throw new TypeError("attempted to set private field on non-instance");\r + }\r + privateMap.set(receiver, value);\r + return value;\r +}\r + + +//# sourceURL=webpack://LIB/./node_modules/tslib/tslib.es6.js?`)},"./node_modules/webpack/buildin/global.js":function(module,exports){eval(`var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +//# sourceURL=webpack://LIB/(webpack)/buildin/global.js?`)}});LIB===void 0&&console.error("esm-webpack-plugin: nothing exported!");const _LIB$RemoteFile=LIB.RemoteFile,_sfc_main$2={props:{host:String,filePath:String,content:String,filePathReadOnly:Boolean},data(){return{remoteFile:new _LIB$RemoteFile,loading:!1}},created(){this.remoteFile.on("sync",({timestamp:t})=>{const e=this.remoteFile.content.replace(/\r\n/g,` +`);this.$emit("update:content",e),this.$nextTick(()=>this.loading=!1),console.debug("remote file synchronized:",new Date(t))}),this.remoteFile.on("connected",()=>this.$emit("update:connected",!0)),this.remoteFile.on("disconnected",()=>{this.loading=!1,this.$emit("update:connected",!1)}),this.debouncedContentUpdate=useDebounceFn(t=>{this.remoteFile.connected&&t!==this.remoteFile.content&&(this.remoteFile.content=t)},1e3)},methods:{onLink(){this.remoteFile.connected?this.disconnect():this.connect()},connect(){this.loading=!0,this.remoteFile.connect(this.host,this.filePath)},disconnect(){this.remoteFile.close()}},watch:{content(t){this.debouncedContentUpdate(t)},loading(t){this.$emit("update:loading",t)}}},_hoisted_1$2=["disabled"],_hoisted_2$2=["value","readonly"];function _sfc_render$2(t,e,r,s,n,o){return openBlock(),createElementBlock("span",{class:normalizeClass({connected:n.remoteFile.connected})},[createBaseVNode("button",{class:normalizeClass(["link",{on:n.remoteFile.connected}]),onClick:e[0]||(e[0]=(...l)=>o.onLink&&o.onLink(...l)),disabled:!r.host||!r.filePath},"🔗",10,_hoisted_1$2),createBaseVNode("input",{class:"file-path",type:"text",value:r.filePath,readonly:r.filePathReadOnly,onInput:e[1]||(e[1]=l=>t.$emit("update:filePath",l.target.value))},null,40,_hoisted_2$2)],2)}const RemoteFile=_export_sfc(_sfc_main$2,[["render",_sfc_render$2]]),_sfc_main$1={name:"dir-browser",props:{homeURL:String,shown:Boolean,handlePattern:RegExp,autoHide:Boolean,compactFolders:Boolean},data(){return{href:this.homeURL,hover:!1}},created(){this.debouncedAutoHide=useDebounceFn(()=>{this.hover||this.hide()},1e3)},methods:{onFrameLoad(){this.href=this.$refs.frame.contentWindow.location.href},hide(){this.$emit("update:shown",!1)},reload(){this.$refs.frame.contentWindow.location.reload()}},watch:{href(){if(this.handlePattern&&this.handlePattern.test(this.href)){this.$refs.frame.contentWindow.history.back(),this.hide();const t=Math.max(this.href.indexOf(this.homeURL),0),e=decodeURI(this.href.substr(t+this.homeURL.length));this.$emit("pickFile",e)}else if(this.compactFolders){const t=this.$refs.frame.contentDocument.querySelectorAll("#files li"),e=this.$refs.frame.contentDocument.querySelectorAll("#files .folder");t.length===2&&e.length===1&&this.$refs.frame.contentDocument.querySelector("#files .folder").click()}},hover(t){!t&&this.autoHide&&this.debouncedAutoHide()}}},_hoisted_1$1=["src"],_hoisted_2$1={class:"controls"};function _sfc_render$1(t,e,r,s,n,o){return withDirectives((openBlock(),createElementBlock("div",{class:"dir-browser",onMouseenter:e[3]||(e[3]=l=>n.hover=!0),onMouseleave:e[4]||(e[4]=l=>n.hover=!1)},[createBaseVNode("iframe",{ref:"frame",src:r.homeURL,onLoad:e[0]||(e[0]=(...l)=>o.onFrameLoad&&o.onFrameLoad(...l))},null,40,_hoisted_1$1),createBaseVNode("div",_hoisted_2$1,[createBaseVNode("button",{onClick:e[1]||(e[1]=l=>t.$refs.frame.contentWindow.location.href=r.homeURL)},toDisplayString("🏠")),createBaseVNode("button",{onClick:e[2]||(e[2]=l=>t.$refs.frame.contentWindow.history.back())},"⇦")])],544)),[[vShow,r.shown]])}const DirBrowser=_export_sfc(_sfc_main$1,[["render",_sfc_render$1],["__scopeId","data-v-af726797"]]),QuitClearner={created(){this.quitCleaner=new Promise(t=>this.quitClear=t)},methods:{async appendCleaner(t){await Promise.race([this.quitCleaner,"pending"])!=="pending"?t():this.quitCleaner=this.quitCleaner.then(t)}},beforeUnmount(){this.quitClear()}},INIT_LILY=`\\version "2.20.0" + +%% additional definitions required by the score: +fz = #(make-dynamic-script "fz") + +\\language "english" + +\\header { + encodingsoftware = "Finale 2014 for Windows" + arranger = \\markup \\column { \\line { "Op.25.No.9" } \\line { "Frédéric Chopin" } } + encodingdate = "2018-02-08" + subtitle = "Butterfly" + title = "G-flat major Étude" +} + + +#(set-global-staff-size 24) + +\\paper { + paper-width = 24.34\\cm + paper-height = 22.36\\cm + top-margin = 0.99\\cm + bottom-margin = 1.67\\cm + left-margin = 0.99\\cm + right-margin = 0.89\\cm + between-system-space = 2.65\\cm + page-top-space = 1.79\\cm + ragged-last = ##t +} + + +\\layout { + \\context { + \\Score + autoBeaming = ##f + } + +} + + +PartPOneVoiceOne = \\relative bf' { + \\clef "treble" \\key gf \\major \\time 2/4 \\stemUp bf8 ( s8 _\\markup { \\bold \\italic { leggiero } } df8 s8 | % 1 + gf,8 s8 bf8 s8 | % 2 + ef,8 s8 gf8 s8 | % 3 + af8 s8 af8 s8 | % 4 + bf'8 s8 df,8 s8 | % 5 + gf8 s8 bf,8 s8 | % 6 + ef8 s8 gf,8 s8 | % 7 + af8 s8 gf4 | % 8 + af8 s8 _\\< af8 s8 | % 9 + \\barNumberCheck #10 ef'8 s8 e8 f8 -\\! | % 10 + ef8 _\\> s8 af,8 s8 | % 11 + bf8 s8 e,8 f8 -\\! | % 12 + f'8 s8 af,8 _\\< s8 | % 13 + df'8 s8 e,8 f8 | % 14 + ef'8 s8 af,,8 _\\> s8 | % 15 + c8 s8 df8 s8 -\\! | % 16 + df8 _\\p s8 df8 s8 | % 17 + cf8 s8 cf8 s8 | % 18 + gf8 s8 af8 s8 | % 19 + \\barNumberCheck #20 f8 s8 af8 df8 | % 20 + \\ottava #1 df''8 s8 df8 _\\markup { \\bold \\italic { cresc . } } s8 | % 21 + cf8 s8 cf8 s8 | % 22 + gf8 s8 af,8 s8 | % 23 + gf8 s8 \\ottava #0 eff8 s8 | % 24 + bf8 s8 _\\markup { \\bold \\italic { marcato } } df8 s8 | % 25 + gf,8 s8 bf8 s8 | % 26 + ef,8 s8 gf8 s8 | % 27 + af8 s8 af8 s8 | % 28 + bf8 s8 df8 _\\markup { \\bold \\italic { cresc . } } s8 | % 29 + \\barNumberCheck #30 cf8 s8 ef8 s8 | % 30 + \\ottava #1 ef8 s8 gf8 s8 | % 31 + af8 s8 bff8 s8 | % 32 + bf8 _\\ff s8 ^\\markup { \\bold \\italic { appassionato } } bf8 s8 | % 33 + af8 s8 gf8 s8 | % 34 + ef8 s8 df8 s8 | % 35 + cf8 s8 _\\markup { \\bold \\italic { riten . } } bff8 af8 | % 36 + s4 af8 _\\p s8 | % 37 + df8 s8 af8 s8 | % 38 + df,8 s8 af'8 s8 _\\> | % 39 + \\barNumberCheck #40 df8 s8 af8 -\\! s8 | % 40 + s4 \\ottava #1 af''8 s8 _\\markup { \\bold \\italic { leggierissimo } } | % 41 + df8 s8 af8 s8 | % 42 + df,8 s8 af'8 s8 | % 43 + \\ottava #1 df8 s8 af8 s8 | % 44 + \\stemDown gf,16 ^1 [ gf'16 ^3 16 ^. ^2 ^5 16 ) ^. ^1 ^4 ] bf16 ( ^1 [ gf'16 16 ^. 16 ) ^. ] | % 45 + bf16 ( ^1 [ gf'16 _\\markup { \\bold \\italic { dimin . } } 16 ^. 16 ^. ^1 ] bf16 ^1 [ gf'16 16 ^. \\ottava #0 16 ^. ] | % 46 + \\ottava #1 bf16 [ gf'16 16 ^. 16 ^. ] bf16 [ gf'16 16 ^. 16 ) ^. ] | % 47 + bf16 ( [ gf'16 16 ^. 16 ^. ] bf16 [ gf'16 16 ^. 16 ^. ] | % 48 + \\ottava #0 8 ) ^. r8 r4 | % 49 + \\barNumberCheck #50 r4 \\stemUp bf,,16 ( [ _\\markup { \\bold \\italic { poco rit . } } gf'16 _\\> 16 16 ^1 ^4 ] | % 50 + 8 ) ^2 ^5 -\\! r8 r4 \\bar "|." +} + + +PartPOneVoiceThree = \\relative gf { + \\clef "bass" \\key gf \\major \\time 2/4 \\stemDown gf8 ^. ^> [ 8 ^. ] f8 ^. ^> [ 8 ^. ] | % 1 + ef8 ^. ^> [ 8 ^. ] df8 ^. ^> [ 8 ^. ] | % 2 + cf8 ^. ^> [ 8 ^. ] bf,8 ^. ^> [ 8 ^. ] | % 3 + c8 ^. ^> [ 8 ^. ] df8 ^. ^> [ 8 ^. ] | % 4 + gf8 ^. ^> [ 8 ^. ] f8 ^. ^> [ 8 ^. ] | % 5 + ef8 ^. ^> [ 8 ^. ] df8 ^. ^> [ 8 ^. ] | % 6 + cf8 ^. ^> [ 8 ^. ] bf,8 ^. ^> [ 8 ^. ] | % 7 + 8 ( \\arpeggio ^> [ \\arpeggio \\arpeggio \\sustainOn 8 \\arpeggio \\arpeggio \\arpeggio \\sustainOff 8 ) ^> ] \\sustainOn r8 | % 8 + df8 ^. [ \\sustainOff \\sustainOn 8 ^. ] \\sustainOff c,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 9 + af,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 10 + g,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff af,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 11 + af,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 12 + df,8 ^. [ \\sustainOn 8 ^. ] c,8 ^. [ \\sustainOff \\sustainOn 8 ^. ] \\sustainOff | % 13 + bf,8 ^. [ \\sustainOn 8 ^. ] af,8 ^. [ \\sustainOff \\sustainOn 8 ^. ] | % 14 + 8 ^. [ \\sustainOff \\sustainOn 8 ^. ] af,8 ^. [ \\sustainOff \\sustainOn 8 ^. ] \\sustainOff | % 15 + af,,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 16 + df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 17 + df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 18 + df,,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 19 + \\barNumberCheck #20 df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 20 + df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 21 + df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 22 + df,,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 23 + df,8 ^. [ \\sustainOn 8 ^. ] \\sustainOff df,8 ^. ^> [ \\sustainOn 8 ^. ] \\sustainOff | % 24 + 8 ^. [ ^\\f \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 25 + 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 26 + 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 27 + 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 28 + 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 29 + \\barNumberCheck #30 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 30 + 8 ^. [ \\sustainOn \\clef "treble" 8 ^. ] \\sustainOff \\clef "bass" 8 ^. [ \\sustainOn \\clef "treble" 8 ^. ] \\sustainOff | % 31 + 8 ^. [ \\sustainOn \\clef "treble" 8 ^. ] _\\fz r8 \\clef "bass" \\stemUp 8 ( \\sustainOff | % 32 + \\stemDown 8 ) ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 33 + 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff | % 34 + 8 ^. [ \\sustainOn 8 ^. ] \\sustainOff r4 | % 35 + \\stemUp 8 _. [ \\sustainOn \\stemDown 8 _. ] r4 | % 36 + s8 \\sustainOff _\\fz \\sustainOn \\stemUp df,4. ~ | % 37 + \\stemDown 8 ^. [ gf,8 ^. ] 8 ^. [ gf,8 ^. ] | % 38 + 8 ^. [ gf,8 ^. ] 8 ^. [ gf,8 ^. ] | % 39 + 8 ^. [ gf,8 ^. ] 8 ^. [ gf,8 ^. ] | % 40 + 8 ^. [ \\sustainOn gf,8 ^. ] 8 ^. [ gf,8 ^. ] \\sustainOff | % 41 + 8 ^. [ \\sustainOn gf,8 ^. ] \\sustainOff 8 ^. [ \\sustainOn gf,8 ^. ] \\sustainOff | % 42 + 8 ^. [ \\sustainOn gf,8 ^. ] \\sustainOff 8 ^. [ \\sustainOn gf,8 ^. ] \\sustainOff | % 43 + 8 ^. [ \\sustainOn gf,8 ^. ] \\sustainOff 8 ^. [ \\sustainOn gf,8 ^. ] \\sustainOff | % 44 + 8 _. [ \\stemUp gf,,8 _. ^5 ] \\sustainOn \\stemDown df''8 ^. _5 [ 8 ^. _3 _1 ] | % 45 + \\stemUp 8 _. _5 _2 [ 8 _. _4 _1 ] \\stemDown 8 ^. _5 _2 [ 8 ^. _4 _1 ] | % 46 + \\stemUp 8 _5 _2 [ 8 _4 _1 ] \\clef "bass" \\stemDown 8 ^. [ 8 ^. ] | % 47 + \\stemUp 8 _. [ 8 _. ] 8 _. [ 8 _. ] | % 48 + 8 _. [ ^\\markup { \\bold \\italic { poco secco } } \\sustainOff 8 _. ] 8 _. [ 8 _. ] | % 49 + 8 _. [ 8 _. ] ^\\pp 8 _. [ \\sustainOn 8 _. ] \\sustainOn | % 50 + 8 _. \\sustainOn r8 r4 \\sustainOff \\bar "|." +} + + +PartPOneVoiceTwo = \\relative bf' { + \\clef "treble" \\key gf \\major \\time 2/4 \\stemDown bf16 [ 16 ^2 ^3 16 ^. ^4 16 ^. ^5 ] df16 [ 16 ^4 16 ^. ^5 16 ^. ^4 ] | % 1 + gf,16 [ 16 ^2 ^3 16 ^. ^4 16 ^. ^5 ] bf16 [ 16 ^2 ^4 16 ^. ^5 16 ^. ^4 ] | % 2 + ef,16 [ 16 ^4 16 ^. ^5 16 ^. ^5 ] gf16 [ 16 ^4 16 ^. ^5 16 ^. ^4 ] | % 3 + af16 [ 16 ^4 16 ^. ^5 16 ^. ^4 ] af16 [ 16 ^3 16 ^. ^4 16 ^. ^5 ] | % 4 + gf'16 [ bf,16 16 ^. 16 ^. ] df16 [ 16 16 ^. 16 ^. ] | % 5 + ef16 [ gf,16 16 ^. 16 ^. ] bf16 [ 16 16 ^. 16 ^. ] | % 6 + cf16 [ ef,16 16 ^. 16 ^. ] gf16 [ 16 16 ^. 16 ^. ] | % 7 + af16 [ 16 16 16 ] gf16 [ 16 16 ^. 16 ^. ] | % 8 + af16 [ 16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 9 + ef16 [ 16 16 ^. 16 ^. ] e16 [ 16 f16 16 ] | % 10 + ef16 [ 16 ^5 16 ^. ^4 16 ^. ^5 ] af16 [ 16 16 ^. 16 ^. ] | % 11 + bf16 [ 16 ^2 ^5 16 ^. ^5 16 ^. ^4 ] e16 [ 16 f,16 16 ] | % 12 + df16 [ f,16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 13 + g'16 [ df16 16 ^. 16 ^. ] e16 [ 16 f16 16 ] | % 14 + bf16 [ -\\! ef,16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 15 + c16 [ 16 16 ^. 16 ^. ] df16 [ 16 16 ^. ^5 16 ^. ^4 ] | % 16 + df16 [ 16 ^3 16 ^. ^5 16 ^. ] df16 [ 16 16 ^. 16 ^. ] | % 17 + cf16 [ 16 ^5 16 ^. ^5 16 ^. ^4 ] cf16 [ 16 16 ^. 16 ^. ] | % 18 + gf16 [ 16 ^3 16 ^. ^5 16 ^. ^4 ] af16 [ 16 16 ^. 16 ^. ] | % 19 + f16 [ 16 ^2 ^5 16 ^. ^4 16 ^. ^5 ] af16 [ 16 df16 16 ] | % 20 + bf'16 [ df,16 16 ^. 16 ^. ] af16 [ df,16 16 ^. 16 ^. ] | % 21 + f'16 [ cf16 16 ^. 16 ^. ] gf16 [ cf,16 16 ^. 16 ^. ] | % 22 + ef'16 [ gf,16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 23 + gf16 [ 16 16 ^. 16 ^. ] eff16 [ 16 16 ^. 16 ^. ] | % 24 + bf16 [ 16 16 ^. 16 ^. ] df16 [ 16 16 ^. 16 ^. ] | % 25 + gf,16 [ 16 16 ^. 16 ^. ] bf16 [ 16 16 ^. 16 ^. ] | % 26 + ef,16 [ 16 16 ^. 16 ^. ] gf16 [ 16 16 ^. 16 ^. ] | % 27 + af16 [ 16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 28 + bf16 [ 16 16 ^. 16 ^. ] df16 [ 16 16 ^. 16 ^. ] | % 29 + cf16 [ 16 16 ^. 16 ^. ] ef16 [ 16 16 ^. 16 ^. ] | % 30 + ef16 [ 16 16 ^. 16 ^. ] gf16 [ 16 16 ^. 16 ^. ] | % 31 + af16 [ 16 16 ^. 16 ^. ] bff16 [ 16 16 ^. 16 ^. ] | % 32 + bf16 [ 16 16 ^. 16 ^. ] bf16 [ 16 16 ^. 16 ^. ] | % 33 + af16 [ 16 16 ^. 16 ^. ] gf16 [ 16 16 ^. 16 ^. ] | % 34 + \\ottava #0 ef16 [ 16 16 ^. 16 ^. ] df16 [ 16 16 ^. 16 ^. ] | % 35 + cf16 _> [ 16 16 ^. 16 ^. ] bff16 _> [ 16 af16 _> 16 ~ ] | % 36 + 4 af16 [ 16 16 ^. 16 ^. ] | % 37 + df16 [ 16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 38 + df,16 [ 16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 39 + df16 [ 16 16 ^. 16 ^. ] af16 [ 16 16 ^. 16 ^. ] | % 40 + 8 ^. b8\\rest df'16 [ af16 16 ^. 16 ^. ] | % 41 + gf'16 [ df16 16 ^. 16 ^. ] df16 [ af16 16 ^. 16 ^. ] | % 42 + bf16 [ df,16 16 ^. 16 ^. ] df'16 [ af16 16 ^. \\ottava #0 16 ^. ] | % 43 + gf'16 [ df16 16 ^. 16 ^. ] df16 [ af16 16 ^. 16 ^. ] | % 44 + s2 | % 45 + s2 | % 46 + s2 | % 47 + s2 | % 48 + s2 | % 49 + s2 | % 50 + s2 \\bar "|." +} + + +PartPOneVoiceFour = \\relative gf,, { + \\clef "bass" \\key gf \\major \\time 2/4 s2 | % 1 + s2 | % 2 + s2 | % 3 + s2 | % 4 + s2 | % 5 + s2 | % 6 + s2 | % 7 + s2 | % 8 + s2 | % 9 + s2 | % 10 + s2 | % 11 + s2 | % 12 + s2 | % 13 + s2 | % 14 + s2 | % 15 + s2 | % 16 + s2 | % 17 + s2 | % 18 + s2 | % 19 + s2 | % 20 + s2 | % 21 + s2 | % 22 + s2 | % 23 + s2 | % 24 + s2 | % 25 + s2 | % 26 + s2 | % 27 + s2 | % 28 + s2 | % 29 + s2 | % 30 + s8 \\clef "treble" s8 \\clef "bass" s8 \\clef "treble" s8 | % 31 + s8 \\clef "treble" s4 \\clef "bass" s8 | % 32 + s2 | % 33 + s2 | % 34 + s2 | % 35 + s2 | % 36 + \\stemUp gf8 _. [ \\stemDown df''8 ^1 ^3 ] 8 ^. _1 _2 [ \\sustainOff gf,8 ^. _5 ] | % 37 + s2 | % 38 + s2 | % 39 + s2 | % 40 + s2 | % 41 + s2 | % 42 + s2 | % 43 + s2 | % 44 + s2 | % 45 + s2 | % 46 + s4 \\clef "bass" s4 | % 47 + s2 | % 48 + s2 | % 49 + s2 | % 50 + s2 \\bar "|." +} + + +% The score definition +\\score { + << + \\new PianoStaff << + \\context Staff = "1" << + \\mergeDifferentlyDottedOn + \\mergeDifferentlyHeadedOn + \\context Voice = "PartPOneVoiceOne" { + \\voiceOne \\PartPOneVoiceOne + } + + \\context Voice = "PartPOneVoiceTwo" { + \\voiceTwo \\PartPOneVoiceTwo + } + + >> + + \\context Staff = "2" << + \\mergeDifferentlyDottedOn + \\mergeDifferentlyHeadedOn + \\context Voice = "PartPOneVoiceThree" { + \\voiceOne \\PartPOneVoiceThree + } + + \\context Voice = "PartPOneVoiceFour" { + \\voiceTwo \\PartPOneVoiceFour + } + + >> + + >> + + >> + + \\layout { + } + + \\midi { + \\tempo 4 = 120 + \\context { + \\Score + midiChannelMapping = #'instrument + } + } +}`,_sfc_main={name:"playground",mixins:[QuitClearner],components:{SourceEditor,SheetSimple,SheetLive,SheetSigns,Loading,StoreInput,BoolStoreInput,CheckButton,MidiRoll,NotationsMatcher,Dialog,RemoteFile,DirBrowser,Icon},data(){return{buildContainerSize:{width:100,height:100},sheetContainerSize:{width:100,height:100},dragHover:null,sourceDragHover:!1,lilySource:INIT_LILY,converting:!1,engraving:!1,svgDocuments:null,engraverLogs:null,engraverDirty:!1,autoEngrave:!0,tokenizeStaff:!0,sheetDocument:null,title:null,svgHashTable:null,midi:null,midiNotation:null,scheduler:null,pitchContextGroup:null,enabledChromatic:!1,chromaticMode:"symbols",midiPlayer:null,rollVisible:!1,matcherNotations:null,showNotationsMatcher:!1,enabledMidiAudio:!0,showCursor:!0,settingPanelVisible:!1,xml2lyOptions:{removeBreaks:!0,removeStaffGroup:!0,mergeContinuousGraces:!0,excludeChordTracksFromMIDI:!0,midiChannelMapping:!1},engraveWithLogs:!1,enabledFuzzyMatcher:!0,enabledSheetNotation:!1,lilyMarkups:{enabled:!0,staffSize:null,autoPaperSize:!0,pageCount:2,systemSpacing:-1,topMarkupSpacing:-1,raggedLast:!0},lilyParser:null,measuresParser:null,lilyDocumentDirty:!1,lilyTextSourceDirty:!1,bakingSheet:!1,bakingImages:null,enabledMusicFont:!1,hideBakingImages:!1,lilyMarkupMethods:Object.getOwnPropertyNames(LilyDocument.prototype),chosenLilyMarkupMethod:null,operating:!1,loadingLilyParser:!1,enabledPointer:!1,pointerData:null,sourceEditorEnabled:!1,showSourceDir:!1,sourceEditorHost:`ws://${location.host}`,sourceEditorFilePath:null,sourceEditorConnected:!1,sourceEditorLoading:!1,measureLayoutType:"ordinary",measureLayoutCode:null,measureLayoutCodeDirty:!1,measureLayoutCodeError:null,articulateMIDI:!1,highlightSymbol:null}},computed:{markupValueHash(){const{enabled:t,...e}=this.lilyMarkups;return JSON.stringify(e)},autoPageSize(){return{width:this.sheetContainerSize.width/this.lilyMarkups.pageCount-34,height:this.sheetContainerSize.height-38}},engraverLogStatus(){return this.engraverLogs?/error:/i.test(this.engraverLogs)?"error":/warning:/i.test(this.engraverLogs)?"warning":"info":null},sourceIsLoading(){return this.converting||this.sourceEditorLoading},pitchContextMarks(){return!this.pitchContextGroup||!this.scheduler?[]:this.pitchContextGroup.map(t=>t.items.map(e=>{const r=e.context,s=a=>({y:a,alter:r.alterOnNote(r.yToNote(a)),name:r.yToPitchName(a)}),{system:n,x:o}=this.scheduler.lookupPosition(e.tick),l=[[-2,-1,0,1,2].map(s),[-1.5,-.5,.5,1.5].map(s)];return{system:n,x:o,names:l}})).reduce((t,e,r)=>(e.forEach(({system:s,...n})=>{t[s]=t[s]||[],t[s][r]=t[s][r]||[],t[s][r].push(n)}),t),[])}},async created(){window.$main=this,f.WebAudio.empty()&&f.loadPlugin({soundfontUrl:"/soundfont/",api:"webaudio"}).then(()=>console.log("Soundfont loaded.")),load(__vitePreload(()=>import("./measureLayout-eqryu3En.js"),[],import.meta.url)).then(t=>{this.measuresParser=t,console.debug("measureLayout parser loaded.")}),this.loadingLilyParser=!0,this.lilyParser=await load(__vitePreload(()=>import("./lilypond-CRjqli1b.js"),[],import.meta.url)),this.loadingLilyParser=!1,console.debug("lily parser loaded."),this.updateLilyDocument()},async mounted(){const t=r=>{switch(r.code){case"F8":this.engrave(),r.preventDefault();break}};document.addEventListener("keydown",t),this.appendCleaner(()=>document.removeEventListener("keydown",t));const e=useResizeObserver(this.$refs.sheetContainer,r=>{const s=r[0],{width:n,height:o}=s.contentRect;this.buildContainerSize.width=this.$refs.buildContainer.clientWidth,this.buildContainerSize.height=this.$refs.buildContainer.clientHeight,this.sheetContainerSize.width=n,this.sheetContainerSize.height=o});this.appendCleaner(e),await this.$nextTick(),this.watchEngrave()},methods:{onDragOver(t){const e=t.dataTransfer.items[0];e&&(this.dragHover=e.type)},async onDropFile(t,{source:e}={}){if(this.dragHover=null,this.sourceDragHover=!1,this.sourceEditorConnected)if(window.confirm("Break the edidtor file connection and continue loading?"))this.$refs.remoteFile.disconnect();else return;const r=t.dataTransfer.files[0];if(r)switch(r.type){case"text/x-lilypond":case"text/lilypond-source":case"":this.lilySource=await r.readAs("Text"),this.engraverLogs=null,this.clearSheet(),await this.updateLilyDocument(),this.engrave();break;case"text/xml":this.converting=!0;try{const s=await r.readAs("Text");this.lilySource=await this.musicxml2ly(s),this.engraverLogs=null}catch(s){console.warn("musicxml2ly failed:",s)}this.converting=!1,this.clearSheet(),await this.updateLilyDocument(),this.lilySource&&this.engrave();break;case"audio/midi":case"audio/mid":if(e){this.converting=!0;try{this.lilySource=await this.midi2ly(r),this.engraverLogs=null}catch(s){console.warn("musicxml2ly failed:",s)}this.converting=!1,this.clearSheet(),await this.updateLilyDocument(),this.lilySource&&this.engrave()}else{const s=await r.readAs("ArrayBuffer");this.midi=ue.parseMidiData(s)}break;default:console.warn("unsupported file type:",r.type)}},onMidi(t,e){if(this.enabledMidiAudio)switch(t.subtype){case"noteOn":f.noteOn(t.channel,t.noteNumber,t.velocity,e);break;case"noteOff":f.noteOff(t.channel,t.noteNumber,e);break}},onCursorPageShift(t){console.log("onCursorPageShift:",t)},onPointerUpdate(t){this.pointerData=t},async onPointerClick(t,e){if(!e.ctrlKey&&Number.isFinite(t.tick)){const r=this.midiPlayer.isPlaying;r&&(this.midiPlayer.pause(),await animationDelay()),this.midiPlayer.progressTicks=t.tick,r&&this.midiPlayer.play()}},clearSheet(){this.title=null,this.sheetDocument=null,this.sheetNotation=null,this.svgHashTable=null,this.lilyNotation=null,this.midi=null,this.midiNotation=null,this.scheduler=null,this.pitchContextGroup=null,this.midiPlayer=null,this.matcherNotations=null,this.bakingImages=null},async musicxml2ly(t){const e=new FormData;e.append("xml",t),e.append("options",JSON.stringify({removeBreak:this.xml2lyOptions.removeBreaks,removePageBreak:this.xml2lyOptions.removeBreaks}));const r=await fetch("/musicxml2ly",{method:"POST",body:e});if(r.ok){const s=await r.text();return console.debug("musicxml2ly accomplished."),this.postProcessSource(s)}else{const s=await r.text();throw console.warn("musicxml2ly failed:",s),new Error(s)}},async midi2ly(t){const e=new FormData;e.append("midi",t),e.append("options",JSON.stringify({removeInstrumentName:!0,tupletReplace:!0}));const r=await fetch("/midi2ly",{method:"POST",body:e});if(!r.ok){console.warn("MIDI to ly failed:",await r.text());return}return r.text()},async engrave(){if(this.engraving){console.warn("already engraving, cancelled.");return}if(this.engraving=!0,await this.$nextTick(),await animationDelay(),await animationDelay(),this.tokenizeStaff)try{await this.updateLilyDocument(),this.lilyDocument&&this.lilyDocument.interpret({useCached:!1})}catch(r){console.warn("lilydocument parsing failed:",r)}const t=new FormData;t.append("source",this.lilySource),this.engraveWithLogs&&t.append("log",this.engraveWithLogs),this.tokenizeStaff&&t.append("tokenize",this.tokenizeStaff);const e=await fetch("/engrave",{method:"POST",body:t});if(!e.ok)this.engraverLogs=await e.text(),this.clearSheet(),this.svgDocuments=null;else{const r=await e.json();console.log("Engraving accomplished."),this.engraverLogs=r.logs,this.engraverLogger=r.logger,this.svgDocuments=r.svgs,this.tokenizeStaff?(this.sheetDocument=recoverJSON(r.doc,{StaffToken,SheetDocument}),this.svgHashTable=r.hashTable,this.sheetDocument.assignFlagsTrack(),this.articulateMIDI?this.midi=await this.engraveMIDI():this.midi=r.midi,this.enabledSheetNotation&&this.updateSheetNotation(),this.midi&&this.matchNotations(this.midi)):this.clearSheet(),this.engraving=!1}this.engraverDirty=!1,this.engraving=!1},async engraveScm(){const t=new FormData;t.append("source",this.lilySource);const e=await fetch("/engraveScm",{method:"POST",body:t});if(!e.ok){console.warn("engraveScm error:",await e.text());return}const r=await e.json();this.engraverLogs=r.logs;const n=(await __vitePreload(()=>import("./index-ygwAcZb2.js"),[],import.meta.url)).S(r.scm);console.log("SCM:",n)},async engraveMIDI({articulate:t=!0}={}){const e=new FormData;e.append("source",this.lilySource),t&&e.append("articulate","1");const r=await fetch("/engraveMIDI",{method:"POST",body:e});if(!r.ok){console.warn("engraveMIDI error:",await r.text());return}const s=await r.arrayBuffer();return ue.parseMidiData(s)},saveSource(){const t=new Blob([this.lilySource],{type:"text/x-lilypond"}),e=document.createElement("a");e.href=URL.createObjectURL(t);const r=prompt("Input your file name:",`${this.title||"lotus-editor"}.ly`);r&&(e.download=/\.\w+/.test(r)?r:r+".ly",e.click())},watchEngrave(){this.autoEngrave&&this.engraverDirty&&!this.engraving&&this.engrave()},togglePlayer(){this.midiPlayer&&(this.midiPlayer.isPlaying?this.midiPlayer.pause():this.midiPlayer.play())},async sliceSource(t,e){if(!this.midi)return null;const r=pe.sliceMidi(this.midi,t,e);console.log("partMidi:",r);const s=new Blob([ue.encodeMidiFile(r)],{type:"audio/midi"}),n=this.midi2ly(s);console.log("ly:",n)},updateSheetNotation(){if(this.sheetNotation=null,this.matcherNotations=null,this.sheetDocument){const t=new LogRecorder({enabled:!0});if(this.sheetNotation=parseNotationFromSheetDocument(this.sheetDocument,{logger:t}),this.lilyDocument){const e=this.lilyDocument.getLocationTickTable();assignTickByLocationTable(this.sheetNotation,e)}else console.warn("lilyDocument is null, assignTickByLocationTable skipped.");console.log("sheet notation parsed:",t.toJSON())}},async matchNotations(t){if(console.assert(t,"midi is null."),this.enabledSheetNotation){console.assert(this.sheetNotation,"sheetNotation is null.");const e=he.Notation.parseMidi(t);this.matcherNotations=await matchNotations(e,this.sheetNotation,{enableFuzzy:this.enabledFuzzyMatcher}),this.midiNotation=e,this.pitchContextGroup=PitchContextTable.createPitchContextGroup(this.sheetNotation.pitchContexts,this.midiNotation),this.matchedIds=new Set,this.midiNotation.notes.forEach(r=>r.ids&&r.ids.forEach(s=>this.matchedIds.add(s)))}else{this.lilyNotation=this.lilyDocument.interpret().getNotation(),this.matcherNotations=await matchWithExactMIDI(this.lilyNotation,t);const e=this.lilyNotation.getMeasureIndices(this.measureLayoutType);this.midiNotation=this.lilyNotation.toPerformingNotationWithEvents(e),this.pitchContextGroup=this.lilyNotation.getContextGroup(e),this.matchedIds=this.lilyNotation.idSet,this.scheduler=Scheduler.createFromNotation(this.lilyNotation.toPerformingNotation(e,{withRestTied:!0}),this.sheetDocument.getTokenMap())}this.sheetDocument.updateMatchedTokens(this.matchedIds),this.bakingSheet&&this.bakeSheet()},async exportScore(){console.assert(this.sheetDocument,"sheetDocument is null."),console.assert(this.pitchContextGroup,"pitchContextGroup is null."),console.assert(this.midiNotation,"midiNotation is null."),await this.updateLilyDocument();const t=this.lilyDocument.globalAttributes({readonly:!0}),e=this.lilyDocument.interpret().midiMusic,r={title:t.title&&t.title.toString(),composer:t.composer&&t.composer.toString(),pageSize:this.sheetDocument.pageSize,pageCount:this.sheetDocument.pages.length,staffSize:t.staffSize,trackInfos:e&&e.trackContextDicts},s={version:npmPackage.version+" -playground",meta:r,doc:this.sheetDocument,hashTable:this.bakingSheet?null:this.svgHashTable,lilyNotation:this.lilyNotation},n=new Blob([JSON.stringify(s)],{type:"application/json"}),{default:o}=await __vitePreload(async()=>{const{default:u}=await import("./jszip.min-C1swU7HS.js").then(c=>c.j);return{default:u}},__vite__mapDeps([0,1,2,3]),import.meta.url),l=new o;l.file("score.json",n),this.bakingSheet&&this.bakingImages&&await Promise.all(this.bakingImages.map(async(u,c)=>{const h=await(await fetch(u)).blob();l.file(`baking${c}.png`,h),console.log("img:",h)}));const a=await l.generateAsync({type:"blob",compression:"DEFLATE",compressionOptions:{level:5}});downloadUrl(URL.createObjectURL(a),`${this.title||""}.zip`)},async updateLilyDocument(){if((!this.lilyDocument||this.lilyDocumentDirty)&&this.lilyParser){const t=await this.lilyParser.parse(this.lilySource);this.lilyDocument=new LilyDocument(t);const e=this.lilyDocument.globalAttributes({readonly:!0}).title;this.title=e&&e.toString(),this.lilyDocumentDirty=!1}},updateLilyTextSource(){this.lilyTextSourceDirty&&(this.lilyTextSource=new TextSource(this.lilySource),this.lilyTextSourceDirty=!1)},markupLilyDocument(t){t.formalize();const e=t.globalAttributes();this.lilyMarkups.staffSize&&(e.staffSize.value=this.lilyMarkups.staffSize),this.lilyMarkups.autoPaperSize&&(e.paperWidth.value.set({number:this.autoPageSize.width/CM_TO_PX,unit:"\\cm"}),e.paperHeight.value.set({number:this.autoPageSize.height/CM_TO_PX,unit:"\\cm"})),this.lilyMarkups.systemSpacing>=0&&(e.systemSpacing.value=this.lilyMarkups.systemSpacing),this.lilyMarkups.topMarkupSpacing>=0&&(e.topMarkupSpacing.value=this.lilyMarkups.topMarkupSpacing),typeof this.lilyMarkups.raggedLast=="boolean"&&(e.raggedLast.value=this.lilyMarkups.raggedLast)},async markupSource(){await this.updateLilyDocument(),console.assert(this.lilyDocument,"lilyDocument is null."),this.markupLilyDocument(this.lilyDocument),this.lilySource=this.lilyDocument.toString(),await this.$nextTick(),this.engraverLogs=null},async postProcessSource(t){const e=new LilyDocument(await this.lilyParser.parse(t));return this.xml2lyOptions.removeStaffGroup&&e.removeStaffGroup(),this.xml2lyOptions.mergeContinuousGraces&&e.mergeContinuousGraces(),this.xml2lyOptions.excludeChordTracksFromMIDI&&e.excludeChordTracksFromMIDI(),this.xml2lyOptions.midiChannelMapping&&e.useMidiInstrumentChannelMapping(),e.toString()},removeTrillSpans(){return this.executeMarkup("removeTrillSpans")},async exportMarkupLily(){const t=new LilyDocument(await this.lilyParser.parse('\\version "2.20.0"'));this.markupLilyDocument(t);const e=new Blob([t.toString()]);return downloadUrl(URL.createObjectURL(e),"markup.ly")},async bakeSheet(){console.assert(this.svgDocuments,"svgDocuments is null."),console.assert(this.matchedIds,"matchedIds is null."),this.bakingImages=await bakeRawSvgs(this.svgDocuments,this.matchedIds,this.$refs.canvas)},async inspectLily(){await this.updateLilyDocument(),this.updateLilyTextSource(),console.log(this.lilyDocument)},showEngraverLog(){console.log(this.engraverLogs)},async executeMarkup(t){await this.updateLilyDocument(),this.lilyDocument||console.log("lilyDocument parsing failed."),this.lilyDocument[t]||console.warn("Markup function not found:",t,this.lilyDocument),this.lilyDocument[t](),this.lilySource=this.lilyDocument.toString()},async unfoldRepeats(){this.operating=!0;try{if(await this.updateLilyDocument(),!this.lilyDocument)throw new Error("lilyDocument is null.");this.lilyDocument.unfoldRepeats(),this.lilySource=this.lilyDocument.toString(),await this.engrave(),this.lilySource=replaceSourceToken(this.lilySource,"\\unfoldRepeats"),this.engraving=!0;const t=new FormData;t.append("source",this.lilySource),this.engraveWithLogs&&t.append("log",this.engraveWithLogs),t.append("tokenize",!0);const e=await fetch("/engrave",{method:"POST",body:t});if(e.ok){const r=await e.json();this.engraverLogs=r.logs,this.svgDocuments=r.svgs,this.sheetDocument=recoverJSON(r.doc,{StaffToken,SheetDocument}),this.svgHashTable=r.hashTable,this.sheetDocument.updateMatchedTokens(this.matchedIds),this.$refs.sheet.preparePlayer()}else{const r=await e.text();throw new Error(r)}}catch(t){console.warn("unfoldRepeats failed:",t)}this.engraverDirty=!1,this.engraving=!1,this.operating=!1},async redivideLilyDocument({reconstruct:t=!1}={}){await this.updateLilyDocument();const e=this.lilyDocument.interpret({useCached:!1});t?(e.layoutMusic.musicTracks.forEach(r=>r.redivide()),this.lilyDocument=e.toDocument(),this.lilySource=this.lilyDocument.toString()):(this.lilyDocument.root.forEachTopTerm(LilyTerms.Assignment,r=>{if(r.value&&typeof r.value=="object"&&r.value.isMusic){const s=r.key.toString(),n=e.layoutMusic.musicTracks.find(l=>l.contextDict.Voice===s);r.value.findFirst(LilyTerms.MusicBlock).redivide({measureHeads:n.measureHeads})}}),this.lilySource=this.lilyDocument.toString())},async sliceMeasures(t,e){await this.updateLilyDocument();const r=this.lilyDocument.interpret({useCached:!1});r.sliceMeasures(t,e),this.lilyDocument=r.toDocument(),this.lilySource=this.lilyDocument.toString()},async createPianoRhythm(t){await this.updateLilyDocument();const e=this.lilyDocument.interpret({useCached:!1});createPianoRhythm(e,t),this.lilyDocument=e.toDocument(),this.lilySource=this.lilyDocument.toString(),await this.$nextTick(),this.lilyDocumentDirty=!1},async testInterpreter({flatten:t=!1}={}){await this.updateLilyDocument();const e=this.lilyDocument.interpret({useCached:!1}),r=e.getNotation();t&&e.layoutMusic.musicTracks.forEach(n=>n.flatten({spreadRepeats:!0}));const s=e.toDocument();console.log("INTERPRETER:",e),console.log("DOC:",s),console.log("NOTATION:",r)},onSourceDirPick(t){this.sourceEditorFilePath=t,this.$nextTick(()=>{this.$refs.remoteFile&&this.$refs.remoteFile.connect()})},highlightSourcePosition(t){if(this.updateLilyTextSource(),t.length>=2){const e=this.$el.querySelector(".prism-editor__textarea");if(!e){console.warn(".prism-editor__textarea is not found.");return}const r=this.lilyTextSource.positionToChars([t[0],t[1]]),s=t.length>=3?this.lilyTextSource.positionToChars([t[0],t[2]]):r;e.setSelectionRange(r,s),e.focus();const n=this.$el.querySelector(".prism-editor-wrapper"),o={left:t[1]*9.7,right:((t[2]||t[1])+2)*9.7,top:(t[0]-1)*19,bottom:(t[0]+2)*19};n.scrollLeft=Math.max(o.right+50-n.clientWidth,n.scrollLeft),n.scrollLeft=Math.min(o.left,n.scrollLeft),n.scrollTop=Math.max(o.bottom-n.clientHeight,n.scrollTop),n.scrollTop=Math.min(o.top,n.scrollTop)}},onSheetLink(t,e){t.preventDefault();const r=e.match(/\d+/g);r&&this.highlightSourcePosition(r.map(Number))},onClickToken(t,e){if(e.ctrlKey&&t.href){const r=t.href.match(/\d+/g);r&&this.highlightSourcePosition(r.map(Number))}else console.log("token:",t)},onClickMatcherNote(t){if(console.log("matcher note:",{...t}),t.id){const e=t.id.match(/\d+/g);e&&this.highlightSourcePosition(e.map(Number))}},async updateMeasureLayoutCode(){await this.updateLilyDocument(),this.measureLayoutCode=this.lilyDocument.interpret().layoutMusic.measureLayoutCode,this.measureLayoutCodeDirty=!1},async validateMeasureLayoutCode(){if(this.measureLayoutCodeError=null,!!this.measureLayoutCode)try{await this.measuresParser.parse(this.measureLayoutCode)}catch(t){this.measureLayoutCodeError=t}},async applyUpdateMeasureLayoutCode(){if(this.measureLayoutCode)try{const t=await this.measuresParser.parse(this.measureLayoutCode),e=recoverJSON(t.data,measureLayout);await this.updateLilyDocument(),this.lilyDocument.interpret(),this.applyMeasureLayout(e),this.measureLayoutCodeDirty=!1}catch(t){this.measureLayoutCodeError=t,console.error(t)}},applyMeasureLayout(t){this.lilyDocument.root.sections.filter(r=>r instanceof LilyTerms.Assignment&&r.value instanceof LilyTerms.Relative&&r.value.measureLayout).map(r=>r.value.args).map(r=>MusicTrack.fromBlockAnchor(r[1],r[0])).forEach(r=>r.applyMeasureLayout(t)),this.lilySource=this.lilyDocument.toString()},async flattenTracks(){await this.updateLilyDocument(),this.lilyDocument.interpret(),this.lilyDocument.root.sections.filter(e=>e instanceof LilyTerms.Assignment&&e.value instanceof LilyTerms.Relative&&e.value.measureLayout).map(e=>e.value.args).map(e=>MusicTrack.fromBlockAnchor(e[1],e[0])).forEach(e=>e.flatten({spreadRepeats:!0})),this.lilySource=this.lilyDocument.toString()},async mergeSingleVoltaMLayout(){await this.updateLilyDocument();const e=this.lilyDocument.interpret().layoutMusic.mainTrack.block.measureLayout;let r=1;for(;rr.tokens)).reduce((r,s)=>!r||s.yr.tokens)).reduce((r,s)=>!r||s.y>r.y?s:r,null)}},watch:{lilySource(){this.engraverDirty=!0,this.lilyDocumentDirty=!0,this.lilyTextSourceDirty=!0,this.engraverLogs=null,this.measureLayoutCode=null,this.measureLayoutCodeError=null,this.sourceEditorConnected||(this.sourceEditorFilePath=null)},markupValueHash(){this.lilyParser&&this.lilyMarkups.enabled&&this.markupSource()},engraverDirty(t){t&&this.autoEngrave&&mutexDelay("autoEngrave",5e3).then(e=>!e||this.watchEngrave())},autoEngrave:"watchEngrave",tokenizeStaff(t){t&&this.lilySource&&!this.sheetDocument&&(this.engraverDirty=!0)},bakingSheet(t){t?this.svgDocuments&&this.matchedIds&&this.bakeSheet():this.bakingImages=null}}},_hoisted_1=["data-hover-type"],_hoisted_2={key:0,class:"title"},_hoisted_3=["disabled"],_hoisted_4=["disabled"],_hoisted_5=["disabled"],_hoisted_6={key:0,class:"pointer-info"},_hoisted_7={key:0},_hoisted_8={key:0},_hoisted_9=["disabled"],_hoisted_10=["title"],_hoisted_11=["disabled"],_hoisted_12={class:"corner"},_hoisted_13=["title"],_hoisted_14=["data-chromatic"],_hoisted_15={class:"sheet-container",ref:"sheetContainer",style:{"--music-font-family":"Emmentaler-26","--music-font-size":"4px"}},_hoisted_16={key:0},_hoisted_17=["transform"],_hoisted_18={key:0,class:"locator"},_hoisted_19=["width"],_hoisted_20=["y1","x2","y2"],_hoisted_21=["x","width"],_hoisted_22=["x"],_hoisted_23={key:1,class:"pitch-context"},_hoisted_24=["transform"],_hoisted_25={transform:"translate(0.2, 0.5)"},_hoisted_26=["transform"],_hoisted_27={transform:"translate(1.6, 0.5)"},_hoisted_28=["transform"],_hoisted_29={key:0},_hoisted_30={key:0},_hoisted_31=["transform"],_hoisted_32=["y2"],_hoisted_33=["transform"],_hoisted_34=["y2"],_hoisted_35={key:0,class:"source-editor-controls"},_hoisted_36={class:"settings-panel"},_hoisted_37={class:"settings-header"},_hoisted_38={class:"settings-content"},_hoisted_39={id:"lily-markups"},_hoisted_40=["value"],_hoisted_41={class:"settings-section"},_hoisted_42={class:"settings-grid"},_hoisted_43=["disabled"],_hoisted_44=["disabled"],_hoisted_45=["disabled"],_hoisted_46={class:"settings-section"},_hoisted_47={class:"settings-grid"},_hoisted_48={class:"input-group"},_hoisted_49={class:"settings-section"},_hoisted_50={class:"settings-grid"},_hoisted_51={class:"full-width"},_hoisted_52={class:"input-group"},_hoisted_53=["disabled"],_hoisted_54={ref:"canvas"};function _sfc_render(t,e,r,s,n,o){const l=resolveComponent("StoreInput"),a=resolveComponent("Icon"),u=resolveComponent("BoolStoreInput"),c=resolveComponent("CheckButton"),h=resolveComponent("SourceEditor"),d=resolveComponent("Loading"),m=resolveComponent("MidiRoll"),p=resolveComponent("NotationsMatcher"),g=resolveComponent("SheetSimple"),y=resolveComponent("SheetSigns"),w=resolveComponent("SheetLive"),L=resolveComponent("RemoteFile"),B=resolveComponent("DirBrowser"),C=resolveComponent("Dialog");return openBlock(),createElementBlock("div",{class:normalizeClass(["playground",{"drag-hover":n.dragHover}]),"data-hover-type":n.dragHover,onDragover:e[76]||(e[76]=withModifiers((...i)=>o.onDragOver&&o.onDragOver(...i),["prevent"])),onDragleave:e[77]||(e[77]=i=>n.dragHover=null),onDrop:e[78]||(e[78]=withModifiers((...i)=>o.onDropFile&&o.onDropFile(...i),["prevent"]))},[createBaseVNode("header",{class:normalizeClass(["controls",{buzy:n.operating}])},[withDirectives(createVNode(l,{modelValue:n.lilySource,"onUpdate:modelValue":e[0]||(e[0]=i=>n.lilySource=i),sessionKey:"lotus-lilySource"},null,8,["modelValue"]),[[vShow,!1]]),createBaseVNode("fieldset",null,[n.title?(openBlock(),createElementBlock("span",_hoisted_2,toDisplayString(n.title),1)):createCommentVNode("",!0)]),createBaseVNode("fieldset",null,[createBaseVNode("button",{onClick:e[1]||(e[1]=(...i)=>o.saveSource&&o.saveSource(...i)),title:"save source"},[createVNode(a,{name:"floppy"})]),createBaseVNode("button",{onClick:e[2]||(e[2]=i=>n.settingPanelVisible=!0),title:"settings"},[createVNode(a,{name:"gear"})]),createBaseVNode("button",{class:normalizeClass({"hidden-but-hold-place":!n.lilyMarkups.enabled}),onClick:e[3]||(e[3]=(...i)=>o.markupSource&&o.markupSource(...i)),title:"markup lilypond source",disabled:n.loadingLilyParser},[createVNode(a,{name:"code"})],10,_hoisted_3)]),createBaseVNode("fieldset",null,[withDirectives(createVNode(u,{modelValue:n.autoEngrave,"onUpdate:modelValue":e[4]||(e[4]=i=>n.autoEngrave=i),sessionKey:"lotus-autoEngrave"},null,8,["modelValue"]),[[vShow,!1]]),createVNode(c,{icon:"refresh",modelValue:n.autoEngrave,"onUpdate:modelValue":e[5]||(e[5]=i=>n.autoEngrave=i),title:"auto engrave when dirty"},null,8,["modelValue"]),createBaseVNode("button",{onClick:e[6]||(e[6]=(...i)=>o.engrave&&o.engrave(...i)),class:normalizeClass({working:n.engraving}),style:{zoom:"160%"},title:"engrave (F8)"},[createBaseVNode("span",{class:normalizeClass(["dirty-badge",{dirty:n.engraverDirty}])},null,2),createVNode(a,{name:"music"})],2),createBaseVNode("button",{disabled:!n.sheetDocument,onClick:e[7]||(e[7]=(...i)=>o.exportScore&&o.exportScore(...i)),title:"export score package"},[createVNode(a,{name:"download"})],8,_hoisted_4)]),createBaseVNode("fieldset",null,[withDirectives(createVNode(u,{modelValue:n.tokenizeStaff,"onUpdate:modelValue":e[8]||(e[8]=i=>n.tokenizeStaff=i),sessionKey:"lotus-tokenizeStaff"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(u,{modelValue:n.rollVisible,"onUpdate:modelValue":e[9]||(e[9]=i=>n.rollVisible=i),sessionKey:"lotus-rollVisible"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(u,{modelValue:n.showNotationsMatcher,"onUpdate:modelValue":e[10]||(e[10]=i=>n.showNotationsMatcher=i),sessionKey:"lotus-showNotationsMatcher"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(u,{modelValue:n.enabledMidiAudio,"onUpdate:modelValue":e[11]||(e[11]=i=>n.enabledMidiAudio=i),sessionKey:"lotus-enabledMidiAudio"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(u,{modelValue:n.showCursor,"onUpdate:modelValue":e[12]||(e[12]=i=>n.showCursor=i),sessionKey:"lotus-playground.showCursor"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(l,{modelValue:n.chromaticMode,"onUpdate:modelValue":e[13]||(e[13]=i=>n.chromaticMode=i),localKey:"lotus-playground.chromaticMode"},null,8,["modelValue"]),[[vShow,!1]]),createVNode(c,{icon:"piano",modelValue:n.tokenizeStaff,"onUpdate:modelValue":e[14]||(e[14]=i=>n.tokenizeStaff=i),title:"toggle live staff view"},null,8,["modelValue"]),createBaseVNode("fieldset",{class:normalizeClass({"hidden-but-hold-place":!n.tokenizeStaff})},[createVNode(c,{icon:"palette",modelValue:n.enabledChromatic,"onUpdate:modelValue":e[15]||(e[15]=i=>n.enabledChromatic=i),disabled:!n.sheetDocument,title:"enable chromatic mode"},null,8,["modelValue","disabled"]),withDirectives(createBaseVNode("select",{class:normalizeClass({"hidden-but-hold-place":!n.enabledChromatic}),"onUpdate:modelValue":e[16]||(e[16]=i=>n.chromaticMode=i),title:"chromatic mode type"},[...e[79]||(e[79]=[createBaseVNode("option",{value:"symbols"},"symbols",-1),createBaseVNode("option",{value:"pitch"},"pitch",-1),createBaseVNode("option",{value:"track"},"track",-1)])],2),[[vModelSelect,n.chromaticMode]]),createVNode(c,{icon:"sliders",modelValue:n.rollVisible,"onUpdate:modelValue":e[17]||(e[17]=i=>n.rollVisible=i),disabled:!n.midiPlayer,title:"toggle MIDI roll view"},null,8,["modelValue","disabled"]),createVNode(c,{icon:"git-branch",modelValue:n.showNotationsMatcher,"onUpdate:modelValue":e[18]||(e[18]=i=>n.showNotationsMatcher=i),disabled:!n.matcherNotations,title:"show notations matcher"},null,8,["modelValue","disabled"]),createVNode(c,{icon:"speaker",modelValue:n.enabledMidiAudio,"onUpdate:modelValue":e[19]||(e[19]=i=>n.enabledMidiAudio=i),title:"toggle MIDI audio playback"},null,8,["modelValue"]),createVNode(c,{icon:"playbar",modelValue:n.showCursor,"onUpdate:modelValue":e[20]||(e[20]=i=>n.showCursor=i),title:"toggle playback cursor"},null,8,["modelValue"]),createBaseVNode("button",{onClick:e[21]||(e[21]=(...i)=>o.togglePlayer&&o.togglePlayer(...i)),disabled:!n.midiPlayer,title:"play/pause MIDI"},[createVNode(a,{name:n.midiPlayer&&n.midiPlayer.isPlaying?"bars":"triangle-right"},null,8,["name"])],8,_hoisted_5)],2)]),createBaseVNode("fieldset",{class:normalizeClass({"hidden-but-hold-place":!n.tokenizeStaff})},[withDirectives(createVNode(u,{modelValue:n.bakingSheet,"onUpdate:modelValue":e[22]||(e[22]=i=>n.bakingSheet=i),sessionKey:"lotus-bakingSheet"},null,8,["modelValue"]),[[vShow,!1]]),createVNode(c,{icon:"type",modelValue:n.enabledMusicFont,"onUpdate:modelValue":e[23]||(e[23]=i=>n.enabledMusicFont=i),title:"enable music font rendering"},null,8,["modelValue"]),createVNode(c,{icon:"layers",modelValue:n.bakingSheet,"onUpdate:modelValue":e[24]||(e[24]=i=>n.bakingSheet=i),title:"enable sheet baking mode"},null,8,["modelValue"]),createVNode(c,{class:normalizeClass({"hidden-but-hold-place":!n.bakingSheet}),icon:"eye-off",modelValue:n.hideBakingImages,"onUpdate:modelValue":e[25]||(e[25]=i=>n.hideBakingImages=i),title:"hide baking background images"},null,8,["class","modelValue"])],2),createBaseVNode("fieldset",{class:normalizeClass({"hidden-but-hold-place":!n.tokenizeStaff})},[withDirectives(createVNode(u,{modelValue:n.enabledPointer,"onUpdate:modelValue":e[26]||(e[26]=i=>n.enabledPointer=i),sessionKey:"lotus-enabledPointer"},null,8,["modelValue"]),[[vShow,!1]]),createVNode(c,{icon:"cursor-arrow",modelValue:n.enabledPointer,"onUpdate:modelValue":e[27]||(e[27]=i=>n.enabledPointer=i),title:"enable pointer tracking"},null,8,["modelValue"]),n.enabledPointer?(openBlock(),createElementBlock("span",_hoisted_6,[n.pointerData?(openBlock(),createElementBlock("span",_hoisted_7,[createBaseVNode("span",null,[e[80]||(e[80]=createTextVNode("m: ",-1)),createBaseVNode("em",null,toDisplayString(n.pointerData.measureIndex),1)]),Number.isFinite(n.pointerData.tick)?(openBlock(),createElementBlock("span",_hoisted_8,[e[81]||(e[81]=createTextVNode("t: ",-1)),createBaseVNode("em",null,toDisplayString(Math.round(n.pointerData.tick)),1)])):createCommentVNode("",!0)])):createCommentVNode("",!0)])):createCommentVNode("",!0)],2),createBaseVNode("fieldset",null,[createBaseVNode("button",{onClick:e[28]||(e[28]=(...i)=>o.updateMeasureLayoutCode&&o.updateMeasureLayoutCode(...i)),title:"update measure layout code",disabled:n.loadingLilyParser},[createVNode(a,{name:"brackets"})],8,_hoisted_9),n.measureLayoutCode||n.measureLayoutCode===""?withDirectives((openBlock(),createElementBlock("input",{key:0,class:normalizeClass(["measure-layout-code",{error:n.measureLayoutCodeError,dirty:n.measureLayoutCodeDirty}]),type:"text","onUpdate:modelValue":e[29]||(e[29]=i=>n.measureLayoutCode=i),title:n.measureLayoutCodeError||"measure layout code",onInput:e[30]||(e[30]=(...i)=>o.validateMeasureLayoutCode&&o.validateMeasureLayoutCode(...i)),onChange:e[31]||(e[31]=i=>n.measureLayoutCodeDirty=!0)},null,42,_hoisted_10)),[[vModelText,n.measureLayoutCode]]):createCommentVNode("",!0),n.measureLayoutCodeDirty&&!n.measureLayoutCodeError?(openBlock(),createElementBlock("button",{key:1,class:"apply",disabled:n.loadingLilyParser,onClick:e[32]||(e[32]=(...i)=>o.applyUpdateMeasureLayoutCode&&o.applyUpdateMeasureLayoutCode(...i)),title:"apply measure layout changes"},"apply",8,_hoisted_11)):createCommentVNode("",!0)]),createBaseVNode("fieldset",null,[withDirectives(createBaseVNode("input",{class:"hightlight-symbol",type:"text","onUpdate:modelValue":e[33]||(e[33]=i=>n.highlightSymbol=i),title:"highlight symbol (case insensitive)"},null,512),[[vModelText,n.highlightSymbol]])])],2),createBaseVNode("main",null,[createBaseVNode("div",{class:normalizeClass(["source-container",{loading:o.sourceIsLoading,"drag-hover":n.sourceDragHover,connected:n.sourceEditorConnected}]),onDragover:e[37]||(e[37]=withModifiers(i=>n.sourceDragHover=!0,["prevent"])),onDragleave:e[38]||(e[38]=i=>n.sourceDragHover=null),onDrop:e[39]||(e[39]=withModifiers(i=>o.onDropFile(i,{source:!0}),["prevent","stop"])),onFocusin:e[40]||(e[40]=i=>n.showSourceDir=!1)},[createVNode(h,{ref:"sourceEditor",source:n.lilySource,"onUpdate:source":e[34]||(e[34]=i=>n.lilySource=i),disabled:o.sourceIsLoading},null,8,["source","disabled"]),createBaseVNode("span",_hoisted_12,[createBaseVNode("button",{class:"inspect",onClick:e[35]||(e[35]=(...i)=>o.inspectLily&&o.inspectLily(...i)),title:"inspect lily document"},[createVNode(a,{name:"book"})]),withDirectives(createBaseVNode("button",{class:normalizeClass(["log",o.engraverLogStatus]),title:n.engraverLogs,onClick:e[36]||(e[36]=(...i)=>o.showEngraverLog&&o.showEngraverLog(...i))},null,10,_hoisted_13),[[vShow,o.engraverLogStatus]]),withDirectives(createVNode(d,null,null,512),[[vShow,n.loadingLilyParser]])]),withDirectives(createVNode(d,null,null,512),[[vShow,o.sourceIsLoading]])],34),createBaseVNode("div",{class:normalizeClass(["build-container",{loading:n.engraving,dirty:n.engraverDirty,chromatic:n.enabledChromatic,inspecting:n.showNotationsMatcher}]),ref:"buildContainer","data-chromatic":n.chromaticMode},[n.tokenizeStaff&&n.midiPlayer?withDirectives((openBlock(),createBlock(m,{key:0,player:n.midiPlayer,timeScale:.016,height:120,width:n.buildContainerSize.width},null,8,["player","width"])),[[vShow,n.rollVisible]]):createCommentVNode("",!0),n.showNotationsMatcher&&n.matcherNotations?(openBlock(),createBlock(p,{key:1,criterion:n.matcherNotations&&n.matcherNotations.criterion,sample:n.matcherNotations&&n.matcherNotations.sample,path:n.matcherNotations&&n.matcherNotations.path,softIndexAsX:n.enabledSheetNotation,onClickCNote:o.onClickMatcherNote,onClickSNote:o.onClickMatcherNote},null,8,["criterion","sample","path","softIndexAsX","onClickCNote","onClickSNote"])):createCommentVNode("",!0),createBaseVNode("div",_hoisted_15,[n.svgDocuments&&!n.tokenizeStaff?(openBlock(),createBlock(g,{key:0,documents:n.svgDocuments,onLinkClick:o.onSheetLink},null,8,["documents","onLinkClick"])):createCommentVNode("",!0),n.svgHashTable?withDirectives((openBlock(),createBlock(y,{key:1,hashTable:n.svgHashTable,enabledFont:n.enabledMusicFont},null,8,["hashTable","enabledFont"])),[[vShow,!1]]):createCommentVNode("",!0),n.tokenizeStaff&&n.sheetDocument?(openBlock(),createBlock(w,{key:2,ref:"sheet",doc:n.sheetDocument,midiNotation:n.midiNotation,pitchContextGroup:n.pitchContextGroup,midiPlayer:n.midiPlayer,"onUpdate:midiPlayer":e[41]||(e[41]=i=>n.midiPlayer=i),showMark:!0,enablePointer:n.enabledPointer,showCursor:n.showCursor,bakingMode:n.bakingSheet,backgroundImages:n.hideBakingImages?null:n.bakingImages,scheduler:n.scheduler,"onUpdate:scheduler":e[42]||(e[42]=i=>n.scheduler=i),enabledFont:n.enabledMusicFont,highlightSymbol:n.highlightSymbol&&n.highlightSymbol.toUpperCase(),onMidi:o.onMidi,onCursorPageShift:o.onCursorPageShift,onPointerUpdate:o.onPointerUpdate,onPointerClick:o.onPointerClick,onClickToken:o.onClickToken},{system:withCtx(i=>[n.enabledChromatic?(openBlock(),createElementBlock("g",_hoisted_16,[(openBlock(!0),createElementBlock(Fragment,null,renderList(i.system.staves,(v,k)=>(openBlock(),createElementBlock("g",{class:"staff",key:k,transform:`translate(${v.x}, ${v.y})`},[n.chromaticMode==="symbols"?(openBlock(),createElementBlock("g",_hoisted_18,[createBaseVNode("rect",{class:"head",x:0,y:-2,width:v.headWidth,height:4},null,8,_hoisted_19),e[82]||(e[82]=createBaseVNode("circle",null,null,-1)),Number.isFinite(v.top)?(openBlock(),createElementBlock("line",{key:0,x1:0,y1:v.top,x2:i.system.width,y2:v.top},null,8,_hoisted_20)):createCommentVNode("",!0),(openBlock(!0),createElementBlock(Fragment,null,renderList(v.measures,(b,x)=>(openBlock(),createElementBlock("g",{class:normalizeClass(["measure",b.class]),key:x},[createBaseVNode("rect",{x:b.lineX,y:-2,width:b.noteRange.end-b.lineX,height:4},null,8,_hoisted_21),createBaseVNode("text",{x:b.headX},"'"+toDisplayString(b.index),9,_hoisted_22)],2))),128))])):createCommentVNode("",!0),n.chromaticMode==="pitch"&&o.pitchContextMarks[i.system.index]&&o.pitchContextMarks[i.system.index][k]?(openBlock(),createElementBlock("g",_hoisted_23,[(openBlock(!0),createElementBlock(Fragment,null,renderList(o.pitchContextMarks[i.system.index][k],(b,x)=>(openBlock(),createElementBlock("g",{key:x,transform:`translate(${b.x}, 0)`},[e[85]||(e[85]=createBaseVNode("line",{class:"base-line",x1:"0",x2:"0",y1:"-3",y2:"3"},null,-1)),createBaseVNode("g",_hoisted_25,[(openBlock(!0),createElementBlock(Fragment,null,renderList(b.names[0],(_,S)=>(openBlock(),createElementBlock("g",{key:S,class:normalizeClass(["pitch",{sharp:_.alter>0,flat:_.alter<0}]),transform:`translate(0, ${_.y})`},[e[83]||(e[83]=createBaseVNode("rect",{class:"bg"},null,-1)),createBaseVNode("text",null,toDisplayString(_.name),1)],10,_hoisted_26))),128))]),createBaseVNode("g",_hoisted_27,[(openBlock(!0),createElementBlock(Fragment,null,renderList(b.names[1],(_,S)=>(openBlock(),createElementBlock("g",{key:S,class:normalizeClass(["pitch",{sharp:_.alter>0,flat:_.alter<0}]),transform:`translate(0, ${_.y})`},[e[84]||(e[84]=createBaseVNode("rect",{class:"bg"},null,-1)),createBaseVNode("text",null,toDisplayString(_.name),1)],10,_hoisted_28))),128))])],8,_hoisted_24))),128))])):createCommentVNode("",!0)],8,_hoisted_17))),128))])):createCommentVNode("",!0)]),staff:withCtx(i=>[n.enabledChromatic&&n.chromaticMode==="symbols"?(openBlock(),createElementBlock("g",_hoisted_29,[o.staffTopToken(i.staff)?(openBlock(),createElementBlock("g",_hoisted_30,[createBaseVNode("g",{class:"staff-peak",transform:`translate(${o.staffTopToken(i.staff).x}, ${o.staffTopToken(i.staff).y})`},[e[86]||(e[86]=createBaseVNode("path",{d:"M-1.2,0 L1.2,0 M-0.9,0.6 L0,0 L0.9,0.6"},null,-1)),createBaseVNode("line",{x1:0,x2:0,y1:0,y2:-o.staffTopToken(i.staff).y},null,8,_hoisted_32),e[87]||(e[87]=createBaseVNode("circle",null,null,-1))],8,_hoisted_31),createBaseVNode("g",{class:"staff-peak",transform:`translate(${o.staffBottomToken(i.staff).x}, ${o.staffBottomToken(i.staff).y})`},[e[88]||(e[88]=createBaseVNode("path",{d:"M-1.2,0 L1.2,0 M-0.9,-0.6 L0,0 L0.9,-0.6"},null,-1)),createBaseVNode("line",{x1:0,x2:0,y1:0,y2:-o.staffBottomToken(i.staff).y},null,8,_hoisted_34),e[89]||(e[89]=createBaseVNode("circle",null,null,-1))],8,_hoisted_33)])):createCommentVNode("",!0)])):createCommentVNode("",!0)]),_:1},8,["doc","midiNotation","pitchContextGroup","midiPlayer","enablePointer","showCursor","bakingMode","backgroundImages","scheduler","enabledFont","highlightSymbol","onMidi","onCursorPageShift","onPointerUpdate","onPointerClick","onClickToken"])):createCommentVNode("",!0)],512),withDirectives(createVNode(d,null,null,512),[[vShow,n.engraving]])],10,_hoisted_14),n.sourceEditorEnabled?(openBlock(),createElementBlock("div",_hoisted_35,[createBaseVNode("button",{class:"folder",onClick:e[43]||(e[43]=i=>{n.showSourceDir=!n.showSourceDir,t.$refs.sourceDir.reload()}),title:"browse source files"},[createVNode(a,{name:"folder",size:24})]),withDirectives(createVNode(l,{modelValue:n.sourceEditorHost,"onUpdate:modelValue":e[44]||(e[44]=i=>n.sourceEditorHost=i),localKey:"lotus-sourceEditorHost"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(l,{modelValue:n.sourceEditorFilePath,"onUpdate:modelValue":e[45]||(e[45]=i=>n.sourceEditorFilePath=i),sessionKey:"lotus-sourceEditorFilePath"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createVNode(L,{ref:"remoteFile",host:n.sourceEditorHost,filePath:n.sourceEditorFilePath,filePathReadOnly:!0,content:n.lilySource,"onUpdate:content":e[46]||(e[46]=i=>n.lilySource=i),connected:n.sourceEditorConnected,"onUpdate:connected":e[47]||(e[47]=i=>n.sourceEditorConnected=i),loading:n.sourceEditorLoading,"onUpdate:loading":e[48]||(e[48]=i=>n.sourceEditorLoading=i)},null,8,["host","filePath","content","connected","loading"]),[[vShow,n.sourceEditorFilePath]]),createVNode(B,{ref:"sourceDir",homeURL:"/source-dir/",shown:n.showSourceDir,"onUpdate:shown":e[49]||(e[49]=i=>n.showSourceDir=i),handlePattern:/\.ly$/,compactFolders:!0,onPickFile:o.onSourceDirPick},null,8,["shown","onPickFile"])])):createCommentVNode("",!0)]),createVNode(C,{visible:n.settingPanelVisible,"onUpdate:visible":e[75]||(e[75]=i=>n.settingPanelVisible=i)},{default:withCtx(()=>[createBaseVNode("div",_hoisted_36,[createBaseVNode("header",_hoisted_37,[e[90]||(e[90]=createBaseVNode("h2",null,"Settings",-1)),createBaseVNode("button",{class:"close-btn",onClick:e[50]||(e[50]=withModifiers(i=>n.settingPanelVisible=!1,["stop"])),title:"close"},"×")]),createBaseVNode("div",_hoisted_38,[createBaseVNode("datalist",_hoisted_39,[(openBlock(!0),createElementBlock(Fragment,null,renderList(n.lilyMarkupMethods,(i,v)=>(openBlock(),createElementBlock("option",{key:v,value:i},null,8,_hoisted_40))),128))]),createBaseVNode("section",_hoisted_41,[e[99]||(e[99]=createBaseVNode("h3",null,"MusicXML to Lilypond",-1)),createBaseVNode("div",_hoisted_42,[createBaseVNode("label",null,[e[91]||(e[91]=createBaseVNode("span",null,"Remove Breaks",-1)),createVNode(u,{modelValue:n.xml2lyOptions.removeBreaks,"onUpdate:modelValue":e[51]||(e[51]=i=>n.xml2lyOptions.removeBreaks=i),localKey:"lotus-xml2lyOptions.removeBreaks"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[92]||(e[92]=createBaseVNode("span",null,"Remove Staff Group",-1)),createVNode(u,{modelValue:n.xml2lyOptions.removeStaffGroup,"onUpdate:modelValue":e[52]||(e[52]=i=>n.xml2lyOptions.removeStaffGroup=i),localKey:"lotus-xml2lyOptions.removeStaffGroup"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[93]||(e[93]=createBaseVNode("span",null,"Merge Continuous Graces",-1)),createVNode(u,{modelValue:n.xml2lyOptions.mergeContinuousGraces,"onUpdate:modelValue":e[53]||(e[53]=i=>n.xml2lyOptions.mergeContinuousGraces=i),localKey:"lotus-xml2lyOptions.mergeContinuousGraces"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[94]||(e[94]=createBaseVNode("span",null,"Exclude Chord Tracks from MIDI",-1)),createVNode(u,{modelValue:n.xml2lyOptions.excludeChordTracksFromMIDI,"onUpdate:modelValue":e[54]||(e[54]=i=>n.xml2lyOptions.excludeChordTracksFromMIDI=i),localKey:"lotus-xml2lyOptions.excludeChordTracksFromMIDI"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[95]||(e[95]=createBaseVNode("span",null,"Use MIDI Instrument as Channel Mapping",-1)),createVNode(u,{modelValue:n.xml2lyOptions.midiChannelMapping,"onUpdate:modelValue":e[55]||(e[55]=i=>n.xml2lyOptions.midiChannelMapping=i),localKey:"lotus-xml2lyOptions.midiChannelMapping"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[96]||(e[96]=createBaseVNode("span",null,"Remove Trill Spans",-1)),createBaseVNode("button",{onClick:e[56]||(e[56]=(...i)=>o.removeTrillSpans&&o.removeTrillSpans(...i)),disabled:n.loadingLilyParser},"Remove",8,_hoisted_43)]),createBaseVNode("label",null,[e[97]||(e[97]=createBaseVNode("span",null,"Prune Stem Directions",-1)),createBaseVNode("button",{onClick:e[57]||(e[57]=i=>o.executeMarkup("pruneStemDirections")),disabled:n.loadingLilyParser},"Prune",8,_hoisted_44)]),createBaseVNode("label",null,[e[98]||(e[98]=createBaseVNode("span",null,"Redivide Measures",-1)),createBaseVNode("button",{onClick:e[58]||(e[58]=(...i)=>o.redivideLilyDocument&&o.redivideLilyDocument(...i)),disabled:n.loadingLilyParser},"Redivide",8,_hoisted_45)])])]),createBaseVNode("section",_hoisted_46,[e[106]||(e[106]=createBaseVNode("h3",null,"Engrave",-1)),createBaseVNode("div",_hoisted_47,[createBaseVNode("label",null,[e[100]||(e[100]=createBaseVNode("span",null,"Logger Recorder",-1)),createVNode(u,{modelValue:n.engraveWithLogs,"onUpdate:modelValue":e[59]||(e[59]=i=>n.engraveWithLogs=i),localKey:"lotus-engraveWithLogs"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[101]||(e[101]=createBaseVNode("span",null,"Use Sheet Notation",-1)),createVNode(u,{modelValue:n.enabledSheetNotation,"onUpdate:modelValue":e[60]||(e[60]=i=>n.enabledSheetNotation=i),localKey:"lotus-enabledSheetNot"},null,8,["modelValue"])]),withDirectives(createBaseVNode("label",null,[e[102]||(e[102]=createBaseVNode("span",null,"Fuzzy Notation Matcher",-1)),createVNode(u,{modelValue:n.enabledFuzzyMatcher,"onUpdate:modelValue":e[61]||(e[61]=i=>n.enabledFuzzyMatcher=i),localKey:"lotus-enabledFuzzyMatcher"},null,8,["modelValue"])],512),[[vShow,n.enabledSheetNotation]]),createBaseVNode("label",null,[e[104]||(e[104]=createBaseVNode("span",null,"Measure Repeat Type",-1)),createBaseVNode("div",_hoisted_48,[withDirectives(createVNode(l,{modelValue:n.measureLayoutType,"onUpdate:modelValue":e[62]||(e[62]=i=>n.measureLayoutType=i),localKey:"lotus-measureLayoutType"},null,8,["modelValue"]),[[vShow,!1]]),withDirectives(createBaseVNode("select",{"onUpdate:modelValue":e[63]||(e[63]=i=>n.measureLayoutType=i)},[...e[103]||(e[103]=[createBaseVNode("option",{value:"ordinary"},"Ordinary",-1),createBaseVNode("option",{value:"full"},"Full",-1),createBaseVNode("option",{value:"conservative"},"Conservative",-1),createBaseVNode("option",{value:"once"},"Once",-1)])],512),[[vModelSelect,n.measureLayoutType]])])]),createBaseVNode("label",null,[e[105]||(e[105]=createBaseVNode("span",null,"Articulate MIDI",-1)),createVNode(u,{modelValue:n.articulateMIDI,"onUpdate:modelValue":e[64]||(e[64]=i=>n.articulateMIDI=i),localKey:"lotus-articulateMIDI"},null,8,["modelValue"])])])]),createBaseVNode("section",_hoisted_49,[e[116]||(e[116]=createBaseVNode("h3",null,"Lilypond Markups",-1)),createBaseVNode("div",_hoisted_50,[createBaseVNode("label",null,[e[107]||(e[107]=createBaseVNode("span",null,"Enabled",-1)),createVNode(u,{modelValue:n.lilyMarkups.enabled,"onUpdate:modelValue":e[65]||(e[65]=i=>n.lilyMarkups.enabled=i),localKey:"lotus-lilyMarkups.enabled"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[108]||(e[108]=createBaseVNode("span",null,"Staff Size",-1)),createVNode(l,{type:"number",modelValue:n.lilyMarkups.staffSize,"onUpdate:modelValue":e[66]||(e[66]=i=>n.lilyMarkups.staffSize=i),modelModifiers:{number:!0},localKey:"lotus-lilyMarkups.staffSize"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[109]||(e[109]=createBaseVNode("span",null,"Auto Paper Size",-1)),createVNode(u,{modelValue:n.lilyMarkups.autoPaperSize,"onUpdate:modelValue":e[67]||(e[67]=i=>n.lilyMarkups.autoPaperSize=i),localKey:"lotus-lilyMarkups.autoPaperSize"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[110]||(e[110]=createBaseVNode("span",null,"Page Count",-1)),createVNode(l,{type:"number",modelValue:n.lilyMarkups.pageCount,"onUpdate:modelValue":e[68]||(e[68]=i=>n.lilyMarkups.pageCount=i),modelModifiers:{number:!0},localKey:"lotus-lilyMarkups.pageCount"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[111]||(e[111]=createBaseVNode("span",null,"System-System Spacing",-1)),createVNode(l,{type:"number",modelValue:n.lilyMarkups.systemSpacing,"onUpdate:modelValue":e[69]||(e[69]=i=>n.lilyMarkups.systemSpacing=i),modelModifiers:{number:!0},localKey:"lotus-lilyMarkups.systemSpacing"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[112]||(e[112]=createBaseVNode("span",null,"Top Markup Spacing",-1)),createVNode(l,{type:"number",modelValue:n.lilyMarkups.topMarkupSpacing,"onUpdate:modelValue":e[70]||(e[70]=i=>n.lilyMarkups.topMarkupSpacing=i),modelModifiers:{number:!0},localKey:"lotus-lilyMarkups.topMarkupSpacing"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[113]||(e[113]=createBaseVNode("span",null,"Ragged Last",-1)),createVNode(u,{modelValue:n.lilyMarkups.raggedLast,"onUpdate:modelValue":e[71]||(e[71]=i=>n.lilyMarkups.raggedLast=i),localKey:"lotus-lilyMarkups.raggedLast"},null,8,["modelValue"])]),createBaseVNode("label",null,[e[114]||(e[114]=createBaseVNode("span",null,"Export a Markup File",-1)),createBaseVNode("button",{onClick:e[72]||(e[72]=(...i)=>o.exportMarkupLily&&o.exportMarkupLily(...i))},"Export .ly")]),createBaseVNode("label",_hoisted_51,[e[115]||(e[115]=createBaseVNode("span",null,"Execute Function",-1)),createBaseVNode("div",_hoisted_52,[withDirectives(createBaseVNode("input",{type:"text",list:"lily-markups","onUpdate:modelValue":e[73]||(e[73]=i=>n.chosenLilyMarkupMethod=i),placeholder:"Choose method..."},null,512),[[vModelText,n.chosenLilyMarkupMethod]]),createBaseVNode("button",{onClick:e[74]||(e[74]=i=>{o.executeMarkup(n.chosenLilyMarkupMethod),n.chosenLilyMarkupMethod=null}),disabled:!n.chosenLilyMarkupMethod},toDisplayString(n.chosenLilyMarkupMethod?"Call":"Done"),9,_hoisted_53)])])])])])])]),_:1},8,["visible"]),withDirectives(createBaseVNode("canvas",_hoisted_54,null,512),[[vShow,!1]])],42,_hoisted_1)}const playground=_export_sfc(_sfc_main,[["render",_sfc_render]]);export{playground as default};