canary-kit 0.9.0 → 0.10.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/dist/encoding.js CHANGED
@@ -1,98 +1,2 @@
1
- import { readUint16BE } from './crypto.js';
2
- import { WORDLIST } from './wordlist.js';
3
- /** Default encoding: single word from en-v1 wordlist. */
4
- export const DEFAULT_ENCODING = { format: 'words', count: 1 };
5
- /**
6
- * Encode raw bytes as words using 11-bit indices into a wordlist.
7
- * Each word uses a consecutive 2-byte slice: readUint16BE(bytes, i*2) % wordlistSize.
8
- *
9
- * @param bytes - Raw bytes to encode (must have at least `count * 2` bytes).
10
- * @param count - Number of words to produce (integer 1–16, default: 1).
11
- * @param wordlist - Custom wordlist (must be exactly 2048 entries, default: en-v1).
12
- * @returns Array of lowercase word strings.
13
- * @throws {RangeError} If count is not an integer 1–16, wordlist is wrong size, or insufficient bytes.
14
- */
15
- export function encodeAsWords(bytes, count = 1, wordlist = WORDLIST) {
16
- if (wordlist.length !== 2048)
17
- throw new RangeError('Wordlist must contain exactly 2048 entries');
18
- if (!Number.isInteger(count) || count < 1 || count > 16)
19
- throw new RangeError('Word count must be an integer 1–16');
20
- if (bytes.length < count * 2)
21
- throw new RangeError('Not enough bytes for requested word count');
22
- const words = [];
23
- for (let i = 0; i < count; i++) {
24
- const index = readUint16BE(bytes, i * 2) % wordlist.length;
25
- words.push(wordlist[index]);
26
- }
27
- return words;
28
- }
29
- /**
30
- * Encode raw bytes as a numeric PIN with leading zeros.
31
- * Uses the first ceil(digits * 0.415) bytes, interpreted as a big-endian
32
- * integer, reduced modulo 10^digits.
33
- *
34
- * @param bytes - Raw bytes to encode (must be non-empty).
35
- * @param digits - Number of PIN digits to produce (integer 1-10, default: 4).
36
- * @returns Zero-padded numeric string of the specified length.
37
- * @throws {RangeError} If digits is not an integer 1-10 or bytes is empty.
38
- */
39
- export function encodeAsPin(bytes, digits = 4) {
40
- if (!Number.isInteger(digits) || digits < 1 || digits > 10)
41
- throw new RangeError('PIN digits must be an integer 1–10');
42
- if (bytes.length === 0)
43
- throw new RangeError('Cannot encode empty byte array as PIN');
44
- const needed = Math.min(Math.ceil(digits * 0.415), bytes.length);
45
- const mod = Math.pow(10, digits);
46
- // Use BigInt accumulation for 9–10 digits to avoid 32-bit overflow in >>> 0
47
- if (digits >= 9) {
48
- let bigVal = 0n;
49
- for (let i = 0; i < needed; i++)
50
- bigVal = bigVal * 256n + BigInt(bytes[i]);
51
- return (Number(bigVal % BigInt(mod))).toString().padStart(digits, '0');
52
- }
53
- let value = 0;
54
- for (let i = 0; i < needed; i++) {
55
- value = (value * 256 + bytes[i]) >>> 0;
56
- }
57
- return (value % mod).toString().padStart(digits, '0');
58
- }
59
- /**
60
- * Encode raw bytes as a lowercase hex string.
61
- *
62
- * @param bytes - Raw bytes to encode.
63
- * @param length - Number of hex characters to produce (integer 1-64, default: 8).
64
- * @returns Lowercase hex string of the specified length.
65
- * @throws {RangeError} If length is not an integer 1-64 or insufficient bytes are provided.
66
- */
67
- export function encodeAsHex(bytes, length = 8) {
68
- if (!Number.isInteger(length) || length < 1 || length > 64)
69
- throw new RangeError('Hex length must be an integer 1–64');
70
- const needed = Math.ceil(length / 2);
71
- if (bytes.length < needed)
72
- throw new RangeError(`Not enough bytes: need ${needed}, got ${bytes.length}`);
73
- let hex = '';
74
- for (let i = 0; i < needed && i < bytes.length; i++) {
75
- hex += bytes[i].toString(16).padStart(2, '0');
76
- }
77
- return hex.slice(0, length);
78
- }
79
- /**
80
- * Encode raw bytes using the specified encoding format.
81
- * Returns a single string (words are space-joined).
82
- *
83
- * @param bytes - Raw bytes to encode.
84
- * @param encoding - Encoding format: words, pin, or hex (default: single word).
85
- * @returns Encoded token string (space-joined words, zero-padded PIN, or hex).
86
- * @throws {RangeError} If encoding parameters are out of range or bytes are insufficient.
87
- */
88
- export function encodeToken(bytes, encoding = DEFAULT_ENCODING) {
89
- switch (encoding.format) {
90
- case 'words':
91
- return encodeAsWords(bytes, encoding.count ?? 1, encoding.wordlist).join(' ');
92
- case 'pin':
93
- return encodeAsPin(bytes, encoding.digits ?? 4);
94
- case 'hex':
95
- return encodeAsHex(bytes, encoding.length ?? 8);
96
- }
97
- }
1
+ export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, DEFAULT_ENCODING, } from 'spoken-token';
98
2
  //# sourceMappingURL=encoding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAQxC,yDAAyD;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AAE5E;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAiB,EACjB,QAAgB,CAAC,EACjB,WAA8B,QAAQ;IAEtC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,CAAA;IAChG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAA;IACnH,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAA;IAC/F,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC1D,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,SAAiB,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAA;IACtH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC,CAAA;IACrF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAEhC,4EAA4E;IAC5E,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1E,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxE,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACvD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,SAAiB,CAAC;IAC/D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAA;IACtH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,MAAM,SAAS,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACxG,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,WAA0B,gBAAgB;IACvF,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/E,KAAK,KAAK;YACR,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QACjD,KAAK,KAAK;YACR,OAAO,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IACnD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAChC,gBAAgB,GACrC,MAAM,cAAc,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export { WORDLIST, WORDLIST_SIZE, getWord, indexOf, } from './wordlist.js';
