var hexcase=1;
var b64pad="";
var chrsz=8;
function hex_md5(s){
return binl2hex(core_md5(str2binl(s),s.length*chrsz));
};
function b64_md5(s){
return binl2b64(core_md5(str2binl(s),s.length*chrsz));
};
function str_md5(s){
return binl2str(core_md5(str2binl(s),s.length*chrsz));
};
function hex_hmac_md5(_4,_5){
return binl2hex(core_hmac_md5(_4,_5));
};
function b64_hmac_md5(_6,_7){
return binl2b64(core_hmac_md5(_6,_7));
};
function str_hmac_md5(_8,_9){
return binl2str(core_hmac_md5(_8,_9));
};
function md5_vm_test(){
return hex_md5("abc")=="900150983cd24fb0d6963f7d28e17f72";
};
function core_md5(x,_b){
x[_b>>5]|=128<<((_b)%32);
x[(((_b+64)>>>9)<<4)+14]=_b;
var a=1732584193;
var b=-271733879;
var c=-1732584194;
var d=271733878;
for(var i=0;i<x.length;i+=16){
var _11=a;
var _12=b;
var _13=c;
var _14=d;
a=md5_ff(a,b,c,d,x[i+0],7,-680876936);
d=md5_ff(d,a,b,c,x[i+1],12,-389564586);
c=md5_ff(c,d,a,b,x[i+2],17,606105819);
b=md5_ff(b,c,d,a,x[i+3],22,-1044525330);
a=md5_ff(a,b,c,d,x[i+4],7,-176418897);
d=md5_ff(d,a,b,c,x[i+5],12,1200080426);
c=md5_ff(c,d,a,b,x[i+6],17,-1473231341);
b=md5_ff(b,c,d,a,x[i+7],22,-45705983);
a=md5_ff(a,b,c,d,x[i+8],7,1770035416);
d=md5_ff(d,a,b,c,x[i+9],12,-1958414417);
c=md5_ff(c,d,a,b,x[i+10],17,-42063);
b=md5_ff(b,c,d,a,x[i+11],22,-1990404162);
a=md5_ff(a,b,c,d,x[i+12],7,1804603682);
d=md5_ff(d,a,b,c,x[i+13],12,-40341101);
c=md5_ff(c,d,a,b,x[i+14],17,-1502002290);
b=md5_ff(b,c,d,a,x[i+15],22,1236535329);
a=md5_gg(a,b,c,d,x[i+1],5,-165796510);
d=md5_gg(d,a,b,c,x[i+6],9,-1069501632);
c=md5_gg(c,d,a,b,x[i+11],14,643717713);
b=md5_gg(b,c,d,a,x[i+0],20,-373897302);
a=md5_gg(a,b,c,d,x[i+5],5,-701558691);
d=md5_gg(d,a,b,c,x[i+10],9,38016083);
c=md5_gg(c,d,a,b,x[i+15],14,-660478335);
b=md5_gg(b,c,d,a,x[i+4],20,-405537848);
a=md5_gg(a,b,c,d,x[i+9],5,568446438);
d=md5_gg(d,a,b,c,x[i+14],9,-1019803690);
c=md5_gg(c,d,a,b,x[i+3],14,-187363961);
b=md5_gg(b,c,d,a,x[i+8],20,1163531501);
a=md5_gg(a,b,c,d,x[i+13],5,-1444681467);
d=md5_gg(d,a,b,c,x[i+2],9,-51403784);
c=md5_gg(c,d,a,b,x[i+7],14,1735328473);
b=md5_gg(b,c,d,a,x[i+12],20,-1926607734);
a=md5_hh(a,b,c,d,x[i+5],4,-378558);
d=md5_hh(d,a,b,c,x[i+8],11,-2022574463);
c=md5_hh(c,d,a,b,x[i+11],16,1839030562);
b=md5_hh(b,c,d,a,x[i+14],23,-35309556);
a=md5_hh(a,b,c,d,x[i+1],4,-1530992060);
d=md5_hh(d,a,b,c,x[i+4],11,1272893353);
c=md5_hh(c,d,a,b,x[i+7],16,-155497632);
b=md5_hh(b,c,d,a,x[i+10],23,-1094730640);
a=md5_hh(a,b,c,d,x[i+13],4,681279174);
d=md5_hh(d,a,b,c,x[i+0],11,-358537222);
c=md5_hh(c,d,a,b,x[i+3],16,-722521979);
b=md5_hh(b,c,d,a,x[i+6],23,76029189);
a=md5_hh(a,b,c,d,x[i+9],4,-640364487);
d=md5_hh(d,a,b,c,x[i+12],11,-421815835);
c=md5_hh(c,d,a,b,x[i+15],16,530742520);
b=md5_hh(b,c,d,a,x[i+2],23,-995338651);
a=md5_ii(a,b,c,d,x[i+0],6,-198630844);
d=md5_ii(d,a,b,c,x[i+7],10,1126891415);
c=md5_ii(c,d,a,b,x[i+14],15,-1416354905);
b=md5_ii(b,c,d,a,x[i+5],21,-57434055);
a=md5_ii(a,b,c,d,x[i+12],6,1700485571);
d=md5_ii(d,a,b,c,x[i+3],10,-1894986606);
c=md5_ii(c,d,a,b,x[i+10],15,-1051523);
b=md5_ii(b,c,d,a,x[i+1],21,-2054922799);
a=md5_ii(a,b,c,d,x[i+8],6,1873313359);
d=md5_ii(d,a,b,c,x[i+15],10,-30611744);
c=md5_ii(c,d,a,b,x[i+6],15,-1560198380);
b=md5_ii(b,c,d,a,x[i+13],21,1309151649);
a=md5_ii(a,b,c,d,x[i+4],6,-145523070);
d=md5_ii(d,a,b,c,x[i+11],10,-1120210379);
c=md5_ii(c,d,a,b,x[i+2],15,718787259);
b=md5_ii(b,c,d,a,x[i+9],21,-343485551);
a=safe_add(a,_11);
b=safe_add(b,_12);
c=safe_add(c,_13);
d=safe_add(d,_14);
}
return Array(a,b,c,d);
};
function md5_cmn(q,a,b,x,s,t){
return safe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b);
};
function md5_ff(a,b,c,d,x,s,t){
return md5_cmn((b&c)|((~b)&d),a,b,x,s,t);
};
function md5_gg(a,b,c,d,x,s,t){
return md5_cmn((b&d)|(c&(~d)),a,b,x,s,t);
};
function md5_hh(a,b,c,d,x,s,t){
return md5_cmn(b^c^d,a,b,x,s,t);
};
function md5_ii(a,b,c,d,x,s,t){
return md5_cmn(c^(b|(~d)),a,b,x,s,t);
};
function core_hmac_md5(key,_38){
var _39=str2binl(key);
if(_39.length>16){
_39=core_md5(_39,key.length*chrsz);
}
var _3a=Array(16),_3b=Array(16);
for(var i=0;i<16;i++){
_3a[i]=_39[i]^909522486;
_3b[i]=_39[i]^1549556828;
}
var _3d=core_md5(_3a.concat(str2binl(_38)),512+_38.length*chrsz);
return core_md5(_3b.concat(_3d),512+128);
};
function safe_add(x,y){
var lsw=(x&65535)+(y&65535);
var msw=(x>>16)+(y>>16)+(lsw>>16);
return (msw<<16)|(lsw&65535);
};
function bit_rol(num,cnt){
return (num<<cnt)|(num>>>(32-cnt));
};
function str2binl(str){
var bin=Array();
var _46=(1<<chrsz)-1;
for(var i=0;i<str.length*chrsz;i+=chrsz){
bin[i>>5]|=(str.charCodeAt(i/chrsz)&_46)<<(i%32);
}
return bin;
};
function binl2str(bin){
var str="";
var _4a=(1<<chrsz)-1;
for(var i=0;i<bin.length*32;i+=chrsz){
str+=String.fromCharCode((bin[i>>5]>>>(i%32))&_4a);
}
return str;
};
function binl2hex(_4c){
var _4d=hexcase?"0123456789ABCDEF":"0123456789abcdef";
var str="";
for(var i=0;i<_4c.length*4;i++){
str+=_4d.charAt((_4c[i>>2]>>((i%4)*8+4))&15)+_4d.charAt((_4c[i>>2]>>((i%4)*8))&15);
}
return str;
};
function binl2b64(_50){
var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var str="";
for(var i=0;i<_50.length*4;i+=3){
var _54=(((_50[i>>2]>>8*(i%4))&255)<<16)|(((_50[i+1>>2]>>8*((i+1)%4))&255)<<8)|((_50[i+2>>2]>>8*((i+2)%4))&255);
for(var j=0;j<4;j++){
if(i*8+j*6>_50.length*32){
str+=b64pad;
}else{
str+=tab.charAt((_54>>6*(3-j))&63);
}
}
}
return str;
};
var chrsz=8;
function safe_add(x,y){
var lsw=(x&65535)+(y&65535);
var msw=(x>>16)+(y>>16)+(lsw>>16);
return (msw<<16)|(lsw&65535);
};
function S(X,n){
return (X>>>n)|(X<<(32-n));
};
function R(X,n){
return (X>>>n);
};
function Ch(x,y,z){
return ((x&y)^((~x)&z));
};
function Maj(x,y,z){
return ((x&y)^(x&z)^(y&z));
};
function Sigma0256(x){
return (S(x,2)^S(x,13)^S(x,22));
};
function Sigma1256(x){
return (S(x,6)^S(x,11)^S(x,25));
};
function Gamma0256(x){
return (S(x,7)^S(x,18)^R(x,3));
};
function Gamma1256(x){
return (S(x,17)^S(x,19)^R(x,10));
};
function core_sha256(m,l){
var K=new Array(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);
var _6b=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225);
var W=new Array(64);
var a,b,c,d,e,f,g,h,i,j;
var T1,T2;
m[l>>5]|=128<<(24-l%32);
m[((l+64>>9)<<4)+15]=l;
for(var i=0;i<m.length;i+=16){
a=_6b[0];
b=_6b[1];
c=_6b[2];
d=_6b[3];
e=_6b[4];
f=_6b[5];
g=_6b[6];
h=_6b[7];
for(var j=0;j<64;j++){
if(j<16){
W[j]=m[j+i];
}else{
W[j]=safe_add(safe_add(safe_add(Gamma1256(W[j-2]),W[j-7]),Gamma0256(W[j-15])),W[j-16]);
}
T1=safe_add(safe_add(safe_add(safe_add(h,Sigma1256(e)),Ch(e,f,g)),K[j]),W[j]);
T2=safe_add(Sigma0256(a),Maj(a,b,c));
h=g;
g=f;
f=e;
e=safe_add(d,T1);
d=c;
c=b;
b=a;
a=safe_add(T1,T2);
}
_6b[0]=safe_add(a,_6b[0]);
_6b[1]=safe_add(b,_6b[1]);
_6b[2]=safe_add(c,_6b[2]);
_6b[3]=safe_add(d,_6b[3]);
_6b[4]=safe_add(e,_6b[4]);
_6b[5]=safe_add(f,_6b[5]);
_6b[6]=safe_add(g,_6b[6]);
_6b[7]=safe_add(h,_6b[7]);
}
return _6b;
};
function str2binb(str){
var bin=Array();
var _7b=(1<<chrsz)-1;
for(var i=0;i<str.length*chrsz;i+=chrsz){
bin[i>>5]|=(str.charCodeAt(i/chrsz)&_7b)<<(24-i%32);
}
return bin;
};
function binb2hex(_7d){
var _7e=0;
var _7f=_7e?"0123456789ABCDEF":"0123456789abcdef";
var str="";
for(var i=0;i<_7d.length*4;i++){
str+=_7f.charAt((_7d[i>>2]>>((3-i%4)*8+4))&15)+_7f.charAt((_7d[i>>2]>>((3-i%4)*8))&15);
}
return str;
};
function hex_sha256(s){
return binb2hex(core_sha256(str2binb(s),s.length*chrsz));
};

