umt 2.14.0 → 2.15.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/module/Array/arraysJoin.js +9 -1
- package/module/Array/arraysJoin.js.map +1 -1
- package/module/Array/sum.js +35 -2
- package/module/Array/sum.js.map +1 -1
- package/module/Array/zip.js +21 -5
- package/module/Array/zip.js.map +1 -1
- package/module/Array/zipLongest.js +23 -4
- package/module/Array/zipLongest.js.map +1 -1
- package/module/Crypto/decodeBase32.js.map +1 -1
- package/module/Crypto/decodeBase58.js +1 -2
- package/module/Crypto/decodeBase58.js.map +1 -1
- package/module/Crypto/encodeBase32.js +11 -6
- package/module/Crypto/encodeBase32.js.map +1 -1
- package/module/DataStructure/priorityQueue.js +8 -1
- package/module/DataStructure/priorityQueue.js.map +1 -1
- package/module/IP/ipToBinaryString.js +3 -1
- package/module/IP/ipToBinaryString.js.map +1 -1
- package/module/IP/longToIp.d.ts +1 -1
- package/module/IP/longToIp.js +2 -7
- package/module/IP/longToIp.js.map +1 -1
- package/module/Math/addition.js +4 -11
- package/module/Math/addition.js.map +1 -1
- package/module/Math/multiplication.js +14 -6
- package/module/Math/multiplication.js.map +1 -1
- package/module/Math/nCr.js +6 -2
- package/module/Math/nCr.js.map +1 -1
- package/module/Math/standardDeviation.js +12 -7
- package/module/Math/standardDeviation.js.map +1 -1
- package/module/Math/subtract.js +5 -9
- package/module/Math/subtract.js.map +1 -1
- package/module/Object/deepClone.d.ts +10 -0
- package/module/Object/deepClone.js +16 -9
- package/module/Object/deepClone.js.map +1 -1
- package/module/Object/getObjectsCommon.d.ts +10 -0
- package/module/Object/getObjectsCommon.js +10 -0
- package/module/Object/getObjectsCommon.js.map +1 -1
- package/module/Object/getObjectsDiff.d.ts +10 -0
- package/module/Object/getObjectsDiff.js +17 -6
- package/module/Object/getObjectsDiff.js.map +1 -1
- package/module/Object/has.d.ts +10 -0
- package/module/Object/has.js +10 -0
- package/module/Object/has.js.map +1 -1
- package/module/Object/index.d.ts +4 -0
- package/module/Object/index.js +4 -0
- package/module/Object/index.js.map +1 -1
- package/module/Object/keyBy.d.ts +10 -0
- package/module/Object/keyBy.js +10 -0
- package/module/Object/keyBy.js.map +1 -1
- package/module/Object/mapKeys.d.ts +10 -0
- package/module/Object/mapKeys.js +12 -1
- package/module/Object/mapKeys.js.map +1 -1
- package/module/Object/mapValues.d.ts +10 -0
- package/module/Object/mapValues.js +10 -0
- package/module/Object/mapValues.js.map +1 -1
- package/module/Object/merge.d.ts +10 -0
- package/module/Object/merge.js +17 -1
- package/module/Object/merge.js.map +1 -1
- package/module/Object/mergeDeep.d.ts +10 -0
- package/module/Object/mergeDeep.js +29 -15
- package/module/Object/mergeDeep.js.map +1 -1
- package/module/Object/pickDeep.d.ts +10 -0
- package/module/Object/pickDeep.js +10 -5
- package/module/Object/pickDeep.js.map +1 -1
- package/module/Object/removePrototype.d.ts +15 -0
- package/module/Object/removePrototype.js +25 -0
- package/module/Object/removePrototype.js.map +1 -0
- package/module/Object/removePrototypeDeep.d.ts +11 -0
- package/module/Object/removePrototypeDeep.js +60 -0
- package/module/Object/removePrototypeDeep.js.map +1 -0
- package/module/Object/removePrototypeMap.d.ts +9 -0
- package/module/Object/removePrototypeMap.js +13 -0
- package/module/Object/removePrototypeMap.js.map +1 -0
- package/module/Object/removePrototypeMapDeep.d.ts +9 -0
- package/module/Object/removePrototypeMapDeep.js +13 -0
- package/module/Object/removePrototypeMapDeep.js.map +1 -0
- package/module/String/escapeHtml.js +11 -2
- package/module/String/escapeHtml.js.map +1 -1
- package/module/String/formatString/applyFormatter.js +5 -5
- package/module/String/formatString/applyFormatter.js.map +1 -1
- package/module/String/formatString/getValue.js +3 -1
- package/module/String/formatString/getValue.js.map +1 -1
- package/module/String/levenshteinDistance.js +41 -24
- package/module/String/levenshteinDistance.js.map +1 -1
- package/module/String/slugify.js +7 -5
- package/module/String/slugify.js.map +1 -1
- package/module/String/trimEndCharacters.js +3 -1
- package/module/String/trimEndCharacters.js.map +1 -1
- package/module/String/trimStartCharacters.js +3 -1
- package/module/String/trimStartCharacters.js.map +1 -1
- package/module/String/unescapeHtml.d.ts +1 -1
- package/module/String/unescapeHtml.js +48 -4
- package/module/String/unescapeHtml.js.map +1 -1
- package/module/Tool/parseJson.js +13 -1
- package/module/Tool/parseJson.js.map +1 -1
- package/module/URL/buildUrl.js +4 -0
- package/module/URL/buildUrl.js.map +1 -1
- package/module/URL/parseQueryString.js +4 -0
- package/module/URL/parseQueryString.js.map +1 -1
- package/module/Validate/isDeepEqual.js +7 -5
- package/module/Validate/isDeepEqual.js.map +1 -1
- package/module/Validate/isPrimeNumber.js +12 -2
- package/module/Validate/isPrimeNumber.js.map +1 -1
- package/module/Validate/object/index.d.ts +2 -0
- package/module/Validate/object/index.js +2 -0
- package/module/Validate/object/index.js.map +1 -1
- package/module/Validate/object/intersection.d.ts +10 -0
- package/module/Validate/object/intersection.js +25 -0
- package/module/Validate/object/intersection.js.map +1 -0
- package/module/Validate/object/optional.d.ts +6 -0
- package/module/Validate/object/optional.js +6 -0
- package/module/Validate/object/optional.js.map +1 -1
- package/module/Validate/object/union.d.ts +9 -0
- package/module/Validate/object/union.js +27 -0
- package/module/Validate/object/union.js.map +1 -0
- package/module/Validate/parseEmail.js +6 -0
- package/module/Validate/parseEmail.js.map +1 -1
- package/module/Validate/string/uuid.d.ts +1 -5
- package/module/Validate/string/uuid.js +19 -2
- package/module/Validate/string/uuid.js.map +1 -1
- package/module/es5/Array/arraysJoin.js +20 -2
- package/module/es5/Array/sum.js +38 -4
- package/module/es5/Array/zip.js +23 -17
- package/module/es5/Array/zipLongest.js +27 -14
- package/module/es5/Crypto/decodeBase58.js +1 -2
- package/module/es5/Crypto/encodeBase32.js +12 -6
- package/module/es5/DataStructure/priorityQueue.js +8 -3
- package/module/es5/IP/ipToBinaryString.js +2 -2
- package/module/es5/IP/longToIp.d.ts +1 -1
- package/module/es5/IP/longToIp.js +2 -13
- package/module/es5/Math/addition.js +4 -13
- package/module/es5/Math/multiplication.js +37 -6
- package/module/es5/Math/nCr.js +7 -2
- package/module/es5/Math/standardDeviation.js +25 -10
- package/module/es5/Math/subtract.js +12 -9
- package/module/es5/Object/deepClone.d.ts +10 -0
- package/module/es5/Object/deepClone.js +16 -9
- package/module/es5/Object/getObjectsCommon.d.ts +10 -0
- package/module/es5/Object/getObjectsCommon.js +10 -0
- package/module/es5/Object/getObjectsDiff.d.ts +10 -0
- package/module/es5/Object/getObjectsDiff.js +32 -17
- package/module/es5/Object/has.d.ts +10 -0
- package/module/es5/Object/has.js +10 -0
- package/module/es5/Object/index.d.ts +4 -0
- package/module/es5/Object/index.js +44 -0
- package/module/es5/Object/keyBy.d.ts +10 -0
- package/module/es5/Object/keyBy.js +10 -0
- package/module/es5/Object/mapKeys.d.ts +10 -0
- package/module/es5/Object/mapKeys.js +12 -1
- package/module/es5/Object/mapValues.d.ts +10 -0
- package/module/es5/Object/mapValues.js +10 -0
- package/module/es5/Object/merge.d.ts +10 -0
- package/module/es5/Object/merge.js +19 -1
- package/module/es5/Object/mergeDeep.d.ts +10 -0
- package/module/es5/Object/mergeDeep.js +34 -18
- package/module/es5/Object/pickDeep.d.ts +10 -0
- package/module/es5/Object/pickDeep.js +10 -3
- package/module/es5/Object/removePrototype.d.ts +15 -0
- package/module/es5/Object/removePrototype.js +31 -0
- package/module/es5/Object/removePrototypeDeep.d.ts +11 -0
- package/module/es5/Object/removePrototypeDeep.js +81 -0
- package/module/es5/Object/removePrototypeMap.d.ts +9 -0
- package/module/es5/Object/removePrototypeMap.js +20 -0
- package/module/es5/Object/removePrototypeMapDeep.d.ts +9 -0
- package/module/es5/Object/removePrototypeMapDeep.js +20 -0
- package/module/es5/String/escapeHtml.js +12 -3
- package/module/es5/String/formatString/applyFormatter.js +5 -5
- package/module/es5/String/formatString/getValue.js +4 -1
- package/module/es5/String/levenshteinDistance.js +43 -28
- package/module/es5/String/slugify.js +8 -1
- package/module/es5/String/trimEndCharacters.js +3 -1
- package/module/es5/String/trimStartCharacters.js +3 -1
- package/module/es5/String/unescapeHtml.d.ts +1 -1
- package/module/es5/String/unescapeHtml.js +46 -4
- package/module/es5/Tool/parseJson.js +14 -1
- package/module/es5/URL/buildUrl.js +4 -0
- package/module/es5/URL/parseQueryString.js +4 -0
- package/module/es5/Validate/isDeepEqual.js +48 -39
- package/module/es5/Validate/isPrimeNumber.js +14 -2
- package/module/es5/Validate/object/index.d.ts +2 -0
- package/module/es5/Validate/object/index.js +22 -0
- package/module/es5/Validate/object/intersection.d.ts +10 -0
- package/module/es5/Validate/object/intersection.js +34 -0
- package/module/es5/Validate/object/optional.d.ts +6 -0
- package/module/es5/Validate/object/optional.js +6 -0
- package/module/es5/Validate/object/union.d.ts +9 -0
- package/module/es5/Validate/object/union.js +36 -0
- package/module/es5/Validate/parseEmail.js +8 -0
- package/module/es5/Validate/string/uuid.d.ts +1 -5
- package/module/es5/Validate/string/uuid.js +24 -2
- package/package.json +17 -17
- package/module/es5/tsconfig.tsbuildinfo +0 -1
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
* @example arraysJoin([1, 2, 3], [2, 3, 4]); // [1, 2, 3, 4]
|
|
7
7
|
*/
|
|
8
8
|
export const arraysJoin = (array, ...arrays) => {
|
|
9
|
-
|
|
9
|
+
// Build Set directly to avoid the intermediate spread-concat array.
|
|
10
|
+
// Previous: [...new Set([...array, ...arrays.flat()])] allocated a temporary
|
|
11
|
+
// combined array before constructing the Set.
|
|
12
|
+
// This approach feeds flat() results directly into the Set, skipping that copy.
|
|
13
|
+
const set = new Set(array);
|
|
14
|
+
for (const element of arrays.flat()) {
|
|
15
|
+
set.add(element);
|
|
16
|
+
}
|
|
17
|
+
return [...set];
|
|
10
18
|
};
|
|
11
19
|
//# sourceMappingURL=arraysJoin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arraysJoin.js","sourceRoot":"","sources":["../../src/Array/arraysJoin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAgB,EAChB,GAAG,MAAiB,EACpB,EAAE;IACF,
|
|
1
|
+
{"version":3,"file":"arraysJoin.js","sourceRoot":"","sources":["../../src/Array/arraysJoin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAgB,EAChB,GAAG,MAAiB,EACpB,EAAE;IACF,oEAAoE;IACpE,6EAA6E;IAC7E,8CAA8C;IAC9C,gFAAgF;IAChF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAM,CAAC;AACvB,CAAC,CAAC"}
|
package/module/Array/sum.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getDecimalLength } from "../Math/getDecimalLength";
|
|
2
2
|
/**
|
|
3
3
|
* Returns the sum of an array of numbers
|
|
4
4
|
* @param {number[]} x Array of numbers
|
|
@@ -6,6 +6,39 @@ import { addition } from "../Math/addition";
|
|
|
6
6
|
* @example sum([1, 2, 3]); // 6
|
|
7
7
|
*/
|
|
8
8
|
export const sum = (x) => {
|
|
9
|
-
|
|
9
|
+
const length = x.length;
|
|
10
|
+
if (length === 0) {
|
|
11
|
+
return 0;
|
|
12
|
+
}
|
|
13
|
+
// Performance: determine decimal precision once for the entire array,
|
|
14
|
+
// rather than calling addition() per element which redundantly checks
|
|
15
|
+
// Number.isInteger() and getDecimalLength() on every accumulator step.
|
|
16
|
+
// This reduces overhead from O(n) getDecimalLength calls on the
|
|
17
|
+
// accumulator to a single pass over the input values.
|
|
18
|
+
let maxDecimal = 0;
|
|
19
|
+
for (let index = 0; index < length; index++) {
|
|
20
|
+
if (!Number.isInteger(x[index])) {
|
|
21
|
+
const decLength = getDecimalLength(x[index]);
|
|
22
|
+
if (decLength > maxDecimal) {
|
|
23
|
+
maxDecimal = decLength;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Fast path: all integers, just sum directly
|
|
28
|
+
if (maxDecimal === 0) {
|
|
29
|
+
let result = 0;
|
|
30
|
+
for (let index = 0; index < length; index++) {
|
|
31
|
+
result += x[index];
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
// Decimal path: scale to integers, sum, then scale back.
|
|
36
|
+
// Single multiplication factor computed once instead of per-element.
|
|
37
|
+
const scale = 10 ** maxDecimal;
|
|
38
|
+
let scaled = 0;
|
|
39
|
+
for (let index = 0; index < length; index++) {
|
|
40
|
+
scaled += Math.round(x[index] * scale);
|
|
41
|
+
}
|
|
42
|
+
return scaled / scale;
|
|
10
43
|
};
|
|
11
44
|
//# sourceMappingURL=sum.js.map
|
package/module/Array/sum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sum.js","sourceRoot":"","sources":["../../src/Array/sum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sum.js","sourceRoot":"","sources":["../../src/Array/sum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAW,EAAU,EAAE;IACzC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IAExB,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,sEAAsE;IACtE,sEAAsE;IACtE,uEAAuE;IACvE,gEAAgE;IAChE,sDAAsD;IACtD,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;gBAC3B,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yDAAyD;IACzD,qEAAqE;IACrE,MAAM,KAAK,GAAG,EAAE,IAAI,UAAU,CAAC;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,GAAG,KAAK,CAAC;AACxB,CAAC,CAAC"}
|
package/module/Array/zip.js
CHANGED
|
@@ -7,12 +7,28 @@
|
|
|
7
7
|
* zip([1, 2, 3], ['a', 'b']); // [[1, 'a'], [2, 'b']]
|
|
8
8
|
*/
|
|
9
9
|
export const zip = (...arrays) => {
|
|
10
|
-
|
|
10
|
+
const arraysLength = arrays.length;
|
|
11
|
+
if (arraysLength === 0) {
|
|
11
12
|
return [];
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
// Optimize: Avoid Math.min(...arrays.map(...)) to prevent Call Stack Size Exceeded errors
|
|
15
|
+
// for a large number of arrays, and avoid intermediate array allocations.
|
|
16
|
+
let minLength = arrays[0].length;
|
|
17
|
+
for (let index = 1; index < arraysLength; index += 1) {
|
|
18
|
+
if (arrays[index].length < minLength) {
|
|
19
|
+
minLength = arrays[index].length;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Optimize: Pre-allocate outer array dynamically using loops rather than Array.from
|
|
23
|
+
// to reduce closure creation overhead and eliminate intermediate mapped arrays.
|
|
24
|
+
const result = [];
|
|
25
|
+
for (let index = 0; index < minLength; index += 1) {
|
|
26
|
+
const tuple = [];
|
|
27
|
+
for (let arrayIndex = 0; arrayIndex < arraysLength; arrayIndex += 1) {
|
|
28
|
+
tuple.push(arrays[arrayIndex][index]);
|
|
29
|
+
}
|
|
30
|
+
result.push(tuple);
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
17
33
|
};
|
|
18
34
|
//# sourceMappingURL=zip.js.map
|
package/module/Array/zip.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/Array/zip.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAwB,GAAG,MAAS,EAAmB,EAAE;IAC1E,
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/Array/zip.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAwB,GAAG,MAAS,EAAmB,EAAE;IAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAgC,CAAC;IAC1C,CAAC;IAED,0FAA0F;IAC1F,0EAA0E;IAC1E,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACrC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,gFAAgF;IAChF,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,YAAY,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,MAAoC,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -10,9 +10,28 @@
|
|
|
10
10
|
* zipLongest([1], ['a', 'b']); // [[1, 'a'], [undefined, 'b']]
|
|
11
11
|
*/
|
|
12
12
|
export const zipLongest = (...arrays) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
return
|
|
16
|
-
}
|
|
13
|
+
const arraysLength = arrays.length;
|
|
14
|
+
if (arraysLength === 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
// Optimize: Avoid Math.max(...arrays.map(...)) to prevent Call Stack Size Exceeded errors
|
|
18
|
+
// for a large number of arrays, and avoid intermediate array allocations.
|
|
19
|
+
let maxLength = arrays[0].length;
|
|
20
|
+
for (let index = 1; index < arraysLength; index += 1) {
|
|
21
|
+
if (arrays[index].length > maxLength) {
|
|
22
|
+
maxLength = arrays[index].length;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// Optimize: Pre-allocate arrays with known lengths and use direct index assignment
|
|
26
|
+
// instead of .push() to avoid repeated capacity checks and potential reallocations.
|
|
27
|
+
const result = Array.from({ length: maxLength });
|
|
28
|
+
for (let index = 0; index < maxLength; index += 1) {
|
|
29
|
+
const tuple = Array.from({ length: arraysLength });
|
|
30
|
+
for (let arrayIndex = 0; arrayIndex < arraysLength; arrayIndex += 1) {
|
|
31
|
+
tuple[arrayIndex] = arrays[arrayIndex][index];
|
|
32
|
+
}
|
|
33
|
+
result[index] = tuple;
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
17
36
|
};
|
|
18
37
|
//# sourceMappingURL=zipLongest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zipLongest.js","sourceRoot":"","sources":["../../src/Array/zipLongest.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,GAAG,MAAS,EACK,EAAE;IACnB,MAAM,
|
|
1
|
+
{"version":3,"file":"zipLongest.js","sourceRoot":"","sources":["../../src/Array/zipLongest.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,GAAG,MAAS,EACK,EAAE;IACnB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAgC,CAAC;IAC1C,CAAC;IAED,0FAA0F;IAC1F,0EAA0E;IAC1E,IAAI,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACrC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACnC,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,oFAAoF;IACpF,MAAM,MAAM,GAAgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAc,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC9D,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,YAAY,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,OAAO,MAAoC,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decodeBase32.js","sourceRoot":"","sources":["../../src/Crypto/decodeBase32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACnD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAc,EAAE;IACxD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"decodeBase32.js","sourceRoot":"","sources":["../../src/Crypto/decodeBase32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACnD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAc,EAAE;IACxD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAC/B,YAAY,IAAI,CAAC,CAAC;QAElB,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,YAAY,IAAI,CAAC,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC"}
|
|
@@ -10,8 +10,7 @@ const base58CharToIndex = new Map([...BASE58_ALPHABET].map((c, index) => [c, ind
|
|
|
10
10
|
export const decodeBase58 = (input) => {
|
|
11
11
|
let bigNumber = 0n;
|
|
12
12
|
for (const char of input) {
|
|
13
|
-
|
|
14
|
-
bigNumber = bigNumber * 58n + BigInt(value);
|
|
13
|
+
bigNumber = bigNumber * 58n + BigInt(base58CharToIndex.get(char) ?? 0);
|
|
15
14
|
}
|
|
16
15
|
// Use push + reverse instead of unshift to avoid O(n²) array shifting
|
|
17
16
|
const bytes = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decodeBase58.js","sourceRoot":"","sources":["../../src/Crypto/decodeBase58.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACnD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAc,EAAE;IACxD,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,
|
|
1
|
+
{"version":3,"file":"decodeBase58.js","sourceRoot":"","sources":["../../src/Crypto/decodeBase58.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CACnD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAc,EAAE;IACxD,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,SAAS,GAAG,SAAS,GAAG,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,sEAAsE;IACtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,OAAO,SAAS,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;QACrC,SAAS,IAAI,IAAI,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM;QACR,CAAC;QACD,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,UAAU,CAAC;QACpB,GAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAc;QAC5D,GAAG,KAAK;KACT,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -8,7 +8,10 @@ import { BASE32_ALPHABET } from "./constants";
|
|
|
8
8
|
export const encodeBase32 = (input) => {
|
|
9
9
|
const alphabet = BASE32_ALPHABET;
|
|
10
10
|
const bytes = typeof input === "string" ? new TextEncoder().encode(input) : input;
|
|
11
|
-
|
|
11
|
+
// Performance: collect characters in an array and join at the end instead of
|
|
12
|
+
// repeated string concatenation, which copies the entire string on every +=
|
|
13
|
+
// and is O(n²) for large inputs. Array push + join is O(n).
|
|
14
|
+
const chars = [];
|
|
12
15
|
let buffer = 0;
|
|
13
16
|
let bufferLength = 0;
|
|
14
17
|
for (const byte of bytes) {
|
|
@@ -16,14 +19,16 @@ export const encodeBase32 = (input) => {
|
|
|
16
19
|
bufferLength += 8;
|
|
17
20
|
while (bufferLength >= 5) {
|
|
18
21
|
bufferLength -= 5;
|
|
19
|
-
|
|
22
|
+
chars.push(alphabet[(buffer >> bufferLength) & 0x1f]);
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
if (bufferLength > 0) {
|
|
23
|
-
|
|
26
|
+
chars.push(alphabet[(buffer << (5 - bufferLength)) & 0x1f]);
|
|
24
27
|
}
|
|
25
|
-
const paddingLength = (8 - (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
const paddingLength = (8 - (chars.length % 8)) % 8;
|
|
29
|
+
if (paddingLength > 0) {
|
|
30
|
+
chars.push("=".repeat(paddingLength));
|
|
31
|
+
}
|
|
32
|
+
return chars.join("");
|
|
28
33
|
};
|
|
29
34
|
//# sourceMappingURL=encodeBase32.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encodeBase32.js","sourceRoot":"","sources":["../../src/Crypto/encodeBase32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA0B,EAAU,EAAE;IACjE,MAAM,QAAQ,GAAG,eAAe,CAAC;IACjC,MAAM,KAAK,GACT,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEtE,
|
|
1
|
+
{"version":3,"file":"encodeBase32.js","sourceRoot":"","sources":["../../src/Crypto/encodeBase32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA0B,EAAU,EAAE;IACjE,MAAM,QAAQ,GAAG,eAAe,CAAC;IACjC,MAAM,KAAK,GACT,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEtE,6EAA6E;IAC7E,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9B,YAAY,IAAI,CAAC,CAAC;QAElB,OAAO,YAAY,IAAI,CAAC,EAAE,CAAC;YACzB,YAAY,IAAI,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -263,7 +263,14 @@ export class PriorityQueue {
|
|
|
263
263
|
this.minPriority = 0;
|
|
264
264
|
return;
|
|
265
265
|
}
|
|
266
|
-
|
|
266
|
+
// Single-pass minimum without intermediate array allocation
|
|
267
|
+
let min = this.heap[0].priority;
|
|
268
|
+
for (let index = 1; index < this.heap.length; index++) {
|
|
269
|
+
if (this.heap[index].priority < min) {
|
|
270
|
+
min = this.heap[index].priority;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
this.minPriority = min;
|
|
267
274
|
}
|
|
268
275
|
/**
|
|
269
276
|
* Builds a max heap from the current heap array.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priorityQueue.js","sourceRoot":"","sources":["../../src/DataStructure/priorityQueue.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"priorityQueue.js","sourceRoot":"","sources":["../../src/DataStructure/priorityQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
export const ipToBinaryString = (ip) => {
|
|
7
7
|
return ip
|
|
8
8
|
.split(".")
|
|
9
|
-
.map((
|
|
9
|
+
.map((part) => {
|
|
10
|
+
return Number.parseInt(part, 10).toString(2).padStart(8, "0");
|
|
11
|
+
})
|
|
10
12
|
.join("");
|
|
11
13
|
};
|
|
12
14
|
//# sourceMappingURL=ipToBinaryString.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipToBinaryString.js","sourceRoot":"","sources":["../../src/IP/ipToBinaryString.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;IACrD,OAAO,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ipToBinaryString.js","sourceRoot":"","sources":["../../src/IP/ipToBinaryString.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAU,EAAU,EAAE;IACrD,OAAO,EAAE;SACN,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC"}
|
package/module/IP/longToIp.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts a 32-bit number to an IPv4 address
|
|
3
|
-
* @param {number} long - 32-bit unsigned integer to convert
|
|
3
|
+
* @param {number} long - 32-bit unsigned integer to convert (0 to 4294967295)
|
|
4
4
|
* @returns {string} IPv4 address (e.g., "192.168.1.1")
|
|
5
5
|
*/
|
|
6
6
|
export declare const longToIp: (long: number) => string;
|
package/module/IP/longToIp.js
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts a 32-bit number to an IPv4 address
|
|
3
|
-
* @param {number} long - 32-bit unsigned integer to convert
|
|
3
|
+
* @param {number} long - 32-bit unsigned integer to convert (0 to 4294967295)
|
|
4
4
|
* @returns {string} IPv4 address (e.g., "192.168.1.1")
|
|
5
5
|
*/
|
|
6
6
|
export const longToIp = (long) => {
|
|
7
|
-
|
|
8
|
-
const binary = long.toString(2).padStart(32, "0");
|
|
9
|
-
// Split into octets and convert to decimal
|
|
10
|
-
const octets = Array.from({ length: 4 }, (_, index) => Number.parseInt(binary.slice(index * 8, (index + 1) * 8), 2));
|
|
11
|
-
// Join octets with dots
|
|
12
|
-
return octets.join(".");
|
|
7
|
+
return `${(long >>> 24) & 0xff}.${(long >>> 16) & 0xff}.${(long >>> 8) & 0xff}.${long & 0xff}`;
|
|
13
8
|
};
|
|
14
9
|
//# sourceMappingURL=longToIp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"longToIp.js","sourceRoot":"","sources":["../../src/IP/longToIp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;IAC/C,
|
|
1
|
+
{"version":3,"file":"longToIp.js","sourceRoot":"","sources":["../../src/IP/longToIp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;IAC/C,OAAO,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;AACjG,CAAC,CAAC"}
|
package/module/Math/addition.js
CHANGED
|
@@ -7,23 +7,16 @@ import { getDecimalLength } from "./getDecimalLength";
|
|
|
7
7
|
*/
|
|
8
8
|
export const addition = (...numbers) => {
|
|
9
9
|
let maxDecimal = 0;
|
|
10
|
-
let allIntegers = true;
|
|
11
10
|
for (const number of numbers) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (length > maxDecimal) {
|
|
16
|
-
maxDecimal = length;
|
|
17
|
-
}
|
|
11
|
+
const length = getDecimalLength(number);
|
|
12
|
+
if (length > maxDecimal) {
|
|
13
|
+
maxDecimal = length;
|
|
18
14
|
}
|
|
19
15
|
}
|
|
20
|
-
if (allIntegers || maxDecimal === 0) {
|
|
21
|
-
return numbers.reduce((sum, current) => sum + current, 0);
|
|
22
|
-
}
|
|
23
16
|
const z = 10 ** maxDecimal;
|
|
24
17
|
let sum = 0;
|
|
25
18
|
for (const number of numbers) {
|
|
26
|
-
sum += Math.round(number * z);
|
|
19
|
+
sum += maxDecimal === 0 ? number : Math.round(number * z);
|
|
27
20
|
}
|
|
28
21
|
return sum / z;
|
|
29
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addition.js","sourceRoot":"","sources":["../../src/Math/addition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAiB,EAAE,EAAE;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"addition.js","sourceRoot":"","sources":["../../src/Math/addition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAiB,EAAE,EAAE;IAC/C,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC;YACxB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;IAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,GAAG,IAAI,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import { addition } from "./addition";
|
|
1
2
|
import { getDecimalLength } from "./getDecimalLength";
|
|
3
|
+
const multiplyIntegers = (numbers) => {
|
|
4
|
+
let product = 1;
|
|
5
|
+
for (const n of numbers) {
|
|
6
|
+
product *= n;
|
|
7
|
+
}
|
|
8
|
+
return product;
|
|
9
|
+
};
|
|
2
10
|
/**
|
|
3
11
|
* Performs multiplication without floating point errors for any number of arguments
|
|
4
12
|
* @param {...number[]} numbers Numbers to multiply
|
|
@@ -6,11 +14,11 @@ import { getDecimalLength } from "./getDecimalLength";
|
|
|
6
14
|
* @example multiplication(0.1, 0.2, 0.3); // 0.006
|
|
7
15
|
*/
|
|
8
16
|
export const multiplication = (...numbers) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
if (numbers.every((n) => Number.isInteger(n))) {
|
|
18
|
+
return multiplyIntegers(numbers);
|
|
19
|
+
}
|
|
20
|
+
const integers = numbers.map((n) => +`${n}`.replace(".", ""));
|
|
21
|
+
const totalDecimal = addition(...numbers.map((n) => getDecimalLength(n)));
|
|
22
|
+
return multiplyIntegers(integers) / 10 ** totalDecimal;
|
|
15
23
|
};
|
|
16
24
|
//# sourceMappingURL=multiplication.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiplication.js","sourceRoot":"","sources":["../../src/Math/multiplication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,OAAiB,EAAE,EAAE;IACrD,
|
|
1
|
+
{"version":3,"file":"multiplication.js","sourceRoot":"","sources":["../../src/Math/multiplication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,gBAAgB,GAAG,CAAC,OAAiB,EAAU,EAAE;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,OAAiB,EAAE,EAAE;IACrD,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC;AACzD,CAAC,CAAC"}
|
package/module/Math/nCr.js
CHANGED
|
@@ -17,8 +17,12 @@ export const nCr = (n, r) => {
|
|
|
17
17
|
if (r === 0 || n === r) {
|
|
18
18
|
return 1;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
// Performance: use symmetry property nCr(n, r) = nCr(n, n-r) to
|
|
21
|
+
// minimize the number of multiplications when r > n/2.
|
|
22
|
+
// e.g. nCr(100, 97) becomes nCr(100, 3), reducing 193 multiplications to 5.
|
|
23
|
+
const effectiveR = Math.min(r, n - r);
|
|
24
|
+
const numerator = nPr(n, effectiveR);
|
|
25
|
+
const denominator = factorial(effectiveR);
|
|
22
26
|
const result = numerator / denominator;
|
|
23
27
|
return result;
|
|
24
28
|
};
|
package/module/Math/nCr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nCr.js","sourceRoot":"","sources":["../../src/Math/nCr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAClD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,
|
|
1
|
+
{"version":3,"file":"nCr.js","sourceRoot":"","sources":["../../src/Math/nCr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAClD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,gEAAgE;IAChE,uDAAuD;IACvD,4EAA4E;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { average } from "./average";
|
|
2
|
+
import { addition } from "../Math/addition";
|
|
3
|
+
import { division } from "../Math/division";
|
|
2
4
|
import { multiplication } from "../Math/multiplication";
|
|
3
5
|
import { subtract } from "../Math/subtract";
|
|
4
6
|
/**
|
|
@@ -13,15 +15,18 @@ import { subtract } from "../Math/subtract";
|
|
|
13
15
|
* while a high standard deviation indicates that the values are spread out over a wider range.
|
|
14
16
|
*/
|
|
15
17
|
export const standardDeviation = (values) => {
|
|
18
|
+
if (values.length === 0) {
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
16
21
|
const avg = average(values);
|
|
17
|
-
//
|
|
18
|
-
|
|
22
|
+
// Accumulate sum of squared differences in a single pass,
|
|
23
|
+
// avoiding an intermediate array allocation and extra traversal
|
|
24
|
+
let sumSquareDiffs = 0;
|
|
25
|
+
for (const value of values) {
|
|
19
26
|
const diff = subtract(value, avg);
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const avgSquareDiff = average(squareDiffs);
|
|
24
|
-
// Return the square root of the mean squared differences
|
|
27
|
+
sumSquareDiffs = addition(sumSquareDiffs, multiplication(diff, diff));
|
|
28
|
+
}
|
|
29
|
+
const avgSquareDiff = division(sumSquareDiffs, values.length);
|
|
25
30
|
return Math.sqrt(avgSquareDiff);
|
|
26
31
|
};
|
|
27
32
|
//# sourceMappingURL=standardDeviation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardDeviation.js","sourceRoot":"","sources":["../../src/Math/standardDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5D,MAAM,
|
|
1
|
+
{"version":3,"file":"standardDeviation.js","sourceRoot":"","sources":["../../src/Math/standardDeviation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC5D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5B,0DAA0D;IAC1D,gEAAgE;IAChE,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC,CAAC"}
|
package/module/Math/subtract.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { addition } from "./addition";
|
|
1
2
|
import { getDecimalLength } from "./getDecimalLength";
|
|
2
3
|
import { max } from "./max";
|
|
3
4
|
import { multiplication } from "./multiplication";
|
|
@@ -14,14 +15,9 @@ import { multiplication } from "./multiplication";
|
|
|
14
15
|
* are subtracted from it.
|
|
15
16
|
*/
|
|
16
17
|
export const subtract = (...numbers) => {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// Get the power of 10 based on the maximum decimal places
|
|
22
|
-
const z = 10 ** max(getDecimalLength(accumulator), getDecimalLength(current));
|
|
23
|
-
// Scale to integers, subtract, then scale back to original decimal places
|
|
24
|
-
return (multiplication(accumulator, z) - multiplication(current, z)) / z;
|
|
25
|
-
}, 0);
|
|
18
|
+
const [first, ...rest] = numbers;
|
|
19
|
+
const restSum = addition(...rest);
|
|
20
|
+
const z = 10 ** max(getDecimalLength(first), getDecimalLength(restSum));
|
|
21
|
+
return (multiplication(first, z) - multiplication(restSum, z)) / z;
|
|
26
22
|
};
|
|
27
23
|
//# sourceMappingURL=subtract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtract.js","sourceRoot":"","sources":["../../src/Math/subtract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAiB,EAAU,EAAE;IACvD,
|
|
1
|
+
{"version":3,"file":"subtract.js","sourceRoot":"","sources":["../../src/Math/subtract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAiB,EAAU,EAAE;IACvD,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC,CAAC"}
|
|
@@ -11,5 +11,15 @@
|
|
|
11
11
|
* cloned.b.c = 99;
|
|
12
12
|
* original.b.c; // still 2
|
|
13
13
|
* ```
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* **Prototype pollution warning:** This function does not filter out
|
|
17
|
+
* prototype-polluting keys (`__proto__`, `constructor`, `prototype`).
|
|
18
|
+
* If processing user-controlled input, sanitize with the appropriate
|
|
19
|
+
* `removePrototype*` helper before calling this function:
|
|
20
|
+
* - `removePrototype` — shallow sanitization of a single object
|
|
21
|
+
* - `removePrototypeDeep` — recursive sanitization of a single object (for deeply nested data)
|
|
22
|
+
* - `removePrototypeMap` — shallow sanitization of an array of objects
|
|
23
|
+
* - `removePrototypeMapDeep` — recursive sanitization of an array of objects (for deeply nested data)
|
|
14
24
|
*/
|
|
15
25
|
export declare const deepClone: <T>(value: T) => T;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Recursively clones a value.
|
|
3
3
|
*/
|
|
4
|
-
const cloneValue = (value) => {
|
|
4
|
+
const cloneValue = (value, depth) => {
|
|
5
5
|
if (value === null || typeof value !== "object") {
|
|
6
6
|
return value;
|
|
7
7
|
}
|
|
8
8
|
if (Array.isArray(value)) {
|
|
9
9
|
const result = [];
|
|
10
10
|
for (const element of value) {
|
|
11
|
-
result.push(cloneValue(element));
|
|
11
|
+
result.push(cloneValue(element, depth + 1));
|
|
12
12
|
}
|
|
13
13
|
return result;
|
|
14
14
|
}
|
|
@@ -21,24 +21,21 @@ const cloneValue = (value) => {
|
|
|
21
21
|
if (value instanceof Map) {
|
|
22
22
|
const result = new Map();
|
|
23
23
|
for (const [k, v] of value) {
|
|
24
|
-
result.set(cloneValue(k), cloneValue(v));
|
|
24
|
+
result.set(cloneValue(k, depth + 1), cloneValue(v, depth + 1));
|
|
25
25
|
}
|
|
26
26
|
return result;
|
|
27
27
|
}
|
|
28
28
|
if (value instanceof Set) {
|
|
29
29
|
const result = new Set();
|
|
30
30
|
for (const v of value) {
|
|
31
|
-
result.add(cloneValue(v));
|
|
31
|
+
result.add(cloneValue(v, depth + 1));
|
|
32
32
|
}
|
|
33
33
|
return result;
|
|
34
34
|
}
|
|
35
35
|
// Plain object
|
|
36
36
|
const result = {};
|
|
37
37
|
for (const key of Object.keys(value)) {
|
|
38
|
-
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
result[key] = cloneValue(value[key]);
|
|
38
|
+
result[key] = cloneValue(value[key], depth + 1);
|
|
42
39
|
}
|
|
43
40
|
return result;
|
|
44
41
|
};
|
|
@@ -55,11 +52,21 @@ const cloneValue = (value) => {
|
|
|
55
52
|
* cloned.b.c = 99;
|
|
56
53
|
* original.b.c; // still 2
|
|
57
54
|
* ```
|
|
55
|
+
*
|
|
56
|
+
* @remarks
|
|
57
|
+
* **Prototype pollution warning:** This function does not filter out
|
|
58
|
+
* prototype-polluting keys (`__proto__`, `constructor`, `prototype`).
|
|
59
|
+
* If processing user-controlled input, sanitize with the appropriate
|
|
60
|
+
* `removePrototype*` helper before calling this function:
|
|
61
|
+
* - `removePrototype` — shallow sanitization of a single object
|
|
62
|
+
* - `removePrototypeDeep` — recursive sanitization of a single object (for deeply nested data)
|
|
63
|
+
* - `removePrototypeMap` — shallow sanitization of an array of objects
|
|
64
|
+
* - `removePrototypeMapDeep` — recursive sanitization of an array of objects (for deeply nested data)
|
|
58
65
|
*/
|
|
59
66
|
export const deepClone = (value) => {
|
|
60
67
|
if (value === null || typeof value !== "object") {
|
|
61
68
|
return value;
|
|
62
69
|
}
|
|
63
|
-
return cloneValue(value);
|
|
70
|
+
return cloneValue(value, 0);
|
|
64
71
|
};
|
|
65
72
|
//# sourceMappingURL=deepClone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../src/Object/deepClone.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,KAAc,EAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../src/Object/deepClone.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,KAAa,EAAW,EAAE;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CACrB,KAAiC,CAAC,GAAG,CAAC,EACvC,KAAK,GAAG,CAAC,CACV,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAQ,EAAK,EAAE;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC,CAAM,CAAC;AACnC,CAAC,CAAC"}
|