@danielsimonjr/mathts-functions 0.43.0 → 0.43.2
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/{chunk-K6FSIGFM.js → chunk-UMUT2YEC.js} +6 -106
- package/dist/core/config.d.ts +10 -13
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/create.d.ts +2 -8
- package/dist/core/create.d.ts.map +1 -1
- package/dist/index.js +104 -157
- package/dist/numeric/matrix-functions.d.ts +7 -5
- package/dist/numeric/matrix-functions.d.ts.map +1 -1
- package/dist/signal/fft-helpers.d.ts +6 -0
- package/dist/signal/fft-helpers.d.ts.map +1 -1
- package/dist/signal/fft.d.ts +9 -0
- package/dist/signal/fft.d.ts.map +1 -1
- package/dist/type/matrix/types.d.ts +8 -35
- package/dist/type/matrix/types.d.ts.map +1 -1
- package/dist/typed/index.d.ts +0 -1
- package/dist/typed/index.d.ts.map +1 -1
- package/dist/typed/matrix-ops.d.ts.map +1 -1
- package/dist/typed/numeric.d.ts +0 -8
- package/dist/typed/numeric.d.ts.map +1 -1
- package/dist/utils/factory.d.ts +6 -20
- package/dist/utils/factory.d.ts.map +1 -1
- package/dist/utils/switch.d.ts +6 -4
- package/dist/utils/switch.d.ts.map +1 -1
- package/dist/wasm/WasmLoader.d.ts +2 -10
- package/dist/wasm/WasmLoader.d.ts.map +1 -1
- package/dist/wasm/integrity.d.ts +10 -42
- package/dist/wasm/integrity.d.ts.map +1 -1
- package/dist/wasm/resolve.d.ts +22 -52
- package/dist/wasm/resolve.d.ts.map +1 -1
- package/dist/{wasm-bridge-P6BRFY46.js → wasm-bridge-C44GQ3DS.js} +1 -1
- package/package.json +5 -5
|
@@ -5,96 +5,14 @@ var __export = (target, all) => {
|
|
|
5
5
|
};
|
|
6
6
|
|
|
7
7
|
// src/wasm/integrity.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (isNode) {
|
|
14
|
-
const { createHash } = await import("crypto");
|
|
15
|
-
const hash = createHash(ALGO);
|
|
16
|
-
hash.update(bytes);
|
|
17
|
-
digest = new Uint8Array(hash.digest());
|
|
18
|
-
} else {
|
|
19
|
-
const copy = new ArrayBuffer(bytes.byteLength);
|
|
20
|
-
new Uint8Array(copy).set(bytes);
|
|
21
|
-
const out = await crypto.subtle.digest("SHA-384", copy);
|
|
22
|
-
digest = new Uint8Array(out);
|
|
23
|
-
}
|
|
24
|
-
let binary = "";
|
|
25
|
-
for (let i = 0; i < digest.length; i++) binary += String.fromCharCode(digest[i]);
|
|
26
|
-
const b64 = typeof btoa === "function" ? btoa(binary) : Buffer.from(digest).toString("base64");
|
|
27
|
-
return `sha384-${b64}`;
|
|
28
|
-
}
|
|
29
|
-
async function loadWasmManifest(wasmPath) {
|
|
30
|
-
const isNode = typeof process !== "undefined" && process.versions?.node !== void 0;
|
|
31
|
-
const manifestPath = wasmPath.replace(/[^/\\]+$/, "wasm-manifest.json");
|
|
32
|
-
try {
|
|
33
|
-
if (isNode) {
|
|
34
|
-
const fs = await import("fs");
|
|
35
|
-
const { promisify } = await import("util");
|
|
36
|
-
const readFile = promisify(fs.readFile);
|
|
37
|
-
const text = await readFile(manifestPath, "utf8");
|
|
38
|
-
return JSON.parse(text);
|
|
39
|
-
} else {
|
|
40
|
-
const res = await fetch(manifestPath);
|
|
41
|
-
if (!res.ok) return null;
|
|
42
|
-
return await res.json();
|
|
43
|
-
}
|
|
44
|
-
} catch {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
async function verifyWasmIntegrity(buffer, wasmPath, options = {}) {
|
|
49
|
-
const fileName = wasmPath.split(/[/\\]/).pop() || wasmPath;
|
|
50
|
-
const manifest = options.manifest !== void 0 ? options.manifest : await loadWasmManifest(wasmPath);
|
|
51
|
-
if (!manifest) {
|
|
52
|
-
if (options.required) {
|
|
53
|
-
throw new Error(
|
|
54
|
-
`WASM integrity check failed: no manifest at sibling of "${wasmPath}" (required)`
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
if (typeof console !== "undefined") {
|
|
58
|
-
console.warn(
|
|
59
|
-
`[wasm-integrity] no manifest found beside "${wasmPath}"; skipping SHA-384 verification (set options.required=true to fail closed)`
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const expected = manifest[fileName];
|
|
65
|
-
if (!expected) {
|
|
66
|
-
if (options.required) {
|
|
67
|
-
throw new Error(`WASM integrity check failed: manifest has no entry for "${fileName}"`);
|
|
68
|
-
}
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const actual = await sha384OfBuffer(buffer);
|
|
72
|
-
if (actual !== expected) {
|
|
73
|
-
throw new Error(
|
|
74
|
-
`WASM integrity check failed for "${fileName}": expected ${expected}, got ${actual}`
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
8
|
+
import {
|
|
9
|
+
sha384OfBuffer,
|
|
10
|
+
loadWasmManifest,
|
|
11
|
+
verifyWasmIntegrity
|
|
12
|
+
} from "@danielsimonjr/mathts-core/internal";
|
|
78
13
|
|
|
79
14
|
// src/wasm/resolve.ts
|
|
80
|
-
|
|
81
|
-
const isNode = typeof process !== "undefined" && process.versions?.node !== void 0;
|
|
82
|
-
if (!isNode) return null;
|
|
83
|
-
const { fileURLToPath } = await import("url");
|
|
84
|
-
const { dirname, join } = await import("path");
|
|
85
|
-
const { existsSync } = await import("fs");
|
|
86
|
-
let dir = dirname(fileURLToPath(metaUrl));
|
|
87
|
-
for (let depth = 0; depth < 8; depth++) {
|
|
88
|
-
const candidates = [join(dir, "wasm", wasmFile), join(dir, "dist", "wasm", wasmFile)];
|
|
89
|
-
for (const candidate of candidates) {
|
|
90
|
-
if (existsSync(candidate)) return candidate;
|
|
91
|
-
}
|
|
92
|
-
const parent = dirname(dir);
|
|
93
|
-
if (parent === dir) break;
|
|
94
|
-
dir = parent;
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
15
|
+
import { resolvePackagedWasm, defaultWasmLocation } from "@danielsimonjr/mathts-core/internal";
|
|
98
16
|
async function resolveBrowserWasm(metaUrl, wasmFile) {
|
|
99
17
|
let dir = new URL(".", metaUrl);
|
|
100
18
|
for (let depth = 0; depth < 8; depth++) {
|
|
@@ -112,24 +30,6 @@ async function resolveBrowserWasm(metaUrl, wasmFile) {
|
|
|
112
30
|
}
|
|
113
31
|
return new URL(`./wasm/${wasmFile}`, metaUrl).href;
|
|
114
32
|
}
|
|
115
|
-
async function defaultWasmLocation(metaUrl, wasmFile, opts) {
|
|
116
|
-
if (opts?.browser) {
|
|
117
|
-
return new URL(`./wasm/${wasmFile}`, metaUrl).href;
|
|
118
|
-
}
|
|
119
|
-
const { fileURLToPath } = await import("url");
|
|
120
|
-
const { dirname, join } = await import("path");
|
|
121
|
-
const { existsSync } = await import("fs");
|
|
122
|
-
let dir = dirname(fileURLToPath(metaUrl));
|
|
123
|
-
for (let depth = 0; depth < 8; depth++) {
|
|
124
|
-
if (existsSync(join(dir, "package.json"))) {
|
|
125
|
-
return join(dir, "dist", "wasm", wasmFile);
|
|
126
|
-
}
|
|
127
|
-
const parent = dirname(dir);
|
|
128
|
-
if (parent === dir) break;
|
|
129
|
-
dir = parent;
|
|
130
|
-
}
|
|
131
|
-
return join(dirname(fileURLToPath(metaUrl)), "wasm", wasmFile);
|
|
132
|
-
}
|
|
133
33
|
|
|
134
34
|
// src/wasm/WasmLoader.ts
|
|
135
35
|
var WasmLoader = class _WasmLoader {
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration interface for math.js
|
|
3
|
+
*
|
|
4
|
+
* Consolidated onto core: this file used to duplicate
|
|
5
|
+
* `core/src/config.ts`'s `ConfigOptions`/`MathJsConfig`/`DEFAULT_CONFIG`
|
|
6
|
+
* byte-for-byte. The implementation now lives once in
|
|
7
|
+
* `@danielsimonjr/mathts-core/internal` (see the `project-all-libraries-build-on-core`
|
|
8
|
+
* principle and the cross-package dedup pass, docs/Architecture/duplicate-symbols.json).
|
|
9
|
+
* Thin re-export so existing `../core/config.js` / `./config.js` imports across
|
|
10
|
+
* `functions/src/` keep working unchanged.
|
|
3
11
|
*/
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
absTol: number;
|
|
7
|
-
matrix: 'Matrix' | 'Array';
|
|
8
|
-
number: 'number' | 'BigNumber' | 'bigint' | 'Fraction';
|
|
9
|
-
numberFallback: 'number' | 'BigNumber';
|
|
10
|
-
precision: number;
|
|
11
|
-
predictable: boolean;
|
|
12
|
-
randomSeed: string | null;
|
|
13
|
-
legacySubset: boolean;
|
|
14
|
-
}
|
|
15
|
-
export type MathJsConfig = ConfigOptions;
|
|
16
|
-
export declare const DEFAULT_CONFIG: ConfigOptions;
|
|
12
|
+
export type { ConfigOptions, MathJsConfig } from '@danielsimonjr/mathts-core/internal';
|
|
13
|
+
export { DEFAULT_CONFIG } from '@danielsimonjr/mathts-core/internal';
|
|
17
14
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC"}
|
package/dist/core/create.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { isAccessorNode, isArray, isArrayNode, isAssignmentNode, isBigInt, isBig
|
|
|
8
8
|
import { isObjectWrappingMap } from '../utils/map.js';
|
|
9
9
|
import type { ConfigOptions, MathJsConfig } from './config.js';
|
|
10
10
|
export type { MathJsConfig };
|
|
11
|
+
import type { ImportOptions } from './function/import.js';
|
|
11
12
|
/**
|
|
12
13
|
* Type for the mathjs instance
|
|
13
14
|
*/
|
|
@@ -83,14 +84,7 @@ export interface MathJsInstance {
|
|
|
83
84
|
* Input type for factories
|
|
84
85
|
*/
|
|
85
86
|
export type FactoriesInput = Record<string, FactoryFunction | LegacyFactory> | Array<FactoryFunction | LegacyFactory> | FactoryFunction | LegacyFactory;
|
|
86
|
-
|
|
87
|
-
* Options for the import function
|
|
88
|
-
*/
|
|
89
|
-
export interface ImportOptions {
|
|
90
|
-
override?: boolean;
|
|
91
|
-
silent?: boolean;
|
|
92
|
-
wrap?: boolean;
|
|
93
|
-
}
|
|
87
|
+
export type { ImportOptions };
|
|
94
88
|
/**
|
|
95
89
|
* Create a mathjs instance from given factory functions and optionally config
|
|
96
90
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/core/create.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAa,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EACL,cAAc,EACd,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,MAAM,EACN,aAAa,EACb,UAAU,EACV,UAAU,EACV,wBAAwB,EACxB,cAAc,EACd,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,MAAM,EACP,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG/D,YAAY,EAAE,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/core/create.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
wasmLoader,
|
|
14
14
|
withAsF64,
|
|
15
15
|
withAsI32
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-UMUT2YEC.js";
|
|
17
17
|
|
|
18
18
|
// src/typed/index.ts
|
|
19
19
|
var typed_exports = {};
|
|
@@ -16589,7 +16589,7 @@ async function mannWhitneyTest(sample1, sample2, opts) {
|
|
|
16589
16589
|
if (nTotal >= WASM_SORT_THRESHOLD) {
|
|
16590
16590
|
const vals = new Float64Array(nTotal);
|
|
16591
16591
|
for (let k = 0; k < nTotal; k++) vals[k] = combined[k].value;
|
|
16592
|
-
const { argsortF64Dispatch: argsortF64Dispatch2 } = await import("./wasm-bridge-
|
|
16592
|
+
const { argsortF64Dispatch: argsortF64Dispatch2 } = await import("./wasm-bridge-C44GQ3DS.js");
|
|
16593
16593
|
const idx = argsortF64Dispatch2(vals);
|
|
16594
16594
|
const sortedCombined = new Array(nTotal);
|
|
16595
16595
|
for (let k = 0; k < nTotal; k++) sortedCombined[k] = combined[idx[k]];
|
|
@@ -17335,6 +17335,7 @@ function hotellingT2(data, mu0) {
|
|
|
17335
17335
|
import {
|
|
17336
17336
|
eig,
|
|
17337
17337
|
svd,
|
|
17338
|
+
cholesky as matrixCholesky,
|
|
17338
17339
|
cond as matrixCond,
|
|
17339
17340
|
norm2 as matrixNorm2,
|
|
17340
17341
|
normFro as matrixNormFro,
|
|
@@ -17493,25 +17494,8 @@ function cholesky(A) {
|
|
|
17493
17494
|
}
|
|
17494
17495
|
}
|
|
17495
17496
|
}
|
|
17496
|
-
const
|
|
17497
|
-
|
|
17498
|
-
for (let j = 0; j <= i; j++) {
|
|
17499
|
-
let sum3 = 0;
|
|
17500
|
-
for (let k = 0; k < j; k++) {
|
|
17501
|
-
sum3 += L[i][k] * L[j][k];
|
|
17502
|
-
}
|
|
17503
|
-
if (i === j) {
|
|
17504
|
-
const diag2 = A[i][i] - sum3;
|
|
17505
|
-
if (diag2 <= 0) {
|
|
17506
|
-
throw new Error("cholesky: matrix is not positive definite");
|
|
17507
|
-
}
|
|
17508
|
-
L[i][j] = Math.sqrt(diag2);
|
|
17509
|
-
} else {
|
|
17510
|
-
L[i][j] = (A[i][j] - sum3) / L[j][j];
|
|
17511
|
-
}
|
|
17512
|
-
}
|
|
17513
|
-
}
|
|
17514
|
-
return { L };
|
|
17497
|
+
const { L } = matrixCholesky(DenseMatrix3.fromArray(A));
|
|
17498
|
+
return { L: L.toArray() };
|
|
17515
17499
|
}
|
|
17516
17500
|
function hessenbergForm(A) {
|
|
17517
17501
|
const n = assertSquare(A, "hessenbergForm");
|
|
@@ -18670,35 +18654,7 @@ function initTypeBridge() {
|
|
|
18670
18654
|
}
|
|
18671
18655
|
|
|
18672
18656
|
// src/core/config.ts
|
|
18673
|
-
|
|
18674
|
-
// minimum relative difference between two compared values,
|
|
18675
|
-
// used by all comparison functions
|
|
18676
|
-
relTol: 1e-12,
|
|
18677
|
-
// minimum absolute difference between two compared values,
|
|
18678
|
-
// used by all comparison functions
|
|
18679
|
-
absTol: 1e-15,
|
|
18680
|
-
// type of default matrix output. Choose 'matrix' (default) or 'array'
|
|
18681
|
-
matrix: "Matrix",
|
|
18682
|
-
// type of default number output. Choose 'number' (default) 'BigNumber', 'bigint', or 'Fraction'
|
|
18683
|
-
number: "number",
|
|
18684
|
-
// type of fallback used for config { number: 'bigint' } when a value cannot be represented
|
|
18685
|
-
// in the configured numeric type. Choose 'number' (default) or 'BigNumber'.
|
|
18686
|
-
numberFallback: "number",
|
|
18687
|
-
// number of significant digits in BigNumbers
|
|
18688
|
-
precision: 64,
|
|
18689
|
-
// predictable output type of functions. When true, output type depends only
|
|
18690
|
-
// on the input types. When false (default), output type can vary depending
|
|
18691
|
-
// on input values. For example `math.sqrt(-4)` returns `complex('2i')` when
|
|
18692
|
-
// predictable is false, and returns `NaN` when true.
|
|
18693
|
-
predictable: false,
|
|
18694
|
-
// random seed for seeded pseudo random number generation
|
|
18695
|
-
// null = randomly seed
|
|
18696
|
-
randomSeed: null,
|
|
18697
|
-
// legacy behavior for matrix subset. When true, the subset function
|
|
18698
|
-
// returns a matrix or array with the same size as the index (except for scalars).
|
|
18699
|
-
// When false, it returns a matrix or array with a size depending on the type of index.
|
|
18700
|
-
legacySubset: false
|
|
18701
|
-
};
|
|
18657
|
+
import { DEFAULT_CONFIG } from "@danielsimonjr/mathts-core/internal";
|
|
18702
18658
|
|
|
18703
18659
|
// src/factories/scope.ts
|
|
18704
18660
|
initTypeBridge();
|
|
@@ -26919,21 +26875,7 @@ var createZpk2tf = /* @__PURE__ */ factory(
|
|
|
26919
26875
|
);
|
|
26920
26876
|
|
|
26921
26877
|
// src/utils/switch.ts
|
|
26922
|
-
|
|
26923
|
-
const rows = mat;
|
|
26924
|
-
const I2 = rows.length;
|
|
26925
|
-
const J = rows[0].length;
|
|
26926
|
-
let i, j;
|
|
26927
|
-
const ret = [];
|
|
26928
|
-
for (j = 0; j < J; j++) {
|
|
26929
|
-
const tmp = [];
|
|
26930
|
-
for (i = 0; i < I2; i++) {
|
|
26931
|
-
tmp.push(rows[i][j]);
|
|
26932
|
-
}
|
|
26933
|
-
ret.push(tmp);
|
|
26934
|
-
}
|
|
26935
|
-
return ret;
|
|
26936
|
-
}
|
|
26878
|
+
import { _switch as _switch2 } from "@danielsimonjr/mathts-core/internal";
|
|
26937
26879
|
|
|
26938
26880
|
// src/statistics/cumsum.ts
|
|
26939
26881
|
import { neumaierCumsum as neumaierCumsum2 } from "@danielsimonjr/mathts-core";
|
|
@@ -48491,6 +48433,97 @@ function butter(N, Wn, btype = "low") {
|
|
|
48491
48433
|
return analogToDigital(buttap(N), Wn, btype);
|
|
48492
48434
|
}
|
|
48493
48435
|
|
|
48436
|
+
// src/signal/fft.ts
|
|
48437
|
+
function complex2(re3, im3 = 0) {
|
|
48438
|
+
return { re: re3, im: im3 };
|
|
48439
|
+
}
|
|
48440
|
+
function isPowerOf25(n) {
|
|
48441
|
+
return n > 0 && (n & n - 1) === 0;
|
|
48442
|
+
}
|
|
48443
|
+
function nextPowerOf22(n) {
|
|
48444
|
+
if (n <= 1) return 1;
|
|
48445
|
+
return Math.pow(2, Math.ceil(Math.log2(n)));
|
|
48446
|
+
}
|
|
48447
|
+
function fftCore(data, inverse = false) {
|
|
48448
|
+
const n = data.length;
|
|
48449
|
+
if (!isPowerOf25(n)) {
|
|
48450
|
+
throw new Error(`FFT length must be power of 2, got ${n}`);
|
|
48451
|
+
}
|
|
48452
|
+
if (n === 1) {
|
|
48453
|
+
return [{ ...data[0] }];
|
|
48454
|
+
}
|
|
48455
|
+
const real = new Float64Array(n);
|
|
48456
|
+
const imag = new Float64Array(n);
|
|
48457
|
+
for (let i = 0; i < n; i++) {
|
|
48458
|
+
real[i] = data[i].re;
|
|
48459
|
+
imag[i] = data[i].im;
|
|
48460
|
+
}
|
|
48461
|
+
const out = fftCoreFloat64(real, imag, inverse);
|
|
48462
|
+
const spectrum = new Array(n);
|
|
48463
|
+
for (let i = 0; i < n; i++) {
|
|
48464
|
+
spectrum[i] = { re: out.real[i], im: out.imag[i] };
|
|
48465
|
+
}
|
|
48466
|
+
return spectrum;
|
|
48467
|
+
}
|
|
48468
|
+
function fft2(signal) {
|
|
48469
|
+
const originalLength = signal.length;
|
|
48470
|
+
if (originalLength === 0) {
|
|
48471
|
+
return {
|
|
48472
|
+
spectrum: [],
|
|
48473
|
+
originalLength: 0,
|
|
48474
|
+
paddedLength: 0
|
|
48475
|
+
};
|
|
48476
|
+
}
|
|
48477
|
+
let complexSignal;
|
|
48478
|
+
if (signal instanceof Float64Array) {
|
|
48479
|
+
complexSignal = Array.from(signal).map((x) => complex2(x, 0));
|
|
48480
|
+
} else if (typeof signal[0] === "number") {
|
|
48481
|
+
complexSignal = signal.map((x) => complex2(x, 0));
|
|
48482
|
+
} else {
|
|
48483
|
+
complexSignal = signal;
|
|
48484
|
+
}
|
|
48485
|
+
const paddedLength = nextPowerOf22(originalLength);
|
|
48486
|
+
if (paddedLength > originalLength) {
|
|
48487
|
+
const padding = new Array(paddedLength - originalLength).fill(complex2(0, 0));
|
|
48488
|
+
complexSignal = [...complexSignal, ...padding];
|
|
48489
|
+
}
|
|
48490
|
+
const spectrum = fftCore(complexSignal, false);
|
|
48491
|
+
return {
|
|
48492
|
+
spectrum,
|
|
48493
|
+
originalLength,
|
|
48494
|
+
paddedLength
|
|
48495
|
+
};
|
|
48496
|
+
}
|
|
48497
|
+
function ifft2(spectrum, originalLength) {
|
|
48498
|
+
if (spectrum.length === 0) {
|
|
48499
|
+
return [];
|
|
48500
|
+
}
|
|
48501
|
+
const paddedLength = nextPowerOf22(spectrum.length);
|
|
48502
|
+
let paddedSpectrum = spectrum;
|
|
48503
|
+
if (paddedLength > spectrum.length) {
|
|
48504
|
+
const padding = new Array(paddedLength - spectrum.length).fill(complex2(0, 0));
|
|
48505
|
+
paddedSpectrum = [...spectrum, ...padding];
|
|
48506
|
+
}
|
|
48507
|
+
const result = fftCore(paddedSpectrum, true);
|
|
48508
|
+
if (originalLength !== void 0 && originalLength < result.length) {
|
|
48509
|
+
return result.slice(0, originalLength);
|
|
48510
|
+
}
|
|
48511
|
+
return result;
|
|
48512
|
+
}
|
|
48513
|
+
function ifftReal(spectrum, originalLength) {
|
|
48514
|
+
const complex3 = ifft2(spectrum, originalLength);
|
|
48515
|
+
return complex3.map((c) => c.re);
|
|
48516
|
+
}
|
|
48517
|
+
function rollBy(arr10, count2) {
|
|
48518
|
+
return [...arr10.slice(count2), ...arr10.slice(0, count2)];
|
|
48519
|
+
}
|
|
48520
|
+
function fftshift(spectrum) {
|
|
48521
|
+
return rollBy(spectrum, Math.floor(spectrum.length / 2));
|
|
48522
|
+
}
|
|
48523
|
+
function ifftshift(spectrum) {
|
|
48524
|
+
return rollBy(spectrum, Math.ceil(spectrum.length / 2));
|
|
48525
|
+
}
|
|
48526
|
+
|
|
48494
48527
|
// src/signal/fft-helpers.ts
|
|
48495
48528
|
var callFft = fft;
|
|
48496
48529
|
var callIfft = ifft;
|
|
@@ -48527,15 +48560,11 @@ function irfft(spec, n) {
|
|
|
48527
48560
|
const result = callIfft(full);
|
|
48528
48561
|
return result.map((v) => toReIm(v).re);
|
|
48529
48562
|
}
|
|
48530
|
-
function
|
|
48531
|
-
|
|
48532
|
-
const half = Math.floor(n / 2);
|
|
48533
|
-
return [...x.slice(half), ...x.slice(0, half)];
|
|
48563
|
+
function fftshift2(x) {
|
|
48564
|
+
return fftshift(x);
|
|
48534
48565
|
}
|
|
48535
|
-
function
|
|
48536
|
-
|
|
48537
|
-
const half = Math.ceil(n / 2);
|
|
48538
|
-
return [...x.slice(half), ...x.slice(0, half)];
|
|
48566
|
+
function ifftshift2(x) {
|
|
48567
|
+
return ifftshift(x);
|
|
48539
48568
|
}
|
|
48540
48569
|
function fftfreq(n, d = 1) {
|
|
48541
48570
|
const result = new Array(n);
|
|
@@ -48913,88 +48942,6 @@ function sosfilt(sos, x) {
|
|
|
48913
48942
|
return y;
|
|
48914
48943
|
}
|
|
48915
48944
|
|
|
48916
|
-
// src/signal/fft.ts
|
|
48917
|
-
function complex2(re3, im3 = 0) {
|
|
48918
|
-
return { re: re3, im: im3 };
|
|
48919
|
-
}
|
|
48920
|
-
function isPowerOf25(n) {
|
|
48921
|
-
return n > 0 && (n & n - 1) === 0;
|
|
48922
|
-
}
|
|
48923
|
-
function nextPowerOf22(n) {
|
|
48924
|
-
if (n <= 1) return 1;
|
|
48925
|
-
return Math.pow(2, Math.ceil(Math.log2(n)));
|
|
48926
|
-
}
|
|
48927
|
-
function fftCore(data, inverse = false) {
|
|
48928
|
-
const n = data.length;
|
|
48929
|
-
if (!isPowerOf25(n)) {
|
|
48930
|
-
throw new Error(`FFT length must be power of 2, got ${n}`);
|
|
48931
|
-
}
|
|
48932
|
-
if (n === 1) {
|
|
48933
|
-
return [{ ...data[0] }];
|
|
48934
|
-
}
|
|
48935
|
-
const real = new Float64Array(n);
|
|
48936
|
-
const imag = new Float64Array(n);
|
|
48937
|
-
for (let i = 0; i < n; i++) {
|
|
48938
|
-
real[i] = data[i].re;
|
|
48939
|
-
imag[i] = data[i].im;
|
|
48940
|
-
}
|
|
48941
|
-
const out = fftCoreFloat64(real, imag, inverse);
|
|
48942
|
-
const spectrum = new Array(n);
|
|
48943
|
-
for (let i = 0; i < n; i++) {
|
|
48944
|
-
spectrum[i] = { re: out.real[i], im: out.imag[i] };
|
|
48945
|
-
}
|
|
48946
|
-
return spectrum;
|
|
48947
|
-
}
|
|
48948
|
-
function fft2(signal) {
|
|
48949
|
-
const originalLength = signal.length;
|
|
48950
|
-
if (originalLength === 0) {
|
|
48951
|
-
return {
|
|
48952
|
-
spectrum: [],
|
|
48953
|
-
originalLength: 0,
|
|
48954
|
-
paddedLength: 0
|
|
48955
|
-
};
|
|
48956
|
-
}
|
|
48957
|
-
let complexSignal;
|
|
48958
|
-
if (signal instanceof Float64Array) {
|
|
48959
|
-
complexSignal = Array.from(signal).map((x) => complex2(x, 0));
|
|
48960
|
-
} else if (typeof signal[0] === "number") {
|
|
48961
|
-
complexSignal = signal.map((x) => complex2(x, 0));
|
|
48962
|
-
} else {
|
|
48963
|
-
complexSignal = signal;
|
|
48964
|
-
}
|
|
48965
|
-
const paddedLength = nextPowerOf22(originalLength);
|
|
48966
|
-
if (paddedLength > originalLength) {
|
|
48967
|
-
const padding = new Array(paddedLength - originalLength).fill(complex2(0, 0));
|
|
48968
|
-
complexSignal = [...complexSignal, ...padding];
|
|
48969
|
-
}
|
|
48970
|
-
const spectrum = fftCore(complexSignal, false);
|
|
48971
|
-
return {
|
|
48972
|
-
spectrum,
|
|
48973
|
-
originalLength,
|
|
48974
|
-
paddedLength
|
|
48975
|
-
};
|
|
48976
|
-
}
|
|
48977
|
-
function ifft2(spectrum, originalLength) {
|
|
48978
|
-
if (spectrum.length === 0) {
|
|
48979
|
-
return [];
|
|
48980
|
-
}
|
|
48981
|
-
const paddedLength = nextPowerOf22(spectrum.length);
|
|
48982
|
-
let paddedSpectrum = spectrum;
|
|
48983
|
-
if (paddedLength > spectrum.length) {
|
|
48984
|
-
const padding = new Array(paddedLength - spectrum.length).fill(complex2(0, 0));
|
|
48985
|
-
paddedSpectrum = [...spectrum, ...padding];
|
|
48986
|
-
}
|
|
48987
|
-
const result = fftCore(paddedSpectrum, true);
|
|
48988
|
-
if (originalLength !== void 0 && originalLength < result.length) {
|
|
48989
|
-
return result.slice(0, originalLength);
|
|
48990
|
-
}
|
|
48991
|
-
return result;
|
|
48992
|
-
}
|
|
48993
|
-
function ifftReal(spectrum, originalLength) {
|
|
48994
|
-
const complex3 = ifft2(spectrum, originalLength);
|
|
48995
|
-
return complex3.map((c) => c.re);
|
|
48996
|
-
}
|
|
48997
|
-
|
|
48998
48945
|
// src/signal/conv.ts
|
|
48999
48946
|
function convDirect(x, h, mode2 = "full") {
|
|
49000
48947
|
const xArr = Array.isArray(x) ? x : Array.from(x);
|
|
@@ -51570,7 +51517,7 @@ export {
|
|
|
51570
51517
|
fftGpuDispatch,
|
|
51571
51518
|
fftfreq,
|
|
51572
51519
|
fftn,
|
|
51573
|
-
fftshift,
|
|
51520
|
+
fftshift2 as fftshift,
|
|
51574
51521
|
fibonacci,
|
|
51575
51522
|
filter2 as filter,
|
|
51576
51523
|
filtfilt,
|
|
@@ -51670,7 +51617,7 @@ export {
|
|
|
51670
51617
|
idst,
|
|
51671
51618
|
idwt,
|
|
51672
51619
|
ifft,
|
|
51673
|
-
ifftshift,
|
|
51620
|
+
ifftshift2 as ifftshift,
|
|
51674
51621
|
im,
|
|
51675
51622
|
implicitDiff,
|
|
51676
51623
|
indexFn as index,
|
|
@@ -44,11 +44,13 @@
|
|
|
44
44
|
*
|
|
45
45
|
* @packageDocumentation
|
|
46
46
|
*/
|
|
47
|
-
/**
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
/**
|
|
48
|
+
* A complex number as a plain `{re, im}` pair. Consolidated onto
|
|
49
|
+
* `@danielsimonjr/mathts-core/internal`'s byte-identical `ComplexValue` (see
|
|
50
|
+
* docs/Architecture/duplicate-symbols.json) rather than redeclared locally.
|
|
51
|
+
*/
|
|
52
|
+
import type { ComplexValue } from '@danielsimonjr/mathts-core/internal';
|
|
53
|
+
export type { ComplexValue };
|
|
52
54
|
/** A complex-valued dense matrix, stored as parallel real/imaginary 2-D arrays. */
|
|
53
55
|
export interface ComplexMatrix {
|
|
54
56
|
re: number[][];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix-functions.d.ts","sourceRoot":"","sources":["../../src/numeric/matrix-functions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;
|
|
1
|
+
{"version":3,"file":"matrix-functions.d.ts","sourceRoot":"","sources":["../../src/numeric/matrix-functions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IACf,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;CAChB;AAED,uEAAuE;AACvE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,EAAE,YAAY,KAAK,YAAY,CAAC;AA0PtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,IAAI,CAClB,CAAC,EAAE,MAAM,EAAE,EAAE,EACb,CAAC,EAAE,qBAAqB,EACxB,OAAO,CAAC,EAAE,qBAAqB,EAAE,GAChC,aAAa,CAmGf;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAKxD;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAKxD;AAeD;2EAC2E;AAC3E,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,aAAa,CAEjD;AAED;2EAC2E;AAC3E,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,aAAa,CAEjD"}
|
|
@@ -24,10 +24,16 @@ export declare function irfft(spec: {
|
|
|
24
24
|
}, n: number): number[];
|
|
25
25
|
/**
|
|
26
26
|
* Shift the zero-frequency component to the center of the spectrum (roll by `floor(n/2)`).
|
|
27
|
+
*
|
|
28
|
+
* Thin `number[]` public surface over the package's single roll algorithm
|
|
29
|
+
* (`fftshift<T>` in `./fft.ts`) — same behavior, delegated to keep one
|
|
30
|
+
* implementation.
|
|
27
31
|
*/
|
|
28
32
|
export declare function fftshift(x: number[]): number[];
|
|
29
33
|
/**
|
|
30
34
|
* Inverse of {@link fftshift} (roll by `ceil(n/2)`).
|
|
35
|
+
*
|
|
36
|
+
* Thin `number[]` public surface over `ifftshift<T>` in `./fft.ts`.
|
|
31
37
|
*/
|
|
32
38
|
export declare function ifftshift(x: number[]): number[];
|
|
33
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fft-helpers.d.ts","sourceRoot":"","sources":["../../src/signal/fft-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fft-helpers.d.ts","sourceRoot":"","sources":["../../src/signal/fft-helpers.ts"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,CAYhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAY/E;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,MAAM,EAAE,CAW1D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,MAAM,EAAE,CAO3D;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG;IAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAKtE"}
|
package/dist/signal/fft.d.ts
CHANGED
|
@@ -122,6 +122,15 @@ export declare function fft2(matrix: number[][] | ComplexNumber[][]): ComplexNum
|
|
|
122
122
|
* @returns 2D spatial domain result
|
|
123
123
|
*/
|
|
124
124
|
export declare function ifft2(spectrum: ComplexNumber[][]): ComplexNumber[][];
|
|
125
|
+
/**
|
|
126
|
+
* The single roll algorithm shared by every fftshift/ifftshift surface in the
|
|
127
|
+
* package (the generic `<T>` toolkit members below and the public `number[]`
|
|
128
|
+
* helpers in `./fft-helpers.ts` both route through this). Rotates `arr` left by
|
|
129
|
+
* `count`: the first `count` elements move to the end. numpy.fft uses
|
|
130
|
+
* `floor(n/2)` for fftshift and `ceil(n/2)` for ifftshift so the two are exact
|
|
131
|
+
* inverses on odd lengths.
|
|
132
|
+
*/
|
|
133
|
+
export declare function rollBy<T>(arr: T[], count: number): T[];
|
|
125
134
|
/**
|
|
126
135
|
* Shift zero-frequency component to center of spectrum
|
|
127
136
|
*
|
package/dist/signal/fft.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../src/signal/fft.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,GAAE,MAAU,GAAG,aAAa,CAEjE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAE3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAEnD;AA0DD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,aAAa,EAAE,GAAG,SAAS,CAqChF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAuBxF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAE5D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,MAAM,EAAE,CAa1E;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,CAoC9E;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,CA8BpE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../../src/signal/fft.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,GAAE,MAAU,GAAG,aAAa,CAEjE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,CAE3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAEnD;AA0DD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,aAAa,EAAE,GAAG,SAAS,CAqChF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CAuBxF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAEhE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAE5D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,MAAU,GAAG,MAAM,EAAE,CAa1E;AAED;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,CAoC9E;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,GAAG,aAAa,EAAE,EAAE,CA8BpE;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE/C"}
|