2
2
  export { getCounter, counterToBytes, counterFromEventId, DEFAULT_ROTATION_INTERVAL, MAX_COUNTER_OFFSET, } from './counter.js';
3
+ export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, type TokenEncoding, DEFAULT_ENCODING, } from './encoding.js';
4
+ export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, deriveDirectionalPair, type DirectionalPair, type TokenVerifyResult, type VerifyOptions, } from './token.js';
3
5
  export { GROUP_CONTEXT, deriveVerificationWord, deriveVerificationPhrase, deriveDuressWord, deriveDuressPhrase, deriveCurrentWord, } from './derive.js';
4
6
  export { verifyWord, type VerifyResult, type VerifyStatus, } from './verify.js';
5
7
  export { createGroup, getCurrentWord, getCurrentDuressWord, advanceCounter, reseed, addMember, removeMember, removeMemberAndReseed, syncCounter, dissolveGroup, type GroupConfig, type GroupState, } from './group.js';
6
8
  export { PRESETS, type PresetName, type GroupPreset, } from './presets.js';
7
9
  export { deriveBeaconKey, deriveDuressKey, encryptBeacon, decryptBeacon, buildDuressAlert, encryptDuressAlert, decryptDuressAlert, type BeaconPayload, type DuressAlert, type DuressLocation, } from './beacon.js';
8
- export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, type TokenVerifyResult, type VerifyOptions, } from './token.js';
9
- export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, type TokenEncoding, DEFAULT_ENCODING, } from './encoding.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,MAAM,EACN,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,EACP,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,aAAa,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAC1C,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAC9C,yBAAyB,EAAE,kBAAkB,GAC9C,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EACpD,KAAK,aAAa,EAAE,gBAAgB,GACrC,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,aAAa,EACb,gBAAgB,EAAE,WAAW,EAC7B,sBAAsB,EAAE,iBAAiB,EACzC,WAAW,EAAE,mBAAmB,EAChC,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAAE,KAAK,aAAa,GAC3C,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,aAAa,EACb,sBAAsB,EAAE,wBAAwB,EAChD,gBAAgB,EAAE,kBAAkB,EACpC,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,UAAU,EACV,KAAK,YAAY,EAAE,KAAK,YAAY,GACrC,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,WAAW,EAAE,cAAc,EAAE,oBAAoB,EACjD,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAC/C,qBAAqB,EAAE,WAAW,EAAE,aAAa,EACjD,KAAK,WAAW,EAAE,KAAK,UAAU,GAClC,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,GAC3C,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EACxD,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,GAC1D,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -1,12 +1,15 @@
1
1
  // src/index.ts
2
+ // --- Re-exported from spoken-token (backwards compatibility) ---
2
3
  export { WORDLIST, WORDLIST_SIZE, getWord, indexOf, } from './wordlist.js';
3
4
  export { getCounter, counterToBytes, counterFromEventId, DEFAULT_ROTATION_INTERVAL, MAX_COUNTER_OFFSET, } from './counter.js';
5
+ export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, DEFAULT_ENCODING, } from './encoding.js';
6
+ // --- CANARY Protocol (universal + duress-aware) ---
7
+ export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, deriveDirectionalPair, } from './token.js';
8
+ // --- Group layer ---
4
9
  export { GROUP_CONTEXT, deriveVerificationWord, deriveVerificationPhrase, deriveDuressWord, deriveDuressPhrase, deriveCurrentWord, } from './derive.js';
5
10
  export { verifyWord, } from './verify.js';
6
11
  export { createGroup, getCurrentWord, getCurrentDuressWord, advanceCounter, reseed, addMember, removeMember, removeMemberAndReseed, syncCounter, dissolveGroup, } from './group.js';
7
12
  export { PRESETS, } from './presets.js';
13
+ // --- Beacon ---
8
14
  export { deriveBeaconKey, deriveDuressKey, encryptBeacon, decryptBeacon, buildDuressAlert, encryptDuressAlert, decryptDuressAlert, } from './beacon.js';
