@smake/eigen 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +1 -1
  2. package/eigen/COPYING.APACHE +203 -0
  3. package/eigen/COPYING.BSD +26 -0
  4. package/eigen/COPYING.GPL +674 -0
  5. package/eigen/COPYING.LGPL +502 -0
  6. package/eigen/COPYING.MINPACK +51 -0
  7. package/eigen/COPYING.MPL2 +373 -0
  8. package/eigen/COPYING.README +18 -0
  9. package/eigen/Eigen/Cholesky +0 -1
  10. package/eigen/Eigen/Core +108 -266
  11. package/eigen/Eigen/Eigenvalues +0 -1
  12. package/eigen/Eigen/Geometry +3 -6
  13. package/eigen/Eigen/Householder +0 -1
  14. package/eigen/Eigen/Jacobi +0 -1
  15. package/eigen/Eigen/KLUSupport +41 -0
  16. package/eigen/Eigen/LU +2 -5
  17. package/eigen/Eigen/OrderingMethods +0 -3
  18. package/eigen/Eigen/PaStiXSupport +1 -0
  19. package/eigen/Eigen/PardisoSupport +0 -0
  20. package/eigen/Eigen/QR +0 -1
  21. package/eigen/Eigen/QtAlignedMalloc +0 -1
  22. package/eigen/Eigen/SVD +0 -1
  23. package/eigen/Eigen/Sparse +0 -2
  24. package/eigen/Eigen/SparseCholesky +0 -8
  25. package/eigen/Eigen/SparseLU +4 -0
  26. package/eigen/Eigen/src/Cholesky/LDLT.h +42 -27
  27. package/eigen/Eigen/src/Cholesky/LLT.h +39 -23
  28. package/eigen/Eigen/src/CholmodSupport/CholmodSupport.h +90 -47
  29. package/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  30. package/eigen/Eigen/src/Core/Array.h +99 -11
  31. package/eigen/Eigen/src/Core/ArrayBase.h +1 -1
  32. package/eigen/Eigen/src/Core/ArrayWrapper.h +21 -21
  33. package/eigen/Eigen/src/Core/Assign.h +1 -1
  34. package/eigen/Eigen/src/Core/AssignEvaluator.h +125 -50
  35. package/eigen/Eigen/src/Core/Assign_MKL.h +10 -10
  36. package/eigen/Eigen/src/Core/BandMatrix.h +16 -16
  37. package/eigen/Eigen/src/Core/Block.h +56 -60
  38. package/eigen/Eigen/src/Core/BooleanRedux.h +29 -31
  39. package/eigen/Eigen/src/Core/CommaInitializer.h +7 -3
  40. package/eigen/Eigen/src/Core/CoreEvaluators.h +325 -272
  41. package/eigen/Eigen/src/Core/CoreIterators.h +5 -0
  42. package/eigen/Eigen/src/Core/CwiseBinaryOp.h +21 -22
  43. package/eigen/Eigen/src/Core/CwiseNullaryOp.h +153 -18
  44. package/eigen/Eigen/src/Core/CwiseUnaryOp.h +6 -6
  45. package/eigen/Eigen/src/Core/CwiseUnaryView.h +12 -10
  46. package/eigen/Eigen/src/Core/DenseBase.h +128 -39
  47. package/eigen/Eigen/src/Core/DenseCoeffsBase.h +25 -21
  48. package/eigen/Eigen/src/Core/DenseStorage.h +150 -68
  49. package/eigen/Eigen/src/Core/Diagonal.h +21 -23
  50. package/eigen/Eigen/src/Core/DiagonalMatrix.h +50 -2
  51. package/eigen/Eigen/src/Core/DiagonalProduct.h +1 -1
  52. package/eigen/Eigen/src/Core/Dot.h +10 -10
  53. package/eigen/Eigen/src/Core/EigenBase.h +10 -9
  54. package/eigen/Eigen/src/Core/ForceAlignedAccess.h +8 -4
  55. package/eigen/Eigen/src/Core/Fuzzy.h +3 -3
  56. package/eigen/Eigen/src/Core/GeneralProduct.h +20 -10
  57. package/eigen/Eigen/src/Core/GenericPacketMath.h +597 -147
  58. package/eigen/Eigen/src/Core/GlobalFunctions.h +40 -33
  59. package/eigen/Eigen/src/Core/IO.h +40 -7
  60. package/eigen/Eigen/src/Core/IndexedView.h +237 -0
  61. package/eigen/Eigen/src/Core/Inverse.h +9 -10
  62. package/eigen/Eigen/src/Core/Map.h +7 -7
  63. package/eigen/Eigen/src/Core/MapBase.h +5 -3
  64. package/eigen/Eigen/src/Core/MathFunctions.h +756 -120
  65. package/eigen/Eigen/src/Core/MathFunctionsImpl.h +118 -19
  66. package/eigen/Eigen/src/Core/Matrix.h +131 -25
  67. package/eigen/Eigen/src/Core/MatrixBase.h +19 -2
  68. package/eigen/Eigen/src/Core/NestByValue.h +25 -50
  69. package/eigen/Eigen/src/Core/NoAlias.h +4 -3
  70. package/eigen/Eigen/src/Core/NumTraits.h +107 -20
  71. package/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  72. package/eigen/Eigen/src/Core/PermutationMatrix.h +3 -3
  73. package/eigen/Eigen/src/Core/PlainObjectBase.h +145 -54
  74. package/eigen/Eigen/src/Core/Product.h +30 -25
  75. package/eigen/Eigen/src/Core/ProductEvaluators.h +183 -142
  76. package/eigen/Eigen/src/Core/Random.h +37 -1
  77. package/eigen/Eigen/src/Core/Redux.h +180 -170
  78. package/eigen/Eigen/src/Core/Ref.h +118 -21
  79. package/eigen/Eigen/src/Core/Replicate.h +8 -8
  80. package/eigen/Eigen/src/Core/Reshaped.h +454 -0
  81. package/eigen/Eigen/src/Core/ReturnByValue.h +7 -5
  82. package/eigen/Eigen/src/Core/Reverse.h +18 -12
  83. package/eigen/Eigen/src/Core/Select.h +8 -6
  84. package/eigen/Eigen/src/Core/SelfAdjointView.h +33 -20
  85. package/eigen/Eigen/src/Core/Solve.h +14 -14
  86. package/eigen/Eigen/src/Core/SolveTriangular.h +13 -13
  87. package/eigen/Eigen/src/Core/SolverBase.h +41 -3
  88. package/eigen/Eigen/src/Core/StableNorm.h +100 -70
  89. package/eigen/Eigen/src/Core/StlIterators.h +463 -0
  90. package/eigen/Eigen/src/Core/Stride.h +9 -4
  91. package/eigen/Eigen/src/Core/Swap.h +5 -4
  92. package/eigen/Eigen/src/Core/Transpose.h +86 -27
  93. package/eigen/Eigen/src/Core/Transpositions.h +26 -8
  94. package/eigen/Eigen/src/Core/TriangularMatrix.h +88 -72
  95. package/eigen/Eigen/src/Core/VectorBlock.h +5 -5
  96. package/eigen/Eigen/src/Core/VectorwiseOp.h +159 -70
  97. package/eigen/Eigen/src/Core/Visitor.h +137 -29
  98. package/eigen/Eigen/src/Core/arch/AVX/Complex.h +50 -129
  99. package/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +126 -337
  100. package/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1092 -155
  101. package/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +65 -1
  102. package/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  103. package/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +186 -213
  104. package/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +1250 -252
  105. package/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  106. package/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +152 -165
  107. package/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +19 -251
  108. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  109. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  110. package/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  111. package/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2042 -392
  112. package/eigen/Eigen/src/Core/arch/CUDA/Complex.h +235 -80
  113. package/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  114. package/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +102 -14
  115. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  116. package/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  117. package/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  118. package/eigen/Eigen/src/Core/arch/Default/Settings.h +1 -1
  119. package/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  120. package/eigen/Eigen/src/Core/arch/{CUDA → GPU}/MathFunctions.h +16 -4
  121. package/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  122. package/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  123. package/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  124. package/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  125. package/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  126. package/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  127. package/eigen/Eigen/src/Core/arch/NEON/Complex.h +313 -219
  128. package/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  129. package/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +54 -70
  130. package/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4376 -549
  131. package/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  132. package/eigen/Eigen/src/Core/arch/SSE/Complex.h +59 -179
  133. package/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +65 -428
  134. package/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +893 -283
  135. package/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +65 -0
  136. package/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  137. package/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  138. package/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  139. package/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  140. package/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  141. package/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  142. package/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  143. package/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  144. package/eigen/Eigen/src/Core/arch/ZVector/Complex.h +212 -183
  145. package/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +101 -5
  146. package/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +510 -395
  147. package/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +11 -2
  148. package/eigen/Eigen/src/Core/functors/BinaryFunctors.h +112 -46
  149. package/eigen/Eigen/src/Core/functors/NullaryFunctors.h +31 -30
  150. package/eigen/Eigen/src/Core/functors/StlFunctors.h +32 -2
  151. package/eigen/Eigen/src/Core/functors/UnaryFunctors.h +354 -15
  152. package/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +1073 -585
  153. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +29 -7
  154. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +4 -4
  155. package/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +1 -1
  156. package/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +382 -483
  157. package/eigen/Eigen/src/Core/products/Parallelizer.h +23 -9
  158. package/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +23 -6
  159. package/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +8 -6
  160. package/eigen/Eigen/src/Core/products/SelfadjointProduct.h +2 -2
  161. package/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +5 -4
  162. package/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +3 -3
  163. package/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +5 -3
  164. package/eigen/Eigen/src/Core/products/TriangularSolverVector.h +13 -10
  165. package/eigen/Eigen/src/Core/util/BlasUtil.h +208 -124
  166. package/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  167. package/eigen/Eigen/src/Core/util/Constants.h +25 -9
  168. package/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +14 -2
  169. package/eigen/Eigen/src/Core/util/ForwardDeclarations.h +28 -4
  170. package/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  171. package/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  172. package/eigen/Eigen/src/Core/util/MKL_support.h +8 -1
  173. package/eigen/Eigen/src/Core/util/Macros.h +661 -250
  174. package/eigen/Eigen/src/Core/util/Memory.h +222 -52
  175. package/eigen/Eigen/src/Core/util/Meta.h +349 -105
  176. package/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  177. package/eigen/Eigen/src/Core/util/StaticAssert.h +8 -5
  178. package/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  179. package/eigen/Eigen/src/Core/util/XprHelper.h +48 -30
  180. package/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +1 -1
  181. package/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +1 -1
  182. package/eigen/Eigen/src/Eigenvalues/EigenSolver.h +2 -2
  183. package/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +1 -1
  184. package/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +2 -2
  185. package/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +2 -2
  186. package/eigen/Eigen/src/Eigenvalues/RealQZ.h +9 -6
  187. package/eigen/Eigen/src/Eigenvalues/RealSchur.h +10 -5
  188. package/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +75 -42
  189. package/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +20 -15
  190. package/eigen/Eigen/src/Geometry/AlignedBox.h +99 -5
  191. package/eigen/Eigen/src/Geometry/AngleAxis.h +4 -4
  192. package/eigen/Eigen/src/Geometry/EulerAngles.h +3 -3
  193. package/eigen/Eigen/src/Geometry/Homogeneous.h +15 -11
  194. package/eigen/Eigen/src/Geometry/Hyperplane.h +1 -1
  195. package/eigen/Eigen/src/Geometry/OrthoMethods.h +3 -2
  196. package/eigen/Eigen/src/Geometry/ParametrizedLine.h +39 -2
  197. package/eigen/Eigen/src/Geometry/Quaternion.h +52 -14
  198. package/eigen/Eigen/src/Geometry/Rotation2D.h +3 -3
  199. package/eigen/Eigen/src/Geometry/Scaling.h +22 -4
  200. package/eigen/Eigen/src/Geometry/Transform.h +86 -65
  201. package/eigen/Eigen/src/Geometry/Translation.h +6 -6
  202. package/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  203. package/eigen/Eigen/src/Householder/BlockHouseholder.h +9 -2
  204. package/eigen/Eigen/src/Householder/Householder.h +8 -4
  205. package/eigen/Eigen/src/Householder/HouseholderSequence.h +123 -48
  206. package/eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h +15 -15
  207. package/eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h +7 -23
  208. package/eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h +5 -22
  209. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h +41 -47
  210. package/eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h +51 -60
  211. package/eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h +70 -20
  212. package/eigen/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h +2 -20
  213. package/eigen/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h +11 -9
  214. package/eigen/Eigen/src/Jacobi/Jacobi.h +31 -10
  215. package/eigen/Eigen/src/KLUSupport/KLUSupport.h +358 -0
  216. package/eigen/Eigen/src/LU/Determinant.h +35 -19
  217. package/eigen/Eigen/src/LU/FullPivLU.h +29 -43
  218. package/eigen/Eigen/src/LU/InverseImpl.h +25 -8
  219. package/eigen/Eigen/src/LU/PartialPivLU.h +67 -57
  220. package/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  221. package/eigen/Eigen/src/OrderingMethods/Amd.h +7 -17
  222. package/eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h +297 -277
  223. package/eigen/Eigen/src/OrderingMethods/Ordering.h +6 -10
  224. package/eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h +1 -1
  225. package/eigen/Eigen/src/PardisoSupport/PardisoSupport.h +10 -9
  226. package/eigen/Eigen/src/QR/ColPivHouseholderQR.h +41 -20
  227. package/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +100 -27
  228. package/eigen/Eigen/src/QR/FullPivHouseholderQR.h +59 -22
  229. package/eigen/Eigen/src/QR/HouseholderQR.h +48 -23
  230. package/eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h +25 -3
  231. package/eigen/Eigen/src/SVD/BDCSVD.h +137 -48
  232. package/eigen/Eigen/src/SVD/JacobiSVD.h +22 -14
  233. package/eigen/Eigen/src/SVD/SVDBase.h +82 -21
  234. package/eigen/Eigen/src/SVD/UpperBidiagonalization.h +3 -3
  235. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h +16 -8
  236. package/eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h +11 -36
  237. package/eigen/Eigen/src/SparseCore/CompressedStorage.h +16 -0
  238. package/eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h +6 -6
  239. package/eigen/Eigen/src/SparseCore/SparseAssign.h +81 -27
  240. package/eigen/Eigen/src/SparseCore/SparseBlock.h +25 -57
  241. package/eigen/Eigen/src/SparseCore/SparseCompressedBase.h +40 -11
  242. package/eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h +11 -15
  243. package/eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h +2 -2
  244. package/eigen/Eigen/src/SparseCore/SparseDenseProduct.h +30 -8
  245. package/eigen/Eigen/src/SparseCore/SparseMatrix.h +124 -10
  246. package/eigen/Eigen/src/SparseCore/SparseMatrixBase.h +5 -12
  247. package/eigen/Eigen/src/SparseCore/SparseProduct.h +13 -1
  248. package/eigen/Eigen/src/SparseCore/SparseRef.h +7 -7
  249. package/eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h +3 -0
  250. package/eigen/Eigen/src/SparseCore/SparseUtil.h +8 -0
  251. package/eigen/Eigen/src/SparseCore/SparseVector.h +1 -1
  252. package/eigen/Eigen/src/SparseLU/SparseLU.h +160 -10
  253. package/eigen/Eigen/src/SparseLU/SparseLU_Memory.h +1 -1
  254. package/eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h +76 -2
  255. package/eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h +2 -2
  256. package/eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h +1 -1
  257. package/eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h +1 -1
  258. package/eigen/Eigen/src/SparseQR/SparseQR.h +19 -6
  259. package/eigen/Eigen/src/StlSupport/StdDeque.h +2 -14
  260. package/eigen/Eigen/src/StlSupport/StdList.h +2 -2
  261. package/eigen/Eigen/src/StlSupport/StdVector.h +2 -2
  262. package/eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h +6 -8
  263. package/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h +175 -39
  264. package/eigen/Eigen/src/misc/lapacke.h +5 -4
  265. package/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +27 -1
  266. package/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +155 -11
  267. package/eigen/Eigen/src/plugins/BlockMethods.h +626 -242
  268. package/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +14 -0
  269. package/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  270. package/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +4 -4
  271. package/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +10 -0
  272. package/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  273. package/eigen/README.md +5 -0
  274. package/lib/LibEigen.d.ts +4 -0
  275. package/lib/LibEigen.js +14 -0
  276. package/lib/index.d.ts +1 -1
  277. package/lib/index.js +7 -3
  278. package/package.json +2 -10
  279. package/eigen/Eigen/CMakeLists.txt +0 -19
  280. package/eigen/Eigen/src/Core/arch/CUDA/Half.h +0 -675
  281. package/eigen/Eigen/src/Core/arch/CUDA/PacketMath.h +0 -333
  282. package/eigen/Eigen/src/Core/arch/CUDA/PacketMathHalf.h +0 -1124
  283. package/eigen/Eigen/src/Core/arch/CUDA/TypeCasting.h +0 -212
  284. package/eigen/Eigen/src/Geometry/arch/Geometry_SSE.h +0 -161
  285. package/eigen/Eigen/src/LU/arch/Inverse_SSE.h +0 -338
  286. package/lib/eigen.d.ts +0 -2
  287. package/lib/eigen.js +0 -15
