diff --git a/dist/boho.cjs b/dist/boho.cjs index ac044e6..9731d3a 100644 --- a/dist/boho.cjs +++ b/dist/boho.cjs @@ -1,2 +1,2 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("crypto");const e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function r(t,r,n,i,o){let f,s,u,h,a,c,l,p,y,g,d,b,w;for(;o>=64;){for(f=r[0],s=r[1],u=r[2],h=r[3],a=r[4],c=r[5],l=r[6],p=r[7],g=0;g<16;g++)d=i+4*g,t[g]=(255&n[d])<<24|(255&n[d+1])<<16|(255&n[d+2])<<8|255&n[d+3];for(g=16;g<64;g++)y=t[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=t[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,t[g]=(b+t[g-7]|0)+(w+t[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(e[g]+t[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;r[0]+=f,r[1]+=s,r[2]+=u,r[3]+=h,r[4]+=a,r[5]+=c,r[6]+=l,r[7]+=p,i+=64,o-=64}return i}const n=function(){function t(){this.digestLength=32,this.blockSize=64,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[n++],e--;64===this.bufferLength&&(r(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(n=r(this.temp,this.state,t,n,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[n++],e--;return this},t.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,n=this.bufferLength,i=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[n]=128;for(var e=n+1;e>>24&255,this.buffer[f-7]=i>>>16&255,this.buffer[f-6]=i>>>8&255,this.buffer[f-5]=i>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,r(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(e=0;e<8;e++)t[4*e+0]=this.state[e]>>>24&255,t[4*e+1]=this.state[e]>>>16&255,t[4*e+2]=this.state[e]>>>8&255,t[4*e+3]=this.state[e]>>>0&255;return this},t.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},t.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new n).update(t).finish(e).clean();else for(var r=0;r0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},u=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(h[e>>2]+h[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(h[e>>10]+h[e>>4&63]+h[e<<2&63]+"="));return i.join("")},h=[],a=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,y=l.length;p0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function d(t,e,r){for(var n,i,o=[],f=e;f>18&63]+h[i>>12&63]+h[i>>6&63]+h[63&i]);return o.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63;var b,w,B={byteLength:f,toByteArray:s,fromByteArray:u},m=function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},A=function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g},E=(b=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(J(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(J(t,ArrayBuffer)||t&&J(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(J(t,SharedArrayBuffer)||t&&J(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||Q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||J(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return q(t).length;default:if(i)return n?-1:Y(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return v(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return L(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function L(t,e,r){return 0===e&&r===t.length?B.fromByteArray(t):B.fromByteArray(t.slice(e,r))}function I(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=T)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(J(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":case"latin1":case"binary":return E(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const T=4096;function v(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function x(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function M(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function H(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,4),A(t,e,r,n,23,4),r+4}function P(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,8),A(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||O(t,4,this.length),m(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||O(t,4,this.length),m(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||O(t,8,this.length),m(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||O(t,8,this.length),m(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=W((function(t,e=0){return x(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=W((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=W((function(t,e=0){return x(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=W((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return P(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return P(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function F(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new $.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){D(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||K(e,t.length-(r+1))}(n,i,o)}function D(t,e){if("number"!=typeof t)throw new $.ERR_INVALID_ARG_TYPE(e,"number",t)}function K(t,e,r){if(Math.floor(t)!==t)throw D(t,r),new $.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=z(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=z(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const V=/[^+/0-9A-Za-z-_]/g;function Y(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function q(t){return B.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(V,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function G(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function J(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function Q(t){return t!=t}const X=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function W(t){return"undefined"==typeof BigInt?Z:t}function Z(){throw new Error("BigInt not supported")}},b(w={exports:{}},w.exports),w.exports); -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const _=new TextEncoder,U=new TextDecoder,L=I;function I(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=E.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=E.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=E.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=E.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=E.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const T=v;function v(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=E.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=E.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=I(e,r);else if("string"==typeof e&&void 0===r)n=E.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof E.Buffer?e:E.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=E.Buffer.from(e);else if(ArrayBuffer.isView(e))n=E.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=E.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=E.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const S=C;function C(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?T(r,"N",t):T(r,t)}))}function N(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function O(t,e,r,n){const i=N(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return U.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(U.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(U.decode(t))}catch(t){console.log("err. obj parse")}}}function R(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=_.encode(t),o=i.byteLength,r=r+o+2}const s=E.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=L("16",o);return s.set(t,f+o),s}return s}function x(t,e){const r=e||X(t);if(!r)return;const n=E.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=O(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=O("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const M=H;function H(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return _.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return _.encode(JSON.stringify(t))}const k=P;function P(t,e=!1){const r=H(t,e);return e?E.Buffer.from(r.buffer,r.byteOffset,r.byteLength):E.Buffer.from(r)}const $=j;function j(...t){const e=t.map((t=>P(t)));return E.Buffer.concat(e)}const z=F;function F(...t){try{let e=0,r=0;const n=t.map((t=>H(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function D(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function K(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return Y(t,r)?r:0}return 0}function Q(t){const e=V(t);return t.subarray(0,e)}function X(t,e=!1){t instanceof ArrayBuffer&&(t=E.Buffer.from(t));const r=G(t);if(0===r)return;let n=Y(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=N(t[1])})),n):n:void 0}function W(...t){return Q(R(...t))}function Z(...t){return X(R(...t))}var tt=Object.freeze({__proto__:null,Buffer:E.Buffer,NB:L,numberBuffer:I,MB:T,metaBuffer:v,MBA:S,metaBufferArguments:C,parseTypeName:N,readTypedBuffer:O,pack:R,unpack:x,U8:M,parseUint8Array:H,B8:k,parseBuffer:P,B8pack:$,parseBufferThenConcat:j,U8pack:z,parseUint8ThenConcat:F,hex:D,equal:K,getBufferSize:V,parseMetaInfo:Y,TAIL_LEN:q,readTail:G,getMetaSize:J,getBuffer:Q,getMeta:X,rawPack:W,meta:Z,metaDetail:function(...t){return X(R(...t),!0)},getMetaDetail:function(t){return X(t,!0)}});o.hash=function(t){return o(M(t))},o.hex=function(t){return D(o.hash(t))},o.hmac=function(t,e){return function(t,e){const r=new i(t).update(e),n=r.digest();return r.clean(),n}(M(t),M(e))};const et=T;let rt={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in rt)rt[rt[t]]=t;const nt={AUTH_REQ:Z(et("header","8",0),et("reserved","8",0)),AUTH_NONCE:Z(et("header","8",0),et("unixTime","32L",0),et("milTime","32L",0),et("nonce",E.Buffer.alloc(4))),AUTH_HMAC:Z(et("header","8",0),et("id8",E.Buffer.alloc(8)),et("nonce",E.Buffer.alloc(4)),et("hmac32",E.Buffer.alloc(32))),AUTH_ACK:Z(et("header","8",0),et("hmac32",E.Buffer.alloc(32))),ENC_PACK:Z(et("type","8",0),et("len","32L",0),et("salt12",E.Buffer.alloc(12)),et("hmac",8,0)),ENC_488:Z(et("type","8",0),et("len","32L",0),et("otpSrc8",E.Buffer.alloc(8)),et("hmac8",E.Buffer.alloc(8)))};function it(t){let e=t[t.length-1];return e[2]+e[3]}const ot={AUTH_REQ:it(nt.AUTH_REQ),AUTH_NONCE:it(nt.AUTH_NONCE),AUTH_HMAC:it(nt.AUTH_HMAC),AUTH_ACK:it(nt.AUTH_ACK),ENC_PACK:it(nt.ENC_PACK),ENC_488:it(nt.ENC_488)};let ft=!1;try{ft="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function st(e){return ft?t.webcrypto.getRandomValues(E.Buffer.alloc(e)):self.crypto.getRandomValues(E.Buffer.alloc(e))}exports.Boho=class{constructor(){this._id8=E.Buffer.alloc(8),this._otpSrc44=E.Buffer.alloc(44),this._otp36=E.Buffer.alloc(36),this._hmac=E.Buffer.alloc(32),this.auth_salt12=E.Buffer.alloc(12),this.localNonce=E.Buffer.alloc(4),this.remoteNonce=E.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=k(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){k(o.hash(t)).copy(this._id8,0,0,8)}set_key(t){k(o.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=o.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r=64;){for(f=e[0],s=e[1],u=e[2],h=e[3],a=e[4],c=e[5],l=e[6],p=e[7],g=0;g<16;g++)d=i+4*g,t[g]=(255&r[d])<<24|(255&r[d+1])<<16|(255&r[d+2])<<8|255&r[d+3];for(g=16;g<64;g++)y=t[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=t[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,t[g]=(b+t[g-7]|0)+(w+t[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(n[g]+t[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;e[0]+=f,e[1]+=s,e[2]+=u,e[3]+=h,e[4]+=a,e[5]+=c,e[6]+=l,e[7]+=p,i+=64,o-=64}return i}const o=function(){function t(){this.digestLength=e,this.blockSize=r,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(i(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=i(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},t.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,r=this.bufferLength,n=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[r]=128;for(var e=r+1;e>>24&255,this.buffer[f-7]=n>>>16&255,this.buffer[f-6]=n>>>8&255,this.buffer[f-5]=n>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,i(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(e=0;e<8;e++)t[4*e+0]=this.state[e]>>>24&255,t[4*e+1]=this.state[e]>>>16&255,t[4*e+2]=this.state[e]>>>8&255,t[4*e+3]=this.state[e]>>>0&255;return this},t.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},t.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new o).update(t).finish(e).clean();else for(var r=0;r0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},a=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(c[e>>2]+c[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(c[e>>10]+c[e>>4&63]+c[e<<2&63]+"="));return i.join("")},c=[],l=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=0,d=y.length;g0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function w(t,e,r){for(var n,i,o=[],f=e;f>18&63]+c[i>>12&63]+c[i>>6&63]+c[63&i]);return o.join("")}l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63;var B,m,A={byteLength:u,toByteArray:h,fromByteArray:a},E={read:function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},write:function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g}},_=(B=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(G(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(G(t,ArrayBuffer)||t&&G(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(G(t,SharedArrayBuffer)||t&&G(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||J(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||G(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(t).length;default:if(i)return n?-1:V(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return L(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return U(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),J(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function U(t,e,r){return 0===e&&r===t.length?A.fromByteArray(t):A.fromByteArray(t.slice(e,r))}function L(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=I)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(G(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":case"latin1":case"binary":return B(this,t,e,r);case"base64":return m(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const I=4096;function T(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function O(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function R(t,e,r,n,i){z(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function x(t,e,r,n,i){z(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function M(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function H(t,e,r,n,i){return e=+e,r>>>=0,i||M(t,0,r,4),E.write(t,e,r,n,23,4),r+4}function k(t,e,r,n,i){return e=+e,r>>>=0,i||M(t,0,r,8),E.write(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||N(t,4,this.length),E.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),E.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),E.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),E.read(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=X((function(t,e=0){return R(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=X((function(t,e=0){return x(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=X((function(t,e=0){return R(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=X((function(t,e=0){return x(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return H(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return H(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function z(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new P.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){F(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||D(e,t.length-(r+1))}(n,i,o)}function F(t,e){if("number"!=typeof t)throw new P.ERR_INVALID_ARG_TYPE(e,"number",t)}function D(t,e,r){if(Math.floor(t)!==t)throw F(t,r),new P.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new P.ERR_BUFFER_OUT_OF_BOUNDS;throw new P.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}$("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),$("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),$("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=j(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=j(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const K=/[^+/0-9A-Za-z-_]/g;function V(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(t){return A.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function q(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function G(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function J(t){return t!=t}const Q=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function X(t){return"undefined"==typeof BigInt?W:t}function W(){throw new Error("BigInt not supported")}},B(m={exports:{}},m.exports),m.exports); +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const U=new TextEncoder,L=new TextDecoder,I=T;function T(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=_.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=_.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=_.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=_.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=_.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const v=S;function S(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=_.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=_.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=T(e,r);else if("string"==typeof e&&void 0===r)n=_.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof _.Buffer?e:_.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=_.Buffer.from(e);else if(ArrayBuffer.isView(e))n=_.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=_.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=_.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const C=N;function N(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?v(r,"N",t):v(r,t)}))}function O(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function R(t,e,r,n){const i=O(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return L.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(L.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(L.decode(t))}catch(t){console.log("err. obj parse")}}}function x(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=U.encode(t),o=i.byteLength,r=r+o+2}const s=_.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=I("16",o);return s.set(t,f+o),s}return s}function M(t,e){const r=e||W(t);if(!r)return;const n=_.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=R(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=R("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const H=k;function k(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return U.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return U.encode(JSON.stringify(t))}const P=$;function $(t,e=!1){const r=k(t,e);return e?_.Buffer.from(r.buffer,r.byteOffset,r.byteLength):_.Buffer.from(r)}const j=z;function z(...t){const e=t.map((t=>$(t)));return _.Buffer.concat(e)}const F=D;function D(...t){try{let e=0,r=0;const n=t.map((t=>k(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function K(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function V(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return q(t,r)?r:0}return 0}function X(t){const e=Y(t);return t.subarray(0,e)}function W(t,e=!1){t instanceof ArrayBuffer&&(t=_.Buffer.from(t));const r=J(t);if(0===r)return;let n=q(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=O(t[1])})),n):n:void 0}function Z(...t){return X(x(...t))}function tt(...t){return W(x(...t))}var et=Object.freeze({__proto__:null,Buffer:_.Buffer,NB:I,numberBuffer:T,MB:v,metaBuffer:S,MBA:C,metaBufferArguments:N,parseTypeName:O,readTypedBuffer:R,pack:x,unpack:M,U8:H,parseUint8Array:k,B8:P,parseBuffer:$,B8pack:j,parseBufferThenConcat:z,U8pack:F,parseUint8ThenConcat:D,hex:K,equal:V,getBufferSize:Y,parseMetaInfo:q,TAIL_LEN:G,readTail:J,getMetaSize:Q,getBuffer:X,getMeta:W,rawPack:Z,meta:tt,metaDetail:function(...t){return W(x(...t),!0)},getMetaDetail:function(t){return W(t,!0)}});s.hash=function(t){return s(H(t))},s.hex=function(t){return K(s.hash(t))},s.hmac=function(t,e){return function(t,e){const r=new f(t).update(e),n=r.digest();return r.clean(),n}(H(t),H(e))};const rt=v;let nt={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in nt)nt[nt[t]]=t;const it={AUTH_REQ:tt(rt("header","8",0),rt("reserved","8",0)),AUTH_NONCE:tt(rt("header","8",0),rt("unixTime","32L",0),rt("milTime","32L",0),rt("nonce",_.Buffer.alloc(4))),AUTH_HMAC:tt(rt("header","8",0),rt("id8",_.Buffer.alloc(8)),rt("nonce",_.Buffer.alloc(4)),rt("hmac32",_.Buffer.alloc(32))),AUTH_ACK:tt(rt("header","8",0),rt("hmac32",_.Buffer.alloc(32))),ENC_PACK:tt(rt("type","8",0),rt("len","32L",0),rt("salt12",_.Buffer.alloc(12)),rt("hmac",8,0)),ENC_488:tt(rt("type","8",0),rt("len","32L",0),rt("otpSrc8",_.Buffer.alloc(8)),rt("hmac8",_.Buffer.alloc(8)))};function ot(t){let e=t[t.length-1];return e[2]+e[3]}const ft={AUTH_REQ:ot(it.AUTH_REQ),AUTH_NONCE:ot(it.AUTH_NONCE),AUTH_HMAC:ot(it.AUTH_HMAC),AUTH_ACK:ot(it.AUTH_ACK),ENC_PACK:ot(it.ENC_PACK),ENC_488:ot(it.ENC_488)};let st=!1;try{st="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function ut(e){return st?t.webcrypto.getRandomValues(_.Buffer.alloc(e)):self.crypto.getRandomValues(_.Buffer.alloc(e))}exports.Boho=class{constructor(){this._id8=_.Buffer.alloc(8),this._otpSrc44=_.Buffer.alloc(44),this._otp36=_.Buffer.alloc(36),this._hmac=_.Buffer.alloc(32),this.auth_salt12=_.Buffer.alloc(12),this.localNonce=_.Buffer.alloc(4),this.remoteNonce=_.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=P(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){P(s.hash(t)).copy(this._id8,0,0,8)}set_key(t){P(s.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=s.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r=64;){for(f=r[0],s=r[1],u=r[2],h=r[3],a=r[4],c=r[5],l=r[6],p=r[7],g=0;g<16;g++)d=i+4*g,e[g]=(255&n[d])<<24|(255&n[d+1])<<16|(255&n[d+2])<<8|255&n[d+3];for(g=16;g<64;g++)y=e[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=e[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,e[g]=(b+e[g-7]|0)+(w+e[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(t[g]+e[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;r[0]+=f,r[1]+=s,r[2]+=u,r[3]+=h,r[4]+=a,r[5]+=c,r[6]+=l,r[7]+=p,i+=64,o-=64}return i}const r=function(){function t(){this.digestLength=32,this.blockSize=64,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&r>0;)this.buffer[this.bufferLength++]=t[n++],r--;64===this.bufferLength&&(e(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(r>=64&&(n=e(this.temp,this.state,t,n,r),r%=64);r>0;)this.buffer[this.bufferLength++]=t[n++],r--;return this},t.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,n=this.bufferLength,i=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[n]=128;for(var r=n+1;r>>24&255,this.buffer[f-7]=i>>>16&255,this.buffer[f-6]=i>>>8&255,this.buffer[f-5]=i>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,e(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(r=0;r<8;r++)t[4*r+0]=this.state[r]>>>24&255,t[4*r+1]=this.state[r]>>>16&255,t[4*r+2]=this.state[r]>>>8&255,t[4*r+3]=this.state[r]>>>0&255;return this},t.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},t.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new r).update(t).finish(e).clean();else for(var n=0;n0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=h[t.charCodeAt(r)]<<2|h[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=h[t.charCodeAt(r)]<<10|h[t.charCodeAt(r+1)]<<4|h[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},s=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(u[e>>2]+u[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(u[e>>10]+u[e>>4&63]+u[e<<2&63]+"="));return i.join("")},u=[],h=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=c.length;l0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],f=e;f>18&63]+u[i>>12&63]+u[i>>6&63]+u[63&i]);return o.join("")}h["-".charCodeAt(0)]=62,h["_".charCodeAt(0)]=63;var d,b,w={byteLength:o,toByteArray:f,fromByteArray:s},B=function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},m=function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g},E=(d=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(q(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(q(t,ArrayBuffer)||t&&q(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(q(t,SharedArrayBuffer)||t&&q(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||Q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||q(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return G(t).length;default:if(i)return n?-1:Y(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return v(this,e,r);case"latin1":case"binary":return C(this,e,r);case"base64":return L(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function L(t,e,r){return 0===e&&r===t.length?w.fromByteArray(t):w.fromByteArray(t.slice(e,r))}function I(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=T)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(q(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return A(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const T=4096;function v(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function M(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function H(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function x(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,0,r,4),m(t,e,r,n,23,4),r+4}function P(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,0,r,8),m(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||O(t,4,this.length),B(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||O(t,4,this.length),B(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||O(t,8,this.length),B(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||O(t,8,this.length),B(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=W((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=W((function(t,e=0){return H(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=W((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=W((function(t,e=0){return H(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return P(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return P(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function F(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new $.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){D(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||K(e,t.length-(r+1))}(n,i,o)}function D(t,e){if("number"!=typeof t)throw new $.ERR_INVALID_ARG_TYPE(e,"number",t)}function K(t,e,r){if(Math.floor(t)!==t)throw D(t,r),new $.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=z(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=z(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const V=/[^+/0-9A-Za-z-_]/g;function Y(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(t){return w.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(V,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function q(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function Q(t){return t!=t}const X=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function W(t){return"undefined"==typeof BigInt?Z:t}function Z(){throw new Error("BigInt not supported")}},d(b={exports:{}},b.exports),b.exports); -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const A=new TextEncoder,_=new TextDecoder,U=L;function L(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=E.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=E.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=E.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=E.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=E.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const I=T;function T(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=E.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=E.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=L(e,r);else if("string"==typeof e&&void 0===r)n=E.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof E.Buffer?e:E.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=E.Buffer.from(e);else if(ArrayBuffer.isView(e))n=E.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=E.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=E.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const v=C;function C(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?I(r,"N",t):I(r,t)}))}function S(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function N(t,e,r,n){const i=S(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return _.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(_.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(_.decode(t))}catch(t){console.log("err. obj parse")}}}function O(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=A.encode(t),o=i.byteLength,r=r+o+2}const s=E.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=U("16",o);return s.set(t,f+o),s}return s}function R(t,e){const r=e||Q(t);if(!r)return;const n=E.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=N(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=N("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const M=H;function H(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return A.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return A.encode(JSON.stringify(t))}const x=k;function k(t,e=!1){const r=H(t,e);return e?E.Buffer.from(r.buffer,r.byteOffset,r.byteLength):E.Buffer.from(r)}const P=$;function $(...t){const e=t.map((t=>k(t)));return E.Buffer.concat(e)}const j=z;function z(...t){try{let e=0,r=0;const n=t.map((t=>H(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function F(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function D(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return V(t,r)?r:0}return 0}function q(t){const e=K(t);return t.subarray(0,e)}function Q(t,e=!1){t instanceof ArrayBuffer&&(t=E.Buffer.from(t));const r=G(t);if(0===r)return;let n=V(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=S(t[1])})),n):n:void 0}function X(...t){return q(O(...t))}function W(...t){return Q(O(...t))}var Z=Object.freeze({__proto__:null,Buffer:E.Buffer,NB:U,numberBuffer:L,MB:I,metaBuffer:T,MBA:v,metaBufferArguments:C,parseTypeName:S,readTypedBuffer:N,pack:O,unpack:R,U8:M,parseUint8Array:H,B8:x,parseBuffer:k,B8pack:P,parseBufferThenConcat:$,U8pack:j,parseUint8ThenConcat:z,hex:F,equal:D,getBufferSize:K,parseMetaInfo:V,TAIL_LEN:Y,readTail:G,getMetaSize:J,getBuffer:q,getMeta:Q,rawPack:X,meta:W,metaDetail:function(...t){return Q(O(...t),!0)},getMetaDetail:function(t){return Q(t,!0)}});i.hash=function(t){return i(M(t))},i.hex=function(t){return F(i.hash(t))},i.hmac=function(t,e){return function(t,e){const r=new n(t).update(e),i=r.digest();return r.clean(),i}(M(t),M(e))};const tt=I;let et={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in et)et[et[t]]=t;const rt={AUTH_REQ:W(tt("header","8",0),tt("reserved","8",0)),AUTH_NONCE:W(tt("header","8",0),tt("unixTime","32L",0),tt("milTime","32L",0),tt("nonce",E.Buffer.alloc(4))),AUTH_HMAC:W(tt("header","8",0),tt("id8",E.Buffer.alloc(8)),tt("nonce",E.Buffer.alloc(4)),tt("hmac32",E.Buffer.alloc(32))),AUTH_ACK:W(tt("header","8",0),tt("hmac32",E.Buffer.alloc(32))),ENC_PACK:W(tt("type","8",0),tt("len","32L",0),tt("salt12",E.Buffer.alloc(12)),tt("hmac",8,0)),ENC_488:W(tt("type","8",0),tt("len","32L",0),tt("otpSrc8",E.Buffer.alloc(8)),tt("hmac8",E.Buffer.alloc(8)))};function nt(t){let e=t[t.length-1];return e[2]+e[3]}const it={AUTH_REQ:nt(rt.AUTH_REQ),AUTH_NONCE:nt(rt.AUTH_NONCE),AUTH_HMAC:nt(rt.AUTH_HMAC),AUTH_ACK:nt(rt.AUTH_ACK),ENC_PACK:nt(rt.ENC_PACK),ENC_488:nt(rt.ENC_488)};let ot=!1;try{ot="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function ft(t){return ot?webcrypto.getRandomValues(E.Buffer.alloc(t)):self.crypto.getRandomValues(E.Buffer.alloc(t))}class st{constructor(){this._id8=E.Buffer.alloc(8),this._otpSrc44=E.Buffer.alloc(44),this._otp36=E.Buffer.alloc(36),this._hmac=E.Buffer.alloc(32),this.auth_salt12=E.Buffer.alloc(12),this.localNonce=E.Buffer.alloc(4),this.remoteNonce=E.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=x(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){x(i.hash(t)).copy(this._id8,0,0,8)}set_key(t){x(i.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=i.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r=64;){for(f=e[0],s=e[1],u=e[2],h=e[3],a=e[4],c=e[5],l=e[6],p=e[7],g=0;g<16;g++)d=i+4*g,t[g]=(255&n[d])<<24|(255&n[d+1])<<16|(255&n[d+2])<<8|255&n[d+3];for(g=16;g<64;g++)y=t[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=t[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,t[g]=(b+t[g-7]|0)+(w+t[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(r[g]+t[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;e[0]+=f,e[1]+=s,e[2]+=u,e[3]+=h,e[4]+=a,e[5]+=c,e[6]+=l,e[7]+=p,i+=64,o-=64}return i}const i=function(){function r(){this.digestLength=t,this.blockSize=e,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return r.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},r.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=n(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},r.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[r]=128;for(var e=r+1;e>>24&255,this.buffer[f-7]=i>>>16&255,this.buffer[f-6]=i>>>8&255,this.buffer[f-5]=i>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,n(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(e=0;e<8;e++)t[4*e+0]=this.state[e]>>>24&255,t[4*e+1]=this.state[e]>>>16&255,t[4*e+2]=this.state[e]>>>8&255,t[4*e+3]=this.state[e]>>>0&255;return this},r.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},r.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new i).update(t).finish(e).clean();else for(var r=0;r0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=c[t.charCodeAt(r)]<<2|c[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=c[t.charCodeAt(r)]<<10|c[t.charCodeAt(r+1)]<<4|c[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},h=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(a[e>>2]+a[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(a[e>>10]+a[e>>4&63]+a[e<<2&63]+"="));return i.join("")},a=[],c=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,g=p.length;y0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function b(t,e,r){for(var n,i,o=[],f=e;f>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63;var w,B,m={byteLength:s,toByteArray:u,fromByteArray:h},E={read:function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},write:function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g}},A=(w=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(J(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(J(t,ArrayBuffer)||t&&J(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(J(t,SharedArrayBuffer)||t&&J(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||J(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(t).length;default:if(i)return n?-1:V(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,r);case"utf8":case"utf-8":return L(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return U(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function U(t,e,r){return 0===e&&r===t.length?m.fromByteArray(t):m.fromByteArray(t.slice(e,r))}function L(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=I)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(J(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":case"latin1":case"binary":return B(this,t,e,r);case"base64":return A(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const I=4096;function T(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function O(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function R(t,e,r,n,i){z(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function M(t,e,r,n,i){z(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function H(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function x(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,4),E.write(t,e,r,n,23,4),r+4}function k(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,8),E.write(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||N(t,4,this.length),E.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),E.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),E.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),E.read(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=X((function(t,e=0){return R(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=X((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=X((function(t,e=0){return R(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=X((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return x(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return x(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function z(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new P.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){F(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||D(e,t.length-(r+1))}(n,i,o)}function F(t,e){if("number"!=typeof t)throw new P.ERR_INVALID_ARG_TYPE(e,"number",t)}function D(t,e,r){if(Math.floor(t)!==t)throw F(t,r),new P.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new P.ERR_BUFFER_OUT_OF_BOUNDS;throw new P.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}$("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),$("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),$("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=j(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=j(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const K=/[^+/0-9A-Za-z-_]/g;function V(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(t){return m.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function G(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function J(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function q(t){return t!=t}const Q=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function X(t){return"undefined"==typeof BigInt?W:t}function W(){throw new Error("BigInt not supported")}},w(B={exports:{}},B.exports),B.exports); +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const _=new TextEncoder,U=new TextDecoder,L=I;function I(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=A.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=A.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=A.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=A.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=A.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const T=v;function v(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=A.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=A.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=I(e,r);else if("string"==typeof e&&void 0===r)n=A.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof A.Buffer?e:A.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=A.Buffer.from(e);else if(ArrayBuffer.isView(e))n=A.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=A.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=A.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const C=S;function S(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?T(r,"N",t):T(r,t)}))}function N(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function O(t,e,r,n){const i=N(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return U.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(U.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(U.decode(t))}catch(t){console.log("err. obj parse")}}}function R(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=_.encode(t),o=i.byteLength,r=r+o+2}const s=A.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=L("16",o);return s.set(t,f+o),s}return s}function M(t,e){const r=e||X(t);if(!r)return;const n=A.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=O(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=O("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const H=x;function x(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return _.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return _.encode(JSON.stringify(t))}const k=P;function P(t,e=!1){const r=x(t,e);return e?A.Buffer.from(r.buffer,r.byteOffset,r.byteLength):A.Buffer.from(r)}const $=j;function j(...t){const e=t.map((t=>P(t)));return A.Buffer.concat(e)}const z=F;function F(...t){try{let e=0,r=0;const n=t.map((t=>x(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function D(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function K(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return Y(t,r)?r:0}return 0}function Q(t){const e=V(t);return t.subarray(0,e)}function X(t,e=!1){t instanceof ArrayBuffer&&(t=A.Buffer.from(t));const r=J(t);if(0===r)return;let n=Y(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=N(t[1])})),n):n:void 0}function W(...t){return Q(R(...t))}function Z(...t){return X(R(...t))}var tt=Object.freeze({__proto__:null,Buffer:A.Buffer,NB:L,numberBuffer:I,MB:T,metaBuffer:v,MBA:C,metaBufferArguments:S,parseTypeName:N,readTypedBuffer:O,pack:R,unpack:M,U8:H,parseUint8Array:x,B8:k,parseBuffer:P,B8pack:$,parseBufferThenConcat:j,U8pack:z,parseUint8ThenConcat:F,hex:D,equal:K,getBufferSize:V,parseMetaInfo:Y,TAIL_LEN:G,readTail:J,getMetaSize:q,getBuffer:Q,getMeta:X,rawPack:W,meta:Z,metaDetail:function(...t){return X(R(...t),!0)},getMetaDetail:function(t){return X(t,!0)}});f.hash=function(t){return f(H(t))},f.hex=function(t){return D(f.hash(t))},f.hmac=function(t,e){return function(t,e){const r=new o(t).update(e),n=r.digest();return r.clean(),n}(H(t),H(e))};const et=T;let rt={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in rt)rt[rt[t]]=t;const nt={AUTH_REQ:Z(et("header","8",0),et("reserved","8",0)),AUTH_NONCE:Z(et("header","8",0),et("unixTime","32L",0),et("milTime","32L",0),et("nonce",A.Buffer.alloc(4))),AUTH_HMAC:Z(et("header","8",0),et("id8",A.Buffer.alloc(8)),et("nonce",A.Buffer.alloc(4)),et("hmac32",A.Buffer.alloc(32))),AUTH_ACK:Z(et("header","8",0),et("hmac32",A.Buffer.alloc(32))),ENC_PACK:Z(et("type","8",0),et("len","32L",0),et("salt12",A.Buffer.alloc(12)),et("hmac",8,0)),ENC_488:Z(et("type","8",0),et("len","32L",0),et("otpSrc8",A.Buffer.alloc(8)),et("hmac8",A.Buffer.alloc(8)))};function it(t){let e=t[t.length-1];return e[2]+e[3]}const ot={AUTH_REQ:it(nt.AUTH_REQ),AUTH_NONCE:it(nt.AUTH_NONCE),AUTH_HMAC:it(nt.AUTH_HMAC),AUTH_ACK:it(nt.AUTH_ACK),ENC_PACK:it(nt.ENC_PACK),ENC_488:it(nt.ENC_488)};let ft=!1;try{ft="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function st(t){return ft?webcrypto.getRandomValues(A.Buffer.alloc(t)):self.crypto.getRandomValues(A.Buffer.alloc(t))}class ut{constructor(){this._id8=A.Buffer.alloc(8),this._otpSrc44=A.Buffer.alloc(44),this._otp36=A.Buffer.alloc(36),this._hmac=A.Buffer.alloc(32),this.auth_salt12=A.Buffer.alloc(12),this.localNonce=A.Buffer.alloc(4),this.remoteNonce=A.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=k(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){k(f.hash(t)).copy(this._id8,0,0,8)}set_key(t){k(f.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=f.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexport var digestLength = 32\nexport var blockSize = 64\n// SHA-256 constants\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n])\nfunction hashBlocks (w, v, p, pos, len) {\n let a, b, c, d, e, f, g, h, u, i, j, t1, t2\n while (len >= 64) {\n a = v[0]\n b = v[1]\n c = v[2]\n d = v[3]\n e = v[4]\n f = v[5]\n g = v[6]\n h = v[7]\n for (i = 0; i < 16; i++) {\n j = pos + i * 4\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff))\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2]\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10)\n u = w[i - 15]\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3)\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0)\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0\n h = g\n g = f\n f = e\n e = (d + t1) | 0\n d = c\n c = b\n b = a\n a = (t1 + t2) | 0\n }\n v[0] += a\n v[1] += b\n v[2] += c\n v[3] += d\n v[4] += e\n v[5] += f\n v[6] += g\n v[7] += h\n pos += 64\n len -= 64\n }\n return pos\n}\n// Hash implements SHA256 hash algorithm.\nconst Hash = /** @class */ (function () {\n function Hash () {\n this.digestLength = digestLength\n this.blockSize = blockSize\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8) // hash state\n this.temp = new Int32Array(64) // temporary state\n this.buffer = new Uint8Array(128) // buffer for data to hash\n this.bufferLength = 0 // number of bytes in buffer\n this.bytesHashed = 0 // number of total bytes hashed\n this.finished = false // indicates whether the hash was finalized\n this.reset()\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667\n this.state[1] = 0xbb67ae85\n this.state[2] = 0x3c6ef372\n this.state[3] = 0xa54ff53a\n this.state[4] = 0x510e527f\n this.state[5] = 0x9b05688c\n this.state[6] = 0x1f83d9ab\n this.state[7] = 0x5be0cd19\n this.bufferLength = 0\n this.bytesHashed = 0\n this.finished = false\n return this\n }\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0\n }\n this.reset()\n }\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\")\n }\n let dataPos = 0\n this.bytesHashed += dataLength\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64)\n this.bufferLength = 0\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength)\n dataLength %= 64\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n return this\n }\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n const bytesHashed = this.bytesHashed\n const left = this.bufferLength\n const bitLenHi = (bytesHashed / 0x20000000) | 0\n const bitLenLo = bytesHashed << 3\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128\n this.buffer[left] = 0x80\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength)\n this.finished = true\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff\n }\n return this\n }\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (let i = 0; i < this.state.length; i++) {\n out[i] = this.state[i]\n }\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (let i = 0; i < this.state.length; i++) {\n this.state[i] = from[i]\n }\n this.bytesHashed = bytesHashed\n this.finished = false\n this.bufferLength = 0\n }\n return Hash\n}())\nexport { Hash }\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nconst HMAC = /** @class */ (function () {\n function HMAC (key) {\n this.inner = new Hash()\n this.outer = new Hash()\n this.blockSize = this.inner.blockSize\n this.digestLength = this.inner.digestLength\n const pad = new Uint8Array(this.blockSize)\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean()\n } else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i]\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36\n }\n this.inner.update(pad)\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c\n }\n this.outer.update(pad)\n this.istate = new Uint32Array(8)\n this.ostate = new Uint32Array(8)\n this.inner._saveState(this.istate)\n this.outer._saveState(this.ostate)\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize)\n this.outer._restoreState(this.ostate, this.outer.blockSize)\n return this\n }\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (let i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0\n }\n this.inner.clean()\n this.outer.clean()\n }\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data)\n return this\n }\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out)\n } else {\n this.inner.finish(out)\n this.outer.update(out, this.digestLength).finish(out)\n }\n return this\n }\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n return HMAC\n}())\nexport { HMAC }\n// Returns SHA256 hash of data.\nexport function hash (data) {\n const h = (new Hash()).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Function hash is both available as module.hash and as default export.\nexport default hash\n// Returns HMAC-SHA256 of data under the key.\nexport function hmac (key, data) {\n const h = (new HMAC(key)).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer (buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n const num = counter[0]\n if (num === 0) {\n throw new Error('hkdf: cannot expand more')\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset()\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer)\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info)\n }\n // Hash in the counter.\n hmac.update(counter)\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer)\n // Increment counter inside typed array, this works properly.\n counter[0]++\n}\nconst hkdfSalt = new Uint8Array(digestLength) // Filled with zeroes.\nexport function hkdf (key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt }\n if (length === void 0) { length = 32 }\n const counter = new Uint8Array([1])\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(salt, key)\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n const hmac_ = new HMAC(okm)\n // Allocate buffer.\n const buffer = new Uint8Array(hmac_.digestLength)\n let bufpos = buffer.length\n const out = new Uint8Array(length)\n for (let i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter)\n bufpos = 0\n }\n out[i] = buffer[bufpos++]\n }\n hmac_.clean()\n buffer.fill(0)\n counter.fill(0)\n return out\n}\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nexport function pbkdf2 (password, salt, iterations, dkLen) {\n const prf = new HMAC(password)\n const len = prf.digestLength\n const ctr = new Uint8Array(4)\n const t = new Uint8Array(len)\n const u = new Uint8Array(len)\n const dk = new Uint8Array(dkLen)\n for (var i = 0; i * len < dkLen; i++) {\n const c = i + 1\n ctr[0] = (c >>> 24) & 0xff\n ctr[1] = (c >>> 16) & 0xff\n ctr[2] = (c >>> 8) & 0xff\n ctr[3] = (c >>> 0) & 0xff\n prf.reset()\n prf.update(salt)\n prf.update(ctr)\n prf.finish(u)\n for (var j = 0; j < len; j++) {\n t[j] = u[j]\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset()\n prf.update(u).finish(u)\n for (let k = 0; k < len; k++) {\n t[k] ^= u[k]\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j]\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0\n }\n prf.clean()\n return dk\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","import { Buffer } from 'buffer/index.js'\nexport { Buffer } // for iife reference MBP.Buffer\nconst encoder = new TextEncoder()\nconst decoder = new TextDecoder()\n\n\nexport const NB = numberBuffer\nexport function numberBuffer(type, initValue = 0) {\n let buffer\n if (type === undefined || typeof type !== 'string' || typeof initValue !== 'number') {\n throw TypeError('invlaid init variablie type name. ')\n }\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n buffer = Buffer.alloc(1)\n if (type.includes('I')) buffer.writeInt8(initValue)\n else buffer.writeUint8(initValue)\n } else if (type.includes('16')) {\n buffer = Buffer.alloc(2)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt16LE(initValue)\n else buffer.writeInt16BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint16LE(initValue)\n else buffer.writeUint16BE(initValue)\n }\n } else if (type.includes('32')) {\n buffer = Buffer.alloc(4)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt32LE(initValue)\n else buffer.writeInt32BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint32LE(initValue)\n else buffer.writeUint32BE(initValue)\n }\n } else if (type.includes('F')) {\n buffer = Buffer.alloc(4)\n if (type.includes('L')) {\n buffer.writeFloatLE(initValue)\n } else {\n buffer.writeFloatBE(initValue)\n }\n } else if (type.includes('N')) { // number as string\n buffer = Buffer.from(String(initValue))\n } else {\n console.log(`invalid type: ${type} or initvalue: ${initValue}`)\n }\n return buffer\n}\n\n\nexport const MB = metaBuffer\nexport function metaBuffer(name, typeOrData, initValue) {\n let buffer\n let bufferType = 'B'\n if (typeof typeOrData === 'number') {\n if (typeof initValue === 'number') { // initValue 0 should be passed.\n buffer = Buffer.alloc(typeOrData)\n if( initValue !== 0) buffer.fill(initValue)\n bufferType = 'B'\n } else {\n buffer = Buffer.from(String(typeOrData))\n bufferType = 'N'\n }\n } else if (typeof typeOrData === 'string' && typeof initValue === 'number') { // number with type.\n bufferType = typeOrData.toUpperCase() // use explicit type name\n buffer = numberBuffer(typeOrData, initValue) // notice. two categories. n: number string. 8, 16, 32: typed number.\n } else if (typeof typeOrData === 'string' && initValue === undefined) { // string buffer\n buffer = Buffer.from(typeOrData)\n bufferType = 'S'\n } else if (typeOrData instanceof Uint8Array && initValue === undefined) { // buffer | Uint8Array\n // Buffer.from: Copies the passed buffer data onto a new Buffer instance.\n // typecasting Uint8Array to Buffer.\n buffer = (typeOrData instanceof Buffer) ? typeOrData : Buffer.from(typeOrData)\n } else if (typeOrData instanceof ArrayBuffer && initValue === undefined) { // arrayBuffer\n // Notice. typedArray is recommended instead of arrayBuffer\n buffer = Buffer.from(typeOrData)\n } else if (ArrayBuffer.isView(typeOrData)) { // typedarray buffer\n buffer = Buffer.from(typeOrData.buffer, typeOrData.byteOffset, typeOrData.byteLength)\n } else if (typeof typeOrData === 'object' && initValue === undefined) { // object. like array. stringify\n buffer = Buffer.from(JSON.stringify(typeOrData))\n bufferType = 'O'\n } else if (typeof typeOrData === 'boolean' && initValue === undefined) { // object. like array. stringify\n const v = typeOrData ? 1 : 0\n buffer = Buffer.from([v])\n bufferType = '!'\n } else {\n throw TypeError('invalid meta buffer type')\n }\n\n if (typeof name === 'string' && name.includes('#')) name = '' //\n\n return [name, bufferType, buffer]\n}\n\nexport const MBA = metaBufferArguments\nexport function metaBufferArguments(...args) {\n let i = 0\n const mba = args.map(\n data => {\n const argsIndex = i++\n // tip. MBA use index number as metabuffer's property name.\n if (typeof data === 'number') {\n // * JS's primitive Number stored as string.\n return MB(argsIndex, 'N', data)\n } else {\n // typedarray, dataview, array, object, boolean\n return MB(argsIndex, data)\n }\n })\n\n return mba\n}\n\nexport function parseTypeName(type) {\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n if (type.includes('I')) {\n return 'int8'\n } else {\n return 'uint8'\n }\n } else if (type.includes('16')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int16_le'\n } else {\n return 'int16_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint16_le'\n } else {\n return 'uint16_be'\n }\n }\n } else if (type.includes('32')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int32_le'\n } else {\n return 'int32_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint32_le'\n } else {\n return 'uint32_be'\n }\n }\n } else if (type.includes('F')) {\n if (type.includes('L')) {\n return 'float_le'\n } else {\n return 'float_be'\n }\n } else if (type === 'B') {\n return 'buffer'\n } else if (type === 'S') { // string or arguments\n return 'string'\n } else if (type === 'N') { // number encoded as string\n return 'number'\n } else if (type === 'O') { // object encoded string\n return 'object'\n } else if (type === '!') { // boolean 1:true 0:false\n return 'boolean'\n } else {\n throw TypeError('invalid data type')\n }\n\n}\n\nexport function readTypedBuffer(simpleType, buffer, offset, length) {\n\n const type = parseTypeName(simpleType)\n\n if (type == 'int8') return buffer.readInt8(offset)\n else if (type === 'uint8') return buffer.readUint8(offset)\n else if (type === 'int16_le') return buffer.readInt16LE(offset)\n else if (type === 'int16_be') return buffer.readInt16BE(offset)\n else if (type === 'uint16_le') return buffer.readUint16LE(offset)\n else if (type === 'uint16_be') return buffer.readUint16BE(offset)\n else if (type === 'int32_le') return buffer.readInt32LE(offset)\n else if (type === 'int32_be') return buffer.readInt32BE(offset)\n else if (type === 'uint32_le') return buffer.readUint32LE(offset)\n else if (type === 'uint32_be') return buffer.readUint32BE(offset)\n else if (type === 'float_le') return buffer.readFloatLE(offset)\n else if (type === 'float_be') return buffer.readFloatBE(offset)\n\n else if (type === 'buffer') {\n return buffer.subarray(offset, offset + length)\n } else if (type === 'string') {\n const strBuffer = buffer.subarray(offset, offset + length)\n return decoder.decode(strBuffer)\n } else if (type === 'number') {\n const strNumber = buffer.subarray(offset, offset + length)\n return Number(decoder.decode(strNumber))\n } else if (type === 'object') {\n const objEncoded = buffer.subarray(offset, offset + length)\n try {\n return JSON.parse(decoder.decode(objEncoded))\n } catch (error) {\n console.log('err. obj parse')\n }\n } else if (type === 'boolean') {\n const v = buffer.readInt8(offset)\n return v === 1\n } else {\n throw TypeError('invalid data')\n }\n}\n\nfunction flatSubArray(args) {\n let subArr = []\n const mainArr = args.filter(item => {\n if (Array.isArray(item[0])) subArr = subArr.concat(item)\n else return item\n })\n return mainArr.concat(subArr)\n}\n\nexport function pack(...args) {\n const bufArr = flatSubArray(args)\n let size = 0\n const info = []\n let offset = 0\n\n bufArr.forEach(bufPack => {\n const [name, type, data] = bufPack\n size += data.byteLength\n\n if (typeof name === 'number' || name.length > 0) {\n // MBA item use number type name.\n // MB item use string type name. null string means omit.\n \n // change to store more informative meta info. \n info.push([name, type, offset, data.byteLength]) \n \n }\n offset = size\n })\n\n\n let infoEncoded\n let infoSize\n\n if (info.length > 0) {\n let infoStr = JSON.stringify(info)\n // console.log('pack infoStr , size:', infoStr , infoStr.length )\n infoEncoded = encoder.encode(infoStr)\n infoSize = infoEncoded.byteLength\n size = size + infoSize + 2\n }\n\n const buffer = Buffer.alloc(size)\n offset = 0\n bufArr.forEach(bufPack => {\n const buf = bufPack[2]\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n\n if (info.length > 0) {\n buffer.set(infoEncoded, offset)\n const infoSizeBuff = NB('16', infoSize)\n buffer.set(infoSizeBuff, offset + infoSize)\n return buffer\n } else {\n return buffer\n }\n}\n\n\n/**\n * unpack() will use embeded meta info from the binary pack. \n * You can specify (optional) meta obejct. \n * (It's useful to read pure buffer data.)\n * \n * You can get the meta object from: getFrame(pack) , meta()\n * @param {Buffer|Uint8Array} binPack binaryData\n * @param {Object} meta *OPTION* \n * @returns {Object|undefined} success: return Object (include buffer data). fail: return undefined\n */\nexport function unpack(binPack, meta) {\n\n const infoArr = meta || getMeta(binPack)\n if (!infoArr) return\n\n const buffer = Buffer.from(binPack)\n const binObj = {}\n let readCounter = 0\n infoArr.forEach(bufPack => {\n const [name, type, offset, length] = bufPack\n binObj[name] = readTypedBuffer(type, buffer, offset, length)\n // console.log( '###3 len',length )\n if( length) readCounter += length\n })\n\n // Can not define meta for variable size buffer \n // unpacker support automatic property to read left(did't read) buffers.\n // console.log(\"######, unpack: buffer \" , readCounter, buffer ,buffer.byteLength)\n if( meta && buffer.byteLength !== readCounter ){\n let leftSize = buffer.byteLength - readCounter\n // console.log('total,left buffer size', buffer.byteLength, leftSize )\n binObj[\"$OTHERS\"] = readTypedBuffer('b', buffer, readCounter, leftSize)\n }\n\n // set args with values if exist.\n let mbaIndex = 0;\n let args = [];\n while( binObj[mbaIndex]){\n args.push( binObj[mbaIndex++])\n }\n \n if( args.length > 0 ) {\n binObj.args = args \n binObj.$ = binObj.args \n }\n\n return binObj\n\n}\n\n\n\nexport const U8 = parseUint8Array //alias\n/**\n * \n * @param {any} data \n * @param {Boolean} shareArrayBuffer false(default): return new( or copied) ArrayBuffer. true: share the input data's arrayBuffer.\n * @returns {Uint8Array}\n */\nexport function parseUint8Array(data, shareArrayBuffer = false) {\n if (data === undefined) throw TypeError('Invalid data type: Undefined')\n if (typeof data === 'string') {\n return encoder.encode(data)\n } else if (typeof data === 'number') { // number -> 1 byte uint8array(number)\n return Uint8Array.from([data])\n } else if (data instanceof ArrayBuffer) { // arraybuffer -> wrap uint8array(ab)\n if (shareArrayBuffer) {\n return new Uint8Array(data)\n } else {\n const originData = new Uint8Array(data)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else if (ArrayBuffer.isView(data)) { // accept Buffer too.\n if (shareArrayBuffer) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength) // DataView, TypedArray > uint8array( use offset, length )\n } else {\n // new memory to protect origin arraybuffer.\n const originData = new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else { // array, object\n return encoder.encode(JSON.stringify(data)) // object(array.. ) > JSON.str > encode > unint8array\n }\n}\n\nexport const B8 = parseBuffer\n\nexport function parseBuffer(data, shareArrayBuffer = false) {\n\n const u8 = parseUint8Array(data, shareArrayBuffer)\n if( shareArrayBuffer){\n return Buffer.from( u8.buffer, u8.byteOffset, u8.byteLength )\n }else{\n return Buffer.from(u8)\n }\n}\n\nexport const B8pack = parseBufferThenConcat\nexport function parseBufferThenConcat(...dataArray) {\n const buffers = dataArray.map(data => parseBuffer(data))\n return Buffer.concat( buffers)\n}\n\n\nexport const U8pack = parseUint8ThenConcat // alias\n/**\n * 1. parse list of data into U8 list\n * 2. return new Uint8Array merged.\n * @param {...any} dataArray \n * @returns \n */\nexport function parseUint8ThenConcat(...dataArray) {\n try {\n let bufferSize = 0\n let offset = 0\n const buffers = dataArray.map(data => parseUint8Array(data))\n buffers.forEach(buf => { bufferSize += buf.byteLength })\n const buffer = new Uint8Array(bufferSize)\n buffers.forEach(buf => {\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n return buffer\n } catch (error) {\n console.log(error)\n }\n}\n\nexport function hex(buffer) {\n return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')\n}\n\nexport function equal(buf1, buf2) {\n if (buf1.byteLength !== buf2.byteLength) return false\n for (let i = 0; i < buf1.byteLength; i++) {\n if (buf1[i] !== buf2[i]) return false\n }\n return true\n}\n\n\n\n\nexport function getBufferSize(binPack) {\n if (getMetaSize(binPack) === 0) {\n return binPack.byteLength\n } else {\n return binPack.byteLength - getMetaSize(binPack) - TAIL_LEN\n }\n\n}\n\n// MB and MBA \nexport function parseMetaInfo(binPack, infoSize) {\n let info;\n try {\n const buffer = new Uint8Array(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoFrom = buffer.byteLength - infoSize - 2\n const infoEncoded = buffer.subarray(infoFrom, buffer.byteLength - 2)\n const decoded = decoder.decode(infoEncoded)\n const info = JSON.parse(decoded)\n\n if (!Array.isArray(info) || !Array.isArray(info[0])) return\n\n let firstItem = info[0]\n if (!firstItem) return\n\n if (firstItem.length < 3) return\n const [name, type, offset] = firstItem\n\n if ( typeof type !== 'string' || typeof offset !== 'number') return\n\n return info\n } catch (error) {\n // return undefined\n }\n}\n\n\n/** \n * Meta buffer pack Tail:\n * binary Pack include TAIL(two bytes size) info at the end if it has JSON info.\n * not include TAIL if it has not JSON.\n */\nexport const TAIL_LEN = 2\n\n/**\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @returns {Number} last two byte value( read Uint16 bigendian )\n */\nexport function readTail(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n if (binPack.byteLength <= TAIL_LEN) return 0\n\n const dv = new DataView(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoSize = dv.getUint16(binPack.byteLength - TAIL_LEN) // last 2 bytes for json-info-length.\n return infoSize\n\n } else {\n // throw TypeError('invalid data type.')\n return 0\n }\n\n}\n\n\n// binay data pack is not always Buffer. \n// It should accept Uint8Array binPack.\n// This function don't use Buffer method.\n\nexport function getMetaSize(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n\n const size = binPack.byteLength\n if (size <= TAIL_LEN) return 0\n\n //1. tail size check\n const infoSize = readTail(binPack)\n if (infoSize === 0 || infoSize > size) return 0\n //2. try parse JSON \n const success = parseMetaInfo(binPack, infoSize)\n //3. return success: jsonInfoSize, fail: 0\n if (success) return infoSize\n else return 0\n }else{\n return 0\n }\n}\n\n\n/**\n * \n * @param {Buffer|Uint8Array} binPack \n * @returns {Buffer} \n */\nexport function getBuffer(binPack) {\n const rawBufferSize = getBufferSize(binPack)\n return binPack.subarray(0, rawBufferSize)\n}\n\n\n\n/**\n * extract Meta info object if it has.\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @param {Boolean} showDetail add additional item info: full data type name and bytelength.\n * @returns {Object|undefined} success: return MetaInfo Object. fail: return undefined.(No valid JSON included.)\n */\nexport function getMeta(binPack, showDetail = false) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n const infoSize = readTail(binPack)\n if (infoSize === 0) return\n\n // check valid Meta\n let metaInfo = parseMetaInfo(binPack, infoSize)\n if (!metaInfo) return\n\n if (!showDetail) {\n return metaInfo\n } else {\n // add additional info\n metaInfo.forEach(bufPack => {\n const len = bufPack[3]\n if (len == undefined) { // add size info.\n if (bufPack[1].includes('8')) bufPack[3] = 1\n else if (bufPack[1].includes('16')) bufPack[3] = 2\n else if (bufPack[1].includes('32')) bufPack[3] = 4\n else if (bufPack[1].includes('F')) bufPack[3] = 4\n else if (bufPack[1].includes('!')) bufPack[3] = 1\n }\n bufPack[4] = parseTypeName(bufPack[1]) // add full-type-name.\n })\n return metaInfo\n }\n}\n\nexport function rawPack( ...args){\n return getBuffer( pack(...args) )\n}\n\nexport function meta( ...args){\n return getMeta( pack(...args) )\n}\n\nexport function metaDetail( ...args){\n return getMeta( pack(...args) , true)\n}\n\n\n\nexport function getMetaDetail(binPack) {\n return getMeta(binPack, true)\n}\n","import { hash as sha256, hmac } from '../lib/fast-sha256.js'\nimport { MBP } from 'meta-buffer-pack'\n\nsha256.hash = function (data) {\n return sha256(MBP.U8(data))\n}\n\nsha256.hex = function (data) {\n return MBP.hex(sha256.hash(data))\n}\n\nsha256.hmac = function (key, data) {\n return hmac(MBP.U8(key), MBP.U8(data))\n}\n\nexport { sha256 }\n","import{ MBP, Buffer} from \"meta-buffer-pack\"\nconst MB = MBP.MB\n\n\n// remocon message pack one byte header. \nexport let BohoMsg = {\n AUTH_REQ : 0xB0, \n AUTH_NONCE: 0xB1,\n AUTH_HMAC: 0xB2,\n AUTH_ACK: 0xB3,\n AUTH_FAIL: 0xB4,\n AUTH_EXT: 0xB5,\n ENC_PACK : 0xB6, \n ENC_E2E : 0xB7, \n ENC_488 : 0xB8\n}\n\nfor (let c in BohoMsg) { BohoMsg[BohoMsg[c]] = c }\n\nexport const Meta = {\n\n AUTH_REQ: MBP.meta( // 2\n MB('header','8', 0),\n MB('reserved','8', 0)\n ),\n\n AUTH_NONCE: MBP.meta( // 13\n MB('header','8', 0),\n MB('unixTime','32L', 0),\n MB('milTime','32L', 0 ),\n MB('nonce', Buffer.alloc(4))\n ),\n\n AUTH_HMAC: MBP.meta( // 45\n MB('header','8', 0),\n MB('id8',Buffer.alloc(8)),\n MB('nonce', Buffer.alloc(4)),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n AUTH_ACK: MBP.meta( // 33\n MB('header','8', 0),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n\n ENC_PACK: MBP.meta( //25 + payload\n MB('type','8',0),\n MB('len','32L',0), // pure xdata size. \n MB('salt12', Buffer.alloc(12)), // sec,mil,rand\n MB('hmac',8,0)\n // MB( 'xdata', encData )\n ),\n\n\n ENC_488: MBP.meta( // 21 + payload\n MB('type','8', 0 ),\n MB('len','32L', 0 ),\n MB('otpSrc8', Buffer.alloc(8) ),\n MB('hmac8', Buffer.alloc(8) )\n // MB('xdata', encData ) \n )\n\n\n }\n\n\n function getMetaSize(meta){\n let lastItem = meta[ meta.length - 1]\n return lastItem[2] + lastItem[3]\n }\n\n export const MetaSize = {\n AUTH_REQ: getMetaSize( Meta.AUTH_REQ ),\n AUTH_NONCE: getMetaSize( Meta.AUTH_NONCE ),\n AUTH_HMAC: getMetaSize( Meta.AUTH_HMAC ),\n AUTH_ACK: getMetaSize( Meta.AUTH_ACK ),\n ENC_PACK: getMetaSize( Meta.ENC_PACK ),\n ENC_488: getMetaSize( Meta.ENC_488 )\n }\n\n// console.log( 'boho MetaSize', MetaSize )\n// boho MetaSize {\n// AUTH_REQ: 2,\n// AUTH_NONCE: 13,\n// AUTH_HMAC: 45,\n// AUTH_ACK: 33,\n// ENC_PACK: 25,\n// ENC_488: 21\n// }","import { sha256 } from './sha256-mbp.js'\nimport { MBP, Buffer } from 'meta-buffer-pack'\nexport { sha256, MBP, Buffer }\n\nimport { webcrypto } from 'crypto'\nimport { BohoMsg, Meta, MetaSize } from \"./constants.js\"\nexport { BohoMsg, Meta, MetaSize }\n\nlet isNode = false\ntry {\n isNode = Object.prototype.toString.call(global.process) === '[object process]'\n} catch (e) { }\n\n\nexport function RAND(size) {\n if( isNode ){\n return webcrypto.getRandomValues(Buffer.alloc(size))\n }else{\n return self.crypto.getRandomValues(Buffer.alloc(size))\n }\n}\n\n\n\nexport class Boho {\n // A. Core\n constructor() {\n\n this._id8 = Buffer.alloc(8)\n this._otpSrc44 = Buffer.alloc(44)\n this._otp36 = Buffer.alloc(36)\n this._hmac = Buffer.alloc(32)\n\n this.auth_salt12 = Buffer.alloc(12)\n this.localNonce = Buffer.alloc(4)\n this.remoteNonce = Buffer.alloc(4)\n this.isAuthorized = false\n\n }\n\n clearAuth(){\n this._id8.fill(0)\n this._otpSrc44.fill(0)\n this._otp36.fill(0)\n this._hmac.fill(0)\n this.auth_salt12.fill(0)\n this.localNonce.fill(0)\n this.remoteNonce.fill(0)\n this.isAuthorized = false\n }\n\n // for the self\n set_id8(data) {\n let encStr = MBP.B8(data)\n this._id8.fill(0)\n encStr.copy(this._id8, 0, 0, 8)\n }\n\n set_hash_id8(data) {\n let idSum = MBP.B8(sha256.hash(data))\n idSum.copy(this._id8, 0, 0, 8)\n }\n\n\n set_key(data) {\n let keySum = MBP.B8(sha256.hash(data))\n keySum.copy(this._otpSrc44, 0, 0, 32)\n }\n\n // for the remote client.\n copy_id8(data) {\n data.copy(this._id8, 0, 0, 8)\n }\n\n // for the remote client.\n copy_key(data) {\n data.copy(this._otpSrc44, 0, 0, 32)\n }\n\n\n sha256_n(srcData, n) {\n let hashSum = sha256.hash(srcData)\n for (let i = 0; i < n; i++) hashSum = sha256.hash(hashSum)\n return hashSum\n }\n\n\n // useful general encryption i.e. enc_pack\n set_clock_rand() {\n\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n RAND(4)\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n // for secure communication sender. \n set_clock_nonce(nonce) {\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n nonce\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n\n set_salt12(salt12) {\n salt12.copy(this._otpSrc44, 32)\n }\n\n resetOTP() {\n let otp32 = MBP.B8(sha256.hash(this._otpSrc44))\n otp32.copy(this._otp36, 0, 0, 32)\n }\n\n getIndexOTP(otpIndex) {\n this._otp36.writeUInt32LE(otpIndex, 32)\n return sha256.hash(this._otp36)\n }\n\n\n generateHMAC(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n }\n\n // return 8 bytes of hash\n getHMAC8(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n return this._hmac.subarray(0, 8)\n }\n\n xotp(data, otpStartIndex = 0, shareDataBuffer = false) {\n\n data = MBP.B8(data, shareDataBuffer)\n\n let len = data.byteLength\n let otpIndex = otpStartIndex\n let dataOffset = 0\n let xorCalcLen = 0\n\n while (len > 0) {\n xorCalcLen = len < 32 ? len : 32\n let iotp = this.getIndexOTP(++otpIndex);\n for (let i = 0; i < xorCalcLen; i++) {\n data[dataOffset++] ^= iotp[i]\n }\n len -= 32\n }\n return data\n }\n\n // B. AUTH process\n\n // step 1\n // client send AUTH_REQ\n auth_req() {\n return MBP.pack(\n MBP.MB('#type', '8', BohoMsg.AUTH_REQ),\n MBP.MB('#reserved', '8', 0)\n )\n }\n\n // step 2\n // server send AUTH_NONCE\n auth_nonce() {\n let now = Date.now()\n let unixTime = Math.floor(now / 1000)\n let milTime = now % 1000\n this.localNonce = RAND(4)\n this.auth_salt12 = Buffer.concat([\n MBP.NB('32L', unixTime),\n MBP.NB('32L', milTime),\n this.localNonce\n ])\n\n let infoPack = Buffer.concat([\n MBP.NB('8', BohoMsg.AUTH_NONCE),\n this.auth_salt12\n ])\n return infoPack\n }\n\n\n // step 3\n // client send AUTH_HMAC\n // input : auth_nonce buffer\n auth_hmac(buffer) {\n let auth_nonce = MBP.unpack(buffer, Meta.AUTH_NONCE)\n if (auth_nonce) {\n // console.log(' auth nonce', auth_nonce )\n\n // let now = Date.now()\n // let localUTC= Math.floor( now/ 1000 )\n // let localMilTime = now % 1000\n\n // console.log('time server [sec]', auth_nonce.unixTime, auth_nonce.milTime )\n // console.log('time client [sec]', localUTC , localMilTime )\n // console.log('time diff client and server[sec]', auth_nonce.unixTime - localUTC )\n\n // let serverSecMil = auth_nonce.unixTime * 1000 + auth_nonce.milTime\n // console.log('time diff msec client and server[msec]', serverSecMil - now )\n\n let salt12 = Buffer.concat([\n MBP.NB('32L', auth_nonce.unixTime),\n MBP.NB('32L', auth_nonce.milTime),\n auth_nonce.nonce\n ])\n\n this.set_salt12(salt12)\n\n this.localNonce = RAND(4)\n // hmac( key, sec,mil,serverNonce, localNonce)\n this.generateHMAC(this.localNonce)\n\n // let hmac8 = this._hmac.subarray(0, 8)\n\n this.remoteNonce = auth_nonce.nonce\n\n let auth_hmac_buffer = MBP.pack( // 21 -> 45\n MBP.MB('#header', '8', BohoMsg.AUTH_HMAC),\n MBP.MB('#id8', this._id8),\n MBP.MB('#nonce', this.localNonce),\n MBP.MB('#hmac32', this._hmac ), //full 32bytes hash\n )\n\n return auth_hmac_buffer\n }\n return false\n }\n\n /* \n step 4. for server\n \n step 4-1. check client's auth_hmac\n step 4-2. reply result\n send AUTH_ACK with another HMAC for client.\n or send AUTH_FAIL when fail.\n */\n\n // input: unpack object or buffer of auth_hmac\n check_auth_hmac(data) {\n let infoPack\n if (data instanceof Uint8Array) {\n infoPack = MBP.unpack(data, Meta.AUTH_HMAC)\n if (!infoPack) {\n // console.log('auth_hamc unpack fail.')\n return\n }\n } else {\n infoPack = data;\n\n }\n // console.log('auth_hamc infoObj', infoPack )\n\n this.set_salt12(this.auth_salt12)\n\n // hmac( key, sec,mil,serverNonce, clientNonce)\n this.generateHMAC(infoPack.nonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n\n if (MBP.equal(infoPack.hmac32, hmac32)) {\n //Auth success then store client nonce.\n this.remoteNonce = infoPack.nonce\n\n let salt12 = Buffer.concat([\n this.localNonce,\n this.remoteNonce,\n this.localNonce\n ])\n this.set_salt12(salt12)\n this.generateHMAC(infoPack.nonce)\n let replyHMAC = this._hmac\n\n let auth_ack = MBP.rawPack( \n MBP.MB('header', '8', BohoMsg.AUTH_ACK),\n MBP.MB('hmac32', replyHMAC)\n )\n this.isAuthorized = true\n return auth_ack\n }\n return false\n }\n\n\n\n // step 5. cross check\n // client check server's hmac. \n check_auth_ack_hmac(buffer) {\n // server response has hmac ( key + clientNonce)\n let auth_ack = MBP.unpack(buffer, Meta.AUTH_ACK)\n if (auth_ack) {\n let salt12 = Buffer.concat([\n this.remoteNonce,\n this.localNonce,\n this.remoteNonce,\n ])\n this.set_salt12(salt12)\n this.generateHMAC(this.localNonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n //server side hmac using client nonce.\n if (MBP.equal(hmac32, auth_ack.hmac32)) {\n this.isAuthorized = true\n return true\n }\n }\n // server hmac error\n return\n }\n\n // C. Secure Communication\n\n // Must AUTH first.\n encrypt_488(data) { // payload max about 2^32 bytes.\n if (!this.isAuthorized) return\n\n data = MBP.B8(data)\n\n this.set_clock_nonce(this.remoteNonce)\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_488),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#otpSrc8', this._otpSrc44.subarray(32, 40)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n // console.log('enc pack result', pack )\n return pack\n }\n\n\n decrypt_488(data) {\n data = MBP.B8(data)\n\n let pack = MBP.unpack(data, Meta.ENC_488)\n\n if (pack) {\n\n let salt12 = Buffer.concat([\n pack.otpSrc8,\n this.localNonce\n ])\n\n this.set_salt12(salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS.subarray(0, pack.len)\n let decData = this.xotp(xdata)\n\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(hmac8, pack.hmac8)) return decData\n\n // console.log('hmac dismatch', decData )\n } else {\n // console.log('unpack fail')\n }\n }\n\n\n // maxium data size is 2**32 -1 bytes.\n encryptPack(data) {\n data = MBP.B8(data)\n\n this.set_clock_rand()\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_PACK),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#salt12', this._otpSrc44.subarray(32)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n return pack\n }\n\n\n decryptPack(data) {\n\n if (data[0] !== BohoMsg.ENC_PACK) {\n // console.log('Boho: Invalid packType')\n return\n }\n\n // packLength\n let readPackLen = data.readUint32LE(1);\n if (readPackLen != data.byteLength - MetaSize.ENC_PACK) {\n // console.log('Boho: Invalid LEN data_len: data.byteLen' , readPackLen, data.byteLength)\n return\n }\n\n try {\n let pack = MBP.unpack(data, Meta.ENC_PACK)\n // console.log('unpack result', pack )\n if (!pack) return\n\n this.set_salt12(pack.salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS\n let decData = this.xotp(xdata)\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(pack.hmac, hmac8)) {\n pack.data = decData\n return pack\n }\n // console.log('Invalid HMAC', pack.hmac, hmac8 )\n\n } catch (error) {\n // console.log('Boho: unpack err', error )\n\n }\n }\n\n encrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let pack = this.encryptPack(data)\n this._otpSrc44.set(baseKey)\n return pack;\n }\n\n decrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let decPack = this.decryptPack(data)\n this._otpSrc44.set(baseKey)\n return decPack\n }\n\n}\n"],"names":["K","Uint32Array","hashBlocks","w","v","p","pos","len","a","b","c","d","e","f","g","h","u","i","j","t1","t2","Hash","this","digestLength","blockSize","state","Int32Array","temp","buffer","Uint8Array","bufferLength","bytesHashed","finished","reset","prototype","clean","length","update","data","dataLength","Error","dataPos","finish","out","left","bitLenHi","bitLenLo","padLength","digest","_saveState","_restoreState","from","HMAC","key","inner","outer","pad","istate","ostate","hash","byteLength_1","b64","lens","getLens","validLen","placeHoldersLen","toByteArray_1","tmp","arr","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray_1","uint8","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Array","code","indexOf","start","end","num","output","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","s","NaN","Infinity","Math","pow","value","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","y","concat","list","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","encoder","TextEncoder","decoder","TextDecoder","NB","numberBuffer","initValue","toUpperCase","MB","metaBuffer","typeOrData","bufferType","JSON","stringify","MBA","metaBufferArguments","args","map","argsIndex","parseTypeName","readTypedBuffer","simpleType","strBuffer","decode","strNumber","objEncoded","parse","pack","bufArr","subArr","filter","item","flatSubArray","info","infoEncoded","infoSize","forEach","bufPack","infoStr","encode","infoSizeBuff","unpack","binPack","meta","infoArr","getMeta","binObj","readCounter","leftSize","mbaIndex","$","U8","parseUint8Array","shareArrayBuffer","originData","dataCopy","B8","parseBuffer","u8","B8pack","parseBufferThenConcat","dataArray","buffers","U8pack","parseUint8ThenConcat","bufferSize","hex","equal","buf1","buf2","getBufferSize","getMetaSize","TAIL_LEN","parseMetaInfo","infoFrom","decoded","firstItem","readTail","DataView","getUint16","getBuffer","rawBufferSize","showDetail","metaInfo","rawPack","sha256","MBP.U8","MBP.hex","hmac","MBP.MB","BohoMsg","AUTH_REQ","AUTH_NONCE","AUTH_HMAC","AUTH_ACK","AUTH_FAIL","AUTH_EXT","ENC_PACK","ENC_E2E","ENC_488","Meta","MBP.meta","lastItem","MetaSize","isNode","global","process","RAND","webcrypto","getRandomValues","self","crypto","Boho","_id8","_otpSrc44","_otp36","_hmac","auth_salt12","localNonce","remoteNonce","isAuthorized","clearAuth","set_id8","encStr","MBP.B8","set_hash_id8","set_key","copy_id8","copy_key","sha256_n","srcData","hashSum","set_clock_rand","milTime","Date","now","secTime","MBP.NB","set_clock_nonce","nonce","set_salt12","salt12","resetOTP","getIndexOTP","otpIndex","generateHMAC","hmacSrc","getHMAC8","xotp","otpStartIndex","shareDataBuffer","dataOffset","xorCalcLen","iotp","auth_req","MBP.pack","auth_nonce","unixTime","auth_hmac","MBP.unpack","check_auth_hmac","infoPack","hmac32","MBP.equal","replyHMAC","auth_ack","MBP.rawPack","check_auth_ack_hmac","encrypt_488","hmac8","encData","decrypt_488","otpSrc8","xdata","$OTHERS","decData","encryptPack","decryptPack","encrypt_e2e","baseKey","decrypt_e2e","decPack"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"boho.esm.js","sources":["../lib/fast-sha256.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/meta-buffer-pack/src/meta-buffer-pack.js","../src/sha256-mbp.js","../src/constants.js","../src/boho.js"],"sourcesContent":["// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexport var digestLength = 32\nexport var blockSize = 64\n// SHA-256 constants\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n])\nfunction hashBlocks (w, v, p, pos, len) {\n let a, b, c, d, e, f, g, h, u, i, j, t1, t2\n while (len >= 64) {\n a = v[0]\n b = v[1]\n c = v[2]\n d = v[3]\n e = v[4]\n f = v[5]\n g = v[6]\n h = v[7]\n for (i = 0; i < 16; i++) {\n j = pos + i * 4\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff))\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2]\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10)\n u = w[i - 15]\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3)\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0)\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0\n h = g\n g = f\n f = e\n e = (d + t1) | 0\n d = c\n c = b\n b = a\n a = (t1 + t2) | 0\n }\n v[0] += a\n v[1] += b\n v[2] += c\n v[3] += d\n v[4] += e\n v[5] += f\n v[6] += g\n v[7] += h\n pos += 64\n len -= 64\n }\n return pos\n}\n// Hash implements SHA256 hash algorithm.\nconst Hash = /** @class */ (function () {\n function Hash () {\n this.digestLength = digestLength\n this.blockSize = blockSize\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8) // hash state\n this.temp = new Int32Array(64) // temporary state\n this.buffer = new Uint8Array(128) // buffer for data to hash\n this.bufferLength = 0 // number of bytes in buffer\n this.bytesHashed = 0 // number of total bytes hashed\n this.finished = false // indicates whether the hash was finalized\n this.reset()\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667\n this.state[1] = 0xbb67ae85\n this.state[2] = 0x3c6ef372\n this.state[3] = 0xa54ff53a\n this.state[4] = 0x510e527f\n this.state[5] = 0x9b05688c\n this.state[6] = 0x1f83d9ab\n this.state[7] = 0x5be0cd19\n this.bufferLength = 0\n this.bytesHashed = 0\n this.finished = false\n return this\n }\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0\n }\n this.reset()\n }\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\")\n }\n let dataPos = 0\n this.bytesHashed += dataLength\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64)\n this.bufferLength = 0\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength)\n dataLength %= 64\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n return this\n }\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n const bytesHashed = this.bytesHashed\n const left = this.bufferLength\n const bitLenHi = (bytesHashed / 0x20000000) | 0\n const bitLenLo = bytesHashed << 3\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128\n this.buffer[left] = 0x80\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength)\n this.finished = true\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff\n }\n return this\n }\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (let i = 0; i < this.state.length; i++) {\n out[i] = this.state[i]\n }\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (let i = 0; i < this.state.length; i++) {\n this.state[i] = from[i]\n }\n this.bytesHashed = bytesHashed\n this.finished = false\n this.bufferLength = 0\n }\n return Hash\n}())\nexport { Hash }\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nconst HMAC = /** @class */ (function () {\n function HMAC (key) {\n this.inner = new Hash()\n this.outer = new Hash()\n this.blockSize = this.inner.blockSize\n this.digestLength = this.inner.digestLength\n const pad = new Uint8Array(this.blockSize)\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean()\n } else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i]\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36\n }\n this.inner.update(pad)\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c\n }\n this.outer.update(pad)\n this.istate = new Uint32Array(8)\n this.ostate = new Uint32Array(8)\n this.inner._saveState(this.istate)\n this.outer._saveState(this.ostate)\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize)\n this.outer._restoreState(this.ostate, this.outer.blockSize)\n return this\n }\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (let i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0\n }\n this.inner.clean()\n this.outer.clean()\n }\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data)\n return this\n }\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out)\n } else {\n this.inner.finish(out)\n this.outer.update(out, this.digestLength).finish(out)\n }\n return this\n }\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n return HMAC\n}())\nexport { HMAC }\n// Returns SHA256 hash of data.\nexport function hash (data) {\n const h = (new Hash()).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Function hash is both available as module.hash and as default export.\nexport default hash\n// Returns HMAC-SHA256 of data under the key.\nexport function hmac (key, data) {\n const h = (new HMAC(key)).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer (buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n const num = counter[0]\n if (num === 0) {\n throw new Error('hkdf: cannot expand more')\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset()\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer)\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info)\n }\n // Hash in the counter.\n hmac.update(counter)\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer)\n // Increment counter inside typed array, this works properly.\n counter[0]++\n}\nconst hkdfSalt = new Uint8Array(digestLength) // Filled with zeroes.\nexport function hkdf (key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt }\n if (length === void 0) { length = 32 }\n const counter = new Uint8Array([1])\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(salt, key)\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n const hmac_ = new HMAC(okm)\n // Allocate buffer.\n const buffer = new Uint8Array(hmac_.digestLength)\n let bufpos = buffer.length\n const out = new Uint8Array(length)\n for (let i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter)\n bufpos = 0\n }\n out[i] = buffer[bufpos++]\n }\n hmac_.clean()\n buffer.fill(0)\n counter.fill(0)\n return out\n}\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nexport function pbkdf2 (password, salt, iterations, dkLen) {\n const prf = new HMAC(password)\n const len = prf.digestLength\n const ctr = new Uint8Array(4)\n const t = new Uint8Array(len)\n const u = new Uint8Array(len)\n const dk = new Uint8Array(dkLen)\n for (var i = 0; i * len < dkLen; i++) {\n const c = i + 1\n ctr[0] = (c >>> 24) & 0xff\n ctr[1] = (c >>> 16) & 0xff\n ctr[2] = (c >>> 8) & 0xff\n ctr[3] = (c >>> 0) & 0xff\n prf.reset()\n prf.update(salt)\n prf.update(ctr)\n prf.finish(u)\n for (var j = 0; j < len; j++) {\n t[j] = u[j]\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset()\n prf.update(u).finish(u)\n for (let k = 0; k < len; k++) {\n t[k] ^= u[k]\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j]\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0\n }\n prf.clean()\n return dk\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","import { Buffer } from 'buffer/index.js'\nexport { Buffer } // for iife reference MBP.Buffer\nconst encoder = new TextEncoder()\nconst decoder = new TextDecoder()\n\n\nexport const NB = numberBuffer\nexport function numberBuffer(type, initValue = 0) {\n let buffer\n if (type === undefined || typeof type !== 'string' || typeof initValue !== 'number') {\n throw TypeError('invlaid init variablie type name. ')\n }\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n buffer = Buffer.alloc(1)\n if (type.includes('I')) buffer.writeInt8(initValue)\n else buffer.writeUint8(initValue)\n } else if (type.includes('16')) {\n buffer = Buffer.alloc(2)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt16LE(initValue)\n else buffer.writeInt16BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint16LE(initValue)\n else buffer.writeUint16BE(initValue)\n }\n } else if (type.includes('32')) {\n buffer = Buffer.alloc(4)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt32LE(initValue)\n else buffer.writeInt32BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint32LE(initValue)\n else buffer.writeUint32BE(initValue)\n }\n } else if (type.includes('F')) {\n buffer = Buffer.alloc(4)\n if (type.includes('L')) {\n buffer.writeFloatLE(initValue)\n } else {\n buffer.writeFloatBE(initValue)\n }\n } else if (type.includes('N')) { // number as string\n buffer = Buffer.from(String(initValue))\n } else {\n console.log(`invalid type: ${type} or initvalue: ${initValue}`)\n }\n return buffer\n}\n\n\nexport const MB = metaBuffer\nexport function metaBuffer(name, typeOrData, initValue) {\n let buffer\n let bufferType = 'B'\n if (typeof typeOrData === 'number') {\n if (typeof initValue === 'number') { // initValue 0 should be passed.\n buffer = Buffer.alloc(typeOrData)\n if( initValue !== 0) buffer.fill(initValue)\n bufferType = 'B'\n } else {\n buffer = Buffer.from(String(typeOrData))\n bufferType = 'N'\n }\n } else if (typeof typeOrData === 'string' && typeof initValue === 'number') { // number with type.\n bufferType = typeOrData.toUpperCase() // use explicit type name\n buffer = numberBuffer(typeOrData, initValue) // notice. two categories. n: number string. 8, 16, 32: typed number.\n } else if (typeof typeOrData === 'string' && initValue === undefined) { // string buffer\n buffer = Buffer.from(typeOrData)\n bufferType = 'S'\n } else if (typeOrData instanceof Uint8Array && initValue === undefined) { // buffer | Uint8Array\n // Buffer.from: Copies the passed buffer data onto a new Buffer instance.\n // typecasting Uint8Array to Buffer.\n buffer = (typeOrData instanceof Buffer) ? typeOrData : Buffer.from(typeOrData)\n } else if (typeOrData instanceof ArrayBuffer && initValue === undefined) { // arrayBuffer\n // Notice. typedArray is recommended instead of arrayBuffer\n buffer = Buffer.from(typeOrData)\n } else if (ArrayBuffer.isView(typeOrData)) { // typedarray buffer\n buffer = Buffer.from(typeOrData.buffer, typeOrData.byteOffset, typeOrData.byteLength)\n } else if (typeof typeOrData === 'object' && initValue === undefined) { // object. like array. stringify\n buffer = Buffer.from(JSON.stringify(typeOrData))\n bufferType = 'O'\n } else if (typeof typeOrData === 'boolean' && initValue === undefined) { // object. like array. stringify\n const v = typeOrData ? 1 : 0\n buffer = Buffer.from([v])\n bufferType = '!'\n } else {\n throw TypeError('invalid meta buffer type')\n }\n\n if (typeof name === 'string' && name.includes('#')) name = '' //\n\n return [name, bufferType, buffer]\n}\n\nexport const MBA = metaBufferArguments\nexport function metaBufferArguments(...args) {\n let i = 0\n const mba = args.map(\n data => {\n const argsIndex = i++\n // tip. MBA use index number as metabuffer's property name.\n if (typeof data === 'number') {\n // * JS's primitive Number stored as string.\n return MB(argsIndex, 'N', data)\n } else {\n // typedarray, dataview, array, object, boolean\n return MB(argsIndex, data)\n }\n })\n\n return mba\n}\n\nexport function parseTypeName(type) {\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n if (type.includes('I')) {\n return 'int8'\n } else {\n return 'uint8'\n }\n } else if (type.includes('16')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int16_le'\n } else {\n return 'int16_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint16_le'\n } else {\n return 'uint16_be'\n }\n }\n } else if (type.includes('32')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int32_le'\n } else {\n return 'int32_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint32_le'\n } else {\n return 'uint32_be'\n }\n }\n } else if (type.includes('F')) {\n if (type.includes('L')) {\n return 'float_le'\n } else {\n return 'float_be'\n }\n } else if (type === 'B') {\n return 'buffer'\n } else if (type === 'S') { // string or arguments\n return 'string'\n } else if (type === 'N') { // number encoded as string\n return 'number'\n } else if (type === 'O') { // object encoded string\n return 'object'\n } else if (type === '!') { // boolean 1:true 0:false\n return 'boolean'\n } else {\n throw TypeError('invalid data type')\n }\n\n}\n\nexport function readTypedBuffer(simpleType, buffer, offset, length) {\n\n const type = parseTypeName(simpleType)\n\n if (type == 'int8') return buffer.readInt8(offset)\n else if (type === 'uint8') return buffer.readUint8(offset)\n else if (type === 'int16_le') return buffer.readInt16LE(offset)\n else if (type === 'int16_be') return buffer.readInt16BE(offset)\n else if (type === 'uint16_le') return buffer.readUint16LE(offset)\n else if (type === 'uint16_be') return buffer.readUint16BE(offset)\n else if (type === 'int32_le') return buffer.readInt32LE(offset)\n else if (type === 'int32_be') return buffer.readInt32BE(offset)\n else if (type === 'uint32_le') return buffer.readUint32LE(offset)\n else if (type === 'uint32_be') return buffer.readUint32BE(offset)\n else if (type === 'float_le') return buffer.readFloatLE(offset)\n else if (type === 'float_be') return buffer.readFloatBE(offset)\n\n else if (type === 'buffer') {\n return buffer.subarray(offset, offset + length)\n } else if (type === 'string') {\n const strBuffer = buffer.subarray(offset, offset + length)\n return decoder.decode(strBuffer)\n } else if (type === 'number') {\n const strNumber = buffer.subarray(offset, offset + length)\n return Number(decoder.decode(strNumber))\n } else if (type === 'object') {\n const objEncoded = buffer.subarray(offset, offset + length)\n try {\n return JSON.parse(decoder.decode(objEncoded))\n } catch (error) {\n console.log('err. obj parse')\n }\n } else if (type === 'boolean') {\n const v = buffer.readInt8(offset)\n return v === 1\n } else {\n throw TypeError('invalid data')\n }\n}\n\nfunction flatSubArray(args) {\n let subArr = []\n const mainArr = args.filter(item => {\n if (Array.isArray(item[0])) subArr = subArr.concat(item)\n else return item\n })\n return mainArr.concat(subArr)\n}\n\nexport function pack(...args) {\n const bufArr = flatSubArray(args)\n let size = 0\n const info = []\n let offset = 0\n\n bufArr.forEach(bufPack => {\n const [name, type, data] = bufPack\n size += data.byteLength\n\n if (typeof name === 'number' || name.length > 0) {\n // MBA item use number type name.\n // MB item use string type name. null string means omit.\n \n // change to store more informative meta info. \n info.push([name, type, offset, data.byteLength]) \n \n }\n offset = size\n })\n\n\n let infoEncoded\n let infoSize\n\n if (info.length > 0) {\n let infoStr = JSON.stringify(info)\n // console.log('pack infoStr , size:', infoStr , infoStr.length )\n infoEncoded = encoder.encode(infoStr)\n infoSize = infoEncoded.byteLength\n size = size + infoSize + 2\n }\n\n const buffer = Buffer.alloc(size)\n offset = 0\n bufArr.forEach(bufPack => {\n const buf = bufPack[2]\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n\n if (info.length > 0) {\n buffer.set(infoEncoded, offset)\n const infoSizeBuff = NB('16', infoSize)\n buffer.set(infoSizeBuff, offset + infoSize)\n return buffer\n } else {\n return buffer\n }\n}\n\n\n/**\n * unpack() will use embeded meta info from the binary pack. \n * You can specify (optional) meta obejct. \n * (It's useful to read pure buffer data.)\n * \n * You can get the meta object from: getFrame(pack) , meta()\n * @param {Buffer|Uint8Array} binPack binaryData\n * @param {Object} meta *OPTION* \n * @returns {Object|undefined} success: return Object (include buffer data). fail: return undefined\n */\nexport function unpack(binPack, meta) {\n\n const infoArr = meta || getMeta(binPack)\n if (!infoArr) return\n\n const buffer = Buffer.from(binPack)\n const binObj = {}\n let readCounter = 0\n infoArr.forEach(bufPack => {\n const [name, type, offset, length] = bufPack\n binObj[name] = readTypedBuffer(type, buffer, offset, length)\n // console.log( '###3 len',length )\n if( length) readCounter += length\n })\n\n // Can not define meta for variable size buffer \n // unpacker support automatic property to read left(did't read) buffers.\n // console.log(\"######, unpack: buffer \" , readCounter, buffer ,buffer.byteLength)\n if( meta && buffer.byteLength !== readCounter ){\n let leftSize = buffer.byteLength - readCounter\n // console.log('total,left buffer size', buffer.byteLength, leftSize )\n binObj[\"$OTHERS\"] = readTypedBuffer('b', buffer, readCounter, leftSize)\n }\n\n // set args with values if exist.\n let mbaIndex = 0;\n let args = [];\n while( binObj[mbaIndex]){\n args.push( binObj[mbaIndex++])\n }\n \n if( args.length > 0 ) {\n binObj.args = args \n binObj.$ = binObj.args \n }\n\n return binObj\n\n}\n\n\n\nexport const U8 = parseUint8Array //alias\n/**\n * \n * @param {any} data \n * @param {Boolean} shareArrayBuffer false(default): return new( or copied) ArrayBuffer. true: share the input data's arrayBuffer.\n * @returns {Uint8Array}\n */\nexport function parseUint8Array(data, shareArrayBuffer = false) {\n if (data === undefined) throw TypeError('Invalid data type: Undefined')\n if (typeof data === 'string') {\n return encoder.encode(data)\n } else if (typeof data === 'number') { // number -> 1 byte uint8array(number)\n return Uint8Array.from([data])\n } else if (data instanceof ArrayBuffer) { // arraybuffer -> wrap uint8array(ab)\n if (shareArrayBuffer) {\n return new Uint8Array(data)\n } else {\n const originData = new Uint8Array(data)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else if (ArrayBuffer.isView(data)) { // accept Buffer too.\n if (shareArrayBuffer) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength) // DataView, TypedArray > uint8array( use offset, length )\n } else {\n // new memory to protect origin arraybuffer.\n const originData = new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else { // array, object\n return encoder.encode(JSON.stringify(data)) // object(array.. ) > JSON.str > encode > unint8array\n }\n}\n\nexport const B8 = parseBuffer\n\nexport function parseBuffer(data, shareArrayBuffer = false) {\n\n const u8 = parseUint8Array(data, shareArrayBuffer)\n if( shareArrayBuffer){\n return Buffer.from( u8.buffer, u8.byteOffset, u8.byteLength )\n }else{\n return Buffer.from(u8)\n }\n}\n\nexport const B8pack = parseBufferThenConcat\nexport function parseBufferThenConcat(...dataArray) {\n const buffers = dataArray.map(data => parseBuffer(data))\n return Buffer.concat( buffers)\n}\n\n\nexport const U8pack = parseUint8ThenConcat // alias\n/**\n * 1. parse list of data into U8 list\n * 2. return new Uint8Array merged.\n * @param {...any} dataArray \n * @returns \n */\nexport function parseUint8ThenConcat(...dataArray) {\n try {\n let bufferSize = 0\n let offset = 0\n const buffers = dataArray.map(data => parseUint8Array(data))\n buffers.forEach(buf => { bufferSize += buf.byteLength })\n const buffer = new Uint8Array(bufferSize)\n buffers.forEach(buf => {\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n return buffer\n } catch (error) {\n console.log(error)\n }\n}\n\nexport function hex(buffer) {\n return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')\n}\n\nexport function equal(buf1, buf2) {\n if (buf1.byteLength !== buf2.byteLength) return false\n for (let i = 0; i < buf1.byteLength; i++) {\n if (buf1[i] !== buf2[i]) return false\n }\n return true\n}\n\n\n\n\nexport function getBufferSize(binPack) {\n if (getMetaSize(binPack) === 0) {\n return binPack.byteLength\n } else {\n return binPack.byteLength - getMetaSize(binPack) - TAIL_LEN\n }\n\n}\n\n// MB and MBA \nexport function parseMetaInfo(binPack, infoSize) {\n let info;\n try {\n const buffer = new Uint8Array(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoFrom = buffer.byteLength - infoSize - 2\n const infoEncoded = buffer.subarray(infoFrom, buffer.byteLength - 2)\n const decoded = decoder.decode(infoEncoded)\n const info = JSON.parse(decoded)\n\n if (!Array.isArray(info) || !Array.isArray(info[0])) return\n\n let firstItem = info[0]\n if (!firstItem) return\n\n if (firstItem.length < 3) return\n const [name, type, offset] = firstItem\n\n if ( typeof type !== 'string' || typeof offset !== 'number') return\n\n return info\n } catch (error) {\n // return undefined\n }\n}\n\n\n/** \n * Meta buffer pack Tail:\n * binary Pack include TAIL(two bytes size) info at the end if it has JSON info.\n * not include TAIL if it has not JSON.\n */\nexport const TAIL_LEN = 2\n\n/**\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @returns {Number} last two byte value( read Uint16 bigendian )\n */\nexport function readTail(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n if (binPack.byteLength <= TAIL_LEN) return 0\n\n const dv = new DataView(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoSize = dv.getUint16(binPack.byteLength - TAIL_LEN) // last 2 bytes for json-info-length.\n return infoSize\n\n } else {\n // throw TypeError('invalid data type.')\n return 0\n }\n\n}\n\n\n// binay data pack is not always Buffer. \n// It should accept Uint8Array binPack.\n// This function don't use Buffer method.\n\nexport function getMetaSize(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n\n const size = binPack.byteLength\n if (size <= TAIL_LEN) return 0\n\n //1. tail size check\n const infoSize = readTail(binPack)\n if (infoSize === 0 || infoSize > size) return 0\n //2. try parse JSON \n const success = parseMetaInfo(binPack, infoSize)\n //3. return success: jsonInfoSize, fail: 0\n if (success) return infoSize\n else return 0\n }else{\n return 0\n }\n}\n\n\n/**\n * \n * @param {Buffer|Uint8Array} binPack \n * @returns {Buffer} \n */\nexport function getBuffer(binPack) {\n const rawBufferSize = getBufferSize(binPack)\n return binPack.subarray(0, rawBufferSize)\n}\n\n\n\n/**\n * extract Meta info object if it has.\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @param {Boolean} showDetail add additional item info: full data type name and bytelength.\n * @returns {Object|undefined} success: return MetaInfo Object. fail: return undefined.(No valid JSON included.)\n */\nexport function getMeta(binPack, showDetail = false) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n const infoSize = readTail(binPack)\n if (infoSize === 0) return\n\n // check valid Meta\n let metaInfo = parseMetaInfo(binPack, infoSize)\n if (!metaInfo) return\n\n if (!showDetail) {\n return metaInfo\n } else {\n // add additional info\n metaInfo.forEach(bufPack => {\n const len = bufPack[3]\n if (len == undefined) { // add size info.\n if (bufPack[1].includes('8')) bufPack[3] = 1\n else if (bufPack[1].includes('16')) bufPack[3] = 2\n else if (bufPack[1].includes('32')) bufPack[3] = 4\n else if (bufPack[1].includes('F')) bufPack[3] = 4\n else if (bufPack[1].includes('!')) bufPack[3] = 1\n }\n bufPack[4] = parseTypeName(bufPack[1]) // add full-type-name.\n })\n return metaInfo\n }\n}\n\nexport function rawPack( ...args){\n return getBuffer( pack(...args) )\n}\n\nexport function meta( ...args){\n return getMeta( pack(...args) )\n}\n\nexport function metaDetail( ...args){\n return getMeta( pack(...args) , true)\n}\n\n\n\nexport function getMetaDetail(binPack) {\n return getMeta(binPack, true)\n}\n","import { hash as sha256, hmac } from '../lib/fast-sha256.js'\nimport { MBP } from 'meta-buffer-pack'\n\nsha256.hash = function (data) {\n return sha256(MBP.U8(data))\n}\n\nsha256.hex = function (data) {\n return MBP.hex(sha256.hash(data))\n}\n\nsha256.hmac = function (key, data) {\n return hmac(MBP.U8(key), MBP.U8(data))\n}\n\nexport { sha256 }\n","import{ MBP, Buffer} from \"meta-buffer-pack\"\nconst MB = MBP.MB\n\n\n// remocon message pack one byte header. \nexport let BohoMsg = {\n AUTH_REQ : 0xB0, \n AUTH_NONCE: 0xB1,\n AUTH_HMAC: 0xB2,\n AUTH_ACK: 0xB3,\n AUTH_FAIL: 0xB4,\n AUTH_EXT: 0xB5,\n ENC_PACK : 0xB6, \n ENC_E2E : 0xB7, \n ENC_488 : 0xB8\n}\n\nfor (let c in BohoMsg) { BohoMsg[BohoMsg[c]] = c }\n\nexport const Meta = {\n\n AUTH_REQ: MBP.meta( // 2\n MB('header','8', 0),\n MB('reserved','8', 0)\n ),\n\n AUTH_NONCE: MBP.meta( // 13\n MB('header','8', 0),\n MB('unixTime','32L', 0),\n MB('milTime','32L', 0 ),\n MB('nonce', Buffer.alloc(4))\n ),\n\n AUTH_HMAC: MBP.meta( // 45\n MB('header','8', 0),\n MB('id8',Buffer.alloc(8)),\n MB('nonce', Buffer.alloc(4)),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n AUTH_ACK: MBP.meta( // 33\n MB('header','8', 0),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n\n ENC_PACK: MBP.meta( //25 + payload\n MB('type','8',0),\n MB('len','32L',0), // pure xdata size. \n MB('salt12', Buffer.alloc(12)), // sec,mil,rand\n MB('hmac',8,0)\n // MB( 'xdata', encData )\n ),\n\n\n ENC_488: MBP.meta( // 21 + payload\n MB('type','8', 0 ),\n MB('len','32L', 0 ),\n MB('otpSrc8', Buffer.alloc(8) ),\n MB('hmac8', Buffer.alloc(8) )\n // MB('xdata', encData ) \n )\n\n\n }\n\n\n function getMetaSize(meta){\n let lastItem = meta[ meta.length - 1]\n return lastItem[2] + lastItem[3]\n }\n\n export const MetaSize = {\n AUTH_REQ: getMetaSize( Meta.AUTH_REQ ),\n AUTH_NONCE: getMetaSize( Meta.AUTH_NONCE ),\n AUTH_HMAC: getMetaSize( Meta.AUTH_HMAC ),\n AUTH_ACK: getMetaSize( Meta.AUTH_ACK ),\n ENC_PACK: getMetaSize( Meta.ENC_PACK ),\n ENC_488: getMetaSize( Meta.ENC_488 )\n }\n\n// console.log( 'boho MetaSize', MetaSize )\n// boho MetaSize {\n// AUTH_REQ: 2,\n// AUTH_NONCE: 13,\n// AUTH_HMAC: 45,\n// AUTH_ACK: 33,\n// ENC_PACK: 25,\n// ENC_488: 21\n// }","import { sha256 } from './sha256-mbp.js'\nimport { MBP, Buffer } from 'meta-buffer-pack'\nexport { sha256, MBP, Buffer }\n\nimport { webcrypto } from 'crypto'\nimport { BohoMsg, Meta, MetaSize } from \"./constants.js\"\nexport { BohoMsg, Meta, MetaSize }\n\nlet isNode = false\ntry {\n isNode = Object.prototype.toString.call(global.process) === '[object process]'\n} catch (e) { }\n\n\nexport function RAND(size) {\n if( isNode ){\n return webcrypto.getRandomValues(Buffer.alloc(size))\n }else{\n return self.crypto.getRandomValues(Buffer.alloc(size))\n }\n}\n\n\n\nexport class Boho {\n // A. Core\n constructor() {\n\n this._id8 = Buffer.alloc(8)\n this._otpSrc44 = Buffer.alloc(44)\n this._otp36 = Buffer.alloc(36)\n this._hmac = Buffer.alloc(32)\n\n this.auth_salt12 = Buffer.alloc(12)\n this.localNonce = Buffer.alloc(4)\n this.remoteNonce = Buffer.alloc(4)\n this.isAuthorized = false\n\n }\n\n clearAuth(){\n this._id8.fill(0)\n this._otpSrc44.fill(0)\n this._otp36.fill(0)\n this._hmac.fill(0)\n this.auth_salt12.fill(0)\n this.localNonce.fill(0)\n this.remoteNonce.fill(0)\n this.isAuthorized = false\n }\n\n // for the self\n set_id8(data) {\n let encStr = MBP.B8(data)\n this._id8.fill(0)\n encStr.copy(this._id8, 0, 0, 8)\n }\n\n set_hash_id8(data) {\n let idSum = MBP.B8(sha256.hash(data))\n idSum.copy(this._id8, 0, 0, 8)\n }\n\n\n set_key(data) {\n let keySum = MBP.B8(sha256.hash(data))\n keySum.copy(this._otpSrc44, 0, 0, 32)\n }\n\n // for the remote client.\n copy_id8(data) {\n data.copy(this._id8, 0, 0, 8)\n }\n\n // for the remote client.\n copy_key(data) {\n data.copy(this._otpSrc44, 0, 0, 32)\n }\n\n\n sha256_n(srcData, n) {\n let hashSum = sha256.hash(srcData)\n for (let i = 0; i < n; i++) hashSum = sha256.hash(hashSum)\n return hashSum\n }\n\n\n // useful general encryption i.e. enc_pack\n set_clock_rand() {\n\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n RAND(4)\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n // for secure communication sender. \n set_clock_nonce(nonce) {\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n nonce\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n\n set_salt12(salt12) {\n salt12.copy(this._otpSrc44, 32)\n }\n\n resetOTP() {\n let otp32 = MBP.B8(sha256.hash(this._otpSrc44))\n otp32.copy(this._otp36, 0, 0, 32)\n }\n\n getIndexOTP(otpIndex) {\n this._otp36.writeUInt32LE(otpIndex, 32)\n return sha256.hash(this._otp36)\n }\n\n\n generateHMAC(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n }\n\n // return 8 bytes of hash\n getHMAC8(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n return this._hmac.subarray(0, 8)\n }\n\n xotp(data, otpStartIndex = 0, shareDataBuffer = false) {\n\n data = MBP.B8(data, shareDataBuffer)\n\n let len = data.byteLength\n let otpIndex = otpStartIndex\n let dataOffset = 0\n let xorCalcLen = 0\n\n while (len > 0) {\n xorCalcLen = len < 32 ? len : 32\n let iotp = this.getIndexOTP(++otpIndex);\n for (let i = 0; i < xorCalcLen; i++) {\n data[dataOffset++] ^= iotp[i]\n }\n len -= 32\n }\n return data\n }\n\n // B. AUTH process\n\n // step 1\n // client send AUTH_REQ\n auth_req() {\n return MBP.pack(\n MBP.MB('#type', '8', BohoMsg.AUTH_REQ),\n MBP.MB('#reserved', '8', 0)\n )\n }\n\n // step 2\n // server send AUTH_NONCE\n auth_nonce() {\n let now = Date.now()\n let unixTime = Math.floor(now / 1000)\n let milTime = now % 1000\n this.localNonce = RAND(4)\n this.auth_salt12 = Buffer.concat([\n MBP.NB('32L', unixTime),\n MBP.NB('32L', milTime),\n this.localNonce\n ])\n\n let infoPack = Buffer.concat([\n MBP.NB('8', BohoMsg.AUTH_NONCE),\n this.auth_salt12\n ])\n return infoPack\n }\n\n\n // step 3\n // client send AUTH_HMAC\n // input : auth_nonce buffer\n auth_hmac(buffer) {\n let auth_nonce = MBP.unpack(buffer, Meta.AUTH_NONCE)\n if (auth_nonce) {\n // console.log(' auth nonce', auth_nonce )\n\n // let now = Date.now()\n // let localUTC= Math.floor( now/ 1000 )\n // let localMilTime = now % 1000\n\n // console.log('time server [sec]', auth_nonce.unixTime, auth_nonce.milTime )\n // console.log('time client [sec]', localUTC , localMilTime )\n // console.log('time diff client and server[sec]', auth_nonce.unixTime - localUTC )\n\n // let serverSecMil = auth_nonce.unixTime * 1000 + auth_nonce.milTime\n // console.log('time diff msec client and server[msec]', serverSecMil - now )\n\n let salt12 = Buffer.concat([\n MBP.NB('32L', auth_nonce.unixTime),\n MBP.NB('32L', auth_nonce.milTime),\n auth_nonce.nonce\n ])\n\n this.set_salt12(salt12)\n\n this.localNonce = RAND(4)\n // hmac( key, sec,mil,serverNonce, localNonce)\n this.generateHMAC(this.localNonce)\n\n // let hmac8 = this._hmac.subarray(0, 8)\n\n this.remoteNonce = auth_nonce.nonce\n\n let auth_hmac_buffer = MBP.pack( // 21 -> 45\n MBP.MB('#header', '8', BohoMsg.AUTH_HMAC),\n MBP.MB('#id8', this._id8),\n MBP.MB('#nonce', this.localNonce),\n MBP.MB('#hmac32', this._hmac ), //full 32bytes hash\n )\n\n return auth_hmac_buffer\n }\n return false\n }\n\n /* \n step 4. for server\n \n step 4-1. check client's auth_hmac\n step 4-2. reply result\n send AUTH_ACK with another HMAC for client.\n or send AUTH_FAIL when fail.\n */\n\n // input: unpack object or buffer of auth_hmac\n check_auth_hmac(data) {\n let infoPack\n if (data instanceof Uint8Array) {\n infoPack = MBP.unpack(data, Meta.AUTH_HMAC)\n if (!infoPack) {\n // console.log('auth_hamc unpack fail.')\n return\n }\n } else {\n infoPack = data;\n\n }\n // console.log('auth_hamc infoObj', infoPack )\n\n this.set_salt12(this.auth_salt12)\n\n // hmac( key, sec,mil,serverNonce, clientNonce)\n this.generateHMAC(infoPack.nonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n\n if (MBP.equal(infoPack.hmac32, hmac32)) {\n //Auth success then store client nonce.\n this.remoteNonce = infoPack.nonce\n\n let salt12 = Buffer.concat([\n this.localNonce,\n this.remoteNonce,\n this.localNonce\n ])\n this.set_salt12(salt12)\n this.generateHMAC(infoPack.nonce)\n let replyHMAC = this._hmac\n\n let auth_ack = MBP.rawPack( \n MBP.MB('header', '8', BohoMsg.AUTH_ACK),\n MBP.MB('hmac32', replyHMAC)\n )\n this.isAuthorized = true\n return auth_ack\n }\n return false\n }\n\n\n\n // step 5. cross check\n // client check server's hmac. \n check_auth_ack_hmac(buffer) {\n // server response has hmac ( key + clientNonce)\n let auth_ack = MBP.unpack(buffer, Meta.AUTH_ACK)\n if (auth_ack) {\n let salt12 = Buffer.concat([\n this.remoteNonce,\n this.localNonce,\n this.remoteNonce,\n ])\n this.set_salt12(salt12)\n this.generateHMAC(this.localNonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n //server side hmac using client nonce.\n if (MBP.equal(hmac32, auth_ack.hmac32)) {\n this.isAuthorized = true\n return true\n }\n }\n // server hmac error\n return\n }\n\n // C. Secure Communication\n\n // Must AUTH first.\n encrypt_488(data) { // payload max about 2^32 bytes.\n if (!this.isAuthorized) return\n\n data = MBP.B8(data)\n\n this.set_clock_nonce(this.remoteNonce)\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_488),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#otpSrc8', this._otpSrc44.subarray(32, 40)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n // console.log('enc pack result', pack )\n return pack\n }\n\n\n decrypt_488(data) {\n data = MBP.B8(data)\n\n let pack = MBP.unpack(data, Meta.ENC_488)\n\n if (pack) {\n\n let salt12 = Buffer.concat([\n pack.otpSrc8,\n this.localNonce\n ])\n\n this.set_salt12(salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS.subarray(0, pack.len)\n let decData = this.xotp(xdata)\n\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(hmac8, pack.hmac8)) return decData\n\n // console.log('hmac dismatch', decData )\n } else {\n // console.log('unpack fail')\n }\n }\n\n\n // maxium data size is 2**32 -1 bytes.\n encryptPack(data) {\n data = MBP.B8(data)\n\n this.set_clock_rand()\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_PACK),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#salt12', this._otpSrc44.subarray(32)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n return pack\n }\n\n\n decryptPack(data) {\n\n if (data[0] !== BohoMsg.ENC_PACK) {\n // console.log('Boho: Invalid packType')\n return\n }\n\n // packLength\n let readPackLen = data.readUint32LE(1);\n if (readPackLen != data.byteLength - MetaSize.ENC_PACK) {\n // console.log('Boho: Invalid LEN data_len: data.byteLen' , readPackLen, data.byteLength)\n return\n }\n\n try {\n let pack = MBP.unpack(data, Meta.ENC_PACK)\n // console.log('unpack result', pack )\n if (!pack) return\n\n this.set_salt12(pack.salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS\n let decData = this.xotp(xdata)\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(pack.hmac, hmac8)) {\n pack.data = decData\n return pack\n }\n // console.log('Invalid HMAC', pack.hmac, hmac8 )\n\n } catch (error) {\n // console.log('Boho: unpack err', error )\n\n }\n }\n\n encrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let pack = this.encryptPack(data)\n this._otpSrc44.set(baseKey)\n return pack;\n }\n\n decrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let decPack = this.decryptPack(data)\n this._otpSrc44.set(baseKey)\n return decPack\n }\n\n}\n"],"names":["digestLength","blockSize","K","Uint32Array","hashBlocks","w","v","p","pos","len","a","b","c","d","e","f","g","h","u","i","j","t1","t2","Hash","this","state","Int32Array","temp","buffer","Uint8Array","bufferLength","bytesHashed","finished","reset","prototype","clean","length","update","data","dataLength","Error","dataPos","finish","out","left","bitLenHi","bitLenLo","padLength","digest","_saveState","_restoreState","from","HMAC","key","inner","outer","pad","istate","ostate","hash","byteLength_1","b64","lens","getLens","validLen","placeHoldersLen","toByteArray_1","tmp","arr","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray_1","uint8","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Array","code","indexOf","start","end","num","output","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","s","NaN","Infinity","Math","pow","value","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","y","concat","list","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","encoder","TextEncoder","decoder","TextDecoder","NB","numberBuffer","initValue","toUpperCase","MB","metaBuffer","typeOrData","bufferType","JSON","stringify","MBA","metaBufferArguments","args","map","argsIndex","parseTypeName","readTypedBuffer","simpleType","strBuffer","decode","strNumber","objEncoded","parse","pack","bufArr","subArr","filter","item","flatSubArray","info","infoEncoded","infoSize","forEach","bufPack","infoStr","encode","infoSizeBuff","unpack","binPack","meta","infoArr","getMeta","binObj","readCounter","leftSize","mbaIndex","$","U8","parseUint8Array","shareArrayBuffer","originData","dataCopy","B8","parseBuffer","u8","B8pack","parseBufferThenConcat","dataArray","buffers","U8pack","parseUint8ThenConcat","bufferSize","hex","equal","buf1","buf2","getBufferSize","getMetaSize","TAIL_LEN","parseMetaInfo","infoFrom","decoded","firstItem","readTail","DataView","getUint16","getBuffer","rawBufferSize","showDetail","metaInfo","rawPack","sha256","MBP.U8","MBP.hex","hmac","MBP.MB","BohoMsg","AUTH_REQ","AUTH_NONCE","AUTH_HMAC","AUTH_ACK","AUTH_FAIL","AUTH_EXT","ENC_PACK","ENC_E2E","ENC_488","Meta","MBP.meta","lastItem","MetaSize","isNode","global","process","RAND","webcrypto","getRandomValues","self","crypto","Boho","_id8","_otpSrc44","_otp36","_hmac","auth_salt12","localNonce","remoteNonce","isAuthorized","clearAuth","set_id8","encStr","MBP.B8","set_hash_id8","set_key","copy_id8","copy_key","sha256_n","srcData","hashSum","set_clock_rand","milTime","Date","now","secTime","MBP.NB","set_clock_nonce","nonce","set_salt12","salt12","resetOTP","getIndexOTP","otpIndex","generateHMAC","hmacSrc","getHMAC8","xotp","otpStartIndex","shareDataBuffer","dataOffset","xorCalcLen","iotp","auth_req","MBP.pack","auth_nonce","unixTime","auth_hmac","MBP.unpack","check_auth_hmac","infoPack","hmac32","MBP.equal","replyHMAC","auth_ack","MBP.rawPack","check_auth_ack_hmac","encrypt_488","hmac8","encData","decrypt_488","otpSrc8","xdata","$OTHERS","decData","encryptPack","decryptPack","encrypt_e2e","baseKey","decrypt_e2e","decPack"],"mappings":"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"} \ No newline at end of file diff --git a/dist/boho.min.js b/dist/boho.min.js index fd5ed01..3b2d036 100644 --- a/dist/boho.min.js +++ b/dist/boho.min.js @@ -1,3 +1,3 @@ -var Boho=function(){"use strict";const t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function e(e,r,n,i,o){let f,s,u,h,a,c,l,p,y,g,d,b,w;for(;o>=64;){for(f=r[0],s=r[1],u=r[2],h=r[3],a=r[4],c=r[5],l=r[6],p=r[7],g=0;g<16;g++)d=i+4*g,e[g]=(255&n[d])<<24|(255&n[d+1])<<16|(255&n[d+2])<<8|255&n[d+3];for(g=16;g<64;g++)y=e[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=e[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,e[g]=(b+e[g-7]|0)+(w+e[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(t[g]+e[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;r[0]+=f,r[1]+=s,r[2]+=u,r[3]+=h,r[4]+=a,r[5]+=c,r[6]+=l,r[7]+=p,i+=64,o-=64}return i}const r=function(){function t(){this.digestLength=32,this.blockSize=64,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&r>0;)this.buffer[this.bufferLength++]=t[n++],r--;64===this.bufferLength&&(e(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(r>=64&&(n=e(this.temp,this.state,t,n,r),r%=64);r>0;)this.buffer[this.bufferLength++]=t[n++],r--;return this},t.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,n=this.bufferLength,i=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[n]=128;for(var r=n+1;r>>24&255,this.buffer[f-7]=i>>>16&255,this.buffer[f-6]=i>>>8&255,this.buffer[f-5]=i>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,e(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(r=0;r<8;r++)t[4*r+0]=this.state[r]>>>24&255,t[4*r+1]=this.state[r]>>>16&255,t[4*r+2]=this.state[r]>>>8&255,t[4*r+3]=this.state[r]>>>0&255;return this},t.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},t.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new r).update(t).finish(e).clean();else for(var n=0;n0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=h[t.charCodeAt(r)]<<2|h[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=h[t.charCodeAt(r)]<<10|h[t.charCodeAt(r+1)]<<4|h[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},s=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(u[e>>2]+u[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(u[e>>10]+u[e>>4&63]+u[e<<2&63]+"="));return i.join("")},u=[],h=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=0,p=c.length;l0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function g(t,e,r){for(var n,i,o=[],f=e;f>18&63]+u[i>>12&63]+u[i>>6&63]+u[63&i]);return o.join("")}h["-".charCodeAt(0)]=62,h["_".charCodeAt(0)]=63;var d,b,w={byteLength:o,toByteArray:f,fromByteArray:s},B=function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},m=function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g},A=(d=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(q(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(q(t,ArrayBuffer)||t&&q(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(q(t,SharedArrayBuffer)||t&&q(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||Q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||q(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return G(t).length;default:if(i)return n?-1:Y(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return v(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return L(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function L(t,e,r){return 0===e&&r===t.length?w.fromByteArray(t):w.fromByteArray(t.slice(e,r))}function I(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=T)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(q(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return A(this,t,e,r);case"ascii":case"latin1":case"binary":return E(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const T=4096;function v(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function M(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function H(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function x(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,0,r,4),m(t,e,r,n,23,4),r+4}function P(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,0,r,8),m(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||O(t,4,this.length),B(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||O(t,4,this.length),B(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||O(t,8,this.length),B(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||O(t,8,this.length),B(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=W((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=W((function(t,e=0){return H(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=W((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=W((function(t,e=0){return H(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return P(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return P(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function F(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new $.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){D(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||K(e,t.length-(r+1))}(n,i,o)}function D(t,e){if("number"!=typeof t)throw new $.ERR_INVALID_ARG_TYPE(e,"number",t)}function K(t,e,r){if(Math.floor(t)!==t)throw D(t,r),new $.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}z("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),z("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),z("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=j(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=j(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const V=/[^+/0-9A-Za-z-_]/g;function Y(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(t){return w.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(V,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function q(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function Q(t){return t!=t}const X=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function W(t){return"undefined"==typeof BigInt?Z:t}function Z(){throw new Error("BigInt not supported")}},d(b={exports:{}},b.exports),b.exports); -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const E=new TextEncoder,_=new TextDecoder,U=L;function L(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=A.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=A.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=A.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=A.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=A.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const I=T;function T(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=A.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=A.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=L(e,r);else if("string"==typeof e&&void 0===r)n=A.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof A.Buffer?e:A.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=A.Buffer.from(e);else if(ArrayBuffer.isView(e))n=A.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=A.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=A.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const v=S;function S(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?I(r,"N",t):I(r,t)}))}function C(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function N(t,e,r,n){const i=C(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return _.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(_.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(_.decode(t))}catch(t){console.log("err. obj parse")}}}function O(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=E.encode(t),o=i.byteLength,r=r+o+2}const s=A.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=U("16",o);return s.set(t,f+o),s}return s}function R(t,e){const r=e||Q(t);if(!r)return;const n=A.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=N(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=N("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const M=H;function H(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return E.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return E.encode(JSON.stringify(t))}const x=k;function k(t,e=!1){const r=H(t,e);return e?A.Buffer.from(r.buffer,r.byteOffset,r.byteLength):A.Buffer.from(r)}const P=$;function $(...t){const e=t.map((t=>k(t)));return A.Buffer.concat(e)}const z=j;function j(...t){try{let e=0,r=0;const n=t.map((t=>H(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function F(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function D(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return V(t,r)?r:0}return 0}function q(t){const e=K(t);return t.subarray(0,e)}function Q(t,e=!1){t instanceof ArrayBuffer&&(t=A.Buffer.from(t));const r=G(t);if(0===r)return;let n=V(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=C(t[1])})),n):n:void 0}function X(...t){return q(O(...t))}function W(...t){return Q(O(...t))}var Z=Object.freeze({__proto__:null,Buffer:A.Buffer,NB:U,numberBuffer:L,MB:I,metaBuffer:T,MBA:v,metaBufferArguments:S,parseTypeName:C,readTypedBuffer:N,pack:O,unpack:R,U8:M,parseUint8Array:H,B8:x,parseBuffer:k,B8pack:P,parseBufferThenConcat:$,U8pack:z,parseUint8ThenConcat:j,hex:F,equal:D,getBufferSize:K,parseMetaInfo:V,TAIL_LEN:Y,readTail:G,getMetaSize:J,getBuffer:q,getMeta:Q,rawPack:X,meta:W,metaDetail:function(...t){return Q(O(...t),!0)},getMetaDetail:function(t){return Q(t,!0)}});i.hash=function(t){return i(M(t))},i.hex=function(t){return F(i.hash(t))},i.hmac=function(t,e){return function(t,e){const r=new n(t).update(e),i=r.digest();return r.clean(),i}(M(t),M(e))};const tt=I;let et={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in et)et[et[t]]=t;const rt={AUTH_REQ:W(tt("header","8",0),tt("reserved","8",0)),AUTH_NONCE:W(tt("header","8",0),tt("unixTime","32L",0),tt("milTime","32L",0),tt("nonce",A.Buffer.alloc(4))),AUTH_HMAC:W(tt("header","8",0),tt("id8",A.Buffer.alloc(8)),tt("nonce",A.Buffer.alloc(4)),tt("hmac32",A.Buffer.alloc(32))),AUTH_ACK:W(tt("header","8",0),tt("hmac32",A.Buffer.alloc(32))),ENC_PACK:W(tt("type","8",0),tt("len","32L",0),tt("salt12",A.Buffer.alloc(12)),tt("hmac",8,0)),ENC_488:W(tt("type","8",0),tt("len","32L",0),tt("otpSrc8",A.Buffer.alloc(8)),tt("hmac8",A.Buffer.alloc(8)))};function nt(t){let e=t[t.length-1];return e[2]+e[3]}const it={AUTH_REQ:nt(rt.AUTH_REQ),AUTH_NONCE:nt(rt.AUTH_NONCE),AUTH_HMAC:nt(rt.AUTH_HMAC),AUTH_ACK:nt(rt.AUTH_ACK),ENC_PACK:nt(rt.ENC_PACK),ENC_488:nt(rt.ENC_488)};let ot=!1;try{ot="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function ft(t){return ot?webcrypto.getRandomValues(A.Buffer.alloc(t)):self.crypto.getRandomValues(A.Buffer.alloc(t))}class st{constructor(){this._id8=A.Buffer.alloc(8),this._otpSrc44=A.Buffer.alloc(44),this._otp36=A.Buffer.alloc(36),this._hmac=A.Buffer.alloc(32),this.auth_salt12=A.Buffer.alloc(12),this.localNonce=A.Buffer.alloc(4),this.remoteNonce=A.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=x(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){x(i.hash(t)).copy(this._id8,0,0,8)}set_key(t){x(i.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=i.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r=64;){for(f=e[0],s=e[1],u=e[2],h=e[3],a=e[4],c=e[5],l=e[6],p=e[7],g=0;g<16;g++)d=i+4*g,t[g]=(255&n[d])<<24|(255&n[d+1])<<16|(255&n[d+2])<<8|255&n[d+3];for(g=16;g<64;g++)y=t[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=t[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,t[g]=(b+t[g-7]|0)+(w+t[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(r[g]+t[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;e[0]+=f,e[1]+=s,e[2]+=u,e[3]+=h,e[4]+=a,e[5]+=c,e[6]+=l,e[7]+=p,i+=64,o-=64}return i}const i=function(){function r(){this.digestLength=t,this.blockSize=e,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return r.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},r.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=n(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},r.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[r]=128;for(var e=r+1;e>>24&255,this.buffer[f-7]=i>>>16&255,this.buffer[f-6]=i>>>8&255,this.buffer[f-5]=i>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,n(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(e=0;e<8;e++)t[4*e+0]=this.state[e]>>>24&255,t[4*e+1]=this.state[e]>>>16&255,t[4*e+2]=this.state[e]>>>8&255,t[4*e+3]=this.state[e]>>>0&255;return this},r.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},r.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new i).update(t).finish(e).clean();else for(var r=0;r0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=c[t.charCodeAt(r)]<<2|c[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=c[t.charCodeAt(r)]<<10|c[t.charCodeAt(r+1)]<<4|c[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},h=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(a[e>>2]+a[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(a[e>>10]+a[e>>4&63]+a[e<<2&63]+"="));return i.join("")},a=[],c=[],l="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,g=p.length;y0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function b(t,e,r){for(var n,i,o=[],f=e;f>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63;var w,B,m={byteLength:s,toByteArray:u,fromByteArray:h},A={read:function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},write:function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g}},E=(w=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(J(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(J(t,ArrayBuffer)||t&&J(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(J(t,SharedArrayBuffer)||t&&J(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||J(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(t).length;default:if(i)return n?-1:V(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return L(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return U(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function U(t,e,r){return 0===e&&r===t.length?m.fromByteArray(t):m.fromByteArray(t.slice(e,r))}function L(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=I)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(J(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":case"latin1":case"binary":return B(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const I=4096;function T(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function O(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function R(t,e,r,n,i){j(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function M(t,e,r,n,i){j(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function H(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function x(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,4),A.write(t,e,r,n,23,4),r+4}function k(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,8),A.write(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||N(t,4,this.length),A.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),A.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),A.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),A.read(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=X((function(t,e=0){return R(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=X((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=X((function(t,e=0){return R(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=X((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return x(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return x(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function j(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new P.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){F(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||D(e,t.length-(r+1))}(n,i,o)}function F(t,e){if("number"!=typeof t)throw new P.ERR_INVALID_ARG_TYPE(e,"number",t)}function D(t,e,r){if(Math.floor(t)!==t)throw F(t,r),new P.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new P.ERR_BUFFER_OUT_OF_BOUNDS;throw new P.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}$("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),$("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),$("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=z(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=z(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const K=/[^+/0-9A-Za-z-_]/g;function V(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(t){return m.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function G(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function J(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function q(t){return t!=t}const Q=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function X(t){return"undefined"==typeof BigInt?W:t}function W(){throw new Error("BigInt not supported")}},w(B={exports:{}},B.exports),B.exports); +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const _=new TextEncoder,U=new TextDecoder,L=I;function I(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=E.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=E.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=E.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=E.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=E.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const T=v;function v(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=E.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=E.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=I(e,r);else if("string"==typeof e&&void 0===r)n=E.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof E.Buffer?e:E.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=E.Buffer.from(e);else if(ArrayBuffer.isView(e))n=E.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=E.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=E.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const S=C;function C(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?T(r,"N",t):T(r,t)}))}function N(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function O(t,e,r,n){const i=N(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return U.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(U.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(U.decode(t))}catch(t){console.log("err. obj parse")}}}function R(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=_.encode(t),o=i.byteLength,r=r+o+2}const s=E.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=L("16",o);return s.set(t,f+o),s}return s}function M(t,e){const r=e||X(t);if(!r)return;const n=E.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=O(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=O("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const H=x;function x(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return _.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return _.encode(JSON.stringify(t))}const k=P;function P(t,e=!1){const r=x(t,e);return e?E.Buffer.from(r.buffer,r.byteOffset,r.byteLength):E.Buffer.from(r)}const $=z;function z(...t){const e=t.map((t=>P(t)));return E.Buffer.concat(e)}const j=F;function F(...t){try{let e=0,r=0;const n=t.map((t=>x(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function D(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function K(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return Y(t,r)?r:0}return 0}function Q(t){const e=V(t);return t.subarray(0,e)}function X(t,e=!1){t instanceof ArrayBuffer&&(t=E.Buffer.from(t));const r=J(t);if(0===r)return;let n=Y(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=N(t[1])})),n):n:void 0}function W(...t){return Q(R(...t))}function Z(...t){return X(R(...t))}var tt=Object.freeze({__proto__:null,Buffer:E.Buffer,NB:L,numberBuffer:I,MB:T,metaBuffer:v,MBA:S,metaBufferArguments:C,parseTypeName:N,readTypedBuffer:O,pack:R,unpack:M,U8:H,parseUint8Array:x,B8:k,parseBuffer:P,B8pack:$,parseBufferThenConcat:z,U8pack:j,parseUint8ThenConcat:F,hex:D,equal:K,getBufferSize:V,parseMetaInfo:Y,TAIL_LEN:G,readTail:J,getMetaSize:q,getBuffer:Q,getMeta:X,rawPack:W,meta:Z,metaDetail:function(...t){return X(R(...t),!0)},getMetaDetail:function(t){return X(t,!0)}});f.hash=function(t){return f(H(t))},f.hex=function(t){return D(f.hash(t))},f.hmac=function(t,e){return function(t,e){const r=new o(t).update(e),n=r.digest();return r.clean(),n}(H(t),H(e))};const et=T;let rt={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in rt)rt[rt[t]]=t;const nt={AUTH_REQ:Z(et("header","8",0),et("reserved","8",0)),AUTH_NONCE:Z(et("header","8",0),et("unixTime","32L",0),et("milTime","32L",0),et("nonce",E.Buffer.alloc(4))),AUTH_HMAC:Z(et("header","8",0),et("id8",E.Buffer.alloc(8)),et("nonce",E.Buffer.alloc(4)),et("hmac32",E.Buffer.alloc(32))),AUTH_ACK:Z(et("header","8",0),et("hmac32",E.Buffer.alloc(32))),ENC_PACK:Z(et("type","8",0),et("len","32L",0),et("salt12",E.Buffer.alloc(12)),et("hmac",8,0)),ENC_488:Z(et("type","8",0),et("len","32L",0),et("otpSrc8",E.Buffer.alloc(8)),et("hmac8",E.Buffer.alloc(8)))};function it(t){let e=t[t.length-1];return e[2]+e[3]}const ot={AUTH_REQ:it(nt.AUTH_REQ),AUTH_NONCE:it(nt.AUTH_NONCE),AUTH_HMAC:it(nt.AUTH_HMAC),AUTH_ACK:it(nt.AUTH_ACK),ENC_PACK:it(nt.ENC_PACK),ENC_488:it(nt.ENC_488)};let ft=!1;try{ft="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function st(t){return ft?webcrypto.getRandomValues(E.Buffer.alloc(t)):self.crypto.getRandomValues(E.Buffer.alloc(t))}class ut{constructor(){this._id8=E.Buffer.alloc(8),this._otpSrc44=E.Buffer.alloc(44),this._otp36=E.Buffer.alloc(36),this._hmac=E.Buffer.alloc(32),this.auth_salt12=E.Buffer.alloc(12),this.localNonce=E.Buffer.alloc(4),this.remoteNonce=E.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=k(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){k(f.hash(t)).copy(this._id8,0,0,8)}set_key(t){k(f.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=f.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexport var digestLength = 32\nexport var blockSize = 64\n// SHA-256 constants\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n])\nfunction hashBlocks (w, v, p, pos, len) {\n let a, b, c, d, e, f, g, h, u, i, j, t1, t2\n while (len >= 64) {\n a = v[0]\n b = v[1]\n c = v[2]\n d = v[3]\n e = v[4]\n f = v[5]\n g = v[6]\n h = v[7]\n for (i = 0; i < 16; i++) {\n j = pos + i * 4\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff))\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2]\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10)\n u = w[i - 15]\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3)\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0)\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0\n h = g\n g = f\n f = e\n e = (d + t1) | 0\n d = c\n c = b\n b = a\n a = (t1 + t2) | 0\n }\n v[0] += a\n v[1] += b\n v[2] += c\n v[3] += d\n v[4] += e\n v[5] += f\n v[6] += g\n v[7] += h\n pos += 64\n len -= 64\n }\n return pos\n}\n// Hash implements SHA256 hash algorithm.\nconst Hash = /** @class */ (function () {\n function Hash () {\n this.digestLength = digestLength\n this.blockSize = blockSize\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8) // hash state\n this.temp = new Int32Array(64) // temporary state\n this.buffer = new Uint8Array(128) // buffer for data to hash\n this.bufferLength = 0 // number of bytes in buffer\n this.bytesHashed = 0 // number of total bytes hashed\n this.finished = false // indicates whether the hash was finalized\n this.reset()\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667\n this.state[1] = 0xbb67ae85\n this.state[2] = 0x3c6ef372\n this.state[3] = 0xa54ff53a\n this.state[4] = 0x510e527f\n this.state[5] = 0x9b05688c\n this.state[6] = 0x1f83d9ab\n this.state[7] = 0x5be0cd19\n this.bufferLength = 0\n this.bytesHashed = 0\n this.finished = false\n return this\n }\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0\n }\n this.reset()\n }\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\")\n }\n let dataPos = 0\n this.bytesHashed += dataLength\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64)\n this.bufferLength = 0\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength)\n dataLength %= 64\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n return this\n }\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n const bytesHashed = this.bytesHashed\n const left = this.bufferLength\n const bitLenHi = (bytesHashed / 0x20000000) | 0\n const bitLenLo = bytesHashed << 3\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128\n this.buffer[left] = 0x80\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength)\n this.finished = true\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff\n }\n return this\n }\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (let i = 0; i < this.state.length; i++) {\n out[i] = this.state[i]\n }\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (let i = 0; i < this.state.length; i++) {\n this.state[i] = from[i]\n }\n this.bytesHashed = bytesHashed\n this.finished = false\n this.bufferLength = 0\n }\n return Hash\n}())\nexport { Hash }\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nconst HMAC = /** @class */ (function () {\n function HMAC (key) {\n this.inner = new Hash()\n this.outer = new Hash()\n this.blockSize = this.inner.blockSize\n this.digestLength = this.inner.digestLength\n const pad = new Uint8Array(this.blockSize)\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean()\n } else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i]\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36\n }\n this.inner.update(pad)\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c\n }\n this.outer.update(pad)\n this.istate = new Uint32Array(8)\n this.ostate = new Uint32Array(8)\n this.inner._saveState(this.istate)\n this.outer._saveState(this.ostate)\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize)\n this.outer._restoreState(this.ostate, this.outer.blockSize)\n return this\n }\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (let i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0\n }\n this.inner.clean()\n this.outer.clean()\n }\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data)\n return this\n }\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out)\n } else {\n this.inner.finish(out)\n this.outer.update(out, this.digestLength).finish(out)\n }\n return this\n }\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n return HMAC\n}())\nexport { HMAC }\n// Returns SHA256 hash of data.\nexport function hash (data) {\n const h = (new Hash()).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Function hash is both available as module.hash and as default export.\nexport default hash\n// Returns HMAC-SHA256 of data under the key.\nexport function hmac (key, data) {\n const h = (new HMAC(key)).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer (buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n const num = counter[0]\n if (num === 0) {\n throw new Error('hkdf: cannot expand more')\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset()\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer)\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info)\n }\n // Hash in the counter.\n hmac.update(counter)\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer)\n // Increment counter inside typed array, this works properly.\n counter[0]++\n}\nconst hkdfSalt = new Uint8Array(digestLength) // Filled with zeroes.\nexport function hkdf (key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt }\n if (length === void 0) { length = 32 }\n const counter = new Uint8Array([1])\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(salt, key)\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n const hmac_ = new HMAC(okm)\n // Allocate buffer.\n const buffer = new Uint8Array(hmac_.digestLength)\n let bufpos = buffer.length\n const out = new Uint8Array(length)\n for (let i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter)\n bufpos = 0\n }\n out[i] = buffer[bufpos++]\n }\n hmac_.clean()\n buffer.fill(0)\n counter.fill(0)\n return out\n}\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nexport function pbkdf2 (password, salt, iterations, dkLen) {\n const prf = new HMAC(password)\n const len = prf.digestLength\n const ctr = new Uint8Array(4)\n const t = new Uint8Array(len)\n const u = new Uint8Array(len)\n const dk = new Uint8Array(dkLen)\n for (var i = 0; i * len < dkLen; i++) {\n const c = i + 1\n ctr[0] = (c >>> 24) & 0xff\n ctr[1] = (c >>> 16) & 0xff\n ctr[2] = (c >>> 8) & 0xff\n ctr[3] = (c >>> 0) & 0xff\n prf.reset()\n prf.update(salt)\n prf.update(ctr)\n prf.finish(u)\n for (var j = 0; j < len; j++) {\n t[j] = u[j]\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset()\n prf.update(u).finish(u)\n for (let k = 0; k < len; k++) {\n t[k] ^= u[k]\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j]\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0\n }\n prf.clean()\n return dk\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","import { Buffer } from 'buffer/index.js'\nexport { Buffer } // for iife reference MBP.Buffer\nconst encoder = new TextEncoder()\nconst decoder = new TextDecoder()\n\n\nexport const NB = numberBuffer\nexport function numberBuffer(type, initValue = 0) {\n let buffer\n if (type === undefined || typeof type !== 'string' || typeof initValue !== 'number') {\n throw TypeError('invlaid init variablie type name. ')\n }\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n buffer = Buffer.alloc(1)\n if (type.includes('I')) buffer.writeInt8(initValue)\n else buffer.writeUint8(initValue)\n } else if (type.includes('16')) {\n buffer = Buffer.alloc(2)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt16LE(initValue)\n else buffer.writeInt16BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint16LE(initValue)\n else buffer.writeUint16BE(initValue)\n }\n } else if (type.includes('32')) {\n buffer = Buffer.alloc(4)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt32LE(initValue)\n else buffer.writeInt32BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint32LE(initValue)\n else buffer.writeUint32BE(initValue)\n }\n } else if (type.includes('F')) {\n buffer = Buffer.alloc(4)\n if (type.includes('L')) {\n buffer.writeFloatLE(initValue)\n } else {\n buffer.writeFloatBE(initValue)\n }\n } else if (type.includes('N')) { // number as string\n buffer = Buffer.from(String(initValue))\n } else {\n console.log(`invalid type: ${type} or initvalue: ${initValue}`)\n }\n return buffer\n}\n\n\nexport const MB = metaBuffer\nexport function metaBuffer(name, typeOrData, initValue) {\n let buffer\n let bufferType = 'B'\n if (typeof typeOrData === 'number') {\n if (typeof initValue === 'number') { // initValue 0 should be passed.\n buffer = Buffer.alloc(typeOrData)\n if( initValue !== 0) buffer.fill(initValue)\n bufferType = 'B'\n } else {\n buffer = Buffer.from(String(typeOrData))\n bufferType = 'N'\n }\n } else if (typeof typeOrData === 'string' && typeof initValue === 'number') { // number with type.\n bufferType = typeOrData.toUpperCase() // use explicit type name\n buffer = numberBuffer(typeOrData, initValue) // notice. two categories. n: number string. 8, 16, 32: typed number.\n } else if (typeof typeOrData === 'string' && initValue === undefined) { // string buffer\n buffer = Buffer.from(typeOrData)\n bufferType = 'S'\n } else if (typeOrData instanceof Uint8Array && initValue === undefined) { // buffer | Uint8Array\n // Buffer.from: Copies the passed buffer data onto a new Buffer instance.\n // typecasting Uint8Array to Buffer.\n buffer = (typeOrData instanceof Buffer) ? typeOrData : Buffer.from(typeOrData)\n } else if (typeOrData instanceof ArrayBuffer && initValue === undefined) { // arrayBuffer\n // Notice. typedArray is recommended instead of arrayBuffer\n buffer = Buffer.from(typeOrData)\n } else if (ArrayBuffer.isView(typeOrData)) { // typedarray buffer\n buffer = Buffer.from(typeOrData.buffer, typeOrData.byteOffset, typeOrData.byteLength)\n } else if (typeof typeOrData === 'object' && initValue === undefined) { // object. like array. stringify\n buffer = Buffer.from(JSON.stringify(typeOrData))\n bufferType = 'O'\n } else if (typeof typeOrData === 'boolean' && initValue === undefined) { // object. like array. stringify\n const v = typeOrData ? 1 : 0\n buffer = Buffer.from([v])\n bufferType = '!'\n } else {\n throw TypeError('invalid meta buffer type')\n }\n\n if (typeof name === 'string' && name.includes('#')) name = '' //\n\n return [name, bufferType, buffer]\n}\n\nexport const MBA = metaBufferArguments\nexport function metaBufferArguments(...args) {\n let i = 0\n const mba = args.map(\n data => {\n const argsIndex = i++\n // tip. MBA use index number as metabuffer's property name.\n if (typeof data === 'number') {\n // * JS's primitive Number stored as string.\n return MB(argsIndex, 'N', data)\n } else {\n // typedarray, dataview, array, object, boolean\n return MB(argsIndex, data)\n }\n })\n\n return mba\n}\n\nexport function parseTypeName(type) {\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n if (type.includes('I')) {\n return 'int8'\n } else {\n return 'uint8'\n }\n } else if (type.includes('16')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int16_le'\n } else {\n return 'int16_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint16_le'\n } else {\n return 'uint16_be'\n }\n }\n } else if (type.includes('32')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int32_le'\n } else {\n return 'int32_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint32_le'\n } else {\n return 'uint32_be'\n }\n }\n } else if (type.includes('F')) {\n if (type.includes('L')) {\n return 'float_le'\n } else {\n return 'float_be'\n }\n } else if (type === 'B') {\n return 'buffer'\n } else if (type === 'S') { // string or arguments\n return 'string'\n } else if (type === 'N') { // number encoded as string\n return 'number'\n } else if (type === 'O') { // object encoded string\n return 'object'\n } else if (type === '!') { // boolean 1:true 0:false\n return 'boolean'\n } else {\n throw TypeError('invalid data type')\n }\n\n}\n\nexport function readTypedBuffer(simpleType, buffer, offset, length) {\n\n const type = parseTypeName(simpleType)\n\n if (type == 'int8') return buffer.readInt8(offset)\n else if (type === 'uint8') return buffer.readUint8(offset)\n else if (type === 'int16_le') return buffer.readInt16LE(offset)\n else if (type === 'int16_be') return buffer.readInt16BE(offset)\n else if (type === 'uint16_le') return buffer.readUint16LE(offset)\n else if (type === 'uint16_be') return buffer.readUint16BE(offset)\n else if (type === 'int32_le') return buffer.readInt32LE(offset)\n else if (type === 'int32_be') return buffer.readInt32BE(offset)\n else if (type === 'uint32_le') return buffer.readUint32LE(offset)\n else if (type === 'uint32_be') return buffer.readUint32BE(offset)\n else if (type === 'float_le') return buffer.readFloatLE(offset)\n else if (type === 'float_be') return buffer.readFloatBE(offset)\n\n else if (type === 'buffer') {\n return buffer.subarray(offset, offset + length)\n } else if (type === 'string') {\n const strBuffer = buffer.subarray(offset, offset + length)\n return decoder.decode(strBuffer)\n } else if (type === 'number') {\n const strNumber = buffer.subarray(offset, offset + length)\n return Number(decoder.decode(strNumber))\n } else if (type === 'object') {\n const objEncoded = buffer.subarray(offset, offset + length)\n try {\n return JSON.parse(decoder.decode(objEncoded))\n } catch (error) {\n console.log('err. obj parse')\n }\n } else if (type === 'boolean') {\n const v = buffer.readInt8(offset)\n return v === 1\n } else {\n throw TypeError('invalid data')\n }\n}\n\nfunction flatSubArray(args) {\n let subArr = []\n const mainArr = args.filter(item => {\n if (Array.isArray(item[0])) subArr = subArr.concat(item)\n else return item\n })\n return mainArr.concat(subArr)\n}\n\nexport function pack(...args) {\n const bufArr = flatSubArray(args)\n let size = 0\n const info = []\n let offset = 0\n\n bufArr.forEach(bufPack => {\n const [name, type, data] = bufPack\n size += data.byteLength\n\n if (typeof name === 'number' || name.length > 0) {\n // MBA item use number type name.\n // MB item use string type name. null string means omit.\n \n // change to store more informative meta info. \n info.push([name, type, offset, data.byteLength]) \n \n }\n offset = size\n })\n\n\n let infoEncoded\n let infoSize\n\n if (info.length > 0) {\n let infoStr = JSON.stringify(info)\n // console.log('pack infoStr , size:', infoStr , infoStr.length )\n infoEncoded = encoder.encode(infoStr)\n infoSize = infoEncoded.byteLength\n size = size + infoSize + 2\n }\n\n const buffer = Buffer.alloc(size)\n offset = 0\n bufArr.forEach(bufPack => {\n const buf = bufPack[2]\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n\n if (info.length > 0) {\n buffer.set(infoEncoded, offset)\n const infoSizeBuff = NB('16', infoSize)\n buffer.set(infoSizeBuff, offset + infoSize)\n return buffer\n } else {\n return buffer\n }\n}\n\n\n/**\n * unpack() will use embeded meta info from the binary pack. \n * You can specify (optional) meta obejct. \n * (It's useful to read pure buffer data.)\n * \n * You can get the meta object from: getFrame(pack) , meta()\n * @param {Buffer|Uint8Array} binPack binaryData\n * @param {Object} meta *OPTION* \n * @returns {Object|undefined} success: return Object (include buffer data). fail: return undefined\n */\nexport function unpack(binPack, meta) {\n\n const infoArr = meta || getMeta(binPack)\n if (!infoArr) return\n\n const buffer = Buffer.from(binPack)\n const binObj = {}\n let readCounter = 0\n infoArr.forEach(bufPack => {\n const [name, type, offset, length] = bufPack\n binObj[name] = readTypedBuffer(type, buffer, offset, length)\n // console.log( '###3 len',length )\n if( length) readCounter += length\n })\n\n // Can not define meta for variable size buffer \n // unpacker support automatic property to read left(did't read) buffers.\n // console.log(\"######, unpack: buffer \" , readCounter, buffer ,buffer.byteLength)\n if( meta && buffer.byteLength !== readCounter ){\n let leftSize = buffer.byteLength - readCounter\n // console.log('total,left buffer size', buffer.byteLength, leftSize )\n binObj[\"$OTHERS\"] = readTypedBuffer('b', buffer, readCounter, leftSize)\n }\n\n // set args with values if exist.\n let mbaIndex = 0;\n let args = [];\n while( binObj[mbaIndex]){\n args.push( binObj[mbaIndex++])\n }\n \n if( args.length > 0 ) {\n binObj.args = args \n binObj.$ = binObj.args \n }\n\n return binObj\n\n}\n\n\n\nexport const U8 = parseUint8Array //alias\n/**\n * \n * @param {any} data \n * @param {Boolean} shareArrayBuffer false(default): return new( or copied) ArrayBuffer. true: share the input data's arrayBuffer.\n * @returns {Uint8Array}\n */\nexport function parseUint8Array(data, shareArrayBuffer = false) {\n if (data === undefined) throw TypeError('Invalid data type: Undefined')\n if (typeof data === 'string') {\n return encoder.encode(data)\n } else if (typeof data === 'number') { // number -> 1 byte uint8array(number)\n return Uint8Array.from([data])\n } else if (data instanceof ArrayBuffer) { // arraybuffer -> wrap uint8array(ab)\n if (shareArrayBuffer) {\n return new Uint8Array(data)\n } else {\n const originData = new Uint8Array(data)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else if (ArrayBuffer.isView(data)) { // accept Buffer too.\n if (shareArrayBuffer) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength) // DataView, TypedArray > uint8array( use offset, length )\n } else {\n // new memory to protect origin arraybuffer.\n const originData = new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else { // array, object\n return encoder.encode(JSON.stringify(data)) // object(array.. ) > JSON.str > encode > unint8array\n }\n}\n\nexport const B8 = parseBuffer\n\nexport function parseBuffer(data, shareArrayBuffer = false) {\n\n const u8 = parseUint8Array(data, shareArrayBuffer)\n if( shareArrayBuffer){\n return Buffer.from( u8.buffer, u8.byteOffset, u8.byteLength )\n }else{\n return Buffer.from(u8)\n }\n}\n\nexport const B8pack = parseBufferThenConcat\nexport function parseBufferThenConcat(...dataArray) {\n const buffers = dataArray.map(data => parseBuffer(data))\n return Buffer.concat( buffers)\n}\n\n\nexport const U8pack = parseUint8ThenConcat // alias\n/**\n * 1. parse list of data into U8 list\n * 2. return new Uint8Array merged.\n * @param {...any} dataArray \n * @returns \n */\nexport function parseUint8ThenConcat(...dataArray) {\n try {\n let bufferSize = 0\n let offset = 0\n const buffers = dataArray.map(data => parseUint8Array(data))\n buffers.forEach(buf => { bufferSize += buf.byteLength })\n const buffer = new Uint8Array(bufferSize)\n buffers.forEach(buf => {\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n return buffer\n } catch (error) {\n console.log(error)\n }\n}\n\nexport function hex(buffer) {\n return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')\n}\n\nexport function equal(buf1, buf2) {\n if (buf1.byteLength !== buf2.byteLength) return false\n for (let i = 0; i < buf1.byteLength; i++) {\n if (buf1[i] !== buf2[i]) return false\n }\n return true\n}\n\n\n\n\nexport function getBufferSize(binPack) {\n if (getMetaSize(binPack) === 0) {\n return binPack.byteLength\n } else {\n return binPack.byteLength - getMetaSize(binPack) - TAIL_LEN\n }\n\n}\n\n// MB and MBA \nexport function parseMetaInfo(binPack, infoSize) {\n let info;\n try {\n const buffer = new Uint8Array(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoFrom = buffer.byteLength - infoSize - 2\n const infoEncoded = buffer.subarray(infoFrom, buffer.byteLength - 2)\n const decoded = decoder.decode(infoEncoded)\n const info = JSON.parse(decoded)\n\n if (!Array.isArray(info) || !Array.isArray(info[0])) return\n\n let firstItem = info[0]\n if (!firstItem) return\n\n if (firstItem.length < 3) return\n const [name, type, offset] = firstItem\n\n if ( typeof type !== 'string' || typeof offset !== 'number') return\n\n return info\n } catch (error) {\n // return undefined\n }\n}\n\n\n/** \n * Meta buffer pack Tail:\n * binary Pack include TAIL(two bytes size) info at the end if it has JSON info.\n * not include TAIL if it has not JSON.\n */\nexport const TAIL_LEN = 2\n\n/**\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @returns {Number} last two byte value( read Uint16 bigendian )\n */\nexport function readTail(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n if (binPack.byteLength <= TAIL_LEN) return 0\n\n const dv = new DataView(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoSize = dv.getUint16(binPack.byteLength - TAIL_LEN) // last 2 bytes for json-info-length.\n return infoSize\n\n } else {\n // throw TypeError('invalid data type.')\n return 0\n }\n\n}\n\n\n// binay data pack is not always Buffer. \n// It should accept Uint8Array binPack.\n// This function don't use Buffer method.\n\nexport function getMetaSize(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n\n const size = binPack.byteLength\n if (size <= TAIL_LEN) return 0\n\n //1. tail size check\n const infoSize = readTail(binPack)\n if (infoSize === 0 || infoSize > size) return 0\n //2. try parse JSON \n const success = parseMetaInfo(binPack, infoSize)\n //3. return success: jsonInfoSize, fail: 0\n if (success) return infoSize\n else return 0\n }else{\n return 0\n }\n}\n\n\n/**\n * \n * @param {Buffer|Uint8Array} binPack \n * @returns {Buffer} \n */\nexport function getBuffer(binPack) {\n const rawBufferSize = getBufferSize(binPack)\n return binPack.subarray(0, rawBufferSize)\n}\n\n\n\n/**\n * extract Meta info object if it has.\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @param {Boolean} showDetail add additional item info: full data type name and bytelength.\n * @returns {Object|undefined} success: return MetaInfo Object. fail: return undefined.(No valid JSON included.)\n */\nexport function getMeta(binPack, showDetail = false) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n const infoSize = readTail(binPack)\n if (infoSize === 0) return\n\n // check valid Meta\n let metaInfo = parseMetaInfo(binPack, infoSize)\n if (!metaInfo) return\n\n if (!showDetail) {\n return metaInfo\n } else {\n // add additional info\n metaInfo.forEach(bufPack => {\n const len = bufPack[3]\n if (len == undefined) { // add size info.\n if (bufPack[1].includes('8')) bufPack[3] = 1\n else if (bufPack[1].includes('16')) bufPack[3] = 2\n else if (bufPack[1].includes('32')) bufPack[3] = 4\n else if (bufPack[1].includes('F')) bufPack[3] = 4\n else if (bufPack[1].includes('!')) bufPack[3] = 1\n }\n bufPack[4] = parseTypeName(bufPack[1]) // add full-type-name.\n })\n return metaInfo\n }\n}\n\nexport function rawPack( ...args){\n return getBuffer( pack(...args) )\n}\n\nexport function meta( ...args){\n return getMeta( pack(...args) )\n}\n\nexport function metaDetail( ...args){\n return getMeta( pack(...args) , true)\n}\n\n\n\nexport function getMetaDetail(binPack) {\n return getMeta(binPack, true)\n}\n","import { hash as sha256, hmac } from '../lib/fast-sha256.js'\nimport { MBP } from 'meta-buffer-pack'\n\nsha256.hash = function (data) {\n return sha256(MBP.U8(data))\n}\n\nsha256.hex = function (data) {\n return MBP.hex(sha256.hash(data))\n}\n\nsha256.hmac = function (key, data) {\n return hmac(MBP.U8(key), MBP.U8(data))\n}\n\nexport { sha256 }\n","import{ MBP, Buffer} from \"meta-buffer-pack\"\nconst MB = MBP.MB\n\n\n// remocon message pack one byte header. \nexport let BohoMsg = {\n AUTH_REQ : 0xB0, \n AUTH_NONCE: 0xB1,\n AUTH_HMAC: 0xB2,\n AUTH_ACK: 0xB3,\n AUTH_FAIL: 0xB4,\n AUTH_EXT: 0xB5,\n ENC_PACK : 0xB6, \n ENC_E2E : 0xB7, \n ENC_488 : 0xB8\n}\n\nfor (let c in BohoMsg) { BohoMsg[BohoMsg[c]] = c }\n\nexport const Meta = {\n\n AUTH_REQ: MBP.meta( // 2\n MB('header','8', 0),\n MB('reserved','8', 0)\n ),\n\n AUTH_NONCE: MBP.meta( // 13\n MB('header','8', 0),\n MB('unixTime','32L', 0),\n MB('milTime','32L', 0 ),\n MB('nonce', Buffer.alloc(4))\n ),\n\n AUTH_HMAC: MBP.meta( // 45\n MB('header','8', 0),\n MB('id8',Buffer.alloc(8)),\n MB('nonce', Buffer.alloc(4)),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n AUTH_ACK: MBP.meta( // 33\n MB('header','8', 0),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n\n ENC_PACK: MBP.meta( //25 + payload\n MB('type','8',0),\n MB('len','32L',0), // pure xdata size. \n MB('salt12', Buffer.alloc(12)), // sec,mil,rand\n MB('hmac',8,0)\n // MB( 'xdata', encData )\n ),\n\n\n ENC_488: MBP.meta( // 21 + payload\n MB('type','8', 0 ),\n MB('len','32L', 0 ),\n MB('otpSrc8', Buffer.alloc(8) ),\n MB('hmac8', Buffer.alloc(8) )\n // MB('xdata', encData ) \n )\n\n\n }\n\n\n function getMetaSize(meta){\n let lastItem = meta[ meta.length - 1]\n return lastItem[2] + lastItem[3]\n }\n\n export const MetaSize = {\n AUTH_REQ: getMetaSize( Meta.AUTH_REQ ),\n AUTH_NONCE: getMetaSize( Meta.AUTH_NONCE ),\n AUTH_HMAC: getMetaSize( Meta.AUTH_HMAC ),\n AUTH_ACK: getMetaSize( Meta.AUTH_ACK ),\n ENC_PACK: getMetaSize( Meta.ENC_PACK ),\n ENC_488: getMetaSize( Meta.ENC_488 )\n }\n\n// console.log( 'boho MetaSize', MetaSize )\n// boho MetaSize {\n// AUTH_REQ: 2,\n// AUTH_NONCE: 13,\n// AUTH_HMAC: 45,\n// AUTH_ACK: 33,\n// ENC_PACK: 25,\n// ENC_488: 21\n// }","import { sha256 } from './sha256-mbp.js'\nimport { MBP, Buffer } from 'meta-buffer-pack'\nexport { sha256, MBP, Buffer }\n\nimport { webcrypto } from 'crypto'\nimport { BohoMsg, Meta, MetaSize } from \"./constants.js\"\nexport { BohoMsg, Meta, MetaSize }\n\nlet isNode = false\ntry {\n isNode = Object.prototype.toString.call(global.process) === '[object process]'\n} catch (e) { }\n\n\nexport function RAND(size) {\n if( isNode ){\n return webcrypto.getRandomValues(Buffer.alloc(size))\n }else{\n return self.crypto.getRandomValues(Buffer.alloc(size))\n }\n}\n\n\n\nexport class Boho {\n // A. Core\n constructor() {\n\n this._id8 = Buffer.alloc(8)\n this._otpSrc44 = Buffer.alloc(44)\n this._otp36 = Buffer.alloc(36)\n this._hmac = Buffer.alloc(32)\n\n this.auth_salt12 = Buffer.alloc(12)\n this.localNonce = Buffer.alloc(4)\n this.remoteNonce = Buffer.alloc(4)\n this.isAuthorized = false\n\n }\n\n clearAuth(){\n this._id8.fill(0)\n this._otpSrc44.fill(0)\n this._otp36.fill(0)\n this._hmac.fill(0)\n this.auth_salt12.fill(0)\n this.localNonce.fill(0)\n this.remoteNonce.fill(0)\n this.isAuthorized = false\n }\n\n // for the self\n set_id8(data) {\n let encStr = MBP.B8(data)\n this._id8.fill(0)\n encStr.copy(this._id8, 0, 0, 8)\n }\n\n set_hash_id8(data) {\n let idSum = MBP.B8(sha256.hash(data))\n idSum.copy(this._id8, 0, 0, 8)\n }\n\n\n set_key(data) {\n let keySum = MBP.B8(sha256.hash(data))\n keySum.copy(this._otpSrc44, 0, 0, 32)\n }\n\n // for the remote client.\n copy_id8(data) {\n data.copy(this._id8, 0, 0, 8)\n }\n\n // for the remote client.\n copy_key(data) {\n data.copy(this._otpSrc44, 0, 0, 32)\n }\n\n\n sha256_n(srcData, n) {\n let hashSum = sha256.hash(srcData)\n for (let i = 0; i < n; i++) hashSum = sha256.hash(hashSum)\n return hashSum\n }\n\n\n // useful general encryption i.e. enc_pack\n set_clock_rand() {\n\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n RAND(4)\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n // for secure communication sender. \n set_clock_nonce(nonce) {\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n nonce\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n\n set_salt12(salt12) {\n salt12.copy(this._otpSrc44, 32)\n }\n\n resetOTP() {\n let otp32 = MBP.B8(sha256.hash(this._otpSrc44))\n otp32.copy(this._otp36, 0, 0, 32)\n }\n\n getIndexOTP(otpIndex) {\n this._otp36.writeUInt32LE(otpIndex, 32)\n return sha256.hash(this._otp36)\n }\n\n\n generateHMAC(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n }\n\n // return 8 bytes of hash\n getHMAC8(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n return this._hmac.subarray(0, 8)\n }\n\n xotp(data, otpStartIndex = 0, shareDataBuffer = false) {\n\n data = MBP.B8(data, shareDataBuffer)\n\n let len = data.byteLength\n let otpIndex = otpStartIndex\n let dataOffset = 0\n let xorCalcLen = 0\n\n while (len > 0) {\n xorCalcLen = len < 32 ? len : 32\n let iotp = this.getIndexOTP(++otpIndex);\n for (let i = 0; i < xorCalcLen; i++) {\n data[dataOffset++] ^= iotp[i]\n }\n len -= 32\n }\n return data\n }\n\n // B. AUTH process\n\n // step 1\n // client send AUTH_REQ\n auth_req() {\n return MBP.pack(\n MBP.MB('#type', '8', BohoMsg.AUTH_REQ),\n MBP.MB('#reserved', '8', 0)\n )\n }\n\n // step 2\n // server send AUTH_NONCE\n auth_nonce() {\n let now = Date.now()\n let unixTime = Math.floor(now / 1000)\n let milTime = now % 1000\n this.localNonce = RAND(4)\n this.auth_salt12 = Buffer.concat([\n MBP.NB('32L', unixTime),\n MBP.NB('32L', milTime),\n this.localNonce\n ])\n\n let infoPack = Buffer.concat([\n MBP.NB('8', BohoMsg.AUTH_NONCE),\n this.auth_salt12\n ])\n return infoPack\n }\n\n\n // step 3\n // client send AUTH_HMAC\n // input : auth_nonce buffer\n auth_hmac(buffer) {\n let auth_nonce = MBP.unpack(buffer, Meta.AUTH_NONCE)\n if (auth_nonce) {\n // console.log(' auth nonce', auth_nonce )\n\n // let now = Date.now()\n // let localUTC= Math.floor( now/ 1000 )\n // let localMilTime = now % 1000\n\n // console.log('time server [sec]', auth_nonce.unixTime, auth_nonce.milTime )\n // console.log('time client [sec]', localUTC , localMilTime )\n // console.log('time diff client and server[sec]', auth_nonce.unixTime - localUTC )\n\n // let serverSecMil = auth_nonce.unixTime * 1000 + auth_nonce.milTime\n // console.log('time diff msec client and server[msec]', serverSecMil - now )\n\n let salt12 = Buffer.concat([\n MBP.NB('32L', auth_nonce.unixTime),\n MBP.NB('32L', auth_nonce.milTime),\n auth_nonce.nonce\n ])\n\n this.set_salt12(salt12)\n\n this.localNonce = RAND(4)\n // hmac( key, sec,mil,serverNonce, localNonce)\n this.generateHMAC(this.localNonce)\n\n // let hmac8 = this._hmac.subarray(0, 8)\n\n this.remoteNonce = auth_nonce.nonce\n\n let auth_hmac_buffer = MBP.pack( // 21 -> 45\n MBP.MB('#header', '8', BohoMsg.AUTH_HMAC),\n MBP.MB('#id8', this._id8),\n MBP.MB('#nonce', this.localNonce),\n MBP.MB('#hmac32', this._hmac ), //full 32bytes hash\n )\n\n return auth_hmac_buffer\n }\n return false\n }\n\n /* \n step 4. for server\n \n step 4-1. check client's auth_hmac\n step 4-2. reply result\n send AUTH_ACK with another HMAC for client.\n or send AUTH_FAIL when fail.\n */\n\n // input: unpack object or buffer of auth_hmac\n check_auth_hmac(data) {\n let infoPack\n if (data instanceof Uint8Array) {\n infoPack = MBP.unpack(data, Meta.AUTH_HMAC)\n if (!infoPack) {\n // console.log('auth_hamc unpack fail.')\n return\n }\n } else {\n infoPack = data;\n\n }\n // console.log('auth_hamc infoObj', infoPack )\n\n this.set_salt12(this.auth_salt12)\n\n // hmac( key, sec,mil,serverNonce, clientNonce)\n this.generateHMAC(infoPack.nonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n\n if (MBP.equal(infoPack.hmac32, hmac32)) {\n //Auth success then store client nonce.\n this.remoteNonce = infoPack.nonce\n\n let salt12 = Buffer.concat([\n this.localNonce,\n this.remoteNonce,\n this.localNonce\n ])\n this.set_salt12(salt12)\n this.generateHMAC(infoPack.nonce)\n let replyHMAC = this._hmac\n\n let auth_ack = MBP.rawPack( \n MBP.MB('header', '8', BohoMsg.AUTH_ACK),\n MBP.MB('hmac32', replyHMAC)\n )\n this.isAuthorized = true\n return auth_ack\n }\n return false\n }\n\n\n\n // step 5. cross check\n // client check server's hmac. \n check_auth_ack_hmac(buffer) {\n // server response has hmac ( key + clientNonce)\n let auth_ack = MBP.unpack(buffer, Meta.AUTH_ACK)\n if (auth_ack) {\n let salt12 = Buffer.concat([\n this.remoteNonce,\n this.localNonce,\n this.remoteNonce,\n ])\n this.set_salt12(salt12)\n this.generateHMAC(this.localNonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n //server side hmac using client nonce.\n if (MBP.equal(hmac32, auth_ack.hmac32)) {\n this.isAuthorized = true\n return true\n }\n }\n // server hmac error\n return\n }\n\n // C. Secure Communication\n\n // Must AUTH first.\n encrypt_488(data) { // payload max about 2^32 bytes.\n if (!this.isAuthorized) return\n\n data = MBP.B8(data)\n\n this.set_clock_nonce(this.remoteNonce)\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_488),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#otpSrc8', this._otpSrc44.subarray(32, 40)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n // console.log('enc pack result', pack )\n return pack\n }\n\n\n decrypt_488(data) {\n data = MBP.B8(data)\n\n let pack = MBP.unpack(data, Meta.ENC_488)\n\n if (pack) {\n\n let salt12 = Buffer.concat([\n pack.otpSrc8,\n this.localNonce\n ])\n\n this.set_salt12(salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS.subarray(0, pack.len)\n let decData = this.xotp(xdata)\n\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(hmac8, pack.hmac8)) return decData\n\n // console.log('hmac dismatch', decData )\n } else {\n // console.log('unpack fail')\n }\n }\n\n\n // maxium data size is 2**32 -1 bytes.\n encryptPack(data) {\n data = MBP.B8(data)\n\n this.set_clock_rand()\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_PACK),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#salt12', this._otpSrc44.subarray(32)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n return pack\n }\n\n\n decryptPack(data) {\n\n if (data[0] !== BohoMsg.ENC_PACK) {\n // console.log('Boho: Invalid packType')\n return\n }\n\n // packLength\n let readPackLen = data.readUint32LE(1);\n if (readPackLen != data.byteLength - MetaSize.ENC_PACK) {\n // console.log('Boho: Invalid LEN data_len: data.byteLen' , readPackLen, data.byteLength)\n return\n }\n\n try {\n let pack = MBP.unpack(data, Meta.ENC_PACK)\n // console.log('unpack result', pack )\n if (!pack) return\n\n this.set_salt12(pack.salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS\n let decData = this.xotp(xdata)\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(pack.hmac, hmac8)) {\n pack.data = decData\n return pack\n }\n // console.log('Invalid HMAC', pack.hmac, hmac8 )\n\n } catch (error) {\n // console.log('Boho: unpack err', error )\n\n }\n }\n\n encrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let pack = this.encryptPack(data)\n this._otpSrc44.set(baseKey)\n return pack;\n }\n\n decrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let decPack = this.decryptPack(data)\n this._otpSrc44.set(baseKey)\n return decPack\n }\n\n}\n","import { Boho, RAND, MBP, BohoMsg, Meta, MetaSize , sha256, Buffer } from './boho.js'\n\nBoho.RAND = RAND;\nBoho.BohoMsg = BohoMsg;\nBoho.Meta = Meta;\nBoho.MetaSize = MetaSize;\nBoho.sha256 = sha256;\nBoho.MBP = MBP;\nBoho.Buffer = Buffer;\n\nexport default Boho;"],"names":["K","Uint32Array","hashBlocks","w","v","p","pos","len","a","b","c","d","e","f","g","h","u","i","j","t1","t2","Hash","this","digestLength","blockSize","state","Int32Array","temp","buffer","Uint8Array","bufferLength","bytesHashed","finished","reset","prototype","clean","length","update","data","dataLength","Error","dataPos","finish","out","left","bitLenHi","bitLenLo","padLength","digest","_saveState","_restoreState","from","HMAC","key","inner","outer","pad","istate","ostate","hash","byteLength_1","b64","lens","getLens","validLen","placeHoldersLen","toByteArray_1","tmp","arr","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray_1","uint8","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Array","code","indexOf","start","end","num","output","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","s","NaN","Infinity","Math","pow","value","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","y","concat","list","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","encoder","TextEncoder","decoder","TextDecoder","NB","numberBuffer","initValue","toUpperCase","MB","metaBuffer","typeOrData","bufferType","JSON","stringify","MBA","metaBufferArguments","args","map","argsIndex","parseTypeName","readTypedBuffer","simpleType","strBuffer","decode","strNumber","objEncoded","parse","pack","bufArr","subArr","filter","item","flatSubArray","info","infoEncoded","infoSize","forEach","bufPack","infoStr","encode","infoSizeBuff","unpack","binPack","meta","infoArr","getMeta","binObj","readCounter","leftSize","mbaIndex","$","U8","parseUint8Array","shareArrayBuffer","originData","dataCopy","B8","parseBuffer","u8","B8pack","parseBufferThenConcat","dataArray","buffers","U8pack","parseUint8ThenConcat","bufferSize","hex","equal","buf1","buf2","getBufferSize","getMetaSize","TAIL_LEN","parseMetaInfo","infoFrom","decoded","firstItem","readTail","DataView","getUint16","getBuffer","rawBufferSize","showDetail","metaInfo","rawPack","sha256","MBP.U8","MBP.hex","hmac","MBP.MB","BohoMsg","AUTH_REQ","AUTH_NONCE","AUTH_HMAC","AUTH_ACK","AUTH_FAIL","AUTH_EXT","ENC_PACK","ENC_E2E","ENC_488","Meta","MBP.meta","lastItem","MetaSize","isNode","global","process","RAND","webcrypto","getRandomValues","self","crypto","Boho","_id8","_otpSrc44","_otp36","_hmac","auth_salt12","localNonce","remoteNonce","isAuthorized","clearAuth","set_id8","encStr","MBP.B8","set_hash_id8","set_key","copy_id8","copy_key","sha256_n","srcData","hashSum","set_clock_rand","milTime","Date","now","secTime","MBP.NB","set_clock_nonce","nonce","set_salt12","salt12","resetOTP","getIndexOTP","otpIndex","generateHMAC","hmacSrc","getHMAC8","xotp","otpStartIndex","shareDataBuffer","dataOffset","xorCalcLen","iotp","auth_req","MBP.pack","auth_nonce","unixTime","auth_hmac","MBP.unpack","check_auth_hmac","infoPack","hmac32","MBP.equal","replyHMAC","auth_ack","MBP.rawPack","check_auth_ack_hmac","encrypt_488","hmac8","encData","decrypt_488","otpSrc8","xdata","$OTHERS","decData","encryptPack","decryptPack","encrypt_e2e","baseKey","decrypt_e2e","decPack","MBP"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"boho.min.js","sources":["../lib/fast-sha256.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/meta-buffer-pack/src/meta-buffer-pack.js","../src/sha256-mbp.js","../src/constants.js","../src/boho.js","../src/browserDefault.js"],"sourcesContent":["// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\nexport var digestLength = 32\nexport var blockSize = 64\n// SHA-256 constants\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n])\nfunction hashBlocks (w, v, p, pos, len) {\n let a, b, c, d, e, f, g, h, u, i, j, t1, t2\n while (len >= 64) {\n a = v[0]\n b = v[1]\n c = v[2]\n d = v[3]\n e = v[4]\n f = v[5]\n g = v[6]\n h = v[7]\n for (i = 0; i < 16; i++) {\n j = pos + i * 4\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) |\n ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff))\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2]\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10)\n u = w[i - 15]\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3)\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0)\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0\n h = g\n g = f\n f = e\n e = (d + t1) | 0\n d = c\n c = b\n b = a\n a = (t1 + t2) | 0\n }\n v[0] += a\n v[1] += b\n v[2] += c\n v[3] += d\n v[4] += e\n v[5] += f\n v[6] += g\n v[7] += h\n pos += 64\n len -= 64\n }\n return pos\n}\n// Hash implements SHA256 hash algorithm.\nconst Hash = /** @class */ (function () {\n function Hash () {\n this.digestLength = digestLength\n this.blockSize = blockSize\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8) // hash state\n this.temp = new Int32Array(64) // temporary state\n this.buffer = new Uint8Array(128) // buffer for data to hash\n this.bufferLength = 0 // number of bytes in buffer\n this.bytesHashed = 0 // number of total bytes hashed\n this.finished = false // indicates whether the hash was finalized\n this.reset()\n }\n // Resets hash state making it possible\n // to re-use this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667\n this.state[1] = 0xbb67ae85\n this.state[2] = 0x3c6ef372\n this.state[3] = 0xa54ff53a\n this.state[4] = 0x510e527f\n this.state[5] = 0x9b05688c\n this.state[6] = 0x1f83d9ab\n this.state[7] = 0x5be0cd19\n this.bufferLength = 0\n this.bytesHashed = 0\n this.finished = false\n return this\n }\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0\n }\n this.reset()\n }\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\")\n }\n let dataPos = 0\n this.bytesHashed += dataLength\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64)\n this.bufferLength = 0\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength)\n dataLength %= 64\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++]\n dataLength--\n }\n return this\n }\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n const bytesHashed = this.bytesHashed\n const left = this.bufferLength\n const bitLenHi = (bytesHashed / 0x20000000) | 0\n const bitLenLo = bytesHashed << 3\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128\n this.buffer[left] = 0x80\n for (var i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength)\n this.finished = true\n }\n for (var i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff\n }\n return this\n }\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (let i = 0; i < this.state.length; i++) {\n out[i] = this.state[i]\n }\n }\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (let i = 0; i < this.state.length; i++) {\n this.state[i] = from[i]\n }\n this.bytesHashed = bytesHashed\n this.finished = false\n this.bufferLength = 0\n }\n return Hash\n}())\nexport { Hash }\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nconst HMAC = /** @class */ (function () {\n function HMAC (key) {\n this.inner = new Hash()\n this.outer = new Hash()\n this.blockSize = this.inner.blockSize\n this.digestLength = this.inner.digestLength\n const pad = new Uint8Array(this.blockSize)\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean()\n } else {\n for (var i = 0; i < key.length; i++) {\n pad[i] = key[i]\n }\n }\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36\n }\n this.inner.update(pad)\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c\n }\n this.outer.update(pad)\n this.istate = new Uint32Array(8)\n this.ostate = new Uint32Array(8)\n this.inner._saveState(this.istate)\n this.outer._saveState(this.ostate)\n for (var i = 0; i < pad.length; i++) {\n pad[i] = 0\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize)\n this.outer._restoreState(this.ostate, this.outer.blockSize)\n return this\n }\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (let i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0\n }\n this.inner.clean()\n this.outer.clean()\n }\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data)\n return this\n }\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out)\n } else {\n this.inner.finish(out)\n this.outer.update(out, this.digestLength).finish(out)\n }\n return this\n }\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength)\n this.finish(out)\n return out\n }\n return HMAC\n}())\nexport { HMAC }\n// Returns SHA256 hash of data.\nexport function hash (data) {\n const h = (new Hash()).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Function hash is both available as module.hash and as default export.\nexport default hash\n// Returns HMAC-SHA256 of data under the key.\nexport function hmac (key, data) {\n const h = (new HMAC(key)).update(data)\n const digest = h.digest()\n h.clean()\n return digest\n}\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer (buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n const num = counter[0]\n if (num === 0) {\n throw new Error('hkdf: cannot expand more')\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset()\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer)\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info)\n }\n // Hash in the counter.\n hmac.update(counter)\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer)\n // Increment counter inside typed array, this works properly.\n counter[0]++\n}\nconst hkdfSalt = new Uint8Array(digestLength) // Filled with zeroes.\nexport function hkdf (key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt }\n if (length === void 0) { length = 32 }\n const counter = new Uint8Array([1])\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(salt, key)\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n const hmac_ = new HMAC(okm)\n // Allocate buffer.\n const buffer = new Uint8Array(hmac_.digestLength)\n let bufpos = buffer.length\n const out = new Uint8Array(length)\n for (let i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter)\n bufpos = 0\n }\n out[i] = buffer[bufpos++]\n }\n hmac_.clean()\n buffer.fill(0)\n counter.fill(0)\n return out\n}\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nexport function pbkdf2 (password, salt, iterations, dkLen) {\n const prf = new HMAC(password)\n const len = prf.digestLength\n const ctr = new Uint8Array(4)\n const t = new Uint8Array(len)\n const u = new Uint8Array(len)\n const dk = new Uint8Array(dkLen)\n for (var i = 0; i * len < dkLen; i++) {\n const c = i + 1\n ctr[0] = (c >>> 24) & 0xff\n ctr[1] = (c >>> 16) & 0xff\n ctr[2] = (c >>> 8) & 0xff\n ctr[3] = (c >>> 0) & 0xff\n prf.reset()\n prf.update(salt)\n prf.update(ctr)\n prf.finish(u)\n for (var j = 0; j < len; j++) {\n t[j] = u[j]\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset()\n prf.update(u).finish(u)\n for (let k = 0; k < len; k++) {\n t[k] ^= u[k]\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j]\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0\n }\n prf.clean()\n return dk\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","import { Buffer } from 'buffer/index.js'\nexport { Buffer } // for iife reference MBP.Buffer\nconst encoder = new TextEncoder()\nconst decoder = new TextDecoder()\n\n\nexport const NB = numberBuffer\nexport function numberBuffer(type, initValue = 0) {\n let buffer\n if (type === undefined || typeof type !== 'string' || typeof initValue !== 'number') {\n throw TypeError('invlaid init variablie type name. ')\n }\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n buffer = Buffer.alloc(1)\n if (type.includes('I')) buffer.writeInt8(initValue)\n else buffer.writeUint8(initValue)\n } else if (type.includes('16')) {\n buffer = Buffer.alloc(2)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt16LE(initValue)\n else buffer.writeInt16BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint16LE(initValue)\n else buffer.writeUint16BE(initValue)\n }\n } else if (type.includes('32')) {\n buffer = Buffer.alloc(4)\n if (type.includes('I')) {\n if (type.includes('L')) buffer.writeInt32LE(initValue)\n else buffer.writeInt32BE(initValue)\n } else {\n if (type.includes('L')) buffer.writeUint32LE(initValue)\n else buffer.writeUint32BE(initValue)\n }\n } else if (type.includes('F')) {\n buffer = Buffer.alloc(4)\n if (type.includes('L')) {\n buffer.writeFloatLE(initValue)\n } else {\n buffer.writeFloatBE(initValue)\n }\n } else if (type.includes('N')) { // number as string\n buffer = Buffer.from(String(initValue))\n } else {\n console.log(`invalid type: ${type} or initvalue: ${initValue}`)\n }\n return buffer\n}\n\n\nexport const MB = metaBuffer\nexport function metaBuffer(name, typeOrData, initValue) {\n let buffer\n let bufferType = 'B'\n if (typeof typeOrData === 'number') {\n if (typeof initValue === 'number') { // initValue 0 should be passed.\n buffer = Buffer.alloc(typeOrData)\n if( initValue !== 0) buffer.fill(initValue)\n bufferType = 'B'\n } else {\n buffer = Buffer.from(String(typeOrData))\n bufferType = 'N'\n }\n } else if (typeof typeOrData === 'string' && typeof initValue === 'number') { // number with type.\n bufferType = typeOrData.toUpperCase() // use explicit type name\n buffer = numberBuffer(typeOrData, initValue) // notice. two categories. n: number string. 8, 16, 32: typed number.\n } else if (typeof typeOrData === 'string' && initValue === undefined) { // string buffer\n buffer = Buffer.from(typeOrData)\n bufferType = 'S'\n } else if (typeOrData instanceof Uint8Array && initValue === undefined) { // buffer | Uint8Array\n // Buffer.from: Copies the passed buffer data onto a new Buffer instance.\n // typecasting Uint8Array to Buffer.\n buffer = (typeOrData instanceof Buffer) ? typeOrData : Buffer.from(typeOrData)\n } else if (typeOrData instanceof ArrayBuffer && initValue === undefined) { // arrayBuffer\n // Notice. typedArray is recommended instead of arrayBuffer\n buffer = Buffer.from(typeOrData)\n } else if (ArrayBuffer.isView(typeOrData)) { // typedarray buffer\n buffer = Buffer.from(typeOrData.buffer, typeOrData.byteOffset, typeOrData.byteLength)\n } else if (typeof typeOrData === 'object' && initValue === undefined) { // object. like array. stringify\n buffer = Buffer.from(JSON.stringify(typeOrData))\n bufferType = 'O'\n } else if (typeof typeOrData === 'boolean' && initValue === undefined) { // object. like array. stringify\n const v = typeOrData ? 1 : 0\n buffer = Buffer.from([v])\n bufferType = '!'\n } else {\n throw TypeError('invalid meta buffer type')\n }\n\n if (typeof name === 'string' && name.includes('#')) name = '' //\n\n return [name, bufferType, buffer]\n}\n\nexport const MBA = metaBufferArguments\nexport function metaBufferArguments(...args) {\n let i = 0\n const mba = args.map(\n data => {\n const argsIndex = i++\n // tip. MBA use index number as metabuffer's property name.\n if (typeof data === 'number') {\n // * JS's primitive Number stored as string.\n return MB(argsIndex, 'N', data)\n } else {\n // typedarray, dataview, array, object, boolean\n return MB(argsIndex, data)\n }\n })\n\n return mba\n}\n\nexport function parseTypeName(type) {\n type = type.toUpperCase()\n\n if (type.includes('8')) {\n if (type.includes('I')) {\n return 'int8'\n } else {\n return 'uint8'\n }\n } else if (type.includes('16')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int16_le'\n } else {\n return 'int16_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint16_le'\n } else {\n return 'uint16_be'\n }\n }\n } else if (type.includes('32')) {\n if (type.includes('I')) {\n if (type.includes('L')) {\n return 'int32_le'\n } else {\n return 'int32_be'\n }\n } else {\n if (type.includes('L')) {\n return 'uint32_le'\n } else {\n return 'uint32_be'\n }\n }\n } else if (type.includes('F')) {\n if (type.includes('L')) {\n return 'float_le'\n } else {\n return 'float_be'\n }\n } else if (type === 'B') {\n return 'buffer'\n } else if (type === 'S') { // string or arguments\n return 'string'\n } else if (type === 'N') { // number encoded as string\n return 'number'\n } else if (type === 'O') { // object encoded string\n return 'object'\n } else if (type === '!') { // boolean 1:true 0:false\n return 'boolean'\n } else {\n throw TypeError('invalid data type')\n }\n\n}\n\nexport function readTypedBuffer(simpleType, buffer, offset, length) {\n\n const type = parseTypeName(simpleType)\n\n if (type == 'int8') return buffer.readInt8(offset)\n else if (type === 'uint8') return buffer.readUint8(offset)\n else if (type === 'int16_le') return buffer.readInt16LE(offset)\n else if (type === 'int16_be') return buffer.readInt16BE(offset)\n else if (type === 'uint16_le') return buffer.readUint16LE(offset)\n else if (type === 'uint16_be') return buffer.readUint16BE(offset)\n else if (type === 'int32_le') return buffer.readInt32LE(offset)\n else if (type === 'int32_be') return buffer.readInt32BE(offset)\n else if (type === 'uint32_le') return buffer.readUint32LE(offset)\n else if (type === 'uint32_be') return buffer.readUint32BE(offset)\n else if (type === 'float_le') return buffer.readFloatLE(offset)\n else if (type === 'float_be') return buffer.readFloatBE(offset)\n\n else if (type === 'buffer') {\n return buffer.subarray(offset, offset + length)\n } else if (type === 'string') {\n const strBuffer = buffer.subarray(offset, offset + length)\n return decoder.decode(strBuffer)\n } else if (type === 'number') {\n const strNumber = buffer.subarray(offset, offset + length)\n return Number(decoder.decode(strNumber))\n } else if (type === 'object') {\n const objEncoded = buffer.subarray(offset, offset + length)\n try {\n return JSON.parse(decoder.decode(objEncoded))\n } catch (error) {\n console.log('err. obj parse')\n }\n } else if (type === 'boolean') {\n const v = buffer.readInt8(offset)\n return v === 1\n } else {\n throw TypeError('invalid data')\n }\n}\n\nfunction flatSubArray(args) {\n let subArr = []\n const mainArr = args.filter(item => {\n if (Array.isArray(item[0])) subArr = subArr.concat(item)\n else return item\n })\n return mainArr.concat(subArr)\n}\n\nexport function pack(...args) {\n const bufArr = flatSubArray(args)\n let size = 0\n const info = []\n let offset = 0\n\n bufArr.forEach(bufPack => {\n const [name, type, data] = bufPack\n size += data.byteLength\n\n if (typeof name === 'number' || name.length > 0) {\n // MBA item use number type name.\n // MB item use string type name. null string means omit.\n \n // change to store more informative meta info. \n info.push([name, type, offset, data.byteLength]) \n \n }\n offset = size\n })\n\n\n let infoEncoded\n let infoSize\n\n if (info.length > 0) {\n let infoStr = JSON.stringify(info)\n // console.log('pack infoStr , size:', infoStr , infoStr.length )\n infoEncoded = encoder.encode(infoStr)\n infoSize = infoEncoded.byteLength\n size = size + infoSize + 2\n }\n\n const buffer = Buffer.alloc(size)\n offset = 0\n bufArr.forEach(bufPack => {\n const buf = bufPack[2]\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n\n if (info.length > 0) {\n buffer.set(infoEncoded, offset)\n const infoSizeBuff = NB('16', infoSize)\n buffer.set(infoSizeBuff, offset + infoSize)\n return buffer\n } else {\n return buffer\n }\n}\n\n\n/**\n * unpack() will use embeded meta info from the binary pack. \n * You can specify (optional) meta obejct. \n * (It's useful to read pure buffer data.)\n * \n * You can get the meta object from: getFrame(pack) , meta()\n * @param {Buffer|Uint8Array} binPack binaryData\n * @param {Object} meta *OPTION* \n * @returns {Object|undefined} success: return Object (include buffer data). fail: return undefined\n */\nexport function unpack(binPack, meta) {\n\n const infoArr = meta || getMeta(binPack)\n if (!infoArr) return\n\n const buffer = Buffer.from(binPack)\n const binObj = {}\n let readCounter = 0\n infoArr.forEach(bufPack => {\n const [name, type, offset, length] = bufPack\n binObj[name] = readTypedBuffer(type, buffer, offset, length)\n // console.log( '###3 len',length )\n if( length) readCounter += length\n })\n\n // Can not define meta for variable size buffer \n // unpacker support automatic property to read left(did't read) buffers.\n // console.log(\"######, unpack: buffer \" , readCounter, buffer ,buffer.byteLength)\n if( meta && buffer.byteLength !== readCounter ){\n let leftSize = buffer.byteLength - readCounter\n // console.log('total,left buffer size', buffer.byteLength, leftSize )\n binObj[\"$OTHERS\"] = readTypedBuffer('b', buffer, readCounter, leftSize)\n }\n\n // set args with values if exist.\n let mbaIndex = 0;\n let args = [];\n while( binObj[mbaIndex]){\n args.push( binObj[mbaIndex++])\n }\n \n if( args.length > 0 ) {\n binObj.args = args \n binObj.$ = binObj.args \n }\n\n return binObj\n\n}\n\n\n\nexport const U8 = parseUint8Array //alias\n/**\n * \n * @param {any} data \n * @param {Boolean} shareArrayBuffer false(default): return new( or copied) ArrayBuffer. true: share the input data's arrayBuffer.\n * @returns {Uint8Array}\n */\nexport function parseUint8Array(data, shareArrayBuffer = false) {\n if (data === undefined) throw TypeError('Invalid data type: Undefined')\n if (typeof data === 'string') {\n return encoder.encode(data)\n } else if (typeof data === 'number') { // number -> 1 byte uint8array(number)\n return Uint8Array.from([data])\n } else if (data instanceof ArrayBuffer) { // arraybuffer -> wrap uint8array(ab)\n if (shareArrayBuffer) {\n return new Uint8Array(data)\n } else {\n const originData = new Uint8Array(data)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else if (ArrayBuffer.isView(data)) { // accept Buffer too.\n if (shareArrayBuffer) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength) // DataView, TypedArray > uint8array( use offset, length )\n } else {\n // new memory to protect origin arraybuffer.\n const originData = new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n const dataCopy = new Uint8Array(data.byteLength)\n dataCopy.set(originData)\n return dataCopy\n }\n } else { // array, object\n return encoder.encode(JSON.stringify(data)) // object(array.. ) > JSON.str > encode > unint8array\n }\n}\n\nexport const B8 = parseBuffer\n\nexport function parseBuffer(data, shareArrayBuffer = false) {\n\n const u8 = parseUint8Array(data, shareArrayBuffer)\n if( shareArrayBuffer){\n return Buffer.from( u8.buffer, u8.byteOffset, u8.byteLength )\n }else{\n return Buffer.from(u8)\n }\n}\n\nexport const B8pack = parseBufferThenConcat\nexport function parseBufferThenConcat(...dataArray) {\n const buffers = dataArray.map(data => parseBuffer(data))\n return Buffer.concat( buffers)\n}\n\n\nexport const U8pack = parseUint8ThenConcat // alias\n/**\n * 1. parse list of data into U8 list\n * 2. return new Uint8Array merged.\n * @param {...any} dataArray \n * @returns \n */\nexport function parseUint8ThenConcat(...dataArray) {\n try {\n let bufferSize = 0\n let offset = 0\n const buffers = dataArray.map(data => parseUint8Array(data))\n buffers.forEach(buf => { bufferSize += buf.byteLength })\n const buffer = new Uint8Array(bufferSize)\n buffers.forEach(buf => {\n buffer.set(buf, offset)\n offset += buf.byteLength\n })\n return buffer\n } catch (error) {\n console.log(error)\n }\n}\n\nexport function hex(buffer) {\n return Array.prototype.map.call(new Uint8Array(buffer), x => ('00' + x.toString(16)).slice(-2)).join('')\n}\n\nexport function equal(buf1, buf2) {\n if (buf1.byteLength !== buf2.byteLength) return false\n for (let i = 0; i < buf1.byteLength; i++) {\n if (buf1[i] !== buf2[i]) return false\n }\n return true\n}\n\n\n\n\nexport function getBufferSize(binPack) {\n if (getMetaSize(binPack) === 0) {\n return binPack.byteLength\n } else {\n return binPack.byteLength - getMetaSize(binPack) - TAIL_LEN\n }\n\n}\n\n// MB and MBA \nexport function parseMetaInfo(binPack, infoSize) {\n let info;\n try {\n const buffer = new Uint8Array(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoFrom = buffer.byteLength - infoSize - 2\n const infoEncoded = buffer.subarray(infoFrom, buffer.byteLength - 2)\n const decoded = decoder.decode(infoEncoded)\n const info = JSON.parse(decoded)\n\n if (!Array.isArray(info) || !Array.isArray(info[0])) return\n\n let firstItem = info[0]\n if (!firstItem) return\n\n if (firstItem.length < 3) return\n const [name, type, offset] = firstItem\n\n if ( typeof type !== 'string' || typeof offset !== 'number') return\n\n return info\n } catch (error) {\n // return undefined\n }\n}\n\n\n/** \n * Meta buffer pack Tail:\n * binary Pack include TAIL(two bytes size) info at the end if it has JSON info.\n * not include TAIL if it has not JSON.\n */\nexport const TAIL_LEN = 2\n\n/**\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @returns {Number} last two byte value( read Uint16 bigendian )\n */\nexport function readTail(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n if (binPack.byteLength <= TAIL_LEN) return 0\n\n const dv = new DataView(binPack.buffer, binPack.byteOffset, binPack.byteLength)\n const infoSize = dv.getUint16(binPack.byteLength - TAIL_LEN) // last 2 bytes for json-info-length.\n return infoSize\n\n } else {\n // throw TypeError('invalid data type.')\n return 0\n }\n\n}\n\n\n// binay data pack is not always Buffer. \n// It should accept Uint8Array binPack.\n// This function don't use Buffer method.\n\nexport function getMetaSize(binPack) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n if (binPack instanceof Uint8Array) {\n\n const size = binPack.byteLength\n if (size <= TAIL_LEN) return 0\n\n //1. tail size check\n const infoSize = readTail(binPack)\n if (infoSize === 0 || infoSize > size) return 0\n //2. try parse JSON \n const success = parseMetaInfo(binPack, infoSize)\n //3. return success: jsonInfoSize, fail: 0\n if (success) return infoSize\n else return 0\n }else{\n return 0\n }\n}\n\n\n/**\n * \n * @param {Buffer|Uint8Array} binPack \n * @returns {Buffer} \n */\nexport function getBuffer(binPack) {\n const rawBufferSize = getBufferSize(binPack)\n return binPack.subarray(0, rawBufferSize)\n}\n\n\n\n/**\n * extract Meta info object if it has.\n * \n * @param {Buffer|Uint8Array|ArrayBuffer} binPack \n * @param {Boolean} showDetail add additional item info: full data type name and bytelength.\n * @returns {Object|undefined} success: return MetaInfo Object. fail: return undefined.(No valid JSON included.)\n */\nexport function getMeta(binPack, showDetail = false) {\n if( binPack instanceof ArrayBuffer ){\n binPack = Buffer.from(binPack) // creates a view for ArrayBuffer, without copying.\n } \n const infoSize = readTail(binPack)\n if (infoSize === 0) return\n\n // check valid Meta\n let metaInfo = parseMetaInfo(binPack, infoSize)\n if (!metaInfo) return\n\n if (!showDetail) {\n return metaInfo\n } else {\n // add additional info\n metaInfo.forEach(bufPack => {\n const len = bufPack[3]\n if (len == undefined) { // add size info.\n if (bufPack[1].includes('8')) bufPack[3] = 1\n else if (bufPack[1].includes('16')) bufPack[3] = 2\n else if (bufPack[1].includes('32')) bufPack[3] = 4\n else if (bufPack[1].includes('F')) bufPack[3] = 4\n else if (bufPack[1].includes('!')) bufPack[3] = 1\n }\n bufPack[4] = parseTypeName(bufPack[1]) // add full-type-name.\n })\n return metaInfo\n }\n}\n\nexport function rawPack( ...args){\n return getBuffer( pack(...args) )\n}\n\nexport function meta( ...args){\n return getMeta( pack(...args) )\n}\n\nexport function metaDetail( ...args){\n return getMeta( pack(...args) , true)\n}\n\n\n\nexport function getMetaDetail(binPack) {\n return getMeta(binPack, true)\n}\n","import { hash as sha256, hmac } from '../lib/fast-sha256.js'\nimport { MBP } from 'meta-buffer-pack'\n\nsha256.hash = function (data) {\n return sha256(MBP.U8(data))\n}\n\nsha256.hex = function (data) {\n return MBP.hex(sha256.hash(data))\n}\n\nsha256.hmac = function (key, data) {\n return hmac(MBP.U8(key), MBP.U8(data))\n}\n\nexport { sha256 }\n","import{ MBP, Buffer} from \"meta-buffer-pack\"\nconst MB = MBP.MB\n\n\n// remocon message pack one byte header. \nexport let BohoMsg = {\n AUTH_REQ : 0xB0, \n AUTH_NONCE: 0xB1,\n AUTH_HMAC: 0xB2,\n AUTH_ACK: 0xB3,\n AUTH_FAIL: 0xB4,\n AUTH_EXT: 0xB5,\n ENC_PACK : 0xB6, \n ENC_E2E : 0xB7, \n ENC_488 : 0xB8\n}\n\nfor (let c in BohoMsg) { BohoMsg[BohoMsg[c]] = c }\n\nexport const Meta = {\n\n AUTH_REQ: MBP.meta( // 2\n MB('header','8', 0),\n MB('reserved','8', 0)\n ),\n\n AUTH_NONCE: MBP.meta( // 13\n MB('header','8', 0),\n MB('unixTime','32L', 0),\n MB('milTime','32L', 0 ),\n MB('nonce', Buffer.alloc(4))\n ),\n\n AUTH_HMAC: MBP.meta( // 45\n MB('header','8', 0),\n MB('id8',Buffer.alloc(8)),\n MB('nonce', Buffer.alloc(4)),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n AUTH_ACK: MBP.meta( // 33\n MB('header','8', 0),\n MB('hmac32', Buffer.alloc(32))\n ),\n \n\n ENC_PACK: MBP.meta( //25 + payload\n MB('type','8',0),\n MB('len','32L',0), // pure xdata size. \n MB('salt12', Buffer.alloc(12)), // sec,mil,rand\n MB('hmac',8,0)\n // MB( 'xdata', encData )\n ),\n\n\n ENC_488: MBP.meta( // 21 + payload\n MB('type','8', 0 ),\n MB('len','32L', 0 ),\n MB('otpSrc8', Buffer.alloc(8) ),\n MB('hmac8', Buffer.alloc(8) )\n // MB('xdata', encData ) \n )\n\n\n }\n\n\n function getMetaSize(meta){\n let lastItem = meta[ meta.length - 1]\n return lastItem[2] + lastItem[3]\n }\n\n export const MetaSize = {\n AUTH_REQ: getMetaSize( Meta.AUTH_REQ ),\n AUTH_NONCE: getMetaSize( Meta.AUTH_NONCE ),\n AUTH_HMAC: getMetaSize( Meta.AUTH_HMAC ),\n AUTH_ACK: getMetaSize( Meta.AUTH_ACK ),\n ENC_PACK: getMetaSize( Meta.ENC_PACK ),\n ENC_488: getMetaSize( Meta.ENC_488 )\n }\n\n// console.log( 'boho MetaSize', MetaSize )\n// boho MetaSize {\n// AUTH_REQ: 2,\n// AUTH_NONCE: 13,\n// AUTH_HMAC: 45,\n// AUTH_ACK: 33,\n// ENC_PACK: 25,\n// ENC_488: 21\n// }","import { sha256 } from './sha256-mbp.js'\nimport { MBP, Buffer } from 'meta-buffer-pack'\nexport { sha256, MBP, Buffer }\n\nimport { webcrypto } from 'crypto'\nimport { BohoMsg, Meta, MetaSize } from \"./constants.js\"\nexport { BohoMsg, Meta, MetaSize }\n\nlet isNode = false\ntry {\n isNode = Object.prototype.toString.call(global.process) === '[object process]'\n} catch (e) { }\n\n\nexport function RAND(size) {\n if( isNode ){\n return webcrypto.getRandomValues(Buffer.alloc(size))\n }else{\n return self.crypto.getRandomValues(Buffer.alloc(size))\n }\n}\n\n\n\nexport class Boho {\n // A. Core\n constructor() {\n\n this._id8 = Buffer.alloc(8)\n this._otpSrc44 = Buffer.alloc(44)\n this._otp36 = Buffer.alloc(36)\n this._hmac = Buffer.alloc(32)\n\n this.auth_salt12 = Buffer.alloc(12)\n this.localNonce = Buffer.alloc(4)\n this.remoteNonce = Buffer.alloc(4)\n this.isAuthorized = false\n\n }\n\n clearAuth(){\n this._id8.fill(0)\n this._otpSrc44.fill(0)\n this._otp36.fill(0)\n this._hmac.fill(0)\n this.auth_salt12.fill(0)\n this.localNonce.fill(0)\n this.remoteNonce.fill(0)\n this.isAuthorized = false\n }\n\n // for the self\n set_id8(data) {\n let encStr = MBP.B8(data)\n this._id8.fill(0)\n encStr.copy(this._id8, 0, 0, 8)\n }\n\n set_hash_id8(data) {\n let idSum = MBP.B8(sha256.hash(data))\n idSum.copy(this._id8, 0, 0, 8)\n }\n\n\n set_key(data) {\n let keySum = MBP.B8(sha256.hash(data))\n keySum.copy(this._otpSrc44, 0, 0, 32)\n }\n\n // for the remote client.\n copy_id8(data) {\n data.copy(this._id8, 0, 0, 8)\n }\n\n // for the remote client.\n copy_key(data) {\n data.copy(this._otpSrc44, 0, 0, 32)\n }\n\n\n sha256_n(srcData, n) {\n let hashSum = sha256.hash(srcData)\n for (let i = 0; i < n; i++) hashSum = sha256.hash(hashSum)\n return hashSum\n }\n\n\n // useful general encryption i.e. enc_pack\n set_clock_rand() {\n\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n RAND(4)\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n // for secure communication sender. \n set_clock_nonce(nonce) {\n let milTime = Date.now()\n let secTime = parseInt(milTime / 1000)\n milTime = milTime % 0xffffffff\n const salt12 = Buffer.concat([\n MBP.NB('32L', secTime),\n MBP.NB('32L', milTime),\n nonce\n ])\n\n salt12.copy(this._otpSrc44, 32)\n }\n\n\n set_salt12(salt12) {\n salt12.copy(this._otpSrc44, 32)\n }\n\n resetOTP() {\n let otp32 = MBP.B8(sha256.hash(this._otpSrc44))\n otp32.copy(this._otp36, 0, 0, 32)\n }\n\n getIndexOTP(otpIndex) {\n this._otp36.writeUInt32LE(otpIndex, 32)\n return sha256.hash(this._otp36)\n }\n\n\n generateHMAC(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n }\n\n // return 8 bytes of hash\n getHMAC8(data) {\n let hmacSrc = Buffer.concat([this._otpSrc44, data])\n this._hmac = MBP.B8(sha256.hash(hmacSrc))\n return this._hmac.subarray(0, 8)\n }\n\n xotp(data, otpStartIndex = 0, shareDataBuffer = false) {\n\n data = MBP.B8(data, shareDataBuffer)\n\n let len = data.byteLength\n let otpIndex = otpStartIndex\n let dataOffset = 0\n let xorCalcLen = 0\n\n while (len > 0) {\n xorCalcLen = len < 32 ? len : 32\n let iotp = this.getIndexOTP(++otpIndex);\n for (let i = 0; i < xorCalcLen; i++) {\n data[dataOffset++] ^= iotp[i]\n }\n len -= 32\n }\n return data\n }\n\n // B. AUTH process\n\n // step 1\n // client send AUTH_REQ\n auth_req() {\n return MBP.pack(\n MBP.MB('#type', '8', BohoMsg.AUTH_REQ),\n MBP.MB('#reserved', '8', 0)\n )\n }\n\n // step 2\n // server send AUTH_NONCE\n auth_nonce() {\n let now = Date.now()\n let unixTime = Math.floor(now / 1000)\n let milTime = now % 1000\n this.localNonce = RAND(4)\n this.auth_salt12 = Buffer.concat([\n MBP.NB('32L', unixTime),\n MBP.NB('32L', milTime),\n this.localNonce\n ])\n\n let infoPack = Buffer.concat([\n MBP.NB('8', BohoMsg.AUTH_NONCE),\n this.auth_salt12\n ])\n return infoPack\n }\n\n\n // step 3\n // client send AUTH_HMAC\n // input : auth_nonce buffer\n auth_hmac(buffer) {\n let auth_nonce = MBP.unpack(buffer, Meta.AUTH_NONCE)\n if (auth_nonce) {\n // console.log(' auth nonce', auth_nonce )\n\n // let now = Date.now()\n // let localUTC= Math.floor( now/ 1000 )\n // let localMilTime = now % 1000\n\n // console.log('time server [sec]', auth_nonce.unixTime, auth_nonce.milTime )\n // console.log('time client [sec]', localUTC , localMilTime )\n // console.log('time diff client and server[sec]', auth_nonce.unixTime - localUTC )\n\n // let serverSecMil = auth_nonce.unixTime * 1000 + auth_nonce.milTime\n // console.log('time diff msec client and server[msec]', serverSecMil - now )\n\n let salt12 = Buffer.concat([\n MBP.NB('32L', auth_nonce.unixTime),\n MBP.NB('32L', auth_nonce.milTime),\n auth_nonce.nonce\n ])\n\n this.set_salt12(salt12)\n\n this.localNonce = RAND(4)\n // hmac( key, sec,mil,serverNonce, localNonce)\n this.generateHMAC(this.localNonce)\n\n // let hmac8 = this._hmac.subarray(0, 8)\n\n this.remoteNonce = auth_nonce.nonce\n\n let auth_hmac_buffer = MBP.pack( // 21 -> 45\n MBP.MB('#header', '8', BohoMsg.AUTH_HMAC),\n MBP.MB('#id8', this._id8),\n MBP.MB('#nonce', this.localNonce),\n MBP.MB('#hmac32', this._hmac ), //full 32bytes hash\n )\n\n return auth_hmac_buffer\n }\n return false\n }\n\n /* \n step 4. for server\n \n step 4-1. check client's auth_hmac\n step 4-2. reply result\n send AUTH_ACK with another HMAC for client.\n or send AUTH_FAIL when fail.\n */\n\n // input: unpack object or buffer of auth_hmac\n check_auth_hmac(data) {\n let infoPack\n if (data instanceof Uint8Array) {\n infoPack = MBP.unpack(data, Meta.AUTH_HMAC)\n if (!infoPack) {\n // console.log('auth_hamc unpack fail.')\n return\n }\n } else {\n infoPack = data;\n\n }\n // console.log('auth_hamc infoObj', infoPack )\n\n this.set_salt12(this.auth_salt12)\n\n // hmac( key, sec,mil,serverNonce, clientNonce)\n this.generateHMAC(infoPack.nonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n\n if (MBP.equal(infoPack.hmac32, hmac32)) {\n //Auth success then store client nonce.\n this.remoteNonce = infoPack.nonce\n\n let salt12 = Buffer.concat([\n this.localNonce,\n this.remoteNonce,\n this.localNonce\n ])\n this.set_salt12(salt12)\n this.generateHMAC(infoPack.nonce)\n let replyHMAC = this._hmac\n\n let auth_ack = MBP.rawPack( \n MBP.MB('header', '8', BohoMsg.AUTH_ACK),\n MBP.MB('hmac32', replyHMAC)\n )\n this.isAuthorized = true\n return auth_ack\n }\n return false\n }\n\n\n\n // step 5. cross check\n // client check server's hmac. \n check_auth_ack_hmac(buffer) {\n // server response has hmac ( key + clientNonce)\n let auth_ack = MBP.unpack(buffer, Meta.AUTH_ACK)\n if (auth_ack) {\n let salt12 = Buffer.concat([\n this.remoteNonce,\n this.localNonce,\n this.remoteNonce,\n ])\n this.set_salt12(salt12)\n this.generateHMAC(this.localNonce)\n // let hmac8 = this._hmac.subarray(0, 8)\n let hmac32 = this._hmac\n //server side hmac using client nonce.\n if (MBP.equal(hmac32, auth_ack.hmac32)) {\n this.isAuthorized = true\n return true\n }\n }\n // server hmac error\n return\n }\n\n // C. Secure Communication\n\n // Must AUTH first.\n encrypt_488(data) { // payload max about 2^32 bytes.\n if (!this.isAuthorized) return\n\n data = MBP.B8(data)\n\n this.set_clock_nonce(this.remoteNonce)\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_488),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#otpSrc8', this._otpSrc44.subarray(32, 40)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n // console.log('enc pack result', pack )\n return pack\n }\n\n\n decrypt_488(data) {\n data = MBP.B8(data)\n\n let pack = MBP.unpack(data, Meta.ENC_488)\n\n if (pack) {\n\n let salt12 = Buffer.concat([\n pack.otpSrc8,\n this.localNonce\n ])\n\n this.set_salt12(salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS.subarray(0, pack.len)\n let decData = this.xotp(xdata)\n\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(hmac8, pack.hmac8)) return decData\n\n // console.log('hmac dismatch', decData )\n } else {\n // console.log('unpack fail')\n }\n }\n\n\n // maxium data size is 2**32 -1 bytes.\n encryptPack(data) {\n data = MBP.B8(data)\n\n this.set_clock_rand()\n this.resetOTP()\n\n let hmac8 = this.getHMAC8(data)\n let encData = this.xotp(data)\n\n let pack = MBP.pack(\n MBP.MB('#type', '8', BohoMsg.ENC_PACK),\n MBP.MB('#len', '32L', data.byteLength),\n MBP.MB('#salt12', this._otpSrc44.subarray(32)),\n MBP.MB('#hmac8', hmac8),\n MBP.MB('#xdata', encData)\n )\n return pack\n }\n\n\n decryptPack(data) {\n\n if (data[0] !== BohoMsg.ENC_PACK) {\n // console.log('Boho: Invalid packType')\n return\n }\n\n // packLength\n let readPackLen = data.readUint32LE(1);\n if (readPackLen != data.byteLength - MetaSize.ENC_PACK) {\n // console.log('Boho: Invalid LEN data_len: data.byteLen' , readPackLen, data.byteLength)\n return\n }\n\n try {\n let pack = MBP.unpack(data, Meta.ENC_PACK)\n // console.log('unpack result', pack )\n if (!pack) return\n\n this.set_salt12(pack.salt12)\n this.resetOTP()\n\n let xdata = pack.$OTHERS\n let decData = this.xotp(xdata)\n let hmac8 = this.getHMAC8(decData)\n\n if (MBP.equal(pack.hmac, hmac8)) {\n pack.data = decData\n return pack\n }\n // console.log('Invalid HMAC', pack.hmac, hmac8 )\n\n } catch (error) {\n // console.log('Boho: unpack err', error )\n\n }\n }\n\n encrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let pack = this.encryptPack(data)\n this._otpSrc44.set(baseKey)\n return pack;\n }\n\n decrypt_e2e(data, key) {\n let baseKey = Buffer.alloc(32)\n baseKey.set(this._otpSrc44.subarray(0, 32))\n this.set_key(key)\n let decPack = this.decryptPack(data)\n this._otpSrc44.set(baseKey)\n return decPack\n }\n\n}\n","import { Boho, RAND, MBP, BohoMsg, Meta, MetaSize , sha256, Buffer } from './boho.js'\n\nBoho.RAND = RAND;\nBoho.BohoMsg = BohoMsg;\nBoho.Meta = Meta;\nBoho.MetaSize = MetaSize;\nBoho.sha256 = sha256;\nBoho.MBP = MBP;\nBoho.Buffer = Buffer;\n\nexport default Boho;"],"names":["digestLength","blockSize","K","Uint32Array","hashBlocks","w","v","p","pos","len","a","b","c","d","e","f","g","h","u","i","j","t1","t2","Hash","this","state","Int32Array","temp","buffer","Uint8Array","bufferLength","bytesHashed","finished","reset","prototype","clean","length","update","data","dataLength","Error","dataPos","finish","out","left","bitLenHi","bitLenLo","padLength","digest","_saveState","_restoreState","from","HMAC","key","inner","outer","pad","istate","ostate","hash","byteLength_1","b64","lens","getLens","validLen","placeHoldersLen","toByteArray_1","tmp","arr","Arr","_byteLength","curByte","revLookup","charCodeAt","fromByteArray_1","uint8","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Array","code","indexOf","start","end","num","output","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","s","NaN","Infinity","Math","pow","value","rt","abs","isNaN","floor","log","LN2","customInspectSymbol","Symbol","exports","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","string","encoding","isEncoding","byteLength","actual","write","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","base64","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","x","y","concat","list","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","ieee754","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","encoder","TextEncoder","decoder","TextDecoder","NB","numberBuffer","initValue","toUpperCase","MB","metaBuffer","typeOrData","bufferType","JSON","stringify","MBA","metaBufferArguments","args","map","argsIndex","parseTypeName","readTypedBuffer","simpleType","strBuffer","decode","strNumber","objEncoded","parse","pack","bufArr","subArr","filter","item","flatSubArray","info","infoEncoded","infoSize","forEach","bufPack","infoStr","encode","infoSizeBuff","unpack","binPack","meta","infoArr","getMeta","binObj","readCounter","leftSize","mbaIndex","$","U8","parseUint8Array","shareArrayBuffer","originData","dataCopy","B8","parseBuffer","u8","B8pack","parseBufferThenConcat","dataArray","buffers","U8pack","parseUint8ThenConcat","bufferSize","hex","equal","buf1","buf2","getBufferSize","getMetaSize","TAIL_LEN","parseMetaInfo","infoFrom","decoded","firstItem","readTail","DataView","getUint16","getBuffer","rawBufferSize","showDetail","metaInfo","rawPack","sha256","MBP.U8","MBP.hex","hmac","MBP.MB","BohoMsg","AUTH_REQ","AUTH_NONCE","AUTH_HMAC","AUTH_ACK","AUTH_FAIL","AUTH_EXT","ENC_PACK","ENC_E2E","ENC_488","Meta","MBP.meta","lastItem","MetaSize","isNode","global","process","RAND","webcrypto","getRandomValues","self","crypto","Boho","_id8","_otpSrc44","_otp36","_hmac","auth_salt12","localNonce","remoteNonce","isAuthorized","clearAuth","set_id8","encStr","MBP.B8","set_hash_id8","set_key","copy_id8","copy_key","sha256_n","srcData","hashSum","set_clock_rand","milTime","Date","now","secTime","MBP.NB","set_clock_nonce","nonce","set_salt12","salt12","resetOTP","getIndexOTP","otpIndex","generateHMAC","hmacSrc","getHMAC8","xotp","otpStartIndex","shareDataBuffer","dataOffset","xorCalcLen","iotp","auth_req","MBP.pack","auth_nonce","unixTime","auth_hmac","MBP.unpack","check_auth_hmac","infoPack","hmac32","MBP.equal","replyHMAC","auth_ack","MBP.rawPack","check_auth_ack_hmac","encrypt_488","hmac8","encData","decrypt_488","otpSrc8","xdata","$OTHERS","decData","encryptPack","decryptPack","encrypt_e2e","baseKey","decrypt_e2e","decPack","MBP"],"mappings":"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"} \ No newline at end of file diff --git a/dist/boho.mjs b/dist/boho.mjs index 921436a..bfe2be4 100644 --- a/dist/boho.mjs +++ b/dist/boho.mjs @@ -1,2 +1,2 @@ -import{webcrypto as t}from"crypto";const e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function r(t,r,n,i,o){let f,s,u,h,a,c,l,p,y,g,d,b,w;for(;o>=64;){for(f=r[0],s=r[1],u=r[2],h=r[3],a=r[4],c=r[5],l=r[6],p=r[7],g=0;g<16;g++)d=i+4*g,t[g]=(255&n[d])<<24|(255&n[d+1])<<16|(255&n[d+2])<<8|255&n[d+3];for(g=16;g<64;g++)y=t[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=t[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,t[g]=(b+t[g-7]|0)+(w+t[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(e[g]+t[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;r[0]+=f,r[1]+=s,r[2]+=u,r[3]+=h,r[4]+=a,r[5]+=c,r[6]+=l,r[7]+=p,i+=64,o-=64}return i}const n=function(){function t(){this.digestLength=32,this.blockSize=64,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[n++],e--;64===this.bufferLength&&(r(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(n=r(this.temp,this.state,t,n,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[n++],e--;return this},t.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,n=this.bufferLength,i=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[n]=128;for(var e=n+1;e>>24&255,this.buffer[f-7]=i>>>16&255,this.buffer[f-6]=i>>>8&255,this.buffer[f-5]=i>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,r(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(e=0;e<8;e++)t[4*e+0]=this.state[e]>>>24&255,t[4*e+1]=this.state[e]>>>16&255,t[4*e+2]=this.state[e]>>>8&255,t[4*e+3]=this.state[e]>>>0&255;return this},t.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},t.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new n).update(t).finish(e).clean();else for(var r=0;r0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=a[t.charCodeAt(r)]<<2|a[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=a[t.charCodeAt(r)]<<10|a[t.charCodeAt(r+1)]<<4|a[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},u=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(h[e>>2]+h[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(h[e>>10]+h[e>>4&63]+h[e<<2&63]+"="));return i.join("")},h=[],a=[],c="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,y=l.length;p0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function d(t,e,r){for(var n,i,o=[],f=e;f>18&63]+h[i>>12&63]+h[i>>6&63]+h[63&i]);return o.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63;var b,w,B={byteLength:f,toByteArray:s,fromByteArray:u},m=function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},E=function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g},A=(b=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(q(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(q(t,ArrayBuffer)||t&&q(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(q(t,SharedArrayBuffer)||t&&q(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||Q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||q(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return Y(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return G(t).length;default:if(i)return n?-1:Y(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return S(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return v(this,e,r);case"latin1":case"binary":return C(this,e,r);case"base64":return L(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function L(t,e,r){return 0===e&&r===t.length?B.fromByteArray(t):B.fromByteArray(t.slice(e,r))}function I(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=T)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(q(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":case"latin1":case"binary":return A(this,t,e,r);case"base64":return _(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const T=4096;function v(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function R(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function M(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function H(t,e,r,n,i){F(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function x(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,0,r,4),E(t,e,r,n,23,4),r+4}function P(t,e,r,n,i){return e=+e,r>>>=0,i||x(t,0,r,8),E(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||O(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||O(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||O(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||O(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||O(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||O(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=W((function(t){D(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||K(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||O(t,4,this.length),m(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||O(t,4,this.length),m(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||O(t,8,this.length),m(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||O(t,8,this.length),m(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||R(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=W((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=W((function(t,e=0){return H(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);R(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||R(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=W((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=W((function(t,e=0){return H(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return P(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return P(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function F(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new $.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){D(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||K(e,t.length-(r+1))}(n,i,o)}function D(t,e){if("number"!=typeof t)throw new $.ERR_INVALID_ARG_TYPE(e,"number",t)}function K(t,e,r){if(Math.floor(t)!==t)throw D(t,r),new $.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new $.ERR_BUFFER_OUT_OF_BOUNDS;throw new $.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=z(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=z(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const V=/[^+/0-9A-Za-z-_]/g;function Y(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function G(t){return B.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(V,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function q(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function Q(t){return t!=t}const X=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function W(t){return"undefined"==typeof BigInt?Z:t}function Z(){throw new Error("BigInt not supported")}},b(w={exports:{}},w.exports),w.exports); -/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const _=new TextEncoder,U=new TextDecoder,L=I;function I(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=A.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=A.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=A.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=A.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=A.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const T=v;function v(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=A.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=A.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=I(e,r);else if("string"==typeof e&&void 0===r)n=A.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof A.Buffer?e:A.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=A.Buffer.from(e);else if(ArrayBuffer.isView(e))n=A.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=A.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=A.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const C=S;function S(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?T(r,"N",t):T(r,t)}))}function N(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function O(t,e,r,n){const i=N(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return U.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(U.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(U.decode(t))}catch(t){console.log("err. obj parse")}}}function R(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=_.encode(t),o=i.byteLength,r=r+o+2}const s=A.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=L("16",o);return s.set(t,f+o),s}return s}function M(t,e){const r=e||X(t);if(!r)return;const n=A.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=O(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=O("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const H=x;function x(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return _.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return _.encode(JSON.stringify(t))}const k=P;function P(t,e=!1){const r=x(t,e);return e?A.Buffer.from(r.buffer,r.byteOffset,r.byteLength):A.Buffer.from(r)}const $=j;function j(...t){const e=t.map((t=>P(t)));return A.Buffer.concat(e)}const z=F;function F(...t){try{let e=0,r=0;const n=t.map((t=>x(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function D(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function K(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return Y(t,r)?r:0}return 0}function Q(t){const e=V(t);return t.subarray(0,e)}function X(t,e=!1){t instanceof ArrayBuffer&&(t=A.Buffer.from(t));const r=J(t);if(0===r)return;let n=Y(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=N(t[1])})),n):n:void 0}function W(...t){return Q(R(...t))}function Z(...t){return X(R(...t))}var tt=Object.freeze({__proto__:null,Buffer:A.Buffer,NB:L,numberBuffer:I,MB:T,metaBuffer:v,MBA:C,metaBufferArguments:S,parseTypeName:N,readTypedBuffer:O,pack:R,unpack:M,U8:H,parseUint8Array:x,B8:k,parseBuffer:P,B8pack:$,parseBufferThenConcat:j,U8pack:z,parseUint8ThenConcat:F,hex:D,equal:K,getBufferSize:V,parseMetaInfo:Y,TAIL_LEN:G,readTail:J,getMetaSize:q,getBuffer:Q,getMeta:X,rawPack:W,meta:Z,metaDetail:function(...t){return X(R(...t),!0)},getMetaDetail:function(t){return X(t,!0)}});o.hash=function(t){return o(H(t))},o.hex=function(t){return D(o.hash(t))},o.hmac=function(t,e){return function(t,e){const r=new i(t).update(e),n=r.digest();return r.clean(),n}(H(t),H(e))};const et=T;let rt={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in rt)rt[rt[t]]=t;const nt={AUTH_REQ:Z(et("header","8",0),et("reserved","8",0)),AUTH_NONCE:Z(et("header","8",0),et("unixTime","32L",0),et("milTime","32L",0),et("nonce",A.Buffer.alloc(4))),AUTH_HMAC:Z(et("header","8",0),et("id8",A.Buffer.alloc(8)),et("nonce",A.Buffer.alloc(4)),et("hmac32",A.Buffer.alloc(32))),AUTH_ACK:Z(et("header","8",0),et("hmac32",A.Buffer.alloc(32))),ENC_PACK:Z(et("type","8",0),et("len","32L",0),et("salt12",A.Buffer.alloc(12)),et("hmac",8,0)),ENC_488:Z(et("type","8",0),et("len","32L",0),et("otpSrc8",A.Buffer.alloc(8)),et("hmac8",A.Buffer.alloc(8)))};function it(t){let e=t[t.length-1];return e[2]+e[3]}const ot={AUTH_REQ:it(nt.AUTH_REQ),AUTH_NONCE:it(nt.AUTH_NONCE),AUTH_HMAC:it(nt.AUTH_HMAC),AUTH_ACK:it(nt.AUTH_ACK),ENC_PACK:it(nt.ENC_PACK),ENC_488:it(nt.ENC_488)};let ft=!1;try{ft="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function st(e){return ft?t.getRandomValues(A.Buffer.alloc(e)):self.crypto.getRandomValues(A.Buffer.alloc(e))}class ut{constructor(){this._id8=A.Buffer.alloc(8),this._otpSrc44=A.Buffer.alloc(44),this._otp36=A.Buffer.alloc(36),this._hmac=A.Buffer.alloc(32),this.auth_salt12=A.Buffer.alloc(12),this.localNonce=A.Buffer.alloc(4),this.remoteNonce=A.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=k(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){k(o.hash(t)).copy(this._id8,0,0,8)}set_key(t){k(o.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=o.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r=64;){for(f=e[0],s=e[1],u=e[2],h=e[3],a=e[4],c=e[5],l=e[6],p=e[7],g=0;g<16;g++)d=i+4*g,t[g]=(255&r[d])<<24|(255&r[d+1])<<16|(255&r[d+2])<<8|255&r[d+3];for(g=16;g<64;g++)y=t[g-2],b=(y>>>17|y<<15)^(y>>>19|y<<13)^y>>>10,y=t[g-15],w=(y>>>7|y<<25)^(y>>>18|y<<14)^y>>>3,t[g]=(b+t[g-7]|0)+(w+t[g-16]|0);for(g=0;g<64;g++)b=(((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+(a&c^~a&l)|0)+(p+(n[g]+t[g]|0)|0)|0,w=((f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10))+(f&s^f&u^s&u)|0,p=l,l=c,c=a,a=h+b|0,h=u,u=s,s=f,f=b+w|0;e[0]+=f,e[1]+=s,e[2]+=u,e[3]+=h,e[4]+=a,e[5]+=c,e[6]+=l,e[7]+=p,i+=64,o-=64}return i}const o=function(){function t(){this.digestLength=e,this.blockSize=r,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return t.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},t.prototype.clean=function(){for(var t=0;t0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(i(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=i(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},t.prototype.finish=function(t){if(!this.finished){const t=this.bytesHashed,r=this.bufferLength,n=t/536870912|0,o=t<<3,f=t%64<56?64:128;this.buffer[r]=128;for(var e=r+1;e>>24&255,this.buffer[f-7]=n>>>16&255,this.buffer[f-6]=n>>>8&255,this.buffer[f-5]=n>>>0&255,this.buffer[f-4]=o>>>24&255,this.buffer[f-3]=o>>>16&255,this.buffer[f-2]=o>>>8&255,this.buffer[f-1]=o>>>0&255,i(this.temp,this.state,this.buffer,0,f),this.finished=!0}for(e=0;e<8;e++)t[4*e+0]=this.state[e]>>>24&255,t[4*e+1]=this.state[e]>>>16&255,t[4*e+2]=this.state[e]>>>8&255,t[4*e+3]=this.state[e]>>>0&255;return this},t.prototype.digest=function(){const t=new Uint8Array(this.digestLength);return this.finish(t),t},t.prototype._saveState=function(t){for(let e=0;ethis.blockSize)(new o).update(t).finish(e).clean();else for(var r=0;r0?i-4:i;for(r=0;r>16&255,f[s++]=e>>8&255,f[s++]=255&e;2===o&&(e=l[t.charCodeAt(r)]<<2|l[t.charCodeAt(r+1)]>>4,f[s++]=255&e);1===o&&(e=l[t.charCodeAt(r)]<<10|l[t.charCodeAt(r+1)]<<4|l[t.charCodeAt(r+2)]>>2,f[s++]=e>>8&255,f[s++]=255&e);return f},a=function(t){for(var e,r=t.length,n=r%3,i=[],o=16383,f=0,s=r-n;fs?s:f+o));1===n?(e=t[r-1],i.push(c[e>>2]+c[e<<4&63]+"==")):2===n&&(e=(t[r-2]<<8)+t[r-1],i.push(c[e>>10]+c[e>>4&63]+c[e<<2&63]+"="));return i.join("")},c=[],l=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,y="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g=0,d=y.length;g0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function w(t,e,r){for(var n,i,o=[],f=e;f>18&63]+c[i>>12&63]+c[i>>6&63]+c[63&i]);return o.join("")}l["-".charCodeAt(0)]=62,l["_".charCodeAt(0)]=63;var B,m,E={byteLength:u,toByteArray:h,fromByteArray:a},A={read:function(t,e,r,n,i){var o,f,s=8*i-n-1,u=(1<>1,a=-7,c=r?i-1:0,l=r?-1:1,p=t[e+c];for(c+=l,o=p&(1<<-a)-1,p>>=-a,a+=s;a>0;o=256*o+t[e+c],c+=l,a-=8);for(f=o&(1<<-a)-1,o>>=-a,a+=n;a>0;f=256*f+t[e+c],c+=l,a-=8);if(0===o)o=1-h;else{if(o===u)return f?NaN:1/0*(p?-1:1);f+=Math.pow(2,n),o-=h}return(p?-1:1)*f*Math.pow(2,o-n)},write:function(t,e,r,n,i,o){var f,s,u,h=8*o-i-1,a=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,y=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,f=a):(f=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-f))<1&&(f--,u*=2),(e+=f+c>=1?l/u:l*Math.pow(2,1-c))*u>=2&&(f++,u/=2),f+c>=a?(s=0,f=a):f+c>=1?(s=(e*u-1)*Math.pow(2,i),f+=c):(s=e*Math.pow(2,c-1)*Math.pow(2,i),f=0));i>=8;t[r+p]=255&s,p+=y,s/=256,i-=8);for(f=f<0;t[r+p]=255&f,p+=y,f/=256,h-=8);t[r+p-y]|=128*g}},_=(B=function(t,e){const r="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},e.INSPECT_MAX_BYTES=50;const n=2147483647;function i(t){if(t>n)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return u(t)}return f(t,e,r)}function f(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|l(t,e);let n=i(r);const f=n.write(t,e);return f!==r&&(n=n.slice(0,f)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(J(t,Uint8Array)){const e=new Uint8Array(t);return a(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(J(t,ArrayBuffer)||t&&J(t.buffer,ArrayBuffer))return a(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(J(t,SharedArrayBuffer)||t&&J(t.buffer,SharedArrayBuffer)))return a(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);const f=function(t){if(o.isBuffer(t)){const e=0|c(t.length),r=i(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||q(t.length)?i(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(f)return f;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function s(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function u(t){return s(t),i(t<0?0:0|c(t))}function h(t){const e=t.length<0?0:0|c(t.length),r=i(e);for(let n=0;n=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return 0|t}function l(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||J(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Y(t).length;default:if(i)return n?-1:V(t).length;e=(""+e).toLowerCase(),i=!0}}function p(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,r);case"utf8":case"utf-8":return L(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return U(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),q(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:d(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):d(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function d(t,e,r,n,i){let o,f=1,s=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;f=2,s/=2,u/=2,r/=2}function h(t,e){return 1===f?t[e]:t.readUInt16BE(e*f)}if(i){let n=-1;for(o=r;os&&(r=s-u),o=r;o>=0;o--){let r=!0;for(let n=0;ni&&(n=i):n=i;const o=e.length;let f;for(n>o/2&&(n=o/2),f=0;f>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function U(t,e,r){return 0===e&&r===t.length?E.fromByteArray(t):E.fromByteArray(t.slice(e,r))}function L(t,e,r){r=Math.min(t.length,r);const n=[];let i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+f<=r){let r,n,s,u;switch(f){case 1:e<128&&(o=e);break;case 2:r=t[i+1],128==(192&r)&&(u=(31&e)<<6|63&r,u>127&&(o=u));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(u=(15&e)<<12|(63&r)<<6|63&n,u>2047&&(u<55296||u>57343)&&(o=u));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(u=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,u>65535&&u<1114112&&(o=u))}}null===o?(o=65533,f=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=f}return function(t){const e=t.length;if(e<=I)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=l,o.prototype._isBuffer=!0,o.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(J(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let f=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0);const u=Math.min(f,s),h=this.slice(n,i),a=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return b(this,t,e,r);case"utf8":case"utf-8":return w(this,t,e,r);case"ascii":case"latin1":case"binary":return B(this,t,e,r);case"base64":return m(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const I=4096;function T(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function O(t,e,r,n,i,f){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function R(t,e,r,n,i){z(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,f>>=8,t[r++]=f,r}function M(t,e,r,n,i){z(e,n,i,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let f=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=f,f>>=8,t[r+2]=f,f>>=8,t[r+1]=f,f>>=8,t[r]=f,r+8}function H(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function x(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,4),A.write(t,e,r,n,23,4),r+4}function k(t,e,r,n,i){return e=+e,r>>>=0,i||H(t,0,r,8),A.write(t,e,r,n,52,8),r+8}o.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||N(t,e,this.length);let n=this[t],i=1,o=0;for(;++o=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||N(t,e,this.length);let n=e,i=1,o=this[t+--n];for(;n>0&&(i*=256);)o+=this[t+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*e)),o},o.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=X((function(t){F(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||D(t,this.length-8);const n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||N(t,4,this.length),A.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),A.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),A.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),A.read(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,n||O(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,o=1;for(this[e+i]=255&t;--i>=0&&(o*=256);)this[e+i]=t/o&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=X((function(t,e=0){return R(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=X((function(t,e=0){return M(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=0,o=1,f=0;for(this[e]=255&t;++i>0)-f&255;return e+r},o.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){const n=Math.pow(2,8*r-1);O(this,t,e,r,n-1,-n)}let i=r-1,o=1,f=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===f&&0!==this[e+i+1]&&(f=1),this[e+i]=(t/o>>0)-f&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||O(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=X((function(t,e=0){return R(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=X((function(t,e=0){return M(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return x(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return x(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return k(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return k(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function z(t,e,r,n,i,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${e}${n} and <= ${r}${n}`,new P.ERR_OUT_OF_RANGE("value",i,t)}!function(t,e,r){F(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||D(e,t.length-(r+1))}(n,i,o)}function F(t,e){if("number"!=typeof t)throw new P.ERR_INVALID_ARG_TYPE(e,"number",t)}function D(t,e,r){if(Math.floor(t)!==t)throw F(t,r),new P.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new P.ERR_BUFFER_OUT_OF_BOUNDS;throw new P.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}$("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),$("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),$("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=j(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=j(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);const K=/[^+/0-9A-Za-z-_]/g;function V(t,e){let r;e=e||1/0;const n=t.length;let i=null;const o=[];for(let f=0;f55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(f+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function Y(t){return E.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function G(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function J(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function q(t){return t!=t}const Q=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function X(t){return"undefined"==typeof BigInt?W:t}function W(){throw new Error("BigInt not supported")}},B(m={exports:{}},m.exports),m.exports); +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */const U=new TextEncoder,L=new TextDecoder,I=T;function T(t,e=0){let r;if(void 0===t||"string"!=typeof t||"number"!=typeof e)throw TypeError("invlaid init variablie type name. ");return(t=t.toUpperCase()).includes("8")?(r=_.Buffer.alloc(1),t.includes("I")?r.writeInt8(e):r.writeUint8(e)):t.includes("16")?(r=_.Buffer.alloc(2),t.includes("I")?t.includes("L")?r.writeInt16LE(e):r.writeInt16BE(e):t.includes("L")?r.writeUint16LE(e):r.writeUint16BE(e)):t.includes("32")?(r=_.Buffer.alloc(4),t.includes("I")?t.includes("L")?r.writeInt32LE(e):r.writeInt32BE(e):t.includes("L")?r.writeUint32LE(e):r.writeUint32BE(e)):t.includes("F")?(r=_.Buffer.alloc(4),t.includes("L")?r.writeFloatLE(e):r.writeFloatBE(e)):t.includes("N")?r=_.Buffer.from(String(e)):console.log(`invalid type: ${t} or initvalue: ${e}`),r}const v=C;function C(t,e,r){let n,i="B";if("number"==typeof e)"number"==typeof r?(n=_.Buffer.alloc(e),0!==r&&n.fill(r),i="B"):(n=_.Buffer.from(String(e)),i="N");else if("string"==typeof e&&"number"==typeof r)i=e.toUpperCase(),n=T(e,r);else if("string"==typeof e&&void 0===r)n=_.Buffer.from(e),i="S";else if(e instanceof Uint8Array&&void 0===r)n=e instanceof _.Buffer?e:_.Buffer.from(e);else if(e instanceof ArrayBuffer&&void 0===r)n=_.Buffer.from(e);else if(ArrayBuffer.isView(e))n=_.Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if("object"==typeof e&&void 0===r)n=_.Buffer.from(JSON.stringify(e)),i="O";else{if("boolean"!=typeof e||void 0!==r)throw TypeError("invalid meta buffer type");{const t=e?1:0;n=_.Buffer.from([t]),i="!"}}return"string"==typeof t&&t.includes("#")&&(t=""),[t,i,n]}const S=N;function N(...t){let e=0;return t.map((t=>{const r=e++;return"number"==typeof t?v(r,"N",t):v(r,t)}))}function O(t){if((t=t.toUpperCase()).includes("8"))return t.includes("I")?"int8":"uint8";if(t.includes("16"))return t.includes("I")?t.includes("L")?"int16_le":"int16_be":t.includes("L")?"uint16_le":"uint16_be";if(t.includes("32"))return t.includes("I")?t.includes("L")?"int32_le":"int32_be":t.includes("L")?"uint32_le":"uint32_be";if(t.includes("F"))return t.includes("L")?"float_le":"float_be";if("B"===t)return"buffer";if("S"===t)return"string";if("N"===t)return"number";if("O"===t)return"object";if("!"===t)return"boolean";throw TypeError("invalid data type")}function R(t,e,r,n){const i=O(t);if("int8"==i)return e.readInt8(r);if("uint8"===i)return e.readUint8(r);if("int16_le"===i)return e.readInt16LE(r);if("int16_be"===i)return e.readInt16BE(r);if("uint16_le"===i)return e.readUint16LE(r);if("uint16_be"===i)return e.readUint16BE(r);if("int32_le"===i)return e.readInt32LE(r);if("int32_be"===i)return e.readInt32BE(r);if("uint32_le"===i)return e.readUint32LE(r);if("uint32_be"===i)return e.readUint32BE(r);if("float_le"===i)return e.readFloatLE(r);if("float_be"===i)return e.readFloatBE(r);if("buffer"===i)return e.subarray(r,r+n);if("string"===i){const t=e.subarray(r,r+n);return L.decode(t)}if("number"===i){const t=e.subarray(r,r+n);return Number(L.decode(t))}if("object"!==i){if("boolean"===i){return 1===e.readInt8(r)}throw TypeError("invalid data")}{const t=e.subarray(r,r+n);try{return JSON.parse(L.decode(t))}catch(t){console.log("err. obj parse")}}}function M(...t){const e=function(t){let e=[];return t.filter((t=>{if(!Array.isArray(t[0]))return t;e=e.concat(t)})).concat(e)}(t);let r=0;const n=[];let i,o,f=0;if(e.forEach((t=>{const[e,i,o]=t;r+=o.byteLength,("number"==typeof e||e.length>0)&&n.push([e,i,f,o.byteLength]),f=r})),n.length>0){let t=JSON.stringify(n);i=U.encode(t),o=i.byteLength,r=r+o+2}const s=_.Buffer.alloc(r);if(f=0,e.forEach((t=>{const e=t[2];s.set(e,f),f+=e.byteLength})),n.length>0){s.set(i,f);const t=I("16",o);return s.set(t,f+o),s}return s}function H(t,e){const r=e||W(t);if(!r)return;const n=_.Buffer.from(t),i={};let o=0;if(r.forEach((t=>{const[e,r,f,s]=t;i[e]=R(r,n,f,s),s&&(o+=s)})),e&&n.byteLength!==o){let t=n.byteLength-o;i.$OTHERS=R("b",n,o,t)}let f=0,s=[];for(;i[f];)s.push(i[f++]);return s.length>0&&(i.args=s,i.$=i.args),i}const x=k;function k(t,e=!1){if(void 0===t)throw TypeError("Invalid data type: Undefined");if("string"==typeof t)return U.encode(t);if("number"==typeof t)return Uint8Array.from([t]);if(t instanceof ArrayBuffer){if(e)return new Uint8Array(t);{const e=new Uint8Array(t),r=new Uint8Array(t.byteLength);return r.set(e),r}}if(ArrayBuffer.isView(t)){if(e)return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);{const e=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(t.byteLength);return r.set(e),r}}return U.encode(JSON.stringify(t))}const P=$;function $(t,e=!1){const r=k(t,e);return e?_.Buffer.from(r.buffer,r.byteOffset,r.byteLength):_.Buffer.from(r)}const j=z;function z(...t){const e=t.map((t=>$(t)));return _.Buffer.concat(e)}const F=D;function D(...t){try{let e=0,r=0;const n=t.map((t=>k(t)));n.forEach((t=>{e+=t.byteLength}));const i=new Uint8Array(e);return n.forEach((t=>{i.set(t,r),r+=t.byteLength})),i}catch(t){console.log(t)}}function K(t){return Array.prototype.map.call(new Uint8Array(t),(t=>("00"+t.toString(16)).slice(-2))).join("")}function V(t,e){if(t.byteLength!==e.byteLength)return!1;for(let r=0;re)return 0;return G(t,r)?r:0}return 0}function X(t){const e=Y(t);return t.subarray(0,e)}function W(t,e=!1){t instanceof ArrayBuffer&&(t=_.Buffer.from(t));const r=q(t);if(0===r)return;let n=G(t,r);return n?e?(n.forEach((t=>{null==t[3]&&(t[1].includes("8")?t[3]=1:t[1].includes("16")?t[3]=2:t[1].includes("32")||t[1].includes("F")?t[3]=4:t[1].includes("!")&&(t[3]=1)),t[4]=O(t[1])})),n):n:void 0}function Z(...t){return X(M(...t))}function tt(...t){return W(M(...t))}var et=Object.freeze({__proto__:null,Buffer:_.Buffer,NB:I,numberBuffer:T,MB:v,metaBuffer:C,MBA:S,metaBufferArguments:N,parseTypeName:O,readTypedBuffer:R,pack:M,unpack:H,U8:x,parseUint8Array:k,B8:P,parseBuffer:$,B8pack:j,parseBufferThenConcat:z,U8pack:F,parseUint8ThenConcat:D,hex:K,equal:V,getBufferSize:Y,parseMetaInfo:G,TAIL_LEN:J,readTail:q,getMetaSize:Q,getBuffer:X,getMeta:W,rawPack:Z,meta:tt,metaDetail:function(...t){return W(M(...t),!0)},getMetaDetail:function(t){return W(t,!0)}});s.hash=function(t){return s(x(t))},s.hex=function(t){return K(s.hash(t))},s.hmac=function(t,e){return function(t,e){const r=new f(t).update(e),n=r.digest();return r.clean(),n}(x(t),x(e))};const rt=v;let nt={AUTH_REQ:176,AUTH_NONCE:177,AUTH_HMAC:178,AUTH_ACK:179,AUTH_FAIL:180,AUTH_EXT:181,ENC_PACK:182,ENC_E2E:183,ENC_488:184};for(let t in nt)nt[nt[t]]=t;const it={AUTH_REQ:tt(rt("header","8",0),rt("reserved","8",0)),AUTH_NONCE:tt(rt("header","8",0),rt("unixTime","32L",0),rt("milTime","32L",0),rt("nonce",_.Buffer.alloc(4))),AUTH_HMAC:tt(rt("header","8",0),rt("id8",_.Buffer.alloc(8)),rt("nonce",_.Buffer.alloc(4)),rt("hmac32",_.Buffer.alloc(32))),AUTH_ACK:tt(rt("header","8",0),rt("hmac32",_.Buffer.alloc(32))),ENC_PACK:tt(rt("type","8",0),rt("len","32L",0),rt("salt12",_.Buffer.alloc(12)),rt("hmac",8,0)),ENC_488:tt(rt("type","8",0),rt("len","32L",0),rt("otpSrc8",_.Buffer.alloc(8)),rt("hmac8",_.Buffer.alloc(8)))};function ot(t){let e=t[t.length-1];return e[2]+e[3]}const ft={AUTH_REQ:ot(it.AUTH_REQ),AUTH_NONCE:ot(it.AUTH_NONCE),AUTH_HMAC:ot(it.AUTH_HMAC),AUTH_ACK:ot(it.AUTH_ACK),ENC_PACK:ot(it.ENC_PACK),ENC_488:ot(it.ENC_488)};let st=!1;try{st="[object process]"===Object.prototype.toString.call(global.process)}catch(t){}function ut(e){return st?t.getRandomValues(_.Buffer.alloc(e)):self.crypto.getRandomValues(_.Buffer.alloc(e))}class ht{constructor(){this._id8=_.Buffer.alloc(8),this._otpSrc44=_.Buffer.alloc(44),this._otp36=_.Buffer.alloc(36),this._hmac=_.Buffer.alloc(32),this.auth_salt12=_.Buffer.alloc(12),this.localNonce=_.Buffer.alloc(4),this.remoteNonce=_.Buffer.alloc(4),this.isAuthorized=!1}clearAuth(){this._id8.fill(0),this._otpSrc44.fill(0),this._otp36.fill(0),this._hmac.fill(0),this.auth_salt12.fill(0),this.localNonce.fill(0),this.remoteNonce.fill(0),this.isAuthorized=!1}set_id8(t){let e=P(t);this._id8.fill(0),e.copy(this._id8,0,0,8)}set_hash_id8(t){P(s.hash(t)).copy(this._id8,0,0,8)}set_key(t){P(s.hash(t)).copy(this._otpSrc44,0,0,32)}copy_id8(t){t.copy(this._id8,0,0,8)}copy_key(t){t.copy(this._otpSrc44,0,0,32)}sha256_n(t,e){let r=s.hash(t);for(let t=0;t0;){f=n<32?n:32;let e=this.getIndexOTP(++i);for(let r=0;r hash +// sha256.hmac(key, message) -> mac +// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk +// +// Classes: +// +// new sha256.Hash() +// new sha256.HMAC(key) +// +export var digestLength = 32 +export var blockSize = 64 +// SHA-256 constants +const K = new Uint32Array([ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, + 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, + 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, + 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, + 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, + 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, + 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, + 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, + 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +]) +function hashBlocks (w, v, p, pos, len) { + let a, b, c, d, e, f, g, h, u, i, j, t1, t2 + while (len >= 64) { + a = v[0] + b = v[1] + c = v[2] + d = v[3] + e = v[4] + f = v[5] + g = v[6] + h = v[7] + for (i = 0; i < 16; i++) { + j = pos + i * 4 + w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16) | + ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff)) + } + for (i = 16; i < 64; i++) { + u = w[i - 2] + t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10) + u = w[i - 15] + t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3) + w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0) + } + for (i = 0; i < 64; i++) { + t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^ + (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) + + ((h + ((K[i] + w[i]) | 0)) | 0)) | 0 + t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^ + (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0 + h = g + g = f + f = e + e = (d + t1) | 0 + d = c + c = b + b = a + a = (t1 + t2) | 0 + } + v[0] += a + v[1] += b + v[2] += c + v[3] += d + v[4] += e + v[5] += f + v[6] += g + v[7] += h + pos += 64 + len -= 64 + } + return pos +} +// Hash implements SHA256 hash algorithm. +const Hash = /** @class */ (function () { + function Hash () { + this.digestLength = digestLength + this.blockSize = blockSize + // Note: Int32Array is used instead of Uint32Array for performance reasons. + this.state = new Int32Array(8) // hash state + this.temp = new Int32Array(64) // temporary state + this.buffer = new Uint8Array(128) // buffer for data to hash + this.bufferLength = 0 // number of bytes in buffer + this.bytesHashed = 0 // number of total bytes hashed + this.finished = false // indicates whether the hash was finalized + this.reset() + } + // Resets hash state making it possible + // to re-use this instance to hash other data. + Hash.prototype.reset = function () { + this.state[0] = 0x6a09e667 + this.state[1] = 0xbb67ae85 + this.state[2] = 0x3c6ef372 + this.state[3] = 0xa54ff53a + this.state[4] = 0x510e527f + this.state[5] = 0x9b05688c + this.state[6] = 0x1f83d9ab + this.state[7] = 0x5be0cd19 + this.bufferLength = 0 + this.bytesHashed = 0 + this.finished = false + return this + } + // Cleans internal buffers and re-initializes hash state. + Hash.prototype.clean = function () { + for (var i = 0; i < this.buffer.length; i++) { + this.buffer[i] = 0 + } + for (var i = 0; i < this.temp.length; i++) { + this.temp[i] = 0 + } + this.reset() + } + // Updates hash state with the given data. + // + // Optionally, length of the data can be specified to hash + // fewer bytes than data.length. + // + // Throws error when trying to update already finalized hash: + // instance must be reset to use it again. + Hash.prototype.update = function (data, dataLength) { + if (dataLength === void 0) { dataLength = data.length } + if (this.finished) { + throw new Error("SHA256: can't update because hash was finished.") + } + let dataPos = 0 + this.bytesHashed += dataLength + if (this.bufferLength > 0) { + while (this.bufferLength < 64 && dataLength > 0) { + this.buffer[this.bufferLength++] = data[dataPos++] + dataLength-- + } + if (this.bufferLength === 64) { + hashBlocks(this.temp, this.state, this.buffer, 0, 64) + this.bufferLength = 0 + } + } + if (dataLength >= 64) { + dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength) + dataLength %= 64 + } + while (dataLength > 0) { + this.buffer[this.bufferLength++] = data[dataPos++] + dataLength-- + } + return this + } + // Finalizes hash state and puts hash into out. + // + // If hash was already finalized, puts the same value. + Hash.prototype.finish = function (out) { + if (!this.finished) { + const bytesHashed = this.bytesHashed + const left = this.bufferLength + const bitLenHi = (bytesHashed / 0x20000000) | 0 + const bitLenLo = bytesHashed << 3 + const padLength = (bytesHashed % 64 < 56) ? 64 : 128 + this.buffer[left] = 0x80 + for (var i = left + 1; i < padLength - 8; i++) { + this.buffer[i] = 0 + } + this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff + this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff + this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff + this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff + this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff + this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff + this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff + this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff + hashBlocks(this.temp, this.state, this.buffer, 0, padLength) + this.finished = true + } + for (var i = 0; i < 8; i++) { + out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff + out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff + out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff + out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff + } + return this + } + // Returns the final hash digest. + Hash.prototype.digest = function () { + const out = new Uint8Array(this.digestLength) + this.finish(out) + return out + } + // Internal function for use in HMAC for optimization. + Hash.prototype._saveState = function (out) { + for (let i = 0; i < this.state.length; i++) { + out[i] = this.state[i] + } + } + // Internal function for use in HMAC for optimization. + Hash.prototype._restoreState = function (from, bytesHashed) { + for (let i = 0; i < this.state.length; i++) { + this.state[i] = from[i] + } + this.bytesHashed = bytesHashed + this.finished = false + this.bufferLength = 0 + } + return Hash +}()) +export { Hash } +// HMAC implements HMAC-SHA256 message authentication algorithm. +const HMAC = /** @class */ (function () { + function HMAC (key) { + this.inner = new Hash() + this.outer = new Hash() + this.blockSize = this.inner.blockSize + this.digestLength = this.inner.digestLength + const pad = new Uint8Array(this.blockSize) + if (key.length > this.blockSize) { + (new Hash()).update(key).finish(pad).clean() + } else { + for (var i = 0; i < key.length; i++) { + pad[i] = key[i] + } + } + for (var i = 0; i < pad.length; i++) { + pad[i] ^= 0x36 + } + this.inner.update(pad) + for (var i = 0; i < pad.length; i++) { + pad[i] ^= 0x36 ^ 0x5c + } + this.outer.update(pad) + this.istate = new Uint32Array(8) + this.ostate = new Uint32Array(8) + this.inner._saveState(this.istate) + this.outer._saveState(this.ostate) + for (var i = 0; i < pad.length; i++) { + pad[i] = 0 + } + } + // Returns HMAC state to the state initialized with key + // to make it possible to run HMAC over the other data with the same + // key without creating a new instance. + HMAC.prototype.reset = function () { + this.inner._restoreState(this.istate, this.inner.blockSize) + this.outer._restoreState(this.ostate, this.outer.blockSize) + return this + } + // Cleans HMAC state. + HMAC.prototype.clean = function () { + for (let i = 0; i < this.istate.length; i++) { + this.ostate[i] = this.istate[i] = 0 + } + this.inner.clean() + this.outer.clean() + } + // Updates state with provided data. + HMAC.prototype.update = function (data) { + this.inner.update(data) + return this + } + // Finalizes HMAC and puts the result in out. + HMAC.prototype.finish = function (out) { + if (this.outer.finished) { + this.outer.finish(out) + } else { + this.inner.finish(out) + this.outer.update(out, this.digestLength).finish(out) + } + return this + } + // Returns message authentication code. + HMAC.prototype.digest = function () { + const out = new Uint8Array(this.digestLength) + this.finish(out) + return out + } + return HMAC +}()) +export { HMAC } +// Returns SHA256 hash of data. +export function hash (data) { + const h = (new Hash()).update(data) + const digest = h.digest() + h.clean() + return digest +} +// Function hash is both available as module.hash and as default export. +export default hash +// Returns HMAC-SHA256 of data under the key. +export function hmac (key, data) { + const h = (new HMAC(key)).update(data) + const digest = h.digest() + h.clean() + return digest +} +// Fills hkdf buffer like this: +// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01) +function fillBuffer (buffer, hmac, info, counter) { + // Counter is a byte value: check if it overflowed. + const num = counter[0] + if (num === 0) { + throw new Error('hkdf: cannot expand more') + } + // Prepare HMAC instance for new data with old key. + hmac.reset() + // Hash in previous output if it was generated + // (i.e. counter is greater than 1). + if (num > 1) { + hmac.update(buffer) + } + // Hash in info if it exists. + if (info) { + hmac.update(info) + } + // Hash in the counter. + hmac.update(counter) + // Output result to buffer and clean HMAC instance. + hmac.finish(buffer) + // Increment counter inside typed array, this works properly. + counter[0]++ +} +const hkdfSalt = new Uint8Array(digestLength) // Filled with zeroes. +export function hkdf (key, salt, info, length) { + if (salt === void 0) { salt = hkdfSalt } + if (length === void 0) { length = 32 } + const counter = new Uint8Array([1]) + // HKDF-Extract uses salt as HMAC key, and key as data. + const okm = hmac(salt, key) + // Initialize HMAC for expanding with extracted key. + // Ensure no collisions with `hmac` function. + const hmac_ = new HMAC(okm) + // Allocate buffer. + const buffer = new Uint8Array(hmac_.digestLength) + let bufpos = buffer.length + const out = new Uint8Array(length) + for (let i = 0; i < length; i++) { + if (bufpos === buffer.length) { + fillBuffer(buffer, hmac_, info, counter) + bufpos = 0 + } + out[i] = buffer[bufpos++] + } + hmac_.clean() + buffer.fill(0) + counter.fill(0) + return out +} +// Derives a key from password and salt using PBKDF2-HMAC-SHA256 +// with the given number of iterations. +// +// The number of bytes returned is equal to dkLen. +// +// (For better security, avoid dkLen greater than hash length - 32 bytes). +export function pbkdf2 (password, salt, iterations, dkLen) { + const prf = new HMAC(password) + const len = prf.digestLength + const ctr = new Uint8Array(4) + const t = new Uint8Array(len) + const u = new Uint8Array(len) + const dk = new Uint8Array(dkLen) + for (var i = 0; i * len < dkLen; i++) { + const c = i + 1 + ctr[0] = (c >>> 24) & 0xff + ctr[1] = (c >>> 16) & 0xff + ctr[2] = (c >>> 8) & 0xff + ctr[3] = (c >>> 0) & 0xff + prf.reset() + prf.update(salt) + prf.update(ctr) + prf.finish(u) + for (var j = 0; j < len; j++) { + t[j] = u[j] + } + for (var j = 2; j <= iterations; j++) { + prf.reset() + prf.update(u).finish(u) + for (let k = 0; k < len; k++) { + t[k] ^= u[k] + } + } + for (var j = 0; j < len && i * len + j < dkLen; j++) { + dk[i * len + j] = t[j] + } + } + for (var i = 0; i < len; i++) { + t[i] = u[i] = 0 + } + for (var i = 0; i < 4; i++) { + ctr[i] = 0 + } + prf.clean() + return dk +} diff --git a/package.json b/package.json index b3d7b25..f0eda70 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "boho", - "version": "0.2.1", + "version": "0.5.0", "description": "Ultra Light SSL without PKI.", "cjs": "dist/boho.cjs", "esm": "dist/boho.mjs", @@ -12,13 +12,14 @@ "require": "./dist/boho.cjs" }, "scripts": { + "build": "rollup -c", "test": "mocha" }, "keywords": [ "SSL", "cipher", "crypto", - "encrypt", + "encryption", "보호", "암호" ], @@ -33,7 +34,12 @@ }, "license": "MIT", "devDependencies": { - "mocha": "^10.0.0" + "@rollup/plugin-commonjs": "^17.0.0", + "@rollup/plugin-node-resolve": "^11.1.0", + "@rollup/plugin-replace": "^4.0.0", + "@rollup/plugin-terser": "^0.4.0", + "mocha": "^10.0.0", + "rollup": "^2.74.1" }, "dependencies": { "meta-buffer-pack": "^1.3.0" diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..8b9f4f1 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,62 @@ +import replace from '@rollup/plugin-replace' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' +import terser from '@rollup/plugin-terser' +import pkg from './package.json' + +export default [ + { + input: 'src/browserDefault.js', + output: [ + { + name: 'Boho', + file: pkg.browser, + format: 'iife', + sourcemap: true + } + ], + plugins: [ + replace({ + crypto: '', + delimiters: ['import { webcrypto } from \'', '\''], + preventAssignment: true + }), + resolve(), + commonjs() + , terser() + ] + }, + { + input: 'src/boho.js', + output: [ + { + file: pkg.browser_esm, + format: 'es', + sourcemap: true + } + ], + plugins: [ + replace({ + crypto: '', + delimiters: ['import { webcrypto } from \'', '\''], + preventAssignment: true + }), + resolve(), + commonjs() + , terser() + ] + }, + + { + input: 'src/boho.js', + output: [ + { file: pkg.cjs, format: 'cjs' }, + { file: pkg.esm, format: 'es' } + ], + plugins: [ + resolve(), + commonjs() + , terser() + ] + } +] diff --git a/src/boho.js b/src/boho.js new file mode 100644 index 0000000..990cf43 --- /dev/null +++ b/src/boho.js @@ -0,0 +1,457 @@ +import { sha256 } from './sha256-mbp.js' +import { MBP, Buffer } from 'meta-buffer-pack' +export { sha256, MBP, Buffer } + +import { webcrypto } from 'crypto' +import { BohoMsg, Meta, MetaSize } from "./constants.js" +export { BohoMsg, Meta, MetaSize } + +let isNode = false +try { + isNode = Object.prototype.toString.call(global.process) === '[object process]' +} catch (e) { } + + +export function RAND(size) { + if( isNode ){ + return webcrypto.getRandomValues(Buffer.alloc(size)) + }else{ + return self.crypto.getRandomValues(Buffer.alloc(size)) + } +} + + + +export class Boho { + // A. Core + constructor() { + + this._id8 = Buffer.alloc(8) + this._otpSrc44 = Buffer.alloc(44) + this._otp36 = Buffer.alloc(36) + this._hmac = Buffer.alloc(32) + + this.auth_salt12 = Buffer.alloc(12) + this.localNonce = Buffer.alloc(4) + this.remoteNonce = Buffer.alloc(4) + this.isAuthorized = false + + } + + clearAuth(){ + this._id8.fill(0) + this._otpSrc44.fill(0) + this._otp36.fill(0) + this._hmac.fill(0) + this.auth_salt12.fill(0) + this.localNonce.fill(0) + this.remoteNonce.fill(0) + this.isAuthorized = false + } + + // for the self + set_id8(data) { + let encStr = MBP.B8(data) + this._id8.fill(0) + encStr.copy(this._id8, 0, 0, 8) + } + + set_hash_id8(data) { + let idSum = MBP.B8(sha256.hash(data)) + idSum.copy(this._id8, 0, 0, 8) + } + + + set_key(data) { + let keySum = MBP.B8(sha256.hash(data)) + keySum.copy(this._otpSrc44, 0, 0, 32) + } + + // for the remote client. + copy_id8(data) { + data.copy(this._id8, 0, 0, 8) + } + + // for the remote client. + copy_key(data) { + data.copy(this._otpSrc44, 0, 0, 32) + } + + + sha256_n(srcData, n) { + let hashSum = sha256.hash(srcData) + for (let i = 0; i < n; i++) hashSum = sha256.hash(hashSum) + return hashSum + } + + + // useful general encryption i.e. enc_pack + set_clock_rand() { + + let milTime = Date.now() + let secTime = parseInt(milTime / 1000) + milTime = milTime % 0xffffffff + const salt12 = Buffer.concat([ + MBP.NB('32L', secTime), + MBP.NB('32L', milTime), + RAND(4) + ]) + + salt12.copy(this._otpSrc44, 32) + } + + // for secure communication sender. + set_clock_nonce(nonce) { + let milTime = Date.now() + let secTime = parseInt(milTime / 1000) + milTime = milTime % 0xffffffff + const salt12 = Buffer.concat([ + MBP.NB('32L', secTime), + MBP.NB('32L', milTime), + nonce + ]) + + salt12.copy(this._otpSrc44, 32) + } + + + set_salt12(salt12) { + salt12.copy(this._otpSrc44, 32) + } + + resetOTP() { + let otp32 = MBP.B8(sha256.hash(this._otpSrc44)) + otp32.copy(this._otp36, 0, 0, 32) + } + + getIndexOTP(otpIndex) { + this._otp36.writeUInt32LE(otpIndex, 32) + return sha256.hash(this._otp36) + } + + + generateHMAC(data) { + let hmacSrc = Buffer.concat([this._otpSrc44, data]) + this._hmac = MBP.B8(sha256.hash(hmacSrc)) + } + + // return 8 bytes of hash + getHMAC8(data) { + let hmacSrc = Buffer.concat([this._otpSrc44, data]) + this._hmac = MBP.B8(sha256.hash(hmacSrc)) + return this._hmac.subarray(0, 8) + } + + xotp(data, otpStartIndex = 0, shareDataBuffer = false) { + + data = MBP.B8(data, shareDataBuffer) + + let len = data.byteLength + let otpIndex = otpStartIndex + let dataOffset = 0 + let xorCalcLen = 0 + + while (len > 0) { + xorCalcLen = len < 32 ? len : 32 + let iotp = this.getIndexOTP(++otpIndex); + for (let i = 0; i < xorCalcLen; i++) { + data[dataOffset++] ^= iotp[i] + } + len -= 32 + } + return data + } + + // B. AUTH process + + // step 1 + // client send AUTH_REQ + auth_req() { + return MBP.pack( + MBP.MB('#type', '8', BohoMsg.AUTH_REQ), + MBP.MB('#reserved', '8', 0) + ) + } + + // step 2 + // server send AUTH_NONCE + auth_nonce() { + let now = Date.now() + let unixTime = Math.floor(now / 1000) + let milTime = now % 1000 + this.localNonce = RAND(4) + this.auth_salt12 = Buffer.concat([ + MBP.NB('32L', unixTime), + MBP.NB('32L', milTime), + this.localNonce + ]) + + let infoPack = Buffer.concat([ + MBP.NB('8', BohoMsg.AUTH_NONCE), + this.auth_salt12 + ]) + return infoPack + } + + + // step 3 + // client send AUTH_HMAC + // input : auth_nonce buffer + auth_hmac(buffer) { + let auth_nonce = MBP.unpack(buffer, Meta.AUTH_NONCE) + if (auth_nonce) { + // console.log(' auth nonce', auth_nonce ) + + // let now = Date.now() + // let localUTC= Math.floor( now/ 1000 ) + // let localMilTime = now % 1000 + + // console.log('time server [sec]', auth_nonce.unixTime, auth_nonce.milTime ) + // console.log('time client [sec]', localUTC , localMilTime ) + // console.log('time diff client and server[sec]', auth_nonce.unixTime - localUTC ) + + // let serverSecMil = auth_nonce.unixTime * 1000 + auth_nonce.milTime + // console.log('time diff msec client and server[msec]', serverSecMil - now ) + + let salt12 = Buffer.concat([ + MBP.NB('32L', auth_nonce.unixTime), + MBP.NB('32L', auth_nonce.milTime), + auth_nonce.nonce + ]) + + this.set_salt12(salt12) + + this.localNonce = RAND(4) + // hmac( key, sec,mil,serverNonce, localNonce) + this.generateHMAC(this.localNonce) + + // let hmac8 = this._hmac.subarray(0, 8) + + this.remoteNonce = auth_nonce.nonce + + let auth_hmac_buffer = MBP.pack( // 21 -> 45 + MBP.MB('#header', '8', BohoMsg.AUTH_HMAC), + MBP.MB('#id8', this._id8), + MBP.MB('#nonce', this.localNonce), + MBP.MB('#hmac32', this._hmac ), //full 32bytes hash + ) + + return auth_hmac_buffer + } + return false + } + + /* + step 4. for server + + step 4-1. check client's auth_hmac + step 4-2. reply result + send AUTH_ACK with another HMAC for client. + or send AUTH_FAIL when fail. + */ + + // input: unpack object or buffer of auth_hmac + check_auth_hmac(data) { + let infoPack + if (data instanceof Uint8Array) { + infoPack = MBP.unpack(data, Meta.AUTH_HMAC) + if (!infoPack) { + // console.log('auth_hamc unpack fail.') + return + } + } else { + infoPack = data; + + } + // console.log('auth_hamc infoObj', infoPack ) + + this.set_salt12(this.auth_salt12) + + // hmac( key, sec,mil,serverNonce, clientNonce) + this.generateHMAC(infoPack.nonce) + // let hmac8 = this._hmac.subarray(0, 8) + let hmac32 = this._hmac + + if (MBP.equal(infoPack.hmac32, hmac32)) { + //Auth success then store client nonce. + this.remoteNonce = infoPack.nonce + + let salt12 = Buffer.concat([ + this.localNonce, + this.remoteNonce, + this.localNonce + ]) + this.set_salt12(salt12) + this.generateHMAC(infoPack.nonce) + let replyHMAC = this._hmac + + let auth_ack = MBP.rawPack( + MBP.MB('header', '8', BohoMsg.AUTH_ACK), + MBP.MB('hmac32', replyHMAC) + ) + this.isAuthorized = true + return auth_ack + } + return false + } + + + + // step 5. cross check + // client check server's hmac. + check_auth_ack_hmac(buffer) { + // server response has hmac ( key + clientNonce) + let auth_ack = MBP.unpack(buffer, Meta.AUTH_ACK) + if (auth_ack) { + let salt12 = Buffer.concat([ + this.remoteNonce, + this.localNonce, + this.remoteNonce, + ]) + this.set_salt12(salt12) + this.generateHMAC(this.localNonce) + // let hmac8 = this._hmac.subarray(0, 8) + let hmac32 = this._hmac + //server side hmac using client nonce. + if (MBP.equal(hmac32, auth_ack.hmac32)) { + this.isAuthorized = true + return true + } + } + // server hmac error + return + } + + // C. Secure Communication + + // Must AUTH first. + encrypt_488(data) { // payload max about 2^32 bytes. + if (!this.isAuthorized) return + + data = MBP.B8(data) + + this.set_clock_nonce(this.remoteNonce) + this.resetOTP() + + let hmac8 = this.getHMAC8(data) + let encData = this.xotp(data) + + let pack = MBP.pack( + MBP.MB('#type', '8', BohoMsg.ENC_488), + MBP.MB('#len', '32L', data.byteLength), + MBP.MB('#otpSrc8', this._otpSrc44.subarray(32, 40)), + MBP.MB('#hmac8', hmac8), + MBP.MB('#xdata', encData) + ) + // console.log('enc pack result', pack ) + return pack + } + + + decrypt_488(data) { + data = MBP.B8(data) + + let pack = MBP.unpack(data, Meta.ENC_488) + + if (pack) { + + let salt12 = Buffer.concat([ + pack.otpSrc8, + this.localNonce + ]) + + this.set_salt12(salt12) + this.resetOTP() + + let xdata = pack.$OTHERS.subarray(0, pack.len) + let decData = this.xotp(xdata) + + let hmac8 = this.getHMAC8(decData) + + if (MBP.equal(hmac8, pack.hmac8)) return decData + + // console.log('hmac dismatch', decData ) + } else { + // console.log('unpack fail') + } + } + + + // maxium data size is 2**32 -1 bytes. + encryptPack(data) { + data = MBP.B8(data) + + this.set_clock_rand() + this.resetOTP() + + let hmac8 = this.getHMAC8(data) + let encData = this.xotp(data) + + let pack = MBP.pack( + MBP.MB('#type', '8', BohoMsg.ENC_PACK), + MBP.MB('#len', '32L', data.byteLength), + MBP.MB('#salt12', this._otpSrc44.subarray(32)), + MBP.MB('#hmac8', hmac8), + MBP.MB('#xdata', encData) + ) + return pack + } + + + decryptPack(data) { + + if (data[0] !== BohoMsg.ENC_PACK) { + // console.log('Boho: Invalid packType') + return + } + + // packLength + let readPackLen = data.readUint32LE(1); + if (readPackLen != data.byteLength - MetaSize.ENC_PACK) { + // console.log('Boho: Invalid LEN data_len: data.byteLen' , readPackLen, data.byteLength) + return + } + + try { + let pack = MBP.unpack(data, Meta.ENC_PACK) + // console.log('unpack result', pack ) + if (!pack) return + + this.set_salt12(pack.salt12) + this.resetOTP() + + let xdata = pack.$OTHERS + let decData = this.xotp(xdata) + let hmac8 = this.getHMAC8(decData) + + if (MBP.equal(pack.hmac, hmac8)) { + pack.data = decData + return pack + } + // console.log('Invalid HMAC', pack.hmac, hmac8 ) + + } catch (error) { + // console.log('Boho: unpack err', error ) + + } + } + + encrypt_e2e(data, key) { + let baseKey = Buffer.alloc(32) + baseKey.set(this._otpSrc44.subarray(0, 32)) + this.set_key(key) + let pack = this.encryptPack(data) + this._otpSrc44.set(baseKey) + return pack; + } + + decrypt_e2e(data, key) { + let baseKey = Buffer.alloc(32) + baseKey.set(this._otpSrc44.subarray(0, 32)) + this.set_key(key) + let decPack = this.decryptPack(data) + this._otpSrc44.set(baseKey) + return decPack + } + +} diff --git a/src/browserDefault.js b/src/browserDefault.js new file mode 100644 index 0000000..25ab610 --- /dev/null +++ b/src/browserDefault.js @@ -0,0 +1,11 @@ +import { Boho, RAND, MBP, BohoMsg, Meta, MetaSize , sha256, Buffer } from './boho.js' + +Boho.RAND = RAND; +Boho.BohoMsg = BohoMsg; +Boho.Meta = Meta; +Boho.MetaSize = MetaSize; +Boho.sha256 = sha256; +Boho.MBP = MBP; +Boho.Buffer = Buffer; + +export default Boho; \ No newline at end of file diff --git a/src/constants.js b/src/constants.js new file mode 100644 index 0000000..f95484b --- /dev/null +++ b/src/constants.js @@ -0,0 +1,90 @@ +import{ MBP, Buffer} from "meta-buffer-pack" +const MB = MBP.MB + + +// remocon message pack one byte header. +export let BohoMsg = { + AUTH_REQ : 0xB0, + AUTH_NONCE: 0xB1, + AUTH_HMAC: 0xB2, + AUTH_ACK: 0xB3, + AUTH_FAIL: 0xB4, + AUTH_EXT: 0xB5, + ENC_PACK : 0xB6, + ENC_E2E : 0xB7, + ENC_488 : 0xB8 +} + +for (let c in BohoMsg) { BohoMsg[BohoMsg[c]] = c } + +export const Meta = { + + AUTH_REQ: MBP.meta( // 2 + MB('header','8', 0), + MB('reserved','8', 0) + ), + + AUTH_NONCE: MBP.meta( // 13 + MB('header','8', 0), + MB('unixTime','32L', 0), + MB('milTime','32L', 0 ), + MB('nonce', Buffer.alloc(4)) + ), + + AUTH_HMAC: MBP.meta( // 45 + MB('header','8', 0), + MB('id8',Buffer.alloc(8)), + MB('nonce', Buffer.alloc(4)), + MB('hmac32', Buffer.alloc(32)) + ), + + AUTH_ACK: MBP.meta( // 33 + MB('header','8', 0), + MB('hmac32', Buffer.alloc(32)) + ), + + + ENC_PACK: MBP.meta( //25 + payload + MB('type','8',0), + MB('len','32L',0), // pure xdata size. + MB('salt12', Buffer.alloc(12)), // sec,mil,rand + MB('hmac',8,0) + // MB( 'xdata', encData ) + ), + + + ENC_488: MBP.meta( // 21 + payload + MB('type','8', 0 ), + MB('len','32L', 0 ), + MB('otpSrc8', Buffer.alloc(8) ), + MB('hmac8', Buffer.alloc(8) ) + // MB('xdata', encData ) + ) + + + } + + + function getMetaSize(meta){ + let lastItem = meta[ meta.length - 1] + return lastItem[2] + lastItem[3] + } + + export const MetaSize = { + AUTH_REQ: getMetaSize( Meta.AUTH_REQ ), + AUTH_NONCE: getMetaSize( Meta.AUTH_NONCE ), + AUTH_HMAC: getMetaSize( Meta.AUTH_HMAC ), + AUTH_ACK: getMetaSize( Meta.AUTH_ACK ), + ENC_PACK: getMetaSize( Meta.ENC_PACK ), + ENC_488: getMetaSize( Meta.ENC_488 ) + } + +// console.log( 'boho MetaSize', MetaSize ) +// boho MetaSize { +// AUTH_REQ: 2, +// AUTH_NONCE: 13, +// AUTH_HMAC: 45, +// AUTH_ACK: 33, +// ENC_PACK: 25, +// ENC_488: 21 +// } \ No newline at end of file diff --git a/src/sha256-mbp.js b/src/sha256-mbp.js new file mode 100644 index 0000000..c0fcd59 --- /dev/null +++ b/src/sha256-mbp.js @@ -0,0 +1,16 @@ +import { hash as sha256, hmac } from '../lib/fast-sha256.js' +import { MBP } from 'meta-buffer-pack' + +sha256.hash = function (data) { + return sha256(MBP.U8(data)) +} + +sha256.hex = function (data) { + return MBP.hex(sha256.hash(data)) +} + +sha256.hmac = function (key, data) { + return hmac(MBP.U8(key), MBP.U8(data)) +} + +export { sha256 }