@pawells/math-extended 1.0.5 → 1.1.1

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.
Files changed (41) hide show
  1. package/README.md +5 -5
  2. package/build/angles.d.ts +33 -3
  3. package/build/angles.d.ts.map +1 -1
  4. package/build/angles.js +51 -34
  5. package/build/angles.js.map +1 -1
  6. package/build/interpolation.d.ts +378 -63
  7. package/build/interpolation.d.ts.map +1 -1
  8. package/build/interpolation.js +378 -63
  9. package/build/interpolation.js.map +1 -1
  10. package/build/matrices/asserts.d.ts +12 -15
  11. package/build/matrices/asserts.d.ts.map +1 -1
  12. package/build/matrices/asserts.js +12 -15
  13. package/build/matrices/asserts.js.map +1 -1
  14. package/build/matrices/core.d.ts +11 -12
  15. package/build/matrices/core.d.ts.map +1 -1
  16. package/build/matrices/core.js +11 -12
  17. package/build/matrices/core.js.map +1 -1
  18. package/build/matrices/decompositions.d.ts +23 -24
  19. package/build/matrices/decompositions.d.ts.map +1 -1
  20. package/build/matrices/decompositions.js +85 -141
  21. package/build/matrices/decompositions.js.map +1 -1
  22. package/build/matrices/linear-algebra.d.ts +6 -1
  23. package/build/matrices/linear-algebra.d.ts.map +1 -1
  24. package/build/matrices/linear-algebra.js +54 -19
  25. package/build/matrices/linear-algebra.js.map +1 -1
  26. package/build/matrices/transformations.d.ts +9 -12
  27. package/build/matrices/transformations.d.ts.map +1 -1
  28. package/build/matrices/transformations.js +9 -12
  29. package/build/matrices/transformations.js.map +1 -1
  30. package/build/quaternions/core.d.ts +6 -2
  31. package/build/quaternions/core.d.ts.map +1 -1
  32. package/build/quaternions/core.js +17 -10
  33. package/build/quaternions/core.js.map +1 -1
  34. package/build/random.d.ts +5 -2
  35. package/build/random.d.ts.map +1 -1
  36. package/build/random.js +20 -17
  37. package/build/random.js.map +1 -1
  38. package/build/vectors/core.d.ts.map +1 -1
  39. package/build/vectors/core.js +5 -9
  40. package/build/vectors/core.js.map +1 -1
  41. package/package.json +11 -14
@@ -1,4 +1,4 @@
1
- import { AssertNumber, AssertInstanceOf } from '@pawells/typescript-common';
1
+ import { AssertNumber, AssertInstanceOf, ArraySortBy } from '@pawells/typescript-common';
2
2
  import { MatrixMultiply } from './arithmetic.js';
3
3
  import { AssertMatrix, AssertMatrixRow, AssertMatrixValue, AssertMatrix1, AssertMatrix2, MatrixError } from './asserts.js';
4
4
  import { MatrixSize, MatrixCreate, MatrixClone, MatrixIdentity, MatrixTranspose } from './core.js';
@@ -315,126 +315,104 @@ export function MatrixEigenQRIteration(matrix, iterations = 50) {
315
315
  };
316
316
  }
317
317
  /**
318
- * Performs LU decomposition of a square matrix A = L × U using Doolittle's method.
318
+ * Performs LU decomposition of a square matrix with partial pivoting: P × A = L × U.
319
319
  *
320
320
  * LU decomposition factors a square matrix into the product of a lower triangular matrix L
321
- * and an upper triangular matrix U. This decomposition is fundamental for solving linear
322
- * systems, computing determinants, and matrix inversion.
321
+ * and an upper triangular matrix U, with a permutation vector P recording the row swaps
322
+ * performed during partial (column) pivoting. Partial pivoting selects the largest-magnitude
323
+ * element in each column as the pivot, improving numerical stability.
323
324
  *
324
325
  * **Mathematical Background:**
325
326
  * - L is lower triangular with 1's on the diagonal (unit lower triangular)
326
327
  * - U is upper triangular containing the pivot elements
327
- * - The decomposition exists if all leading principal minors are non-zero
328
- * - Gaussian elimination with partial pivoting would be more stable, but this
329
- * implementation uses Doolittle's method without pivoting for simplicity
328
+ * - P is a permutation vector where P[i] is the original row index at position i
329
+ * - The relationship is: P × A = L × U
330
330
  *
331
331
  * **Applications:**
332
- * - Solving linear systems: Ax = b becomes LUx = b, solve Ly = b then Ux = y
333
- * - Computing determinant: det(A) = det(L) × det(U) = det(U) = ∏ᵢ U[i,i]
334
- * - Matrix inversion: A⁻¹ = U⁻¹L⁻¹
332
+ * - Solving linear systems: Ax = b apply permutation, solve Ly = Pb, then Ux = y
333
+ * - Computing determinant: det(A) = ∏ᵢ U[i,i] (with sign from permutation parity)
334
+ * - Matrix inversion: used internally by `MatrixInverse` for n > 3
335
335
  *
336
- * @param matrix - Square matrix to decompose (must be non-singular and not require pivoting)
337
- * @returns Object containing L (lower triangular) and U (upper triangular) matrices
338
- * @throws {Error} If matrix is not square, singular, or contains invalid values
339
- *
340
- * @note This implementation does not use partial pivoting (row swapping). It will fail for matrices with zero-valued or near-zero leading minors even if the matrix is otherwise invertible (e.g., [[0,1],[1,0]]). For general matrices, use MatrixInverse instead.
336
+ * @param matrix - Square matrix to decompose (must be non-singular)
337
+ * @returns Object `{ L, U, P }` — lower triangular, upper triangular, and permutation vector
338
+ * @throws {MatrixError} If matrix is not square, singular (zero pivot), or contains invalid values
341
339
  *
342
340
  * @example
343
341
  * ```ts
344
342
  * const A = [[2, 1], [1, 1]];
345
- * const { L, U } = MatrixLU(A);
346
- * // L = [[1, 0], [0.5, 1]], U = [[2, 1], [0, 0.5]]
343
+ * const { L, U, P } = MatrixLU(A);
344
+ * // L = [[1, 0], [0.5, 1]], U = [[2, 1], [0, 0.5]], P = [0, 1]
347
345
  *
348
- * // Verify: L × U should equal A
346
+ * // Verify: L × U should equal P-permuted A
349
347
  * const product = MatrixMultiply(L, U);
350
348
  * // product ≈ [[2, 1], [1, 1]]
351
- *
352
- * // Solve Ax = b using LU decomposition
353
- * const b = [3, 2];
354
- * // First solve Ly = b, then Ux = y
355
349
  * ```
356
350
  *
357
351
  * @complexity Time: O(n³/3), Space: O(n²)
358
352
  * @see {@link MatrixCholesky} For symmetric positive definite matrices (more efficient)
353
+ * @see {@link MatrixSolve} For solving Ax = b directly
359
354
  */