@@ -1,338 +0,0 @@
1
- // This file is part of Eigen, a lightweight C++ template library
2
- // for linear algebra.
3
- //
4
- // Copyright (C) 2001 Intel Corporation
5
- // Copyright (C) 2010 Gael Guennebaud <gael.guennebaud@inria.fr>
6
- // Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
7
- //
8
- // This Source Code Form is subject to the terms of the Mozilla
9
- // Public License v. 2.0. If a copy of the MPL was not distributed
10
- // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
11
-
12
- // The SSE code for the 4x4 float and double matrix inverse in this file
13
- // comes from the following Intel's library:
14
- // http://software.intel.com/en-us/articles/optimized-matrix-library-for-use-with-the-intel-pentiumr-4-processors-sse2-instructions/
15
- //
16
- // Here is the respective copyright and license statement:
17
- //
18
- // Copyright (c) 2001 Intel Corporation.
19
- //
20
- // Permition is granted to use, copy, distribute and prepare derivative works
21
- // of this library for any purpose and without fee, provided, that the above
22
- // copyright notice and this statement appear in all copies.
23
- // Intel makes no representations about the suitability of this software for
24
- // any purpose, and specifically disclaims all warranties.
25
- // See LEGAL.TXT for all the legal information.
26
-
27
- #ifndef EIGEN_INVERSE_SSE_H
28
- #define EIGEN_INVERSE_SSE_H
29
-
30
- namespace Eigen {
31
-
32
- namespace internal {
33
-
34
- template<typename MatrixType, typename ResultType>
35
- struct compute_inverse_size4<Architecture::SSE, float, MatrixType, ResultType>
36
- {
37
- enum {
38
- MatrixAlignment = traits<MatrixType>::Alignment,
39
- ResultAlignment = traits<ResultType>::Alignment,
40
- StorageOrdersMatch = (MatrixType::Flags&RowMajorBit) == (ResultType::Flags&RowMajorBit)
41
- };
42
- typedef typename conditional<(MatrixType::Flags&LinearAccessBit),MatrixType const &,typename MatrixType::PlainObject>::type ActualMatrixType;
43
-
44
- static void run(const MatrixType& mat, ResultType& result)
45
- {
46
- ActualMatrixType matrix(mat);
47
- const Packet4f p4f_sign_PNNP = _mm_castsi128_ps(_mm_set_epi32(0x00000000, 0x80000000, 0x80000000, 0x00000000));
48
-
49
- // Load the full matrix into registers
50
- __m128 _L1 = matrix.template packet<MatrixAlignment>( 0);
51
- __m128 _L2 = matrix.template packet<MatrixAlignment>( 4);
52
- __m128 _L3 = matrix.template packet<MatrixAlignment>( 8);
53
- __m128 _L4 = matrix.template packet<MatrixAlignment>(12);
54
-
55
- // The inverse is calculated using "Divide and Conquer" technique. The
56
- // original matrix is divide into four 2x2 sub-matrices. Since each
57
- // register holds four matrix element, the smaller matrices are
58
- // represented as a registers. Hence we get a better locality of the
59
- // calculations.
60
-
61
- __m128 A, B, C, D; // the four sub-matrices
62
- if(!StorageOrdersMatch)
63
- {
64
- A = _mm_unpacklo_ps(_L1, _L2);
65
- B = _mm_unpacklo_ps(_L3, _L4);
66
- C = _mm_unpackhi_ps(_L1, _L2);
67
- D = _mm_unpackhi_ps(_L3, _L4);
68
- }
69
- else
70
- {
71
- A = _mm_movelh_ps(_L1, _L2);
72
- B = _mm_movehl_ps(_L2, _L1);
73
- C = _mm_movelh_ps(_L3, _L4);
74
- D = _mm_movehl_ps(_L4, _L3);
75
- }
76
-
77
- __m128 iA, iB, iC, iD, // partial inverse of the sub-matrices
78
- DC, AB;
79
- __m128 dA, dB, dC, dD; // determinant of the sub-matrices
80
- __m128 det, d, d1, d2;
81
- __m128 rd; // reciprocal of the determinant
82
-
83
- // AB = A# * B
84
- AB = _mm_mul_ps(_mm_shuffle_ps(A,A,0x0F), B);
85
- AB = _mm_sub_ps(AB,_mm_mul_ps(_mm_shuffle_ps(A,A,0xA5), _mm_shuffle_ps(B,B,0x4E)));
86
- // DC = D# * C
87
- DC = _mm_mul_ps(_mm_shuffle_ps(D,D,0x0F), C);
88
- DC = _mm_sub_ps(DC,_mm_mul_ps(_mm_shuffle_ps(D,D,0xA5), _mm_shuffle_ps(C,C,0x4E)));
89
-
90
- // dA = |A|
91
- dA = _mm_mul_ps(_mm_shuffle_ps(A, A, 0x5F),A);
92
- dA = _mm_sub_ss(dA, _mm_movehl_ps(dA,dA));
93
- // dB = |B|
94
- dB = _mm_mul_ps(_mm_shuffle_ps(B, B, 0x5F),B);
95
- dB = _mm_sub_ss(dB, _mm_movehl_ps(dB,dB));
96
-
97
- // dC = |C|
98
- dC = _mm_mul_ps(_mm_shuffle_ps(C, C, 0x5F),C);
99
- dC = _mm_sub_ss(dC, _mm_movehl_ps(dC,dC));
100
- // dD = |D|
101
- dD = _mm_mul_ps(_mm_shuffle_ps(D, D, 0x5F),D);
102
- dD = _mm_sub_ss(dD, _mm_movehl_ps(dD,dD));
103
-
104
- // d = trace(AB*DC) = trace(A#*B*D#*C)
105
- d = _mm_mul_ps(_mm_shuffle_ps(DC,DC,0xD8),AB);
106
-
107
- // iD = C*A#*B
108
- iD = _mm_mul_ps(_mm_shuffle_ps(C,C,0xA0), _mm_movelh_ps(AB,AB));
109
- iD = _mm_add_ps(iD,_mm_mul_ps(_mm_shuffle_ps(C,C,0xF5), _mm_movehl_ps(AB,AB)));
110
- // iA = B*D#*C
111
- iA = _mm_mul_ps(_mm_shuffle_ps(B,B,0xA0), _mm_movelh_ps(DC,DC));
112
- iA = _mm_add_ps(iA,_mm_mul_ps(_mm_shuffle_ps(B,B,0xF5), _mm_movehl_ps(DC,DC)));
113
-
114
- // d = trace(AB*DC) = trace(A#*B*D#*C) [continue]
115
- d = _mm_add_ps(d, _mm_movehl_ps(d, d));
116
- d = _mm_add_ss(d, _mm_shuffle_ps(d, d, 1));
117
- d1 = _mm_mul_ss(dA,dD);
118
- d2 = _mm_mul_ss(dB,dC);
119
-
120
- // iD = D*|A| - C*A#*B
121
- iD = _mm_sub_ps(_mm_mul_ps(D,_mm_shuffle_ps(dA,dA,0)), iD);
122
-
123
- // iA = A*|D| - B*D#*C;
124
- iA = _mm_sub_ps(_mm_mul_ps(A,_mm_shuffle_ps(dD,dD,0)), iA);
125
-
126
- // det = |A|*|D| + |B|*|C| - trace(A#*B*D#*C)
127
- det = _mm_sub_ss(_mm_add_ss(d1,d2),d);
128
- rd = _mm_div_ss(_mm_set_ss(1.0f), det);
129
-
130
- // #ifdef ZERO_SINGULAR
131
- // rd = _mm_and_ps(_mm_cmpneq_ss(det,_mm_setzero_ps()), rd);
132
- // #endif
133
-
134
- // iB = D * (A#B)# = D*B#*A
135
- iB = _mm_mul_ps(D, _mm_shuffle_ps(AB,AB,0x33));
136
- iB = _mm_sub_ps(iB, _mm_mul_ps(_mm_shuffle_ps(D,D,0xB1), _mm_shuffle_ps(AB,AB,0x66)));
137
- // iC = A * (D#C)# = A*C#*D
138
- iC = _mm_mul_ps(A, _mm_shuffle_ps(DC,DC,0x33));
139
- iC = _mm_sub_ps(iC, _mm_mul_ps(_mm_shuffle_ps(A,A,0xB1), _mm_shuffle_ps(DC,DC,0x66)));
140
-
141
- rd = _mm_shuffle_ps(rd,rd,0);
142
- rd = _mm_xor_ps(rd, p4f_sign_PNNP);
143
-
144
- // iB = C*|B| - D*B#*A
145
- iB = _mm_sub_ps(_mm_mul_ps(C,_mm_shuffle_ps(dB,dB,0)), iB);
146
-
147
- // iC = B*|C| - A*C#*D;
148
- iC = _mm_sub_ps(_mm_mul_ps(B,_mm_shuffle_ps(dC,dC,0)), iC);
149
-
150
- // iX = iX / det
151
- iA = _mm_mul_ps(rd,iA);
152
- iB = _mm_mul_ps(rd,iB);
153
- iC = _mm_mul_ps(rd,iC);
154
- iD = _mm_mul_ps(rd,iD);
155
-
156
- Index res_stride = result.outerStride();
157
- float* res = result.data();
158
- pstoret<float, Packet4f, ResultAlignment>(res+0, _mm_shuffle_ps(iA,iB,0x77));
159
- pstoret<float, Packet4f, ResultAlignment>(res+res_stride, _mm_shuffle_ps(iA,iB,0x22));
160
- pstoret<float, Packet4f, ResultAlignment>(res+2*res_stride, _mm_shuffle_ps(iC,iD,0x77));
161
- pstoret<float, Packet4f, ResultAlignment>(res+3*res_stride, _mm_shuffle_ps(iC,iD,0x22));
162
- }
163
-
164
- };
165
-
166
- template<typename MatrixType, typename ResultType>
167
- struct compute_inverse_size4<Architecture::SSE, double, MatrixType, ResultType>
168
- {
169
- enum {
170
- MatrixAlignment = traits<MatrixType>::Alignment,
171
- ResultAlignment = traits<ResultType>::Alignment,
172
- StorageOrdersMatch = (MatrixType::Flags&RowMajorBit) == (ResultType::Flags&RowMajorBit)
173
- };
174
- typedef typename conditional<(MatrixType::Flags&LinearAccessBit),MatrixType const &,typename MatrixType::PlainObject>::type ActualMatrixType;
175
-
176
- static void run(const MatrixType& mat, ResultType& result)
177
- {
178
- ActualMatrixType matrix(mat);
179
- const __m128d _Sign_NP = _mm_castsi128_pd(_mm_set_epi32(0x0,0x0,0x80000000,0x0));
180
- const __m128d _Sign_PN = _mm_castsi128_pd(_mm_set_epi32(0x80000000,0x0,0x0,0x0));
181
-
182
- // The inverse is calculated using "Divide and Conquer" technique. The
183
- // original matrix is divide into four 2x2 sub-matrices. Since each
184
- // register of the matrix holds two elements, the smaller matrices are
185
- // consisted of two registers. Hence we get a better locality of the
186
- // calculations.
187
-
188
- // the four sub-matrices
189
- __m128d A1, A2, B1, B2, C1, C2, D1, D2;
190
-
191
- if(StorageOrdersMatch)
192
- {
193
- A1 = matrix.template packet<MatrixAlignment>( 0); B1 = matrix.template packet<MatrixAlignment>( 2);
194
- A2 = matrix.template packet<MatrixAlignment>( 4); B2 = matrix.template packet<MatrixAlignment>( 6);
195
- C1 = matrix.template packet<MatrixAlignment>( 8); D1 = matrix.template packet<MatrixAlignment>(10);
196
- C2 = matrix.template packet<MatrixAlignment>(12); D2 = matrix.template packet<MatrixAlignment>(14);
197
- }
198
- else
199
- {
200
- __m128d tmp;
201
- A1 = matrix.template packet<MatrixAlignment>( 0); C1 = matrix.template packet<MatrixAlignment>( 2);
202
- A2 = matrix.template packet<MatrixAlignment>( 4); C2 = matrix.template packet<MatrixAlignment>( 6);
203
- tmp = A1;
204
- A1 = _mm_unpacklo_pd(A1,A2);
205
- A2 = _mm_unpackhi_pd(tmp,A2);
206
- tmp = C1;
207
- C1 = _mm_unpacklo_pd(C1,C2);
208
- C2 = _mm_unpackhi_pd(tmp,C2);
209
-
210
- B1 = matrix.template packet<MatrixAlignment>( 8); D1 = matrix.template packet<MatrixAlignment>(10);
211
- B2 = matrix.template packet<MatrixAlignment>(12); D2 = matrix.template packet<MatrixAlignment>(14);
212
- tmp = B1;
213
- B1 = _mm_unpacklo_pd(B1,B2);
214
- B2 = _mm_unpackhi_pd(tmp,B2);
215
- tmp = D1;
216
- D1 = _mm_unpacklo_pd(D1,D2);
217
- D2 = _mm_unpackhi_pd(tmp,D2);
218
- }
219
-
220
- __m128d iA1, iA2, iB1, iB2, iC1, iC2, iD1, iD2, // partial invese of the sub-matrices
221
- DC1, DC2, AB1, AB2;
222
- __m128d dA, dB, dC, dD; // determinant of the sub-matrices
223
- __m128d det, d1, d2, rd;
224
-
225
- // dA = |A|
226
- dA = _mm_shuffle_pd(A2, A2, 1);
227
- dA = _mm_mul_pd(A1, dA);
228
- dA = _mm_sub_sd(dA, _mm_shuffle_pd(dA,dA,3));
229
- // dB = |B|
230
- dB = _mm_shuffle_pd(B2, B2, 1);
231
- dB = _mm_mul_pd(B1, dB);
232
- dB = _mm_sub_sd(dB, _mm_shuffle_pd(dB,dB,3));
233
-
234
- // AB = A# * B
235
- AB1 = _mm_mul_pd(B1, _mm_shuffle_pd(A2,A2,3));
236
- AB2 = _mm_mul_pd(B2, _mm_shuffle_pd(A1,A1,0));
237
- AB1 = _mm_sub_pd(AB1, _mm_mul_pd(B2, _mm_shuffle_pd(A1,A1,3)));
238
- AB2 = _mm_sub_pd(AB2, _mm_mul_pd(B1, _mm_shuffle_pd(A2,A2,0)));
239
-
240
- // dC = |C|
241
- dC = _mm_shuffle_pd(C2, C2, 1);
242
- dC = _mm_mul_pd(C1, dC);
243
- dC = _mm_sub_sd(dC, _mm_shuffle_pd(dC,dC,3));
244
- // dD = |D|
245
- dD = _mm_shuffle_pd(D2, D2, 1);
246
- dD = _mm_mul_pd(D1, dD);
247
- dD = _mm_sub_sd(dD, _mm_shuffle_pd(dD,dD,3));
248
-
249
- // DC = D# * C
250
- DC1 = _mm_mul_pd(C1, _mm_shuffle_pd(D2,D2,3));
251
- DC2 = _mm_mul_pd(C2, _mm_shuffle_pd(D1,D1,0));
252
- DC1 = _mm_sub_pd(DC1, _mm_mul_pd(C2, _mm_shuffle_pd(D1,D1,3)));
253
- DC2 = _mm_sub_pd(DC2, _mm_mul_pd(C1, _mm_shuffle_pd(D2,D2,0)));
254
-
255
- // rd = trace(AB*DC) = trace(A#*B*D#*C)
256
- d1 = _mm_mul_pd(AB1, _mm_shuffle_pd(DC1, DC2, 0));
257
- d2 = _mm_mul_pd(AB2, _mm_shuffle_pd(DC1, DC2, 3));
258
- rd = _mm_add_pd(d1, d2);
259
- rd = _mm_add_sd(rd, _mm_shuffle_pd(rd, rd,3));
260
-
261
- // iD = C*A#*B
262
- iD1 = _mm_mul_pd(AB1, _mm_shuffle_pd(C1,C1,0));
263
- iD2 = _mm_mul_pd(AB1, _mm_shuffle_pd(C2,C2,0));
264
- iD1 = _mm_add_pd(iD1, _mm_mul_pd(AB2, _mm_shuffle_pd(C1,C1,3)));
265
- iD2 = _mm_add_pd(iD2, _mm_mul_pd(AB2, _mm_shuffle_pd(C2,C2,3)));
266
-
267
- // iA = B*D#*C
268
- iA1 = _mm_mul_pd(DC1, _mm_shuffle_pd(B1,B1,0));
269
- iA2 = _mm_mul_pd(DC1, _mm_shuffle_pd(B2,B2,0));
270
- iA1 = _mm_add_pd(iA1, _mm_mul_pd(DC2, _mm_shuffle_pd(B1,B1,3)));
271
- iA2 = _mm_add_pd(iA2, _mm_mul_pd(DC2, _mm_shuffle_pd(B2,B2,3)));
272
-
273
- // iD = D*|A| - C*A#*B
274
- dA = _mm_shuffle_pd(dA,dA,0);
275
- iD1 = _mm_sub_pd(_mm_mul_pd(D1, dA), iD1);
276
- iD2 = _mm_sub_pd(_mm_mul_pd(D2, dA), iD2);
277
-
278
- // iA = A*|D| - B*D#*C;
279
- dD = _mm_shuffle_pd(dD,dD,0);
280
- iA1 = _mm_sub_pd(_mm_mul_pd(A1, dD), iA1);
281
- iA2 = _mm_sub_pd(_mm_mul_pd(A2, dD), iA2);
282
-
283
- d1 = _mm_mul_sd(dA, dD);
284
- d2 = _mm_mul_sd(dB, dC);
285
-
286
- // iB = D * (A#B)# = D*B#*A
287
- iB1 = _mm_mul_pd(D1, _mm_shuffle_pd(AB2,AB1,1));
288
- iB2 = _mm_mul_pd(D2, _mm_shuffle_pd(AB2,AB1,1));
289
- iB1 = _mm_sub_pd(iB1, _mm_mul_pd(_mm_shuffle_pd(D1,D1,1), _mm_shuffle_pd(AB2,AB1,2)));
290
- iB2 = _mm_sub_pd(iB2, _mm_mul_pd(_mm_shuffle_pd(D2,D2,1), _mm_shuffle_pd(AB2,AB1,2)));
291
-
292
- // det = |A|*|D| + |B|*|C| - trace(A#*B*D#*C)
293
- det = _mm_add_sd(d1, d2);
294
- det = _mm_sub_sd(det, rd);
295
-
296
- // iC = A * (D#C)# = A*C#*D
297
- iC1 = _mm_mul_pd(A1, _mm_shuffle_pd(DC2,DC1,1));
298
- iC2 = _mm_mul_pd(A2, _mm_shuffle_pd(DC2,DC1,1));
299
- iC1 = _mm_sub_pd(iC1, _mm_mul_pd(_mm_shuffle_pd(A1,A1,1), _mm_shuffle_pd(DC2,DC1,2)));
300
- iC2 = _mm_sub_pd(iC2, _mm_mul_pd(_mm_shuffle_pd(A2,A2,1), _mm_shuffle_pd(DC2,DC1,2)));
301
-
302
- rd = _mm_div_sd(_mm_set_sd(1.0), det);
303
- // #ifdef ZERO_SINGULAR
304
- // rd = _mm_and_pd(_mm_cmpneq_sd(det,_mm_setzero_pd()), rd);
305
- // #endif
306
- rd = _mm_shuffle_pd(rd,rd,0);
307
-
308
- // iB = C*|B| - D*B#*A
309
- dB = _mm_shuffle_pd(dB,dB,0);
310
- iB1 = _mm_sub_pd(_mm_mul_pd(C1, dB), iB1);
311
- iB2 = _mm_sub_pd(_mm_mul_pd(C2, dB), iB2);
312
-
313
- d1 = _mm_xor_pd(rd, _Sign_PN);
314
- d2 = _mm_xor_pd(rd, _Sign_NP);
315
-
316
- // iC = B*|C| - A*C#*D;
317
- dC = _mm_shuffle_pd(dC,dC,0);
318
- iC1 = _mm_sub_pd(_mm_mul_pd(B1, dC), iC1);
319
- iC2 = _mm_sub_pd(_mm_mul_pd(B2, dC), iC2);
320
-
321
- Index res_stride = result.outerStride();
322
- double* res = result.data();
323
- pstoret<double, Packet2d, ResultAlignment>(res+0, _mm_mul_pd(_mm_shuffle_pd(iA2, iA1, 3), d1));
324
- pstoret<double, Packet2d, ResultAlignment>(res+res_stride, _mm_mul_pd(_mm_shuffle_pd(iA2, iA1, 0), d2));
325
- pstoret<double, Packet2d, ResultAlignment>(res+2, _mm_mul_pd(_mm_shuffle_pd(iB2, iB1, 3), d1));
326
- pstoret<double, Packet2d, ResultAlignment>(res+res_stride+2, _mm_mul_pd(_mm_shuffle_pd(iB2, iB1, 0), d2));
327
- pstoret<double, Packet2d, ResultAlignment>(res+2*res_stride, _mm_mul_pd(_mm_shuffle_pd(iC2, iC1, 3), d1));
328
- pstoret<double, Packet2d, ResultAlignment>(res+3*res_stride, _mm_mul_pd(_mm_shuffle_pd(iC2, iC1, 0), d2));
329
- pstoret<double, Packet2d, ResultAlignment>(res+2*res_stride+2,_mm_mul_pd(_mm_shuffle_pd(iD2, iD1, 3), d1));
330
- pstoret<double, Packet2d, ResultAlignment>(res+3*res_stride+2,_mm_mul_pd(_mm_shuffle_pd(iD2, iD1, 0), d2));
331
- }
332
- };
333
-
334
- } // end namespace internal
335
-
336
- } // end namespace Eigen
337
-
338
- #endif // EIGEN_INVERSE_SSE_H
package/lib/eigen.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { LLVM } from 'smake';
2
- export declare function eigen(t: LLVM): void;
package/lib/eigen.js DELETED
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.eigen = void 0;
4
- const path_1 = require("path");
5
- function eigen(t) {
6
- Object.defineProperty(t, 'sysIncludedirs', {
7
- value: [
8
- ...t.sysIncludedirs,
9
- path_1.resolve(__dirname, '..', 'eigen').replace(/\\/g, '/'),
10
- ],
11
- configurable: true,
12
- });
13
- }
14
- exports.eigen = eigen;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlnZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZWlnZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBRy9CLFNBQWdCLEtBQUssQ0FBQyxDQUFPO0lBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFO1FBQ3pDLEtBQUssRUFBRTtZQUNMLEdBQUcsQ0FBQyxDQUFDLGNBQWM7WUFDbkIsY0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7U0FDdEQ7UUFDRCxZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBUkQsc0JBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBMTFZNIH0gZnJvbSAnc21ha2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gZWlnZW4odDogTExWTSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgJ3N5c0luY2x1ZGVkaXJzJywge1xuICAgIHZhbHVlOiBbXG4gICAgICAuLi50LnN5c0luY2x1ZGVkaXJzLFxuICAgICAgcmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdlaWdlbicpLnJlcGxhY2UoL1xcXFwvZywgJy8nKSxcbiAgICBdLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgfSk7XG59XG4iXX0=