js 加密解密


0311lc.com说:

其他的加解密 参考

https://blog.csdn.net/zhihua_w/article/details/79388297

https://blog.csdn.net/u010081710/article/details/47398315

https://www.cnblogs.com/claireyuancy/p/6805790.html

 

某招生考试网上信息管理系统例子

	$('#loginId').val($Jquery.encrypt($('#loginId').val()));
	$('#password').val($Jquery.encrypt($('#password').val()));

 

(function(a, b) {
    a.$Jquery = b();
    a.$Jquery.encrypt = function(g) {
        var f = a.$Jquery.enc.Utf8.parse(g);
        var d = a.$Jquery.enc.Utf8.parse(c);
        var e = a.$Jquery.AES.encrypt(f, d, {
            mode: a.$Jquery.mode.ECB,
            padding: a.$Jquery.pad.Pkcs7
        });
        return e.toString()
    };
    a.$Jquery.decrypt = function(f) {
        var d = a.$Jquery.enc.Utf8.parse(c);
        var e = a.$Jquery.AES.decrypt(f, d, {
            mode: a.$Jquery.mode.ECB,
            padding: a.$Jquery.pad.Pkcs7
        });
        return a.$Jquery.enc.Utf8.stringify(e).toString()
    };
    var c = "o7H8uIM2852Hy6l2"
} (this,
function() {
    var a = a || (function(f, h) {
        var k = Object.create || (function() {
            function p() {}
            return function(r) {
                var q;
                p.prototype = r;
                q = new p();
                p.prototype = null;
                return q
            }
        } ());
        var b = {};
        var c = b.lib = {};
        var l = c.Base = (function() {
            return {
                extend: function(q) {
                    var p = k(this);
                    if (q) {
                        p.mixIn(q)
                    }
                    if (!p.hasOwnProperty("init") || this.init === p.init) {
                        p.init = function() {
                            p.$super.init.apply(this, arguments)
                        }
                    }
                    p.init.prototype = p;
                    p.$super = this;
                    return p
                },
                create: function() {
                    var p = this.extend();
                    p.init.apply(p, arguments);
                    return p
                },
                init: function() {},
                mixIn: function(q) {
                    for (var p in q) {
                        if (q.hasOwnProperty(p)) {
                            this[p] = q[p]
                        }
                    }
                    if (q.hasOwnProperty("toString")) {
                        this.toString = q.toString
                    }
                },
                clone: function() {
                    return this.init.prototype.extend(this)
                }
            }
        } ());
        var n = c.WordArray = l.extend({
            init: function(q, p) {
                q = this.words = q || [];
                if (p != h) {
                    this.sigBytes = p
                } else {
                    this.sigBytes = q.length * 4
                }
            },
            toString: function(p) {
                return (p || i).stringify(this)
            },
            concat: function(v) {
                var s = this.words;
                var r = v.words;
                var p = this.sigBytes;
                var u = v.sigBytes;
                this.clamp();
                if (p % 4) {
                    for (var t = 0; t < u; t++) {
                        var q = (r[t >>> 2] >>> (24 - (t % 4) * 8)) & 255;
                        s[(p + t) >>> 2] |= q << (24 - ((p + t) % 4) * 8)
                    }
                } else {
                    for (var t = 0; t < u; t += 4) {
                        s[(p + t) >>> 2] = r[t >>> 2]
                    }
                }
                this.sigBytes += u;
                return this
            },
            clamp: function() {
                var q = this.words;
                var p = this.sigBytes;
                q[p >>> 2] &= 4294967295 << (32 - (p % 4) * 8);
                q.length = f.ceil(p / 4)
            },
            clone: function() {
                var p = l.clone.call(this);
                p.words = this.words.slice(0);
                return p
            },
            random: function(v) {
                var u = [];
                var s = (function(x) {
                    var x = x;
                    var w = 987654321;
                    var r = 4294967295;
                    return function() {
                        w = (36969 * (w & 65535) + (w >> 16)) & r;
                        x = (18000 * (x & 65535) + (x >> 16)) & r;
                        var y = ((w << 16) + x) & r;
                        y /= 4294967296;
                        y += 0.5;
                        return y * (f.random() > 0.5 ? 1 : -1)
                    }
                });
                for (var q = 0,
                p; q < v; q += 4) {
                    var t = s((p || f.random()) * 4294967296);
                    p = t() * 987654071;
                    u.push((t() * 4294967296) | 0)
                }
                return new n.init(u, v)
            }
        });
        var o = b.enc = {};
        var i = o.Hex = {
            stringify: function(r) {
                var t = r.words;
                var q = r.sigBytes;
                var s = [];
                for (var p = 0; p < q; p++) {
                    var u = (t[p >>> 2] >>> (24 - (p % 4) * 8)) & 255;
                    s.push((u >>> 4).toString(16));
                    s.push((u & 15).toString(16))
                }
                return s.join("")
            },
            parse: function(r) {
                var p = r.length;
                var s = [];
                for (var q = 0; q < p; q += 2) {
                    s[q >>> 3] |= parseInt(r.substr(q, 2), 16) << (24 - (q % 8) * 4)
                }
                return new n.init(s, p / 2)
            }
        };
        var e = o.Latin1 = {
            stringify: function(s) {
                var t = s.words;
                var r = s.sigBytes;
                var p = [];
                for (var q = 0; q < r; q++) {
                    var u = (t[q >>> 2] >>> (24 - (q % 4) * 8)) & 255;
                    p.push(String.fromCharCode(u))
                }
                return p.join("")
            },
            parse: function(r) {
                var p = r.length;
                var s = [];
                for (var q = 0; q < p; q++) {
                    s[q >>> 2] |= (r.charCodeAt(q) & 255) << (24 - (q % 4) * 8)
                }
                return new n.init(s, p)
            }
        };
        var d = o.Utf8 = {
            stringify: function(p) {
                try {
                    return decodeURIComponent(escape(e.stringify(p)))
                } catch(q) {
                    throw new Error("Malformed UTF-8 data")
                }
            },
            parse: function(p) {
                return e.parse(unescape(encodeURIComponent(p)))
            }
        };
        var j = c.BufferedBlockAlgorithm = l.extend({
            reset: function() {
                this._data = new n.init();
                this._nDataBytes = 0
            },
            _append: function(p) {
                if (typeof p == "string") {
                    p = d.parse(p)
                }
                this._data.concat(p);
                this._nDataBytes += p.sigBytes
            },
            _process: function(y) {
                var s = this._data;
                var z = s.words;
                var p = s.sigBytes;
                var v = this.blockSize;
                var x = v * 4;
                var w = p / x;
                if (y) {
                    w = f.ceil(w)
                } else {
                    w = f.max((w | 0) - this._minBufferSize, 0)
                }
                var u = w * v;
                var t = f.min(u * 4, p);
                if (u) {
                    for (var r = 0; r < u; r += v) {
                        this._doProcessBlock(z, r)
                    }
                    var q = z.splice(0, u);
                    s.sigBytes -= t
                }
                return new n.init(q, t)
            },
            clone: function() {
                var p = l.clone.call(this);
                p._data = this._data.clone();
                return p
            },
            _minBufferSize: 0
        });
        var g = c.Hasher = j.extend({
            cfg: l.extend(),
            init: function(p) {
                this.cfg = this.cfg.extend(p);
                this.reset()
            },
            reset: function() {
                j.reset.call(this);
                this._doReset()
            },
            update: function(p) {
                this._append(p);
                this._process();
                return this
            },
            finalize: function(p) {
                if (p) {
                    this._append(p)
                }
                var q = this._doFinalize();
                return q
            },
            blockSize: 512 / 32,
            _createHelper: function(p) {
                return function(r, q) {
                    return new p.init(q).finalize(r)
                }
            },
            _createHmacHelper: function(p) {
                return function(r, q) {
                    return new m.HMAC.init(p, q).finalize(r)
                }
            }
        });
        var m = b.algo = {};
        return b
    } (Math)); (function() {
        var g = a;
        var b = g.lib;
        var c = b.WordArray;
        var f = g.enc;
        var e = f.Base64 = {
            stringify: function(n) {
                var p = n.words;
                var r = n.sigBytes;
                var k = this._map;
                n.clamp();
                var o = [];
                for (var m = 0; m < r; m += 3) {
                    var u = (p[m >>> 2] >>> (24 - (m % 4) * 8)) & 255;
                    var s = (p[(m + 1) >>> 2] >>> (24 - ((m + 1) % 4) * 8)) & 255;
                    var q = (p[(m + 2) >>> 2] >>> (24 - ((m + 2) % 4) * 8)) & 255;
                    var t = (u << 16) | (s << 8) | q;
                    for (var l = 0; (l < 4) && (m + l * 0.75 < r); l++) {
                        o.push(k.charAt((t >>> (6 * (3 - l))) & 63))
                    }
                }
                var h = k.charAt(64);
                if (h) {
                    while (o.length % 4) {
                        o.push(h)
                    }
                }
                return o.join("")
            },
            parse: function(o) {
                var k = o.length;
                var l = this._map;
                var i = this._reverseMap;
                if (!i) {
                    i = this._reverseMap = [];
                    for (var h = 0; h < l.length; h++) {
                        i[l.charCodeAt(h)] = h
                    }
                }
                var n = l.charAt(64);
                if (n) {
                    var m = o.indexOf(n);
                    if (m !== -1) {
                        k = m
                    }
                }
                return d(o, k, i)
            },
            _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
        };
        function d(p, l, k) {
            var n = [];
            var m = 0;
            for (var j = 0; j < l; j++) {
                if (j % 4) {
                    var h = k[p.charCodeAt(j - 1)] << ((j % 4) * 2);
                    var o = k[p.charCodeAt(j)] >>> (6 - (j % 4) * 2);
                    n[m >>> 2] |= (h | o) << (24 - (m % 4) * 8);
                    m++
                }
            }
            return c.create(n, m)
        }
    } ()); (function(d) {
        var b = a;
        var c = b.lib;
        var j = c.WordArray;
        var f = c.Hasher;
        var k = b.algo;
        var g = []; (function() {
            for (var n = 0; n < 64; n++) {
                g[n] = (d.abs(d.sin(n + 1)) * 4294967296) | 0
            }
        } ());
        var l = k.MD5 = f.extend({
            _doReset: function() {
                this._hash = new j.init([1732584193, 4023233417, 2562383102, 271733878])
            },
            _doProcessBlock: function(t, o) {
                for (var J = 0; J < 16; J++) {
                    var n = o + J;
                    var p = t[n];
                    t[n] = ((((p << 8) | (p >>> 24)) & 16711935) | (((p << 24) | (p >>> 8)) & 4278255360))
                }
                var y = this._hash.words;
                var B = t[o + 0];
                var A = t[o + 1];
                var z = t[o + 2];
                var x = t[o + 3];
                var w = t[o + 4];
                var v = t[o + 5];
                var u = t[o + 6];
                var s = t[o + 7];
                var r = t[o + 8];
                var q = t[o + 9];
                var I = t[o + 10];
                var G = t[o + 11];
                var F = t[o + 12];
                var E = t[o + 13];
                var D = t[o + 14];
                var C = t[o + 15];
                var O = y[0];
                var N = y[1];
                var L = y[2];
                var K = y[3];
                O = i(O, N, L, K, B, 7, g[0]);
                K = i(K, O, N, L, A, 12, g[1]);
                L = i(L, K, O, N, z, 17, g[2]);
                N = i(N, L, K, O, x, 22, g[3]);
                O = i(O, N, L, K, w, 7, g[4]);
                K = i(K, O, N, L, v, 12, g[5]);
                L = i(L, K, O, N, u, 17, g[6]);
                N = i(N, L, K, O, s, 22, g[7]);
                O = i(O, N, L, K, r, 7, g[8]);
                K = i(K, O, N, L, q, 12, g[9]);
                L = i(L, K, O, N, I, 17, g[10]);
                N = i(N, L, K, O, G, 22, g[11]);
                O = i(O, N, L, K, F, 7, g[12]);
                K = i(K, O, N, L, E, 12, g[13]);
                L = i(L, K, O, N, D, 17, g[14]);
                N = i(N, L, K, O, C, 22, g[15]);
                O = e(O, N, L, K, A, 5, g[16]);
                K = e(K, O, N, L, u, 9, g[17]);
                L = e(L, K, O, N, G, 14, g[18]);
                N = e(N, L, K, O, B, 20, g[19]);
                O = e(O, N, L, K, v, 5, g[20]);
                K = e(K, O, N, L, I, 9, g[21]);
                L = e(L, K, O, N, C, 14, g[22]);
                N = e(N, L, K, O, w, 20, g[23]);
                O = e(O, N, L, K, q, 5, g[24]);
                K = e(K, O, N, L, D, 9, g[25]);
                L = e(L, K, O, N, x, 14, g[26]);
                N = e(N, L, K, O, r, 20, g[27]);
                O = e(O, N, L, K, E, 5, g[28]);
                K = e(K, O, N, L, z, 9, g[29]);
                L = e(L, K, O, N, s, 14, g[30]);
                N = e(N, L, K, O, F, 20, g[31]);
                O = m(O, N, L, K, v, 4, g[32]);
                K = m(K, O, N, L, r, 11, g[33]);
                L = m(L, K, O, N, G, 16, g[34]);
                N = m(N, L, K, O, D, 23, g[35]);
                O = m(O, N, L, K, A, 4, g[36]);
                K = m(K, O, N, L, w, 11, g[37]);
                L = m(L, K, O, N, s, 16, g[38]);
                N = m(N, L, K, O, I, 23, g[39]);
                O = m(O, N, L, K, E, 4, g[40]);
                K = m(K, O, N, L, B, 11, g[41]);
                L = m(L, K, O, N, x, 16, g[42]);
                N = m(N, L, K, O, u, 23, g[43]);
                O = m(O, N, L, K, q, 4, g[44]);
                K = m(K, O, N, L, F, 11, g[45]);
                L = m(L, K, O, N, C, 16, g[46]);
                N = m(N, L, K, O, z, 23, g[47]);
                O = h(O, N, L, K, B, 6, g[48]);
                K = h(K, O, N, L, s, 10, g[49]);
                L = h(L, K, O, N, D, 15, g[50]);
                N = h(N, L, K, O, v, 21, g[51]);
                O = h(O, N, L, K, F, 6, g[52]);
                K = h(K, O, N, L, x, 10, g[53]);
                L = h(L, K, O, N, I, 15, g[54]);
                N = h(N, L, K, O, A, 21, g[55]);
                O = h(O, N, L, K, r, 6, g[56]);
                K = h(K, O, N, L, C, 10, g[57]);
                L = h(L, K, O, N, u, 15, g[58]);
                N = h(N, L, K, O, E, 21, g[59]);
                O = h(O, N, L, K, w, 6, g[60]);
                K = h(K, O, N, L, G, 10, g[61]);
                L = h(L, K, O, N, z, 15, g[62]);
                N = h(N, L, K, O, q, 21, g[63]);
                y[0] = (y[0] + O) | 0;
                y[1] = (y[1] + N) | 0;
                y[2] = (y[2] + L) | 0;
                y[3] = (y[3] + K) | 0
            },
            _doFinalize: function() {
                var r = this._data;
                var w = r.words;
                var t = this._nDataBytes * 8;
                var u = r.sigBytes * 8;
                w[u >>> 5] |= 128 << (24 - u % 32);
                var s = d.floor(t / 4294967296);
                var o = t;
                w[(((u + 64) >>> 9) << 4) + 15] = ((((s << 8) | (s >>> 24)) & 16711935) | (((s << 24) | (s >>> 8)) & 4278255360));
                w[(((u + 64) >>> 9) << 4) + 14] = ((((o << 8) | (o >>> 24)) & 16711935) | (((o << 24) | (o >>> 8)) & 4278255360));
                r.sigBytes = (w.length + 1) * 4;
                this._process();
                var q = this._hash;
                var v = q.words;
                for (var p = 0; p < 4; p++) {
                    var n = v[p];
                    v[p] = (((n << 8) | (n >>> 24)) & 16711935) | (((n << 24) | (n >>> 8)) & 4278255360)
                }
                return q
            },
            clone: function() {
                var n = f.clone.call(this);
                n._hash = this._hash.clone();
                return n
            }
        });
        function i(q, p, y, v, o, u, r) {
            var w = q + ((p & y) | (~p & v)) + o + r;
            return ((w << u) | (w >>> (32 - u))) + p
        }
        function e(q, p, y, v, o, u, r) {
            var w = q + ((p & v) | (y & ~v)) + o + r;
            return ((w << u) | (w >>> (32 - u))) + p
        }
        function m(q, p, y, v, o, u, r) {
            var w = q + (p ^ y ^ v) + o + r;
            return ((w << u) | (w >>> (32 - u))) + p
        }
        function h(q, p, y, v, o, u, r) {
            var w = q + (y ^ (p | ~v)) + o + r;
            return ((w << u) | (w >>> (32 - u))) + p
        }
        b.MD5 = f._createHelper(l);
        b.HmacMD5 = f._createHmacHelper(l)
    } (Math)); (function() {
        var h = a;
        var e = h.lib;
        var g = e.WordArray;
        var c = e.Hasher;
        var f = h.algo;
        var b = [];
        var d = f.SHA1 = c.extend({
            _doReset: function() {
                this._hash = new g.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
            },
            _doProcessBlock: function(o, k) {
                var u = this._hash.words;
                var s = u[0];
                var r = u[1];
                var q = u[2];
                var p = u[3];
                var m = u[4];
                for (var l = 0; l < 80; l++) {
                    if (l < 16) {
                        b[l] = o[k + l] | 0
                    } else {
                        var j = b[l - 3] ^ b[l - 8] ^ b[l - 14] ^ b[l - 16];
                        b[l] = (j << 1) | (j >>> 31)
                    }
                    var v = ((s << 5) | (s >>> 27)) + m + b[l];
                    if (l < 20) {
                        v += ((r & q) | (~r & p)) + 1518500249
                    } else {
                        if (l < 40) {
                            v += (r ^ q ^ p) + 1859775393
                        } else {
                            if (l < 60) {
                                v += ((r & q) | (r & p) | (q & p)) - 1894007588
                            } else {
                                v += (r ^ q ^ p) - 899497514
                            }
                        }
                    }
                    m = p;
                    p = q;
                    q = (r << 30) | (r >>> 2);
                    r = s;
                    s = v
                }
                u[0] = (u[0] + s) | 0;
                u[1] = (u[1] + r) | 0;
                u[2] = (u[2] + q) | 0;
                u[3] = (u[3] + p) | 0;
                u[4] = (u[4] + m) | 0
            },
            _doFinalize: function() {
                var k = this._data;
                var l = k.words;
                var i = this._nDataBytes * 8;
                var j = k.sigBytes * 8;
                l[j >>> 5] |= 128 << (24 - j % 32);
                l[(((j + 64) >>> 9) << 4) + 14] = Math.floor(i / 4294967296);
                l[(((j + 64) >>> 9) << 4) + 15] = i;
                k.sigBytes = l.length * 4;
                this._process();
                return this._hash
            },
            clone: function() {
                var i = c.clone.call(this);
                i._hash = this._hash.clone();
                return i
            }
        });
        h.SHA1 = c._createHelper(d);
        h.HmacSHA1 = c._createHmacHelper(d)
    } ()); (function(d) {
        var b = a;
        var c = b.lib;
        var h = c.WordArray;
        var f = c.Hasher;
        var i = b.algo;
        var k = [];
        var j = []; (function() {
            function o(s) {
                var r = d.sqrt(s);
                for (var q = 2; q <= r; q++) {
                    if (! (s % q)) {
                        return false
                    }
                }
                return true
            }
            function m(q) {
                return ((q - (q | 0)) * 4294967296) | 0
            }
            var p = 2;
            var l = 0;
            while (l < 64) {
                if (o(p)) {
                    if (l < 8) {
                        k[l] = m(d.pow(p, 1 / 2))
                    }
                    j[l] = m(d.pow(p, 1 / 3));
                    l++
                }
                p++
            }
        } ());
        var e = [];
        var g = i.SHA256 = f.extend({
            _doReset: function() {
                this._hash = new h.init(k.slice(0))
            },
            _doProcessBlock: function(o, n) {
                var r = this._hash.words;
                var E = r[0];
                var D = r[1];
                var C = r[2];
                var B = r[3];
                var A = r[4];
                var z = r[5];
                var y = r[6];
                var x = r[7];
                for (var w = 0; w < 64; w++) {
                    if (w < 16) {
                        e[w] = o[n + w] | 0
                    } else {
                        var m = e[w - 15];
                        var G = ((m << 25) | (m >>> 7)) ^ ((m << 14) | (m >>> 18)) ^ (m >>> 3);
                        var s = e[w - 2];
                        var F = ((s << 15) | (s >>> 17)) ^ ((s << 13) | (s >>> 19)) ^ (s >>> 10);
                        e[w] = G + e[w - 7] + F + e[w - 16]
                    }
                    var t = (A & z) ^ (~A & y);
                    var l = (E & D) ^ (E & C) ^ (D & C);
                    var v = ((E << 30) | (E >>> 2)) ^ ((E << 19) | (E >>> 13)) ^ ((E << 10) | (E >>> 22));
                    var u = ((A << 26) | (A >>> 6)) ^ ((A << 21) | (A >>> 11)) ^ ((A << 7) | (A >>> 25));
                    var q = x + u + t + j[w] + e[w];
                    var p = v + l;
                    x = y;
                    y = z;
                    z = A;
                    A = (B + q) | 0;
                    B = C;
                    C = D;
                    D = E;
                    E = (q + p) | 0
                }
                r[0] = (r[0] + E) | 0;
                r[1] = (r[1] + D) | 0;
                r[2] = (r[2] + C) | 0;
                r[3] = (r[3] + B) | 0;
                r[4] = (r[4] + A) | 0;
                r[5] = (r[5] + z) | 0;
                r[6] = (r[6] + y) | 0;
                r[7] = (r[7] + x) | 0
            },
            _doFinalize: function() {
                var n = this._data;
                var o = n.words;
                var l = this._nDataBytes * 8;
                var m = n.sigBytes * 8;
                o[m >>> 5] |= 128 << (24 - m % 32);
                o[(((m + 64) >>> 9) << 4) + 14] = d.floor(l / 4294967296);
                o[(((m + 64) >>> 9) << 4) + 15] = l;
                n.sigBytes = o.length * 4;
                this._process();
                return this._hash
            },
            clone: function() {
                var l = f.clone.call(this);
                l._hash = this._hash.clone();
                return l
            }
        });
        b.SHA256 = f._createHelper(g);
        b.HmacSHA256 = f._createHmacHelper(g)
    } (Math)); (function() {
        var g = a;
        var b = g.lib;
        var d = b.WordArray;
        var f = g.enc;
        var e = f.Utf16 = f.Utf16BE = {
            stringify: function(l) {
                var n = l.words;
                var k = l.sigBytes;
                var m = [];
                for (var j = 0; j < k; j += 2) {
                    var h = (n[j >>> 2] >>> (16 - (j % 4) * 8)) & 65535;
                    m.push(String.fromCharCode(h))
                }
                return m.join("")
            },
            parse: function(h) {
                var k = h.length;
                var l = [];
                for (var j = 0; j < k; j++) {
                    l[j >>> 1] |= h.charCodeAt(j) << (16 - (j % 2) * 16)
                }
                return d.create(l, k * 2)
            }
        };
        f.Utf16LE = {
            stringify: function(l) {
                var n = l.words;
                var k = l.sigBytes;
                var m = [];
                for (var j = 0; j < k; j += 2) {
                    var h = c((n[j >>> 2] >>> (16 - (j % 4) * 8)) & 65535);
                    m.push(String.fromCharCode(h))
                }
                return m.join("")
            },
            parse: function(h) {
                var k = h.length;
                var l = [];
                for (var j = 0; j < k; j++) {
                    l[j >>> 1] |= c(h.charCodeAt(j) << (16 - (j % 2) * 16))
                }
                return d.create(l, k * 2)
            }
        };
        function c(h) {
            return ((h << 8) & 4278255360) | ((h >>> 8) & 16711935)
        }
    } ()); (function() {
        if (typeof ArrayBuffer != "function") {
            return
        }
        var f = a;
        var d = f.lib;
        var e = d.WordArray;
        var c = e.init;
        var b = e.init = function(j) {
            if (j instanceof ArrayBuffer) {
                j = new Uint8Array(j)
            }
            if (j instanceof Int8Array || (typeof Uint8ClampedArray !== "undefined" && j instanceof Uint8ClampedArray) || j instanceof Int16Array || j instanceof Uint16Array || j instanceof Int32Array || j instanceof Uint32Array || j instanceof Float32Array || j instanceof Float64Array) {
                j = new Uint8Array(j.buffer, j.byteOffset, j.byteLength)
            }
            if (j instanceof Uint8Array) {
                var g = j.byteLength;
                var k = [];
                for (var h = 0; h < g; h++) {
                    k[h >>> 2] |= j[h] << (24 - (h % 4) * 8)
                }
                c.call(this, k, g)
            } else {
                c.apply(this, arguments)
            }
        };
        b.prototype = e
    } ()); (function(g) {
        var j = a;
        var t = j.lib;
        var r = t.WordArray;
        var d = t.Hasher;
        var b = j.algo;
        var s = r.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);
        var p = r.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);
        var f = r.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]);
        var e = r.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]);
        var n = r.create([0, 1518500249, 1859775393, 2400959708, 2840853838]);
        var h = r.create([1352829926, 1548603684, 1836072691, 2053994217, 0]);
        var c = b.RIPEMD160 = d.extend({
            _doReset: function() {
                this._hash = r.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
            },
            _doProcessBlock: function(D, B) {
                for (var O = 0; O < 16; O++) {
                    var w = B + O;
                    var C = D[w];
                    D[w] = ((((C << 8) | (C >>> 24)) & 16711935) | (((C << 24) | (C >>> 8)) & 4278255360))
                }
                var F = this._hash.words;
                var y = n.words;
                var S = h.words;
                var z = s.words;
                var x = p.words;
                var P = f.words;
                var L = e.words;
                var K, u, E, N, v;
                var I, Q, A, J, R;
                I = K = F[0];
                Q = u = F[1];
                A = E = F[2];
                J = N = F[3];
                R = v = F[4];
                var G;
                for (var O = 0; O < 80; O += 1) {
                    G = (K + D[B + z[O]]) | 0;
                    if (O < 16) {
                        G += q(u, E, N) + y[0]
                    } else {
                        if (O < 32) {
                            G += o(u, E, N) + y[1]
                        } else {
                            if (O < 48) {
                                G += m(u, E, N) + y[2]
                            } else {
                                if (O < 64) {
                                    G += l(u, E, N) + y[3]
                                } else {
                                    G += k(u, E, N) + y[4]
                                }
                            }
                        }
                    }
                    G = G | 0;
                    G = i(G, P[O]);
                    G = (G + v) | 0;
                    K = v;
                    v = N;
                    N = i(E, 10);
                    E = u;
                    u = G;
                    G = (I + D[B + x[O]]) | 0;
                    if (O < 16) {
                        G += k(Q, A, J) + S[0]
                    } else {
                        if (O < 32) {
                            G += l(Q, A, J) + S[1]
                        } else {
                            if (O < 48) {
                                G += m(Q, A, J) + S[2]
                            } else {
                                if (O < 64) {
                                    G += o(Q, A, J) + S[3]
                                } else {
                                    G += q(Q, A, J) + S[4]
                                }
                            }
                        }
                    }
                    G = G | 0;
                    G = i(G, L[O]);
                    G = (G + R) | 0;
                    I = R;
                    R = J;
                    J = i(A, 10);
                    A = Q;
                    Q = G
                }
                G = (F[1] + E + J) | 0;
                F[1] = (F[2] + N + R) | 0;
                F[2] = (F[3] + v + I) | 0;
                F[3] = (F[4] + K + Q) | 0;
                F[4] = (F[0] + u + A) | 0;
                F[0] = G
            },
            _doFinalize: function() {
                var z = this._data;
                var B = z.words;
                var u = this._nDataBytes * 8;
                var y = z.sigBytes * 8;
                B[y >>> 5] |= 128 << (24 - y % 32);
                B[(((y + 64) >>> 9) << 4) + 14] = ((((u << 8) | (u >>> 24)) & 16711935) | (((u << 24) | (u >>> 8)) & 4278255360));
                z.sigBytes = (B.length + 1) * 4;
                this._process();
                var A = this._hash;
                var w = A.words;
                for (var v = 0; v < 5; v++) {
                    var x = w[v];
                    w[v] = (((x << 8) | (x >>> 24)) & 16711935) | (((x << 24) | (x >>> 8)) & 4278255360)
                }
                return A
            },
            clone: function() {
                var u = d.clone.call(this);
                u._hash = this._hash.clone();
                return u
            }
        });
        function q(u, w, v) {
            return ((u) ^ (w) ^ (v))
        }
        function o(u, w, v) {
            return (((u) & (w)) | ((~u) & (v)))
        }
        function m(u, w, v) {
            return (((u) | (~ (w))) ^ (v))
        }
        function l(u, w, v) {
            return (((u) & (v)) | ((w) & (~ (v))))
        }
        function k(u, w, v) {
            return ((u) ^ ((w) | (~ (v))))
        }
        function i(u, v) {
            return (u << v) | (u >>> (32 - v))
        }
        j.RIPEMD160 = d._createHelper(c);
        j.HmacRIPEMD160 = d._createHmacHelper(c)
    } (Math)); (function() {
        var h = a;
        var e = h.lib;
        var d = e.Base;
        var g = h.enc;
        var c = g.Utf8;
        var f = h.algo;
        var b = f.HMAC = d.extend({
            init: function(r, o) {
                r = this._hasher = new r.init();
                if (typeof o == "string") {
                    o = c.parse(o)
                }
                var l = r.blockSize;
                var j = l * 4;
                if (o.sigBytes > j) {
                    o = r.finalize(o)
                }
                o.clamp();
                var q = this._oKey = o.clone();
                var n = this._iKey = o.clone();
                var p = q.words;
                var k = n.words;
                for (var m = 0; m < l; m++) {
                    p[m] ^= 1549556828;
                    k[m] ^= 909522486
                }
                q.sigBytes = n.sigBytes = j;
                this.reset()
            },
            reset: function() {
                var i = this._hasher;
                i.reset();
                i.update(this._iKey)
            },
            update: function(i) {
                this._hasher.update(i);
                return this
            },
            finalize: function(i) {
                var j = this._hasher;
                var l = j.finalize(i);
                j.reset();
                var k = j.finalize(this._oKey.clone().concat(l));
                return k
            }
        })
    } ()); (function() {
        var i = a;
        var e = i.lib;
        var c = e.Base;
        var g = e.WordArray;
        var f = i.algo;
        var d = f.SHA1;
        var b = f.HMAC;
        var h = f.PBKDF2 = c.extend({
            cfg: c.extend({
                keySize: 128 / 32,
                hasher: d,
                iterations: 1
            }),
            init: function(j) {
                this.cfg = this.cfg.extend(j)
            },
            compute: function(z, s) {
                var v = this.cfg;
                var t = b.create(v.hasher, z);
                var u = g.create();
                var A = g.create([1]);
                var x = u.words;
                var m = A.words;
                var w = v.keySize;
                var l = v.iterations;
                while (x.length < w) {
                    var n = t.update(s).finalize(A);
                    t.reset();
                    var k = n.words;
                    var y = k.length;
                    var p = n;
                    for (var r = 1; r < l; r++) {
                        p = t.finalize(p);
                        t.reset();
                        var q = p.words;
                        for (var o = 0; o < y; o++) {
                            k[o] ^= q[o]
                        }
                    }
                    u.concat(n);
                    m[0]++
                }
                u.sigBytes = w * 4;
                return u
            }
        });
        i.PBKDF2 = function(k, l, j) {
            return h.create(j).compute(k, l)
        }
    } ()); (function() {
        var h = a;
        var e = h.lib;
        var c = e.Base;
        var g = e.WordArray;
        var f = h.algo;
        var d = f.MD5;
        var b = f.EvpKDF = c.extend({
            cfg: c.extend({
                keySize: 128 / 32,
                hasher: d,
                iterations: 1
            }),
            init: function(i) {
                this.cfg = this.cfg.extend(i)
            },
            compute: function(r, m) {
                var o = this.cfg;
                var s = o.hasher.create();
                var n = g.create();
                var q = n.words;
                var p = o.keySize;
                var j = o.iterations;
                while (q.length < p) {
                    if (k) {
                        s.update(k)
                    }
                    var k = s.update(r).finalize(m);
                    s.reset();
                    for (var l = 1; l < j; l++) {
                        k = s.finalize(k);
                        s.reset()
                    }
                    n.concat(k)
                }
                n.sigBytes = p * 4;
                return n
            }
        });
        h.EvpKDF = function(j, k, i) {
            return b.create(i).compute(j, k)
        }
    } ()); (function() {
        var g = a;
        var c = g.lib;
        var f = c.WordArray;
        var d = g.algo;
        var e = d.SHA256;
        var b = d.SHA224 = e.extend({
            _doReset: function() {
                this._hash = new f.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428])
            },
            _doFinalize: function() {
                var h = e._doFinalize.call(this);
                h.sigBytes -= 4;
                return h
            }
        });
        g.SHA224 = e._createHelper(b);
        g.HmacSHA224 = e._createHmacHelper(b)
    } ()); (function(i) {
        var h = a;
        var d = h.lib;
        var c = d.Base;
        var g = d.WordArray;
        var b = h.x64 = {};
        var e = b.Word = c.extend({
            init: function(k, j) {
                this.high = k;
                this.low = j
            }
        });
        var f = b.WordArray = c.extend({
            init: function(k, j) {
                k = this.words = k || [];
                if (j != i) {
                    this.sigBytes = j
                } else {
                    this.sigBytes = k.length * 8
                }
            },
            toX32: function() {
                var l = this.words;
                var k = l.length;
                var n = [];
                for (var j = 0; j < k; j++) {
                    var m = l[j];
                    n.push(m.high);
                    n.push(m.low)
                }
                return g.create(n, this.sigBytes)
            },
            clone: function() {
                var m = c.clone.call(this);
                var l = m.words = this.words.slice(0);
                var k = l.length;
                for (var j = 0; j < k; j++) {
                    l[j] = l[j].clone()
                }
                return m
            }
        })
    } ()); (function(e) {
        var c = a;
        var d = c.lib;
        var m = d.WordArray;
        var h = d.Hasher;
        var j = c.x64;
        var g = j.Word;
        var n = c.algo;
        var b = [];
        var k = [];
        var l = []; (function() {
            var v = 1,
            u = 0;
            for (var z = 0; z < 24; z++) {
                b[v + 5 * u] = ((z + 1) * (z + 2) / 2) % 64;
                var o = u % 5;
                var B = (2 * v + 3 * u) % 5;
                v = o;
                u = B
            }
            for (var v = 0; v < 5; v++) {
                for (var u = 0; u < 5; u++) {
                    k[v + 5 * u] = u + ((2 * v + 3 * u) % 5) * 5
                }
            }
            var A = 1;
            for (var r = 0; r < 24; r++) {
                var s = 0;
                var p = 0;
                for (var q = 0; q < 7; q++) {
                    if (A & 1) {
                        var w = (1 << q) - 1;
                        if (w < 32) {
                            p ^= 1 << w
                        } else {
                            s ^= 1 << (w - 32)
                        }
                    }
                    if (A & 128) {
                        A = (A << 1) ^ 113
                    } else {
                        A <<= 1
                    }
                }
                l[r] = g.create(s, p)
            }
        } ());
        var i = []; (function() {
            for (var o = 0; o < 25; o++) {
                i[o] = g.create()
            }
        } ());
        var f = n.SHA3 = h.extend({
            cfg: h.cfg.extend({
                outputLength: 512
            }),
            _doReset: function() {
                var p = this._state = [];
                for (var o = 0; o < 25; o++) {
                    p[o] = new g.init()
                }
                this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32
            },
            _doProcessBlock: function(D, z) {
                var w = this._state;
                var r = this.blockSize / 2;
                for (var O = 0; O < r; O++) {
                    var E = D[z + 2 * O];
                    var Q = D[z + 2 * O + 1];
                    E = ((((E << 8) | (E >>> 24)) & 16711935) | (((E << 24) | (E >>> 8)) & 4278255360));
                    Q = ((((Q << 8) | (Q >>> 24)) & 16711935) | (((Q << 24) | (Q >>> 8)) & 4278255360));
                    var q = w[O];
                    q.high ^= Q;
                    q.low ^= E
                }
                for (var R = 0; R < 24; R++) {
                    for (var H = 0; H < 5; H++) {
                        var J = 0,
                        S = 0;
                        for (var G = 0; G < 5; G++) {
                            var q = w[H + 5 * G];
                            J ^= q.high;
                            S ^= q.low
                        }
                        var p = i[H];
                        p.high = J;
                        p.low = S
                    }
                    for (var H = 0; H < 5; H++) {
                        var v = i[(H + 4) % 5];
                        var A = i[(H + 1) % 5];
                        var N = A.high;
                        var t = A.low;
                        var J = v.high ^ ((N << 1) | (t >>> 31));
                        var S = v.low ^ ((t << 1) | (N >>> 31));
                        for (var G = 0; G < 5; G++) {
                            var q = w[H + 5 * G];
                            q.high ^= J;
                            q.low ^= S
                        }
                    }
                    for (var u = 1; u < 25; u++) {
                        var q = w[u];
                        var o = q.high;
                        var I = q.low;
                        var P = b[u];
                        if (P < 32) {
                            var J = (o << P) | (I >>> (32 - P));
                            var S = (I << P) | (o >>> (32 - P))
                        } else {
                            var J = (I << (P - 32)) | (o >>> (64 - P));
                            var S = (o << (P - 32)) | (I >>> (64 - P))
                        }
                        var C = i[k[u]];
                        C.high = J;
                        C.low = S
                    }
                    var K = i[0];
                    var L = w[0];
                    K.high = L.high;
                    K.low = L.low;
                    for (var H = 0; H < 5; H++) {
                        for (var G = 0; G < 5; G++) {
                            var u = H + 5 * G;
                            var q = w[u];
                            var s = i[u];
                            var B = i[((H + 1) % 5) + 5 * G];
                            var T = i[((H + 2) % 5) + 5 * G];
                            q.high = s.high ^ (~B.high & T.high);
                            q.low = s.low ^ (~B.low & T.low)
                        }
                    }
                    var q = w[0];
                    var F = l[R];
                    q.high ^= F.high;
                    q.low ^= F.low
                }
            },
            _doFinalize: function() {
                var t = this._data;
                var A = t.words;
                var w = this._nDataBytes * 8;
                var x = t.sigBytes * 8;
                var z = this.blockSize * 32;
                A[x >>> 5] |= 1 << (24 - x % 32);
                A[((e.ceil((x + 1) / z) * z) >>> 5) - 1] |= 128;
                t.sigBytes = A.length * 4;
                this._process();
                var o = this._state;
                var q = this.cfg.outputLength / 8;
                var u = q / 8;
                var s = [];
                for (var r = 0; r < u; r++) {
                    var p = o[r];
                    var y = p.high;
                    var v = p.low;
                    y = ((((y << 8) | (y >>> 24)) & 16711935) | (((y << 24) | (y >>> 8)) & 4278255360));
                    v = ((((v << 8) | (v >>> 24)) & 16711935) | (((v << 24) | (v >>> 8)) & 4278255360));
                    s.push(v);
                    s.push(y)
                }
                return new m.init(s, q)
            },
            clone: function() {
                var q = h.clone.call(this);
                var p = q._state = this._state.slice(0);
                for (var o = 0; o < 25; o++) {
                    p[o] = p[o].clone()
                }
                return q
            }
        });
        c.SHA3 = h._createHelper(f);
        c.HmacSHA3 = h._createHmacHelper(f)
    } (Math)); (function() {
        var b = a;
        var c = b.lib;
        var f = c.Hasher;
        var g = b.x64;
        var e = g.Word;
        var k = g.WordArray;
        var j = b.algo;
        function h() {
            return e.create.apply(e, arguments)
        }
        var l = [h(1116352408, 3609767458), h(1899447441, 602891725), h(3049323471, 3964484399), h(3921009573, 2173295548), h(961987163, 4081628472), h(1508970993, 3053834265), h(2453635748, 2937671579), h(2870763221, 3664609560), h(3624381080, 2734883394), h(310598401, 1164996542), h(607225278, 1323610764), h(1426881987, 3590304994), h(1925078388, 4068182383), h(2162078206, 991336113), h(2614888103, 633803317), h(3248222580, 3479774868), h(3835390401, 2666613458), h(4022224774, 944711139), h(264347078, 2341262773), h(604807628, 2007800933), h(770255983, 1495990901), h(1249150122, 1856431235), h(1555081692, 3175218132), h(1996064986, 2198950837), h(2554220882, 3999719339), h(2821834349, 766784016), h(2952996808, 2566594879), h(3210313671, 3203337956), h(3336571891, 1034457026), h(3584528711, 2466948901), h(113926993, 3758326383), h(338241895, 168717936), h(666307205, 1188179964), h(773529912, 1546045734), h(1294757372, 1522805485), h(1396182291, 2643833823), h(1695183700, 2343527390), h(1986661051, 1014477480), h(2177026350, 1206759142), h(2456956037, 344077627), h(2730485921, 1290863460), h(2820302411, 3158454273), h(3259730800, 3505952657), h(3345764771, 106217008), h(3516065817, 3606008344), h(3600352804, 1432725776), h(4094571909, 1467031594), h(275423344, 851169720), h(430227734, 3100823752), h(506948616, 1363258195), h(659060556, 3750685593), h(883997877, 3785050280), h(958139571, 3318307427), h(1322822218, 3812723403), h(1537002063, 2003034995), h(1747873779, 3602036899), h(1955562222, 1575990012), h(2024104815, 1125592928), h(2227730452, 2716904306), h(2361852424, 442776044), h(2428436474, 593698344), h(2756734187, 3733110249), h(3204031479, 2999351573), h(3329325298, 3815920427), h(3391569614, 3928383900), h(3515267271, 566280711), h(3940187606, 3454069534), h(4118630271, 4000239992), h(116418474, 1914138554), h(174292421, 2731055270), h(289380356, 3203993006), h(460393269, 320620315), h(685471733, 587496836), h(852142971, 1086792851), h(1017036298, 365543100), h(1126000580, 2618297676), h(1288033470, 3409855158), h(1501505948, 4234509866), h(1607167915, 987167468), h(1816402316, 1246189591)];
        var d = []; (function() {
            for (var m = 0; m < 80; m++) {
                d[m] = h()
            }
        } ());
        var i = j.SHA512 = f.extend({
            _doReset: function() {
                this._hash = new k.init([new e.init(1779033703, 4089235720), new e.init(3144134277, 2227873595), new e.init(1013904242, 4271175723), new e.init(2773480762, 1595750129), new e.init(1359893119, 2917565137), new e.init(2600822924, 725511199), new e.init(528734635, 4215389547), new e.init(1541459225, 327033209)])
            },
            _doProcessBlock: function(ap, D) {
                var aq = this._hash.words;
                var z = aq[0];
                var w = aq[1];
                var u = aq[2];
                var t = aq[3];
                var r = aq[4];
                var p = aq[5];
                var n = aq[6];
                var m = aq[7];
                var U = z.high;
                var S = z.low;
                var L = w.high;
                var J = w.low;
                var B = u.high;
                var y = u.low;
                var aN = t.high;
                var aL = t.low;
                var aF = r.high;
                var aC = r.low;
                var ao = p.high;
                var am = p.low;
                var W = n.high;
                var V = n.low;
                var O = m.high;
                var N = m.low;
                var az = U;
                var aw = S;
                var ai = L;
                var af = J;
                var T = B;
                var R = y;
                var K = aN;
                var I = aL;
                var A = aF;
                var s = aC;
                var aM = ao;
                var aK = am;
                var aD = W;
                var aA = V;
                var an = O;
                var aj = N;
                for (var Y = 0; Y < 80; Y++) {
                    var Q = d[Y];
                    if (Y < 16) {
                        var av = Q.high = ap[D + Y * 2] | 0;
                        var at = Q.low = ap[D + Y * 2 + 1] | 0
                    } else {
                        var ar = d[Y - 15];
                        var G = ar.high;
                        var F = ar.low;
                        var aB = ((G >>> 1) | (F << 31)) ^ ((G >>> 8) | (F << 24)) ^ (G >>> 7);
                        var ay = ((F >>> 1) | (G << 31)) ^ ((F >>> 8) | (G << 24)) ^ ((F >>> 7) | (G << 25));
                        var ab = d[Y - 2];
                        var E = ab.high;
                        var C = ab.low;
                        var ak = ((E >>> 19) | (C << 13)) ^ ((E << 3) | (C >>> 29)) ^ (E >>> 6);
                        var ag = ((C >>> 19) | (E << 13)) ^ ((C << 3) | (E >>> 29)) ^ ((C >>> 6) | (E << 26));
                        var aO = d[Y - 7];
                        var ae = aO.high;
                        var ac = aO.low;
                        var aE = d[Y - 16];
                        var ad = aE.high;
                        var aa = aE.low;
                        var at = ay + ac;
                        var av = aB + ae + ((at >>> 0) < (ay >>> 0) ? 1 : 0);
                        var at = at + ag;
                        var av = av + ak + ((at >>> 0) < (ag >>> 0) ? 1 : 0);
                        var at = at + aa;
                        var av = av + ad + ((at >>> 0) < (aa >>> 0) ? 1 : 0);
                        Q.high = av;
                        Q.low = at
                    }
                    var Z = (A & aM) ^ (~A & aD);
                    var X = (s & aK) ^ (~s & aA);
                    var x = (az & ai) ^ (az & T) ^ (ai & T);
                    var q = (aw & af) ^ (aw & R) ^ (af & R);
                    var aQ = ((az >>> 28) | (aw << 4)) ^ ((az << 30) | (aw >>> 2)) ^ ((az << 25) | (aw >>> 7));
                    var aP = ((aw >>> 28) | (az << 4)) ^ ((aw << 30) | (az >>> 2)) ^ ((aw << 25) | (az >>> 7));
                    var aH = ((A >>> 14) | (s << 18)) ^ ((A >>> 18) | (s << 14)) ^ ((A << 23) | (s >>> 9));
                    var aG = ((s >>> 14) | (A << 18)) ^ ((s >>> 18) | (A << 14)) ^ ((s << 23) | (A >>> 9));
                    var P = l[Y];
                    var v = P.high;
                    var o = P.low;
                    var aI = aj + aG;
                    var aJ = an + aH + ((aI >>> 0) < (aj >>> 0) ? 1 : 0);
                    var aI = aI + X;
                    var aJ = aJ + Z + ((aI >>> 0) < (X >>> 0) ? 1 : 0);
                    var aI = aI + o;
                    var aJ = aJ + v + ((aI >>> 0) < (o >>> 0) ? 1 : 0);
                    var aI = aI + at;
                    var aJ = aJ + av + ((aI >>> 0) < (at >>> 0) ? 1 : 0);
                    var au = aP + q;
                    var ax = aQ + x + ((au >>> 0) < (aP >>> 0) ? 1 : 0);
                    an = aD;
                    aj = aA;
                    aD = aM;
                    aA = aK;
                    aM = A;
                    aK = s;
                    s = (I + aI) | 0;
                    A = (K + aJ + ((s >>> 0) < (I >>> 0) ? 1 : 0)) | 0;
                    K = T;
                    I = R;
                    T = ai;
                    R = af;
                    ai = az;
                    af = aw;
                    aw = (aI + au) | 0;
                    az = (aJ + ax + ((aw >>> 0) < (aI >>> 0) ? 1 : 0)) | 0
                }
                S = z.low = (S + aw);
                z.high = (U + az + ((S >>> 0) < (aw >>> 0) ? 1 : 0));
                J = w.low = (J + af);
                w.high = (L + ai + ((J >>> 0) < (af >>> 0) ? 1 : 0));
                y = u.low = (y + R);
                u.high = (B + T + ((y >>> 0) < (R >>> 0) ? 1 : 0));
                aL = t.low = (aL + I);
                t.high = (aN + K + ((aL >>> 0) < (I >>> 0) ? 1 : 0));
                aC = r.low = (aC + s);
                r.high = (aF + A + ((aC >>> 0) < (s >>> 0) ? 1 : 0));
                am = p.low = (am + aK);
                p.high = (ao + aM + ((am >>> 0) < (aK >>> 0) ? 1 : 0));
                V = n.low = (V + aA);
                n.high = (W + aD + ((V >>> 0) < (aA >>> 0) ? 1 : 0));
                N = m.low = (N + aj);
                m.high = (O + an + ((N >>> 0) < (aj >>> 0) ? 1 : 0))
            },
            _doFinalize: function() {
                var o = this._data;
                var q = o.words;
                var m = this._nDataBytes * 8;
                var n = o.sigBytes * 8;
                q[n >>> 5] |= 128 << (24 - n % 32);
                q[(((n + 128) >>> 10) << 5) + 30] = Math.floor(m / 4294967296);
                q[(((n + 128) >>> 10) << 5) + 31] = m;
                o.sigBytes = q.length * 4;
                this._process();
                var p = this._hash.toX32();
                return p
            },
            clone: function() {
                var m = f.clone.call(this);
                m._hash = this._hash.clone();
                return m
            },
            blockSize: 1024 / 32
        });
        b.SHA512 = f._createHelper(i);
        b.HmacSHA512 = f._createHmacHelper(i)
    } ()); (function() {
        var h = a;
        var c = h.x64;
        var f = c.Word;
        var g = c.WordArray;
        var e = h.algo;
        var d = e.SHA512;
        var b = e.SHA384 = d.extend({
            _doReset: function() {
                this._hash = new g.init([new f.init(3418070365, 3238371032), new f.init(1654270250, 914150663), new f.init(2438529370, 812702999), new f.init(355462360, 4144912697), new f.init(1731405415, 4290775857), new f.init(2394180231, 1750603025), new f.init(3675008525, 1694076839), new f.init(1203062813, 3204075428)])
            },
            _doFinalize: function() {
                var i = d._doFinalize.call(this);
                i.sigBytes -= 16;
                return i
            }
        });
        h.SHA384 = d._createHelper(b);
        h.HmacSHA384 = d._createHmacHelper(b)
    } ());
    a.lib.Cipher || (function(e) {
        var n = a;
        var x = n.lib;
        var j = x.Base;
        var u = x.WordArray;
        var w = x.BufferedBlockAlgorithm;
        var s = n.enc;
        var g = s.Utf8;
        var m = s.Base64;
        var c = n.algo;
        var i = c.EvpKDF;
        var k = x.Cipher = w.extend({
            cfg: j.extend(),
            createEncryptor: function(C, B) {
                return this.create(this._ENC_XFORM_MODE, C, B)
            },
            createDecryptor: function(C, B) {
                return this.create(this._DEC_XFORM_MODE, C, B)
            },
            init: function(D, C, B) {
                this.cfg = this.cfg.extend(B);
                this._xformMode = D;
                this._key = C;
                this.reset()
            },
            reset: function() {
                w.reset.call(this);
                this._doReset()
            },
            process: function(B) {
                this._append(B);
                return this._process()
            },
            finalize: function(C) {
                if (C) {
                    this._append(C)
                }
                var B = this._doFinalize();
                return B
            },
            keySize: 128 / 32,
            ivSize: 128 / 32,
            _ENC_XFORM_MODE: 1,
            _DEC_XFORM_MODE: 2,
            _createHelper: (function() {
                function B(C) {
                    if (typeof C == "string") {
                        return h
                    } else {
                        return A
                    }
                }
                return function(C) {
                    return {
                        encrypt: function(F, E, D) {
                            return B(E).encrypt(C, F, E, D)
                        },
                        decrypt: function(F, E, D) {
                            return B(E).decrypt(C, F, E, D)
                        }
                    }
                }
            } ())
        });
        var q = x.StreamCipher = k.extend({
            _doFinalize: function() {
                var B = this._process( !! "flush");
                return B
            },
            blockSize: 1
        });
        var t = n.mode = {};
        var z = x.BlockCipherMode = j.extend({
            createEncryptor: function(B, C) {
                return this.Encryptor.create(B, C)
            },
            createDecryptor: function(B, C) {
                return this.Decryptor.create(B, C)
            },
            init: function(B, C) {
                this._cipher = B;
                this._iv = C
            }
        });
        var d = t.CBC = (function() {
            var B = z.extend();
            B.Encryptor = B.extend({
                processBlock: function(G, F) {
                    var D = this._cipher;
                    var E = D.blockSize;
                    C.call(this, G, F, E);
                    D.encryptBlock(G, F);
                    this._prevBlock = G.slice(F, F + E)
                }
            });
            B.Decryptor = B.extend({
                processBlock: function(H, G) {
                    var D = this._cipher;
                    var F = D.blockSize;
                    var E = H.slice(G, G + F);
                    D.decryptBlock(H, G);
                    C.call(this, H, G, F);
                    this._prevBlock = E
                }
            });
            function C(I, H, F) {
                var D = this._iv;
                if (D) {
                    var G = D;
                    this._iv = e
                } else {
                    var G = this._prevBlock
                }
                for (var E = 0; E < F; E++) {
                    I[H + E] ^= G[E]
                }
            }
            return B
        } ());
        var f = n.pad = {};
        var b = f.Pkcs7 = {
            pad: function(G, E) {
                var F = E * 4;
                var I = F - G.sigBytes % F;
                var B = (I << 24) | (I << 16) | (I << 8) | I;
                var D = [];
                for (var C = 0; C < I; C += 4) {
                    D.push(B)
                }
                var H = u.create(D, I);
                G.concat(H)
            },
            unpad: function(B) {
                var C = B.words[(B.sigBytes - 1) >>> 2] & 255;
                B.sigBytes -= C
            }
        };
        var r = x.BlockCipher = k.extend({
            cfg: k.cfg.extend({
                mode: d,
                padding: b
            }),
            reset: function() {
                k.reset.call(this);
                var B = this.cfg;
                var C = B.iv;
                var E = B.mode;
                if (this._xformMode == this._ENC_XFORM_MODE) {
                    var D = E.createEncryptor
                } else {
                    var D = E.createDecryptor;
                    this._minBufferSize = 1
                }
                if (this._mode && this._mode.__creator == D) {
                    this._mode.init(this, C && C.words)
                } else {
                    this._mode = D.call(E, this, C && C.words);
                    this._mode.__creator = D
                }
            },
            _doProcessBlock: function(C, B) {
                this._mode.processBlock(C, B)
            },
            _doFinalize: function() {
                var C = this.cfg.padding;
                if (this._xformMode == this._ENC_XFORM_MODE) {
                    C.pad(this._data, this.blockSize);
                    var B = this._process( !! "flush")
                } else {
                    var B = this._process( !! "flush");
                    C.unpad(B)
                }
                return B
            },
            blockSize: 128 / 32
        });
        var p = x.CipherParams = j.extend({
            init: function(B) {
                this.mixIn(B)
            },
            toString: function(B) {
                return (B || this.formatter).stringify(this)
            }
        });
        var o = n.format = {};
        var v = o.OpenSSL = {
            stringify: function(B) {
                var E = B.ciphertext;
                var C = B.salt;
                if (C) {
                    var D = u.create([1398893684, 1701076831]).concat(C).concat(E)
                } else {
                    var D = E
                }
                return D.toString(m)
            },
            parse: function(D) {
                var C = m.parse(D);
                var E = C.words;
                if (E[0] == 1398893684 && E[1] == 1701076831) {
                    var B = u.create(E.slice(2, 4));
                    E.splice(0, 4);
                    C.sigBytes -= 16
                }
                return p.create({
                    ciphertext: C,
                    salt: B
                })
            }
        };
        var A = x.SerializableCipher = j.extend({
            cfg: j.extend({
                format: v
            }),
            encrypt: function(B, G, E, C) {
                C = this.cfg.extend(C);
                var D = B.createEncryptor(E, C);
                var H = D.finalize(G);
                var F = D.cfg;
                return p.create({
                    ciphertext: H,
                    key: E,
                    iv: F.iv,
                    algorithm: B,
                    mode: F.mode,
                    padding: F.padding,
                    blockSize: B.blockSize,
                    formatter: C.format
                })
            },
            decrypt: function(B, F, D, C) {
                C = this.cfg.extend(C);
                F = this._parse(F, C.format);
                var E = B.createDecryptor(D, C).finalize(F.ciphertext);
                return E
            },
            _parse: function(B, C) {
                if (typeof B == "string") {
                    return C.parse(B, this)
                } else {
                    return B
                }
            }
        });
        var l = n.kdf = {};
        var y = l.OpenSSL = {
            execute: function(D, G, B, F) {
                if (!F) {
                    F = u.random(64 / 8)
                }
                var E = i.create({
                    keySize: G + B
                }).compute(D, F);
                var C = u.create(E.words.slice(G), B * 4);
                E.sigBytes = G * 4;
                return p.create({
                    key: E,
                    iv: C,
                    salt: F
                })
            }
        };
        var h = x.PasswordBasedCipher = A.extend({
            cfg: A.cfg.extend({
                kdf: y
            }),
            encrypt: function(B, E, D, C) {
                C = this.cfg.extend(C);
                var G = C.kdf.execute(D, B.keySize, B.ivSize);
                C.iv = G.iv;
                var F = A.encrypt.call(this, B, E, G.key, C);
                F.mixIn(G);
                return F
            },
            decrypt: function(B, F, D, C) {
                C = this.cfg.extend(C);
                F = this._parse(F, C.format);
                var G = C.kdf.execute(D, B.keySize, B.ivSize, F.salt);
                C.iv = G.iv;
                var E = A.decrypt.call(this, B, F, G.key, C);
                return E
            }
        })
    } ());
    a.mode.CFB = (function() {
        var c = a.lib.BlockCipherMode.extend();
        c.Encryptor = c.extend({
            processBlock: function(g, f) {
                var d = this._cipher;
                var e = d.blockSize;
                b.call(this, g, f, e, d);
                this._prevBlock = g.slice(f, f + e)
            }
        });
        c.Decryptor = c.extend({
            processBlock: function(h, g) {
                var d = this._cipher;
                var f = d.blockSize;
                var e = h.slice(g, g + f);
                b.call(this, h, g, f, d);
                this._prevBlock = e
            }
        });
        function b(k, j, g, d) {
            var e = this._iv;
            if (e) {
                var h = e.slice(0);
                this._iv = undefined
            } else {
                var h = this._prevBlock
            }
            d.encryptBlock(h, 0);
            for (var f = 0; f < g; f++) {
                k[j + f] ^= h[f]
            }
        }
        return c
    } ());
    a.mode.ECB = (function() {
        var b = a.lib.BlockCipherMode.extend();
        b.Encryptor = b.extend({
            processBlock: function(d, c) {
                this._cipher.encryptBlock(d, c)
            }
        });
        b.Decryptor = b.extend({
            processBlock: function(d, c) {
                this._cipher.decryptBlock(d, c)
            }
        });
        return b
    } ());
    a.pad.AnsiX923 = {
        pad: function(e, c) {
            var g = e.sigBytes;
            var d = c * 4;
            var f = d - g % d;
            var b = g + f - 1;
            e.clamp();
            e.words[b >>> 2] |= f << (24 - (b % 4) * 8);
            e.sigBytes += f
        },
        unpad: function(b) {
            var c = b.words[(b.sigBytes - 1) >>> 2] & 255;
            b.sigBytes -= c
        }
    };
    a.pad.Iso10126 = {
        pad: function(d, b) {
            var c = b * 4;
            var e = c - d.sigBytes % c;
            d.concat(a.lib.WordArray.random(e - 1)).concat(a.lib.WordArray.create([e << 24], 1))
        },
        unpad: function(b) {
            var c = b.words[(b.sigBytes - 1) >>> 2] & 255;
            b.sigBytes -= c
        }
    };
    a.pad.Iso97971 = {
        pad: function(c, b) {
            c.concat(a.lib.WordArray.create([2147483648], 1));
            a.pad.ZeroPadding.pad(c, b)
        },
        unpad: function(b) {
            a.pad.ZeroPadding.unpad(b);
            b.sigBytes--
        }
    };
    a.mode.OFB = (function() {
        var c = a.lib.BlockCipherMode.extend();
        var b = c.Encryptor = c.extend({
            processBlock: function(k, j) {
                var d = this._cipher;
                var g = d.blockSize;
                var e = this._iv;
                var h = this._keystream;
                if (e) {
                    h = this._keystream = e.slice(0);
                    this._iv = undefined
                }
                d.encryptBlock(h, 0);
                for (var f = 0; f < g; f++) {
                    k[j + f] ^= h[f]
                }
            }
        });
        c.Decryptor = b;
        return c
    } ());
    a.pad.NoPadding = {
        pad: function() {},
        unpad: function() {}
    }; (function(h) {
        var g = a;
        var d = g.lib;
        var c = d.CipherParams;
        var f = g.enc;
        var b = f.Hex;
        var i = g.format;
        var e = i.Hex = {
            stringify: function(j) {
                return j.ciphertext.toString(b)
            },
            parse: function(j) {
                var k = b.parse(j);
                return c.create({
                    ciphertext: k
                })
            }
        }
    } ()); (function() {
        var b = a;
        var c = b.lib;
        var q = c.BlockCipher;
        var l = b.algo;
        var e = [];
        var m = [];
        var p = [];
        var o = [];
        var n = [];
        var k = [];
        var j = [];
        var i = [];
        var h = [];
        var g = []; (function() {
            var u = [];
            for (var s = 0; s < 256; s++) {
                if (s < 128) {
                    u[s] = s << 1
                } else {
                    u[s] = (s << 1) ^ 283
                }
            }
            var y = 0;
            var v = 0;
            for (var s = 0; s < 256; s++) {
                var w = v ^ (v << 1) ^ (v << 2) ^ (v << 3) ^ (v << 4);
                w = (w >>> 8) ^ (w & 255) ^ 99;
                e[y] = w;
                m[w] = y;
                var r = u[y];
                var B = u[r];
                var z = u[B];
                var A = (u[w] * 257) ^ (w * 16843008);
                p[y] = (A << 24) | (A >>> 8);
                o[y] = (A << 16) | (A >>> 16);
                n[y] = (A << 8) | (A >>> 24);
                k[y] = A;
                var A = (z * 16843009) ^ (B * 65537) ^ (r * 257) ^ (y * 16843008);
                j[w] = (A << 24) | (A >>> 8);
                i[w] = (A << 16) | (A >>> 16);
                h[w] = (A << 8) | (A >>> 24);
                g[w] = A;
                if (!y) {
                    y = v = 1
                } else {
                    y = r ^ u[u[u[z ^ r]]];
                    v ^= u[u[v]]
                }
            }
        } ());
        var d = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
        var f = l.AES = q.extend({
            _doReset: function() {
                if (this._nRounds && this._keyPriorReset === this._key) {
                    return
                }
                var A = this._keyPriorReset = this._key;
                var s = A.words;
                var z = A.sigBytes / 4;
                var y = this._nRounds = z + 6;
                var r = (y + 1) * 4;
                var u = this._keySchedule = [];
                for (var x = 0; x < r; x++) {
                    if (x < z) {
                        u[x] = s[x]
                    } else {
                        var B = u[x - 1];
                        if (! (x % z)) {
                            B = (B << 8) | (B >>> 24);
                            B = (e[B >>> 24] << 24) | (e[(B >>> 16) & 255] << 16) | (e[(B >>> 8) & 255] << 8) | e[B & 255];
                            B ^= d[(x / z) | 0] << 24
                        } else {
                            if (z > 6 && x % z == 4) {
                                B = (e[B >>> 24] << 24) | (e[(B >>> 16) & 255] << 16) | (e[(B >>> 8) & 255] << 8) | e[B & 255]
                            }
                        }
                        u[x] = u[x - z] ^ B
                    }
                }
                var v = this._invKeySchedule = [];
                for (var w = 0; w < r; w++) {
                    var x = r - w;
                    if (w % 4) {
                        var B = u[x]
                    } else {
                        var B = u[x - 4]
                    }
                    if (w < 4 || x <= 4) {
                        v[w] = B
                    } else {
                        v[w] = j[e[B >>> 24]] ^ i[e[(B >>> 16) & 255]] ^ h[e[(B >>> 8) & 255]] ^ g[e[B & 255]]
                    }
                }
            },
            encryptBlock: function(s, r) {
                this._doCryptBlock(s, r, this._keySchedule, p, o, n, k, e)
            },
            decryptBlock: function(u, s) {
                var r = u[s + 1];
                u[s + 1] = u[s + 3];
                u[s + 3] = r;
                this._doCryptBlock(u, s, this._invKeySchedule, j, i, h, g, m);
                var r = u[s + 1];
                u[s + 1] = u[s + 3];
                u[s + 3] = r
            },
            _doCryptBlock: function(A, z, I, w, u, s, r, H) {
                var F = this._nRounds;
                var y = A[z] ^ I[0];
                var x = A[z + 1] ^ I[1];
                var v = A[z + 2] ^ I[2];
                var t = A[z + 3] ^ I[3];
                var G = 4;
                for (var J = 1; J < F; J++) {
                    var E = w[y >>> 24] ^ u[(x >>> 16) & 255] ^ s[(v >>> 8) & 255] ^ r[t & 255] ^ I[G++];
                    var D = w[x >>> 24] ^ u[(v >>> 16) & 255] ^ s[(t >>> 8) & 255] ^ r[y & 255] ^ I[G++];
                    var C = w[v >>> 24] ^ u[(t >>> 16) & 255] ^ s[(y >>> 8) & 255] ^ r[x & 255] ^ I[G++];
                    var B = w[t >>> 24] ^ u[(y >>> 16) & 255] ^ s[(x >>> 8) & 255] ^ r[v & 255] ^ I[G++];
                    y = E;
                    x = D;
                    v = C;
                    t = B
                }
                var E = ((H[y >>> 24] << 24) | (H[(x >>> 16) & 255] << 16) | (H[(v >>> 8) & 255] << 8) | H[t & 255]) ^ I[G++];
                var D = ((H[x >>> 24] << 24) | (H[(v >>> 16) & 255] << 16) | (H[(t >>> 8) & 255] << 8) | H[y & 255]) ^ I[G++];
                var C = ((H[v >>> 24] << 24) | (H[(t >>> 16) & 255] << 16) | (H[(y >>> 8) & 255] << 8) | H[x & 255]) ^ I[G++];
                var B = ((H[t >>> 24] << 24) | (H[(y >>> 16) & 255] << 16) | (H[(x >>> 8) & 255] << 8) | H[v & 255]) ^ I[G++];
                A[z] = E;
                A[z + 1] = D;
                A[z + 2] = C;
                A[z + 3] = B
            },
            keySize: 256 / 32
        });
        b.AES = q._createHelper(f)
    } ()); (function() {
        var b = a;
        var c = b.lib;
        var i = c.WordArray;
        var n = c.BlockCipher;
        var j = b.algo;
        var o = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4];
        var m = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32];
        var l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
        var k = [{
            0 : 8421888,
            268435456 : 32768,
            536870912 : 8421378,
            805306368 : 2,
            1073741824 : 512,
            1342177280 : 8421890,
            1610612736 : 8389122,
            1879048192 : 8388608,
            2147483648 : 514,
            2415919104 : 8389120,
            2684354560 : 33280,
            2952790016 : 8421376,
            3221225472 : 32770,
            3489660928 : 8388610,
            3758096384 : 0,
            4026531840 : 33282,
            134217728 : 0,
            402653184 : 8421890,
            671088640 : 33282,
            939524096 : 32768,
            1207959552 : 8421888,
            1476395008 : 512,
            1744830464 : 8421378,
            2013265920 : 2,
            2281701376 : 8389120,
            2550136832 : 33280,
            2818572288 : 8421376,
            3087007744 : 8389122,
            3355443200 : 8388610,
            3623878656 : 32770,
            3892314112 : 514,
            4160749568 : 8388608,
            1 : 32768,
            268435457 : 2,
            536870913 : 8421888,
            805306369 : 8388608,
            1073741825 : 8421378,
            1342177281 : 33280,
            1610612737 : 512,
            1879048193 : 8389122,
            2147483649 : 8421890,
            2415919105 : 8421376,
            2684354561 : 8388610,
            2952790017 : 33282,
            3221225473 : 514,
            3489660929 : 8389120,
            3758096385 : 32770,
            4026531841 : 0,
            134217729 : 8421890,
            402653185 : 8421376,
            671088641 : 8388608,
            939524097 : 512,
            1207959553 : 32768,
            1476395009 : 8388610,
            1744830465 : 2,
            2013265921 : 33282,
            2281701377 : 32770,
            2550136833 : 8389122,
            2818572289 : 514,
            3087007745 : 8421888,
            3355443201 : 8389120,
            3623878657 : 0,
            3892314113 : 33280,
            4160749569 : 8421378
        },
        {
            0 : 1074282512,
            16777216 : 16384,
            33554432 : 524288,
            50331648 : 1074266128,
            67108864 : 1073741840,
            83886080 : 1074282496,
            100663296 : 1073758208,
            117440512 : 16,
            134217728 : 540672,
            150994944 : 1073758224,
            167772160 : 1073741824,
            184549376 : 540688,
            201326592 : 524304,
            218103808 : 0,
            234881024 : 16400,
            251658240 : 1074266112,
            8388608 : 1073758208,
            25165824 : 540688,
            41943040 : 16,
            58720256 : 1073758224,
            75497472 : 1074282512,
            92274688 : 1073741824,
            109051904 : 524288,
            125829120 : 1074266128,
            142606336 : 524304,
            159383552 : 0,
            176160768 : 16384,
            192937984 : 1074266112,
            209715200 : 1073741840,
            226492416 : 540672,
            243269632 : 1074282496,
            260046848 : 16400,
            268435456 : 0,
            285212672 : 1074266128,
            301989888 : 1073758224,
            318767104 : 1074282496,
            335544320 : 1074266112,
            352321536 : 16,
            369098752 : 540688,
            385875968 : 16384,
            402653184 : 16400,
            419430400 : 524288,
            436207616 : 524304,
            452984832 : 1073741840,
            469762048 : 540672,
            486539264 : 1073758208,
            503316480 : 1073741824,
            520093696 : 1074282512,
            276824064 : 540688,
            293601280 : 524288,
            310378496 : 1074266112,
            327155712 : 16384,
            343932928 : 1073758208,
            360710144 : 1074282512,
            377487360 : 16,
            394264576 : 1073741824,
            411041792 : 1074282496,
            427819008 : 1073741840,
            444596224 : 1073758224,
            461373440 : 524304,
            478150656 : 0,
            494927872 : 16400,
            511705088 : 1074266128,
            528482304 : 540672
        },
        {
            0 : 260,
            1048576 : 0,
            2097152 : 67109120,
            3145728 : 65796,
            4194304 : 65540,
            5242880 : 67108868,
            6291456 : 67174660,
            7340032 : 67174400,
            8388608 : 67108864,
            9437184 : 67174656,
            10485760 : 65792,
            11534336 : 67174404,
            12582912 : 67109124,
            13631488 : 65536,
            14680064 : 4,
            15728640 : 256,
            524288 : 67174656,
            1572864 : 67174404,
            2621440 : 0,
            3670016 : 67109120,
            4718592 : 67108868,
            5767168 : 65536,
            6815744 : 65540,
            7864320 : 260,
            8912896 : 4,
            9961472 : 256,
            11010048 : 67174400,
            12058624 : 65796,
            13107200 : 65792,
            14155776 : 67109124,
            15204352 : 67174660,
            16252928 : 67108864,
            16777216 : 67174656,
            17825792 : 65540,
            18874368 : 65536,
            19922944 : 67109120,
            20971520 : 256,
            22020096 : 67174660,
            23068672 : 67108868,
            24117248 : 0,
            25165824 : 67109124,
            26214400 : 67108864,
            27262976 : 4,
            28311552 : 65792,
            29360128 : 67174400,
            30408704 : 260,
            31457280 : 65796,
            32505856 : 67174404,
            17301504 : 67108864,
            18350080 : 260,
            19398656 : 67174656,
            20447232 : 0,
            21495808 : 65540,
            22544384 : 67109120,
            23592960 : 256,
            24641536 : 67174404,
            25690112 : 65536,
            26738688 : 67174660,
            27787264 : 65796,
            28835840 : 67108868,
            29884416 : 67109124,
            30932992 : 67174400,
            31981568 : 4,
            33030144 : 65792
        },
        {
            0 : 2151682048,
            65536 : 2147487808,
            131072 : 4198464,
            196608 : 2151677952,
            262144 : 0,
            327680 : 4198400,
            393216 : 2147483712,
            458752 : 4194368,
            524288 : 2147483648,
            589824 : 4194304,
            655360 : 64,
            720896 : 2147487744,
            786432 : 2151678016,
            851968 : 4160,
            917504 : 4096,
            983040 : 2151682112,
            32768 : 2147487808,
            98304 : 64,
            163840 : 2151678016,
            229376 : 2147487744,
            294912 : 4198400,
            360448 : 2151682112,
            425984 : 0,
            491520 : 2151677952,
            557056 : 4096,
            622592 : 2151682048,
            688128 : 4194304,
            753664 : 4160,
            819200 : 2147483648,
            884736 : 4194368,
            950272 : 4198464,
            1015808 : 2147483712,
            1048576 : 4194368,
            1114112 : 4198400,
            1179648 : 2147483712,
            1245184 : 0,
            1310720 : 4160,
            1376256 : 2151678016,
            1441792 : 2151682048,
            1507328 : 2147487808,
            1572864 : 2151682112,
            1638400 : 2147483648,
            1703936 : 2151677952,
            1769472 : 4198464,
            1835008 : 2147487744,
            1900544 : 4194304,
            1966080 : 64,
            2031616 : 4096,
            1081344 : 2151677952,
            1146880 : 2151682112,
            1212416 : 0,
            1277952 : 4198400,
            1343488 : 4194368,
            1409024 : 2147483648,
            1474560 : 2147487808,
            1540096 : 64,
            1605632 : 2147483712,
            1671168 : 4096,
            1736704 : 2147487744,
            1802240 : 2151678016,
            1867776 : 4160,
            1933312 : 2151682048,
            1998848 : 4194304,
            2064384 : 4198464
        },
        {
            0 : 128,
            4096 : 17039360,
            8192 : 262144,
            12288 : 536870912,
            16384 : 537133184,
            20480 : 16777344,
            24576 : 553648256,
            28672 : 262272,
            32768 : 16777216,
            36864 : 537133056,
            40960 : 536871040,
            45056 : 553910400,
            49152 : 553910272,
            53248 : 0,
            57344 : 17039488,
            61440 : 553648128,
            2048 : 17039488,
            6144 : 553648256,
            10240 : 128,
            14336 : 17039360,
            18432 : 262144,
            22528 : 537133184,
            26624 : 553910272,
            30720 : 536870912,
            34816 : 537133056,
            38912 : 0,
            43008 : 553910400,
            47104 : 16777344,
            51200 : 536871040,
            55296 : 553648128,
            59392 : 16777216,
            63488 : 262272,
            65536 : 262144,
            69632 : 128,
            73728 : 536870912,
            77824 : 553648256,
            81920 : 16777344,
            86016 : 553910272,
            90112 : 537133184,
            94208 : 16777216,
            98304 : 553910400,
            102400 : 553648128,
            106496 : 17039360,
            110592 : 537133056,
            114688 : 262272,
            118784 : 536871040,
            122880 : 0,
            126976 : 17039488,
            67584 : 553648256,
            71680 : 16777216,
            75776 : 17039360,
            79872 : 537133184,
            83968 : 536870912,
            88064 : 17039488,
            92160 : 128,
            96256 : 553910272,
            100352 : 262272,
            104448 : 553910400,
            108544 : 0,
            112640 : 553648128,
            116736 : 16777344,
            120832 : 262144,
            124928 : 537133056,
            129024 : 536871040
        },
        {
            0 : 268435464,
            256 : 8192,
            512 : 270532608,
            768 : 270540808,
            1024 : 268443648,
            1280 : 2097152,
            1536 : 2097160,
            1792 : 268435456,
            2048 : 0,
            2304 : 268443656,
            2560 : 2105344,
            2816 : 8,
            3072 : 270532616,
            3328 : 2105352,
            3584 : 8200,
            3840 : 270540800,
            128 : 270532608,
            384 : 270540808,
            640 : 8,
            896 : 2097152,
            1152 : 2105352,
            1408 : 268435464,
            1664 : 268443648,
            1920 : 8200,
            2176 : 2097160,
            2432 : 8192,
            2688 : 268443656,
            2944 : 270532616,
            3200 : 0,
            3456 : 270540800,
            3712 : 2105344,
            3968 : 268435456,
            4096 : 268443648,
            4352 : 270532616,
            4608 : 270540808,
            4864 : 8200,
            5120 : 2097152,
            5376 : 268435456,
            5632 : 268435464,
            5888 : 2105344,
            6144 : 2105352,
            6400 : 0,
            6656 : 8,
            6912 : 270532608,
            7168 : 8192,
            7424 : 268443656,
            7680 : 270540800,
            7936 : 2097160,
            4224 : 8,
            4480 : 2105344,
            4736 : 2097152,
            4992 : 268435464,
            5248 : 268443648,
            5504 : 8200,
            5760 : 270540808,
            6016 : 270532608,
            6272 : 270540800,
            6528 : 270532616,
            6784 : 8192,
            7040 : 2105352,
            7296 : 2097160,
            7552 : 0,
            7808 : 268435456,
            8064 : 268443656
        },
        {
            0 : 1048576,
            16 : 33555457,
            32 : 1024,
            48 : 1049601,
            64 : 34604033,
            80 : 0,
            96 : 1,
            112 : 34603009,
            128 : 33555456,
            144 : 1048577,
            160 : 33554433,
            176 : 34604032,
            192 : 34603008,
            208 : 1025,
            224 : 1049600,
            240 : 33554432,
            8 : 34603009,
            24 : 0,
            40 : 33555457,
            56 : 34604032,
            72 : 1048576,
            88 : 33554433,
            104 : 33554432,
            120 : 1025,
            136 : 1049601,
            152 : 33555456,
            168 : 34603008,
            184 : 1048577,
            200 : 1024,
            216 : 34604033,
            232 : 1,
            248 : 1049600,
            256 : 33554432,
            272 : 1048576,
            288 : 33555457,
            304 : 34603009,
            320 : 1048577,
            336 : 33555456,
            352 : 34604032,
            368 : 1049601,
            384 : 1025,
            400 : 34604033,
            416 : 1049600,
            432 : 1,
            448 : 0,
            464 : 34603008,
            480 : 33554433,
            496 : 1024,
            264 : 1049600,
            280 : 33555457,
            296 : 34603009,
            312 : 1,
            328 : 33554432,
            344 : 1048576,
            360 : 1025,
            376 : 34604032,
            392 : 33554433,
            408 : 34603008,
            424 : 0,
            440 : 34604033,
            456 : 1049601,
            472 : 1024,
            488 : 33555456,
            504 : 1048577
        },
        {
            0 : 134219808,
            1 : 131072,
            2 : 134217728,
            3 : 32,
            4 : 131104,
            5 : 134350880,
            6 : 134350848,
            7 : 2048,
            8 : 134348800,
            9 : 134219776,
            10 : 133120,
            11 : 134348832,
            12 : 2080,
            13 : 0,
            14 : 134217760,
            15 : 133152,
            2147483648 : 2048,
            2147483649 : 134350880,
            2147483650 : 134219808,
            2147483651 : 134217728,
            2147483652 : 134348800,
            2147483653 : 133120,
            2147483654 : 133152,
            2147483655 : 32,
            2147483656 : 134217760,
            2147483657 : 2080,
            2147483658 : 131104,
            2147483659 : 134350848,
            2147483660 : 0,
            2147483661 : 134348832,
            2147483662 : 134219776,
            2147483663 : 131072,
            16 : 133152,
            17 : 134350848,
            18 : 32,
            19 : 2048,
            20 : 134219776,
            21 : 134217760,
            22 : 134348832,
            23 : 131072,
            24 : 0,
            25 : 131104,
            26 : 134348800,
            27 : 134219808,
            28 : 134350880,
            29 : 133120,
            30 : 2080,
            31 : 134217728,
            2147483664 : 131072,
            2147483665 : 2048,
            2147483666 : 134348832,
            2147483667 : 133152,
            2147483668 : 32,
            2147483669 : 134348800,
            2147483670 : 134217728,
            2147483671 : 134219808,
            2147483672 : 134350880,
            2147483673 : 134217760,
            2147483674 : 134219776,
            2147483675 : 0,
            2147483676 : 133120,
            2147483677 : 2080,
            2147483678 : 131104,
            2147483679 : 134350848
        }];
        var g = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679];
        var d = j.DES = n.extend({
            _doReset: function() {
                var x = this._key;
                var r = x.words;
                var w = [];
                for (var v = 0; v < 56; v++) {
                    var t = o[v] - 1;
                    w[v] = (r[t >>> 5] >>> (31 - t % 32)) & 1
                }
                var p = this._subKeys = [];
                for (var s = 0; s < 16; s++) {
                    var u = p[s] = [];
                    var y = l[s];
                    for (var v = 0; v < 24; v++) {
                        u[(v / 6) | 0] |= w[((m[v] - 1) + y) % 28] << (31 - v % 6);
                        u[4 + ((v / 6) | 0)] |= w[28 + (((m[v + 24] - 1) + y) % 28)] << (31 - v % 6)
                    }
                    u[0] = (u[0] << 1) | (u[0] >>> 31);
                    for (var v = 1; v < 7; v++) {
                        u[v] = u[v] >>> ((v - 1) * 4 + 3)
                    }
                    u[7] = (u[7] << 5) | (u[7] >>> 27)
                }
                var q = this._invSubKeys = [];
                for (var v = 0; v < 16; v++) {
                    q[v] = p[15 - v]
                }
            },
            encryptBlock: function(q, p) {
                this._doCryptBlock(q, p, this._subKeys)
            },
            decryptBlock: function(q, p) {
                this._doCryptBlock(q, p, this._invSubKeys)
            },
            _doCryptBlock: function(x, s, q) {
                this._lBlock = x[s];
                this._rBlock = x[s + 1];
                e.call(this, 4, 252645135);
                e.call(this, 16, 65535);
                f.call(this, 2, 858993459);
                f.call(this, 8, 16711935);
                e.call(this, 1, 1431655765);
                for (var z = 0; z < 16; z++) {
                    var v = q[z];
                    var r = this._lBlock;
                    var p = this._rBlock;
                    var w = 0;
                    for (var u = 0; u < 8; u++) {
                        w |= k[u][((p ^ v[u]) & g[u]) >>> 0]
                    }
                    this._lBlock = p;
                    this._rBlock = r ^ w
                }
                var y = this._lBlock;
                this._lBlock = this._rBlock;
                this._rBlock = y;
                e.call(this, 1, 1431655765);
                f.call(this, 8, 16711935);
                f.call(this, 2, 858993459);
                e.call(this, 16, 65535);
                e.call(this, 4, 252645135);
                x[s] = this._lBlock;
                x[s + 1] = this._rBlock
            },
            keySize: 64 / 32,
            ivSize: 64 / 32,
            blockSize: 64 / 32
        });
        function e(r, p) {
            var q = ((this._lBlock >>> r) ^ this._rBlock) & p;
            this._rBlock ^= q;
            this._lBlock ^= q << r
        }
        function f(r, p) {
            var q = ((this._rBlock >>> r) ^ this._lBlock) & p;
            this._lBlock ^= q;
            this._rBlock ^= q << r
        }
        b.DES = n._createHelper(d);
        var h = j.TripleDES = n.extend({
            _doReset: function() {
                var p = this._key;
                var q = p.words;
                this._des1 = d.createEncryptor(i.create(q.slice(0, 2)));
                this._des2 = d.createEncryptor(i.create(q.slice(2, 4)));
                this._des3 = d.createEncryptor(i.create(q.slice(4, 6)))
            },
            encryptBlock: function(q, p) {
                this._des1.encryptBlock(q, p);
                this._des2.decryptBlock(q, p);
                this._des3.encryptBlock(q, p)
            },
            decryptBlock: function(q, p) {
                this._des3.decryptBlock(q, p);
                this._des2.encryptBlock(q, p);
                this._des1.decryptBlock(q, p)
            },
            keySize: 192 / 32,
            ivSize: 64 / 32,
            blockSize: 64 / 32
        });
        b.TripleDES = n._createHelper(h)
    } ()); (function() {
        var g = a;
        var c = g.lib;
        var h = c.StreamCipher;
        var e = g.algo;
        var d = e.RC4 = h.extend({
            _doReset: function() {
                var q = this._key;
                var k = q.words;
                var l = q.sigBytes;
                var m = this._S = [];
                for (var o = 0; o < 256; o++) {
                    m[o] = o
                }
                for (var o = 0,
                n = 0; o < 256; o++) {
                    var s = o % l;
                    var p = (k[s >>> 2] >>> (24 - (s % 4) * 8)) & 255;
                    n = (n + m[o] + p) % 256;
                    var r = m[o];
                    m[o] = m[n];
                    m[n] = r
                }
                this._i = this._j = 0
            },
            _doProcessBlock: function(j, i) {
                j[i] ^= f.call(this)
            },
            keySize: 256 / 32,
            ivSize: 0
        });
        function f() {
            var o = this._S;
            var m = this._i;
            var k = this._j;
            var p = 0;
            for (var q = 0; q < 4; q++) {
                m = (m + 1) % 256;
                k = (k + o[m]) % 256;
                var l = o[m];
                o[m] = o[k];
                o[k] = l;
                p |= o[(o[m] + o[k]) % 256] << (24 - q * 8)
            }
            this._i = m;
            this._j = k;
            return p
        }
        g.RC4 = h._createHelper(d);
        var b = e.RC4Drop = d.extend({
            cfg: d.cfg.extend({
                drop: 192
            }),
            _doReset: function() {
                d._doReset.call(this);
                for (var j = this.cfg.drop; j > 0; j--) {
                    f.call(this)
                }
            }
        });
        g.RC4Drop = h._createHelper(b)
    } ());
    a.mode.CTRGladman = (function() {
        var b = a.lib.BlockCipherMode.extend();
        function e(i) {
            if (((i >> 24) & 255) === 255) {
                var h = (i >> 16) & 255;
                var g = (i >> 8) & 255;
                var f = i & 255;
                if (h === 255) {
                    h = 0;
                    if (g === 255) {
                        g = 0;
                        if (f === 255) {
                            f = 0
                        } else {++f
                        }
                    } else {++g
                    }
                } else {++h
                }
                i = 0;
                i += (h << 16);
                i += (g << 8);
                i += f
            } else {
                i += (1 << 24)
            }
            return i
        }
        function d(f) {
            if ((f[0] = e(f[0])) === 0) {
                f[1] = e(f[1])
            }
            return f
        }
        var c = b.Encryptor = b.extend({
            processBlock: function(n, m) {
                var f = this._cipher;
                var k = f.blockSize;
                var h = this._iv;
                var g = this._counter;
                if (h) {
                    g = this._counter = h.slice(0);
                    this._iv = undefined
                }
                d(g);
                var l = g.slice(0);
                f.encryptBlock(l, 0);
                for (var j = 0; j < k; j++) {
                    n[m + j] ^= l[j]
                }
            }
        });
        b.Decryptor = c;
        return b
    } ()); (function() {
        var b = a;
        var c = b.lib;
        var d = c.StreamCipher;
        var g = b.algo;
        var e = [];
        var f = [];
        var h = [];
        var i = g.Rabbit = d.extend({
            _doReset: function() {
                var u = this._key.words;
                var p = this.cfg.iv;
                for (var r = 0; r < 4; r++) {
                    u[r] = (((u[r] << 8) | (u[r] >>> 24)) & 16711935) | (((u[r] << 24) | (u[r] >>> 8)) & 4278255360)
                }
                var l = this._X = [u[0], (u[3] << 16) | (u[2] >>> 16), u[1], (u[0] << 16) | (u[3] >>> 16), u[2], (u[1] << 16) | (u[0] >>> 16), u[3], (u[2] << 16) | (u[1] >>> 16)];
                var k = this._C = [(u[2] << 16) | (u[2] >>> 16), (u[0] & 4294901760) | (u[1] & 65535), (u[3] << 16) | (u[3] >>> 16), (u[1] & 4294901760) | (u[2] & 65535), (u[0] << 16) | (u[0] >>> 16), (u[2] & 4294901760) | (u[3] & 65535), (u[1] << 16) | (u[1] >>> 16), (u[3] & 4294901760) | (u[0] & 65535)];
                this._b = 0;
                for (var r = 0; r < 4; r++) {
                    j.call(this)
                }
                for (var r = 0; r < 8; r++) {
                    k[r] ^= l[(r + 4) & 7]
                }
                if (p) {
                    var v = p.words;
                    var t = v[0];
                    var s = v[1];
                    var q = (((t << 8) | (t >>> 24)) & 16711935) | (((t << 24) | (t >>> 8)) & 4278255360);
                    var n = (((s << 8) | (s >>> 24)) & 16711935) | (((s << 24) | (s >>> 8)) & 4278255360);
                    var o = (q >>> 16) | (n & 4294901760);
                    var m = (n << 16) | (q & 65535);
                    k[0] ^= q;
                    k[1] ^= o;
                    k[2] ^= n;
                    k[3] ^= m;
                    k[4] ^= q;
                    k[5] ^= o;
                    k[6] ^= n;
                    k[7] ^= m;
                    for (var r = 0; r < 4; r++) {
                        j.call(this)
                    }
                }
            },
            _doProcessBlock: function(n, l) {
                var m = this._X;
                j.call(this);
                e[0] = m[0] ^ (m[5] >>> 16) ^ (m[3] << 16);
                e[1] = m[2] ^ (m[7] >>> 16) ^ (m[5] << 16);
                e[2] = m[4] ^ (m[1] >>> 16) ^ (m[7] << 16);
                e[3] = m[6] ^ (m[3] >>> 16) ^ (m[1] << 16);
                for (var k = 0; k < 4; k++) {
                    e[k] = (((e[k] << 8) | (e[k] >>> 24)) & 16711935) | (((e[k] << 24) | (e[k] >>> 8)) & 4278255360);
                    n[l + k] ^= e[k]
                }
            },
            blockSize: 128 / 32,
            ivSize: 64 / 32
        });
        function j() {
            var r = this._X;
            var q = this._C;
            for (var l = 0; l < 8; l++) {
                f[l] = q[l]
            }
            q[0] = (q[0] + 1295307597 + this._b) | 0;
            q[1] = (q[1] + 3545052371 + ((q[0] >>> 0) < (f[0] >>> 0) ? 1 : 0)) | 0;
            q[2] = (q[2] + 886263092 + ((q[1] >>> 0) < (f[1] >>> 0) ? 1 : 0)) | 0;
            q[3] = (q[3] + 1295307597 + ((q[2] >>> 0) < (f[2] >>> 0) ? 1 : 0)) | 0;
            q[4] = (q[4] + 3545052371 + ((q[3] >>> 0) < (f[3] >>> 0) ? 1 : 0)) | 0;
            q[5] = (q[5] + 886263092 + ((q[4] >>> 0) < (f[4] >>> 0) ? 1 : 0)) | 0;
            q[6] = (q[6] + 1295307597 + ((q[5] >>> 0) < (f[5] >>> 0) ? 1 : 0)) | 0;
            q[7] = (q[7] + 3545052371 + ((q[6] >>> 0) < (f[6] >>> 0) ? 1 : 0)) | 0;
            this._b = (q[7] >>> 0) < (f[7] >>> 0) ? 1 : 0;
            for (var l = 0; l < 8; l++) {
                var n = r[l] + q[l];
                var p = n & 65535;
                var m = n >>> 16;
                var k = ((((p * p) >>> 17) + p * m) >>> 15) + m * m;
                var o = (((n & 4294901760) * n) | 0) + (((n & 65535) * n) | 0);
                h[l] = k ^ o
            }
            r[0] = (h[0] + ((h[7] << 16) | (h[7] >>> 16)) + ((h[6] << 16) | (h[6] >>> 16))) | 0;
            r[1] = (h[1] + ((h[0] << 8) | (h[0] >>> 24)) + h[7]) | 0;
            r[2] = (h[2] + ((h[1] << 16) | (h[1] >>> 16)) + ((h[0] << 16) | (h[0] >>> 16))) | 0;
            r[3] = (h[3] + ((h[2] << 8) | (h[2] >>> 24)) + h[1]) | 0;
            r[4] = (h[4] + ((h[3] << 16) | (h[3] >>> 16)) + ((h[2] << 16) | (h[2] >>> 16))) | 0;
            r[5] = (h[5] + ((h[4] << 8) | (h[4] >>> 24)) + h[3]) | 0;
            r[6] = (h[6] + ((h[5] << 16) | (h[5] >>> 16)) + ((h[4] << 16) | (h[4] >>> 16))) | 0;
            r[7] = (h[7] + ((h[6] << 8) | (h[6] >>> 24)) + h[5]) | 0
        }
        b.Rabbit = d._createHelper(i)
    } ());
    a.mode.CTR = (function() {
        var c = a.lib.BlockCipherMode.extend();
        var b = c.Encryptor = c.extend({
            processBlock: function(l, k) {
                var d = this._cipher;
                var h = d.blockSize;
                var f = this._iv;
                var e = this._counter;
                if (f) {
                    e = this._counter = f.slice(0);
                    this._iv = undefined
                }
                var j = e.slice(0);
                d.encryptBlock(j, 0);
                e[h - 1] = (e[h - 1] + 1) | 0;
                for (var g = 0; g < h; g++) {
                    l[k + g] ^= j[g]
                }
            }
        });
        c.Decryptor = b;
        return c
    } ()); (function() {
        var b = a;
        var c = b.lib;
        var d = c.StreamCipher;
        var g = b.algo;
        var e = [];
        var f = [];
        var h = [];
        var i = g.RabbitLegacy = d.extend({
            _doReset: function() {
                var u = this._key.words;
                var p = this.cfg.iv;
                var l = this._X = [u[0], (u[3] << 16) | (u[2] >>> 16), u[1], (u[0] << 16) | (u[3] >>> 16), u[2], (u[1] << 16) | (u[0] >>> 16), u[3], (u[2] << 16) | (u[1] >>> 16)];
                var k = this._C = [(u[2] << 16) | (u[2] >>> 16), (u[0] & 4294901760) | (u[1] & 65535), (u[3] << 16) | (u[3] >>> 16), (u[1] & 4294901760) | (u[2] & 65535), (u[0] << 16) | (u[0] >>> 16), (u[2] & 4294901760) | (u[3] & 65535), (u[1] << 16) | (u[1] >>> 16), (u[3] & 4294901760) | (u[0] & 65535)];
                this._b = 0;
                for (var r = 0; r < 4; r++) {
                    j.call(this)
                }
                for (var r = 0; r < 8; r++) {
                    k[r] ^= l[(r + 4) & 7]
                }
                if (p) {
                    var v = p.words;
                    var t = v[0];
                    var s = v[1];
                    var q = (((t << 8) | (t >>> 24)) & 16711935) | (((t << 24) | (t >>> 8)) & 4278255360);
                    var n = (((s << 8) | (s >>> 24)) & 16711935) | (((s << 24) | (s >>> 8)) & 4278255360);
                    var o = (q >>> 16) | (n & 4294901760);
                    var m = (n << 16) | (q & 65535);
                    k[0] ^= q;
                    k[1] ^= o;
                    k[2] ^= n;
                    k[3] ^= m;
                    k[4] ^= q;
                    k[5] ^= o;
                    k[6] ^= n;
                    k[7] ^= m;
                    for (var r = 0; r < 4; r++) {
                        j.call(this)
                    }
                }
            },
            _doProcessBlock: function(n, l) {
                var m = this._X;
                j.call(this);
                e[0] = m[0] ^ (m[5] >>> 16) ^ (m[3] << 16);
                e[1] = m[2] ^ (m[7] >>> 16) ^ (m[5] << 16);
                e[2] = m[4] ^ (m[1] >>> 16) ^ (m[7] << 16);
                e[3] = m[6] ^ (m[3] >>> 16) ^ (m[1] << 16);
                for (var k = 0; k < 4; k++) {
                    e[k] = (((e[k] << 8) | (e[k] >>> 24)) & 16711935) | (((e[k] << 24) | (e[k] >>> 8)) & 4278255360);
                    n[l + k] ^= e[k]
                }
            },
            blockSize: 128 / 32,
            ivSize: 64 / 32
        });
        function j() {
            var r = this._X;
            var q = this._C;
            for (var l = 0; l < 8; l++) {
                f[l] = q[l]
            }
            q[0] = (q[0] + 1295307597 + this._b) | 0;
            q[1] = (q[1] + 3545052371 + ((q[0] >>> 0) < (f[0] >>> 0) ? 1 : 0)) | 0;
            q[2] = (q[2] + 886263092 + ((q[1] >>> 0) < (f[1] >>> 0) ? 1 : 0)) | 0;
            q[3] = (q[3] + 1295307597 + ((q[2] >>> 0) < (f[2] >>> 0) ? 1 : 0)) | 0;
            q[4] = (q[4] + 3545052371 + ((q[3] >>> 0) < (f[3] >>> 0) ? 1 : 0)) | 0;
            q[5] = (q[5] + 886263092 + ((q[4] >>> 0) < (f[4] >>> 0) ? 1 : 0)) | 0;
            q[6] = (q[6] + 1295307597 + ((q[5] >>> 0) < (f[5] >>> 0) ? 1 : 0)) | 0;
            q[7] = (q[7] + 3545052371 + ((q[6] >>> 0) < (f[6] >>> 0) ? 1 : 0)) | 0;
            this._b = (q[7] >>> 0) < (f[7] >>> 0) ? 1 : 0;
            for (var l = 0; l < 8; l++) {
                var n = r[l] + q[l];
                var p = n & 65535;
                var m = n >>> 16;
                var k = ((((p * p) >>> 17) + p * m) >>> 15) + m * m;
                var o = (((n & 4294901760) * n) | 0) + (((n & 65535) * n) | 0);
                h[l] = k ^ o
            }
            r[0] = (h[0] + ((h[7] << 16) | (h[7] >>> 16)) + ((h[6] << 16) | (h[6] >>> 16))) | 0;
            r[1] = (h[1] + ((h[0] << 8) | (h[0] >>> 24)) + h[7]) | 0;
            r[2] = (h[2] + ((h[1] << 16) | (h[1] >>> 16)) + ((h[0] << 16) | (h[0] >>> 16))) | 0;
            r[3] = (h[3] + ((h[2] << 8) | (h[2] >>> 24)) + h[1]) | 0;
            r[4] = (h[4] + ((h[3] << 16) | (h[3] >>> 16)) + ((h[2] << 16) | (h[2] >>> 16))) | 0;
            r[5] = (h[5] + ((h[4] << 8) | (h[4] >>> 24)) + h[3]) | 0;
            r[6] = (h[6] + ((h[5] << 16) | (h[5] >>> 16)) + ((h[4] << 16) | (h[4] >>> 16))) | 0;
            r[7] = (h[7] + ((h[6] << 8) | (h[6] >>> 24)) + h[5]) | 0
        }
        b.RabbitLegacy = d._createHelper(i)
    } ());
    a.pad.ZeroPadding = {
        pad: function(d, b) {
            var c = b * 4;
            d.clamp();
            d.sigBytes += c - ((d.sigBytes % c) || c)
        },
        unpad: function(c) {
            var d = c.words;
            var b = c.sigBytes - 1;
            while (! ((d[b >>> 2] >>> (24 - (b % 4) * 8)) & 255)) {
                b--
            }
            c.sigBytes = b + 1
        }
    };
    return a
}));

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注