360
355
  export function MatrixLU(matrix) {
361
356
  AssertMatrix(matrix, { square: true });
362
357
  const [n] = MatrixSize(matrix);
358
+ // Work on a mutable copy so partial pivoting can reorder rows
359
+ const A = matrix.map((row) => [...row]);
363
360
  const L = MatrixCreate(n, n);
364
361
  const U = MatrixCreate(n, n);
362
+ // P[i] records which original row now occupies position i after all swaps
363
+ const P = Array.from({ length: n }, (_, i) => i);
365
364
  // Initialize L's diagonal with 1's (unit lower triangular)
366
365
  for (let i = 0; i < n; i++) {
367
- const lRow = L[i];
368
- AssertMatrixRow(lRow);
369
- lRow[i] = 1;
366
+ L[i][i] = 1;
370
367
  }
371
- // Perform Doolittle's LU decomposition
368
+ // Doolittle's method with partial (column) pivoting
372
369
  for (let i = 0; i < n; i++) {
373
- // Compute upper triangular matrix U (row by row)
370
+ // --- Partial pivoting: find row with largest |A[k][i]| for k >= i ---
371
+ let maxVal = Math.abs(A[i][i]);
372
+ let maxRow = i;
373
+ for (let k = i + 1; k < n; k++) {
374
+ const val = Math.abs(A[k][i]);
375
+ if (val > maxVal) {
376
+ maxVal = val;
377
+ maxRow = k;
378
+ }
379
+ }
380
+ if (maxRow !== i) {
381
+ // Swap rows in A
382
+ [A[i], A[maxRow]] = [A[maxRow], A[i]];
383
+ // Swap rows in P
384
+ [P[i], P[maxRow]] = [P[maxRow], P[i]];
385
+ // Swap already-computed L columns (indices 0..i-1)
386
+ for (let j = 0; j < i; j++) {
387
+ const tmp = L[i][j];
388
+ L[i][j] = L[maxRow][j];
389
+ L[maxRow][j] = tmp;
390
+ }
391
+ }
392
+ // Compute U row i first — the actual pivot is U[i][i] (Schur complement),
393
+ // which may be zero even if A[i][i] is non-zero for singular matrices.
374
394
  for (let j = i; j < n; j++) {
375
395
  let sum = 0;
376
- // Subtract the sum of L[i,k] * U[k,j] for k < i
377
396
  for (let k = 0; k < i; k++) {
378
- const lRow = L[i];
379
- const uRowK = U[k];
380
- AssertMatrixRow(lRow);
381
- AssertMatrixRow(uRowK);
382
- const lVal = lRow[k];
383
- AssertMatrixValue(lVal, { rowIndex: i, columnIndex: k });
384
- const uVal = uRowK[j];
385
- AssertMatrixValue(uVal, { rowIndex: k, columnIndex: j });
386
- sum += lVal * uVal;
397
+ sum += L[i][k] * U[k][j];
387
398
  }
388
- const mRow = matrix[i];
389
- const uRow = U[i];
390
- AssertMatrixRow(mRow);
391
- AssertMatrixRow(uRow);
392
- const mVal = mRow[j];
393
- AssertMatrixValue(mVal, { rowIndex: i, columnIndex: j });
394
- uRow[j] = mVal - sum; // U[i,j] = A[i,j] - sum
399
+ U[i][j] = A[i][j] - sum;
395
400
  }
396
- // Check for zero pivot after computing the diagonal element
397
- const uRow = U[i];
398
- AssertMatrixRow(uRow);
399
- const uVal = uRow[i]; // Pivot element U[i,i]
400
- AssertMatrixValue(uVal, { rowIndex: i, columnIndex: i });
401
- // Fix: Should throw if pivot is too close to zero (singular matrix)
402
- if (Math.abs(uVal) < MATRIX_NUMERICAL_TOLERANCE) {
401
+ // Check for zero pivot after computing U[i][i]
402
+ const pivot = U[i][i];
403
+ if (Math.abs(pivot) < MATRIX_NUMERICAL_TOLERANCE) {
403
404
  throw new MatrixError('Matrix is singular (zero pivot element)');
404
405
  }
405
- // Compute lower triangular matrix L (column by column)
406
+ // Compute L column i (rows below diagonal)
406
407
  for (let j = i + 1; j < n; j++) {
407
408
  let sum = 0;
408
- // Subtract the sum of L[j,k] * U[k,i] for k < i
409
409
  for (let k = 0; k < i; k++) {
410
- const lRowJ = L[j];
411
- const uRowK = U[k];
412
- AssertMatrixRow(lRowJ);
413
- AssertMatrixRow(uRowK);
414
- const lVal = lRowJ[k];
415
- AssertMatrixValue(lVal, { rowIndex: j, columnIndex: k });
416
- const uVal = uRowK[i];
417
- AssertMatrixValue(uVal, { rowIndex: k, columnIndex: i });
418
- sum += lVal * uVal;
410
+ sum += L[j][k] * U[k][i];
419
411
  }
420
- const uRow = U[i];
421
- AssertMatrixRow(uRow);
422
- const uVal = uRow[i]; // Pivot element U[i,i]
423
- AssertMatrixValue(uVal, { rowIndex: i, columnIndex: i });
424
- // Check for zero pivot (singular matrix)
425
- if (Math.abs(uVal) < MATRIX_NUMERICAL_TOLERANCE) {
426
- throw new MatrixError('Matrix is singular (zero pivot element)');
427
- }
428
- const mRowJ = matrix[j];
429
- const lRowJ = L[j];
430
- AssertMatrixRow(mRowJ);
431
- AssertMatrixRow(lRowJ);
432
- const mVal = mRowJ[i];
433
- AssertMatrixValue(mVal, { rowIndex: j, columnIndex: i });
434
- lRowJ[i] = (mVal - sum) / uVal; // L[j,i] = (A[j,i] - sum) / U[i,i]
412
+ L[j][i] = (A[j][i] - sum) / pivot;
435
413
  }
436
414
  }
437
- return { L, U };
415
+ return { L, U, P };
438
416
  }
439
417
  /**
440
418
  * Performs QR decomposition A = Q × R using Modified Gram-Schmidt orthogonalization.
@@ -675,68 +653,29 @@ export function MatrixSVD(matrix) {
675
653
  const ATA = MatrixMultiply(AT, matrix);
676
654
  // Step 2: Eigendecomposition of A^T A
677
655
  const { eigenvalues, eigenvectors } = MatrixEigen(ATA);
678
- const S = Array.isArray(eigenvalues) ? eigenvalues.map((ev) => Math.sqrt(Math.max(ev, 0))) : [];
679
- const indices = [];
680
- if (Array.isArray(S)) {
681
- for (let i = 0; i < S.length; i++) {
682
- indices.push(i);
683
- }
684
- indices.sort((a, b) => (S[b] ?? 0) - (S[a] ?? 0));
685
- }
686
- // Defensive: filter out undefined indices and values
687
- const validIndices = [];
688
- for (const idx of indices) {
689
- if (typeof idx === 'number' && isFinite(idx) && idx >= 0 && idx < eigenvalues.length) {
690
- validIndices.push(idx);
691
- }
692
- }
693
- const sSorted = [];
694
- const V = [];
695
- for (const i of validIndices) {
696
- sSorted.push(typeof S[i] === 'number' ? S[i] : 0);
697
- const vCol = [];
698
- for (const r of eigenvectors) {
699
- vCol.push(Array.isArray(r) && typeof r[i] === 'number' ? r[i] : 0);
700
- }
701
- V.push(vCol);
702
- }
703
- // vMat: n x n, columns are right singular vectors
704
- const vMat = [];
705
- const vColLength = V.length > 0 && Array.isArray(V[0]) ? V[0].length : 0;
706
- for (let colIdx = 0; colIdx < vColLength; colIdx++) {
707
- const col = [];
708
- for (const row of V) {
709
- const value = Array.isArray(row) && typeof row[colIdx] === 'number' ? row[colIdx] : 0;
710
- col.push(typeof value === 'number' ? value : 0);
711
- }
712
- vMat.push(col);
713
- }
714
- // Step 3: Compute U = AVΣ⁻¹ (m x n)
656
+ // Singular values are sqrt of eigenvalues; sort descending
657
+ const S = eigenvalues.map((ev) => Math.sqrt(Math.max(ev, 0)));
658
+ const indices = ArraySortBy(S.map((_, i) => i), (i) => S[i], 'desc');
659
+ const sSorted = indices.map((i) => S[i]);
660
+ // V columns: each is the eigenvector at the sorted index
661
+ // eigenvectors is stored row-major, so eigenvectors[row][col] = component `row` of eigenvector `col`
662
+ const V = indices.map((i) => eigenvectors.map((row) => row[i]));
663
+ // vMat: n × n matrix where each row is a right singular vector
664
+ const vColLength = V.length > 0 ? V[0].length : 0;
665
+ const vMat = Array.from({ length: vColLength }, (_, rowIdx) => V.map((col) => col[rowIdx]));
666
+ // Step 3: Compute U = AVΣ⁻¹ (m × n)
715
667
  const U = MatrixCreate(m, n);
716
668
  for (let j = 0; j < n; j++) {
717
669
  const sigma = sSorted[j];
718
- if (sigma && sigma > MATRIX_NUMERICAL_TOLERANCE) {
719
- // vj as a column vector (n x 1)
720
- const vjCol = [];
721
- for (const row of vMat) {
722
- const value = Array.isArray(row) && typeof row[j] === 'number' ? row[j] : 0;
723
- vjCol.push([typeof value === 'number' ? value : 0]);
724
- }
725
- const av = MatrixMultiply(matrix, vjCol); // m x 1
726
- for (let i = 0; i < m; i++) {
727
- const uRow = U[i];
728
- const avRow = av[i];
729
- if (Array.isArray(uRow) && Array.isArray(avRow))
730
- uRow[j] = (typeof avRow[0] === 'number' ? avRow[0] : 0) / sigma;
731
- }
732
- }
733
- else {
670
+ if (sigma > MATRIX_NUMERICAL_TOLERANCE) {
671
+ // Multiply A by the j-th right singular vector (n×1 column)
672
+ const vjCol = vMat.map((row) => [row[j]]);
673
+ const av = MatrixMultiply(matrix, vjCol); // m×1
734
674
  for (let i = 0; i < m; i++) {
735
- const uRow = U[i];
736
- if (Array.isArray(uRow))
737
- uRow[j] = 0;
675
+ U[i][j] = av[i][0] / sigma;
738
676
  }
739
677
  }
678
+ // U column j remains zero for near-zero singular values (already zero from MatrixCreate)
740
679
  }
741
680
  // Step 4: Orthonormalize U columns (Gram-Schmidt)
742
681
  const uOrtho = MatrixGramSchmidt(U);
@@ -750,7 +689,8 @@ export function MatrixSVD(matrix) {
750
689
  }
751
690
  /**
752
691
  * Solves the linear system Ax = b for the unknown vector x.
753
- * Uses LU decomposition internally followed by forward and back substitution.
692
+ * Uses LU decomposition with partial pivoting internally: decomposes A into P, L, U,
693
+ * applies the row permutation to b, then performs forward and back substitution.
754
694
  *
755
695
  * Given an n×n coefficient matrix A and an n-element right-hand side vector b,
756
696
  * finds x such that A × x = b.
@@ -777,8 +717,15 @@ export function MatrixSolve(a, b) {
777
717
  if (b.length !== n) {
778
718
  throw new MatrixError(`Right-hand side vector length (${b.length}) must match matrix dimension (${n})`);
779
719
  }
780
- const { L, U } = MatrixLU(a);
781
- // Forward substitution: solve Ly = b (L has 1s on its diagonal)
720
+ const { L, U, P } = MatrixLU(a);
721
+ // Apply row permutation to b: b_perm[i] = b[P[i]]
722
+ const bPerm = P.map((pi) => {
723
+ const val = b[pi];
724
+ if (val === undefined)
725
+ throw new MatrixError(`b[${pi}] is undefined`);
726
+ return val;
727
+ });
728
+ // Forward substitution: solve Ly = b_perm (L has 1s on its diagonal)
782
729
  const y = new Array(n).fill(0);
783
730
  for (let i = 0; i < n; i++) {
784
731
  const lRow = L[i];
@@ -789,10 +736,7 @@ export function MatrixSolve(a, b) {
789
736
  AssertMatrixValue(lVal);
790
737
  sum += lVal * y[j];
791
738
  }
792
- const bi = b[i];
793
- if (bi === undefined)
794
- throw new MatrixError(`b[${i}] is undefined`);
795
- y[i] = bi - sum;
739
+ y[i] = bPerm[i] - sum;
796
740
  }
797
741
  // Back substitution: solve Ux = y
798
742
  const x = new Array(n).fill(0);
@@ -1 +1 @@
1
- {"version":3,"file":"decompositions.js","sourceRoot":"","sources":["../../src/matrices/decompositions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decompositions.js","sourceRoot":"","sources":["../../src/matrices/decompositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3H,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAqE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC7C,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,2EAA2E;IAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,CAAC,UAAU,CAAC,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,eAAe,CAAC,KAAK,CAAC,CAAC;YAEvB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACb,wEAAwE;gBACxE,IAAI,GAAG,GAAG,CAAC,CAAC;gBAEZ,sDAAsD;gBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACtB,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBACzD,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC;gBACpB,CAAC;gBAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,iBAAiB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAE9D,MAAM,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC;gBAEjC,0DAA0D;gBAC1D,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3E,CAAC;gBAED,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACP,0FAA0F;gBAC1F,IAAI,GAAG,GAAG,CAAC,CAAC;gBAEZ,4DAA4D;gBAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC1D,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC1D,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC;gBACtB,CAAC;gBAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,iBAAiB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9D,iBAAiB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAE3D,2EAA2E;gBAC3E,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,0BAA0B,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBACxF,CAAC;gBAED,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;YACvC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,CAAC,CAAC;AACV,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,UAAU,WAAW,CAAC,MAAe;IAC1C,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/B,oFAAoF;IACpF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,2EAA2E;QAC3E,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC;QACzB,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACjE,OAAO;YACN,WAAW,EAAE,CAAC,KAAK,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACnB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACb,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,0EAA0E;QAC1E,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAEhC,uDAAuD;QACvD,+DAA+D;QAC/D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAEjD,gCAAgC;QAChC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEvC,gDAAgD;QAChD,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAExC,0DAA0D;QAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,0BAA0B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,0BAA0B,EAAE,CAAC;YAC1F,mCAAmC;YACnC,8CAA8C;YAC9C,2CAA2C;YAC3C,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC;YAC1D,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAClC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAElC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAExB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,0BAA0B,EAAE,CAAC;YACrD,oDAAoD;YACpD,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC;YAC1D,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAClC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAElC,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;YAClC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAExB,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;YAClC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACP,iEAAiE;YACjE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,YAAY,CAAC;YAC1D,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAClC,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAElC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAExB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACxB,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,gEAAgE;QAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;YAEb,iDAAiD;YACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBACzC,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBAElC,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;gBAChC,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBAC1E,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;YACnB,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEvB,uCAAuC;YACvC,IAAI,IAAI,GAAG,0BAA0B,EAAE,CAAC;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;oBACzC,eAAe,CAAC,gBAAgB,CAAC,CAAC;oBAElC,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;oBAChC,iBAAiB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBACxD,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;gBAClC,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO;YACN,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC/B,YAAY;SACZ,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAe,EAAE,aAAqB,EAAE;IAC9E,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/B,4DAA4D;IAC5D,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C;IAE9E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9C,0DAA0D;QAC1D,IAAI,CAAU,CAAC;QAAC,IAAI,CAAU,CAAC;QAE/B,IAAI,CAAC;YACJ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACvB,uFAAuF;YACvF,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;YAC9E,IAAI,GAAG,YAAY,KAAK,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC3G,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY;YACrC,CAAC;iBAAM,CAAC;gBACP,MAAM,GAAG,CAAC;YACX,CAAC;QACF,CAAC;QAED,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEnC,wDAAwD;QACxD,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,eAAe,CAAC,KAAK,CAAC,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,2BAA2B,EAAE,CAAC;oBAClD,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM;gBACP,CAAC;YACF,CAAC;YACD,IAAI,CAAC,SAAS;gBAAE,MAAM;QACvB,CAAC;QACD,IAAI,SAAS;YAAE,MAAM;IACtB,CAAC;IAED,4DAA4D;IAC5D,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,eAAe,CAAC,KAAK,CAAC,CAAC;QAEvB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,iBAAiB,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACN,WAAW;QACX,YAAY,EAAE,MAAM,EAAE,2DAA2D;KACjF,CAAC;AACH,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAe;IACvC,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/B,8DAA8D;IAC9D,MAAM,CAAC,GAAe,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,GAAa,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3D,2DAA2D;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,oDAAoD;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,uEAAuE;QACvE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,CAAC,CAAC;QACvD,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,CAAC,CAAC;YAEtD,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,CAAC;gBACb,MAAM,GAAG,CAAC,CAAC;YACZ,CAAC;QACF,CAAC;QAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YAClB,iBAAiB;YACjB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAa,EAAE,CAAC,CAAC,CAAC,CAAa,CAAC,CAAC;YAC9D,iBAAiB;YACjB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAW,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;YAC1D,mDAAmD;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAI,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,CAAC;gBAC3C,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC,GAAI,CAAC,CAAC,MAAM,CAAc,CAAC,CAAC,CAAW,CAAC;gBAC5D,CAAC,CAAC,MAAM,CAAc,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAClC,CAAC;QACF,CAAC;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,IAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,GAAK,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,CAAC;YAC9E,CAAC;YACA,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC,GAAI,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,GAAG,GAAG,CAAC;QAC/D,CAAC;QAED,+CAA+C;QAC/C,MAAM,KAAK,GAAI,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,CAAC;QAE9C,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,0BAA0B,EAAE,CAAC;YAClD,MAAM,IAAI,WAAW,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;QAED,2CAA2C;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,IAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,GAAK,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,CAAC;YAC9E,CAAC;YACA,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QACzE,CAAC;IACF,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACpB,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAe,EAAE,qBAAqB,GAAG,KAAK;IACtE,YAAY,CAAC,MAAM,CAAC,CAAC;IAErB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElC,8DAA8D;IAC9D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,kDAAkD;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,eAAe,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,IAAI,GAAG,0BAA0B,EAAE,CAAC;YACvC,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,4CAA4C,CAAC,CAAC;YAC1E,CAAC;YACD,6EAA6E;YAC7E,MAAM,SAAS,GAAa,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7C,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,IAAI,GAAG,GAAG,CAAC,CAAC;gBAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,eAAe,CAAC,IAAI,CAAC,CAAC;oBAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBACzD,GAAG,IAAK,IAAe,GAAI,SAAS,CAAC,CAAC,CAAY,CAAC;gBACpD,CAAC;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,eAAe,CAAC,IAAI,CAAC,CAAC;oBAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;oBAEzD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAClC,YAAY,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC;oBAC5E,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,QAAQ,GAAG,0BAA0B,EAAE,CAAC;gBAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;oBACrF,IAAI,CAAC,CAAC,CAAC,GAAI,SAAS,CAAC,CAAC,CAAY,GAAG,QAAQ,CAAC;gBAC/C,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;oBACrF,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACb,CAAC;YACF,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,eAAe,CAAC,IAAI,CAAC,CAAC;YAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;YAED,SAAS;QACV,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,eAAe,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,iBAAiB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,eAAe,CAAC,IAAI,CAAC,CAAC;gBAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1D,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1D,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,eAAe,CAAC,IAAI,CAAC,CAAC;gBAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACtB,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1D,iBAAiB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;YACjC,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,UAAU,SAAS,CAAC,MAAe;IACxC,YAAY,CAAC,MAAM,CAAC,CAAC;IAErB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElC,kCAAkC;IAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAElC,OAAO;YAEN,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAER,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEpB,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9F,OAAO;YAEN,CAAC;YAED,CAAC,EAAE,CAAC,IAAI,CAAC;YAET,EAAE;SACF,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,kCAAkC;IAClC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAEvC,sCAAsC;IACtC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAEvD,2DAA2D;IAC3D,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,MAAM,CAAC,CAAC;IAE/E,MAAM,OAAO,GAAa,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC;IAE7D,yDAAyD;IACzD,qGAAqG;IACrG,MAAM,CAAC,GAAe,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAgB,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;IAEpG,+DAA+D;IAC/D,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAY,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACtE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAgB,CAAC,MAAM,CAAW,CAAC,CACnD,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,GAAY,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAW,CAAC;QAEnC,IAAI,KAAK,GAAG,0BAA0B,EAAE,CAAC;YACxC,4DAA4D;YAC5D,MAAM,KAAK,GAAY,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAE,GAAgB,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC;YAC3E,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM;YAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAC,GAAK,EAAE,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,GAAG,KAAK,CAAC;YACpE,CAAC;QACF,CAAC;QACD,yFAAyF;IAC1F,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACpC,+BAA+B;IAC/B,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO;QAEN,CAAC,EAAE,MAAM;QAET,CAAC,EAAE,OAAO;QAEV,EAAE;KACF,CAAC;AACH,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,WAAW,CAAC,CAAU,EAAE,CAAW;IAClD,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAElC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,WAAW,CAAC,kCAAkC,CAAC,CAAC,MAAM,kCAAkC,CAAC,GAAG,CAAC,CAAC;IACzG,CAAC;IAED,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhC,kDAAkD;IAClD,MAAM,KAAK,GAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,GAAG,KAAK,SAAS;YAAE,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACtE,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,qEAAqE;IACrE,MAAM,CAAC,GAAa,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,eAAe,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,GAAG,IAAI,IAAI,GAAI,CAAC,CAAC,CAAC,CAAY,CAAC;QAChC,CAAC;QAED,CAAC,CAAC,CAAC,CAAC,GAAI,KAAK,CAAC,CAAC,CAAY,GAAG,GAAG,CAAC;IACnC,CAAC;IAED,kCAAkC;IAClC,MAAM,CAAC,GAAa,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,eAAe,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,GAAG,IAAI,IAAI,GAAI,CAAC,CAAC,CAAC,CAAY,CAAC;QAChC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,KAAK,KAAK,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,qDAAqD,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAY,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,CAAC;AACV,CAAC"}
@@ -35,9 +35,14 @@ export declare function MatrixCofactor(matrix: IMatrix): IMatrix;
35
35
  export declare function MatrixAdjoint(matrix: IMatrix): IMatrix;
36
36
  /**
37
37
  * Computes the matrix inverse (reciprocal) of a square matrix.
38
+ *
39
+ * For matrices up to 3×3, uses the closed-form adjugate/cofactor method.
40
+ * For larger matrices (n > 3), uses LU decomposition with partial pivoting (O(n³))
41
+ * by solving A × X = I column-by-column.
42
+ *
38
43
  * @param matrix - The square matrix to invert (must be non-singular)
39
44
  * @returns {IMatrix} The inverse matrix A⁻¹
40
- * @throws {Error} If the matrix is not square or is singular (determinant is zero)
45
+ * @throws {MatrixError} If the matrix is not square or is singular (determinant is zero)
41
46
  * @example MatrixInverse([[1, 2], [3, 4]]) // [[-2, 1], [1.5, -0.5]]
42
47
  */
43
48
  export declare function MatrixInverse(matrix: IMatrix): IMatrix;
@@ -1 +1 @@
1
- {"version":3,"file":"linear-algebra.d.ts","sourceRoot":"","sources":["../../src/matrices/linear-algebra.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAqCzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnF;AAUD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAevD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAgCtD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAoF1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BzE"}
1
+ {"version":3,"file":"linear-algebra.d.ts","sourceRoot":"","sources":["../../src/matrices/linear-algebra.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAqCzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnF;AAUD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAevD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAGtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAiEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAoF1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA6BzE"}
@@ -1,6 +1,7 @@
1
- import { AssertNotEquals, AssertNumber } from '@pawells/typescript-common';
2
- import { AssertMatrix, AssertMatrix1, AssertMatrix2, AssertMatrix3, AssertMatrixRow, AssertMatrixValue } from './asserts.js';
1
+ import { AssertNumber } from '@pawells/typescript-common';
2
+ import { AssertMatrix, AssertMatrix1, AssertMatrix2, AssertMatrix3, AssertMatrixRow, AssertMatrixValue, MatrixError } from './asserts.js';
3
3
  import { MatrixCreate, MatrixSize, MatrixSizeSquare, MatrixTranspose } from './core.js';
4
+ import { MatrixLU } from './decompositions.js';
4
5
  import { VectorProject, VectorSubtract } from '../vectors/core.js';
5
6
  const GRAM_SCHMIDT_TOLERANCE = 1e-10;
6
7
  /**
@@ -95,32 +96,66 @@ export function MatrixAdjoint(matrix) {
95
96
  }
96
97
  /**
97
98
  * Computes the matrix inverse (reciprocal) of a square matrix.
99
+ *
100
+ * For matrices up to 3×3, uses the closed-form adjugate/cofactor method.
101
+ * For larger matrices (n > 3), uses LU decomposition with partial pivoting (O(n³))
102
+ * by solving A × X = I column-by-column.
103
+ *
98
104
  * @param matrix - The square matrix to invert (must be non-singular)
99
105
  * @returns {IMatrix} The inverse matrix A⁻¹
100
- * @throws {Error} If the matrix is not square or is singular (determinant is zero)
106
+ * @throws {MatrixError} If the matrix is not square or is singular (determinant is zero)
101
107
  * @example MatrixInverse([[1, 2], [3, 4]]) // [[-2, 1], [1.5, -0.5]]
102
108
  */
103
109
  export function MatrixInverse(matrix) {
104
110
  AssertMatrix(matrix, { square: true });
105
- const det = MatrixDeterminant(matrix);
106
- AssertNotEquals(det, 0, { message: 'Matrix is not invertible (determinant is zero)' });
107
111
  const [size] = MatrixSize(matrix);
108
- const cof = MatrixCofactor(matrix);
109
- // (1/det) * transpose(cofactor matrix)
110
- const transposed = MatrixTranspose(cof);
112
+ // For 1–3×3 use the adjugate/cofactor method (closed-form, exact)
113
+ if (size <= 3) {
114
+ const det = MatrixDeterminant(matrix);
115
+ if (det === 0)
116
+ throw new MatrixError('Matrix is not invertible (determinant is zero)');
117
+ const cof = MatrixCofactor(matrix);
118
+ const transposed = MatrixTranspose(cof);
119
+ const result = MatrixCreate(size, size);
120
+ const invDet = 1 / det;
121
+ for (let row = 0; row < size; row++) {
122
+ const transposedRow = transposed[row];
123
+ AssertMatrixRow(transposedRow);
124
+ const resultRow = result[row];
125
+ AssertMatrixRow(resultRow);
126
+ for (let col = 0; col < size; col++) {
127
+ const val = transposedRow[col];
128
+ if (typeof val !== 'number')
129
+ throw new MatrixError(`Transposed matrix value at [${row}, ${col}] is not a number`);
130
+ resultRow[col] = Object.is(val * invDet, -0) ? 0 : val * invDet;
131
+ }
132
+ }
133
+ return result;
134
+ }
135
+ // For larger matrices use LU decomposition: O(n³) instead of O(n!)
136
+ // Solve A * X = I column by column using PA = LU
137
+ const { L, U, P } = MatrixLU(matrix); // throws if singular
111
138
  const result = MatrixCreate(size, size);
112
- const invDet = 1 / det;
113
- for (let row = 0; row < size; row++) {
114
- const transposedRow = transposed[row];
115
- AssertMatrixRow(transposedRow);
116
- const resultRow = result[row];
117
- AssertMatrixRow(resultRow);
118
- for (let col = 0; col < size; col++) {
119
- const val = transposedRow[col];
120
- if (typeof val !== 'number') {
121
- throw new Error(`Transposed matrix value at position [${row}, ${col}] is not a number`);
139
+ for (let col = 0; col < size; col++) {
140
+ // e_col permuted by P
141
+ const eCol = P.map((pi) => (pi === col ? 1 : 0));
142
+ // Forward substitution: Ly = eCol
143
+ const y = new Array(size).fill(0);
144
+ for (let i = 0; i < size; i++) {
145
+ let sum = 0;
146
+ for (let k = 0; k < i; k++) {
147
+ sum += L[i][k] * y[k];
148
+ }
149
+ y[i] = eCol[i] - sum;
150
+ }
151
+ // Back substitution: Ux = y
152
+ for (let i = size - 1; i >= 0; i--) {
153
+ let sum = 0;
154
+ for (let k = i + 1; k < size; k++) {
155
+ sum += U[i][k] * result[k][col];
122
156
  }
123
- resultRow[col] = Object.is(val * invDet, -0) ? 0 : val * invDet;
157
+ const uDiag = U[i][i];
158
+ result[i][col] = (y[i] - sum) / uDiag;
124
159
  }
125
160
  }
126
161
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"linear-algebra.js","sourceRoot":"","sources":["../../src/matrices/linear-algebra.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linear-algebra.js","sourceRoot":"","sources":["../../src/matrices/linear-algebra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1I,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGnE,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAChD,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEtC,6BAA6B;IAC7B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAChB,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,eAAe;IACf,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAChB,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QAChB,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/P,CAAC;IAED,0CAA0C;IAC1C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACrB,eAAe,CAAC,GAAG,CAAC,CAAC;IAErB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACvD,GAAG,IAAI,OAAO,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAe,EAAE,CAAS,EAAE,CAAS;IAC1E,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,6DAA6D;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACpC,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAe;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC7C,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAExC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACrC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,SAAS,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;IACF,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC5C,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,mBAAmB,CAAC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC5C,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElC,kEAAkE;IAClE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,gDAAgD,CAAC,CAAC;QAEvF,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC;QAEvB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YACtC,eAAe,CAAC,aAAa,CAAC,CAAC;YAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,eAAe,CAAC,SAAS,CAAC,CAAC;YAE3B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,MAAM,IAAI,WAAW,CAAC,+BAA+B,GAAG,KAAK,GAAG,mBAAmB,CAAC,CAAC;gBAClH,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC;YACjE,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,mEAAmE;IACnE,iDAAiD;IACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB;IAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAExC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QACrC,sBAAsB;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjD,kCAAkC;QAClC,MAAM,CAAC,GAAa,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,IAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,GAAI,CAAC,CAAC,CAAC,CAAY,CAAC;YAC7D,CAAC;YACD,CAAC,CAAC,CAAC,CAAC,GAAI,IAAI,CAAC,CAAC,CAAY,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,4BAA4B;QAC5B,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,GAAG,IAAM,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAY,GAAK,MAAM,CAAC,CAAC,CAAc,CAAC,GAAG,CAAY,CAAC;YACrF,CAAC;YACD,MAAM,KAAK,GAAI,CAAC,CAAC,CAAC,CAAc,CAAC,CAAC,CAAW,CAAC;YAC7C,MAAM,CAAC,CAAC,CAAc,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,CAAY,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QACjE,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAChD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,MAAM,gBAAgB,GAAe,EAAE,CAAC;IAExC,6BAA6B;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAY,EAAE,CAAC;QAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;YACnE,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC9F,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,+EAA+E;IAC/E,SAAS,qBAAqB,CAAC,QAAoB;QAClD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3C,IAAI,SAAS,GAAa,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAErB,yCAAyC;YACzC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,CAAC;oBAAE,SAAS;gBACjB,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACzC,SAAS,GAAG,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,IAAI,IAAI,GAAG,sBAAsB,EAAE,CAAC;gBACnC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACvC,CAAC;QACF,CAAC;QAED,uBAAuB;QAEvB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACrE,CAAC;IAED,6BAA6B;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACzE,IAAI,gBAAgB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QAE1C,yCAAyC;QACzC,KAAK,MAAM,cAAc,IAAI,gBAAgB,EAAE,CAAC;YAC/C,IAAI,CAAC,cAAc;gBAAE,SAAS;YAC9B,MAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAEnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,eAAe,CAAC,CAAC;gBAC1K,gCAAgC;gBAChC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,SAAS;oBAAE,SAAS;gBAC/E,gBAAgB,CAAC,CAAC,CAAC,GAAI,gBAAgB,CAAC,CAAC,CAAY,GAAI,UAAU,CAAC,CAAC,CAAY,CAAC;YACnF,CAAC;QACF,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpF,IAAI,IAAI,GAAG,sBAAsB,EAAE,CAAC;YACnC,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YAC7D,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACP,MAAM,OAAO,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;YACxD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,yBAAyB;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAAE,SAAS;YAC3D,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAW,CAAC;QACtC,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,MAAe,EAAE,CAAS,EAAE,CAAS;IAChE,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CAAC;IAC5F,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CAAC;IAC5F,YAAY,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,uCAAuC,IAAI,GAAG,EAAE,CAAC,CAAC;IACnG,YAAY,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,oCAAoC,IAAI,GAAG,EAAE,CAAC,CAAC;IAEhG,+CAA+C;IAC/C,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAa,EAAE,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAS;YACtB,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,eAAe,CAAC,UAAU,CAAC,CAAC;YAE5B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5B,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}