9
- // --- CANARY Protocol (universal API) ---
10
- export { MAX_TOLERANCE, deriveTokenBytes, deriveToken, deriveDuressTokenBytes, deriveDuressToken, verifyToken, deriveLivenessToken, } from './token.js';
11
- export { encodeAsWords, encodeAsPin, encodeAsHex, encodeToken, DEFAULT_ENCODING, } from './encoding.js';
12
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EACL,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,GACR,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,UAAU,GAGX,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,MAAM,EACN,SAAS,EACT,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,aAAa,GAGd,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,GAGR,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,aAAa,CAAA;AAEpB,0CAA0C;AAC1C,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,GAGpB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EAEX,gBAAgB,GACjB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AAEf,kEAAkE;AAClE,OAAO,EACL,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,GAC1C,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAC9C,yBAAyB,EAAE,kBAAkB,GAC9C,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAChC,gBAAgB,GACrC,MAAM,eAAe,CAAA;AAEtB,qDAAqD;AACrD,OAAO,EACL,aAAa,EACb,gBAAgB,EAAE,WAAW,EAC7B,sBAAsB,EAAE,iBAAiB,EACzC,WAAW,EAAE,mBAAmB,EAChC,qBAAqB,GAGtB,MAAM,YAAY,CAAA;AAEnB,sBAAsB;AACtB,OAAO,EACL,aAAa,EACb,sBAAsB,EAAE,wBAAwB,EAChD,gBAAgB,EAAE,kBAAkB,EACpC,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,UAAU,GAEX,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,WAAW,EAAE,cAAc,EAAE,oBAAoB,EACjD,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAC/C,qBAAqB,EAAE,WAAW,EAAE,aAAa,GAElD,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,OAAO,GACR,MAAM,cAAc,CAAA;AAErB,iBAAiB;AACjB,OAAO,EACL,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,GAEzD,MAAM,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
package/dist/sync.js CHANGED
@@ -182,8 +182,8 @@ export function decodeSyncMessage(payload) {
182
182
  }
183
183
  break;
184
184
  case 'counter-advance':
