From abbc0da71b0e3060b5329565b5eaf4d90d4df7c2 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Tue, 11 Jun 2024 20:10:20 +0800 Subject: [PATCH] update cvx post --- package-lock.json | 100 ------------------ package.json | 1 - source/_data/variables.styl | 2 +- source/_posts/2024-06-08-josh-cvx-1-2.md | 8 +- source/_posts/2024-06-08-josh-cvx-1-3.md | 88 ++++++++++++++- ...raInterpretationOfPerspectiveFuncation.png | Bin 0 -> 25146 bytes 6 files changed, 90 insertions(+), 109 deletions(-) create mode 100644 source/images/post/2024-06-08-josh-cvx-1-3/2024-06-08-josh-cvx-1-3-150-PinHoleCameraInterpretationOfPerspectiveFuncation.png diff --git a/package-lock.json b/package-lock.json index 994c820..4aa478d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "hexo-generator-tag": "^2.0.0", "hexo-helper-live2d": "^3.1.1", "hexo-neat": "^1.0.9", - "hexo-related-posts": "^1.5.2", "hexo-renderer-ejs": "^2.0.0", "hexo-renderer-pandoc": "^0.4.0", "hexo-renderer-stylus": "^3.0.1", @@ -975,15 +974,6 @@ "node": ">=0.4.0" } }, - "node_modules/afinn-165": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/afinn-165/-/afinn-165-1.0.4.tgz", - "integrity": "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz", @@ -1143,17 +1133,6 @@ "node": ">= 8" } }, - "node_modules/apparatus": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/apparatus/-/apparatus-0.0.10.tgz", - "integrity": "sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg==", - "dependencies": { - "sylvester": ">= 0.0.8" - }, - "engines": { - "node": ">=0.2.6" - } - }, "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz", @@ -5281,18 +5260,6 @@ "node": ">=14" } }, - "node_modules/hexo-related-posts": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/hexo-related-posts/-/hexo-related-posts-1.5.2.tgz", - "integrity": "sha512-IXGTMp6r1AT6rBS4vsWwcnVQ6tPmMA4cju5ldcske6zs7ff9SdqQ6t05UHBJWjyK45NtNu5V5IsqG4o+lzjJ1w==", - "dependencies": { - "natural": "^2.1.5" - }, - "peerDependencies": { - "chalk": "^4.1.0", - "hexo": "^4.2.0 || ^5.2.0 || ^6.3.0 || ^7.1.1" - } - }, "node_modules/hexo-renderer-ejs": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz", @@ -7088,28 +7055,6 @@ "jju": "^1.1.0" } }, - "node_modules/json-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", - "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", - "dependencies": { - "call-bind": "^1.0.5", - "isarray": "^2.0.5", - "jsonify": "^0.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/json-stable-stringify/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", @@ -7140,14 +7085,6 @@ "node": ">= 10.0.0" } }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmmirror.com/jsonparse/-/jsonparse-1.3.1.tgz", @@ -8447,22 +8384,6 @@ "node": ">=0.10.0" } }, - "node_modules/natural": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/natural/-/natural-2.4.5.tgz", - "integrity": "sha512-fxQou4ubo6Rzf7XL0jjwtC2vHm6Sdicu7ztcE0k1ODZs+d1UzcKF1Hu2IwE2y7OgzU3Sa9o8obw7rnyNrjsd1A==", - "dependencies": { - "afinn-165": "^1.0.2", - "apparatus": "^0.0.10", - "json-stable-stringify": "^1.0.1", - "sylvester": "^0.0.12", - "underscore": "^1.9.1", - "wordnet-db": "^3.1.11" - }, - "engines": { - "node": ">=0.4.10" - } - }, "node_modules/ncp": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/ncp/-/ncp-2.0.0.tgz", @@ -11072,14 +10993,6 @@ "node": ">= 0.4" } }, - "node_modules/sylvester": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/sylvester/-/sylvester-0.0.12.tgz", - "integrity": "sha512-SzRP5LQ6Ts2G5NyAa/jg16s8e3R7rfdFjizy1zeoecYWw+nGL+YA1xZvW/+iJmidBGSdLkuvdwTYEyJEb+EiUw==", - "engines": { - "node": ">=0.2.6" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -11447,11 +11360,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", @@ -11994,14 +11902,6 @@ "node": ">=0.10.0" } }, - "node_modules/wordnet-db": { - "version": "3.1.14", - "resolved": "https://registry.npmjs.org/wordnet-db/-/wordnet-db-3.1.14.tgz", - "integrity": "sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag==", - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index f6c1aaf..a013d01 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "hexo-generator-tag": "^2.0.0", "hexo-helper-live2d": "^3.1.1", "hexo-neat": "^1.0.9", - "hexo-related-posts": "^1.5.2", "hexo-renderer-ejs": "^2.0.0", "hexo-renderer-pandoc": "^0.4.0", "hexo-renderer-stylus": "^3.0.1", diff --git a/source/_data/variables.styl b/source/_data/variables.styl index ffcee67..0b7681c 100644 --- a/source/_data/variables.styl +++ b/source/_data/variables.styl @@ -5,4 +5,4 @@ $border-radius = 10px; // $font-family-chinese = "PingFang SC", "Microsoft YaHei"; // Font size of articles. -$font-size-base = 18px \ No newline at end of file +// $font-size-base = 18px \ No newline at end of file diff --git a/source/_posts/2024-06-08-josh-cvx-1-2.md b/source/_posts/2024-06-08-josh-cvx-1-2.md index 2e87acb..5e961c7 100644 --- a/source/_posts/2024-06-08-josh-cvx-1-2.md +++ b/source/_posts/2024-06-08-josh-cvx-1-2.md @@ -113,13 +113,13 @@ $$ # 2. Euclid球和椭球 -  $\bfR^n$ 中的空间 **Euclid 球**(*(Euclidean) ball*)(或简称为球)具有下面的形式: +  $\bfR^n$ 中的空间 **Euclid 球**(*Euclidean ball*)(或简称为球)具有下面的形式: $$ B(x_c,r) = \left\{x\ \middle|\ \left\| x - x_c \right\|_2 \leqslant r \right\} = \left\{ x\ \middle|\ (x-x_c)^\TT(x-x_c) \leqslant r^2 \right\} $$ -其中 $r > 0$, $\| \cdot \|_2$ 表示 Euclid 范数,即 $\|u\|_2 = (u^\TT u)^{1/2}$。向量 $x_r$ 是**球心**(*center*),标量 $r$ 为**半径**(*radius*)。$B (x_c, r)$ 由距离球心 $x_r$ 距离不超过 $r$ 的所有点组成。 Euclid 球的另一个常见的表达式为: +其中 $r > 0$,$\| \cdot \|_2$ 表示 Euclid 范数,即 $\|u\|_2 = (u^\TT u)^{1/2}$。向量 $x_r$ 是**球心**(*center*),标量 $r$ 为**半径**(*radius*)。$B (x_c, r)$ 由距离球心 $x_r$ 距离不超过 $r$ 的所有点组成。 Euclid 球的另一个常见的表达式为: $$ B(x_c,r) = \left\{ x_c + ru\ \middle|\ \|u\|_2 \leqslant 1 \right\} @@ -143,7 +143,7 @@ $$\begin{equation}\label{ellipsoid-1} \E = \left\{ x\ \middle|\ (x-x_c)^\TT P^{-1}(x-x_c) \leqslant 1 \right\} \end{equation}$$ -其中 $P = P^\TT \succ 0$,即 $P$ 是对称正定矩阵。向量 $x_c \in \bfR^n$ 为椭球的中心。矩阵 $P$ 决定了椭球从 $x_c$ 向各个方向扩展的幅度。$\E$ 的半轴长度由 $\sqrt{\lambda_i}$ 给出,这里 $\lambda_i$ 为 $P$ 的特征值。球可以看成 $P =r^2I$ 的椭球。[图 9](#图9) 给出了 $\bfR^2$ 上的一个椭球。 +其中 $P = P^\TT \succ 0$,即 $P$ 是对称正定矩阵。向量 $x_c \in \bfR^n$ 为椭球的中心。矩阵 $P$ 决定了椭球从 $x_c$ 向各个方向扩展的幅度。$\E$ 的半轴长度由 $\sqrt{\lambda_i}$ 给出,这里 $\lambda_i$ 为 $P$ 的特征值。球可以看成 $P = r^2I$ 的椭球。[图 9](#图9) 给出了 $\bfR^2$ 上的一个椭球。 @@ -155,7 +155,7 @@ $$\begin{equation}\label{ellipsoid-2} \E = \left\{ x_c + Au\ \middle|\ \|u\|_2 \leqslant 1 \right\} \end{equation}$$ -其中 $A$ 是非奇异的方阵。在此类表示形式中,我们可以不失一般性地假设 $A$ 对称正定。取 $A=P^{1/2}$,这个表达式给出了由式 $\eqref{ellipsoid-1}$ 定义的椭球。当式 $\eqref{ellipsoid-2}$ 中的矩阵 $A$ 为对称半正定矩阵,但奇异时,集合 $\eqref{ellipsoid-2}$ 称为**退化的椭球**(*degenerate ellipsoid*),其仿射维数等于 $A$ 的秩。退化的椭球也是凸的。 +其中 $A$ 是非奇异的方阵。在此类表示形式中,可以不失一般性地假设 $A$ 对称正定。取 $A=P^{1/2}$,这个表达式给出了由式 $\eqref{ellipsoid-1}$ 定义的椭球。当式 $\eqref{ellipsoid-2}$ 中的矩阵 $A$ 为对称半正定矩阵,但奇异时,集合 $\eqref{ellipsoid-2}$ 称为**退化的椭球**(*degenerate ellipsoid*),其仿射维数等于 $A$ 的秩。退化的椭球也是凸的。 # 3. 范数球和范数锥 diff --git a/source/_posts/2024-06-08-josh-cvx-1-3.md b/source/_posts/2024-06-08-josh-cvx-1-3.md index 14a6f62..c4c423c 100644 --- a/source/_posts/2024-06-08-josh-cvx-1-3.md +++ b/source/_posts/2024-06-08-josh-cvx-1-3.md @@ -27,13 +27,15 @@ $ \newcommand{\bfS}{\mathbf{S}} \newcommand{\TT}{\mathrm{T}} \newcommand{\H}{\mathcal{H}} +\newcommand{\E}{\mathcal{E}} +\def\dom{\mathop{\bf dom}} $  本文将描述一些保凸运算,利用保凸运算可以使用凸集构造出其他凸集。这些运算与[*Part 1.2 凸集—一些重要的凸集*](https://josh-gao.top/posts/9293b739.html)中描述的凸集的简单例子一起构成了凸集的演算,可以用来确定或构建集合的凸性。 # 1. 交集   交集运算是保凸的:如果 $S_1$ 和 $S_2$ 是凸集,那么 $S_1 \cap S_2$ 也是凸集。这个性质可以扩展到无穷个集合的交:如果对于任意 $\alpha\in A$,$S_\alpha$ 都是凸的,那么 $\displaystyle \bigcap_{\alpha \in A} S_\alpha$ 也是凸集。(子空间、仿射集合和凸锥对与任意交运算也是封闭的。)举一个简单的例子,多面体是半空间和超平面(它们都是凸集)的交集,因而是凸的。 -> **举例** 半正定锥 $\bfS^n_+$ 可以表示为, +> **举例** 半正定锥 $\bfS^n_+$ 可以表示为 > > $$ > \bigcap_{z\ne 0} \left\{ X \in \bfS^n\ \middle|\ z^\TT Xz \geqslant 0 \right\} @@ -79,7 +81,7 @@ $$ # 2. 仿射函数 -  函数 $f: \bfR^n \to \bfR^m$ 是**仿射**(*affine*)的,如果它是一个线性函数和一个常数的和,即具有 $f(x) = Ax+ b$ 的形式,其中 $A \in \bfR^{m\times n}$,$b \in \bfR^m$。假设 $S \subseteq \bfR^n$ 是凸的,并且 $f: \bfR^n \to \bfR^m$ 是仿射函数。那么,$S$ 在 f$ 下的象 +  函数 $f: \bfR^n \to \bfR^m$ 是**仿射**(*affine*)的,如果它是一个线性函数和一个常数的和,即具有 $f(x) = Ax+ b$ 的形式,其中 $A \in \bfR^{m\times n}$,$b \in \bfR^m$。假设 $S \subseteq \bfR^n$ 是凸的,并且 $f: \bfR^n \to \bfR^m$ 是仿射函数。那么,$S$ 在 $f$ 下的象 $$ f(S) = \left\{ f(x)\ \middle|\ x\in S \right\} @@ -93,7 +95,7 @@ $$ 是凸的。 -  两个简单的例子是**伸缩**(*scaling*)和**平移**(*translation*)。如果 $S \subseteq \bfR^n$ 是凸集,$\alpha \in \bfR^n$ 并且 $a \in \bfR^n$,那么,集合 $\alpha S$ 和 $S+a$ 是凸的,其中 +  两个简单的例子是**伸缩**(*scaling*)和**平移**(*translation*)。如果 $S \subseteq \bfR^n$ 是凸集,$\alpha \in \bfR$ 并且 $a \in \bfR^n$,那么,集合 $\alpha S$ 和 $S+a$ 是凸的,其中 $$ \alpha S = \left\{ \alpha x\ \middle|\ x \in S \right\},\qquad S + a = \left\{ x + a\ \middle|\ x \in S \right\} @@ -129,6 +131,86 @@ $$ 其中 $x\in\bfR^n$,$y_i \in \bfR^m$。$m=0$ 时,部分和给出了 $S_1$ 和 $S_2$的交集;$n=0$ 时,部分和等于集合之和。凸集的部分和是凸集。 +> **举例** **多面体**。$\{ x\ |\ Ax \preceq b, Cx = d \}$ 可以表示为非负象限和原点的 Cartesian 乘积在仿射函数 $f(x) = (b -Ax, d - Cx)$ 下的原象: +> +> $$ +> \{x\ |\ Ax\preceq b, Cx = d\} = \{ x\ |\ f(x) \in \bfR^m_+ \times \{0\}\} +> $$ + +> **举例** **线性矩阵不等式的解**。条件 +> +> $$\begin{equation} +> A(x) = x_1 A_1 + \cdots + x_nA_n \preceq B +> \end{equation}$$ +> +> 称为关于 $x$ 的**线性矩阵不等式**(*Linear Matrix Inequality, LMI*),其中 $B,A_i \in \bfS^m$(注意它与有序线性不等式 +> +> $$ +> a^\TT x = x_1a_1+\cdots x_na_n \leqslant b +> $$ +> +> 的相似性,其中 $b,a_i\in \bfR$。) +> +> 线性矩阵不等式的解 $\{ x\ |\ A(x) \preceq B\}$ 是凸集。事实上,它是半正定锥在由 $f(x) = B-A(x)$ 给定的仿射映射 $f: \bfR^n \to \bfS^m$ 下的原象。 + +> **举例** **双曲锥**。集合 +> +> $$ +> \{ x\ |\ x^\TT Px \leqslant (c^\TT x) ^2, c^\TT x \geqslant 0 \} +> $$ +> +> 是凸集,其中 $P\in\bfS^n_+$,$c\in\bfR$ 这是因为它是二阶锥 +> +> $$ +> \{ (z,t)\ |\ z^\TT z \leqslant t ^2 , t \geqslant 0 \} +> $$ +> +> 在仿射函数 $f(x) = (P^{1/2}x,c^\TT x)$ 下的原象。 + +> **举例** **椭球**。椭球 +> +> $$ +> \E = \{ x\ |\ (x-x_c)^\TT P^{-1} (x-x_c) \leqslant 1 \} +> $$ +> +> 是单位 Euclid 球 $\{ u\ |\ \|u\|_2 \leqslant 1 \}$ 在仿射映射 $f(u) = P^{1/2}u + x_c$ 下的象, 其中 $P \in \bfS^n_{++}$。(同时也是单位球在仿射映射 $g(x) = P^{-1/2}(x — x_c)$ 下的原象。) + +# 3. 线性分式及透视函数 + +  本节将讨论一类称为**线性分式**(*linear-fractional*)的函数,它比仿射函数更普遍,并且仍然保凸。 + +## 3.1 透视函数 + +  定义 $P:\bfR^{n+1}\to\bfR^n$ 为**透视函数**(*perspective function*),其定义域为 $\dom P = \bfR^n \times \bfR_{++}$。(此处的 $\bfR_{++}$ 表示正实数集合,即 $\bfR_{++} = \{ x\in\bfR\ |\ x > 0 \}$。)透视函数对向量进行伸缩(scale),或称为规范化(normalize),使得最后一维分量为1 并舍弃之。 + +> **注释** 我们用小孔成象来解释透视函数。($\bfR^3$ 中的)小孔照相机由一个不透明的水平面 $x_3 = 0$ 和一个在原点的小孔组成,光线通过这个小孔在 $x_3 = -1$ 呈现出一个水平图像。在相机上方 $x(x_3 > 0)$ 处的一个物体,在相平面的点 $=(x_1/x_3,x_2/x_3,1)$ 处形成一个图像。忽略象点的最后一维分量(因为它恒等于 $-1$),$x$ 处的点的象在象平面上呈现于 $y=-(x_1/x_3,x_2/x_3)$ 处。[图 15](#图15)显示了这个过程。 +> +> +> +> ![图 15.透视函数的小孔成象解释。深色的水平直线表示 $\bfR^3$ 中的平面 $x_3 = 0$,除了在原点处有一个小孔外,它是不透光的。平面之上的物体或光源呈现在浅色水平直线所示的象平面 $x_3 = -1$ 上。源位置向其象位置的映射对应于透视函数。](../images/post/2024-06-08-josh-cvx-1-3/2024-06-08-josh-cvx-1-3-150-PinHoleCameraInterpretationOfPerspectiveFuncation.png){width=500px} + +  如果 $C \subseteq \dom P$ 是凸集,那么它的象 + +$$ +P(C) = \{ P(x)\ |\ x\in C \} +$$ + +也是凸集。这个结论很直观:通过小孔观察一个凸的物体,可以得到凸的象。为解释这个事实,我们将说明在透视函数作用下,线段将被映射成线段。(也可以这样理解,通过小孔,一条线段的象是一条线段。)假设 $x = (\tilde{x},x_{n+1}), y = (\tilde{y}, y_{n+1}) \in \bfR^{n+1}$,并且 $x_{n+1}>0, y_{n+1}>0$ 。那么,对于 $0 \leqslant \theta \leqslant 1$ + +$$ +P(\theta x + (1-\theta)y) = \frac{\theta\tilde{x}+ (1-\theta)\tilde{y}}{\theta x_{n+1} + (1-\theta)y_{n+1}} = \mu P(x) + (1-\mu) P(x) +$$ + +其中 + +$$ +\mu = \frac{\theta x_{n+1}}{\theta x_{n+1} + (1-\theta) y_{n+1}}\in[0,1] +$$ + +$\theta$ 和 $\mu$ 之间的关系是单调的:当 $\theta$ 在 $0$、$1$ 间变化时(形成线段 $[x,y]$),$μ$ 也在 $0$、$1$ 间变化(形成线段 $[P(x),P(y)]$。这说明 $P([x,y]) = [P(x),P(y)]$。 + +  现在假设 $C$ 是凸的,并且有 $C \subseteq \dom P$(即对于所有 $x\in C$,$x_{n+1} > 0$) 及 $x,y\in C$。为显示 $P(C)$ 的凸性,需要说明线段 $[P(x), P(y)]$ 在 $P(C)$ 中。这条线段是线段 $[x,y]$ 在 $P$ 的象,因而属于 $P(C)$。 + # 参考文献 1. Stephen P. Boyd and Lieven Vandenberghe, *Convex optimization*. Cambridge, UK: Cambridge University Press, 2004. diff --git a/source/images/post/2024-06-08-josh-cvx-1-3/2024-06-08-josh-cvx-1-3-150-PinHoleCameraInterpretationOfPerspectiveFuncation.png b/source/images/post/2024-06-08-josh-cvx-1-3/2024-06-08-josh-cvx-1-3-150-PinHoleCameraInterpretationOfPerspectiveFuncation.png new file mode 100644 index 0000000000000000000000000000000000000000..59a339c30e0224357c1ed99b7874a7cc5dd6093c GIT binary patch literal 25146 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 T^(>$`Ub+Km<7i!Lc`^Pkg**N0 literal 0 HcmV?d00001