recorder-core
Version:
Recorder库: html5 js 录音 mp3 wav ogg webm amr g711a g711u 格式,支持pc和Android、iOS部分浏览器、Hybrid App(提供Android iOS App源码)、微信,提供ASR语音识别转文字 H5版语音通话聊天示例 DTMF编码解码
6 lines • 145 kB
JavaScript
/*
录音
https://github.com/xiangyuecn/Recorder
src: recorder-core.js,engine/mp3.js,engine/mp3-engine.js
*/
!function(e){var t="object"==typeof window&&!!window.document,a=t?window:Object;!function(e,y){"use strict";var A=function(){},f=function(e){return"number"==typeof e},B=function(e){return JSON.stringify(e)},W=function(e){return new _(e)},k=W.LM="2025-01-11 09:28",R="https://github.com/xiangyuecn/Recorder",T="Recorder",x="getUserMedia",N="srcSampleRate",V="sampleRate",i="bitRate",E="catch",t=e[T];if(t&&t.LM==k)return t.CLog(t.i18n.$T("K8zP::重复导入{1}",0,T),3);W.IsOpen=function(){var e=W.Stream;if(e){var t=j(e),a=t[0];if(a){var n=a.readyState;return"live"==n||n==a.LIVE}}return!1},W.BufferSize=4096,W.Destroy=function(){for(var e in Q(T+" Destroy"),F(),a)a[e]()};var a={};W.BindDestroy=function(e,t){a[e]=t},W.Support=function(){if(!y)return!1;var e=navigator.mediaDevices||{};return e[x]||(e=navigator)[x]||(e[x]=e.webkitGetUserMedia||e.mozGetUserMedia||e.msGetUserMedia),!!e[x]&&(W.Scope=e,!!W.GetContext())},W.GetContext=function(e){if(!y)return null;var t=window.AudioContext;if(t||(t=window.webkitAudioContext),!t)return null;var a=W.Ctx,n=0;return a||(a=W.Ctx=new t,n=1,W.NewCtxs=W.NewCtxs||[],W.BindDestroy("Ctx",function(){var e=W.Ctx;e&&e.close&&(s(e),W.Ctx=0);var t=W.NewCtxs;W.NewCtxs=[];for(var a=0;a<t.length;a++)s(t[a])})),e&&a.close&&(n||(a._useC||s(a),a=new t),a._useC=1,W.NewCtxs.push(a)),a},W.CloseNewCtx=function(e){if(e&&e.close){s(e);for(var t=W.NewCtxs||[],a=t.length,n=0;n<t.length;n++)if(t[n]==e){t.splice(n,1);break}Q($("mSxV::剩{1}个GetContext未close",0,a+"-1="+t.length),t.length?3:0)}};var s=function(e){if(e&&e.close&&!e._isC&&(e._isC=1,"closed"!=e.state))try{e.close()}catch(e){Q("ctx close err",1,e)}},C=W.ResumeCtx=function(a,n,s,r){var i=0,o=0,_=0,l=0,f="EventListener",c="ResumeCtx ",u=function(e,t){o&&h(),i||(i=1,e&&r(e,l),t&&s(l)),t&&(!a._LsSC&&a["add"+f]&&a["add"+f]("statechange",b),a._LsSC=1,_=1)},h=function(e){if(!e||!o){o=e?1:0;for(var t=["focus","mousedown","mouseup","touchstart","touchend"],a=0;a<t.length;a++)window[(e?"add":"remove")+f](t[a],b,!0)}},b=function(){var e=a.state,t=p(e);if(!i&&!n(t?++l:l))return u();t?(_&&Q(c+"sc "+e,3),h(1),a.resume().then(function(){_&&Q(c+"sc "+a.state),u(0,1)})[E](function(e){Q(c+"error",1,e),p(a.state)||u(e.message||"error")})):"closed"==e?(_&&!a._isC&&Q(c+"sc "+e,1),u("ctx closed")):u(0,1)};b()},p=W.CtxSpEnd=function(e){return"suspended"==e||"interrupted"==e},I=function(e){var t=e.state,a="ctx.state="+t;return p(t)&&(a+=$("nMIy::(注意:ctx不是running状态,rec.open和start至少要有一个在用户操作(触摸、点击等)时进行调用,否则将在rec.start时尝试进行ctx.resume,可能会产生兼容性问题(仅iOS),请参阅文档中runningContext配置)")),a},L="ConnectEnableWebM";W[L]=!0;var P="ConnectEnableWorklet";W[P]=!1;var H=function(e){var _=e.BufferSize||W.BufferSize,l=e.Stream,i=l._c,f=i[V],c={},t=j(l),a=t[0],n=null,s="";if(a&&a.getSettings){var r=(n=a.getSettings())[V];r&&r!=f&&(s=$("eS8i::Stream的采样率{1}不等于{2},将进行采样率转换(注意:音质不会变好甚至可能变差),主要在移动端未禁用回声消除时会产生此现象,浏览器有回声消除时可能只会返回16k采样率的音频数据,",0,r,f))}l._ts=n,Q(s+"Stream TrackSet: "+B(n),s?3:0);var u,o,h,b=function(e){var t=l._m=i.createMediaStreamSource(l),a=i.destination,n="createMediaStreamDestination";i[n]&&(a=l._d=i[n]()),t.connect(e),e.connect(a)},p="",m=l._call,v=function(e,t){for(var a in m){if(t!=f){c.index=0;var n=(c=W.SampleData([e],t,f,c,{_sum:1})).data,s=c._sum}else{c={};for(var r=e.length,n=new Int16Array(r),s=0,i=0;i<r;i++){var o=Math.max(-1,Math.min(1,e[i]));o=o<0?32768*o:32767*o,n[i]=o,s+=Math.abs(o)}}for(var _ in m)m[_](n,s);return}},d="ScriptProcessor",g="audioWorklet",S=T+" "+g,w="RecProc",M="MediaRecorder",y=M+".WebM.PCM",A=i.createScriptProcessor||i.createJavaScriptNode,k=$("ZGlf::。由于{1}内部1秒375次回调,在移动端可能会有性能问题导致回调丢失录音变短,PC端无影响,暂不建议开启{1}。",0,g),R=function(){o=l.isWorklet=!1,O(l),Q($("7TU0::Connect采用老的{1},",0,d)+U.get($(W[P]?"JwCL::但已设置{1}尝试启用{2}":"VGjB::可设置{1}尝试启用{2}",2),[T+"."+P+"=true",g])+p+k,3);var e=l._p=A.call(i,_,1,1);b(e),e.onaudioprocess=function(e){var t=e.inputBuffer.getChannelData(0);v(t,f)}},x=function(){u=l.isWebM=!1,D(l),o=l.isWorklet=!A||W[P];var t=window.AudioWorkletNode;if(o&&i[g]&&t){var n=function(){return o&&l._na},s=l._na=function(){""!==h&&(clearTimeout(h),h=setTimeout(function(){h=0,n()&&(Q($("MxX1::{1}未返回任何音频,恢复使用{2}",0,g,d),3),A&&R())},500))},r=function(){if(n()){var e=l._n=new t(i,w,{processorOptions:{bufferSize:_}});b(e),e.port.onmessage=function(e){h&&(clearTimeout(h),h=""),n()?v(e.data.val,f):o||Q($("XUap::{1}多余回调",0,g),3)},Q($("yOta::Connect采用{1},设置{2}可恢复老式{3}",0,g,T+"."+P+"=false",d)+p+k,3)}},e=function(){if(n())if(i[w])r();else{var e,t,a=(t="class "+w+" extends AudioWorkletProcessor{",t+="constructor "+(e=function(e){return e.toString().replace(/^function|DEL_/g,"").replace(/\$RA/g,S)})(function(e){DEL_super(e);var t=this,a=e.processorOptions.bufferSize;t.bufferSize=a,t.buffer=new Float32Array(2*a),t.pos=0,t.port.onmessage=function(e){e.data.kill&&(t.kill=!0,$C.log("$RA kill call"))},$C.log("$RA .ctor call",e)}),t+="process "+e(function(e,t,a){var n=this,s=n.bufferSize,r=n.buffer,i=n.pos;if((e=(e[0]||[])[0]||[]).length){r.set(e,i);var o=~~((i+=e.length)/s)*s;if(o){this.port.postMessage({val:r.slice(0,o)});var _=r.subarray(o,i);(r=new Float32Array(2*s)).set(_),i=_.length,n.buffer=r}n.pos=i}return!n.kill}),t=(t+='}try{registerProcessor("'+w+'", '+w+')}catch(e){$C.error("'+S+' Reg Error",e)}').replace(/\$C\./g,"console."),"data:text/javascript;base64,"+btoa(unescape(encodeURIComponent(t))));i[g].addModule(a).then(function(e){n()&&(i[w]=1,r(),h&&s())})[E](function(e){Q(g+".addModule Error",1,e),n()&&R()})}};C(i,function(){return n()},e,e)}else R()};!function(){var e=window[M],t="ondataavailable",a="audio/webm; codecs=pcm";u=l.isWebM=W[L];var n=e&&t in e.prototype&&e.isTypeSupported(a);if(p=n?"":$("VwPd::(此浏览器不支持{1})",0,y),!u||!n)return x();var s=function(){return u&&l._ra};l._ra=function(){""!==h&&(clearTimeout(h),h=setTimeout(function(){s()&&(Q($("vHnb::{1}未返回任何音频,降级使用{2}",0,M,g),3),x())},500))};var r=Object.assign({mimeType:a},W.ConnectWebMOptions),i=l._r=new e(l,r),o=l._rd={};i[t]=function(e){var t=new FileReader;t.onloadend=function(){if(s()){var e=X(new Uint8Array(t.result),o);if(!e)return;if(-1==e)return void x();h&&(clearTimeout(h),h=""),v(e,o.webmSR)}else u||Q($("O9P7::{1}多余回调",0,M),3)},t.readAsArrayBuffer(e.data)};try{i.start(~~(_/48)),Q($("LMEm::Connect采用{1},设置{2}可恢复使用{3}或老式{4}",0,y,T+"."+L+"=false",g,d))}catch(e){Q("mr start err",1,e),x()}}()},r=function(e){e._na&&e._na(),e._ra&&e._ra()},O=function(e){e._na=null,e._n&&(e._n.port.postMessage({kill:!0}),e._n.disconnect(),e._n=null)},D=function(e){if(e._ra=null,e._r){try{e._r.stop()}catch(e){Q("mr stop err",1,e)}e._r=null}},F=function(e){var t=(e=e||W)==W,a=e.Stream;a&&(a._m&&(a._m.disconnect(),a._m=null),!a._RC&&a._c&&W.CloseNewCtx(a._c),a._RC=null,a._c=null,a._d&&(n(a._d.stream),a._d=null),a._p&&(a._p.disconnect(),a._p.onaudioprocess=a._p=null),O(a),D(a),t&&n(a)),e.Stream=0},n=W.StopS_=function(e){for(var t=j(e),a=0;a<t.length;a++){var n=t[a];n.stop&&n.stop()}e.stop&&e.stop()},j=function(e){var t=0,a=0,n=[];e.getAudioTracks&&(t=e.getAudioTracks(),a=e.getVideoTracks()),t||(t=e.audioTracks,a=e.videoTracks);for(var s=0,r=t?t.length:0;s<r;s++)n.push(t[s]);for(var s=0,r=a?a.length:0;s<r;s++)n.push(a[s]);return n};W.SampleData=function(e,t,a,n,s){var r="SampleData";n||(n={});var i=n.index||0,o=n.offset||0,_=n.raisePrev||0,l=n.filter;if(l&&l.fn&&(l.sr&&l.sr!=t||l.srn&&l.srn!=a)&&(l=null,Q($("d48C::{1}的filter采样率变了,重设滤波",0,r),3)),!l)if(a<=t){var f=3*t/4<a?0:a/2*3/4;l={fn:f?W.IIRFilter(!0,t,f):0}}else{var f=3*a/4<t?0:t/2*3/4;l={fn:f?W.IIRFilter(!0,a,f):0}}l.sr=t,l.srn=a;var c=l.fn,u=n.frameNext||[];s||(s={});var h=s.frameSize||1;s.frameType&&(h="mp3"==s.frameType?1152:1);var b=s._sum,p=0,m=e.length;m+1<i&&Q($("tlbC::{1}似乎传入了未重置chunk {2}",0,r,i+">"+m),3);for(var v=0,d=i;d<m;d++)v+=e[d].length;var g=t/a;if(1<g)v=Math.max(0,v-Math.floor(o)),v=Math.floor(v/g);else if(g<1){var S=1/g;v=Math.floor(v*S)}v+=u.length;for(var w=new Int16Array(v),M=0,d=0;d<u.length;d++)w[M]=u[d],M++;for(;i<m;i++){var y=e[i],A=y instanceof Float32Array,d=o,k=y.length,R=c&&c.Embed,x=0,B=0,T=0,E=0;if(g<1){for(var C=M+d,I=_,L=0;L<k;L++){var P=y[L];A&&(P=(P=Math.max(-1,Math.min(1,P)))<0?32768*P:32767*P);var H=Math.floor(C);C+=S;for(var O=Math.floor(C),N=(P-I)/(O-H),V=1;H<O;H++,V++){var D=Math.floor(I+V*N);R?(T=D,E=R.b0*T+R.b1*R.x1+R.b0*R.x2-R.a1*R.y1-R.a2*R.y2,R.x2=R.x1,R.x1=T,R.y2=R.y1,R.y1=E,D=E):D=c?c(D):D,32767<D?D=32767:D<-32768&&(D=-32768),b&&(p+=Math.abs(D)),w[H]=D,M++}I=_=P,d+=S}o=d%1}else{for(var L=0,F=0;L<k;L++,F++){if(F<k){var P=y[F];A&&(P=(P=Math.max(-1,Math.min(1,P)))<0?32768*P:32767*P),R?(T=P,E=R.b0*T+R.b1*R.x1+R.b0*R.x2-R.a1*R.y1-R.a2*R.y2,R.x2=R.x1,R.x1=T,R.y2=R.y1,R.y1=E):E=c?c(P):P}if(x=B,B=E,0!=F){var j=Math.floor(d);if(L==j){var X=Math.ceil(d),Y=d-j,z=x,q=X<k?B:z,G=z+(q-z)*Y;32767<G?G=32767:G<-32768&&(G=-32768),b&&(p+=Math.abs(G)),w[M]=G,M++,d+=g}}else L--}o=Math.max(0,d-k)}}g<1&&M+1==v&&(v--,w=new Int16Array(w.buffer.slice(0,2*v))),M-1!=v&&M!=v&&Q(r+" idx:"+M+" != size:"+v,3),u=null;var U=v%h;if(0<U){var K=2*(v-U);u=new Int16Array(w.buffer.slice(K)),w=new Int16Array(w.buffer.slice(0,K))}var Z={index:i,offset:o,raisePrev:_,filter:l,frameNext:u,sampleRate:a,data:w};return b&&(Z._sum=p),Z},W.IIRFilter=function(e,t,a){var n=2*Math.PI*a/t,s=Math.sin(n),r=Math.cos(n),i=s/2,o=1+i,_=-2*r/o,l=(1-i)/o;if(e)var f=(1-r)/2/o,c=(1-r)/o;else var f=(1+r)/2/o,c=-(1+r)/o;var u=0,h=0,b=0,p=0,m=0,v=function(e){return b=f*e+c*u+f*h-_*p-l*m,h=u,u=e,m=p,p=b};return v.Embed={x1:0,x2:0,y1:0,y2:0,b0:f,b1:c,a1:_,a2:l},v},W.PowerLevel=function(e,t){var a=e/t||0;return a<1251?Math.round(a/1250*10):Math.round(Math.min(100,Math.max(0,100*(1+Math.log(a/1e4)/Math.log(10)))))},W.PowerDBFS=function(e){var t=Math.max(.1,e||0);return t=Math.min(t,32767),t=20*Math.log(t/32767)/Math.log(10),Math.max(-100,Math.round(t))},W.CLog=function(e,t){if("object"==typeof console){var a=new Date,n=("0"+a.getMinutes()).substr(-2)+":"+("0"+a.getSeconds()).substr(-2)+"."+("00"+a.getMilliseconds()).substr(-3),s=this&&this.envIn&&this.envCheck&&this.id,r=["["+n+" "+T+(s?":"+s:"")+"]"+e],i=arguments,o=W.CLog,_=2,l=o.log||console.log;for(f(t)?l=1==t?o.error||console.error:3==t?o.warn||console.warn:l:_=1;_<i.length;_++)r.push(i[_]);c?l&&l("[IsLoser]"+r[0],1<r.length?r:""):l.apply(console,r)}};var Q=function(){W.CLog.apply(this,arguments)},c=!0;try{c=!console.log.apply}catch(e){}var o=0;function _(e){var t=this;t.id=++o,l();var a={type:"mp3",onProcess:A};for(var n in e)a[n]=e[n];var s=(t.set=a)[i],r=a[V];(s&&!f(s)||r&&!f(r))&&t.CLog($.G("IllegalArgs-1",[$("VtS4::{1}和{2}必须是数值",0,V,i)]),1,e),a[i]=+s||16,a[V]=+r||16e3,t.state=0,t._S=9,t.Sync={O:9,C:9}}W.Sync={O:9,C:9},W.prototype=_.prototype={CLog:Q,_streamStore:function(){return this.set.sourceStream?this:W},_streamGet:function(){return this._streamStore().Stream},_streamCtx:function(){var e=this._streamGet();return e&&e._c},open:function(e,a){var _=this,l=_.set,n=_._streamStore(),s=0;e=e||A;var r=function(e,t){t=!!t,_.CLog($("5tWi::录音open失败:")+e+",isUserNotAllow:"+t,1),s&&W.CloseNewCtx(s),a&&a(e,t)};_._streamTag=x;var i=function(){_.CLog("open ok, id:"+_.id+" stream:"+_._streamTag),e(),_._SO=0},o=n.Sync,f=++o.O,c=o.C;_._O=_._O_=f,_._SO=_._S;if(y){var t=_.envCheck({envName:"H5",canProcess:!0});if(t)r($("A5bm::不能录音:")+t);else{var u,h=function(){(u=l.runningContext)||(u=s=W.GetContext(!0))};if(l.sourceStream){if(_._streamTag="set.sourceStream",!W.GetContext())return void r($("1iU7::不支持此浏览器从流中获取录音"));h(),F(n);var b=_.Stream=l.sourceStream;b._c=u,b._RC=l.runningContext,b._call={};try{H(n)}catch(e){return F(n),void r($("BTW2::从流中打开录音失败:")+e.message)}i()}else{var p=function(e,t){try{window.top.a}catch(e){return void r($("Nclz::无权录音(跨域,请尝试给iframe添加麦克风访问策略,如{1})",0,'allow="camera;microphone"'))}m(1,e)&&(/Found/i.test(e)?r(t+$("jBa9::,无可用麦克风")):r(t))},m=function(e,t){if(/Permission|Allow/i.test(t))e&&r($("gyO5::用户拒绝了录音权限"),!0);else{if(!1!==window.isSecureContext)return 1;e&&r($("oWNo::浏览器禁止不安全页面录音,可开启https解决"))}};if(W.IsOpen())i();else if(W.Support()){h();var v,d,g=function(t){setTimeout(function(){t._call={};var e=W.Stream;e&&(F(),t._call=e._call),(W.Stream=t)._c=u,t._RC=l.runningContext,function(){if(c!=o.C||!_._O){var e=$("dFm8::open被取消");return f==o.O?_.close():e=$("VtJO::open被中断"),r(e),!0}}()||(W.IsOpen()?(e&&_.CLog($("upb8::发现同时多次调用open"),1),H(n),i()):r($("Q1GA::录音功能无效:无音频流")))},100)},S=function(e){var t=e.name||e.message||e.code+":"+e,a="";1==w&&m(0,t)&&(a=$("KxE2::,将尝试禁用回声消除后重试"));var n=$("xEQR::请求录音权限错误"),s=$("bDOG::无法录音:");_.CLog(n+a+"|"+e,a||d?3:1,e),a?(v=t,d=e,M(1)):d?(_.CLog(n+"|"+d,1,d),p(v,s+d)):p(t,s+e)},w=0,M=function(e){w++;var t="audioTrackSet",a="autoGainControl",n="echoCancellation",s="noiseSuppression",r=JSON.parse(B(l[t]||!0));_.CLog("open... "+w+" "+t+":"+B(r)),e&&("object"!=typeof r&&(r={}),r[a]=!1,r[n]=!1,r[s]=!1),r[V]&&_.CLog($("IjL3::注意:已配置{1}参数,可能会出现浏览器不能正确选用麦克风、移动端无法启用回声消除等现象",0,t+"."+V),3);var i={audio:r,video:l.videoTrackSet||!1};try{var o=W.Scope[x](i,g,S)}catch(e){_.CLog(x,3,e),i={audio:!0,video:!1},o=W.Scope[x](i,g,S)}_.CLog(x+"("+B(i)+") "+I(u)+$("RiWe::,未配置 {1} 时浏览器可能会自动启用回声消除,移动端未禁用回声消除时可能会降低系统播放音量(关闭录音后可恢复)和仅提供16k采样率的音频流(不需要回声消除时可明确配置成禁用来获得48k高音质的流),请参阅文档中{2}配置",0,"audioTrackSet:{echoCancellation,noiseSuppression,autoGainControl}",t)+"("+R+") LM:"+k+" UA:"+navigator.userAgent),o&&o.then&&o.then(g)[E](S)};M()}else p("",$("COxc::此浏览器不支持录音"))}}}else r($.G("NonBrowser-1",["open"])+$("EMJq::,可尝试使用RecordApp解决方案")+"("+R+"/tree/master/app-support-sample)")},close:function(e){e=e||A;var t=this,a=t._streamStore();t._stop();var n=" stream:"+t._streamTag,s=a.Sync;if(t._O=0,t._O_!=s.O)return t.CLog($("hWVz::close被忽略(因为同时open了多个rec,只有最后一个会真正close)")+n,3),void e();s.C++,F(a),t.CLog("close,"+n),e()},mock:function(e,t){var a=this;return a._stop(),a.isMock=1,a.mockEnvInfo=null,a.buffers=[e],a.recSize=e.length,a._setSrcSR(t),a._streamTag="mock",a},_setSrcSR:function(e){var t=this.set,a=t[V];e<a?t[V]=e:a=0,this[N]=e,this.CLog(N+": "+e+" set."+V+": "+t[V]+(a?" "+$("UHvm::忽略")+": "+a:""),a?3:0)},envCheck:function(e){var t,a=this.set,n="CPU_BE";if(t||W[n]||"function"!=typeof Int8Array||new Int8Array(new Int32Array([1]).buffer)[0]||(l(n),t=$("Essp::不支持{1}架构",0,n)),!t){var s=a.type,r=this[s+"_envCheck"];a.takeoffEncodeChunk&&(r?e.canProcess||(t=$("7uMV::{1}环境不支持实时处理",0,e.envName)):t=$("2XBl::{1}类型不支持设置takeoffEncodeChunk",0,s)+(this[s]?"":$("LG7e::(未加载编码器)"))),!t&&r&&(t=this[s+"_envCheck"](e,a))}return t||""},envStart:function(e,t){var a=this,n=a.set;if(a.isMock=e?1:0,a.mockEnvInfo=e,a.buffers=[],a.recSize=0,e&&(a._streamTag="env$"+e.envName),a.state=1,a.envInLast=0,a.envInFirst=0,a.envInFix=0,a.envInFixTs=[],a._setSrcSR(t),a.engineCtx=0,a[n.type+"_start"]){var s=a.engineCtx=a[n.type+"_start"](n);s&&(s.pcmDatas=[],s.pcmSize=0)}},envResume:function(){this.envInFixTs=[]},envIn:function(e,t){var s=this,r=s.set,i=s.engineCtx;if(1==s.state){var a=s[N],n=e.length,o=W.PowerLevel(t,n),_=s.buffers,l=_.length;_.push(e);var f=_,c=l,u=Date.now(),h=Math.round(n/a*1e3);s.envInLast=u,1==s.buffers.length&&(s.envInFirst=u-h);var b=s.envInFixTs;b.splice(0,0,{t:u,d:h});for(var p=u,m=0,v=0;v<b.length;v++){var d=b[v];if(3e3<u-d.t){b.length=v;break}p=d.t,m+=d.d}var g=b[1],S=u-p,w=S-m;if(S/3<w&&(g&&1e3<S||6<=b.length)){var M=u-g.t-h;if(h/5<M){var y=!r.disableEnvInFix;if(s.CLog("["+u+"]"+U.get($(y?"4Kfd::补偿{1}ms":"bM5i::未补偿{1}ms",1),[M]),3),s.envInFix+=M,y){var A=new Int16Array(M*a/1e3);n+=A.length,_.push(A)}}}var k=s.recSize,R=n,x=k+R;if(s.recSize=x,i){var B=W.SampleData(_,a,r[V],i.chunkInfo);i.chunkInfo=B,k=i.pcmSize,R=B.data.length,x=k+R,i.pcmSize=x,_=i.pcmDatas,l=_.length,_.push(B.data),a=B[V]}var T=Math.round(x/a*1e3),E=_.length,C=f.length,I=function(){for(var e=L?0:-R,t=null==_[0],a=l;a<E;a++){var n=_[a];null==n?t=1:(e+=n.length,i&&n.length&&s[r.type+"_encode"](i,n))}if(t&&i){var a=c;for(f[0]&&(a=0);a<C;a++)f[a]=null}t&&(e=L?R:0,_[0]=null),i?i.pcmSize+=e:s.recSize+=e},L=0,P="rec.set.onProcess";try{L=!0===(L=r.onProcess(_,o,T,a,l,I))}catch(e){console.error(P+$("gFUF::回调出错是不允许的,需保证不会抛异常"),e)}var H=Date.now()-u;if(10<H&&1e3<s.envInFirst-u&&s.CLog(P+$("2ghS::低性能,耗时{1}ms",0,H),3),L){for(var O=0,v=l;v<E;v++)null==_[v]?O=1:_[v]=new Int16Array(0);O?s.CLog($("ufqH::未进入异步前不能清除buffers"),3):i?i.pcmSize-=R:s.recSize-=R}else I()}else s.state||s.CLog("envIn at state=0",3)},start:function(){var t=this,e=1;if(t.set.sourceStream?t.Stream||(e=0):W.IsOpen()||(e=0),e){var a=t._streamCtx();if(t.CLog($("kLDN::start 开始录音,")+I(a)+" stream:"+t._streamTag),t._stop(),t.envStart(null,a[V]),t.state=3,t._SO&&t._SO+1!=t._S)t.CLog($("Bp2y::start被中断"),3);else{t._SO=0;var n=function(){3==t.state&&(t.state=1,t.resume())},s="AudioContext resume: ",r=t._streamGet();r._call[t.id]=function(){t.CLog(s+a.state+"|stream ok"),n()},C(a,function(e){return e&&t.CLog(s+"wait..."),3==t.state},function(e){e&&t.CLog(s+a.state),n()},function(e){t.CLog(s+a.state+$("upkE::,可能无法录音:")+e,1),n()})}}else t.CLog($("6WmN::start失败:未open"),1)},pause:function(){var e=this,t=e._streamGet();e.state&&(e.state=2,e.CLog("pause"),t&&delete t._call[e.id])},resume:function(){var a=this,t=a._streamGet(),n="resume(wait ctx)";if(3==a.state)a.CLog(n);else if(a.state){a.state=1,a.CLog("resume"),a.envResume(),t&&(t._call[a.id]=function(e,t){1==a.state&&a.envIn(e,t)},r(t));var s=a._streamCtx();s&&C(s,function(e){return e&&a.CLog(n+"..."),1==a.state},function(e){e&&a.CLog(n+s.state),r(t)},function(e){a.CLog(n+s.state+"[err]"+e,1)})}},_stop:function(e){var t=this,a=t.set;t.isMock||t._S++,t.state&&(t.pause(),t.state=0),!e&&t[a.type+"_stop"]&&(t[a.type+"_stop"](t.engineCtx),t.engineCtx=0)},stop:function(c,t,e){var u,h=this,b=h.set,a=h.envInLast-h.envInFirst,n=a&&h.buffers.length;h.CLog($("Xq4s::stop 和start时差:")+(a?a+"ms "+$("3CQP::补偿:")+h.envInFix+"ms envIn:"+n+" fps:"+(n/a*1e3).toFixed(1):"-")+" stream:"+h._streamTag+" ("+R+") LM:"+k);var p=function(){h._stop(),e&&h.close()},m=function(e){h.CLog($("u8JG::结束录音失败:")+e,1),t&&t(e),p()},s=function(e,t,a){var n="arraybuffer",s="dataType",r="DefaultDataType",i=h[s]||W[r]||"blob",o=s+"="+i,_=e instanceof ArrayBuffer,l=0,f=_?e.byteLength:e.size;if(i==n?_||(l=1):"blob"==i?"function"!=typeof Blob?l=$.G("NonBrowser-1",[o])+$("1skY::,请设置{1}",0,T+"."+r+'="'+n+'"'):(_&&(e=new Blob([e],{type:t})),e instanceof Blob||(l=1),t=e.type||t):l=$.G("NotSupport-1",[o]),h.CLog($("Wv7l::结束录音 编码花{1}ms 音频时长{2}ms 文件大小{3}b",0,Date.now()-u,a,f)+" "+o+","+t),l)m(1!=l?l:$("Vkbd::{1}编码器返回的不是{2}",0,b.type,i)+", "+o);else{if(b.takeoffEncodeChunk)h.CLog($("QWnr::启用takeoffEncodeChunk后stop返回的blob长度为0不提供音频数据"),3);else if(f<Math.max(50,a/5))return void m($("Sz2H::生成的{1}无效",0,b.type));c&&c(e,a,t),p()}};if(!h.isMock){var r=3==h.state;if(!h.state||r)return void m($("wf9t::未开始录音")+(r?$("Dl2c::,开始录音前无用户交互导致AudioContext未运行"):""))}h._stop(!0);var i=h.recSize;if(i)if(h[b.type]){if(h.isMock){var o=h.envCheck(h.mockEnvInfo||{envName:"mock",canProcess:!1});if(o)return void m($("AxOH::录音错误:")+o)}var _=h.engineCtx;if(h[b.type+"_complete"]&&_){var l=Math.round(_.pcmSize/b[V]*1e3);return u=Date.now(),void h[b.type+"_complete"](_,function(e,t){s(e,t,l)},m)}if(u=Date.now(),h.buffers[0]){var f=W.SampleData(h.buffers,h[N],b[V]);b[V]=f[V];var v=f.data,l=Math.round(v.length/b[V]*1e3);h.CLog($("CxeT::采样:{1} 花:{2}ms",0,i+"->"+v.length,Date.now()-u)),setTimeout(function(){u=Date.now(),h[b.type](v,function(e,t){s(e,t,l)},function(e){m(e)})})}else m($("xkKd::音频buffers被释放"))}else m($("xGuI::未加载{1}编码器,请尝试到{2}的src/engine内找到{1}的编码器并加载",0,b.type,T));else m($("Ltz3::未采集到录音"))}};var X=function(e,t){t.pos||(t.pos=[0],t.tracks={},t.bytes=[]);var a=t.tracks,n=[t.pos[0]],s=function(){t.pos[0]=n[0]},r=t.bytes.length,i=new Uint8Array(r+e.length);if(i.set(t.bytes),i.set(e,r),t.bytes=i,!t._ht){if(q(i,n),G(i,n),!Y(q(i,n),[24,83,128,103]))return;for(q(i,n);n[0]<i.length;){var o=q(i,n),_=G(i,n),l=[0],f=0;if(!_)return;if(Y(o,[22,84,174,107])){for(;l[0]<_.length;){var c=q(_,l),u=G(_,l),h=[0],b={channels:0,sampleRate:0};if(Y(c,[174]))for(;h[0]<u.length;){var p=q(u,h),m=G(u,h),v=[0];if(Y(p,[215])){var d=z(m);b.number=d,a[d]=b}else if(Y(p,[131])){var d=z(m);1==d?b.type="video":2==d?(b.type="audio",f||(t.track0=b),b.idx=f++):b.type="Type-"+d}else if(Y(p,[134])){for(var g="",S=0;S<m.length;S++)g+=String.fromCharCode(m[S]);b.codec=g}else if(Y(p,[225]))for(;v[0]<m.length;){var w=q(m,v),M=G(m,v);if(Y(w,[181])){var d=0,y=new Uint8Array(M.reverse()).buffer;4==M.length?d=new Float32Array(y)[0]:8==M.length?d=new Float64Array(y)[0]:Q("WebM Track !Float",1,M),b[V]=Math.round(d)}else Y(w,[98,100])?b.bitDepth=z(M):Y(w,[159])&&(b.channels=z(M))}}}t._ht=1,Q("WebM Tracks",a),s();break}}}var A=t.track0;if(A){var k=A[V];if(t.webmSR=k,16==A.bitDepth&&/FLOAT/i.test(A.codec)&&(A.bitDepth=32,Q("WebM 16->32 bit",3)),k<8e3||32!=A.bitDepth||A.channels<1||!/(\b|_)PCM\b/i.test(A.codec))return t.bytes=[],t.bad||Q("WebM Track Unexpected",3,t),-(t.bad=1);for(var R=[],x=0;n[0]<i.length;){var c=q(i,n),u=G(i,n);if(!u)break;if(Y(c,[163])){var B=15&u[0],b=a[B];if(!b)return Q("WebM !Track"+B,1,a),-1;if(0===b.idx){for(var T=new Uint8Array(u.length-4),S=4;S<u.length;S++)T[S-4]=u[S];R.push(T),x+=T.length}}s()}if(x){var E=new Uint8Array(i.length-t.pos[0]);E.set(i.subarray(t.pos[0])),t.bytes=E,t.pos[0]=0;for(var T=new Uint8Array(x),S=0,C=0;S<R.length;S++)T.set(R[S],C),C+=R[S].length;var y=new Float32Array(T.buffer);if(1<A.channels){for(var I=[],S=0;S<y.length;)I.push(y[S]),S+=A.channels;y=new Float32Array(I)}return y}}},Y=function(e,t){if(!e||e.length!=t.length)return!1;if(1==e.length)return e[0]==t[0];for(var a=0;a<e.length;a++)if(e[a]!=t[a])return!1;return!0},z=function(e){for(var t="",a=0;a<e.length;a++){var n=e[a];t+=(n<16?"0":"")+n.toString(16)}return parseInt(t,16)||0},q=function(e,t,a){var n=t[0];if(!(n>=e.length)){var s=e[n],r=("0000000"+s.toString(2)).substr(-8),i=/^(0*1)(\d*)$/.exec(r);if(i){var o=i[1].length,_=[];if(!(n+o>e.length)){for(var l=0;l<o;l++)_[l]=e[n],n++;return a&&(_[0]=parseInt(i[2]||"0",2)),t[0]=n,_}}}},G=function(e,t){var a=q(e,t,1);if(a){var n=z(a),s=t[0],r=[];if(n<2147483647){if(s+n>e.length)return;for(var i=0;i<n;i++)r[i]=e[s],s++}return t[0]=s,r}},U=W.i18n={lang:"zh-CN",alias:{"zh-CN":"zh","en-US":"en"},locales:{},data:{},put:function(e,t){var a=T+".i18n.put: ",n=e.overwrite;n=null==n||n;var s=e.lang;if(!(s=U.alias[s]||s))throw new Error(a+"set.lang?");var r=U.locales[s];r||(r={},U.locales[s]=r);for(var i,o=/^([\w\-]+):/,_=0;_<t.length;_++){var l=t[_];if(i=o.exec(l)){var f=i[1],l=l.substr(f.length+1);!n&&r[f]||(r[f]=l)}else Q(a+"'key:'? "+l,3,e)}},get:function(){return U.v_G.apply(null,arguments)},v_G:function(n,s,e){s=s||[],e=e||U.lang,e=U.alias[e]||e;var t=U.locales[e],r=t&&t[n]||"";return r||"zh"==e?(U.lastLang=e,"=Empty"==r?"":r.replace(/\{(\d+)(\!?)\}/g,function(e,t,a){return e=s[(t=+t||0)-1],(t<1||t>s.length)&&(e="{?}",Q("i18n["+n+"] no {"+t+"}: "+r,3)),a?"":e})):"en"==e?U.v_G(n,s,"zh"):U.v_G(n,s,"en")},$T:function(){return U.v_T.apply(null,arguments)},v_T:function(){for(var e,t=arguments,a="",n=[],s=0,r=T+".i18n.$T:",i=/^([\w\-]*):/,o=0;o<t.length;o++){var _=t[o];if(0==o){if(e=i.exec(_),!(a=e&&e[1]))throw new Error(r+"0 'key:'?");_=_.substr(a.length+1)}if(-1===s)n.push(_);else{if(s)throw new Error(r+" bad args");if(0===_)s=-1;else if(f(_)){if(_<1)throw new Error(r+" bad args");s=_}else{var l=1==o?"en":o?"":"zh";if((e=i.exec(_))&&(l=e[1]||l,_=_.substr(e[1].length+1)),!e||!l)throw new Error(r+o+" 'lang:'?");U.put({lang:l,overwrite:!1},[a+":"+_])}}}return a?0<s?a:U.v_G(a,n):""}},$=U.$T;$.G=U.get,$("NonBrowser-1::非浏览器环境,不支持{1}",1),$("IllegalArgs-1::参数错误:{1}",1),$("NeedImport-2::调用{1}需要先导入{2}",2),$("NotSupport-1::不支持:{1}",1),W.TrafficImgUrl="//ia.51.la/go1?id=20469973&pvFlag=1";var l=W.Traffic=function(e){if(y){e=e?"/"+T+"/Report/"+e:"";var t=W.TrafficImgUrl;if(t){var a=W.Traffic,n=/^(https?:..[^\/#]*\/?)[^#]*/i.exec(location.href)||[],s=n[1]||"http://file/",r=(n[0]||s)+e;if(0==t.indexOf("//")&&(t=/^https:/i.test(r)?"https:"+t:"http:"+t),e&&(t=t+"&cu="+encodeURIComponent(s+e)),!a[r]){a[r]=1;var i=new Image;i.src=t,Q("Traffic Analysis Image: "+(e||T+".TrafficImgUrl="+W.TrafficImgUrl))}}}};t&&(Q($("8HO5::覆盖导入{1}",0,T),1),t.Destroy());e[T]=W}(a,t),"function"==typeof define&&define.amd&&define(function(){return a.Recorder}),"object"==typeof module&&module.exports&&(module.exports=a.Recorder)}(),function(e){var t="object"==typeof window&&!!window.document,a=(t?window:Object).Recorder,n=a.i18n;!function(m,e,u,t){"use strict";var o="48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000",_="8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192, 224, 256, 320";m.prototype.enc_mp3={stable:!0,takeEC:"full",getTestMsg:function(){return u("Zm7L::采样率范围:{1};比特率范围:{2}(不同比特率支持的采样率范围不同,小于32kbps时采样率需小于32000)",0,o,_)}};var h,v=function(e){var t=e.bitRate,a=e.sampleRate,n=a;if(-1==(" "+_+",").indexOf(" "+t+",")&&m.CLog(u("eGB9::{1}不在mp3支持的取值范围:{2}",0,"bitRate="+t,_),3),-1==(" "+o+",").indexOf(" "+a+",")){for(var s=o.split(", "),r=[],i=0;i<s.length;i++)r.push({v:+s[i],s:Math.abs(s[i]-a)});r.sort(function(e,t){return e.s-t.s}),n=r[0].v,e.sampleRate=n,m.CLog(u("zLTa::sampleRate已更新为{1},因为{2}不在mp3支持的取值范围:{3}",0,n,a,o),3)}},n=function(){return u.G("NeedImport-2",["mp3.js","src/engine/mp3-engine.js"])},d=t&&"function"==typeof Worker;m.prototype.mp3=function(r,i,o){var e=this,_=e.set,l=r.length;if(m.lamejs){if(d){var t=e.mp3_start(_);if(t){if(t.isW)return e.mp3_encode(t,r),void e.mp3_complete(t,i,o,1);e.mp3_stop(t)}}v(_);var f=new m.lamejs.Mp3Encoder(1,_.sampleRate,_.bitRate),c=new Int8Array(5e5),u=0,h=0,b=0,p=function(){try{if(h<l)var e=f.encodeBuffer(r.subarray(h,h+57600));else{b=1;var e=f.flush()}}catch(e){if(console.error(e),!b)try{f.flush()}catch(e){console.error(e)}return void o("MP3 Encoder: "+e.message)}var t=e.length;if(0<t){if(u+t>c.length){var a=new Int8Array(c.length+Math.max(5e5,t));a.set(c.subarray(0,u)),c=a}c.set(e,u),u+=t}if(h<l)h+=57600,setTimeout(p);else{var n=[c.buffer.slice(0,u)],s=g.fn(n,u,l,_.sampleRate);S(s,_),i(n[0]||new ArrayBuffer(0),"audio/mp3")}};p()}else o(n())},m.BindDestroy("mp3Worker",function(){h&&(m.CLog("mp3Worker Destroy"),h.terminate(),h=null)}),m.prototype.mp3_envCheck=function(e,t){var a="";return t.takeoffEncodeChunk&&(p()||(a=u("yhUs::当前浏览器版本太低,无法实时处理"))),a||m.lamejs||(a=n()),a},m.prototype.mp3_start=function(e){return p(e)};var b={id:0},p=function(t,e){var f,a=function(e){var t=e.data,a=f.wkScope.wk_ctxs,n=f.wkScope.wk_lame,s=f.wkScope.wk_mp3TrimFix,r=a[t.id];if("init"==t.action)a[t.id]={sampleRate:t.sampleRate,bitRate:t.bitRate,takeoff:t.takeoff,pcmSize:0,memory:new Int8Array(5e5),mOffset:0,encObj:new n.Mp3Encoder(1,t.sampleRate,t.bitRate)};else if(!r)return;var i=function(e){var t=e.length;if(r.mOffset+t>r.memory.length){var a=new Int8Array(r.memory.length+Math.max(5e5,t));a.set(r.memory.subarray(0,r.mOffset)),r.memory=a}r.memory.set(e,r.mOffset),r.mOffset+=t};switch(t.action){case"stop":if(!r.isCp)try{r.encObj.flush()}catch(e){console.error(e)}r.encObj=null,delete a[t.id];break;case"encode":if(r.isCp)break;r.pcmSize+=t.pcm.length;try{var o=r.encObj.encodeBuffer(t.pcm)}catch(e){r.err=e,console.error(e)}o&&0<o.length&&(r.takeoff?c.onmessage({action:"takeoff",id:t.id,chunk:o}):i(o));break;case"complete":r.isCp=1;try{var o=r.encObj.flush()}catch(e){r.err=e,console.error(e)}if(o&&0<o.length&&(r.takeoff?c.onmessage({action:"takeoff",id:t.id,chunk:o}):i(o)),r.err){c.onmessage({action:t.action,id:t.id,err:"MP3 Encoder: "+r.err.message});break}var _=[r.memory.buffer.slice(0,r.mOffset)],l=s.fn(_,r.mOffset,r.pcmSize,r.sampleRate);c.onmessage({action:t.action,id:t.id,blob:_[0]||new ArrayBuffer(0),meta:l})}},n=function(n){c.onmessage=function(e){var t=e;n&&(t=e.data);var a=b[t.id];a&&("takeoff"==t.action?a.set.takeoffEncodeChunk(new Uint8Array(t.chunk.buffer)):(a.call&&a.call(t),a.call=null))}},s=function(){var e={worker:c,set:t};return t?(e.id=++b.id,b[e.id]=e,v(t),c.postMessage({action:"init",id:e.id,sampleRate:t.sampleRate,bitRate:t.bitRate,takeoff:!!t.takeoffEncodeChunk,x:new Int16Array(5)})):c.postMessage({x:new Int16Array(5)}),e},c=h;if(e||!d)return m.CLog(u("k9PT::当前环境不支持Web Worker,mp3实时编码器运行在主线程中"),3),c={postMessage:function(e){a({data:e})}},f={wkScope:{wk_ctxs:{},wk_lame:m.lamejs,wk_mp3TrimFix:g}},n(),s();try{if(!c){var r=(a+"").replace(/[\w\$]+\.onmessage/g,"self.postMessage"),i=");wk_lame();self.onmessage="+(r=r.replace(/[\w\$]+\.wkScope/g,"wkScope"));i+=";var wkScope={ wk_ctxs:{},wk_lame:wk_lame",i+=",wk_mp3TrimFix:{rm:"+g.rm+",fn:"+g.fn+"} }";var o=m.lamejs.toString(),_=(window.URL||webkitURL).createObjectURL(new Blob(["var wk_lame=(",o,i],{type:"text/javascript"}));c=new Worker(_),setTimeout(function(){(window.URL||webkitURL).revokeObjectURL(_)},1e4),n(1)}var l=s();return l.isW=1,h=c,l}catch(e){return c&&c.terminate(),console.error(e),p(t,1)}};m.prototype.mp3_stop=function(e){if(e&&e.worker){e.worker.postMessage({action:"stop",id:e.id}),e.worker=null,delete b[e.id];var t=-1;for(var a in b)t++;t&&m.CLog(u("fT6M::mp3 worker剩{1}个未stop",0,t),3)}},m.prototype.mp3_encode=function(e,t){e&&e.worker&&e.worker.postMessage({action:"encode",id:e.id,pcm:t})},m.prototype.mp3_complete=function(t,a,n,s){var r=this;t&&t.worker?(t.call=function(e){s&&r.mp3_stop(t),e.err?n(e.err):(S(e.meta,t.set),a(e.blob,"audio/mp3"))},t.worker.postMessage({action:"complete",id:t.id})):n(u("mPxH::mp3编码器未start"))},m.mp3ReadMeta=function(e,t){var a="undefined"!=typeof window&&window.parseInt||"undefined"!=typeof self&&self.parseInt||parseInt,n=new Uint8Array(e[0]||[]);if(n.length<4)return null;var s=function(e,t){return("0000000"+((t||n)[e]||0).toString(2)).substr(-8)},r=s(0)+s(1),i=s(2)+s(3);if(!/^1{11}/.test(r))return null;var o={"00":2.5,10:2,11:1}[r.substr(11,2)],_={"01":3}[r.substr(13,2)],l={1:[44100,48e3,32e3],2:[22050,24e3,16e3],2.5:[11025,12e3,8e3]}[o];l&&(l=l[a(i.substr(4,2),2)]);var f=[[0,8,16,24,32,40,48,56,64,80,96,112,128,144,160],[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320]][1==o?1:0][a(i.substr(0,4),2)];if(!(o&&_&&f&&l))return null;for(var c=Math.round(8*t/f),u=1==_?384:2==_?1152:1==o?1152:576,h=u/l*1e3,b=Math.floor(u*f/8/l*1e3),p=0,m=0,v=0;v<e.length;v++){var d=e[v];if(m+=d.byteLength,b+3<=m){var g=new Uint8Array(d),S=d.byteLength-(m-(b+3)+1),w=s(S,g);p="1"==w.charAt(6);break}}return p&&b++,{version:o,layer:_,sampleRate:l,bitRate:f,duration:c,size:t,hasPadding:p,frameSize:b,frameDurationFloat:h}};var g={rm:m.mp3ReadMeta,fn:function(e,t,a,n){var s=this.rm(e,t);if(!s)return{size:t,err:"mp3 unknown format"};var r=Math.round(a/n*1e3),i=Math.floor((s.duration-r)/s.frameDurationFloat);if(0<i){var o=i*s.frameSize-(s.hasPadding?1:0);t-=o;for(var _=0,l=[],f=0;f<e.length;f++){var c=e[f];if(o<=0)break;o>=c.byteLength?(o-=c.byteLength,l.push(c),e.splice(f,1),f--):(e[f]=c.slice(o),_=c,o=0)}var u=this.rm(e,t);if(!u){_&&(e[0]=_);for(var f=0;f<l.length;f++)e.splice(f,0,l[f]);s.err="mp3 fix error: 已还原,错误原因不明"}var h=s.trimFix={};h.remove=i,h.removeDuration=Math.round(i*s.frameDurationFloat),h.duration=Math.round(8*t/s.bitRate)}return s}},S=function(e,t){var a="MP3 Info: ";(e.sampleRate&&e.sampleRate!=t.sampleRate||e.bitRate&&e.bitRate!=t.bitRate)&&(m.CLog(a+u("uY9i::和设置的不匹配{1},已更新成{2}",0,"set:"+t.bitRate+"kbps "+t.sampleRate+"hz","set:"+e.bitRate+"kbps "+e.sampleRate+"hz"),3,t),t.sampleRate=e.sampleRate,t.bitRate=e.bitRate);var n=e.trimFix;n?(a+=u("iMSm::Fix移除{1}帧",0,n.remove)+" "+n.removeDuration+"ms -> "+n.duration+"ms",2<n.remove&&(e.err=(e.err?e.err+", ":"")+u("b9zm::移除帧数过多"))):a+=(e.duration||"-")+"ms",e.err?m.CLog(a,e.size?1:0,e.err,e):m.CLog(a,e)}}(a,0,n.$T,t)}(),function(e){"use strict";function t(){var d=function(e){return Math.log(e)/Math.log(10)},me=function(e){throw new Error("abort("+e+")")};function w(e){return new Int8Array(e)}function s(e){return new Int16Array(e)}function ve(e){return new Int32Array(e)}function de(e){return new Float32Array(e)}function n(e){return new Float64Array(e)}function ge(e){if(1==e.length)return de(e[0]);var t=e[0];e=e.slice(1);for(var a=[],n=0;n<t;n++)a.push(ge(e));return a}function S(e){if(1==e.length)return ve(e[0]);var t=e[0];e=e.slice(1);for(var a=[],n=0;n<t;n++)a.push(S(e));return a}function M(e){if(1==e.length)return s(e[0]);var t=e[0];e=e.slice(1);for(var a=[],n=0;n<t;n++)a.push(M(e));return a}function E(e){if(1==e.length)return new Array(e[0]);var t=e[0];e=e.slice(1);for(var a=[],n=0;n<t;n++)a.push(E(e));return a}var Se={fill:function(e,t,a,n){if(2==arguments.length)for(var s=0;s<e.length;s++)e[s]=t;else for(var s=t;s<a;s++)e[s]=n}},I={arraycopy:function(e,t,a,n,s){for(var r=t+s;t<r;)a[n++]=e[t++]}},V={};function we(e){this.ordinal=e}V.SQRT2=1.4142135623730951,V.FAST_LOG10=function(e){return d(e)},V.FAST_LOG10_X=function(e,t){return d(e)*t},we.short_block_allowed=new we(0),we.short_block_coupled=new we(1),we.short_block_dispensed=new we(2),we.short_block_forced=new we(3);var D={};function Me(e){this.ordinal=e}function ye(e){var t=e;this.ordinal=function(){return t}}function A(){var w=null;function v(e){this.bits=0|e}this.qupvt=null,this.setModules=function(e){this.qupvt=e,w=e};var s=[[0,0],[0,0],[0,0],[0,0],[0,0],[0,1],[1,1],[1,1],[1,2],[2,2],[2,3],[2,3],[3,4],[3,4],[3,4],[4,5],[4,5],[4,6],[5,6],[5,6],[5,7],[6,7],[6,7]];function M(e,t,a,n,s,r){var i=.5946/t;for(e>>=1;0!=e--;)s[r++]=i>a[n++]?0:1,s[r++]=i>a[n++]?0:1}function y(e,t,a,n,s,r){var i=(e>>=1)%2;for(e>>=1;0!=e--;){var o,_,l,f,c,u,h,b;o=a[n++]*t,_=a[n++]*t,c=0|o,l=a[n++]*t,u=0|_,f=a[n++]*t,h=0|l,o+=w.adj43[c],b=0|f,_+=w.adj43[u],s[r++]=0|o,l+=w.adj43[h],s[r++]=0|_,f+=w.adj43[b],s[r++]=0|l,s[r++]=0|f}0!=i&&(o=a[n++]*t,_=a[n++]*t,c=0|o,u=0|_,o+=w.adj43[c],_+=w.adj43[u],s[r++]=0|o,s[r++]=0|_)}var o=[1,2,5,7,7,10,10,13,13,13,13,13,13,13,13];function d(e,t,a,n){var s=function(e,t,a){var n=0,s=0;do{var r=e[t++],i=e[t++];n<r&&(n=r),s<i&&(s=i)}while(t<a);return n<s&&(n=s),n}(e,t,a);switch(s){case 0:return s;case 1:return function(e,t,a,n){var s=0,r=k.ht[1].hlen;do{var i=2*e[t+0]+e[t+1];t+=2,s+=r[i]}while(t<a);return n.bits+=s,1}(e,t,a,n);case 2:case 3:return function(e,t,a,n,s){var r,i,o=0,_=k.ht[n].xlen;i=2==n?k.table23:k.table56;do{var l=e[t+0]*_+e[t+1];t+=2,o+=i[l]}while(t<a);return(r=65535&o)<(o>>=16)&&(o=r,n++),s.bits+=o,n}(e,t,a,o[s-1],n);case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:return function(e,t,a,n,s){var r=0,i=0,o=0,_=k.ht[n].xlen,l=k.ht[n].hlen,f=k.ht[n+1].hlen,c=k.ht[n+2].hlen;do{var u=e[t+0]*_+e[t+1];t+=2,r+=l[u],i+=f[u],o+=c[u]}while(t<a);var h=n;return i<r&&(r=i,h++),o<r&&(r=o,h=n+2),s.bits+=r,h}(e,t,a,o[s-1],n);default:var r,i;for(T.IXMAX_VAL<s&&me(),s-=15,r=24;r<32&&!(k.ht[r].linmax>=s);r++);for(i=r-8;i<24&&!(k.ht[i].linmax>=s);i++);return function(e,t,a,n,s,r){var i,o=65536*k.ht[n].xlen+k.ht[s].xlen,_=0;do{var l=e[t++],f=e[t++];0!=l&&(14<l&&(l=15,_+=o),l*=16),0!=f&&(14<f&&(f=15,_+=o),l+=f),_+=k.largetbl[l]}while(t<a);return(i=65535&_)<(_>>=16)&&(_=i,n=s),r.bits+=_,n}(e,t,a,i,r,n)}}function h(e,t,a,n,s,r,i,o){for(var _=t.big_values,l=2;l<Ae.SBMAX_l+1;l++){var f=e.scalefac_band.l[l];if(_<=f)break;var c=s[l-2]+t.count1bits;if(a.part2_3_length<=c)break;var u=new v(c),h=d(n,f,_,u);c=u.bits,a.part2_3_length<=c||(a.assign(t),a.part2_3_length=c,a.region0_count=r[l-2],a.region1_count=l-2-r[l-2],a.table_select[0]=i[l-2],a.table_select[1]=o[l-2],a.table_select[2]=h)}}this.noquant_count_bits=function(e,t,a){var n=t.l3_enc,s=Math.min(576,t.max_nonzero_coeff+2>>1<<1);for(null!=a&&(a.sfb_count1=0);1<s&&0==(n[s-1]|n[s-2]);s-=2);t.count1=s;for(var r=0,i=0;3<s;s-=4){var o;if(1<(2147483647&(n[s-1]|n[s-2]|n[s-3]|n[s-4])))break;o=2*(2*(2*n[s-4]+n[s-3])+n[s-2])+n[s-1],r+=k.t32l[o],i+=k.t33l[o]}var _=r;if(t.count1table_select=0,i<r&&(_=i,t.count1table_select=1),t.count1bits=_,0==(t.big_values=s))return _;if(t.block_type==Ae.SHORT_TYPE)(r=3*e.scalefac_band.s[3])>t.big_values&&(r=t.big_values),i=t.big_values;else if(t.block_type==Ae.NORM_TYPE){if(r=t.region0_count=e.bv_scf[s-2],i=t.region1_count=e.bv_scf[s-1],i=e.scalefac_band.l[r+i+2],r=e.scalefac_band.l[r+1],i<s){var l=new v(_);t.table_select[2]=d(n,i,s,l),_=l.bits}}else t.region0_count=7,t.region1_count=Ae.SBMAX_l-1-7-1,r=e.scalefac_band.l[8],(i=s)<r&&(r=i);if(r=Math.min(r,s),i=Math.min(i,s),0<r){var l=new v(_);t.table_select[0]=d(n,0,r,l),_=l.bits}if(r<i){var l=new v(_);t.table_select[1]=d(n,r,i,l),_=l.bits}if(2==e.use_best_huffman&&me(),null!=a&&t.block_type==Ae.NORM_TYPE){for(var f=0;e.scalefac_band.l[f]<t.big_values;)f++;a.sfb_count1=f}return _},this.count_bits=function(e,t,a,n){var s=a.l3_enc,r=T.IXMAX_VAL/w.IPOW20(a.global_gain);return a.xrpow_max>r?T.LARGE_BITS:(function(e,t,a,n,s){var r,i,o,_=0,l=0,f=0,c=0,u=t,h=0,b=u,p=0,m=e,v=0;for(o=null!=s&&n.global_gain==s.global_gain,i=n.block_type==Ae.SHORT_TYPE?38:21,r=0;r<=i;r++){var d=-1;if((o||n.block_type==Ae.NORM_TYPE)&&(d=n.global_gain-(n.scalefac[r]+(0!=n.preflag?w.pretab[r]:0)<<n.scalefac_scale+1)-8*n.subblock_gain[n.window[r]]),o&&s.step[r]==d)0!=l&&(y(l,a,m,v,b,p),l=0),0!=f&&me();else{var g,S=n.width[r];if(_+n.width[r]>n.max_nonzero_coeff&&(g=n.max_nonzero_coeff-_+1,Se.fill(t,n.max_nonzero_coeff,576,0),(S=g)<0&&(S=0),r=i+1),0==l&&0==f&&(b=u,p=h,m=e,v=c),null!=s&&0<s.sfb_count1&&r>=s.sfb_count1&&0<s.step[r]&&d>=s.step[r]?(0!=l&&(y(l,a,m,v,b,p),l=0,b=u,p=h,m=e,v=c),f+=S):(0!=f&&(M(f,a,m,v,b,p),f=0,b=u,p=h,m=e,v=c),l+=S),S<=0){0!=f&&me(),0!=l&&me();break}}r<=i&&(h+=n.width[r],c+=n.width[r],_+=n.width[r])}0!=l&&(y(l,a,m,v,b,p),l=0),0!=f&&me()}(t,s,w.IPOW20(a.global_gain),a,n),0!=(2&e.substep_shaping)&&me(),this.noquant_count_bits(e,a,n))},this.best_huffman_divide=function(e,t){var a=new B,n=t.l3_enc,s=ve(23),r=ve(23),i=ve(23),o=ve(23);if(t.block_type!=Ae.SHORT_TYPE||1!=e.mode_gr){a.assign(t),t.block_type==Ae.NORM_TYPE&&(function(e,t,a,n,s,r,i){for(var o=t.big_values,_=0;_<=22;_++)n[_]=T.LARGE_BITS;for(var _=0;_<16;_++){var l=e.scalefac_band.l[_+1];if(o<=l)break;var f=0,c=new v(f),u=d(a,0,l,c);f=c.bits;for(var h=0;h<8;h++){var b=e.scalefac_band.l[_+h+2];if(o<=b)break;var p=f;c=new v(p);var m=d(a,l,b,c);p=c.bits,n[_+h]>p&&(n[_+h]=p,s[_+h]=_,r[_+h]=u,i[_+h]=m)}}}(e,t,n,s,r,i,o),h(e,a,t,n,s,r,i,o));var _=a.big_values;if(!(0==_||1<(n[_-2]|n[_-1])||576<(_=t.count1+2))){a.assign(t),a.count1=_;for(var l=0,f=0;_>a.big_values;_-=4){var c=2*(2*(2*n[_-4]+n[_-3])+n[_-2])+n[_-1];l+=k.t32l[c],f+=k.t33l[c]}if(a.big_values=_,a.count1table_select=0,f<l&&(l=f,a.count1table_select=1),a.count1bits=l,a.block_type==Ae.NORM_TYPE)h(e,a,t,n,s,r,i,o);else{if(a.part2_3_length=l,l=e.scalefac_band.l[8],_<l&&(l=_),0<l){var u=new v(a.part2_3_length);a.table_select[0]=d(n,0,l,u),a.part2_3_length=u.bits}if(l<_){var u=new v(a.part2_3_length);a.table_select[1]=d(n,l,_,u),a.part2_3_length=u.bits}t.part2_3_length>a.part2_3_length&&t.assign(a)}}}};var u=[1,1,1,1,8,2,2,2,4,4,4,8,8,8,16,16],b=[1,2,4,8,1,2,4,8,2,4,8,2,4,8,4,8],p=[0,0,0,0,3,1,1,1,2,2,2,3,3,3,4,4],m=[0,1,2,3,0,1,2,3,1,2,3,1,2,3,2,3];A.slen1_tab=p,A.slen2_tab=m,this.best_scalefac_store=function(e,t,a,n){var s,r,i,o,_=n.tt[t][a],l=0;for(s=i=0;s<_.sfbmax;s++){var f=_.width[s];for(i+=f,o=-f;o<0&&0==_.l3_enc[o+i];o++);0==o&&(_.scalefac[s]=l=-2)}if(0==_.scalefac_scale&&0==_.preflag){var c=0;for(s=0;s<_.sfbmax;s++)0<_.scalefac[s]&&(c|=_.scalefac[s]);if(0==(1&c)&&0!=c){for(s=0;s<_.sfbmax;s++)0<_.scalefac[s]&&(_.scalefac[s]>>=1);_.scalefac_scale=l=1}}if(0==_.preflag&&_.block_type!=Ae.SHORT_TYPE&&2==e.mode_gr){for(s=11;s<Ae.SBPSY_l&&!(_.scalefac[s]<w.pretab[s]&&-2!=_.scalefac[s]);s++);if(s==Ae.SBPSY_l){for(s=11;s<Ae.SBPSY_l;s++)0<_.scalefac[s]&&(_.scalefac[s]-=w.pretab[s]);_.preflag=l=1}}for(r=0;r<4;r++)n.scfsi[a][r]=0;for(2==e.mode_gr&&1==t&&n.tt[0][a].block_type!=Ae.SHORT_TYPE&&n.tt[1][a].block_type!=Ae.SHORT_TYPE&&(function(e,t){for(var a,n=t.tt[1][e],s=t.tt[0][e],r=0;r<k.scfsi_band.length-1;r++){for(a=k.scfsi_band[r];a<k.scfsi_band[r+1]&&!(s.scalefac[a]!=n.scalefac[a]&&0<=n.scalefac[a]);a++);if(a==k.scfsi_band[r+1]){for(a=k.scfsi_band[r];a<k.scfsi_band[r+1];a++)n.scalefac[a]=-1;t.scfsi[e][r]=1}}var i=0,o=0;for(a=0;a<11;a++)-1!=n.scalefac[a]&&(o++,i<n.scalefac[a]&&(i=n.scalefac[a]));for(var _=0,l=0;a<Ae.SBPSY_l;a++)-1!=n.scalefac[a]&&(l++,_<n.scalefac[a]&&(_=n.scalefac[a]));for(var r=0;r<16;r++)if(i<u[r]&&_<b[r]){var f=p[r]*o+m[r]*l;n.part2_length>f&&(n.part2_length=f,n.scalefac_compress=r)}}(a,n),l=0),s=0;s<_.sfbmax;s++)-2==_.scalefac[s]&&(_.scalefac[s]=0);0!=l&&(2==e.mode_gr?this.scale_bitcount(_):this.scale_bitcount_lsf(e,_))};var _=[0,18,36,54,54,36,54,72,54,72,90,72,90,108,108,126],l=[0,18,36,54,51,35,53,71,52,70,88,69,87,105,104,122],f=[0,10,20,30,33,21,31,41,32,42,52,43,53,63,64,74];this.scale_bitcount=function(e){var t,a,n,s=0,r=0,i=e.scalefac;if(e.block_type==Ae.SHORT_TYPE)n=_,0!=e.mixed_block_flag&&(n=l);else if(n=f,0==e.preflag){for(a=11;a<Ae.SBPSY_l&&!(i[a]<w.pretab[a]);a++);if(a==Ae.SBPSY_l)for(e.preflag=1,a=11;a<Ae.SBPSY_l;a++)i[a]-=w.pretab[a]}for(a=0;a<e.sfbdivide;a++)s<i[a]&&(s=i[a]);for(;a<e.sfbmax;a++)r<i[a]&&(r=i[a]);for(e.part2_length=T.LARGE_BITS,t=0;t<16;t++)s<u[t]&&r<b[t]&&e.part2_length>n[t]&&(e.part2_length=n[t],e.scalefac_compress=t);return e.part2_length==T.LARGE_BITS};var g=[[15,15,7,7],[15,15,7,0],[7,3,0,0],[15,31,31,0],[7,7,7,0],[3,3,0,0]];this.scale_bitcount_lsf=function(e,t){var a,n,s,r,i,o,_,l,f=ve(4),c=t.scalefac;for(a=0!=t.preflag?2:0,_=0;_<4;_++)f[_]=0;if(t.block_type==Ae.SHORT_TYPE){n=1;var u=w.nr_of_sfb_block[a][n];for(s=l=0;s<4;s++)for(r=u[s]/3,_=0;_<r;_++,l++)for(i=0;i<3;i++)c[3*l+i]>f[s]&&(f[s]=c[3*l+i])}else{n=0;var u=w.nr_of_sfb_block[a][n];for(s=l=0;s<4;s++)for(r=u[s],_=0;_<r;_++,l++)c[l]>f[s]&&(f[s]=c[l])}for(o=!1,s=0;s<4;s++)f[s]>g[a][s]&&(o=!0);if(!o){var h,b,p,m;for(t.sfb_partition_table=w.nr_of_sfb_block[a][n],s=0;s<4;s++)t.slen[s]=S[f[s]];switch(h=t.slen[0],b=t.slen[1],p=t.slen[2],m=t.slen[3],a){case 0:t.scalefac_compress=(5*h+b<<4)+(p<<2)+m;break;case 1:t.scalefac_compress=400+(5*h+b<<2)+p;break;case 2:t.scalefac_compress=500+3*h+b}}if(!o)for(t.part2_length=0,s=0;s<4;s++)t.part2_length+=t.slen[s]*t.sfb_partition_table[s];return o};var S=[0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4];this.huffman_init=function(e){for(var t=2;t<=576;t+=2){for(var a,n=0;e.scalefac_band.l[++n]<t;);for(a=s[n][0];e.scalefac_band.l[a+1]>t;)a--;for(a<0&&(a=s[n][0]),e.bv_scf[t-2]=a,a=s[n][1];e.scalefac_band.l[a+e.bv_scf[t-2]+2]>t;)a--;a<0&&(a=s[n][1]),e.bv_scf[t-1]=a}}}function O(){}function y(){this.setModules=function(e,t,a){};var o=[0,49345,49537,320,49921,960,640,49729,50689,1728,1920,51009,1280,50625,50305,1088,52225,3264,3456,52545,3840,53185,52865,3648,2560,51905,52097,2880,51457,2496,2176,51265,55297,6336,6528,55617,6912,56257,55937,6720,7680,57025,57217,8e3,56577,7616,7296,56385,5120,54465,54657,5440,55041,6080,5760,54849,53761,4800,4992,54081,4352,53697,53377,4160,61441,12480,12672,61761,13056,62401,62081,12864,13824,63169,63361,14144,62721,13760,13440,62529,15360,64705,64897,15680,65281,16320,16e3,65089,64001,15040,15232,64321,14592,63937,63617,14400,10240,59585,59777,10560,60161,11200,10880,59969,60929,11968,12160,61249,11520,60865,60545,11328,58369,9408,9600,58689,9984,59329,59009,9792,8704,58049,58241,9024,57601,8640,8320,57409,40961,24768,24960,41281,25344,41921,41601,25152,26112,42689,42881,26432,42241,26048,25728,42049,27648,44225,44417,27968,44801,28608,28288,44609,43521,27328,27520,43841,26880,43457,43137,26688,30720,47297,47489,31040,47873,31680,31360,47681,48641,32448,32640,48961,32e3,48577,48257,31808,46081,29888,30080,46401,30464,47041,46721,30272,29184,45761,45953,29504,45313,29120,28800,45121,20480,37057,37249,20800,37633,21440,21120,37441,38401,22208,22400,38721,21760,38337,38017,21568,39937,23744,23936,40257,24320,40897,40577,24128,23040,39617,39809,23360,39169,22976,22656,38977,34817,18624,18816,35137,19200,35777,35457,19008,19968,36545,36737,20288,36097,19904,19584,35905,17408,33985,34177,17728,34561,18368,18048,34369,33281,17088,17280,33601,16640,33217,32897,16448];this.updateMusicCRC=function(e,t,a,n){for(var s=0;s<n;++s)e[0]=(r=t[a+s],i=(i=e[0])>>8^o[255&(i^r)]);var r,i}}function N(){var i=this,r=null,o=null;this.setModules=function(e,t,a,n){r=a,o=n};var _=null,l=0,f=0,c=0;function v(e,t,a){for(;0<a;){var n;0==c&&(c=8,f++,e.header[e.w_ptr].write_timing==l&&(s=e,I.arraycopy(s.header[s.w_ptr].buf,0,_,f,s.sideinfo_len),f+=s.sideinfo_len,l+=8*s.sideinfo_len,s.w_ptr=s.w_ptr+1&j.MAX_HEADER_BUF-1),_[f]=0),n=Math.min(a,c),a-=n,c-=n,_[f]|=t>>a<<c,l+=n}var s}function u(e,t){var a,n=e.internal_flags;if(8<=t&&(v(n,76,8),t-=8),8<=t&&(v(n,65,8),t-=8),8<=t&&(v(n,77,8),t-=8),8<=t&&(v(n,69,8),t-=8),32<=t){var s=r.getLameShortVersion();if(32<=t)for(a=0;a<s.length&&8<=t;++a)t-=8,v(n,s.charCodeAt(a),8)}for(;1<=t;t-=1)v(n,n.ancillary_flag,1),n.ancillary_flag^=e.disable_reservoir?0:1}function h(e,t,a){for(var n=e.header[e.h_ptr].ptr;0<a;){var s=Math.min(a,8-(7&n));a-=s,e.header[e.h_ptr].buf[n>>3]|=t>>a<<8-(7&n)-s,n+=s}e.header[e.h_ptr].ptr=n}function m(e,t){var a,n=k.ht[t.count1table_select+32],s=0,r=t.big_values,i=t.big_values;for(a=(t.count1-t.big_values)/4;0<a;--a){var o=0,_=0;0!=t.l3_enc[r+0]&&(_+=8,t.xr[i+0]<0&&o++),0!=t.l3_enc[r+1]&&(_+=4,o*=2,t.xr[i+1]<0&&o++),0!=t.l3_enc[r+2]&&(_+=2,o*=2,t.xr[i+2]<0&&o++),0!=t.l3_enc[r+3]&&(_++,o*=2,t.xr[i+3]<0&&o++),r+=4,i+=4,v(e,o+n.table[_],n.hlen[_]),s+=n.hlen[_]}return s}function b(e,t,a,n,s){var r=k.ht[t],i=0;if(0==t)return i;for(var o=a;o<n;o+=2){var _=0,l=0,f=r.xlen,c=r.xlen,u=0,h=s.l3_enc[o],b=s.l3_enc[o+1];if(0!=h&&(s.xr[o]<0&&u++,_--),15<t){if(14<h){var p=h-15;u|=p<<1,l=f,h=15}if(14<b){var m=b-15;u<<=f,u|=m,l+=f,b=15}c=16}0!=b&&(u<<=1,s.xr[o+1]<0&&u++,_--),h=h*c+b,l-=_,_+=r.hlen[h],v(e,r.table[h],_),v(e,u,l),i+=_+l}return i}function d(e,t){var a=3*e.scalefac_band.s[3];a>t.big_values&&(a=t.big_values);var n=b(e,t.table_select[0],0,a,t);return n+=b(e,t.table_select[1],a,t.big_values,t)}function g(e,t){var a,n,s,r;a=t.big_values;var i=t.region0_count+1;return s=e.scalefac_band.l[i],i+=t.region1_count+1,r=e.scalefac_band.l[i],a<s&&(s=a),a<r&&(r=a),n=b(e,t.table_select[0],0,s,t),n+=b(e,t.table_select[1],s,r,t),n+=b(e,t.table_select[2],r,a,t)}function p(){this.total=0}function S(e,t){var a,n,s,r=e.internal_flags;return r.w_ptr,-1==(s=r.h_ptr-1)&&(s=j.MAX_HEADER_BUF-1),a=r.header[s].write_timing-l,0<=(t.total=a)&&me(),n=i.getframebits(e),a+=n,t.total+=n,t.total%8!=0?t.total=1+t.total/8:t.total=t.total/8,t.total+=f+1,a}this.getframebits=function(e){var t,a=e.internal_flags;t=0!=a.bitrate_index?k.bitrate_table[e.version][a.bitrate_index]:e.brate;var n=0|72e3*(e.version+1)*t/e.out_samplerate+a.padding;return 8*n},this.flush_bitstream=function(e){var t,a,n=e.internal_flags,s=n.h_ptr-1;-1==s&&(s=j.MAX_HEADER_BUF-1),t=n.l3_side,(a=S(e,new p))<0||(u(e,a),n.ResvSize=0,t.main_data_begin=0,n.findReplayGain&&me(),n.findPeakSample&&me())},this.format_bitstream=function(e){var t,a=e.internal_flags;t=a.l3_side;var n=this.getframebits(e);u(e,t.resvDrain_pre),function(e,t){var a,n,s,r=e.internal_flags;if(a=r.l3_side,r.header[r.h_ptr].ptr=0,Se.fill(r.header[r.h_ptr].buf,0,r.sideinfo_len,0),e.out_samplerate<16e3?h(r,4094,12):h(r,4095,12),h(r,e.version,1),h(r,1,2),h(r,e.error_protection?0:1,1),h(r,r.bitrate_index,4),h(r,r.samplerate_index,2),h(r,r.padding,1),h(r,e.extension,1),h(r,e.mode.ordinal(),2),h(r,r.mode_ext,2),h(r,e.copyright,1),h(r,e.original,1),h(r,e.emphasis,2),e.error_protection&&h(r,0,16),1==e.version){for(h(r,a.main_data_begin,9),2==r.channels_out?h(r,a.private_bits,3):h(r,a.private_bits,5),s=0;s<r.channels_out;s++){var i;for(i=0;i<4;i++)h(r,a.scfsi[s][i],1)}for(n=0;n<2;n++)for(s=0;s<r.channels_out;s++){var o=a.tt[n][s];h(r,o.part2_3_length+o.part2_length,12),h(r,o.big_values/2,9),h(r,o.global_gain,8),h(r,o.scalefac_compress,4),o.block_type!=Ae.NORM_TYPE?(h(r,1,1),h(r,o.block_type,2),h(r,o.mixed_block_flag,1),14==o.table_select[0]&&(o.table_select[0]=16),h(r,o.table_select[0],5),14==o.table_select[1]&&(o.table_select[1]=16),h(r,o.table_select[1],5),h(r,o.subblock_gain[0],3),h(r,o.subblock_gain[1],3),h(r,o.subblock_gain[2],3)):(h(r,0,1),14==o.table_select[0]&&(o.table_select[0]=16),h(r,o.table_select[0],5),14==o.table_select[1]&&(o.table_select[1]=16),h(r,o.table_select[1],5),14==o.table_select[2]&&(o.table_select[2]=16),h(r,o.table_select[2],5),h(r,o.region0_count,4),h(r,o.region1_count,3)),h(r,o.preflag,1),h(r,o.scalefac_scale,1),h(r,o.count1table_select,1)}}else for(h(r,a.main_data_begin,8),h(r,a.private_bits,r.channels_out),s=n=0;s<r.channels_out;s++){var o=a.tt[n][s];h(r,o.part2_3_length+o.part2_length,12),h(r,o.big_values/2,9),h(r,o.global_gain,8),h(r,o.scalefac_compress,9),o.block_type!=Ae.NORM_TYPE?(h(r,1,1),h(r,o.block_type,2),h(r,o.mixed_block_flag,1),14==o.table_select[0]&&(o.table_select[0]=16),h(r,o.table_select[0],5),14==o.table_select[1]&&(o.table_select[1]=16),h(r,o.table_select[1],5),h(r,o.subblock_gain[0],3),h(r,o.subblock_gain[1],3),h(r,o.subblock_gain[2],3)):(h(r,0,1),14==o.table_select[0]&&(o.table_select[0]=16),h(r,o.table_select[0],5),14==o.table_select[1]&&(o.table_select[1]=16),h(r,o.table_select[1],5),14==o.table_select[2]&&(o.table_select[2]=16),h(r,o.table_select[2],5),h(r,o.region0_count,4),h(r,o.region1_count,3)),h(r,o.scalefac_scale,1),h(r,o.count1table_select,1)}e.error_protection&&me();var _=r.h_ptr;r.h_ptr=_+1&j.MAX_HEADER_BUF-1,r.header[r.h_ptr].write_timing=r.header[_].write_timing+t,r.h_ptr,r.w_ptr}(e,n);var s=8*a.sideinfo_len;if(s+=function(e){var t,a,n,s,r=0,i=e.internal_flags,o=i.l3_side;if(1==e.version)for(t=0;t<2;t++)for(a=0;a<i.channels_out;a++){var _=o.tt[t][a],l=A.slen1_tab[_.scalefac_compress],f=A.slen2_tab[_.scalefac_compress];for(n=s=0;n<_.sfbdivide;n++)-1!=_.scalefac[n]&&(v(i,_.scalefac[n],l),s+=l);for(;n<_.sfbmax;n++)-1!=_.scalefac[n]&&(v(i,_.scalefac[n],f),s+=f);_.block_type==Ae.SHORT_TYPE?s+=d(i,_):s+=g(i,_),s+=m(i,_),r+=s}else for(a=t=0;a<i.channels_out;a++){var c,u,_=o.tt[t][a],h=0;if(u=n=s=0,_.block_type==Ae.SHORT_TYPE){for(;u<4;u++){var b=_.sfb_partition_table[u]/3,p=_.slen[u];for(c=0;c<b;c++,n++)v(i,Math.max(_.scalefac[3*n+0],0),p),v(i,Math.max(_.scalefac[3*n+1],0),p),v(i,Math.max(_.scalefac[3*n+2],0),p),h+=3*p}s+=d(i,_)}else{for(;u<4;u++){var b=_.sfb_partition_table[u],p=_.slen[u];for(c=0;c<b;c++,n++)v(i