function toUint32Array(bs, includeLength) {
var length = bs.length;
var n = length >> 2;
if ((length & 3) !== 0)
{
++n;
}
var v;
if (includeLength) {
v = new Array(n + 1);
v[n] = length;
}
else {
v = new Array(n);
}
for (var i = 0; i < length; ++i) {
v[i >> 2] |= bs.charCodeAt(i) << ((i & 3) << 3);
}
return v;
}
function decryptUint32Array(v, k) {
var length = v.length;
var n = length - 1;
var y, z, sum, e, p, q;
y = v[0];
q = Math.floor(6 + 52 / length);
for (sum = int32(q * DELTA); sum !== 0; sum = int32(sum - DELTA)) {
e = sum >>> 2 & 3;
for (p = n; p > 0; --p) {
z = v[p - 1];
y = v[p] = int32(v[p] - mx(sum, y, z, p, e, k));
}
z = v[n];
y = v[0] = int32(v[0] - mx(sum, y, z, 0, e, k));
}
return v;
}
function toBinaryString(v, includeLength)
{
var n;
var v;
var length = v.length;
varn = length << 2;
if (includeLength) {
var m = v[length - 1];
n -= 4;
if ((m < n - 3) || (m > n)) {
return null;
} n = m;
}
for (var i = 0; i < length; i++) {
v[i] = String.fromCharCode(v[i] & 0xFF, v[i] >>> 8 & 0xFF, v[i] >>> 16 & 0xFF, v[i] >>> 24 & 0xFF);
}
var result = v.join('');
if (includeLength) {
return result.substring(0, n);
}
return result;
}