quarkdash 1.0.7 → 1.1.0
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/README.md +4 -2
- package/dist/cjs/cipher/chacha.js +154 -0
- package/dist/cjs/cipher/chacha.js.map +1 -0
- package/dist/cjs/cipher/cipher.js +34 -0
- package/dist/cjs/cipher/cipher.js.map +1 -0
- package/dist/cjs/cipher/gimli.js +143 -0
- package/dist/cjs/cipher/gimli.js.map +1 -0
- package/dist/cjs/core/kdf.js.map +1 -0
- package/dist/cjs/{mac.js → core/mac.js} +37 -1
- package/dist/cjs/core/mac.js.map +1 -0
- package/dist/cjs/{types.js.map → core/types.js.map} +1 -1
- package/dist/cjs/{utils.js → core/utils.js} +25 -8
- package/dist/cjs/core/utils.js.map +1 -0
- package/dist/cjs/core/wasm_loader.js +100 -0
- package/dist/cjs/core/wasm_loader.js.map +1 -0
- package/dist/cjs/crypto.js +30 -13
- package/dist/cjs/crypto.js.map +1 -1
- package/dist/cjs/{sha.js → hash/sha.js} +3 -2
- package/dist/cjs/hash/sha.js.map +1 -0
- package/dist/cjs/hash/shake.js +318 -0
- package/dist/cjs/hash/shake.js.map +1 -0
- package/dist/cjs/index.js +16 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{ringlwe.js → session/baselwe.js} +246 -203
- package/dist/cjs/session/baselwe.js.map +1 -0
- package/dist/cjs/session/ringlwe.js +19 -0
- package/dist/cjs/session/ringlwe.js.map +1 -0
- package/dist/cjs/session/rringlwe.js +42 -0
- package/dist/cjs/session/rringlwe.js.map +1 -0
- package/dist/esm/cipher/chacha.js +150 -0
- package/dist/esm/cipher/chacha.js.map +1 -0
- package/dist/esm/cipher/cipher.js +30 -0
- package/dist/esm/cipher/cipher.js.map +1 -0
- package/dist/esm/cipher/gimli.js +139 -0
- package/dist/esm/cipher/gimli.js.map +1 -0
- package/dist/esm/core/kdf.js.map +1 -0
- package/dist/esm/core/mac.js +87 -0
- package/dist/esm/core/mac.js.map +1 -0
- package/dist/esm/{types.js.map → core/types.js.map} +1 -1
- package/dist/esm/{utils.js → core/utils.js} +24 -4
- package/dist/esm/core/utils.js.map +1 -0
- package/dist/esm/core/wasm_loader.js +64 -0
- package/dist/esm/core/wasm_loader.js.map +1 -0
- package/dist/esm/crypto.js +30 -13
- package/dist/esm/crypto.js.map +1 -1
- package/dist/esm/{sha.js → hash/sha.js} +3 -2
- package/dist/esm/hash/sha.js.map +1 -0
- package/dist/esm/hash/shake.js +311 -0
- package/dist/esm/hash/shake.js.map +1 -0
- package/dist/esm/index.js +16 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{ringlwe.js → session/baselwe.js} +244 -201
- package/dist/esm/session/baselwe.js.map +1 -0
- package/dist/esm/session/ringlwe.js +15 -0
- package/dist/esm/session/ringlwe.js.map +1 -0
- package/dist/esm/session/rringlwe.js +38 -0
- package/dist/esm/session/rringlwe.js.map +1 -0
- package/dist/shake.wasm +0 -0
- package/dist/types/cipher/chacha.d.ts +67 -0
- package/dist/types/cipher/cipher.d.ts +31 -0
- package/dist/types/cipher/gimli.d.ts +64 -0
- package/dist/types/{kdf.d.ts → core/kdf.d.ts} +3 -2
- package/dist/types/{mac.d.ts → core/mac.d.ts} +21 -2
- package/dist/types/{types.d.ts → core/types.d.ts} +5 -2
- package/dist/types/{utils.d.ts → core/utils.d.ts} +13 -0
- package/dist/types/core/wasm_loader.d.ts +5 -0
- package/dist/types/crypto.d.ts +8 -4
- package/dist/types/{sha.d.ts → hash/sha.d.ts} +3 -2
- package/dist/types/hash/shake.d.ts +85 -0
- package/dist/types/index.d.ts +15 -10
- package/dist/types/{ringlwe.d.ts → session/baselwe.d.ts} +87 -91
- package/dist/types/session/ringlwe.d.ts +21 -0
- package/dist/types/session/rringlwe.d.ts +27 -0
- package/package.json +13 -3
- package/wasm/shake.wasm +0 -0
- package/dist/cjs/cipher.js +0 -265
- package/dist/cjs/cipher.js.map +0 -1
- package/dist/cjs/kdf.js.map +0 -1
- package/dist/cjs/mac.js.map +0 -1
- package/dist/cjs/ringlwe.js.map +0 -1
- package/dist/cjs/sha.js.map +0 -1
- package/dist/cjs/shake.js +0 -159
- package/dist/cjs/shake.js.map +0 -1
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/cipher.js +0 -259
- package/dist/esm/cipher.js.map +0 -1
- package/dist/esm/kdf.js.map +0 -1
- package/dist/esm/mac.js +0 -51
- package/dist/esm/mac.js.map +0 -1
- package/dist/esm/ringlwe.js.map +0 -1
- package/dist/esm/sha.js.map +0 -1
- package/dist/esm/shake.js +0 -155
- package/dist/esm/shake.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/dist/types/cipher.d.ts +0 -153
- package/dist/types/shake.d.ts +0 -53
- package/img/cover.png +0 -0
- package/src/cipher.ts +0 -260
- package/src/crypto.ts +0 -306
- package/src/index.ts +0 -27
- package/src/kdf.ts +0 -64
- package/src/mac.ts +0 -65
- package/src/ringlwe.ts +0 -289
- package/src/sha.ts +0 -265
- package/src/shake.ts +0 -163
- package/src/types.ts +0 -75
- package/src/utils.ts +0 -290
- package/tsconfig.cjs.json +0 -7
- package/tsconfig.json +0 -18
- /package/dist/cjs/{kdf.js → core/kdf.js} +0 -0
- /package/dist/cjs/{types.js → core/types.js} +0 -0
- /package/dist/esm/{kdf.js → core/kdf.js} +0 -0
- /package/dist/esm/{types.js → core/types.js} +0 -0
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
[About](#about-quarkdash-crypto) | [Get Started](#get-started) | [Example](#basic-example) | [Benchmark](#benchmark) | [Docs](https://github.com/devsdaddy/quarkdash/wiki)
|
|
12
|
+
[About](#about-quarkdash-crypto) | [Get Started](#get-started) | [Example](#basic-example) | [Benchmark](#benchmark) | [Docs](https://github.com/devsdaddy/quarkdash/wiki) | [Scheme](https://app.holst.so/share/b/7ae942f8-8a40-42c9-9991-3b624f147da8)
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
**QuarkDash Crypto** - It is a hybrid cryptographic protocol that provides post-quantum security, high performance, and attack resistance.
|
|
18
18
|
This library can be used as shared solution for client and server. Written on **pure typescript**. **Dependency-free**.
|
|
19
19
|
|
|
20
|
+
> Algorithm Scheme [can be found here](https://app.holst.so/share/b/7ae942f8-8a40-42c9-9991-3b624f147da8)
|
|
21
|
+
|
|
20
22
|
### ❓ Why QuarkDash Crypto?<br/>
|
|
21
23
|
🔹 **Lightweight library** with zero dependencies;<br/>
|
|
22
24
|
🔹 **Powerful crypto** algorithm written in **Typescript**;<br/>
|
|
@@ -105,7 +107,7 @@ Below I've outlined a brief step-by-step flowchart of how the algorithm works. I
|
|
|
105
107
|
4. Message Encryption (AEAD);
|
|
106
108
|
5. Decryption;
|
|
107
109
|
|
|
108
|
-
[Read more about algorithm in Wiki](https://github.com/devsdaddy/quarkdash)
|
|
110
|
+
> [Read more about algorithm in Wiki](https://github.com/devsdaddy/quarkdash) or [View scheme](https://app.holst.so/share/b/7ae942f8-8a40-42c9-9991-3b624f147da8)
|
|
109
111
|
|
|
110
112
|
---
|
|
111
113
|
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuarkDashChaCha = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* QuarkDash ChaCha Implementation
|
|
6
|
+
*
|
|
7
|
+
* @git https://github.com/devsdaddy/quarkdash
|
|
8
|
+
* @version 1.1.0
|
|
9
|
+
* @author Elijah Rastorguev
|
|
10
|
+
* @build 1002
|
|
11
|
+
* @website https://dev.to/devsdaddy
|
|
12
|
+
* @updated 13.04.2026
|
|
13
|
+
*/
|
|
14
|
+
const utils_1 = require("../core/utils");
|
|
15
|
+
/**
|
|
16
|
+
* ChaCha20 Based Cipher Implementation
|
|
17
|
+
*/
|
|
18
|
+
class QuarkDashChaCha {
|
|
19
|
+
/**
|
|
20
|
+
* Create ChaCha20 Cipher
|
|
21
|
+
* @param key {Uint8Array} Key buffer
|
|
22
|
+
* @param nonce {Uint8Array} Nonce buffer
|
|
23
|
+
*/
|
|
24
|
+
constructor(key, nonce) {
|
|
25
|
+
if (key.length !== 32)
|
|
26
|
+
throw new Error('Key must be 32 bytes');
|
|
27
|
+
if (nonce.length !== 12)
|
|
28
|
+
throw new Error('Nonce must be 12 bytes');
|
|
29
|
+
this.key = key;
|
|
30
|
+
this.nonce = nonce;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Encrypt data async using ChaCha20
|
|
34
|
+
* @param data {Uint8Array} Raw data buffer
|
|
35
|
+
* @returns {Promise<Uint8Array>} Result buffer
|
|
36
|
+
* TODO: GPU Calculations
|
|
37
|
+
*/
|
|
38
|
+
async encrypt(data) { return this.process(data); }
|
|
39
|
+
/**
|
|
40
|
+
* Decrypt data async using ChaCha20
|
|
41
|
+
* @param data {Uint8Array} Encrypted raw data buffer
|
|
42
|
+
* @returns {Promise<Uint8Array>} Result buffer
|
|
43
|
+
* TODO: GPU Calculations
|
|
44
|
+
*/
|
|
45
|
+
async decrypt(data) { return this.process(data); }
|
|
46
|
+
/**
|
|
47
|
+
* Encrypt data sync using ChaCha20
|
|
48
|
+
* @param data {Uint8Array} Raw data buffer
|
|
49
|
+
* @returns {Uint8Array} Result buffer
|
|
50
|
+
*/
|
|
51
|
+
encryptSync(data) { return this.process(data); }
|
|
52
|
+
/**
|
|
53
|
+
* Decrypt data sync using ChaCha20
|
|
54
|
+
* @param data {Uint8Array} Encrypted raw data buffer
|
|
55
|
+
* @returns {Uint8Array} Result buffer
|
|
56
|
+
*/
|
|
57
|
+
decryptSync(data) { return this.process(data); }
|
|
58
|
+
/**
|
|
59
|
+
* Process ChaCha20 Cipher
|
|
60
|
+
* @param data {Uint8Array} Data for processing
|
|
61
|
+
* @returns {Uint8Array} Processing result
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
process(data) {
|
|
65
|
+
const out = new Uint8Array(data.length);
|
|
66
|
+
let offset = 0;
|
|
67
|
+
let blockCounter = 0;
|
|
68
|
+
while (offset < data.length) {
|
|
69
|
+
const blocksRemaining = Math.ceil((data.length - offset) / QuarkDashChaCha.BLOCK_SIZE);
|
|
70
|
+
const blocksThisBatch = Math.min(QuarkDashChaCha.BLOCKS_PER_BATCH, blocksRemaining);
|
|
71
|
+
const batchSize = blocksThisBatch * QuarkDashChaCha.BLOCK_SIZE;
|
|
72
|
+
const keystream = this.generateKeystreamBatch(blockCounter, blocksThisBatch);
|
|
73
|
+
const bytesToProcess = Math.min(batchSize, data.length - offset);
|
|
74
|
+
for (let i = 0; i < bytesToProcess; i++) {
|
|
75
|
+
out[offset + i] = data[offset + i] ^ keystream[i];
|
|
76
|
+
}
|
|
77
|
+
offset += bytesToProcess;
|
|
78
|
+
blockCounter += blocksThisBatch;
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Quarter Round
|
|
84
|
+
* @param s {Uint8Array} Buffer
|
|
85
|
+
* @param a {number}
|
|
86
|
+
* @param b {number}
|
|
87
|
+
* @param c {number}
|
|
88
|
+
* @param d {number}
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
quarterRound(s, a, b, c, d) {
|
|
92
|
+
s[a] += s[b];
|
|
93
|
+
s[d] ^= s[a];
|
|
94
|
+
s[d] = (s[d] << 16) | (s[d] >>> 16);
|
|
95
|
+
s[c] += s[d];
|
|
96
|
+
s[b] ^= s[c];
|
|
97
|
+
s[b] = (s[b] << 12) | (s[b] >>> 20);
|
|
98
|
+
s[a] += s[b];
|
|
99
|
+
s[d] ^= s[a];
|
|
100
|
+
s[d] = (s[d] << 8) | (s[d] >>> 24);
|
|
101
|
+
s[c] += s[d];
|
|
102
|
+
s[b] ^= s[c];
|
|
103
|
+
s[b] = (s[b] << 7) | (s[b] >>> 25);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Generate Keystream Batch
|
|
107
|
+
* @param startCounter {number} Start counter
|
|
108
|
+
* @param count {number} Count
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
generateKeystreamBatch(startCounter, count) {
|
|
112
|
+
const out = new Uint8Array(count * QuarkDashChaCha.BLOCK_SIZE);
|
|
113
|
+
const state = new Uint32Array(16);
|
|
114
|
+
state[0] = 0x61707865;
|
|
115
|
+
state[1] = 0x3320646e;
|
|
116
|
+
state[2] = 0x79622d32;
|
|
117
|
+
state[3] = 0x6b206574;
|
|
118
|
+
// Ключ
|
|
119
|
+
for (let i = 0; i < 8; i++) {
|
|
120
|
+
state[4 + i] = utils_1.QuarkDashUtils.readUint32LE(this.key, i * 4);
|
|
121
|
+
}
|
|
122
|
+
// Nonce
|
|
123
|
+
for (let i = 0; i < 3; i++) {
|
|
124
|
+
state[13 + i] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, i * 4);
|
|
125
|
+
}
|
|
126
|
+
for (let block = 0; block < count; block++) {
|
|
127
|
+
state[12] = startCounter + block;
|
|
128
|
+
const working = new Uint32Array(state);
|
|
129
|
+
for (let round = 0; round < 10; round++) {
|
|
130
|
+
this.quarterRound(working, 0, 4, 8, 12);
|
|
131
|
+
this.quarterRound(working, 1, 5, 9, 13);
|
|
132
|
+
this.quarterRound(working, 2, 6, 10, 14);
|
|
133
|
+
this.quarterRound(working, 3, 7, 11, 15);
|
|
134
|
+
this.quarterRound(working, 0, 5, 10, 15);
|
|
135
|
+
this.quarterRound(working, 1, 6, 11, 12);
|
|
136
|
+
this.quarterRound(working, 2, 7, 8, 13);
|
|
137
|
+
this.quarterRound(working, 3, 4, 9, 14);
|
|
138
|
+
}
|
|
139
|
+
for (let i = 0; i < 16; i++) {
|
|
140
|
+
working[i] += state[i];
|
|
141
|
+
}
|
|
142
|
+
const outOffset = block * QuarkDashChaCha.BLOCK_SIZE;
|
|
143
|
+
for (let i = 0; i < 16; i++) {
|
|
144
|
+
utils_1.QuarkDashUtils.writeUint32LE(working[i], out, outOffset + i * 4);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.QuarkDashChaCha = QuarkDashChaCha;
|
|
151
|
+
QuarkDashChaCha.BLOCK_SIZE = 64;
|
|
152
|
+
QuarkDashChaCha.BLOCKS_PER_BATCH = 32; // 2048 байт за раз
|
|
153
|
+
QuarkDashChaCha.BATCH_SIZE = QuarkDashChaCha.BLOCK_SIZE * QuarkDashChaCha.BLOCKS_PER_BATCH;
|
|
154
|
+
//# sourceMappingURL=chacha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chacha.js","sourceRoot":"","sources":["../../../src/cipher/chacha.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CipherFactory = exports.CipherType = void 0;
|
|
4
|
+
const chacha_1 = require("./chacha");
|
|
5
|
+
const gimli_1 = require("./gimli");
|
|
6
|
+
/**
|
|
7
|
+
* Cipher Type
|
|
8
|
+
*/
|
|
9
|
+
var CipherType;
|
|
10
|
+
(function (CipherType) {
|
|
11
|
+
CipherType[CipherType["ChaCha20"] = 0] = "ChaCha20";
|
|
12
|
+
CipherType[CipherType["Gimli"] = 1] = "Gimli";
|
|
13
|
+
})(CipherType || (exports.CipherType = CipherType = {}));
|
|
14
|
+
/**
|
|
15
|
+
* Cipher Factory
|
|
16
|
+
*/
|
|
17
|
+
class CipherFactory {
|
|
18
|
+
/**
|
|
19
|
+
* Create Cipher
|
|
20
|
+
* @param algorithm {CipherType} Current cipher type
|
|
21
|
+
* @param key {Uint8Array} Key buffer
|
|
22
|
+
* @param nonce {Uint8Array} Nonce buffer
|
|
23
|
+
* @returns {ICipher} Cipher class instance
|
|
24
|
+
*/
|
|
25
|
+
static create(algorithm, key, nonce) {
|
|
26
|
+
switch (algorithm) {
|
|
27
|
+
case CipherType.ChaCha20: return new chacha_1.QuarkDashChaCha(key, nonce);
|
|
28
|
+
case CipherType.Gimli: return new gimli_1.QuarkDashGimli(key, nonce);
|
|
29
|
+
default: throw new Error('Unsupported cipher type');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.CipherFactory = CipherFactory;
|
|
34
|
+
//# sourceMappingURL=cipher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cipher.js","sourceRoot":"","sources":["../../../src/cipher/cipher.ts"],"names":[],"mappings":";;;AAaA,qCAAyC;AACzC,mCAAuC;AAEvC;;GAEG;AACH,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,mDAAY,CAAA;IACZ,6CAAS,CAAA;AACb,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB;AAED;;GAEG;AACH,MAAa,aAAa;IACtB;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,SAAqB,EAAE,GAAe,EAAE,KAAiB;QACnE,QAAO,SAAS,EAAE,CAAC;YACf,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,wBAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,sBAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;CACJ;AAfD,sCAeC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuarkDashGimli = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* QuarkDash Gimli Implementation
|
|
6
|
+
*
|
|
7
|
+
* @git https://github.com/devsdaddy/quarkdash
|
|
8
|
+
* @version 1.1.0
|
|
9
|
+
* @author Elijah Rastorguev
|
|
10
|
+
* @build 1002
|
|
11
|
+
* @website https://dev.to/devsdaddy
|
|
12
|
+
* @updated 13.04.2026
|
|
13
|
+
*/
|
|
14
|
+
const utils_1 = require("../core/utils");
|
|
15
|
+
/**
|
|
16
|
+
* Gimli Cipher
|
|
17
|
+
*/
|
|
18
|
+
class QuarkDashGimli {
|
|
19
|
+
/**
|
|
20
|
+
* Create Gimli Cipher
|
|
21
|
+
* @param key {Uint8Array} Key buffer
|
|
22
|
+
* @param nonce {Uint8Array} Nonce buffer
|
|
23
|
+
*/
|
|
24
|
+
constructor(key, nonce) {
|
|
25
|
+
if (key.length !== 32)
|
|
26
|
+
throw new Error('Key must be 32 bytes');
|
|
27
|
+
if (nonce.length !== 12)
|
|
28
|
+
throw new Error('Nonce must be 12 bytes');
|
|
29
|
+
this.key = key;
|
|
30
|
+
this.nonce = nonce;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Encrypt data async using Gimli
|
|
34
|
+
* @param data {Uint8Array} Raw data buffer
|
|
35
|
+
* @returns {Promise<Uint8Array>} Result buffer
|
|
36
|
+
* TODO: GPU Calculations
|
|
37
|
+
*/
|
|
38
|
+
async encrypt(data) { return this.process(data); }
|
|
39
|
+
/**
|
|
40
|
+
* Decrypt data async using Gimli
|
|
41
|
+
* @param data {Uint8Array} Encrypted raw data buffer
|
|
42
|
+
* @returns {Promise<Uint8Array>} Result buffer
|
|
43
|
+
* TODO: GPU Calculations
|
|
44
|
+
*/
|
|
45
|
+
async decrypt(data) { return this.process(data); }
|
|
46
|
+
/**
|
|
47
|
+
* Encrypt data sync using Gimli
|
|
48
|
+
* @param data {Uint8Array} Raw data buffer
|
|
49
|
+
* @returns {Uint8Array} Result buffer
|
|
50
|
+
*/
|
|
51
|
+
encryptSync(data) { return this.process(data); }
|
|
52
|
+
/**
|
|
53
|
+
* Decrypt data sync using Gimli
|
|
54
|
+
* @param data {Uint8Array} Encrypted raw data buffer
|
|
55
|
+
* @returns {Uint8Array} Result buffer
|
|
56
|
+
*/
|
|
57
|
+
decryptSync(data) { return this.process(data); }
|
|
58
|
+
/**
|
|
59
|
+
* Process Gimli Cipher
|
|
60
|
+
* @param data {Uint8Array} Input buffer
|
|
61
|
+
* @returns {Uint8Array} Output buffer
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
process(data) {
|
|
65
|
+
const out = new Uint8Array(data.length);
|
|
66
|
+
let offset = 0;
|
|
67
|
+
let blockCounter = 0;
|
|
68
|
+
while (offset < data.length) {
|
|
69
|
+
const blocksRemaining = Math.ceil((data.length - offset) / QuarkDashGimli.BLOCK_SIZE);
|
|
70
|
+
const blocksThisBatch = Math.min(QuarkDashGimli.BLOCKS_PER_BATCH, blocksRemaining);
|
|
71
|
+
const batchSize = blocksThisBatch * QuarkDashGimli.BLOCK_SIZE;
|
|
72
|
+
const keystream = this.generateKeystreamBatch(blockCounter, blocksThisBatch);
|
|
73
|
+
const bytesToProcess = Math.min(batchSize, data.length - offset);
|
|
74
|
+
for (let i = 0; i < bytesToProcess; i++) {
|
|
75
|
+
out[offset + i] = data[offset + i] ^ keystream[i];
|
|
76
|
+
}
|
|
77
|
+
offset += bytesToProcess;
|
|
78
|
+
blockCounter += blocksThisBatch;
|
|
79
|
+
}
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Generate keystream batch
|
|
84
|
+
* @param startCounter {number} Start counter
|
|
85
|
+
* @param count {number} Count
|
|
86
|
+
* @private
|
|
87
|
+
*/
|
|
88
|
+
generateKeystreamBatch(startCounter, count) {
|
|
89
|
+
const out = new Uint8Array(count * QuarkDashGimli.BLOCK_SIZE);
|
|
90
|
+
const state = new Uint32Array(12);
|
|
91
|
+
for (let i = 0; i < 8; i++) {
|
|
92
|
+
state[i] = utils_1.QuarkDashUtils.readUint32LE(this.key, i * 4);
|
|
93
|
+
}
|
|
94
|
+
// Nonce
|
|
95
|
+
state[8] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, 0);
|
|
96
|
+
state[9] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, 4);
|
|
97
|
+
state[10] = utils_1.QuarkDashUtils.readUint32LE(this.nonce, 8);
|
|
98
|
+
for (let block = 0; block < count; block++) {
|
|
99
|
+
state[11] = startCounter + block;
|
|
100
|
+
const working = new Uint32Array(state);
|
|
101
|
+
for (let round = 0; round < 24; round++) {
|
|
102
|
+
this.gimliRound(working, round);
|
|
103
|
+
}
|
|
104
|
+
const outOffset = block * QuarkDashGimli.BLOCK_SIZE;
|
|
105
|
+
for (let i = 0; i < 12; i++) {
|
|
106
|
+
utils_1.QuarkDashUtils.writeUint32LE(working[i], out, outOffset + i * 4);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gimli Round
|
|
113
|
+
* @param state {Uint32Array} State buffer
|
|
114
|
+
* @param round {number} Round number
|
|
115
|
+
* @private
|
|
116
|
+
*/
|
|
117
|
+
gimliRound(state, round) {
|
|
118
|
+
for (let i = 0; i < 4; i++) {
|
|
119
|
+
const x = state[i];
|
|
120
|
+
const y = state[i + 4];
|
|
121
|
+
const z = state[i + 8];
|
|
122
|
+
const newX = x ^ (z << 1) ^ ((y & z) << 2);
|
|
123
|
+
const newY = y ^ x ^ ((x | z) << 1);
|
|
124
|
+
const newZ = z ^ y ^ ((x & y) << 3);
|
|
125
|
+
state[i] = newX;
|
|
126
|
+
state[i + 4] = newY;
|
|
127
|
+
state[i + 8] = newZ;
|
|
128
|
+
}
|
|
129
|
+
// Перестановка слов
|
|
130
|
+
const t = state[1];
|
|
131
|
+
state[1] = state[2];
|
|
132
|
+
state[2] = state[3];
|
|
133
|
+
state[3] = t;
|
|
134
|
+
if ((round & 3) === 0) {
|
|
135
|
+
state[0] ^= (0x9e377900 | round);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.QuarkDashGimli = QuarkDashGimli;
|
|
140
|
+
QuarkDashGimli.BLOCK_SIZE = 48;
|
|
141
|
+
QuarkDashGimli.BLOCKS_PER_BATCH = 32; // 1536 байт за раз
|
|
142
|
+
QuarkDashGimli.BATCH_SIZE = QuarkDashGimli.BLOCK_SIZE * QuarkDashGimli.BLOCKS_PER_BATCH;
|
|
143
|
+
//# sourceMappingURL=gimli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gimli.js","sourceRoot":"","sources":["../../../src/cipher/gimli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kdf.js","sourceRoot":"","sources":["../../../src/core/kdf.ts"],"names":[],"mappings":";;;AAYA,mCAAyC;AAEzC;;GAEG;AACH,MAAa,YAAY;IACrB;;;;;;;;OAQG;IACI,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,IAAgB,EAAE,IAAgB,EAAE,MAAc;QACnF,MAAM,GAAG,GAAG,MAAM,sBAAc,CAAC,QAAQ,CAAC,sBAAc,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAe,CAAC;QACnG,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAe,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,sBAAc,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAe,CAAC;YACrF,CAAC,GAAG,MAAM,sBAAc,CAAC,QAAQ,CAAC,sBAAc,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,EAAE,CAAC;QACR,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,UAAU,CAAC,GAAe,EAAE,IAAgB,EAAE,IAAgB,EAAE,MAAc;QACjF,MAAM,GAAG,GAAG,sBAAc,CAAC,YAAY,CAAC,sBAAc,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAe,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,sBAAc,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC,GAAG,sBAAc,CAAC,YAAY,CAAC,sBAAc,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,EAAE,CAAC;QACR,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AA/CD,oCA+CC"}
|
|
@@ -2,10 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QuarkDashMAC = void 0;
|
|
4
4
|
const utils_1 = require("./utils");
|
|
5
|
+
const shake_1 = require("../hash/shake");
|
|
5
6
|
/**
|
|
6
7
|
* MAC implementation using Shake-256
|
|
7
8
|
*/
|
|
8
9
|
class QuarkDashMAC {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.tempBuffer = new Uint8Array(64 * 1024);
|
|
12
|
+
}
|
|
9
13
|
/**
|
|
10
14
|
* Sign data async
|
|
11
15
|
* @param data {Uint8Array} Data buffer
|
|
@@ -15,7 +19,7 @@ class QuarkDashMAC {
|
|
|
15
19
|
*/
|
|
16
20
|
async sign(data, key) {
|
|
17
21
|
const full = utils_1.QuarkDashUtils.concatBytes(key, data);
|
|
18
|
-
return
|
|
22
|
+
return ((0, shake_1.isWasmShake)()) ? shake_1.Shake256Wasm.shake256Wasm(full, 32) : shake_1.Shake256.hash(full, 32);
|
|
19
23
|
}
|
|
20
24
|
/**
|
|
21
25
|
* Verify async
|
|
@@ -29,6 +33,38 @@ class QuarkDashMAC {
|
|
|
29
33
|
const expected = await this.sign(data, key);
|
|
30
34
|
return utils_1.QuarkDashUtils.constantTimeEqual(expected, tag);
|
|
31
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Sign two async
|
|
38
|
+
* @param data1 {Uint8Array} First buffer
|
|
39
|
+
* @param data2 {Uint8Array} Second buffer
|
|
40
|
+
* @param key {Uint8Array} Key
|
|
41
|
+
* @returns {Promise<Uint8Array>}
|
|
42
|
+
*/
|
|
43
|
+
async signTwo(data1, data2, key) {
|
|
44
|
+
const totalLen = key.length + data1.length + data2.length;
|
|
45
|
+
if (totalLen > this.tempBuffer.length) {
|
|
46
|
+
this.tempBuffer = new Uint8Array(totalLen);
|
|
47
|
+
}
|
|
48
|
+
this.tempBuffer.set(key, 0);
|
|
49
|
+
this.tempBuffer.set(data1, key.length);
|
|
50
|
+
this.tempBuffer.set(data2, key.length + data1.length);
|
|
51
|
+
return ((0, shake_1.isWasmShake)()) ? shake_1.Shake256Wasm.shake256Wasm(this.tempBuffer.subarray(0, totalLen), 32) : shake_1.Shake256.hash(this.tempBuffer.subarray(0, totalLen), 32);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Sign two sync
|
|
55
|
+
* @param data1 {Uint8Array} First buffer
|
|
56
|
+
* @param data2 {Uint8Array} Second buffer
|
|
57
|
+
* @param key {Uint8Array} Key
|
|
58
|
+
* @returns {Uint8Array}
|
|
59
|
+
*/
|
|
60
|
+
signTwoSync(data1, data2, key) {
|
|
61
|
+
const totalLen = key.length + data1.length + data2.length;
|
|
62
|
+
const combined = new Uint8Array(totalLen);
|
|
63
|
+
combined.set(key, 0);
|
|
64
|
+
combined.set(data1, key.length);
|
|
65
|
+
combined.set(data2, key.length + data1.length);
|
|
66
|
+
return ((0, shake_1.isWasmShake)()) ? shake_1.Shake256Wasm.shake256Wasm(combined, 32) : shake_1.Shake256.hashSync(combined, 32);
|
|
67
|
+
}
|
|
32
68
|
/**
|
|
33
69
|
* Sign data sync
|
|
34
70
|
* @param data {Uint8Array} Data buffer
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mac.js","sourceRoot":"","sources":["../../../src/core/mac.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.QuarkDashUtils = void 0;
|
|
7
4
|
/**
|
|
8
5
|
* QuarkDash Crypto Utils
|
|
9
6
|
*
|
|
10
7
|
* @git https://github.com/devsdaddy/quarkdash
|
|
11
|
-
* @version 1.
|
|
8
|
+
* @version 1.1.0
|
|
12
9
|
* @author Elijah Rastorguev
|
|
13
|
-
* @build
|
|
10
|
+
* @build 1001
|
|
14
11
|
* @website https://dev.to/devsdaddy
|
|
12
|
+
* @updated 13.04.2026
|
|
15
13
|
*/
|
|
16
|
-
const
|
|
17
|
-
const shake_1 = require("./shake");
|
|
14
|
+
const shake_1 = require("../hash/shake");
|
|
18
15
|
/**
|
|
19
16
|
* Crypto Utils Class
|
|
20
17
|
*/
|
|
@@ -119,7 +116,7 @@ class QuarkDashUtils {
|
|
|
119
116
|
* @returns {Uint8Array} Random bytes buffer
|
|
120
117
|
*/
|
|
121
118
|
static randomBytes(len) {
|
|
122
|
-
return
|
|
119
|
+
return crypto.getRandomValues(new Uint8Array(len));
|
|
123
120
|
}
|
|
124
121
|
/**
|
|
125
122
|
* Convert raw text to bytes array
|
|
@@ -262,6 +259,26 @@ class QuarkDashUtils {
|
|
|
262
259
|
v |= BigInt(arr[off + i]) << BigInt(i * 8);
|
|
263
260
|
return v;
|
|
264
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Read Uint32 Little Endian Value
|
|
264
|
+
* @param arr {Uint8Array} Buffer
|
|
265
|
+
* @param off {number} Offset
|
|
266
|
+
*/
|
|
267
|
+
static readUint32LE(arr, off) {
|
|
268
|
+
return (arr[off] | (arr[off + 1] << 8) | (arr[off + 2] << 16) | (arr[off + 3] << 24)) >>> 0;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Write Uint32 Little Endian Value
|
|
272
|
+
* @param v {number} Value
|
|
273
|
+
* @param arr {Uint8Array} Buffer
|
|
274
|
+
* @param off {number} Offset
|
|
275
|
+
*/
|
|
276
|
+
static writeUint32LE(v, arr, off) {
|
|
277
|
+
arr[off] = v & 0xFF;
|
|
278
|
+
arr[off + 1] = (v >>> 8) & 0xFF;
|
|
279
|
+
arr[off + 2] = (v >>> 16) & 0xFF;
|
|
280
|
+
arr[off + 3] = (v >>> 24) & 0xFF;
|
|
281
|
+
}
|
|
265
282
|
}
|
|
266
283
|
exports.QuarkDashUtils = QuarkDashUtils;
|
|
267
284
|
// Protected Constants
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadWasmModule = loadWasmModule;
|
|
37
|
+
/**
|
|
38
|
+
* QuarkDash Crypto WebAssembly Loader
|
|
39
|
+
*
|
|
40
|
+
* @git https://github.com/devsdaddy/quarkdash
|
|
41
|
+
* @version 1.1.0
|
|
42
|
+
* @author Elijah Rastorguev
|
|
43
|
+
* @build 1010
|
|
44
|
+
* @website https://dev.to/devsdaddy
|
|
45
|
+
* @updated 14.04.2026
|
|
46
|
+
*/
|
|
47
|
+
// WASM Variables
|
|
48
|
+
let wasmPromise = null;
|
|
49
|
+
let wasmCache = null;
|
|
50
|
+
/**
|
|
51
|
+
* Load WASM Module
|
|
52
|
+
* @param wasmUrl
|
|
53
|
+
*/
|
|
54
|
+
async function loadWasmModule(wasmUrl) {
|
|
55
|
+
if (wasmCache)
|
|
56
|
+
return wasmCache;
|
|
57
|
+
if (wasmPromise)
|
|
58
|
+
return wasmPromise;
|
|
59
|
+
wasmPromise = (async () => {
|
|
60
|
+
let bytes;
|
|
61
|
+
// For Node js
|
|
62
|
+
if (typeof process !== 'undefined' && process.versions && process.versions.node) {
|
|
63
|
+
try {
|
|
64
|
+
const { readFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
65
|
+
const { resolve } = await Promise.resolve().then(() => __importStar(require('path')));
|
|
66
|
+
const possiblePaths = [
|
|
67
|
+
resolve(process.cwd(), wasmUrl),
|
|
68
|
+
resolve(__dirname, wasmUrl)
|
|
69
|
+
];
|
|
70
|
+
for (const path of possiblePaths) {
|
|
71
|
+
try {
|
|
72
|
+
const buffer = readFileSync(path);
|
|
73
|
+
bytes = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
74
|
+
return await WebAssembly.compile(bytes);
|
|
75
|
+
}
|
|
76
|
+
catch (e) { /* continue */ }
|
|
77
|
+
}
|
|
78
|
+
throw new Error('WASM file not found in Node.js filesystem');
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
console.error('Node.js filesystem read failed:', err);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Browser support
|
|
85
|
+
try {
|
|
86
|
+
const response = await fetch(wasmUrl);
|
|
87
|
+
if (!response.ok)
|
|
88
|
+
throw new Error(`HTTP ${response.status}`);
|
|
89
|
+
bytes = await response.arrayBuffer();
|
|
90
|
+
return await WebAssembly.compile(bytes);
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
console.error(`Failed to fetch WASM from ${wasmUrl}:`, err);
|
|
94
|
+
}
|
|
95
|
+
throw new Error('Unable to load WASM module. Please provide a valid URL or install the .wasm file.');
|
|
96
|
+
})();
|
|
97
|
+
wasmCache = await wasmPromise;
|
|
98
|
+
return wasmCache;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=wasm_loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm_loader.js","sourceRoot":"","sources":["../../../src/core/wasm_loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,wCA4CC;AA9DD;;;;;;;;;GASG;AACH,iBAAiB;AACjB,IAAI,WAAW,GAAuC,IAAI,CAAC;AAC3D,IAAI,SAAS,GAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACI,KAAK,UAAU,cAAc,CAAC,OAAe;IAChD,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,IAAI,KAAkB,CAAC;QAEvB,cAAc;QACd,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC9E,IAAI,CAAC;gBACD,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,IAAI,GAAC,CAAC;gBAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,MAAM,GAAC,CAAC;gBACzC,MAAM,aAAa,GAAG;oBAClB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC;oBAC/B,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;iBAC9B,CAAC;gBACF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;wBAClC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;wBACtF,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC5C,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,KAAK,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YACrC,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACzG,CAAC,CAAC,EAAE,CAAC;IAEL,SAAS,GAAG,MAAM,WAAW,CAAC;IAC9B,OAAO,SAAS,CAAC;AACrB,CAAC"}
|