@ecodev/natural 44.0.2 → 44.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/modules/avatar/service/md5.mjs +207 -0
- package/esm2020/lib/modules/avatar/sources/gravatar.mjs +4 -4
- package/fesm2015/ecodev-natural.mjs +209 -3
- package/fesm2015/ecodev-natural.mjs.map +1 -1
- package/fesm2020/ecodev-natural.mjs +209 -3
- package/fesm2020/ecodev-natural.mjs.map +1 -1
- package/lib/modules/avatar/service/md5.d.ts +1 -0
- package/package.json +1 -2
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
export function md5(string) {
|
|
2
|
+
const x = convertToWordArray(utf8Encode(string));
|
|
3
|
+
const S11 = 7;
|
|
4
|
+
const S12 = 12;
|
|
5
|
+
const S13 = 17;
|
|
6
|
+
const S14 = 22;
|
|
7
|
+
const S21 = 5;
|
|
8
|
+
const S22 = 9;
|
|
9
|
+
const S23 = 14;
|
|
10
|
+
const S24 = 20;
|
|
11
|
+
const S31 = 4;
|
|
12
|
+
const S32 = 11;
|
|
13
|
+
const S33 = 16;
|
|
14
|
+
const S34 = 23;
|
|
15
|
+
const S41 = 6;
|
|
16
|
+
const S42 = 10;
|
|
17
|
+
const S43 = 15;
|
|
18
|
+
const S44 = 21;
|
|
19
|
+
let a = 0x67452301;
|
|
20
|
+
let b = 0xefcdab89;
|
|
21
|
+
let c = 0x98badcfe;
|
|
22
|
+
let d = 0x10325476;
|
|
23
|
+
for (let k = 0; k < x.length; k += 16) {
|
|
24
|
+
const AA = a;
|
|
25
|
+
const BB = b;
|
|
26
|
+
const CC = c;
|
|
27
|
+
const DD = d;
|
|
28
|
+
a = FF(a, b, c, d, x[k], S11, 0xd76aa478);
|
|
29
|
+
d = FF(d, a, b, c, x[k + 1], S12, 0xe8c7b756);
|
|
30
|
+
c = FF(c, d, a, b, x[k + 2], S13, 0x242070db);
|
|
31
|
+
b = FF(b, c, d, a, x[k + 3], S14, 0xc1bdceee);
|
|
32
|
+
a = FF(a, b, c, d, x[k + 4], S11, 0xf57c0faf);
|
|
33
|
+
d = FF(d, a, b, c, x[k + 5], S12, 0x4787c62a);
|
|
34
|
+
c = FF(c, d, a, b, x[k + 6], S13, 0xa8304613);
|
|
35
|
+
b = FF(b, c, d, a, x[k + 7], S14, 0xfd469501);
|
|
36
|
+
a = FF(a, b, c, d, x[k + 8], S11, 0x698098d8);
|
|
37
|
+
d = FF(d, a, b, c, x[k + 9], S12, 0x8b44f7af);
|
|
38
|
+
c = FF(c, d, a, b, x[k + 10], S13, 0xffff5bb1);
|
|
39
|
+
b = FF(b, c, d, a, x[k + 11], S14, 0x895cd7be);
|
|
40
|
+
a = FF(a, b, c, d, x[k + 12], S11, 0x6b901122);
|
|
41
|
+
d = FF(d, a, b, c, x[k + 13], S12, 0xfd987193);
|
|
42
|
+
c = FF(c, d, a, b, x[k + 14], S13, 0xa679438e);
|
|
43
|
+
b = FF(b, c, d, a, x[k + 15], S14, 0x49b40821);
|
|
44
|
+
a = GG(a, b, c, d, x[k + 1], S21, 0xf61e2562);
|
|
45
|
+
d = GG(d, a, b, c, x[k + 6], S22, 0xc040b340);
|
|
46
|
+
c = GG(c, d, a, b, x[k + 11], S23, 0x265e5a51);
|
|
47
|
+
b = GG(b, c, d, a, x[k], S24, 0xe9b6c7aa);
|
|
48
|
+
a = GG(a, b, c, d, x[k + 5], S21, 0xd62f105d);
|
|
49
|
+
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
|
|
50
|
+
c = GG(c, d, a, b, x[k + 15], S23, 0xd8a1e681);
|
|
51
|
+
b = GG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8);
|
|
52
|
+
a = GG(a, b, c, d, x[k + 9], S21, 0x21e1cde6);
|
|
53
|
+
d = GG(d, a, b, c, x[k + 14], S22, 0xc33707d6);
|
|
54
|
+
c = GG(c, d, a, b, x[k + 3], S23, 0xf4d50d87);
|
|
55
|
+
b = GG(b, c, d, a, x[k + 8], S24, 0x455a14ed);
|
|
56
|
+
a = GG(a, b, c, d, x[k + 13], S21, 0xa9e3e905);
|
|
57
|
+
d = GG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8);
|
|
58
|
+
c = GG(c, d, a, b, x[k + 7], S23, 0x676f02d9);
|
|
59
|
+
b = GG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a);
|
|
60
|
+
a = HH(a, b, c, d, x[k + 5], S31, 0xfffa3942);
|
|
61
|
+
d = HH(d, a, b, c, x[k + 8], S32, 0x8771f681);
|
|
62
|
+
c = HH(c, d, a, b, x[k + 11], S33, 0x6d9d6122);
|
|
63
|
+
b = HH(b, c, d, a, x[k + 14], S34, 0xfde5380c);
|
|
64
|
+
a = HH(a, b, c, d, x[k + 1], S31, 0xa4beea44);
|
|
65
|
+
d = HH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9);
|
|
66
|
+
c = HH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60);
|
|
67
|
+
b = HH(b, c, d, a, x[k + 10], S34, 0xbebfbc70);
|
|
68
|
+
a = HH(a, b, c, d, x[k + 13], S31, 0x289b7ec6);
|
|
69
|
+
d = HH(d, a, b, c, x[k], S32, 0xeaa127fa);
|
|
70
|
+
c = HH(c, d, a, b, x[k + 3], S33, 0xd4ef3085);
|
|
71
|
+
b = HH(b, c, d, a, x[k + 6], S34, 0x4881d05);
|
|
72
|
+
a = HH(a, b, c, d, x[k + 9], S31, 0xd9d4d039);
|
|
73
|
+
d = HH(d, a, b, c, x[k + 12], S32, 0xe6db99e5);
|
|
74
|
+
c = HH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8);
|
|
75
|
+
b = HH(b, c, d, a, x[k + 2], S34, 0xc4ac5665);
|
|
76
|
+
a = II(a, b, c, d, x[k], S41, 0xf4292244);
|
|
77
|
+
d = II(d, a, b, c, x[k + 7], S42, 0x432aff97);
|
|
78
|
+
c = II(c, d, a, b, x[k + 14], S43, 0xab9423a7);
|
|
79
|
+
b = II(b, c, d, a, x[k + 5], S44, 0xfc93a039);
|
|
80
|
+
a = II(a, b, c, d, x[k + 12], S41, 0x655b59c3);
|
|
81
|
+
d = II(d, a, b, c, x[k + 3], S42, 0x8f0ccc92);
|
|
82
|
+
c = II(c, d, a, b, x[k + 10], S43, 0xffeff47d);
|
|
83
|
+
b = II(b, c, d, a, x[k + 1], S44, 0x85845dd1);
|
|
84
|
+
a = II(a, b, c, d, x[k + 8], S41, 0x6fa87e4f);
|
|
85
|
+
d = II(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0);
|
|
86
|
+
c = II(c, d, a, b, x[k + 6], S43, 0xa3014314);
|
|
87
|
+
b = II(b, c, d, a, x[k + 13], S44, 0x4e0811a1);
|
|
88
|
+
a = II(a, b, c, d, x[k + 4], S41, 0xf7537e82);
|
|
89
|
+
d = II(d, a, b, c, x[k + 11], S42, 0xbd3af235);
|
|
90
|
+
c = II(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb);
|
|
91
|
+
b = II(b, c, d, a, x[k + 9], S44, 0xeb86d391);
|
|
92
|
+
a = addUnsigned(a, AA);
|
|
93
|
+
b = addUnsigned(b, BB);
|
|
94
|
+
c = addUnsigned(c, CC);
|
|
95
|
+
d = addUnsigned(d, DD);
|
|
96
|
+
}
|
|
97
|
+
const result = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
|
|
98
|
+
return result.toLowerCase();
|
|
99
|
+
}
|
|
100
|
+
function addUnsigned(lX, lY) {
|
|
101
|
+
const lX8 = lX & 0x80000000;
|
|
102
|
+
const lY8 = lY & 0x80000000;
|
|
103
|
+
const lX4 = lX & 0x40000000;
|
|
104
|
+
const lY4 = lY & 0x40000000;
|
|
105
|
+
const lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff);
|
|
106
|
+
if (!!(lX4 & lY4)) {
|
|
107
|
+
return lResult ^ 0x80000000 ^ lX8 ^ lY8;
|
|
108
|
+
}
|
|
109
|
+
if (!!(lX4 | lY4)) {
|
|
110
|
+
if (!!(lResult & 0x40000000)) {
|
|
111
|
+
return lResult ^ 0xc0000000 ^ lX8 ^ lY8;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return lResult ^ 0x40000000 ^ lX8 ^ lY8;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return lResult ^ lX8 ^ lY8;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function rotateLeft(lValue, iShiftBits) {
|
|
122
|
+
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
|
|
123
|
+
}
|
|
124
|
+
function F(x, y, z) {
|
|
125
|
+
return (x & y) | (~x & z);
|
|
126
|
+
}
|
|
127
|
+
function G(x, y, z) {
|
|
128
|
+
return (x & z) | (y & ~z);
|
|
129
|
+
}
|
|
130
|
+
function H(x, y, z) {
|
|
131
|
+
return x ^ y ^ z;
|
|
132
|
+
}
|
|
133
|
+
function I(x, y, z) {
|
|
134
|
+
return y ^ (x | ~z);
|
|
135
|
+
}
|
|
136
|
+
function FF(a, b, c, d, x, s, ac) {
|
|
137
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
|
|
138
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
139
|
+
}
|
|
140
|
+
function GG(a, b, c, d, x, s, ac) {
|
|
141
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
|
|
142
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
143
|
+
}
|
|
144
|
+
function HH(a, b, c, d, x, s, ac) {
|
|
145
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
|
|
146
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
147
|
+
}
|
|
148
|
+
function II(a, b, c, d, x, s, ac) {
|
|
149
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
|
|
150
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
151
|
+
}
|
|
152
|
+
function convertToWordArray(string) {
|
|
153
|
+
let lWordCount;
|
|
154
|
+
const lMessageLength = string.length;
|
|
155
|
+
const lNumberOfWords_temp1 = lMessageLength + 8;
|
|
156
|
+
const lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
|
|
157
|
+
const lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
|
|
158
|
+
const lWordArray = Array(lNumberOfWords - 1);
|
|
159
|
+
let lBytePosition = 0;
|
|
160
|
+
let lByteCount = 0;
|
|
161
|
+
while (lByteCount < lMessageLength) {
|
|
162
|
+
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
|
|
163
|
+
lBytePosition = (lByteCount % 4) * 8;
|
|
164
|
+
lWordArray[lWordCount] = lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition);
|
|
165
|
+
lByteCount++;
|
|
166
|
+
}
|
|
167
|
+
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
|
|
168
|
+
lBytePosition = (lByteCount % 4) * 8;
|
|
169
|
+
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
|
|
170
|
+
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
|
|
171
|
+
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
|
|
172
|
+
return lWordArray;
|
|
173
|
+
}
|
|
174
|
+
function wordToHex(lValue) {
|
|
175
|
+
let WordToHexValue = '';
|
|
176
|
+
let WordToHexValue_temp = '';
|
|
177
|
+
let lByte;
|
|
178
|
+
let lCount;
|
|
179
|
+
for (lCount = 0; lCount <= 3; lCount++) {
|
|
180
|
+
lByte = (lValue >>> (lCount * 8)) & 255;
|
|
181
|
+
WordToHexValue_temp = '0' + lByte.toString(16);
|
|
182
|
+
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
|
|
183
|
+
}
|
|
184
|
+
return WordToHexValue;
|
|
185
|
+
}
|
|
186
|
+
function utf8Encode(string) {
|
|
187
|
+
let utftext = '';
|
|
188
|
+
let c;
|
|
189
|
+
string = string.replace(/\r\n/g, '\n');
|
|
190
|
+
for (let n = 0; n < string.length; n++) {
|
|
191
|
+
c = string.charCodeAt(n);
|
|
192
|
+
if (c < 128) {
|
|
193
|
+
utftext += String.fromCharCode(c);
|
|
194
|
+
}
|
|
195
|
+
else if (c > 127 && c < 2048) {
|
|
196
|
+
utftext += String.fromCharCode((c >> 6) | 192);
|
|
197
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
utftext += String.fromCharCode((c >> 12) | 224);
|
|
201
|
+
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
|
202
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return utftext;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWQ1LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvYXZhdGFyL3NlcnZpY2UvbWQ1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBYztJQUM5QixNQUFNLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDZCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDZCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDZCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDZCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDZCxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFFZixJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDbkIsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQ25CLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUNuQixJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7SUFFbkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDYixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDYixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDYixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFYixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMvQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMs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QUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVTtJQUNwRixDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVTtJQUNwRixDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBVTtJQUNwRixDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVB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ZXhwb3J0IGZ1bmN0aW9uIG1kNShzdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgeCA9IGNvbnZlcnRUb1dvcmRBcnJheSh1dGY4RW5jb2RlKHN0cmluZykpO1xuICAgIGNvbnN0IFMxMSA9IDc7XG4gICAgY29uc3QgUzEyID0gMTI7XG4gICAgY29uc3QgUzEzID0gMTc7XG4gICAgY29uc3QgUzE0ID0gMjI7XG4gICAgY29uc3QgUzIxID0gNTtcbiAgICBjb25zdCBTMjIgPSA5O1xuICAgIGNvbnN0IFMyMyA9IDE0O1xuICAgIGNvbnN0IFMyNCA9IDIwO1xuICAgIGNvbnN0IFMzMSA9IDQ7XG4gICAgY29uc3QgUzMyID0gMTE7XG4gICAgY29uc3QgUzMzID0gMTY7XG4gICAgY29uc3QgUzM0ID0gMjM7XG4gICAgY29uc3QgUzQxID0gNjtcbiAgICBjb25zdCBTNDIgPSAxMDtcbiAgICBjb25zdCBTNDMgPSAxNTtcbiAgICBjb25zdCBTNDQgPSAyMTtcblxuICAgIGxldCBhID0gMHg2NzQ1MjMwMTtcbiAgICBsZXQgYiA9IDB4ZWZjZGFiODk7XG4gICAgbGV0IGMgPSAweDk4YmFkY2ZlO1xuICAgIGxldCBkID0gMHgxMDMyNTQ3NjtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgeC5sZW5ndGg7IGsgKz0gMTYpIHtcbiAgICAgICAgY29uc3QgQUEgPSBhO1xuICAgICAgICBjb25zdCBCQiA9IGI7XG4gICAgICAgIGNvbnN0IENDID0gYztcbiAgICAgICAgY29uc3QgREQgPSBkO1xuXG4gICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCB4W2tdLCBTMTEsIDB4ZDc2YWE0NzgpO1xuICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgeFtrICsgMV0sIFMxMiwgMHhlOGM3Yjc1Nik7XG4gICAgICAgIGMgPSBGRihjLCBkLCBhLCBiLCB4W2sgKyAyXSwgUzEzLCAweDI0MjA3MGRiKTtcbiAgICAgICAgYiA9IEZGKGIsIGMsIGQsIGEsIHhbayArIDNdLCBTMTQsIDB4YzFiZGNlZWUpO1xuICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgeFtrICsgNF0sIFMxMSwgMHhmNTdjMGZhZik7XG4gICAgICAgIGQgPSBGRihkLCBhLCBiLCBjLCB4W2sgKyA1XSwgUzEyLCAweDQ3ODdjNjJhKTtcbiAgICAgICAgYyA9IEZGKGMsIGQsIGEsIGIsIHhbayArIDZdLCBTMTMsIDB4YTgzMDQ2MTMpO1xuICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgeFtrICsgN10sIFMxNCwgMHhmZDQ2OTUwMSk7XG4gICAgICAgIGEgPSBGRihhLCBiLCBjLCBkLCB4W2sgKyA4XSwgUzExLCAweDY5ODA5OGQ4KTtcbiAgICAgICAgZCA9IEZGKGQsIGEsIGIsIGMsIHhbayArIDldLCBTMTIsIDB4OGI0NGY3YWYpO1xuICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgeFtrICsgMTBdLCBTMTMsIDB4ZmZmZjViYjEpO1xuICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgeFtrICsgMTFdLCBTMTQsIDB4ODk1Y2Q3YmUpO1xuICAgICAgICBhID0gRkYoYSwgYiwgYywgZCwgeFtrICsgMTJdLCBTMTEsIDB4NmI5MDExMjIpO1xuICAgICAgICBkID0gRkYoZCwgYSwgYiwgYywgeFtrICsgMTNdLCBTMTIsIDB4ZmQ5ODcxOTMpO1xuICAgICAgICBjID0gRkYoYywgZCwgYSwgYiwgeFtrICsgMTRdLCBTMTMsIDB4YTY3OTQzOGUpO1xuICAgICAgICBiID0gRkYoYiwgYywgZCwgYSwgeFtrICsgMTVdLCBTMTQsIDB4NDliNDA4MjEpO1xuICAgICAgICBhID0gR0coYSwgYiwgYywgZCwgeFtrICsgMV0sIFMyMSwgMHhmNjFlMjU2Mik7XG4gICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCB4W2sgKyA2XSwgUzIyLCAweGMwNDBiMzQwKTtcbiAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIHhbayArIDExXSwgUzIzLCAweDI2NWU1YTUxKTtcbiAgICAgICAgYiA9IEdHKGIsIGMsIGQsIGEsIHhba10sIFMyNCwgMHhlOWI2YzdhYSk7XG4gICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCB4W2sgKyA1XSwgUzIxLCAweGQ2MmYxMDVkKTtcbiAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIHhbayArIDEwXSwgUzIyLCAweDI0NDE0NTMpO1xuICAgICAgICBjID0gR0coYywgZCwgYSwgYiwgeFtrICsgMTVdLCBTMjMsIDB4ZDhhMWU2ODEpO1xuICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgeFtrICsgNF0sIFMyNCwgMHhlN2QzZmJjOCk7XG4gICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCB4W2sgKyA5XSwgUzIxLCAweDIxZTFjZGU2KTtcbiAgICAgICAgZCA9IEdHKGQsIGEsIGIsIGMsIHhbayArIDE0XSwgUzIyLCAweGMzMzcwN2Q2KTtcbiAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIHhbayArIDNdLCBTMjMsIDB4ZjRkNTBkODcpO1xuICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgeFtrICsgOF0sIFMyNCwgMHg0NTVhMTRlZCk7XG4gICAgICAgIGEgPSBHRyhhLCBiLCBjLCBkLCB4W2sgKyAxM10sIFMyMSwgMHhhOWUzZTkwNSk7XG4gICAgICAgIGQgPSBHRyhkLCBhLCBiLCBjLCB4W2sgKyAyXSwgUzIyLCAweGZjZWZhM2Y4KTtcbiAgICAgICAgYyA9IEdHKGMsIGQsIGEsIGIsIHhbayArIDddLCBTMjMsIDB4Njc2ZjAyZDkpO1xuICAgICAgICBiID0gR0coYiwgYywgZCwgYSwgeFtrICsgMTJdLCBTMjQsIDB4OGQyYTRjOGEpO1xuICAgICAgICBhID0gSEgoYSwgYiwgYywgZCwgeFtrICsgNV0sIFMzMSwgMHhmZmZhMzk0Mik7XG4gICAgICAgIGQgPSBISChkLCBhLCBiLCBjLCB4W2sgKyA4XSwgUzMyLCAweDg3NzFmNjgxKTtcbiAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIHhbayArIDExXSwgUzMzLCAweDZkOWQ2MTIyKTtcbiAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIHhbayArIDE0XSwgUzM0LCAweGZkZTUzODBjKTtcbiAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIHhbayArIDFdLCBTMzEsIDB4YTRiZWVhNDQpO1xuICAgICAgICBkID0gSEgoZCwgYSwgYiwgYywgeFtrICsgNF0sIFMzMiwgMHg0YmRlY2ZhOSk7XG4gICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCB4W2sgKyA3XSwgUzMzLCAweGY2YmI0YjYwKTtcbiAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIHhbayArIDEwXSwgUzM0LCAweGJlYmZiYzcwKTtcbiAgICAgICAgYSA9IEhIKGEsIGIsIGMsIGQsIHhbayArIDEzXSwgUzMxLCAweDI4OWI3ZWM2KTtcbiAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIHhba10sIFMzMiwgMHhlYWExMjdmYSk7XG4gICAgICAgIGMgPSBISChjLCBkLCBhLCBiLCB4W2sgKyAzXSwgUzMzLCAweGQ0ZWYzMDg1KTtcbiAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIHhbayArIDZdLCBTMzQsIDB4NDg4MWQwNSk7XG4gICAgICAgIGEgPSBISChhLCBiLCBjLCBkLCB4W2sgKyA5XSwgUzMxLCAweGQ5ZDRkMDM5KTtcbiAgICAgICAgZCA9IEhIKGQsIGEsIGIsIGMsIHhbayArIDEyXSwgUzMyLCAweGU2ZGI5OWU1KTtcbiAgICAgICAgYyA9IEhIKGMsIGQsIGEsIGIsIHhbayArIDE1XSwgUzMzLCAweDFmYTI3Y2Y4KTtcbiAgICAgICAgYiA9IEhIKGIsIGMsIGQsIGEsIHhbayArIDJdLCBTMzQsIDB4YzRhYzU2NjUpO1xuICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgeFtrXSwgUzQxLCAweGY0MjkyMjQ0KTtcbiAgICAgICAgZCA9IElJKGQsIGEsIGIsIGMsIHhbayArIDddLCBTNDIsIDB4NDMyYWZmOTcpO1xuICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgeFtrICsgMTRdLCBTNDMsIDB4YWI5NDIzYTcpO1xuICAgICAgICBiID0gSUkoYiwgYywgZCwgYSwgeFtrICsgNV0sIFM0NCwgMHhmYzkzYTAzOSk7XG4gICAgICAgIGEgPSBJSShhLCBiLCBjLCBkLCB4W2sgKyAxMl0sIFM0MSwgMHg2NTViNTljMyk7XG4gICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCB4W2sgKyAzXSwgUzQyLCAweDhmMGNjYzkyKTtcbiAgICAgICAgYyA9IElJKGMsIGQsIGEsIGIsIHhbayArIDEwXSwgUzQzLCAweGZmZWZmNDdkKTtcbiAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIHhbayArIDFdLCBTNDQsIDB4ODU4NDVkZDEpO1xuICAgICAgICBhID0gSUkoYSwgYiwgYywgZCwgeFtrICsgOF0sIFM0MSwgMHg2ZmE4N2U0Zik7XG4gICAgICAgIGQgPSBJSShkLCBhLCBiLCBjLCB4W2sgKyAxNV0sIFM0MiwgMHhmZTJjZTZlMCk7XG4gICAgICAgIGMgPSBJSShjLCBkLCBhLCBiLCB4W2sgKyA2XSwgUzQzLCAweGEzMDE0MzE0KTtcbiAgICAgICAgYiA9IElJKGIsIGMsIGQsIGEsIHhbayArIDEzXSwgUzQ0LCAweDRlMDgxMWExKTtcbiAgICAgICAgYSA9IElJKGEsIGIsIGMsIGQsIHhbayArIDRdLCBTNDEsIDB4Zjc1MzdlODIpO1xuICAgICAgICBkID0gSUkoZCwgYSwgYiwgYywgeFtrICsgMTFdLCBTNDIsIDB4YmQzYWYyMzUpO1xuICAgICAgICBjID0gSUkoYywgZCwgYSwgYiwgeFtrICsgMl0sIFM0MywgMHgyYWQ3ZDJiYik7XG4gICAgICAgIGIgPSBJSShiLCBjLCBkLCBhLCB4W2sgKyA5XSwgUzQ0LCAweGViODZkMzkxKTtcblxuICAgICAgICBhID0gYWRkVW5zaWduZWQoYSwgQUEpO1xuICAgICAgICBiID0gYWRkVW5zaWduZWQoYiwgQkIpO1xuICAgICAgICBjID0gYWRkVW5zaWduZWQoYywgQ0MpO1xuICAgICAgICBkID0gYWRkVW5zaWduZWQoZCwgREQpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHdvcmRUb0hleChhKSArIHdvcmRUb0hleChiKSArIHdvcmRUb0hleChjKSArIHdvcmRUb0hleChkKTtcblxuICAgIHJldHVybiByZXN1bHQudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gYWRkVW5zaWduZWQobFg6IG51bWJlciwgbFk6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbFg4ID0gbFggJiAweDgwMDAwMDAwO1xuICAgIGNvbnN0IGxZOCA9IGxZICYgMHg4MDAwMDAwMDtcbiAgICBjb25zdCBsWDQgPSBsWCAmIDB4NDAwMDAwMDA7XG4gICAgY29uc3QgbFk0ID0gbFkgJiAweDQwMDAwMDAwO1xuICAgIGNvbnN0IGxSZXN1bHQgPSAobFggJiAweDNmZmZmZmZmKSArIChsWSAmIDB4M2ZmZmZmZmYpO1xuXG4gICAgaWYgKCEhKGxYNCAmIGxZNCkpIHtcbiAgICAgICAgcmV0dXJuIGxSZXN1bHQgXiAweDgwMDAwMDAwIF4gbFg4IF4gbFk4O1xuICAgIH1cblxuICAgIGlmICghIShsWDQgfCBsWTQpKSB7XG4gICAgICAgIGlmICghIShsUmVzdWx0ICYgMHg0MDAwMDAwMCkpIHtcbiAgICAgICAgICAgIHJldHVybiBsUmVzdWx0IF4gMHhjMDAwMDAwMCBeIGxYOCBeIGxZODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBsUmVzdWx0IF4gMHg0MDAwMDAwMCBeIGxYOCBeIGxZODtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBsUmVzdWx0IF4gbFg4IF4gbFk4O1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcm90YXRlTGVmdChsVmFsdWU6IG51bWJlciwgaVNoaWZ0Qml0czogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGxWYWx1ZSA8PCBpU2hpZnRCaXRzKSB8IChsVmFsdWUgPj4+ICgzMiAtIGlTaGlmdEJpdHMpKTtcbn1cblxuZnVuY3Rpb24gRih4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHggJiB5KSB8ICh+eCAmIHopO1xufVxuXG5mdW5jdGlvbiBHKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAoeCAmIHopIHwgKHkgJiB+eik7XG59XG5cbmZ1bmN0aW9uIEgoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHggXiB5IF4gejtcbn1cblxuZnVuY3Rpb24gSSh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4geSBeICh4IHwgfnopO1xufVxuXG5mdW5jdGlvbiBGRihhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyLCBkOiBudW1iZXIsIHg6IG51bWJlciwgczogbnVtYmVyLCBhYzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBhID0gYWRkVW5zaWduZWQoYSwgYWRkVW5zaWduZWQoYWRkVW5zaWduZWQoRihiLCBjLCBkKSwgeCksIGFjKSk7XG4gICAgcmV0dXJuIGFkZFVuc2lnbmVkKHJvdGF0ZUxlZnQoYSwgcyksIGIpO1xufVxuXG5mdW5jdGlvbiBHRyhhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyLCBkOiBudW1iZXIsIHg6IG51bWJlciwgczogbnVtYmVyLCBhYzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBhID0gYWRkVW5zaWduZWQoYSwgYWRkVW5zaWduZWQoYWRkVW5zaWduZWQoRyhiLCBjLCBkKSwgeCksIGFjKSk7XG4gICAgcmV0dXJuIGFkZFVuc2lnbmVkKHJvdGF0ZUxlZnQoYSwgcyksIGIpO1xufVxuXG5mdW5jdGlvbiBISChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyLCBkOiBudW1iZXIsIHg6IG51bWJlciwgczogbnVtYmVyLCBhYzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBhID0gYWRkVW5zaWduZWQoYSwgYWRkVW5zaWduZWQoYWRkVW5zaWduZWQoSChiLCBjLCBkKSwgeCksIGFjKSk7XG4gICAgcmV0dXJuIGFkZFVuc2lnbmVkKHJvdGF0ZUxlZnQoYSwgcyksIGIpO1xufVxuXG5mdW5jdGlvbiBJSShhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyLCBkOiBudW1iZXIsIHg6IG51bWJlciwgczogbnVtYmVyLCBhYzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBhID0gYWRkVW5zaWduZWQoYSwgYWRkVW5zaWduZWQoYWRkVW5zaWduZWQoSShiLCBjLCBkKSwgeCksIGFjKSk7XG4gICAgcmV0dXJuIGFkZFVuc2lnbmVkKHJvdGF0ZUxlZnQoYSwgcyksIGIpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VG9Xb3JkQXJyYXkoc3RyaW5nOiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gICAgbGV0IGxXb3JkQ291bnQ6IG51bWJlcjtcbiAgICBjb25zdCBsTWVzc2FnZUxlbmd0aDogbnVtYmVyID0gc3RyaW5nLmxlbmd0aDtcbiAgICBjb25zdCBsTnVtYmVyT2ZXb3Jkc190ZW1wMTogbnVtYmVyID0gbE1lc3NhZ2VMZW5ndGggKyA4O1xuICAgIGNvbnN0IGxOdW1iZXJPZldvcmRzX3RlbXAyOiBudW1iZXIgPSAobE51bWJlck9mV29yZHNfdGVtcDEgLSAobE51bWJlck9mV29yZHNfdGVtcDEgJSA2NCkpIC8gNjQ7XG4gICAgY29uc3QgbE51bWJlck9mV29yZHM6IG51bWJlciA9IChsTnVtYmVyT2ZXb3Jkc190ZW1wMiArIDEpICogMTY7XG4gICAgY29uc3QgbFdvcmRBcnJheTogbnVtYmVyW10gPSBBcnJheShsTnVtYmVyT2ZXb3JkcyAtIDEpO1xuICAgIGxldCBsQnl0ZVBvc2l0aW9uOiBudW1iZXIgPSAwO1xuICAgIGxldCBsQnl0ZUNvdW50OiBudW1iZXIgPSAwO1xuXG4gICAgd2hpbGUgKGxCeXRlQ291bnQgPCBsTWVzc2FnZUxlbmd0aCkge1xuICAgICAgICBsV29yZENvdW50ID0gKGxCeXRlQ291bnQgLSAobEJ5dGVDb3VudCAlIDQpKSAvIDQ7XG4gICAgICAgIGxCeXRlUG9zaXRpb24gPSAobEJ5dGVDb3VudCAlIDQpICogODtcbiAgICAgICAgbFdvcmRBcnJheVtsV29yZENvdW50XSA9IGxXb3JkQXJyYXlbbFdvcmRDb3VudF0gfCAoc3RyaW5nLmNoYXJDb2RlQXQobEJ5dGVDb3VudCkgPDwgbEJ5dGVQb3NpdGlvbik7XG4gICAgICAgIGxCeXRlQ291bnQrKztcbiAgICB9XG5cbiAgICBsV29yZENvdW50ID0gKGxCeXRlQ291bnQgLSAobEJ5dGVDb3VudCAlIDQpKSAvIDQ7XG4gICAgbEJ5dGVQb3NpdGlvbiA9IChsQnl0ZUNvdW50ICUgNCkgKiA4O1xuICAgIGxXb3JkQXJyYXlbbFdvcmRDb3VudF0gPSBsV29yZEFycmF5W2xXb3JkQ291bnRdIHwgKDB4ODAgPDwgbEJ5dGVQb3NpdGlvbik7XG4gICAgbFdvcmRBcnJheVtsTnVtYmVyT2ZXb3JkcyAtIDJdID0gbE1lc3NhZ2VMZW5ndGggPDwgMztcbiAgICBsV29yZEFycmF5W2xOdW1iZXJPZldvcmRzIC0gMV0gPSBsTWVzc2FnZUxlbmd0aCA+Pj4gMjk7XG5cbiAgICByZXR1cm4gbFdvcmRBcnJheTtcbn1cblxuZnVuY3Rpb24gd29yZFRvSGV4KGxWYWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgV29yZFRvSGV4VmFsdWU6IHN0cmluZyA9ICcnO1xuICAgIGxldCBXb3JkVG9IZXhWYWx1ZV90ZW1wOiBzdHJpbmcgPSAnJztcbiAgICBsZXQgbEJ5dGU6IG51bWJlcjtcbiAgICBsZXQgbENvdW50OiBudW1iZXI7XG5cbiAgICBmb3IgKGxDb3VudCA9IDA7IGxDb3VudCA8PSAzOyBsQ291bnQrKykge1xuICAgICAgICBsQnl0ZSA9IChsVmFsdWUgPj4+IChsQ291bnQgKiA4KSkgJiAyNTU7XG4gICAgICAgIFdvcmRUb0hleFZhbHVlX3RlbXAgPSAnMCcgKyBsQnl0ZS50b1N0cmluZygxNik7XG4gICAgICAgIFdvcmRUb0hleFZhbHVlID0gV29yZFRvSGV4VmFsdWUgKyBXb3JkVG9IZXhWYWx1ZV90ZW1wLnN1YnN0cihXb3JkVG9IZXhWYWx1ZV90ZW1wLmxlbmd0aCAtIDIsIDIpO1xuICAgIH1cblxuICAgIHJldHVybiBXb3JkVG9IZXhWYWx1ZTtcbn1cblxuZnVuY3Rpb24gdXRmOEVuY29kZShzdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHV0ZnRleHQ6IHN0cmluZyA9ICcnO1xuICAgIGxldCBjOiBudW1iZXI7XG5cbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcblxuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgc3RyaW5nLmxlbmd0aDsgbisrKSB7XG4gICAgICAgIGMgPSBzdHJpbmcuY2hhckNvZGVBdChuKTtcblxuICAgICAgICBpZiAoYyA8IDEyOCkge1xuICAgICAgICAgICAgdXRmdGV4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPiAxMjcgJiYgYyA8IDIwNDgpIHtcbiAgICAgICAgICAgIHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7XG4gICAgICAgICAgICB1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXRmdGV4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjID4+IDEyKSB8IDIyNCk7XG4gICAgICAgICAgICB1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjID4+IDYpICYgNjMpIHwgMTI4KTtcbiAgICAgICAgICAgIHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyAmIDYzKSB8IDEyOCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXRmdGV4dDtcbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Md5 } from 'ts-md5';
|
|
2
1
|
import { Source } from './source';
|
|
2
|
+
import { md5 } from '../service/md5';
|
|
3
3
|
function isRetina() {
|
|
4
4
|
// We cannot reasonably inject `DOCUMENT` here, but we are extra
|
|
5
5
|
// careful about usage of `window` and its possible non-existence in SSR,
|
|
@@ -18,12 +18,12 @@ function isRetina() {
|
|
|
18
18
|
export class Gravatar extends Source {
|
|
19
19
|
getAvatar(size) {
|
|
20
20
|
const value = this.getValue();
|
|
21
|
-
const
|
|
21
|
+
const hash = value.match('^[a-f0-9]{32}$') ? value : md5(value.trim().toLowerCase()).toString();
|
|
22
22
|
const avatarSize = isRetina() ? size * 2 : size;
|
|
23
|
-
return `https://secure.gravatar.com/avatar/${
|
|
23
|
+
return `https://secure.gravatar.com/avatar/${hash}?s=${avatarSize}&d=404`;
|
|
24
24
|
}
|
|
25
25
|
isTextual() {
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhdmF0YXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uYXR1cmFsL3NyYy9saWIvbW9kdWxlcy9hdmF0YXIvc291cmNlcy9ncmF2YXRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxTQUFTLFFBQVE7SUFDYixnRUFBZ0U7SUFDaEUseUVBQXlFO0lBQ3pFLHdCQUF3QjtJQUN4QixpREFBaUQ7SUFDakQsTUFBTSxRQUFRLEdBQXVCLE1BQU0sQ0FBQztJQUU1QyxJQUFJLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUU7UUFDbkMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUVELE1BQU0sVUFBVSxHQUNaLDJJQUEySSxDQUFDO0lBRWhKLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsTUFBTTtJQUN6QixTQUFTLENBQUMsSUFBWTtRQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVoRyxNQUFNLFVBQVUsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hELE9BQU8sc0NBQXNDLElBQUksTUFBTSxVQUFVLFFBQVEsQ0FBQztJQUM5RSxDQUFDO0lBRU0sU0FBUztRQUNaLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U291cmNlfSBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQge21kNX0gZnJvbSAnLi4vc2VydmljZS9tZDUnO1xuXG5mdW5jdGlvbiBpc1JldGluYSgpOiBib29sZWFuIHtcbiAgICAvLyBXZSBjYW5ub3QgcmVhc29uYWJseSBpbmplY3QgYERPQ1VNRU5UYCBoZXJlLCBidXQgd2UgYXJlIGV4dHJhXG4gICAgLy8gY2FyZWZ1bCBhYm91dCB1c2FnZSBvZiBgd2luZG93YCBhbmQgaXRzIHBvc3NpYmxlIG5vbi1leGlzdGVuY2UgaW4gU1NSLFxuICAgIC8vIHNvIHdlIHNob3VsZCBiZSBmaW5lLlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICBjb25zdCBteVdpbmRvdzogV2luZG93IHwgdW5kZWZpbmVkID0gd2luZG93O1xuXG4gICAgaWYgKG15V2luZG93Py5kZXZpY2VQaXhlbFJhdGlvID4gMS4yNSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID1cbiAgICAgICAgJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDEuMjUpLCAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjI1KSwgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDUvNCksIChtaW4tcmVzb2x1dGlvbjogMS4yNWRwcHgpJztcblxuICAgIHJldHVybiAhIW15V2luZG93Py5tYXRjaE1lZGlhKG1lZGlhUXVlcnkpLm1hdGNoZXM7XG59XG5cbi8qKlxuICogUmV0dXJuIFVSTCB0byBHcmF2YXRhciBpbWFnZSBmcm9tIGVpdGhlciBhbiBlbWFpbCBvciBhIE1ENVxuICovXG5leHBvcnQgY2xhc3MgR3JhdmF0YXIgZXh0ZW5kcyBTb3VyY2Uge1xuICAgIHB1YmxpYyBnZXRBdmF0YXIoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGhhc2ggPSB2YWx1ZS5tYXRjaCgnXlthLWYwLTldezMyfSQnKSA/IHZhbHVlIDogbWQ1KHZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpKS50b1N0cmluZygpO1xuXG4gICAgICAgIGNvbnN0IGF2YXRhclNpemUgPSBpc1JldGluYSgpID8gc2l6ZSAqIDIgOiBzaXplO1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vc2VjdXJlLmdyYXZhdGFyLmNvbS9hdmF0YXIvJHtoYXNofT9zPSR7YXZhdGFyU2l6ZX0mZD00MDRgO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1RleHR1YWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -66,7 +66,6 @@ import { MatPaginatorModule } from '@angular/material/paginator';
|
|
|
66
66
|
import * as i3$3 from '@angular/material/sidenav';
|
|
67
67
|
import { MatSidenavContainer, MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
|
68
68
|
import { __rest } from 'tslib';
|
|
69
|
-
import { Md5 } from 'ts-md5';
|
|
70
69
|
import * as i1$8 from '@angular/common/http';
|
|
71
70
|
import { HttpHeaders, HttpClientModule } from '@angular/common/http';
|
|
72
71
|
|
|
@@ -10128,6 +10127,213 @@ class Source {
|
|
|
10128
10127
|
}
|
|
10129
10128
|
}
|
|
10130
10129
|
|
|
10130
|
+
function md5(string) {
|
|
10131
|
+
const x = convertToWordArray(utf8Encode(string));
|
|
10132
|
+
const S11 = 7;
|
|
10133
|
+
const S12 = 12;
|
|
10134
|
+
const S13 = 17;
|
|
10135
|
+
const S14 = 22;
|
|
10136
|
+
const S21 = 5;
|
|
10137
|
+
const S22 = 9;
|
|
10138
|
+
const S23 = 14;
|
|
10139
|
+
const S24 = 20;
|
|
10140
|
+
const S31 = 4;
|
|
10141
|
+
const S32 = 11;
|
|
10142
|
+
const S33 = 16;
|
|
10143
|
+
const S34 = 23;
|
|
10144
|
+
const S41 = 6;
|
|
10145
|
+
const S42 = 10;
|
|
10146
|
+
const S43 = 15;
|
|
10147
|
+
const S44 = 21;
|
|
10148
|
+
let a = 0x67452301;
|
|
10149
|
+
let b = 0xefcdab89;
|
|
10150
|
+
let c = 0x98badcfe;
|
|
10151
|
+
let d = 0x10325476;
|
|
10152
|
+
for (let k = 0; k < x.length; k += 16) {
|
|
10153
|
+
const AA = a;
|
|
10154
|
+
const BB = b;
|
|
10155
|
+
const CC = c;
|
|
10156
|
+
const DD = d;
|
|
10157
|
+
a = FF(a, b, c, d, x[k], S11, 0xd76aa478);
|
|
10158
|
+
d = FF(d, a, b, c, x[k + 1], S12, 0xe8c7b756);
|
|
10159
|
+
c = FF(c, d, a, b, x[k + 2], S13, 0x242070db);
|
|
10160
|
+
b = FF(b, c, d, a, x[k + 3], S14, 0xc1bdceee);
|
|
10161
|
+
a = FF(a, b, c, d, x[k + 4], S11, 0xf57c0faf);
|
|
10162
|
+
d = FF(d, a, b, c, x[k + 5], S12, 0x4787c62a);
|
|
10163
|
+
c = FF(c, d, a, b, x[k + 6], S13, 0xa8304613);
|
|
10164
|
+
b = FF(b, c, d, a, x[k + 7], S14, 0xfd469501);
|
|
10165
|
+
a = FF(a, b, c, d, x[k + 8], S11, 0x698098d8);
|
|
10166
|
+
d = FF(d, a, b, c, x[k + 9], S12, 0x8b44f7af);
|
|
10167
|
+
c = FF(c, d, a, b, x[k + 10], S13, 0xffff5bb1);
|
|
10168
|
+
b = FF(b, c, d, a, x[k + 11], S14, 0x895cd7be);
|
|
10169
|
+
a = FF(a, b, c, d, x[k + 12], S11, 0x6b901122);
|
|
10170
|
+
d = FF(d, a, b, c, x[k + 13], S12, 0xfd987193);
|
|
10171
|
+
c = FF(c, d, a, b, x[k + 14], S13, 0xa679438e);
|
|
10172
|
+
b = FF(b, c, d, a, x[k + 15], S14, 0x49b40821);
|
|
10173
|
+
a = GG(a, b, c, d, x[k + 1], S21, 0xf61e2562);
|
|
10174
|
+
d = GG(d, a, b, c, x[k + 6], S22, 0xc040b340);
|
|
10175
|
+
c = GG(c, d, a, b, x[k + 11], S23, 0x265e5a51);
|
|
10176
|
+
b = GG(b, c, d, a, x[k], S24, 0xe9b6c7aa);
|
|
10177
|
+
a = GG(a, b, c, d, x[k + 5], S21, 0xd62f105d);
|
|
10178
|
+
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
|
|
10179
|
+
c = GG(c, d, a, b, x[k + 15], S23, 0xd8a1e681);
|
|
10180
|
+
b = GG(b, c, d, a, x[k + 4], S24, 0xe7d3fbc8);
|
|
10181
|
+
a = GG(a, b, c, d, x[k + 9], S21, 0x21e1cde6);
|
|
10182
|
+
d = GG(d, a, b, c, x[k + 14], S22, 0xc33707d6);
|
|
10183
|
+
c = GG(c, d, a, b, x[k + 3], S23, 0xf4d50d87);
|
|
10184
|
+
b = GG(b, c, d, a, x[k + 8], S24, 0x455a14ed);
|
|
10185
|
+
a = GG(a, b, c, d, x[k + 13], S21, 0xa9e3e905);
|
|
10186
|
+
d = GG(d, a, b, c, x[k + 2], S22, 0xfcefa3f8);
|
|
10187
|
+
c = GG(c, d, a, b, x[k + 7], S23, 0x676f02d9);
|
|
10188
|
+
b = GG(b, c, d, a, x[k + 12], S24, 0x8d2a4c8a);
|
|
10189
|
+
a = HH(a, b, c, d, x[k + 5], S31, 0xfffa3942);
|
|
10190
|
+
d = HH(d, a, b, c, x[k + 8], S32, 0x8771f681);
|
|
10191
|
+
c = HH(c, d, a, b, x[k + 11], S33, 0x6d9d6122);
|
|
10192
|
+
b = HH(b, c, d, a, x[k + 14], S34, 0xfde5380c);
|
|
10193
|
+
a = HH(a, b, c, d, x[k + 1], S31, 0xa4beea44);
|
|
10194
|
+
d = HH(d, a, b, c, x[k + 4], S32, 0x4bdecfa9);
|
|
10195
|
+
c = HH(c, d, a, b, x[k + 7], S33, 0xf6bb4b60);
|
|
10196
|
+
b = HH(b, c, d, a, x[k + 10], S34, 0xbebfbc70);
|
|
10197
|
+
a = HH(a, b, c, d, x[k + 13], S31, 0x289b7ec6);
|
|
10198
|
+
d = HH(d, a, b, c, x[k], S32, 0xeaa127fa);
|
|
10199
|
+
c = HH(c, d, a, b, x[k + 3], S33, 0xd4ef3085);
|
|
10200
|
+
b = HH(b, c, d, a, x[k + 6], S34, 0x4881d05);
|
|
10201
|
+
a = HH(a, b, c, d, x[k + 9], S31, 0xd9d4d039);
|
|
10202
|
+
d = HH(d, a, b, c, x[k + 12], S32, 0xe6db99e5);
|
|
10203
|
+
c = HH(c, d, a, b, x[k + 15], S33, 0x1fa27cf8);
|
|
10204
|
+
b = HH(b, c, d, a, x[k + 2], S34, 0xc4ac5665);
|
|
10205
|
+
a = II(a, b, c, d, x[k], S41, 0xf4292244);
|
|
10206
|
+
d = II(d, a, b, c, x[k + 7], S42, 0x432aff97);
|
|
10207
|
+
c = II(c, d, a, b, x[k + 14], S43, 0xab9423a7);
|
|
10208
|
+
b = II(b, c, d, a, x[k + 5], S44, 0xfc93a039);
|
|
10209
|
+
a = II(a, b, c, d, x[k + 12], S41, 0x655b59c3);
|
|
10210
|
+
d = II(d, a, b, c, x[k + 3], S42, 0x8f0ccc92);
|
|
10211
|
+
c = II(c, d, a, b, x[k + 10], S43, 0xffeff47d);
|
|
10212
|
+
b = II(b, c, d, a, x[k + 1], S44, 0x85845dd1);
|
|
10213
|
+
a = II(a, b, c, d, x[k + 8], S41, 0x6fa87e4f);
|
|
10214
|
+
d = II(d, a, b, c, x[k + 15], S42, 0xfe2ce6e0);
|
|
10215
|
+
c = II(c, d, a, b, x[k + 6], S43, 0xa3014314);
|
|
10216
|
+
b = II(b, c, d, a, x[k + 13], S44, 0x4e0811a1);
|
|
10217
|
+
a = II(a, b, c, d, x[k + 4], S41, 0xf7537e82);
|
|
10218
|
+
d = II(d, a, b, c, x[k + 11], S42, 0xbd3af235);
|
|
10219
|
+
c = II(c, d, a, b, x[k + 2], S43, 0x2ad7d2bb);
|
|
10220
|
+
b = II(b, c, d, a, x[k + 9], S44, 0xeb86d391);
|
|
10221
|
+
a = addUnsigned(a, AA);
|
|
10222
|
+
b = addUnsigned(b, BB);
|
|
10223
|
+
c = addUnsigned(c, CC);
|
|
10224
|
+
d = addUnsigned(d, DD);
|
|
10225
|
+
}
|
|
10226
|
+
const result = wordToHex(a) + wordToHex(b) + wordToHex(c) + wordToHex(d);
|
|
10227
|
+
return result.toLowerCase();
|
|
10228
|
+
}
|
|
10229
|
+
function addUnsigned(lX, lY) {
|
|
10230
|
+
const lX8 = lX & 0x80000000;
|
|
10231
|
+
const lY8 = lY & 0x80000000;
|
|
10232
|
+
const lX4 = lX & 0x40000000;
|
|
10233
|
+
const lY4 = lY & 0x40000000;
|
|
10234
|
+
const lResult = (lX & 0x3fffffff) + (lY & 0x3fffffff);
|
|
10235
|
+
if (!!(lX4 & lY4)) {
|
|
10236
|
+
return lResult ^ 0x80000000 ^ lX8 ^ lY8;
|
|
10237
|
+
}
|
|
10238
|
+
if (!!(lX4 | lY4)) {
|
|
10239
|
+
if (!!(lResult & 0x40000000)) {
|
|
10240
|
+
return lResult ^ 0xc0000000 ^ lX8 ^ lY8;
|
|
10241
|
+
}
|
|
10242
|
+
else {
|
|
10243
|
+
return lResult ^ 0x40000000 ^ lX8 ^ lY8;
|
|
10244
|
+
}
|
|
10245
|
+
}
|
|
10246
|
+
else {
|
|
10247
|
+
return lResult ^ lX8 ^ lY8;
|
|
10248
|
+
}
|
|
10249
|
+
}
|
|
10250
|
+
function rotateLeft(lValue, iShiftBits) {
|
|
10251
|
+
return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));
|
|
10252
|
+
}
|
|
10253
|
+
function F(x, y, z) {
|
|
10254
|
+
return (x & y) | (~x & z);
|
|
10255
|
+
}
|
|
10256
|
+
function G(x, y, z) {
|
|
10257
|
+
return (x & z) | (y & ~z);
|
|
10258
|
+
}
|
|
10259
|
+
function H(x, y, z) {
|
|
10260
|
+
return x ^ y ^ z;
|
|
10261
|
+
}
|
|
10262
|
+
function I(x, y, z) {
|
|
10263
|
+
return y ^ (x | ~z);
|
|
10264
|
+
}
|
|
10265
|
+
function FF(a, b, c, d, x, s, ac) {
|
|
10266
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(F(b, c, d), x), ac));
|
|
10267
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
10268
|
+
}
|
|
10269
|
+
function GG(a, b, c, d, x, s, ac) {
|
|
10270
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(G(b, c, d), x), ac));
|
|
10271
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
10272
|
+
}
|
|
10273
|
+
function HH(a, b, c, d, x, s, ac) {
|
|
10274
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(H(b, c, d), x), ac));
|
|
10275
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
10276
|
+
}
|
|
10277
|
+
function II(a, b, c, d, x, s, ac) {
|
|
10278
|
+
a = addUnsigned(a, addUnsigned(addUnsigned(I(b, c, d), x), ac));
|
|
10279
|
+
return addUnsigned(rotateLeft(a, s), b);
|
|
10280
|
+
}
|
|
10281
|
+
function convertToWordArray(string) {
|
|
10282
|
+
let lWordCount;
|
|
10283
|
+
const lMessageLength = string.length;
|
|
10284
|
+
const lNumberOfWords_temp1 = lMessageLength + 8;
|
|
10285
|
+
const lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;
|
|
10286
|
+
const lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;
|
|
10287
|
+
const lWordArray = Array(lNumberOfWords - 1);
|
|
10288
|
+
let lBytePosition = 0;
|
|
10289
|
+
let lByteCount = 0;
|
|
10290
|
+
while (lByteCount < lMessageLength) {
|
|
10291
|
+
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
|
|
10292
|
+
lBytePosition = (lByteCount % 4) * 8;
|
|
10293
|
+
lWordArray[lWordCount] = lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition);
|
|
10294
|
+
lByteCount++;
|
|
10295
|
+
}
|
|
10296
|
+
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
|
|
10297
|
+
lBytePosition = (lByteCount % 4) * 8;
|
|
10298
|
+
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
|
|
10299
|
+
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
|
|
10300
|
+
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
|
|
10301
|
+
return lWordArray;
|
|
10302
|
+
}
|
|
10303
|
+
function wordToHex(lValue) {
|
|
10304
|
+
let WordToHexValue = '';
|
|
10305
|
+
let WordToHexValue_temp = '';
|
|
10306
|
+
let lByte;
|
|
10307
|
+
let lCount;
|
|
10308
|
+
for (lCount = 0; lCount <= 3; lCount++) {
|
|
10309
|
+
lByte = (lValue >>> (lCount * 8)) & 255;
|
|
10310
|
+
WordToHexValue_temp = '0' + lByte.toString(16);
|
|
10311
|
+
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);
|
|
10312
|
+
}
|
|
10313
|
+
return WordToHexValue;
|
|
10314
|
+
}
|
|
10315
|
+
function utf8Encode(string) {
|
|
10316
|
+
let utftext = '';
|
|
10317
|
+
let c;
|
|
10318
|
+
string = string.replace(/\r\n/g, '\n');
|
|
10319
|
+
for (let n = 0; n < string.length; n++) {
|
|
10320
|
+
c = string.charCodeAt(n);
|
|
10321
|
+
if (c < 128) {
|
|
10322
|
+
utftext += String.fromCharCode(c);
|
|
10323
|
+
}
|
|
10324
|
+
else if (c > 127 && c < 2048) {
|
|
10325
|
+
utftext += String.fromCharCode((c >> 6) | 192);
|
|
10326
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
|
10327
|
+
}
|
|
10328
|
+
else {
|
|
10329
|
+
utftext += String.fromCharCode((c >> 12) | 224);
|
|
10330
|
+
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
|
10331
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
|
10332
|
+
}
|
|
10333
|
+
}
|
|
10334
|
+
return utftext;
|
|
10335
|
+
}
|
|
10336
|
+
|
|
10131
10337
|
function isRetina() {
|
|
10132
10338
|
// We cannot reasonably inject `DOCUMENT` here, but we are extra
|
|
10133
10339
|
// careful about usage of `window` and its possible non-existence in SSR,
|
|
@@ -10146,9 +10352,9 @@ function isRetina() {
|
|
|
10146
10352
|
class Gravatar extends Source {
|
|
10147
10353
|
getAvatar(size) {
|
|
10148
10354
|
const value = this.getValue();
|
|
10149
|
-
const
|
|
10355
|
+
const hash = value.match('^[a-f0-9]{32}$') ? value : md5(value.trim().toLowerCase()).toString();
|
|
10150
10356
|
const avatarSize = isRetina() ? size * 2 : size;
|
|
10151
|
-
return `https://secure.gravatar.com/avatar/${
|
|
10357
|
+
return `https://secure.gravatar.com/avatar/${hash}?s=${avatarSize}&d=404`;
|
|
10152
10358
|
}
|
|
10153
10359
|
isTextual() {
|
|
10154
10360
|
return false;
|