The math library root: the shared numeric types and mathematical utilities.
Microsoft.VisualBasic.Math.Core 5.0.9762.11310.
01 Namespaces
Microsoft.VisualBasic.Math
| Type | Summary | Members |
|---|---|---|
| Crc32 | Crc32校验码 | 4 |
| Extensions | 向量以及统计函数拓展 | 24 |
| NumberExtension | https://github.com/cobaltblueocean/Mercury.Language.Extensions | 13 |
Microsoft.VisualBasic.Math.Distributions
Probability distributions and their density functions.
| Type | Summary | Members |
|---|---|---|
| Abundance | 3 | |
| AxisDensity | 1 | |
| BesselFunctions | 修正贝塞尔函数(modified Bessel function)第一类 I_ν(x) 的实现。 本模块对应 R 语言之中的 besselI(x, nu, expon.scaled = FALSE), 用于 Skellam 分布的概率密度函数计算(参见 dskellam)。 | 7 |
| Beta | Beta distribution | 1 |
| Bootstraping | Data sampling bootstrapping extensions | 7 |
| ChiSquareDistribution | 卡方分布(中心与非中心)的分布函数,对应 R 语言之中的 pchisq。 非中心卡方分布是 Skellam 分布累积分布函数的核心依赖 (参见 Resources\pskellam.txt):两个 Poisson 变量之差的 累积分布可以通过非中心卡方分布精确表达。 | 7 |
| DirichletDistribution | Dirichlet distribution In probability and statistics, the Dirichlet distribution (after Peter Gustav Lejeune Dirichlet), often denoted {\displaystyle \operatorname {Dir} ({\bo… | 5 |
| ECDF | Empirical distribution function In statistics, an empirical distribution function (commonly also called an empirical cumulative distribution function, eCDF) is the distributio… | 3 |
| Gaussian | Gaussian function https://en.wikipedia.org/wiki/Gaussian_function | 4 |
| MathGamma | gamma function (Γ) from mathematics | 4 |
| pnorm | 正态分布帮助模块 | 12 |
| PoissonDiskGenerator | cf paper: Fast Poisson Disk Sampling in Arbitrary Dimensions. | 14 |
| TrIQ | Contrast optimization of mass spectrometry imaging (MSI) data visualization by threshold intensity quantization (TrIQ) | 4 |
Microsoft.VisualBasic.Math.Distributions.Abundance
| Type | Summary | Members |
|---|---|---|
| AlgorithmType | the algorithms for computing kurtosis/skewness | 6 |
Microsoft.VisualBasic.Math.Distributions.BinBox
Binned distribution containers and binning helpers.
| Type | Summary | Members |
|---|---|---|
| BinMaps | 6 | |
| CutBins | 进行数据分箱操作 | 6 |
| DataBinBox | 数据分箱之中的一个bucket | 4 |
| Violin | 8 |
Microsoft.VisualBasic.Math.Distributions.Summary
Distribution summary statistics.
| Type | Summary | Members |
|---|---|---|
| SampleDistribution | The data sample model | 19 |
| StreamingSampleDistribution | Streaming builder of the SampleDistribution model. | 13 |
| ToString | 7 |
Microsoft.VisualBasic.Math.Distributions.Summary.StreamingSampleDistribution
| Type | Summary | Members |
|---|---|---|
| Bucket | histogram bin: 计数 + 桶内精确的 [min, max] | 3 |
Microsoft.VisualBasic.Math.DownSampling
Time series and signal down sampling algorithms.
| Type | Summary | Members |
|---|---|---|
| Bucket | A bucket holds a subset of events and select significant events from it | 0 |
| BucketBasedAlgorithm | General algorithm using buckets to downsample events: Prepare data.Split events into buckets.Calculate weight of events.Select significant events from each bucket. | 2 |
| BucketSplitter | Split up events into buckets | 0 |
| DownSamplingAlgorithm | Interface for downSampling algorithms | 1 |
| DSAlgorithms | Downsampling algorithms for time series data(LTOB, LTTB, LTD, OSI-PI Plot) | 11 |
| FixedNumBucketSplitter | Assign the first event to the first bucket, the last event to the last bucket. | 0 |
| FixedTimeBucketSplitter | Split data into buckets with equal time span | 0 |
Microsoft.VisualBasic.Math.DownSampling.LargestTriangleBucket
The largest triangle three buckets down sampling algorithm.
| Type | Summary | Members |
|---|---|---|
| LinkedBucketNode | Tow-way linked list to perform bucket split and merge. | 5 |
| LTABuilder | A builder class for LT Algorithms. | 8 |
| LTAlgorithm | Largest Triangle Bucket Algorithm family. | 0 |
| LTDynamicBucketSplitter | A bucket-splitter dynamically resize bucket according to their SSE(Sum of Square Errors). | 0 |
| LTOneBucketWeightCalculator | Weight = Area of triangle (point A: the previous event, point B: this event; point C: the next event) | 0 |
| LTThreeBucketWeightCalculator | Weight = Area of triangle (point A: the previous selected event, point B: this event; point C: average event int the next bucket) | 0 |
| LTWeightedBucket | 4 | |
| Triangle | Calculate a triangle's area | 0 |
Microsoft.VisualBasic.Math.DownSampling.MaxMin
Min/max preserving down sampling.
| Type | Summary | Members |
|---|---|---|
| MMAlgorithm | Select events with maximum or minimum value in bucket | 0 |
| MMBucket | Bucket that selects events with maximum or minimum value | 0 |
| PIPlotAlgorithm | OSISoft PI PlotValues algorithm. | 0 |
| PIPlotBucket | Bucket that selects the first, the last event and events with maximum or minimum value | 0 |
Microsoft.VisualBasic.Math.DownSampling.Mixed
Mixed strategy down sampling.
| Type | Summary | Members |
|---|---|---|
| MixedAlgorithm | Merge other algorithms' results into a new result, then deduplicate and sort it. | 1 |
Microsoft.VisualBasic.Math.DownSampling.TimeGap
Time gap based down sampling.
| Type | Summary | Members |
|---|---|---|
| TimeGapAlgorithm | Find out big gaps between events and select events at both ends of those gaps. | 0 |
Microsoft.VisualBasic.Math.Extensions
| Type | Summary | Members |
|---|---|---|
| PValueAdjustMethod | 多重检验校正方法枚举,对应 R 的 p.adjust.methods。 | 8 |
Microsoft.VisualBasic.Math.Framework
The numeric optimization framework.
| Type | Summary | Members |
|---|---|---|
| VariableObject | 1 |
Microsoft.VisualBasic.Math.Framework.Iterator
| Type | Summary | Members |
|---|---|---|
| Kernel | the simulator iterator kernel | 1 |
Microsoft.VisualBasic.Math.Framework.Optimization.LBFGSB
The L-BFGS-B bounded quasi-Newton optimizer.
| Type | Summary | Members |
|---|---|---|
| BKLDLT | Bunch-Kaufman LDLT decomposition | 23 |
| Debugger | internal logger wrapper for echo debug message | 0 |
| IGradFunction | 6 | |
| LBFGSB | L-BFGS-B optimizer # LBFGSBJava L-BFGS-B box constrained optimizer * Most of the code ported from LBFGS++ code. | 18 |
| Parameters | 16 |
Microsoft.VisualBasic.Math.Framework.Optimization.LBFGSB.BKLDLT
Microsoft.VisualBasic.Math.Framework.Optimization.LBFGSB.LineSearches
Line search strategies used by the L-BFGS-B optimizer.
| Type | Summary | Members |
|---|---|---|
| LineSearch | Line search methods for optimization and root-finding | 8 |
Microsoft.VisualBasic.Math.Framework.Optimization.LBFGSB.LineSearches.LewisOverton
| Type | Summary | Members |
|---|---|---|
| PhiDPhi | 7 |
Microsoft.VisualBasic.Math.HashMaps
Hash map data structures used for math lookups.
| Type | Summary | Members |
|---|---|---|
| HashBlizzard | Blizzard hash algorithm code | 2 |
| HashMap | VB.NET常用的哈希算法集.其中包括了著名的暴雪的哈希,T33哈希....... | 19 |
| JenkinsHash | Original source from http://256.com/sources/jenkins_hash_java/ This is a Bob Jenkins hashing algorithm implementation <br> These are functions for producing 32-bit hashes for… | 11 |
Microsoft.VisualBasic.Math.HashMaps.HashBlizzard
| Type | Summary | Members |
|---|---|---|
| dwHashTypes | The dwHashType: hash value types | 6 |
Microsoft.VisualBasic.Math.HashMaps.MinHash
The MinHash algorithm for approximate set similarity.
| Type | Summary | Members |
|---|---|---|
| LSH | 3 | |
| LSHParameterEstimator | 3 | |
| MinHash | 2 | |
| SequenceItem | 定义一个简单的数据结构来存储序列 | 3 |
| SimilarityIndex | 5 |
Microsoft.VisualBasic.Math.Interpolation
Spline interpolation.
| Type | Summary | Members |
|---|---|---|
| B_Spline | B-spline. degree参数应该是大于1的,否则等于1的时候将不会进行插值处理 | 4 |
| BezierCurve | A Bezier curve is a parametric curve frequently used in computer graphics and related fields. | 8 |
| BezierExtensions | 2 | |
| BSpline | B-spline arguments | 2 |
| CatmullRomSpline | Calculates interpolated point between two points using Catmull-Rom Spline | 3 |
| CentripetalCatmullRomSpline | Centripetal Catmull–Rom spline In computer graphics, centripetal Catmull–Rom spline is a variant form of Catmull-Rom spline formulated by Edwin Catmull and Raphael Rom accordi… | 1 |
| CubicSpline | Cubic spline interpolation | 3 |
| CubicSplineVector | 三次样条插值的核心代码模块 | 7 |
| DouglasPeucker | Ramer–Douglas–Peucker algorithm The Ramer–Douglas–Peucker algorithm, also known as the Douglas–Peucker algorithm and iterative end-point fit algorithm, is an algorithm that… | 5 |
| Extensions | 3 | |
| PolynomialNewton | 似乎对三角函数不起作用 | 2 |
| PrincipalCurve | 1 | |
| Splines | 线条插值算法类型 | 10 |
Microsoft.VisualBasic.Math.LinearAlgebra
Linear algebra: matrix operations, decompositions and linear system solvers.
| Type | Summary | Members |
|---|---|---|
| EigenDecompositionResult | 特征分解结果 | 0 |
| EllipseFitResult | 10 | |
| Extensions | 6 | |
| Formula | 5 | |
| HalfVector | 精度比较低的半精度向量 | 0 |
| HelperExtensions | 8 | |
| MultivariatePolynomial | 多元多项式 f(x1, x2, x3, ...) = a*x1 + b*x2 + c*x3 + ... | 3 |
| NumericsVector | Numerics vector converts for numeric types like: Int32, Int64, UInt64, Byte, Single | 7 |
| PCAEllipseCalculator | PCA椭圆计算器 | 8 |
| PCAEllipseResult | PCA统计椭圆计算结果 基于协方差矩阵和分布假设的数据椭圆/置信椭圆 | 10 |
| Polynomial | 一元多项式的数据模型 f(x) = a + bx + cx^2 + dx^3 + ... | 7 |
| SparseVector | 稀疏的向量 | 12 |
| SVD | 1 | |
| Vector | A numeric vector | 67 |
| VectorEqualityComparer | Determine that the two vector are equals to each other. | 2 |
Microsoft.VisualBasic.Math.LinearAlgebra.LinearProgramming
Linear programming solvers.
| Type | Summary | Members |
|---|---|---|
| Extensions | 1 | |
| LPP | solve continuous-space linear programming problems by the simplex method. | 19 |
| LPPModel | Linear Programming Model | 2 |
| LPPSolver | 使用单纯形法进行线性规划问题的求解 | 2 |
| LPPSolverTwoPhased | A two-phased simplex solver which is implemented in the sparse matrix format with the bounded variable support. | 30 |
| LppVariable | 4 | |
| LpSparseMatrix | A sparse matrix in the compressed sparse row(CSR) format. | 16 |
| OptimizationType | 4 | |
| SparseTableauRow | A single row in the simplex tableau, stored in the sparse format. | 15 |
Microsoft.VisualBasic.Math.LinearAlgebra.LinearProgramming.IPMCrossover
Interior point method crossover routines for linear programming.
| Type | Summary | Members |
|---|---|---|
| DenseLpMatrix | 稠密实现:包一层 Double(,),用于中小规模(已验证路径) | 9 |
| DenseNormalFactor | 稠密正规方程因子:Cholesky 两段回代 + 一次迭代精化 | 6 |
| ILpMatrix | 约束矩阵抽象:内点法只依赖这四个运算,因此稠密/ sparse 可自由切换 | 8 |
| INormalFactor | 正规方程 (A·Θ·Aᵀ + reg·I)·z = rhs 的求解器 | 6 |
| InteriorPointSolver | 10 | |
| IpResult | 7 | |
| LinAlg | 12 | |
| LppConstraint | 5 | |
| LppProblem | 6 | |
| LppSolver | 7 | |
| LuFactorization | LU 分解结果:P·A = L·U;LU 原地合并(|L| 对角=1),Piv(k)=位置k处的原始行号 | 3 |
| Pcg | 雅可比预条件共轭梯度:正规方程 fill-in 失控时的安全网(零 fill-in) | 1 |
| SimplexSolver | 7 | |
| SparseChol | 2 | |
| SparseLpMatrix | 稀疏实现:CSR(行) + CSC(列) 双副本。 正规方程 A·Θ·Aᵀ 稀疏装配后优先走稀疏 LDLᵀ, fill-in 超阈值或分解失败时自动降级为雅可比预条件 PCG(零 fill-in,无 OOM 风险)。 | 14 |
| SparseNormal | 1 | |
| SparseNormalFactor | 稀疏正规方程因子:优先稀疏 LDLᵀ,解出后做一次残差校验; 残差不达标(排序/数值问题)则本次改用 PCG 并永久降级。 | 6 |
| StandardForm | 标准形(IPM/单纯形的工作对象) | 32 |
| SymCsr | 对称稀疏矩阵(CSR,两个三角都存,含对角) | 11 |
Microsoft.VisualBasic.Math.LinearAlgebra.LinearProgramming.IPMCrossover.SparseChol
| Type | Summary | Members |
|---|---|---|
| MinHeap | 小顶堆(按列索引升序遍历第 k 行的模式) | 0 |
| SparseCholFactor | 稀疏 LDLᵀ 因子(按列存储 L 的严格下三角部分) | 2 |
Microsoft.VisualBasic.Math.LinearAlgebra.LinearProgramming.MILP
Mixed integer linear programming.
| Type | Summary | Members |
|---|---|---|
| BoundedSimplex | 有界变量修订单纯形。实例与一个问题矩阵 (A, b, c, l, u) 绑定; 分支只修改 l/u,割平面通过重建实例(行/列追加)+ 热启动基复用。 | 15 |
| BranchAndBound | 分支定界搜索。 | 7 |
| BranchRule | 分支变量选择规则。 | 6 |
| BsResult | 有界单纯形结果。 | 10 |
| BsStatus | 有界单纯形状态。 | 5 |
| CutRow | 一条待追加的割平面(工作变量空间)。 | 5 |
| GomoryCut | Gomory 混合整数割生成器。 | 2 |
| MilpHeuristics | 整数原启发式。 | 5 |
| MilpLpForm | MILP 预处理结果 + 节点 LP 工作形式(含全部"工作列 → 原始变量"映射)。 | 35 |
| MilpModel | MILP 模型:线性目标 + 线性约束 + 变量类型/上下界。 | 11 |
| MilpOptions | MILP 求解选项。 | 21 |
| MilpPresolve | 预处理与工作形式构造。 | 3 |
| MilpSolution | MILP 求解结果。 | 22 |
| MilpSolver | 混合整数线性规划(MILP)求解器入口。 | 2 |
| MilpStatus | MILP 求解状态。 | 14 |
| MilpVariable | MILP 变量:在既有 LppVariable 之上追加整数类型标记。 | 4 |
| MilpVarType | MILP 变量类型。 | 6 |
| NodeRule | 节点选择规则。 | 4 |
| PresolveStats | 预处理统计。 | 7 |
Microsoft.VisualBasic.Math.LinearAlgebra.LinearProgramming.MILP.BranchAndBound
| Type | Summary | Members |
|---|---|---|
| Node | 4 |
Microsoft.VisualBasic.Math.LinearAlgebra.Matrix
The matrix data types and matrix operations.
| Type | Summary | Members |
|---|---|---|
| CholeskyDecomposition | Cholesky Decomposition. | 7 |
| EigenvalueDecomposition | Eigenvalues and eigenvectors of a real matrix. | 16 |
| Extensions | 9 | |
| GeneralMatrix | [m,n] | 6 |
| IndexVector | another form of SparseMatrix | 3 |
| LargeScaleEigenSolver | 1 | |
| LUDecomposition | LU Decomposition. For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n unit lower triangular matrix L, an n-by-n upper triangular matrix U, and a permutation ve… | 13 |
| MatrixOps | 矩阵运算模块 - 使用 VB.NET 基础数学函数实现线性代数运算 包含:矩阵乘法、转置、求逆、行列式、特征值分解等 | 11 |
| Multiply | 2 | |
| NMF | implementation of Non-negative Matrix Factorisation Algorithms | 1 |
| NumericMatrix | .NET GeneralMatrix class. | 89 |
| QRDecomposition | QR Decomposition. For an m-by-n matrix A with m >= n, the QR decomposition is an m-by-n orthogonal matrix Q and an n-by-n upper triangular matrix R so that A = Q*R. The QR de… | 10 |
| Serialization | data serialization of the numeric matrix | 2 |
| SingularValueDecomposition | Singular Value Decomposition. | 13 |
| SparseMatrix | 7 | |
| Subtraction | 1 | |
| TruncatedSVD | 截断奇异值分解(Truncated Singular Value Decomposition)。 采用随机化 SVD 算法(Halko, Martinsson, Tropp, 2009,即 sklearn TruncatedSVD(solver="randomized") 所使用的算法),针对高维稀疏矩阵 进行截断的奇异值分解:只计算并保留前… | 18 |
| vbMatrix | 46 |
Microsoft.VisualBasic.Math.LinearAlgebra.Matrix.MDSScale
Multidimensional scaling over matrices.
| Type | Summary | Members |
|---|---|---|
| Data | Created by IntelliJ IDEA. | 9 |
| LandmarkMDS | Created by IntelliJ IDEA. | 8 |
| MDS | Created by IntelliJ IDEA. | 4 |
| MDSMethod | 7 | |
| SMACOF | A class implementing Stress Minimization by Majorizing a Complex Function (SMACOF). | 13 |
Microsoft.VisualBasic.Math.LinearAlgebra.PCAEllipseCalculator
| Type | Summary | Members |
|---|---|---|
| EllipseType | 椭圆类型枚举 | 6 |
Microsoft.VisualBasic.Math.LinearAlgebra.Solvers
Linear system solvers.
| Type | Summary | Members |
|---|---|---|
| GaussianElimination | Gaussian elimination In mathematics, Gaussian elimination, also known as row reduction, is an algorithm for solving systems of linear equations. | 2 |
| OLS | OLS(普通最小二乘法,Ordinary Least Squares)的计算原理和用途。 OLS 是统计学和机器学习中最基础、也最重要的回归分析方法之一。它的核心目标是:在众多数据点中,找到一条能“最佳拟合”这些点的直线(或超平面)。 --- ### 一、 OLS 的计算原理 为了便于理解,我们以一元线性回归(只有一个自变量 $X$ 和一… | 1 |
| PowerMethod | Method for finding eigenvectors | 2 |
| Solve | a*b=0 -> x | 0 |
| SOR | 1 |
Microsoft.VisualBasic.Math.LinearAlgebra.Vector
| Type | Summary | Members |
|---|---|---|
| Argument | Numeric argument for Vector.Call()) | 8 |
Microsoft.VisualBasic.Math.Logical.FuzzyLogic
Fuzzy logic: fuzzy sets, membership functions and fuzzy inference.
| Type | Summary | Members |
|---|---|---|
| FuzzyEngine | Represents the inferential engine. | 5 |
| FuzzyRule | Represents a rule. | 5 |
| FuzzyRuleCollection | Represents a collection of rules. | 0 |
| LinguisticVariable | Represents a linguistic variable. | 10 |
| LinguisticVariableCollection | Represents a collection of rules. | 1 |
| MembershipFunction | Represents a membership function. | 11 |
| MembershipFunctionCollection | Represents a collection of membership functions. | 1 |
Microsoft.VisualBasic.Math.Logical.FuzzyLogic.Models
Fuzzy logic model types.
| Type | Summary | Members |
|---|---|---|
| FuzzyModel | 1 | |
| Tokens | 9 |
Microsoft.VisualBasic.Math.Numerics
Numerical methods and numeric helper routines.
| Type | Summary | Members |
|---|---|---|
| BigDecimal | 41 | |
| Half | Represents a half-precision floating point number. | 90 |
| HalfHelper | Helper class for Half conversions and some low level operations. | 1 |
| UncheckedInteger | https://stackoverflow.com/questions/2403154/fastest-way-to-do-an-unchecked-integer-addition-in-vb-net | 7 |
| UncheckIntegerExtensions | unchecked arithmetic | 4 |
Microsoft.VisualBasic.Math.Quantile
Quantile and percentile estimation.
| Type | Summary | Members |
|---|---|---|
| DataQuartile | A data quartile model based on a given sample data input | 6 |
| Extensions | GK quantile extensions method | 8 |
| FastRankQuantile | 3 | |
| QuantileEstimationGK | Implementation of the Greenwald and Khanna algorithm for streaming calculation of epsilon-approximate quantiles. | 8 |
| Quartile | 四分位数(Quartile)是在统计学中把所有数值由小到大排列并分成四等份够,处于三个分割点位置的数值。 | 2 |
| Selector | String expression for select the sequence members by its numeric values, selector expression provider for CLI programming. | 7 |
| X | Data variables | 4 |
Microsoft.VisualBasic.Math.Quantile.Selector
| Type | Summary | Members |
|---|---|---|
| Provider | 4 |
Microsoft.VisualBasic.Math.Scripting
Math scripting: expression parsing and script driven computation.
| Type | Summary | Members |
|---|---|---|
| Factor | R language like string factor | 0 |
| FactorExtensions | 2 | |
| FactorVector | 提供和R之中的向量类似的行为:可以用两种方式来访问向量之中的成员,名字或者向量数组的下表 | 0 |
| FormulaDependency | 6 | |
| IVector | 3 | |
| MathScriptEngine | 数学脚本引擎:支持标量/向量变量、函数定义、axis 内置以及 scatter/line/surface 绘图指令。仅产出向量数据与绘图指令, 不依赖任何绘图组件,可作为通用数学运算脚本引擎复用。 设计要点:向量运算复用现有标量 ExpressionEngine,以 “逐元素标量循环 + 环境变量绑定”方式求值,避免改动表达式编译器。 | 6 |
| NamedVector | 提供字符串映射到具体的数值 | 1 |
| NamedVectorFactory | Factory for Dictionary to Vector | 1 |
| ParameterExpressionScript | 在vb之中由于可选参数的值只能够是常量,假若变量之间还存在关联,则必须要用表达式, 但是表达式不是常量,所以使用这个模块之中的代码来模拟R语言之中的可选参数表达式 | 4 |
| PlotCommand | 一条绘图指令(纯数据,不引用任何绘图组件)。 由数学脚本引擎产出,供可视化程序解释渲染。 | 10 |
| PlotKind | 绘图类型 | 3 |
| ScriptEngine | Math expression script engine. | 12 |
| ScriptResult | 脚本执行结果 | 5 |
Microsoft.VisualBasic.Math.Scripting.MathExpression
The math expression model.
| Type | Summary | Members |
|---|---|---|
| Arithmetic | The basics arithmetic operators' definition. | 8 |
| DynamicInvoke | An abstract function interface for make math formula expression evaluation | 3 |
| ExpressionBuilder | 4 | |
| ExpressionEngine | 9 | |
| FunctionElement | 将用户定义的函数持久化的保存在XML文件之中所使用到的格式 | 4 |
| MathToken | 1 |
Microsoft.VisualBasic.Math.Scripting.MathExpression.Impl
Implementations of the math expression nodes.
| Type | Summary | Members |
|---|---|---|
| BinaryExpression | left op right | 8 |
| Expression | the abstract math expression | 5 |
| Factorial | x! | 4 |
| FunctionInvoke | f(x) | 5 |
| Literal | A number literal | 13 |
| SymbolExpression | symbol x | 4 |
Microsoft.VisualBasic.Math.Scripting.Rscript
R script integration used by the numerical helper routines.
| Type | Summary | Members |
|---|---|---|
| GenericVector | 在这个泛型向量之中,仅包含有对元素对象的访问方法的封装,并没有涉及类型解析等反射操作 | 3 |