function toArray (g) {
var e = ( (g.length + 8) >> 6) + 1,
d = new Array (e * 16);
for (var f = 0; f < e * 16; f++) {
d[f] = 0
}
for (f = 0; f < g.length; f++) {
d[f >> 2] |= g.charCodeAt (f) << (24 - (f & 3) * 8)
}
d[f >> 2] |= 128 << (24 - (f & 3) * 8);
d[e * 16 - 1] = g.length * 8;
return d
}
function toHex (d) {
var g = "0123456789abcdef",
f = "";
for (var e = 0; e < d.length * 4; e++) {
f += g.charAt ( (d[e >> 2] >> ( (3 - e % 4) * 8 + 4)) & 15) + g.charAt ( (d[e >> 2] >> ( (3 - e % 4) * 8)) & 15)
}
return f
}
function core (y) {
var f = y;
var v = new Array (80);
var u = 1732584193;
var s = -271733879;
var r = -1732584194;
var q = 271733878;
var p = -1009589776;
for (var m = 0; m < f.length; m += 16) {
var o = u;
var n = s;
var l = r;
var k = q;
var g = p;
for (var h = 0; h < 80; h++) {
if (h < 16) {
v[h] = f[m + h]
} else {
v[h] = this.rol (v[h - 3] ^ v[h - 8] ^ v[h - 14] ^ v[h - 16], 1)
}
var x = this.add (this.add (this.rol (u, 5), this.ft (h, s, r, q)), this.add (this.add (p, v[h]), this.kt (h)));
p = q;
q = r;
r = this.rol (s, 30);
s = u;
u = x
}
u = this.add (u, o);
s = this.add (s, n);
r = this.add (r, l);
q = this.add (q, k);
p = this.add (p, g)
}
return new Array (u, s, r, q, p)
}
function add (f, e) {
var g = (f & 65535) + (e & 65535);
var d = (f >> 16) + (e >> 16) + (g >> 16);
return (d << 16) | (g & 65535)
}
function rol (d, e) {
return (d << e) | (d >>> (32 - e))
}
function ft (f, e, h, g) {
if (f < 20) {
return (e & h) | ( (~e) & g)
} else {
if (f < 40) {
return e ^ h ^ g
} else {
if (f < 60) {
return (e & h) | (e & g) | (h & g)
}
}
}
return e ^ h ^ g
}
function kt (d) {
return (d < 20) ? 1518500249 : (d < 40) ? 1859775393 : (d < 60) ? -1894007588 : -899497514
}
function jingyiluntan (d) {
return toHex (core (toArray (d)))
}