mte-relay-browser-public-client 4.4.5
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/package.json +16 -0
- package/readme.md +23 -0
- package/src/mte-relay-browser.iife.js +4 -0
- package/src/mte-relay-browser.js +4 -0
- package/src/mte-relay-browser.mjs +1454 -0
|
@@ -0,0 +1,1454 @@
|
|
|
1
|
+
function WA(A) {
|
|
2
|
+
if (Object.prototype.hasOwnProperty.call(A, "__esModule")) return A;
|
|
3
|
+
var g = A.default;
|
|
4
|
+
if (typeof g == "function") {
|
|
5
|
+
var t = function H() {
|
|
6
|
+
return this instanceof H ? Reflect.construct(g, arguments, this.constructor) : g.apply(this, arguments);
|
|
7
|
+
};
|
|
8
|
+
t.prototype = g.prototype;
|
|
9
|
+
} else t = {};
|
|
10
|
+
return Object.defineProperty(t, "__esModule", { value: !0 }), Object.keys(A).forEach(function(H) {
|
|
11
|
+
var F = Object.getOwnPropertyDescriptor(A, H);
|
|
12
|
+
Object.defineProperty(t, H, F.get ? F : {
|
|
13
|
+
enumerable: !0,
|
|
14
|
+
get: function() {
|
|
15
|
+
return A[H];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}), t;
|
|
19
|
+
}
|
|
20
|
+
var AA = {};
|
|
21
|
+
const KA = {}, OA = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
22
|
+
__proto__: null,
|
|
23
|
+
default: KA
|
|
24
|
+
}, Symbol.toStringTag, { value: "Module" })), TA = /* @__PURE__ */ WA(OA);
|
|
25
|
+
var SA;
|
|
26
|
+
function vA() {
|
|
27
|
+
return SA || (SA = 1, function(A) {
|
|
28
|
+
var g = AA && AA.__awaiter || function(s, Q, I, B) {
|
|
29
|
+
function C(E) {
|
|
30
|
+
return E instanceof I ? E : new I(function(a) {
|
|
31
|
+
a(E);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return new (I || (I = Promise))(function(E, a) {
|
|
35
|
+
function i(f) {
|
|
36
|
+
try {
|
|
37
|
+
d(B.next(f));
|
|
38
|
+
} catch (n) {
|
|
39
|
+
a(n);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function c(f) {
|
|
43
|
+
try {
|
|
44
|
+
d(B.throw(f));
|
|
45
|
+
} catch (n) {
|
|
46
|
+
a(n);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function d(f) {
|
|
50
|
+
f.done ? E(f.value) : C(f.value).then(i, c);
|
|
51
|
+
}
|
|
52
|
+
d((B = B.apply(s, Q || [])).next());
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
Object.defineProperty(A, "__esModule", { value: !0 }), A.MteMem = A.MteWasm = A.MteKyber = A.MteKyberStatus = A.MteKyberStrength = A.MteRandom = A.MteSdrStorage = A.MteSdrCookie = A.MteSdrAbs = A.MteMkeDec = A.MteMkeEnc = A.MteDec = A.MteEnc = A.MteBase = A.MteInitInfo = A.MteHashes = A.MteCiphers = A.MteVerifiers = A.MteDrbgs = A.MteStatus = void 0;
|
|
56
|
+
var t;
|
|
57
|
+
(function(s) {
|
|
58
|
+
s[s.mte_status_success = 0] = "mte_status_success", s[s.mte_status_invalid_input = 1] = "mte_status_invalid_input", s[s.mte_status_unsupported = 2] = "mte_status_unsupported", s[s.mte_status_drbg_error = 3] = "mte_status_drbg_error", s[s.mte_status_drbg_catastrophic = 4] = "mte_status_drbg_catastrophic", s[s.mte_status_drbg_seedlife_reached = 5] = "mte_status_drbg_seedlife_reached", s[s.mte_status_cipher_test_failed = 6] = "mte_status_cipher_test_failed", s[s.mte_status_hash_test_failed = 7] = "mte_status_hash_test_failed", s[s.mte_status_output_inhibited = 8] = "mte_status_output_inhibited", s[s.mte_status_impl_error = 9] = "mte_status_impl_error", s[s.mte_status_license_error = 10] = "mte_status_license_error", s[s.mte_status_token_does_not_exist = 11] = "mte_status_token_does_not_exist", s[s.mte_status_checksum_mismatch = 12] = "mte_status_checksum_mismatch", s[s.mte_status_digest_mismatch = 13] = "mte_status_digest_mismatch", s[s.mte_status_time_before_exceeded = 14] = "mte_status_time_before_exceeded", s[s.mte_status_time_after_exceeded = 15] = "mte_status_time_after_exceeded", s[s.mte_status_seq_outside_window = 16] = "mte_status_seq_outside_window", s[s.mte_status_seq_async_replay = 17] = "mte_status_seq_async_replay", s[s.mte_status_seq_mismatch = 18] = "mte_status_seq_mismatch";
|
|
59
|
+
})(t = A.MteStatus || (A.MteStatus = {}));
|
|
60
|
+
var H;
|
|
61
|
+
(function(s) {
|
|
62
|
+
s[s.mte_drbgs_none = 0] = "mte_drbgs_none", s[s.mte_drbgs_increment = 1] = "mte_drbgs_increment", s[s.mte_drbgs_ctr_aes128_df = 2] = "mte_drbgs_ctr_aes128_df", s[s.mte_drbgs_ctr_aes128_nodf = 3] = "mte_drbgs_ctr_aes128_nodf", s[s.mte_drbgs_ctr_aes192_df = 4] = "mte_drbgs_ctr_aes192_df", s[s.mte_drbgs_ctr_aes192_nodf = 5] = "mte_drbgs_ctr_aes192_nodf", s[s.mte_drbgs_ctr_aes256_df = 6] = "mte_drbgs_ctr_aes256_df", s[s.mte_drbgs_ctr_aes256_nodf = 7] = "mte_drbgs_ctr_aes256_nodf", s[s.mte_drbgs_hash_sha1 = 8] = "mte_drbgs_hash_sha1", s[s.mte_drbgs_hash_sha256 = 9] = "mte_drbgs_hash_sha256", s[s.mte_drbgs_hash_sha512 = 10] = "mte_drbgs_hash_sha512";
|
|
63
|
+
})(H = A.MteDrbgs || (A.MteDrbgs = {}));
|
|
64
|
+
var F;
|
|
65
|
+
(function(s) {
|
|
66
|
+
s[s.mte_verifiers_none = 0] = "mte_verifiers_none", s[s.mte_verifiers_crc32 = 1] = "mte_verifiers_crc32", s[s.mte_verifiers_crc32_seq = 2] = "mte_verifiers_crc32_seq", s[s.mte_verifiers_seq = 3] = "mte_verifiers_seq", s[s.mte_verifiers_t64 = 4] = "mte_verifiers_t64", s[s.mte_verifiers_t64_crc32 = 5] = "mte_verifiers_t64_crc32", s[s.mte_verifiers_t64_crc32_seq = 6] = "mte_verifiers_t64_crc32_seq", s[s.mte_verifiers_t64_seq = 7] = "mte_verifiers_t64_seq";
|
|
67
|
+
})(F = A.MteVerifiers || (A.MteVerifiers = {}));
|
|
68
|
+
var N;
|
|
69
|
+
(function(s) {
|
|
70
|
+
s[s.mte_ciphers_none = 0] = "mte_ciphers_none", s[s.mte_ciphers_aes128_ctr = 1] = "mte_ciphers_aes128_ctr", s[s.mte_ciphers_aes192_ctr = 2] = "mte_ciphers_aes192_ctr", s[s.mte_ciphers_aes256_ctr = 3] = "mte_ciphers_aes256_ctr";
|
|
71
|
+
})(N = A.MteCiphers || (A.MteCiphers = {}));
|
|
72
|
+
var k;
|
|
73
|
+
(function(s) {
|
|
74
|
+
s[s.mte_hashes_none = 0] = "mte_hashes_none", s[s.mte_hashes_crc32 = 1] = "mte_hashes_crc32", s[s.mte_hashes_sha1 = 2] = "mte_hashes_sha1", s[s.mte_hashes_sha256 = 3] = "mte_hashes_sha256", s[s.mte_hashes_sha512 = 4] = "mte_hashes_sha512";
|
|
75
|
+
})(k = A.MteHashes || (A.MteHashes = {})), function(s) {
|
|
76
|
+
s[s.mte_init_info_arm64_aes_paa = 0] = "mte_init_info_arm64_aes_paa", s[s.mte_init_info_arm64_sha1_paa = 1] = "mte_init_info_arm64_sha1_paa", s[s.mte_init_info_arm64_sha256_paa = 2] = "mte_init_info_arm64_sha256_paa", s[s.mte_init_info_arm64_sha512_paa = 3] = "mte_init_info_arm64_sha512_paa", s[s.mte_init_info_arm64_crc32_paa = 4] = "mte_init_info_arm64_crc32_paa";
|
|
77
|
+
}(A.MteInitInfo || (A.MteInitInfo = {}));
|
|
78
|
+
class R {
|
|
79
|
+
/** Constructor. Derived classes must call initBase() from their
|
|
80
|
+
constructor. */
|
|
81
|
+
constructor(Q) {
|
|
82
|
+
if (this.drbg = H.mte_drbgs_none, this.tokBytes = 0, this.verifiers = F.mte_verifiers_none, this.cipher = N.mte_ciphers_none, this.hash_ = k.mte_hashes_none, this.entropyInput = new iA(), this.nonce = null, this.nonceIntBytes = 0, this.eiCallback = null, this.nCallback = null, this.tsCallback = null, this.initBase = (I, B, C, E, a) => {
|
|
83
|
+
this.drbg = I, this.tokBytes = B, this.verifiers = C, this.cipher = E, this.hash_ = a, this.nonceIntBytes = Math.max(this.getDrbgsNonceMinBytes(I), Math.min(8, this.getDrbgsNonceMaxBytes(I)));
|
|
84
|
+
}, this.destructBase = () => {
|
|
85
|
+
this.wasm.free(this.entropyInput), this.entropyInput.invalidate();
|
|
86
|
+
}, this.getVersion = () => {
|
|
87
|
+
const I = this.exports.mte_base_version();
|
|
88
|
+
return this.wasm.wasmOffToStr(I);
|
|
89
|
+
}, this.getVersionMajor = () => this.exports.mte_wasm_base_version_major(), this.getVersionMinor = () => this.exports.mte_wasm_base_version_minor(), this.getVersionPatch = () => this.exports.mte_wasm_base_version_patch(), this.initLicense = (I, B) => {
|
|
90
|
+
const C = this.wasm.strToWasm(I), E = this.wasm.strToWasm(B), a = this.exports.mte_license_init(C.off, E.off);
|
|
91
|
+
return this.wasm.free(C), this.wasm.free(E), a;
|
|
92
|
+
}, this.getStatusCount = () => this.exports.mte_wasm_base_status_count(), this.getStatusName = (I) => {
|
|
93
|
+
const B = this.exports.mte_wasm_base_status_name(I);
|
|
94
|
+
return this.wasm.wasmOffToStr(B);
|
|
95
|
+
}, this.getStatusDescription = (I) => {
|
|
96
|
+
const B = this.exports.mte_wasm_base_status_description(I);
|
|
97
|
+
return this.wasm.wasmOffToStr(B);
|
|
98
|
+
}, this.getStatusCode = (I) => {
|
|
99
|
+
const B = this.wasm.strToWasm(I), C = this.exports.mte_wasm_base_status_code(B.off);
|
|
100
|
+
return this.wasm.free(B), C;
|
|
101
|
+
}, this.statusIsError = (I) => this.exports.mte_base_status_is_error(I), this.hasRuntimeOpts = () => this.exports.mte_wasm_base_has_runtime_opts(), this.getDefaultDrbg = () => this.exports.mte_wasm_base_default_drbg(), this.getDefaultTokBytes = () => this.exports.mte_wasm_base_default_tok_bytes(), this.getDefaultVerifiers = () => this.exports.mte_wasm_base_default_verifiers(), this.getDefaultCipher = () => this.exports.mte_wasm_base_default_cipher(), this.getDefaultHash = () => this.exports.mte_wasm_base_default_hash(), this.getDrbgsCount = () => this.exports.mte_wasm_base_drbgs_count(), this.getDrbgsName = (I) => {
|
|
102
|
+
const B = this.exports.mte_wasm_base_drbgs_name(I);
|
|
103
|
+
return this.wasm.wasmOffToStr(B);
|
|
104
|
+
}, this.getDrbgsAlgo = (I) => {
|
|
105
|
+
const B = this.wasm.strToWasm(I), C = this.exports.mte_wasm_base_drbgs_algo(B.off);
|
|
106
|
+
return this.wasm.free(B), C;
|
|
107
|
+
}, this.getDrbgsSecStrengthBytes = (I) => this.exports.mte_wasm_base_drbgs_sec_strength_bytes(I), this.getDrbgsPersonalMinBytes = (I) => this.exports.mte_wasm_base_drbgs_personal_min_bytes(I), this.getDrbgsPersonalMaxBytes = (I) => this.exports.mte_wasm_base_drbgs_personal_max_bytes(I), this.getDrbgsEntropyMinBytes = (I) => this.exports.mte_wasm_base_drbgs_entropy_min_bytes(I), this.getDrbgsEntropyMaxBytes = (I) => this.exports.mte_wasm_base_drbgs_entropy_max_bytes(I), this.getDrbgsNonceMinBytes = (I) => this.exports.mte_wasm_base_drbgs_nonce_min_bytes(I), this.getDrbgsNonceMaxBytes = (I) => this.exports.mte_wasm_base_drbgs_nonce_max_bytes(I), this.getDrbgsReseedInterval = (I) => this.exports.mte_wasm_base_drbgs_reseed_interval(I), this.setIncrInstError = (I) => {
|
|
108
|
+
this.exports.mte_wasm_base_drbgs_incr_inst_error(I);
|
|
109
|
+
}, this.setIncrGenError = (I, B) => {
|
|
110
|
+
this.exports.mte_wasm_base_drbgs_incr_gen_error(I, B);
|
|
111
|
+
}, this.getVerifiersCount = () => this.exports.mte_wasm_base_verifiers_count(), this.getVerifiersName = (I) => {
|
|
112
|
+
const B = this.exports.mte_wasm_base_verifiers_name(I);
|
|
113
|
+
return this.wasm.wasmOffToStr(B);
|
|
114
|
+
}, this.getVerifiersAlgo = (I) => {
|
|
115
|
+
const B = this.wasm.strToWasm(I), C = this.exports.mte_wasm_base_verifiers_algo(B.off);
|
|
116
|
+
return this.wasm.free(B), C;
|
|
117
|
+
}, this.getCiphersCount = () => this.exports.mte_wasm_base_ciphers_count(), this.getCiphersName = (I) => {
|
|
118
|
+
const B = this.exports.mte_wasm_base_ciphers_name(I);
|
|
119
|
+
return this.wasm.wasmOffToStr(B);
|
|
120
|
+
}, this.getCiphersAlgo = (I) => {
|
|
121
|
+
const B = this.wasm.strToWasm(I), C = this.exports.mte_wasm_base_ciphers_algo(B.off);
|
|
122
|
+
return this.wasm.free(B), C;
|
|
123
|
+
}, this.getCiphersBlockBytes = (I) => this.exports.mte_wasm_base_ciphers_block_bytes(I), this.getHashesCount = () => this.exports.mte_wasm_base_hashes_count(), this.getHashesName = (I) => {
|
|
124
|
+
const B = this.exports.mte_wasm_base_hashes_name(I);
|
|
125
|
+
return this.wasm.wasmOffToStr(B);
|
|
126
|
+
}, this.getHashesAlgo = (I) => {
|
|
127
|
+
const B = this.wasm.strToWasm(I), C = this.exports.mte_wasm_base_hashes_algo(B.off);
|
|
128
|
+
return this.wasm.free(B), C;
|
|
129
|
+
}, this.getDrbg = () => this.drbg, this.getTokBytes = () => this.tokBytes, this.getVerifiers = () => this.verifiers, this.getCipher = () => this.cipher, this.getHash = () => this.hash_, this.setEntropyCallback = (I) => {
|
|
130
|
+
this.eiCallback = I;
|
|
131
|
+
}, this.setEntropyArr = (I) => {
|
|
132
|
+
this.wasm.free(this.entropyInput), this.entropyInput = this.wasm.arrToWasm(I);
|
|
133
|
+
for (let B = 0; B < I.length; ++B)
|
|
134
|
+
I[B] = 0;
|
|
135
|
+
}, this.setEntropyStr = (I) => {
|
|
136
|
+
this.wasm.free(this.entropyInput), this.entropyInput = this.wasm.strToWasm(I);
|
|
137
|
+
}, this.setEntropyB64 = (I) => {
|
|
138
|
+
this.wasm.free(this.entropyInput), this.entropyInput = this.wasm.strToWasm(I);
|
|
139
|
+
const B = this.exports.mte_wasm_base64_decode(this.entropyInput.off);
|
|
140
|
+
this.entropyInput.used = B;
|
|
141
|
+
}, this.setNonceCallback = (I) => {
|
|
142
|
+
this.nCallback = I;
|
|
143
|
+
}, this.setNonceArr = (I) => {
|
|
144
|
+
this.nonce = I;
|
|
145
|
+
}, this.setNonce = (I) => {
|
|
146
|
+
const B = new Uint8Array(this.nonceIntBytes);
|
|
147
|
+
for (let C = 0; C < I.length; ++C) {
|
|
148
|
+
let E = parseInt(I.charAt(C));
|
|
149
|
+
for (let a = 0; a < B.length; ++a) {
|
|
150
|
+
let i = B[a] * 10 + E;
|
|
151
|
+
B[a] = i % 256, E = Math.floor(i / 256);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
this.setNonceArr(B);
|
|
155
|
+
}, this.setTimestampCallback = (I) => {
|
|
156
|
+
this.tsCallback = I;
|
|
157
|
+
}, this.entropyCallback = (I, B, C, E, a, i) => {
|
|
158
|
+
const c = R.instances[I];
|
|
159
|
+
return c.eiCallback ? c.eiCallback.entropyCallback(B, C, E, a, i) : c.entropyInput.used < C || c.entropyInput.used > E ? t.mte_status_drbg_catastrophic : (c.wasm.intToWasm(a, c.entropyInput.off), c.wasm.intToWasm(i, c.entropyInput.used), t.mte_status_success);
|
|
160
|
+
}, this.nonceCallback = (I, B, C, E, a) => {
|
|
161
|
+
const i = R.instances[I];
|
|
162
|
+
if (i.nCallback) {
|
|
163
|
+
i.nCallback.nonceCallback(B, C, E, a);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (i.nonce == null) {
|
|
167
|
+
i.wasm.intToWasm(a, 0);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
this.wasm.arrToOffLen(i.nonce, E, i.nonce.length), i.wasm.intToWasm(a, i.nonce.length);
|
|
171
|
+
}, this.timestampCallback = (I, B) => {
|
|
172
|
+
const C = R.instances[I];
|
|
173
|
+
let E = { ts: 0, upper: 0 };
|
|
174
|
+
C.tsCallback && (E = C.tsCallback.timestampCallback()), E.upper == 0 ? C.wasm.int64ToWasm(B, E.ts) : (C.wasm.intToWasm(B, E.ts), C.wasm.intToWasm(B + 4, E.upper));
|
|
175
|
+
}, this.wasm = Q, Q.exports !== null)
|
|
176
|
+
this.exports = Q.exports;
|
|
177
|
+
else
|
|
178
|
+
throw new TypeError("MteBase: WASM does not have exports.");
|
|
179
|
+
if (Q.memory !== null)
|
|
180
|
+
this.memory = Q.memory;
|
|
181
|
+
else
|
|
182
|
+
throw new TypeError("MteBase: WASM does not have memory.");
|
|
183
|
+
if (Q.entropyCallback === null && (Q.entropyCallback = this.entropyCallback), Q.nonceCallback === null && (Q.nonceCallback = this.nonceCallback), Q.timestampCallback === null && (Q.timestampCallback = this.timestampCallback), this.instance = R.instances.length, R.instances.push(this), !R.mteInitialized && this.exports.mte_init(0, 0) == 0)
|
|
184
|
+
throw new Error("MteBase: MTE init error.");
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
A.MteBase = R, R.instances = [], R.mteInitialized = !1;
|
|
188
|
+
class p extends R {
|
|
189
|
+
/** Constructor taking the DRBG, token size in bytes, and verifiers
|
|
190
|
+
* algorithm. */
|
|
191
|
+
constructor(Q, I, B, C) {
|
|
192
|
+
super(Q), this.destruct = () => {
|
|
193
|
+
this.destructBase(), this.wasm.free(this.encoder), this.encoder.invalidate(), this.wasm.free(this.saved), this.saved.invalidate(), this.wasm.free(this.saved64), this.saved64.invalidate();
|
|
194
|
+
}, this.instantiate = (d) => {
|
|
195
|
+
const f = this.wasm.strToWasm(d), n = this.exports.mte_wasm_enc_instantiate(this.encoder.off, this.instance, this.instance, f.off, f.used);
|
|
196
|
+
return this.wasm.free(f), n;
|
|
197
|
+
}, this.getReseedCounter = () => this.exports.mte_wasm_enc_reseed_counter(this.encoder.off), this.saveState = () => this.exports.mte_enc_state_save(this.encoder.off, this.saved.off) == t.mte_status_success ? new Uint8Array(this.saved.buff) : null, this.saveStateB64 = () => this.exports.mte_wasm_enc_state_save_b64(this.encoder.off, this.saved64.off) == t.mte_status_success ? this.wasm.wasmToStr(this.saved64) : null, this.restoreState = (d) => (this.wasm.arrToOffLen(d, this.saved.off, d.length), this.exports.mte_enc_state_restore(this.encoder.off, this.saved.off)), this.restoreStateB64 = (d) => {
|
|
198
|
+
const f = this.wasm.strToWasm(d), n = this.exports.mte_wasm_enc_state_restore_b64(this.encoder.off, f.off);
|
|
199
|
+
return this.wasm.free(f), n;
|
|
200
|
+
}, this.encode = (d) => {
|
|
201
|
+
const f = this.wasm.arrToWasm(d), n = this.exports.mte_enc_buff_bytes(this.encoder.off, d.length), w = this.wasm.malloc(n), r = this.wasm.newInt(), o = this.wasm.newInt(), h = this.exports.mte_wasm_enc_encode(this.encoder.off, this.instance, f.off, d.length, w.off, r.off, o.off);
|
|
202
|
+
if (h != t.mte_status_success)
|
|
203
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { arr: null, status: h };
|
|
204
|
+
const e = this.wasm.wasmToInt(r.off), D = this.wasm.wasmToInt(o.off), m = w.buff.slice(e, e + D);
|
|
205
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { arr: m, status: h };
|
|
206
|
+
}, this.encodeB64 = (d) => {
|
|
207
|
+
const f = this.wasm.arrToWasm(d), n = this.exports.mte_wasm_enc_buff_bytes_b64(this.encoder.off, d.length), w = this.wasm.malloc(n), r = this.wasm.newInt(), o = this.wasm.newInt(), h = this.exports.mte_wasm_enc_encode_b64(this.encoder.off, this.instance, f.off, d.length, w.off, r.off, o.off);
|
|
208
|
+
if (h != t.mte_status_success)
|
|
209
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { str: null, status: h };
|
|
210
|
+
const e = this.wasm.wasmToInt(r.off), D = this.wasm.wasmToStr(w, e);
|
|
211
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { str: D, status: h };
|
|
212
|
+
}, this.encodeStr = (d) => {
|
|
213
|
+
const f = this.wasm.strToWasm(d), n = this.exports.mte_enc_buff_bytes(this.encoder.off, f.used), w = this.wasm.malloc(n), r = this.wasm.newInt(), o = this.wasm.newInt(), h = this.exports.mte_wasm_enc_encode(this.encoder.off, this.instance, f.off, f.used, w.off, r.off, o.off);
|
|
214
|
+
if (h != t.mte_status_success)
|
|
215
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { arr: null, status: h };
|
|
216
|
+
const e = this.wasm.wasmToInt(r.off), D = this.wasm.wasmToInt(o.off), m = w.buff.slice(e, e + D);
|
|
217
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { arr: m, status: h };
|
|
218
|
+
}, this.encodeStrB64 = (d) => {
|
|
219
|
+
const f = this.wasm.strToWasm(d), n = this.exports.mte_wasm_enc_buff_bytes_b64(this.encoder.off, f.used), w = this.wasm.malloc(n), r = this.wasm.newInt(), o = this.wasm.newInt(), h = this.exports.mte_wasm_enc_encode_b64(this.encoder.off, this.instance, f.off, f.used, w.off, r.off, o.off);
|
|
220
|
+
if (h != t.mte_status_success)
|
|
221
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { str: null, status: h };
|
|
222
|
+
const e = this.wasm.wasmToInt(r.off), D = this.wasm.wasmToStr(w, e);
|
|
223
|
+
return this.wasm.free(f), this.wasm.free(w), this.wasm.free(r), this.wasm.free(o), { str: D, status: h };
|
|
224
|
+
}, this.uninstantiate = () => this.exports.mte_enc_uninstantiate(this.encoder.off);
|
|
225
|
+
const E = typeof I == "string" ? this.getDrbgsAlgo(I) : I, a = typeof C == "string" ? this.getVerifiersAlgo(C) : C;
|
|
226
|
+
this.initBase(E, B, a, N.mte_ciphers_none, k.mte_hashes_none);
|
|
227
|
+
const i = this.exports.mte_wasm_enc_state_bytes(E, B, a);
|
|
228
|
+
if (i == 0)
|
|
229
|
+
throw new RangeError("MteEnc: Invalid options.");
|
|
230
|
+
if (this.encoder = Q.malloc(i), this.exports.mte_wasm_enc_state_init(this.encoder.off, E, B, a) != t.mte_status_success)
|
|
231
|
+
throw new RangeError("MteEnc: Invalid options.");
|
|
232
|
+
this.saved = Q.malloc(this.exports.mte_enc_save_bytes(this.encoder.off)), this.saved64 = Q.malloc(this.exports.mte_wasm_enc_save_bytes_b64(this.encoder.off));
|
|
233
|
+
}
|
|
234
|
+
/** Create an encoder using default options. */
|
|
235
|
+
static fromdefault(Q) {
|
|
236
|
+
const I = new R(Q);
|
|
237
|
+
return new p(Q, I.getDefaultDrbg(), I.getDefaultTokBytes(), I.getDefaultVerifiers());
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
A.MteEnc = p;
|
|
241
|
+
class u extends R {
|
|
242
|
+
/** Constructor taking the DRBG, token size in bytes, verifiers algorithm,
|
|
243
|
+
* timestamp window, and sequence window. */
|
|
244
|
+
constructor(Q, I, B, C, E, a) {
|
|
245
|
+
super(Q), this.encTs = { ts: 0, upper: 0 }, this.decTs = { ts: 0, upper: 0 }, this.msgSkipped = 0, this.destruct = () => {
|
|
246
|
+
this.destructBase(), this.wasm.free(this.decoder), this.decoder.invalidate(), this.wasm.free(this.saved), this.saved.invalidate(), this.wasm.free(this.saved64), this.saved64.invalidate();
|
|
247
|
+
}, this.instantiate = (n) => {
|
|
248
|
+
const w = this.wasm.strToWasm(n), r = this.exports.mte_wasm_dec_instantiate(this.decoder.off, this.instance, this.instance, w.off, w.used);
|
|
249
|
+
return this.wasm.free(w), r;
|
|
250
|
+
}, this.getReseedCounter = () => this.exports.mte_wasm_dec_reseed_counter(this.decoder.off), this.saveState = () => this.exports.mte_dec_state_save(this.decoder.off, this.saved.off) == t.mte_status_success ? new Uint8Array(this.saved.buff) : null, this.saveStateB64 = () => this.exports.mte_wasm_dec_state_save_b64(this.decoder.off, this.saved64.off) == t.mte_status_success ? this.wasm.wasmToStr(this.saved64) : null, this.restoreState = (n) => (this.wasm.arrToOffLen(n, this.saved.off, n.length), this.exports.mte_dec_state_restore(this.decoder.off, this.saved.off)), this.restoreStateB64 = (n) => {
|
|
251
|
+
const w = this.wasm.strToWasm(n), r = this.exports.mte_wasm_dec_state_restore_b64(this.decoder.off, w.off);
|
|
252
|
+
return this.wasm.free(w), r;
|
|
253
|
+
}, this.decode = (n) => {
|
|
254
|
+
const w = this.wasm.arrToWasm(n), r = this.exports.mte_dec_buff_bytes(this.decoder.off, n.length), o = this.wasm.malloc(r), h = this.wasm.newInt(), e = this.wasm.newInt(), D = this.wasm.newInt64(), m = this.wasm.newInt64(), y = this.wasm.newInt(), l = this.exports.mte_wasm_dec_decode(this.decoder.off, this.instance, w.off, n.length, o.off, h.off, e.off, D.off, m.off, y.off);
|
|
255
|
+
if (this.statusIsError(l))
|
|
256
|
+
return this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { arr: null, status: l };
|
|
257
|
+
const G = this.wasm.wasmToInt(h.off), S = this.wasm.wasmToInt(e.off), Y = o.buff.slice(G, G + S);
|
|
258
|
+
return this.encTs = this.wasm.wasmToTimestamp(D), this.decTs = this.wasm.wasmToTimestamp(m), this.msgSkipped = this.wasm.wasmToInt(y.off), this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { arr: Y, status: l };
|
|
259
|
+
}, this.decodeB64 = (n) => {
|
|
260
|
+
const w = this.wasm.strToWasm(n), r = this.exports.mte_wasm_dec_buff_bytes_b64(this.decoder.off, w.used), o = this.wasm.malloc(r), h = this.wasm.newInt(), e = this.wasm.newInt(), D = this.wasm.newInt64(), m = this.wasm.newInt64(), y = this.wasm.newInt(), l = this.exports.mte_wasm_dec_decode_b64(this.decoder.off, this.instance, w.off, w.used, o.off, h.off, e.off, D.off, m.off, y.off);
|
|
261
|
+
if (this.statusIsError(l))
|
|
262
|
+
return this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { arr: null, status: l };
|
|
263
|
+
const G = this.wasm.wasmToInt(h.off), S = this.wasm.wasmToInt(e.off), Y = o.buff.slice(G, G + S);
|
|
264
|
+
return this.encTs = this.wasm.wasmToTimestamp(D), this.decTs = this.wasm.wasmToTimestamp(m), this.msgSkipped = this.wasm.wasmToInt(y.off), this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { arr: Y, status: l };
|
|
265
|
+
}, this.decodeStr = (n) => {
|
|
266
|
+
const w = this.wasm.arrToWasm(n), r = this.exports.mte_dec_buff_bytes(this.decoder.off, n.length), o = this.wasm.malloc(r), h = this.wasm.newInt(), e = this.wasm.newInt(), D = this.wasm.newInt64(), m = this.wasm.newInt64(), y = this.wasm.newInt(), l = this.exports.mte_wasm_dec_decode(this.decoder.off, this.instance, w.off, n.length, o.off, h.off, e.off, D.off, m.off, y.off);
|
|
267
|
+
if (this.statusIsError(l))
|
|
268
|
+
return this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { str: null, status: l };
|
|
269
|
+
const G = this.wasm.wasmToInt(h.off), S = this.wasm.wasmToStr(o, G);
|
|
270
|
+
return this.encTs = this.wasm.wasmToTimestamp(D), this.decTs = this.wasm.wasmToTimestamp(m), this.msgSkipped = this.wasm.wasmToInt(y.off), this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { str: S, status: l };
|
|
271
|
+
}, this.decodeStrB64 = (n) => {
|
|
272
|
+
const w = this.wasm.strToWasm(n), r = this.exports.mte_wasm_dec_buff_bytes_b64(this.decoder.off, w.used), o = this.wasm.malloc(r), h = this.wasm.newInt(), e = this.wasm.newInt(), D = this.wasm.newInt64(), m = this.wasm.newInt64(), y = this.wasm.newInt(), l = this.exports.mte_wasm_dec_decode_b64(this.decoder.off, this.instance, w.off, w.used, o.off, h.off, e.off, D.off, m.off, y.off);
|
|
273
|
+
if (this.statusIsError(l))
|
|
274
|
+
return this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { str: null, status: l };
|
|
275
|
+
const G = this.wasm.wasmToInt(h.off), S = this.wasm.wasmToStr(o, G);
|
|
276
|
+
return this.encTs = this.wasm.wasmToTimestamp(D), this.decTs = this.wasm.wasmToTimestamp(m), this.msgSkipped = this.wasm.wasmToInt(y.off), this.wasm.free(w), this.wasm.free(o), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { str: S, status: l };
|
|
277
|
+
}, this.getEncTs = () => this.encTs, this.getDecTs = () => this.decTs, this.getMsgSkipped = () => this.msgSkipped, this.uninstantiate = () => this.exports.mte_dec_uninstantiate(this.decoder.off);
|
|
278
|
+
const i = typeof I == "string" ? this.getDrbgsAlgo(I) : I, c = typeof C == "string" ? this.getVerifiersAlgo(C) : C;
|
|
279
|
+
this.initBase(i, B, c, N.mte_ciphers_none, k.mte_hashes_none);
|
|
280
|
+
const d = this.exports.mte_wasm_dec_state_bytes(i, B, c);
|
|
281
|
+
if (d == 0)
|
|
282
|
+
throw new RangeError("MteDec: Invalid options.");
|
|
283
|
+
if (this.decoder = Q.malloc(d), this.exports.mte_wasm_dec_state_init(this.decoder.off, i, B, c, E, a) != t.mte_status_success)
|
|
284
|
+
throw this.wasm.free(this.decoder), new RangeError("MteDec: Invalid options.");
|
|
285
|
+
this.saved = Q.malloc(this.exports.mte_dec_save_bytes(this.decoder.off)), this.saved64 = Q.malloc(this.exports.mte_wasm_dec_save_bytes_b64(this.decoder.off));
|
|
286
|
+
}
|
|
287
|
+
/** Create a decoder using default options.
|
|
288
|
+
*
|
|
289
|
+
* The timestamp window and sequence window are optionally settable. */
|
|
290
|
+
static fromdefault(Q, I = 0, B = 0) {
|
|
291
|
+
const C = new R(Q);
|
|
292
|
+
return new u(Q, C.getDefaultDrbg(), C.getDefaultTokBytes(), C.getDefaultVerifiers(), I, B);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
A.MteDec = u;
|
|
296
|
+
class J extends R {
|
|
297
|
+
/** Constructor taking the DRBG, token size in bytes, verifiers algorithm,
|
|
298
|
+
* cipher algorithm, and hash algorithm. */
|
|
299
|
+
constructor(Q, I, B, C, E, a) {
|
|
300
|
+
super(Q), this.destruct = () => {
|
|
301
|
+
this.destructBase(), this.wasm.free(this.encoder), this.encoder.invalidate(), this.wasm.free(this.saved), this.saved.invalidate(), this.wasm.free(this.saved64), this.saved64.invalidate(), this.wasm.free(this.chunk), this.chunk.invalidate();
|
|
302
|
+
}, this.instantiate = (r) => {
|
|
303
|
+
const o = this.wasm.strToWasm(r), h = this.exports.mte_wasm_mke_enc_instantiate(this.encoder.off, this.instance, this.instance, o.off, o.used);
|
|
304
|
+
return this.wasm.free(o), h;
|
|
305
|
+
}, this.getReseedCounter = () => this.exports.mte_wasm_mke_enc_reseed_counter(this.encoder.off), this.saveState = () => this.exports.mte_mke_enc_state_save(this.encoder.off, this.saved.off) == t.mte_status_success ? new Uint8Array(this.saved.buff) : null, this.saveStateB64 = () => this.exports.mte_wasm_mke_enc_state_save_b64(this.encoder.off, this.saved64.off) == t.mte_status_success ? this.wasm.wasmToStr(this.saved64) : null, this.restoreState = (r) => (this.wasm.arrToOffLen(r, this.saved.off, r.length), this.exports.mte_mke_enc_state_restore(this.encoder.off, this.saved.off)), this.restoreStateB64 = (r) => {
|
|
306
|
+
const o = this.wasm.strToWasm(r), h = this.exports.mte_wasm_mke_enc_state_restore_b64(this.encoder.off, o.off);
|
|
307
|
+
return this.wasm.free(o), h;
|
|
308
|
+
}, this.encode = (r) => {
|
|
309
|
+
const o = this.wasm.arrToWasm(r), h = this.exports.mte_mke_enc_buff_bytes(this.encoder.off, r.length), e = this.wasm.malloc(h), D = this.wasm.newInt(), m = this.wasm.newInt(), y = this.exports.mte_wasm_mke_enc_encode(this.encoder.off, this.instance, o.off, r.length, e.off, D.off, m.off);
|
|
310
|
+
if (y != t.mte_status_success)
|
|
311
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { arr: null, status: y };
|
|
312
|
+
const l = this.wasm.wasmToInt(D.off), G = this.wasm.wasmToInt(m.off), S = e.buff.slice(l, l + G);
|
|
313
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { arr: S, status: y };
|
|
314
|
+
}, this.encodeB64 = (r) => {
|
|
315
|
+
const o = this.wasm.arrToWasm(r), h = this.exports.mte_wasm_mke_enc_buff_bytes_b64(this.encoder.off, r.length), e = this.wasm.malloc(h), D = this.wasm.newInt(), m = this.wasm.newInt(), y = this.exports.mte_wasm_mke_enc_encode_b64(this.encoder.off, this.instance, o.off, r.length, e.off, D.off, m.off);
|
|
316
|
+
if (y != t.mte_status_success)
|
|
317
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { str: null, status: y };
|
|
318
|
+
const l = this.wasm.wasmToInt(D.off), G = this.wasm.wasmToStr(e, l);
|
|
319
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { str: G, status: y };
|
|
320
|
+
}, this.encodeStr = (r) => {
|
|
321
|
+
const o = this.wasm.strToWasm(r), h = this.exports.mte_mke_enc_buff_bytes(this.encoder.off, o.used), e = this.wasm.malloc(h), D = this.wasm.newInt(), m = this.wasm.newInt(), y = this.exports.mte_wasm_mke_enc_encode(this.encoder.off, this.instance, o.off, o.used, e.off, D.off, m.off);
|
|
322
|
+
if (y != t.mte_status_success)
|
|
323
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { arr: null, status: y };
|
|
324
|
+
const l = this.wasm.wasmToInt(D.off), G = this.wasm.wasmToInt(m.off), S = e.buff.slice(l, l + G);
|
|
325
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { arr: S, status: y };
|
|
326
|
+
}, this.encodeStrB64 = (r) => {
|
|
327
|
+
const o = this.wasm.strToWasm(r), h = this.exports.mte_wasm_mke_enc_buff_bytes_b64(this.encoder.off, o.used), e = this.wasm.malloc(h), D = this.wasm.newInt(), m = this.wasm.newInt(), y = this.exports.mte_wasm_mke_enc_encode_b64(this.encoder.off, this.instance, o.off, o.used, e.off, D.off, m.off);
|
|
328
|
+
if (y != t.mte_status_success)
|
|
329
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { str: null, status: y };
|
|
330
|
+
const l = this.wasm.wasmToInt(D.off), G = this.wasm.wasmToStr(e, l);
|
|
331
|
+
return this.wasm.free(o), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), { str: G, status: y };
|
|
332
|
+
}, this.encryptFinishBytes = () => this.exports.mte_mke_enc_encrypt_finish_bytes(this.encoder.off), this.startEncrypt = () => this.exports.mte_mke_enc_encrypt_start(this.encoder.off, this.chunk.off), this.encryptChunk = (r) => {
|
|
333
|
+
const o = this.wasm.arrToWasm(r), h = this.exports.mte_wasm_mke_enc_encrypt_chunk(this.encoder.off, this.chunk.off, o.off, r.length, o.off);
|
|
334
|
+
let e = null;
|
|
335
|
+
return h == t.mte_status_success && (e = new Uint8Array(o.buff)), this.wasm.free(o), e;
|
|
336
|
+
}, this.finishEncrypt = () => {
|
|
337
|
+
const r = this.wasm.newInt(), o = this.wasm.newInt(), h = this.exports.mte_wasm_mke_enc_encrypt_finish(this.encoder.off, this.chunk.off, this.instance, r.off, o.off);
|
|
338
|
+
if (h != t.mte_status_success)
|
|
339
|
+
return this.wasm.free(r), this.wasm.free(o), { arr: null, status: h };
|
|
340
|
+
const e = this.wasm.wasmToInt(r.off), D = this.wasm.wasmToInt(o.off), m = this.chunk.buff.slice(e, e + D);
|
|
341
|
+
return this.wasm.free(r), this.wasm.free(o), { arr: m, status: h };
|
|
342
|
+
}, this.uninstantiate = () => this.exports.mte_mke_enc_uninstantiate(this.encoder.off);
|
|
343
|
+
const i = typeof I == "string" ? this.getDrbgsAlgo(I) : I, c = typeof C == "string" ? this.getVerifiersAlgo(C) : C, d = typeof E == "string" ? this.getCiphersAlgo(E) : E, f = typeof a == "string" ? this.getHashesAlgo(a) : a;
|
|
344
|
+
this.initBase(i, B, c, d, f);
|
|
345
|
+
const n = this.exports.mte_wasm_mke_enc_state_bytes(i, B, c, d, f);
|
|
346
|
+
if (n == 0)
|
|
347
|
+
throw new RangeError("MteMkeEnc: Invalid options.");
|
|
348
|
+
if (this.encoder = Q.malloc(n), this.exports.mte_wasm_mke_enc_state_init(this.encoder.off, i, B, c, d, f) != t.mte_status_success)
|
|
349
|
+
throw new RangeError("MteMkeEnc: Invalid options.");
|
|
350
|
+
this.saved = Q.malloc(this.exports.mte_mke_enc_save_bytes(this.encoder.off)), this.saved64 = Q.malloc(this.exports.mte_wasm_mke_enc_save_bytes_b64(this.encoder.off)), this.chunk = Q.malloc(this.exports.mte_mke_enc_encrypt_state_bytes(this.encoder.off));
|
|
351
|
+
}
|
|
352
|
+
/** Create an encoder using default options. */
|
|
353
|
+
static fromdefault(Q) {
|
|
354
|
+
const I = new R(Q);
|
|
355
|
+
return new J(Q, I.getDefaultDrbg(), I.getDefaultTokBytes(), I.getDefaultVerifiers(), I.getDefaultCipher(), I.getDefaultHash());
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
A.MteMkeEnc = J;
|
|
359
|
+
class U extends R {
|
|
360
|
+
/** Constructor taking the DRBG, token size in bytes, verifiers algorithm,
|
|
361
|
+
* cipher algorith, hash algorithm, timestamp window, and sequence window. */
|
|
362
|
+
constructor(Q, I, B, C, E, a, i, c) {
|
|
363
|
+
super(Q), this.encTs = { ts: 0, upper: 0 }, this.decTs = { ts: 0, upper: 0 }, this.msgSkipped = 0, this.destruct = () => {
|
|
364
|
+
this.destructBase(), this.wasm.free(this.decoder), this.decoder.invalidate(), this.wasm.free(this.saved), this.saved.invalidate(), this.wasm.free(this.saved64), this.saved64.invalidate(), this.wasm.free(this.chunk), this.chunk.invalidate();
|
|
365
|
+
}, this.instantiate = (h) => {
|
|
366
|
+
const e = this.wasm.strToWasm(h), D = this.exports.mte_wasm_mke_dec_instantiate(this.decoder.off, this.instance, this.instance, e.off, e.used);
|
|
367
|
+
return this.wasm.free(e), D;
|
|
368
|
+
}, this.getReseedCounter = () => this.exports.mte_wasm_mke_dec_reseed_counter(this.decoder.off), this.saveState = () => this.exports.mte_mke_dec_state_save(this.decoder.off, this.saved.off) == t.mte_status_success ? new Uint8Array(this.saved.buff) : null, this.saveStateB64 = () => this.exports.mte_wasm_mke_dec_state_save_b64(this.decoder.off, this.saved64.off) == t.mte_status_success ? this.wasm.wasmToStr(this.saved64) : null, this.restoreState = (h) => (this.wasm.arrToOffLen(h, this.saved.off, h.length), this.exports.mte_mke_dec_state_restore(this.decoder.off, this.saved.off)), this.restoreStateB64 = (h) => {
|
|
369
|
+
const e = this.wasm.strToWasm(h), D = this.exports.mte_wasm_mke_dec_state_restore_b64(this.decoder.off, e.off);
|
|
370
|
+
return this.wasm.free(e), D;
|
|
371
|
+
}, this.decode = (h) => {
|
|
372
|
+
const e = this.wasm.arrToWasm(h), D = this.exports.mte_mke_dec_buff_bytes(this.decoder.off, h.length);
|
|
373
|
+
if (D == 0)
|
|
374
|
+
return this.wasm.free(e), { arr: null, status: t.mte_status_invalid_input };
|
|
375
|
+
const m = this.wasm.malloc(D), y = this.wasm.newInt(), l = this.wasm.newInt(), G = this.wasm.newInt64(), S = this.wasm.newInt64(), Y = this.wasm.newInt(), V = this.exports.mte_wasm_mke_dec_decode(this.decoder.off, this.instance, e.off, h.length, m.off, y.off, l.off, G.off, S.off, Y.off);
|
|
376
|
+
if (this.statusIsError(V))
|
|
377
|
+
return this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { arr: null, status: V };
|
|
378
|
+
const O = this.wasm.wasmToInt(y.off), v = this.wasm.wasmToInt(l.off), rA = m.buff.slice(O, O + v);
|
|
379
|
+
return this.encTs = this.wasm.wasmToTimestamp(G), this.decTs = this.wasm.wasmToTimestamp(S), this.msgSkipped = this.wasm.wasmToInt(Y.off), this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { arr: rA, status: V };
|
|
380
|
+
}, this.decodeB64 = (h) => {
|
|
381
|
+
const e = this.wasm.strToWasm(h), D = this.exports.mte_wasm_mke_dec_buff_bytes_b64(this.decoder.off, e.used), m = this.wasm.malloc(D), y = this.wasm.newInt(), l = this.wasm.newInt(), G = this.wasm.newInt64(), S = this.wasm.newInt64(), Y = this.wasm.newInt(), V = this.exports.mte_wasm_mke_dec_decode_b64(this.decoder.off, this.instance, e.off, e.used, m.off, y.off, l.off, G.off, S.off, Y.off);
|
|
382
|
+
if (this.statusIsError(V))
|
|
383
|
+
return this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { arr: null, status: V };
|
|
384
|
+
const O = this.wasm.wasmToInt(y.off), v = this.wasm.wasmToInt(l.off), rA = m.buff.slice(O, O + v);
|
|
385
|
+
return this.encTs = this.wasm.wasmToTimestamp(G), this.decTs = this.wasm.wasmToTimestamp(S), this.msgSkipped = this.wasm.wasmToInt(Y.off), this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { arr: rA, status: V };
|
|
386
|
+
}, this.decodeStr = (h) => {
|
|
387
|
+
const e = this.wasm.arrToWasm(h), D = this.exports.mte_mke_dec_buff_bytes(this.decoder.off, h.length);
|
|
388
|
+
if (D == 0)
|
|
389
|
+
return this.wasm.free(e), { str: null, status: t.mte_status_invalid_input };
|
|
390
|
+
const m = this.wasm.malloc(D), y = this.wasm.newInt(), l = this.wasm.newInt(), G = this.wasm.newInt64(), S = this.wasm.newInt64(), Y = this.wasm.newInt(), V = this.exports.mte_wasm_mke_dec_decode(this.decoder.off, this.instance, e.off, h.length, m.off, y.off, l.off, G.off, S.off, Y.off);
|
|
391
|
+
if (this.statusIsError(V))
|
|
392
|
+
return this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { str: null, status: V };
|
|
393
|
+
const O = this.wasm.wasmToInt(y.off), v = this.wasm.wasmToStr(m, O);
|
|
394
|
+
return this.encTs = this.wasm.wasmToTimestamp(G), this.decTs = this.wasm.wasmToTimestamp(S), this.msgSkipped = this.wasm.wasmToInt(Y.off), this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { str: v, status: V };
|
|
395
|
+
}, this.decodeStrB64 = (h) => {
|
|
396
|
+
const e = this.wasm.strToWasm(h), D = this.exports.mte_wasm_mke_dec_buff_bytes_b64(this.decoder.off, e.used), m = this.wasm.malloc(D), y = this.wasm.newInt(), l = this.wasm.newInt(), G = this.wasm.newInt64(), S = this.wasm.newInt64(), Y = this.wasm.newInt(), V = this.exports.mte_wasm_mke_dec_decode_b64(this.decoder.off, this.instance, e.off, e.used, m.off, y.off, l.off, G.off, S.off, Y.off);
|
|
397
|
+
if (this.statusIsError(V))
|
|
398
|
+
return this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { str: null, status: V };
|
|
399
|
+
const O = this.wasm.wasmToInt(y.off), v = this.wasm.wasmToStr(m, O);
|
|
400
|
+
return this.encTs = this.wasm.wasmToTimestamp(G), this.decTs = this.wasm.wasmToTimestamp(S), this.msgSkipped = this.wasm.wasmToInt(Y.off), this.wasm.free(e), this.wasm.free(m), this.wasm.free(y), this.wasm.free(l), this.wasm.free(G), this.wasm.free(S), this.wasm.free(Y), { str: v, status: V };
|
|
401
|
+
}, this.startDecrypt = () => this.exports.mte_mke_dec_decrypt_start(this.decoder.off, this.chunk.off), this.decryptChunk = (h) => {
|
|
402
|
+
const e = this.wasm.arrToWasm(h), D = this.wasm.newInt(), m = h.length + this.ciphBlockBytes, y = this.wasm.malloc(m), l = this.exports.mte_wasm_mke_dec_decrypt_chunk(this.decoder.off, this.chunk.off, e.off, h.length, y.off, D.off), G = this.wasm.wasmToInt(D.off), S = y.buff.slice(0, G);
|
|
403
|
+
return this.wasm.free(e), this.wasm.free(y), this.wasm.free(D), l == t.mte_status_success ? S : null;
|
|
404
|
+
}, this.finishDecrypt = () => {
|
|
405
|
+
const h = this.wasm.newInt(), e = this.wasm.newInt(), D = this.wasm.newInt64(), m = this.wasm.newInt64(), y = this.wasm.newInt(), l = this.exports.mte_wasm_mke_dec_decrypt_finish(this.decoder.off, this.chunk.off, this.instance, h.off, e.off, D.off, m.off, y.off);
|
|
406
|
+
if (this.statusIsError(l))
|
|
407
|
+
return this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { arr: null, status: l };
|
|
408
|
+
const G = this.wasm.wasmToInt(h.off), S = this.wasm.wasmToInt(e.off), Y = this.chunk.buff.slice(G, G + S);
|
|
409
|
+
return this.encTs = this.wasm.wasmToTimestamp(D), this.decTs = this.wasm.wasmToTimestamp(m), this.msgSkipped = this.wasm.wasmToInt(y.off), this.wasm.free(h), this.wasm.free(e), this.wasm.free(D), this.wasm.free(m), this.wasm.free(y), { arr: Y, status: l };
|
|
410
|
+
}, this.getEncTs = () => this.encTs, this.getDecTs = () => this.decTs, this.getMsgSkipped = () => this.msgSkipped, this.uninstantiate = () => this.exports.mte_mke_dec_uninstantiate(this.decoder.off);
|
|
411
|
+
const d = typeof I == "string" ? this.getDrbgsAlgo(I) : I, f = typeof C == "string" ? this.getVerifiersAlgo(C) : C, n = typeof E == "string" ? this.getCiphersAlgo(E) : E, w = typeof a == "string" ? this.getHashesAlgo(a) : a;
|
|
412
|
+
this.initBase(d, B, f, n, w);
|
|
413
|
+
const r = this.exports.mte_wasm_mke_dec_state_bytes(d, B, f, n, w);
|
|
414
|
+
if (r == 0)
|
|
415
|
+
throw new RangeError("MteMkeDec: Invalid options.");
|
|
416
|
+
if (this.decoder = Q.malloc(r), this.exports.mte_wasm_mke_dec_state_init(this.decoder.off, d, B, f, n, w, i, c) != t.mte_status_success)
|
|
417
|
+
throw new RangeError("MteMkeDec: Invalid options.");
|
|
418
|
+
if (this.saved = Q.malloc(this.exports.mte_mke_dec_save_bytes(this.decoder.off)), this.saved64 = Q.malloc(this.exports.mte_wasm_mke_dec_save_bytes_b64(this.decoder.off)), this.chunk = Q.malloc(this.exports.mte_mke_dec_decrypt_state_bytes(this.decoder.off)), this.ciphBlockBytes = this.getCiphersBlockBytes(n), this.ciphBlockBytes == 0)
|
|
419
|
+
throw new RangeError("MteMkeDec: Invalid options.");
|
|
420
|
+
}
|
|
421
|
+
/** Create a decoder using default options.
|
|
422
|
+
*
|
|
423
|
+
* The timestamp window and sequence window are optionally settable. */
|
|
424
|
+
static fromdefault(Q, I = 0, B = 0) {
|
|
425
|
+
const C = new R(Q);
|
|
426
|
+
return new U(Q, C.getDefaultDrbg(), C.getDefaultTokBytes(), C.getDefaultVerifiers(), C.getDefaultCipher(), C.getDefaultHash(), I, B);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
A.MteMkeDec = U;
|
|
430
|
+
class X {
|
|
431
|
+
/** Constructor taking the MKE encoder/decoder and directory for the SDR to
|
|
432
|
+
* use.
|
|
433
|
+
*
|
|
434
|
+
* Note: the MKE encoder/decoder provided to this object cannot be used
|
|
435
|
+
* outside this object as this object will change their states.
|
|
436
|
+
*/
|
|
437
|
+
constructor(Q, I, B) {
|
|
438
|
+
this.entropy = new Uint8Array(0), this.memFiles = /* @__PURE__ */ new Map(), this.getEncoder = () => this.enc, this.getDecoder = () => this.dec, this.initSdr = (i, c) => {
|
|
439
|
+
this.entropy = i, this.nonce.fill(0);
|
|
440
|
+
for (let d = 0; d < c.length; ++d) {
|
|
441
|
+
let f = parseInt(c.charAt(d));
|
|
442
|
+
for (let n = 0; n < this.nonce.length; ++n) {
|
|
443
|
+
let w = this.nonce[n] * 10 + f;
|
|
444
|
+
this.nonce[n] = w % 256, f = Math.floor(w / 256);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
this.implDirExists(this.sdrPath) || this.implCreateDir(this.sdrPath);
|
|
448
|
+
}, this.readData = (i) => {
|
|
449
|
+
let c;
|
|
450
|
+
this.memFiles.has(i) ? c = this.memFiles.get(i) : c = this.implReadFile(this.sdrPath, i);
|
|
451
|
+
const d = new Uint8Array(this.nonce.length);
|
|
452
|
+
for (let o = 0; o < d.length; ++o)
|
|
453
|
+
d[o] = c[o] ^ this.nonce[o];
|
|
454
|
+
const f = Uint8Array.from(this.entropy);
|
|
455
|
+
this.dec.setEntropyArr(f), this.dec.setNonceArr(d);
|
|
456
|
+
const n = this.dec.instantiate(i);
|
|
457
|
+
if (n != t.mte_status_success)
|
|
458
|
+
throw new Error("Error instantiating decoder (" + this.dec.getStatusName(n) + "): " + this.dec.getStatusDescription(n));
|
|
459
|
+
const w = c.slice(d.length), r = this.dec.decode(w);
|
|
460
|
+
if (r.status != t.mte_status_success)
|
|
461
|
+
throw new Error("Error decoding data (" + this.dec.getStatusName(r.status) + "): " + this.dec.getStatusDescription(r.status));
|
|
462
|
+
return r.arr;
|
|
463
|
+
}, this.readString = (i) => {
|
|
464
|
+
let c;
|
|
465
|
+
this.memFiles.has(i) ? c = this.memFiles.get(i) : c = this.implReadFile(this.sdrPath, i);
|
|
466
|
+
const d = new Uint8Array(this.nonce.length);
|
|
467
|
+
for (let o = 0; o < d.length; ++o)
|
|
468
|
+
d[o] = c[o] ^ this.nonce[o];
|
|
469
|
+
const f = Uint8Array.from(this.entropy);
|
|
470
|
+
this.dec.setEntropyArr(f), this.dec.setNonceArr(d);
|
|
471
|
+
const n = this.dec.instantiate(i);
|
|
472
|
+
if (n != t.mte_status_success)
|
|
473
|
+
throw new Error("Error instantiating decoder (" + this.dec.getStatusName(n) + "): " + this.dec.getStatusDescription(n));
|
|
474
|
+
const w = c.slice(d.length), r = this.dec.decodeStr(w);
|
|
475
|
+
if (r.status != t.mte_status_success)
|
|
476
|
+
throw new Error("Error decoding data (" + this.dec.getStatusName(r.status) + "): " + this.dec.getStatusDescription(r.status));
|
|
477
|
+
return r.str;
|
|
478
|
+
}, this.writeData = (i, c, d = !1) => {
|
|
479
|
+
const f = this.implGetTimestamp(), n = new Uint8Array(this.nonce.length);
|
|
480
|
+
for (let e = 0; e < n.length; ++e)
|
|
481
|
+
n[e] = f[e] ^ this.nonce[e];
|
|
482
|
+
const w = Uint8Array.from(this.entropy);
|
|
483
|
+
this.enc.setEntropyArr(w), this.enc.setNonceArr(n);
|
|
484
|
+
const r = this.enc.instantiate(i);
|
|
485
|
+
if (r != t.mte_status_success)
|
|
486
|
+
throw new Error("Error instantiating encoder (" + this.enc.getStatusName(r) + "): " + this.enc.getStatusDescription(r));
|
|
487
|
+
const o = this.enc.encode(c);
|
|
488
|
+
if (o.status != t.mte_status_success)
|
|
489
|
+
throw new Error("Error encoding data (" + this.enc.getStatusName(o.status) + "): " + this.enc.getStatusDescription(o.status));
|
|
490
|
+
const h = new Uint8Array(o.arr.length + f.length);
|
|
491
|
+
for (let e = 0; e < f.length; ++e)
|
|
492
|
+
h[e] = f[e];
|
|
493
|
+
for (let e = 0; e < o.arr.length; ++e)
|
|
494
|
+
h[e + f.length] = o.arr[e];
|
|
495
|
+
d ? this.memFiles.set(i, h) : this.implWriteFile(this.sdrPath, i, h);
|
|
496
|
+
}, this.writeString = (i, c, d = !1) => {
|
|
497
|
+
const f = this.implGetTimestamp(), n = new Uint8Array(this.nonce.length);
|
|
498
|
+
for (let e = 0; e < n.length; ++e)
|
|
499
|
+
n[e] = f[e] ^ this.nonce[e];
|
|
500
|
+
const w = Uint8Array.from(this.entropy);
|
|
501
|
+
this.enc.setEntropyArr(w), this.enc.setNonceArr(n);
|
|
502
|
+
const r = this.enc.instantiate(i);
|
|
503
|
+
if (r != t.mte_status_success)
|
|
504
|
+
throw new Error("Error instantiating encoder (" + this.enc.getStatusName(r) + "): " + this.enc.getStatusDescription(r));
|
|
505
|
+
const o = this.enc.encodeStr(c);
|
|
506
|
+
if (o.status != t.mte_status_success)
|
|
507
|
+
throw new Error("Error encoding data (" + this.enc.getStatusName(o.status) + "): " + this.enc.getStatusDescription(o.status));
|
|
508
|
+
const h = new Uint8Array(o.arr.length + f.length);
|
|
509
|
+
for (let e = 0; e < f.length; ++e)
|
|
510
|
+
h[e] = f[e];
|
|
511
|
+
for (let e = 0; e < o.arr.length; ++e)
|
|
512
|
+
h[e + f.length] = o.arr[e];
|
|
513
|
+
d ? this.memFiles.set(i, h) : this.implWriteFile(this.sdrPath, i, h);
|
|
514
|
+
}, this.remove = (i) => {
|
|
515
|
+
this.memFiles.has(i) ? this.memFiles.delete(i) : this.implRemoveFile(this.sdrPath, i);
|
|
516
|
+
}, this.removeSdr = () => {
|
|
517
|
+
if (this.implDirExists(this.sdrPath)) {
|
|
518
|
+
const i = this.implListFiles(this.sdrPath);
|
|
519
|
+
for (let c = 0; c < i.length; ++c)
|
|
520
|
+
this.implRemoveFile(this.sdrPath, i[c]);
|
|
521
|
+
this.implRemoveDir(this.sdrPath);
|
|
522
|
+
}
|
|
523
|
+
}, this.implDirExists = (i) => !0, this.implListFiles = (i) => [], this.implCreateDir = (i) => {
|
|
524
|
+
}, this.implReadFile = (i, c) => {
|
|
525
|
+
throw new Error("MteSdrAbs.readFile() called.");
|
|
526
|
+
}, this.implWriteFile = (i, c, d) => {
|
|
527
|
+
throw new Error("MteSdrAbs.writeFile() called.");
|
|
528
|
+
}, this.implRemoveDir = (i) => {
|
|
529
|
+
}, this.implRemoveFile = (i, c) => {
|
|
530
|
+
}, this.implGetTimestamp = () => {
|
|
531
|
+
let i = Math.floor(Date.now());
|
|
532
|
+
const c = new Uint8Array(this.nonce.length);
|
|
533
|
+
for (let d = c.length - 1; d >= 0; --d)
|
|
534
|
+
c[d] = i % 256, i = Math.floor(i / 256);
|
|
535
|
+
return c;
|
|
536
|
+
}, this.enc = Q, this.dec = I, this.wasm = Q.wasm, this.enc.setEntropyCallback(null), this.dec.setEntropyCallback(null), this.enc.setNonceCallback(null), this.dec.setNonceCallback(null), this.enc.setTimestampCallback(null), this.dec.setTimestampCallback(null);
|
|
537
|
+
const C = Q.getDrbgsNonceMinBytes(Q.getDrbg()), E = Q.getDrbgsNonceMaxBytes(Q.getDrbg()), a = Math.min(Math.max(C, 8), E);
|
|
538
|
+
this.nonce = new Uint8Array(a), this.sdrPath = B;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
A.MteSdrAbs = X;
|
|
542
|
+
class Z extends X {
|
|
543
|
+
/** Constructor taking the MKE encoder/decoder, directory for the SDR to
|
|
544
|
+
* use, and cookie attributes to append.
|
|
545
|
+
*
|
|
546
|
+
* Note that a cookie attribute starts with a semicolon to separate it from
|
|
547
|
+
* the previous value or attribute. Therefore, to add a max age of 100, the
|
|
548
|
+
* attrs should be "; max-age=100".
|
|
549
|
+
*
|
|
550
|
+
* Note: the MKE encoder/decoder provided to this object cannot be used
|
|
551
|
+
* outside this object as this object will change their states.
|
|
552
|
+
*/
|
|
553
|
+
constructor(Q, I, B, C) {
|
|
554
|
+
super(Q, I, B), this.implListFiles = (E) => {
|
|
555
|
+
const a = E + "_";
|
|
556
|
+
return document.cookie.split(";").filter((i) => i.trim().startsWith(a)).map((i) => i.split("=")[0].trim().slice(a.length));
|
|
557
|
+
}, this.implReadFile = (E, a) => {
|
|
558
|
+
const i = E + "_" + a + "=", c = document.cookie.split(";").filter((f) => f.trim().startsWith(i));
|
|
559
|
+
if (c.length != 1)
|
|
560
|
+
throw new Error("Could not find cookie.");
|
|
561
|
+
const d = c[0];
|
|
562
|
+
return this.wasm.b64decode(decodeURIComponent(d.split("=")[1].trim()));
|
|
563
|
+
}, this.implWriteFile = (E, a, i) => {
|
|
564
|
+
const c = encodeURIComponent(this.wasm.b64encode(i));
|
|
565
|
+
document.cookie = E + "_" + a + "=" + c + this.attrs;
|
|
566
|
+
}, this.implRemoveFile = (E, a) => {
|
|
567
|
+
document.cookie = E + "_" + a + "=_; max-age=0";
|
|
568
|
+
}, this.attrs = C;
|
|
569
|
+
}
|
|
570
|
+
/** Create an SDR at the given directory with the cookie attributes to
|
|
571
|
+
* append. Default-constructed MKE encoder and decoder are created.
|
|
572
|
+
*/
|
|
573
|
+
static fromdefault(Q, I, B) {
|
|
574
|
+
return new Z(J.fromdefault(Q), U.fromdefault(Q), I, B);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
A.MteSdrCookie = Z;
|
|
578
|
+
class W extends X {
|
|
579
|
+
/** Constructor taking the MKE encoder/decoder, directory for the SDR to
|
|
580
|
+
* use, and storage to use (true = local, false = session).
|
|
581
|
+
*
|
|
582
|
+
* Note: the MKE encoder/decoder provided to this object cannot be used
|
|
583
|
+
* outside this object as this object will change their states.
|
|
584
|
+
*/
|
|
585
|
+
constructor(Q, I, B, C) {
|
|
586
|
+
super(Q, I, B), this.implListFiles = (E) => {
|
|
587
|
+
const a = E + "/", i = new Array();
|
|
588
|
+
for (let c = 0; c < this.storage.length; ++c) {
|
|
589
|
+
const d = this.storage.key(c);
|
|
590
|
+
d.startsWith(a) && i.push(d.slice(a.length));
|
|
591
|
+
}
|
|
592
|
+
return i;
|
|
593
|
+
}, this.implReadFile = (E, a) => {
|
|
594
|
+
const i = E + "/" + a, c = this.storage.getItem(i);
|
|
595
|
+
if (c == null)
|
|
596
|
+
throw new Error("Could not find file.");
|
|
597
|
+
return this.wasm.b64decode(c);
|
|
598
|
+
}, this.implWriteFile = (E, a, i) => {
|
|
599
|
+
const c = this.wasm.b64encode(i), d = E + "/" + a;
|
|
600
|
+
this.storage.setItem(d, c);
|
|
601
|
+
}, this.implRemoveFile = (E, a) => {
|
|
602
|
+
const i = E + "/" + a;
|
|
603
|
+
this.storage.removeItem(i);
|
|
604
|
+
}, this.storage = C ? window.localStorage : window.sessionStorage;
|
|
605
|
+
}
|
|
606
|
+
/** Create an SDR at the given directory with the storage choice. Default-
|
|
607
|
+
* constructed MKE encoder and decoder are created.
|
|
608
|
+
*/
|
|
609
|
+
static fromdefault(Q, I, B) {
|
|
610
|
+
return new W(J.fromdefault(Q), U.fromdefault(Q), I, B);
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
A.MteSdrStorage = W;
|
|
614
|
+
class M {
|
|
615
|
+
}
|
|
616
|
+
A.MteRandom = M, M.getBytes = (s) => s.length == 0 ? !1 : typeof window > "u" ? (TA.getRandomValues(s), !0) : (window.crypto.getRandomValues(s), !0);
|
|
617
|
+
var _;
|
|
618
|
+
(function(s) {
|
|
619
|
+
s[s.none = 0] = "none", s[s.K512 = 512] = "K512", s[s.K768 = 768] = "K768", s[s.K1024 = 1024] = "K1024";
|
|
620
|
+
})(_ = A.MteKyberStrength || (A.MteKyberStrength = {}));
|
|
621
|
+
var q;
|
|
622
|
+
(function(s) {
|
|
623
|
+
s[s.success = 0] = "success", s[s.invalidStrength = -1] = "invalidStrength", s[s.entropyFail = -2] = "entropyFail", s[s.invalidPubKey = -3] = "invalidPubKey", s[s.invalidPrivKey = -4] = "invalidPrivKey", s[s.memoryFail = -5] = "memoryFail", s[s.invalidCipherText = -6] = "invalidCipherText";
|
|
624
|
+
})(q = A.MteKyberStatus || (A.MteKyberStatus = {}));
|
|
625
|
+
class L {
|
|
626
|
+
/** Constructor which needs no parameters. */
|
|
627
|
+
constructor(Q, I) {
|
|
628
|
+
if (this.publicKeySize = 0, this.privateKeySize = 0, this.minEntropySize = 0, this.maxEntropySize = 0, this.encryptedSize = 0, this.secretSize = 0, this.privateKey = null, this.myEntropyCb = null, this.myEntropy = null, this.getPublicKeySize = () => this.publicKeySize, this.getSecretSize = () => this.secretSize, this.getEncryptedSize = () => this.encryptedSize, this.getminEntropySize = () => this.minEntropySize, this.getMaxEntropySize = () => this.maxEntropySize, this.getAlgorithm = () => {
|
|
629
|
+
const B = this.exports.mte_wasm_kyber_get_algorithm();
|
|
630
|
+
return this.wasm.wasmOffToStr(B);
|
|
631
|
+
}, this.setEntropyCallback = (B) => {
|
|
632
|
+
this.myEntropyCb = B;
|
|
633
|
+
}, this.setEntropy = (B) => {
|
|
634
|
+
if (B.length < this.minEntropySize || B.length > this.maxEntropySize)
|
|
635
|
+
return q.entropyFail;
|
|
636
|
+
this.myEntropy = new Uint8Array(B.length);
|
|
637
|
+
for (let C = 0; C < B.length; ++C)
|
|
638
|
+
this.myEntropy[C] = B[C], B[C] = 0;
|
|
639
|
+
return q.success;
|
|
640
|
+
}, this.createKeypair = () => {
|
|
641
|
+
let B = q.success;
|
|
642
|
+
const C = this.wasm.malloc(this.publicKeySize), E = this.wasm.newInt();
|
|
643
|
+
this.wasm.intToWasm(E.off, this.publicKeySize);
|
|
644
|
+
const a = this.wasm.malloc(this.privateKeySize), i = this.wasm.newInt();
|
|
645
|
+
if (this.wasm.intToWasm(i.off, this.privateKeySize), B = this.exports.mte_wasm_kyber_create_keypair(a.off, i.off, C.off, E.off, this.instance), B != q.success)
|
|
646
|
+
return this.wasm.free(C), this.wasm.free(E), this.wasm.free(a), this.wasm.free(i), { result1: null, result2: null, status: B };
|
|
647
|
+
const c = C.buff.slice(0, this.publicKeySize);
|
|
648
|
+
return this.privateKey = a.buff.slice(0, this.privateKeySize), this.wasm.free(C), this.wasm.free(E), this.wasm.free(a), this.wasm.free(i), { result1: c, result2: null, status: B };
|
|
649
|
+
}, this.createSecret = (B) => {
|
|
650
|
+
const C = this.wasm.arrToWasm(B), E = this.wasm.malloc(this.secretSize), a = this.wasm.newInt();
|
|
651
|
+
this.wasm.intToWasm(a.off, this.secretSize);
|
|
652
|
+
const i = this.wasm.malloc(this.encryptedSize), c = this.wasm.newInt();
|
|
653
|
+
this.wasm.intToWasm(c.off, this.encryptedSize);
|
|
654
|
+
const d = this.exports.mte_wasm_kyber_create_secret(C.off, B.length, E.off, a.off, i.off, c.off, this.instance);
|
|
655
|
+
if (this.wasm.free(C), d !== q.success)
|
|
656
|
+
return this.wasm.free(E), this.wasm.free(a), this.wasm.free(i), this.wasm.free(c), { result1: null, result2: null, status: d };
|
|
657
|
+
const f = E.buff.slice(0, this.secretSize), n = i.buff.slice(0, this.encryptedSize);
|
|
658
|
+
return this.wasm.free(E), this.wasm.free(a), this.wasm.free(i), this.wasm.free(c), {
|
|
659
|
+
result1: f,
|
|
660
|
+
result2: n,
|
|
661
|
+
status: q.success
|
|
662
|
+
};
|
|
663
|
+
}, this.decryptSecret = (B) => {
|
|
664
|
+
if (this.privateKey === null)
|
|
665
|
+
return {
|
|
666
|
+
result1: null,
|
|
667
|
+
result2: null,
|
|
668
|
+
status: q.invalidPrivKey
|
|
669
|
+
};
|
|
670
|
+
const C = this.wasm.arrToWasm(this.privateKey), E = this.wasm.arrToWasm(B), a = this.wasm.malloc(this.secretSize), i = this.wasm.newInt();
|
|
671
|
+
this.wasm.intToWasm(i.off, this.secretSize);
|
|
672
|
+
const c = this.exports.mte_wasm_kyber_decrypt_secret(C.off, this.privateKey.length, E.off, B.length, a.off, i.off);
|
|
673
|
+
if (this.wasm.free(C), this.wasm.free(E), c !== q.success)
|
|
674
|
+
return this.wasm.free(a), this.wasm.free(i), { result1: null, result2: null, status: c };
|
|
675
|
+
const d = a.buff.slice(0, this.secretSize);
|
|
676
|
+
return this.wasm.free(a), this.wasm.free(i), {
|
|
677
|
+
result1: d,
|
|
678
|
+
result2: null,
|
|
679
|
+
status: q.success
|
|
680
|
+
};
|
|
681
|
+
}, this.destruct = () => {
|
|
682
|
+
for (L.instances[this.instance] = null; L.instances.length > 0 && L.instances[L.instances.length - 1] == null; )
|
|
683
|
+
L.instances.pop();
|
|
684
|
+
}, this.defaultCallback = (B, C, E, a, i) => {
|
|
685
|
+
const c = L.instances[B];
|
|
686
|
+
if (c.myEntropyCb !== null)
|
|
687
|
+
return c.myEntropyCb.entropyCallback(C, E, a, i);
|
|
688
|
+
if (c.myEntropy === null) {
|
|
689
|
+
let d = new Uint8Array(a);
|
|
690
|
+
if (!M.getBytes(d))
|
|
691
|
+
return q.entropyFail;
|
|
692
|
+
let f = this.wasm.wasmOverlay(C, a);
|
|
693
|
+
for (let n = 0; n < a; ++n)
|
|
694
|
+
f[n] = d[n], d[n] = 0;
|
|
695
|
+
c.wasm.intToWasm(E, a);
|
|
696
|
+
} else {
|
|
697
|
+
let d = this.wasm.wasmOverlay(C, c.myEntropy.length);
|
|
698
|
+
for (let f = 0; f < c.myEntropy.length; ++f)
|
|
699
|
+
d[f] = c.myEntropy[f], c.myEntropy[f] = 0;
|
|
700
|
+
c.wasm.intToWasm(E, c.myEntropy.length), c.myEntropy = null;
|
|
701
|
+
}
|
|
702
|
+
return q.success;
|
|
703
|
+
}, L.strength !== _.none && L.strength !== I)
|
|
704
|
+
throw new TypeError("MteKyber: differing Kyber strengths are not supported.");
|
|
705
|
+
if (this.wasm = Q, Q.exports !== null)
|
|
706
|
+
this.exports = Q.exports;
|
|
707
|
+
else
|
|
708
|
+
throw new TypeError("MteKyber: WASM does not have exports.");
|
|
709
|
+
if (Q.memory !== null)
|
|
710
|
+
this.memory = Q.memory;
|
|
711
|
+
else
|
|
712
|
+
throw new TypeError("MteKyber: WASM does not have memory.");
|
|
713
|
+
Q.kyberCallback === null && (Q.kyberCallback = this.defaultCallback), this.instance = -1;
|
|
714
|
+
for (let B = 0; B < L.instances.length; B++)
|
|
715
|
+
if (L.instances[B] === null) {
|
|
716
|
+
this.instance = B;
|
|
717
|
+
break;
|
|
718
|
+
}
|
|
719
|
+
if (this.instance === -1 ? (this.instance = L.instances.length, L.instances.push(this)) : L.instances[this.instance] = this, this.exports.mte_wasm_kyber_init(I) != q.success)
|
|
720
|
+
throw new TypeError("MteKyber: intializing the strength failed.");
|
|
721
|
+
L.strength = I, this.publicKeySize = this.exports.mte_wasm_kyber_get_pubkey_size(), this.privateKeySize = this.exports.mte_wasm_kyber_get_privkey_size(), this.minEntropySize = this.exports.mte_wasm_kyber_get_min_entropy_size(), this.maxEntropySize = this.exports.mte_wasm_kyber_get_max_entropy_size(), this.encryptedSize = this.exports.mte_wasm_kyber_get_encrypted_size(), this.secretSize = this.exports.mte_wasm_kyber_get_secret_size();
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
A.MteKyber = L, L.instances = [], L.strength = _.none, L.zeroize = (s) => {
|
|
725
|
+
for (let Q = 0; Q < s.length; ++Q)
|
|
726
|
+
s[Q] = 0;
|
|
727
|
+
};
|
|
728
|
+
class VA {
|
|
729
|
+
constructor() {
|
|
730
|
+
this.kyberCallback = null, this.entropyCallback = null, this.nonceCallback = null, this.timestampCallback = null, this.exports = null, this.memory = null, this.pageBytes = 64 * 1024, this.base = 0, this.bytes = 0, this.blocks = [], this.instantiate = () => new Promise((Q, I) => g(this, void 0, void 0, function* () {
|
|
731
|
+
try {
|
|
732
|
+
const B = {
|
|
733
|
+
mte_wasm_kyber_cb: this.kyberCallbackWasm,
|
|
734
|
+
mte_wasm_ei_cb: this.entropyCallbackWasm,
|
|
735
|
+
mte_wasm_n_cb: this.nonceCallbackWasm,
|
|
736
|
+
mte_wasm_t_cb: this.timestampCallbackWasm
|
|
737
|
+
}, C = {
|
|
738
|
+
env: B,
|
|
739
|
+
imports: B
|
|
740
|
+
}, E = new x(), a = yield WebAssembly.compile(E.wasmArr), i = yield WebAssembly.instantiate(a, C);
|
|
741
|
+
this.exports = i.exports, this.memory = this.exports.memory, this.base = this.memory.buffer.byteLength, Q();
|
|
742
|
+
} catch (B) {
|
|
743
|
+
I(B);
|
|
744
|
+
}
|
|
745
|
+
})), this.malloc = (Q) => {
|
|
746
|
+
const I = this.memory, B = this.blocks.length;
|
|
747
|
+
for (let i = 0; i < B; ++i)
|
|
748
|
+
if (!this.blocks[i].inUse && this.blocks[i].bytes >= Q) {
|
|
749
|
+
this.blocks[i].bytes > Q && (this.blocks.splice(i + 1, 0, new kA(this.blocks[i].off + Q, this.blocks[i].bytes - Q)), this.blocks[i].bytes = Q);
|
|
750
|
+
const c = new iA(this.blocks[i].off, new Uint8Array(I.buffer, this.blocks[i].off, Q));
|
|
751
|
+
return this.blocks[i].inUse = !0, this.blocks[i].mteMem = c, c;
|
|
752
|
+
}
|
|
753
|
+
const C = I.buffer.byteLength, E = Math.ceil(Q / this.pageBytes);
|
|
754
|
+
I.grow(E);
|
|
755
|
+
for (let i = 0; i < B; ++i)
|
|
756
|
+
this.blocks[i].inUse && (this.blocks[i].mteMem.buff = new Uint8Array(I.buffer, this.blocks[i].off, this.blocks[i].bytes));
|
|
757
|
+
const a = I.buffer.byteLength - C;
|
|
758
|
+
return this.blocks.length != 0 && !this.blocks[this.blocks.length - 1].inUse ? this.blocks[this.blocks.length - 1].bytes += a : this.blocks.push(new kA(this.base + this.bytes, a)), this.bytes += a, this.malloc(Q);
|
|
759
|
+
}, this.free = (Q) => {
|
|
760
|
+
let I = 0;
|
|
761
|
+
const B = this.blocks.length;
|
|
762
|
+
for (; I < B && this.blocks[I].off != Q.off; ++I)
|
|
763
|
+
;
|
|
764
|
+
I != B && (I != 0 && !this.blocks[I - 1].inUse ? (this.blocks[I - 1].bytes += this.blocks[I].bytes, this.blocks.splice(I, 1), --I) : (this.blocks[I].inUse = !1, this.blocks[I].mteMem = null), I < this.blocks.length - 1 && !this.blocks[I + 1].inUse && (this.blocks[I].bytes += this.blocks[I + 1].bytes, this.blocks.splice(I + 1, 1)));
|
|
765
|
+
}, this.wasmToInt = (Q) => {
|
|
766
|
+
const I = this.wasmOverlay(Q, 4);
|
|
767
|
+
return I[0] + // 2^0
|
|
768
|
+
I[1] * 256 + // 2^8
|
|
769
|
+
I[2] * 65536 + // 2^16
|
|
770
|
+
I[3] * 16777216;
|
|
771
|
+
}, this.intToWasm = (Q, I) => {
|
|
772
|
+
const B = this.wasmOverlay(Q, 4);
|
|
773
|
+
B[0] = I & 255, B[1] = I >> 8 & 255, B[2] = I >> 16 & 255, B[3] = I >> 24;
|
|
774
|
+
}, this.newInt = () => this.malloc(4), this.wasmToInt64 = (Q) => {
|
|
775
|
+
const I = this.wasmOverlay(Q, 8);
|
|
776
|
+
return I[0] + // 2^0
|
|
777
|
+
I[1] * 256 + // 2^8
|
|
778
|
+
I[2] * 65536 + // 2^16
|
|
779
|
+
I[3] * 16777216 + // 2^24
|
|
780
|
+
I[4] * 4294967296 + // 2^32
|
|
781
|
+
I[5] * 1099511627776 + // 2^40
|
|
782
|
+
I[6] * 281474976710656;
|
|
783
|
+
}, this.int64ToWasm = (Q, I) => {
|
|
784
|
+
const B = this.wasmOverlay(Q, 8);
|
|
785
|
+
for (let C = 0; C < 6; ++C)
|
|
786
|
+
B[C] = I & 255, I /= 256;
|
|
787
|
+
B[6] = I & 255, B[7] = 0;
|
|
788
|
+
}, this.newInt64 = () => this.malloc(8), this.wasmToTimestamp = (Q) => Q.buff[7] == 0 && (Q.buff[6] & 224) == 0 ? { ts: this.wasmToInt64(Q.off), upper: 0 } : { ts: this.wasmToInt(Q.off), upper: this.wasmToInt(Q.off + 4) }, this.wasmOverlay = (Q, I) => new Uint8Array(this.memory.buffer, Q, I), this.wasmToArr = (Q, I) => {
|
|
789
|
+
const B = this.wasmOverlay(Q, I), C = new Uint8Array(I);
|
|
790
|
+
for (let E = 0; E < I; ++E)
|
|
791
|
+
C[E] = B[E];
|
|
792
|
+
return C;
|
|
793
|
+
}, this.arrToWasm = (Q) => {
|
|
794
|
+
const I = this.malloc(Q.length);
|
|
795
|
+
for (let B = 0; B < Q.length; ++B)
|
|
796
|
+
I.buff[B] = Q[B];
|
|
797
|
+
return I;
|
|
798
|
+
}, this.arrToOffLen = (Q, I, B) => {
|
|
799
|
+
const C = this.wasmOverlay(I, B);
|
|
800
|
+
for (let E = 0; E < B; ++E)
|
|
801
|
+
C[E] = Q[E];
|
|
802
|
+
}, this.strToWasm = (Q, I = 0) => {
|
|
803
|
+
Q = String(Q);
|
|
804
|
+
const B = this.malloc(Q.length * 4 + 1 + I), C = B.buff;
|
|
805
|
+
let E = 0;
|
|
806
|
+
for (let a = 0; a < Q.length; ++a) {
|
|
807
|
+
let i = Q.charCodeAt(a);
|
|
808
|
+
i < 128 ? (C[E] = i, ++E) : i < 2048 ? (C[E] = 192 | i >> 6, ++E, C[E] = 128 | i & 63, ++E) : i < 55296 || i >= 57344 ? (C[E] = 224 | i >> 12, ++E, C[E] = 128 | i >> 6 & 63, ++E, C[E] = 128 | i & 63, ++E) : (i = (i & 1023) << 10 | Q.charCodeAt(a) & 1023 | 65536, C[E] = 240 | i >> 18, ++E, C[E] = 128 | i >> 12 & 63, ++E, C[E] = 128 | i >> 6 & 63, ++E, C[E] = 128 | i & 63, ++E);
|
|
809
|
+
}
|
|
810
|
+
return B.used = E, C[E] = 0, B;
|
|
811
|
+
}, this.wasmToStr = (Q, I = 0) => {
|
|
812
|
+
let B, C = "";
|
|
813
|
+
const E = Q.buff;
|
|
814
|
+
for (let a = I; a < Q.used && E[a] != 0; )
|
|
815
|
+
E[a] < 128 ? (C += String.fromCharCode(E[a]), ++a) : E[a] > 191 && E[a] < 224 ? (B = (E[a] & 31) << 6 | E[a + 1] & 63, C += String.fromCharCode(B), a += 2) : E[a] > 223 && E[a] < 240 ? (B = (E[a] & 15) << 12 | (E[a + 1] & 63) << 6 | E[a + 2] & 63, C += String.fromCharCode(B), a += 3) : (B = (E[a] & 7) << 18 | (E[a + 1] & 63) << 12 | (E[a + 2] & 63) << 6 | (E[a + 3] & 63) - 65536, C += String.fromCharCode(B), a += 4);
|
|
816
|
+
return C;
|
|
817
|
+
}, this.wasmOffToStr = (Q, I = 0) => {
|
|
818
|
+
const B = this.wasmOverlay(Q, this.memory.buffer.byteLength - Q);
|
|
819
|
+
return this.wasmToStr(new iA(-1, B), I);
|
|
820
|
+
}, this.b64encode = (Q) => {
|
|
821
|
+
const I = this.arrToWasm(Q), B = this.exports.mte_wasm_base64_encode_bytes(Q.length), C = this.malloc(B);
|
|
822
|
+
this.exports.mte_wasm_base64_encode(I.off, Q.length, C.off);
|
|
823
|
+
const E = this.wasmToStr(C);
|
|
824
|
+
return this.free(I), this.free(C), E;
|
|
825
|
+
}, this.b64decode = (Q) => {
|
|
826
|
+
const I = this.strToWasm(Q), B = this.exports.mte_wasm_base64_decode(I.off), C = this.wasmToArr(I.off, B);
|
|
827
|
+
return this.free(I), C;
|
|
828
|
+
}, this.kyberCallbackWasm = (Q, I, B, C, E) => {
|
|
829
|
+
if (this.kyberCallback === null)
|
|
830
|
+
throw new TypeError("Missing Kyber callback.");
|
|
831
|
+
return this.kyberCallback(Q, I, B, C, E);
|
|
832
|
+
}, this.entropyCallbackWasm = (Q, I, B, C, E, a) => {
|
|
833
|
+
if (this.entropyCallback === null)
|
|
834
|
+
throw new TypeError("Missing entropy callback.");
|
|
835
|
+
return this.entropyCallback(Q, I, B, C, E, a);
|
|
836
|
+
}, this.nonceCallbackWasm = (Q, I, B, C, E) => {
|
|
837
|
+
if (this.nonceCallback === null)
|
|
838
|
+
throw new TypeError("Missing nonce callback.");
|
|
839
|
+
this.nonceCallback(Q, I, B, C, E);
|
|
840
|
+
}, this.timestampCallbackWasm = (Q, I) => {
|
|
841
|
+
if (this.timestampCallback === null)
|
|
842
|
+
throw new TypeError("Missing timestamp callback.");
|
|
843
|
+
return this.timestampCallback(Q, I);
|
|
844
|
+
};
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
A.MteWasm = VA;
|
|
848
|
+
class iA {
|
|
849
|
+
/** Constructor taking the WASM offset and overlaid array. The default
|
|
850
|
+
* arguments create an invalid memory object (like NULL). */
|
|
851
|
+
constructor(Q = -1, I = null) {
|
|
852
|
+
this.invalidate = () => {
|
|
853
|
+
this.off = -1, this.buff = null, this.used = 0;
|
|
854
|
+
}, this.off = Q, this.buff = I, this.used = I != null ? I.length : 0;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
A.MteMem = iA;
|
|
858
|
+
class kA {
|
|
859
|
+
/** Constructor. The block is marked as not in use. */
|
|
860
|
+
constructor(Q, I) {
|
|
861
|
+
this.inUse = !1, this.off = Q, this.bytes = I, this.mteMem = null;
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
class x {
|
|
865
|
+
/** Constructor. */
|
|
866
|
+
constructor() {
|
|
867
|
+
let Q = Math.floor(x.wasmB64.length / 4) * 3;
|
|
868
|
+
for (let o = x.wasmB64.length - 1; o > 0 && x.wasmB64[o] == "="; --o)
|
|
869
|
+
--Q;
|
|
870
|
+
this.wasmArr = new Uint8Array(Q);
|
|
871
|
+
const I = (o) => o >= 65 && o <= 90 ? o - 65 : o >= 97 && o <= 122 ? o - 71 : o >= 48 && o <= 57 ? o + 4 : o == 43 ? 62 : 63;
|
|
872
|
+
let B, C, E, a, i, c, d, f, n = 0, w = 0;
|
|
873
|
+
const r = Math.floor(Q / 3) * 3;
|
|
874
|
+
for (; n < r; )
|
|
875
|
+
i = x.wasmB64.charCodeAt(w), ++w, c = x.wasmB64.charCodeAt(w), ++w, d = x.wasmB64.charCodeAt(w), ++w, f = x.wasmB64.charCodeAt(w), ++w, B = I(i), C = I(c), E = I(d), a = I(f), this.wasmArr[n] = B << 2 | C >> 4, ++n, this.wasmArr[n] = (C & 15) << 4 | E >> 2, ++n, this.wasmArr[n] = (E & 3) << 6 | a, ++n;
|
|
876
|
+
switch (Q - n) {
|
|
877
|
+
case 1:
|
|
878
|
+
i = x.wasmB64.charCodeAt(w), ++w, c = x.wasmB64.charCodeAt(w), B = I(i), C = I(c), this.wasmArr[n] = B << 2 | C >> 4;
|
|
879
|
+
break;
|
|
880
|
+
case 2:
|
|
881
|
+
i = x.wasmB64.charCodeAt(w), ++w, c = x.wasmB64.charCodeAt(w), ++w, d = x.wasmB64.charCodeAt(w), B = I(i), C = I(c), E = I(d), this.wasmArr[n] = B << 2 | C >> 4, ++n, this.wasmArr[n] = (C & 15) << 4 | E >> 2;
|
|
882
|
+
break;
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
x.wasmB64 = "AGFzbQEAAAABnQEUYAJ/fwF/YAF/AX9gAAF/YAN/f38AYAJ/fwBgBX9/f39/AX9gA39/fwF/YAF/AGAEf39/fwBgB39/f39/f38Bf2ABfwF8YAp/f39/f39/f39/AX9gBn9/f39/fwF/YAV/f39/fwBgBH9/f38Bf2AGf39/fH9/AX9gAABgBn9/f398fwF/YAh/f39/f398fwF/YAh/f39/f39/fwF/AkIDA2Vudg5tdGVfd2FzbV9laV9jYgAPA2Vudg1tdGVfd2FzbV9uX2NiAA0DZW52EW10ZV93YXNtX2t5YmVyX2NiAAUDtwG1ARAAAgEBBQAEBgYGAwABBAYHBAMDDgQHAwAFBAQGAQQGCAYBAAAAAQYAAAAAAAABAQYAAAABAAAAAQEAAQAAAAEAAQQNBwMIAwMDCAcIAwMHAwMEBAcDBwMEBwcICAAEAQMBAgICAgEBAQICAgIBAQEBCgEKBwQBAQEBAQIBAQYRBQoBAAAACwsGDgUKAAAACQkFEgUAAAsLDBMFDAUAAAkJDAUBAgICAgICAgUFCQwDAAIHAQIEBQFwAQUFBQYBAQGAgAIGCAF/AUGQrQILB4ceggEGbWVtb3J5AgAIbXRlX2luaXQABBBtdGVfYmFzZV92ZXJzaW9uAAUZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAGG10ZV9iYXNlX3N0YXR1c19pc19lcnJvcgAGEG10ZV9saWNlbnNlX2luaXQACRJtdGVfZW5jX3NhdmVfYnl0ZXMAJRJtdGVfZW5jX3N0YXRlX3NhdmUAJhVtdGVfZW5jX3N0YXRlX3Jlc3RvcmUAJxJtdGVfZW5jX2J1ZmZfYnl0ZXMAKBVtdGVfZW5jX3VuaW5zdGFudGlhdGUAKRJtdGVfZGVjX3NhdmVfYnl0ZXMAJRJtdGVfZGVjX3N0YXRlX3NhdmUALhVtdGVfZGVjX3N0YXRlX3Jlc3RvcmUALxJtdGVfZGVjX2J1ZmZfYnl0ZXMAMBVtdGVfZGVjX3VuaW5zdGFudGlhdGUAMRZtdGVfbWtlX2VuY19zYXZlX2J5dGVzACUWbXRlX21rZV9lbmNfc3RhdGVfc2F2ZQAmGW10ZV9ta2VfZW5jX3N0YXRlX3Jlc3RvcmUAOBZtdGVfbWtlX2VuY19idWZmX2J5dGVzADkgbXRlX21rZV9lbmNfZW5jcnlwdF9maW5pc2hfYnl0ZXMAOx9tdGVfbWtlX2VuY19lbmNyeXB0X3N0YXRlX2J5dGVzADwZbXRlX21rZV9lbmNfZW5jcnlwdF9zdGFydAA9GW10ZV9ta2VfZW5jX3VuaW5zdGFudGlhdGUAPhZtdGVfbWtlX2RlY19zYXZlX2J5dGVzACUWbXRlX21rZV9kZWNfc3RhdGVfc2F2ZQAuGW10ZV9ta2VfZGVjX3N0YXRlX3Jlc3RvcmUAPxZtdGVfbWtlX2RlY19idWZmX2J5dGVzAEAfbXRlX21rZV9kZWNfZGVjcnlwdF9zdGF0ZV9ieXRlcwBCGW10ZV9ta2VfZGVjX2RlY3J5cHRfc3RhcnQAQxltdGVfbWtlX2RlY191bmluc3RhbnRpYXRlAEQcbXRlX3dhc21fYmFzZTY0X2VuY29kZV9ieXRlcwBiFm10ZV93YXNtX2Jhc2U2NF9lbmNvZGUAYxZtdGVfd2FzbV9iYXNlNjRfZGVjb2RlAGQbbXRlX3dhc21fYmFzZV92ZXJzaW9uX21ham9yAGUbbXRlX3dhc21fYmFzZV92ZXJzaW9uX21pbm9yAGYbbXRlX3dhc21fYmFzZV92ZXJzaW9uX3BhdGNoAGcabXRlX3dhc21fYmFzZV9zdGF0dXNfY291bnQAaBltdGVfd2FzbV9iYXNlX3N0YXR1c19uYW1lAGkgbXRlX3dhc21fYmFzZV9zdGF0dXNfZGVzY3JpcHRpb24AahltdGVfd2FzbV9iYXNlX3N0YXR1c19jb2RlAGsebXRlX3dhc21fYmFzZV9oYXNfcnVudGltZV9vcHRzAGcabXRlX3dhc21fYmFzZV9kZWZhdWx0X2RyYmcAbB9tdGVfd2FzbV9iYXNlX2RlZmF1bHRfdG9rX2J5dGVzAG0fbXRlX3dhc21fYmFzZV9kZWZhdWx0X3ZlcmlmaWVycwBuHG10ZV93YXNtX2Jhc2VfZGVmYXVsdF9jaXBoZXIAbhptdGVfd2FzbV9iYXNlX2RlZmF1bHRfaGFzaABuGW10ZV93YXNtX2Jhc2VfZHJiZ3NfY291bnQAbxhtdGVfd2FzbV9iYXNlX2RyYmdzX25hbWUAcBhtdGVfd2FzbV9iYXNlX2RyYmdzX2FsZ28AcSZtdGVfd2FzbV9iYXNlX2RyYmdzX3NlY19zdHJlbmd0aF9ieXRlcwByJm10ZV93YXNtX2Jhc2VfZHJiZ3NfcGVyc29uYWxfbWluX2J5dGVzAHMmbXRlX3dhc21fYmFzZV9kcmJnc19wZXJzb25hbF9tYXhfYnl0ZXMAdCVtdGVfd2FzbV9iYXNlX2RyYmdzX2VudHJvcHlfbWluX2J5dGVzAHIlbXRlX3dhc21fYmFzZV9kcmJnc19lbnRyb3B5X21heF9ieXRlcwB0I210ZV93YXNtX2Jhc2VfZHJiZ3Nfbm9uY2VfbWluX2J5dGVzAHUjbXRlX3dhc21fYmFzZV9kcmJnc19ub25jZV9tYXhfYnl0ZXMAciNtdGVfd2FzbV9iYXNlX2RyYmdzX3Jlc2VlZF9pbnRlcnZhbAB2I210ZV93YXNtX2Jhc2VfZHJiZ3NfaW5jcl9pbnN0X2Vycm9yAHcibXRlX3dhc21fYmFzZV9kcmJnc19pbmNyX2dlbl9lcnJvcgB4HW10ZV93YXNtX2Jhc2VfdmVyaWZpZXJzX2NvdW50AG0cbXRlX3dhc21fYmFzZV92ZXJpZmllcnNfbmFtZQB5HG10ZV93YXNtX2Jhc2VfdmVyaWZpZXJzX2FsZ28AehttdGVfd2FzbV9iYXNlX2NpcGhlcnNfY291bnQAZRptdGVfd2FzbV9iYXNlX2NpcGhlcnNfbmFtZQB7Gm10ZV93YXNtX2Jhc2VfY2lwaGVyc19hbGdvAHwhbXRlX3dhc21fYmFzZV9jaXBoZXJzX2Jsb2NrX2J5dGVzAH0abXRlX3dhc21fYmFzZV9oYXNoZXNfY291bnQAfhltdGVfd2FzbV9iYXNlX2hhc2hlc19uYW1lAH8ZbXRlX3dhc21fYmFzZV9oYXNoZXNfYWxnbwCAARhtdGVfd2FzbV9kZWNfc3RhdGVfYnl0ZXMAgQEXbXRlX3dhc21fZGVjX3N0YXRlX2luaXQAggEYbXRlX3dhc21fZGVjX2luc3RhbnRpYXRlAIMBG210ZV93YXNtX2RlY19yZXNlZWRfY291bnRlcgCEARttdGVfd2FzbV9kZWNfc2F2ZV9ieXRlc19iNjQAhQEbbXRlX3dhc21fZGVjX3N0YXRlX3NhdmVfYjY0AIYBHm10ZV93YXNtX2RlY19zdGF0ZV9yZXN0b3JlX2I2NACHARttdGVfd2FzbV9kZWNfYnVmZl9ieXRlc19iNjQAiAETbXRlX3dhc21fZGVjX2RlY29kZQCJARdtdGVfd2FzbV9kZWNfZGVjb2RlX2I2NACKARhtdGVfd2FzbV9lbmNfc3RhdGVfYnl0ZXMAiwEXbXRlX3dhc21fZW5jX3N0YXRlX2luaXQAjAEYbXRlX3dhc21fZW5jX2luc3RhbnRpYXRlAI0BG210ZV93YXNtX2VuY19yZXNlZWRfY291bnRlcgCOARttdGVfd2FzbV9lbmNfc2F2ZV9ieXRlc19iNjQAhQEbbXRlX3dhc21fZW5jX3N0YXRlX3NhdmVfYjY0AI8BHm10ZV93YXNtX2VuY19zdGF0ZV9yZXN0b3JlX2I2NACQARttdGVfd2FzbV9lbmNfYnVmZl9ieXRlc19iNjQAkQETbXRlX3dhc21fZW5jX2VuY29kZQCSARdtdGVfd2FzbV9lbmNfZW5jb2RlX2I2NACTARxtdGVfd2FzbV9ta2VfZGVjX3N0YXRlX2J5dGVzAJQBG210ZV93YXNtX21rZV9kZWNfc3RhdGVfaW5pdACVARxtdGVfd2FzbV9ta2VfZGVjX2luc3RhbnRpYXRlAJYBH210ZV93YXNtX21rZV9kZWNfcmVzZWVkX2NvdW50ZXIAhAEfbXRlX3dhc21fbWtlX2RlY19zYXZlX2J5dGVzX2I2NACFAR9tdGVfd2FzbV9ta2VfZGVjX3N0YXRlX3NhdmVfYjY0AIYBIm10ZV93YXNtX21rZV9kZWNfc3RhdGVfcmVzdG9yZV9iNjQAlwEfbXRlX3dhc21fbWtlX2RlY19idWZmX2J5dGVzX2I2NACYARdtdGVfd2FzbV9ta2VfZGVjX2RlY29kZQCZARttdGVfd2FzbV9ta2VfZGVjX2RlY29kZV9iNjQAmgEebXRlX3dhc21fbWtlX2RlY19kZWNyeXB0X2NodW5rAJsBH210ZV93YXNtX21rZV9kZWNfZGVjcnlwdF9maW5pc2gAnAEcbXRlX3dhc21fbWtlX2VuY19zdGF0ZV9ieXRlcwCdARttdGVfd2FzbV9ta2VfZW5jX3N0YXRlX2luaXQAngEcbXRlX3dhc21fbWtlX2VuY19pbnN0YW50aWF0ZQCfAR9tdGVfd2FzbV9ta2VfZW5jX3Jlc2VlZF9jb3VudGVyAI4BH210ZV93YXNtX21rZV9lbmNfc2F2ZV9ieXRlc19iNjQAhQEfbXRlX3dhc21fbWtlX2VuY19zdGF0ZV9zYXZlX2I2NACPASJtdGVfd2FzbV9ta2VfZW5jX3N0YXRlX3Jlc3RvcmVfYjY0AKABH210ZV93YXNtX21rZV9lbmNfYnVmZl9ieXRlc19iNjQAoQEXbXRlX3dhc21fbWtlX2VuY19lbmNvZGUAogEbbXRlX3dhc21fbWtlX2VuY19lbmNvZGVfYjY0AKMBHm10ZV93YXNtX21rZV9lbmNfZW5jcnlwdF9jaHVuawCkAR9tdGVfd2FzbV9ta2VfZW5jX2VuY3J5cHRfZmluaXNoAKUBE210ZV93YXNtX2t5YmVyX2luaXQApgEebXRlX3dhc21fa3liZXJfZ2V0X3B1YmtleV9zaXplAKcBH210ZV93YXNtX2t5YmVyX2dldF9wcml2a2V5X3NpemUAqAEebXRlX3dhc21fa3liZXJfZ2V0X3NlY3JldF9zaXplAKkBIW10ZV93YXNtX2t5YmVyX2dldF9lbmNyeXB0ZWRfc2l6ZQCqASNtdGVfd2FzbV9reWJlcl9nZXRfbWluX2VudHJvcHlfc2l6ZQCrASNtdGVfd2FzbV9reWJlcl9nZXRfbWF4X2VudHJvcHlfc2l6ZQCsARxtdGVfd2FzbV9reWJlcl9nZXRfYWxnb3JpdGhtAK0BHW10ZV93YXNtX2t5YmVyX2NyZWF0ZV9rZXlwYWlyAK8BHG10ZV93YXNtX2t5YmVyX2NyZWF0ZV9zZWNyZXQAsAEdbXRlX3dhc21fa3liZXJfZGVjcnlwdF9zZWNyZXQAsQELX2luaXRpYWxpemUAAxBfX2Vycm5vX2xvY2F0aW9uALcBCXN0YWNrU2F2ZQC0AQxzdGFja1Jlc3RvcmUAtQEKc3RhY2tBbGxvYwC2AQkLAQBBAQsEYWCuAQMKztQEtQEDAAEL3wMBAn9B8CtBgAgtAAAiAgR/QQAhAANAIAIgA2ohAyAAIgFBAWoiAEGACGotAAAiAg0ACyABQQJqBUEBC0GACGoiAC0AQEEIdCAALQBBciIBIAAtAD8gAC0APiAALQA9IAAtADwgAC0AOyAALQA6IAAtADkgAC0AOCAALQA3IAAtADYgAC0ANSAALQA0IAAtADMgAC0AMiAALQAxIAAtADAgAC0ALyAALQAuIAAtAC0gAC0ALCAALQArIAAtACogAC0AKSAALQAoIAAtACcgAC0AJiAALQAlIAAtACQgAC0AIyAALQAiIAAtACEgAC0AICAALQAfIAAtAB4gAC0AHSAALQAcIAAtABsgAC0AGiAALQAZIAAtABggAC0AFyAALQAWIAAtABUgAC0AFCAALQATIAAtABIgAC0AESAALQAQIAAtAA8gAC0ADiAALQANIAAtAAwgAC0ACyAALQAKIAAtAAkgAC0ACCAALQAHIAAtAAYgAC0ABSAALQAEIAAtAAMgAC0AAiAALQABIAMgAC0AAGpqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqamprIAFFciIANgIAIABFCwUAQYAICycBAX8CQAJAIAAODwEAAAAAAAAAAAAAAAAAAQALIABBD0chAQsgAQuHBQIMfwJ+AkAgAEEIIABBQGsiCxAfIgENACAAQcgRakEAOgAAIABByABqIQlBgAEhA0GBASEEQQEhCANAIABBCCAJEB8iAQ0BIAMgBGohBgNAIAkpAwAhDSAGIQcgAyEFIAQhAgJAA0ACQCALIAAgB0EBdiIBakHIEGotAABBA3RqKQMAIg4gDVYEQCABIAVGBEAgBSECDAILIAEgBWohByABIQIMAgsgDSAOWA0CIAFBAWoiBSACTw0AIAIgBWohBwwBCwsCQAJAIANFDQAgAiADRw0AIAAgA0EBayIDakHIEGogCDoAAAwBCwJAAkAgAiAERw0AIAJBgAJGDQAgACAEakHIEGogCDoAAAwBCwJAIARBgAJHBEAgA0UNASACIANrIAQgAmtPDQELAkAgA0EBayIGIAJBAWsiCk8NAEEAIQUgBiEBIAIgA2tBA3EiDARAA0AgAEHIEGoiByABaiAHIAFBAWoiAWotAAA6AAAgBUEBaiIFIAxHDQALCyACIANBf3NqQQNJDQADQCAAIAFqIgJByBBqIAJByRBqKAAANgAAIAFBBGoiASAKRw0ACwsgACAKakHIEGogCDoAACAGIQMMAgsCQCACIARPDQBBACEFIAQiASACa0EDcSIHBEADQCAAQcgQaiIGIAFqIAYgAUEBayIBai0AADoAACAFQQFqIgUgB0cNAAsLIAQgAkF/c2pBA0kNAANAIABByBBqIgYgAWpB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BSAGaiABIAVqLQAAOgAAIAVBAWohBSADQQFqIgMgAEcNAAsLIAIgBGoPC0EAIQRBACEFIAJBAWtBA08EQCACQXxxIQZBACEAA0AgAyAFaiABIAVqLQAAOgAAIAMgBUEBciIHaiABIAdqLQAAOgAAIAMgBUECciIHaiABIAdqLQAAOgAAIAMgBUEDciIHaiABIAdqLQAAOgAAIAVBBGohBSAAQQRqIgAgBkcNAAsLIAJBA3EiAARAA0AgAyAFaiABIAVqLQAAOgAAIAVBAWohBSAEQQFqIgQgAEcNAAsLIAILvgQAIAEgACkDMDwAACABIAApAzBCCIg8AAEgASAAKQMwQhCIPAACIAEgACkDMEIYiDwAAyABIAA1AjQ8AAQgASAAKQMwQiiIPAAFIAEgADMBNjwABiABIAAxADc8AAcgASAALQAAOgAIIAEgAC0AAToACSABIAAtAAI6AAogASAALQADOgALIAEgAC0ABDoADCABIAAtAAU6AA0gASAALQAGOgAOIAEgAC0ABzoADyABIAAtAAg6ABAgASAALQAJOgARIAEgAC0ACjoAEiABIAAtAAs6ABMgASAALQAMOgAUIAEgAC0ADToAFSABIAAtAA46ABYgASAALQAPOgAXIAEgAC0AEDoAGCABIAAtABE6ABkgASAALQASOgAaIAEgAC0AEzoAGyABIAAtABQ6ABwgASAALQAVOgAdIAEgAC0AFjoAHiABIAAtABc6AB8gASAALQAYOgAgIAEgAC0AGToAISABIAAtABo6ACIgASAALQAbOgAjIAEgAC0AHDoAJCABIAAtAB06ACUgASAALQAeOgAmIAEgAC0AHzoAJyABIAAtACA6ACggASAALQAhOgApIAEgAC0AIjoAKiABIAAtACM6ACsgASAALQAkOgAsIAEgAC0AJToALSABIAAtACY6AC4gASAALQAnOgAvIAEgAC0AKDoAMCABIAAtACk6ADEgASAALQAqOgAyIAEgAC0AKzoAMyABIAAtACw6ADQgASAALQAtOgA1IAEgAC0ALjoANiABIAAtAC86ADcL7AMAIAAgASkAADcDMCAAIAEtAAg6AAAgACABLQAJOgABIAAgAS0ACjoAAiAAIAEtAAs6AAMgACABLQAMOgAEIAAgAS0ADToABSAAIAEtAA46AAYgACABLQAPOgAHIAAgAS0AEDoACCAAIAEtABE6AAkgACABLQASOgAKIAAgAS0AEzoACyAAIAEtABQ6AAwgACABLQAVOgANIAAgAS0AFjoADiAAIAEtABc6AA8gACABLQAYOgAQIAAgAS0AGToAESAAIAEtABo6ABIgACABLQAbOgATIAAgAS0AHDoAFCAAIAEtAB06ABUgACABLQAeOgAWIAAgAS0AHzoAFyAAIAEtACA6ABggACABLQAhOgAZIAAgAS0AIjoAGiAAIAEtACM6ABsgACABLQAkOgAcIAAgAS0AJToAHSAAIAEtACY6AB4gACABLQAnOgAfIAAgAS0AKDoAICAAIAEtACk6ACEgACABLQAqOgAiIAAgAS0AKzoAIyAAIAEtACw6ACQgACABLQAtOgAlIAAgAS0ALjoAJiAAIAEtAC86ACcgACABLQAwOgAoIAAgAS0AMToAKSAAIAEtADI6ACogACABLQAzOgArIAAgAS0ANDoALCAAIAEtADU6AC0gACABLQA2OgAuIAAgAS0ANzoALwuAAwEFfyMAQYACayIEJAACf0EDIAFBgIAESw0AGiAAKQMwQoGAgICAgMAAWgRAIABCADcDACAAQgA3AzAgAEIANwMoIABCADcDICAAQgA3AxggAEIANwMQIABCADcDCEEFDAELIAQgAEEQaiIGEBEgAUEQTwRAA0AgABAZIAQgACACEBIaIAJBEGohAiABQRBrIgFBD0sNAAsLAkAgAUUNACAAEBkgBCAAIARB8AFqEBIaIAFBAWshBSABQQNxIgcEQANAIAIgAUEBayIBaiAEQfABaiABai0AADoAACADQQFqIgMgB0cNAAsLIAVBA0kNAANAIAIgAUEBayIDaiAEQfABaiIFIANqLQAAOgAAIAIgAUECayIDaiAEQfABaiADai0AADoAACACIAFBA2siA2ogBEHwAWogA2otAAA6AAAgAiABQQRrIgFqIAEgBWotAAA6AAAgAQ0ACwtB0CUgBiAAEBogACAAKQMwQgF8NwMwQQALIQMgBEGAAmokACADCzUAIABCADcDACAAQgA3AzAgAEIANwMoIABCADcDICAAQgA3AxggAEIANwMQIABCADcDCEEAC5xFAUV/An8gAUEDcUUEQCABKAI8IgNBGHQgA0EIdEGAgPwHcXIgA0EIdkGA/gNxIANBGHZyciEDIAEoAjgiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyIQQgASgCNCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhEyABKAIwIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciEUIAEoAiwiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIRUgASgCKCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhFiABKAIkIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciEXIAEoAiAiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIRggASgCHCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhGSABKAIYIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciEcIAEoAhQiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIR0gASgCECICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhDCABKAIMIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciEJIAEoAggiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIQ8gASgCBCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhCiABKAIAIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycgwBCyABKAA8IgNBGHQgA0EIdEGAgPwHcXIgA0EIdkGA/gNxIANBGHZyciEDIAEoADgiBEEYdCAEQQh0QYCA/AdxciAEQQh2QYD+A3EgBEEYdnJyIQQgASgANCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhEyABKAAwIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciEUIAEoACwiAkEYdCACQQh0QYCA/AdxciACQQh2QYD+A3EgAkEYdnJyIRUgASgAKCICQRh0IAJBCHRBgID8B3FyIAJBCHZBgP4DcSACQRh2cnIhFiABKAAkIgJBGHQgAkEIdEGAgPwHcXIgAkEIdkGA/gNxIAJBGHZyciEXIAEoACAi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IAAgAWogACADai0AADoAACABIABBAXIiCmogAyAKai0AADoAACABIABBAnIiCmogAyAKai0AADoAACABIABBA3IiCmogAyAKai0AADoAACAAQQRqIQAgB0EEaiIHIAVHDQALCyAJQQNxIgdFDQADQCAAIAFqIAAgA2otAAA6AAAgAEEBaiEAIARBAWoiBCAHRw0ACwsgCEH//wNxIgBBkCwtAAAiA0kEQCAAIAFqIAhBf3MgA2pB//8DcUEBahCzARoLIAhBgQJPBEAgBigCGCEEQYACIQBBgAIhBwNAIAEgAEH/AXFqIgUgBS0AACAAIARqLQAAczoAACAIIAdBAWoiB0H//wNxIgBLDQALCwJAIANFDQBBACEHQQAhACADQQFrQQNPBEAgA0H8AXEhCEEAIQQDQCAAIAFqIgUgBS0AACAAQQFyIgVBkCxqLQAAczoAACABIAVqIgUgBS0AACAAQQJyIgVBkCxqLQAAczoAACABIAVqIgUgBS0AACAAQQNyIgVBkCxqLQAAczoAACABIAVqIgUgBS0AACAAQQRqIgBBkCxqLQAAczoAACAEQQRqIgQgCEcNAAsLIANBA3EiBEUNAANAIAAgAWoiCCAILQAAIABBAWoiAEGQLGotAABzOgAAIAdBAWoiByAERw0ACwsgAiABNgIYIAIgCSADIAMgCUkbNgIcIAsgAkEIahA0IgANACALQQI2AoQWCyACQSBqJAAgBkEgaiQAIAALdAEDfyMAIgIhAyACIAEQECIEQQNqQQJ2QQNsQRBqQXBxayICJAAgASAEIAIQDBoCQAJ/IABBD2pBcHEiASgChBZBBGtBfUkEQEEBIQBBAAwBCyABIAIQNiIADQFBACEAQQILIQIgASACNgKEFgsgAyQAIAALKABBDyABQQNqQQJ2QQNsQQFqIgBB4AFrIABBhQJJGyAAQQ9qQXBxagtuACMAQRBrIgEkACABIAM2AgwgASACNgIEIAFBADYCACABIAQ2AgggACABEEEhACAFIAEoAgggBGtBACABKAIMIgIbNgIAIAYgAjYCACAHQgA3AwAgCEIANwMAIAkgASgCADYCACABQRBqJAAgAAucAQAjAEEQayIBJAAgASADNgIMIAEgAjYCBCABQQA2AgAgASAENgIIIAEgASgCBCABKAIMIAEoAggQDCICNgIMIAEgASgC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ASAENgIEIAAgARA6IQAgBSABKAIEIARrQQAgASgCCCICGzYCACAGIAI2AgAgAUEQaiQAIAALiwEAIwBBEGsiASQAIAEgAzYCCCABIAI2AgAgASAENgIEAn8gACABEDoiAARAIAFBADYCCCAADAELIAEoAgQiAiABKAIIIgMgAiADaiICEAshAyABIAI2AgQgASADNgIIIAALIQAgBSABKAIEIARrQQAgASgCCCICGzYCACAGIAI2AgAgAUEQaiQAIAALkAUBBn8jAEEQayIGJAAgBiADNgIIIAYgBDYCBCAGIAI2AgACfyAGKAIEIQcgAEEPakFwcSILKAKAFkEDRwRAIAcgBigCCBAKQQEMAQsgC0GAFWogBigCACAGKAIIECQhCSAGKAIIIQACQCAGKAIAIgggAUEPakFwcSIEKAKAAiICckEHcUUEQCACQQN2IQJBACEDIABBCE8EQCALQeASaiEKA0AgBCACQQN0aiIBIAEpAwAgCCADQQN0aikDAIU3AwAgAkEBaiICQSBHBH8gA0EBagVBACECIAogBCAEKAKAAiIBakGAAiABayIBIAcQFyEDIARBADYCgAIgAyAJciEJIAEgB2ohByAIIAFBeHFqIQhBAAshAyAAQQhrIgBBB0sNAAsLIAJBA3QhAiAARQ0BIANBA3QhAyAAQQFxBH8gAiAEaiIBIAEtAAAgAyAIai0AAHM6AAAgA0EBciEDIAJBAXIhAiAAQQFrBSAACyEBIABBAUYNAQNAIAIgBGoiACAALQAAIAMgCGoiCi0AAHM6AAAgACAALQABIAotAAFzOgABIANBAmohAyACQQJqIQIgAUECayIBDQALDAELIABFDQAgC0HgEmohCkEAIQMDQCACIARqIgEgAS0AACADIAhqLQAAczoAACACQQFqIgJBgAJHBH8gA0EBagVBACECIAogBCAEKAKAAiIBakGAAiABayIBIAcQFyEDIARBADYCgAIgAyAJciEJIAEgCGohCCABIAdqIQdBAAshAyAAQQFrIgANAAsLIAtB4BJqIAQgBCgCgAIiAGogAiAAayIAIAcQFyEBIAQgBCgCgAIgAGo2AoACIAEgCXILIQAgBSAGKAIINgIAIAZBEGokACAAC7gBAQF/IwBBEGsiAiQAIAJCADcDACACQQA2AggCf0EKQYAsKAIARQ0AGiAAQQ9qQXBxIgAoAoAWQQNHBEAgAkEANgIIQQEMAQsgAEECNgKAFiAAQYAVaiIFIABBsBVqIABB8BVqKAIAIAUQIyACQSA2AgggAiAFNgIAIAIgAUEPakFwcTYCBCAAIAJBABAqCyEAIAMgAigCBCABa0EAIAIoAggiARs2AgAgBCABNgIAIAJBEGokACAAC+wBAQV/QaQsQQA6AAACfwJAIABB//8DcSIAQYAIRwRAIABBgAZHBEAgAEGABEcNAkGwLEH3DUEJEA5BgAYhAUGAASECQQMhA0ECIQRBgAYhBUGABQwDC0GwLEHSDUEJEA5BwAghBUGACSEBQYABIQJBAiEDQQMhBEHABwwCC0GwLEHtDUEKEA5BoAwhBUGADCEBQaABIQJBAiEDQQQhBEGACwwBC0GwLEEAOgAAQQALIQBBpiwgAzoAAEGlLCAEOgAAQagsIAI7AQBBqiwgATsBAEGsLCAAOwEAQa4sIAU7AQBBAEF/QaUsLQAAGwsUAEGqLC8BAEEgakEAQaUsLQAAGwsYAEGqLC8BAEEBdEHgAGpBAEGlLC0AABsLDgBBpSwtAABBAEdBBXQLEQBBriwvAQBBAEGlLC0AABsLBABBIAsEAEEwCwUAQbAsCxEAIAAgASgCACACIAMgBBACC84JAQd/IwBBEGsiByQAAkBBpSwtAABFBEBBfyEFDAELQXshBUGqLC8BACIGQSBqIgggAygCAEsNACABKAIAIAYgCGpBQGtJDQAgB0EwayIFJAAgByAFNgIMIAdBMDYCCCAFQTAQCkF+IQUgBCAHQQxqIAdBCGpBIEEwEK4BDQAgBygCCCIEQTFrQW9JDQAgBygCDCAEEFtBACEIQQAhBSMAQcAwayIEJAAgBEGlLC0AAEELdEGA8B9xayILJAAgBEGAMGoiBhBdIAYgBkEgEEsgCyAGQQAQTAJAQaUsLQAARQ0AIARBoDBqIQpBACEGA0AgBCAFQQl0aiAKIAZB/wFxEFAgBkEBaiEGIAVBAWoiBUGlLC0AACIJSQ0ACyAJRQ0AQQAhBQNAIARBgCBqIAVBCXRqIAogBkH/AXEQUCAGQQFqIQYgBUEBaiIFQaUsLQAASQ0ACwsgBBBXIARBgCBqEFdBACEGQaUsLQAABEADQCAEQYAQaiAGQQl0aiIKIAsgBkELdGogBBBYQQAhBQNAIAogBUEBdGoiCSAJLgEAQckKbCIJIAlBgICEmH9sQRB1Qf9lbGpBEHU7AQAgBUEBaiIFQYACRw0ACyAGQQFqIgZBpSwtAABJDQALCyAEQYAQaiIFIAUgBEGAIGoQWiAFEFkgACAEEFUgAiAFEFUgAkGqLC8BAGogBC0AgDA6AABBqiwvAQAgAmogBC0AgTA6AAFBqiwvAQAgAmogBC0AgjA6AAJBqiwvAQAgAmogBC0AgzA6AANBqiwvAQAgAmogBC0AhDA6AARBqiwvAQAgAmogBC0AhTA6AAVBqiwvAQAgAmogBC0AhjA6AAZBqiwvAQAgAmogBC0AhzA6AAdBqiwvAQAgAmogBC0AiDA6AAhBqiwvAQAgAmogBC0AiTA6AAlBqiwvAQAgAmogBC0AijA6AApBqiwvAQAgAmogBC0AizA6AAtBqiwvAQAgAmogBC0AjDA6AAxBqiwvAQAgAmogBC0AjTA6AA1BqiwvAQAgAmogBC0AjjA6AA5BqiwvAQAgAmogBC0AjzA6AA9BqiwvAQAgAmogBC0AkDA6ABBBqiwvAQAgAmogBC0AkTA6ABFBqiwvAQAgAmogBC0AkjA6ABJBqiwvAQAgAmogBC0AkzA6ABNBqiwvAQAgAmogBC0AlDA6ABRBqiwvAQAgAmogBC0AlTA6ABVBqiwvAQAgAmogBC0AljA6ABZBqiwvAQAgAmogBC0AlzA6ABdBqiwvAQAgAmogBC0AmDA6ABhBqiwvAQAgAmogBC0AmTA6ABlBqiwvAQAgAmogBC0AmjA6ABpBqiwvAQAgAmogBC0AmzA6ABtBqiwvAQAgAmogBC0AnDA6ABxBqiwvAQAgAmogBC0AnTA6AB1BqiwvAQAgAmogBC0AnjA6AB5BqiwvAQAgAmogBC0AnzA6AB8gBEHAMGokAEGqLC8BACEFA0AgACAFIAhqaiACIAhqLQAAOgAAIAhBAWoiCEGqLC8BACIFQSBqIgRJDQALIAQgBWogAGogAiAEEEpBqiwvAQBBAXQgAGpBQGsQXUEAIQUgAUGqLC8BACIAQQF0QeAAajYCACADIABBIGo2AgBBpCxBAToAAAsgB0EQaiQAIAUL5AIBBH8jAEEQayIHJAACQEGlLC0AAEUEQEF/IQgMAQtBfSEIQaosLwEAQSBqIAFHDQBBeyEIIAMoAgBBIEkNACAFKAIAQa4sLwEASQ0AIAdBMGsiASQAIAcgATYCDCAHQTA2AgggAUEwEApBfiEIIAYgB0EMaiAHQQhqQSBBMBCuAQ0AIAcoAggiAUExa0FvSQ0AQQAhBiAHKAIMIQkCQAJAA0AgBiAJai0AAEUEQCAKQQFqIgpB/wFxIgYgAUkNAQwCCwsgCSABEFsMAQtBpCwtAABFDQELIwBBgAFrIgEkACABQUBrIgYQXSAGIAZBIBBKIAFB4ABqIABBqiwvAQBBIGoQSiABIAZBwAAQSyAEIAYgACABQSBqIgAQTSAAIARBriwvAQAQSiACQSAgAUHAABBJIAFBgAFqJAAgA0EgNgIAQQAhCCAFQa4sLwEANgIAQaQsQQA6AAALIAdBEGokACAIC9UQARN/An9Bf0GlLC0AAEUNABpBfCEIAkBBqiwvAQBBAXRB4ABqIAFHDQBBeiEIQa4sLwEAIANHDQAgBSgCAEEgSQ0AIwBBgAFrIgwkACAMQa4sLwEAQQ9qQfD/B3FrIhAkAEGqLC8BACEYIAxBQGshEyMAQYAoayILJAAgC0GAGGohESACIQECQEGsLC8BACIDQaUsLQAAIgdB4AJsRgRAIAdFDQEDQCARIBJBCXRqIQhBACEJA0AgAS0ACCEUIAEtAAchDSABLQAGIRUgAS0ABSEWIAEtAAQhFyABLQADIQ4gAS0AACEHIAEtAAIhBiABLQABIQogCCAJQQR0aiIPIAEtAApBA3QgAS0ACSIDQQV2ckGBGmxBgAhqQQt2OwEOIA8gBkEFdEHgD3EgCkEDdnJBgRpsQYAIakELdjsBAiAPIAcgCkEIdEGADnFyQYEabEGACGpBC3Y7AQAgDyAXQQp0QYAIcSAOQQJ0IAZBBnZyckGBGmxBgAhqQQt2OwEEIA8gFkEHdEGAD3EgF0EBdnJBgRpsQYAIakELdjsBBiAPIBVBBHRB8A9xIBZBBHZyQYEabEGACGpBC3Y7AQggDyAUQQl0QYAMcSANQQF0IBVBB3ZyckGBGmxBgAhqQQt2OwEKIA8gA0EGdEHAD3EgFEECdnJBgRpsQYAIakELdjsBDCABQQtqIQEgCUEBaiIJQSBHDQALIBJBAWoiEkGlLC0AAEkNAAsMAQsgB0HAAmwgA0cNACAHRQ0AA0AgESAGQQl0aiEOQQAhCQNAIAEtAAAhByABLQACIQggAS0AASENIA4gCUEDdGoiCiABLQAEQQJ0IAEtAAMiA0EGdnJBgRpsQYAEakEKdjsBBiAKIAhBBnRBwAdxIA1BAnZyQYEabEGABGpBCnY7AQIgCiAHIA1BCHRBgAZxckGBGmxBgARqQQp2OwEAIAogA0EEdEHwB3EgCEEEdnJBgRpsQYAEakEKdjsBBCABQQVqIQEgCUEBaiIJQcAARw0ACyAGQQFqIgZBpSwtAABJDQALCyALQYAEaiEIIAJBrCwvAQBqIQZBACEJAkBBqCwvAQAiAUGgAUYEQANAIAYtAAIhByAGLQADIQ0gBi0AASEOIAYtAAQhAyAIIAlBBHRqIgogBi0AACIBQR9xQYEabEEQakEFdjsBACAKIANBA3ZBgRpsQRBqQQV2OwEOIAogDkECdkEfcUGBGmxBEGpBBXY7AQQgCiANQQF2QR9xQYEabEEQakEFdjsBCiAKIA5BA3QgAUEFdnJBH3FBgRpsQRBqQQV2OwECIAogB0EBdCAOQQd2ckEfcUGBGmxBEGpBBXY7AQYgCiANQQR0IAdBBHZyQR9xQYEabEEQakEFdjsBCCAKIANBAnQgDUEGdnJBH3FBgRpsQRBqQQV2OwEMIAZBBWohBiAJQQFqIglBIEcNAAwCCwALIAFBgAFHDQADQCAIIAlBAnRqIgEgBi0AAEEPcUGBGmxBCGpBBHY7AQAgASAGLQAAQQR2QYEabEEIakEEdjsBAiAGQQFqIQYgCUEBaiIJQYABRw0ACwsgC0GACGoiASAAEFYgERBXIAsgASAREFggCxBOQQAhBgNAIAsgBkEBdCIBaiABIAhqLwEAIAEgC2ovAQBrOwEAIAsgAUECciIBaiABIAhqLwEAIAEgC2ovAQBrOwEAIAZBAmoiBkGAAkcNAAsgCxBSQQAhAUEAIQYDQCALIAFBAXRqIgMgAy4BACIDIANBgRprIgMgA0EQdEEQdUEASBs7AQAgAUEBaiIBQYACRw0ACwNAIAYgE2oiB0EAOgAAIAcgCyAGQQR0aiIDLwEAQQF0QYANakGBGm5BAXEiAToAACAHIAEgAy8BAkEBdEGADWpBgRpuQQF0QQJxciIBOgAAIAcgASADLwEEQQF0QYANakGBGm5BAnRBBHFyIgE6AAAgByABIAMvAQZBAXRBgA1qQYEabkEDdEEIcXIiAToAACAHIAEgAy8BCEEBdEGADWpBgRpuQQR0QRBxciIBOgAAIAcgASADLwEKQQF0QYANakGBGm5BBXRBIHFyIgE6AAAgByABIAMvAQxBAXRBgA1qQYEabkEGdEHAAHFyIgE6AAAgByABIAMvAQ5BAXRBgA1qQYEabkEHdHI6AAAgBkEBaiIGQSBHDQALIAtBgChqJAAgDEGqLC8BAEEBdCAAaiIBKQAoNwNoIAwgASkAMDcDcCAMIAEpADg3A3ggDCABKQAgNwNgIAwgE0HAABBLIBAgEyAAIBhqIAxBIGoiDhBNAn9BACEIQQAhCUEAIQZBAEGuLC8BACIBRQ0AGiABQQNxIQ0CQCABQQFrQQNJBEBBACEBDAELIAFBfHEhB0EAIQEDQCABIBBqLQAAIAEgAmotAABzIAhyIBAgAUEBciIDai0AACACIANqLQAAc3IgECABQQJyIgNqLQAAIAIgA2otAABzciAQIAFBA3IiA2otAAAgAiADai0AAHNyIQggAUEEaiEBIAZBBGoiBiAHRw0ACwsgDQRAA0AgASAQai0AACABIAJqLQAAcyAIciEIIAFBAWohASAJQQFqIgkgDUcNAAsLIAhB/wFxQQBHCyEBIA4gAkGuLC8BABBKQaosLwEAQQF0IABqQUBrIQNBACEHQQAhCEEAIAFB/wFxayECA0AgByAMaiIAIAAtAAAiACADIAdqLQAAcyACcSAAczoAACAMIAdBAXIiAWoiACAALQAAIgAgASADai0AAHMgAnEgAHM6AAAgB0ECaiEHIAhBAmoiCEEgRw0ACyAEQSAgDEHAABBJIAxBgAFqJAAgBUEgNgIAQQAhCAsgCAsL4gMBAn8gACACaiEDAkACQAJAIAAgAXNBA3FFBEAgAEEDcUUNASACQQBMDQEgACECA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgJBA3FFDQMgAiADSQ0ACwwCCwJAIANBBEkNACADQQRrIgQgAEkNACAAIQIDQCACIAEtAAA6AAAgAiABLQABOgABIAIgAS0AAjoAAiACIAEtAAM6AAMgAUEEaiEBIAJBBGoiAiAETQ0ACwwDCyAAIQIMAgsgACECCwJAIANBfHEiAEHAAEkNACACIABBQGoiBEsNAANAIAIgASgCADYCACACIAEoAgQ2AgQgAiABKAIINgIIIAIgASgCDDYCDCACIAEoAhA2AhAgAiABKAIUNgIUIAIgASgCGDYCGCACIAEoAhw2AhwgAiABKAIgNgIgIAIgASgCJDYCJCACIAEoAig2AiggAiABKAIsNgIsIAIgASgCMDYCMCACIAEoAjQ2AjQgAiABKAI4NgI4IAIgASgCPDYCPCABQUBrIQEgAkFAayICIARNDQALCyAAIAJNDQADQCACIAEoAgA2AgAgAUEEaiEBIAJBBGoiAiAASQ0ACwsgAiADSQRAA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgIgA0cNAAsLC9gCAQJ/AkAgAUUNACAAQQA6AAAgACABaiICQQFrQQA6AAAgAUEDSQ0AIABBADoAAiAAQQA6AAEgAkEDa0EAOgAAIAJBAmtBADoAACABQQdJDQAgAEEAOgADIAJBBGtBADoAACABQQlJDQAgAEEAIABrQQNxIgNqIgJBADYCACACIAEgA2tBfHEiA2oiAUEEa0EANgIAIANBCUkNACACQQA2AgggAkEANgIEIAFBCGtBADYCACABQQxrQQA2AgAgA0EZSQ0AIAJBADYCGCACQQA2AhQgAkEANgIQIAJBADYCDCABQRBrQQA2AgAgAUEUa0EANgIAIAFBGGtBADYCACABQRxrQQA2AgAgAyACQQRxQRhyIgNrIgFBIEkNACACIANqIQIDQCACQgA3AxggAkIANwMQIAJCADcDCCACQgA3AwAgAkEgaiECIAFBIGsiAUEfSw0ACwsgAAsEACMACwYAIAAkAAsQACMAIABrQXBxIgAkACAACwUAQYQtCwvFIwUAQYAIC8INNC4yLjAAv9YivCzrCkculICXgj/sqFWhqO1fM/DDRCvdMVLdLlawc6tZi0HYyj+cxweLfLvmeUgmDmHoEYlb93//kLwz2CHgAL/WIrws6wpHLpSAl4I/7KhVoajtXzPww0Qr3TFS3S5WsHOrWYtB2Mo/nMcHi3y75nlIJg5h6BGJW/d//5C8M9gh4ABtdGVfc3RhdHVzX3NlcV9hc3luY19yZXBsYXkAbXRlX3N0YXR1c19zZXFfb3V0c2lkZV93aW5kb3cAbXRlX3N0YXR1c19pbnZhbGlkX2lucHV0AG10ZV9zdGF0dXNfdG9rZW5fZG9lc19ub3RfZXhpc3QAbXRlX3N0YXR1c19zdWNjZXNzAG10ZV9jaXBoZXJzX2FlczI1Nl9jdHIAbXRlX3N0YXR1c19pbXBsX2Vycm9yAG10ZV9zdGF0dXNfZHJiZ19lcnJvcgBtdGVfc3RhdHVzX2xpY2Vuc2VfZXJyb3IAbXRlX3ZlcmlmaWVyc19zZXEAbXRlX3N0YXR1c19kaWdlc3RfbWlzbWF0Y2gAbXRlX3N0YXR1c19zZXFfbWlzbWF0Y2gAbXRlX3N0YXR1c19jaGVja3N1bV9taXNtYXRjaABtdGVfZHJiZ3NfY3RyX2FlczI1Nl9kZgBtdGVfc3RhdHVzX3Vuc3VwcG9ydGVkAG10ZV9zdGF0dXNfb3V0cHV0X2luaGliaXRlZABtdGVfc3RhdHVzX2NpcGhlcl90ZXN0X2ZhaWxlZABtdGVfc3RhdHVzX2hhc2hfdGVzdF9mYWlsZWQAbXRlX3N0YXR1c19kcmJnX3NlZWRsaWZlX3JlYWNoZWQAbXRlX3N0YXR1c190aW1lX2FmdGVyX2V4Y2VlZGVkAG10ZV9zdGF0dXNfdGltZV9iZWZvcmVfZXhjZWVkZWQAbXRlX3N0YXR1c19kcmJnX2NhdGFzdHJvcGhpYwBLeWJlcjc2OABtdGVfaGFzaGVzX3NoYTI1NgBLeWJlcjEwMjQAS3liZXI1MTIAVGhlIHNlcXVlbmNlIG51bWJlciBpcyBvdXRzaWRlIHRoZSB3aW5kb3cuAE91dHB1dCBpcyBpbmhpYml0ZWQgZHVlIHRvIGFuIGVycm9yIHN0YXRlIG9yIHNlbGYtdGVzdC4AVGhlIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkIHRvbyBsb25nIGFmdGVyIGl0IHdhcyBzZW50LgBUaGUgbWVzc2FnZSB3YXMgcmVjZWl2ZWQgdG9vIGxvbmcgYmVmb3JlIGl0IHdhcyBzZW50LgBObyBzdWNoIHRva2VuIGV4aXN0cy4ASW1wbGVtZW50YXRpb24gZXJyb3IuAEhhc2ggZGlnZXN0IG1pc21hdGNoLgBDaGVja3N1bSBtaXNtYXRjaC4AVGhlIHNlcXVlbmNlIG51bWJlciBoYXMgYWxyZWFkeSBiZWVuIHNlZW4gaW4gYXN5bmMgbW9kZS4AVGhlIGxpY2Vuc2Ugd2FzIG5vdCBzZXQgb3IgaXMgbm90IHZhbGlkLgBBbiBpbnB1dCB3YXMgbm90IHZhbGlkLgBBdHRlbXB0aW5nIHRvIHN5bmMgdXAgYSBzZXF1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AAmAAIAAAAAACgAAgAAAAACLgACAAAAAAIsAAAAAAACAiYAAAAAAAIADgAAAAAAAgAKAAAAAAACAgAAAAAAAAIAKgAAAAAAAAAoAAIAAAACAgYAAgAAAAICAgAAAAAAAgAEAAIAAAAAACIAAgAAAAIDtCAsKmgsUB9UFjgUfAcoAVgxuAikGtgDCA08IPwe8BT0C1AcIAX8BxAmyBb8GfwxYCvkD3AJgAvsGmwE0DN4GxwSMAtkK9wP0B9MF5wv5BgQC+QzBC2cKrwZ3CH4AvQWsCacM8gs+A2sAdAcKDEoJcwvBAx0HLArAAdgIpQIGCLIIrgErAksDHghnAw4GaQCmAUsCsQAWDN4LNQsmBnUGCwwKA4cEbgz4CcsFpwpfBMsGhAKZCV0BogFJAWUMtgwxA0kEWwJiAioF/AdIB4ABQgh5DMIEygeXCdwAXgiGBmAIBwcDCBoDGwerCZsJ3gGVDM0L5APfA74DTQfyBVwGpQYPB7QFQwkiCR0JNAFsACMLZgNWA+YF5wn+BPoFoQR7BqMEJQxqAzcFPwiIAL8EgQu5BQUF1wefCqYKuAjQCUsAnAC4C18LpAtoA30KNgaiCFoCNgcJA5MAegj3CfYAjAbbBswBIwHrAFAMtgpbC5gM8waaCeMEtgnWClMLTwT7BFwKKQRBC9UC5AVACY4BtwP3AI0FlgzDCQ8BWgBVA0QHgwyKBFIGmgJAAQgA/QoIBhoBLgcNBQoJKAJ1CjoIIwbNAGYLBgahCiUKCAmpAoIAQgZPBz0Dggv5Cy0FxApFB8IFsgQ/CUsM2AaTCqsANwziC3MHLAftBWcB9gKhBQBB8CsLAQE=";
|
|
887
|
+
}(AA)), AA;
|
|
888
|
+
}
|
|
889
|
+
var b = vA(), jA = Object.defineProperty, PA = (A, g, t) => g in A ? jA(A, g, { enumerable: !0, configurable: !0, writable: !0, value: t }) : A[g] = t, uA = (A, g, t) => (PA(A, typeof g != "symbol" ? g + "" : g, t), t);
|
|
890
|
+
function $A(A) {
|
|
891
|
+
let g = [];
|
|
892
|
+
return g.push(A.clientId), g.push(A.pairId), g.push(A.type === "MTE" ? 0 : 1), g.push(A.urlIsEncoded ? 1 : 0), g.push(A.headersAreEncoded ? 1 : 0), g.push(A.bodyIsEncoded ? 1 : 0), g.push(A.useStreaming ? 1 : 0), g.join(",");
|
|
893
|
+
}
|
|
894
|
+
function cA(A) {
|
|
895
|
+
const g = A.split(","), t = g[0], H = g[1], F = g[2] === "0" ? "MTE" : "MKE", N = g[3] === "1", k = g[4] === "1", R = g[5] === "1", p = g[6] === "1";
|
|
896
|
+
return {
|
|
897
|
+
type: F,
|
|
898
|
+
urlIsEncoded: N,
|
|
899
|
+
headersAreEncoded: k,
|
|
900
|
+
bodyIsEncoded: R,
|
|
901
|
+
clientId: t,
|
|
902
|
+
pairId: H,
|
|
903
|
+
useStreaming: p
|
|
904
|
+
};
|
|
905
|
+
}
|
|
906
|
+
async function AI(A, g) {
|
|
907
|
+
var t, H;
|
|
908
|
+
const F = [], N = new URL(A.url), k = (t = g.encodeUrl) != null ? t : !0;
|
|
909
|
+
if (k) {
|
|
910
|
+
const _ = N.pathname.slice(1) + N.search;
|
|
911
|
+
F.push({ data: _, output: "B64" });
|
|
912
|
+
}
|
|
913
|
+
const R = new Headers(A.headers), p = {};
|
|
914
|
+
let u = (H = g.encodeHeaders) != null ? H : !0;
|
|
915
|
+
if (u)
|
|
916
|
+
if (Array.isArray(g.encodeHeaders))
|
|
917
|
+
for (const _ of g.encodeHeaders) {
|
|
918
|
+
const q = A.headers.get(_);
|
|
919
|
+
q && (p[_] = q, R.delete(_));
|
|
920
|
+
}
|
|
921
|
+
else
|
|
922
|
+
for (const [_, q] of A.headers.entries())
|
|
923
|
+
p[_] = q, R.delete(_);
|
|
924
|
+
const J = A.headers.get("content-type");
|
|
925
|
+
if (J && (p["content-type"] = J), Object.keys(p).length > 0) {
|
|
926
|
+
u = !0;
|
|
927
|
+
const _ = JSON.stringify(p);
|
|
928
|
+
F.push({ data: _, output: "B64" });
|
|
929
|
+
} else
|
|
930
|
+
u = !1;
|
|
931
|
+
const U = new Uint8Array(await A.arrayBuffer());
|
|
932
|
+
let X = !1;
|
|
933
|
+
U.byteLength > 0 && (X = !0, F.push({ data: U, output: "Uint8Array" }));
|
|
934
|
+
const Z = await aI({
|
|
935
|
+
id: `encoder.${g.origin}.${g.pairId}`,
|
|
936
|
+
items: F,
|
|
937
|
+
type: g.type
|
|
938
|
+
});
|
|
939
|
+
let W = A.url;
|
|
940
|
+
if (k) {
|
|
941
|
+
const _ = encodeURIComponent(Z[0]);
|
|
942
|
+
W = N.origin + g.pathPrefix + "/" + _, Z.shift();
|
|
943
|
+
}
|
|
944
|
+
R.set(j, $A({
|
|
945
|
+
type: g.type,
|
|
946
|
+
urlIsEncoded: k,
|
|
947
|
+
headersAreEncoded: u,
|
|
948
|
+
bodyIsEncoded: X,
|
|
949
|
+
clientId: g.clientId,
|
|
950
|
+
pairId: g.pairId,
|
|
951
|
+
useStreaming: g.useStreaming
|
|
952
|
+
})), R.set("content-type", "application/octet-stream"), u && (R.set(mA, Z[0]), Z.shift());
|
|
953
|
+
let M = A.body ? U : null;
|
|
954
|
+
return X && (M = Z[0]), new Request(W, {
|
|
955
|
+
method: A.method,
|
|
956
|
+
headers: R,
|
|
957
|
+
body: M,
|
|
958
|
+
cache: "no-cache",
|
|
959
|
+
credentials: A.credentials
|
|
960
|
+
});
|
|
961
|
+
}
|
|
962
|
+
const yA = /* @__PURE__ */ new Map();
|
|
963
|
+
function T(A, g) {
|
|
964
|
+
yA.set(A, g);
|
|
965
|
+
}
|
|
966
|
+
function $(A) {
|
|
967
|
+
return yA.get(A);
|
|
968
|
+
}
|
|
969
|
+
function II(A) {
|
|
970
|
+
yA.delete(A);
|
|
971
|
+
}
|
|
972
|
+
function QA(A, g) {
|
|
973
|
+
T(YA(A), g);
|
|
974
|
+
}
|
|
975
|
+
function UA(A) {
|
|
976
|
+
return $(YA(A));
|
|
977
|
+
}
|
|
978
|
+
function YA(A) {
|
|
979
|
+
return `state:${A}`;
|
|
980
|
+
}
|
|
981
|
+
const FA = typeof window < "u" && window.localStorage;
|
|
982
|
+
function NA(A) {
|
|
983
|
+
const g = GA(A);
|
|
984
|
+
let t;
|
|
985
|
+
return t = $(g), !t && FA && (t = localStorage.getItem(g), t && T(g, t)), t;
|
|
986
|
+
}
|
|
987
|
+
function lA(A, g) {
|
|
988
|
+
const t = GA(A);
|
|
989
|
+
T(t, g), FA && localStorage.setItem(t, g);
|
|
990
|
+
}
|
|
991
|
+
function BI(A) {
|
|
992
|
+
const g = GA(A);
|
|
993
|
+
II(g), FA && localStorage.removeItem(g);
|
|
994
|
+
}
|
|
995
|
+
function GA(A) {
|
|
996
|
+
return `clientid:${A}`;
|
|
997
|
+
}
|
|
998
|
+
function LA(A) {
|
|
999
|
+
const g = MA(A);
|
|
1000
|
+
return $(g) || (T(g, "pending"), "validate");
|
|
1001
|
+
}
|
|
1002
|
+
function IA(A, g) {
|
|
1003
|
+
const t = MA(A);
|
|
1004
|
+
T(t, g);
|
|
1005
|
+
}
|
|
1006
|
+
function MA(A) {
|
|
1007
|
+
return `origin-status:${A}`;
|
|
1008
|
+
}
|
|
1009
|
+
function gI(A, g) {
|
|
1010
|
+
const t = hA(A), H = $(t) || [];
|
|
1011
|
+
H.push(g), T(t, H);
|
|
1012
|
+
}
|
|
1013
|
+
function QI(A) {
|
|
1014
|
+
const g = hA(A), t = $(g);
|
|
1015
|
+
if (!t)
|
|
1016
|
+
throw new Error(`No queue found for origin ${A}.`);
|
|
1017
|
+
const H = t.shift();
|
|
1018
|
+
if (!H)
|
|
1019
|
+
throw Error("No ID in queue.");
|
|
1020
|
+
return t.push(H), T(g, t), H;
|
|
1021
|
+
}
|
|
1022
|
+
function tI(A, g) {
|
|
1023
|
+
const t = hA(A), H = $(t);
|
|
1024
|
+
if (!H)
|
|
1025
|
+
throw new Error(`No queue found for origin ${A}.`);
|
|
1026
|
+
const F = H.indexOf(g);
|
|
1027
|
+
if (F === -1)
|
|
1028
|
+
throw new Error(`No pairId found for origin ${A}.`);
|
|
1029
|
+
H.splice(F, 1), T(t, H);
|
|
1030
|
+
}
|
|
1031
|
+
function iI(A) {
|
|
1032
|
+
const g = hA(A);
|
|
1033
|
+
T(g, []);
|
|
1034
|
+
}
|
|
1035
|
+
function hA(A) {
|
|
1036
|
+
return `pairids:${A}`;
|
|
1037
|
+
}
|
|
1038
|
+
const wA = {
|
|
1039
|
+
"Repair is required.": 559,
|
|
1040
|
+
"State not found.": 560,
|
|
1041
|
+
"Failed to encode.": 561,
|
|
1042
|
+
"Failed to decode.": 562,
|
|
1043
|
+
"Failed to get state from encoder or decoder.": 563,
|
|
1044
|
+
"DRBG reseed is required.": 564,
|
|
1045
|
+
"MTE Status was not successful.": 565,
|
|
1046
|
+
"Invalid Client ID header.": 566,
|
|
1047
|
+
"Failed to save decoder stateId.": 567,
|
|
1048
|
+
"Failed to save encoder stateId.": 568,
|
|
1049
|
+
"Missing required header": 569
|
|
1050
|
+
}, sI = new Set(Object.values(wA));
|
|
1051
|
+
class z extends Error {
|
|
1052
|
+
constructor(g, t) {
|
|
1053
|
+
super(g), uA(this, "status"), uA(this, "info"), this.status = wA[g], this.info = t;
|
|
1054
|
+
}
|
|
1055
|
+
static isMteErrorStatus(g) {
|
|
1056
|
+
return sI.has(g);
|
|
1057
|
+
}
|
|
1058
|
+
static getStatusErrorMessages(g) {
|
|
1059
|
+
const t = Object.entries(wA);
|
|
1060
|
+
for (const [H, F] of t)
|
|
1061
|
+
if (F === g)
|
|
1062
|
+
return H;
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
const sA = [], EA = [], CA = [], eA = [];
|
|
1066
|
+
let BA = 2, gA = 5;
|
|
1067
|
+
function EI(A) {
|
|
1068
|
+
BA = A.mtePoolSize || BA, gA = A.mkePoolSize || gA;
|
|
1069
|
+
let g = 0;
|
|
1070
|
+
for (; g < BA; )
|
|
1071
|
+
++g, sA.push(b.MteEnc.fromdefault(A.mteWasm)), EA.push(b.MteDec.fromdefault(A.mteWasm));
|
|
1072
|
+
for (g = 0; g < gA; )
|
|
1073
|
+
++g, CA.push(b.MteMkeEnc.fromdefault(A.mteWasm)), eA.push(b.MteMkeDec.fromdefault(A.mteWasm, 1e3, -63));
|
|
1074
|
+
}
|
|
1075
|
+
function RA(A, g) {
|
|
1076
|
+
return A === "MTE" ? sA.pop() || b.MteEnc.fromdefault(g) : CA.pop() || b.MteMkeEnc.fromdefault(g);
|
|
1077
|
+
}
|
|
1078
|
+
function JA(A, g) {
|
|
1079
|
+
return A === "MTE" ? EA.pop() || b.MteDec.fromdefault(g) : eA.pop() || b.MteMkeDec.fromdefault(g, 1e3, -63);
|
|
1080
|
+
}
|
|
1081
|
+
function oA(A) {
|
|
1082
|
+
return A instanceof b.MteEnc ? sA.length < BA ? (A.uninstantiate(), sA.push(A)) : A.destruct() : CA.length < gA ? (A.uninstantiate(), CA.push(A)) : A.destruct();
|
|
1083
|
+
}
|
|
1084
|
+
function fA(A) {
|
|
1085
|
+
return A instanceof b.MteDec ? EA.length < BA ? (A.uninstantiate(), EA.push(A)) : A.destruct() : eA.length < gA ? (A.uninstantiate(), eA.push(A)) : A.destruct();
|
|
1086
|
+
}
|
|
1087
|
+
let K, _A = 0, aA = !1;
|
|
1088
|
+
async function CI(A) {
|
|
1089
|
+
if (K)
|
|
1090
|
+
return;
|
|
1091
|
+
K = new b.MteWasm(), await K.instantiate();
|
|
1092
|
+
const g = new b.MteBase(K);
|
|
1093
|
+
if (!g.initLicense(A.companyName, A.licenseKey)) {
|
|
1094
|
+
const k = b.MteStatus.mte_status_license_error, R = g.getStatusName(k), p = g.getStatusDescription(k);
|
|
1095
|
+
throw new Error(`Error with MTE License.
|
|
1096
|
+
${R}: ${p}`);
|
|
1097
|
+
}
|
|
1098
|
+
EI({
|
|
1099
|
+
mteWasm: K,
|
|
1100
|
+
mkePoolSize: A.mkePoolSize,
|
|
1101
|
+
mtePoolSize: A.mtePoolSize
|
|
1102
|
+
});
|
|
1103
|
+
const t = RA("MKE", K);
|
|
1104
|
+
_A = t.encryptFinishBytes(), oA(t);
|
|
1105
|
+
const H = g.getDefaultDrbg(), F = g.getDrbgsEntropyMinBytes(H), N = g.getDrbgsEntropyMaxBytes(H);
|
|
1106
|
+
aA = F === 0 && N === 0, aA && console.warn(`------------------------------
|
|
1107
|
+
MTE Trial Build is detected! It offers no security guarantees. Do not run this in production!
|
|
1108
|
+
------------------------------`);
|
|
1109
|
+
}
|
|
1110
|
+
async function eI(A) {
|
|
1111
|
+
const g = RA("MTE", K);
|
|
1112
|
+
g.setEntropyArr(aA ? new Uint8Array(0) : A.entropy), g.setNonce(A.nonce);
|
|
1113
|
+
const t = g.instantiate(A.personalization);
|
|
1114
|
+
P(t, g);
|
|
1115
|
+
const H = tA(g);
|
|
1116
|
+
oA(g), await QA(`encoder.${A.origin}.${A.pairId}`, H), gI(A.origin, A.pairId);
|
|
1117
|
+
}
|
|
1118
|
+
async function oI(A) {
|
|
1119
|
+
const g = JA("MTE", K);
|
|
1120
|
+
g.setEntropyArr(aA ? new Uint8Array(0) : A.entropy), g.setNonce(A.nonce);
|
|
1121
|
+
const t = g.instantiate(A.personalization);
|
|
1122
|
+
P(t, g);
|
|
1123
|
+
const H = tA(g);
|
|
1124
|
+
fA(g), await QA(`decoder.${A.origin}.${A.pairId}`, H);
|
|
1125
|
+
}
|
|
1126
|
+
async function aI(A) {
|
|
1127
|
+
const g = await UA(A.id);
|
|
1128
|
+
if (!g)
|
|
1129
|
+
throw new z("State not found.", {
|
|
1130
|
+
stateId: A.id
|
|
1131
|
+
});
|
|
1132
|
+
const t = RA(A.type, K);
|
|
1133
|
+
if (DA(t, g), A.type === "MKE") {
|
|
1134
|
+
let F = 0, N = 0;
|
|
1135
|
+
const k = A.items.length;
|
|
1136
|
+
for (; N < k; ++N)
|
|
1137
|
+
F = t.encodeStr("").status;
|
|
1138
|
+
P(F, t);
|
|
1139
|
+
const R = tA(t);
|
|
1140
|
+
await QA(A.id, R), DA(t, g);
|
|
1141
|
+
}
|
|
1142
|
+
let H = [];
|
|
1143
|
+
try {
|
|
1144
|
+
for (const F of A.items) {
|
|
1145
|
+
let N;
|
|
1146
|
+
F.data instanceof Uint8Array ? F.output === "Uint8Array" ? N = t.encode(F.data) : N = t.encodeB64(F.data) : F.output === "Uint8Array" ? N = t.encodeStr(F.data) : N = t.encodeStrB64(F.data), P(N.status, t), H.push("str" in N ? N.str : N.arr);
|
|
1147
|
+
}
|
|
1148
|
+
} catch (F) {
|
|
1149
|
+
throw oA(t), new z("Failed to encode.", {
|
|
1150
|
+
stateId: A.id,
|
|
1151
|
+
error: F.message
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
if (A.type === "MTE") {
|
|
1155
|
+
const F = tA(t);
|
|
1156
|
+
await QA(A.id, F);
|
|
1157
|
+
}
|
|
1158
|
+
return oA(t), H;
|
|
1159
|
+
}
|
|
1160
|
+
async function cI(A) {
|
|
1161
|
+
const g = await UA(A.id);
|
|
1162
|
+
if (!g)
|
|
1163
|
+
throw new z("State not found.", {
|
|
1164
|
+
stateId: A.id
|
|
1165
|
+
});
|
|
1166
|
+
const t = JA(A.type, K);
|
|
1167
|
+
DA(t, g), hI(t);
|
|
1168
|
+
const H = [];
|
|
1169
|
+
try {
|
|
1170
|
+
for (const N of A.items) {
|
|
1171
|
+
if (N.data.length === _A && A.type === "MKE")
|
|
1172
|
+
continue;
|
|
1173
|
+
let k;
|
|
1174
|
+
N.data instanceof Uint8Array ? N.output === "Uint8Array" ? k = t.decode(N.data) : k = t.decodeStr(N.data) : N.output === "Uint8Array" ? k = t.decodeB64(N.data) : k = t.decodeStrB64(N.data), P(k.status, t), H.push("str" in k ? k.str : k.arr);
|
|
1175
|
+
}
|
|
1176
|
+
} catch (N) {
|
|
1177
|
+
throw fA(t), new z("Failed to decode.", {
|
|
1178
|
+
stateId: A.id,
|
|
1179
|
+
error: N.message
|
|
1180
|
+
});
|
|
1181
|
+
}
|
|
1182
|
+
const F = tA(t);
|
|
1183
|
+
return fA(t), await QA(A.id, F), H;
|
|
1184
|
+
}
|
|
1185
|
+
function P(A, g) {
|
|
1186
|
+
if (A !== b.MteStatus.mte_status_success && g.statusIsError(A)) {
|
|
1187
|
+
const t = g.getStatusName(A), H = g.getStatusDescription(A);
|
|
1188
|
+
throw new z("MTE Status was not successful.", {
|
|
1189
|
+
statusName: t,
|
|
1190
|
+
description: H
|
|
1191
|
+
});
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
function tA(A) {
|
|
1195
|
+
const g = A.saveStateB64();
|
|
1196
|
+
if (!g)
|
|
1197
|
+
throw new z("Failed to get state from encoder or decoder.");
|
|
1198
|
+
return g;
|
|
1199
|
+
}
|
|
1200
|
+
function DA(A, g) {
|
|
1201
|
+
const t = A.restoreStateB64(g);
|
|
1202
|
+
P(t, A);
|
|
1203
|
+
}
|
|
1204
|
+
function hI(A) {
|
|
1205
|
+
const g = A.getDrbg(), t = Number(String(A.getDrbgsReseedInterval(g)).substring(0, 15));
|
|
1206
|
+
if (Number(String(A.getReseedCounter()).substring(0, 15)) / t > 0.9)
|
|
1207
|
+
throw new z("DRBG reseed is required.");
|
|
1208
|
+
}
|
|
1209
|
+
function pA() {
|
|
1210
|
+
const A = new b.MteKyber(K, b.MteKyberStrength.K512), g = A.createKeypair();
|
|
1211
|
+
if (g.status !== b.MteKyberStatus.success)
|
|
1212
|
+
throw new Error("Initiator: Failed to create the key pair.");
|
|
1213
|
+
const t = nI(g.result1);
|
|
1214
|
+
function H(F) {
|
|
1215
|
+
const N = rI(F), k = A.decryptSecret(N);
|
|
1216
|
+
if (k.status !== b.MteKyberStatus.success)
|
|
1217
|
+
throw new Error("Failed to decrypt the secret.");
|
|
1218
|
+
return k.result1;
|
|
1219
|
+
}
|
|
1220
|
+
return {
|
|
1221
|
+
publicKey: t,
|
|
1222
|
+
decryptSecret: H
|
|
1223
|
+
};
|
|
1224
|
+
}
|
|
1225
|
+
function nI(A) {
|
|
1226
|
+
return typeof window < "u" ? btoa(String.fromCharCode.apply(null, A)) : Buffer.from(A).toString("base64");
|
|
1227
|
+
}
|
|
1228
|
+
function rI(A) {
|
|
1229
|
+
if (typeof window < "u") {
|
|
1230
|
+
const g = atob(A), t = g.length, H = new Uint8Array(t);
|
|
1231
|
+
for (let F = 0; F < t; F++)
|
|
1232
|
+
H[F] = g.charCodeAt(F);
|
|
1233
|
+
return H;
|
|
1234
|
+
}
|
|
1235
|
+
return new Uint8Array(Buffer.from(A, "base64"));
|
|
1236
|
+
}
|
|
1237
|
+
const mA = "x-mte-relay-eh", j = "x-mte-relay", zA = "y4FKMvJhR02Q8gLG7l1rOjH9oXTdpBbPWZfnexzmaSNcwCtsDqUui6AEk3V5yI", dI = zA.length;
|
|
1238
|
+
function dA() {
|
|
1239
|
+
let A = "", g = 0;
|
|
1240
|
+
for (; g < 36; ++g)
|
|
1241
|
+
A += zA.charAt(Math.floor(Math.random() * dI));
|
|
1242
|
+
return A;
|
|
1243
|
+
}
|
|
1244
|
+
async function wI(A, g) {
|
|
1245
|
+
const t = A.headers.get("x-mte-relay");
|
|
1246
|
+
if (!t)
|
|
1247
|
+
throw new z("Missing required header", {
|
|
1248
|
+
"missing-header": "x-mte-relay"
|
|
1249
|
+
});
|
|
1250
|
+
const H = cA(t), F = [];
|
|
1251
|
+
if (H.headersAreEncoded) {
|
|
1252
|
+
const p = A.headers.get(mA);
|
|
1253
|
+
p && F.push({ data: p, output: "str" });
|
|
1254
|
+
}
|
|
1255
|
+
if (H.bodyIsEncoded && A.body) {
|
|
1256
|
+
const p = new Uint8Array(await A.arrayBuffer());
|
|
1257
|
+
F.push({ data: p, output: "Uint8Array" });
|
|
1258
|
+
}
|
|
1259
|
+
const N = await cI({
|
|
1260
|
+
id: g.decoderId,
|
|
1261
|
+
items: F,
|
|
1262
|
+
type: H.type
|
|
1263
|
+
}), k = new Headers(A.headers);
|
|
1264
|
+
if (H.headersAreEncoded) {
|
|
1265
|
+
k.delete(mA);
|
|
1266
|
+
const p = JSON.parse(N[0]);
|
|
1267
|
+
for (const u of Object.entries(p))
|
|
1268
|
+
k.set(u[0], u[1]);
|
|
1269
|
+
N.shift();
|
|
1270
|
+
}
|
|
1271
|
+
let R;
|
|
1272
|
+
return H.bodyIsEncoded && (R = N[0]), new Response(R, {
|
|
1273
|
+
headers: k,
|
|
1274
|
+
status: A.status,
|
|
1275
|
+
statusText: A.statusText
|
|
1276
|
+
});
|
|
1277
|
+
}
|
|
1278
|
+
let bA = 5, ZA = "MKE", XA = !0, xA = !0, nA = "";
|
|
1279
|
+
async function fI(A) {
|
|
1280
|
+
A.numberOfPairs && (bA = A.numberOfPairs), A.encodeType && (ZA = A.encodeType), A.encodeUrls !== void 0 && (XA = A.encodeUrls), A.encodeHeaders !== void 0 && (xA = A.encodeHeaders), A.pathPrefix && (nA = A.pathPrefix), await CI({
|
|
1281
|
+
licenseKey: A.licenseKey,
|
|
1282
|
+
companyName: A.licenseCompany,
|
|
1283
|
+
mkePoolSize: A.mkePoolSize,
|
|
1284
|
+
mtePoolSize: A.mtePoolSize
|
|
1285
|
+
});
|
|
1286
|
+
}
|
|
1287
|
+
async function HI(A, g, t) {
|
|
1288
|
+
return await HA(A, g, t);
|
|
1289
|
+
}
|
|
1290
|
+
async function HA(A, g, t, H) {
|
|
1291
|
+
var F, N, k, R;
|
|
1292
|
+
let p = "", u = "";
|
|
1293
|
+
try {
|
|
1294
|
+
let J;
|
|
1295
|
+
A instanceof Request ? J = A : J = new Request(A, g), u = new URL(J.url).origin;
|
|
1296
|
+
let U = await LA(u);
|
|
1297
|
+
const X = {
|
|
1298
|
+
encodeUrl: (F = t == null ? void 0 : t.encodeUrl) != null ? F : XA,
|
|
1299
|
+
encodeHeaders: (N = t == null ? void 0 : t.encodeHeaders) != null ? N : xA,
|
|
1300
|
+
encodeType: (t == null ? void 0 : t.encodeType) || ZA,
|
|
1301
|
+
useStreaming: (k = t == null ? void 0 : t.useStreaming) != null ? k : !0,
|
|
1302
|
+
pathPrefix: (R = t == null ? void 0 : t.pathPrefix) != null ? R : nA
|
|
1303
|
+
};
|
|
1304
|
+
if (U === "validate" || H != null && H.revalidateServer) {
|
|
1305
|
+
try {
|
|
1306
|
+
U = await DI(u);
|
|
1307
|
+
} catch (L) {
|
|
1308
|
+
throw z.isMteErrorStatus(L.status) ? new z(z.getStatusErrorMessages(L.status)) : (IA(u, "invalid"), new Error("Origin is not an MTE Relay server."));
|
|
1309
|
+
}
|
|
1310
|
+
await qA(u).catch((L) => {
|
|
1311
|
+
throw IA(u, "invalid"), L;
|
|
1312
|
+
}), U = "paired", IA(u, U);
|
|
1313
|
+
}
|
|
1314
|
+
if (U === "pending") {
|
|
1315
|
+
for (let L = 1; L < 20 && (await mI(L * 100), U = await LA(u), U !== "paired"); ++L)
|
|
1316
|
+
if (U === "invalid")
|
|
1317
|
+
throw new Error("Origin status is invalid.");
|
|
1318
|
+
if (U !== "paired")
|
|
1319
|
+
throw new Error("Origin is not paired.");
|
|
1320
|
+
}
|
|
1321
|
+
if (U === "invalid")
|
|
1322
|
+
throw new Error("Origin is not an MTE Relay server.");
|
|
1323
|
+
const Z = NA(u);
|
|
1324
|
+
if (!Z)
|
|
1325
|
+
throw new Error("Origin is missing ClientId");
|
|
1326
|
+
p = await QI(u);
|
|
1327
|
+
const W = await AI(J, {
|
|
1328
|
+
pairId: p,
|
|
1329
|
+
type: X.encodeType,
|
|
1330
|
+
origin: u,
|
|
1331
|
+
clientId: Z,
|
|
1332
|
+
encodeUrl: X.encodeUrl,
|
|
1333
|
+
encodeHeaders: X.encodeHeaders,
|
|
1334
|
+
useStreaming: X.useStreaming,
|
|
1335
|
+
pathPrefix: X.pathPrefix
|
|
1336
|
+
});
|
|
1337
|
+
let M = await fetch(W);
|
|
1338
|
+
if (!M.ok && z.isMteErrorStatus(M.status)) {
|
|
1339
|
+
const L = z.getStatusErrorMessages(M.status);
|
|
1340
|
+
if (L)
|
|
1341
|
+
throw new z(L);
|
|
1342
|
+
}
|
|
1343
|
+
if (M.redirected)
|
|
1344
|
+
return M;
|
|
1345
|
+
const _ = M.headers.get(j);
|
|
1346
|
+
if (!_)
|
|
1347
|
+
throw new Error("Origin is not an MTE Relay server.");
|
|
1348
|
+
const q = cA(_);
|
|
1349
|
+
if (!q.clientId)
|
|
1350
|
+
throw new Error("Response is missing clientId header");
|
|
1351
|
+
return lA(u, q.clientId), await wI(M, {
|
|
1352
|
+
decoderId: `decoder.${u}.${q.pairId}`
|
|
1353
|
+
});
|
|
1354
|
+
} catch (J) {
|
|
1355
|
+
if (J instanceof z) {
|
|
1356
|
+
if (J.status === 566 || J.status === 560) {
|
|
1357
|
+
if (IA(u, "pending"), BI(u), iI(u), H != null && H.isLastAttempt)
|
|
1358
|
+
throw new Error("Origin is not an MTE Relay server.");
|
|
1359
|
+
return await HA(A, g, t, {
|
|
1360
|
+
revalidateServer: !0,
|
|
1361
|
+
isLastAttempt: !0
|
|
1362
|
+
});
|
|
1363
|
+
}
|
|
1364
|
+
if (tI(u, p), qA(u, 1), !(H != null && H.isLastAttempt))
|
|
1365
|
+
return await HA(A, g, t, {
|
|
1366
|
+
isLastAttempt: !0
|
|
1367
|
+
});
|
|
1368
|
+
}
|
|
1369
|
+
throw J instanceof Error ? J : Error("An unknown error occurred.", {
|
|
1370
|
+
cause: J
|
|
1371
|
+
});
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1374
|
+
async function DI(A) {
|
|
1375
|
+
const g = new Headers(), t = NA(A);
|
|
1376
|
+
t && g.set(j, t);
|
|
1377
|
+
const H = await fetch(A + nA + "/api/mte-relay", {
|
|
1378
|
+
method: "HEAD",
|
|
1379
|
+
headers: g
|
|
1380
|
+
});
|
|
1381
|
+
if (z.isMteErrorStatus(H.status))
|
|
1382
|
+
throw new z(z.getStatusErrorMessages(H.status));
|
|
1383
|
+
if (!H.ok)
|
|
1384
|
+
throw new Error("Origin is not an MTE Relay origin. Response not ok.");
|
|
1385
|
+
const F = H.headers.get(j);
|
|
1386
|
+
if (!F)
|
|
1387
|
+
throw new Error("Origin is not an MTE Relay origin. Response missing header.");
|
|
1388
|
+
const N = cA(F);
|
|
1389
|
+
if (!N.clientId)
|
|
1390
|
+
throw new Error("Response is missing clientId from header. Response missing ClientId.");
|
|
1391
|
+
return lA(A, N.clientId), IA(A, "pending"), "pending";
|
|
1392
|
+
}
|
|
1393
|
+
async function qA(A, g) {
|
|
1394
|
+
const t = NA(A);
|
|
1395
|
+
if (!t)
|
|
1396
|
+
throw new Error("Client ID is not set.");
|
|
1397
|
+
const H = [], F = [];
|
|
1398
|
+
let N = 0;
|
|
1399
|
+
const k = g || bA;
|
|
1400
|
+
for (; N < k; ++N) {
|
|
1401
|
+
const Z = dA(), W = dA(), M = pA(), _ = dA(), q = pA();
|
|
1402
|
+
H.push({
|
|
1403
|
+
pairId: Z,
|
|
1404
|
+
encoderPersonalizationStr: W,
|
|
1405
|
+
encoderPublicKey: M.publicKey,
|
|
1406
|
+
decoderPersonalizationStr: _,
|
|
1407
|
+
decoderPublicKey: q.publicKey
|
|
1408
|
+
}), F.push({ encoderKyber: M, decoderKyber: q });
|
|
1409
|
+
}
|
|
1410
|
+
const R = await fetch(A + nA + "/api/mte-pair", {
|
|
1411
|
+
headers: {
|
|
1412
|
+
[j]: t,
|
|
1413
|
+
"Content-Type": "application/json"
|
|
1414
|
+
},
|
|
1415
|
+
method: "POST",
|
|
1416
|
+
body: JSON.stringify(H)
|
|
1417
|
+
});
|
|
1418
|
+
if (!R.ok)
|
|
1419
|
+
throw new Error("Failed to pair with server MTE Translator. Response not ok.");
|
|
1420
|
+
const p = R.headers.get(j);
|
|
1421
|
+
if (!p)
|
|
1422
|
+
throw new Error(`Response is missing header: ${j}`);
|
|
1423
|
+
const u = cA(p);
|
|
1424
|
+
lA(A, u.clientId);
|
|
1425
|
+
const J = await R.json();
|
|
1426
|
+
let U = 0;
|
|
1427
|
+
const X = J.length;
|
|
1428
|
+
for (; U < X; ++U) {
|
|
1429
|
+
const Z = F[U], W = H[U], M = J[U], _ = Z.encoderKyber.decryptSecret(M.decoderSecret), q = Z.decoderKyber.decryptSecret(M.encoderSecret);
|
|
1430
|
+
await eI({
|
|
1431
|
+
origin: A,
|
|
1432
|
+
entropy: _,
|
|
1433
|
+
nonce: M.decoderNonce,
|
|
1434
|
+
personalization: W.encoderPersonalizationStr,
|
|
1435
|
+
pairId: M.pairId
|
|
1436
|
+
}), await oI({
|
|
1437
|
+
entropy: q,
|
|
1438
|
+
nonce: M.encoderNonce,
|
|
1439
|
+
personalization: W.decoderPersonalizationStr,
|
|
1440
|
+
origin: A,
|
|
1441
|
+
pairId: M.pairId
|
|
1442
|
+
});
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1445
|
+
function mI(A) {
|
|
1446
|
+
return new Promise((g) => setTimeout(g, A));
|
|
1447
|
+
}
|
|
1448
|
+
fI({
|
|
1449
|
+
licenseCompany: "Eclypses Inc",
|
|
1450
|
+
licenseKey: "9eHOohOm/GwY01xbvNTL9B+1"
|
|
1451
|
+
});
|
|
1452
|
+
export {
|
|
1453
|
+
HI as mteFetch
|
|
1454
|
+
};
|