200 lines
3.5 KiB
JavaScript
200 lines
3.5 KiB
JavaScript
module.exports = {
|
|
base64_encode: function (r) {
|
|
for (
|
|
var e,
|
|
a,
|
|
t,
|
|
h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
|
|
o = 0,
|
|
c = r.length,
|
|
d = "";
|
|
o < c;
|
|
|
|
) {
|
|
if (((e = 255 & r.charCodeAt(o++)), o == c)) {
|
|
(d += h.charAt(e >> 2)), (d += h.charAt((3 & e) << 4)), (d += "==");
|
|
break;
|
|
}
|
|
if (((a = r.charCodeAt(o++)), o == c)) {
|
|
(d += h.charAt(e >> 2)),
|
|
(d += h.charAt(((3 & e) << 4) | ((240 & a) >> 4))),
|
|
(d += h.charAt((15 & a) << 2)),
|
|
(d += "=");
|
|
break;
|
|
}
|
|
(t = r.charCodeAt(o++)),
|
|
(d += h.charAt(e >> 2)),
|
|
(d += h.charAt(((3 & e) << 4) | ((240 & a) >> 4))),
|
|
(d += h.charAt(((15 & a) << 2) | ((192 & t) >> 6))),
|
|
(d += h.charAt(63 & t));
|
|
}
|
|
return d;
|
|
},
|
|
base64_decode: function (r) {
|
|
for (
|
|
var e,
|
|
a,
|
|
t,
|
|
h,
|
|
o = new Array(
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
62,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
63,
|
|
52,
|
|
53,
|
|
54,
|
|
55,
|
|
56,
|
|
57,
|
|
58,
|
|
59,
|
|
60,
|
|
61,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
0,
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5,
|
|
6,
|
|
7,
|
|
8,
|
|
9,
|
|
10,
|
|
11,
|
|
12,
|
|
13,
|
|
14,
|
|
15,
|
|
16,
|
|
17,
|
|
18,
|
|
19,
|
|
20,
|
|
21,
|
|
22,
|
|
23,
|
|
24,
|
|
25,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
26,
|
|
27,
|
|
28,
|
|
29,
|
|
30,
|
|
31,
|
|
32,
|
|
33,
|
|
34,
|
|
35,
|
|
36,
|
|
37,
|
|
38,
|
|
39,
|
|
40,
|
|
41,
|
|
42,
|
|
43,
|
|
44,
|
|
45,
|
|
46,
|
|
47,
|
|
48,
|
|
49,
|
|
50,
|
|
51,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1,
|
|
-1
|
|
),
|
|
c = 0,
|
|
d = r.length,
|
|
i = "";
|
|
c < d;
|
|
|
|
) {
|
|
do {
|
|
e = o[255 & r.charCodeAt(c++)];
|
|
} while (c < d && -1 == e);
|
|
if (-1 == e) break;
|
|
do {
|
|
a = o[255 & r.charCodeAt(c++)];
|
|
} while (c < d && -1 == a);
|
|
if (-1 == a) break;
|
|
i += String.fromCharCode((e << 2) | ((48 & a) >> 4));
|
|
do {
|
|
if (61 == (t = 255 & r.charCodeAt(c++))) return i;
|
|
t = o[t];
|
|
} while (c < d && -1 == t);
|
|
if (-1 == t) break;
|
|
i += String.fromCharCode(((15 & a) << 4) | ((60 & t) >> 2));
|
|
do {
|
|
if (61 == (h = 255 & r.charCodeAt(c++))) return i;
|
|
h = o[h];
|
|
} while (c < d && -1 == h);
|
|
if (-1 == h) break;
|
|
i += String.fromCharCode(((3 & t) << 6) | h);
|
|
}
|
|
return i;
|
|
},
|
|
};
|