2 lines
278 KiB
JavaScript
2 lines
278 KiB
JavaScript
(self.webpackChunktelegram_t=self.webpackChunktelegram_t||[]).push([[5556],{75556:(e,t,n)=>{"use strict";var r=n(35802),i=n(97265);let a;n(37373);const s=new Promise((e=>{Module.onRuntimeInitialized=()=>{a={init:Module.cwrap("lottie_init","",[]),destroy:Module.cwrap("lottie_destroy","",["number"]),resize:Module.cwrap("lottie_resize","",["number","number","number"]),buffer:Module.cwrap("lottie_buffer","number",["number"]),render:Module.cwrap("lottie_render","",["number","number"]),loadFromData:Module.cwrap("lottie_load_from_data","number",["number","number"])},e()}})),o=new Map;async function d(e){const t=await fetch(e);if(t.headers.get("Content-Type")?.startsWith("text/"))return t.text();const n=await t.arrayBuffer();return(0,r.inflate)(n,{to:"string"})}function l(e,t,n){const r=t?30:60,i=JSON.parse(e).fr||r,a=i%r==0?i/r:1;return{reduceFactor:a,msPerFrame:1e3/(i/a),reducedFramesCount:Math.ceil(n/a)}}const u={"rlottie:init":async function(e,t,n,r,i,u){a||await s;const h=await d(t),f=allocate(intArrayFromString(h),"i8",0),p=a.init(),c=a.loadFromData(p,f);a.resize(p,n,n);const m=new ImageData(n,n),{reduceFactor:_,msPerFrame:g,reducedFramesCount:y}=l(h,r,c);o.set(e,{imgSize:n,reduceFactor:_,handle:p,imageData:m,customColor:i}),u(_,g,y)},"rlottie:changeData":async function(e,t,n,r){a||await s;const i=await d(t),u=allocate(intArrayFromString(i),"i8",0),{handle:h}=o.get(e),f=a.loadFromData(h,u),{reduceFactor:p,msPerFrame:c,reducedFramesCount:m}=l(i,n,f);r(p,c,m)},"rlottie:renderFrames":async function(e,t,n){a||await s;const{imgSize:r,reduceFactor:i,handle:d,imageData:l,customColor:u}=o.get(e),h=t*i;a.render(d,h);const f=a.buffer(d),p=Module.HEAPU8.subarray(f,f+r*r*4);if(u){const e=new Uint8ClampedArray(p);!function(e,t){for(let n=0;n<e.length;n+=4)e[n]=t[0],e[n+1]=t[1],e[n+2]=t[2]}(e,u),l.data.set(e)}else l.data.set(p);n(t,await createImageBitmap(l))},"rlottie:destroy":function e(t){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{const e=o.get(t);a.destroy(e.handle),o.delete(t)}catch(r){n||setTimeout((()=>e(t,!0)),1e3)}}};(0,i.R)(u);var h=n(32041),f=n(26926),p=n(69118);const c=new Map;function m(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}self.addEventListener("message",(e=>{const{type:t,messageId:n,result:r}=e.data;if("partResponse"===t){const e=c.get(n);e&&e.resolve(r)}}));const _=1024;var g=function(e){return e.loading="loading",e.ready="ready",e.closed="closed",e}(g||{});class y{constructor(e,t){let{onConfig:n,onChunk:r,stepOffset:i,stepMultiplier:a,isPolyfill:s,maxFrames:o}=t;m(this,"url",void 0),m(this,"file",void 0),m(this,"status",g.loading),m(this,"stepOffset",void 0),m(this,"stepMultiplier",void 0),m(this,"maxFrames",void 0),m(this,"isPolyfill",void 0),m(this,"decodedSamples",new Set),m(this,"lastSample",0),m(this,"onConfig",void 0),m(this,"onChunk",void 0),this.url=e,this.stepOffset=i,this.stepMultiplier=a,this.maxFrames=o,this.isPolyfill=s,this.onConfig=n,this.onChunk=r,this.file=h.createFile(),this.file.onError=e=>{console.error(e)},this.file.onReady=this.onReady.bind(this),this.file.onSamples=this.onSamples.bind(this),this.loadMetadata()}async loadMetadata(){let e=0;for(;void 0!==e;){try{e=await this.requestPart(e,131072)}catch(e){console.error(e)}if(this.status===g.ready)break}}async loadNextFrames(e,t,n){let r=e*this.stepOffset,i=0,a=this.file.seek(r,!0);for(;this.status!==g.closed;)try{if(await this.requestPart(a.offset,n),r>t)break;this.lastSample>1&&i<this.lastSample&&(r+=e*this.stepMultiplier,i=this.lastSample),a=this.file.seek(r,!0)}catch(e){console.error(e)}this.file.flush()}async requestPart(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const r=e%_,i=e-r,a=i+t-1;let s=await function(e){const t=(0,f.Z)(c),n={};let r=!1;const i=Promise.race([(0,p.wO)(3e4).then((()=>r?void 0:Promise.reject(new Error("ERROR_PART_TIMEOUT")))),new Promise(((e,t)=>{Object.assign(n,{resolve:e,reject:t})}))]);return c.set(t,n),i.catch((()=>{})).finally((()=>{c.delete(t),r=!0})),postMessage({type:"requestPart",messageId:t,params:e}),i}({url:this.url,start:i,end:a});if(!s)return;r&&(s=s.slice(r)),s.fileStart=e;const o=this.file.appendBuffer(s);return n?o:e+s.byteLength}description(e){const t=this.file.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC||e.av1C){const t=new h.DataStream(void 0,0,h.DataStream.BIG_ENDIAN);return e.avcC?e.avcC.write(t):e.hvcC?e.hvcC.write(t):e.av1C&&e.av1C.write(t),new Uint8Array(t.buffer,8)}throw new Error("avcC, hvcC ro av1C not found")}onReady(e){const t=e.videoTracks[0];let n=t.codec;n.startsWith("avc1")&&(n="avc1.4d001f"),this.onConfig({codec:n,codedHeight:t.video.height,codedWidth:t.video.width,description:this.description(t)});const r=e.duration/e.timescale,i=this.isPolyfill?24:12,a=(s=t.bitrate/i)+_-s%_;var s;const o=function(e,t){return Math.round((e+t)/t)}(r,this.maxFrames);this.file.setExtractionOptions(t.id,void 0,{nbSamples:1}),this.file.start(),this.status=g.ready,this.loadNextFrames(o,r,a)}onSamples(e,t,n){if(this.status===g.ready)for(const t of n){const n=t.cts/t.timescale,r=t.is_sync?"key":"delta",i=`${r}${t.number}`;this.decodedSamples.has(i)||(this.onChunk(new EncodedVideoChunk({type:r,timestamp:1e6*n,duration:1e6*t.duration/t.timescale,data:t.data})),this.decodedSamples.add(i),this.lastSample=parseInt(t.number,10),t.is_sync&&this.file.releaseUsedSamples(e,t.number))}}close(){this.file.flush(),this.file.stop(),this.status=g.closed}}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const S=class{constructor(e){v(this,"type",void 0),v(this,"timestamp",void 0),v(this,"duration",void 0),v(this,"byteLength",void 0),v(this,"_data",void 0),this.type=e.type,this.timestamp=e.timestamp,this.duration=e.duration||0;const t=this._data=new Uint8Array(e.data.buffer||e.data,e.data.byteOffset||0);this.byteLength=t.byteLength}_libavGetData(){return this._data}copyTo(e){new Uint8Array(e.buffer||e,e.byteOffset||0).set(this._data)}};function b(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let w=null;class E{constructor(e,t){b(this,"format",void 0),b(this,"codedWidth",void 0),b(this,"codedHeight",void 0),b(this,"codedRect",void 0),b(this,"visibleRect",void 0),b(this,"displayWidth",void 0),b(this,"displayHeight",void 0),b(this,"duration",void 0),b(this,"timestamp",void 0),b(this,"colorSpace",void 0),b(this,"_layout",void 0),b(this,"_data",void 0),b(this,"_nonSquarePixels",void 0),b(this,"_sar_num",void 0),b(this,"_sar_den",void 0),e instanceof ArrayBuffer||e.buffer instanceof ArrayBuffer?this._constructBuffer(e,t):this._constructCanvas(e,t)}_constructCanvas(e,t){null===w&&(w=document.createElement("canvas"),w.style.display="none",document.body.appendChild(w));let n=0,r=0;if(e.naturalWidth?(n=e.naturalWidth,r=e.naturalHeight):e.videoWidth?(n=e.videoWidth,r=e.videoHeight):e.width&&(n=e.width,r=e.height),!n||!r)throw new DOMException("Could not determine dimensions","InvalidStateError");w.width=n,w.height=r;const i=w.getContext("2d");i.clearRect(0,0,n,r),i.drawImage(e,0,0),this._constructBuffer(i.getImageData(0,0,n,r).data,{format:"RGBA",codedWidth:n,codedHeight:r,timestamp:t.timestamp,duration:t.duration||0,layout:[{offset:0,stride:4*n}],displayWidth:t.displayWidth||n,displayHeight:t.displayHeight||r})}_constructBuffer(e,t){const n=this.format=t.format,r=this.codedWidth=t.codedWidth,i=this.codedHeight=t.codedHeight;this.visibleRect=new DOMRect(0,0,r,i);const a=this.displayWidth=t.displayWidth||t.codedWidth,s=this.displayHeight=t.displayHeight||t.codedHeight;if(a!==r||s!==i?(this._nonSquarePixels=!0,this._sar_num=a*i,this._sar_den=s*r):this._nonSquarePixels=!1,this.timestamp=t.timestamp,t.duration&&(this.duration=t.duration),t.layout)this._layout=t.layout;else{const e=F(n),t=[];let a=0;for(let s=0;s<e;s++){const e=U(n,s),o=A(n,s),d=~~(r/e);t.push({offset:a,stride:d}),a+=d*~~(i/o)}this._layout=t}this._data=new Uint8Array(e.buffer||e,e.byteOffset||0)}_libavGetData(){return this._data}allocationSize(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null===this._data)throw new DOMException("Detached","InvalidStateError");if(null===this.format)throw new DOMException("Not supported","NotSupportedError");return this._parseVideoFrameCopyToOptions(e).allocationSize}_parseVideoFrameCopyToOptions(e){const t=this.visibleRect,n=e.rect?new DOMRect(e.rect.x,e.rect.y,e.rect.width,e.rect.height):null,r=this._parseVisibleRect(t,n),i=e.layout||null;return this._computeLayoutAndAllocationSize(r,i)}_parseVisibleRect(e,t){let n=e;if(t){if(0===t.width||0===t.height)throw new TypeError("Invalid rectangle");if(t.x+t.width>this.codedWidth)throw new TypeError("Invalid rectangle");if(t.y+t.height>this.codedHeight)throw new TypeError("Invalid rectangle");n=t}if(!this._verifyRectSampleAlignment(n))throw new TypeError("Invalid alignment");return n}_computeLayoutAndAllocationSize(e,t){const n=F(this.format);if(t&&t.length!==n)throw new TypeError("Invalid layout");let r=0;const i=[],a=[];let s=0;for(;s<n;){const n=x(this.format,s),o=U(this.format,s),d=A(this.format,s),l=o*n,u={destinationOffset:0,destinationStride:0,sourceTop:~~(e.y/d),sourceHeight:~~(e.height/d),sourceLeftBytes:~~(e.x/l),sourceWidthBytes:~~(e.width/l)};if(t){const e=t[s];if(e.stride<u.sourceWidthBytes)throw new TypeError("Invalid stride");u.destinationOffset=e.offset,u.destinationStride=e.stride}else u.destinationOffset=r,u.destinationStride=u.sourceWidthBytes;const h=u.destinationStride*u.sourceHeight,f=h+u.destinationOffset;if(h>=4294967296||f>=4294967296)throw new TypeError("Plane too large");a.push(f),f>r&&(r=f);let p=0;for(;p<s;){if(!(f<=i[p].destinationOffset||a[p]<=u.destinationOffset))throw new TypeError("Invalid plane layout");p++}i.push(u),s++}return{computedLayouts:i,allocationSize:r}}_verifyRectSampleAlignment(e){if(!this.format)return!0;let t=0;const n=F(this.format);for(;t<n;){const n=U(this.format,t),r=A(this.format,t),i=e.x/n;if(i!==~~i)return!1;const a=e.width/n;if(a!==~~a)return!1;const s=e.y/r;if(s!==~~s)return!1;const o=e.height/r;if(o!==~~o)return!1;t++}return!0}async copyTo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=new Uint8Array(e.buffer||e,e.byteOffset||0);if(null===this._data)throw new DOMException("Detached","InvalidStateError");if(!this.format)throw new DOMException("No format","NotSupportedError");const r=this._parseVideoFrameCopyToOptions(t);if(e.byteLength<r.allocationSize)throw new TypeError("Insufficient space");const i=[];F(this.format);let a=0;for(;a<r.computedLayouts.length;){const e=this._layout[a].stride,t=r.computedLayouts[a];let s=t.sourceTop*e;s+=t.sourceLeftBytes;let o=t.destinationOffset;const d=t.sourceWidthBytes;let l=0;for(;l<t.sourceHeight;)n.set(this._data.subarray(s,s+d),o),s+=e,o+=t.destinationStride,l++;a++,i.push({offset:t.destinationOffset,stride:t.destinationStride})}return i}clone(){return new E(this._data,{format:this.format,codedWidth:this.codedWidth,codedHeight:this.codedHeight,timestamp:this.timestamp,duration:this.duration,layout:this._layout})}close(){this._data=null}}function F(e){switch(e){case"I420":case"I422":case"I444":return 3;case"I420A":return 4;case"NV12":return 2;case"RGBA":case"RGBX":case"BGRA":case"BGRX":return 1;default:throw new DOMException("Unsupported video pixel format","NotSupportedError")}}function x(e,t){switch(e){case"I420":case"I420A":case"I422":case"I444":return 1;case"NV12":return 1===t?2:1;case"RGBA":case"RGBX":case"BGRA":case"BGRX":return 4;default:throw new DOMException("Unsupported video pixel format","NotSupportedError")}}function U(e,t){if(0===t)return 1;switch(e){case"I420":case"I422":case"NV12":return 2;case"I420A":return 3===t?1:2;case"I444":case"RGBA":case"RGBX":case"BGRA":case"BGRX":return 1;default:throw new DOMException("Unsupported video pixel format","NotSupportedError")}}function A(e,t){if(0===t)return 1;switch(e){case"I420":case"NV12":return 2;case"I420A":return 3===t?1:2;case"I422":case"I444":case"RGBA":case"RGBX":case"BGRA":case"BGRX":return 1;default:throw new DOMException("Unsupported video pixel format","NotSupportedError")}}const k=[];let T={},P=null;function B(e){T=e}async function M(){return k.length?k.shift():LibAV.LibAV(T)}function I(e){k.push(e)}async function D(){P=await async function(){const e=await M(),t=[];for(const[n,r]of[["libaom-av1","av01"],["h264","avc1"],["hevc","hvc1"]])await e.avcodec_find_decoder_by_name(n)&&t.push(r);return I(e),t}()}function z(e){if("string"==typeof e){let t=e=e.replace(/\..*/,"");switch(e){case"av01":t="libaom-av1";break;case"avc1":t="h264";break;case"hvc1":t="hevc";break;default:return null}return P.indexOf(e)>=0?{codec:t}:null}return e.libavjs}function C(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function R(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class L{constructor(e){R(this,"state",void 0),R(this,"decodeQueueSize",void 0),R(this,"_output",void 0),R(this,"_error",void 0),R(this,"_p",void 0),R(this,"_libav",void 0),R(this,"_codec",void 0),R(this,"_c",void 0),R(this,"_pkt",void 0),R(this,"_frame",void 0),this._output=e.output,this._error=e.error,this.state="unconfigured",this.decodeQueueSize=0,this._p=Promise.all([]),this._libav=null,this._codec=this._c=this._pkt=this._frame=0}configure(e){const t=this;if("closed"===this.state)throw new DOMException("Decoder is closed","InvalidStateError");this._libav&&(this._p=this._p.then((()=>this._free()))),this.state="configured",this._p=this._p.then((async()=>{const n=z(e.codec);if(n){const r=t._libav=await M(),i=await r.malloc(e.description.length);await r.copyin_u8(i,e.description);const a=await r.calloc(1,1024);await r.AVCodecParameters_extradata_s(a,i),await r.AVCodecParameters_extradata_size_s(a,e.description.length),[t._codec,t._c,t._pkt,t._frame]=await r.ff_init_decoder(n.codec,a),await r.AVCodecContext_time_base_s(t._c,1,1e3),await r.free(i),await r.free(a)}else t._closeVideoDecoder(new DOMException("Unsupported codec","NotSupportedError"))})).catch(this._error)}async _free(){this._c&&(await this._libav.ff_free_decoder(this._c,this._pkt,this._frame),this._codec=this._c=this._pkt=this._frame=0),this._libav&&(I(this._libav),this._libav=null)}_closeVideoDecoder(e){this._resetVideoDecoder(e),this.state="closed",this._p=this._p.then((()=>this._free())),"AbortError"!==e.name&&(this._p=this._p.then((()=>{this._error(e)})))}_resetVideoDecoder(e){if("closed"===this.state)throw new DOMException("Decoder closed","InvalidStateError");this.state="unconfigured",this._p=this._p.then((()=>this._free()))}decode(e){const t=this;if("configured"!==this.state)throw new DOMException("Unconfigured","InvalidStateError");this.decodeQueueSize++,this._p=this._p.then((async()=>{const n=t._libav,r=t._c,i=t._pkt,a=t._frame;let s=null;try{const t=Math.floor(e.timestamp/1e3),o=t%4294967296,d=~~(t/4294967296),l={data:e._libavGetData(),pts:o,ptshi:d,dts:o,dtshi:d};e.duration&&(l.duration=Math.floor(e.duration/1e3),l.durationhi=0),s=await n.ff_decode_multi(r,i,a,[l])}catch(e){t._p=t._p.then((()=>{t._closeVideoDecoder(e)}))}t.decodeQueueSize--,s&&t._outputVideoFrames(s)})).catch(this._error)}_outputVideoFrames(e){const t=this._libav;for(const n of e){let e;switch(n.format){case t.AV_PIX_FMT_YUV420P:e="I420";break;case t.AV_PIX_FMT_YUVA420P:e="I420A";break;case t.AV_PIX_FMT_YUV422P:e="I422";break;case t.AV_PIX_FMT_YUV444P:e="I444";break;case t.AV_PIX_FMT_NV12:e="NV12";break;case t.AV_PIX_FMT_RGBA:e="RGBA";break;case t.AV_PIX_FMT_BGRA:e="BGRA";break;default:throw new DOMException("Unsupported libav format!","EncodingError")}const r=n.width,i=n.height;let a=r,s=i;if(n.sample_aspect_ratio[0]){const e=n.sample_aspect_ratio;e[0]>e[1]?a=~~(r*e[0]/e[1]):s=~~(i*e[1]/e[0])}const o=1e3*(4294967296*n.ptshi+n.pts);let d;{let t=0;const r=F(e),i=[],a=[],s=[];for(let t=0;t<r;t++)i.push(x(e,t)),a.push(U(e,t)),s.push(A(e,t));for(let e=0;e<r;e++)t+=n.width*n.height*i[e]/a[e]/s[e];d=new Uint8Array(t);let o=0;for(let e=0;e<r;e++){const t=n.data[e];for(let r=0;r<n.height/s[e];r++){const i=t[r].subarray(0,n.width/a[e]);d.set(i,o),o+=i.length}}}const l=new E(d,{format:e,codedWidth:r,codedHeight:i,displayWidth:a,displayHeight:s,timestamp:o});this._output(l)}}flush(){const e=this,t=this._p.then((async()=>{if(!e._c)return;const t=e._libav,n=e._c,r=e._pkt,i=e._frame;let a=null;try{a=await t.ff_decode_multi(n,r,i,[],!0)}catch(t){e._p=e._p.then((()=>{e._closeVideoDecoder(t)}))}a&&e._outputVideoFrames(a)}));return this._p=t,t}reset(){this._resetVideoDecoder(new DOMException("Reset","AbortError"))}close(){this._closeVideoDecoder(new DOMException("Close","AbortError"))}static async isConfigSupported(e){const t=z(e.codec);let n=!1;if(t){const e=await M();try{const[,r,i,a]=await e.ff_init_decoder(t.codec);await e.ff_free_decoder(r,i,a),n=!0}catch(e){}await I(e)}return{supported:n,config:C(e,["codec","codedWidth","codedHeight"])}}}let N=null,O=null,H=null;async function G(e,t){N=await LibAV.LibAV({noworker:!0}),O=await LibAV.LibAV(e),H=n.g.createImageBitmap,t&&(n.g.createImageBitmap=Y)}function Y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(e instanceof E))return H.apply(n.g,arguments);let r=O.AV_PIX_FMT_RGBA;switch(e.format){case"I420":r=O.AV_PIX_FMT_YUV420P;break;case"I420A":r=O.AV_PIX_FMT_YUVA420P;break;case"I422":r=O.AV_PIX_FMT_YUV422P;break;case"I444":r=O.AV_PIX_FMT_YUV444P;break;case"NV12":r=O.AV_PIX_FMT_NV12;break;case"RGBA":case"RGBX":r=O.AV_PIX_FMT_RGBA;break;case"BGRA":case"BGRX":r=O.AV_PIX_FMT_BGRA}const i="number"==typeof t.resizeWidth?t.resizeWidth:e.displayWidth,a="number"==typeof t.resizeHeight?t.resizeHeight:e.displayHeight,s=new ImageData(i,a);return(async()=>{const[t,n,o]=await Promise.all([O.sws_getContext(e.codedWidth,e.codedHeight,r,i,a,O.AV_PIX_FMT_RGBA,2,0,0,0),O.av_frame_alloc(),O.av_frame_alloc()]),d=e._libavGetData();let l=0;const u=[],h=F(e.format);for(let t=0;t<h;t++){const n=[];u.push(n);const r=x(e.format,t),i=U(e.format,t),a=A(e.format,t),s=~~(e.codedWidth*r/i),o=~~(e.codedHeight/a);for(let e=0;e<o;e++)n.push(d.subarray(l,l+s)),l+=s}const[,,f]=await Promise.all([O.ff_copyin_frame(n,{data:u,format:r,width:e.codedWidth,height:e.codedHeight}),O.sws_scale_frame(t,o,n),O.ff_copyout_frame(o),O.av_frame_free_js(o),O.av_frame_free_js(n),O.sws_freeContext(t)]);let p=0;for(let e=0;e<f.data.length;e++){const t=f.data[e];for(let e=0;e<t.length;e++){const n=t[e];s.data.set(n,p),p+=n.length}}return await H(s)})()}class V extends Error{constructor(){super("The requested configuration is not supported")}}let j,W,q,X=!1;const K={"video-preview:init":async function(e,t,r,i,a){const s="VideoDecoder"in globalThis;s||await async function(){X||(await n.e(5101).then(n.t.bind(n,65101,23)),await async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t={};e.libavOptions&&Object.assign(t,e.libavOptions),B(t),await D(),e.polyfill&&(globalThis.VideoDecoder=L,globalThis.VideoFrame=E,globalThis.EncodedVideoChunk=S),await G(t,!!e.polyfill)}({polyfill:!0,libavOptions:{noworker:!0,nosimd:!0}}),X=!0)}();const o=new Set;return j=new VideoDecoder({async output(e){const t=e.timestamp/1e6,n=Math.floor(t);if(!o.has(n)){const t=await createImageBitmap(e);o.add(n),a(n,t)}e.close()},error(e){console.error("[Video Preview] error",e)}}),W=new y(e,{stepOffset:r,stepMultiplier:i,isPolyfill:!s,maxFrames:t,onConfig(e){j?.configure(e)},onChunk(e){"configured"===j?.state&&j?.decode(e)}}),new Promise((e=>{q=e}))},"video-preview:destroy":function(){try{j?.close(),W?.close()}catch{}j=void 0,W=void 0,q?.()}};(0,i.R)(K)},32041:(e,t)=>{var n,r,i=(n=new Date,r=4,{setLogLevel:function(e){r=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=r&&console.debug("["+i.getDurationString(new Date-n,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+i.getDurationString(new Date-n,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+i.getDurationString(new Date-n,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+i.getDurationString(new Date-n,1e3)+"]","["+e+"]",t)}});i.getDurationString=function(e,t){var n;function r(e,t){for(var n=(""+e).split(".");n[0].length<t;)n[0]="0"+n[0];return n.join(".")}e<0?(n=!0,e=-e):n=!1;var i=e/(t||1),a=Math.floor(i/3600);i-=3600*a;var s=Math.floor(i/60),o=1e3*(i-=60*s);return o-=1e3*(i=Math.floor(i)),o=Math.floor(o),(n?"-":"")+a+":"+r(s,2)+":"+r(i,2)+"."+r(o,3)},i.printRanges=function(e){var t=e.length;if(t>0){for(var n="",r=0;r<t;r++)r>0&&(n+=","),n+="["+i.getDurationString(e.start(r))+","+i.getDurationString(e.end(r))+"]";return n}return"(empty)"},t.Log=i;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var n=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:n=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:n=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";n=this.dataview.getUint8(this.position)<<16,n|=this.dataview.getUint8(this.position+1)<<8,n|=this.dataview.getUint8(this.position+2);break;case 4:n=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";n=this.dataview.getUint32(this.position)<<32,n|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,n}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",n=0;n<e;n++)t+=String.fromCharCode(this.readUint8());return t}throw"Not enough bytes in buffer"},a.prototype.readCString=function(){for(var e=[];;){var t=this.readUint8();if(0===t)break;e.push(t)}return String.fromCharCode.apply(null,e)},a.prototype.readInt8=function(){return this.readAnyInt(1,!0)},a.prototype.readInt16=function(){return this.readAnyInt(2,!0)},a.prototype.readInt32=function(){return this.readAnyInt(4,!0)},a.prototype.readInt64=function(){return this.readAnyInt(8,!1)},a.prototype.readUint8Array=function(e){for(var t=new Uint8Array(e),n=0;n<e;n++)t[n]=this.readUint8();return t},a.prototype.readInt16Array=function(e){for(var t=new Int16Array(e),n=0;n<e;n++)t[n]=this.readInt16();return t},a.prototype.readUint16Array=function(e){for(var t=new Int16Array(e),n=0;n<e;n++)t[n]=this.readUint16();return t},a.prototype.readUint32Array=function(e){for(var t=new Uint32Array(e),n=0;n<e;n++)t[n]=this.readUint32();return t},a.prototype.readInt32Array=function(e){for(var t=new Int32Array(e),n=0;n<e;n++)t[n]=this.readInt32();return t},t.MP4BoxStream=a;var s=function(e,t,n){this._byteOffset=t||0,e instanceof ArrayBuffer?this.buffer=e:"object"==typeof e?(this.dataView=e,t&&(this._byteOffset+=t)):this.buffer=new ArrayBuffer(e||0),this.position=0,this.endianness=null==n?s.LITTLE_ENDIAN:n};s.prototype={},s.prototype.getPosition=function(){return this.position},s.prototype._realloc=function(e){if(this._dynamicSize){var t=this._byteOffset+this.position+e,n=this._buffer.byteLength;if(t<=n)t>this._byteLength&&(this._byteLength=t);else{for(n<1&&(n=1);t>n;)n*=2;var r=new ArrayBuffer(n),i=new Uint8Array(this._buffer);new Uint8Array(r,0,i.length).set(i),this.buffer=r,this._byteLength=t}}},s.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),n=new Uint8Array(this._buffer,0,t.length);t.set(n),this.buffer=e}},s.BIG_ENDIAN=!1,s.LITTLE_ENDIAN=!0,s.prototype._byteLength=0,Object.defineProperty(s.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(s.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(s.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(s.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),s.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},s.prototype.isEof=function(){return this.position>=this._byteLength},s.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},s.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var n=new Int32Array(e);return s.memcpy(n.buffer,0,this.buffer,this.byteOffset+this.position,e*n.BYTES_PER_ELEMENT),s.arrayToNative(n,null==t?this.endianness:t),this.position+=n.byteLength,n},s.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var n=new Int16Array(e);return s.memcpy(n.buffer,0,this.buffer,this.byteOffset+this.position,e*n.BYTES_PER_ELEMENT),s.arrayToNative(n,null==t?this.endianness:t),this.position+=n.byteLength,n},s.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return s.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},s.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var n=new Uint32Array(e);return s.memcpy(n.buffer,0,this.buffer,this.byteOffset+this.position,e*n.BYTES_PER_ELEMENT),s.arrayToNative(n,null==t?this.endianness:t),this.position+=n.byteLength,n},s.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var n=new Uint16Array(e);return s.memcpy(n.buffer,0,this.buffer,this.byteOffset+this.position,e*n.BYTES_PER_ELEMENT),s.arrayToNative(n,null==t?this.endianness:t),this.position+=n.byteLength,n},s.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return s.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},s.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var n=new Float64Array(e);return s.memcpy(n.buffer,0,this.buffer,this.byteOffset+this.position,e*n.BYTES_PER_ELEMENT),s.arrayToNative(n,null==t?this.endianness:t),this.position+=n.byteLength,n},s.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var n=new Float32Array(e);return s.memcpy(n.buffer,0,this.buffer,this.byteOffset+this.position,e*n.BYTES_PER_ELEMENT),s.arrayToNative(n,null==t?this.endianness:t),this.position+=n.byteLength,n},s.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},s.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},s.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},s.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},s.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},s.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},s.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},s.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},s.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,s.memcpy=function(e,t,n,r,i){var a=new Uint8Array(e,t,i),s=new Uint8Array(n,r,i);a.set(s)},s.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},s.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},s.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=0;n<e.byteLength;n+=e.BYTES_PER_ELEMENT)for(var r=n+e.BYTES_PER_ELEMENT-1,i=n;r>i;r--,i++){var a=t[i];t[i]=t[r],t[r]=a}return e},s.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],n=0;n<e.length;n++)t[n]=e[n];return String.fromCharCode.apply(null,t)},s.prototype.readString=function(e,t){return null==t||"ASCII"==t?String.fromCharCodeUint8.apply(null,[this.mapUint8Array(null==e?this.byteLength-this.position:e)]):new TextDecoder(t).decode(this.mapUint8Array(e))},s.prototype.readCString=function(e){var t=this.byteLength-this.position,n=new Uint8Array(this._buffer,this._byteOffset+this.position),r=t;null!=e&&(r=Math.min(e,t));for(var i=0;i<r&&0!==n[i];i++);var a=String.fromCharCodeUint8.apply(null,[this.mapUint8Array(i)]);return null!=e?this.position+=r-i:i!=t&&(this.position+=1),a};var o=Math.pow(2,32);s.prototype.readInt64=function(){return this.readInt32()*o+this.readUint32()},s.prototype.readUint64=function(){return this.readUint32()*o+this.readUint32()},s.prototype.readInt64=function(){return this.readUint32()*o+this.readUint32()},s.prototype.readUint24=function(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()},t.DataStream=s,s.prototype.save=function(e){var t=new Blob([this.buffer]);if(!window.URL||!URL.createObjectURL)throw"DataStream.save: Can't create object URL.";var n=window.URL.createObjectURL(t),r=document.createElement("a");document.body.appendChild(r),r.setAttribute("href",n),r.setAttribute("download",e),r.setAttribute("target","_self"),r.click(),window.URL.revokeObjectURL(n)},s.prototype._dynamicSize=!0,Object.defineProperty(s.prototype,"dynamicSize",{get:function(){return this._dynamicSize},set:function(e){e||this._trimAlloc(),this._dynamicSize=e}}),s.prototype.shift=function(e){var t=new ArrayBuffer(this._byteLength-e),n=new Uint8Array(t),r=new Uint8Array(this._buffer,e,n.length);n.set(r),this.buffer=t,this.position-=e},s.prototype.writeInt32Array=function(e,t){if(this._realloc(4*e.length),e instanceof Int32Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapInt32Array(e.length,t);else for(var n=0;n<e.length;n++)this.writeInt32(e[n],t)},s.prototype.writeInt16Array=function(e,t){if(this._realloc(2*e.length),e instanceof Int16Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapInt16Array(e.length,t);else for(var n=0;n<e.length;n++)this.writeInt16(e[n],t)},s.prototype.writeInt8Array=function(e){if(this._realloc(1*e.length),e instanceof Int8Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapInt8Array(e.length);else for(var t=0;t<e.length;t++)this.writeInt8(e[t])},s.prototype.writeUint32Array=function(e,t){if(this._realloc(4*e.length),e instanceof Uint32Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapUint32Array(e.length,t);else for(var n=0;n<e.length;n++)this.writeUint32(e[n],t)},s.prototype.writeUint16Array=function(e,t){if(this._realloc(2*e.length),e instanceof Uint16Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapUint16Array(e.length,t);else for(var n=0;n<e.length;n++)this.writeUint16(e[n],t)},s.prototype.writeUint8Array=function(e){if(this._realloc(1*e.length),e instanceof Uint8Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapUint8Array(e.length);else for(var t=0;t<e.length;t++)this.writeUint8(e[t])},s.prototype.writeFloat64Array=function(e,t){if(this._realloc(8*e.length),e instanceof Float64Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapFloat64Array(e.length,t);else for(var n=0;n<e.length;n++)this.writeFloat64(e[n],t)},s.prototype.writeFloat32Array=function(e,t){if(this._realloc(4*e.length),e instanceof Float32Array&&this.byteOffset+this.position%e.BYTES_PER_ELEMENT===0)s.memcpy(this._buffer,this.byteOffset+this.position,e.buffer,0,e.byteLength),this.mapFloat32Array(e.length,t);else for(var n=0;n<e.length;n++)this.writeFloat32(e[n],t)},s.prototype.writeInt32=function(e,t){this._realloc(4),this._dataView.setInt32(this.position,e,null==t?this.endianness:t),this.position+=4},s.prototype.writeInt16=function(e,t){this._realloc(2),this._dataView.setInt16(this.position,e,null==t?this.endianness:t),this.position+=2},s.prototype.writeInt8=function(e){this._realloc(1),this._dataView.setInt8(this.position,e),this.position+=1},s.prototype.writeUint32=function(e,t){this._realloc(4),this._dataView.setUint32(this.position,e,null==t?this.endianness:t),this.position+=4},s.prototype.writeUint16=function(e,t){this._realloc(2),this._dataView.setUint16(this.position,e,null==t?this.endianness:t),this.position+=2},s.prototype.writeUint8=function(e){this._realloc(1),this._dataView.setUint8(this.position,e),this.position+=1},s.prototype.writeFloat32=function(e,t){this._realloc(4),this._dataView.setFloat32(this.position,e,null==t?this.endianness:t),this.position+=4},s.prototype.writeFloat64=function(e,t){this._realloc(8),this._dataView.setFloat64(this.position,e,null==t?this.endianness:t),this.position+=8},s.prototype.writeUCS2String=function(e,t,n){null==n&&(n=e.length);for(var r=0;r<e.length&&r<n;r++)this.writeUint16(e.charCodeAt(r),t);for(;r<n;r++)this.writeUint16(0)},s.prototype.writeString=function(e,t,n){var r=0;if(null==t||"ASCII"==t)if(null!=n){var i=Math.min(e.length,n);for(r=0;r<i;r++)this.writeUint8(e.charCodeAt(r));for(;r<n;r++)this.writeUint8(0)}else for(r=0;r<e.length;r++)this.writeUint8(e.charCodeAt(r));else this.writeUint8Array(new TextEncoder(t).encode(e.substring(0,n)))},s.prototype.writeCString=function(e,t){var n=0;if(null!=t){var r=Math.min(e.length,t);for(n=0;n<r;n++)this.writeUint8(e.charCodeAt(n));for(;n<t;n++)this.writeUint8(0)}else{for(n=0;n<e.length;n++)this.writeUint8(e.charCodeAt(n));this.writeUint8(0)}},s.prototype.writeStruct=function(e,t){for(var n=0;n<e.length;n+=2){var r=e[n+1];this.writeType(r,t[e[n]],t)}},s.prototype.writeType=function(e,t,n){var r;if("function"==typeof e)return e(this,t);if("object"==typeof e&&!(e instanceof Array))return e.set(this,t,n);var i=null,a="ASCII",o=this.position;switch("string"==typeof e&&/:/.test(e)&&(r=e.split(":"),e=r[0],i=parseInt(r[1])),"string"==typeof e&&/,/.test(e)&&(r=e.split(","),e=r[0],a=parseInt(r[1])),e){case"uint8":this.writeUint8(t);break;case"int8":this.writeInt8(t);break;case"uint16":this.writeUint16(t,this.endianness);break;case"int16":this.writeInt16(t,this.endianness);break;case"uint32":this.writeUint32(t,this.endianness);break;case"int32":this.writeInt32(t,this.endianness);break;case"float32":this.writeFloat32(t,this.endianness);break;case"float64":this.writeFloat64(t,this.endianness);break;case"uint16be":this.writeUint16(t,s.BIG_ENDIAN);break;case"int16be":this.writeInt16(t,s.BIG_ENDIAN);break;case"uint32be":this.writeUint32(t,s.BIG_ENDIAN);break;case"int32be":this.writeInt32(t,s.BIG_ENDIAN);break;case"float32be":this.writeFloat32(t,s.BIG_ENDIAN);break;case"float64be":this.writeFloat64(t,s.BIG_ENDIAN);break;case"uint16le":this.writeUint16(t,s.LITTLE_ENDIAN);break;case"int16le":this.writeInt16(t,s.LITTLE_ENDIAN);break;case"uint32le":this.writeUint32(t,s.LITTLE_ENDIAN);break;case"int32le":this.writeInt32(t,s.LITTLE_ENDIAN);break;case"float32le":this.writeFloat32(t,s.LITTLE_ENDIAN);break;case"float64le":this.writeFloat64(t,s.LITTLE_ENDIAN);break;case"cstring":this.writeCString(t,i);break;case"string":this.writeString(t,a,i);break;case"u16string":this.writeUCS2String(t,this.endianness,i);break;case"u16stringle":this.writeUCS2String(t,s.LITTLE_ENDIAN,i);break;case"u16stringbe":this.writeUCS2String(t,s.BIG_ENDIAN,i);break;default:if(3==e.length){for(var d=e[1],l=0;l<t.length;l++)this.writeType(d,t[l]);break}this.writeStruct(e,t)}null!=i&&(this.position=o,this._realloc(i),this.position=o+i)},s.prototype.writeUint64=function(e){var t=Math.floor(e/o);this.writeUint32(t),this.writeUint32(4294967295&e)},s.prototype.writeUint24=function(e){this.writeUint8((16711680&e)>>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},s.prototype.adjustUint32=function(e,t){var n=this.position;this.seek(e),this.writeUint32(t),this.seek(n)},s.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var n=new Int32Array(this._buffer,this.byteOffset+this.position,e);return s.arrayToNative(n,null==t?this.endianness:t),this.position+=4*e,n},s.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var n=new Int16Array(this._buffer,this.byteOffset+this.position,e);return s.arrayToNative(n,null==t?this.endianness:t),this.position+=2*e,n},s.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},s.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var n=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return s.arrayToNative(n,null==t?this.endianness:t),this.position+=4*e,n},s.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var n=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return s.arrayToNative(n,null==t?this.endianness:t),this.position+=2*e,n},s.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var n=new Float64Array(this._buffer,this.byteOffset+this.position,e);return s.arrayToNative(n,null==t?this.endianness:t),this.position+=8*e,n},s.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var n=new Float32Array(this._buffer,this.byteOffset+this.position,e);return s.arrayToNative(n,null==t?this.endianness:t),this.position+=4*e,n};var d=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(d.prototype=new s(new ArrayBuffer,0,s.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,i.debug("MultiBufferStream","Stream ready for parsing"),!0):(i.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(i.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){i.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer},d.prototype.reduceBuffer=function(e,t,n){var r;return(r=new Uint8Array(n)).set(new Uint8Array(e,t,n)),r.buffer.fileStart=e.fileStart+t,r.buffer.usedBytes=0,r.buffer},d.prototype.insertBuffer=function(e){for(var t=!0,n=0;n<this.buffers.length;n++){var r=this.buffers[n];if(e.fileStart<=r.fileStart){if(e.fileStart===r.fileStart){if(e.byteLength>r.byteLength){this.buffers.splice(n,1),n--;continue}i.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=r.fileStart||(e=this.reduceBuffer(e,0,r.fileStart-e.fileStart)),i.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(n,0,e),0===n&&(this.buffer=e);t=!1;break}if(e.fileStart<r.fileStart+r.byteLength){var a=r.fileStart+r.byteLength-e.fileStart,s=e.byteLength-a;if(!(s>0)){t=!1;break}e=this.reduceBuffer(e,a,s)}}t&&(i.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===n&&(this.buffer=e))},d.prototype.logBufferLevel=function(e){var t,n,r,a,s,o=[],d="";for(r=0,a=0,t=0;t<this.buffers.length;t++)n=this.buffers[t],0===t?(s={},o.push(s),s.start=n.fileStart,s.end=n.fileStart+n.byteLength,d+="["+s.start+"-"):s.end===n.fileStart?s.end=n.fileStart+n.byteLength:((s={}).start=n.fileStart,d+=o[o.length-1].end-1+"], ["+s.start+"-",s.end=n.fileStart+n.byteLength,o.push(s)),r+=n.usedBytes,a+=n.byteLength;o.length>0&&(d+=s.end-1+"]");var l=e?i.info:i.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+r+"/"+a+" bytes), continuous ranges: "+d)},d.prototype.cleanBuffers=function(){var e,t;for(e=0;e<this.buffers.length;e++)(t=this.buffers[e]).usedBytes===t.byteLength&&(i.debug("MultiBufferStream","Removing buffer #"+e),this.buffers.splice(e,1),e--)},d.prototype.mergeNextBuffer=function(){var e;if(this.bufferIndex+1<this.buffers.length){if((e=this.buffers[this.bufferIndex+1]).fileStart===this.buffer.fileStart+this.buffer.byteLength){var t=this.buffer.byteLength,n=this.buffer.usedBytes,r=this.buffer.fileStart;return this.buffers[this.bufferIndex]=ArrayBuffer.concat(this.buffer,e),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=n,this.buffer.fileStart=r,i.debug("ISOFile","Concatenating buffer for box parsing (length: "+t+"->"+this.buffer.byteLength+")"),!0}return!1}return!1},d.prototype.findPosition=function(e,t,n){var r,a=null,s=-1;for(r=!0===e?0:this.bufferIndex;r<this.buffers.length&&(a=this.buffers[r]).fileStart<=t;)s=r,n&&(a.fileStart+a.byteLength<=t?a.usedBytes=a.byteLength:a.usedBytes=t-a.fileStart,this.logBufferLevel()),r++;return-1!==s&&(a=this.buffers[s]).fileStart+a.byteLength>=t?(i.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},d.prototype.findEndContiguousBuf=function(e){var t,n,r,i=void 0!==e?e:this.bufferIndex;if(n=this.buffers[i],this.buffers.length>i+1)for(t=i+1;t<this.buffers.length&&(r=this.buffers[t]).fileStart===n.fileStart+n.byteLength;t++)n=r;return n.fileStart+n.byteLength},d.prototype.getEndFilePositionAfter=function(e){var t=this.findPosition(!0,e,!1);return-1!==t?this.findEndContiguousBuf(t):e},d.prototype.addUsedBytes=function(e){this.buffer.usedBytes+=e,this.logBufferLevel()},d.prototype.setAllUsedBytes=function(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()},d.prototype.seek=function(e,t,n){var r;return-1!==(r=this.findPosition(t,e,n))?(this.buffer=this.buffers[r],this.bufferIndex=r,this.position=e-this.buffer.fileStart,i.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(i.debug("MultiBufferStream","Position "+e+" not found in buffered data"),!1)},d.prototype.getPosition=function(){if(-1===this.bufferIndex||null===this.buffers[this.bufferIndex])throw"Error accessing position in the MultiBufferStream";return this.buffers[this.bufferIndex].fileStart+this.position},d.prototype.getLength=function(){return this.byteLength},d.prototype.getEndPosition=function(){if(-1===this.bufferIndex||null===this.buffers[this.bufferIndex])throw"Error accessing position in the MultiBufferStream";return this.buffers[this.bufferIndex].fileStart+this.byteLength},t.MultiBufferStream=d;var l=function(){var e=[];e[3]="ES_Descriptor",e[4]="DecoderConfigDescriptor",e[5]="DecoderSpecificInfo",e[6]="SLConfigDescriptor",this.getDescriptorName=function(t){return e[t]};var t=this,n={};return this.parseOneDescriptor=function(t){var r,a,s,o=0;for(r=t.readUint8(),s=t.readUint8();128&s;)o=(127&s)<<7,s=t.readUint8();return o+=127&s,i.debug("MPEG4DescriptorParser","Found "+(e[r]||"Descriptor "+r)+", size "+o+" at position "+t.getPosition()),(a=e[r]?new n[e[r]](o):new n.Descriptor(o)).parse(t),a},n.Descriptor=function(e,t){this.tag=e,this.size=t,this.descs=[]},n.Descriptor.prototype.parse=function(e){this.data=e.readUint8Array(this.size)},n.Descriptor.prototype.findDescriptor=function(e){for(var t=0;t<this.descs.length;t++)if(this.descs[t].tag==e)return this.descs[t];return null},n.Descriptor.prototype.parseRemainingDescriptors=function(e){for(var n=e.position;e.position<n+this.size;){var r=t.parseOneDescriptor(e);this.descs.push(r)}},n.ES_Descriptor=function(e){n.Descriptor.call(this,3,e)},n.ES_Descriptor.prototype=new n.Descriptor,n.ES_Descriptor.prototype.parse=function(e){if(this.ES_ID=e.readUint16(),this.flags=e.readUint8(),this.size-=3,128&this.flags?(this.dependsOn_ES_ID=e.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,64&this.flags){var t=e.readUint8();this.URL=e.readString(t),this.size-=t+1}else this.URL="";32&this.flags?(this.OCR_ES_ID=e.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(e)},n.ES_Descriptor.prototype.getOTI=function(e){var t=this.findDescriptor(4);return t?t.oti:0},n.ES_Descriptor.prototype.getAudioConfig=function(e){var t=this.findDescriptor(4);if(!t)return null;var n=t.findDescriptor(5);if(n&&n.data){var r=(248&n.data[0])>>3;return 31===r&&n.data.length>=2&&(r=32+((7&n.data[0])<<3)+((224&n.data[1])>>5)),r}return null},n.DecoderConfigDescriptor=function(e){n.Descriptor.call(this,4,e)},n.DecoderConfigDescriptor.prototype=new n.Descriptor,n.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},n.DecoderSpecificInfo=function(e){n.Descriptor.call(this,5,e)},n.DecoderSpecificInfo.prototype=new n.Descriptor,n.SLConfigDescriptor=function(e){n.Descriptor.call(this,6,e)},n.SLConfigDescriptor.prototype=new n.Descriptor,this};t.MPEG4DescriptorParser=l;var u={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,n){this.type=e,this.size=t,this.uuid=n},FullBox:function(e,t,n){u.Box.call(this,e,t,n),this.flags=0,this.version=0},ContainerBox:function(e,t,n){u.Box.call(this,e,t,n),this.boxes=[]},SampleEntry:function(e,t,n,r){u.ContainerBox.call(this,e,t),this.hdr_size=n,this.start=r},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,n=0;n<t;n++)this[e[n]+"s"]=[]}},createContainerBoxCtor:function(e,t,n){u[e+"Box"]=function(t){u.ContainerBox.call(this,e,t),u.addSubBoxArrays.call(this,n)},u[e+"Box"].prototype=new u.ContainerBox,t&&(u[e+"Box"].prototype.parse=t)},createMediaSampleEntryCtor:function(e,t,n){u.sampleEntryCodes[e]=[],u[e+"SampleEntry"]=function(e,t){u.SampleEntry.call(this,e,t),u.addSubBoxArrays.call(this,n)},u[e+"SampleEntry"].prototype=new u.SampleEntry,t&&(u[e+"SampleEntry"].prototype.parse=t)},createSampleEntryCtor:function(e,t,n,r){u.sampleEntryCodes[e].push(t),u[t+"SampleEntry"]=function(n){u[e+"SampleEntry"].call(this,t,n),u.addSubBoxArrays.call(this,r)},u[t+"SampleEntry"].prototype=new u[e+"SampleEntry"],n&&(u[t+"SampleEntry"].prototype.parse=n)},createEncryptedSampleEntryCtor:function(e,t,n){u.createSampleEntryCtor.call(this,e,t,n,["sinf"])},createSampleGroupCtor:function(e,t){u[e+"SampleGroupEntry"]=function(t){u.SampleGroupEntry.call(this,e,t)},u[e+"SampleGroupEntry"].prototype=new u.SampleGroupEntry,t&&(u[e+"SampleGroupEntry"].prototype.parse=t)},createTrackGroupCtor:function(e,t){u[e+"TrackGroupTypeBox"]=function(t){u.TrackGroupTypeBox.call(this,e,t)},u[e+"TrackGroupTypeBox"].prototype=new u.TrackGroupTypeBox,t&&(u[e+"TrackGroupTypeBox"].prototype.parse=t)},createUUIDBox:function(e,t,n,r){u.UUIDs.push(e),u.UUIDBoxes[e]=function(r){t?u.FullBox.call(this,"uuid",r,e):n?u.ContainerBox.call(this,"uuid",r,e):u.Box.call(this,"uuid",r,e)},u.UUIDBoxes[e].prototype=t?new u.FullBox:n?new u.ContainerBox:new u.Box,r&&(u.UUIDBoxes[e].prototype.parse=t?function(e){this.parseFullHeader(e),r&&r.call(this,e)}:r)}};u.initialize(),u.TKHD_FLAG_ENABLED=1,u.TKHD_FLAG_IN_MOVIE=2,u.TKHD_FLAG_IN_PREVIEW=4,u.TFHD_FLAG_BASE_DATA_OFFSET=1,u.TFHD_FLAG_SAMPLE_DESC=2,u.TFHD_FLAG_SAMPLE_DUR=8,u.TFHD_FLAG_SAMPLE_SIZE=16,u.TFHD_FLAG_SAMPLE_FLAGS=32,u.TFHD_FLAG_DUR_EMPTY=65536,u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF=131072,u.TRUN_FLAGS_DATA_OFFSET=1,u.TRUN_FLAGS_FIRST_FLAG=4,u.TRUN_FLAGS_DURATION=256,u.TRUN_FLAGS_SIZE=512,u.TRUN_FLAGS_FLAGS=1024,u.TRUN_FLAGS_CTS_OFFSET=2048,u.Box.prototype.add=function(e){return this.addBox(new u[e+"Box"])},u.Box.prototype.addBox=function(e){return this.boxes.push(e),this[e.type+"s"]?this[e.type+"s"].push(e):this[e.type]=e,e},u.Box.prototype.set=function(e,t){return this[e]=t,this},u.Box.prototype.addEntry=function(e,t){var n=t||"entries";return this[n]||(this[n]=[]),this[n].push(e),this},t.BoxParser=u,u.parseUUID=function(e){return u.parseHex16(e)},u.parseHex16=function(e){for(var t="",n=0;n<16;n++){var r=e.readUint8().toString(16);t+=1===r.length?"0"+r:r}return t},u.parseOneBox=function(e,t,n){var r,a,s,o=e.getPosition(),d=0;if(e.getEndPosition()-o<8)return i.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:u.ERR_NOT_ENOUGH_DATA};if(n&&n<8)return i.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:u.ERR_NOT_ENOUGH_DATA};var l=e.readUint32(),h=e.readString(4),f=h;if(i.debug("BoxParser","Found box of type '"+h+"' and size "+l+" at position "+o),d=8,"uuid"==h){if(e.getEndPosition()-e.getPosition()<16||n-d<16)return e.seek(o),i.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:u.ERR_NOT_ENOUGH_DATA};d+=16,f=s=u.parseUUID(e)}if(1==l){if(e.getEndPosition()-e.getPosition()<8||n&&n-d<8)return e.seek(o),i.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+h+'" box'),{code:u.ERR_NOT_ENOUGH_DATA};l=e.readUint64(),d+=8}else if(0===l)if(n)l=n;else if("mdat"!==h)return i.error("BoxParser","Unlimited box size not supported for type: '"+h+"'"),r=new u.Box(h,l),{code:u.OK,box:r,size:r.size};return 0!==l&&l<d?(i.error("BoxParser","Box of type "+h+" has an invalid size "+l+" (too small to be a box)"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:l,hdr_size:d,start:o}):0!==l&&n&&l>n?(i.error("BoxParser","Box of type '"+h+"' has a size "+l+" greater than its container size "+n),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),i.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:l,hdr_size:d,start:o}):t?{code:u.OK,type:h,size:l,hdr_size:d,start:o}:(u[h+"Box"]?r=new u[h+"Box"](l):"uuid"!==h?(i.warn("BoxParser","Unknown box type: '"+h+"'"),(r=new u.Box(h,l)).has_unparsed_data=!0):u.UUIDBoxes[s]?r=new u.UUIDBoxes[s](l):(i.warn("BoxParser","Unknown uuid type: '"+s+"'"),(r=new u.Box(h,l)).uuid=s,r.has_unparsed_data=!0),r.hdr_size=d,r.start=o,r.write===u.Box.prototype.write&&"mdat"!==r.type&&(i.info("BoxParser","'"+f+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(e)),r.parse(e),(a=e.getPosition()-(r.start+r.size))<0?(i.warn("BoxParser","Parsing of box '"+f+"' did not read the entire indicated box data size (missing "+-a+" bytes), seeking forward"),e.seek(r.start+r.size)):a>0&&(i.error("BoxParser","Parsing of box '"+f+"' read "+a+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&e.seek(r.start+r.size)),{code:u.OK,box:r,size:r.size})},u.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.ContainerBox.prototype.parse=function(e){for(var t,n;e.getPosition()<this.start+this.size;){if((t=u.parseOneBox(e,!1,this.size-(e.getPosition()-this.start))).code!==u.OK)return;if(n=t.box,this.boxes.push(n),this.subBoxNames&&-1!=this.subBoxNames.indexOf(n.type))this[this.subBoxNames[this.subBoxNames.indexOf(n.type)]+"s"].push(n);else{var r="uuid"!==n.type?n.type:n.uuid;this[r]?i.warn("Box of type "+r+" already stored in field of this type"):this[r]=n}}},u.Box.prototype.parseLanguage=function(e){this.language=e.readUint16();var t=[];t[0]=this.language>>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&e.readUint8()));this.layer_size=[];for(var n=0;n<3;n++)this.layer_size[n]=16==t?e.readUint16():e.readUint32()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),u.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)i.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void i.error("av1C reserved_2 parsing problem");var n=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(n)}else i.error("av1C reserved_1 parsing problem");else i.error("av1C version "+this.version+" not supported")})),u.createBoxCtor("avcC",(function(e){var t,n;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),n=this.size-this.hdr_size-6,this.SPS=[],t=0;t<this.nb_SPS_nalus;t++)this.SPS[t]={},this.SPS[t].length=e.readUint16(),this.SPS[t].nalu=e.readUint8Array(this.SPS[t].length),n-=2+this.SPS[t].length;for(this.nb_PPS_nalus=e.readUint8(),n--,this.PPS=[],t=0;t<this.nb_PPS_nalus;t++)this.PPS[t]={},this.PPS[t].length=e.readUint16(),this.PPS[t].nalu=e.readUint8Array(this.PPS[t].length),n-=2+this.PPS[t].length;n>0&&(this.ext=e.readUint8Array(n))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createBoxCtor("clap",(function(e){this.cleanApertureWidthN=e.readUint32(),this.cleanApertureWidthD=e.readUint32(),this.cleanApertureHeightN=e.readUint32(),this.cleanApertureHeightD=e.readUint32(),this.horizOffN=e.readUint32(),this.horizOffD=e.readUint32(),this.vertOffN=e.readUint32(),this.vertOffD=e.readUint32()})),u.createBoxCtor("clli",(function(e){this.max_content_light_level=e.readUint16(),this.max_pic_average_light_level=e.readUint16()})),u.createFullBoxCtor("co64",(function(e){var t,n;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(n=0;n<t;n++)this.chunk_offsets.push(e.readUint64())})),u.createFullBoxCtor("CoLL",(function(e){this.maxCLL=e.readUint16(),this.maxFALL=e.readUint16()})),u.createBoxCtor("colr",(function(e){if(this.colour_type=e.readString(4),"nclx"===this.colour_type){this.colour_primaries=e.readUint16(),this.transfer_characteristics=e.readUint16(),this.matrix_coefficients=e.readUint16();var t=e.readUint8();this.full_range_flag=t>>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),u.createFullBoxCtor("ctts",(function(e){var t,n;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(n=0;n<t;n++){this.sample_counts.push(e.readUint32());var r=e.readInt32();r<0&&i.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(r)}else if(1==this.version)for(n=0;n<t;n++)this.sample_counts.push(e.readUint32()),this.sample_offsets.push(e.readInt32())})),u.createBoxCtor("dac3",(function(e){var t=e.readUint8(),n=e.readUint8(),r=e.readUint8();this.fscod=t>>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|n>>6&3,this.acmod=n>>3&7,this.lfeon=n>>2&1,this.bit_rate_code=3&n|r>>5&7})),u.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var n=0;n<this.num_ind_sub+1;n++){var r={};this.ind_subs.push(r);var i=e.readUint8(),a=e.readUint8(),s=e.readUint8();r.fscod=i>>6,r.bsid=i>>1&31,r.bsmod=(1&i)<<4|a>>4&15,r.acmod=a>>1&7,r.lfeon=1&a,r.num_dep_sub=s>>1&15,r.num_dep_sub>0&&(r.chan_loc=(1&s)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],n=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var r=e.readUint8(),i=Math.min(127&r,n.length-1);if(i?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(n[i]),128&r)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t<this.OutputChannelCount;t++)this.ChannelMapping[t]=e.readUint8()}})),u.createFullBoxCtor("dref",(function(e){var t,n;this.entries=[];for(var r=e.readUint32(),i=0;i<r;i++){if((t=u.parseOneBox(e,!1,this.size-(e.getPosition()-this.start))).code!==u.OK)return;n=t.box,this.entries.push(n)}})),u.createBoxCtor("drep",(function(e){this.bytessent=e.readUint64()})),u.createFullBoxCtor("elng",(function(e){this.extended_language=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("elst",(function(e){this.entries=[];for(var t=e.readUint32(),n=0;n<t;n++){var r={};this.entries.push(r),1===this.version?(r.segment_duration=e.readUint64(),r.media_time=e.readInt64()):(r.segment_duration=e.readUint32(),r.media_time=e.readInt32()),r.media_rate_integer=e.readInt16(),r.media_rate_fraction=e.readInt16()}})),u.createFullBoxCtor("emsg",(function(e){1==this.version?(this.timescale=e.readUint32(),this.presentation_time=e.readUint64(),this.event_duration=e.readUint32(),this.id=e.readUint32(),this.scheme_id_uri=e.readCString(),this.value=e.readCString()):(this.scheme_id_uri=e.readCString(),this.value=e.readCString(),this.timescale=e.readUint32(),this.presentation_time_delta=e.readUint32(),this.event_duration=e.readUint32(),this.id=e.readUint32());var t=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));1==this.version&&(t-=4),this.message_data=e.readUint8Array(t)})),u.createFullBoxCtor("esds",(function(e){var t=e.readUint8Array(this.size-this.hdr_size),n=new l;this.esd=n.parseOneDescriptor(new s(t.buffer,0,s.BIG_ENDIAN))})),u.createBoxCtor("fiel",(function(e){this.fieldCount=e.readUint8(),this.fieldOrdering=e.readUint8()})),u.createBoxCtor("frma",(function(e){this.data_format=e.readString(4)})),u.createBoxCtor("ftyp",(function(e){var t=this.size-this.hdr_size;this.major_brand=e.readString(4),this.minor_version=e.readUint32(),t-=8,this.compatible_brands=[];for(var n=0;t>=4;)this.compatible_brands[n]=e.readString(4),t-=4,n++})),u.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),u.createBoxCtor("hvcC",(function(e){var t,n,r,i;this.configurationVersion=e.readUint8(),i=e.readUint8(),this.general_profile_space=i>>6,this.general_tier_flag=(32&i)>>5,this.general_profile_idc=31&i,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),i=e.readUint8(),this.constantFrameRate=i>>6,this.numTemporalLayers=(13&i)>>3,this.temporalIdNested=(4&i)>>2,this.lengthSizeMinusOne=3&i,this.nalu_arrays=[];var a=e.readUint8();for(t=0;t<a;t++){var s=[];this.nalu_arrays.push(s),i=e.readUint8(),s.completeness=(128&i)>>7,s.nalu_type=63&i;var o=e.readUint16();for(n=0;n<o;n++){var d={};s.push(d),r=e.readUint16(),d.data=e.readUint8Array(r)}}})),u.createFullBoxCtor("iinf",(function(e){var t;0===this.version?this.entry_count=e.readUint16():this.entry_count=e.readUint32(),this.item_infos=[];for(var n=0;n<this.entry_count;n++){if((t=u.parseOneBox(e,!1,this.size-(e.getPosition()-this.start))).code!==u.OK)return;"infe"!==t.box.type&&i.error("BoxParser","Expected 'infe' box, got "+t.box.type),this.item_infos[n]=t.box}})),u.createFullBoxCtor("iloc",(function(e){var t;t=e.readUint8(),this.offset_size=t>>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var n=0;if(this.version<2)n=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";n=e.readUint32()}for(var r=0;r<n;r++){var i={};if(this.items.push(i),this.version<2)i.item_ID=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i.item_ID=e.readUint16()}switch(1===this.version||2===this.version?i.construction_method=15&e.readUint16():i.construction_method=0,i.data_reference_index=e.readUint16(),this.base_offset_size){case 0:i.base_offset=0;break;case 4:i.base_offset=e.readUint32();break;case 8:i.base_offset=e.readUint64();break;default:throw"Error reading base offset size"}var a=e.readUint16();i.extents=[];for(var s=0;s<a;s++){var o={};if(i.extents.push(o),1===this.version||2===this.version)switch(this.index_size){case 0:o.extent_index=0;break;case 4:o.extent_index=e.readUint32();break;case 8:o.extent_index=e.readUint64();break;default:throw"Error reading extent index"}switch(this.offset_size){case 0:o.extent_offset=0;break;case 4:o.extent_offset=e.readUint32();break;case 8:o.extent_offset=e.readUint64();break;default:throw"Error reading extent index"}switch(this.length_size){case 0:o.extent_length=0;break;case 4:o.extent_length=e.readUint32();break;case 8:o.extent_length=e.readUint64();break;default:throw"Error reading extent index"}}}})),u.createBoxCtor("imir",(function(e){var t=e.readUint8();this.reserved=t>>7,this.axis=1&t})),u.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),i.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),u.createFullBoxCtor("ipma",(function(e){var t,n;for(entry_count=e.readUint32(),this.associations=[],t=0;t<entry_count;t++){var r={};this.associations.push(r),this.version<1?r.id=e.readUint16():r.id=e.readUint32();var i=e.readUint8();for(r.props=[],n=0;n<i;n++){var a=e.readUint8(),s={};r.props.push(s),s.essential=(128&a)>>7==1,1&this.flags?s.property_index=(127&a)<<8|e.readUint8():s.property_index=127&a}}})),u.createFullBoxCtor("iref",(function(e){var t,n;for(this.references=[];e.getPosition()<this.start+this.size;){if((t=u.parseOneBox(e,!0,this.size-(e.getPosition()-this.start))).code!==u.OK)return;(n=0===this.version?new u.SingleItemTypeReferenceBox(t.type,t.size,t.hdr_size,t.start):new u.SingleItemTypeReferenceBoxLarge(t.type,t.size,t.hdr_size,t.start)).write===u.Box.prototype.write&&"mdat"!==n.type&&(i.warn("BoxParser",n.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),n.parseDataAndRewind(e)),n.parse(e),this.references.push(n)}})),u.createBoxCtor("irot",(function(e){this.angle=3&e.readUint8()})),u.createFullBoxCtor("ispe",(function(e){this.image_width=e.readUint32(),this.image_height=e.readUint32()})),u.createFullBoxCtor("kind",(function(e){this.schemeURI=e.readCString(),this.value=e.readCString()})),u.createFullBoxCtor("leva",(function(e){var t=e.readUint8();this.levels=[];for(var n=0;n<t;n++){var r={};this.levels[n]=r,r.track_ID=e.readUint32();var a=e.readUint8();switch(r.padding_flag=a>>7,r.assignment_type=127&a,r.assignment_type){case 0:r.grouping_type=e.readString(4);break;case 1:r.grouping_type=e.readString(4),r.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=e.readUint32();break;default:i.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]={},this.display_primaries[0].x=e.readUint16(),this.display_primaries[0].y=e.readUint16(),this.display_primaries[1]={},this.display_primaries[1].x=e.readUint16(),this.display_primaries[1].y=e.readUint16(),this.display_primaries[2]={},this.display_primaries[2].x=e.readUint16(),this.display_primaries[2].y=e.readUint16(),this.white_point={},this.white_point.x=e.readUint16(),this.white_point.y=e.readUint16(),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),u.createFullBoxCtor("mehd",(function(e){1&this.flags&&(i.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var n=0;n<Math.floor((t+1)/2);n++)this.padbits=e.readUint8()})),u.createBoxCtor("pasp",(function(e){this.hSpacing=e.readUint32(),this.vSpacing=e.readUint32()})),u.createBoxCtor("payl",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createBoxCtor("payt",(function(e){this.payloadID=e.readUint32();var t=e.readUint8();this.rtpmap_string=e.readString(t)})),u.createFullBoxCtor("pdin",(function(e){var t=(this.size-this.hdr_size)/8;this.rate=[],this.initial_delay=[];for(var n=0;n<t;n++)this.rate[n]=e.readUint32(),this.initial_delay[n]=e.readUint32()})),u.createFullBoxCtor("pitm",(function(e){0===this.version?this.item_id=e.readUint16():this.item_id=e.readUint32()})),u.createFullBoxCtor("pixi",(function(e){var t;for(this.num_channels=e.readUint8(),this.bits_per_channels=[],t=0;t<this.num_channels;t++)this.bits_per_channels[t]=e.readUint8()})),u.createBoxCtor("pmax",(function(e){this.bytes=e.readUint32()})),u.createFullBoxCtor("prft",(function(e){this.ref_track_id=e.readUint32(),this.ntp_timestamp=e.readUint64(),0===this.version?this.media_time=e.readUint32():this.media_time=e.readUint64()})),u.createFullBoxCtor("pssh",(function(e){if(this.system_id=u.parseHex16(e),this.version>0){var t=e.readUint32();this.kid=[];for(var n=0;n<t;n++)this.kid[n]=u.parseHex16(e)}var r=e.readUint32();r>0&&(this.data=e.readUint8Array(r))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var n=0;n<t;n++)0===this.version?this.offset[n]=e.readUint32():this.offset[n]=e.readUint64()})),u.createFullBoxCtor("saiz",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32()),this.default_sample_info_size=e.readUint8();var t=e.readUint32();if(this.sample_info_size=[],0===this.default_sample_info_size)for(var n=0;n<t;n++)this.sample_info_size[n]=e.readUint8()})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"mett",(function(e){this.parseHeader(e),this.content_encoding=e.readCString(),this.mime_format=e.readCString(),this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"metx",(function(e){this.parseHeader(e),this.content_encoding=e.readCString(),this.namespace=e.readCString(),this.schema_location=e.readCString(),this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"sbtt",(function(e){this.parseHeader(e),this.content_encoding=e.readCString(),this.mime_format=e.readCString(),this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"stpp",(function(e){this.parseHeader(e),this.namespace=e.readCString(),this.schema_location=e.readCString(),this.auxiliary_mime_types=e.readCString(),this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"stxt",(function(e){this.parseHeader(e),this.content_encoding=e.readCString(),this.mime_format=e.readCString(),this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"tx3g",(function(e){this.parseHeader(e),this.displayFlags=e.readUint32(),this.horizontal_justification=e.readInt8(),this.vertical_justification=e.readInt8(),this.bg_color_rgba=e.readUint8Array(4),this.box_record=e.readInt16Array(4),this.style_record=e.readUint8Array(12),this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"wvtt",(function(e){this.parseHeader(e),this.parseFooter(e)})),u.createSampleGroupCtor("alst",(function(e){var t,n=e.readUint16();for(this.first_output_sample=e.readUint16(),this.sample_offset=[],t=0;t<n;t++)this.sample_offset[t]=e.readUint32();var r=this.description_length-4-4*n;for(this.num_output_samples=[],this.num_total_samples=[],t=0;t<r/4;t++)this.num_output_samples[t]=e.readUint16(),this.num_total_samples[t]=e.readUint16()})),u.createSampleGroupCtor("avll",(function(e){this.layerNumber=e.readUint8(),this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()})),u.createSampleGroupCtor("avss",(function(e){this.subSequenceIdentifier=e.readUint16(),this.layerNumber=e.readUint8();var t=e.readUint8();this.durationFlag=t>>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var n=e.readUint8(),r=0;r<n;r++){var i={};this.dependency.push(i),i.subSeqDirectionFlag=e.readUint8(),i.layerNumber=e.readUint8(),i.subSequenceIdentifier=e.readUint16()}})),u.createSampleGroupCtor("dtrt",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("mvif",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("prol",(function(e){this.roll_distance=e.readInt16()})),u.createSampleGroupCtor("rap ",(function(e){var t=e.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=127&t})),u.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)i.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t<this.operation_point_count;t++)this.available_bitrate[t]=e.readUint32(),this.target_rate_share[t]=e.readUint16()}this.maximum_bitrate=e.readUint32(),this.minimum_bitrate=e.readUint32(),this.discard_priority=e.readUint8()}})),u.createSampleGroupCtor("roll",(function(e){this.roll_distance=e.readInt16()})),u.SampleGroupEntry.prototype.parse=function(e){i.warn("BoxParser","Unknown Sample Group type: "+this.grouping_type),this.data=e.readUint8Array(this.description_length)},u.createSampleGroupCtor("scif",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("scnm",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("seig",(function(e){this.reserved=e.readUint8();var t=e.readUint8();this.crypt_byte_block=t>>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=u.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),u.createSampleGroupCtor("stsa",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){i.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),n=0;n<t;n++){var r={};this.entries.push(r),r.sample_count=e.readInt32(),r.group_description_index=e.readInt32()}})),u.createFullBoxCtor("schm",(function(e){this.scheme_type=e.readString(4),this.scheme_version=e.readUint32(),1&this.flags&&(this.scheme_uri=e.readString(this.size-this.hdr_size-8))})),u.createBoxCtor("sdp ",(function(e){this.sdptext=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("sdtp",(function(e){var t,n=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(var r=0;r<n;r++)t=e.readUint8(),this.is_leading[r]=t>>6,this.sample_depends_on[r]=t>>4&3,this.sample_is_depended_on[r]=t>>2&3,this.sample_has_redundancy[r]=3&t})),u.createFullBoxCtor("senc"),u.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),i.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),n=0;n<t;n++){var r;r=u[this.grouping_type+"SampleGroupEntry"]?new u[this.grouping_type+"SampleGroupEntry"](this.grouping_type):new u.SampleGroupEntry(this.grouping_type),this.entries.push(r),1===this.version&&0===this.default_length?r.description_length=e.readUint32():r.description_length=this.default_length,r.write===u.SampleGroupEntry.prototype.write&&(i.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),r.data=e.readUint8Array(r.description_length),e.position-=r.description_length),r.parse(e)}})),u.createFullBoxCtor("sidx",(function(e){this.reference_ID=e.readUint32(),this.timescale=e.readUint32(),0===this.version?(this.earliest_presentation_time=e.readUint32(),this.first_offset=e.readUint32()):(this.earliest_presentation_time=e.readUint64(),this.first_offset=e.readUint64()),e.readUint16(),this.references=[];for(var t=e.readUint16(),n=0;n<t;n++){var r={};this.references.push(r);var i=e.readUint32();r.reference_type=i>>31&1,r.referenced_size=2147483647&i,r.subsegment_duration=e.readUint32(),i=e.readUint32(),r.starts_with_SAP=i>>31&1,r.SAP_type=i>>28&7,r.SAP_delta_time=268435455&i}})),u.SingleItemTypeReferenceBox=function(e,t,n,r){u.Box.call(this,e,t),this.hdr_size=n,this.start=r},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var n=0;n<t;n++)this.references[n]=e.readUint16()},u.SingleItemTypeReferenceBoxLarge=function(e,t,n,r){u.Box.call(this,e,t),this.hdr_size=n,this.start=r},u.SingleItemTypeReferenceBoxLarge.prototype=new u.Box,u.SingleItemTypeReferenceBoxLarge.prototype.parse=function(e){this.from_item_ID=e.readUint32();var t=e.readUint16();this.references=[];for(var n=0;n<t;n++)this.references[n]=e.readUint32()},u.createFullBoxCtor("SmDm",(function(e){this.primaryRChromaticity_x=e.readUint16(),this.primaryRChromaticity_y=e.readUint16(),this.primaryGChromaticity_x=e.readUint16(),this.primaryGChromaticity_y=e.readUint16(),this.primaryBChromaticity_x=e.readUint16(),this.primaryBChromaticity_y=e.readUint16(),this.whitePointChromaticity_x=e.readUint16(),this.whitePointChromaticity_y=e.readUint16(),this.luminanceMax=e.readUint32(),this.luminanceMin=e.readUint32()})),u.createFullBoxCtor("smhd",(function(e){this.balance=e.readUint16(),e.readUint16()})),u.createFullBoxCtor("ssix",(function(e){this.subsegments=[];for(var t=e.readUint32(),n=0;n<t;n++){var r={};this.subsegments.push(r),r.ranges=[];for(var i=e.readUint32(),a=0;a<i;a++){var s={};r.ranges.push(s),s.level=e.readUint8(),s.range_size=e.readUint24()}}})),u.createFullBoxCtor("stco",(function(e){var t;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(var n=0;n<t;n++)this.chunk_offsets.push(e.readUint32())})),u.createFullBoxCtor("stdp",(function(e){var t=(this.size-this.hdr_size)/2;this.priority=[];for(var n=0;n<t;n++)this.priority[n]=e.readUint16()})),u.createFullBoxCtor("sthd"),u.createFullBoxCtor("stri",(function(e){this.switch_group=e.readUint16(),this.alternate_group=e.readUint16(),this.sub_track_id=e.readUint32();var t=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(var n=0;n<t;n++)this.attribute_list[n]=e.readUint32()})),u.createFullBoxCtor("stsc",(function(e){var t,n;if(t=e.readUint32(),this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],0===this.version)for(n=0;n<t;n++)this.first_chunk.push(e.readUint32()),this.samples_per_chunk.push(e.readUint32()),this.sample_description_index.push(e.readUint32())})),u.createFullBoxCtor("stsd",(function(e){var t,n,r,a;for(this.entries=[],r=e.readUint32(),t=1;t<=r;t++){if((n=u.parseOneBox(e,!0,this.size-(e.getPosition()-this.start))).code!==u.OK)return;u[n.type+"SampleEntry"]?((a=new u[n.type+"SampleEntry"](n.size)).hdr_size=n.hdr_size,a.start=n.start):(i.warn("BoxParser","Unknown sample entry type: "+n.type),a=new u.SampleEntry(n.type,n.size,n.hdr_size,n.start)),a.write===u.SampleEntry.prototype.write&&(i.info("BoxParser","SampleEntry "+a.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),a.parseDataAndRewind(e)),a.parse(e),this.entries.push(a)}})),u.createFullBoxCtor("stsg",(function(e){this.grouping_type=e.readUint32();var t=e.readUint16();this.group_description_index=[];for(var n=0;n<t;n++)this.group_description_index[n]=e.readUint32()})),u.createFullBoxCtor("stsh",(function(e){var t,n;if(t=e.readUint32(),this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],0===this.version)for(n=0;n<t;n++)this.shadowed_sample_numbers.push(e.readUint32()),this.sync_sample_numbers.push(e.readUint32())})),u.createFullBoxCtor("stss",(function(e){var t,n;if(n=e.readUint32(),0===this.version)for(this.sample_numbers=[],t=0;t<n;t++)this.sample_numbers.push(e.readUint32())})),u.createFullBoxCtor("stsz",(function(e){var t;if(this.sample_sizes=[],0===this.version)for(this.sample_size=e.readUint32(),this.sample_count=e.readUint32(),t=0;t<this.sample_count;t++)0===this.sample_size?this.sample_sizes.push(e.readUint32()):this.sample_sizes[t]=this.sample_size})),u.createFullBoxCtor("stts",(function(e){var t,n,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_deltas=[],0===this.version)for(n=0;n<t;n++)this.sample_counts.push(e.readUint32()),(r=e.readInt32())<0&&(i.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),r=1),this.sample_deltas.push(r)})),u.createFullBoxCtor("stvi",(function(e){var t=e.readUint32();this.single_view_allowed=3&t,this.stereo_scheme=e.readUint32();var n,r,i=e.readUint32();for(this.stereo_indication_type=e.readString(i),this.boxes=[];e.getPosition()<this.start+this.size;){if((n=u.parseOneBox(e,!1,this.size-(e.getPosition()-this.start))).code!==u.OK)return;r=n.box,this.boxes.push(r),this[r.type]=r}})),u.createBoxCtor("styp",(function(e){u.ftypBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("stz2",(function(e){var t,n;if(this.sample_sizes=[],0===this.version)if(this.reserved=e.readUint24(),this.field_size=e.readUint8(),n=e.readUint32(),4===this.field_size)for(t=0;t<n;t+=2){var r=e.readUint8();this.sample_sizes[t]=r>>4&15,this.sample_sizes[t+1]=15&r}else if(8===this.field_size)for(t=0;t<n;t++)this.sample_sizes[t]=e.readUint8();else if(16===this.field_size)for(t=0;t<n;t++)this.sample_sizes[t]=e.readUint16();else i.error("BoxParser","Error in length field in stz2 box")})),u.createFullBoxCtor("subs",(function(e){var t,n,r,i;for(r=e.readUint32(),this.entries=[],t=0;t<r;t++){var a={};if(this.entries[t]=a,a.sample_delta=e.readUint32(),a.subsamples=[],(i=e.readUint16())>0)for(n=0;n<i;n++){var s={};a.subsamples.push(s),1==this.version?s.size=e.readUint32():s.size=e.readUint16(),s.priority=e.readUint8(),s.discardable=e.readUint8(),s.codec_specific_parameters=e.readUint32()}}})),u.createFullBoxCtor("tenc",(function(e){if(e.readUint8(),0===this.version)e.readUint8();else{var t=e.readUint8();this.default_crypt_byte_block=t>>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=u.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var n=e.readUint32(),r=0;r<n;r++)1===this.version?(this.time=e.readUint64(),this.moof_offset=e.readUint64()):(this.time=e.readUint32(),this.moof_offset=e.readUint32()),this.traf_number=e["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=e["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=e["readUint"+8*(this.length_size_of_sample_num+1)]()})),u.createFullBoxCtor("tkhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.track_id=e.readUint32(),e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.track_id=e.readUint32(),e.readUint32(),this.duration=e.readUint32()),e.readUint32Array(2),this.layer=e.readInt16(),this.alternate_group=e.readInt16(),this.volume=e.readInt16()>>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,n,r){u.Box.call(this,e,t),this.hdr_size=n,this.start=r},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,n;e.getPosition()<this.start+this.size;){if((t=u.parseOneBox(e,!0,this.size-(e.getPosition()-this.start))).code!==u.OK)return;(n=new u.TrackReferenceTypeBox(t.type,t.size,t.hdr_size,t.start)).write===u.Box.prototype.write&&"mdat"!==n.type&&(i.info("BoxParser","TrackReference "+n.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),n.parseDataAndRewind(e)),n.parse(e),this.boxes.push(n)}},u.createFullBoxCtor("trep",(function(e){for(this.track_ID=e.readUint32(),this.boxes=[];e.getPosition()<this.start+this.size;){if(ret=u.parseOneBox(e,!1,this.size-(e.getPosition()-this.start)),ret.code!==u.OK)return;box=ret.box,this.boxes.push(box)}})),u.createFullBoxCtor("trex",(function(e){this.track_id=e.readUint32(),this.default_sample_description_index=e.readUint32(),this.default_sample_duration=e.readUint32(),this.default_sample_size=e.readUint32(),this.default_sample_flags=e.readUint32()})),u.createBoxCtor("trpy",(function(e){this.bytessent=e.readUint64()})),u.createFullBoxCtor("trun",(function(e){var t=0;if(this.sample_count=e.readUint32(),t+=4,this.size-this.hdr_size>t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var n=0;n<this.sample_count;n++)this.flags&u.TRUN_FLAGS_DURATION&&(this.sample_duration[n]=e.readUint32()),this.flags&u.TRUN_FLAGS_SIZE&&(this.sample_size[n]=e.readUint32()),this.flags&u.TRUN_FLAGS_FLAGS&&(this.sample_flags[n]=e.readUint32()),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(0===this.version?this.sample_composition_time_offset[n]=e.readUint32():this.sample_composition_time_offset[n]=e.readInt32())})),u.createFullBoxCtor("tsel",(function(e){this.switch_group=e.readUint32();var t=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(var n=0;n<t;n++)this.attribute_list[n]=e.readUint32()})),u.createFullBoxCtor("txtC",(function(e){this.config=e.readCString()})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t<this.fragment_count;t++){var n={},r=0,i=0;1===this.version?(r=e.readUint64(),i=e.readUint64()):(r=e.readUint32(),i=e.readUint32()),n.absolute_time=r,n.absolute_duration=i,this.entries.push(n)}})),u.createUUIDBox("6d1d9b0542d544e680e2141daff757b2",!0,!1,(function(e){1===this.version?(this.absolute_time=e.readUint64(),this.duration=e.readUint64()):(this.absolute_time=e.readUint32(),this.duration=e.readUint32())})),u.createFullBoxCtor("vmhd",(function(e){this.graphicsmode=e.readUint16(),this.opcolor=e.readUint16Array(3)})),u.createFullBoxCtor("vpcC",(function(e){var t;1===this.version?(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,n,r={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<<e)-1;return this.num_held_bits-=e,t}};if(r.stream_read_1_bytes(e),r.extract_bits(5),this.lengthSizeMinusOne=r.extract_bits(2),this.ptl_present_flag=r.extract_bits(1),this.ptl_present_flag){if(r.stream_read_2_bytes(e),this.ols_idx=r.extract_bits(9),this.num_sublayers=r.extract_bits(3),this.constant_frame_rate=r.extract_bits(2),this.chroma_format_idc=r.extract_bits(2),r.stream_read_1_bytes(e),this.bit_depth_minus8=r.extract_bits(3),r.extract_bits(5),r.stream_read_2_bytes(e),r.extract_bits(2),this.num_bytes_constraint_info=r.extract_bits(6),this.general_profile_idc=r.extract_bits(7),this.general_tier_flag=r.extract_bits(1),this.general_level_idc=e.readUint8(),r.stream_read_1_bytes(e),this.ptl_frame_only_constraint_flag=r.extract_bits(1),this.ptl_multilayer_enabled_flag=r.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(t=0;t<this.num_bytes_constraint_info-1;t++){var i=r.extract_bits(6);r.stream_read_1_bytes(e);var a=r.extract_bits(2);this.general_constraint_info[t]=i<<2|a}this.general_constraint_info[this.num_bytes_constraint_info-1]=r.extract_bits(6)}else r.extract_bits(6);for(r.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,n=this.num_sublayers-2;n>=0;--n){var s=r.extract_bits(1);this.ptl_sublayer_present_mask|=s<<n}for(n=this.num_sublayers;n<=8&&this.num_sublayers>1;++n)r.extract_bits(1);for(n=this.num_sublayers-2;n>=0;--n)this.ptl_sublayer_present_mask&1<<n&&(this.sublayer_level_idc[n]=e.readUint8());if(this.ptl_num_sub_profiles=e.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(t=0;t<this.ptl_num_sub_profiles;t++)this.general_sub_profile_idc.push(e.readUint32());this.max_picture_width=e.readUint16(),this.max_picture_height=e.readUint16(),this.avg_frame_rate=e.readUint16()}this.nalu_arrays=[];var o=e.readUint8();for(t=0;t<o;t++){var d=[];this.nalu_arrays.push(d),r.stream_read_1_bytes(e),d.completeness=r.extract_bits(1),r.extract_bits(2),d.nalu_type=r.extract_bits(5);var l=1;for(13!=d.nalu_type&&12!=d.nalu_type&&(l=e.readUint16()),n=0;n<l;n++){var u=e.readUint16();d.push({data:e.readUint8Array(u),length:u})}}})),u.createFullBoxCtor("vvnC",(function(e){var t=strm.readUint8();this.lengthSizeMinusOne=3&t})),u.SampleEntry.prototype.isVideo=function(){return!1},u.SampleEntry.prototype.isAudio=function(){return!1},u.SampleEntry.prototype.isSubtitle=function(){return!1},u.SampleEntry.prototype.isMetadata=function(){return!1},u.SampleEntry.prototype.isHint=function(){return!1},u.SampleEntry.prototype.getCodec=function(){return this.type.replace(".","")},u.SampleEntry.prototype.getWidth=function(){return""},u.SampleEntry.prototype.getHeight=function(){return""},u.SampleEntry.prototype.getChannelCount=function(){return""},u.SampleEntry.prototype.getSampleRate=function(){return""},u.SampleEntry.prototype.getSampleSize=function(){return""},u.VisualSampleEntry.prototype.isVideo=function(){return!0},u.VisualSampleEntry.prototype.getWidth=function(){return this.width},u.VisualSampleEntry.prototype.getHeight=function(){return this.height},u.AudioSampleEntry.prototype.isAudio=function(){return!0},u.AudioSampleEntry.prototype.getChannelCount=function(){return this.channel_count},u.AudioSampleEntry.prototype.getSampleRate=function(){return this.samplerate},u.AudioSampleEntry.prototype.getSampleSize=function(){return this.samplesize},u.SubtitleSampleEntry.prototype.isSubtitle=function(){return!0},u.MetadataSampleEntry.prototype.isMetadata=function(){return!0},u.decimalToHex=function(e,t){var n=Number(e).toString(16);for(t=null==t?t=2:t;n.length<t;)n="0"+n;return n},u.avc1SampleEntry.prototype.getCodec=u.avc2SampleEntry.prototype.getCodec=u.avc3SampleEntry.prototype.getCodec=u.avc4SampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.avcC?e+"."+u.decimalToHex(this.avcC.AVCProfileIndication)+u.decimalToHex(this.avcC.profile_compatibility)+u.decimalToHex(this.avcC.AVCLevelIndication):e},u.hev1SampleEntry.prototype.getCodec=u.hvc1SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this);if(this.hvcC){switch(t+=".",this.hvcC.general_profile_space){case 0:t+="";break;case 1:t+="A";break;case 2:t+="B";break;case 3:t+="C"}t+=this.hvcC.general_profile_idc,t+=".";var n=this.hvcC.general_profile_compatibility,r=0;for(e=0;e<32&&(r|=1&n,31!=e);e++)r<<=1,n>>=1;t+=u.decimalToHex(r,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var i=!1,a="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||i)&&(a="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,i=!0);t+=a}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var n="";if(this.vvcC.general_constraint_info){var r,i=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e<this.vvcC.general_constraint_info.length;++e)a|=this.vvcC.general_constraint_info[e]>>2&63,i.push(a),a&&(r=e),a=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===r)n=".CA";else{n=".C";var s="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=r;++e)for(o=o<<8|i[e],d+=8;d>=5;)n+=s[o>>d-5&31],o&=(1<<(d-=5))-1;d&&(n+=s[31&(o<<=5-d)])}}t+=n}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),n=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(n?"."+n:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var n=this.vpcC.bitDepth;return 8==n&&(n="08"),e+".0"+this.vpcC.profile+"."+t+"."+n},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this),n=this.av1C.seq_level_idx_0;return n<10&&(n="0"+n),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+n+(this.av1C.seq_tier_0?"H":"M")+"."+e},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>o&&(this.size+=8),"uuid"===this.type&&(this.size+=16),i.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>o?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>o&&e.writeUint64(this.size)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},u.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t<this.boxes.length;t++)this.boxes[t]&&(this.boxes[t].write(e),this.size+=this.boxes[t].size);i.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),e.adjustUint32(this.sizePosition,this.size)},u.TrackReferenceTypeBox.prototype.write=function(e){this.size=4*this.track_ids.length,this.writeHeader(e),e.writeUint32Array(this.track_ids)},u.avcCBox.prototype.write=function(e){var t;for(this.size=7,t=0;t<this.SPS.length;t++)this.size+=2+this.SPS[t].length;for(t=0;t<this.PPS.length;t++)this.size+=2+this.PPS[t].length;for(this.ext&&(this.size+=this.ext.length),this.writeHeader(e),e.writeUint8(this.configurationVersion),e.writeUint8(this.AVCProfileIndication),e.writeUint8(this.profile_compatibility),e.writeUint8(this.AVCLevelIndication),e.writeUint8(this.lengthSizeMinusOne+252),e.writeUint8(this.SPS.length+224),t=0;t<this.SPS.length;t++)e.writeUint16(this.SPS[t].length),e.writeUint8Array(this.SPS[t].nalu);for(e.writeUint8(this.PPS.length),t=0;t<this.PPS.length;t++)e.writeUint16(this.PPS[t].length),e.writeUint8Array(this.PPS[t].nalu);this.ext&&e.writeUint8Array(this.ext)},u.co64Box.prototype.write=function(e){var t;for(this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(e),e.writeUint32(this.chunk_offsets.length),t=0;t<this.chunk_offsets.length;t++)e.writeUint64(this.chunk_offsets[t])},u.cslgBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeInt32(this.compositionToDTSShift),e.writeInt32(this.leastDecodeToDisplayDelta),e.writeInt32(this.greatestDecodeToDisplayDelta),e.writeInt32(this.compositionStartTime),e.writeInt32(this.compositionEndTime)},u.cttsBox.prototype.write=function(e){var t;for(this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(e),e.writeUint32(this.sample_counts.length),t=0;t<this.sample_counts.length;t++)e.writeUint32(this.sample_counts[t]),1===this.version?e.writeInt32(this.sample_offsets[t]):e.writeUint32(this.sample_offsets[t])},u.drefBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=4,this.writeHeader(e),e.writeUint32(this.entries.length);for(var t=0;t<this.entries.length;t++)this.entries[t].write(e),this.size+=this.entries[t].size;i.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),e.adjustUint32(this.sizePosition,this.size)},u.elngBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(e),e.writeString(this.extended_language)},u.elstBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=4+12*this.entries.length,this.writeHeader(e),e.writeUint32(this.entries.length);for(var t=0;t<this.entries.length;t++){var n=this.entries[t];e.writeUint32(n.segment_duration),e.writeInt32(n.media_time),e.writeInt16(n.media_rate_integer),e.writeInt16(n.media_rate_fraction)}},u.emsgBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(e),e.writeCString(this.scheme_id_uri),e.writeCString(this.value),e.writeUint32(this.timescale),e.writeUint32(this.presentation_time_delta),e.writeUint32(this.event_duration),e.writeUint32(this.id),e.writeUint8Array(this.message_data)},u.ftypBox.prototype.write=function(e){this.size=8+4*this.compatible_brands.length,this.writeHeader(e),e.writeString(this.major_brand,null,4),e.writeUint32(this.minor_version);for(var t=0;t<this.compatible_brands.length;t++)e.writeString(this.compatible_brands[t],null,4)},u.hdlrBox.prototype.write=function(e){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(e),e.writeUint32(0),e.writeString(this.handler,null,4),e.writeUint32(0),e.writeUint32(0),e.writeUint32(0),e.writeCString(this.name)},u.kindBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value.length+1),this.writeHeader(e),e.writeCString(this.schemeURI),e.writeCString(this.value)},u.mdhdBox.prototype.write=function(e){this.size=20,this.flags=0,this.version=0,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.timescale),e.writeUint32(this.duration),e.writeUint16(this.language),e.writeUint16(0)},u.mehdBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=4,this.writeHeader(e),e.writeUint32(this.fragment_duration)},u.mfhdBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=4,this.writeHeader(e),e.writeUint32(this.sequence_number)},u.mvhdBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=96,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.timescale),e.writeUint32(this.duration),e.writeUint32(this.rate),e.writeUint16(this.volume<<8),e.writeUint16(0),e.writeUint32(0),e.writeUint32(0),e.writeUint32Array(this.matrix),e.writeUint32(0),e.writeUint32(0),e.writeUint32(0),e.writeUint32(0),e.writeUint32(0),e.writeUint32(0),e.writeUint32(this.next_track_id)},u.SampleEntry.prototype.writeHeader=function(e){this.size=8,u.Box.prototype.writeHeader.call(this,e),e.writeUint8(0),e.writeUint8(0),e.writeUint8(0),e.writeUint8(0),e.writeUint8(0),e.writeUint8(0),e.writeUint16(this.data_reference_index)},u.SampleEntry.prototype.writeFooter=function(e){for(var t=0;t<this.boxes.length;t++)this.boxes[t].write(e),this.size+=this.boxes[t].size;i.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),e.adjustUint32(this.sizePosition,this.size)},u.SampleEntry.prototype.write=function(e){this.writeHeader(e),e.writeUint8Array(this.data),this.size+=this.data.length,i.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),e.adjustUint32(this.sizePosition,this.size)},u.VisualSampleEntry.prototype.write=function(e){this.writeHeader(e),this.size+=70,e.writeUint16(0),e.writeUint16(0),e.writeUint32(0),e.writeUint32(0),e.writeUint32(0),e.writeUint16(this.width),e.writeUint16(this.height),e.writeUint32(this.horizresolution),e.writeUint32(this.vertresolution),e.writeUint32(0),e.writeUint16(this.frame_count),e.writeUint8(Math.min(31,this.compressorname.length)),e.writeString(this.compressorname,null,31),e.writeUint16(this.depth),e.writeInt16(-1),this.writeFooter(e)},u.AudioSampleEntry.prototype.write=function(e){this.writeHeader(e),this.size+=20,e.writeUint32(0),e.writeUint32(0),e.writeUint16(this.channel_count),e.writeUint16(this.samplesize),e.writeUint16(0),e.writeUint16(0),e.writeUint32(this.samplerate<<16),this.writeFooter(e)},u.stppSampleEntry.prototype.write=function(e){this.writeHeader(e),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,e.writeCString(this.namespace),e.writeCString(this.schema_location),e.writeCString(this.auxiliary_mime_types),this.writeFooter(e)},u.SampleGroupEntry.prototype.write=function(e){e.writeUint8Array(this.data)},u.sbgpBox.prototype.write=function(e){this.version=1,this.flags=0,this.size=12+8*this.entries.length,this.writeHeader(e),e.writeString(this.grouping_type,null,4),e.writeUint32(this.grouping_type_parameter),e.writeUint32(this.entries.length);for(var t=0;t<this.entries.length;t++){var n=this.entries[t];e.writeInt32(n.sample_count),e.writeInt32(n.group_description_index)}},u.sgpdBox.prototype.write=function(e){var t,n;for(this.flags=0,this.size=12,t=0;t<this.entries.length;t++)n=this.entries[t],1===this.version&&(0===this.default_length&&(this.size+=4),this.size+=n.data.length);for(this.writeHeader(e),e.writeString(this.grouping_type,null,4),1===this.version&&e.writeUint32(this.default_length),this.version>=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t<this.entries.length;t++)n=this.entries[t],1===this.version&&0===this.default_length&&e.writeUint32(n.description_length),n.write(e)},u.sidxBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20+12*this.references.length,this.writeHeader(e),e.writeUint32(this.reference_ID),e.writeUint32(this.timescale),e.writeUint32(this.earliest_presentation_time),e.writeUint32(this.first_offset),e.writeUint16(0),e.writeUint16(this.references.length);for(var t=0;t<this.references.length;t++){var n=this.references[t];e.writeUint32(n.reference_type<<31|n.referenced_size),e.writeUint32(n.subsegment_duration),e.writeUint32(n.starts_with_SAP<<31|n.SAP_type<<28|n.SAP_delta_time)}},u.smhdBox.prototype.write=function(e){this.version=0,this.flags=1,this.size=4,this.writeHeader(e),e.writeUint16(this.balance),e.writeUint16(0)},u.stcoBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(e),e.writeUint32(this.chunk_offsets.length),e.writeUint32Array(this.chunk_offsets)},u.stscBox.prototype.write=function(e){var t;for(this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(e),e.writeUint32(this.first_chunk.length),t=0;t<this.first_chunk.length;t++)e.writeUint32(this.first_chunk[t]),e.writeUint32(this.samples_per_chunk[t]),e.writeUint32(this.sample_description_index[t])},u.stsdBox.prototype.write=function(e){var t;for(this.version=0,this.flags=0,this.size=0,this.writeHeader(e),e.writeUint32(this.entries.length),this.size+=4,t=0;t<this.entries.length;t++)this.entries[t].write(e),this.size+=this.entries[t].size;i.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),e.adjustUint32(this.sizePosition,this.size)},u.stshBox.prototype.write=function(e){var t;for(this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(e),e.writeUint32(this.shadowed_sample_numbers.length),t=0;t<this.shadowed_sample_numbers.length;t++)e.writeUint32(this.shadowed_sample_numbers[t]),e.writeUint32(this.sync_sample_numbers[t])},u.stssBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(e),e.writeUint32(this.sample_numbers.length),e.writeUint32Array(this.sample_numbers)},u.stszBox.prototype.write=function(e){var t,n=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0)for(t=0;t+1<this.sample_sizes.length;){if(this.sample_sizes[t+1]!==this.sample_sizes[0]){n=!1;break}t++}else n=!1;this.size=8,n||(this.size+=4*this.sample_sizes.length),this.writeHeader(e),n?e.writeUint32(this.sample_sizes[0]):e.writeUint32(0),e.writeUint32(this.sample_sizes.length),n||e.writeUint32Array(this.sample_sizes)},u.sttsBox.prototype.write=function(e){var t;for(this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(e),e.writeUint32(this.sample_counts.length),t=0;t<this.sample_counts.length;t++)e.writeUint32(this.sample_counts[t]),e.writeUint32(this.sample_deltas[t])},u.tfdtBox.prototype.write=function(e){var t=Math.pow(2,32)-1;this.version=this.baseMediaDecodeTime>t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},u.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t<this.sample_count;t++)this.flags&u.TRUN_FLAGS_DURATION&&e.writeUint32(this.sample_duration[t]),this.flags&u.TRUN_FLAGS_SIZE&&e.writeUint32(this.sample_size[t]),this.flags&u.TRUN_FLAGS_FLAGS&&e.writeUint32(this.sample_flags[t]),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(0===this.version?e.writeUint32(this.sample_composition_time_offset[t]):e.writeInt32(this.sample_composition_time_offset[t]))},u["url Box"].prototype.write=function(e){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(e),this.location&&e.writeCString(this.location)},u["urn Box"].prototype.write=function(e){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(e),e.writeCString(this.name),this.location&&e.writeCString(this.location)},u.vmhdBox.prototype.write=function(e){this.version=0,this.flags=1,this.size=8,this.writeHeader(e),e.writeUint16(this.graphicsmode),e.writeUint16Array(this.opcolor)},u.cttsBox.prototype.unpack=function(e){var t,n,r;for(r=0,t=0;t<this.sample_counts.length;t++)for(n=0;n<this.sample_counts[t];n++)e[r].pts=e[r].dts+this.sample_offsets[t],r++},u.sttsBox.prototype.unpack=function(e){var t,n,r;for(r=0,t=0;t<this.sample_counts.length;t++)for(n=0;n<this.sample_counts[t];n++)e[r].dts=0===r?0:e[r-1].dts+this.sample_deltas[t],r++},u.stcoBox.prototype.unpack=function(e){var t;for(t=0;t<this.chunk_offsets.length;t++)e[t].offset=this.chunk_offsets[t]},u.stscBox.prototype.unpack=function(e){var t,n,r,i,a;for(i=0,a=0,t=0;t<this.first_chunk.length;t++)for(n=0;n<(t+1<this.first_chunk.length?this.first_chunk[t+1]:1/0);n++)for(a++,r=0;r<this.samples_per_chunk[t];r++){if(!e[i])return;e[i].description_index=this.sample_description_index[t],e[i].chunk_index=a,i++}},u.stszBox.prototype.unpack=function(e){var t;for(t=0;t<this.sample_sizes.length;t++)e[t].size=this.sample_sizes[t]},u.DIFF_BOXES_PROP_NAMES=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES=["compatible_brands","matrix","opcolor","sample_counts","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"],u.boxEqualFields=function(e,t){if(e&&!t)return!1;var n;for(n in e)if(!(u.DIFF_BOXES_PROP_NAMES.indexOf(n)>-1||e[n]instanceof u.Box||t[n]instanceof u.Box||void 0===e[n]||void 0===t[n]||"function"==typeof e[n]||"function"==typeof t[n]||e.subBoxNames&&e.subBoxNames.indexOf(n.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(n.slice(0,4))>-1||"data"===n||"start"===n||"size"===n||"creation_time"===n||"modification_time"===n||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(n)>-1||e[n]===t[n]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var n=0;n<u.DIFF_BOXES_PROP_NAMES.length;n++){var r=u.DIFF_BOXES_PROP_NAMES[n];if(e[r]&&t[r]&&!u.boxEqual(e[r],t[r]))return!1}return!0};var h=function(){};h.prototype.parseSample=function(e){var t,n,r=new a(e.buffer);for(t=[];!r.isEos();)(n=u.parseOneBox(r,!1)).code===u.OK&&"vttc"===n.box.type&&t.push(n.box);return t},h.prototype.getText=function(e,t,n){function r(e,t,n){return n=n||"0",(e+="").length>=t?e:new Array(t-e.length+1).join(n)+e}function i(e){var t=Math.floor(e/3600),n=Math.floor((e-3600*t)/60),i=Math.floor(e-3600*t-60*n),a=Math.floor(1e3*(e-3600*t-60*n-i));return r(t,2)+":"+r(n,2)+":"+r(i,2)+"."+r(a,3)}for(var a=this.parseSample(n),s="",o=0;o<a.length;o++){var d=a[o];s+=i(e)+" --\x3e "+i(t)+"\r\n",s+=d.payl.text}return s};var f=function(){};f.prototype.parseSample=function(e){var t,n={resources:[]},r=new a(e.data.buffer);if(e.subsamples&&0!==e.subsamples.length){if(n.documentString=r.readString(e.subsamples[0].size),e.subsamples.length>1)for(t=1;t<e.subsamples.length;t++)n.resources[t]=r.readUint8Array(e.subsamples[t].size)}else n.documentString=r.readString(e.data.length);return"undefined"!=typeof DOMParser&&(n.document=(new DOMParser).parseFromString(n.documentString,"application/xml")),n};var p=function(){};p.prototype.parseSample=function(e){return new a(e.data.buffer).readString(e.data.length)},p.prototype.parseConfig=function(e){var t=new a(e.buffer);return t.readUint32(),t.readCString()},t.XMLSubtitlein4Parser=f,t.Textin4Parser=p;var c=function(e){this.stream=e||new d,this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.onMoovStart=null,this.moovStartSent=!1,this.onReady=null,this.readySent=!1,this.onSegment=null,this.onSamples=null,this.onError=null,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.onSidx=null,this.sidxSent=!1};c.prototype.setSegmentOptions=function(e,t,n){var r=this.getTrackById(e);if(r){var i={};this.fragmentedTracks.push(i),i.id=e,i.user=t,i.trak=r,r.nextSample=0,i.segmentStream=null,i.nb_samples=1e3,i.rapAlignement=!0,n&&(n.nbSamples&&(i.nb_samples=n.nbSamples),n.rapAlignement&&(i.rapAlignement=n.rapAlignement))}},c.prototype.unsetSegmentOptions=function(e){for(var t=-1,n=0;n<this.fragmentedTracks.length;n++)this.fragmentedTracks[n].id==e&&(t=n);t>-1&&this.fragmentedTracks.splice(t,1)},c.prototype.setExtractionOptions=function(e,t,n){var r=this.getTrackById(e);if(r){var i={};this.extractedTracks.push(i),i.id=e,i.user=t,i.trak=r,r.nextSample=0,i.nb_samples=1e3,i.samples=[],n&&n.nbSamples&&(i.nb_samples=n.nbSamples)}},c.prototype.unsetExtractionOptions=function(e){for(var t=-1,n=0;n<this.extractedTracks.length;n++)this.extractedTracks[n].id==e&&(t=n);t>-1&&this.extractedTracks.splice(t,1)},c.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=u.parseOneBox(this.stream,!1)).code===u.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var n;switch(n="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),n){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[n]&&i.warn("ISOFile","Duplicate Box of type: "+n+", overriding previous occurrence"),this[n]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},c.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(i.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(i.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(i.warn("ISOFile","Not ready to start parsing"),!1))},c.prototype.appendBuffer=function(e,t){var n;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(n=this.nextSeekPosition,this.nextSeekPosition=void 0):n=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(n=this.stream.getEndFilePositionAfter(n))):n=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(i.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+n),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),i.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),n},c.prototype.getInfo=function(){var e,t,n,r,i,a,s={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(s.hasMoov=!0,s.duration=this.moov.mvhd.duration,s.timescale=this.moov.mvhd.timescale,s.isFragmented=null!=this.moov.mvex,s.isFragmented&&this.moov.mvex.mehd&&(s.fragment_duration=this.moov.mvex.mehd.fragment_duration),s.isProgressive=this.isProgressive,s.hasIOD=null!=this.moov.iods,s.brands=[],s.brands.push(this.ftyp.major_brand),s.brands=s.brands.concat(this.ftyp.compatible_brands),s.created=new Date(o+1e3*this.moov.mvhd.creation_time),s.modified=new Date(o+1e3*this.moov.mvhd.modification_time),s.tracks=[],s.audioTracks=[],s.videoTracks=[],s.subtitleTracks=[],s.metadataTracks=[],s.hintTracks=[],s.otherTracks=[],e=0;e<this.moov.traks.length;e++){if(a=(n=this.moov.traks[e]).mdia.minf.stbl.stsd.entries[0],r={},s.tracks.push(r),r.id=n.tkhd.track_id,r.name=n.mdia.hdlr.name,r.references=[],n.tref)for(t=0;t<n.tref.boxes.length;t++)i={},r.references.push(i),i.type=n.tref.boxes[t].type,i.track_ids=n.tref.boxes[t].track_ids;n.edts&&(r.edits=n.edts.elst.entries),r.created=new Date(o+1e3*n.tkhd.creation_time),r.modified=new Date(o+1e3*n.tkhd.modification_time),r.movie_duration=n.tkhd.duration,r.movie_timescale=s.timescale,r.layer=n.tkhd.layer,r.alternate_group=n.tkhd.alternate_group,r.volume=n.tkhd.volume,r.matrix=n.tkhd.matrix,r.track_width=n.tkhd.width/65536,r.track_height=n.tkhd.height/65536,r.timescale=n.mdia.mdhd.timescale,r.cts_shift=n.mdia.minf.stbl.cslg,r.duration=n.mdia.mdhd.duration,r.samples_duration=n.samples_duration,r.codec=a.getCodec(),r.kind=n.udta&&n.udta.kinds.length?n.udta.kinds[0]:{schemeURI:"",value:""},r.language=n.mdia.elng?n.mdia.elng.extended_language:n.mdia.mdhd.languageString,r.nb_samples=n.samples.length,r.size=n.samples_size,r.bitrate=8*r.size*r.timescale/r.samples_duration,a.isAudio()?(r.type="audio",s.audioTracks.push(r),r.audio={},r.audio.sample_rate=a.getSampleRate(),r.audio.channel_count=a.getChannelCount(),r.audio.sample_size=a.getSampleSize()):a.isVideo()?(r.type="video",s.videoTracks.push(r),r.video={},r.video.width=a.getWidth(),r.video.height=a.getHeight()):a.isSubtitle()?(r.type="subtitles",s.subtitleTracks.push(r)):a.isHint()?(r.type="metadata",s.hintTracks.push(r)):a.isMetadata()?(r.type="metadata",s.metadataTracks.push(r)):(r.type="metadata",s.otherTracks.push(r))}else s.hasMoov=!1;if(s.mime="",s.hasMoov&&s.tracks){for(s.videoTracks&&s.videoTracks.length>0?s.mime+='video/mp4; codecs="':s.audioTracks&&s.audioTracks.length>0?s.mime+='audio/mp4; codecs="':s.mime+='application/mp4; codecs="',e=0;e<s.tracks.length;e++)0!==e&&(s.mime+=","),s.mime+=s.tracks[e].codec;s.mime+='"; profiles="',s.mime+=this.ftyp.compatible_brands.join(),s.mime+='"'}return s},c.prototype.processSamples=function(e){var t,n;if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&null!==this.onSegment)for(t=0;t<this.fragmentedTracks.length;t++){var r=this.fragmentedTracks[t];for(n=r.trak;n.nextSample<n.samples.length&&this.sampleProcessingStarted;){i.debug("ISOFile","Creating media fragment on track #"+r.id+" for sample "+n.nextSample);var a=this.createFragment(r.id,n.nextSample,r.segmentStream);if(!a)break;if(r.segmentStream=a,n.nextSample++,(n.nextSample%r.nb_samples==0||e||n.nextSample>=n.samples.length)&&(i.info("ISOFile","Sending fragmented data on track #"+r.id+" for samples ["+Math.max(0,n.nextSample-r.nb_samples)+","+(n.nextSample-1)+"]"),i.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(r.id,r.user,r.segmentStream.buffer,n.nextSample,e||n.nextSample>=n.samples.length),r.segmentStream=null,r!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t<this.extractedTracks.length;t++){var s=this.extractedTracks[t];for(n=s.trak;n.nextSample<n.samples.length&&this.sampleProcessingStarted;){i.debug("ISOFile","Exporting on track #"+s.id+" sample #"+n.nextSample);var o=this.getSample(n,n.nextSample);if(!o)break;if(n.nextSample++,s.samples.push(o),(n.nextSample%s.nb_samples==0||n.nextSample>=n.samples.length)&&(i.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+n.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},c.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},c.prototype.getBoxes=function(e,t){var n=[];return c._sweep.call(this,e,n,t),n},c._sweep=function(e,t,n){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&n)return;c._sweep.call(this.boxes[r],e,t,n)}},c.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},c.prototype.getTrackSample=function(e,t){var n=this.getTrackById(e);return this.getSample(n,t)},c.prototype.releaseUsedSamples=function(e,t){var n=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var a=r.lastValidSample;a<t;a++)n+=this.releaseSample(r,a);i.info("ISOFile","Track #"+e+" released samples up to "+t+" (released size: "+n+", remaining: "+this.samplesDataSize+")"),r.lastValidSample=t},c.prototype.start=function(){this.sampleProcessingStarted=!0,this.processSamples(!1)},c.prototype.stop=function(){this.sampleProcessingStarted=!1},c.prototype.flush=function(){i.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)},c.prototype.seekTrack=function(e,t,n){var r,a,s,o,d=0,l=0;if(0===n.samples.length)return i.info("ISOFile","No sample in track, cannot seek! Using time "+i.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(r=0;r<n.samples.length;r++){if(a=n.samples[r],0===r)l=0,o=a.timescale;else if(a.cts>e*a.timescale){l=r-1;break}t&&a.is_sync&&(d=r)}for(t&&(l=d),e=n.samples[l].cts,n.nextSample=l;n.samples[l].alreadyRead===n.samples[l].size&&n.samples[l+1];)l++;return s=n.samples[l].offset+n.samples[l].alreadyRead,i.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+n.nextSample+" on track "+n.tkhd.track_id+", time "+i.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},c.prototype.seek=function(e,t){var n,r,a,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(a=0;a<s.traks.length;a++)n=s.traks[a],(r=this.seekTrack(e,t,n)).offset<o.offset&&(o.offset=r.offset),r.time<o.time&&(o.time=r.time);return i.info("ISOFile","Seeking at time "+i.getDurationString(o.time,1)+" needs a buffer with a fileStart position of "+o.offset),o.offset===1/0?o={offset:this.nextParsePosition,time:0}:o.offset=this.stream.getEndFilePositionAfter(o.offset),i.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+o.offset),o}throw"Cannot seek: moov not received!"},c.prototype.equal=function(e){for(var t=0;t<this.boxes.length&&t<e.boxes.length;){var n=this.boxes[t],r=e.boxes[t];if(!u.boxEqual(n,r))return!1;t++}return!0},t.ISOFile=c,c.prototype.lastBoxStartPosition=0,c.prototype.parsingMdat=null,c.prototype.nextParsePosition=0,c.prototype.discardMdatData=!1,c.prototype.processIncompleteBox=function(e){var t;return"mdat"===e.type?(t=new u[e.type+"Box"](e.size),this.parsingMdat=t,this.boxes.push(t),this.mdats.push(t),t.start=e.start,t.hdr_size=e.hdr_size,this.stream.addUsedBytes(t.hdr_size),this.lastBoxStartPosition=t.start+t.size,this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(this.parsingMdat=null,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=t.start+t.size,!1)):("moov"===e.type&&(this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0)),this.stream.mergeNextBuffer&&this.stream.mergeNextBuffer()?(this.nextParsePosition=this.stream.getEndPosition(),!0):(e.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+e.size:this.nextParsePosition=this.stream.getEndPosition(),!1))},c.prototype.hasIncompleteMdat=function(){return null!==this.parsingMdat},c.prototype.processIncompleteMdat=function(){var e;return e=this.parsingMdat,this.stream.seek(e.start+e.size,!1,this.discardMdatData)?(i.debug("ISOFile","Found 'mdat' end in buffered data"),this.parsingMdat=null,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)},c.prototype.restoreParsePosition=function(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)},c.prototype.saveParsePosition=function(){this.lastBoxStartPosition=this.stream.getPosition()},c.prototype.updateUsedBytes=function(e,t){this.stream.addUsedBytes&&("mdat"===e.type?(this.stream.addUsedBytes(e.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(e.size-e.hdr_size)):this.stream.addUsedBytes(e.size))},c.prototype.add=u.Box.prototype.add,c.prototype.addBox=u.Box.prototype.addBox,c.prototype.init=function(e){var t=e||{},n=(this.add("ftyp").set("major_brand",t.brands&&t.brands[0]||"iso4").set("minor_version",0).set("compatible_brands",t.brands||["iso4"]),this.add("moov"));return n.add("mvhd").set("timescale",t.timescale||600).set("rate",t.rate||65536).set("creation_time",0).set("modification_time",0).set("duration",t.duration||0).set("volume",t.width?0:256).set("matrix",[65536,0,0,0,65536,0,0,0,1073741824]).set("next_track_id",1),n.add("mvex"),this},c.prototype.addTrack=function(e){this.moov||this.init(e);var t=e||{};t.width=t.width||320,t.height=t.height||320,t.id=t.id||this.moov.mvhd.next_track_id,t.type=t.type||"avc1";var n=this.moov.add("trak");this.moov.mvhd.next_track_id=t.id+1,n.add("tkhd").set("flags",u.TKHD_FLAG_ENABLED|u.TKHD_FLAG_IN_MOVIE|u.TKHD_FLAG_IN_PREVIEW).set("creation_time",0).set("modification_time",0).set("track_id",t.id).set("duration",t.duration||0).set("layer",t.layer||0).set("alternate_group",0).set("volume",1).set("matrix",[0,0,0,0,0,0,0,0,0]).set("width",t.width<<16).set("height",t.height<<16);var r=n.add("mdia");r.add("mdhd").set("creation_time",0).set("modification_time",0).set("timescale",t.timescale||1).set("duration",t.media_duration||0).set("language",t.language||"und"),r.add("hdlr").set("handler",t.hdlr||"vide").set("name",t.name||"Track created with MP4Box.js"),r.add("elng").set("extended_language",t.language||"fr-FR");var i=r.add("minf");if(void 0!==u[t.type+"SampleEntry"]){var s=new u[t.type+"SampleEntry"];s.data_reference_index=1;var o="";for(var d in u.sampleEntryCodes)for(var l=u.sampleEntryCodes[d],h=0;h<l.length;h++)if(l.indexOf(t.type)>-1){o=d;break}switch(o){case"Visual":if(i.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var f=new u.avcCBox,p=new a(t.avcDecoderConfigRecord);f.parse(p),s.addBox(f)}break;case"Audio":i.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":i.add("hmhd");break;case"Subtitle":i.add("sthd"),"stpp"===t.type&&s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:i.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),i.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var c=i.add("stbl");return c.add("stsd").addEntry(s),c.add("stts").set("sample_counts",[]).set("sample_deltas",[]),c.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),c.add("stco").set("chunk_offsets",[]),c.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(n),t.id}},u.Box.prototype.computeSize=function(e){var t=e||new s;t.endianness=s.BIG_ENDIAN,this.write(t)},c.prototype.addSample=function(e,t,n){var r=n||{},i={},a=this.getTrackById(e);if(null!==a){i.number=a.samples.length,i.track_id=a.tkhd.track_id,i.timescale=a.mdia.mdhd.timescale,i.description_index=r.sample_description_index?r.sample_description_index-1:0,i.description=a.mdia.minf.stbl.stsd.entries[i.description_index],i.data=t,i.size=t.byteLength,i.alreadyRead=i.size,i.duration=r.duration||1,i.cts=r.cts||0,i.dts=r.dts||0,i.is_sync=r.is_sync||!1,i.is_leading=r.is_leading||0,i.depends_on=r.depends_on||0,i.is_depended_on=r.is_depended_on||0,i.has_redundancy=r.has_redundancy||0,i.degradation_priority=r.degradation_priority||0,i.offset=0,i.subsamples=r.subsamples,a.samples.push(i),a.samples_size+=i.size,a.samples_duration+=i.duration,a.first_dts||(a.first_dts=r.dts),this.processSamples();var s=this.createSingleSampleMoof(i);return this.addBox(s),s.computeSize(),s.trafs[0].truns[0].data_offset=s.size+8,this.add("mdat").data=new Uint8Array(t),i}},c.prototype.createSingleSampleMoof=function(e){var t;t=e.is_sync?1<<25:65536;var n=new u.moofBox;n.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=n.add("traf"),i=this.getTrackById(e.track_id);return r.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(i.first_dts||0)),r.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),n},c.prototype.lastMoofIndex=0,c.prototype.samplesDataSize=0,c.prototype.resetTables=function(){var e,t,n,r,i,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e<this.moov.traks.length;e++){(t=this.moov.traks[e]).tkhd.duration=0,t.mdia.mdhd.duration=0,(t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64).chunk_offsets=[],(n=t.mdia.minf.stbl.stsc).first_chunk=[],n.samples_per_chunk=[],n.sample_description_index=[],(t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2).sample_sizes=[],(r=t.mdia.minf.stbl.stts).sample_counts=[],r.sample_deltas=[],(i=t.mdia.minf.stbl.ctts)&&(i.sample_counts=[],i.sample_offsets=[]),a=t.mdia.minf.stbl.stss;var s=t.mdia.minf.stbl.boxes.indexOf(a);-1!=s&&(t.mdia.minf.stbl.boxes[s]=null)}},c.initSampleGroups=function(e,t,n,r,i){var a,s,o,d;function l(e,t,n){this.grouping_type=e,this.grouping_type_parameter=t,this.sbgp=n,this.last_sample_in_run=-1,this.entry_index=-1}for(t&&(t.sample_groups_info=[]),e.sample_groups_info||(e.sample_groups_info=[]),s=0;s<n.length;s++){for(d=n[s].grouping_type+"/"+n[s].grouping_type_parameter,o=new l(n[s].grouping_type,n[s].grouping_type_parameter,n[s]),t&&(t.sample_groups_info[d]=o),e.sample_groups_info[d]||(e.sample_groups_info[d]=o),a=0;a<r.length;a++)r[a].grouping_type===n[s].grouping_type&&(o.description=r[a],o.description.used=!0);if(i)for(a=0;a<i.length;a++)i[a].grouping_type===n[s].grouping_type&&(o.fragment_description=i[a],o.fragment_description.used=!0,o.is_fragment=!0)}if(t){if(i)for(s=0;s<i.length;s++)!i[s].used&&i[s].version>=2&&(d=i[s].grouping_type+"/0",(o=new l(i[s].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(s=0;s<r.length;s++)!r[s].used&&r[s].version>=2&&(d=r[s].grouping_type+"/0",o=new l(r[s].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},c.setSampleGroupProperties=function(e,t,n,r){var i,a;for(i in t.sample_groups=[],r){var s;t.sample_groups[i]={},t.sample_groups[i].grouping_type=r[i].grouping_type,t.sample_groups[i].grouping_type_parameter=r[i].grouping_type_parameter,n>=r[i].last_sample_in_run&&(r[i].last_sample_in_run<0&&(r[i].last_sample_in_run=0),r[i].entry_index++,r[i].entry_index<=r[i].sbgp.entries.length-1&&(r[i].last_sample_in_run+=r[i].sbgp.entries[r[i].entry_index].sample_count)),r[i].entry_index<=r[i].sbgp.entries.length-1?t.sample_groups[i].group_description_index=r[i].sbgp.entries[r[i].entry_index].group_description_index:t.sample_groups[i].group_description_index=-1,0!==t.sample_groups[i].group_description_index&&(s=r[i].fragment_description?r[i].fragment_description:r[i].description,t.sample_groups[i].group_description_index>0?(a=t.sample_groups[i].group_description_index>65535?(t.sample_groups[i].group_description_index>>16)-1:t.sample_groups[i].group_description_index-1,s&&a>=0&&(t.sample_groups[i].description=s.entries[a])):s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[i].description=s.entries[s.default_group_description_index-1]))}},c.process_sdtp=function(e,t,n){t&&(e?(t.is_leading=e.is_leading[n],t.depends_on=e.sample_depends_on[n],t.is_depended_on=e.sample_is_depended_on[n],t.has_redundancy=e.sample_has_redundancy[n]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},c.prototype.buildSampleLists=function(){var e,t;for(e=0;e<this.moov.traks.length;e++)t=this.moov.traks[e],this.buildTrakSampleLists(t)},c.prototype.buildTrakSampleLists=function(e){var t,n,r,i,a,s,o,d,l,u,h,f,p,m,_,g,y,v,S,b,w,E,F,x;if(e.samples=[],e.samples_duration=0,e.samples_size=0,n=e.mdia.minf.stbl.stco||e.mdia.minf.stbl.co64,r=e.mdia.minf.stbl.stsc,i=e.mdia.minf.stbl.stsz||e.mdia.minf.stbl.stz2,a=e.mdia.minf.stbl.stts,s=e.mdia.minf.stbl.ctts,o=e.mdia.minf.stbl.stss,d=e.mdia.minf.stbl.stsd,l=e.mdia.minf.stbl.subs,f=e.mdia.minf.stbl.stdp,u=e.mdia.minf.stbl.sbgps,h=e.mdia.minf.stbl.sgpds,v=-1,S=-1,b=-1,w=-1,E=0,F=0,x=0,c.initSampleGroups(e,null,u,h),void 0!==i){for(t=0;t<i.sample_sizes.length;t++){var U={};U.number=t,U.track_id=e.tkhd.track_id,U.timescale=e.mdia.mdhd.timescale,U.alreadyRead=0,e.samples[t]=U,U.size=i.sample_sizes[t],e.samples_size+=U.size,0===t?(m=1,p=0,U.chunk_index=m,U.chunk_run_index=p,y=r.samples_per_chunk[p],g=0,_=p+1<r.first_chunk.length?r.first_chunk[p+1]-1:1/0):t<y?(U.chunk_index=m,U.chunk_run_index=p):(m++,U.chunk_index=m,g=0,m<=_||(_=1+ ++p<r.first_chunk.length?r.first_chunk[p+1]-1:1/0),U.chunk_run_index=p,y+=r.samples_per_chunk[p]),U.description_index=r.sample_description_index[U.chunk_run_index]-1,U.description=d.entries[U.description_index],U.offset=n.chunk_offsets[U.chunk_index-1]+g,g+=U.size,t>v&&(S++,v<0&&(v=0),v+=a.sample_counts[S]),t>0?(e.samples[t-1].duration=a.sample_deltas[S],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,s?(t>=b&&(w++,b<0&&(b=0),b+=s.sample_counts[w]),U.cts=e.samples[t].dts+s.sample_offsets[w]):U.cts=U.dts,o?(t==o.sample_numbers[E]-1?(U.is_sync=!0,E++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[F].sample_delta+x==t+1&&(U.subsamples=l.entries[F].subsamples,x+=l.entries[F].sample_delta,F++)):U.is_sync=!0,c.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=f?f.priority[t]:0,l&&l.entries[F].sample_delta+x==t&&(U.subsamples=l.entries[F].subsamples,x+=l.entries[F].sample_delta),(u.length>0||h.length>0)&&c.setSampleGroupProperties(e,U,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},c.prototype.updateSampleLists=function(){var e,t,n,r,i,a,s,o,d,l,h,f,p,m,_;if(void 0!==this.moov)for(;this.lastMoofIndex<this.moofs.length;)if(d=this.moofs[this.lastMoofIndex],this.lastMoofIndex++,"moof"==d.type)for(l=d,e=0;e<l.trafs.length;e++){for(h=l.trafs[e],f=this.getTrackById(h.tfhd.track_id),p=this.getTrexById(h.tfhd.track_id),r=h.tfhd.flags&u.TFHD_FLAG_SAMPLE_DESC?h.tfhd.default_sample_description_index:p?p.default_sample_description_index:1,i=h.tfhd.flags&u.TFHD_FLAG_SAMPLE_DUR?h.tfhd.default_sample_duration:p?p.default_sample_duration:0,a=h.tfhd.flags&u.TFHD_FLAG_SAMPLE_SIZE?h.tfhd.default_sample_size:p?p.default_sample_size:0,s=h.tfhd.flags&u.TFHD_FLAG_SAMPLE_FLAGS?h.tfhd.default_sample_flags:p?p.default_sample_flags:0,h.sample_number=0,h.sbgps.length>0&&c.initSampleGroups(f,h,h.sbgps,f.mdia.minf.stbl.sgpds,h.sgpds),t=0;t<h.truns.length;t++){var g=h.truns[t];for(n=0;n<g.sample_count;n++){(m={}).moof_number=this.lastMoofIndex,m.number_in_traf=h.sample_number,h.sample_number++,m.number=f.samples.length,h.first_sample_index=f.samples.length,f.samples.push(m),m.track_id=f.tkhd.track_id,m.timescale=f.mdia.mdhd.timescale,m.description_index=r-1,m.description=f.mdia.minf.stbl.stsd.entries[m.description_index],m.size=a,g.flags&u.TRUN_FLAGS_SIZE&&(m.size=g.sample_size[n]),f.samples_size+=m.size,m.duration=i,g.flags&u.TRUN_FLAGS_DURATION&&(m.duration=g.sample_duration[n]),f.samples_duration+=m.duration,f.first_traf_merged||n>0?m.dts=f.samples[f.samples.length-2].dts+f.samples[f.samples.length-2].duration:(h.tfdt?m.dts=h.tfdt.baseMediaDecodeTime:m.dts=0,f.first_traf_merged=!0),m.cts=m.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(m.cts=m.dts+g.sample_composition_time_offset[n]),_=s,g.flags&u.TRUN_FLAGS_FLAGS?_=g.sample_flags[n]:0===n&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(_=g.first_sample_flags),m.is_sync=!(_>>16&1),m.is_leading=_>>26&3,m.depends_on=_>>24&3,m.is_depended_on=_>>22&3,m.has_redundancy=_>>20&3,m.degradation_priority=65535&_;var y,v=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),S=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET);y=v?h.tfhd.base_data_offset:S||0===t?l.start:o,m.offset=0===t&&0===n?b?y+g.data_offset:y:o,o=m.offset+m.size,(h.sbgps.length>0||h.sgpds.length>0||f.mdia.minf.stbl.sbgps.length>0||f.mdia.minf.stbl.sgpds.length>0)&&c.setSampleGroupProperties(f,m,m.number_in_traf,h.sample_groups_info)}}if(h.subs){f.has_fragment_subsamples=!0;var w=h.first_sample_index;for(t=0;t<h.subs.entries.length;t++)w+=h.subs.entries[t].sample_delta,(m=f.samples[w-1]).subsamples=h.subs.entries[t].subsamples}}},c.prototype.getSample=function(e,t){var n,r=e.samples[t];if(!this.moov)return null;if(r.data){if(r.alreadyRead==r.size)return r}else r.data=new Uint8Array(r.size),r.alreadyRead=0,this.samplesDataSize+=r.size,i.debug("ISOFile","Allocating sample #"+t+" on track #"+e.tkhd.track_id+" of size "+r.size+" (total: "+this.samplesDataSize+")");for(;;){var a=this.stream.findPosition(!0,r.offset+r.alreadyRead,!1);if(!(a>-1))return null;var o=(n=this.stream.buffers[a]).byteLength-(r.offset+r.alreadyRead-n.fileStart);if(r.size-r.alreadyRead<=o)return i.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-n.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),s.memcpy(r.data.buffer,r.alreadyRead,n,r.offset+r.alreadyRead-n.fileStart,r.size-r.alreadyRead),n.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0===o)return null;i.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-n.fileStart)+" read size: "+o+" full size: "+r.size+")"),s.memcpy(r.data.buffer,r.alreadyRead,n,r.offset+r.alreadyRead-n.fileStart,o),r.alreadyRead+=o,n.usedBytes+=o,this.stream.logBufferLevel()}},c.prototype.releaseSample=function(e,t){var n=e.samples[t];return n.data?(this.samplesDataSize-=n.size,n.data=null,n.alreadyRead=0,n.size):0},c.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},c.prototype.getCodecs=function(){var e,t="";for(e=0;e<this.moov.traks.length;e++)e>0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec();return t},c.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t<this.moov.mvex.trexs.length;t++){var n=this.moov.mvex.trexs[t];if(n.track_id==e)return n}return null},c.prototype.getTrackById=function(e){if(void 0===this.moov)return null;for(var t=0;t<this.moov.traks.length;t++){var n=this.moov.traks[t];if(n.tkhd.track_id==e)return n}return null},c.prototype.items=[],c.prototype.itemsDataSize=0,c.prototype.flattenItemInfo=function(){var e,t,n,r=this.items,a=this.meta;if(null!=a&&void 0!==a.hdlr&&void 0!==a.iinf){for(e=0;e<a.iinf.item_infos.length;e++)(n={}).id=a.iinf.item_infos[e].item_ID,r[n.id]=n,n.ref_to=[],n.name=a.iinf.item_infos[e].item_name,a.iinf.item_infos[e].protection_index>0&&(n.protection=a.ipro.protections[a.iinf.item_infos[e].protection_index-1]),a.iinf.item_infos[e].item_type?n.type=a.iinf.item_infos[e].item_type:n.type="mime",n.content_type=a.iinf.item_infos[e].content_type,n.content_encoding=a.iinf.item_infos[e].content_encoding;if(a.iloc)for(e=0;e<a.iloc.items.length;e++){var s=a.iloc.items[e];switch(n=r[s.item_ID],0!==s.data_reference_index&&(i.warn("Item storage with reference to other files: not supported"),n.source=a.dinf.boxes[s.data_reference_index-1]),s.construction_method){case 0:break;case 1:case 2:i.warn("Item storage with construction_method : not supported")}for(n.extents=[],n.size=0,t=0;t<s.extents.length;t++)n.extents[t]={},n.extents[t].offset=s.extents[t].extent_offset+s.base_offset,n.extents[t].length=s.extents[t].extent_length,n.extents[t].alreadyRead=0,n.size+=n.extents[t].length}if(a.pitm&&(r[a.pitm.item_id].primary=!0),a.iref)for(e=0;e<a.iref.references.length;e++){var o=a.iref.references[e];for(t=0;t<o.references.length;t++)r[o.from_item_ID].ref_to.push({type:o.type,id:o.references[t]})}if(a.iprp)for(var d=0;d<a.iprp.ipmas.length;d++){var l=a.iprp.ipmas[d];for(e=0;e<l.associations.length;e++){var u=l.associations[e];for(void 0===(n=r[u.id]).properties&&(n.properties={},n.properties.boxes=[]),t=0;t<u.props.length;t++){var h=u.props[t];if(h.property_index>0&&h.property_index-1<a.iprp.ipco.boxes.length){var f=a.iprp.ipco.boxes[h.property_index-1];n.properties[f.type]=f,n.properties.boxes.push(f)}}}}}},c.prototype.getItem=function(e){var t,n;if(!this.meta)return null;if(!(n=this.items[e]).data&&n.size)n.data=new Uint8Array(n.size),n.alreadyRead=0,this.itemsDataSize+=n.size,i.debug("ISOFile","Allocating item #"+e+" of size "+n.size+" (total: "+this.itemsDataSize+")");else if(n.alreadyRead===n.size)return n;for(var r=0;r<n.extents.length;r++){var a=n.extents[r];if(a.alreadyRead!==a.length){var o=this.stream.findPosition(!0,a.offset+a.alreadyRead,!1);if(!(o>-1))return null;var d=(t=this.stream.buffers[o]).byteLength-(a.offset+a.alreadyRead-t.fileStart);if(!(a.length-a.alreadyRead<=d))return i.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+a.alreadyRead+" offset: "+(a.offset+a.alreadyRead-t.fileStart)+" read size: "+d+" full extent size: "+a.length+" full item size: "+n.size+")"),s.memcpy(n.data.buffer,n.alreadyRead,t,a.offset+a.alreadyRead-t.fileStart,d),a.alreadyRead+=d,n.alreadyRead+=d,t.usedBytes+=d,this.stream.logBufferLevel(),null;i.debug("ISOFile","Getting item #"+e+" extent #"+r+" data (alreadyRead: "+a.alreadyRead+" offset: "+(a.offset+a.alreadyRead-t.fileStart)+" read size: "+(a.length-a.alreadyRead)+" full extent size: "+a.length+" full item size: "+n.size+")"),s.memcpy(n.data.buffer,n.alreadyRead,t,a.offset+a.alreadyRead-t.fileStart,a.length-a.alreadyRead),t.usedBytes+=a.length-a.alreadyRead,this.stream.logBufferLevel(),n.alreadyRead+=a.length-a.alreadyRead,a.alreadyRead=a.length}}return n.alreadyRead===n.size?n:null},c.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var n=0;n<t.extents.length;n++)t.extents[n].alreadyRead=0;return t.size}return 0},c.prototype.processItems=function(e){for(var t in this.items){var n=this.items[t];this.getItem(n.id),e&&!n.sent&&(e(n),n.sent=!0,n.data=null)}},c.prototype.hasItem=function(e){for(var t in this.items){var n=this.items[t];if(n.name===e)return n.id}return-1},c.prototype.getMetaHandler=function(){return this.meta?this.meta.hdlr.handler:null},c.prototype.getPrimaryItem=function(){return this.meta&&this.meta.pitm?this.getItem(this.meta.pitm.item_id):null},c.prototype.itemToFragmentedTrackFile=function(e){var t,n=e||{};if(null==(t=n.itemId?this.getItem(n.itemId):this.getPrimaryItem()))return null;var r=new c;r.discardMdatData=!1;var i={type:t.type,description_boxes:t.properties.boxes};t.properties.ispe&&(i.width=t.properties.ispe.image_width,i.height=t.properties.ispe.image_height);var a=r.addTrack(i);return a?(r.addSample(a,t.data),r):null},c.prototype.write=function(e){for(var t=0;t<this.boxes.length;t++)this.boxes[t].write(e)},c.prototype.createFragment=function(e,t,n){var r=this.getTrackById(e),a=this.getSample(r,t);if(null==a)return a=r.samples[t],this.nextSeekPosition?this.nextSeekPosition=Math.min(a.offset+a.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=r.samples[t].offset+a.alreadyRead,null;var o=n||new s;o.endianness=s.BIG_ENDIAN;var d=this.createSingleSampleMoof(a);d.write(o),d.trafs[0].truns[0].data_offset=d.size+8,i.debug("MP4Box","Adjusting data_offset with new value "+d.trafs[0].truns[0].data_offset),o.adjustUint32(d.trafs[0].truns[0].data_offset_position,d.trafs[0].truns[0].data_offset);var l=new u.mdatBox;return l.data=a.data,l.write(o),o},c.writeInitializationSegment=function(e,t,n,r){var a;i.debug("ISOFile","Generating initialization segment");var o=new s;o.endianness=s.BIG_ENDIAN,e.write(o);var d=t.add("mvex");for(n&&d.add("mehd").set("fragment_duration",n),a=0;a<t.traks.length;a++)d.add("trex").set("track_id",t.traks[a].tkhd.track_id).set("default_sample_description_index",1).set("default_sample_duration",r).set("default_sample_size",0).set("default_sample_flags",65536);return t.write(o),o.buffer},c.prototype.save=function(e){var t=new s;t.endianness=s.BIG_ENDIAN,this.write(t),t.save(e)},c.prototype.getBuffer=function(){var e=new s;return e.endianness=s.BIG_ENDIAN,this.write(e),e.buffer},c.prototype.initializeSegmentation=function(){var e,t,n,r;for(null===this.onSegment&&i.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.nextMoofNumber=0,this.resetTables()),t=[],e=0;e<this.fragmentedTracks.length;e++){var a=new u.moovBox;a.mvhd=this.moov.mvhd,a.boxes.push(a.mvhd),n=this.getTrackById(this.fragmentedTracks[e].id),a.boxes.push(n),a.traks.push(n),(r={}).id=n.tkhd.track_id,r.user=this.fragmentedTracks[e].user,r.buffer=c.writeInitializationSegment(this.ftyp,a,this.moov.mvex&&this.moov.mvex.mehd?this.moov.mvex.mehd.fragment_duration:void 0,this.moov.traks[e].samples.length>0?this.moov.traks[e].samples[0].duration:0),t.push(r)}return t},u.Box.prototype.printHeader=function(e){this.size+=8,this.size>o&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t<this.boxes.length;t++)if(this.boxes[t]){var n=e.indent;e.indent+=" ",this.boxes[t].print(e),e.indent=n}},c.prototype.print=function(e){e.indent="";for(var t=0;t<this.boxes.length;t++)this.boxes[t]&&this.boxes[t].print(e)},u.mvhdBox.prototype.print=function(e){u.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"timescale: "+this.timescale),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"rate: "+this.rate),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},u.tkhdBox.prototype.print=function(e){u.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var m=function(e,t){var n=void 0===e||e,r=new c(t);return r.discardMdatData=!n,r};t.createFile=m},42182:e=>{e.exports='var Module = typeof Module !== "undefined" ? Module : {};\nvar moduleOverrides = {};\nvar key;\nfor (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n}\nvar arguments_ = [];\nvar thisProgram = "./this.program";\nvar quit_ = function (status, toThrow) {\n throw toThrow;\n};\nvar ENVIRONMENT_IS_WEB = false;\nvar ENVIRONMENT_IS_WORKER = false;\nvar ENVIRONMENT_IS_NODE = false;\nvar ENVIRONMENT_IS_SHELL = false;\nENVIRONMENT_IS_WEB = typeof window === "object";\nENVIRONMENT_IS_WORKER = typeof importScripts === "function";\nENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string";\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\nvar scriptDirectory = "";\nfunction locateFile(path) {\n if (Module["locateFile"]) {\n return Module["locateFile"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\nvar read_, readAsync, readBinary, setWindowTitle;\nvar nodeFS;\nvar nodePath;\nif (ENVIRONMENT_IS_NODE) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = require("path").dirname(scriptDirectory) + "/";\n } else {\n scriptDirectory = __dirname + "/";\n }\n read_ = function shell_read(filename, binary) {\n if (!nodeFS) nodeFS = require("fs");\n if (!nodePath) nodePath = require("path");\n filename = nodePath["normalize"](filename);\n return nodeFS["readFileSync"](filename, binary ? null : "utf8");\n };\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n assert(ret.buffer);\n return ret;\n };\n if (process["argv"].length > 1) {\n thisProgram = process["argv"][1].replace(/\\\\/g, "/");\n }\n arguments_ = process["argv"].slice(2);\n if (typeof module !== "undefined") {\n module["exports"] = Module;\n }\n process["on"]("uncaughtException", function (ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });\n process["on"]("unhandledRejection", abort);\n quit_ = function (status) {\n process["exit"](status);\n };\n Module["inspect"] = function () {\n return "[Emscripten Module object]";\n };\n} else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != "undefined") {\n read_ = function shell_read(f) {\n return read(f);\n };\n }\n readBinary = function readBinary(f) {\n var data;\n if (typeof readbuffer === "function") {\n return new Uint8Array(readbuffer(f));\n }\n data = read(f, "binary");\n assert(typeof data === "object");\n return data;\n };\n if (typeof scriptArgs != "undefined") {\n arguments_ = scriptArgs;\n } else if (typeof arguments != "undefined") {\n arguments_ = arguments;\n }\n if (typeof quit === "function") {\n quit_ = function (status) {\n quit(status);\n };\n }\n if (typeof print !== "undefined") {\n if (typeof console === "undefined") console = {};\n console.log = print;\n console.warn = console.error = typeof printErr !== "undefined" ? printErr : print;\n }\n} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (scriptDirectory.indexOf("blob:") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1);\n } else {\n scriptDirectory = "";\n }\n {\n read_ = function shell_read(url) {\n var xhr = new XMLHttpRequest();\n xhr.open("GET", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function readBinary(url) {\n var xhr = new XMLHttpRequest();\n xhr.open("GET", url, false);\n xhr.responseType = "arraybuffer";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = function readAsync(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open("GET", url, true);\n xhr.responseType = "arraybuffer";\n xhr.onload = function xhr_onload() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = function (title) {\n document.title = title;\n };\n} else {}\nvar out = Module["print"] || console.log.bind(console);\nvar err = Module["printErr"] || console.warn.bind(console);\nfor (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n}\nmoduleOverrides = null;\nif (Module["arguments"]) arguments_ = Module["arguments"];\nif (Module["thisProgram"]) thisProgram = Module["thisProgram"];\nif (Module["quit"]) quit_ = Module["quit"];\nfunction dynamicAlloc(size) {\n var ret = HEAP32[DYNAMICTOP_PTR >> 2];\n var end = ret + size + 15 & -16;\n HEAP32[DYNAMICTOP_PTR >> 2] = end;\n return ret;\n}\nfunction getNativeTypeSize(type) {\n switch (type) {\n case "i1":\n case "i8":\n return 1;\n case "i16":\n return 2;\n case "i32":\n return 4;\n case "i64":\n return 8;\n case "float":\n return 4;\n case "double":\n return 8;\n default:\n {\n if (type[type.length - 1] === "*") {\n return 4;\n } else if (type[0] === "i") {\n var bits = Number(type.substr(1));\n assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type);\n return bits / 8;\n } else {\n return 0;\n }\n }\n }\n}\nvar tempRet0 = 0;\nvar setTempRet0 = function (value) {\n tempRet0 = value;\n};\nvar getTempRet0 = function () {\n return tempRet0;\n};\nvar wasmBinary;\nif (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];\nvar noExitRuntime;\nif (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"];\nif (typeof WebAssembly !== "object") {\n err("no native wasm support detected");\n}\nfunction setValue(ptr, value, type, noSafe) {\n type = type || "i8";\n if (type.charAt(type.length - 1) === "*") type = "i32";\n switch (type) {\n case "i1":\n HEAP8[ptr >> 0] = value;\n break;\n case "i8":\n HEAP8[ptr >> 0] = value;\n break;\n case "i16":\n HEAP16[ptr >> 1] = value;\n break;\n case "i32":\n HEAP32[ptr >> 2] = value;\n break;\n case "i64":\n tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];\n break;\n case "float":\n HEAPF32[ptr >> 2] = value;\n break;\n case "double":\n HEAPF64[ptr >> 3] = value;\n break;\n default:\n abort("invalid type for setValue: " + type);\n }\n}\nvar wasmMemory;\nvar wasmTable = new WebAssembly.Table({\n "initial": 522,\n "maximum": 522 + 0,\n "element": "anyfunc"\n});\nvar ABORT = false;\nvar EXITSTATUS = 0;\nfunction assert(condition, text) {\n if (!condition) {\n abort("Assertion failed: " + text);\n }\n}\nfunction getCFunc(ident) {\n var func = Module["_" + ident];\n assert(func, "Cannot call unknown function " + ident + ", make sure it is exported");\n return func;\n}\nfunction ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n "string": function (str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n "array": function (arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n function convertReturnValue(ret) {\n if (returnType === "string") return UTF8ToString(ret);\n if (returnType === "boolean") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n}\nfunction cwrap(ident, returnType, argTypes, opts) {\n argTypes = argTypes || [];\n var numericArgs = argTypes.every(function (type) {\n return type === "number";\n });\n var numericRet = returnType !== "string";\n if (numericRet && numericArgs && !opts) {\n return getCFunc(ident);\n }\n return function () {\n return ccall(ident, returnType, argTypes, arguments, opts);\n };\n}\nvar ALLOC_NONE = 3;\nfunction allocate(slab, types, allocator, ptr) {\n var zeroinit, size;\n if (typeof slab === "number") {\n zeroinit = true;\n size = slab;\n } else {\n zeroinit = false;\n size = slab.length;\n }\n var singleType = typeof types === "string" ? types : null;\n var ret;\n if (allocator == ALLOC_NONE) {\n ret = ptr;\n } else {\n ret = [_malloc, stackAlloc, dynamicAlloc][allocator](Math.max(size, singleType ? 1 : types.length));\n }\n if (zeroinit) {\n var stop;\n ptr = ret;\n assert((ret & 3) == 0);\n stop = ret + (size & ~3);\n for (; ptr < stop; ptr += 4) {\n HEAP32[ptr >> 2] = 0;\n }\n stop = ret + size;\n while (ptr < stop) {\n HEAP8[ptr++ >> 0] = 0;\n }\n return ret;\n }\n if (singleType === "i8") {\n if (slab.subarray || slab.slice) {\n HEAPU8.set(slab, ret);\n } else {\n HEAPU8.set(new Uint8Array(slab), ret);\n }\n return ret;\n }\n var i = 0,\n type,\n typeSize,\n previousType;\n while (i < size) {\n var curr = slab[i];\n type = singleType || types[i];\n if (type === 0) {\n i++;\n continue;\n }\n if (type == "i64") type = "i32";\n setValue(ret + i, curr, type);\n if (previousType !== type) {\n typeSize = getNativeTypeSize(type);\n previousType = type;\n }\n i += typeSize;\n }\n return ret;\n}\nvar UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;\nfunction UTF8ArrayToString(heap, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(heap.subarray(idx, endPtr));\n } else {\n var str = "";\n while (idx < endPtr) {\n var u0 = heap[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heap[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heap[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n return str;\n}\nfunction UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";\n}\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n if (u <= 127) ++len;else if (u <= 2047) len += 2;else if (u <= 65535) len += 3;else len += 4;\n }\n return len;\n}\nfunction writeArrayToMemory(array, buffer) {\n HEAP8.set(array, buffer);\n}\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\nvar WASM_PAGE_SIZE = 65536;\nfunction alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n return x;\n}\nvar buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\nfunction updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module["HEAP8"] = HEAP8 = new Int8Array(buf);\n Module["HEAP16"] = HEAP16 = new Int16Array(buf);\n Module["HEAP32"] = HEAP32 = new Int32Array(buf);\n Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);\n Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf);\n Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf);\n Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);\n Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);\n}\nvar DYNAMIC_BASE = 5275232,\n DYNAMICTOP_PTR = 32192;\nvar INITIAL_INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 16777216;\nif (Module["wasmMemory"]) {\n wasmMemory = Module["wasmMemory"];\n} else {\n wasmMemory = new WebAssembly.Memory({\n "initial": INITIAL_INITIAL_MEMORY / WASM_PAGE_SIZE,\n "maximum": 2147483648 / WASM_PAGE_SIZE\n });\n}\nif (wasmMemory) {\n buffer = wasmMemory.buffer;\n}\nINITIAL_INITIAL_MEMORY = buffer.byteLength;\nupdateGlobalBufferAndViews(buffer);\nHEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n if (typeof callback == "function") {\n callback(Module);\n continue;\n }\n var func = callback.func;\n if (typeof func === "number") {\n if (callback.arg === undefined) {\n Module["dynCall_v"](func);\n } else {\n Module["dynCall_vi"](func, callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n}\nvar __ATPRERUN__ = [];\nvar __ATINIT__ = [];\nvar __ATMAIN__ = [];\nvar __ATPOSTRUN__ = [];\nvar runtimeInitialized = false;\nfunction preRun() {\n if (Module["preRun"]) {\n if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]];\n while (Module["preRun"].length) {\n addOnPreRun(Module["preRun"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\nfunction initRuntime() {\n runtimeInitialized = true;\n if (!Module["noFSInit"] && !FS.init.initialized) FS.init();\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\nfunction preMain() {\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATMAIN__);\n}\nfunction postRun() {\n if (Module["postRun"]) {\n if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]];\n while (Module["postRun"].length) {\n addOnPostRun(Module["postRun"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\nvar Math_abs = Math.abs;\nvar Math_ceil = Math.ceil;\nvar Math_floor = Math.floor;\nvar Math_min = Math.min;\nvar runDependencies = 0;\nvar runDependencyWatcher = null;\nvar dependenciesFulfilled = null;\nfunction getUniqueRunDependency(id) {\n return id;\n}\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module["monitorRunDependencies"]) {\n Module["monitorRunDependencies"](runDependencies);\n }\n}\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module["monitorRunDependencies"]) {\n Module["monitorRunDependencies"](runDependencies);\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\nModule["preloadedImages"] = {};\nModule["preloadedAudios"] = {};\nfunction abort(what) {\n if (Module["onAbort"]) {\n Module["onAbort"](what);\n }\n what += "";\n out(what);\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";\n throw new WebAssembly.RuntimeError(what);\n}\nfunction hasPrefix(str, prefix) {\n return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0;\n}\nvar dataURIPrefix = "data:application/octet-stream;base64,";\nfunction isDataURI(filename) {\n return hasPrefix(filename, dataURIPrefix);\n}\nvar fileURIPrefix = "file://";\nfunction isFileURI(filename) {\n return hasPrefix(filename, fileURIPrefix);\n}\nvar wasmBinaryFile = "rlottie-wasm.wasm";\nif (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n}\nfunction getBinary() {\n try {\n if (wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(wasmBinaryFile);\n } else {\n throw "both async and sync fetching of the wasm failed";\n }\n } catch (err) {\n abort(err);\n }\n}\nfunction getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) && typeof fetch === "function" && !isFileURI(wasmBinaryFile)) {\n return fetch(wasmBinaryFile, {\n credentials: "same-origin"\n }).then(function (response) {\n if (!response["ok"]) {\n throw "failed to load wasm binary file at \'" + wasmBinaryFile + "\'";\n }\n return response["arrayBuffer"]();\n }).catch(function () {\n return getBinary();\n });\n }\n return new Promise(function (resolve, reject) {\n resolve(getBinary());\n });\n}\nfunction createWasm() {\n var info = {\n "a": asmLibraryArg\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module["asm"] = exports;\n removeRunDependency("wasm-instantiate");\n }\n addRunDependency("wasm-instantiate");\n function receiveInstantiatedSource(output) {\n receiveInstance(output["instance"]);\n }\n function instantiateArrayBuffer(receiver) {\n return getBinaryPromise().then(function (binary) {\n return WebAssembly.instantiate(binary, info);\n }).then(receiver, function (reason) {\n err("failed to asynchronously prepare wasm: " + reason);\n abort(reason);\n });\n }\n function instantiateAsync() {\n if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") {\n fetch(wasmBinaryFile, {\n credentials: "same-origin"\n }).then(function (response) {\n var result = WebAssembly.instantiateStreaming(response, info);\n return result.then(receiveInstantiatedSource, function (reason) {\n err("wasm streaming compile failed: " + reason);\n err("falling back to ArrayBuffer instantiation");\n instantiateArrayBuffer(receiveInstantiatedSource);\n });\n });\n } else {\n return instantiateArrayBuffer(receiveInstantiatedSource);\n }\n }\n if (Module["instantiateWasm"]) {\n try {\n var exports = Module["instantiateWasm"](info, receiveInstance);\n return exports;\n } catch (e) {\n err("Module.instantiateWasm callback failed with error: " + e);\n return false;\n }\n }\n instantiateAsync();\n return {};\n}\nvar tempDouble;\nvar tempI64;\n__ATINIT__.push({\n func: function () {\n ___wasm_call_ctors();\n }\n});\nfunction demangle(func) {\n return func;\n}\nfunction demangleAll(text) {\n var regex = /\\b_Z[\\w\\d_]+/g;\n return text.replace(regex, function (x) {\n var y = demangle(x);\n return x === y ? x : y + " [" + x + "]";\n });\n}\nfunction jsStackTrace() {\n var err = new Error();\n if (!err.stack) {\n try {\n throw new Error();\n } catch (e) {\n err = e;\n }\n if (!err.stack) {\n return "(no stack trace available)";\n }\n }\n return err.stack.toString();\n}\nfunction stackTrace() {\n var js = jsStackTrace();\n if (Module["extraStackTrace"]) js += "\\n" + Module["extraStackTrace"]();\n return demangleAll(js);\n}\nfunction __ZN7VRegionC1ERK5VRect() {\n err("missing function: _ZN7VRegionC1ERK5VRect");\n abort(-1);\n}\nfunction __ZN7VRegionD1Ev() {\n err("missing function: _ZN7VRegionD1Ev");\n abort(-1);\n}\nfunction __ZN7VRegionpLERK5VRect() {\n err("missing function: _ZN7VRegionpLERK5VRect");\n abort(-1);\n}\nfunction __ZNK7VRegion12boundingRectEv() {\n err("missing function: _ZNK7VRegion12boundingRectEv");\n abort(-1);\n}\nfunction ___assert_fail(condition, filename, line, func) {\n abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"]);\n}\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\nfunction ___map_file(pathname, size) {\n setErrNo(63);\n return -1;\n}\nvar PATH = {\n splitPath: function (filename) {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: function (parts, allowAboveRoot) {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === ".") {\n parts.splice(i, 1);\n } else if (last === "..") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (; up; up--) {\n parts.unshift("..");\n }\n }\n return parts;\n },\n normalize: function (path) {\n var isAbsolute = path.charAt(0) === "/",\n trailingSlash = path.substr(-1) === "/";\n path = PATH.normalizeArray(path.split("/").filter(function (p) {\n return !!p;\n }), !isAbsolute).join("/");\n if (!path && !isAbsolute) {\n path = ".";\n }\n if (path && trailingSlash) {\n path += "/";\n }\n return (isAbsolute ? "/" : "") + path;\n },\n dirname: function (path) {\n var result = PATH.splitPath(path),\n root = result[0],\n dir = result[1];\n if (!root && !dir) {\n return ".";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: function (path) {\n if (path === "/") return "/";\n var lastSlash = path.lastIndexOf("/");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n extname: function (path) {\n return PATH.splitPath(path)[3];\n },\n join: function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return PATH.normalize(paths.join("/"));\n },\n join2: function (l, r) {\n return PATH.normalize(l + "/" + r);\n }\n};\nvar PATH_FS = {\n resolve: function () {\n var resolvedPath = "",\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path !== "string") {\n throw new TypeError("Arguments to path.resolve must be strings");\n } else if (!path) {\n return "";\n }\n resolvedPath = path + "/" + resolvedPath;\n resolvedAbsolute = path.charAt(0) === "/";\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(function (p) {\n return !!p;\n }), !resolvedAbsolute).join("/");\n return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";\n },\n relative: function (from, to) {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== "") break;\n }\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== "") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split("/"));\n var toParts = trim(to.split("/"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push("..");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join("/");\n }\n};\nvar TTY = {\n ttys: [],\n init: function () {},\n shutdown: function () {},\n register: function (dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function (stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function (stream) {\n stream.tty.ops.flush(stream.tty);\n },\n flush: function (stream) {\n stream.tty.ops.flush(stream.tty);\n },\n read: function (stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function (tty) {\n if (!tty.input.length) {\n var result = null;\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);\n var bytesRead = 0;\n try {\n bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null);\n } catch (e) {\n if (e.toString().indexOf("EOF") != -1) bytesRead = 0;else throw e;\n }\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString("utf-8");\n } else {\n result = null;\n }\n } else if (typeof window != "undefined" && typeof window.prompt == "function") {\n result = window.prompt("Input: ");\n if (result !== null) {\n result += "\\n";\n }\n } else if (typeof readline == "function") {\n result = readline();\n if (result !== null) {\n result += "\\n";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function (tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function (tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function (tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function (tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\nvar MEMFS = {\n ops_table: null,\n mount: function (mount) {\n return MEMFS.createNode(null, "/", 16384 | 511, 0);\n },\n createNode: function (parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n }\n return node;\n },\n getFileDataAsRegularArray: function (node) {\n if (node.contents && node.contents.subarray) {\n var arr = [];\n for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);\n return arr;\n }\n return node.contents;\n },\n getFileDataAsTypedArray: function (node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function (node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n return;\n },\n resizeFileStorage: function (node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n return;\n }\n if (!node.contents || node.contents.subarray) {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n return;\n }\n if (!node.contents) node.contents = [];\n if (node.contents.length > newSize) node.contents.length = newSize;else while (node.contents.length < newSize) node.contents.push(0);\n node.usedBytes = newSize;\n },\n node_ops: {\n getattr: function (node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function (node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function (parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function (parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function (old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n old_node.parent = new_dir;\n },\n unlink: function (parent, name) {\n delete parent.contents[name];\n },\n rmdir: function (parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n },\n readdir: function (node) {\n var entries = [".", ".."];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function (parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function (node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function (stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function (stream, buffer, offset, length, position, canOwn) {\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function (stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function (stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function (stream, buffer, offset, length, position, prot, flags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === buffer.buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n var fromHeap = buffer.buffer == HEAP8.buffer;\n ptr = _malloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n (fromHeap ? HEAP8 : buffer).set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function (stream, buffer, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (mmapFlags & 2) {\n return 0;\n }\n var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: "/",\n initialized: false,\n ignorePermissions: true,\n trackingDelegate: {},\n tracking: {\n openFlags: {\n READ: 1,\n WRITE: 2\n }\n },\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n handleFSError: function (e) {\n if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace();\n return setErrNo(e.errno);\n },\n lookupPath: function (path, opts) {\n path = PATH_FS.resolve(FS.cwd(), path);\n opts = opts || {};\n if (!path) return {\n path: "",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n for (var key in defaults) {\n if (opts[key] === undefined) {\n opts[key] = defaults[key];\n }\n }\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = PATH.normalizeArray(path.split("/").filter(function (p) {\n return !!p;\n }), false);\n var current = FS.root;\n var current_path = "/";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: function (node) {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path;\n }\n path = path ? node.name + "/" + path : node.name;\n node = node.parent;\n }\n },\n hashName: function (parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: function (node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: function (node) {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: function (parent, name) {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: function (parent, name, mode, rdev) {\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: function (node) {\n FS.hashRemoveNode(node);\n },\n isRoot: function (node) {\n return node === node.parent;\n },\n isMountpoint: function (node) {\n return !!node.mounted;\n },\n isFile: function (mode) {\n return (mode & 61440) === 32768;\n },\n isDir: function (mode) {\n return (mode & 61440) === 16384;\n },\n isLink: function (mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev: function (mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev: function (mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO: function (mode) {\n return (mode & 61440) === 4096;\n },\n isSocket: function (mode) {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n "r": 0,\n "rs": 1052672,\n "r+": 2,\n "w": 577,\n "wx": 705,\n "xw": 705,\n "w+": 578,\n "wx+": 706,\n "xw+": 706,\n "a": 1089,\n "ax": 1217,\n "xa": 1217,\n "a+": 1090,\n "ax+": 1218,\n "xa+": 1218\n },\n modeStringToFlags: function (str) {\n var flags = FS.flagModes[str];\n if (typeof flags === "undefined") {\n throw new Error("Unknown file open mode: " + str);\n }\n return flags;\n },\n flagsToPermissionString: function (flag) {\n var perms = ["r", "w", "rw"][flag & 3];\n if (flag & 512) {\n perms += "w";\n }\n return perms;\n },\n nodePermissions: function (node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.indexOf("r") !== -1 && !(node.mode & 292)) {\n return 2;\n } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) {\n return 2;\n } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: function (dir) {\n var errCode = FS.nodePermissions(dir, "x");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: function (dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, "wx");\n },\n mayDelete: function (dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, "wx");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: function (node, flags) {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: function (fd_start, fd_end) {\n fd_start = fd_start || 0;\n fd_end = fd_end || FS.MAX_OPEN_FDS;\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: function (fd) {\n return FS.streams[fd];\n },\n createStream: function (stream, fd_start, fd_end) {\n if (!FS.FSStream) {\n FS.FSStream = function () {};\n FS.FSStream.prototype = {\n object: {\n get: function () {\n return this.node;\n },\n set: function (val) {\n this.node = val;\n }\n },\n isRead: {\n get: function () {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function () {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function () {\n return this.flags & 1024;\n }\n }\n };\n }\n var newStream = new FS.FSStream();\n for (var p in stream) {\n newStream[p] = stream[p];\n }\n stream = newStream;\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: function (fd) {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: function (stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: function () {\n throw new FS.ErrnoError(70);\n }\n },\n major: function (dev) {\n return dev >> 8;\n },\n minor: function (dev) {\n return dev & 255;\n },\n makedev: function (ma, mi) {\n return ma << 8 | mi;\n },\n registerDevice: function (dev, ops) {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: function (dev) {\n return FS.devices[dev];\n },\n getMounts: function (mount) {\n var mounts = [];\n var check = [mount];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: function (populate, callback) {\n if (typeof populate === "function") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(function (mount) {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: function (type, opts, mountpoint) {\n var root = mountpoint === "/";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: function (mountpoint) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(function (hash) {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.indexOf(current.mount) !== -1) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: function (parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: function (path, mode, dev) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === "." || name === "..") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: function (path, mode) {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: function (path, mode) {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: function (path, mode) {\n var dirs = path.split("/");\n var d = "";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += "/" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: function (path, mode, dev) {\n if (typeof dev === "undefined") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: function (oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: function (old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n try {\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n } catch (e) {\n throw new FS.ErrnoError(10);\n }\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== ".") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== ".") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, "w");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n try {\n if (FS.trackingDelegate["willMovePath"]) {\n FS.trackingDelegate["willMovePath"](old_path, new_path);\n }\n } catch (e) {\n err("FS.trackingDelegate[\'willMovePath\'](\'" + old_path + "\', \'" + new_path + "\') threw an exception: " + e.message);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n try {\n if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path);\n } catch (e) {\n err("FS.trackingDelegate[\'onMovePath\'](\'" + old_path + "\', \'" + new_path + "\') threw an exception: " + e.message);\n }\n },\n rmdir: function (path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n try {\n if (FS.trackingDelegate["willDeletePath"]) {\n FS.trackingDelegate["willDeletePath"](path);\n }\n } catch (e) {\n err("FS.trackingDelegate[\'willDeletePath\'](\'" + path + "\') threw an exception: " + e.message);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path);\n } catch (e) {\n err("FS.trackingDelegate[\'onDeletePath\'](\'" + path + "\') threw an exception: " + e.message);\n }\n },\n readdir: function (path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: function (path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n try {\n if (FS.trackingDelegate["willDeletePath"]) {\n FS.trackingDelegate["willDeletePath"](path);\n }\n } catch (e) {\n err("FS.trackingDelegate[\'willDeletePath\'](\'" + path + "\') threw an exception: " + e.message);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path);\n } catch (e) {\n err("FS.trackingDelegate[\'onDeletePath\'](\'" + path + "\') threw an exception: " + e.message);\n }\n },\n readlink: function (path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: function (path, dontFollow) {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: function (path) {\n return FS.stat(path, true);\n },\n chmod: function (path, mode, dontFollow) {\n var node;\n if (typeof path === "string") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: function (path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod: function (fd, mode) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: function (path, uid, gid, dontFollow) {\n var node;\n if (typeof path === "string") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: function (path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown: function (fd, uid, gid) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: function (path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path === "string") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, "w");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: function (fd, len) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: function (path, atime, mtime) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: function (path, flags, mode, fd_start, fd_end) {\n if (path === "") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode === "undefined" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path === "object") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n }, fd_start, fd_end);\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module["logReadFiles"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n err("FS.trackingDelegate error on read file: " + path);\n }\n }\n try {\n if (FS.trackingDelegate["onOpenFile"]) {\n var trackingFlags = 0;\n if ((flags & 2097155) !== 1) {\n trackingFlags |= FS.tracking.openFlags.READ;\n }\n if ((flags & 2097155) !== 0) {\n trackingFlags |= FS.tracking.openFlags.WRITE;\n }\n FS.trackingDelegate["onOpenFile"](path, trackingFlags);\n }\n } catch (e) {\n err("FS.trackingDelegate[\'onOpenFile\'](\'" + path + "\', flags) threw an exception: " + e.message);\n }\n return stream;\n },\n close: function (stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: function (stream) {\n return stream.fd === null;\n },\n llseek: function (stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: function (stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position !== "undefined";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position !== "undefined";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n try {\n if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path);\n } catch (e) {\n err("FS.trackingDelegate[\'onWriteToFile\'](\'" + stream.path + "\') threw an exception: " + e.message);\n }\n return bytesWritten;\n },\n allocate: function (stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: function (stream, buffer, offset, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);\n },\n msync: function (stream, buffer, offset, length, mmapFlags) {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: function (stream) {\n return 0;\n },\n ioctl: function (stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: function (path, opts) {\n opts = opts || {};\n opts.flags = opts.flags || "r";\n opts.encoding = opts.encoding || "binary";\n if (opts.encoding !== "utf8" && opts.encoding !== "binary") {\n throw new Error(\'Invalid encoding type "\' + opts.encoding + \'"\');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === "utf8") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === "binary") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: function (path, data, opts) {\n opts = opts || {};\n opts.flags = opts.flags || "w";\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data === "string") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error("Unsupported data type");\n }\n FS.close(stream);\n },\n cwd: function () {\n return FS.currentPath;\n },\n chdir: function (path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, "x");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: function () {\n FS.mkdir("/tmp");\n FS.mkdir("/home");\n FS.mkdir("/home/web_user");\n },\n createDefaultDevices: function () {\n FS.mkdir("/dev");\n FS.registerDevice(FS.makedev(1, 3), {\n read: function () {\n return 0;\n },\n write: function (stream, buffer, offset, length, pos) {\n return length;\n }\n });\n FS.mkdev("/dev/null", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev("/dev/tty", FS.makedev(5, 0));\n FS.mkdev("/dev/tty1", FS.makedev(6, 0));\n var random_device;\n if (typeof crypto === "object" && typeof crypto["getRandomValues"] === "function") {\n var randomBuffer = new Uint8Array(1);\n random_device = function () {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else if (ENVIRONMENT_IS_NODE) {\n try {\n var crypto_module = require("crypto");\n random_device = function () {\n return crypto_module["randomBytes"](1)[0];\n };\n } catch (e) {}\n } else {}\n if (!random_device) {\n random_device = function () {\n abort("random_device");\n };\n }\n FS.createDevice("/dev", "random", random_device);\n FS.createDevice("/dev", "urandom", random_device);\n FS.mkdir("/dev/shm");\n FS.mkdir("/dev/shm/tmp");\n },\n createSpecialDirectories: function () {\n FS.mkdir("/proc");\n FS.mkdir("/proc/self");\n FS.mkdir("/proc/self/fd");\n FS.mount({\n mount: function () {\n var node = FS.createNode("/proc/self", "fd", 16384 | 511, 73);\n node.node_ops = {\n lookup: function (parent, name) {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: "fake"\n },\n node_ops: {\n readlink: function () {\n return stream.path;\n }\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, "/proc/self/fd");\n },\n createStandardStreams: function () {\n if (Module["stdin"]) {\n FS.createDevice("/dev", "stdin", Module["stdin"]);\n } else {\n FS.symlink("/dev/tty", "/dev/stdin");\n }\n if (Module["stdout"]) {\n FS.createDevice("/dev", "stdout", null, Module["stdout"]);\n } else {\n FS.symlink("/dev/tty", "/dev/stdout");\n }\n if (Module["stderr"]) {\n FS.createDevice("/dev", "stderr", null, Module["stderr"]);\n } else {\n FS.symlink("/dev/tty1", "/dev/stderr");\n }\n var stdin = FS.open("/dev/stdin", "r");\n var stdout = FS.open("/dev/stdout", "w");\n var stderr = FS.open("/dev/stderr", "w");\n },\n ensureErrnoError: function () {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n this.setErrno = function (errno) {\n this.errno = errno;\n };\n this.setErrno(errno);\n this.message = "FS error";\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [44].forEach(function (code) {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = "<generic error, no stack>";\n });\n },\n staticInit: function () {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, "/");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n "MEMFS": MEMFS\n };\n },\n init: function (input, output, error) {\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module["stdin"] = input || Module["stdin"];\n Module["stdout"] = output || Module["stdout"];\n Module["stderr"] = error || Module["stderr"];\n FS.createStandardStreams();\n },\n quit: function () {\n FS.init.initialized = false;\n var fflush = Module["_fflush"];\n if (fflush) fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: function (canRead, canWrite) {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n joinPath: function (parts, forceRelative) {\n var path = PATH.join.apply(null, parts);\n if (forceRelative && path[0] == "/") path = path.substr(1);\n return path;\n },\n absolutePath: function (relative, base) {\n return PATH_FS.resolve(base, relative);\n },\n standardizePath: function (path) {\n return PATH.normalize(path);\n },\n findObject: function (path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (ret.exists) {\n return ret.object;\n } else {\n setErrNo(ret.error);\n return null;\n }\n },\n analyzePath: function (path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === "/";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createFolder: function (parent, name, canRead, canWrite) {\n var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.mkdir(path, mode);\n },\n createPath: function (parent, path, canRead, canWrite) {\n parent = typeof parent === "string" ? parent : FS.getPath(parent);\n var parts = path.split("/").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: function (parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: function (parent, name, data, canRead, canWrite, canOwn) {\n var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent;\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data === "string") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, "w");\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: function (parent, name, input, output) {\n var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: function (stream) {\n stream.seekable = false;\n },\n close: function (stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: function (stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function (stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n createLink: function (parent, name, target, canRead, canWrite) {\n var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name);\n return FS.symlink(target, path);\n },\n forceLoadFile: function (obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n var success = true;\n if (typeof XMLHttpRequest !== "undefined") {\n throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n success = false;\n }\n } else {\n throw new Error("Cannot load without read() or XMLHttpRequest.");\n }\n if (!success) setErrNo(29);\n return success;\n },\n createLazyFile: function (parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open("HEAD", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn\'t load " + url + ". Status: " + xhr.status);\n var datalength = Number(xhr.getResponseHeader("Content-length"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";\n var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = function (from, to) {\n if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");\n if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!");\n var xhr = new XMLHttpRequest();\n xhr.open("GET", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);\n if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType("text/plain; charset=x-user-defined");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn\'t load " + url + ". Status: " + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n } else {\n return intArrayFromString(xhr.responseText || "", true);\n }\n };\n var lazyArray = this;\n lazyArray.setDataGetter(function (chunkNum) {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] === "undefined") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out("LazyFiles on gzip forces download of the whole file when length is accessed");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest !== "undefined") {\n if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function () {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function () {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function () {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(function (key) {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(29);\n }\n return fn.apply(null, arguments);\n };\n });\n stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {\n if (!FS.forceLoadFile(node)) {\n throw new FS.ErrnoError(29);\n }\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {\n Browser.init();\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency("cp " + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n var handled = false;\n Module["preloadPlugins"].forEach(function (plugin) {\n if (handled) return;\n if (plugin["canHandle"](fullname)) {\n plugin["handle"](byteArray, fullname, finish, function () {\n if (onerror) onerror();\n removeRunDependency(dep);\n });\n handled = true;\n }\n });\n if (!handled) finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == "string") {\n Browser.asyncLoad(url, function (byteArray) {\n processData(byteArray);\n }, onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: function () {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: function () {\n return "EM_FS_" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: "FILE_DATA",\n saveFilesToDB: function (paths, onload, onerror) {\n onload = onload || function () {};\n onerror = onerror || function () {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n out("creating db");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n function finish() {\n if (fail == 0) onload();else onerror();\n }\n paths.forEach(function (path) {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = function putRequest_onsuccess() {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = function putRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: function (paths, onload, onerror) {\n onload = onload || function () {};\n onerror = onerror || function () {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([FS.DB_STORE_NAME], "readonly");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0,\n fail = 0,\n total = paths.length;\n function finish() {\n if (fail == 0) onload();else onerror();\n }\n paths.forEach(function (path) {\n var getRequest = files.get(path);\n getRequest.onsuccess = function getRequest_onsuccess() {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = function getRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n }\n};\nvar SYSCALLS = {\n mappings: {},\n DEFAULT_POLLMASK: 5,\n umask: 511,\n calculateAt: function (dirfd, path) {\n if (path[0] !== "/") {\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = FS.getStream(dirfd);\n if (!dirstream) throw new FS.ErrnoError(8);\n dir = dirstream.path;\n }\n path = PATH.join2(dir, path);\n }\n return path;\n },\n doStat: function (func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 4 >> 2] = 0;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAP32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n HEAP32[buf + 32 >> 2] = 0;\n tempI64 = [stat.size >>> 0, (tempDouble = stat.size, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;\n HEAP32[buf + 60 >> 2] = 0;\n HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;\n HEAP32[buf + 68 >> 2] = 0;\n HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;\n HEAP32[buf + 76 >> 2] = 0;\n tempI64 = [stat.ino >>> 0, (tempDouble = stat.ino, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function (addr, stream, len, flags, offset) {\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n doMkdir: function (path, mode) {\n path = PATH.normalize(path);\n if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n },\n doMknod: function (path, mode, dev) {\n switch (mode & 61440) {\n case 32768:\n case 8192:\n case 24576:\n case 4096:\n case 49152:\n break;\n default:\n return -28;\n }\n FS.mknod(path, mode, dev);\n return 0;\n },\n doReadlink: function (path, buf, bufsize) {\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n },\n doAccess: function (path, amode) {\n if (amode & ~7) {\n return -28;\n }\n var node;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = "";\n if (amode & 4) perms += "r";\n if (amode & 2) perms += "w";\n if (amode & 1) perms += "x";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n },\n doDup: function (path, flags, suggestFD) {\n var suggest = FS.getStream(suggestFD);\n if (suggest) FS.close(suggest);\n return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n },\n doReadv: function (stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n }\n return ret;\n },\n doWritev: function (stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n }\n return ret;\n },\n varargs: undefined,\n get: function () {\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function (ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function (fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n },\n get64: function (low, high) {\n return low;\n }\n};\nfunction ___sys_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.open(stream.path, stream.flags, 0, arg);\n return newStream.fd;\n }\n case 1:\n case 2:\n return 0;\n case 3:\n return stream.flags;\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n case 12:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n case 13:\n case 14:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n setErrNo(28);\n return -1;\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___sys_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n default:\n abort("bad ioctl syscall " + op);\n }\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction syscallMunmap(addr, len) {\n if ((addr | 0) === -1 || len === 0) {\n return -28;\n }\n var info = SYSCALLS.mappings[addr];\n if (!info) return 0;\n if (len === info.len) {\n var stream = FS.getStream(info.fd);\n if (info.prot & 2) {\n SYSCALLS.doMsync(addr, stream, len, info.flags, info.offset);\n }\n FS.munmap(stream);\n SYSCALLS.mappings[addr] = null;\n if (info.allocated) {\n _free(info.malloc);\n }\n }\n return 0;\n}\nfunction ___sys_munmap(addr, len) {\n try {\n return syscallMunmap(addr, len);\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction ___sys_open(path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var pathname = SYSCALLS.getStr(path);\n var mode = SYSCALLS.get();\n var stream = FS.open(pathname, flags, mode);\n return stream.fd;\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\nfunction _abort() {\n abort();\n}\nvar setjmpId = 0;\nfunction _saveSetjmp(env, label, table, size) {\n env = env | 0;\n label = label | 0;\n table = table | 0;\n size = size | 0;\n var i = 0;\n setjmpId = setjmpId + 1 | 0;\n HEAP32[env >> 2] = setjmpId;\n while ((i | 0) < (size | 0)) {\n if ((HEAP32[table + (i << 3) >> 2] | 0) == 0) {\n HEAP32[table + (i << 3) >> 2] = setjmpId;\n HEAP32[table + ((i << 3) + 4) >> 2] = label;\n HEAP32[table + ((i << 3) + 8) >> 2] = 0;\n setTempRet0(size | 0);\n return table | 0;\n }\n i = i + 1 | 0;\n }\n size = size * 2 | 0;\n table = _realloc(table | 0, 8 * (size + 1 | 0) | 0) | 0;\n table = _saveSetjmp(env | 0, label | 0, table | 0, size | 0) | 0;\n setTempRet0(size | 0);\n return table | 0;\n}\nfunction _testSetjmp(id, table, size) {\n id = id | 0;\n table = table | 0;\n size = size | 0;\n var i = 0,\n curr = 0;\n while ((i | 0) < (size | 0)) {\n curr = HEAP32[table + (i << 3) >> 2] | 0;\n if ((curr | 0) == 0) break;\n if ((curr | 0) == (id | 0)) {\n return HEAP32[table + ((i << 3) + 4) >> 2] | 0;\n }\n i = i + 1 | 0;\n }\n return 0;\n}\nfunction _longjmp(env, value) {\n _setThrew(env, value || 1);\n throw "longjmp";\n}\nfunction _emscripten_longjmp(env, value) {\n _longjmp(env, value);\n}\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\nfunction _emscripten_get_heap_size() {\n return HEAPU8.length;\n}\nfunction emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch (e) {}\n}\nfunction _emscripten_resize_heap(requestedSize) {\n requestedSize = requestedSize >>> 0;\n var oldSize = _emscripten_get_heap_size();\n var PAGE_MULTIPLE = 65536;\n var maxHeapSize = 2147483648;\n if (requestedSize > maxHeapSize) {\n return false;\n }\n var minHeapSize = 16777216;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(minHeapSize, requestedSize, overGrownHeapSize), PAGE_MULTIPLE));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n}\nvar ENV = {};\nfunction __getExecutableName() {\n return thisProgram || "./this.program";\n}\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var env = {\n "USER": "web_user",\n "LOGNAME": "web_user",\n "PATH": "/",\n "PWD": "/",\n "HOME": "/home/web_user",\n "LANG": (typeof navigator === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8",\n "_": __getExecutableName()\n };\n for (var x in ENV) {\n env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + "=" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\nfunction _environ_get(__environ, environ_buf) {\n var bufSize = 0;\n getEnvStrings().forEach(function (string, i) {\n var ptr = environ_buf + bufSize;\n HEAP32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n}\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n var strings = getEnvStrings();\n HEAP32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function (string) {\n bufSize += string.length + 1;\n });\n HEAP32[penviron_buf_size >> 2] = bufSize;\n return 0;\n}\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doReadv(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var HIGH_OFFSET = 4294967296;\n var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);\n var DOUBLE_LIMIT = 9007199254740992;\n if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {\n return -61;\n }\n FS.llseek(stream, offset, whence);\n tempI64 = [stream.position >>> 0, (tempDouble = stream.position, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math_min(+Math_floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doWritev(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\nfunction _getTempRet0() {\n return getTempRet0() | 0;\n}\nfunction _round(d) {\n d = +d;\n return d >= +0 ? +Math_floor(d + +.5) : +Math_ceil(d - +.5);\n}\nfunction _setTempRet0($i) {\n setTempRet0($i | 0);\n}\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\nvar __MONTH_DAYS_LEAP = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar __MONTH_DAYS_REGULAR = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : ""\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n "%c": "%a %b %d %H:%M:%S %Y",\n "%D": "%m/%d/%y",\n "%F": "%Y-%m-%d",\n "%h": "%b",\n "%r": "%I:%M:%S %p",\n "%R": "%H:%M",\n "%T": "%H:%M:%S",\n "%x": "%m/%d/%y",\n "%X": "%H:%M:%S",\n "%Ec": "%c",\n "%EC": "%C",\n "%Ex": "%m/%d/%y",\n "%EX": "%H:%M:%S",\n "%Ey": "%y",\n "%EY": "%Y",\n "%Od": "%d",\n "%Oe": "%e",\n "%OH": "%H",\n "%OI": "%I",\n "%Om": "%m",\n "%OM": "%M",\n "%OS": "%S",\n "%Ou": "%u",\n "%OU": "%U",\n "%OV": "%V",\n "%Ow": "%w",\n "%OW": "%W",\n "%Oy": "%y"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n var MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\n function leadingSomething(value, digits, character) {\n var str = typeof value === "number" ? value.toString() : value || "";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, "0");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n case 1:\n return janFourth;\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n } else {\n return thisDate.getFullYear();\n }\n } else {\n return thisDate.getFullYear() - 1;\n }\n }\n var EXPANSION_RULES_2 = {\n "%a": function (date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n "%A": function (date) {\n return WEEKDAYS[date.tm_wday];\n },\n "%b": function (date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n "%B": function (date) {\n return MONTHS[date.tm_mon];\n },\n "%C": function (date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n "%d": function (date) {\n return leadingNulls(date.tm_mday, 2);\n },\n "%e": function (date) {\n return leadingSomething(date.tm_mday, 2, " ");\n },\n "%g": function (date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n "%G": function (date) {\n return getWeekBasedYear(date);\n },\n "%H": function (date) {\n return leadingNulls(date.tm_hour, 2);\n },\n "%I": function (date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12;else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n "%j": function (date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n "%m": function (date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n "%M": function (date) {\n return leadingNulls(date.tm_min, 2);\n },\n "%n": function () {\n return "\\n";\n },\n "%p": function (date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return "AM";\n } else {\n return "PM";\n }\n },\n "%S": function (date) {\n return leadingNulls(date.tm_sec, 2);\n },\n "%t": function () {\n return "\\t";\n },\n "%u": function (date) {\n return date.tm_wday || 7;\n },\n "%U": function (date) {\n var janFirst = new Date(date.tm_year + 1900, 0, 1);\n var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay());\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstSunday, endDate) < 0) {\n var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;\n var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();\n var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00";\n },\n "%V": function (date) {\n var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);\n var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n if (compareByDay(endDate, firstWeekStartThisYear) < 0) {\n return "53";\n }\n if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {\n return "01";\n }\n var daysDifference;\n if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {\n daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate();\n } else {\n daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate();\n }\n return leadingNulls(Math.ceil(daysDifference / 7), 2);\n },\n "%w": function (date) {\n return date.tm_wday;\n },\n "%W": function (date) {\n var janFirst = new Date(date.tm_year, 0, 1);\n var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1);\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstMonday, endDate) < 0) {\n var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;\n var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();\n var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00";\n },\n "%y": function (date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n "%Y": function (date) {\n return date.tm_year + 1900;\n },\n "%z": function (date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? "+" : "-") + String("0000" + off).slice(-4);\n },\n "%Z": function (date) {\n return date.tm_zone;\n },\n "%%": function () {\n return "%";\n }\n };\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.indexOf(rule) >= 0) {\n pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date));\n }\n }\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\nfunction _strftime_l(s, maxsize, format, tm) {\n return _strftime(s, maxsize, format, tm);\n}\nvar FSNode = function (parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\nvar readMode = 292 | 73;\nvar writeMode = 146;\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function () {\n return (this.mode & readMode) === readMode;\n },\n set: function (val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function () {\n return (this.mode & writeMode) === writeMode;\n },\n set: function (val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function () {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function () {\n return FS.isChrdev(this.mode);\n }\n }\n});\nFS.FSNode = FSNode;\nFS.staticInit();\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\nvar asmLibraryArg = {\n "o": __ZN7VRegionC1ERK5VRect,\n "m": __ZN7VRegionD1Ev,\n "n": __ZN7VRegionpLERK5VRect,\n "x": __ZNK7VRegion12boundingRectEv,\n "a": ___assert_fail,\n "u": ___map_file,\n "h": ___sys_fcntl64,\n "z": ___sys_ioctl,\n "t": ___sys_munmap,\n "A": ___sys_open,\n "d": _abort,\n "c": _emscripten_longjmp,\n "q": _emscripten_memcpy_big,\n "r": _emscripten_resize_heap,\n "v": _environ_get,\n "w": _environ_sizes_get,\n "g": _fd_close,\n "y": _fd_read,\n "p": _fd_seek,\n "f": _fd_write,\n "b": _getTempRet0,\n "k": invoke_iii,\n "B": invoke_vi,\n "memory": wasmMemory,\n "i": _round,\n "l": _saveSetjmp,\n "j": _setTempRet0,\n "s": _strftime_l,\n "table": wasmTable,\n "e": _testSetjmp\n};\nvar asm = createWasm();\nModule["asm"] = asm;\nvar ___wasm_call_ctors = Module["___wasm_call_ctors"] = function () {\n return (___wasm_call_ctors = Module["___wasm_call_ctors"] = Module["asm"]["C"]).apply(null, arguments);\n};\nvar _lottie_init = Module["_lottie_init"] = function () {\n return (_lottie_init = Module["_lottie_init"] = Module["asm"]["D"]).apply(null, arguments);\n};\nvar _lottie_resize = Module["_lottie_resize"] = function () {\n return (_lottie_resize = Module["_lottie_resize"] = Module["asm"]["E"]).apply(null, arguments);\n};\nvar _free = Module["_free"] = function () {\n return (_free = Module["_free"] = Module["asm"]["F"]).apply(null, arguments);\n};\nvar _lottie_load_from_data = Module["_lottie_load_from_data"] = function () {\n return (_lottie_load_from_data = Module["_lottie_load_from_data"] = Module["asm"]["G"]).apply(null, arguments);\n};\nvar _lottie_buffer = Module["_lottie_buffer"] = function () {\n return (_lottie_buffer = Module["_lottie_buffer"] = Module["asm"]["H"]).apply(null, arguments);\n};\nvar _lottie_destroy = Module["_lottie_destroy"] = function () {\n return (_lottie_destroy = Module["_lottie_destroy"] = Module["asm"]["I"]).apply(null, arguments);\n};\nvar _lottie_render = Module["_lottie_render"] = function () {\n return (_lottie_render = Module["_lottie_render"] = Module["asm"]["J"]).apply(null, arguments);\n};\nvar _malloc = Module["_malloc"] = function () {\n return (_malloc = Module["_malloc"] = Module["asm"]["K"]).apply(null, arguments);\n};\nvar _realloc = Module["_realloc"] = function () {\n return (_realloc = Module["_realloc"] = Module["asm"]["L"]).apply(null, arguments);\n};\nvar ___errno_location = Module["___errno_location"] = function () {\n return (___errno_location = Module["___errno_location"] = Module["asm"]["M"]).apply(null, arguments);\n};\nvar _setThrew = Module["_setThrew"] = function () {\n return (_setThrew = Module["_setThrew"] = Module["asm"]["N"]).apply(null, arguments);\n};\nvar dynCall_vi = Module["dynCall_vi"] = function () {\n return (dynCall_vi = Module["dynCall_vi"] = Module["asm"]["O"]).apply(null, arguments);\n};\nvar dynCall_iii = Module["dynCall_iii"] = function () {\n return (dynCall_iii = Module["dynCall_iii"] = Module["asm"]["P"]).apply(null, arguments);\n};\nvar stackSave = Module["stackSave"] = function () {\n return (stackSave = Module["stackSave"] = Module["asm"]["Q"]).apply(null, arguments);\n};\nvar stackAlloc = Module["stackAlloc"] = function () {\n return (stackAlloc = Module["stackAlloc"] = Module["asm"]["R"]).apply(null, arguments);\n};\nvar stackRestore = Module["stackRestore"] = function () {\n return (stackRestore = Module["stackRestore"] = Module["asm"]["S"]).apply(null, arguments);\n};\nvar dynCall_v = Module["dynCall_v"] = function () {\n return (dynCall_v = Module["dynCall_v"] = Module["asm"]["T"]).apply(null, arguments);\n};\nfunction invoke_iii(index, a1, a2) {\n var sp = stackSave();\n try {\n return dynCall_iii(index, a1, a2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== "longjmp") throw e;\n _setThrew(1, 0);\n }\n}\nfunction invoke_vi(index, a1) {\n var sp = stackSave();\n try {\n dynCall_vi(index, a1);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0 && e !== "longjmp") throw e;\n _setThrew(1, 0);\n }\n}\nModule["asm"] = asm;\nModule["intArrayFromString"] = intArrayFromString;\nModule["cwrap"] = cwrap;\nModule["allocate"] = allocate;\nvar calledRun;\nfunction ExitStatus(status) {\n this.name = "ExitStatus";\n this.message = "Program terminated with exit(" + status + ")";\n this.status = status;\n}\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\nfunction run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module["calledRun"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"]();\n postRun();\n }\n if (Module["setStatus"]) {\n Module["setStatus"]("Running...");\n setTimeout(function () {\n setTimeout(function () {\n Module["setStatus"]("");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n}\nModule["run"] = run;\nif (Module["preInit"]) {\n if (typeof Module["preInit"] == "function") Module["preInit"] = [Module["preInit"]];\n while (Module["preInit"].length > 0) {\n Module["preInit"].pop()();\n }\n}\nnoExitRuntime = true;\nrun();'},37373:(e,t,n)=>{n(69685)(n(42182))}}]);
|
|
//# sourceMappingURL=5556.5250153a020bec973b38.js.map
|