@magic-xpa/utils 4.1000.0-dev4100.7 → 4.1000.0-dev4100.71
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/src/Base64.mjs
CHANGED
|
@@ -2,16 +2,11 @@ import { ApplicationException, ISO_8859_1_Encoding } from "@magic-xpa/mscorelib"
|
|
|
2
2
|
import { StrUtil } from "./StrUtil";
|
|
3
3
|
import { Misc } from "./Misc";
|
|
4
4
|
export class Base64 {
|
|
5
|
-
static encode(
|
|
6
|
-
if (arguments.length ===
|
|
7
|
-
return Base64.
|
|
8
|
-
else if (arguments.length === 3)
|
|
9
|
-
return Base64.encode_1(strOrData, encodingOrIsUseEnvCharset, encoding);
|
|
5
|
+
static encode(str, isUseEnvCharset, encoding) {
|
|
6
|
+
if (arguments.length === 1)
|
|
7
|
+
return Base64.encode_1(str, false, null);
|
|
10
8
|
else
|
|
11
|
-
return Base64.
|
|
12
|
-
}
|
|
13
|
-
static encode_0(str, encoding) {
|
|
14
|
-
return Base64.encode(str, false, encoding);
|
|
9
|
+
return Base64.encode_1(str, isUseEnvCharset, encoding);
|
|
15
10
|
}
|
|
16
11
|
static encode_1(str, isUseEnvCharset, encoding) {
|
|
17
12
|
let result;
|
|
@@ -24,10 +19,15 @@ export class Base64 {
|
|
|
24
19
|
}
|
|
25
20
|
else {
|
|
26
21
|
try {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
if (isUseEnvCharset === false) {
|
|
23
|
+
result = btoa(str);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
let instance = ISO_8859_1_Encoding.ISO_8859_1;
|
|
27
|
+
let encoding2 = isUseEnvCharset ? encoding : instance;
|
|
28
|
+
let ba = Base64.encodeBytes(encoding2.GetBytes(str));
|
|
29
|
+
result = instance.GetString(ba, 0, ba.length);
|
|
30
|
+
}
|
|
31
31
|
}
|
|
32
32
|
catch (ex) {
|
|
33
33
|
throw new ApplicationException(ex.Message);
|
|
@@ -36,7 +36,7 @@ export class Base64 {
|
|
|
36
36
|
}
|
|
37
37
|
return result;
|
|
38
38
|
}
|
|
39
|
-
static
|
|
39
|
+
static encodeBytes(data) {
|
|
40
40
|
if (data === null)
|
|
41
41
|
return null;
|
|
42
42
|
let dest = new Uint8Array(Math.floor((data.length + 2) / 3) * 4);
|
|
@@ -65,16 +65,10 @@ export class Base64 {
|
|
|
65
65
|
}
|
|
66
66
|
return dest;
|
|
67
67
|
}
|
|
68
|
-
static decode(
|
|
69
|
-
if (arguments.length === 1
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return Base64.decode_1(strOrData, encoding);
|
|
73
|
-
else
|
|
74
|
-
return Base64.decode_2(strOrData);
|
|
75
|
-
}
|
|
76
|
-
static decode_0(str) {
|
|
77
|
-
return Base64.decode(str, null);
|
|
68
|
+
static decode(str, encoding) {
|
|
69
|
+
if (arguments.length === 1)
|
|
70
|
+
encoding = null;
|
|
71
|
+
return Base64.decode_1(str, encoding);
|
|
78
72
|
}
|
|
79
73
|
static decode_1(str, encoding) {
|
|
80
74
|
let result;
|
|
@@ -87,10 +81,15 @@ export class Base64 {
|
|
|
87
81
|
}
|
|
88
82
|
else {
|
|
89
83
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
if (encoding === null || encoding === undefined) {
|
|
85
|
+
result = atob(str);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
let instance = ISO_8859_1_Encoding.ISO_8859_1;
|
|
89
|
+
let array = Base64.decodeBytes(instance.GetBytes(str));
|
|
90
|
+
let encoding2 = (encoding !== null) ? encoding : instance;
|
|
91
|
+
result = encoding2.GetString(array, 0, array.length);
|
|
92
|
+
}
|
|
94
93
|
}
|
|
95
94
|
catch (ex) {
|
|
96
95
|
throw new ApplicationException(ex.Message);
|
|
@@ -99,7 +98,7 @@ export class Base64 {
|
|
|
99
98
|
}
|
|
100
99
|
return result;
|
|
101
100
|
}
|
|
102
|
-
static
|
|
101
|
+
static decodeBytes(data) {
|
|
103
102
|
if (data === null)
|
|
104
103
|
return null;
|
|
105
104
|
let tail = data.length;
|
|
@@ -138,7 +137,7 @@ export class Base64 {
|
|
|
138
137
|
return new Uint8Array(0);
|
|
139
138
|
try {
|
|
140
139
|
let instance = ISO_8859_1_Encoding.ISO_8859_1;
|
|
141
|
-
return Base64.
|
|
140
|
+
return Base64.decodeBytes(instance.GetBytes(str));
|
|
142
141
|
}
|
|
143
142
|
catch (ex) {
|
|
144
143
|
throw new ApplicationException(ex.Message);
|
|
@@ -162,4 +161,4 @@ export class Base64 {
|
|
|
162
161
|
}
|
|
163
162
|
Base64._base64EncMap = Base64.initializeEncMap();
|
|
164
163
|
Base64._base64DecMap = Base64.initializeDecMap();
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL0Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLE1BQU07SUFRakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFjLEVBQUUseUJBQStCLEVBQUUsUUFBbUI7UUFDaEYsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDeEIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO2FBRTFELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzdCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxDQUFDLENBQUM7O1lBR3ZFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBU08sTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsUUFBa0I7UUFDckQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQVVPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLGVBQXdCLEVBQUUsUUFBa0I7UUFDL0UsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDZjthQUNJO1lBQ0gsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO2dCQUNkLE1BQU0sR0FB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QjtRQUNELElBQUksSUFBSSxHQUFlLElBQUksVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUcxRSxLQUFLLElBQUksR0FBRyxHQUFXLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUdELElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQVksQ0FBQztRQUNqQixLQUFLLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMs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LEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUMzRixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNuQixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQjtRQUM3QixJQUFJLE1BQU0sR0FBZSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQXBQYyxvQkFBYSxHQUFlLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3RELG9CQUFhLEdBQWUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VuY29kaW5nLCBBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgSVNPXzg4NTlfMV9FbmNvZGluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RyVXRpbH0gZnJvbSBcIi4vU3RyVXRpbFwiO1xyXG5pbXBvcnQge01pc2N9IGZyb20gXCIuL01pc2NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlNjR7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NEVuY01hcDogVWludDhBcnJheSA9IEJhc2U2NC5pbml0aWFsaXplRW5jTWFwKCk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NERlY01hcDogVWludDhBcnJheSA9IEJhc2U2NC5pbml0aWFsaXplRGVjTWFwKCk7XHJcblxyXG5cclxuICBzdGF0aWMgZW5jb2RlKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGVuY29kZShzdHI6IHN0cmluZywgaXNVc2VFbnZDaGFyc2V0OiBib29sZWFuLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGVuY29kZShkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcclxuICBzdGF0aWMgZW5jb2RlKHN0ck9yRGF0YTogYW55LCBlbmNvZGluZ09ySXNVc2VFbnZDaGFyc2V0PzogYW55LCBlbmNvZGluZz86IEVuY29kaW5nKTogYW55IHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKVxyXG4gICAgICByZXR1cm4gQmFzZTY0LmVuY29kZV8wKHN0ck9yRGF0YSwgZW5jb2RpbmdPcklzVXNlRW52Q2hhcnNldCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMylcclxuICAgICAgcmV0dXJuIEJhc2U2NC5lbmNvZGVfMShzdHJPckRhdGEsIGVuY29kaW5nT3JJc1VzZUVudkNoYXJzZXQsIGVuY29kaW5nKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlXzIoc3RyT3JEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZW5jb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuIEl0J3MgdXNlZCBmb3IgZXhhbXBsZSBpbiB0aGVcclxuICAvLy8gXCJCYXNpY1wiIGF1dGhvcml6YXRpb24gc2NoZW1lLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuY29kaW5nXCI+IEVudmlyb25tZW50LkVuY29kaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmFzZTY0LWVuY29kZWQgc3RyIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVfMChzdHI6IHN0cmluZywgZW5jb2Rpbmc6IEVuY29kaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKHN0ciwgZmFsc2UsIGVuY29kaW5nKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gRW5jb2RlcyBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZy5cclxuICAvLy8gSWYgaXNVc2VFbnZDaGFyc2V0IGlzIHRydWUsIHVzZSB0aGUgc3BlY2lmaWMgY2hhcnNldCB3aGVuIGNvbnZlcnRpbmdcclxuICAvLy8gc3RyaW5nIHRvIGJ5dGUgYXJyYXkuIChEQkNTIHN1cHBvcnQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNVc2VFbnZDaGFyc2V0XCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj4gRW52aXJvbm1lbnQuRW5jb2RpbmcgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBiYXNlNjQtZW5jb2RlZCBzdHIgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZV8xKHN0cjogc3RyaW5nLCBpc1VzZUVudkNoYXJzZXQ6IGJvb2xlYW4sIGVuY29kaW5nOiBFbmNvZGluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0ciA9PT0gXCJcIikge1xyXG4gICAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbGV0IGluc3RhbmNlOiBFbmNvZGluZyA9IElTT184ODU5XzFfRW5jb2RpbmcuSVNPXzg4NTlfMTtcclxuICAgICAgICAgIGxldCBlbmNvZGluZzI6IEVuY29kaW5nID0gaXNVc2VFbnZDaGFyc2V0ID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgIGxldCBiYTogVWludDhBcnJheSA9IEJhc2U2NC5lbmNvZGUoZW5jb2RpbmcyLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gaW5zdGFuY2UuR2V0U3RyaW5nKGJhLCAwLCBiYS5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFRoaXMgbWV0aG9kIGVuY29kZXMgdGhlIGdpdmVuIGJ5dGVbXSB1c2luZyB0aGUgYmFzZTY0LWVuY29kaW5nXHJcbiAgLy8vIHNwZWNpZmllZCBpbiBSRkMtMjA0NSAoU2VjdGlvbiA2LjgpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF0YVwiPnRoZSBkYXRhIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmFzZTY0LWVuY29kZWQgZGF0YSA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlXzIoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xyXG5cclxuICAgIGlmIChkYXRhID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgZGVzdDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KE1hdGguZmxvb3IoKGRhdGEubGVuZ3RoICsgMikgLyAzKSAqIDQpO1xyXG4gICAgbGV0IHNpZHg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgZGlkeDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLyAzLWJ5dGUgdG8gNC1ieXRlIGNvbnZlcnNpb24gKyAwLTYzIHRvIEFTQ0lJIHByaW50YWJsZSBjb252ZXJzaW9uXHJcbiAgICB3aGlsZSAoc2lkeCA8IGRhdGEubGVuZ3RoIC0gMikge1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFtNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHhdLCAyKSAmIDYzXTtcclxuICAgICAgZGVzdFtkaWR4KytdID0gQmFzZTY0Ll9iYXNlNjRFbmNNYXBbKE1pc2MuVVJTaGlmdCg8bnVtYmVyPmRhdGFbc2lkeCArIDFdLCA0KSAmIDE1KSB8ICg8bnVtYmVyPmRhdGFbc2lkeF0gPDwgNCAmIDYzKV07XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAyXSwgNikgJiAzKSB8ICg8bnVtYmVyPmRhdGFbc2lkeCArIDFdIDw8IDIgJiA2MyldO1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPihkYXRhW3NpZHggKyAyXSAmIDYzKV07XHJcbiAgICAgIHNpZHggPSBzaWR4ICsgMztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2lkeCA8IGRhdGEubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwW01pc2MuVVJTaGlmdCg8bnVtYmVyPmRhdGFbc2lkeF0sIDIpICYgNjNdO1xyXG4gICAgICBpZiAoc2lkeCA8IGRhdGEubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAxXSwgNCkgJiAxNSkgfCAoPG51bWJlcj5kYXRhW3NpZHhdIDw8IDQgJiA2MyldO1xyXG4gICAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWzxudW1iZXI+ZGF0YVtzaWR4ICsgMV0gPDwgMiAmIDYzXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPmRhdGFbc2lkeF0gPDwgNCAmIDYzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBwYWRkaW5nXHJcbiAgICB3aGlsZSAoZGlkeCA8IGRlc3QubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGlkeF0gPSA2MTtcclxuICAgICAgZGlkeCA9IGRpZHggKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXN0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRlY29kZShzdHI6IHN0cmluZyk6IHN0cmluZztcclxuICBzdGF0aWMgZGVjb2RlKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGRlY29kZShkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcclxuICBzdGF0aWMgZGVjb2RlKHN0ck9yRGF0YTogYW55LCBlbmNvZGluZz86IEVuY29kaW5nKTogYW55IHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChzdHJPckRhdGEgPT09IG51bGwgfHwgc3RyT3JEYXRhLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKVxyXG4gICAgICByZXR1cm4gQmFzZTY0LmRlY29kZV8wKHN0ck9yRGF0YSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMilcclxuICAgICAgcmV0dXJuIEJhc2U2NC5kZWNvZGVfMShzdHJPckRhdGEsIGVuY29kaW5nKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlXzIoc3RyT3JEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgYmFzZTY0LWVuY29kZWQgc3RyaW5nLiA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGRlY29kZWQgc3RyLjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVfMChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQmFzZTY0LmRlY29kZShzdHIsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZ1xyXG4gIC8vLyBzcGVjaWZpZWQgaW4gUkZDLTIwNDUgKFNlY3Rpb24gNi44KS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPnRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj5FbnZpcm9ubWVudC5FbmNvZGluZyBvciBudWxsLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgZGVjb2RlZCBzdHIuPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZV8xKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChzdHIgPT09IG51bGwpIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoc3RyID09PSBcIlwiKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgaW5zdGFuY2U6IElTT184ODU5XzFfRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgICAgICBsZXQgYXJyYXk6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuZGVjb2RlKGluc3RhbmNlLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgbGV0IGVuY29kaW5nMjogRW5jb2RpbmcgPSAoZW5jb2RpbmcgIT09IG51bGwpID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgIHJlc3VsdCA9IGVuY29kaW5nMi5HZXRTdHJpbmcoYXJyYXksIDAsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKGV4Lk1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgZ2l2ZW4gYnl0ZVtdIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRhXCI+dGhlIGJhc2U2NC1lbmNvZGVkIGRhdGEuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBkZWNvZGVkIDx2YXI+ZGF0YTwvdmFcclxuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVfMihkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoZGF0YSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IHRhaWw6IG51bWJlciA9IGRhdGEubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGRhdGFbdGFpbCAtIDFdID09PSAnPScuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICB0YWlsID0gdGFpbCAtIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgZGVzdDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRhaWwgLSBNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gNCkpO1xyXG5cclxuICAgIC8vIEFTQ0lJIHByaW50YWJsZSB0byAwLTYzIGNvbnZlcnNpb25cclxuICAgIGZvciAobGV0IGlkeDogbnVtYmVyID0gMDsgaWR4IDwgZGF0YS5sZW5ndGg7IGlkeCA9IGlkeCArIDEpIHtcclxuICAgICAgZGF0YVtpZHhdID0gQmFzZTY0Ll9iYXNlNjREZWNNYXBbZGF0YVtpZHhdXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA0LWJ5dGUgdG8gMy1ieXRlIGNvbnZlcnNpb25cclxuICAgIGxldCBzaWR4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGRpZHg6IG51bWJlcjtcclxuICAgIGZvciAoZGlkeCA9IDA7IGRpZHggPCBkZXN0Lmxlbmd0aCAtIDI7IGRpZHggPSBkaWR4ICsgMykge1xyXG4gICAgICBkZXN0W2RpZHhdID0gKCgoZGF0YVtzaWR4XSA8PCAyKSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDFdLCA0KSAmIDMpKTtcclxuICAgICAgZGVzdFtkaWR4ICsgMV0gPSAoKChkYXRhW3NpZHggKyAxXSA8PCA0KSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDJdLCAyKSAmIDE1KSk7XHJcbiAgICAgIGRlc3RbZGlkeCArIDJdID0gKCgoZGF0YVtzaWR4ICsgMl0gPDwgNikgJiAyNTUpIHwgKGRhdGFbc2lkeCArIDNdICYgNjMpKTtcclxuICAgICAgc2lkeCA9IHNpZHggKyA0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkaWR4IDwgZGVzdC5sZW5ndGgpXHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHhdIDw8IDIpICYgMjU1KSB8IChNaXNjLlVSU2hpZnQoZGF0YVtzaWR4ICsgMV0sIDQpICYgMykpO1xyXG4gICAgaWYgKChkaWR4ID0gZGlkeCArIDEpIDwgZGVzdC5sZW5ndGgpXHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHggKyAxXSA8PCA0KSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDJdLCAyKSAmIDE1KSk7XHJcblxyXG4gICAgcmV0dXJuIGRlc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRlY29kZWQgYW5kIHJldHVybiBhbiBoZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGE8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGRlY29kZVRvSGV4KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChzdHIgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKHN0ciA9PT0gXCJcIilcclxuICAgICAgcmV0dXJuIHN0cjtcclxuXHJcbiAgICByZXR1cm4gU3RyVXRpbC5zdHJpbmdUb0hleGFEdW1wKEJhc2U2NC5kZWNvZGUoc3RyKSwgMik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRlY29kZXMgYSBzdHJpbmcgdG8gYnl0ZSBhcnJheTwvc3VtbWFyeT5cclxuICBzdGF0aWMgZGVjb2RlVG9CeXRlKHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAvLyBRQ1IgNzQwOTE4IGlmIHdlIGhhdmUgYW5kIGVtcHR5IGV4cHJlc3Npb24gaXQgaXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgYXMgZW1wdHkgc3RyaW5nXHJcbiAgICAvLyBhbmQgY2hhbmdlZCBsb2NhbGx5IHRvIGEgc3RyaW5nIHdpdGggb25lIGJsYW5rIGVpdGhlciB3YXkgdGhleSBhcmUgbm90IHZhbGlkIGJhc2U2NCBlbmNvZGVkXHJcbiAgICAvLyBzdHJpbmcgYW5kIHNob3VsZCBub3QgYmUgZGVjb2RlZC5cclxuICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09PSBcIiBcIilcclxuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBpbnN0YW5jZTogRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlKGluc3RhbmNlLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVFbmNNYXAoKSB7XHJcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW1xyXG4gICAgICA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MyxcclxuICAgICAgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSxcclxuICAgICAgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCxcclxuICAgICAgNTUsIDU2LCA1NywgNDMsIDQ3XHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplRGVjTWFwKCkge1xyXG4gICAgbGV0IGRlY01hcDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KDEyOCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IEJhc2U2NC5fYmFzZTY0RW5jTWFwLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGRlY01hcFtCYXNlNjQuX2Jhc2U2NEVuY01hcFtpXV0gPSBpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZWNNYXA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL0Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLE1BQU07SUFPakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFXLEVBQUUsZUFBcUIsRUFBRSxRQUFtQjtRQUNuRSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQzs7WUFFekMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQVVPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLGVBQXdCLEVBQUUsUUFBa0I7UUFDL0UsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDZjthQUNJO1lBQ0gsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO2dCQUNkLE1BQU0sR0FBRyxHQUFHLENBQUM7YUFDZDtpQkFDSTtnQkFDSCxJQUFJO29CQUNGLElBQUksZUFBZSxLQUFLLEtBQUssRUFBQzt3QkFDNUIsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDcEI7eUJBQ0k7d0JBQ0gsSUFBSSxRQUFRLEdBQWEsbUJBQW1CLENBQUMsVUFBVSxDQUFDO3dCQUN4RCxJQUFJLFNBQVMsR0FBYSxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO3dCQUNoRSxJQUFJLEVBQUUsR0FBZSxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDakUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQy9DO2lCQUNGO2dCQUNELE9BQU8sRUFBRSxFQUFFO29CQUNULE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVDO2FBQ0Y7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFPTyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQWdCO1FBRXpDLElBQUksSUFBSSxLQUFLLElBQUk7WUFDZixPQUFPLElBQUksQ0FBQztRQUVkLElBQUksSUFBSSxHQUFlLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFHckIsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkUsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7U0FDakI7UUFFRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JI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QUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0M7UUFHRCxJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsSUFBSSxJQUFZLENBQUM7UUFDakIsS0FBSyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FB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SUFBSSxNQUFNLEdBQWUsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0MsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7QUFoT2Msb0JBQWEsR0FBZSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN0RCxvQkFBYSxHQUFlLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbmNvZGluZywgQXBwbGljYXRpb25FeGNlcHRpb24sIElTT184ODU5XzFfRW5jb2Rpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0clV0aWx9IGZyb20gXCIuL1N0clV0aWxcIjtcclxuaW1wb3J0IHtNaXNjfSBmcm9tIFwiLi9NaXNjXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQmFzZTY0e1xyXG4gIHByaXZhdGUgc3RhdGljIF9iYXNlNjRFbmNNYXA6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuaW5pdGlhbGl6ZUVuY01hcCgpO1xyXG4gIHByaXZhdGUgc3RhdGljIF9iYXNlNjREZWNNYXA6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuaW5pdGlhbGl6ZURlY01hcCgpO1xyXG5cclxuXHJcbiAgc3RhdGljIGVuY29kZShzdHI6IHN0cmluZyk6IHN0cmluZztcclxuICBzdGF0aWMgZW5jb2RlKHN0cjogc3RyaW5nLCBpc1VzZUVudkNoYXJzZXQ6IGJvb2xlYW4sIGVuY29kaW5nOiBFbmNvZGluZyk6IHN0cmluZztcclxuICBzdGF0aWMgZW5jb2RlKHN0cjogc3RyaW5nLCBpc1VzZUVudkNoYXJzZXQ/OiBhbnksIGVuY29kaW5nPzogRW5jb2RpbmcpOiBhbnkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlXzEoc3RyLCBmYWxzZSwgbnVsbCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlXzEoc3RyLCBpc1VzZUVudkNoYXJzZXQsIGVuY29kaW5nKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gRW5jb2RlcyBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZy5cclxuICAvLy8gSWYgaXNVc2VFbnZDaGFyc2V0IGlzIHRydWUsIHVzZSB0aGUgc3BlY2lmaWMgY2hhcnNldCB3aGVuIGNvbnZlcnRpbmdcclxuICAvLy8gc3RyaW5nIHRvIGJ5dGUgYXJyYXkuIChEQkNTIHN1cHBvcnQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNVc2VFbnZDaGFyc2V0XCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj4gRW52aXJvbm1lbnQuRW5jb2RpbmcgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBiYXNlNjQtZW5jb2RlZCBzdHIgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZV8xKHN0cjogc3RyaW5nLCBpc1VzZUVudkNoYXJzZXQ6IGJvb2xlYW4sIGVuY29kaW5nOiBFbmNvZGluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0ciA9PT0gXCJcIikge1xyXG4gICAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgaWYgKGlzVXNlRW52Q2hhcnNldCA9PT0gZmFsc2Upe1xyXG4gICAgICAgICAgICByZXN1bHQgPSBidG9hKHN0cik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGluc3RhbmNlOiBFbmNvZGluZyA9IElTT184ODU5XzFfRW5jb2RpbmcuSVNPXzg4NTlfMTtcclxuICAgICAgICAgICAgbGV0IGVuY29kaW5nMjogRW5jb2RpbmcgPSBpc1VzZUVudkNoYXJzZXQgPyBlbmNvZGluZyA6IGluc3RhbmNlO1xyXG4gICAgICAgICAgICBsZXQgYmE6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuZW5jb2RlQnl0ZXMoZW5jb2RpbmcyLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgICByZXN1bHQgPSBpbnN0YW5jZS5HZXRTdHJpbmcoYmEsIDAsIGJhLmxlbmd0aCk7XHJcbiAgICAgICAgICB9ICBcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oZXguTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIG1ldGhvZCBlbmNvZGVzIHRoZSBnaXZlbiBieXRlW10gdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZ1xyXG4gIC8vLyBzcGVjaWZpZWQgaW4gUkZDLTIwNDUgKFNlY3Rpb24gNi44KS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRhdGFcIj50aGUgZGF0YSA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJhc2U2NC1lbmNvZGVkIGRhdGEgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZUJ5dGVzKGRhdGE6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcclxuXHJcbiAgICBpZiAoZGF0YSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IGRlc3Q6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShNYXRoLmZsb29yKChkYXRhLmxlbmd0aCArIDIpIC8gMykgKiA0KTtcclxuICAgIGxldCBzaWR4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGRpZHg6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLy8gMy1ieXRlIHRvIDQtYnl0ZSBjb252ZXJzaW9uICsgMC02MyB0byBBU0NJSSBwcmludGFibGUgY29udmVyc2lvblxyXG4gICAgd2hpbGUgKHNpZHggPCBkYXRhLmxlbmd0aCAtIDIpIHtcclxuICAgICAgZGVzdFtkaWR4KytdID0gQmFzZTY0Ll9iYXNlNjRFbmNNYXBbTWlzYy5VUlNoaWZ0KDxudW1iZXI+ZGF0YVtzaWR4XSwgMikgJiA2M107XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAxXSwgNCkgJiAxNSkgfCAoPG51bWJlcj5kYXRhW3NpZHhdIDw8IDQgJiA2MyldO1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFsoTWlzYy5VUlNoaWZ0KDxudW1iZXI+ZGF0YVtzaWR4ICsgMl0sIDYpICYgMykgfCAoPG51bWJlcj5kYXRhW3NpZHggKyAxXSA8PCAyICYgNjMpXTtcclxuICAgICAgZGVzdFtkaWR4KytdID0gQmFzZTY0Ll9iYXNlNjRFbmNNYXBbPG51bWJlcj4oZGF0YVtzaWR4ICsgMl0gJiA2MyldO1xyXG4gICAgICBzaWR4ID0gc2lkeCArIDM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNpZHggPCBkYXRhLmxlbmd0aCkge1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFtNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHhdLCAyKSAmIDYzXTtcclxuICAgICAgaWYgKHNpZHggPCBkYXRhLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFsoTWlzYy5VUlNoaWZ0KDxudW1iZXI+ZGF0YVtzaWR4ICsgMV0sIDQpICYgMTUpIHwgKDxudW1iZXI+ZGF0YVtzaWR4XSA8PCA0ICYgNjMpXTtcclxuICAgICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPmRhdGFbc2lkeCArIDFdIDw8IDIgJiA2M107XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZGVzdFtkaWR4KytdID0gQmFzZTY0Ll9iYXNlNjRFbmNNYXBbPG51bWJlcj5kYXRhW3NpZHhdIDw8IDQgJiA2M107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBhZGQgcGFkZGluZ1xyXG4gICAgd2hpbGUgKGRpZHggPCBkZXN0Lmxlbmd0aCkge1xyXG4gICAgICBkZXN0W2RpZHhdID0gNjE7XHJcbiAgICAgIGRpZHggPSBkaWR4ICsgMTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGVzdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkZWNvZGUoc3RyOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGRlY29kZShzdHI6IHN0cmluZywgZW5jb2Rpbmc6IEVuY29kaW5nKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBkZWNvZGUoc3RyOiBzdHJpbmcsIGVuY29kaW5nPzogRW5jb2RpbmcpOiBhbnkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpXHJcbiAgICAgIGVuY29kaW5nID0gbnVsbDtcclxuXHJcbiAgICByZXR1cm4gQmFzZTY0LmRlY29kZV8xKHN0ciwgZW5jb2RpbmcpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZ1xyXG4gIC8vLyBzcGVjaWZpZWQgaW4gUkZDLTIwNDUgKFNlY3Rpb24gNi44KS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPnRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj5FbnZpcm9ubWVudC5FbmNvZGluZyBvciBudWxsLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgZGVjb2RlZCBzdHIuPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZV8xKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChzdHIgPT09IG51bGwpIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoc3RyID09PSBcIlwiKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBpZiAoZW5jb2RpbmcgPT09IG51bGwgfHwgZW5jb2RpbmcgPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGF0b2Ioc3RyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaW5zdGFuY2U6IElTT184ODU5XzFfRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgICAgICAgIGxldCBhcnJheTogVWludDhBcnJheSA9IEJhc2U2NC5kZWNvZGVCeXRlcyhpbnN0YW5jZS5HZXRCeXRlcyhzdHIpKTtcclxuICAgICAgICAgICAgbGV0IGVuY29kaW5nMjogRW5jb2RpbmcgPSAoZW5jb2RpbmcgIT09IG51bGwpID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gZW5jb2RpbmcyLkdldFN0cmluZyhhcnJheSwgMCwgYXJyYXkubGVuZ3RoKTtcclxuICAgICAgICAgIH0gICBcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oZXguTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBnaXZlbiBieXRlW10gdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZ1xyXG4gIC8vLyBzcGVjaWZpZWQgaW4gUkZDLTIwNDUgKFNlY3Rpb24gNi44KS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRhdGFcIj50aGUgYmFzZTY0LWVuY29kZWQgZGF0YS48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGRlY29kZWQgPHZhcj5kYXRhPC92YVxyXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZUJ5dGVzKGRhdGE6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcclxuICAgIGlmIChkYXRhID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgdGFpbDogbnVtYmVyID0gZGF0YS5sZW5ndGg7XHJcbiAgICB3aGlsZSAoZGF0YVt0YWlsIC0gMV0gPT09ICc9Jy5jaGFyQ29kZUF0KDApKSB7XHJcbiAgICAgIHRhaWwgPSB0YWlsIC0gMTtcclxuICAgIH1cclxuICAgIGxldCBkZXN0OiBVaW50OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodGFpbCAtIE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyA0KSk7XHJcblxyXG4gICAgLy8gQVNDSUkgcHJpbnRhYmxlIHRvIDAtNjMgY29udmVyc2lvblxyXG4gICAgZm9yIChsZXQgaWR4OiBudW1iZXIgPSAwOyBpZHggPCBkYXRhLmxlbmd0aDsgaWR4ID0gaWR4ICsgMSkge1xyXG4gICAgICBkYXRhW2lkeF0gPSBCYXNlNjQuX2Jhc2U2NERlY01hcFtkYXRhW2lkeF1dO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDQtYnl0ZSB0byAzLWJ5dGUgY29udmVyc2lvblxyXG4gICAgbGV0IHNpZHg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgZGlkeDogbnVtYmVyO1xyXG4gICAgZm9yIChkaWR4ID0gMDsgZGlkeCA8IGRlc3QubGVuZ3RoIC0gMjsgZGlkeCA9IGRpZHggKyAzKSB7XHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHhdIDw8IDIpICYgMjU1KSB8IChNaXNjLlVSU2hpZnQoZGF0YVtzaWR4ICsgMV0sIDQpICYgMykpO1xyXG4gICAgICBkZXN0W2RpZHggKyAxXSA9ICgoKGRhdGFbc2lkeCArIDFdIDw8IDQpICYgMjU1KSB8IChNaXNjLlVSU2hpZnQoZGF0YVtzaWR4ICsgMl0sIDIpICYgMTUpKTtcclxuICAgICAgZGVzdFtkaWR4ICsgMl0gPSAoKChkYXRhW3NpZHggKyAyXSA8PCA2KSAmIDI1NSkgfCAoZGF0YVtzaWR4ICsgM10gJiA2MykpO1xyXG4gICAgICBzaWR4ID0gc2lkeCArIDQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRpZHggPCBkZXN0Lmxlbmd0aClcclxuICAgICAgZGVzdFtkaWR4XSA9ICgoKGRhdGFbc2lkeF0gPDwgMikgJiAyNTUpIHwgKE1pc2MuVVJTaGlmdChkYXRhW3NpZHggKyAxXSwgNCkgJiAzKSk7XHJcbiAgICBpZiAoKGRpZHggPSBkaWR4ICsgMSkgPCBkZXN0Lmxlbmd0aClcclxuICAgICAgZGVzdFtkaWR4XSA9ICgoKGRhdGFbc2lkeCArIDFdIDw8IDQpICYgMjU1KSB8IChNaXNjLlVSU2hpZnQoZGF0YVtzaWR4ICsgMl0sIDIpICYgMTUpKTtcclxuXHJcbiAgICByZXR1cm4gZGVzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZGVjb2RlZCBhbmQgcmV0dXJuIGFuIGhleCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YTwvc3VtbWFyeT5cclxuICBzdGF0aWMgZGVjb2RlVG9IZXgoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHN0ciA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICBpZiAoc3RyID09PSBcIlwiKVxyXG4gICAgICByZXR1cm4gc3RyO1xyXG5cclxuICAgIHJldHVybiBTdHJVdGlsLnN0cmluZ1RvSGV4YUR1bXAoQmFzZTY0LmRlY29kZShzdHIpLCAyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZGVjb2RlcyBhIHN0cmluZyB0byBieXRlIGFycmF5PC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBkZWNvZGVUb0J5dGUoc3RyOiBzdHJpbmcpOiBVaW50OEFycmF5IHtcclxuICAgIGlmIChzdHIgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIC8vIFFDUiA3NDA5MTggaWYgd2UgaGF2ZSBhbmQgZW1wdHkgZXhwcmVzc2lvbiBpdCBpcyBzZW50IGZyb20gdGhlIHNlcnZlciBhcyBlbXB0eSBzdHJpbmdcclxuICAgIC8vIGFuZCBjaGFuZ2VkIGxvY2FsbHkgdG8gYSBzdHJpbmcgd2l0aCBvbmUgYmxhbmsgZWl0aGVyIHdheSB0aGV5IGFyZSBub3QgdmFsaWQgYmFzZTY0IGVuY29kZWRcclxuICAgIC8vIHN0cmluZyBhbmQgc2hvdWxkIG5vdCBiZSBkZWNvZGVkLlxyXG4gICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT09IFwiIFwiKVxyXG4gICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgbGV0IGluc3RhbmNlOiBFbmNvZGluZyA9IElTT184ODU5XzFfRW5jb2RpbmcuSVNPXzg4NTlfMTtcclxuICAgICAgcmV0dXJuIEJhc2U2NC5kZWNvZGVCeXRlcyhpbnN0YW5jZS5HZXRCeXRlcyhzdHIpKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChleCkge1xyXG4gICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oZXguTWVzc2FnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplRW5jTWFwKCkge1xyXG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtcclxuICAgICAgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsXHJcbiAgICAgIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksXHJcbiAgICAgIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsXHJcbiAgICAgIDU1LCA1NiwgNTcsIDQzLCA0N1xyXG4gICAgXSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbGl6ZURlY01hcCgpIHtcclxuICAgIGxldCBkZWNNYXA6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSgxMjgpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBCYXNlNjQuX2Jhc2U2NEVuY01hcC5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBkZWNNYXBbQmFzZTY0Ll9iYXNlNjRFbmNNYXBbaV1dID0gaTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGVjTWFwO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1462,16 +1462,11 @@ class Misc {
|
|
|
1462
1462
|
}
|
|
1463
1463
|
|
|
1464
1464
|
class Base64 {
|
|
1465
|
-
static encode(
|
|
1466
|
-
if (arguments.length ===
|
|
1467
|
-
return Base64.
|
|
1468
|
-
else if (arguments.length === 3)
|
|
1469
|
-
return Base64.encode_1(strOrData, encodingOrIsUseEnvCharset, encoding);
|
|
1465
|
+
static encode(str, isUseEnvCharset, encoding) {
|
|
1466
|
+
if (arguments.length === 1)
|
|
1467
|
+
return Base64.encode_1(str, false, null);
|
|
1470
1468
|
else
|
|
1471
|
-
return Base64.
|
|
1472
|
-
}
|
|
1473
|
-
static encode_0(str, encoding) {
|
|
1474
|
-
return Base64.encode(str, false, encoding);
|
|
1469
|
+
return Base64.encode_1(str, isUseEnvCharset, encoding);
|
|
1475
1470
|
}
|
|
1476
1471
|
static encode_1(str, isUseEnvCharset, encoding) {
|
|
1477
1472
|
let result;
|
|
@@ -1484,10 +1479,15 @@ class Base64 {
|
|
|
1484
1479
|
}
|
|
1485
1480
|
else {
|
|
1486
1481
|
try {
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1482
|
+
if (isUseEnvCharset === false) {
|
|
1483
|
+
result = btoa(str);
|
|
1484
|
+
}
|
|
1485
|
+
else {
|
|
1486
|
+
let instance = ISO_8859_1_Encoding.ISO_8859_1;
|
|
1487
|
+
let encoding2 = isUseEnvCharset ? encoding : instance;
|
|
1488
|
+
let ba = Base64.encodeBytes(encoding2.GetBytes(str));
|
|
1489
|
+
result = instance.GetString(ba, 0, ba.length);
|
|
1490
|
+
}
|
|
1491
1491
|
}
|
|
1492
1492
|
catch (ex) {
|
|
1493
1493
|
throw new ApplicationException(ex.Message);
|
|
@@ -1496,7 +1496,7 @@ class Base64 {
|
|
|
1496
1496
|
}
|
|
1497
1497
|
return result;
|
|
1498
1498
|
}
|
|
1499
|
-
static
|
|
1499
|
+
static encodeBytes(data) {
|
|
1500
1500
|
if (data === null)
|
|
1501
1501
|
return null;
|
|
1502
1502
|
let dest = new Uint8Array(Math.floor((data.length + 2) / 3) * 4);
|
|
@@ -1525,16 +1525,10 @@ class Base64 {
|
|
|
1525
1525
|
}
|
|
1526
1526
|
return dest;
|
|
1527
1527
|
}
|
|
1528
|
-
static decode(
|
|
1529
|
-
if (arguments.length === 1
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
return Base64.decode_1(strOrData, encoding);
|
|
1533
|
-
else
|
|
1534
|
-
return Base64.decode_2(strOrData);
|
|
1535
|
-
}
|
|
1536
|
-
static decode_0(str) {
|
|
1537
|
-
return Base64.decode(str, null);
|
|
1528
|
+
static decode(str, encoding) {
|
|
1529
|
+
if (arguments.length === 1)
|
|
1530
|
+
encoding = null;
|
|
1531
|
+
return Base64.decode_1(str, encoding);
|
|
1538
1532
|
}
|
|
1539
1533
|
static decode_1(str, encoding) {
|
|
1540
1534
|
let result;
|
|
@@ -1547,10 +1541,15 @@ class Base64 {
|
|
|
1547
1541
|
}
|
|
1548
1542
|
else {
|
|
1549
1543
|
try {
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1544
|
+
if (encoding === null || encoding === undefined) {
|
|
1545
|
+
result = atob(str);
|
|
1546
|
+
}
|
|
1547
|
+
else {
|
|
1548
|
+
let instance = ISO_8859_1_Encoding.ISO_8859_1;
|
|
1549
|
+
let array = Base64.decodeBytes(instance.GetBytes(str));
|
|
1550
|
+
let encoding2 = (encoding !== null) ? encoding : instance;
|
|
1551
|
+
result = encoding2.GetString(array, 0, array.length);
|
|
1552
|
+
}
|
|
1554
1553
|
}
|
|
1555
1554
|
catch (ex) {
|
|
1556
1555
|
throw new ApplicationException(ex.Message);
|
|
@@ -1559,7 +1558,7 @@ class Base64 {
|
|
|
1559
1558
|
}
|
|
1560
1559
|
return result;
|
|
1561
1560
|
}
|
|
1562
|
-
static
|
|
1561
|
+
static decodeBytes(data) {
|
|
1563
1562
|
if (data === null)
|
|
1564
1563
|
return null;
|
|
1565
1564
|
let tail = data.length;
|
|
@@ -1598,7 +1597,7 @@ class Base64 {
|
|
|
1598
1597
|
return new Uint8Array(0);
|
|
1599
1598
|
try {
|
|
1600
1599
|
let instance = ISO_8859_1_Encoding.ISO_8859_1;
|
|
1601
|
-
return Base64.
|
|
1600
|
+
return Base64.decodeBytes(instance.GetBytes(str));
|
|
1602
1601
|
}
|
|
1603
1602
|
catch (ex) {
|
|
1604
1603
|
throw new ApplicationException(ex.Message);
|