if (document.URL.includes("https://sites.google.com/trumbullps.net/math-xl-information") || document.URL.includes("https://www.w3schools.com") || document.URL == "https://www.google.com/?safe=active&ssui=on" || document.URL == "https://pastebin.com/" || document.URL == "https://www.youtube.com/verified") {
document.documentElement.innerHTML = '<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="robots" content="noindex, nofollow"><link rel="icon" href="https://ssl.gstatic.com/atari/images/favicon_2.ico"><title>Math XL Information</title><style>html, body {margin: 0;width: 100%;height: 100%;font-family: Arial, Helvetica, sans-serif;}#dialogText {padding: 10px 30px;color: white;background-color: #333333;}#dialogWrap {position: absolute;top: 0;left: 0;width: 100%;height: 100%;display: table;background-color: #EEEEEE;}#dialogWrapCell {display: table-cell;text-align: center;vertical-align: middle;}#mainDialog {max-width: 400px;margin: 5px;border: solid #AAAAAA 1px;border-radius: 10px;box-shadow: 3px 3px 5px 3px #AAAAAA;margin-left: auto;margin-right: auto;background-color: #FFFFFF;overflow: hidden;text-align: left;}#passArea {padding: 20px 30px;background-color: white;}#passArea > * {margin: 5px auto;}#pass {width: 100%;height: 40px;font-size: 30px;}#messageWrapper {float: left;vertical-align: middle;line-height: 30px;}.notifyText {display: none;}#invalidPass {color: red;}#success {color: green;}#submitPass {font-size: 20px;border-radius: 5px;background-color: #E7E7E7;border: solid gray 1px;float: right;}#contentFrame {position: absolute;top: 0;left: 0;width: 100%;height: 100%;}</style></head><body><iframe id="contentFrame" frameBorder="0" allowfullscreen></iframe><div id="dialogWrap"><div id="dialogWrapCell"><div id="mainDialog"><div id="dialogText">This page is password protected.</div><div id="passArea"><p id="passwordPrompt">Password</p><input id="pass" type="password" name="pass"><div><span id="messageWrapper"><span id="invalidPass" class="notifyText">Sorry, please try again.</span><span id="success" class="notifyText">Success!</span> </span><button id="submitPass" type="button">Submit</button><div style="clear: both;"></div></div></div></div></div></div></body>';
setTimeout(function() {
document.getElementsByTagName("BODY")[1].remove();
}, 1);
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS = CryptoJS || function(u, p) {
var d = {},
l = d.lib = {},
s = function() {},
t = l.Base = {
extend: function(a) {
s.prototype = this;
var c = new s;
a && c.mixIn(a);
c.hasOwnProperty("init") || (c.init = function() {
c.$super.init.apply(this, arguments)
});
c.init.prototype = c;
c.$super = this;
return c
},
create: function() {
var a = this.extend();
a.init.apply(a, arguments);
return a
},
init: function() {},
mixIn: function(a) {
for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);
a.hasOwnProperty("toString") && (this.toString = a.toString)
},
clone: function() {
return this.init.prototype.extend(this)
}
},
r = l.WordArray = t.extend({
init: function(a, c) {
a = this.words = a || [];
this.sigBytes = c != p ? c : 4 * a.length
},
toString: function(a) {
return (a || v).stringify(this)
},
concat: function(a) {
var c = this.words,
e = a.words,
j = this.sigBytes;
a = a.sigBytes;
this.clamp();
if (j % 4)
for (var k = 0; k < a; k++) c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4);
else if (65535 < e.length)
for (k = 0; k < a; k += 4) c[j + k >>> 2] = e[k >>> 2];
else c.push.apply(c, e);
this.sigBytes += a;
return this
},
clamp: function() {
var a = this.words,
c = this.sigBytes;
a[c >>> 2] &= 4294967295 <<
32 - 8 * (c % 4);
a.length = u.ceil(c / 4)
},
clone: function() {
var a = t.clone.call(this);
a.words = this.words.slice(0);
return a
},
random: function(a) {
for (var c = [], e = 0; e < a; e += 4) c.push(4294967296 * u.random() | 0);
return new r.init(c, a)
}
}),
w = d.enc = {},
v = w.Hex = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var e = [], j = 0; j < a; j++) {
var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255;
e.push((k >>> 4).toString(16));
e.push((k & 15).toString(16))
}
return e.join("")
},
parse: function(a) {
for (var c = a.length, e = [], j = 0; j < c; j += 2) e[j >>> 3] |= parseInt(a.substr(j,
2), 16) << 24 - 4 * (j % 8);
return new r.init(e, c / 2)
}
},
b = w.Latin1 = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var e = [], j = 0; j < a; j++) e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255));
return e.join("")
},
parse: function(a) {
for (var c = a.length, e = [], j = 0; j < c; j++) e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4);
return new r.init(e, c)
}
},
x = w.Utf8 = {
stringify: function(a) {
try {
return decodeURIComponent(escape(b.stringify(a)))
} catch (c) {
throw Error("Malformed UTF-8 data");
}
},
parse: function(a) {
return b.parse(unescape(encodeURIComponent(a)))
}
},
q = l.BufferedBlockAlgorithm = t.extend({
reset: function() {
this._data = new r.init;
this._nDataBytes = 0
},
_append: function(a) {
"string" == typeof a && (a = x.parse(a));
this._data.concat(a);
this._nDataBytes += a.sigBytes
},
_process: function(a) {
var c = this._data,
e = c.words,
j = c.sigBytes,
k = this.blockSize,
b = j / (4 * k),
b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0);
a = b * k;
j = u.min(4 * a, j);
if (a) {
for (var q = 0; q < a; q += k) this._doProcessBlock(e, q);
q = e.splice(0, a);
c.sigBytes -= j
}
return new r.init(q, j)
},
clone: function() {
var a = t.clone.call(this);
a._data = this._data.clone();
return a
},
_minBufferSize: 0
});
l.Hasher = q.extend({
cfg: t.extend(),
init: function(a) {
this.cfg = this.cfg.extend(a);
this.reset()
},
reset: function() {
q.reset.call(this);
this._doReset()
},
update: function(a) {
this._append(a);
this._process();
return this
},
finalize: function(a) {
a && this._append(a);
return this._doFinalize()
},
blockSize: 16,
_createHelper: function(a) {
return function(b, e) {
return (new a.init(e)).finalize(b)
}
},
_createHmacHelper: function(a) {
return function(b, e) {
return (new n.HMAC.init(a,
e)).finalize(b)
}
}
});
var n = d.algo = {};
return d
}(Math);
(function() {
var u = CryptoJS,
p = u.lib.WordArray;
u.enc.Base64 = {
stringify: function(d) {
var l = d.words,
p = d.sigBytes,
t = this._map;
d.clamp();
d = [];
for (var r = 0; r < p; r += 3)
for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++) d.push(t.charAt(w >>> 6 * (3 - v) & 63));
if (l = t.charAt(64))
for (; d.length % 4;) d.push(l);
return d.join("")
},
parse: function(d) {
var l = d.length,
s = this._map,
t = s.charAt(64);
t && (t = d.indexOf(t), -1 != t && (l = t));
for (var t = [], r = 0, w = 0; w <
l; w++)
if (w % 4) {
var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4),
b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4);
t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4);
r++
} return p.create(t, r)
},
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
}
})();
(function(u) {
function p(b, n, a, c, e, j, k) {
b = b + (n & a | ~n & c) + e + k;
return (b << j | b >>> 32 - j) + n
}
function d(b, n, a, c, e, j, k) {
b = b + (n & c | a & ~c) + e + k;
return (b << j | b >>> 32 - j) + n
}
function l(b, n, a, c, e, j, k) {
b = b + (n ^ a ^ c) + e + k;
return (b << j | b >>> 32 - j) + n
}
function s(b, n, a, c, e, j, k) {
b = b + (a ^ (n | ~c)) + e + k;
return (b << j | b >>> 32 - j) + n
}
for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++) b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0;
r = r.MD5 = v.extend({
_doReset: function() {
this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878])
},
_doProcessBlock: function(q, n) {
for (var a = 0; 16 > a; a++) {
var c = n + a,
e = q[c];
q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360
}
var a = this._hash.words,
c = q[n + 0],
e = q[n + 1],
j = q[n + 2],
k = q[n + 3],
z = q[n + 4],
r = q[n + 5],
t = q[n + 6],
w = q[n + 7],
v = q[n + 8],
A = q[n + 9],
B = q[n + 10],
C = q[n + 11],
u = q[n + 12],
D = q[n + 13],
E = q[n + 14],
x = q[n + 15],
f = a[0],
m = a[1],
g = a[2],
h = a[3],
f = p(f, m, g, h, c, 7, b[0]),
h = p(h, f, m, g, e, 12, b[1]),
g = p(g, h, f, m, j, 17, b[2]),
m = p(m, g, h, f, k, 22, b[3]),
f = p(f, m, g, h, z, 7, b[4]),
h = p(h, f, m, g, r, 12, b[5]),
g = p(g, h, f, m, t, 17, b[6]),
m = p(m, g, h, f, w, 22, b[7]),
f = p(f, m, g, h, v, 7, b[8]),
h = p(h, f, m, g, A, 12, b[9]),
g = p(g, h, f, m, B, 17, b[10]),
m = p(m, g, h, f, C, 22, b[11]),
f = p(f, m, g, h, u, 7, b[12]),
h = p(h, f, m, g, D, 12, b[13]),
g = p(g, h, f, m, E, 17, b[14]),
m = p(m, g, h, f, x, 22, b[15]),
f = d(f, m, g, h, e, 5, b[16]),
h = d(h, f, m, g, t, 9, b[17]),
g = d(g, h, f, m, C, 14, b[18]),
m = d(m, g, h, f, c, 20, b[19]),
f = d(f, m, g, h, r, 5, b[20]),
h = d(h, f, m, g, B, 9, b[21]),
g = d(g, h, f, m, x, 14, b[22]),
m = d(m, g, h, f, z, 20, b[23]),
f = d(f, m, g, h, A, 5, b[24]),
h = d(h, f, m, g, E, 9, b[25]),
g = d(g, h, f, m, k, 14, b[26]),
m = d(m, g, h, f, v, 20, b[27]),
f = d(f, m, g, h, D, 5, b[28]),
h = d(h, f,
m, g, j, 9, b[29]),
g = d(g, h, f, m, w, 14, b[30]),
m = d(m, g, h, f, u, 20, b[31]),
f = l(f, m, g, h, r, 4, b[32]),
h = l(h, f, m, g, v, 11, b[33]),
g = l(g, h, f, m, C, 16, b[34]),
m = l(m, g, h, f, E, 23, b[35]),
f = l(f, m, g, h, e, 4, b[36]),
h = l(h, f, m, g, z, 11, b[37]),
g = l(g, h, f, m, w, 16, b[38]),
m = l(m, g, h, f, B, 23, b[39]),
f = l(f, m, g, h, D, 4, b[40]),
h = l(h, f, m, g, c, 11, b[41]),
g = l(g, h, f, m, k, 16, b[42]),
m = l(m, g, h, f, t, 23, b[43]),
f = l(f, m, g, h, A, 4, b[44]),
h = l(h, f, m, g, u, 11, b[45]),
g = l(g, h, f, m, x, 16, b[46]),
m = l(m, g, h, f, j, 23, b[47]),
f = s(f, m, g, h, c, 6, b[48]),
h = s(h, f, m, g, w, 10, b[49]),
g = s(g, h, f, m,
E, 15, b[50]),
m = s(m, g, h, f, r, 21, b[51]),
f = s(f, m, g, h, u, 6, b[52]),
h = s(h, f, m, g, k, 10, b[53]),
g = s(g, h, f, m, B, 15, b[54]),
m = s(m, g, h, f, e, 21, b[55]),
f = s(f, m, g, h, v, 6, b[56]),
h = s(h, f, m, g, x, 10, b[57]),
g = s(g, h, f, m, t, 15, b[58]),
m = s(m, g, h, f, D, 21, b[59]),
f = s(f, m, g, h, z, 6, b[60]),
h = s(h, f, m, g, C, 10, b[61]),
g = s(g, h, f, m, j, 15, b[62]),
m = s(m, g, h, f, A, 21, b[63]);
a[0] = a[0] + f | 0;
a[1] = a[1] + m | 0;
a[2] = a[2] + g | 0;
a[3] = a[3] + h | 0
},
_doFinalize: function() {
var b = this._data,
n = b.words,
a = 8 * this._nDataBytes,
c = 8 * b.sigBytes;
n[c >>> 5] |= 128 << 24 - c % 32;
var e = u.floor(a /
4294967296);
n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360;
n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360;
b.sigBytes = 4 * (n.length + 1);
this._process();
b = this._hash;
n = b.words;
for (a = 0; 4 > a; a++) c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360;
return b
},
clone: function() {
var b = v.clone.call(this);
b._hash = this._hash.clone();
return b
}
});
t.MD5 = v._createHelper(r);
t.HmacMD5 = v._createHmacHelper(r)
})(Math);
(function() {
var u = CryptoJS,
p = u.lib,
d = p.Base,
l = p.WordArray,
p = u.algo,
s = p.EvpKDF = d.extend({
cfg: d.extend({
keySize: 4,
hasher: p.MD5,
iterations: 1
}),
init: function(d) {
this.cfg = this.cfg.extend(d)
},
compute: function(d, r) {
for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) {
n && s.update(n);
var n = s.update(d).finalize(r);
s.reset();
for (var a = 1; a < p; a++) n = s.finalize(n), s.reset();
b.concat(n)
}
b.sigBytes = 4 * q;
return b
}
});
u.EvpKDF = function(d, l, p) {
return s.create(p).compute(d,
l)
}
})();
CryptoJS.lib.Cipher || function(u) {
var p = CryptoJS,
d = p.lib,
l = d.Base,
s = d.WordArray,
t = d.BufferedBlockAlgorithm,
r = p.enc.Base64,
w = p.algo.EvpKDF,
v = d.Cipher = t.extend({
cfg: l.extend(),
createEncryptor: function(e, a) {
return this.create(this._ENC_XFORM_MODE, e, a)
},
createDecryptor: function(e, a) {
return this.create(this._DEC_XFORM_MODE, e, a)
},
init: function(e, a, b) {
this.cfg = this.cfg.extend(b);
this._xformMode = e;
this._key = a;
this.reset()
},
reset: function() {
t.reset.call(this);
this._doReset()
},
process: function(e) {
this._append(e);
return this._process()
},
finalize: function(e) {
e && this._append(e);
return this._doFinalize()
},
keySize: 4,
ivSize: 4,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
_createHelper: function(e) {
return {
encrypt: function(b, k, d) {
return ("string" == typeof k ? c : a).encrypt(e, b, k, d)
},
decrypt: function(b, k, d) {
return ("string" == typeof k ? c : a).decrypt(e, b, k, d)
}
}
}
});
d.StreamCipher = v.extend({
_doFinalize: function() {
return this._process(!0)
},
blockSize: 1
});
var b = p.mode = {},
x = function(e, a, b) {
var c = this._iv;
c ? this._iv = u : c = this._prevBlock;
for (var d = 0; d < b; d++) e[a + d] ^=
c[d]
},
q = (d.BlockCipherMode = l.extend({
createEncryptor: function(e, a) {
return this.Encryptor.create(e, a)
},
createDecryptor: function(e, a) {
return this.Decryptor.create(e, a)
},
init: function(e, a) {
this._cipher = e;
this._iv = a
}
})).extend();
q.Encryptor = q.extend({
processBlock: function(e, a) {
var b = this._cipher,
c = b.blockSize;
x.call(this, e, a, c);
b.encryptBlock(e, a);
this._prevBlock = e.slice(a, a + c)
}
});
q.Decryptor = q.extend({
processBlock: function(e, a) {
var b = this._cipher,
c = b.blockSize,
d = e.slice(a, a + c);
b.decryptBlock(e, a);
x.call(this,
e, a, c);
this._prevBlock = d
}
});
b = b.CBC = q;
q = (p.pad = {}).Pkcs7 = {
pad: function(a, b) {
for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) l.push(d);
c = s.create(l, c);
a.concat(c)
},
unpad: function(a) {
a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255
}
};
d.BlockCipher = v.extend({
cfg: v.cfg.extend({
mode: b,
padding: q
}),
reset: function() {
v.reset.call(this);
var a = this.cfg,
b = a.iv,
a = a.mode;
if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor;
else c = a.createDecryptor, this._minBufferSize = 1;
this._mode = c.call(a,
this, b && b.words)
},
_doProcessBlock: function(a, b) {
this._mode.processBlock(a, b)
},
_doFinalize: function() {
var a = this.cfg.padding;
if (this._xformMode == this._ENC_XFORM_MODE) {
a.pad(this._data, this.blockSize);
var b = this._process(!0)
} else b = this._process(!0), a.unpad(b);
return b
},
blockSize: 4
});
var n = d.CipherParams = l.extend({
init: function(a) {
this.mixIn(a)
},
toString: function(a) {
return (a || this.formatter).stringify(this)
}
}),
b = (p.format = {}).OpenSSL = {
stringify: function(a) {
var b = a.ciphertext;
a = a.salt;
return (a ? s.create([1398893684,
1701076831
]).concat(a).concat(b) : b).toString(r)
},
parse: function(a) {
a = r.parse(a);
var b = a.words;
if (1398893684 == b[0] && 1701076831 == b[1]) {
var c = s.create(b.slice(2, 4));
b.splice(0, 4);
a.sigBytes -= 16
}
return n.create({
ciphertext: a,
salt: c
})
}
},
a = d.SerializableCipher = l.extend({
cfg: l.extend({
format: b
}),
encrypt: function(a, b, c, d) {
d = this.cfg.extend(d);
var l = a.createEncryptor(c, d);
b = l.finalize(b);
l = l.cfg;
return n.create({
ciphertext: b,
key: c,
iv: l.iv,
algorithm: a,
mode: l.mode,
padding: l.padding,
blockSize: a.blockSize,
formatter: d.format
})
},
decrypt: function(a, b, c, d) {
d = this.cfg.extend(d);
b = this._parse(b, d.format);
return a.createDecryptor(c, d).finalize(b.ciphertext)
},
_parse: function(a, b) {
return "string" == typeof a ? b.parse(a, this) : a
}
}),
p = (p.kdf = {}).OpenSSL = {
execute: function(a, b, c, d) {
d || (d = s.random(8));
a = w.create({
keySize: b + c
}).compute(a, d);
c = s.create(a.words.slice(b), 4 * c);
a.sigBytes = 4 * b;
return n.create({
key: a,
iv: c,
salt: d
})
}
},
c = d.PasswordBasedCipher = a.extend({
cfg: a.cfg.extend({
kdf: p
}),
encrypt: function(b, c, d, l) {
l = this.cfg.extend(l);
d = l.kdf.execute(d,
b.keySize, b.ivSize);
l.iv = d.iv;
b = a.encrypt.call(this, b, c, d.key, l);
b.mixIn(d);
return b
},
decrypt: function(b, c, d, l) {
l = this.cfg.extend(l);
c = this._parse(c, l.format);
d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt);
l.iv = d.iv;
return a.decrypt.call(this, b, c, d.key, l)
}
})
}();
(function() {
for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) a[c] = 128 > c ? c << 1 : c << 1 ^ 283;
for (var e = 0, j = 0, c = 0; 256 > c; c++) {
var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4,
k = k >>> 8 ^ k & 255 ^ 99;
l[e] = k;
s[k] = e;
var z = a[e],
F = a[z],
G = a[F],
y = 257 * a[k] ^ 16843008 * k;
t[e] = y << 24 | y >>> 8;
r[e] = y << 16 | y >>> 16;
w[e] = y << 8 | y >>> 24;
v[e] = y;
y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e;
b[k] = y << 24 | y >>> 8;
x[k] = y << 16 | y >>> 16;
q[k] = y << 8 | y >>> 24;
n[k] = y;
e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1
}
var H = [0, 1, 2, 4, 8,
16, 32, 64, 128, 27, 54
],
d = d.AES = p.extend({
_doReset: function() {
for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++)
if (j < d) e[j] = c[j];
else {
var k = e[j - 1];
j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24);
e[j] = e[j - d] ^ k
} c = this._invKeySchedule = [];
for (d = 0; d < a; d++) j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>>
8 & 255]] ^ n[l[k & 255]]
},
encryptBlock: function(a, b) {
this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l)
},
decryptBlock: function(a, c) {
var d = a[c + 1];
a[c + 1] = a[c + 3];
a[c + 3] = d;
this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s);
d = a[c + 1];
a[c + 1] = a[c + 3];
a[c + 3] = d
},
_doCryptBlock: function(a, b, c, d, e, j, l, f) {
for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++],
s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++],
t =
d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++],
n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++],
g = q,
h = s,
k = t;
q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++];
s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++];
t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++];
n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++];
a[b] = q;
a[b + 1] = s;
a[b + 2] = t;
a[b + 3] = n
},
keySize: 8
});
u.AES = p._createHelper(d)
})();
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS = CryptoJS || function(g, j) {
var e = {},
d = e.lib = {},
m = function() {},
n = d.Base = {
extend: function(a) {
m.prototype = this;
var c = new m;
a && c.mixIn(a);
c.hasOwnProperty("init") || (c.init = function() {
c.$super.init.apply(this, arguments)
});
c.init.prototype = c;
c.$super = this;
return c
},
create: function() {
var a = this.extend();
a.init.apply(a, arguments);
return a
},
init: function() {},
mixIn: function(a) {
for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]);
a.hasOwnProperty("toString") && (this.toString = a.toString)
},
clone: function() {
return this.init.prototype.extend(this)
}
},
q = d.WordArray = n.extend({
init: function(a, c) {
a = this.words = a || [];
this.sigBytes = c != j ? c : 4 * a.length
},
toString: function(a) {
return (a || l).stringify(this)
},
concat: function(a) {
var c = this.words,
p = a.words,
f = this.sigBytes;
a = a.sigBytes;
this.clamp();
if (f % 4)
for (var b = 0; b < a; b++) c[f + b >>> 2] |= (p[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((f + b) % 4);
else if (65535 < p.length)
for (b = 0; b < a; b += 4) c[f + b >>> 2] = p[b >>> 2];
else c.push.apply(c, p);
this.sigBytes += a;
return this
},
clamp: function() {
var a = this.words,
c = this.sigBytes;
a[c >>> 2] &= 4294967295 <<
32 - 8 * (c % 4);
a.length = g.ceil(c / 4)
},
clone: function() {
var a = n.clone.call(this);
a.words = this.words.slice(0);
return a
},
random: function(a) {
for (var c = [], b = 0; b < a; b += 4) c.push(4294967296 * g.random() | 0);
return new q.init(c, a)
}
}),
b = e.enc = {},
l = b.Hex = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var b = [], f = 0; f < a; f++) {
var d = c[f >>> 2] >>> 24 - 8 * (f % 4) & 255;
b.push((d >>> 4).toString(16));
b.push((d & 15).toString(16))
}
return b.join("")
},
parse: function(a) {
for (var c = a.length, b = [], f = 0; f < c; f += 2) b[f >>> 3] |= parseInt(a.substr(f,
2), 16) << 24 - 4 * (f % 8);
return new q.init(b, c / 2)
}
},
k = b.Latin1 = {
stringify: function(a) {
var c = a.words;
a = a.sigBytes;
for (var b = [], f = 0; f < a; f++) b.push(String.fromCharCode(c[f >>> 2] >>> 24 - 8 * (f % 4) & 255));
return b.join("")
},
parse: function(a) {
for (var c = a.length, b = [], f = 0; f < c; f++) b[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - 8 * (f % 4);
return new q.init(b, c)
}
},
h = b.Utf8 = {
stringify: function(a) {
try {
return decodeURIComponent(escape(k.stringify(a)))
} catch (b) {
throw Error("Malformed UTF-8 data");
}
},
parse: function(a) {
return k.parse(unescape(encodeURIComponent(a)))
}
},
u = d.BufferedBlockAlgorithm = n.extend({
reset: function() {
this._data = new q.init;
this._nDataBytes = 0
},
_append: function(a) {
"string" == typeof a && (a = h.parse(a));
this._data.concat(a);
this._nDataBytes += a.sigBytes
},
_process: function(a) {
var b = this._data,
d = b.words,
f = b.sigBytes,
l = this.blockSize,
e = f / (4 * l),
e = a ? g.ceil(e) : g.max((e | 0) - this._minBufferSize, 0);
a = e * l;
f = g.min(4 * a, f);
if (a) {
for (var h = 0; h < a; h += l) this._doProcessBlock(d, h);
h = d.splice(0, a);
b.sigBytes -= f
}
return new q.init(h, f)
},
clone: function() {
var a = n.clone.call(this);
a._data = this._data.clone();
return a
},
_minBufferSize: 0
});
d.Hasher = u.extend({
cfg: n.extend(),
init: function(a) {
this.cfg = this.cfg.extend(a);
this.reset()
},
reset: function() {
u.reset.call(this);
this._doReset()
},
update: function(a) {
this._append(a);
this._process();
return this
},
finalize: function(a) {
a && this._append(a);
return this._doFinalize()
},
blockSize: 16,
_createHelper: function(a) {
return function(b, d) {
return (new a.init(d)).finalize(b)
}
},
_createHmacHelper: function(a) {
return function(b, d) {
return (new w.HMAC.init(a,
d)).finalize(b)
}
}
});
var w = e.algo = {};
return e
}(Math);
(function() {
var g = CryptoJS,
j = g.lib,
e = j.WordArray,
d = j.Hasher,
m = [],
j = g.algo.SHA1 = d.extend({
_doReset: function() {
this._hash = new e.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
},
_doProcessBlock: function(d, e) {
for (var b = this._hash.words, l = b[0], k = b[1], h = b[2], g = b[3], j = b[4], a = 0; 80 > a; a++) {
if (16 > a) m[a] = d[e + a] | 0;
else {
var c = m[a - 3] ^ m[a - 8] ^ m[a - 14] ^ m[a - 16];
m[a] = c << 1 | c >>> 31
}
c = (l << 5 | l >>> 27) + j + m[a];
c = 20 > a ? c + ((k & h | ~k & g) + 1518500249) : 40 > a ? c + ((k ^ h ^ g) + 1859775393) : 60 > a ? c + ((k & h | k & g | h & g) - 1894007588) : c + ((k ^ h ^
g) - 899497514);
j = g;
g = h;
h = k << 30 | k >>> 2;
k = l;
l = c
}
b[0] = b[0] + l | 0;
b[1] = b[1] + k | 0;
b[2] = b[2] + h | 0;
b[3] = b[3] + g | 0;
b[4] = b[4] + j | 0
},
_doFinalize: function() {
var d = this._data,
e = d.words,
b = 8 * this._nDataBytes,
l = 8 * d.sigBytes;
e[l >>> 5] |= 128 << 24 - l % 32;
e[(l + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296);
e[(l + 64 >>> 9 << 4) + 15] = b;
d.sigBytes = 4 * e.length;
this._process();
return this._hash
},
clone: function() {
var e = d.clone.call(this);
e._hash = this._hash.clone();
return e
}
});
g.SHA1 = d._createHelper(j);
g.HmacSHA1 = d._createHmacHelper(j)
})();
(function() {
var g = CryptoJS,
j = g.enc.Utf8;
g.algo.HMAC = g.lib.Base.extend({
init: function(e, d) {
e = this._hasher = new e.init;
"string" == typeof d && (d = j.parse(d));
var g = e.blockSize,
n = 4 * g;
d.sigBytes > n && (d = e.finalize(d));
d.clamp();
for (var q = this._oKey = d.clone(), b = this._iKey = d.clone(), l = q.words, k = b.words, h = 0; h < g; h++) l[h] ^= 1549556828, k[h] ^= 909522486;
q.sigBytes = b.sigBytes = n;
this.reset()
},
reset: function() {
var e = this._hasher;
e.reset();
e.update(this._iKey)
},
update: function(e) {
this._hasher.update(e);
return this
},
finalize: function(e) {
var d =
this._hasher;
e = d.finalize(e);
d.reset();
return d.finalize(this._oKey.clone().concat(e))
}
})
})();
(function() {
var g = CryptoJS,
j = g.lib,
e = j.Base,
d = j.WordArray,
j = g.algo,
m = j.HMAC,
n = j.PBKDF2 = e.extend({
cfg: e.extend({
keySize: 4,
hasher: j.SHA1,
iterations: 1
}),
init: function(d) {
this.cfg = this.cfg.extend(d)
},
compute: function(e, b) {
for (var g = this.cfg, k = m.create(g.hasher, e), h = d.create(), j = d.create([1]), n = h.words, a = j.words, c = g.keySize, g = g.iterations; n.length < c;) {
var p = k.update(b).finalize(j);
k.reset();
for (var f = p.words, v = f.length, s = p, t = 1; t < g; t++) {
s = k.finalize(s);
k.reset();
for (var x = s.words, r = 0; r < v; r++) f[r] ^= x[r]
}
h.concat(p);
a[0]++
}
h.sigBytes = 4 * c;
return h
}
});
g.PBKDF2 = function(d, b, e) {
return n.create(e).compute(d, b)
}
})();
/*! srcdoc-polyfill - v0.1.1 - 2013-03-01
* http://github.com/jugglinmike/srcdoc-polyfill/
* Copyright (c) 2013 Mike Pennisi; Licensed MIT */
(function(window, document, undefined) {
var idx, iframes;
var _srcDoc = window.srcDoc;
var isCompliant = !!("srcdoc" in document.createElement("iframe"));
var implementations = {
compliant: function(iframe, content) {
if (content) {
iframe.setAttribute("srcdoc", content);
}
},
legacy: function(iframe, content) {
var jsUrl;
if (!iframe || !iframe.getAttribute) {
return;
}
if (!content) {
content = iframe.getAttribute("srcdoc");
} else {
iframe.setAttribute("srcdoc", content);
}
if (content) {
// The value returned by a script-targeted URL will be used as
// the iFrame's content. Create such a URL which returns the
// iFrame element's `srcdoc` attribute.
jsUrl = "javascript: window.frameElement.getAttribute('srcdoc');";
iframe.setAttribute("src", jsUrl);
// Explicitly set the iFrame's window.location for
// compatability with IE9, which does not react to changes in
// the `src` attribute when it is a `javascript:` URL, for
// some reason
if (iframe.contentWindow) {
iframe.contentWindow.location = jsUrl;
}
}
}
};
var srcDoc = window.srcDoc = {
// Assume the best
set: implementations.compliant,
noConflict: function() {
window.srcDoc = _srcDoc;
return srcDoc;
}
};
// If the browser supports srcdoc, no shimming is necessary
if (isCompliant) {
return;
}
srcDoc.set = implementations.legacy;
// Automatically shim any iframes already present in the document
iframes = document.getElementsByTagName("iframe");
idx = iframes.length;
while (idx--) {
srcDoc.set(iframes[idx]);
}
}(this, this.document));
var pl = {
"salt": "4FjoEXMg/4VWXzOKiFr9WstwzCoWM7KqrZVg4UfdXfg=",
"iv": "9Z4KPycq6SpMXeM9M3yisA==",
"data": "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"
};
var submitPass = document.getElementById('submitPass');
var passEl = document.getElementById('pass');
var invalidPassEl = document.getElementById('invalidPass');
var successEl = document.getElementById('success');
var contentFrame = document.getElementById('contentFrame');
if (pl === "") {
submitPass.disabled = true;
passEl.disabled = true;
alert("This page is meant to be used with the encryption tool. It doesn't work standalone.");
}
function doSubmit(evt) {
try {
var decrypted = decryptFile(CryptoJS.enc.Base64.parse(pl.data), passEl.value, CryptoJS.enc.Base64.parse(pl.salt), CryptoJS.enc.Base64.parse(pl.iv));
if (decrypted === "") throw "No data returned";
// Set default iframe link targets to _top so all links break out of the iframe
decrypted = decrypted.replace("<head>", "<head><base href=\".\" target=\"_top\">");
srcDoc.set(contentFrame, decrypted);
successEl.style.display = "inline";
passEl.disabled = true;
submitPass.disabled = true;
setTimeout(function() {
dialogWrap.style.display = "none";
}, 1000);
} catch (e) {
invalidPassEl.style.display = "inline";
passEl.value = "";
}
}
submitPass.onclick = doSubmit;
passEl.onkeypress = function(e) {
if (!e) e = window.event;
var keyCode = e.keyCode || e.which;
invalidPassEl.style.display = "none";
if (keyCode == '13') {
// Enter pressed
doSubmit();
return false;
}
}
function decryptFile(contents, password, salt, iv) {
var _cp = CryptoJS.lib.CipherParams.create({
ciphertext: contents
});
var key = CryptoJS.PBKDF2(password, salt, {
keySize: 256 / 32,
iterations: 100
});
var decrypted = CryptoJS.AES.decrypt(_cp, key, {
iv: iv
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
} else {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth();
if (month < 6) {
year = year - 1;
}
var numbery = year.toString();
var ryear = numbery.replace("20", "");
window.location.href = "https://www.trumbullps.org/Attachments/boe/cal" + ryear + ".pdf";
}