var loadTime = (new Date).getTime(), key, prng, entropyData = [], edlen = 0, codegroupSentinel = "ZZZZZ", keySizeInBits = 256, blockSizeInBits = 128, maxLineLength = 64, hexSentinel = "?HX?", hexEndSentinel = "?H", licensekey = "TYAEE-HWEBZ-SUIZZ-IXJUF-HWKAA-PMNGV-KNUID-WBZQT-RASRA-GIJEC-AUMZM-NYSBM", roundsArray = [, , , , [, , , , 10, , 12, , 14], , [, , , , 12, , 12, , 14], , [, , , , 14, , 14, , 14]], shiftOffsets = [, , , , [, 1, 2, 3], , [, 1, 2, 3], , [, 1, 3, 4]], RconEn = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145],
SBoxEn = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126,
61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22], SBoxEnInverse = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57,
130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223,
110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125], Nk = keySizeInBits / 32, Nb = blockSizeInBits / 32, Nr = roundsArray[Nk][Nb], licenseDetails = null, stateEn = new array(4), countEn = new array(2); countEn[0] = 0; countEn[1] = 0;
var bufferEn = new array(64), transformbufferEn = new array(16), digestBitsEn = new array(16), S11 = 7, S12 = 12, S13 = 17, S14 = 22, S21 = 5, S22 = 9, S23 = 14, S24 = 20, S31 = 4, S32 = 11, S33 = 16, S34 = 23, S41 = 6, S42 = 10, S43 = 15, S44 = 21;
function EncryptKey(a) { var c, b = ""; try { setKey(); addEntropyTime(); prng = new AESprng(keyFromEntropy()); var d = encode_utf8(a); md5_init(); for (c = 0; c < d.length; c++) md5_update(d.charCodeAt(c)); md5_finish(); for (c = 0; c < digestBitsEn.length; c++) b += String.fromCharCode(digestBitsEn[c]); c = d.length; b += String.fromCharCode(c >>> 24); b += String.fromCharCode(c >>> 16); b += String.fromCharCode(c >>> 8); b += String.fromCharCode(c & 255); var e = rijndaelEncrypt(b + d, key, "CBC"); var f = armour_codegroup(e); delete prng } catch (g) { alert(g.description) } return f }
function setKey() { var a = encode_utf8(licensekey), c; try { 1 == a.length && (a += a); md5_init(); for (c = 0; c < a.length; c += 2) md5_update(a.charCodeAt(c)); md5_finish(); var b = byteArrayToHex(digestBitsEn); md5_init(); for (c = 1; c < a.length; c += 2) md5_update(a.charCodeAt(c)); md5_finish(); var d = byteArrayToHex(digestBitsEn); key = hexToByteArray(b + d); byteArrayToHex(key) } catch (e) { alert(e.description) } }
function encode_utf8(a) { var c, b = !1; try { for (c = 0; c < a.length; c++) if (157 == a.charCodeAt(c) || 255 < a.charCodeAt(c)) { b = !0; break } if (!b) return a } catch (d) { alert(d.description) } return String.fromCharCode(157) + unicode_to_utf8(a) } function md5_init() { countEn[0] = countEn[1] = 0; stateEn[0] = 1732584193; stateEn[1] = 4023233417; stateEn[2] = 2562383102; stateEn[3] = 271733878; for (i = 0; i < digestBitsEn.length; i++) digestBitsEn[i] = 0 }
function md5_update(a) { var c = and(shr(countEn[0], 3), 63); 4294967288 > countEn[0] || (countEn[1]++, countEn[0] -= 4294967296); countEn[0] += 8; bufferEn[c] = and(a, 255); 63 <= c && transform(bufferEn, 0) }
function md5_finish() { var a = new array(8), c = 0, b = 0, d = 0; try { for (c = 0; 4 > c; c++) a[c] = and(shr(countEn[0], 8 * c), 255); for (c = 0; 4 > c; c++) a[c + 4] = and(shr(countEn[1], 8 * c), 255); b = and(shr(countEn[0], 3), 63); d = 56 > b ? 56 - b : 120 - b; var e = new array(64); e[0] = 128; for (c = 0; c < d; c++) md5_update(e[c]); for (c = 0; 8 > c; c++) md5_update(a[c]); for (c = 0; 4 > c; c++) for (j = 0; 4 > j; j++) digestBitsEn[4 * c + j] = and(shr(stateEn[c], 8 * j), 255) } catch (f) { alert(f.decryption) } }
function byteArrayToHex(a) { var c = ""; if (a) { for (var b = 0; b < a.length; b++) c += (16 > a[b] ? "0" : "") + a[b].toString(16); return c } } function hexToByteArray(a) { var c = []; if (!(a.length % 2)) { if (0 == a.indexOf("0x") || 0 == a.indexOf("0X")) a = a.substring(2); for (var b = 0; b < a.length; b += 2) c[Math.floor(b / 2)] = parseInt(a.slice(b, b + 2), 16); return c } } function array(a) { for (i = 0; i < a; i++) this[i] = 0; this.length = a } function integer(a) { return a % 4294967296 }
function shr(a, c) { a = integer(a); c = integer(c); return 0 <= a - 2147483648 ? (a % 2147483648 >> c) + (1073741824 >> c - 1) : a >> c } function shl1(a) { a %= 2147483648; return a & 1 ? 2 * (a - 1073741824) + 2147483648 : 2 * a } function shl(a, c) { a = integer(a); c = integer(c); for (var b = 0; b < c; b++) a = shl1(a); return a } function and(a, c) { a = integer(a); c = integer(c); var b = a - 2147483648, d = c - 2147483648; return 0 <= b ? 0 <= d ? (b & d) + 2147483648 : b & c : 0 <= d ? a & d : a & c }
function or(a, c) { a = integer(a); c = integer(c); var b = a - 2147483648, d = c - 2147483648; return 0 <= b ? 0 <= d ? (b | d) + 2147483648 : (b | c) + 2147483648 : 0 <= d ? (a | d) + 2147483648 : a | c } function xor(a, c) { a = integer(a); c = integer(c); var b = a - 2147483648, d = c - 2147483648; return 0 <= b ? 0 <= d ? b ^ d : (b ^ c) + 2147483648 : 0 <= d ? (a ^ d) + 2147483648 : a ^ c } function not(a) { a = integer(a); return 4294967295 - a } function F(a, c, b) { return or(and(a, c), and(not(a), b)) } function G(a, c, b) { return or(and(a, b), and(c, not(b))) } function H(a, c, b) { return xor(xor(a, c), b) }
function I(a, c, b) { return xor(c, or(a, not(b))) } function rotateLeft(a, c) { return or(shl(a, c), shr(a, 32 - c)) } function FF(a, c, b, d, e, f, g) { a = a + F(c, b, d) + e + g; a = rotateLeft(a, f); return a + c } function GG(a, c, b, d, e, f, g) { a = a + G(c, b, d) + e + g; a = rotateLeft(a, f); return a + c } function HH(a, c, b, d, e, f, g) { a = a + H(c, b, d) + e + g; a = rotateLeft(a, f); return a + c } function II(a, c, b, d, e, f, g) { a = a + I(c, b, d) + e + g; a = rotateLeft(a, f); return a + c }
function transform(a, c) {
    var b = transformbufferEn; var d = stateEn[0]; var e = stateEn[1]; var f = stateEn[2]; var g = stateEn[3]; for (i = 0; 16 > i; i++) for (b[i] = and(a[4 * i + c], 255), j = 1; 4 > j; j++) b[i] += shl(and(a[4 * i + j + c], 255), 8 * j); d = FF(d, e, f, g, b[0], S11, 3614090360); g = FF(g, d, e, f, b[1], S12, 3905402710); f = FF(f, g, d, e, b[2], S13, 606105819); e = FF(e, f, g, d, b[3], S14, 3250441966); d = FF(d, e, f, g, b[4], S11, 4118548399); g = FF(g, d, e, f, b[5], S12, 1200080426); f = FF(f, g, d, e, b[6], S13, 2821735955); e = FF(e, f, g, d, b[7], S14, 4249261313); d = FF(d, e, f, g, b[8], S11, 1770035416);
    g = FF(g, d, e, f, b[9], S12, 2336552879); f = FF(f, g, d, e, b[10], S13, 4294925233); e = FF(e, f, g, d, b[11], S14, 2304563134); d = FF(d, e, f, g, b[12], S11, 1804603682); g = FF(g, d, e, f, b[13], S12, 4254626195); f = FF(f, g, d, e, b[14], S13, 2792965006); e = FF(e, f, g, d, b[15], S14, 1236535329); d = GG(d, e, f, g, b[1], S21, 4129170786); g = GG(g, d, e, f, b[6], S22, 3225465664); f = GG(f, g, d, e, b[11], S23, 643717713); e = GG(e, f, g, d, b[0], S24, 3921069994); d = GG(d, e, f, g, b[5], S21, 3593408605); g = GG(g, d, e, f, b[10], S22, 38016083); f = GG(f, g, d, e, b[15], S23, 3634488961); e = GG(e, f, g, d, b[4], S24,
    3889429448); d = GG(d, e, f, g, b[9], S21, 568446438); g = GG(g, d, e, f, b[14], S22, 3275163606); f = GG(f, g, d, e, b[3], S23, 4107603335); e = GG(e, f, g, d, b[8], S24, 1163531501); d = GG(d, e, f, g, b[13], S21, 2850285829); g = GG(g, d, e, f, b[2], S22, 4243563512); f = GG(f, g, d, e, b[7], S23, 1735328473); e = GG(e, f, g, d, b[12], S24, 2368359562); d = HH(d, e, f, g, b[5], S31, 4294588738); g = HH(g, d, e, f, b[8], S32, 2272392833); f = HH(f, g, d, e, b[11], S33, 1839030562); e = HH(e, f, g, d, b[14], S34, 4259657740); d = HH(d, e, f, g, b[1], S31, 2763975236); g = HH(g, d, e, f, b[4], S32, 1272893353); f = HH(f, g,
    d, e, b[7], S33, 4139469664); e = HH(e, f, g, d, b[10], S34, 3200236656); d = HH(d, e, f, g, b[13], S31, 681279174); g = HH(g, d, e, f, b[0], S32, 3936430074); f = HH(f, g, d, e, b[3], S33, 3572445317); e = HH(e, f, g, d, b[6], S34, 76029189); d = HH(d, e, f, g, b[9], S31, 3654602809); g = HH(g, d, e, f, b[12], S32, 3873151461); f = HH(f, g, d, e, b[15], S33, 530742520); e = HH(e, f, g, d, b[2], S34, 3299628645); d = II(d, e, f, g, b[0], S41, 4096336452); g = II(g, d, e, f, b[7], S42, 1126891415); f = II(f, g, d, e, b[14], S43, 2878612391); e = II(e, f, g, d, b[5], S44, 4237533241); d = II(d, e, f, g, b[12], S41, 1700485571);
    g = II(g, d, e, f, b[3], S42, 2399980690); f = II(f, g, d, e, b[10], S43, 4293915773); e = II(e, f, g, d, b[1], S44, 2240044497); d = II(d, e, f, g, b[8], S41, 1873313359); g = II(g, d, e, f, b[15], S42, 4264355552); f = II(f, g, d, e, b[6], S43, 2734768916); e = II(e, f, g, d, b[13], S44, 1309151649); d = II(d, e, f, g, b[4], S41, 4149444226); g = II(g, d, e, f, b[11], S42, 3174756917); f = II(f, g, d, e, b[2], S43, 718787259); e = II(e, f, g, d, b[9], S44, 3951481745); stateEn[0] += d; stateEn[1] += e; stateEn[2] += f; stateEn[3] += g
} function addEntropyByte(a) { entropyData[edlen++] = a }
function ce() { addEntropyByte(Math.floor(255 * (new Date).getMilliseconds() / 999)) } function addEntropy32(a) { var c; for (c = 0; 4 > c; c++) addEntropyByte(a & 255), a >>= 8 } function addEntropyTime() { addEntropy32((new Date).getTime()) }
function keyFromEntropy() { var a, c = Array(32); 0 == edlen && alert("Blooie!  Entropy vector void at call to keyFromEntropy."); md5_init(); for (a = 0; a < edlen; a += 2) md5_update(entropyData[a]); md5_finish(); for (a = 0; 16 > a; a++) c[a] = digestBitsEn[a]; md5_init(); for (a = 1; a < edlen; a += 2) md5_update(entropyData[a]); md5_finish(); for (a = 0; 16 > a; a++) c[a + 16] = digestBitsEn[a]; return c }
function encode_utf8(a) { var c, b = !1; for (c = 0; c < a.length; c++) if (157 == a.charCodeAt(c) || 255 < a.charCodeAt(c)) { b = !0; break } return b ? String.fromCharCode(157) + unicode_to_utf8(a) : a } function decode_utf8(a) { return 0 < a.length && 157 == a.charCodeAt(0) ? utf8_to_unicode(a.substring(1)) : a } function packBytes(a) { var c = []; if (a && !(a.length % 4)) { c[0] = []; c[1] = []; c[2] = []; c[3] = []; for (var b = 0; b < a.length; b += 4) c[0][b / 4] = a[b], c[1][b / 4] = a[b + 1], c[2][b / 4] = a[b + 2], c[3][b / 4] = a[b + 3]; return c } }
function unpackBytes(a) { for (var c = [], b = 0; b < a[0].length; b++) c[c.length] = a[0][b], c[c.length] = a[1][b], c[c.length] = a[2][b], c[c.length] = a[3][b]; return c } function formatPlaintext(a) { var c = blockSizeInBits / 8, b; if (("object" != typeof a || "number" != typeof a[0]) && ("string" == typeof a || a.indexOf)) for (a = a.split(""), b = 0; b < a.length; b++) a[b] = a[b].charCodeAt(0) & 255; b = a.length % c; 0 < b && (a = a.concat(getRandomBytes(c - b))); return a } function getRandomBytes(a) { var c, b = []; for (c = 0; c < a; c++) b[c] = prng.nextInt(255); return b }
function rijndaelEncrypt(a, c, b) { var d, e = blockSizeInBits / 8; if (a && c && 8 * c.length == keySizeInBits) { if ("CBC" == b) var f = getRandomBytes(e); else b = "ECB", f = []; a = formatPlaintext(a); c = keyExpansion(c); for (var g = 0; g < a.length / e; g++) { var h = a.slice(g * e, (g + 1) * e); if ("CBC" == b) for (d = 0; d < e; d++) h[d] ^= f[g * e + d]; f = f.concat(encrypt(h, c)) } return f } } var acgcl, acgt, acgg; function armour_cg_outgroup() { acgcl.length > maxLineLength && (acgt += acgcl + "\n", acgcl = ""); 0 < acgcl.length && (acgcl += " "); acgcl += acgg; acgg = "" }
function armour_cg_outletter(a) { 5 <= acgg.length && armour_cg_outgroup(); acgg += a } function armour_codegroup(a) { acgcl = codegroupSentinel; acgg = acgt = ""; var c = new LEcuyer(195948557); for (i = 0; i < a.length; i++) { var b = c.nextInt(23); armour_cg_outletter(String.fromCharCode(65 + ((a[i] >> 4 & 15) + b) % 24)); b = c.nextInt(23); armour_cg_outletter(String.fromCharCode(65 + ((a[i] & 15) + b) % 24)) } for (delete c; 5 > acgg.length;) armour_cg_outletter("Z"); armour_cg_outgroup(); acgg = "YYYYY"; armour_cg_outgroup(); return acgt += acgcl + "\n" }
function cyclicShiftLeft(a, c) { var b = a.slice(0, c); return a = a.slice(c).concat(b) } function xtime(a) { a <<= 1; return a & 256 ? a ^ 283 : a } function mult_GF256(a, c) { var b, d = 0; for (b = 1; 256 > b; b *= 2, c = xtime(c)) a & b && (d ^= c); return d } function byteSub(a, c) { var b = "encrypt" == c ? SBoxEn : SBoxEnInverse; for (var d = 0; 4 > d; d++) for (var e = 0; e < Nb; e++) a[d][e] = b[a[d][e]] } function shiftRow(a, c) { for (var b = 1; 4 > b; b++) a[b] = "encrypt" == c ? cyclicShiftLeft(a[b], shiftOffsets[Nb][b]) : cyclicShiftLeft(a[b], Nb - shiftOffsets[Nb][b]) }
function mixColumn(a, c) { for (var b = [], d = 0; d < Nb; d++) { for (var e = 0; 4 > e; e++) b[e] = "encrypt" == c ? mult_GF256(a[e][d], 2) ^ mult_GF256(a[(e + 1) % 4][d], 3) ^ a[(e + 2) % 4][d] ^ a[(e + 3) % 4][d] : mult_GF256(a[e][d], 14) ^ mult_GF256(a[(e + 1) % 4][d], 11) ^ mult_GF256(a[(e + 2) % 4][d], 13) ^ mult_GF256(a[(e + 3) % 4][d], 9); for (e = 0; 4 > e; e++) a[e][d] = b[e] } } function addRoundKey(a, c) { for (var b = 0; b < Nb; b++) a[0][b] ^= c[b] & 255, a[1][b] ^= c[b] >> 8 & 255, a[2][b] ^= c[b] >> 16 & 255, a[3][b] ^= c[b] >> 24 & 255 }
function keyExpansion(a) { var c = []; Nk = keySizeInBits / 32; Nb = blockSizeInBits / 32; Nr = roundsArray[Nk][Nb]; for (var b = 0; b < Nk; b++) c[b] = a[4 * b] | a[4 * b + 1] << 8 | a[4 * b + 2] << 16 | a[4 * b + 3] << 24; for (b = Nk; b < Nb * (Nr + 1) ; b++) a = c[b - 1], 0 == b % Nk ? a = (SBoxEn[a >> 8 & 255] | SBoxEn[a >> 16 & 255] << 8 | SBoxEn[a >> 24 & 255] << 16 | SBoxEn[a & 255] << 24) ^ RconEn[Math.floor(b / Nk) - 1] : 6 < Nk && 4 == b % Nk && (a = SBoxEn[a >> 24 & 255] << 24 | SBoxEn[a >> 16 & 255] << 16 | SBoxEn[a >> 8 & 255] << 8 | SBoxEn[a & 255]), c[b] = c[b - Nk] ^ a; return c }
function Round(a, c) { byteSub(a, "encrypt"); shiftRow(a, "encrypt"); mixColumn(a, "encrypt"); addRoundKey(a, c) } function InverseRound(a, c) { addRoundKey(a, c); mixColumn(a, "decrypt"); shiftRow(a, "decrypt"); byteSub(a, "decrypt") } function FinalRound(a, c) { byteSub(a, "encrypt"); shiftRow(a, "encrypt"); addRoundKey(a, c) } function InverseFinalRound(a, c) { addRoundKey(a, c); shiftRow(a, "decrypt"); byteSub(a, "decrypt") }
function encrypt(a, c) { var b; if (a && 8 * a.length == blockSizeInBits && c) { a = packBytes(a); addRoundKey(a, c); for (b = 1; b < Nr; b++) Round(a, c.slice(Nb * b, Nb * (b + 1))); FinalRound(a, c.slice(Nb * Nr)); return unpackBytes(a) } }
function AESprng(a) { this.key = []; this.key = a; this.itext = hexToByteArray("9F489613248148F9C27945C6AE62EECA3E3367BB14064E4E6DC67A9F28AB3BD1"); this.nbytes = 0; this.next = AESprng_next; this.nextbits = AESprng_nextbits; this.nextInt = AESprng_nextInt; this.round = AESprng_round; bsb = blockSizeInBits; blockSizeInBits = 256; for (a = 0; 3 > a; a++) this.key = rijndaelEncrypt(this.itext, this.key, "ECB"); var c = 1 + (this.key[3] & 2) + (this.key[9] & 1); for (a = 0; a < c; a++) this.key = rijndaelEncrypt(this.itext, this.key, "ECB"); blockSizeInBits = bsb }
function AESprng_round() { bsb = blockSizeInBits; blockSizeInBits = 256; this.key = rijndaelEncrypt(this.itext, this.key, "ECB"); this.nbytes = 32; blockSizeInBits = bsb } function AESprng_next() { 0 >= this.nbytes && this.round(); return this.key[--this.nbytes] } function AESprng_nextbits(a) { var c, b = 0, d = Math.floor((a + 7) / 8); for (c = 0; c < d; c++) b = b << 8 | this.next(); return b & (1 << a) - 1 } function AESprng_nextInt(a) { for (var c = 1, b = 0; a >= c;) c <<= 1, b++; for (c--; ;) { var d = this.nextbits(b) & c; if (d <= a) return d } }
function uGen(a, c, b, d, e) { var f = Math.floor(a / b); f = c * (a - f * b) - f * d; return Math.round(0 > f ? f + e : f) } function LEnext() { this.gen1 = uGen(this.gen1, 40014, 53668, 12211, 2147483563); this.gen2 = uGen(this.gen2, 40692, 52774, 3791, 2147483399); var a = Math.floor(this.stateEn / 67108862); this.stateEn = Math.round((this.shuffle[a] + this.gen2) % 2147483563); this.shuffle[a] = this.gen1; return this.stateEn } function LEnint(a) { for (var c = 1; a >= c;) c <<= 1; for (c--; ;) { var b = this.next() & c; if (b <= a) return b } }
function LEcuyer(a) { this.shuffle = Array(32); this.gen1 = this.gen2 = a & 2147483647; for (a = 0; 19 > a; a++) this.gen1 = uGen(this.gen1, 40014, 53668, 12211, 2147483563); for (a = 0; 32 > a; a++) this.gen1 = uGen(this.gen1, 40014, 53668, 12211, 2147483563), this.shuffle[31 - a] = this.gen1; this.stateEn = this.shuffle[0]; this.next = LEnext; this.nextInt = LEnint };