185
- if (!isNonNegativeInt(parsed.counter)) {
186
- throw new Error('Invalid sync message: counter-advance requires a non-negative counter');
185
+ if (!isNonNegativeInt(parsed.counter) || parsed.counter > 0xFFFFFFFF) {
186
+ throw new Error('Invalid sync message: counter-advance requires a non-negative counter within uint32 range');
187
187
  }
188
188
  if (!isNonNegativeInt(parsed.usageOffset)) {
189
189
  throw new Error('Invalid sync message: counter-advance requires a non-negative usageOffset');
@@ -527,6 +527,11 @@ export function applySyncMessage(group, msg, nowSec = Math.floor(Date.now() / 10
527
527
  // attack surface entirely.
528
528
  return group;
529
529
  }
530
+ case 'duress-clear': {
531
+ // Consume opId to prevent replay (duress-clear is safety-critical)
532
+ const ops = appendConsumedOp(group.consumedOps, msg.opId, msg.timestamp, group.consumedOpsFloor);
533
+ return { ...group, ...ops };
534
+ }
530
535
  case 'beacon':
531
536
  case 'duress-alert':
532
537
  case 'liveness-checkin':
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAE3C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAExH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAmBpD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS;IAClC,aAAa,EAAE,cAAc,EAAE,iBAAiB;IAChD,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB;CACzF,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAClD,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,QAAQ;IAC1D,gBAAgB,EAAE,cAAc,EAAE,cAAc;CACjD,CAAC,CAAA;AAEF,kFAAkF;AAClF,MAAM,SAAS,GAAG,gBAAgB,CAAA;AAClC,MAAM,0BAA0B,GAAG,GAAG,CAAA;AACtC,MAAM,WAAW,GAAG,GAAG,CAAA;AACvB,MAAM,0BAA0B,GAAG,UAAU,CAAA;AAC7C,MAAM,cAAc,GAAG,GAAG,CAAA;AAE1B,qFAAqF;AACrF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,CAAA;AAEhD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAErC,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAO7B,SAAS,gBAAgB,CAAC,GAAa,EAAE,IAAY,EAAE,SAAiB,EAAE,YAAqB;IAC7F,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;IAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACnC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;YAC1C,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,EAAE,SAAS,CAAC;SACzD,CAAA;IACH,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAA;AAC9D,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAEjC,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACvE,CAAC;AAED,iEAAiE;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA;IAC/D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,SAAqD,CAAA;QACtF,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AAClC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACxD,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACzF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACzD,CAAC;IACD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAgC,CAAA;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,KAAK,GAAG,IAAI;aACf,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;aACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,KAAK,EAAE,CAAC,CAAA;AACtE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAgB;IACtD,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAA;QAC7B,OAAO,eAAe,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,MAA+B,CAAA;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,4BAA4B;IAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAA;IAC3B,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;IAED,8DAA8D;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,CAAA;IACtC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,gBAAgB,GAAG,CAAC,CAAA;IAC7G,CAAC;IAED,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,aAAa;YAChB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,iEAAiE;YACjE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;YAChG,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACrC,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;oBAC9E,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;gBAC7G,CAAC;YACH,CAAC;YACD,MAAK;QAEP,KAAK,cAAc;YACjB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;YACjG,CAAC;YACD,MAAK;QAEP,KAAK,kBAAkB;YACrB,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;YACzF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAA;YACrG,CAAC;YACD,MAAK;QAEP,KAAK,iBAAiB;YACpB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC;gBACrE,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAA;YAC9G,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;YAC9F,CAAC;YACD,MAAK;QAEP,KAAK,QAAQ;YACX,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;YACnF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;YACjF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC/E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;YAC3F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtH,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxH,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,2DAA2D,WAAW,EAAE,CAAC,CAAA;YAC3F,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,0DAA0D,WAAW,EAAE,CAAC,CAAA;YAC1F,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;gBAC3E,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACtC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAmB,CAAC;gBAChF,eAAe,EAAE,gBAAgB;aAClC,CAAA;QAEH,KAAK,QAAQ;YACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;YACtE,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,GAAG,0BAA0B,EAAE,CAAC;gBAC5G,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;YAClF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;YAC3F,CAAC;YACD,MAAK;QAEP,KAAK,cAAc;YACjB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAC5E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;YACjG,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,CAAC;gBACnH,MAAM,IAAI,KAAK,CAAC,0EAA0E,cAAc,aAAa,CAAC,CAAA;YACxH,CAAC;YACD,MAAK;QAEP,KAAK,cAAc;YACjB,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAA;YACpF,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,wEAAwE,cAAc,aAAa,CAAC,CAAA;YACtH,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;YACjG,CAAC;YACD,MAAK;QAEP,KAAK,gBAAgB;YACnB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;YACrF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;YACzF,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;YAC7F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxH,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;YAC7F,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtH,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAA;YAC5F,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,mEAAmE,WAAW,EAAE,CAAC,CAAA;YACnG,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,kEAAkE,WAAW,EAAE,CAAC,CAAA;YAClG,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;YACvF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC5F,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAA;YACnG,CAAC;YACD,2DAA2D;YAC3D,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;oBACtF,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;gBACpG,CAAC;YACH,CAAC;YACD,MAAK;IACT,CAAC;IAED,OAAO,MAAqB,CAAA;AAC9B,CAAC;AAED,iEAAiE;AAEjE;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,GAAgB,EAAE,MAAe;IAC3D,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACtC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACpE,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACrE,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAiB,EACjB,GAAgB,EAChB,SAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC9C,MAAe;IAEf,8DAA8D;IAC9D,IAAI,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACpC,oDAAoD;QACpD,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QAEzB,+BAA+B;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA;QAEhD,MAAM,QAAQ,GAAI,GAA0B,CAAC,KAAK,CAAA;QAClD,MAAM,OAAO,GAAI,GAAyB,CAAC,IAAI,CAAA;QAE/C,gDAAgD;QAChD,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QAEjE,yBAAyB;QACzB,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QAExC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,oDAAoD;YACpD,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAA;YAE9C,2CAA2C;YAC3C,MAAM,SAAS,GAAG,GAAgD,CAAA;YAClE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAEzD,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YAC5C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;QAClE,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACzC,sFAAsF;YACtF,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;YAExC,yCAAyC;YACzC,MAAM,OAAO,GAAG,GAAgD,CAAA;YAChE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAErD,2BAA2B;YAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAC1C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,mEAAmE;YACnE,IAAI,QAAQ,KAAK,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;QAC5C,CAAC;QAED,iDAAiD;QACjD,yFAAyF;QACzF,kGAAkG;QAClG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,KAAK,CAAA;YAE1C,8EAA8E;YAC9E,8DAA8D;YAC9D,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAO,KAAK,CAAA;QACnG,CAAC;IACH,CAAC;IAED,8DAA8D;IAC9D,8EAA8E;IAC9E,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC3H,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAA;QACtC,IAAI,OAAO,GAAG,6BAA6B;YAAE,OAAO,KAAK,CAAA,CAAG,QAAQ;QACpE,IAAI,OAAO,GAAG,CAAC,mBAAmB;YAAE,OAAO,KAAK,CAAA,CAAa,wBAAwB;IACvF,CAAC;IAED,4EAA4E;IAC5E,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IAEpF,oFAAoF;IACpF,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;QACnI,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QAC3C,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO,KAAK,CAAA;IACnG,CAAC;IAED,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,IAAI,OAAmB,CAAA;YACvB,IAAI,CAAC;gBACH,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA,CAAC,2DAA2D;YAC1E,CAAC;YACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAClG,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW;gBAC3B,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,GAAI,OAA8C,CAAC,WAAiD,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE;gBAC1J,CAAC,CAAC,EAAE,CAAA;YACN,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;QACzC,CAAC;QAED,KAAK,cAAc;YACjB,0EAA0E;YAC1E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YACrD,CAAC;gBACC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBAClG,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,CAAA;YAC/B,CAAC;QAEH,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,uEAAuE;YACvE,2EAA2E;YAC3E,EAAE;YACF,kCAAkC;YAClC,yEAAyE;YACzE,0EAA0E;YAC1E,gEAAgE;YAChE,uEAAuE;YACvE,wEAAwE;YACxE,uEAAuE;YACvE,0EAA0E;YAC1E,sDAAsD;YACtD,kEAAkE;YAClE,EAAE;YACF,sEAAsE;YAEtE,8CAA8C;YAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAA;YAE5D,0DAA0D;YAC1D,IAAI,GAAG,CAAC,WAAW,GAAG,0BAA0B;gBAAE,OAAO,KAAK,CAAA;YAE9D,yCAAyC;YACzC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAA;YAC1D,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAA;YACvD,IAAI,iBAAiB,IAAI,gBAAgB;gBAAE,OAAO,KAAK,CAAA;YAEvD,iFAAiF;YACjF,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACpE,MAAM,mBAAmB,GAAG,gBAAgB,GAAG,0BAA0B,CAAA;YACzE,IAAI,iBAAiB,GAAG,mBAAmB;gBAAE,OAAO,KAAK,CAAA;YAEzD,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAA;QACzE,CAAC;QAED,KAAK,QAAQ;YACX,+EAA+E;YAC/E,OAAO;gBACL,GAAG,KAAK;gBACR,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,CAAC;gBACd,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBACzB,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;aACxB,CAAA;QAEH,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,sEAAsE;YACtE,EAAE;YACF,sDAAsD;YACtD,0EAA0E;YAC1E,0EAA0E;YAC1E,4EAA4E;YAC5E,gDAAgD;YAChD,+DAA+D;YAC/D,+EAA+E;YAC/E,6EAA6E;YAC7E,4EAA4E;YAC5E,oDAAoD;YACpD,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,uDAAuD;gBACvD,yCAAyC;gBACzC,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAA;gBACzC,qCAAqC;gBACrC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAA;gBACxD,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAA;gBACvD,IAAI,iBAAiB,GAAG,cAAc;oBAAE,OAAO,KAAK,CAAA;gBACpD,uFAAuF;gBACvF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAA;gBAClE,+DAA+D;gBAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBACpG,OAAO;oBACL,GAAG,KAAK;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,OAAO,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;oBACzB,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;oBACvB,GAAG,OAAO;iBACX,CAAA;YACH,CAAC;YACD,wCAAwC;YACxC,gEAAgE;YAChE,6DAA6D;YAC7D,2BAA2B;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,mEAAmE;YACnE,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;YAChG,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,CAAA;QAC7B,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,KAAK,cAAc,CAAC;QACpB,KAAK,kBAAkB;YACrB,OAAO,KAAK,CAAA;QAEd;YACE,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAiB,EACjB,GAAgB,EAChB,SAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC9C,MAAe;IAEf,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3D,qEAAqE;IACrE,wEAAwE;IACxE,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QAC5F,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,SAAS,CAAA;QACtC,MAAM,KAAK,GAAG,OAAO,IAAI,6BAA6B,IAAI,OAAO,IAAI,CAAC,mBAAmB,CAAA;QACzF,6DAA6D;QAC7D,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAA;QACvF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAA;IACzD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,KAAK,EAAE,CAAA;AACrD,CAAC"}
package/dist/token.d.ts CHANGED
@@ -1,51 +1,6 @@
1
- import { type TokenEncoding } from './encoding.js';
2
- /**
3
- * Maximum allowed tolerance/maxTolerance value.
4
- * Prevents pathological iteration: at MAX_TOLERANCE=10, the collision
5
- * avoidance window is ±20 counters (41 iterations) — well within reason.
6
- */
7
- export declare const MAX_TOLERANCE = 10;
8
- /**
9
- * CANARY-DERIVE: Derive raw token bytes from a shared secret, context, and counter.
10
- *
11
- * When `identity` is omitted, derives a group-wide token:
12
- * HMAC-SHA256(secret, utf8(context) || counter_be32)
13
- *
14
- * When `identity` is provided, derives a per-member token:
15
- * HMAC-SHA256(secret, utf8(context) || 0x00 || utf8(identity) || counter_be32)
16
- *
17
- * The null-byte separator prevents concatenation ambiguity between context and identity.
18
- *
19
- * @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
20
- * @param context - Context string for domain separation (e.g. `'canary:group'`).
21
- * @param counter - Time-based or usage counter (uint32).
22
- * @param identity - Optional member pubkey for per-member tokens.
23
- * @returns Raw 32-byte HMAC-SHA256 digest.
24
- * @throws {RangeError} If secret is too short or counter is out of range.
25
- * @throws {Error} If identity is provided but empty.
26
- */
27
- export declare function deriveTokenBytes(secret: Uint8Array | string, context: string, counter: number, identity?: string): Uint8Array;
28
- /**
29
- * CANARY-DERIVE: Derive an encoded token string.
30
- *
31
- * When `identity` is provided, produces a per-member token unique to that member.
32
- * When omitted, produces the group-wide token (backwards-compatible).
33
- *
34
- * @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
35
- * @param context - Context string for domain separation (e.g. `'canary:group'`).
36
- * @param counter - Time-based or usage counter (uint32).
37
- * @param encoding - Output encoding format (default: single word from en-v1 wordlist).
38
- * @param identity - Optional member pubkey for per-member tokens.
39
- * @returns Encoded token string (word, PIN, or hex depending on encoding).
40
- * @throws {RangeError} If secret is too short or counter is out of range.
41
- *
42
- * @example
43
- * ```ts
44
- * deriveToken(seedHex, 'canary:group', 42) // "falcon"
45
- * deriveToken(seedHex, 'canary:group', 42, { format: 'pin', digits: 6 }) // "083721"
46
- * ```
47
- */
48
- export declare function deriveToken(secret: Uint8Array | string, context: string, counter: number, encoding?: TokenEncoding, identity?: string): string;
1
+ export { deriveTokenBytes, deriveToken, deriveDirectionalPair, type DirectionalPair } from 'spoken-token';
2
+ export { MAX_TOLERANCE } from 'spoken-token';
3
+ import { type TokenEncoding } from 'spoken-token';
49
4
  /**
50
5
  * CANARY-DURESS: Derive raw duress token bytes for a specific identity.
51
6
  *
@@ -71,8 +26,7 @@ export declare function deriveDuressTokenBytes(secret: Uint8Array | string, cont
71
26
  * If the duress token collides with any normal verification token within
72
27
  * ±(2 × maxTolerance) counter values (at the encoding level), re-derives with
73
28
  * incrementing suffix bytes (0x01, 0x02, ..., 0xFF) until distinct.
74
- * The 2× factor accounts for worst-case counter drift: the deriver and verifier
75
- * may each be off by maxTolerance in opposite directions.
29
+ * The 2× factor accounts for worst-case counter drift between deriver and verifier.
76
30
  * If all 255 suffixes collide (astronomically unlikely), throws an error
77
31
  * rather than failing open.
78
32
  *
@@ -162,25 +116,4 @@ export declare function verifyToken(secret: Uint8Array | string, context: string
162
116
  * @throws {RangeError} If secret is too short or counter is out of range.
163
117
  */
164
118
  export declare function deriveLivenessToken(secret: Uint8Array | string, context: string, identity: string, counter: number): Uint8Array;
165
- /** A pair of directional tokens keyed by role name. */
166
- export interface DirectionalPair {
167
- [role: string]: string;
168
- }
169
- /**
170
- * Derive a directional pair: two distinct tokens from the same secret,
171
- * one per role. Each token uses context = `${namespace}\0${role}`.
172
- *
173
- * Neither token can be derived from the other without the shared secret.
174
- * This prevents the "echo problem" where the second speaker could parrot
175
- * the first.
176
- *
177
- * @param secret - Shared secret (hex string or Uint8Array).
178
- * @param namespace - Namespace prefix (e.g. `'aviva'`, `'dispatch'`).
179
- * @param roles - Exactly two role names (e.g. `['caller', 'agent']`).
180
- * @param counter - Current counter value.
181
- * @param encoding - Output encoding format (default: single word).
182
- * @returns Object keyed by role name, each value is the role's token string.
183
- * @throws {Error} If roles does not contain exactly 2 entries, or roles are identical.
184
- */
185
- export declare function deriveDirectionalPair(secret: Uint8Array | string, namespace: string, roles: [string, string], counter: number, encoding?: TokenEncoding): DirectionalPair;
186
119
  //# sourceMappingURL=token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,aAAa,EAAoB,MAAM,eAAe,CAAA;AAEjF;;;;GAIG;AACH,eAAO,MAAM,aAAa,KAAK,CAAA;AAmC/B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,CASZ;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,aAAgC,EAC1C,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAGR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,UAAU,CAIZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,YAAmB,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM,CA2CR;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,+FAA+F;IAC/F,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IACtC,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,iBAAiB,CAqEnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,UAAU,CAIZ;AAED,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,aAAgC,GACzC,eAAe,CAsBjB"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAA;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAA;AAmCrB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,UAAU,CAIZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,YAAmB,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM,CA6CR;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,+FAA+F;IAC/F,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IACtC,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,iBAAiB,CAsEnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,MAAM,EAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,UAAU,CAIZ"}
package/dist/token.js CHANGED
@@ -1,11 +1,7 @@
1
- import { hmacSha256, hexToBytes, concatBytes, timingSafeStringEqual } from './crypto.js';
2
- import { encodeToken, DEFAULT_ENCODING } from './encoding.js';
3
- /**
4
- * Maximum allowed tolerance/maxTolerance value.
5
- * Prevents pathological iteration: at MAX_TOLERANCE=10, the collision
6
- * avoidance window is ±20 counters (41 iterations) — well within reason.
7
- */
8
- export const MAX_TOLERANCE = 10;
1
+ // Re-export generic functions from spoken-token
2
+ export { deriveTokenBytes, deriveToken, deriveDirectionalPair } from 'spoken-token';
3
+ export { MAX_TOLERANCE } from 'spoken-token';
4
+ import { hmacSha256, hexToBytes, concatBytes, timingSafeStringEqual, deriveToken as _deriveToken, encodeToken, DEFAULT_ENCODING, } from 'spoken-token';
9
5
  const encoder = new TextEncoder();
10
6
  function utf8(str) {
11
7
  return encoder.encode(str);
@@ -33,59 +29,6 @@ function normaliseSecret(secret) {
33
29
  }
34
30
  return key;
35
31
  }
36
- /**
37
- * CANARY-DERIVE: Derive raw token bytes from a shared secret, context, and counter.
38
- *
39
- * When `identity` is omitted, derives a group-wide token:
40
- * HMAC-SHA256(secret, utf8(context) || counter_be32)
41
- *
42
- * When `identity` is provided, derives a per-member token:
43
- * HMAC-SHA256(secret, utf8(context) || 0x00 || utf8(identity) || counter_be32)
44
- *
45
- * The null-byte separator prevents concatenation ambiguity between context and identity.
46
- *
47
- * @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
48
- * @param context - Context string for domain separation (e.g. `'canary:group'`).
49
- * @param counter - Time-based or usage counter (uint32).
50
- * @param identity - Optional member pubkey for per-member tokens.
51
- * @returns Raw 32-byte HMAC-SHA256 digest.
52
- * @throws {RangeError} If secret is too short or counter is out of range.
53
- * @throws {Error} If identity is provided but empty.
54
- */
55
- export function deriveTokenBytes(secret, context, counter, identity) {
56
- if (identity !== undefined && identity === '') {
57
- throw new Error('identity must be non-empty when provided');
58
- }
59
- const key = normaliseSecret(secret);
60
- const data = identity
61
- ? concatBytes(utf8(context), new Uint8Array([0x00]), utf8(identity), counterBe32(counter))
62
- : concatBytes(utf8(context), counterBe32(counter));
63
- return hmacSha256(key, data);
64
- }
65
- /**
66
- * CANARY-DERIVE: Derive an encoded token string.
67
- *
68
- * When `identity` is provided, produces a per-member token unique to that member.
69
- * When omitted, produces the group-wide token (backwards-compatible).
70
- *
71
- * @param secret - Shared secret (hex string or Uint8Array, minimum 16 bytes).
72
- * @param context - Context string for domain separation (e.g. `'canary:group'`).
73
- * @param counter - Time-based or usage counter (uint32).
74
- * @param encoding - Output encoding format (default: single word from en-v1 wordlist).
75
- * @param identity - Optional member pubkey for per-member tokens.
76
- * @returns Encoded token string (word, PIN, or hex depending on encoding).
77
- * @throws {RangeError} If secret is too short or counter is out of range.
78
- *
79
- * @example
80
- * ```ts
81
- * deriveToken(seedHex, 'canary:group', 42) // "falcon"
82
- * deriveToken(seedHex, 'canary:group', 42, { format: 'pin', digits: 6 }) // "083721"
83
- * ```
84
- */
85
- export function deriveToken(secret, context, counter, encoding = DEFAULT_ENCODING, identity) {
86
- const bytes = deriveTokenBytes(secret, context, counter, identity);
87
- return encodeToken(bytes, encoding);
88
- }
89
32
  /**
90
33
  * CANARY-DURESS: Derive raw duress token bytes for a specific identity.
91
34
  *
@@ -115,8 +58,7 @@ export function deriveDuressTokenBytes(secret, context, identity, counter) {
115
58
  * If the duress token collides with any normal verification token within
116
59
  * ±(2 × maxTolerance) counter values (at the encoding level), re-derives with
117
60
  * incrementing suffix bytes (0x01, 0x02, ..., 0xFF) until distinct.
118
- * The 2× factor accounts for worst-case counter drift: the deriver and verifier
119
- * may each be off by maxTolerance in opposite directions.
61
+ * The 2× factor accounts for worst-case counter drift between deriver and verifier.
120
62
  * If all 255 suffixes collide (astronomically unlikely), throws an error
121
63
  * rather than failing open.
122
64
  *
@@ -141,11 +83,13 @@ export function deriveDuressTokenBytes(secret, context, identity, counter) {
141
83
  * @throws {Error} If collision avoidance fails after 255 retries.
142
84
  */
143
85
  export function deriveDuressToken(secret, context, identity, counter, encoding = DEFAULT_ENCODING, maxTolerance, identities) {
86
+ // Import MAX_TOLERANCE value directly to avoid circular reference with the re-export
87
+ const MAX_TOLERANCE_VAL = 10;
144
88
  if (!Number.isInteger(maxTolerance) || maxTolerance < 0) {
145
89
  throw new RangeError('maxTolerance must be a non-negative integer');
146
90
  }
147
- if (maxTolerance > MAX_TOLERANCE) {
148
- throw new RangeError(`maxTolerance must be <= ${MAX_TOLERANCE}, got ${maxTolerance}`);
91
+ if (maxTolerance > MAX_TOLERANCE_VAL) {
92
+ throw new RangeError(`maxTolerance must be <= ${MAX_TOLERANCE_VAL}, got ${maxTolerance}`);
149
93
  }
150
94
  // Collect normal tokens within ±(2 × maxTolerance) for cross-counter collision avoidance.
151
95
  // The 2× window accounts for worst-case counter drift between deriver and verifier.
@@ -155,11 +99,11 @@ export function deriveDuressToken(secret, context, identity, counter, encoding =
155
99
  const hi = Math.min(0xFFFFFFFF, counter + window);
156
100
  for (let c = lo; c <= hi; c++) {
157
101
  // Group-wide (anonymous) token
158
- forbidden.add(deriveToken(secret, context, c, encoding));
102
+ forbidden.add(_deriveToken(secret, context, c, encoding));
159
103
  // Per-member tokens for all known identities
160
104
  if (identities) {
161
105
  for (const id of identities) {
162
- forbidden.add(deriveToken(secret, context, c, encoding, id));
106
+ forbidden.add(_deriveToken(secret, context, c, encoding, id));
163
107
  }
164
108
  }
165
109
  }
@@ -211,13 +155,14 @@ export function deriveDuressToken(secret, context, identity, counter, encoding =
211
155
  * ```
212
156
  */
213
157
  export function verifyToken(secret, context, counter, input, identities, options) {
158
+ const MAX_TOLERANCE_VAL = 10;
214
159
  const encoding = options?.encoding ?? DEFAULT_ENCODING;
215
160
  const tolerance = options?.tolerance ?? 0;
216
161
  if (!Number.isInteger(tolerance) || tolerance < 0) {
217
162
  throw new RangeError('Tolerance must be a non-negative integer');
218
163
  }
219
- if (tolerance > MAX_TOLERANCE) {
220
- throw new RangeError(`Tolerance must be <= ${MAX_TOLERANCE}, got ${tolerance}`);
164
+ if (tolerance > MAX_TOLERANCE_VAL) {
165
+ throw new RangeError(`Tolerance must be <= ${MAX_TOLERANCE_VAL}, got ${tolerance}`);
221
166
  }
222
167
  if (identities.length > MAX_MEMBERS) {
223
168
  throw new RangeError(`identities array must not exceed ${MAX_MEMBERS} entries, got ${identities.length}`);
@@ -232,7 +177,7 @@ export function verifyToken(secret, context, counter, input, identities, options
232
177
  // 1. Check per-member tokens at exact counter (each member has a unique word)
233
178
  let exactMember = null;
234
179
  for (const identity of identities) {
235
- if (timingSafeStringEqual(normalised, deriveToken(secret, context, counter, encoding, identity))) {
180
+ if (timingSafeStringEqual(normalised, _deriveToken(secret, context, counter, encoding, identity))) {
236
181
  exactMember = identity;
237
182
  }
238
183
  }
@@ -254,7 +199,7 @@ export function verifyToken(secret, context, counter, input, identities, options
254
199
  for (let c = lo; c <= hi; c++) {
255
200
  if (c === counter)
256
201
  continue; // already checked in step 1
257
- if (timingSafeStringEqual(normalised, deriveToken(secret, context, c, encoding, identity))) {
202
+ if (timingSafeStringEqual(normalised, _deriveToken(secret, context, c, encoding, identity))) {
258
203
  toleranceMember = identity;
259
204
  }
260
205
  }
@@ -262,7 +207,7 @@ export function verifyToken(secret, context, counter, input, identities, options
262
207
  // 4. Also check group-wide token (backwards compat for anonymous verification)
263
208
  let groupMatch = false;
264
209
  for (let c = lo; c <= hi; c++) {
265
- if (timingSafeStringEqual(normalised, deriveToken(secret, context, c, encoding))) {
210
+ if (timingSafeStringEqual(normalised, _deriveToken(secret, context, c, encoding))) {
266
211
  groupMatch = true;
267
212
  }
268
213
  }
@@ -302,43 +247,4 @@ export function deriveLivenessToken(secret, context, identity, counter) {
302
247
  const data = concatBytes(utf8(context + ':alive'), new Uint8Array([0x00]), utf8(identity), counterBe32(counter));
303
248
  return hmacSha256(key, data);
304
249
  }
305
- /**
306
- * Derive a directional pair: two distinct tokens from the same secret,
307
- * one per role. Each token uses context = `${namespace}\0${role}`.
308
- *
309
- * Neither token can be derived from the other without the shared secret.
310
- * This prevents the "echo problem" where the second speaker could parrot
311
- * the first.
312
- *
313
- * @param secret - Shared secret (hex string or Uint8Array).
314
- * @param namespace - Namespace prefix (e.g. `'aviva'`, `'dispatch'`).
315
- * @param roles - Exactly two role names (e.g. `['caller', 'agent']`).
316
- * @param counter - Current counter value.
317
- * @param encoding - Output encoding format (default: single word).
318
- * @returns Object keyed by role name, each value is the role's token string.
319
- * @throws {Error} If roles does not contain exactly 2 entries, or roles are identical.
320
- */
321
- export function deriveDirectionalPair(secret, namespace, roles, counter, encoding = DEFAULT_ENCODING) {
322
- if (!namespace) {
323
- throw new Error('namespace must be a non-empty string');
324
- }
325
- if (namespace.includes('\0')) {
326
- throw new Error('namespace must not contain null bytes');
327
- }
328
- if (!roles[0] || !roles[1]) {
329
- throw new Error('Both roles must be non-empty strings');
330
- }
331
- if (roles[0].includes('\0') || roles[1].includes('\0')) {
332
- throw new Error('Roles must not contain null bytes');
333
- }
334
- if (roles[0] === roles[1]) {
335
- throw new Error(`Roles must be distinct, got ["${roles[0]}", "${roles[1]}"]`);
336
- }
337
- // Use null-byte separator to prevent concatenation ambiguity
338
- // (e.g. namespace "a:b" + role "c" vs namespace "a" + role "b:c")
339
- return {
340
- [roles[0]]: deriveToken(secret, `${namespace}\0${roles[0]}`, counter, encoding),
341
- [roles[1]]: deriveToken(secret, `${namespace}\0${roles[1]}`, counter, encoding),
342
- };
343
- }
344
250
  //# sourceMappingURL=token.js.map