diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..66312df9 --- /dev/null +++ b/404.html @@ -0,0 +1,40 @@ + + + + + + + + + + 北辞 + + + + + +
跳至主要內容

404

页面不存在

这 是 四 零 四 !

+ + + diff --git a/article/index.html b/article/index.html new file mode 100644 index 00000000..d3944bea --- /dev/null +++ b/article/index.html @@ -0,0 +1,188 @@ + + + + + + + + + + 文章 | 北辞 + + + + + +
跳至主要內容
VASP 运行中的错误

VASP 运行中的错误

+

Error EDDDAV: Call to ZHEGV failed. Returncode = xx

+

这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。

+

参考:Re: on solving "Error EDDDAV: Call to ZHEGV failed. Returncode = xx" (vasp.at)


Northword小于 1 分钟
Openmpi

Openmpi

+

各种乱七八糟的报错

+
libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4
+--------------------------------------------------------------------------
+Failed to create a queue pair (QP):
+
+Hostname: compute-0-9
+Requested max number of outstanding WRs in the SQ:                1
+Requested max number of outstanding WRs in the RQ:                2
+Requested max number of SGEs in a WR in the SQ:                   511
+Requested max number of SGEs in a WR in the RQ:                   511
+Requested max number of data that can be posted inline to the SQ: 0
+Error:    File exists
+
+Check requested attributes.
+--------------------------------------------------------------------------
+--------------------------------------------------------------------------
+Open MPI has detected that there are UD-capable Verbs devices on your
+system, but none of them were able to be setup properly.  This may
+indicate a problem on this system.
+
+You job will continue, but Open MPI will ignore the "ud" oob component
+in this run.
+
+Hostname: compute-0-9
+--------------------------------------------------------------------------
+

Northword小于 1 分钟
Office 安装

Office 安装

+

使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。

+

下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。

+

OTP 下载

+

下载 | Office Tool Plus 官方网站 (landian.vip)


Northword小于 1 分钟
X 射线吸收谱

X 射线吸收谱

+

download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)

+

撰文:LY & CWX   编辑:DJ

+

前言:

+

随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。


Northword大约 6 分钟
pip 报错

pip 报错

+

找不到指定文件

+

安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。

+

课题组一个同学安装 ase 时遇到以下报错,

+
C:\Users\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
+Defaulting to user installation because normal site-packages is not writeable
+Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
+Collecting ase
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
+Collecting matplotlib>=3.1.0
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB)
+Collecting numpy>=1.15.0
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB)
+Collecting scipy>=1.1.0
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB)
+  Installing build dependencies ... done
+  Getting requirements to build wheel ... error
+  error: subprocess-exited-with-error
+
+  × Getting requirements to build wheel did not run successfully.
+  │ exit code: 1
+  ╰─> [55 lines of output]
+      The Meson build system
+      Version: 0.62.2
+      Source dir: C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd
+      Build dir: C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build
+      Build type: native build
+      Project name: SciPy
+      Project version: 1.9.1
+      WARNING: Failed to activate VS environment: Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe
+
+      ..\..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]
+      The following exception(s) were encountered:
+      Running "icl " gave "[WinError 2] 系统找不到指定的文件。"
+      Running "cl /?" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "cc --version" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "gcc --version" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "clang --version" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "clang-cl /?" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "pgcc --version" gave "[WinError 2] 系统找不到指定的文件。"
+
+      A full log can be found at C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build\meson-logs\meson-log.txt
+      + meson setup --native-file=C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\Program Files\Python311 C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build
+      Traceback (most recent call last):
+        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 363, in <module>
+          main()
+        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 345, in main
+          json_out['return_val'] = hook(**hook_input['kwargs'])
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 130, in get_requires_for_build_wheel
+          return hook(config_settings)
+                 ^^^^^^^^^^^^^^^^^^^^^
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 923, in get_requires_for_build_wheel
+          with _project(config_settings) as project:
+        File "C:\Program Files\Python311\Lib\contextlib.py", line 137, in __enter__
+          return next(self.gen)
+                 ^^^^^^^^^^^^^^
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 902, in _project
+          with Project.with_temp_working_dir(
+        File "C:\Program Files\Python311\Lib\contextlib.py", line 137, in __enter__
+          return next(self.gen)
+                 ^^^^^^^^^^^^^^
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 547, in with_temp_working_dir
+          yield cls(source_dir, tmpdir, build_dir)
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 463, in __init__
+          self._configure(reconfigure=bool(build_dir) and not native_file_mismatch)
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 494, in _configure
+          self._meson(
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 477, in _meson
+          return self._proc('meson', *args)
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
+        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 472, in _proc
+          subprocess.check_call(list(args))
+        File "C:\Program Files\Python311\Lib\subprocess.py", line 413, in check_call
+          raise CalledProcessError(retcode, cmd)
+      subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\Program Files\\Python311', 'C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build']' returned non-zero exit status 1.
+      [end of output]
+
+  note: This error originates from a subprocess, and is likely not a problem with pip.
+error: subprocess-exited-with-error
+
+× Getting requirements to build wheel did not run successfully.
+│ exit code: 1
+╰─> See above for output.
+
+note: This error originates from a subprocess, and is likely not a problem with pip.
+
+

Northword大约 7 分钟
Raman

Raman

+

波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm1cm^{-1})。


Northword小于 1 分钟
+ + + diff --git a/assets/--iemq2ucq.png b/assets/--iemq2ucq.png new file mode 100644 index 00000000..00fc6e1f Binary files /dev/null and b/assets/--iemq2ucq.png differ diff --git a/assets/1443f8e66c95a78827d048c7d7e89ef5-Lm7uHv68.png b/assets/1443f8e66c95a78827d048c7d7e89ef5-Lm7uHv68.png new file mode 100644 index 00000000..ffc5d715 Binary files /dev/null and b/assets/1443f8e66c95a78827d048c7d7e89ef5-Lm7uHv68.png differ diff --git a/assets/237288bfbb59c4a86d1d70398576be49-6w9ToJf2.png b/assets/237288bfbb59c4a86d1d70398576be49-6w9ToJf2.png new file mode 100644 index 00000000..5ba062b9 Binary files /dev/null and b/assets/237288bfbb59c4a86d1d70398576be49-6w9ToJf2.png differ diff --git a/assets/2aab2e764c29483336dc4ed86549e710582a9c6a.png@942w_1047h_progressive-lPzVj8vk.webp b/assets/2aab2e764c29483336dc4ed86549e710582a9c6a.png@942w_1047h_progressive-lPzVj8vk.webp new file mode 100644 index 00000000..c9fd780c Binary files /dev/null and b/assets/2aab2e764c29483336dc4ed86549e710582a9c6a.png@942w_1047h_progressive-lPzVj8vk.webp differ diff --git a/assets/362168238c6600dcac8c0bfeb7738a13-qWH0eWf5.png b/assets/362168238c6600dcac8c0bfeb7738a13-qWH0eWf5.png new file mode 100644 index 00000000..59495f65 Binary files /dev/null and b/assets/362168238c6600dcac8c0bfeb7738a13-qWH0eWf5.png differ diff --git a/assets/38fcf9e3590a9cc4f8081b1e6808d4fc-xgcFDEkJ.png b/assets/38fcf9e3590a9cc4f8081b1e6808d4fc-xgcFDEkJ.png new file mode 100644 index 00000000..03327cec Binary files /dev/null and b/assets/38fcf9e3590a9cc4f8081b1e6808d4fc-xgcFDEkJ.png differ diff --git a/assets/3bba5a4242f7c15534225c20a4c1e35c-T42ENHdB.jpg b/assets/3bba5a4242f7c15534225c20a4c1e35c-T42ENHdB.jpg new file mode 100644 index 00000000..b0668ccd Binary files /dev/null and b/assets/3bba5a4242f7c15534225c20a4c1e35c-T42ENHdB.jpg differ diff --git a/assets/3d1bc1797140403edfb7f0011ab71de5-yaXlBe1s.png b/assets/3d1bc1797140403edfb7f0011ab71de5-yaXlBe1s.png new file mode 100644 index 00000000..df2693f0 Binary files /dev/null and b/assets/3d1bc1797140403edfb7f0011ab71de5-yaXlBe1s.png differ diff --git a/assets/404.html-a6q8b7vf.js b/assets/404.html-a6q8b7vf.js new file mode 100644 index 00000000..38f5c38d --- /dev/null +++ b/assets/404.html-a6q8b7vf.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/404.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/404.html-f5N7lpKI.js b/assets/404.html-f5N7lpKI.js new file mode 100644 index 00000000..5713f3a6 --- /dev/null +++ b/assets/404.html-f5N7lpKI.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(_,n){return t(),c("div")}const f=e(o,[["render",r],["__file","404.html.vue"]]);export{f as default}; diff --git a/assets/47044b1f5eb9ee600f264340cab0c78a-gsqIgbGN.png b/assets/47044b1f5eb9ee600f264340cab0c78a-gsqIgbGN.png new file mode 100644 index 00000000..fd14fa6f Binary files /dev/null and b/assets/47044b1f5eb9ee600f264340cab0c78a-gsqIgbGN.png differ diff --git a/assets/5405ed5c731ff42d37e6ec8a014fa6a6-u2q13gqj.png b/assets/5405ed5c731ff42d37e6ec8a014fa6a6-u2q13gqj.png new file mode 100644 index 00000000..32b68be1 Binary files /dev/null and b/assets/5405ed5c731ff42d37e6ec8a014fa6a6-u2q13gqj.png differ diff --git a/assets/64206bdbbad90a9ab4ba1aa3889a2e05-Zmmhpxdl.png b/assets/64206bdbbad90a9ab4ba1aa3889a2e05-Zmmhpxdl.png new file mode 100644 index 00000000..126e0a2b Binary files /dev/null and b/assets/64206bdbbad90a9ab4ba1aa3889a2e05-Zmmhpxdl.png differ diff --git a/assets/6e949785968ebd84aea5c65ba3ede31b3e54ab98.png@942w_326h_progressive-jBbhm6Mi.webp b/assets/6e949785968ebd84aea5c65ba3ede31b3e54ab98.png@942w_326h_progressive-jBbhm6Mi.webp new file mode 100644 index 00000000..5898c028 Binary files /dev/null and b/assets/6e949785968ebd84aea5c65ba3ede31b3e54ab98.png@942w_326h_progressive-jBbhm6Mi.webp differ diff --git a/assets/712b4026fdc29fc75f8a1b2002119422-kuCBX5J0.png b/assets/712b4026fdc29fc75f8a1b2002119422-kuCBX5J0.png new file mode 100644 index 00000000..b01dcd4f Binary files /dev/null and b/assets/712b4026fdc29fc75f8a1b2002119422-kuCBX5J0.png differ diff --git a/assets/7488b4869aad2b110bfff2effa063dc6-hL3Krz9l.png b/assets/7488b4869aad2b110bfff2effa063dc6-hL3Krz9l.png new file mode 100644 index 00000000..7b6b9dbf Binary files /dev/null and b/assets/7488b4869aad2b110bfff2effa063dc6-hL3Krz9l.png differ diff --git a/assets/923667c21e609865c98457cb3961f2e300d1d96c.jpg@942w_728h_progressive-OJgrEUAA.webp b/assets/923667c21e609865c98457cb3961f2e300d1d96c.jpg@942w_728h_progressive-OJgrEUAA.webp new file mode 100644 index 00000000..a14180b4 Binary files /dev/null and b/assets/923667c21e609865c98457cb3961f2e300d1d96c.jpg@942w_728h_progressive-OJgrEUAA.webp differ diff --git a/assets/Aria2.html-JBGYZt4P.js b/assets/Aria2.html-JBGYZt4P.js new file mode 100644 index 00000000..f96db03e --- /dev/null +++ b/assets/Aria2.html-JBGYZt4P.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-0f6d941f","path":"/software/Aria2.html","title":"Aria2 折腾记录","lang":"zh-CN","frontmatter":{"title":"Aria2 折腾记录","date":"2022-01-18T21:54:39.000Z","updated":"2022-01-28T00:09:04.000Z","description":"Aria2 折腾记录 关于 Aria2 aria2 是一款支持多种协议的轻量级命令行下载工具。 安装与配置 Aria2 Aria2 的运行依靠以下几个文件: 文件名 描述 必须? aria2c (or aria2c.exe) 主程序 是 aria2.conf 配置文件 是 aria2.session 任务文件 是 aria2.log 日志文件 否","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/Aria2.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Aria2 折腾记录"}],["meta",{"property":"og:description","content":"Aria2 折腾记录 关于 Aria2 aria2 是一款支持多种协议的轻量级命令行下载工具。 安装与配置 Aria2 Aria2 的运行依靠以下几个文件: 文件名 描述 必须? aria2c (or aria2c.exe) 主程序 是 aria2.conf 配置文件 是 aria2.session 任务文件 是 aria2.log 日志文件 否"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-01-18T21:54:39.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Aria2 折腾记录\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-18T21:54:39.000Z\\",\\"dateModified\\":\\"2022-09-16T13:53:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"关于 Aria2","slug":"关于-aria2","link":"#关于-aria2","children":[]},{"level":2,"title":"安装与配置 Aria2","slug":"安装与配置-aria2","link":"#安装与配置-aria2","children":[]},{"level":2,"title":"与 OneDrive 联动","slug":"与-onedrive-联动","link":"#与-onedrive-联动","children":[{"level":3,"title":"通过 Reclon 和 upload.sh","slug":"通过-reclon-和-upload-sh","link":"#通过-reclon-和-upload-sh","children":[]}]},{"level":2,"title":"参考资料","slug":"参考资料","link":"#参考资料","children":[]}],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.67,"words":202},"filePathRelative":"software/Aria2.md","localizedDate":"2022年1月19日","excerpt":"

Aria2 折腾记录

\\n

关于 Aria2

\\n

aria2 是一款支持多种协议的轻量级命令行下载工具。

\\n

安装与配置 Aria2

\\n

Aria2 的运行依靠以下几个文件:

\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
文件名描述必须?
aria2c (or aria2c.exe)主程序
aria2.conf配置文件
aria2.session任务文件
aria2.log日志文件
","autoDesc":true}');export{t as data}; diff --git a/assets/Aria2.html-PJ74YCVK.js b/assets/Aria2.html-PJ74YCVK.js new file mode 100644 index 00000000..f6459d26 --- /dev/null +++ b/assets/Aria2.html-PJ74YCVK.js @@ -0,0 +1 @@ +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as i,c as n,a as e,b as r,e as t,d as h}from"./app-Mf7X6hWu.js";const c={},s=h('

Aria2 折腾记录

关于 Aria2

aria2 是一款支持多种协议的轻量级命令行下载工具。

安装与配置 Aria2

Aria2 的运行依靠以下几个文件:

文件名描述必须?
aria2c (or aria2c.exe)主程序
aria2.conf配置文件
aria2.session任务文件
aria2.log日志文件

与 OneDrive 联动

通过 Reclon 和 upload.sh

Aria2 的 on-completed 参数设置后,会在任务完成时向指定脚本传递任务的 UID、文件数量、任务路径三个参数。

参考资料

',10),l={href:"https://github.com/P3TERX/aria2.sh",target:"_blank",rel:"noopener noreferrer"},p={href:"https://p3terx.com/archives/use-aria2-under-windows.html",target:"_blank",rel:"noopener noreferrer"},_={href:"https://p3terx.com/archives/offline-download-of-onedrive-gdrive.html",target:"_blank",rel:"noopener noreferrer"};function f(u,m){const a=o("ExternalLinkIcon");return i(),n("div",null,[s,e("p",null,[e("a",l,[r("P3TERX/aria2.sh: Aria2 一键安装管理脚本 增强版 (github.com)"),t(a)]),e("a",p,[r("在 Windows 中使用 Aria2 - P3TERX ZONE"),t(a)]),e("a",_,[r("Aria2 + Rclone 实现 OneDrive、Google Drive 等网盘离线下载 - P3TERX ZONE"),t(a)])])])}const v=d(c,[["render",f],["__file","Aria2.html.vue"]]);export{v as default}; diff --git a/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf b/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf new file mode 100644 index 00000000..c6f9a5e7 Binary files /dev/null and b/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf differ diff --git a/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2 b/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2 new file mode 100644 index 00000000..0acaaff0 Binary files /dev/null and b/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2 differ diff --git a/assets/KaTeX_AMS-Regular-zJvWDgGp.woff b/assets/KaTeX_AMS-Regular-zJvWDgGp.woff new file mode 100644 index 00000000..b804d7b3 Binary files /dev/null and b/assets/KaTeX_AMS-Regular-zJvWDgGp.woff differ diff --git a/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2 b/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2 new file mode 100644 index 00000000..f390922e Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2 differ diff --git a/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf b/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf new file mode 100644 index 00000000..9ff4a5e0 Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf differ diff --git a/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff b/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff new file mode 100644 index 00000000..9759710d Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff differ diff --git a/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2 b/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2 new file mode 100644 index 00000000..75344a1f Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2 differ diff --git a/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf b/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf new file mode 100644 index 00000000..f522294f Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf differ diff --git a/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff b/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff new file mode 100644 index 00000000..9bdd534f Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff differ diff --git a/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf b/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf new file mode 100644 index 00000000..4e98259c Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf differ diff --git a/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff b/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff new file mode 100644 index 00000000..e7730f66 Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff differ diff --git a/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2 b/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2 new file mode 100644 index 00000000..395f28be Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2 differ diff --git a/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff b/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff new file mode 100644 index 00000000..acab069f Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff differ diff --git a/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf b/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf new file mode 100644 index 00000000..b8461b27 Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf differ diff --git a/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2 b/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2 new file mode 100644 index 00000000..735f6948 Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2 differ diff --git a/assets/KaTeX_Main-Bold-CZtwCMuf.woff b/assets/KaTeX_Main-Bold-CZtwCMuf.woff new file mode 100644 index 00000000..f38136ac Binary files /dev/null and b/assets/KaTeX_Main-Bold-CZtwCMuf.woff differ diff --git a/assets/KaTeX_Main-Bold-MGqDlVzd.ttf b/assets/KaTeX_Main-Bold-MGqDlVzd.ttf new file mode 100644 index 00000000..4060e627 Binary files /dev/null and b/assets/KaTeX_Main-Bold-MGqDlVzd.ttf differ diff --git a/assets/KaTeX_Main-Bold-sffOiHVw.woff2 b/assets/KaTeX_Main-Bold-sffOiHVw.woff2 new file mode 100644 index 00000000..ab2ad21d Binary files /dev/null and b/assets/KaTeX_Main-Bold-sffOiHVw.woff2 differ diff --git a/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf b/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf new file mode 100644 index 00000000..dc007977 Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf differ diff --git a/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2 b/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2 new file mode 100644 index 00000000..5931794d Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2 differ diff --git a/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff b/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff new file mode 100644 index 00000000..67807b0b Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff differ diff --git a/assets/KaTeX_Main-Italic-DVgO3ulm.woff2 b/assets/KaTeX_Main-Italic-DVgO3ulm.woff2 new file mode 100644 index 00000000..b50920e1 Binary files /dev/null and b/assets/KaTeX_Main-Italic-DVgO3ulm.woff2 differ diff --git a/assets/KaTeX_Main-Italic-N1npxqDf.ttf b/assets/KaTeX_Main-Italic-N1npxqDf.ttf new file mode 100644 index 00000000..0e9b0f35 Binary files /dev/null and b/assets/KaTeX_Main-Italic-N1npxqDf.ttf differ diff --git a/assets/KaTeX_Main-Italic-TCzgZvdR.woff b/assets/KaTeX_Main-Italic-TCzgZvdR.woff new file mode 100644 index 00000000..6f43b594 Binary files /dev/null and b/assets/KaTeX_Main-Italic-TCzgZvdR.woff differ diff --git a/assets/KaTeX_Main-Regular-6_eCWgYQ.woff b/assets/KaTeX_Main-Regular-6_eCWgYQ.woff new file mode 100644 index 00000000..21f58129 Binary files /dev/null and b/assets/KaTeX_Main-Regular-6_eCWgYQ.woff differ diff --git a/assets/KaTeX_Main-Regular-MqWbzbVV.ttf b/assets/KaTeX_Main-Regular-MqWbzbVV.ttf new file mode 100644 index 00000000..dd45e1ed Binary files /dev/null and b/assets/KaTeX_Main-Regular-MqWbzbVV.ttf differ diff --git a/assets/KaTeX_Main-Regular-dtjb4qKe.woff2 b/assets/KaTeX_Main-Regular-dtjb4qKe.woff2 new file mode 100644 index 00000000..eb24a7ba Binary files /dev/null and b/assets/KaTeX_Main-Regular-dtjb4qKe.woff2 differ diff --git a/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff b/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff new file mode 100644 index 00000000..0ae390d7 Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff differ diff --git a/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf b/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf new file mode 100644 index 00000000..728ce7a1 Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf differ diff --git a/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2 b/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2 new file mode 100644 index 00000000..29657023 Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2 differ diff --git a/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf b/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf new file mode 100644 index 00000000..70d559b4 Binary files /dev/null and b/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf differ diff --git a/assets/KaTeX_Math-Italic-LedwBEzP.woff2 b/assets/KaTeX_Math-Italic-LedwBEzP.woff2 new file mode 100644 index 00000000..215c143f Binary files /dev/null and b/assets/KaTeX_Math-Italic-LedwBEzP.woff2 differ diff --git a/assets/KaTeX_Math-Italic-wNP_z16f.woff b/assets/KaTeX_Math-Italic-wNP_z16f.woff new file mode 100644 index 00000000..eb5159d4 Binary files /dev/null and b/assets/KaTeX_Math-Italic-wNP_z16f.woff differ diff --git a/assets/KaTeX_SansSerif-Bold-2yISjogg.woff b/assets/KaTeX_SansSerif-Bold-2yISjogg.woff new file mode 100644 index 00000000..8d47c02d Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-2yISjogg.woff differ diff --git a/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2 b/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2 new file mode 100644 index 00000000..cfaa3bda Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2 differ diff --git a/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf b/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf new file mode 100644 index 00000000..2f65a8a3 Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf differ diff --git a/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff b/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff new file mode 100644 index 00000000..7e02df96 Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff differ diff --git a/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf b/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf new file mode 100644 index 00000000..d5850df9 Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf differ diff --git a/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2 b/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2 new file mode 100644 index 00000000..349c06dc Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2 differ diff --git a/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf b/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf new file mode 100644 index 00000000..537279f6 Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf differ diff --git a/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff b/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff new file mode 100644 index 00000000..31b84829 Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff differ diff --git a/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2 b/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2 new file mode 100644 index 00000000..a90eea85 Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2 differ diff --git a/assets/KaTeX_Script-Regular--ckFYqpa.woff b/assets/KaTeX_Script-Regular--ckFYqpa.woff new file mode 100644 index 00000000..0e7da821 Binary files /dev/null and b/assets/KaTeX_Script-Regular--ckFYqpa.woff differ diff --git a/assets/KaTeX_Script-Regular-98CFnxev.woff2 b/assets/KaTeX_Script-Regular-98CFnxev.woff2 new file mode 100644 index 00000000..b3048fc1 Binary files /dev/null and b/assets/KaTeX_Script-Regular-98CFnxev.woff2 differ diff --git a/assets/KaTeX_Script-Regular-uSZBlqPg.ttf b/assets/KaTeX_Script-Regular-uSZBlqPg.ttf new file mode 100644 index 00000000..fd679bf3 Binary files /dev/null and b/assets/KaTeX_Script-Regular-uSZBlqPg.ttf differ diff --git a/assets/KaTeX_Size1-Regular-27J7nvyK.ttf b/assets/KaTeX_Size1-Regular-27J7nvyK.ttf new file mode 100644 index 00000000..871fd7d1 Binary files /dev/null and b/assets/KaTeX_Size1-Regular-27J7nvyK.ttf differ diff --git a/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2 b/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2 new file mode 100644 index 00000000..c5a8462f Binary files /dev/null and b/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2 differ diff --git a/assets/KaTeX_Size1-Regular-tfebZ-uE.woff b/assets/KaTeX_Size1-Regular-tfebZ-uE.woff new file mode 100644 index 00000000..7f292d91 Binary files /dev/null and b/assets/KaTeX_Size1-Regular-tfebZ-uE.woff differ diff --git a/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2 b/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2 new file mode 100644 index 00000000..e1bccfe2 Binary files /dev/null and b/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2 differ diff --git a/assets/KaTeX_Size2-Regular-KA9bXP1N.woff b/assets/KaTeX_Size2-Regular-KA9bXP1N.woff new file mode 100644 index 00000000..d241d9be Binary files /dev/null and b/assets/KaTeX_Size2-Regular-KA9bXP1N.woff differ diff --git a/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf b/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf new file mode 100644 index 00000000..7a212caf Binary files /dev/null and b/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf differ diff --git a/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf b/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf new file mode 100644 index 00000000..00bff349 Binary files /dev/null and b/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf differ diff --git a/assets/KaTeX_Size3-Regular-k6uTKqBB.woff b/assets/KaTeX_Size3-Regular-k6uTKqBB.woff new file mode 100644 index 00000000..e6e9b658 Binary files /dev/null and b/assets/KaTeX_Size3-Regular-k6uTKqBB.woff differ diff --git a/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf b/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf new file mode 100644 index 00000000..74f08921 Binary files /dev/null and b/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf differ diff --git a/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2 b/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2 new file mode 100644 index 00000000..680c1308 Binary files /dev/null and b/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2 differ diff --git a/assets/KaTeX_Size4-Regular-RfuIJGSk.woff b/assets/KaTeX_Size4-Regular-RfuIJGSk.woff new file mode 100644 index 00000000..e1ec5457 Binary files /dev/null and b/assets/KaTeX_Size4-Regular-RfuIJGSk.woff differ diff --git a/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf b/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf new file mode 100644 index 00000000..c83252c5 Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf differ diff --git a/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2 b/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2 new file mode 100644 index 00000000..771f1af7 Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2 differ diff --git a/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff b/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff new file mode 100644 index 00000000..2432419f Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff differ diff --git a/assets/SearchResult-nHYR70zC.js b/assets/SearchResult-nHYR70zC.js new file mode 100644 index 00000000..c91f2fcf --- /dev/null +++ b/assets/SearchResult-nHYR70zC.js @@ -0,0 +1 @@ +import{u as I,f as ee,g as j,h as B,J as ae,i as le,t as se,j as x,k as D,l as te,m as J,n as l,p as _,q as F,s as U,v as re,x as ue,y as ie,z as ne,R as oe,O as ce,A as ve,B as pe,C as he,D as ye,E as de,F as me,G as b,H as fe}from"./app-Mf7X6hWu.js";const ge="SEARCH_PRO_QUERY_HISTORY",y=I(ge,[]),He=()=>{const{queryHistoryCount:r}=b,n=r>0;return{enabled:n,queryHistory:y,addQueryHistory:t=>{n&&(y.value.length{y.value=[...y.value.slice(0,t),...y.value.slice(t+1)]}}},Qe="SEARCH_PRO_RESULT_HISTORY",{resultHistoryCount:E}=b,d=I(Qe,[]),Re=()=>{const r=j(),n=E>0,t=s=>r.resolve({name:s.key,..."anchor"in s?{hash:`#${s.anchor}`}:{}}).fullPath;return{enabled:n,resultHistory:d,addResultHistory:s=>{if(n){const u={link:t(s),display:s.display};"header"in s&&(u.header=s.header),d.value.length{d.value=[...d.value.slice(0,s),...d.value.slice(s+1)]}}},ke=r=>{const n=oe(),t=B(),{search:s,terminate:u}=ce(),f=x(!1),g=ve([]);return pe(()=>{const m=()=>{g.value=[],f.value=!1},w=fe(H=>{f.value=!0,H?s({type:"search",query:H,locale:t.value,options:n}).then(h=>{g.value=h,f.value=!1}).catch(h=>{console.error(h),m()}):m()},b.searchDelay);J([r,t],()=>w(r.value),{immediate:!0}),he(()=>{u()})}),{searching:f,results:g}};var we=ee({name:"SearchResult",props:{query:{type:String,required:!0},isFocusing:Boolean},emits:["close","updateQuery"],setup(r,{emit:n}){const t=j(),s=B(),u=ae(le),{enabled:f,addQueryHistory:g,queryHistory:m,removeQueryHistory:w}=He(),{enabled:H,resultHistory:h,addResultHistory:O,removeResultHistory:M}=Re(),P=f||H,S=se(r,"query"),{results:Q,searching:Y}=ke(S),o=x({isQuery:!0,index:0}),p=x(0),c=x(0),L=D(()=>P&&(m.value.length>0||h.value.length>0)),C=D(()=>Q.value.length>0),q=D(()=>Q.value[p.value]||null),T=e=>t.resolve({name:e.key,..."anchor"in e?{hash:`#${e.anchor}`}:{}}).fullPath,z=()=>{const{isQuery:e,index:a}=o.value;a===0?o.value={isQuery:!e,index:e?h.value.length-1:m.value.length-1}:o.value={isQuery:e,index:a-1}},G=()=>{const{isQuery:e,index:a}=o.value;a===(e?m.value.length-1:h.value.length-1)?o.value={isQuery:!e,index:0}:o.value={isQuery:e,index:a+1}},V=()=>{p.value=p.value>0?p.value-1:Q.value.length-1,c.value=q.value.contents.length-1},K=()=>{p.value=p.value{c.value{c.value>0?c.value=c.value-1:V()},A=e=>e.map(a=>ye(a)?a:l(a[0],a[1])),X=e=>{if(e.type==="customField"){const a=de[e.index]||"$content",[i,k=""]=me(a)?a[s.value].split("$content"):a.split("$content");return e.display.map(v=>l("div",A([i,...v,k])))}return e.display.map(a=>l("div",A(a)))},R=()=>{p.value=0,c.value=0,n("updateQuery",""),n("close")};return te("keydown",e=>{if(r.isFocusing){if(C.value){if(e.key==="ArrowUp")W();else if(e.key==="ArrowDown")N();else if(e.key==="Enter"){const a=q.value.contents[c.value],i=T(a);g(r.query),O(a),t.push(i),R()}}else if(H){if(e.key==="ArrowUp")z();else if(e.key==="ArrowDown")G();else if(e.key==="Enter"){const{index:a}=o.value;o.value.isQuery?(n("updateQuery",m.value[a]),e.preventDefault()):(t.push(h.value[a].link),R())}}}}),J([p,c],()=>{var e;(e=document.querySelector(".search-pro-result-list-item.active .search-pro-result-item.active"))==null||e.scrollIntoView(!1)},{flush:"post"}),()=>l("div",{class:["search-pro-result-wrapper",{empty:S.value?!C.value:!L.value}],id:"search-pro-results"},S.value===""?P?L.value?[f?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),m.value.map((e,a)=>l("div",{class:["search-pro-result-item",{active:o.value.isQuery&&o.value.index===a}],onClick:()=>{n("updateQuery",e)}},[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},e),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),w(a)}})]))])):null,H?l("ul",{class:"search-pro-result-list"},l("li",{class:"search-pro-result-list-item"},[l("div",{class:"search-pro-result-title"},u.value.history),h.value.map((e,a)=>l(U,{to:e.link,class:["search-pro-result-item",{active:!o.value.isQuery&&o.value.index===a}],onClick:()=>{R()}},()=>[l(_,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[e.header?l("div",{class:"content-header"},e.header):null,l("div",e.display.map(i=>A(i)).flat())]),l("button",{class:"search-pro-remove-icon",innerHTML:F,onClick:i=>{i.preventDefault(),i.stopPropagation(),M(a)}})]))])):null]:u.value.emptyHistory:u.value.emptyResult:Y.value?l(re,{hint:u.value.searching}):C.value?l("ul",{class:"search-pro-result-list"},Q.value.map(({title:e,contents:a},i)=>{const k=p.value===i;return l("li",{class:["search-pro-result-list-item",{active:k}]},[l("div",{class:"search-pro-result-title"},e||u.value.defaultTitle),a.map((v,Z)=>{const $=k&&c.value===Z;return l(U,{to:T(v),class:["search-pro-result-item",{active:$,"aria-selected":$}],onClick:()=>{g(r.query),O(v),R()}},()=>[v.type==="text"?null:l(v.type==="title"?ue:v.type==="heading"?ie:ne,{class:"search-pro-result-type"}),l("div",{class:"search-pro-result-content"},[v.type==="text"&&v.header?l("div",{class:"content-header"},v.header):null,l("div",X(v))])])})])})):u.value.emptyResult)}});export{we as default}; diff --git "a/assets/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html-WIkGLBU5.js" "b/assets/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html-WIkGLBU5.js" new file mode 100644 index 00000000..07d44c85 --- /dev/null +++ "b/assets/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html-WIkGLBU5.js" @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-4ebfad01","path":"/software/zotero/Zotero%20%E5%B0%86%E5%BC%95%E6%96%87%E9%93%BE%E6%8E%A5%E5%88%B0%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE.html","title":"Zotero 将引文链接到参考书目","lang":"zh-CN","frontmatter":{"title":"Zotero 将引文链接到参考书目","date":"2022-07-29T20:23:17.000Z","updated":"2022-09-16T21:57:24.000Z","description":"Zotero 将引文链接到参考书目 描述 建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”: Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/zotero/Zotero%20%E5%B0%86%E5%BC%95%E6%96%87%E9%93%BE%E6%8E%A5%E5%88%B0%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Zotero 将引文链接到参考书目"}],["meta",{"property":"og:description","content":"Zotero 将引文链接到参考书目 描述 建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”: Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"Zotero 将引文链接到参考书目"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-07-29T20:23:17.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Zotero 将引文链接到参考书目\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2022-07-29T20:23:17.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"描述","slug":"描述","link":"#描述","children":[]},{"level":2,"title":"配置及使用","slug":"配置及使用","link":"#配置及使用","children":[]},{"level":2,"title":"缺陷和注意事项","slug":"缺陷和注意事项","link":"#缺陷和注意事项","children":[]}],"git":{"createdTime":1663336415000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":3.02,"words":905},"filePathRelative":"software/zotero/Zotero 将引文链接到参考书目.md","localizedDate":"2022年7月30日","excerpt":"

Zotero 将引文链接到参考书目

\\n

描述

\\n

建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”:

\\n
\\n

Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]

","autoDesc":true}');export{t as data}; diff --git "a/assets/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html-dYd7MQua.js" "b/assets/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html-dYd7MQua.js" new file mode 100644 index 00000000..27d4d8d5 --- /dev/null +++ "b/assets/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html-dYd7MQua.js" @@ -0,0 +1,215 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o,c as p,a as n,b as s,e as l,d as c}from"./app-Mf7X6hWu.js";const i="/assets/712b4026fdc29fc75f8a1b2002119422-kuCBX5J0.png",r={},u=c('

Zotero 将引文链接到参考书目

描述

建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”:

Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]

从 Zotero 论坛发现了通过 word 宏实现的功能 [2],虽有一些缺陷,但基本可以达成需求。

配置及使用

Public Sub ZoteroLinkCitation()
+    
+' get selected area (if applicable)
+    Dim nStart&, nEnd&
+    nStart = Selection.Start
+    nEnd = Selection.End
+    
+' toggle screen updating
+    Application.ScreenUpdating = False
+    
+' define variables
+    Dim title As String
+    Dim titleAnchor As String
+    Dim style As String
+    Dim fieldCode As String
+    Dim numOrYear As String
+    Dim pos&, n1&, n2&, n3&
+
+    ActiveWindow.View.ShowFieldCodes = True
+    Selection.Find.ClearFormatting
+ 
+' find the Zotero bibliography
+    With Selection.Find
+        .Text = "^d ADDIN ZOTERO_BIBL"
+        .Replacement.Text = ""
+        .Forward = True
+        .Wrap = wdFindContinue
+        .Format = False
+        .MatchCase = False
+        .MatchWholeWord = False
+        .MatchWildcards = False
+        .MatchSoundsLike = False
+        .MatchAllWordForms = False
+    End With
+    Selection.Find.Execute
+    
+    ' add bookmark for the Zotero bibliography
+    With ActiveDocument.Bookmarks
+        .Add Range:=Selection.Range, Name:="Zotero_Bibliography"
+        .DefaultSorting = wdSortByName
+        .ShowHidden = True
+    End With
+    
+    ' loop through each field in the document
+    For Each aField In ActiveDocument.Fields
+        ' check if the field is a Zotero in-text reference
+        '##################################################
+        If InStr(aField.Code, "ADDIN ZOTERO_ITEM") > 0 Then
+            fieldCode = aField.Code
+            '#############
+            ' Prepare
+            ' Plain citation== Format of Textfield shown
+            ' must be in Brackets
+            Dim plain_Cit As String
+            plCitStrBeg = """plainCitation"":""["
+            plCitStrEnd = "]"""
+            n1 = InStr(fieldCode, plCitStrBeg)
+            n1 = n1 + Len(plCitStrBeg)
+            n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), plCitStrEnd) - 1 + n1
+            plain_Cit = Mid$(fieldCode, n1 - 1, n2 - n1 + 2)
+            'Reference 'as shown' in word as a string
+            
+            'Title array in fieldCode (all referenced Titles within this field)
+            Dim array_RefTitle(32) As String
+            i = 0
+            Do While InStr(fieldCode, """title"":""") > 0
+                n1 = InStr(fieldCode, """title"":""") + Len("""title"":""")
+                n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), """,""") - 1 + n1
+                If n2 < n1 Then 'Exception the type 'Article'
+                    n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), "}") - 1 + n1 - 1
+                End If
+                array_RefTitle(i) = Mid(fieldCode, n1, n2 - n1)
+                fieldCode = Mid(fieldCode, n2 + 1, Len(fieldCode) - n2 - 1)
+                i = i + 1
+            Loop
+            Titles_in_Cit = i
+            
+            'Number array with References shown in PlainCit
+            'Numer is equal or less than Titels, depending on the type
+            '[3], [8]-[10]; [2]-[4]; [2], [4], [5]
+            ' All citations have to be in Brackets each! [3], [8] not [3, 8]
+            ' This doesnt work otherwise!
+            ' --> treatment of other delimiters could be implemented here
+            Dim RefNumber(32) As String
+            i = 0
+            Do While (InStr(plain_Cit, "]") Or InStr(plain_Cit, "[")) > 0
+                n1 = InStr(plain_Cit, "[")
+                n2 = InStr(plain_Cit, "]")
+                RefNumber(i) = Mid(plain_Cit, n1 + 1, n2 - (n1 + 1))
+                plain_Cit = Mid(plain_Cit, n2 + 1, Len(plain_Cit) - (n2 + 1) + 1)
+            i = i + 1
+            Loop
+            Refs_in_Cit = i
+                 'treat only the shown references (skip the rest)
+            '[3], [8]-[10] --> skip [9]
+            'Order of titles given from fieldcode, not checked!
+            If Titles_in_Cit > Refs_in_Cit Then
+                array_RefTitle(Refs_in_Cit - 1) = array_RefTitle(Titles_in_Cit - 1)
+                i = 1
+                Do While Refs_in_Cit + i <= Titles_in_Cit
+                    array_RefTitle(Refs_in_Cit + i - 1) = ""
+                    i = i + 1
+                Loop
+            End If
+            
+            '#############
+            'Make the links
+            For Refs = 0 To Refs_in_Cit - 1 Step 1
+                title = array_RefTitle(Refs)
+                array_RefTitle(Refs) = ""
+                ' make title a valid bookmark name
+                titleAnchor = title
+                titleAnchor = MakeValidBMName(titleAnchor)
+                
+                ActiveWindow.View.ShowFieldCodes = False
+                Selection.GoTo What:=wdGoToBookmark, Name:="Zotero_Bibliography"
+                
+                '' locate the corresponding reference in the bibliography
+                '' by searching for its title
+                Selection.Find.ClearFormatting
+                With Selection.Find
+                    .Text = Left(title, 255)
+                    .Replacement.Text = ""
+                    .Forward = True
+                    .Wrap = wdFindContinue
+                    .Format = False
+                    .MatchCase = False
+                    .MatchWholeWord = False
+                    .MatchWildcards = False
+                    .MatchSoundsLike = False
+                    .MatchAllWordForms = False
+                End With
+                Selection.Find.Execute
+                               
+                ' select the whole caption (for mouseover tooltip)
+                Selection.MoveStartUntil ("["), Count:=wdBackward
+                Selection.MoveEndUntil (vbBack)
+                lnkcap = "[" & Selection.Text
+                lnkcap = Left(lnkcap, 70)
+                
+                ' add bookmark for the reference within the bibliography
+                Selection.Shrink
+                With ActiveDocument.Bookmarks
+                    .Add Range:=Selection.Range, Name:=titleAnchor
+                    .DefaultSorting = wdSortByName
+                    .ShowHidden = True
+                End With
+                
+                ' jump back to the field
+                aField.Select
+                ' find and select the numeric part of the field which will become the hyperlink
+                Selection.Find.ClearFormatting
+                With Selection.Find
+                    .Text = RefNumber(Refs)
+                    .Replacement.Text = ""
+                    .Forward = True
+                    .Wrap = wdFindContinue
+                    .Format = False
+                    .MatchCase = False
+                    .MatchWholeWord = False
+                    .MatchWildcards = False
+                    .MatchSoundsLike = False
+                    .MatchAllWordForms = False
+                End With
+                Selection.Find.Execute
+                        
+                numOrYear = Selection.Range.Text & ""
+                                    
+                ' store current style
+                style = Selection.style
+                ' Generate the Hyperlink -->Forward!
+                ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", SubAddress:=titleAnchor, ScreenTip:=lnkcap, TextToDisplay:="" & numOrYear
+                ' reset the style
+                Selection.style = style
+
+                ' comment if you want standard link style
+                aField.Select
+                With Selection.Font
+                     .Underline = wdUnderlineNone
+                     .ColorIndex = wdBlack
+                End With
+                    
+            Next Refs 'References in Cit
+
+        End If  'If Zotero-Field
+        '#########################
+
+        Next aField ' next field
+
+        ' go back to original range selected
+        ActiveWindow.View.ShowFieldCodes = False
+        ActiveDocument.Range(nStart, nEnd).Select
+        
+    End Sub
+    Function MakeValidBMName(strIn As String)
+        Dim pFirstChr As String
+        Dim i As Long
+        Dim tempStr As String
+        strIn = Trim(strIn)
+        pFirstChr = Left(strIn, 1)
+        If Not pFirstChr Like "[A-Za-z]" Then
+            strIn = "A_" & strIn
+        End If
+        For i = 1 To Len(strIn)
+            Select Case Asc(Mid$(strIn, i, 1))
+            Case 49 To 57, 65 To 90, 97 To 122
+                tempStr = tempStr & Mid$(strIn, i, 1)
+            Case Else
+                tempStr = tempStr & "_"
+            End Select
+            Next i
+            tempStr = Replace(tempStr, "  ", " ")
+            MakeValidBMName = Left(tempStr, 40)
+        End Function
+

缺陷和注意事项


`,10),k={class:"footnotes"},d={class:"footnotes-list"},m=n("li",{id:"footnote1",class:"footnote-item"},[n("p",null,[s("来源添加 "),n("a",{href:"#footnote-ref1",class:"footnote-backref"},"↩︎")])],-1),v={id:"footnote2",class:"footnote-item"},b={href:"https://forums.zotero.org/discussion/comment/324312/#Comment_324312",target:"_blank",rel:"noopener noreferrer"},w=n("a",{href:"#footnote-ref2",class:"footnote-backref"},"↩︎",-1);function y(h,f){const a=t("ExternalLinkIcon");return o(),p("div",null,[u,n("section",k,[n("ol",d,[m,n("li",v,[n("p",null,[n("a",b,[s("Word: Possibility to link references and bibliography in a document? - Zotero Forums"),l(a)]),s(),w])])])])])}const S=e(r,[["render",y],["__file","Zotero 将引文链接到参考书目.html.vue"]]);export{S as default}; diff --git "a/assets/Zotero \346\214\207\345\214\227.html-0nIpCpal.js" "b/assets/Zotero \346\214\207\345\214\227.html-0nIpCpal.js" new file mode 100644 index 00000000..b8fb11a5 --- /dev/null +++ "b/assets/Zotero \346\214\207\345\214\227.html-0nIpCpal.js" @@ -0,0 +1,30 @@ +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as i,c as l,a as e,b as t,e as o,d as a}from"./app-Mf7X6hWu.js";const d={},c=a('

Zotero 指北

关于 Zotero 是什么以及为什么使用它

Why Zotero & Why NOT EndNote?

Todo

安装与配置

主程序

',6),h={href:"https://zotero.org",target:"_blank",rel:"noopener noreferrer"},p=e("h3",{id:"浏览器插件-zotero-connector",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#浏览器插件-zotero-connector","aria-hidden":"true"},"#"),t(" 浏览器插件 Zotero Connector")],-1),u=e("p",null,"Zotero 相较于其他文献管理软件的一大优势就是可以直接从网页中抓取元数据并存入数据库,这个过程通过浏览器插件 Zotero Connector 实现。",-1),b=e("h3",{id:"中文-translator-与茉莉花插件",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#中文-translator-与茉莉花插件","aria-hidden":"true"},"#"),t(" 中文 Translator 与茉莉花插件")],-1),m={href:"https://github.com/l0o0/translators_CN",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/l0o0/jasminum",target:"_blank",rel:"noopener noreferrer"},f=e("blockquote",null,[e("ol",null,[e("li",null,"拆分或合并 Zotero 中条目作者姓和名"),e("li",null,"根据知网上下载的文献文件来抓取引用信息(就是根据文件名)"),e("li",null,"添加中文 PDF/CAJ 时,自动拉取知网数据,该功能默认关闭。需要到设置中开启,注意添加的文件名需要含有中文,全英文没有效果(还是根据文件名)"),e("li",null,"为知网的学位论文 PDF 添加书签"),e("li",null,"更新中文 translators"),e("li",null,"拉取文献引用次数,是否核心期刊")])],-1),k=e("p",null,"就安装而言,",-1),v={href:"https://github.com/l0o0/jasminum/releases/latest",target:"_blank",rel:"noopener noreferrer"},g=e("code",null,".xpi",-1),Z={href:"https://www.pdflabs.com/tools/pdftk-server/",target:"_blank",rel:"noopener noreferrer"},x=e("code",null,"C: \\Program Files (x86)\\PDFtk",-1),z=e("code",null,"/bin",-1),w=e("code",null,"C: \\Program Files (x86)\\PDFtk\\bin",-1),E={href:"https://github.com/l0o0/jasminum#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8",target:"_blank",rel:"noopener noreferrer"},T=e("li",null,"安装中文 Translator:与上一步同一界面——Unofficial Translator Repository——Refresh——Update all。",-1),F=e("li",null,"更新中文 Translator:打开已安装 Zotero Connector 的浏览器,右击 Zotero Connector 图标进入拓展选项,Advanced——Update Translators。",-1),C=e("h3",{id:"styles-与-gb-t-7714-2015-csl-文件",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#styles-与-gb-t-7714-2015-csl-文件","aria-hidden":"true"},"#"),t(" Styles 与 GB/T 7714-2015 CSL 文件")],-1),D={href:"https://github.com/northword/Scripts/tree/main/Zotero/styles",target:"_blank",rel:"noopener noreferrer"},q=e("p",null,[t("国内学校论文/作业的参考文献格式基本上都与国标相近,这里的 CSL 文件经过修改,适配了参考文献列表“等”与“et al”混排。其原理见后文 "),e("a",{href:"#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE%E5%88%97%E8%A1%A8%E4%B8%AD%E6%96%87%E2%80%9C%E7%AD%89%E2%80%9D%E4%B8%8E%E5%A4%96%E6%96%87%E2%80%9Cet%20al%E2%80%9D%E6%B7%B7%E6%8E%92"},"参考文献列表中文“等”与外文“et al”混排"),t(" 。")],-1),P=e("h2",{id:"基础使用",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#基础使用","aria-hidden":"true"},"#"),t(" 基础使用")],-1),A=e("p",null,"截止至这里,最基本的 Zotero 安装就已经完成了。关于具体的使用,可以参考以下内容来学习,他们均较为详细地介绍了如何导入与组织文献以及如何在 Word 中插入引用,因此就不再重复造轮子了。",-1),B={href:"https://www.zotero.org/support/start",target:"_blank",rel:"noopener noreferrer"},S={href:"https://github.com/redleafnew/Zotero_introduction/releases",target:"_blank",rel:"noopener noreferrer"},L={href:"https://sspai.com/post/56724",target:"_blank",rel:"noopener noreferrer"},y=a(`

在使用 Zotero 之前,我希望可以引入几个术语:

  • 条目 Item
  • 附件 Attachments
  • 链接的附件:
  • 存储的附件:
  • 合集 Collections:
  • 标签 Tags:
  • 引文
  • 参考书目

以下列个需要了解的大纲:

### 添加与维护条目、附件
+
+#### 添加条目
+
+##### 通过标识符添加条目
+
+##### 通过附件添加条目
+
+##### 直接从 Connector 生成条目
+
+#### 添加附件
+
+### 组织、管理文献库
+
+#### 集合与标签
+
+#### 笔记与关联条目
+
+#### 重复条目
+
+### 插入引文与生成参考书目
+
+#### 直接在 Zotero 里生成参考条目
+
+#### 在 Word 里插入引文
+
+#### 使用 Zotero bib 生成参考条目
+
+#### 引文格式
+

多设备同步方案

在多设备同步中,条目的同步均是通过 Zotero 官方提供的同步服务进行的,不同的是附件的同步方式。可以依据需要同步的设备类型、同步的目的来合理选择同步的方案。

使用官方的存储空间进行附件同步

优点:只需要账号登录上,基本不需要任何额外配置,方便快捷简单。

缺点:默认只有 300M,更大要付费,没钱,一票否决,过了。

WebDav 实现附件同步

Todo

OneDrive & ZotFile 实现附件同步

Todo

使用 ZotFile 实现更自由地附件管理

Todo

其他插件与玩法

少数派这篇文章介绍了一些较为基础的用法,而对一些更深的玩法并没有详细展开或提及;同时,它发布于 2019 年 9 月,而在这之后,Zotero 也涌现出了许多其他优秀的插件,却少有文章进行较为集中的综述,所以下面对我所了解的一些技巧进行记录和分享。

Zotero-PDF-Translate 实现在 PDF 中翻译

`,18),N={href:"https://github.com/windingwind/zotero-pdf-translate",target:"_blank",rel:"noopener noreferrer"},I=e("h3",{id:"zotero-tag-实现新条目添加未读标签-阅读后自动取消",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#zotero-tag-实现新条目添加未读标签-阅读后自动取消","aria-hidden":"true"},"#"),t(" Zotero-tag 实现新条目添加未读标签,阅读后自动取消")],-1),O={href:"https://github.com/windingwind/zotero-tag",target:"_blank",rel:"noopener noreferrer"},W=e("p",null,"该插件可以定义一系列规则组,例如新添加条目添加“未读”标签,当打开过后,自动取消该标签。",-1),M=e("h3",{id:"zotero-scihub-实现从-sci-hub-下载全文",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#zotero-scihub-实现从-sci-hub-下载全文","aria-hidden":"true"},"#"),t(" Zotero-SciHub 实现从 SCI-HUB 下载全文")],-1),U={href:"https://github.com/ethanwillis/zotero-scihub",target:"_blank",rel:"noopener noreferrer"},j=e("h3",{id:"zotero-update-ifs-为期刊添加影响因子",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#zotero-update-ifs-为期刊添加影响因子","aria-hidden":"true"},"#"),t(" Zotero Update IFs 为期刊添加影响因子")],-1),J={href:"https://github.com/redleafnew/zotero-updateifs",target:"_blank",rel:"noopener noreferrer"},V=a('

Zotero 与 Obdisian 或其他 Markdown 编辑器结联动

Todo

Zutilo

Todo

使用 Better BibTex for Zotero 实现在 LaTeX / Markdown 中引用

Todo

修改 CSL 文件使参考文献列表中文“等”与外文“et al”混排

通过 Zotero Language 字段与 CSL <Local> 标签实现。

Todo

其他平台客户端

iOS

目前官方 iOS 客户端已正式发布。

Android

无官方客户端,考虑使用三方客户端 Zoo for Zotero。

Web

Todo

',16);function G(H,R){const n=s("ExternalLinkIcon");return i(),l("div",null,[c,e("p",null,[t("没什么好记录的,在 "),e("a",h,[t("Zotero 官网"),o(n)]),t(" 下载一路下一步安装即可。")]),p,u,b,e("p",null,[t("比起其他的文献管理软件,原生的 Zotero 对中文支持并没有好到哪里去,但是得益于开源社区的维护,我们可以通过第三方 translator 库 "),e("a",m,[t("github.com/l0o0/translators_CN"),o(n)]),t(" 极大的提高其中文文献抓取能力。")]),e("p",null,[t("该库的主要维护者还开发了插件 "),e("a",_,[t("Jasminum - 茉莉花"),o(n)]),t(" 来继续增强 Zotero 的中文支持,茉莉花插件提供了如下功能:")]),f,k,e("ol",null,[e("li",null,[t("下载安装 Jasminum 插件:在 "),e("a",v,[t("Latest Release · l0o0/jasminum (github.com)"),o(n)]),t(" 下载 "),g,t(" 文件。在 Zotero——Tools——Add-ons——右上角小齿轮⚙——Install Add-on From File...——选中第二步保存的文件——确定——重启 Zotero。")]),e("li",null,[t("下载安装 PDFtk:下载并安装 "),e("a",Z,[t("PDFtk server"),o(n)]),t(" ,记录安装路径(eg. "),x,t(")。在 Zotero——edit——Preferences——Jasminum——Setting——PDFtk Server Execute File Path 中填写 "),z,t(" (eg. "),w,t(")(即 PDFtk 可执行文件所在目录)。MAC 用户参考 "),e("a",E,[t("这里"),o(n)]),t(" 。")]),T,F]),C,e("p",null,[e("a",D,[t("这是一个修改过的 GB/T 7714-2015 CSL 文件"),o(n)]),t(" ,将这些文件放置于 Zotero 数据目录下的 Styles 文件夹即可。")]),q,P,A,e("ul",null,[e("li",null,[e("a",B,[t("Zotero 官方文档"),o(n)])]),e("li",null,[e("a",S,[t("韩学士. 优雅地用 Zotero 进行文献管理和论文写作. GitHub"),o(n)]),t(" 【推荐】")]),e("li",null,[e("a",L,[t("思考问题的熊. 文献管理神器 Zotero 学习路径指南. 少数派"),o(n)])])]),y,e("p",null,[e("a",N,[t("windingwind/zotero-pdf-translate: PDF translation add-on for Zotero 6 (github.com)"),o(n)])]),I,e("p",null,[e("a",O,[t("windingwind/zotero-tag: One add-on to rule Tags all. Manage all your Tags in one Zotero add-on. (github.com)"),o(n)])]),W,M,e("p",null,[e("a",U,[t("ethanwillis/zotero-scihub: A plugin that will automatically download PDFs of zotero items from sci-hub (github.com)"),o(n)])]),j,e("p",null,[e("a",J,[t("redleafnew/zotero-updateifs: 从唯问更新影响因子"),o(n)])]),V])}const Q=r(d,[["render",G],["__file","Zotero 指北.html.vue"]]);export{Q as default}; diff --git "a/assets/Zotero \346\214\207\345\214\227.html-wkL4Bdt0.js" "b/assets/Zotero \346\214\207\345\214\227.html-wkL4Bdt0.js" new file mode 100644 index 00000000..5b048efe --- /dev/null +++ "b/assets/Zotero \346\214\207\345\214\227.html-wkL4Bdt0.js" @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2d2d3678","path":"/software/zotero/Zotero%20%E6%8C%87%E5%8C%97.html","title":"Zotero 指北","lang":"zh-CN","frontmatter":{"title":"Zotero 指北","date":"2022-01-18T22:00:06.000Z","updated":"2022-07-29T22:02:11.000Z","description":"Zotero 指北 关于 Zotero 是什么以及为什么使用它 Why Zotero & Why NOT EndNote? Todo 安装与配置 主程序 没什么好记录的,在 Zotero 官网 下载一路下一步安装即可。 浏览器插件 Zotero Connector","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/zotero/Zotero%20%E6%8C%87%E5%8C%97.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Zotero 指北"}],["meta",{"property":"og:description","content":"Zotero 指北 关于 Zotero 是什么以及为什么使用它 Why Zotero & Why NOT EndNote? Todo 安装与配置 主程序 没什么好记录的,在 Zotero 官网 下载一路下一步安装即可。 浏览器插件 Zotero Connector"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-01-18T22:00:06.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Zotero 指北\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-18T22:00:06.000Z\\",\\"dateModified\\":\\"2022-09-16T13:53:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"关于 Zotero 是什么以及为什么使用它","slug":"关于-zotero-是什么以及为什么使用它","link":"#关于-zotero-是什么以及为什么使用它","children":[]},{"level":2,"title":"安装与配置","slug":"安装与配置","link":"#安装与配置","children":[{"level":3,"title":"主程序","slug":"主程序","link":"#主程序","children":[]},{"level":3,"title":"浏览器插件 Zotero Connector","slug":"浏览器插件-zotero-connector","link":"#浏览器插件-zotero-connector","children":[]},{"level":3,"title":"中文 Translator 与茉莉花插件","slug":"中文-translator-与茉莉花插件","link":"#中文-translator-与茉莉花插件","children":[]},{"level":3,"title":"Styles 与 GB/T 7714-2015 CSL 文件","slug":"styles-与-gb-t-7714-2015-csl-文件","link":"#styles-与-gb-t-7714-2015-csl-文件","children":[]}]},{"level":2,"title":"基础使用","slug":"基础使用","link":"#基础使用","children":[]},{"level":2,"title":"多设备同步方案","slug":"多设备同步方案","link":"#多设备同步方案","children":[{"level":3,"title":"使用官方的存储空间进行附件同步","slug":"使用官方的存储空间进行附件同步","link":"#使用官方的存储空间进行附件同步","children":[]},{"level":3,"title":"WebDav 实现附件同步","slug":"webdav-实现附件同步","link":"#webdav-实现附件同步","children":[]},{"level":3,"title":"OneDrive & ZotFile 实现附件同步","slug":"onedrive-zotfile-实现附件同步","link":"#onedrive-zotfile-实现附件同步","children":[]},{"level":3,"title":"使用 ZotFile 实现更自由地附件管理","slug":"使用-zotfile-实现更自由地附件管理","link":"#使用-zotfile-实现更自由地附件管理","children":[]}]},{"level":2,"title":"其他插件与玩法","slug":"其他插件与玩法","link":"#其他插件与玩法","children":[{"level":3,"title":"Zotero-PDF-Translate 实现在 PDF 中翻译","slug":"zotero-pdf-translate-实现在-pdf-中翻译","link":"#zotero-pdf-translate-实现在-pdf-中翻译","children":[]},{"level":3,"title":"Zotero-tag 实现新条目添加未读标签,阅读后自动取消","slug":"zotero-tag-实现新条目添加未读标签-阅读后自动取消","link":"#zotero-tag-实现新条目添加未读标签-阅读后自动取消","children":[]},{"level":3,"title":"Zotero-SciHub 实现从 SCI-HUB 下载全文","slug":"zotero-scihub-实现从-sci-hub-下载全文","link":"#zotero-scihub-实现从-sci-hub-下载全文","children":[]},{"level":3,"title":"Zotero Update IFs 为期刊添加影响因子","slug":"zotero-update-ifs-为期刊添加影响因子","link":"#zotero-update-ifs-为期刊添加影响因子","children":[]},{"level":3,"title":"Zotero 与 Obdisian 或其他 Markdown 编辑器结联动","slug":"zotero-与-obdisian-或其他-markdown-编辑器结联动","link":"#zotero-与-obdisian-或其他-markdown-编辑器结联动","children":[]},{"level":3,"title":"Zutilo","slug":"zutilo","link":"#zutilo","children":[]},{"level":3,"title":"使用 Better BibTex for Zotero 实现在 LaTeX / Markdown 中引用","slug":"使用-better-bibtex-for-zotero-实现在-latex-markdown-中引用","link":"#使用-better-bibtex-for-zotero-实现在-latex-markdown-中引用","children":[]},{"level":3,"title":"修改 CSL 文件使参考文献列表中文“等”与外文“et al”混排","slug":"修改-csl-文件使参考文献列表中文-等-与外文-et-al-混排","link":"#修改-csl-文件使参考文献列表中文-等-与外文-et-al-混排","children":[]}]},{"level":2,"title":"其他平台客户端","slug":"其他平台客户端","link":"#其他平台客户端","children":[{"level":3,"title":"iOS","slug":"ios","link":"#ios","children":[]},{"level":3,"title":"Android","slug":"android","link":"#android","children":[]},{"level":3,"title":"Web","slug":"web","link":"#web","children":[]}]}],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":5.23,"words":1569},"filePathRelative":"software/zotero/Zotero 指北.md","localizedDate":"2022年1月19日","excerpt":"

Zotero 指北

\\n

关于 Zotero 是什么以及为什么使用它

\\n

Why Zotero & Why NOT EndNote?

\\n
\\n

Todo

\\n
\\n

安装与配置

\\n

主程序

\\n

没什么好记录的,在 Zotero 官网 下载一路下一步安装即可。

\\n

浏览器插件 Zotero Connector

","autoDesc":true}');export{e as data}; diff --git a/assets/a46d406ebbefc57ea1e957c0a9da12c0-mb93aXEl.png b/assets/a46d406ebbefc57ea1e957c0a9da12c0-mb93aXEl.png new file mode 100644 index 00000000..64a724fb Binary files /dev/null and b/assets/a46d406ebbefc57ea1e957c0a9da12c0-mb93aXEl.png differ diff --git a/assets/ae7712b9ff5bec6c851b0f553e6cca53-4piaT0Op.png b/assets/ae7712b9ff5bec6c851b0f553e6cca53-4piaT0Op.png new file mode 100644 index 00000000..a8b6cd22 Binary files /dev/null and b/assets/ae7712b9ff5bec6c851b0f553e6cca53-4piaT0Op.png differ diff --git a/assets/app-Mf7X6hWu.js b/assets/app-Mf7X6hWu.js new file mode 100644 index 00000000..3044385b --- /dev/null +++ b/assets/app-Mf7X6hWu.js @@ -0,0 +1,1452 @@ +function ho(e,n){const t=Object.create(null),a=e.split(",");for(let s=0;s!!t[s.toLowerCase()]:s=>!!t[s]}const Se={},wt=[],An=()=>{},rp=()=>!1,ip=/^on[^a-z]/,ga=e=>ip.test(e),go=e=>e.startsWith("onUpdate:"),Ie=Object.assign,bo=(e,n)=>{const t=e.indexOf(n);t>-1&&e.splice(t,1)},cp=Object.prototype.hasOwnProperty,fe=(e,n)=>cp.call(e,n),ee=Array.isArray,ea=e=>ls(e)==="[object Map]",up=e=>ls(e)==="[object Set]",se=e=>typeof e=="function",he=e=>typeof e=="string",os=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",Ur=e=>(Te(e)||se(e))&&se(e.then)&&se(e.catch),pp=Object.prototype.toString,ls=e=>pp.call(e),dp=e=>ls(e).slice(8,-1),fp=e=>ls(e)==="[object Object]",yo=e=>he(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,na=ho(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),rs=e=>{const n=Object.create(null);return t=>n[t]||(n[t]=e(t))},vp=/-(\w)/g,cn=rs(e=>e.replace(vp,(n,t)=>t?t.toUpperCase():"")),mp=/\B([A-Z])/g,Nt=rs(e=>e.replace(mp,"-$1").toLowerCase()),ba=rs(e=>e.charAt(0).toUpperCase()+e.slice(1)),Es=rs(e=>e?`on${ba(e)}`:""),ut=(e,n)=>!Object.is(e,n),ws=(e,n)=>{for(let t=0;t{Object.defineProperty(e,n,{configurable:!0,enumerable:!1,value:t})},hp=e=>{const n=parseFloat(e);return isNaN(n)?e:n},gp=e=>{const n=he(e)?Number(e):NaN;return isNaN(n)?e:n};let _l;const Us=()=>_l||(_l=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function _o(e){if(ee(e)){const n={};for(let t=0;t{if(t){const a=t.split(yp);a.length>1&&(n[a[0].trim()]=a[1].trim())}}),n}function ko(e){let n="";if(he(e))n=e;else if(ee(e))for(let t=0;t{const n=new Set(e);return n.w=0,n.n=0,n},qr=e=>(e.w&Kn)>0,Kr=e=>(e.n&Kn)>0,xp=({deps:e})=>{if(e.length)for(let n=0;n{const{deps:n}=e;if(n.length){let t=0;for(let a=0;a{(p==="length"||!os(p)&&p>=c)&&i.push(u)})}else switch(t!==void 0&&i.push(l.get(t)),n){case"add":ee(e)?yo(t)&&i.push(l.get("length")):(i.push(l.get(rt)),ea(e)&&i.push(l.get(Gs)));break;case"delete":ee(e)||(i.push(l.get(rt)),ea(e)&&i.push(l.get(Gs)));break;case"set":ea(e)&&i.push(l.get(rt));break}if(i.length===1)i[0]&&qs(i[0]);else{const c=[];for(const u of i)u&&c.push(...u);qs(Eo(c))}}function qs(e,n){const t=ee(e)?e:[...e];for(const a of t)a.computed&&El(a);for(const a of t)a.computed||El(a)}function El(e,n){(e!==fn||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function Lp(e,n){var t;return(t=Xa.get(e))==null?void 0:t.get(n)}const Cp=ho("__proto__,__v_isRef,__isVue"),Yr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(os)),wl=Rp();function Rp(){const e={};return["includes","indexOf","lastIndexOf"].forEach(n=>{e[n]=function(...t){const a=ie(this);for(let o=0,l=this.length;o{e[n]=function(...t){zt();const a=ie(this)[n].apply(this,t);return $t(),a}}),e}function Op(e){const n=ie(this);return Ke(n,"has",e),n.hasOwnProperty(e)}class Jr{constructor(n=!1,t=!1){this._isReadonly=n,this._shallow=t}get(n,t,a){const s=this._isReadonly,o=this._shallow;if(t==="__v_isReactive")return!s;if(t==="__v_isReadonly")return s;if(t==="__v_isShallow")return o;if(t==="__v_raw"&&a===(s?o?jp:ti:o?ni:ei).get(n))return n;const l=ee(n);if(!s){if(l&&fe(wl,t))return Reflect.get(wl,t,a);if(t==="hasOwnProperty")return Op}const i=Reflect.get(n,t,a);return(os(t)?Yr.has(t):Cp(t))||(s||Ke(n,"get",t),o)?i:De(i)?l&&yo(t)?i:i.value:Te(i)?s?Jn(i):ya(i):i}}class Qr extends Jr{constructor(n=!1){super(!1,n)}set(n,t,a,s){let o=n[t];if(Tt(o)&&De(o)&&!De(a))return!1;if(!this._shallow&&(!Za(a)&&!Tt(a)&&(o=ie(o),a=ie(a)),!ee(n)&&De(o)&&!De(a)))return o.value=a,!0;const l=ee(n)&&yo(t)?Number(t)e,is=e=>Reflect.getPrototypeOf(e);function Ia(e,n,t=!1,a=!1){e=e.__v_raw;const s=ie(e),o=ie(n);t||(ut(n,o)&&Ke(s,"get",n),Ke(s,"get",o));const{has:l}=is(s),i=a?Ao:t?xo:ca;if(l.call(s,n))return i(e.get(n));if(l.call(s,o))return i(e.get(o));e!==s&&e.get(n)}function Va(e,n=!1){const t=this.__v_raw,a=ie(t),s=ie(e);return n||(ut(e,s)&&Ke(a,"has",e),Ke(a,"has",s)),e===s?t.has(e):t.has(e)||t.has(s)}function Da(e,n=!1){return e=e.__v_raw,!n&&Ke(ie(e),"iterate",rt),Reflect.get(e,"size",e)}function Al(e){e=ie(e);const n=ie(this);return is(n).has.call(n,e)||(n.add(e),Vn(n,"add",e,e)),this}function Pl(e,n){n=ie(n);const t=ie(this),{has:a,get:s}=is(t);let o=a.call(t,e);o||(e=ie(e),o=a.call(t,e));const l=s.call(t,e);return t.set(e,n),o?ut(n,l)&&Vn(t,"set",e,n):Vn(t,"add",e,n),this}function Sl(e){const n=ie(this),{has:t,get:a}=is(n);let s=t.call(n,e);s||(e=ie(e),s=t.call(n,e)),a&&a.call(n,e);const o=n.delete(e);return s&&Vn(n,"delete",e,void 0),o}function xl(){const e=ie(this),n=e.size!==0,t=e.clear();return n&&Vn(e,"clear",void 0,void 0),t}function Ma(e,n){return function(a,s){const o=this,l=o.__v_raw,i=ie(l),c=n?Ao:e?xo:ca;return!e&&Ke(i,"iterate",rt),l.forEach((u,p)=>a.call(s,c(u),c(p),o))}}function Ba(e,n,t){return function(...a){const s=this.__v_raw,o=ie(s),l=ea(o),i=e==="entries"||e===Symbol.iterator&&l,c=e==="keys"&&l,u=s[e](...a),p=t?Ao:n?xo:ca;return!n&&Ke(o,"iterate",c?Gs:rt),{next(){const{value:d,done:f}=u.next();return f?{value:d,done:f}:{value:i?[p(d[0]),p(d[1])]:p(d),done:f}},[Symbol.iterator](){return this}}}}function Nn(e){return function(...n){return e==="delete"?!1:e==="clear"?void 0:this}}function Bp(){const e={get(o){return Ia(this,o)},get size(){return Da(this)},has:Va,add:Al,set:Pl,delete:Sl,clear:xl,forEach:Ma(!1,!1)},n={get(o){return Ia(this,o,!1,!0)},get size(){return Da(this)},has:Va,add:Al,set:Pl,delete:Sl,clear:xl,forEach:Ma(!1,!0)},t={get(o){return Ia(this,o,!0)},get size(){return Da(this,!0)},has(o){return Va.call(this,o,!0)},add:Nn("add"),set:Nn("set"),delete:Nn("delete"),clear:Nn("clear"),forEach:Ma(!0,!1)},a={get(o){return Ia(this,o,!0,!0)},get size(){return Da(this,!0)},has(o){return Va.call(this,o,!0)},add:Nn("add"),set:Nn("set"),delete:Nn("delete"),clear:Nn("clear"),forEach:Ma(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Ba(o,!1,!1),t[o]=Ba(o,!0,!1),n[o]=Ba(o,!1,!0),a[o]=Ba(o,!0,!0)}),[e,t,n,a]}const[Np,zp,$p,Fp]=Bp();function Po(e,n){const t=n?e?Fp:$p:e?zp:Np;return(a,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?a:Reflect.get(fe(t,s)&&s in a?t:a,s,o)}const Hp={get:Po(!1,!1)},Wp={get:Po(!1,!0)},Up={get:Po(!0,!1)},ei=new WeakMap,ni=new WeakMap,ti=new WeakMap,jp=new WeakMap;function Gp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qp(e){return e.__v_skip||!Object.isExtensible(e)?0:Gp(dp(e))}function ya(e){return Tt(e)?e:So(e,!1,Vp,Hp,ei)}function ai(e){return So(e,!1,Mp,Wp,ni)}function Jn(e){return So(e,!0,Dp,Up,ti)}function So(e,n,t,a,s){if(!Te(e)||e.__v_raw&&!(n&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const l=qp(e);if(l===0)return e;const i=new Proxy(e,l===2?a:t);return s.set(e,i),i}function At(e){return Tt(e)?At(e.__v_raw):!!(e&&e.__v_isReactive)}function Tt(e){return!!(e&&e.__v_isReadonly)}function Za(e){return!!(e&&e.__v_isShallow)}function si(e){return At(e)||Tt(e)}function ie(e){const n=e&&e.__v_raw;return n?ie(n):e}function oi(e){return Ka(e,"__v_skip",!0),e}const ca=e=>Te(e)?ya(e):e,xo=e=>Te(e)?Jn(e):e;function To(e){Gn&&fn&&(e=ie(e),Zr(e.dep||(e.dep=Eo())))}function Lo(e,n){e=ie(e);const t=e.dep;t&&qs(t)}function De(e){return!!(e&&e.__v_isRef===!0)}function Z(e){return li(e,!1)}function en(e){return li(e,!0)}function li(e,n){return De(e)?e:new Kp(e,n)}class Kp{constructor(n,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?n:ie(n),this._value=t?n:ca(n)}get value(){return To(this),this._value}set value(n){const t=this.__v_isShallow||Za(n)||Tt(n);n=t?n:ie(n),ut(n,this._rawValue)&&(this._rawValue=n,this._value=t?n:ca(n),Lo(this))}}function it(e){return De(e)?e.value:e}const Xp={get:(e,n,t)=>it(Reflect.get(e,n,t)),set:(e,n,t,a)=>{const s=e[n];return De(s)&&!De(t)?(s.value=t,!0):Reflect.set(e,n,t,a)}};function ri(e){return At(e)?e:new Proxy(e,Xp)}class Zp{constructor(n){this.dep=void 0,this.__v_isRef=!0;const{get:t,set:a}=n(()=>To(this),()=>Lo(this));this._get=t,this._set=a}get value(){return this._get()}set value(n){this._set(n)}}function ii(e){return new Zp(e)}class Yp{constructor(n,t,a){this._object=n,this._key=t,this._defaultValue=a,this.__v_isRef=!0}get value(){const n=this._object[this._key];return n===void 0?this._defaultValue:n}set value(n){this._object[this._key]=n}get dep(){return Lp(ie(this._object),this._key)}}class Jp{constructor(n){this._getter=n,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ft(e,n,t){return De(e)?e:se(e)?new Jp(e):Te(e)&&arguments.length>1?Qp(e,n,t):Z(e)}function Qp(e,n,t){const a=e[n];return De(a)?a:new Yp(e,n,t)}class ed{constructor(n,t,a,s){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new wo(n,()=>{this._dirty||(this._dirty=!0,Lo(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=a}get value(){const n=ie(this);return To(n),(n._dirty||!n._cacheable)&&(n._dirty=!1,n._value=n.effect.run()),n._value}set value(n){this._setter(n)}}function nd(e,n,t=!1){let a,s;const o=se(e);return o?(a=e,s=An):(a=e.get,s=e.set),new ed(a,s,o||!s,t)}function qn(e,n,t,a){let s;try{s=a?e(...a):e()}catch(o){_a(o,n,t)}return s}function ln(e,n,t,a){if(se(e)){const o=qn(e,n,t,a);return o&&Ur(o)&&o.catch(l=>{_a(l,n,t)}),o}const s=[];for(let o=0;o>>1,s=ze[a],o=pa(s);own&&ze.splice(n,1)}function od(e){ee(e)?Pt.push(...e):(!In||!In.includes(e,e.allowRecurse?at+1:at))&&Pt.push(e),ui()}function Tl(e,n=ua?wn+1:0){for(;npa(t)-pa(a)),at=0;ate.id==null?1/0:e.id,ld=(e,n)=>{const t=pa(e)-pa(n);if(t===0){if(e.pre&&!n.pre)return-1;if(n.pre&&!e.pre)return 1}return t};function pi(e){Ks=!1,ua=!0,ze.sort(ld);try{for(wn=0;wnhe(v)?v.trim():v)),d&&(s=t.map(hp))}let i,c=a[i=Es(n)]||a[i=Es(cn(n))];!c&&o&&(c=a[i=Es(Nt(n))]),c&&ln(c,e,6,s);const u=a[i+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,ln(u,e,6,s)}}function di(e,n,t=!1){const a=n.emitsCache,s=a.get(e);if(s!==void 0)return s;const o=e.emits;let l={},i=!1;if(!se(e)){const c=u=>{const p=di(u,n,!0);p&&(i=!0,Ie(l,p))};!t&&n.mixins.length&&n.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!i?(Te(e)&&a.set(e,null),null):(ee(o)?o.forEach(c=>l[c]=null):Ie(l,o),Te(e)&&a.set(e,l),l)}function us(e,n){return!e||!ga(n)?!1:(n=n.slice(2).replace(/Once$/,""),fe(e,n[0].toLowerCase()+n.slice(1))||fe(e,Nt(n))||fe(e,n))}let on=null,fi=null;function Ja(e){const n=on;return on=e,fi=e&&e.type.__scopeId||null,n}function id(e,n=on,t){if(!n||e._n)return e;const a=(...s)=>{a._d&&$l(-1);const o=Ja(n);let l;try{l=e(...s)}finally{Ja(o),a._d&&$l(1)}return l};return a._n=!0,a._c=!0,a._d=!0,a}function As(e){const{type:n,vnode:t,proxy:a,withProxy:s,props:o,propsOptions:[l],slots:i,attrs:c,emit:u,render:p,renderCache:d,data:f,setupState:v,ctx:b,inheritAttrs:k}=e;let A,y;const x=Ja(e);try{if(t.shapeFlag&4){const P=s||a,V=P;A=dn(p.call(V,P,d,o,v,f,b)),y=c}else{const P=n;A=dn(P.length>1?P(o,{attrs:c,slots:i,emit:u}):P(o,null)),y=n.props?c:cd(c)}}catch(P){oa.length=0,_a(P,e,1),A=Me(Pn)}let _=A;if(y&&k!==!1){const P=Object.keys(y),{shapeFlag:V}=_;P.length&&V&7&&(l&&P.some(go)&&(y=ud(y,l)),_=Xn(_,y))}return t.dirs&&(_=Xn(_),_.dirs=_.dirs?_.dirs.concat(t.dirs):t.dirs),t.transition&&(_.transition=t.transition),A=_,Ja(x),A}const cd=e=>{let n;for(const t in e)(t==="class"||t==="style"||ga(t))&&((n||(n={}))[t]=e[t]);return n},ud=(e,n)=>{const t={};for(const a in e)(!go(a)||!(a.slice(9)in n))&&(t[a]=e[a]);return t};function pd(e,n,t){const{props:a,children:s,component:o}=e,{props:l,children:i,patchFlag:c}=n,u=o.emitsOptions;if(n.dirs||n.transition)return!0;if(t&&c>=0){if(c&1024)return!0;if(c&16)return a?Ll(a,l,u):!!l;if(c&8){const p=n.dynamicProps;for(let d=0;de.__isSuspense;function mi(e,n){n&&n.pendingBranch?ee(e)?n.effects.push(...e):n.effects.push(e):od(e)}function hi(e,n){return Ro(e,null,n)}const Na={};function le(e,n,t){return Ro(e,n,t)}function Ro(e,n,{immediate:t,deep:a,flush:s,onTrack:o,onTrigger:l}=Se){var i;const c=Gr()===((i=Ve)==null?void 0:i.scope)?Ve:null;let u,p=!1,d=!1;if(De(e)?(u=()=>e.value,p=Za(e)):At(e)?(u=()=>e,a=!0):ee(e)?(d=!0,p=e.some(P=>At(P)||Za(P)),u=()=>e.map(P=>{if(De(P))return P.value;if(At(P))return _t(P);if(se(P))return qn(P,c,2)})):se(e)?n?u=()=>qn(e,c,2):u=()=>{if(!(c&&c.isUnmounted))return f&&f(),ln(e,c,3,[v])}:u=An,n&&a){const P=u;u=()=>_t(P())}let f,v=P=>{f=x.onStop=()=>{qn(P,c,4),f=x.onStop=void 0}},b;if(Rt)if(v=An,n?t&&ln(n,c,3,[u(),d?[]:void 0,v]):u(),s==="sync"){const P=r0();b=P.__watcherHandles||(P.__watcherHandles=[])}else return An;let k=d?new Array(e.length).fill(Na):Na;const A=()=>{if(x.active)if(n){const P=x.run();(a||p||(d?P.some((V,R)=>ut(V,k[R])):ut(P,k)))&&(f&&f(),ln(n,c,3,[P,k===Na?void 0:d&&k[0]===Na?[]:k,v]),k=P)}else x.run()};A.allowRecurse=!!n;let y;s==="sync"?y=A:s==="post"?y=()=>Ue(A,c&&c.suspense):(A.pre=!0,c&&(A.id=c.uid),y=()=>cs(A));const x=new wo(u,y);n?t?A():k=x.run():s==="post"?Ue(x.run.bind(x),c&&c.suspense):x.run();const _=()=>{x.stop(),c&&c.scope&&bo(c.scope.effects,x)};return b&&b.push(_),_}function hd(e,n,t){const a=this.proxy,s=he(e)?e.includes(".")?gi(a,e):()=>a[e]:e.bind(a,a);let o;se(n)?o=n:(o=n.handler,t=n);const l=Ve;Ct(this);const i=Ro(s,o.bind(a),t);return l?Ct(l):ct(),i}function gi(e,n){const t=n.split(".");return()=>{let a=e;for(let s=0;s{_t(t,n)});else if(fp(e))for(const t in e)_t(e[t],n);return e}function En(e,n,t,a){const s=e.dirs,o=n&&n.dirs;for(let l=0;l{e.isMounted=!0}),Io(()=>{e.isUnmounting=!0}),e}const tn=[Function,Array],yi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:tn,onEnter:tn,onAfterEnter:tn,onEnterCancelled:tn,onBeforeLeave:tn,onLeave:tn,onAfterLeave:tn,onLeaveCancelled:tn,onBeforeAppear:tn,onAppear:tn,onAfterAppear:tn,onAppearCancelled:tn},gd={name:"BaseTransition",props:yi,setup(e,{slots:n}){const t=dt(),a=bi();let s;return()=>{const o=n.default&&Oo(n.default(),!0);if(!o||!o.length)return;let l=o[0];if(o.length>1){for(const k of o)if(k.type!==Pn){l=k;break}}const i=ie(e),{mode:c}=i;if(a.isLeaving)return Ps(l);const u=Rl(l);if(!u)return Ps(l);const p=da(u,i,a,t);fa(u,p);const d=t.subTree,f=d&&Rl(d);let v=!1;const{getTransitionKey:b}=u.type;if(b){const k=b();s===void 0?s=k:k!==s&&(s=k,v=!0)}if(f&&f.type!==Pn&&(!st(u,f)||v)){const k=da(f,i,a,t);if(fa(f,k),c==="out-in")return a.isLeaving=!0,k.afterLeave=()=>{a.isLeaving=!1,t.update.active!==!1&&t.update()},Ps(l);c==="in-out"&&u.type!==Pn&&(k.delayLeave=(A,y,x)=>{const _=_i(a,f);_[String(f.key)]=f,A[Wn]=()=>{y(),A[Wn]=void 0,delete p.delayedLeave},p.delayedLeave=x})}return l}}},bd=gd;function _i(e,n){const{leavingVNodes:t}=e;let a=t.get(n.type);return a||(a=Object.create(null),t.set(n.type,a)),a}function da(e,n,t,a){const{appear:s,mode:o,persisted:l=!1,onBeforeEnter:i,onEnter:c,onAfterEnter:u,onEnterCancelled:p,onBeforeLeave:d,onLeave:f,onAfterLeave:v,onLeaveCancelled:b,onBeforeAppear:k,onAppear:A,onAfterAppear:y,onAppearCancelled:x}=n,_=String(e.key),P=_i(t,e),V=(N,D)=>{N&&ln(N,a,9,D)},R=(N,D)=>{const z=D[1];V(N,D),ee(N)?N.every(Y=>Y.length<=1)&&z():N.length<=1&&z()},G={mode:o,persisted:l,beforeEnter(N){let D=i;if(!t.isMounted)if(s)D=k||i;else return;N[Wn]&&N[Wn](!0);const z=P[_];z&&st(e,z)&&z.el[Wn]&&z.el[Wn](),V(D,[N])},enter(N){let D=c,z=u,Y=p;if(!t.isMounted)if(s)D=A||c,z=y||u,Y=x||p;else return;let F=!1;const ne=N[za]=xe=>{F||(F=!0,xe?V(Y,[N]):V(z,[N]),G.delayedLeave&&G.delayedLeave(),N[za]=void 0)};D?R(D,[N,ne]):ne()},leave(N,D){const z=String(e.key);if(N[za]&&N[za](!0),t.isUnmounting)return D();V(d,[N]);let Y=!1;const F=N[Wn]=ne=>{Y||(Y=!0,D(),ne?V(b,[N]):V(v,[N]),N[Wn]=void 0,P[z]===e&&delete P[z])};P[z]=e,f?R(f,[N,F]):F()},clone(N){return da(N,n,t,a)}};return G}function Ps(e){if(ka(e))return e=Xn(e),e.children=null,e}function Rl(e){return ka(e)?e.children?e.children[0]:void 0:e}function fa(e,n){e.shapeFlag&6&&e.component?fa(e.component.subTree,n):e.shapeFlag&128?(e.ssContent.transition=n.clone(e.ssContent),e.ssFallback.transition=n.clone(e.ssFallback)):e.transition=n}function Oo(e,n=!1,t){let a=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function S(e){se(e)&&(e={loader:e});const{loader:n,loadingComponent:t,errorComponent:a,delay:s=200,timeout:o,suspensible:l=!0,onError:i}=e;let c=null,u,p=0;const d=()=>(p++,c=null,f()),f=()=>{let v;return c||(v=c=n().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),i)return new Promise((k,A)=>{i(b,()=>k(d()),()=>A(b),p+1)});throw b}).then(b=>v!==c&&c?c:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),u=b,b)))};return H({name:"AsyncComponentWrapper",__asyncLoader:f,get __asyncResolved(){return u},setup(){const v=Ve;if(u)return()=>Ss(u,v);const b=x=>{c=null,_a(x,v,13,!a)};if(l&&v.suspense||Rt)return f().then(x=>()=>Ss(x,v)).catch(x=>(b(x),()=>a?Me(a,{error:x}):null));const k=Z(!1),A=Z(),y=Z(!!s);return s&&setTimeout(()=>{y.value=!1},s),o!=null&&setTimeout(()=>{if(!k.value&&!A.value){const x=new Error(`Async component timed out after ${o}ms.`);b(x),A.value=x}},o),f().then(()=>{k.value=!0,v.parent&&ka(v.parent.vnode)&&cs(v.parent.update)}).catch(x=>{b(x),A.value=x}),()=>{if(k.value&&u)return Ss(u,v);if(A.value&&a)return Me(a,{error:A.value});if(t&&!y.value)return Me(t)}}})}function Ss(e,n){const{ref:t,props:a,children:s,ce:o}=n.vnode,l=Me(e,a,s);return l.ref=t,l.ce=o,delete n.vnode.ce,l}const ka=e=>e.type.__isKeepAlive;function yd(e,n){ki(e,"a",n)}function _d(e,n){ki(e,"da",n)}function ki(e,n,t=Ve){const a=e.__wdc||(e.__wdc=()=>{let s=t;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(ps(n,a,t),t){let s=t.parent;for(;s&&s.parent;)ka(s.parent.vnode)&&kd(a,n,t,s),s=s.parent}}function kd(e,n,t,a){const s=ps(n,e,a,!0);Ht(()=>{bo(a[n],s)},t)}function ps(e,n,t=Ve,a=!1){if(t){const s=t[e]||(t[e]=[]),o=n.__weh||(n.__weh=(...l)=>{if(t.isUnmounted)return;zt(),Ct(t);const i=ln(n,t,e,l);return ct(),$t(),i});return a?s.unshift(o):s.push(o),o}}const Bn=e=>(n,t=Ve)=>(!Rt||e==="sp")&&ps(e,(...a)=>n(...a),t),Ed=Bn("bm"),_e=Bn("m"),wd=Bn("bu"),Ei=Bn("u"),Io=Bn("bum"),Ht=Bn("um"),Ad=Bn("sp"),Pd=Bn("rtg"),Sd=Bn("rtc");function xd(e,n=Ve){ps("ec",e,n)}const Xs=e=>e?Di(e)?No(e)||e.proxy:Xs(e.parent):null,aa=Ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Xs(e.parent),$root:e=>Xs(e.root),$emit:e=>e.emit,$options:e=>Vo(e),$forceUpdate:e=>e.f||(e.f=()=>cs(e.update)),$nextTick:e=>e.n||(e.n=pt.bind(e.proxy)),$watch:e=>hd.bind(e)}),xs=(e,n)=>e!==Se&&!e.__isScriptSetup&&fe(e,n),Td={get({_:e},n){const{ctx:t,setupState:a,data:s,props:o,accessCache:l,type:i,appContext:c}=e;let u;if(n[0]!=="$"){const v=l[n];if(v!==void 0)switch(v){case 1:return a[n];case 2:return s[n];case 4:return t[n];case 3:return o[n]}else{if(xs(a,n))return l[n]=1,a[n];if(s!==Se&&fe(s,n))return l[n]=2,s[n];if((u=e.propsOptions[0])&&fe(u,n))return l[n]=3,o[n];if(t!==Se&&fe(t,n))return l[n]=4,t[n];Zs&&(l[n]=0)}}const p=aa[n];let d,f;if(p)return n==="$attrs"&&Ke(e,"get",n),p(e);if((d=i.__cssModules)&&(d=d[n]))return d;if(t!==Se&&fe(t,n))return l[n]=4,t[n];if(f=c.config.globalProperties,fe(f,n))return f[n]},set({_:e},n,t){const{data:a,setupState:s,ctx:o}=e;return xs(s,n)?(s[n]=t,!0):a!==Se&&fe(a,n)?(a[n]=t,!0):fe(e.props,n)||n[0]==="$"&&n.slice(1)in e?!1:(o[n]=t,!0)},has({_:{data:e,setupState:n,accessCache:t,ctx:a,appContext:s,propsOptions:o}},l){let i;return!!t[l]||e!==Se&&fe(e,l)||xs(n,l)||(i=o[0])&&fe(i,l)||fe(a,l)||fe(aa,l)||fe(s.config.globalProperties,l)},defineProperty(e,n,t){return t.get!=null?e._.accessCache[n]=0:fe(t,"value")&&this.set(e,n,t.value,null),Reflect.defineProperty(e,n,t)}};function Ol(e){return ee(e)?e.reduce((n,t)=>(n[t]=null,n),{}):e}let Zs=!0;function Ld(e){const n=Vo(e),t=e.proxy,a=e.ctx;Zs=!1,n.beforeCreate&&Il(n.beforeCreate,e,"bc");const{data:s,computed:o,methods:l,watch:i,provide:c,inject:u,created:p,beforeMount:d,mounted:f,beforeUpdate:v,updated:b,activated:k,deactivated:A,beforeDestroy:y,beforeUnmount:x,destroyed:_,unmounted:P,render:V,renderTracked:R,renderTriggered:G,errorCaptured:N,serverPrefetch:D,expose:z,inheritAttrs:Y,components:F,directives:ne,filters:xe}=n;if(u&&Cd(u,a,null),l)for(const te in l){const q=l[te];se(q)&&(a[te]=q.bind(t))}if(s){const te=s.call(t,t);Te(te)&&(e.data=ya(te))}if(Zs=!0,o)for(const te in o){const q=o[te],Ce=se(q)?q.bind(t,t):se(q.get)?q.get.bind(t,t):An,yn=!se(q)&&se(q.set)?q.set.bind(t):An,nn=w({get:Ce,set:yn});Object.defineProperty(a,te,{enumerable:!0,configurable:!0,get:()=>nn.value,set:Be=>nn.value=Be})}if(i)for(const te in i)wi(i[te],a,t,te);if(c){const te=se(c)?c.call(t):c;Reflect.ownKeys(te).forEach(q=>{rn(q,te[q])})}p&&Il(p,e,"c");function j(te,q){ee(q)?q.forEach(Ce=>te(Ce.bind(t))):q&&te(q.bind(t))}if(j(Ed,d),j(_e,f),j(wd,v),j(Ei,b),j(yd,k),j(_d,A),j(xd,N),j(Sd,R),j(Pd,G),j(Io,x),j(Ht,P),j(Ad,D),ee(z))if(z.length){const te=e.exposed||(e.exposed={});z.forEach(q=>{Object.defineProperty(te,q,{get:()=>t[q],set:Ce=>t[q]=Ce})})}else e.exposed||(e.exposed={});V&&e.render===An&&(e.render=V),Y!=null&&(e.inheritAttrs=Y),F&&(e.components=F),ne&&(e.directives=ne)}function Cd(e,n,t=An){ee(e)&&(e=Ys(e));for(const a in e){const s=e[a];let o;Te(s)?"default"in s?o=ce(s.from||a,s.default,!0):o=ce(s.from||a):o=ce(s),De(o)?Object.defineProperty(n,a,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):n[a]=o}}function Il(e,n,t){ln(ee(e)?e.map(a=>a.bind(n.proxy)):e.bind(n.proxy),n,t)}function wi(e,n,t,a){const s=a.includes(".")?gi(t,a):()=>t[a];if(he(e)){const o=n[e];se(o)&&le(s,o)}else if(se(e))le(s,e.bind(t));else if(Te(e))if(ee(e))e.forEach(o=>wi(o,n,t,a));else{const o=se(e.handler)?e.handler.bind(t):n[e.handler];se(o)&&le(s,o,e)}}function Vo(e){const n=e.type,{mixins:t,extends:a}=n,{mixins:s,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,i=o.get(n);let c;return i?c=i:!s.length&&!t&&!a?c=n:(c={},s.length&&s.forEach(u=>Qa(c,u,l,!0)),Qa(c,n,l)),Te(n)&&o.set(n,c),c}function Qa(e,n,t,a=!1){const{mixins:s,extends:o}=n;o&&Qa(e,o,t,!0),s&&s.forEach(l=>Qa(e,l,t,!0));for(const l in n)if(!(a&&l==="expose")){const i=Rd[l]||t&&t[l];e[l]=i?i(e[l],n[l]):n[l]}return e}const Rd={data:Vl,props:Dl,emits:Dl,methods:Qt,computed:Qt,beforeCreate:Fe,created:Fe,beforeMount:Fe,mounted:Fe,beforeUpdate:Fe,updated:Fe,beforeDestroy:Fe,beforeUnmount:Fe,destroyed:Fe,unmounted:Fe,activated:Fe,deactivated:Fe,errorCaptured:Fe,serverPrefetch:Fe,components:Qt,directives:Qt,watch:Id,provide:Vl,inject:Od};function Vl(e,n){return n?e?function(){return Ie(se(e)?e.call(this,this):e,se(n)?n.call(this,this):n)}:n:e}function Od(e,n){return Qt(Ys(e),Ys(n))}function Ys(e){if(ee(e)){const n={};for(let t=0;t1)return t&&se(n)?n.call(a&&a.proxy):n}}function Md(e,n,t,a=!1){const s={},o={};Ka(o,ds,1),e.propsDefaults=Object.create(null),Pi(e,n,s,o);for(const l in e.propsOptions[0])l in s||(s[l]=void 0);t?e.props=a?s:ai(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Bd(e,n,t,a){const{props:s,attrs:o,vnode:{patchFlag:l}}=e,i=ie(s),[c]=e.propsOptions;let u=!1;if((a||l>0)&&!(l&16)){if(l&8){const p=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[f,v]=Si(d,n,!0);Ie(l,f),v&&i.push(...v)};!t&&n.mixins.length&&n.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!o&&!c)return Te(e)&&a.set(e,wt),wt;if(ee(o))for(let p=0;p-1,v[1]=k<0||b-1||fe(v,"default"))&&i.push(d)}}}const u=[l,i];return Te(e)&&a.set(e,u),u}function Ml(e){return e[0]!=="$"}function Bl(e){const n=e&&e.toString().match(/^\s*(function|class) (\w+)/);return n?n[2]:e===null?"null":""}function Nl(e,n){return Bl(e)===Bl(n)}function zl(e,n){return ee(n)?n.findIndex(t=>Nl(t,e)):se(n)&&Nl(n,e)?0:-1}const xi=e=>e[0]==="_"||e==="$stable",Do=e=>ee(e)?e.map(dn):[dn(e)],Nd=(e,n,t)=>{if(n._n)return n;const a=id((...s)=>Do(n(...s)),t);return a._c=!1,a},Ti=(e,n,t)=>{const a=e._ctx;for(const s in e){if(xi(s))continue;const o=e[s];if(se(o))n[s]=Nd(s,o,a);else if(o!=null){const l=Do(o);n[s]=()=>l}}},Li=(e,n)=>{const t=Do(n);e.slots.default=()=>t},zd=(e,n)=>{if(e.vnode.shapeFlag&32){const t=n._;t?(e.slots=ie(n),Ka(n,"_",t)):Ti(n,e.slots={})}else e.slots={},n&&Li(e,n);Ka(e.slots,ds,1)},$d=(e,n,t)=>{const{vnode:a,slots:s}=e;let o=!0,l=Se;if(a.shapeFlag&32){const i=n._;i?t&&i===1?o=!1:(Ie(s,n),!t&&i===1&&delete s._):(o=!n.$stable,Ti(n,s)),l=n}else n&&(Li(e,n),l={default:1});if(o)for(const i in s)!xi(i)&&l[i]==null&&delete s[i]};function ns(e,n,t,a,s=!1){if(ee(e)){e.forEach((f,v)=>ns(f,n&&(ee(n)?n[v]:n),t,a,s));return}if(ta(a)&&!s)return;const o=a.shapeFlag&4?No(a.component)||a.component.proxy:a.el,l=s?null:o,{i,r:c}=e,u=n&&n.r,p=i.refs===Se?i.refs={}:i.refs,d=i.setupState;if(u!=null&&u!==c&&(he(u)?(p[u]=null,fe(d,u)&&(d[u]=null)):De(u)&&(u.value=null)),se(c))qn(c,i,12,[l,p]);else{const f=he(c),v=De(c);if(f||v){const b=()=>{if(e.f){const k=f?fe(d,c)?d[c]:p[c]:c.value;s?ee(k)&&bo(k,o):ee(k)?k.includes(o)||k.push(o):f?(p[c]=[o],fe(d,c)&&(d[c]=p[c])):(c.value=[o],e.k&&(p[e.k]=c.value))}else f?(p[c]=l,fe(d,c)&&(d[c]=l)):v&&(c.value=l,e.k&&(p[e.k]=l))};l?(b.id=-1,Ue(b,t)):b()}}}let zn=!1;const $a=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Fa=e=>e.nodeType===8;function Fd(e){const{mt:n,p:t,o:{patchProp:a,createText:s,nextSibling:o,parentNode:l,remove:i,insert:c,createComment:u}}=e,p=(_,P)=>{if(!P.hasChildNodes()){t(null,_,P),Ya(),P._vnode=_;return}zn=!1,d(P.firstChild,_,null,null,null),Ya(),P._vnode=_,zn&&console.error("Hydration completed but contains mismatches.")},d=(_,P,V,R,G,N=!1)=>{const D=Fa(_)&&_.data==="[",z=()=>k(_,P,V,R,G,D),{type:Y,ref:F,shapeFlag:ne,patchFlag:xe}=P;let Pe=_.nodeType;P.el=_,xe===-2&&(N=!1,P.dynamicChildren=null);let j=null;switch(Y){case Lt:Pe!==3?P.children===""?(c(P.el=s(""),l(_),_),j=_):j=z():(_.data!==P.children&&(zn=!0,_.data=P.children),j=o(_));break;case Pn:x(_)?(j=o(_),y(P.el=_.content.firstChild,_,V)):Pe!==8||D?j=z():j=o(_);break;case sa:if(D&&(_=o(_),Pe=_.nodeType),Pe===1||Pe===3){j=_;const te=!P.children.length;for(let q=0;q{N=N||!!P.dynamicChildren;const{type:D,props:z,patchFlag:Y,shapeFlag:F,dirs:ne,transition:xe}=P,Pe=D==="input"||D==="option";if(Pe||Y!==-1){if(ne&&En(P,null,V,"created"),z)if(Pe||!N||Y&48)for(const q in z)(Pe&&(q.endsWith("value")||q==="indeterminate")||ga(q)&&!na(q)||q[0]===".")&&a(_,q,null,z[q],!1,void 0,V);else z.onClick&&a(_,"onClick",null,z.onClick,!1,void 0,V);let j;(j=z&&z.onVnodeBeforeMount)&&an(j,V,P);let te=!1;if(x(_)){te=Ci(R,xe)&&V&&V.vnode.props&&V.vnode.props.appear;const q=_.content.firstChild;te&&xe.beforeEnter(q),y(q,_,V),P.el=_=q}if(ne&&En(P,null,V,"beforeMount"),((j=z&&z.onVnodeMounted)||ne||te)&&mi(()=>{j&&an(j,V,P),te&&xe.enter(_),ne&&En(P,null,V,"mounted")},R),F&16&&!(z&&(z.innerHTML||z.textContent))){let q=v(_.firstChild,P,_,V,R,G,N);for(;q;){zn=!0;const Ce=q;q=q.nextSibling,i(Ce)}}else F&8&&_.textContent!==P.children&&(zn=!0,_.textContent=P.children)}return _.nextSibling},v=(_,P,V,R,G,N,D)=>{D=D||!!P.dynamicChildren;const z=P.children,Y=z.length;for(let F=0;F{const{slotScopeIds:D}=P;D&&(G=G?G.concat(D):D);const z=l(_),Y=v(o(_),P,z,V,R,G,N);return Y&&Fa(Y)&&Y.data==="]"?o(P.anchor=Y):(zn=!0,c(P.anchor=u("]"),z,Y),Y)},k=(_,P,V,R,G,N)=>{if(zn=!0,P.el=null,N){const Y=A(_);for(;;){const F=o(_);if(F&&F!==Y)i(F);else break}}const D=o(_),z=l(_);return i(_),t(null,P,z,D,V,R,$a(z),G),D},A=(_,P="[",V="]")=>{let R=0;for(;_;)if(_=o(_),_&&Fa(_)&&(_.data===P&&R++,_.data===V)){if(R===0)return o(_);R--}return _},y=(_,P,V)=>{const R=P.parentNode;R&&R.replaceChild(_,P);let G=V;for(;G;)G.vnode.el===P&&(G.vnode.el=G.subTree.el=_),G=G.parent},x=_=>_.nodeType===1&&_.tagName.toLowerCase()==="template";return[p,d]}const Ue=mi;function Hd(e){return Wd(e,Fd)}function Wd(e,n){const t=Us();t.__VUE__=!0;const{insert:a,remove:s,patchProp:o,createElement:l,createText:i,createComment:c,setText:u,setElementText:p,parentNode:d,nextSibling:f,setScopeId:v=An,insertStaticContent:b}=e,k=(h,g,E,T=null,C=null,O=null,W=!1,M=null,$=!!g.dynamicChildren)=>{if(h===g)return;h&&!st(h,g)&&(T=L(h),Be(h,C,O,!0),h=null),g.patchFlag===-2&&($=!1,g.dynamicChildren=null);const{type:I,ref:J,shapeFlag:K}=g;switch(I){case Lt:A(h,g,E,T);break;case Pn:y(h,g,E,T);break;case sa:h==null&&x(g,E,T,W);break;case Je:F(h,g,E,T,C,O,W,M,$);break;default:K&1?V(h,g,E,T,C,O,W,M,$):K&6?ne(h,g,E,T,C,O,W,M,$):(K&64||K&128)&&I.process(h,g,E,T,C,O,W,M,$,B)}J!=null&&C&&ns(J,h&&h.ref,O,g||h,!g)},A=(h,g,E,T)=>{if(h==null)a(g.el=i(g.children),E,T);else{const C=g.el=h.el;g.children!==h.children&&u(C,g.children)}},y=(h,g,E,T)=>{h==null?a(g.el=c(g.children||""),E,T):g.el=h.el},x=(h,g,E,T)=>{[h.el,h.anchor]=b(h.children,g,E,T,h.el,h.anchor)},_=({el:h,anchor:g},E,T)=>{let C;for(;h&&h!==g;)C=f(h),a(h,E,T),h=C;a(g,E,T)},P=({el:h,anchor:g})=>{let E;for(;h&&h!==g;)E=f(h),s(h),h=E;s(g)},V=(h,g,E,T,C,O,W,M,$)=>{W=W||g.type==="svg",h==null?R(g,E,T,C,O,W,M,$):D(h,g,C,O,W,M,$)},R=(h,g,E,T,C,O,W,M)=>{let $,I;const{type:J,props:K,shapeFlag:Q,transition:ae,dirs:oe}=h;if($=h.el=l(h.type,O,K&&K.is,K),Q&8?p($,h.children):Q&16&&N(h.children,$,null,T,C,O&&J!=="foreignObject",W,M),oe&&En(h,null,T,"created"),G($,h,h.scopeId,W,T),K){for(const be in K)be!=="value"&&!na(be)&&o($,be,null,K[be],O,h.children,T,C,Re);"value"in K&&o($,"value",null,K.value),(I=K.onVnodeBeforeMount)&&an(I,T,h)}oe&&En(h,null,T,"beforeMount");const Ee=Ci(C,ae);Ee&&ae.beforeEnter($),a($,g,E),((I=K&&K.onVnodeMounted)||Ee||oe)&&Ue(()=>{I&&an(I,T,h),Ee&&ae.enter($),oe&&En(h,null,T,"mounted")},C)},G=(h,g,E,T,C)=>{if(E&&v(h,E),T)for(let O=0;O{for(let I=$;I{const M=g.el=h.el;let{patchFlag:$,dynamicChildren:I,dirs:J}=g;$|=h.patchFlag&16;const K=h.props||Se,Q=g.props||Se;let ae;E&&nt(E,!1),(ae=Q.onVnodeBeforeUpdate)&&an(ae,E,g,h),J&&En(g,h,E,"beforeUpdate"),E&&nt(E,!0);const oe=C&&g.type!=="foreignObject";if(I?z(h.dynamicChildren,I,M,E,T,oe,O):W||q(h,g,M,null,E,T,oe,O,!1),$>0){if($&16)Y(M,g,K,Q,E,T,C);else if($&2&&K.class!==Q.class&&o(M,"class",null,Q.class,C),$&4&&o(M,"style",K.style,Q.style,C),$&8){const Ee=g.dynamicProps;for(let be=0;be{ae&&an(ae,E,g,h),J&&En(g,h,E,"updated")},T)},z=(h,g,E,T,C,O,W)=>{for(let M=0;M{if(E!==T){if(E!==Se)for(const M in E)!na(M)&&!(M in T)&&o(h,M,E[M],null,W,g.children,C,O,Re);for(const M in T){if(na(M))continue;const $=T[M],I=E[M];$!==I&&M!=="value"&&o(h,M,I,$,W,g.children,C,O,Re)}"value"in T&&o(h,"value",E.value,T.value)}},F=(h,g,E,T,C,O,W,M,$)=>{const I=g.el=h?h.el:i(""),J=g.anchor=h?h.anchor:i("");let{patchFlag:K,dynamicChildren:Q,slotScopeIds:ae}=g;ae&&(M=M?M.concat(ae):ae),h==null?(a(I,E,T),a(J,E,T),N(g.children,E,J,C,O,W,M,$)):K>0&&K&64&&Q&&h.dynamicChildren?(z(h.dynamicChildren,Q,E,C,O,W,M),(g.key!=null||C&&g===C.subTree)&&Ri(h,g,!0)):q(h,g,E,J,C,O,W,M,$)},ne=(h,g,E,T,C,O,W,M,$)=>{g.slotScopeIds=M,h==null?g.shapeFlag&512?C.ctx.activate(g,E,T,W,$):xe(g,E,T,C,O,W,$):Pe(h,g,$)},xe=(h,g,E,T,C,O,W)=>{const M=h.component=Qd(h,T,C);if(ka(h)&&(M.ctx.renderer=B),e0(M),M.asyncDep){if(C&&C.registerDep(M,j),!h.el){const $=M.subTree=Me(Pn);y(null,$,g,E)}return}j(M,h,g,E,C,O,W)},Pe=(h,g,E)=>{const T=g.component=h.component;if(pd(h,g,E))if(T.asyncDep&&!T.asyncResolved){te(T,g,E);return}else T.next=g,sd(T.update),T.update();else g.el=h.el,T.vnode=g},j=(h,g,E,T,C,O,W)=>{const M=()=>{if(h.isMounted){let{next:J,bu:K,u:Q,parent:ae,vnode:oe}=h,Ee=J,be;nt(h,!1),J?(J.el=oe.el,te(h,J,W)):J=oe,K&&ws(K),(be=J.props&&J.props.onVnodeBeforeUpdate)&&an(be,ae,J,oe),nt(h,!0);const Oe=As(h),un=h.subTree;h.subTree=Oe,k(un,Oe,d(un.el),L(un),h,C,O),J.el=Oe.el,Ee===null&&dd(h,Oe.el),Q&&Ue(Q,C),(be=J.props&&J.props.onVnodeUpdated)&&Ue(()=>an(be,ae,J,oe),C)}else{let J;const{el:K,props:Q}=g,{bm:ae,m:oe,parent:Ee}=h,be=ta(g);if(nt(h,!1),ae&&ws(ae),!be&&(J=Q&&Q.onVnodeBeforeMount)&&an(J,Ee,g),nt(h,!0),K&&pe){const Oe=()=>{h.subTree=As(h),pe(K,h.subTree,h,C,null)};be?g.type.__asyncLoader().then(()=>!h.isUnmounted&&Oe()):Oe()}else{const Oe=h.subTree=As(h);k(null,Oe,E,T,h,C,O),g.el=Oe.el}if(oe&&Ue(oe,C),!be&&(J=Q&&Q.onVnodeMounted)){const Oe=g;Ue(()=>an(J,Ee,Oe),C)}(g.shapeFlag&256||Ee&&ta(Ee.vnode)&&Ee.vnode.shapeFlag&256)&&h.a&&Ue(h.a,C),h.isMounted=!0,g=E=T=null}},$=h.effect=new wo(M,()=>cs(I),h.scope),I=h.update=()=>$.run();I.id=h.uid,nt(h,!0),I()},te=(h,g,E)=>{g.component=h;const T=h.vnode.props;h.vnode=g,h.next=null,Bd(h,g.props,T,E),$d(h,g.children,E),zt(),Tl(),$t()},q=(h,g,E,T,C,O,W,M,$=!1)=>{const I=h&&h.children,J=h?h.shapeFlag:0,K=g.children,{patchFlag:Q,shapeFlag:ae}=g;if(Q>0){if(Q&128){yn(I,K,E,T,C,O,W,M,$);return}else if(Q&256){Ce(I,K,E,T,C,O,W,M,$);return}}ae&8?(J&16&&Re(I,C,O),K!==I&&p(E,K)):J&16?ae&16?yn(I,K,E,T,C,O,W,M,$):Re(I,C,O,!0):(J&8&&p(E,""),ae&16&&N(K,E,T,C,O,W,M,$))},Ce=(h,g,E,T,C,O,W,M,$)=>{h=h||wt,g=g||wt;const I=h.length,J=g.length,K=Math.min(I,J);let Q;for(Q=0;QJ?Re(h,C,O,!0,!1,K):N(g,E,T,C,O,W,M,$,K)},yn=(h,g,E,T,C,O,W,M,$)=>{let I=0;const J=g.length;let K=h.length-1,Q=J-1;for(;I<=K&&I<=Q;){const ae=h[I],oe=g[I]=$?Un(g[I]):dn(g[I]);if(st(ae,oe))k(ae,oe,E,null,C,O,W,M,$);else break;I++}for(;I<=K&&I<=Q;){const ae=h[K],oe=g[Q]=$?Un(g[Q]):dn(g[Q]);if(st(ae,oe))k(ae,oe,E,null,C,O,W,M,$);else break;K--,Q--}if(I>K){if(I<=Q){const ae=Q+1,oe=aeQ)for(;I<=K;)Be(h[I],C,O,!0),I++;else{const ae=I,oe=I,Ee=new Map;for(I=oe;I<=Q;I++){const Ze=g[I]=$?Un(g[I]):dn(g[I]);Ze.key!=null&&Ee.set(Ze.key,I)}let be,Oe=0;const un=Q-oe+1;let mt=!1,gl=0;const Kt=new Array(un);for(I=0;I=un){Be(Ze,C,O,!0);continue}let kn;if(Ze.key!=null)kn=Ee.get(Ze.key);else for(be=oe;be<=Q;be++)if(Kt[be-oe]===0&&st(Ze,g[be])){kn=be;break}kn===void 0?Be(Ze,C,O,!0):(Kt[kn-oe]=I+1,kn>=gl?gl=kn:mt=!0,k(Ze,g[kn],E,null,C,O,W,M,$),Oe++)}const bl=mt?Ud(Kt):wt;for(be=bl.length-1,I=un-1;I>=0;I--){const Ze=oe+I,kn=g[Ze],yl=Ze+1{const{el:O,type:W,transition:M,children:$,shapeFlag:I}=h;if(I&6){nn(h.component.subTree,g,E,T);return}if(I&128){h.suspense.move(g,E,T);return}if(I&64){W.move(h,g,E,B);return}if(W===Je){a(O,g,E);for(let K=0;K<$.length;K++)nn($[K],g,E,T);a(h.anchor,g,E);return}if(W===sa){_(h,g,E);return}if(T!==2&&I&1&&M)if(T===0)M.beforeEnter(O),a(O,g,E),Ue(()=>M.enter(O),C);else{const{leave:K,delayLeave:Q,afterLeave:ae}=M,oe=()=>a(O,g,E),Ee=()=>{K(O,()=>{oe(),ae&&ae()})};Q?Q(O,oe,Ee):Ee()}else a(O,g,E)},Be=(h,g,E,T=!1,C=!1)=>{const{type:O,props:W,ref:M,children:$,dynamicChildren:I,shapeFlag:J,patchFlag:K,dirs:Q}=h;if(M!=null&&ns(M,null,E,h,!0),J&256){g.ctx.deactivate(h);return}const ae=J&1&&Q,oe=!ta(h);let Ee;if(oe&&(Ee=W&&W.onVnodeBeforeUnmount)&&an(Ee,g,h),J&6)_n(h.component,E,T);else{if(J&128){h.suspense.unmount(E,T);return}ae&&En(h,null,g,"beforeUnmount"),J&64?h.type.remove(h,g,E,C,B,T):I&&(O!==Je||K>0&&K&64)?Re(I,g,E,!1,!0):(O===Je&&K&384||!C&&J&16)&&Re($,g,E),T&&Xe(h)}(oe&&(Ee=W&&W.onVnodeUnmounted)||ae)&&Ue(()=>{Ee&&an(Ee,g,h),ae&&En(h,null,g,"unmounted")},E)},Xe=h=>{const{type:g,el:E,anchor:T,transition:C}=h;if(g===Je){Tn(E,T);return}if(g===sa){P(h);return}const O=()=>{s(E),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(h.shapeFlag&1&&C&&!C.persisted){const{leave:W,delayLeave:M}=C,$=()=>W(E,O);M?M(h.el,O,$):$()}else O()},Tn=(h,g)=>{let E;for(;h!==g;)E=f(h),s(h),h=E;s(g)},_n=(h,g,E)=>{const{bum:T,scope:C,update:O,subTree:W,um:M}=h;T&&ws(T),C.stop(),O&&(O.active=!1,Be(W,h,g,E)),M&&Ue(M,g),Ue(()=>{h.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve())},Re=(h,g,E,T=!1,C=!1,O=0)=>{for(let W=O;Wh.shapeFlag&6?L(h.component.subTree):h.shapeFlag&128?h.suspense.next():f(h.anchor||h.el),U=(h,g,E)=>{h==null?g._vnode&&Be(g._vnode,null,null,!0):k(g._vnode||null,h,g,null,null,null,E),Tl(),Ya(),g._vnode=h},B={p:k,um:Be,m:nn,r:Xe,mt:xe,mc:N,pc:q,pbc:z,n:L,o:e};let X,pe;return n&&([X,pe]=n(B)),{render:U,hydrate:X,createApp:Dd(U,X)}}function nt({effect:e,update:n},t){e.allowRecurse=n.allowRecurse=t}function Ci(e,n){return(!e||e&&!e.pendingBranch)&&n&&!n.persisted}function Ri(e,n,t=!1){const a=e.children,s=n.children;if(ee(a)&&ee(s))for(let o=0;o>1,e[t[i]]0&&(n[a]=t[o-1]),t[o]=a)}}for(o=t.length,l=t[o-1];o-- >0;)t[o]=l,l=n[l];return t}const jd=e=>e.__isTeleport,Je=Symbol.for("v-fgt"),Lt=Symbol.for("v-txt"),Pn=Symbol.for("v-cmt"),sa=Symbol.for("v-stc"),oa=[];let vn=null;function a3(e=!1){oa.push(vn=e?null:[])}function Gd(){oa.pop(),vn=oa[oa.length-1]||null}let va=1;function $l(e){va+=e}function qd(e){return e.dynamicChildren=va>0?vn||wt:null,Gd(),va>0&&vn&&vn.push(e),e}function s3(e,n,t,a,s,o){return qd(Ii(e,n,t,a,s,o,!0))}function Qs(e){return e?e.__v_isVNode===!0:!1}function st(e,n){return e.type===n.type&&e.key===n.key}const ds="__vInternal",Oi=({key:e})=>e??null,qa=({ref:e,ref_key:n,ref_for:t})=>(typeof e=="number"&&(e=""+e),e!=null?he(e)||De(e)||se(e)?{i:on,r:e,k:n,f:!!t}:e:null);function Ii(e,n=null,t=null,a=0,s=null,o=e===Je?0:1,l=!1,i=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:n,key:n&&Oi(n),ref:n&&qa(n),scopeId:fi,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:a,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:on};return i?(Mo(c,t),o&128&&e.normalize(c)):t&&(c.shapeFlag|=he(t)?8:16),va>0&&!l&&vn&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&vn.push(c),c}const Me=Kd;function Kd(e,n=null,t=null,a=0,s=null,o=!1){if((!e||e===fd)&&(e=Pn),Qs(e)){const i=Xn(e,n,!0);return t&&Mo(i,t),va>0&&!o&&vn&&(i.shapeFlag&6?vn[vn.indexOf(e)]=i:vn.push(i)),i.patchFlag|=-2,i}if(o0(e)&&(e=e.__vccOpts),n){n=Xd(n);let{class:i,style:c}=n;i&&!he(i)&&(n.class=ko(i)),Te(c)&&(si(c)&&!ee(c)&&(c=Ie({},c)),n.style=_o(c))}const l=he(e)?1:md(e)?128:jd(e)?64:Te(e)?4:se(e)?2:0;return Ii(e,n,t,a,s,l,o,!0)}function Xd(e){return e?si(e)||ds in e?Ie({},e):e:null}function Xn(e,n,t=!1){const{props:a,ref:s,patchFlag:o,children:l}=e,i=n?Zd(a||{},n):a;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Oi(i),ref:n&&n.ref?t&&s?ee(s)?s.concat(qa(n)):[s,qa(n)]:qa(n):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:n&&e.type!==Je?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xn(e.ssContent),ssFallback:e.ssFallback&&Xn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Vi(e=" ",n=0){return Me(Lt,null,e,n)}function o3(e,n){const t=Me(sa,null,e);return t.staticCount=n,t}function dn(e){return e==null||typeof e=="boolean"?Me(Pn):ee(e)?Me(Je,null,e.slice()):typeof e=="object"?Un(e):Me(Lt,null,String(e))}function Un(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xn(e)}function Mo(e,n){let t=0;const{shapeFlag:a}=e;if(n==null)n=null;else if(ee(n))t=16;else if(typeof n=="object")if(a&65){const s=n.default;s&&(s._c&&(s._d=!1),Mo(e,s()),s._c&&(s._d=!0));return}else{t=32;const s=n._;!s&&!(ds in n)?n._ctx=on:s===3&&on&&(on.slots._===1?n._=1:(n._=2,e.patchFlag|=1024))}else se(n)?(n={default:n,_ctx:on},t=32):(n=String(n),a&64?(t=16,n=[Vi(n)]):t=8);e.children=n,e.shapeFlag|=t}function Zd(...e){const n={};for(let t=0;tVe||on;let Bo,ht,Fl="__VUE_INSTANCE_SETTERS__";(ht=Us()[Fl])||(ht=Us()[Fl]=[]),ht.push(e=>Ve=e),Bo=e=>{ht.length>1?ht.forEach(n=>n(e)):ht[0](e)};const Ct=e=>{Bo(e),e.scope.on()},ct=()=>{Ve&&Ve.scope.off(),Bo(null)};function Di(e){return e.vnode.shapeFlag&4}let Rt=!1;function e0(e,n=!1){Rt=n;const{props:t,children:a}=e.vnode,s=Di(e);Md(e,t,s,n),zd(e,a);const o=s?n0(e,n):void 0;return Rt=!1,o}function n0(e,n){const t=e.type;e.accessCache=Object.create(null),e.proxy=oi(new Proxy(e.ctx,Td));const{setup:a}=t;if(a){const s=e.setupContext=a.length>1?a0(e):null;Ct(e),zt();const o=qn(a,e,0,[e.props,s]);if($t(),ct(),Ur(o)){if(o.then(ct,ct),n)return o.then(l=>{Hl(e,l,n)}).catch(l=>{_a(l,e,0)});e.asyncDep=o}else Hl(e,o,n)}else Mi(e,n)}function Hl(e,n,t){se(n)?e.type.__ssrInlineRender?e.ssrRender=n:e.render=n:Te(n)&&(e.setupState=ri(n)),Mi(e,t)}let Wl;function Mi(e,n,t){const a=e.type;if(!e.render){if(!n&&Wl&&!a.render){const s=a.template||Vo(e).template;if(s){const{isCustomElement:o,compilerOptions:l}=e.appContext.config,{delimiters:i,compilerOptions:c}=a,u=Ie(Ie({isCustomElement:o,delimiters:i},l),c);a.render=Wl(s,u)}}e.render=a.render||An}{Ct(e),zt();try{Ld(e)}finally{$t(),ct()}}}function t0(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(n,t){return Ke(e,"get","$attrs"),n[t]}}))}function a0(e){const n=t=>{e.exposed=t||{}};return{get attrs(){return t0(e)},slots:e.slots,emit:e.emit,expose:n}}function No(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ri(oi(e.exposed)),{get(n,t){if(t in n)return n[t];if(t in aa)return aa[t](e)},has(n,t){return t in n||t in aa}}))}function s0(e,n=!0){return se(e)?e.displayName||e.name:e.name||n&&e.__name}function o0(e){return se(e)&&"__vccOpts"in e}const w=(e,n)=>nd(e,n,Rt);function r(e,n,t){const a=arguments.length;return a===2?Te(n)&&!ee(n)?Qs(n)?Me(e,null,[n]):Me(e,n):Me(e,null,n):(a>3?t=Array.prototype.slice.call(arguments,2):a===3&&Qs(t)&&(t=[t]),Me(e,n,t))}const l0=Symbol.for("v-scx"),r0=()=>ce(l0),i0="3.3.9",c0="http://www.w3.org/2000/svg",ot=typeof document<"u"?document:null,Ul=ot&&ot.createElement("template"),u0={insert:(e,n,t)=>{n.insertBefore(e,t||null)},remove:e=>{const n=e.parentNode;n&&n.removeChild(e)},createElement:(e,n,t,a)=>{const s=n?ot.createElementNS(c0,e):ot.createElement(e,t?{is:t}:void 0);return e==="select"&&a&&a.multiple!=null&&s.setAttribute("multiple",a.multiple),s},createText:e=>ot.createTextNode(e),createComment:e=>ot.createComment(e),setText:(e,n)=>{e.nodeValue=n},setElementText:(e,n)=>{e.textContent=n},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ot.querySelector(e),setScopeId(e,n){e.setAttribute(n,"")},insertStaticContent(e,n,t,a,s,o){const l=t?t.previousSibling:n.lastChild;if(s&&(s===o||s.nextSibling))for(;n.insertBefore(s.cloneNode(!0),t),!(s===o||!(s=s.nextSibling)););else{Ul.innerHTML=a?`${e}`:e;const i=Ul.content;if(a){const c=i.firstChild;for(;c.firstChild;)i.appendChild(c.firstChild);i.removeChild(c)}n.insertBefore(i,t)}return[l?l.nextSibling:n.firstChild,t?t.previousSibling:n.lastChild]}},$n="transition",Xt="animation",Ot=Symbol("_vtc"),Zn=(e,{slots:n})=>r(bd,Ni(e),n);Zn.displayName="Transition";const Bi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},p0=Zn.props=Ie({},yi,Bi),tt=(e,n=[])=>{ee(e)?e.forEach(t=>t(...n)):e&&e(...n)},jl=e=>e?ee(e)?e.some(n=>n.length>1):e.length>1:!1;function Ni(e){const n={};for(const F in e)F in Bi||(n[F]=e[F]);if(e.css===!1)return n;const{name:t="v",type:a,duration:s,enterFromClass:o=`${t}-enter-from`,enterActiveClass:l=`${t}-enter-active`,enterToClass:i=`${t}-enter-to`,appearFromClass:c=o,appearActiveClass:u=l,appearToClass:p=i,leaveFromClass:d=`${t}-leave-from`,leaveActiveClass:f=`${t}-leave-active`,leaveToClass:v=`${t}-leave-to`}=e,b=d0(s),k=b&&b[0],A=b&&b[1],{onBeforeEnter:y,onEnter:x,onEnterCancelled:_,onLeave:P,onLeaveCancelled:V,onBeforeAppear:R=y,onAppear:G=x,onAppearCancelled:N=_}=n,D=(F,ne,xe)=>{Hn(F,ne?p:i),Hn(F,ne?u:l),xe&&xe()},z=(F,ne)=>{F._isLeaving=!1,Hn(F,d),Hn(F,v),Hn(F,f),ne&&ne()},Y=F=>(ne,xe)=>{const Pe=F?G:x,j=()=>D(ne,F,xe);tt(Pe,[ne,j]),Gl(()=>{Hn(ne,F?c:o),Cn(ne,F?p:i),jl(Pe)||ql(ne,a,k,j)})};return Ie(n,{onBeforeEnter(F){tt(y,[F]),Cn(F,o),Cn(F,l)},onBeforeAppear(F){tt(R,[F]),Cn(F,c),Cn(F,u)},onEnter:Y(!1),onAppear:Y(!0),onLeave(F,ne){F._isLeaving=!0;const xe=()=>z(F,ne);Cn(F,d),$i(),Cn(F,f),Gl(()=>{F._isLeaving&&(Hn(F,d),Cn(F,v),jl(P)||ql(F,a,A,xe))}),tt(P,[F,xe])},onEnterCancelled(F){D(F,!1),tt(_,[F])},onAppearCancelled(F){D(F,!0),tt(N,[F])},onLeaveCancelled(F){z(F),tt(V,[F])}})}function d0(e){if(e==null)return null;if(Te(e))return[Ts(e.enter),Ts(e.leave)];{const n=Ts(e);return[n,n]}}function Ts(e){return gp(e)}function Cn(e,n){n.split(/\s+/).forEach(t=>t&&e.classList.add(t)),(e[Ot]||(e[Ot]=new Set)).add(n)}function Hn(e,n){n.split(/\s+/).forEach(a=>a&&e.classList.remove(a));const t=e[Ot];t&&(t.delete(n),t.size||(e[Ot]=void 0))}function Gl(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let f0=0;function ql(e,n,t,a){const s=e._endId=++f0,o=()=>{s===e._endId&&a()};if(t)return setTimeout(o,t);const{type:l,timeout:i,propCount:c}=zi(e,n);if(!l)return a();const u=l+"end";let p=0;const d=()=>{e.removeEventListener(u,f),o()},f=v=>{v.target===e&&++p>=c&&d()};setTimeout(()=>{p(t[b]||"").split(", "),s=a(`${$n}Delay`),o=a(`${$n}Duration`),l=Kl(s,o),i=a(`${Xt}Delay`),c=a(`${Xt}Duration`),u=Kl(i,c);let p=null,d=0,f=0;n===$n?l>0&&(p=$n,d=l,f=o.length):n===Xt?u>0&&(p=Xt,d=u,f=c.length):(d=Math.max(l,u),p=d>0?l>u?$n:Xt:null,f=p?p===$n?o.length:c.length:0);const v=p===$n&&/\b(transform|all)(,|$)/.test(a(`${$n}Property`).toString());return{type:p,timeout:d,propCount:f,hasTransform:v}}function Kl(e,n){for(;e.lengthXl(t)+Xl(e[a])))}function Xl(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function $i(){return document.body.offsetHeight}function v0(e,n,t){const a=e[Ot];a&&(n=(n?[n,...a]:[...a]).join(" ")),n==null?e.removeAttribute("class"):t?e.setAttribute("class",n):e.className=n}const m0=Symbol("_vod");function h0(e,n,t){const a=e.style,s=he(t);if(t&&!s){if(n&&!he(n))for(const o in n)t[o]==null&&eo(a,o,"");for(const o in t)eo(a,o,t[o])}else{const o=a.display;s?n!==t&&(a.cssText=t):n&&e.removeAttribute("style"),m0 in e&&(a.display=o)}}const Zl=/\s*!important$/;function eo(e,n,t){if(ee(t))t.forEach(a=>eo(e,n,a));else if(t==null&&(t=""),n.startsWith("--"))e.setProperty(n,t);else{const a=g0(e,n);Zl.test(t)?e.setProperty(Nt(a),t.replace(Zl,""),"important"):e[a]=t}}const Yl=["Webkit","Moz","ms"],Ls={};function g0(e,n){const t=Ls[n];if(t)return t;let a=cn(n);if(a!=="filter"&&a in e)return Ls[n]=a;a=ba(a);for(let s=0;sCs||(A0.then(()=>Cs=0),Cs=Date.now());function S0(e,n){const t=a=>{if(!a._vts)a._vts=Date.now();else if(a._vts<=t.attached)return;ln(x0(a,t.value),n,5,[a])};return t.value=e,t.attached=P0(),t}function x0(e,n){if(ee(n)){const t=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{t.call(e),e._stopped=!0},n.map(a=>s=>!s._stopped&&a&&a(s))}else return n}const nr=/^on[a-z]/,T0=(e,n,t,a,s=!1,o,l,i,c)=>{n==="class"?v0(e,a,s):n==="style"?h0(e,t,a):ga(n)?go(n)||E0(e,n,t,a,l):(n[0]==="."?(n=n.slice(1),!0):n[0]==="^"?(n=n.slice(1),!1):L0(e,n,a,s))?y0(e,n,a,o,l,i,c):(n==="true-value"?e._trueValue=a:n==="false-value"&&(e._falseValue=a),b0(e,n,a,s))};function L0(e,n,t,a){return a?!!(n==="innerHTML"||n==="textContent"||n in e&&nr.test(n)&&se(t)):n==="spellcheck"||n==="draggable"||n==="translate"||n==="form"||n==="list"&&e.tagName==="INPUT"||n==="type"&&e.tagName==="TEXTAREA"||nr.test(n)&&he(t)?!1:n in e}const Fi=new WeakMap,Hi=new WeakMap,ts=Symbol("_moveCb"),tr=Symbol("_enterCb"),Wi={name:"TransitionGroup",props:Ie({},p0,{tag:String,moveClass:String}),setup(e,{slots:n}){const t=dt(),a=bi();let s,o;return Ei(()=>{if(!s.length)return;const l=e.moveClass||`${e.name||"v"}-move`;if(!D0(s[0].el,t.vnode.el,l))return;s.forEach(O0),s.forEach(I0);const i=s.filter(V0);$i(),i.forEach(c=>{const u=c.el,p=u.style;Cn(u,l),p.transform=p.webkitTransform=p.transitionDuration="";const d=u[ts]=f=>{f&&f.target!==u||(!f||/transform$/.test(f.propertyName))&&(u.removeEventListener("transitionend",d),u[ts]=null,Hn(u,l))};u.addEventListener("transitionend",d)})}),()=>{const l=ie(e),i=Ni(l);let c=l.tag||Je;s=o,o=n.default?Oo(n.default()):[];for(let u=0;udelete e.mode;Wi.props;const R0=Wi;function O0(e){const n=e.el;n[ts]&&n[ts](),n[tr]&&n[tr]()}function I0(e){Hi.set(e,e.el.getBoundingClientRect())}function V0(e){const n=Fi.get(e),t=Hi.get(e),a=n.left-t.left,s=n.top-t.top;if(a||s){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${a}px,${s}px)`,o.transitionDuration="0s",e}}function D0(e,n,t){const a=e.cloneNode(),s=e[Ot];s&&s.forEach(i=>{i.split(/\s+/).forEach(c=>c&&a.classList.remove(c))}),t.split(/\s+/).forEach(i=>i&&a.classList.add(i)),a.style.display="none";const o=n.nodeType===1?n:n.parentNode;o.appendChild(a);const{hasTransform:l}=zi(a);return o.removeChild(a),l}const M0=Ie({patchProp:T0},u0);let Rs,ar=!1;function B0(){return Rs=ar?Rs:Hd(M0),ar=!0,Rs}const N0=(...e)=>{const n=B0().createApp(...e),{mount:t}=n;return n.mount=a=>{const s=z0(a);if(s)return t(s,!0,s instanceof SVGElement)},n};function z0(e){return he(e)?document.querySelector(e):e}const $0="modulepreload",F0=function(e){return"/"+e},sr={},m=function(n,t,a){if(!t||t.length===0)return n();const s=document.getElementsByTagName("link");return Promise.all(t.map(o=>{if(o=F0(o),o in sr)return;sr[o]=!0;const l=o.endsWith(".css"),i=l?'[rel="stylesheet"]':"";if(!!a)for(let p=s.length-1;p>=0;p--){const d=s[p];if(d.href===o&&(!l||d.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${i}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":$0,l||(u.as="script",u.crossOrigin=""),u.href=o,document.head.appendChild(u),l)return new Promise((p,d)=>{u.addEventListener("load",p),u.addEventListener("error",()=>d(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>n()).catch(o=>{const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o})},H0={"v-8daa1a0e":()=>m(()=>import("./index.html-PiT7KaNQ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-145ac574":()=>m(()=>import("./index.html-Hl4JhKud.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-633fb764":()=>m(()=>import("./一台新电脑的自我修养.html-MxCZ759H.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1985bd92":()=>m(()=>import("./考研的相关总结.html-MtB-obDb.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-759eeeca":()=>m(()=>import("./index.html-gMA9GJF5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4022cd1f":()=>m(()=>import("./index.html-rLpguDHG.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-326a924f":()=>m(()=>import("./index.html-JrMMdHQN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1aa77d92":()=>m(()=>import("./x-ray-absorption.html-LwWoQjRV.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-326d07e0":()=>m(()=>import("./index.html-nOH8cULF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-146a1089":()=>m(()=>import("./index.html-fLzS8F4B.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0d8a8100":()=>m(()=>import("./index.html-MPo9Y7jD.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7fdba302":()=>m(()=>import("./document-style-guide.html-EGDv-WCd.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-55a1aa9d":()=>m(()=>import("./index.html--V6z5CvO.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-147825fb":()=>m(()=>import("./index.html-TxswOh2B.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0f6d941f":()=>m(()=>import("./Aria2.html-JBGYZt4P.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f785aee2":()=>m(()=>import("./index.html-4L31BXeH.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-37da871d":()=>m(()=>import("./windows-applications.html-t6vJq-Ls.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3c7a5793":()=>m(()=>import("./使用Pavadan和MentoHUST进行锐捷认证.html-Otmo_uC5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-724feff4":()=>m(()=>import("./内网穿透折腾记录.html-jAjmy4Tm.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3ba57220":()=>m(()=>import("./开启代理后msftconnecttest无法跳转.html-ZpuWw8p5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-462cf0b5":()=>m(()=>import("./服务器的折腾.html-OZKw3mU-.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-27805d44":()=>m(()=>import("./index.html-g9TD10bH.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3e8b5a96":()=>m(()=>import("./translating-locale-files.html-LQ_T7ROC.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-75033482":()=>m(()=>import("./xml-basic.html-WnoXAZbo.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-726f7072":()=>m(()=>import("./index.html-0JGa55sF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-218ea978":()=>m(()=>import("./index.html-fNphsioW.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-dfd7264e":()=>m(()=>import("./index.html-eqgtE2cb.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-67bc2210":()=>m(()=>import("./index.html-ZjzL1_Oa.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ec98fe74":()=>m(()=>import("./index.html-dwwKck5c.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-279833aa":()=>m(()=>import("./index.html-1Xf6BIQG.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-510100b8":()=>m(()=>import("./index.html-BoCFjjn-.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-15d002d2":()=>m(()=>import("./index.html-uaDJW5uJ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-b72643ac":()=>m(()=>import("./index.html-Ly_6Ly1M.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-200d9c72":()=>m(()=>import("./index.html-N2d1tSlq.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-398f20bb":()=>m(()=>import("./index.html-j8sOZyRv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5f5c14e3":()=>m(()=>import("./index.html-oNRx-z03.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-290994d6":()=>m(()=>import("./index.html-oCsFLaio.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-22c29653":()=>m(()=>import("./index.html-OK-LFFc5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-28c0fe97":()=>m(()=>import("./index.html-MMkkJskN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-60f15105":()=>m(()=>import("./index.html-Tm_Yynm1.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-95f27414":()=>m(()=>import("./index.html-F9vPunw3.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-25eb367b":()=>m(()=>import("./index.html-nexu0sko.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-03c8e5f0":()=>m(()=>import("./index.html-OwhnMgGW.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f0abf42e":()=>m(()=>import("./index.html-mWiFI_Yl.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3ad9eb9e":()=>m(()=>import("./index.html-eCEeWA28.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5606cfbc":()=>m(()=>import("./index.html-13vAgEUq.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ea20dcf0":()=>m(()=>import("./index.html--5e5Ww4o.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-37263cfa":()=>m(()=>import("./index.html-tts0Gmwv.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7757da05":()=>m(()=>import("./index.html-C8pVrnd8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5934b528":()=>m(()=>import("./index.html-oRLXZLbz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e6ee3948":()=>m(()=>import("./index.html-Gz3sG_v7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ba918472":()=>m(()=>import("./index.html-aWWIh60G.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0d003bb2":()=>m(()=>import("./index.html-6Ke33YLi.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-417c1e62":()=>m(()=>import("./index.html-njsAnNKZ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5ae1580f":()=>m(()=>import("./index.html-ikW71uS4.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6f1e0448":()=>m(()=>import("./index.html-Z7Dyp-BW.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7e76b8f8":()=>m(()=>import("./index.html-h2vn4fFN.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-18ed4b78":()=>m(()=>import("./index.html-jwTHJG1P.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-46bb4806":()=>m(()=>import("./index.html-8kWyFEjE.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4ebfad01":()=>m(()=>import("./Zotero 将引文链接到参考书目.html-WIkGLBU5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2d2d3678":()=>m(()=>import("./Zotero 指北.html-wkL4Bdt0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f322b4c4":()=>m(()=>import("./index.html-2fgXUZq7.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-52613576":()=>m(()=>import("./citation-formats.html-Xly2JM7c.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3a58307c":()=>m(()=>import("./end.html-DOFgPd1d.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-74acd478":()=>m(()=>import("./the-csl-ecosystem.html-B_4fMBJP.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1989b542":()=>m(()=>import("./understanding-csl-styles.html-flUdYhT8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-bca6172c":()=>m(()=>import("./index.html-ZSWR-EEF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3ad3b172":()=>m(()=>import("./file-types.html-w6cLRIs5.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-08a9b111":()=>m(()=>import("./locale-files-strucure.html-K2z5MQ7m.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-45111e2a":()=>m(()=>import("./namespacing.html-cpUH7-8V.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-cd2badd2":()=>m(()=>import("./rendering-elements.html-UYLPk0R9.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-39b473fe":()=>m(()=>import("./style-behavior.html-ynDfOS7W.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-bc476d32":()=>m(()=>import("./styles-structure.html-BjOMYMO1.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-587333a4":()=>m(()=>import("./whitespace-handling.html-S9Tb2ct-.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1f0249ff":()=>m(()=>import("./xml-declaration.html-fnVpOMPE.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2deff341":()=>m(()=>import("./index.html-HRXm3WnO.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0e400be1":()=>m(()=>import("./index.html-agNhuRw0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-48a4ee89":()=>m(()=>import("./index.html-K7S-l-3j.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-389e5394":()=>m(()=>import("./index.html-2jxvlkHq.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7c106e16":()=>m(()=>import("./index.html-pjns0mnY.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-b05d858c":()=>m(()=>import("./index.html-NV3VAo2p.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-264f8f39":()=>m(()=>import("./index.html-UffiuZUq.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-ee92304c":()=>m(()=>import("./index.html-OAM7wYRK.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-087aa3e5":()=>m(()=>import("./index.html-5Qya19lK.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-76165238":()=>m(()=>import("./index.html-k5zuQx8_.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-bba2610e":()=>m(()=>import("./index.html-ZXYwVQ2K.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e90de79a":()=>m(()=>import("./index.html-4YUEmOgT.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-8a8094b0":()=>m(()=>import("./index.html-GP7mUQp3.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3de23628":()=>m(()=>import("./index.html-YjL5trWu.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-c8267792":()=>m(()=>import("./index.html-xWdgbTyy.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-bbad892c":()=>m(()=>import("./index.html-S2vTve9n.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2599bd96":()=>m(()=>import("./index.html-3cwD-Oo0.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-580e7486":()=>m(()=>import("./index.html-UOYOVIea.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-207456c6":()=>m(()=>import("./index.html-AUQoX8Hz.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-bba3a0be":()=>m(()=>import("./index.html-WvLLCrx1.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-76a4ec21":()=>m(()=>import("./index.html-t1DefzMn.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2715d38a":()=>m(()=>import("./index.html-LyE6bWOo.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6c38d36e":()=>m(()=>import("./index.html-wsd3JpXL.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-89e8430c":()=>m(()=>import("./index.html-VTWdOFhR.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6ba6606f":()=>m(()=>import("./index.html-k33U_bWh.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-39c6dbde":()=>m(()=>import("./index.html-lLKJDMl4.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-14e0ef58":()=>m(()=>import("./poscar-convert.html-5GM4hFuL.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-818acdc8":()=>m(()=>import("./appendix1-categories.html-4fIKJfJF.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7a387cd2":()=>m(()=>import("./appendix2-terms.html-e-Fc1GmY.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-bf62cb02":()=>m(()=>import("./appendix3-types.html-0yQjm-MT.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-74326aa0":()=>m(()=>import("./appendix4-variables.html-6p3RaXn8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-42793124":()=>m(()=>import("./appendix5-page-range-formats.html--KEoUp71.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3e741b5c":()=>m(()=>import("./appendix6-links.html-Q_iwdsIW.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3706649a":()=>m(()=>import("./404.html-a6q8b7vf.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-0e1a9384":()=>m(()=>import("./index.html-j3vyzNod.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1bdaec70":()=>m(()=>import("./index.html-s18gwDEr.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-f2c2fcf8":()=>m(()=>import("./index.html-l31dhQDe.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-316e1a6a":()=>m(()=>import("./index.html-J32BOFch.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-31dd63ff":()=>m(()=>import("./index.html-04USsxaR.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-458c0b5b":()=>m(()=>import("./index.html-cXU7djVD.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-1dd09e5c":()=>m(()=>import("./index.html-3vrG3pSO.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5bc93818":()=>m(()=>import("./index.html-5FQIohU3.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-744d024e":()=>m(()=>import("./index.html-cP4NO3ju.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-e52c881c":()=>m(()=>import("./index.html-a6fKRQU8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-154dc4c4":()=>m(()=>import("./index.html-troAe46c.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-01560935":()=>m(()=>import("./index.html-2X8BX4oS.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-9c48d85a":()=>m(()=>import("./index.html-HeSEfSZT.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-6800466b":()=>m(()=>import("./index.html-G1_hm51z.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-fadba3e8":()=>m(()=>import("./index.html-z81c_CD-.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-2e924cd2":()=>m(()=>import("./index.html-l42wifaG.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-4b7237e6":()=>m(()=>import("./index.html-ttVvy6py.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-5faa7940":()=>m(()=>import("./index.html-IVTFLvyg.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-58dac1cf":()=>m(()=>import("./index.html-qVk9y967.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-3ab30614":()=>m(()=>import("./index.html-9d7skGWZ.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-84d1097c":()=>m(()=>import("./index.html-LRdwP14F.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-7175f2e8":()=>m(()=>import("./index.html-CJ-zYQ3x.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-68581533":()=>m(()=>import("./index.html-rPafY0w8.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-229bd4e8":()=>m(()=>import("./index.html-GUGYvKH_.js"),__vite__mapDeps([])).then(({data:e})=>e),"v-39235e3a":()=>m(()=>import("./index.html-0kcXt3ms.js"),__vite__mapDeps([])).then(({data:e})=>e)},W0=JSON.parse('{"base":"/","lang":"zh-CN","title":"北辞","description":"","head":[],"locales":{}}');var U0=([e,n,t])=>e==="meta"&&n.name?`${e}.${n.name}`:["title","base"].includes(e)?e:e==="template"&&n.id?`${e}.${n.id}`:JSON.stringify([e,n,t]),j0=e=>{const n=new Set,t=[];return e.forEach(a=>{const s=U0(a);n.has(s)||(n.add(s),t.push(a))}),t},G0=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,ft=e=>/^(https?:)?\/\//.test(e),q0=/.md((\?|#).*)?$/,as=(e,n="/")=>!!(ft(e)||e.startsWith("/")&&!e.startsWith(n)&&!q0.test(e)),Ui=e=>/^[a-z][a-z0-9+.-]*:/.test(e),zo=e=>Object.prototype.toString.call(e)==="[object Object]",$o=e=>e[e.length-1]==="/"?e.slice(0,-1):e,ji=e=>e[0]==="/"?e.slice(1):e,K0=(e,n)=>{const t=Object.keys(e).sort((a,s)=>{const o=s.split("/").length-a.split("/").length;return o!==0?o:s.length-a.length});for(const a of t)if(n.startsWith(a))return a;return"/"};const Gi={"v-8daa1a0e":S(()=>m(()=>import("./index.html-r4KFp5Pr.js"),__vite__mapDeps([0,1]))),"v-145ac574":S(()=>m(()=>import("./index.html-UzbTA_Oa.js"),__vite__mapDeps([2,1]))),"v-633fb764":S(()=>m(()=>import("./一台新电脑的自我修养.html-Wj6uz103.js"),__vite__mapDeps([3,1]))),"v-1985bd92":S(()=>m(()=>import("./考研的相关总结.html-BCMIQNjX.js"),__vite__mapDeps([4,1]))),"v-759eeeca":S(()=>m(()=>import("./index.html-Hg3Zeshb.js"),__vite__mapDeps([5,1]))),"v-4022cd1f":S(()=>m(()=>import("./index.html-sI6EOuhl.js"),__vite__mapDeps([6,1]))),"v-326a924f":S(()=>m(()=>import("./index.html-LRzXIxjE.js"),__vite__mapDeps([7,1]))),"v-1aa77d92":S(()=>m(()=>import("./x-ray-absorption.html-humqFyJ6.js"),__vite__mapDeps([8,1]))),"v-326d07e0":S(()=>m(()=>import("./index.html-Q19uLxXK.js"),__vite__mapDeps([9,1]))),"v-146a1089":S(()=>m(()=>import("./index.html-wu1WGakg.js"),__vite__mapDeps([10,1]))),"v-0d8a8100":S(()=>m(()=>import("./index.html-1JsIXzJU.js"),__vite__mapDeps([11,1]))),"v-7fdba302":S(()=>m(()=>import("./document-style-guide.html-bBx7fYPO.js"),__vite__mapDeps([12,1]))),"v-55a1aa9d":S(()=>m(()=>import("./index.html-GEcJO9t1.js"),__vite__mapDeps([13,1]))),"v-147825fb":S(()=>m(()=>import("./index.html-G_enMliH.js"),__vite__mapDeps([14,1]))),"v-0f6d941f":S(()=>m(()=>import("./Aria2.html-PJ74YCVK.js"),__vite__mapDeps([15,1]))),"v-f785aee2":S(()=>m(()=>import("./index.html-nM1gbzHG.js"),__vite__mapDeps([16,1]))),"v-37da871d":S(()=>m(()=>import("./windows-applications.html-w3qnV1IQ.js"),__vite__mapDeps([17,1]))),"v-3c7a5793":S(()=>m(()=>import("./使用Pavadan和MentoHUST进行锐捷认证.html-kBFfCnyy.js"),__vite__mapDeps([18,1]))),"v-724feff4":S(()=>m(()=>import("./内网穿透折腾记录.html-T7lkRiov.js"),__vite__mapDeps([19,1]))),"v-3ba57220":S(()=>m(()=>import("./开启代理后msftconnecttest无法跳转.html-C0wF6MG9.js"),__vite__mapDeps([20,1]))),"v-462cf0b5":S(()=>m(()=>import("./服务器的折腾.html-VIwo8NQM.js"),__vite__mapDeps([21,1]))),"v-27805d44":S(()=>m(()=>import("./index.html-AsX6-gvs.js"),__vite__mapDeps([22,1]))),"v-3e8b5a96":S(()=>m(()=>import("./translating-locale-files.html-fyhQn8Fi.js"),__vite__mapDeps([23,1]))),"v-75033482":S(()=>m(()=>import("./xml-basic.html-_M3j6rQd.js"),__vite__mapDeps([24,1]))),"v-726f7072":S(()=>m(()=>import("./index.html-8Pfd_AG6.js"),__vite__mapDeps([25,1]))),"v-218ea978":S(()=>m(()=>import("./index.html-s-wMahwO.js"),__vite__mapDeps([26,1]))),"v-dfd7264e":S(()=>m(()=>import("./index.html-VQ3o3DlV.js"),__vite__mapDeps([27,1]))),"v-67bc2210":S(()=>m(()=>import("./index.html-RgTwsCTF.js"),__vite__mapDeps([28,1]))),"v-ec98fe74":S(()=>m(()=>import("./index.html-uASuo5Z7.js"),__vite__mapDeps([29,1]))),"v-279833aa":S(()=>m(()=>import("./index.html-BZHq4iHB.js"),__vite__mapDeps([30,1]))),"v-510100b8":S(()=>m(()=>import("./index.html-2MwUsXrZ.js"),__vite__mapDeps([31,1]))),"v-15d002d2":S(()=>m(()=>import("./index.html-wJG6jgxw.js"),__vite__mapDeps([32,1]))),"v-b72643ac":S(()=>m(()=>import("./index.html-pMaLkGBA.js"),__vite__mapDeps([33,1]))),"v-200d9c72":S(()=>m(()=>import("./index.html-vhDWhlKA.js"),__vite__mapDeps([34,1]))),"v-398f20bb":S(()=>m(()=>import("./index.html-bk_D9tT2.js"),__vite__mapDeps([35,1]))),"v-5f5c14e3":S(()=>m(()=>import("./index.html-1ZWZ5KQE.js"),__vite__mapDeps([36,1]))),"v-290994d6":S(()=>m(()=>import("./index.html-6pn7OJe1.js"),__vite__mapDeps([37,1]))),"v-22c29653":S(()=>m(()=>import("./index.html-lhyKpbpk.js"),__vite__mapDeps([38,1]))),"v-28c0fe97":S(()=>m(()=>import("./index.html-QyQjsQQt.js"),__vite__mapDeps([39,1]))),"v-60f15105":S(()=>m(()=>import("./index.html-kC55fK8J.js"),__vite__mapDeps([40,1]))),"v-95f27414":S(()=>m(()=>import("./index.html-lf5PKNFU.js"),__vite__mapDeps([41,1]))),"v-25eb367b":S(()=>m(()=>import("./index.html-mEZlrX25.js"),__vite__mapDeps([42,1]))),"v-03c8e5f0":S(()=>m(()=>import("./index.html-mm_FQLj7.js"),__vite__mapDeps([43,1]))),"v-f0abf42e":S(()=>m(()=>import("./index.html-uZmfIb-W.js"),__vite__mapDeps([44,1]))),"v-3ad9eb9e":S(()=>m(()=>import("./index.html-KEXZyb31.js"),__vite__mapDeps([45,1]))),"v-5606cfbc":S(()=>m(()=>import("./index.html-5bg7tJ2F.js"),__vite__mapDeps([46,1]))),"v-ea20dcf0":S(()=>m(()=>import("./index.html-_e1pHnuc.js"),__vite__mapDeps([47,1]))),"v-37263cfa":S(()=>m(()=>import("./index.html-AFHjJm8s.js"),__vite__mapDeps([48,1]))),"v-7757da05":S(()=>m(()=>import("./index.html-k2_RklJM.js"),__vite__mapDeps([49,1]))),"v-5934b528":S(()=>m(()=>import("./index.html-7I8BaSii.js"),__vite__mapDeps([50,1]))),"v-e6ee3948":S(()=>m(()=>import("./index.html-ZXtGgZrX.js"),__vite__mapDeps([51,1]))),"v-ba918472":S(()=>m(()=>import("./index.html-8Yu_nBBe.js"),__vite__mapDeps([52,1]))),"v-0d003bb2":S(()=>m(()=>import("./index.html-7m4C3hB8.js"),__vite__mapDeps([53,1]))),"v-417c1e62":S(()=>m(()=>import("./index.html-V7-_XDhs.js"),__vite__mapDeps([54,1]))),"v-5ae1580f":S(()=>m(()=>import("./index.html-igyzptdK.js"),__vite__mapDeps([55,1]))),"v-6f1e0448":S(()=>m(()=>import("./index.html-VWsX53il.js"),__vite__mapDeps([56,1]))),"v-7e76b8f8":S(()=>m(()=>import("./index.html-QCq2KaUt.js"),__vite__mapDeps([57,1]))),"v-18ed4b78":S(()=>m(()=>import("./index.html-cogQzq1C.js"),__vite__mapDeps([58,1]))),"v-46bb4806":S(()=>m(()=>import("./index.html-XjkjwiMq.js"),__vite__mapDeps([59,1]))),"v-4ebfad01":S(()=>m(()=>import("./Zotero 将引文链接到参考书目.html-dYd7MQua.js"),__vite__mapDeps([60,1]))),"v-2d2d3678":S(()=>m(()=>import("./Zotero 指北.html-0nIpCpal.js"),__vite__mapDeps([61,1]))),"v-f322b4c4":S(()=>m(()=>import("./index.html-N8V76_f2.js"),__vite__mapDeps([62,1]))),"v-52613576":S(()=>m(()=>import("./citation-formats.html-qf1EMp7P.js"),__vite__mapDeps([63,1]))),"v-3a58307c":S(()=>m(()=>import("./end.html-BDEjjGZf.js"),__vite__mapDeps([64,1]))),"v-74acd478":S(()=>m(()=>import("./the-csl-ecosystem.html-ADI1t1tr.js"),__vite__mapDeps([65,1]))),"v-1989b542":S(()=>m(()=>import("./understanding-csl-styles.html-Yx2tBXtg.js"),__vite__mapDeps([66,1]))),"v-bca6172c":S(()=>m(()=>import("./index.html-sKlVMgw1.js"),__vite__mapDeps([67,1]))),"v-3ad3b172":S(()=>m(()=>import("./file-types.html-QnaqPc_S.js"),__vite__mapDeps([68,1]))),"v-08a9b111":S(()=>m(()=>import("./locale-files-strucure.html-UmiIrXTl.js"),__vite__mapDeps([69,1]))),"v-45111e2a":S(()=>m(()=>import("./namespacing.html-xT4LQWix.js"),__vite__mapDeps([70,1]))),"v-cd2badd2":S(()=>m(()=>import("./rendering-elements.html-T-xwdnoK.js"),__vite__mapDeps([71,1]))),"v-39b473fe":S(()=>m(()=>import("./style-behavior.html-wXLDL7qS.js"),__vite__mapDeps([72,1]))),"v-bc476d32":S(()=>m(()=>import("./styles-structure.html-xcDsd5F5.js"),__vite__mapDeps([73,1]))),"v-587333a4":S(()=>m(()=>import("./whitespace-handling.html-YLKviumy.js"),__vite__mapDeps([74,1]))),"v-1f0249ff":S(()=>m(()=>import("./xml-declaration.html-3Y0z2m7m.js"),__vite__mapDeps([75,1]))),"v-2deff341":S(()=>m(()=>import("./index.html-yVLcUGJY.js"),__vite__mapDeps([76,1]))),"v-0e400be1":S(()=>m(()=>import("./index.html-8i62bqhd.js"),__vite__mapDeps([77,1]))),"v-48a4ee89":S(()=>m(()=>import("./index.html-6KfMzBnc.js"),__vite__mapDeps([78,1]))),"v-389e5394":S(()=>m(()=>import("./index.html-bWnBlUw3.js"),__vite__mapDeps([79,1]))),"v-7c106e16":S(()=>m(()=>import("./index.html-EvFZVL2w.js"),__vite__mapDeps([80,1]))),"v-b05d858c":S(()=>m(()=>import("./index.html-nmGgGxSe.js"),__vite__mapDeps([81,1]))),"v-264f8f39":S(()=>m(()=>import("./index.html-tnSEWlBr.js"),__vite__mapDeps([82,1]))),"v-ee92304c":S(()=>m(()=>import("./index.html-mVwIyCLN.js"),__vite__mapDeps([83,1]))),"v-087aa3e5":S(()=>m(()=>import("./index.html-iCVcKNm9.js"),__vite__mapDeps([84,1]))),"v-76165238":S(()=>m(()=>import("./index.html-XrnaE3eW.js"),__vite__mapDeps([85,1]))),"v-bba2610e":S(()=>m(()=>import("./index.html-5rrp5meq.js"),__vite__mapDeps([86,1]))),"v-e90de79a":S(()=>m(()=>import("./index.html-6XNTIiLr.js"),__vite__mapDeps([87,1]))),"v-8a8094b0":S(()=>m(()=>import("./index.html-i2ZTRu49.js"),__vite__mapDeps([88,1]))),"v-3de23628":S(()=>m(()=>import("./index.html-1Ib6BxE3.js"),__vite__mapDeps([89,1]))),"v-c8267792":S(()=>m(()=>import("./index.html-qf687FXZ.js"),__vite__mapDeps([90,1]))),"v-bbad892c":S(()=>m(()=>import("./index.html-1bHTdLG6.js"),__vite__mapDeps([91,1]))),"v-2599bd96":S(()=>m(()=>import("./index.html-KFqMjBbI.js"),__vite__mapDeps([92,1]))),"v-580e7486":S(()=>m(()=>import("./index.html-bsO9ILsM.js"),__vite__mapDeps([93,1]))),"v-207456c6":S(()=>m(()=>import("./index.html-7lNSjMEW.js"),__vite__mapDeps([94,1]))),"v-bba3a0be":S(()=>m(()=>import("./index.html-P7041sin.js"),__vite__mapDeps([95,1]))),"v-76a4ec21":S(()=>m(()=>import("./index.html-rQc8Nrss.js"),__vite__mapDeps([96,1]))),"v-2715d38a":S(()=>m(()=>import("./index.html-feT6lC9f.js"),__vite__mapDeps([97,1]))),"v-6c38d36e":S(()=>m(()=>import("./index.html-GPnIpFjZ.js"),__vite__mapDeps([98,1]))),"v-89e8430c":S(()=>m(()=>import("./index.html-BkcPohES.js"),__vite__mapDeps([99,1]))),"v-6ba6606f":S(()=>m(()=>import("./index.html-FSJmlPDA.js"),__vite__mapDeps([100,1]))),"v-39c6dbde":S(()=>m(()=>import("./index.html-RJYdClUd.js"),__vite__mapDeps([101,1]))),"v-14e0ef58":S(()=>m(()=>import("./poscar-convert.html-8aC_BtqK.js"),__vite__mapDeps([102,1]))),"v-818acdc8":S(()=>m(()=>import("./appendix1-categories.html-lXPk6_lt.js"),__vite__mapDeps([103,1]))),"v-7a387cd2":S(()=>m(()=>import("./appendix2-terms.html-B1TffPxv.js"),__vite__mapDeps([104,1]))),"v-bf62cb02":S(()=>m(()=>import("./appendix3-types.html-NXTDq6th.js"),__vite__mapDeps([105,1]))),"v-74326aa0":S(()=>m(()=>import("./appendix4-variables.html-FuJvXF6-.js"),__vite__mapDeps([106,1]))),"v-42793124":S(()=>m(()=>import("./appendix5-page-range-formats.html-Vip2H80I.js"),__vite__mapDeps([107,1]))),"v-3e741b5c":S(()=>m(()=>import("./appendix6-links.html-f1IFMlVG.js"),__vite__mapDeps([108,1]))),"v-3706649a":S(()=>m(()=>import("./404.html-f5N7lpKI.js"),__vite__mapDeps([109,1]))),"v-0e1a9384":S(()=>m(()=>import("./index.html-YdspMJk7.js"),__vite__mapDeps([110,1]))),"v-1bdaec70":S(()=>m(()=>import("./index.html-pz5iu5w5.js"),__vite__mapDeps([111,1]))),"v-f2c2fcf8":S(()=>m(()=>import("./index.html-kER87C2T.js"),__vite__mapDeps([112,1]))),"v-316e1a6a":S(()=>m(()=>import("./index.html-NUB0R-Ht.js"),__vite__mapDeps([113,1]))),"v-31dd63ff":S(()=>m(()=>import("./index.html-CoM9z2GD.js"),__vite__mapDeps([114,1]))),"v-458c0b5b":S(()=>m(()=>import("./index.html-4awr8kEm.js"),__vite__mapDeps([115,1]))),"v-1dd09e5c":S(()=>m(()=>import("./index.html-oqVK2nLJ.js"),__vite__mapDeps([116,1]))),"v-5bc93818":S(()=>m(()=>import("./index.html-pgLCj_kZ.js"),__vite__mapDeps([117,1]))),"v-744d024e":S(()=>m(()=>import("./index.html-279NygD0.js"),__vite__mapDeps([118,1]))),"v-e52c881c":S(()=>m(()=>import("./index.html-XDyrBeaJ.js"),__vite__mapDeps([119,1]))),"v-154dc4c4":S(()=>m(()=>import("./index.html-gg9bzuVT.js"),__vite__mapDeps([120,1]))),"v-01560935":S(()=>m(()=>import("./index.html-0NFUYqoh.js"),__vite__mapDeps([121,1]))),"v-9c48d85a":S(()=>m(()=>import("./index.html-lDCNVhP2.js"),__vite__mapDeps([122,1]))),"v-6800466b":S(()=>m(()=>import("./index.html-WoJuStdU.js"),__vite__mapDeps([123,1]))),"v-fadba3e8":S(()=>m(()=>import("./index.html-5kSJeijP.js"),__vite__mapDeps([124,1]))),"v-2e924cd2":S(()=>m(()=>import("./index.html-j4BPmuUZ.js"),__vite__mapDeps([125,1]))),"v-4b7237e6":S(()=>m(()=>import("./index.html-fVW4eUKk.js"),__vite__mapDeps([126,1]))),"v-5faa7940":S(()=>m(()=>import("./index.html-0NjsvMae.js"),__vite__mapDeps([127,1]))),"v-58dac1cf":S(()=>m(()=>import("./index.html-deE-7P-H.js"),__vite__mapDeps([128,1]))),"v-3ab30614":S(()=>m(()=>import("./index.html-ImYwWgI6.js"),__vite__mapDeps([129,1]))),"v-84d1097c":S(()=>m(()=>import("./index.html-K766vQ0K.js"),__vite__mapDeps([130,1]))),"v-7175f2e8":S(()=>m(()=>import("./index.html-TUooTaDW.js"),__vite__mapDeps([131,1]))),"v-68581533":S(()=>m(()=>import("./index.html-64j_S6LF.js"),__vite__mapDeps([132,1]))),"v-229bd4e8":S(()=>m(()=>import("./index.html-Q6-PYyTa.js"),__vite__mapDeps([133,1]))),"v-39235e3a":S(()=>m(()=>import("./index.html-Fu2dNNPA.js"),__vite__mapDeps([134,1])))};var X0=Symbol(""),qi=Symbol(""),Z0=Jn({key:"",path:"",title:"",lang:"",frontmatter:{},headers:[]}),ue=()=>{const e=ce(qi);if(!e)throw new Error("pageData() is called without provider.");return e},Ki=Symbol(""),ke=()=>{const e=ce(Ki);if(!e)throw new Error("usePageFrontmatter() is called without provider.");return e},Xi=Symbol(""),Y0=()=>{const e=ce(Xi);if(!e)throw new Error("usePageHead() is called without provider.");return e},J0=Symbol(""),Zi=Symbol(""),Yi=()=>{const e=ce(Zi);if(!e)throw new Error("usePageLang() is called without provider.");return e},Ji=Symbol(""),Q0=()=>{const e=ce(Ji);if(!e)throw new Error("usePageLayout() is called without provider.");return e},e1=Z(H0),Fo=Symbol(""),gn=()=>{const e=ce(Fo);if(!e)throw new Error("useRouteLocale() is called without provider.");return e},kt=Z(W0),Qi=()=>kt,ec=Symbol(""),Wt=()=>{const e=ce(ec);if(!e)throw new Error("useSiteLocaleData() is called without provider.");return e},n1=Symbol(""),t1="Layout",a1="NotFound",Rn=ya({resolveLayouts:e=>e.reduce((n,t)=>({...n,...t.layouts}),{}),resolvePageData:async e=>{const n=e1.value[e];return await(n==null?void 0:n())??Z0},resolvePageFrontmatter:e=>e.frontmatter,resolvePageHead:(e,n,t)=>{const a=he(n.description)?n.description:t.description,s=[...ee(n.head)?n.head:[],...t.head,["title",{},e],["meta",{name:"description",content:a}]];return j0(s)},resolvePageHeadTitle:(e,n)=>[e.title,n.title].filter(t=>!!t).join(" | "),resolvePageLang:(e,n)=>e.lang||n.lang||"en-US",resolvePageLayout:(e,n)=>{let t;if(e.path){const a=e.frontmatter.layout;he(a)?t=a:t=t1}else t=a1;return n[t]},resolveRouteLocale:(e,n)=>K0(e,n),resolveSiteLocaleData:(e,n)=>({...e,...e.locales[n]})}),fs=H({name:"ClientOnly",setup(e,n){const t=Z(!1);return _e(()=>{t.value=!0}),()=>{var a,s;return t.value?(s=(a=n.slots).default)==null?void 0:s.call(a):null}}}),nc=H({name:"Content",props:{pageKey:{type:String,required:!1,default:""}},setup(e){const n=ue(),t=w(()=>Gi[e.pageKey||n.value.key]);return()=>t.value?r(t.value):r("div","404 Not Found")}}),bn=(e={})=>e,Ae=e=>ft(e)?e:`/${ji(e)}`;const s1={};/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const yt=typeof window<"u";function o1(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ge=Object.assign;function Os(e,n){const t={};for(const a in n){const s=n[a];t[a]=mn(s)?s.map(e):e(s)}return t}const la=()=>{},mn=Array.isArray,l1=/\/$/,r1=e=>e.replace(l1,"");function Is(e,n,t="/"){let a,s={},o="",l="";const i=n.indexOf("#");let c=n.indexOf("?");return i=0&&(c=-1),c>-1&&(a=n.slice(0,c),o=n.slice(c+1,i>-1?i:n.length),s=e(o)),i>-1&&(a=a||n.slice(0,i),l=n.slice(i,n.length)),a=p1(a??n,t),{fullPath:a+(o&&"?")+o+l,path:a,query:s,hash:l}}function i1(e,n){const t=n.query?e(n.query):"";return n.path+(t&&"?")+t+(n.hash||"")}function or(e,n){return!n||!e.toLowerCase().startsWith(n.toLowerCase())?e:e.slice(n.length)||"/"}function c1(e,n,t){const a=n.matched.length-1,s=t.matched.length-1;return a>-1&&a===s&&It(n.matched[a],t.matched[s])&&tc(n.params,t.params)&&e(n.query)===e(t.query)&&n.hash===t.hash}function It(e,n){return(e.aliasOf||e)===(n.aliasOf||n)}function tc(e,n){if(Object.keys(e).length!==Object.keys(n).length)return!1;for(const t in e)if(!u1(e[t],n[t]))return!1;return!0}function u1(e,n){return mn(e)?lr(e,n):mn(n)?lr(n,e):e===n}function lr(e,n){return mn(n)?e.length===n.length&&e.every((t,a)=>t===n[a]):e.length===1&&e[0]===n}function p1(e,n){if(e.startsWith("/"))return e;if(!e)return n;const t=n.split("/"),a=e.split("/"),s=a[a.length-1];(s===".."||s===".")&&a.push("");let o=t.length-1,l,i;for(l=0;l1&&o--;else break;return t.slice(0,o).join("/")+"/"+a.slice(l-(l===a.length?1:0)).join("/")}var ma;(function(e){e.pop="pop",e.push="push"})(ma||(ma={}));var ra;(function(e){e.back="back",e.forward="forward",e.unknown=""})(ra||(ra={}));function d1(e){if(!e)if(yt){const n=document.querySelector("base");e=n&&n.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),r1(e)}const f1=/^[^#]+#/;function v1(e,n){return e.replace(f1,"#")+n}function m1(e,n){const t=document.documentElement.getBoundingClientRect(),a=e.getBoundingClientRect();return{behavior:n.behavior,left:a.left-t.left-(n.left||0),top:a.top-t.top-(n.top||0)}}const vs=()=>({left:window.pageXOffset,top:window.pageYOffset});function h1(e){let n;if("el"in e){const t=e.el,a=typeof t=="string"&&t.startsWith("#"),s=typeof t=="string"?a?document.getElementById(t.slice(1)):document.querySelector(t):t;if(!s)return;n=m1(s,e)}else n=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(n):window.scrollTo(n.left!=null?n.left:window.pageXOffset,n.top!=null?n.top:window.pageYOffset)}function rr(e,n){return(history.state?history.state.position-n:-1)+e}const no=new Map;function g1(e,n){no.set(e,n)}function b1(e){const n=no.get(e);return no.delete(e),n}let y1=()=>location.protocol+"//"+location.host;function ac(e,n){const{pathname:t,search:a,hash:s}=n,o=e.indexOf("#");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,c=s.slice(i);return c[0]!=="/"&&(c="/"+c),or(c,"")}return or(t,e)+a+s}function _1(e,n,t,a){let s=[],o=[],l=null;const i=({state:f})=>{const v=ac(e,location),b=t.value,k=n.value;let A=0;if(f){if(t.value=v,n.value=f,l&&l===b){l=null;return}A=k?f.position-k.position:0}else a(v);s.forEach(y=>{y(t.value,b,{delta:A,type:ma.pop,direction:A?A>0?ra.forward:ra.back:ra.unknown})})};function c(){l=t.value}function u(f){s.push(f);const v=()=>{const b=s.indexOf(f);b>-1&&s.splice(b,1)};return o.push(v),v}function p(){const{history:f}=window;f.state&&f.replaceState(ge({},f.state,{scroll:vs()}),"")}function d(){for(const f of o)f();o=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",p)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",p,{passive:!0}),{pauseListeners:c,listen:u,destroy:d}}function ir(e,n,t,a=!1,s=!1){return{back:e,current:n,forward:t,replaced:a,position:window.history.length,scroll:s?vs():null}}function k1(e){const{history:n,location:t}=window,a={value:ac(e,t)},s={value:n.state};s.value||o(a.value,{back:null,current:a.value,forward:null,position:n.length-1,replaced:!0,scroll:null},!0);function o(c,u,p){const d=e.indexOf("#"),f=d>-1?(t.host&&document.querySelector("base")?e:e.slice(d))+c:y1()+e+c;try{n[p?"replaceState":"pushState"](u,"",f),s.value=u}catch(v){console.error(v),t[p?"replace":"assign"](f)}}function l(c,u){const p=ge({},n.state,ir(s.value.back,c,s.value.forward,!0),u,{position:s.value.position});o(c,p,!0),a.value=c}function i(c,u){const p=ge({},s.value,n.state,{forward:c,scroll:vs()});o(p.current,p,!0);const d=ge({},ir(a.value,c,null),{position:p.position+1},u);o(c,d,!1),a.value=c}return{location:a,state:s,push:i,replace:l}}function E1(e){e=d1(e);const n=k1(e),t=_1(e,n.state,n.location,n.replace);function a(o,l=!0){l||t.pauseListeners(),history.go(o)}const s=ge({location:"",base:e,go:a,createHref:v1.bind(null,e)},n,t);return Object.defineProperty(s,"location",{enumerable:!0,get:()=>n.location.value}),Object.defineProperty(s,"state",{enumerable:!0,get:()=>n.state.value}),s}function w1(e){return typeof e=="string"||e&&typeof e=="object"}function sc(e){return typeof e=="string"||typeof e=="symbol"}const On={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},oc=Symbol("");var cr;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(cr||(cr={}));function Vt(e,n){return ge(new Error,{type:e,[oc]:!0},n)}function Ln(e,n){return e instanceof Error&&oc in e&&(n==null||!!(e.type&n))}const ur="[^/]+?",A1={sensitive:!1,strict:!1,start:!0,end:!0},P1=/[.+*?^${}()[\]/\\]/g;function S1(e,n){const t=ge({},A1,n),a=[];let s=t.start?"^":"";const o=[];for(const u of e){const p=u.length?[]:[90];t.strict&&!u.length&&(s+="/");for(let d=0;dn.length?n.length===1&&n[0]===80?1:-1:0}function T1(e,n){let t=0;const a=e.score,s=n.score;for(;t0&&n[n.length-1]<0}const L1={type:0,value:""},C1=/[a-zA-Z0-9_]/;function R1(e){if(!e)return[[]];if(e==="/")return[[L1]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function n(v){throw new Error(`ERR (${t})/"${u}": ${v}`)}let t=0,a=t;const s=[];let o;function l(){o&&s.push(o),o=[]}let i=0,c,u="",p="";function d(){u&&(t===0?o.push({type:0,value:u}):t===1||t===2||t===3?(o.length>1&&(c==="*"||c==="+")&&n(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:p,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):n("Invalid state to consume buffer"),u="")}function f(){u+=c}for(;i{l(x)}:la}function l(p){if(sc(p)){const d=a.get(p);d&&(a.delete(p),t.splice(t.indexOf(d),1),d.children.forEach(l),d.alias.forEach(l))}else{const d=t.indexOf(p);d>-1&&(t.splice(d,1),p.record.name&&a.delete(p.record.name),p.children.forEach(l),p.alias.forEach(l))}}function i(){return t}function c(p){let d=0;for(;d=0&&(p.record.path!==t[d].record.path||!lc(p,t[d]));)d++;t.splice(d,0,p),p.record.name&&!fr(p)&&a.set(p.record.name,p)}function u(p,d){let f,v={},b,k;if("name"in p&&p.name){if(f=a.get(p.name),!f)throw Vt(1,{location:p});k=f.record.name,v=ge(dr(d.params,f.keys.filter(x=>!x.optional).map(x=>x.name)),p.params&&dr(p.params,f.keys.map(x=>x.name))),b=f.stringify(v)}else if("path"in p)b=p.path,f=t.find(x=>x.re.test(b)),f&&(v=f.parse(b),k=f.record.name);else{if(f=d.name?a.get(d.name):t.find(x=>x.re.test(d.path)),!f)throw Vt(1,{location:p,currentLocation:d});k=f.record.name,v=ge({},d.params,p.params),b=f.stringify(v)}const A=[];let y=f;for(;y;)A.unshift(y.record),y=y.parent;return{name:k,path:b,params:v,matched:A,meta:M1(A)}}return e.forEach(p=>o(p)),{addRoute:o,resolve:u,removeRoute:l,getRoutes:i,getRecordMatcher:s}}function dr(e,n){const t={};for(const a of n)a in e&&(t[a]=e[a]);return t}function V1(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:D1(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function D1(e){const n={},t=e.props||!1;if("component"in e)n.default=t;else for(const a in e.components)n[a]=typeof t=="object"?t[a]:t;return n}function fr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function M1(e){return e.reduce((n,t)=>ge(n,t.meta),{})}function vr(e,n){const t={};for(const a in e)t[a]=a in n?n[a]:e[a];return t}function lc(e,n){return n.children.some(t=>t===e||lc(e,t))}const rc=/#/g,B1=/&/g,N1=/\//g,z1=/=/g,$1=/\?/g,ic=/\+/g,F1=/%5B/g,H1=/%5D/g,cc=/%5E/g,W1=/%60/g,uc=/%7B/g,U1=/%7C/g,pc=/%7D/g,j1=/%20/g;function Ho(e){return encodeURI(""+e).replace(U1,"|").replace(F1,"[").replace(H1,"]")}function G1(e){return Ho(e).replace(uc,"{").replace(pc,"}").replace(cc,"^")}function to(e){return Ho(e).replace(ic,"%2B").replace(j1,"+").replace(rc,"%23").replace(B1,"%26").replace(W1,"`").replace(uc,"{").replace(pc,"}").replace(cc,"^")}function q1(e){return to(e).replace(z1,"%3D")}function K1(e){return Ho(e).replace(rc,"%23").replace($1,"%3F")}function X1(e){return e==null?"":K1(e).replace(N1,"%2F")}function ss(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Z1(e){const n={};if(e===""||e==="?")return n;const a=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;so&&to(o)):[a&&to(a)]).forEach(o=>{o!==void 0&&(n+=(n.length?"&":"")+t,o!=null&&(n+="="+o))})}return n}function Y1(e){const n={};for(const t in e){const a=e[t];a!==void 0&&(n[t]=mn(a)?a.map(s=>s==null?null:""+s):a==null?a:""+a)}return n}const J1=Symbol(""),hr=Symbol(""),ms=Symbol(""),Wo=Symbol(""),ao=Symbol("");function Zt(){let e=[];function n(a){return e.push(a),()=>{const s=e.indexOf(a);s>-1&&e.splice(s,1)}}function t(){e=[]}return{add:n,list:()=>e.slice(),reset:t}}function jn(e,n,t,a,s){const o=a&&(a.enterCallbacks[s]=a.enterCallbacks[s]||[]);return()=>new Promise((l,i)=>{const c=d=>{d===!1?i(Vt(4,{from:t,to:n})):d instanceof Error?i(d):w1(d)?i(Vt(2,{from:n,to:d})):(o&&a.enterCallbacks[s]===o&&typeof d=="function"&&o.push(d),l())},u=e.call(a&&a.instances[s],n,t,c);let p=Promise.resolve(u);e.length<3&&(p=p.then(c)),p.catch(d=>i(d))})}function Vs(e,n,t,a){const s=[];for(const o of e)for(const l in o.components){let i=o.components[l];if(!(n!=="beforeRouteEnter"&&!o.instances[l]))if(Q1(i)){const u=(i.__vccOpts||i)[n];u&&s.push(jn(u,t,a,o,l))}else{let c=i();s.push(()=>c.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${o.path}"`));const p=o1(u)?u.default:u;o.components[l]=p;const f=(p.__vccOpts||p)[n];return f&&jn(f,t,a,o,l)()}))}}return s}function Q1(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function so(e){const n=ce(ms),t=ce(Wo),a=w(()=>n.resolve(it(e.to))),s=w(()=>{const{matched:c}=a.value,{length:u}=c,p=c[u-1],d=t.matched;if(!p||!d.length)return-1;const f=d.findIndex(It.bind(null,p));if(f>-1)return f;const v=gr(c[u-2]);return u>1&&gr(p)===v&&d[d.length-1].path!==v?d.findIndex(It.bind(null,c[u-2])):f}),o=w(()=>s.value>-1&&af(t.params,a.value.params)),l=w(()=>s.value>-1&&s.value===t.matched.length-1&&tc(t.params,a.value.params));function i(c={}){return tf(c)?n[it(e.replace)?"replace":"push"](it(e.to)).catch(la):Promise.resolve()}return{route:a,href:w(()=>a.value.href),isActive:o,isExactActive:l,navigate:i}}const ef=H({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:so,setup(e,{slots:n}){const t=ya(so(e)),{options:a}=ce(ms),s=w(()=>({[br(e.activeClass,a.linkActiveClass,"router-link-active")]:t.isActive,[br(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:t.isExactActive}));return()=>{const o=n.default&&n.default(t);return e.custom?o:r("a",{"aria-current":t.isExactActive?e.ariaCurrentValue:null,href:t.href,onClick:t.navigate,class:s.value},o)}}}),nf=ef;function tf(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const n=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(n))return}return e.preventDefault&&e.preventDefault(),!0}}function af(e,n){for(const t in n){const a=n[t],s=e[t];if(typeof a=="string"){if(a!==s)return!1}else if(!mn(s)||s.length!==a.length||a.some((o,l)=>o!==s[l]))return!1}return!0}function gr(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const br=(e,n,t)=>e??n??t,sf=H({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:n,slots:t}){const a=ce(ao),s=w(()=>e.route||a.value),o=ce(hr,0),l=w(()=>{let u=it(o);const{matched:p}=s.value;let d;for(;(d=p[u])&&!d.components;)u++;return u}),i=w(()=>s.value.matched[l.value]);rn(hr,w(()=>l.value+1)),rn(J1,i),rn(ao,s);const c=Z();return le(()=>[c.value,i.value,e.name],([u,p,d],[f,v,b])=>{p&&(p.instances[d]=u,v&&v!==p&&u&&u===f&&(p.leaveGuards.size||(p.leaveGuards=v.leaveGuards),p.updateGuards.size||(p.updateGuards=v.updateGuards))),u&&p&&(!v||!It(p,v)||!f)&&(p.enterCallbacks[d]||[]).forEach(k=>k(u))},{flush:"post"}),()=>{const u=s.value,p=e.name,d=i.value,f=d&&d.components[p];if(!f)return yr(t.default,{Component:f,route:u});const v=d.props[p],b=v?v===!0?u.params:typeof v=="function"?v(u):v:null,A=r(f,ge({},b,n,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(d.instances[p]=null)},ref:c}));return yr(t.default,{Component:A,route:u})||A}}});function yr(e,n){if(!e)return null;const t=e(n);return t.length===1?t[0]:t}const dc=sf;function of(e){const n=I1(e.routes,e),t=e.parseQuery||Z1,a=e.stringifyQuery||mr,s=e.history,o=Zt(),l=Zt(),i=Zt(),c=en(On);let u=On;yt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const p=Os.bind(null,L=>""+L),d=Os.bind(null,X1),f=Os.bind(null,ss);function v(L,U){let B,X;return sc(L)?(B=n.getRecordMatcher(L),X=U):X=L,n.addRoute(X,B)}function b(L){const U=n.getRecordMatcher(L);U&&n.removeRoute(U)}function k(){return n.getRoutes().map(L=>L.record)}function A(L){return!!n.getRecordMatcher(L)}function y(L,U){if(U=ge({},U||c.value),typeof L=="string"){const E=Is(t,L,U.path),T=n.resolve({path:E.path},U),C=s.createHref(E.fullPath);return ge(E,T,{params:f(T.params),hash:ss(E.hash),redirectedFrom:void 0,href:C})}let B;if("path"in L)B=ge({},L,{path:Is(t,L.path,U.path).path});else{const E=ge({},L.params);for(const T in E)E[T]==null&&delete E[T];B=ge({},L,{params:d(E)}),U.params=d(U.params)}const X=n.resolve(B,U),pe=L.hash||"";X.params=p(f(X.params));const h=i1(a,ge({},L,{hash:G1(pe),path:X.path})),g=s.createHref(h);return ge({fullPath:h,hash:pe,query:a===mr?Y1(L.query):L.query||{}},X,{redirectedFrom:void 0,href:g})}function x(L){return typeof L=="string"?Is(t,L,c.value.path):ge({},L)}function _(L,U){if(u!==L)return Vt(8,{from:U,to:L})}function P(L){return G(L)}function V(L){return P(ge(x(L),{replace:!0}))}function R(L){const U=L.matched[L.matched.length-1];if(U&&U.redirect){const{redirect:B}=U;let X=typeof B=="function"?B(L):B;return typeof X=="string"&&(X=X.includes("?")||X.includes("#")?X=x(X):{path:X},X.params={}),ge({query:L.query,hash:L.hash,params:"path"in X?{}:L.params},X)}}function G(L,U){const B=u=y(L),X=c.value,pe=L.state,h=L.force,g=L.replace===!0,E=R(B);if(E)return G(ge(x(E),{state:typeof E=="object"?ge({},pe,E.state):pe,force:h,replace:g}),U||B);const T=B;T.redirectedFrom=U;let C;return!h&&c1(a,X,B)&&(C=Vt(16,{to:T,from:X}),nn(X,X,!0,!1)),(C?Promise.resolve(C):z(T,X)).catch(O=>Ln(O)?Ln(O,2)?O:yn(O):q(O,T,X)).then(O=>{if(O){if(Ln(O,2))return G(ge({replace:g},x(O.to),{state:typeof O.to=="object"?ge({},pe,O.to.state):pe,force:h}),U||T)}else O=F(T,X,!0,g,pe);return Y(T,X,O),O})}function N(L,U){const B=_(L,U);return B?Promise.reject(B):Promise.resolve()}function D(L){const U=Tn.values().next().value;return U&&typeof U.runWithContext=="function"?U.runWithContext(L):L()}function z(L,U){let B;const[X,pe,h]=lf(L,U);B=Vs(X.reverse(),"beforeRouteLeave",L,U);for(const E of X)E.leaveGuards.forEach(T=>{B.push(jn(T,L,U))});const g=N.bind(null,L,U);return B.push(g),Re(B).then(()=>{B=[];for(const E of o.list())B.push(jn(E,L,U));return B.push(g),Re(B)}).then(()=>{B=Vs(pe,"beforeRouteUpdate",L,U);for(const E of pe)E.updateGuards.forEach(T=>{B.push(jn(T,L,U))});return B.push(g),Re(B)}).then(()=>{B=[];for(const E of h)if(E.beforeEnter)if(mn(E.beforeEnter))for(const T of E.beforeEnter)B.push(jn(T,L,U));else B.push(jn(E.beforeEnter,L,U));return B.push(g),Re(B)}).then(()=>(L.matched.forEach(E=>E.enterCallbacks={}),B=Vs(h,"beforeRouteEnter",L,U),B.push(g),Re(B))).then(()=>{B=[];for(const E of l.list())B.push(jn(E,L,U));return B.push(g),Re(B)}).catch(E=>Ln(E,8)?E:Promise.reject(E))}function Y(L,U,B){i.list().forEach(X=>D(()=>X(L,U,B)))}function F(L,U,B,X,pe){const h=_(L,U);if(h)return h;const g=U===On,E=yt?history.state:{};B&&(X||g?s.replace(L.fullPath,ge({scroll:g&&E&&E.scroll},pe)):s.push(L.fullPath,pe)),c.value=L,nn(L,U,B,g),yn()}let ne;function xe(){ne||(ne=s.listen((L,U,B)=>{if(!_n.listening)return;const X=y(L),pe=R(X);if(pe){G(ge(pe,{replace:!0}),X).catch(la);return}u=X;const h=c.value;yt&&g1(rr(h.fullPath,B.delta),vs()),z(X,h).catch(g=>Ln(g,12)?g:Ln(g,2)?(G(g.to,X).then(E=>{Ln(E,20)&&!B.delta&&B.type===ma.pop&&s.go(-1,!1)}).catch(la),Promise.reject()):(B.delta&&s.go(-B.delta,!1),q(g,X,h))).then(g=>{g=g||F(X,h,!1),g&&(B.delta&&!Ln(g,8)?s.go(-B.delta,!1):B.type===ma.pop&&Ln(g,20)&&s.go(-1,!1)),Y(X,h,g)}).catch(la)}))}let Pe=Zt(),j=Zt(),te;function q(L,U,B){yn(L);const X=j.list();return X.length?X.forEach(pe=>pe(L,U,B)):console.error(L),Promise.reject(L)}function Ce(){return te&&c.value!==On?Promise.resolve():new Promise((L,U)=>{Pe.add([L,U])})}function yn(L){return te||(te=!L,xe(),Pe.list().forEach(([U,B])=>L?B(L):U()),Pe.reset()),L}function nn(L,U,B,X){const{scrollBehavior:pe}=e;if(!yt||!pe)return Promise.resolve();const h=!B&&b1(rr(L.fullPath,0))||(X||!B)&&history.state&&history.state.scroll||null;return pt().then(()=>pe(L,U,h)).then(g=>g&&h1(g)).catch(g=>q(g,L,U))}const Be=L=>s.go(L);let Xe;const Tn=new Set,_n={currentRoute:c,listening:!0,addRoute:v,removeRoute:b,hasRoute:A,getRoutes:k,resolve:y,options:e,push:P,replace:V,go:Be,back:()=>Be(-1),forward:()=>Be(1),beforeEach:o.add,beforeResolve:l.add,afterEach:i.add,onError:j.add,isReady:Ce,install(L){const U=this;L.component("RouterLink",nf),L.component("RouterView",dc),L.config.globalProperties.$router=U,Object.defineProperty(L.config.globalProperties,"$route",{enumerable:!0,get:()=>it(c)}),yt&&!Xe&&c.value===On&&(Xe=!0,P(s.location).catch(pe=>{}));const B={};for(const pe in On)Object.defineProperty(B,pe,{get:()=>c.value[pe],enumerable:!0});L.provide(ms,U),L.provide(Wo,ai(B)),L.provide(ao,c);const X=L.unmount;Tn.add(L),L.unmount=function(){Tn.delete(L),Tn.size<1&&(u=On,ne&&ne(),ne=null,c.value=On,Xe=!1,te=!1),X()}}};function Re(L){return L.reduce((U,B)=>U.then(()=>D(B)),Promise.resolve())}return _n}function lf(e,n){const t=[],a=[],s=[],o=Math.max(n.matched.length,e.matched.length);for(let l=0;lIt(u,i))?a.push(i):t.push(i));const c=e.matched[l];c&&(n.matched.find(u=>It(u,c))||s.push(c))}return[t,a,s]}function $e(){return ce(ms)}function xn(){return ce(Wo)}var He=Uint8Array,Et=Uint16Array,rf=Int32Array,fc=new He([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),vc=new He([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),cf=new He([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),mc=function(e,n){for(var t=new Et(31),a=0;a<31;++a)t[a]=n+=1<>1|(we&21845)<<1;Fn=(Fn&52428)>>2|(Fn&13107)<<2,Fn=(Fn&61680)>>4|(Fn&3855)<<4,oo[we]=((Fn&65280)>>8|(Fn&255)<<8)>>1}var ia=function(e,n,t){for(var a=e.length,s=0,o=new Et(n);s>c]=u}else for(i=new Et(a),s=0;s>15-e[s]);return i},Ea=new He(288);for(var we=0;we<144;++we)Ea[we]=8;for(var we=144;we<256;++we)Ea[we]=9;for(var we=256;we<280;++we)Ea[we]=7;for(var we=280;we<288;++we)Ea[we]=8;var bc=new He(32);for(var we=0;we<32;++we)bc[we]=5;var ff=ia(Ea,9,1),vf=ia(bc,5,1),Ds=function(e){for(var n=e[0],t=1;tn&&(n=e[t]);return n},pn=function(e,n,t){var a=n/8|0;return(e[a]|e[a+1]<<8)>>(n&7)&t},Ms=function(e,n){var t=n/8|0;return(e[t]|e[t+1]<<8|e[t+2]<<16)>>(n&7)},mf=function(e){return(e+7)/8|0},Uo=function(e,n,t){return(n==null||n<0)&&(n=0),(t==null||t>e.length)&&(t=e.length),new He(e.subarray(n,t))},hf=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],sn=function(e,n,t){var a=new Error(n||hf[e]);if(a.code=e,Error.captureStackTrace&&Error.captureStackTrace(a,sn),!t)throw a;return a},gf=function(e,n,t,a){var s=e.length,o=a?a.length:0;if(!s||n.f&&!n.l)return t||new He(0);var l=!t,i=l||n.i!=2,c=n.i;l&&(t=new He(s*3));var u=function(pe){var h=t.length;if(pe>h){var g=new He(Math.max(h*2,pe));g.set(t),t=g}},p=n.f||0,d=n.p||0,f=n.b||0,v=n.l,b=n.d,k=n.m,A=n.n,y=s*8;do{if(!v){p=pn(e,d,1);var x=pn(e,d+1,3);if(d+=3,x)if(x==1)v=ff,b=vf,k=9,A=5;else if(x==2){var R=pn(e,d,31)+257,G=pn(e,d+10,15)+4,N=R+pn(e,d+5,31)+1;d+=14;for(var D=new He(N),z=new He(19),Y=0;Y>4;if(_<16)D[Y++]=_;else{var j=0,te=0;for(_==16?(te=3+pn(e,d,3),d+=2,j=D[Y-1]):_==17?(te=3+pn(e,d,7),d+=3):_==18&&(te=11+pn(e,d,127),d+=7);te--;)D[Y++]=j}}var q=D.subarray(0,R),Ce=D.subarray(R);k=Ds(q),A=Ds(Ce),v=ia(q,k,1),b=ia(Ce,A,1)}else sn(1);else{var _=mf(d)+4,P=e[_-4]|e[_-3]<<8,V=_+P;if(V>s){c&&sn(0);break}i&&u(f+P),t.set(e.subarray(_,V),f),n.b=f+=P,n.p=d=V*8,n.f=p;continue}if(d>y){c&&sn(0);break}}i&&u(f+131072);for(var yn=(1<>4;if(d+=j&15,d>y){c&&sn(0);break}if(j||sn(2),Xe<256)t[f++]=Xe;else if(Xe==256){Be=d,v=null;break}else{var Tn=Xe-254;if(Xe>264){var Y=Xe-257,_n=fc[Y];Tn=pn(e,d,(1<<_n)-1)+gc[Y],d+=_n}var Re=b[Ms(e,d)&nn],L=Re>>4;Re||sn(3),d+=Re&15;var Ce=df[L];if(L>3){var _n=vc[L];Ce+=Ms(e,d)&(1<<_n)-1,d+=_n}if(d>y){c&&sn(0);break}i&&u(f+131072);var U=f+Tn;if(f>4>7||(e[0]<<8|e[1])%31)&&sn(6,"invalid zlib data"),(e[1]>>5&1)==+!n&&sn(6,"invalid zlib data: "+(e[1]&32?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function _f(e,n){return gf(e.subarray(yf(e,n&&n.dictionary),-4),{i:2},n&&n.out,n&&n.dictionary)}var _r=typeof TextEncoder<"u"&&new TextEncoder,lo=typeof TextDecoder<"u"&&new TextDecoder,kf=0;try{lo.decode(bf,{stream:!0}),kf=1}catch{}var Ef=function(e){for(var n="",t=0;;){var a=e[t++],s=(a>127)+(a>223)+(a>239);if(t+s>e.length)return{s:n,r:Uo(e,t-1)};s?s==3?(a=((a&15)<<18|(e[t++]&63)<<12|(e[t++]&63)<<6|e[t++]&63)-65536,n+=String.fromCharCode(55296|a>>10,56320|a&1023)):s&1?n+=String.fromCharCode((a&31)<<6|e[t++]&63):n+=String.fromCharCode((a&15)<<12|(e[t++]&63)<<6|e[t++]&63):n+=String.fromCharCode(a)}};function wf(e,n){if(n){for(var t=new He(e.length),a=0;a>1)),l=0,i=function(p){o[l++]=p},a=0;ao.length){var c=new He(l+8+(s-a<<1));c.set(o),o=c}var u=e.charCodeAt(a);u<128||n?i(u):u<2048?(i(192|u>>6),i(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|e.charCodeAt(++a)&1023,i(240|u>>18),i(128|u>>12&63),i(128|u>>6&63),i(128|u&63)):(i(224|u>>12),i(128|u>>6&63),i(128|u&63))}return Uo(o,0,l)}function Af(e,n){if(n){for(var t="",a=0;a{var a;return r("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:n,"aria-label":`${e} icon`},(a=t.default)==null?void 0:a.call(t))};ve.displayName="IconBase";const yc=({size:e=48,stroke:n=4,wrapper:t=!0,height:a=2*e})=>{const s=r("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,preserveAspectRatio:"xMidYMid",viewBox:"25 25 50 50"},[r("animateTransform",{attributeName:"transform",type:"rotate",dur:"2s",keyTimes:"0;1",repeatCount:"indefinite",values:"0;360"}),r("circle",{cx:"50",cy:"50",r:"20",fill:"none",stroke:"currentColor","stroke-width":n,"stroke-linecap":"round"},[r("animate",{attributeName:"stroke-dasharray",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"1,200;90,200;1,200"}),r("animate",{attributeName:"stroke-dashoffset",dur:"1.5s",keyTimes:"0;0.5;1",repeatCount:"indefinite",values:"0;-35px;-125px"})])]);return t?r("div",{class:"loading-icon-wrapper",style:`display:flex;align-items:center;justify-content:center;height:${a}px`},s):s};yc.displayName="LoadingIcon";const _c=(e,{slots:n})=>{var t;return(t=n.default)==null?void 0:t.call(n)},jo=(e="")=>{if(e){if(typeof e=="number")return new Date(e);const n=Date.parse(e.toString());if(!Number.isNaN(n))return new Date(n)}return null},hs=(e,n)=>{let t=1;for(let a=0;a>6;return t+=t<<3,t^=t>>11,t%n},kc=Array.isArray,Pf=e=>typeof e=="function",Sf=e=>typeof e=="string";var Go=e=>/^(https?:)?\/\//.test(e),xf=/.md((\?|#).*)?$/,Tf=(e,n="/")=>!!(Go(e)||e.startsWith("/")&&!e.startsWith(n)&&!xf.test(e)),Lf=e=>Object.prototype.toString.call(e)==="[object Object]";function Cf(){const e=Z(!1);return dt()&&_e(()=>{e.value=!0}),e}function Rf(e){return Cf(),w(()=>!!e())}const Of=e=>typeof e=="function",Mn=e=>typeof e=="string",Dt=(e,n)=>Mn(e)&&e.startsWith(n),gt=(e,n)=>Mn(e)&&e.endsWith(n),Ut=Object.entries,If=Object.fromEntries,Sn=Object.keys,Vf=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),Ec=e=>{const[n,t=""]=e.split("#");return n?`${Vf(n)}${t?`#${t}`:""}`:e},kr=e=>Lf(e)&&Mn(e.name),ha=(e,n=!1)=>e?kc(e)?e.map(t=>Mn(t)?{name:t}:kr(t)?t:null).filter(t=>t!==null):Mn(e)?[{name:e}]:kr(e)?[e]:(console.error(`Expect "author" to be \`AuthorInfo[] | AuthorInfo | string[] | string ${n?"":"| false"} | undefined\`, but got`,e),[]):[],wc=(e,n)=>{if(e){if(kc(e)&&e.every(Mn))return e;if(Mn(e))return[e];console.error(`Expect ${n||"value"} to be \`string[] | string | undefined\`, but got`,e)}return[]},Ac=e=>wc(e,"category"),Pc=e=>wc(e,"tag"),wa=e=>Dt(e,"/");let Df=class{constructor(){this.messageElements={};const n="message-container",t=document.getElementById(n);t?this.containerElement=t:(this.containerElement=document.createElement("div"),this.containerElement.id=n,document.body.appendChild(this.containerElement))}pop(n,t=2e3){const a=document.createElement("div"),s=Date.now();return a.className="message move-in",a.innerHTML=n,this.containerElement.appendChild(a),this.messageElements[s]=a,t>0&&setTimeout(()=>{this.close(s)},t),s}close(n){if(n){const t=this.messageElements[n];t.classList.remove("move-in"),t.classList.add("move-out"),t.addEventListener("animationend",()=>{t.remove(),delete this.messageElements[n]})}else Sn(this.messageElements).forEach(t=>this.close(Number(t)))}destroy(){document.body.removeChild(this.containerElement)}};const Sc=/#.*$/u,Mf=e=>{const n=Sc.exec(e);return n?n[0]:""},Er=e=>decodeURI(e).replace(Sc,"").replace(/(index)?\.html$/i,"").replace(/(README|index)?\.md$/i,""),xc=(e,n)=>{if(n===void 0)return!1;const t=Er(e.path),a=Er(n),s=Mf(n);return s?s===e.hash&&(!a||t===a):t===a},wr=e=>{const n=atob(e);return Af(_f(wf(n,!0)))},Bf=e=>Go(e)?e:`https://github.com/${e}`,Tc=e=>!Go(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null,Mt=(e,...n)=>{const t=e.resolve(...n),a=t.matched[t.matched.length-1];if(!(a!=null&&a.redirect))return t;const{redirect:s}=a,o=Pf(s)?s(t):s,l=Sf(o)?{path:o}:o;return Mt(e,{hash:t.hash,query:t.query,params:t.params,...l})},Nf=e=>{var n;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((n=e.currentTarget.getAttribute("target"))!=null&&n.match(/\b_blank\b/i))))return e.preventDefault(),!0},Ne=({to:e="",class:n="",...t},{slots:a})=>{var i;const s=$e(),o=Ec(e),l=(c={})=>Nf(c)?s.push(e).catch():Promise.resolve();return r("a",{...t,class:["vp-link",n],href:Dt(o,"/")?Ae(o):o,onClick:l},(i=a.default)==null?void 0:i.call(a))};Ne.displayName="VPLink";const Lc=()=>r(ve,{name:"github"},()=>r("path",{d:"M511.957 21.333C241.024 21.333 21.333 240.981 21.333 512c0 216.832 140.544 400.725 335.574 465.664 24.49 4.395 32.256-10.07 32.256-23.083 0-11.69.256-44.245 0-85.205-136.448 29.61-164.736-64.64-164.736-64.64-22.315-56.704-54.4-71.765-54.4-71.765-44.587-30.464 3.285-29.824 3.285-29.824 49.195 3.413 75.179 50.517 75.179 50.517 43.776 75.008 114.816 53.333 142.762 40.79 4.523-31.66 17.152-53.377 31.19-65.537-108.971-12.458-223.488-54.485-223.488-242.602 0-53.547 19.114-97.323 50.517-131.67-5.035-12.33-21.93-62.293 4.779-129.834 0 0 41.258-13.184 134.912 50.346a469.803 469.803 0 0 1 122.88-16.554c41.642.213 83.626 5.632 122.88 16.554 93.653-63.488 134.784-50.346 134.784-50.346 26.752 67.541 9.898 117.504 4.864 129.834 31.402 34.347 50.474 78.123 50.474 131.67 0 188.586-114.73 230.016-224.042 242.09 17.578 15.232 33.578 44.672 33.578 90.454v135.85c0 13.142 7.936 27.606 32.854 22.87C862.25 912.597 1002.667 728.747 1002.667 512c0-271.019-219.648-490.667-490.71-490.667z"}));Lc.displayName="GitHubIcon";const Cc=()=>r(ve,{name:"gitlab"},()=>r("path",{d:"M229.333 78.688C223.52 62 199.895 62 193.895 78.688L87.958 406.438h247.5c-.188 0-106.125-327.75-106.125-327.75zM33.77 571.438c-4.875 15 .563 31.687 13.313 41.25l464.812 345L87.77 406.438zm301.5-165 176.813 551.25 176.812-551.25zm655.125 165-54-165-424.312 551.25 464.812-345c12.938-9.563 18.188-26.25 13.5-41.25zM830.27 78.688c-5.812-16.688-29.437-16.688-35.437 0l-106.125 327.75h247.5z"}));Cc.displayName="GitLabIcon";const Rc=()=>r(ve,{name:"gitee"},()=>r("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm242.97-533.34H482.39a23.7 23.7 0 0 0-23.7 23.7l-.03 59.28c0 13.08 10.59 23.7 23.7 23.7h165.96a23.7 23.7 0 0 1 23.7 23.7v11.85a71.1 71.1 0 0 1-71.1 71.1H375.71a23.7 23.7 0 0 1-23.7-23.7V423.11a71.1 71.1 0 0 1 71.1-71.1h331.8a23.7 23.7 0 0 0 23.7-23.7l.06-59.25a23.73 23.73 0 0 0-23.7-23.73H423.11a177.78 177.78 0 0 0-177.78 177.75v331.83c0 13.08 10.62 23.7 23.7 23.7h349.62a159.99 159.99 0 0 0 159.99-159.99V482.33a23.7 23.7 0 0 0-23.7-23.7z"}));Rc.displayName="GiteeIcon";const Oc=()=>r(ve,{name:"bitbucket"},()=>r("path",{d:"M575.256 490.862c6.29 47.981-52.005 85.723-92.563 61.147-45.714-20.004-45.714-92.562-1.133-113.152 38.29-23.442 93.696 7.424 93.696 52.005zm63.451-11.996c-10.276-81.152-102.29-134.839-177.152-101.156-47.433 21.138-79.433 71.424-77.129 124.562 2.853 69.705 69.157 126.866 138.862 120.576S647.3 548.571 638.708 478.83zm136.558-309.723c-25.161-33.134-67.986-38.839-105.728-45.13-106.862-17.151-216.576-17.7-323.438 1.134-35.438 5.706-75.447 11.996-97.719 43.996 36.572 34.304 88.576 39.424 135.424 45.129 84.553 10.862 171.447 11.447 256 .585 47.433-5.705 99.987-10.276 135.424-45.714zm32.585 591.433c-16.018 55.99-6.839 131.438-66.304 163.986-102.29 56.576-226.304 62.867-338.87 42.862-59.43-10.862-129.135-29.696-161.72-85.723-14.3-54.858-23.442-110.848-32.585-166.84l3.438-9.142 10.276-5.157c170.277 112.567 408.576 112.567 579.438 0 26.844 8.01 6.84 40.558 6.29 60.014zm103.424-549.157c-19.42 125.148-41.728 249.71-63.415 374.272-6.29 36.572-41.728 57.162-71.424 72.558-106.862 53.724-231.424 62.866-348.562 50.286-79.433-8.558-160.585-29.696-225.134-79.433-30.28-23.443-30.28-63.415-35.986-97.134-20.005-117.138-42.862-234.277-57.161-352.585 6.839-51.42 64.585-73.728 107.447-89.71 57.16-21.138 118.272-30.866 178.87-36.571 129.134-12.58 261.157-8.01 386.304 28.562 44.581 13.13 92.563 31.415 122.844 69.705 13.714 17.7 9.143 40.01 6.29 60.014z"}));Oc.displayName="BitbucketIcon";const Ic=()=>r(ve,{name:"source"},()=>r("path",{d:"M601.92 475.2c0 76.428-8.91 83.754-28.512 99.594-14.652 11.88-43.956 14.058-78.012 16.434-18.81 1.386-40.392 2.97-62.172 6.534-18.612 2.97-36.432 9.306-53.064 17.424V299.772c37.818-21.978 63.36-62.766 63.36-109.692 0-69.894-56.826-126.72-126.72-126.72S190.08 120.186 190.08 190.08c0 46.926 25.542 87.714 63.36 109.692v414.216c-37.818 21.978-63.36 62.766-63.36 109.692 0 69.894 56.826 126.72 126.72 126.72s126.72-56.826 126.72-126.72c0-31.086-11.286-59.598-29.7-81.576 13.266-9.504 27.522-17.226 39.996-19.206 16.038-2.574 32.868-3.762 50.688-5.148 48.312-3.366 103.158-7.326 148.896-44.55 61.182-49.698 74.25-103.158 75.24-187.902V475.2h-126.72zM316.8 126.72c34.848 0 63.36 28.512 63.36 63.36s-28.512 63.36-63.36 63.36-63.36-28.512-63.36-63.36 28.512-63.36 63.36-63.36zm0 760.32c-34.848 0-63.36-28.512-63.36-63.36s28.512-63.36 63.36-63.36 63.36 28.512 63.36 63.36-28.512 63.36-63.36 63.36zM823.68 158.4h-95.04V63.36h-126.72v95.04h-95.04v126.72h95.04v95.04h126.72v-95.04h95.04z"}));Ic.displayName="SourceIcon";const Dn=(e,n)=>{var a;const t=(a=(n==null?void 0:n._instance)||dt())==null?void 0:a.appContext.components;return t?e in t||cn(e)in t||ba(cn(e))in t:!1},zf=()=>Rf(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),$f=()=>{const e=zf();return w(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},Aa=e=>{const n=gn();return w(()=>e[n.value])};function Ar(e,n){var t;const a=en();return hi(()=>{a.value=e()},{...n,flush:(t=n==null?void 0:n.flush)!=null?t:"sync"}),Jn(a)}function qo(e,n){let t,a,s;const o=Z(!0),l=()=>{o.value=!0,s()};le(e,l,{flush:"sync"});const i=typeof n=="function"?n:n.get,c=typeof n=="function"?void 0:n.set,u=ii((p,d)=>(a=p,s=d,{get(){return o.value&&(t=i(),o.value=!1),a(),t},set(f){c==null||c(f)}}));return Object.isExtensible(u)&&(u.trigger=l),u}function Qn(e){return Gr()?(Sp(e),!0):!1}function Ge(e){return typeof e=="function"?e():it(e)}const Pa=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ff=Object.prototype.toString,Hf=e=>Ff.call(e)==="[object Object]",Yn=()=>{},ro=Wf();function Wf(){var e;return Pa&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function Ko(e,n){function t(...a){return new Promise((s,o)=>{Promise.resolve(e(()=>n.apply(this,a),{fn:n,thisArg:this,args:a})).then(s).catch(o)})}return t}const Vc=e=>e();function Uf(e,n={}){let t,a,s=Yn;const o=i=>{clearTimeout(i),s(),s=Yn};return i=>{const c=Ge(e),u=Ge(n.maxWait);return t&&o(t),c<=0||u!==void 0&&u<=0?(a&&(o(a),a=null),Promise.resolve(i())):new Promise((p,d)=>{s=n.rejectOnCancel?d:p,u&&!a&&(a=setTimeout(()=>{t&&o(t),a=null,p(i())},u)),t=setTimeout(()=>{a&&o(a),a=null,p(i())},c)})}}function jf(e,n=!0,t=!0,a=!1){let s=0,o,l=!0,i=Yn,c;const u=()=>{o&&(clearTimeout(o),o=void 0,i(),i=Yn)};return d=>{const f=Ge(e),v=Date.now()-s,b=()=>c=d();return u(),f<=0?(s=Date.now(),b()):(v>f&&(t||!l)?(s=Date.now(),b()):n&&(c=new Promise((k,A)=>{i=a?A:k,o=setTimeout(()=>{s=Date.now(),l=!0,k(b()),u()},Math.max(0,f-v))})),!t&&!o&&(o=setTimeout(()=>l=!0,f)),l=!1,c)}}function Gf(e=Vc){const n=Z(!0);function t(){n.value=!1}function a(){n.value=!0}const s=(...o)=>{n.value&&e(...o)};return{isActive:Jn(n),pause:t,resume:a,eventFilter:s}}function qf(e){let n;function t(){return n||(n=e()),n}return t.reset=async()=>{const a=n;n=void 0,a&&await a},t}function Kf(...e){if(e.length!==1)return Ft(...e);const n=e[0];return typeof n=="function"?Jn(ii(()=>({get:n,set:Yn}))):Z(n)}function Xf(e,n=200,t={}){return Ko(Uf(n,t),e)}function Zf(e,n=200,t=!1,a=!0,s=!1){return Ko(jf(n,t,a,s),e)}function Yf(e,n,t={}){const{eventFilter:a=Vc,...s}=t;return le(e,Ko(a,n),s)}function Jf(e,n,t={}){const{eventFilter:a,...s}=t,{eventFilter:o,pause:l,resume:i,isActive:c}=Gf(a);return{stop:Yf(e,n,{...s,eventFilter:o}),pause:l,resume:i,isActive:c}}function gs(e,n=!0){dt()?_e(e):n?e():pt(e)}function Qf(e,n,t={}){const{immediate:a=!0}=t,s=Z(!1);let o=null;function l(){o&&(clearTimeout(o),o=null)}function i(){s.value=!1,l()}function c(...u){l(),s.value=!0,o=setTimeout(()=>{s.value=!1,o=null,e(...u)},Ge(n))}return a&&(s.value=!0,Pa&&c()),Qn(i),{isPending:Jn(s),start:c,stop:i}}function Pr(e=!1,n={}){const{truthyValue:t=!0,falsyValue:a=!1}=n,s=De(e),o=Z(e);function l(i){if(arguments.length)return o.value=i,o.value;{const c=Ge(t);return o.value=o.value===c?Ge(a):c,o.value}}return s?l:[o,l]}function je(e){var n;const t=Ge(e);return(n=t==null?void 0:t.$el)!=null?n:t}const hn=Pa?window:void 0,Dc=Pa?window.document:void 0,Mc=Pa?window.navigator:void 0;function Le(...e){let n,t,a,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([t,a,s]=e,n=hn):[n,t,a,s]=e,!n)return Yn;Array.isArray(t)||(t=[t]),Array.isArray(a)||(a=[a]);const o=[],l=()=>{o.forEach(p=>p()),o.length=0},i=(p,d,f,v)=>(p.addEventListener(d,f,v),()=>p.removeEventListener(d,f,v)),c=le(()=>[je(n),Ge(s)],([p,d])=>{if(l(),!p)return;const f=Hf(d)?{...d}:d;o.push(...t.flatMap(v=>a.map(b=>i(p,v,b,f))))},{immediate:!0,flush:"post"}),u=()=>{c(),l()};return Qn(u),u}let Sr=!1;function ev(e,n,t={}){const{window:a=hn,ignore:s=[],capture:o=!0,detectIframe:l=!1}=t;if(!a)return;ro&&!Sr&&(Sr=!0,Array.from(a.document.body.children).forEach(f=>f.addEventListener("click",Yn)),a.document.documentElement.addEventListener("click",Yn));let i=!0;const c=f=>s.some(v=>{if(typeof v=="string")return Array.from(a.document.querySelectorAll(v)).some(b=>b===f.target||f.composedPath().includes(b));{const b=je(v);return b&&(f.target===b||f.composedPath().includes(b))}}),p=[Le(a,"click",f=>{const v=je(e);if(!(!v||v===f.target||f.composedPath().includes(v))){if(f.detail===0&&(i=!c(f)),!i){i=!0;return}n(f)}},{passive:!0,capture:o}),Le(a,"pointerdown",f=>{const v=je(e);i=!c(f)&&!!(v&&!f.composedPath().includes(v))},{passive:!0}),l&&Le(a,"blur",f=>{setTimeout(()=>{var v;const b=je(e);((v=a.document.activeElement)==null?void 0:v.tagName)==="IFRAME"&&!(b!=null&&b.contains(a.document.activeElement))&&n(f)},0)})].filter(Boolean);return()=>p.forEach(f=>f())}function nv(){const e=Z(!1);return dt()&&_e(()=>{e.value=!0}),e}function jt(e){const n=nv();return w(()=>(n.value,!!e()))}function Bc(e,n={}){const{window:t=hn}=n,a=jt(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let s;const o=Z(!1),l=u=>{o.value=u.matches},i=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",l):s.removeListener(l))},c=hi(()=>{a.value&&(i(),s=t.matchMedia(Ge(e)),"addEventListener"in s?s.addEventListener("change",l):s.addListener(l),o.value=s.matches)});return Qn(()=>{c(),i(),s=void 0}),o}function xr(e,n={}){const{controls:t=!1,navigator:a=Mc}=n,s=jt(()=>a&&"permissions"in a);let o;const l=typeof e=="string"?{name:e}:e,i=Z(),c=()=>{o&&(i.value=o.state)},u=qf(async()=>{if(s.value){if(!o)try{o=await a.permissions.query(l),Le(o,"change",c),c()}catch{i.value="prompt"}return o}});return u(),t?{state:i,isSupported:s,query:u}:i}function tv(e={}){const{navigator:n=Mc,read:t=!1,source:a,copiedDuring:s=1500,legacy:o=!1}=e,l=jt(()=>n&&"clipboard"in n),i=xr("clipboard-read"),c=xr("clipboard-write"),u=w(()=>l.value||o),p=Z(""),d=Z(!1),f=Qf(()=>d.value=!1,s);function v(){l.value&&i.value!=="denied"?n.clipboard.readText().then(y=>{p.value=y}):p.value=A()}u.value&&t&&Le(["copy","cut"],v);async function b(y=Ge(a)){u.value&&y!=null&&(l.value&&c.value!=="denied"?await n.clipboard.writeText(y):k(y),p.value=y,d.value=!0,f.start())}function k(y){const x=document.createElement("textarea");x.value=y??"",x.style.position="absolute",x.style.opacity="0",document.body.appendChild(x),x.select(),document.execCommand("copy"),x.remove()}function A(){var y,x,_;return(_=(x=(y=document==null?void 0:document.getSelection)==null?void 0:y.call(document))==null?void 0:x.toString())!=null?_:""}return{isSupported:u,text:p,copied:d,copy:b}}const Ha=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Wa="__vueuse_ssr_handlers__",av=sv();function sv(){return Wa in Ha||(Ha[Wa]=Ha[Wa]||{}),Ha[Wa]}function ov(e,n){return av[e]||n}function lv(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const rv={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Tr="vueuse-storage";function Nc(e,n,t,a={}){var s;const{flush:o="pre",deep:l=!0,listenToStorageChanges:i=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:p,window:d=hn,eventFilter:f,onError:v=D=>{console.error(D)},initOnMounted:b}=a,k=(p?en:Z)(typeof n=="function"?n():n);if(!t)try{t=ov("getDefaultStorage",()=>{var D;return(D=hn)==null?void 0:D.localStorage})()}catch(D){v(D)}if(!t)return k;const A=Ge(n),y=lv(A),x=(s=a.serializer)!=null?s:rv[y],{pause:_,resume:P}=Jf(k,()=>V(k.value),{flush:o,deep:l,eventFilter:f});return d&&i&&gs(()=>{Le(d,"storage",N),Le(d,Tr,G),b&&N()}),b||N(),k;function V(D){try{if(D==null)t.removeItem(e);else{const z=x.write(D),Y=t.getItem(e);Y!==z&&(t.setItem(e,z),d&&d.dispatchEvent(new CustomEvent(Tr,{detail:{key:e,oldValue:Y,newValue:z,storageArea:t}})))}}catch(z){v(z)}}function R(D){const z=D?D.newValue:t.getItem(e);if(z==null)return c&&A!==null&&t.setItem(e,x.write(A)),A;if(!D&&u){const Y=x.read(z);return typeof u=="function"?u(Y,A):y==="object"&&!Array.isArray(Y)?{...A,...Y}:Y}else return typeof z!="string"?z:x.read(z)}function G(D){N(D.detail)}function N(D){if(!(D&&D.storageArea!==t)){if(D&&D.key==null){k.value=A;return}if(!(D&&D.key!==e)){_();try{(D==null?void 0:D.newValue)!==x.write(k.value)&&(k.value=R(D))}catch(z){v(z)}finally{D?pt(P):P()}}}}}function iv(e){return Bc("(prefers-color-scheme: dark)",e)}function cv(e,n,t={}){const{window:a=hn,...s}=t;let o;const l=jt(()=>a&&"MutationObserver"in a),i=()=>{o&&(o.disconnect(),o=void 0)},c=le(()=>je(e),d=>{i(),l.value&&a&&d&&(o=new MutationObserver(n),o.observe(d,s))},{immediate:!0}),u=()=>o==null?void 0:o.takeRecords(),p=()=>{i(),c()};return Qn(p),{isSupported:l,stop:p,takeRecords:u}}function uv(e,n,t={}){const{window:a=hn,...s}=t;let o;const l=jt(()=>a&&"ResizeObserver"in a),i=()=>{o&&(o.disconnect(),o=void 0)},c=w(()=>Array.isArray(e)?e.map(d=>je(d)):[je(e)]),u=le(c,d=>{if(i(),l.value&&a){o=new ResizeObserver(n);for(const f of d)f&&o.observe(f,s)}},{immediate:!0,flush:"post",deep:!0}),p=()=>{i(),u()};return Qn(p),{isSupported:l,stop:p}}function pv(e,n={width:0,height:0},t={}){const{window:a=hn,box:s="content-box"}=t,o=w(()=>{var d,f;return(f=(d=je(e))==null?void 0:d.namespaceURI)==null?void 0:f.includes("svg")}),l=Z(n.width),i=Z(n.height),{stop:c}=uv(e,([d])=>{const f=s==="border-box"?d.borderBoxSize:s==="content-box"?d.contentBoxSize:d.devicePixelContentBoxSize;if(a&&o.value){const v=je(e);if(v){const b=a.getComputedStyle(v);l.value=Number.parseFloat(b.width),i.value=Number.parseFloat(b.height)}}else if(f){const v=Array.isArray(f)?f:[f];l.value=v.reduce((b,{inlineSize:k})=>b+k,0),i.value=v.reduce((b,{blockSize:k})=>b+k,0)}else l.value=d.contentRect.width,i.value=d.contentRect.height},t);gs(()=>{const d=je(e);d&&(l.value="offsetWidth"in d?d.offsetWidth:n.width,i.value="offsetHeight"in d?d.offsetHeight:n.height)});const u=le(()=>je(e),d=>{l.value=d?n.width:0,i.value=d?n.height:0});function p(){c(),u()}return{width:l,height:i,stop:p}}const Lr=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Xo(e,n={}){const{document:t=Dc,autoExit:a=!1}=n,s=w(()=>{var y;return(y=je(e))!=null?y:t==null?void 0:t.querySelector("html")}),o=Z(!1),l=w(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(y=>t&&y in t||s.value&&y in s.value)),i=w(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(y=>t&&y in t||s.value&&y in s.value)),c=w(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(y=>t&&y in t||s.value&&y in s.value)),u=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(y=>t&&y in t),p=jt(()=>s.value&&t&&l.value!==void 0&&i.value!==void 0&&c.value!==void 0),d=()=>u?(t==null?void 0:t[u])===s.value:!1,f=()=>{if(c.value){if(t&&t[c.value]!=null)return t[c.value];{const y=s.value;if((y==null?void 0:y[c.value])!=null)return!!y[c.value]}}return!1};async function v(){if(!(!p.value||!o.value)){if(i.value)if((t==null?void 0:t[i.value])!=null)await t[i.value]();else{const y=s.value;(y==null?void 0:y[i.value])!=null&&await y[i.value]()}o.value=!1}}async function b(){if(!p.value||o.value)return;f()&&await v();const y=s.value;l.value&&(y==null?void 0:y[l.value])!=null&&(await y[l.value](),o.value=!0)}async function k(){await(o.value?v():b())}const A=()=>{const y=f();(!y||y&&d())&&(o.value=y)};return Le(t,Lr,A,!1),Le(()=>je(s),Lr,A,!1),a&&Qn(v),{isSupported:p,isFullscreen:o,enter:b,exit:v,toggle:k}}function Bs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function r3(e,n,t={}){const{window:a=hn}=t;return Nc(e,n,a==null?void 0:a.localStorage,t)}function zc(e){const n=window.getComputedStyle(e);if(n.overflowX==="scroll"||n.overflowY==="scroll"||n.overflowX==="auto"&&e.clientWidth1?!0:(n.preventDefault&&n.preventDefault(),!1)}const Ua=new WeakMap;function Zo(e,n=!1){const t=Z(n);let a=null,s;le(Kf(e),i=>{const c=Bs(Ge(i));if(c){const u=c;Ua.get(u)||Ua.set(u,s),t.value&&(u.style.overflow="hidden")}},{immediate:!0});const o=()=>{const i=Bs(Ge(e));!i||t.value||(ro&&(a=Le(i,"touchmove",c=>{dv(c)},{passive:!1})),i.style.overflow="hidden",t.value=!0)},l=()=>{var i;const c=Bs(Ge(e));!c||!t.value||(ro&&(a==null||a()),c.style.overflow=(i=Ua.get(c))!=null?i:"",Ua.delete(c),t.value=!1)};return Qn(l),w({get(){return t.value},set(i){i?o():l()}})}let fv=0;function vv(e,n={}){const t=Z(!1),{document:a=Dc,immediate:s=!0,manual:o=!1,id:l=`vueuse_styletag_${++fv}`}=n,i=Z(e);let c=()=>{};const u=()=>{if(!a)return;const d=a.getElementById(l)||a.createElement("style");d.isConnected||(d.id=l,n.media&&(d.media=n.media),a.head.appendChild(d)),!t.value&&(c=le(i,f=>{d.textContent=f},{immediate:!0}),t.value=!0)},p=()=>{!a||!t.value||(c(),a.head.removeChild(a.getElementById(l)),t.value=!1)};return s&&!o&&gs(u),o||Qn(p),{id:l,css:i,unload:p,load:u,isLoaded:Jn(t)}}function mv(e={}){const{window:n=hn,behavior:t="auto"}=e;if(!n)return{x:Z(0),y:Z(0)};const a=Z(n.scrollX),s=Z(n.scrollY),o=w({get(){return a.value},set(i){scrollTo({left:i,behavior:t})}}),l=w({get(){return s.value},set(i){scrollTo({top:i,behavior:t})}});return Le(n,"scroll",()=>{a.value=n.scrollX,s.value=n.scrollY},{capture:!1,passive:!0}),{x:o,y:l}}function hv(e={}){const{window:n=hn,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:a=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,l=Z(t),i=Z(a),c=()=>{n&&(o?(l.value=n.innerWidth,i.value=n.innerHeight):(l.value=n.document.documentElement.clientWidth,i.value=n.document.documentElement.clientHeight))};if(c(),gs(c),Le("resize",c,{passive:!0}),s){const u=Bc("(orientation: portrait)");le(u,()=>c())}return{width:l,height:i}}const $c=({type:e="info",text:n="",vertical:t,color:a},{slots:s})=>{var o;return r("span",{class:["vp-badge",e,{diy:a}],style:{verticalAlign:t??!1,backgroundColor:a??!1}},((o=s.default)==null?void 0:o.call(s))||n)};$c.displayName="Badge";var gv=H({name:"FontIcon",props:{icon:{type:String,default:""},color:{type:String,default:""},size:{type:[String,Number],default:""}},setup(e){const n=w(()=>{const a=["font-icon icon"],s=`iconfont icon-${e.icon}`;return a.push(s),a}),t=w(()=>{const a={};return e.color&&(a.color=e.color),e.size&&(a["font-size"]=Number.isNaN(Number(e.size))?e.size:`${e.size}px`),Sn(a).length?a:null});return()=>e.icon?r("span",{key:e.icon,class:n.value,style:t.value}):null}});const Fc=()=>r(ve,{name:"back-to-top"},()=>[r("path",{d:"M512 843.2c-36.2 0-66.4-13.6-85.8-21.8-10.8-4.6-22.6 3.6-21.8 15.2l7 102c.4 6.2 7.6 9.4 12.6 5.6l29-22c3.6-2.8 9-1.8 11.4 2l41 64.2c3 4.8 10.2 4.8 13.2 0l41-64.2c2.4-3.8 7.8-4.8 11.4-2l29 22c5 3.8 12.2.6 12.6-5.6l7-102c.8-11.6-11-20-21.8-15.2-19.6 8.2-49.6 21.8-85.8 21.8z"}),r("path",{d:"m795.4 586.2-96-98.2C699.4 172 513 32 513 32S324.8 172 324.8 488l-96 98.2c-3.6 3.6-5.2 9-4.4 14.2L261.2 824c1.8 11.4 14.2 17 23.6 10.8L419 744s41.4 40 94.2 40c52.8 0 92.2-40 92.2-40l134.2 90.8c9.2 6.2 21.6.6 23.6-10.8l37-223.8c.4-5.2-1.2-10.4-4.8-14zM513 384c-34 0-61.4-28.6-61.4-64s27.6-64 61.4-64c34 0 61.4 28.6 61.4 64S547 384 513 384z"})]);Fc.displayName="BackToTopIcon";var bv={"/":{backToTop:"返回顶部"}},yv=H({name:"BackToTop",props:{threshold:{type:Number,default:100},noProgress:Boolean},setup(e){const n=ke(),t=Aa(bv),a=en(),{height:s}=pv(a),{height:o}=hv(),{y:l}=mv(),i=w(()=>n.value.backToTop!==!1&&l.value>e.threshold),c=w(()=>l.value/(s.value-o.value)*100);return _e(()=>{a.value=document.body}),()=>r(Zn,{name:"fade"},()=>i.value?r("button",{type:"button",class:"vp-back-to-top-button","aria-label":t.value.backToTop,"data-balloon-pos":"left",onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[e.noProgress?null:r("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":c.value},r("svg",r("circle",{cx:"50%",cy:"50%",style:{"stroke-dasharray":`calc(${Math.PI*c.value}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`}}))),r(Fc)]):null)}});const _v=bn({enhance:({app:e})=>{Dn("Badge")||e.component("Badge",$c),Dn("FontIcon")||e.component("FontIcon",gv)},setup:()=>{vv(`@import url("//at.alicdn.com/t/font_2410206_vuzkjonf4s9.css"); +`)},rootComponents:[()=>r(yv,{})]});function kv(e,n,t){var a,s,o;n===void 0&&(n=50),t===void 0&&(t={});var l=(a=t.isImmediate)!=null&&a,i=(s=t.callback)!=null&&s,c=t.maxWait,u=Date.now(),p=[];function d(){if(c!==void 0){var v=Date.now()-u;if(v+n>=c)return c-v}return n}var f=function(){var v=[].slice.call(arguments),b=this;return new Promise(function(k,A){var y=l&&o===void 0;if(o!==void 0&&clearTimeout(o),o=setTimeout(function(){if(o=void 0,u=Date.now(),!l){var _=e.apply(b,v);i&&i(_),p.forEach(function(P){return(0,P.resolve)(_)}),p=[]}},d()),y){var x=e.apply(b,v);return i&&i(x),k(x)}p.push({resolve:k,reject:A})})};return f.cancel=function(v){o!==void 0&&clearTimeout(o),p.forEach(function(b){return(0,b.reject)(v)}),p=[]},f}const Ev=({headerLinkSelector:e,headerAnchorSelector:n,delay:t,offset:a=5})=>{const s=$e(),l=kv(()=>{var k,A;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)f.some(x=>x.hash===y.hash));for(let y=0;y=(((k=x.parentElement)==null?void 0:k.offsetTop)??0)-a,V=!_||i<(((A=_.parentElement)==null?void 0:A.offsetTop)??0)-a;if(!(P&&V))continue;const G=decodeURIComponent(s.currentRoute.value.hash),N=decodeURIComponent(x.hash);if(G===N)return;if(d){for(let D=y+1;D{window.addEventListener("scroll",l)}),Io(()=>{window.removeEventListener("scroll",l)})},Cr=async(e,n)=>{const{scrollBehavior:t}=e.options;e.options.scrollBehavior=void 0,await e.replace({query:e.currentRoute.value.query,hash:n}).finally(()=>e.options.scrollBehavior=t)},wv=".vp-sidebar-link, .toc-link",Av=".header-anchor",Pv=200,Sv=5,xv=bn({setup(){Ev({headerLinkSelector:wv,headerAnchorSelector:Av,delay:Pv,offset:Sv})}});let Hc=()=>null;const Wc=Symbol(""),Tv=e=>{Hc=e},Lv=()=>ce(Wc),Cv=e=>{e.provide(Wc,Hc)};var Rv={"/":{title:"目录",empty:"暂无目录"}},Ov=H({name:"AutoCatalog",props:{base:{type:String,default:""},level:{type:Number,default:3},index:Boolean,hideHeading:Boolean},setup(e){const n=Lv(),t=Aa(Rv),a=ue(),s=$e(),o=Qi(),l=d=>d?r(n,{icon:d}):null,i=({title:d,path:f,icon:v,class:b})=>r(Ne,{class:b,to:f},()=>[l(v),d||f]),c=d=>{const f=d.I;return typeof f>"u"||f},u=()=>{const d=e.base||a.value.path.replace(/\/[^/]+$/,"/"),f=s.getRoutes(),v=[];return f.filter(({meta:b,path:k})=>{if(!Dt(k,d)||k===d)return!1;if(d==="/"){const A=Sn(o.value.locales).filter(y=>y!=="/");if(k==="/404.html"||A.some(y=>Dt(k,y)))return!1}return(gt(k,".html")&&!gt(k,"/index.html")||gt(k,"/"))&&c(b)}).map(({path:b,meta:k})=>{const A=b.substring(d.length).split("/").length;return{title:k.t||"",icon:k.i||null,base:b.replace(/\/[^/]+\/?$/,"/"),order:k.O||null,level:gt(b,"/")?A-1:A,path:b}}).filter(({title:b,level:k})=>b&&k<=e.level).sort(({title:b,level:k,path:A,order:y},{title:x,level:_,path:P,order:V})=>k-_||(gt(A,"/index.html")?-1:gt(P,"/index.html")?1:y===null?V===null?b.localeCompare(x):V:V===null?y:y>0?V>0?y-V:-1:V<0?y-V:1)).forEach(b=>{var y;const{base:k,level:A}=b;switch(A){case 1:v.push(b);break;case 2:{const x=v.find(_=>_.path===k);x&&(x.children??(x.children=[])).push(b);break}default:{const x=v.find(_=>_.path===k.replace(/\/[^/]+\/$/,"/"));if(x){const _=(y=x.children)==null?void 0:y.find(P=>P.path===k);_&&(_.children??(_.children=[])).push(b)}}}}),v},p=w(()=>u());return()=>{const d=p.value.some(f=>f.children);return r("div",{class:["vp-catalog-wrapper",{index:e.index}]},[e.hideHeading?null:r("h2",{class:"vp-catalog-main-title"},t.value.title),p.value.length?r(e.index?"ol":"ul",{class:["vp-catalogs",{deep:d}]},p.value.map(({children:f=[],icon:v,path:b,title:k})=>{const A=i({title:k,path:b,icon:v,class:"vp-catalog-title"});return r("li",{class:"vp-catalog"},d?[r("h3",{id:k,class:["vp-catalog-child-title",{"has-children":f.length}]},[r("a",{href:`#${k}`,class:"header-anchor","aria-hidden":!0},"#"),A]),f.length?r(e.index?"ol":"ul",{class:"vp-child-catalogs"},f.map(({children:y=[],icon:x,path:_,title:P})=>r("li",{class:"vp-child-catalog"},[r("div",{class:["vp-catalog-sub-title",{"has-children":y.length}]},[r("a",{href:`#${P}`,class:"header-anchor"},"#"),r(i,{title:P,path:_,icon:x,class:"vp-catalog-title"})]),y.length?r(e.index?"ol":"div",{class:e.index?"vp-sub-catalogs":"vp-sub-catalogs-wrapper"},y.map(({icon:V,path:R,title:G})=>{const N=r(i,{title:G,path:R,icon:V,class:""});return e.index?r("li",{class:"vp-sub-catalog"},N):r(i,{title:G,path:R,icon:V,class:"vp-sub-catalog-link"})})):null]))):null]:r("div",{class:"vp-catalog-child-title"},A))})):r("p",{class:"vp-empty-catalog"},t.value.empty)])}}}),Iv=bn({enhance:({app:e})=>{Cv(e),Dn("AutoCatalog",e)||e.component("AutoCatalog",Ov)}});const Vv=r("svg",{class:"external-link-icon",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"},[r("path",{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}),r("polygon",{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"})]),Uc=H({name:"ExternalLinkIcon",props:{locales:{type:Object,required:!1,default:()=>({})}},setup(e){const n=gn(),t=w(()=>e.locales[n.value]??{openInNewWindow:"open in new window"});return()=>r("span",[Vv,r("span",{class:"external-link-icon-sr-only"},t.value.openInNewWindow)])}});var Dv={};const Mv=Dv,Bv=bn({enhance({app:e}){e.component("ExternalLinkIcon",r(Uc,{locales:Mv}))}});/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const de={settings:{minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
'},status:null,set:e=>{const n=de.isStarted();e=Ns(e,de.settings.minimum,1),de.status=e===1?null:e;const t=de.render(!n),a=t.querySelector(de.settings.barSelector),s=de.settings.speed,o=de.settings.easing;return t.offsetWidth,Nv(l=>{ja(a,{transform:"translate3d("+Rr(e)+"%,0,0)",transition:"all "+s+"ms "+o}),e===1?(ja(t,{transition:"none",opacity:"1"}),t.offsetWidth,setTimeout(function(){ja(t,{transition:"all "+s+"ms linear",opacity:"0"}),setTimeout(function(){de.remove(),l()},s)},s)):setTimeout(()=>l(),s)}),de},isStarted:()=>typeof de.status=="number",start:()=>{de.status||de.set(0);const e=()=>{setTimeout(()=>{de.status&&(de.trickle(),e())},de.settings.trickleSpeed)};return de.settings.trickle&&e(),de},done:e=>!e&&!de.status?de:de.inc(.3+.5*Math.random()).set(1),inc:e=>{let n=de.status;return n?(typeof e!="number"&&(e=(1-n)*Ns(Math.random()*n,.1,.95)),n=Ns(n+e,0,.994),de.set(n)):de.start()},trickle:()=>de.inc(Math.random()*de.settings.trickleRate),render:e=>{if(de.isRendered())return document.getElementById("nprogress");Or(document.documentElement,"nprogress-busy");const n=document.createElement("div");n.id="nprogress",n.innerHTML=de.settings.template;const t=n.querySelector(de.settings.barSelector),a=e?"-100":Rr(de.status||0),s=document.querySelector(de.settings.parent);return ja(t,{transition:"all 0 linear",transform:"translate3d("+a+"%,0,0)"}),s!==document.body&&Or(s,"nprogress-custom-parent"),s==null||s.appendChild(n),n},remove:()=>{Ir(document.documentElement,"nprogress-busy"),Ir(document.querySelector(de.settings.parent),"nprogress-custom-parent");const e=document.getElementById("nprogress");e&&zv(e)},isRendered:()=>!!document.getElementById("nprogress")},Ns=(e,n,t)=>et?t:e,Rr=e=>(-1+e)*100,Nv=function(){const e=[];function n(){const t=e.shift();t&&t(n)}return function(t){e.push(t),e.length===1&&n()}}(),ja=function(){const e=["Webkit","O","Moz","ms"],n={};function t(l){return l.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,function(i,c){return c.toUpperCase()})}function a(l){const i=document.body.style;if(l in i)return l;let c=e.length;const u=l.charAt(0).toUpperCase()+l.slice(1);let p;for(;c--;)if(p=e[c]+u,p in i)return p;return l}function s(l){return l=t(l),n[l]??(n[l]=a(l))}function o(l,i,c){i=s(i),l.style[i]=c}return function(l,i){for(const c in i){const u=i[c];u!==void 0&&Object.prototype.hasOwnProperty.call(i,c)&&o(l,c,u)}}}(),jc=(e,n)=>(typeof e=="string"?e:Yo(e)).indexOf(" "+n+" ")>=0,Or=(e,n)=>{const t=Yo(e),a=t+n;jc(t,n)||(e.className=a.substring(1))},Ir=(e,n)=>{const t=Yo(e);if(!jc(e,n))return;const a=t.replace(" "+n+" "," ");e.className=a.substring(1,a.length-1)},Yo=e=>(" "+(e.className||"")+" ").replace(/\s+/gi," "),zv=e=>{e&&e.parentNode&&e.parentNode.removeChild(e)},$v=()=>{_e(()=>{const e=$e(),n=new Set;n.add(e.currentRoute.value.path),e.beforeEach(t=>{n.has(t.path)||de.start()}),e.afterEach(t=>{n.add(t.path),de.done()})})},Fv=bn({setup(){$v()}}),Hv=JSON.parse(`{"encrypt":{},"author":{"name":"Northword","url":"https://northword.cn"},"logo":"/assets/img/logo.png","repo":"https://github.com/northword/wiki","repoDisplay":true,"docsDir":"src","displayFooter":true,"footer":"晋ICP备18010037号-1","copyright":"Copyright © 2018-Present Northword","blog":{"articlePerPage":10},"locales":{"/":{"lang":"zh-CN","navbarLocales":{"langName":"简体中文","selectLangAriaLabel":"选择语言"},"metaLocales":{"author":"作者","date":"写作日期","origin":"原创","views":"访问量","category":"分类","tag":"标签","readingTime":"阅读时间","words":"字数","toc":"此页内容","prev":"上一页","next":"下一页","lastUpdated":"上次编辑于","contributors":"贡献者","editLink":"编辑此页","print":"打印"},"blogLocales":{"article":"文章","articleList":"文章列表","category":"分类","tag":"标签","timeline":"时间轴","timelineTitle":"昨日不在","all":"全部","intro":"个人介绍","star":"收藏","empty":"$text 为空"},"paginationLocales":{"prev":"上一页","next":"下一页","navigate":"跳转到","action":"前往","errorText":"请输入 1 到 $page 之前的页码!"},"outlookLocales":{"themeColor":"主题色","darkmode":"外观","fullscreen":"全屏"},"routeLocales":{"skipToContent":"跳至主要內容","notFoundTitle":"页面不存在","notFoundMsg":["这里什么也没有","我们是怎么来到这儿的?","这 是 四 零 四 !","看起来你访问了一个失效的链接"],"back":"返回上一页","home":"带我回家","openInNewWindow":"Open in new window"},"navbar":["/",{"text":"维基","icon":"read","children":[{"text":"理论计算","icon":"shell","link":"/dft-learning/"},{"text":"材料表征","icon":"relation","link":"/characterization/"},{"text":"代码笔记","icon":"code","link":"/code/"},{"text":"软件使用","icon":"more","link":"/software/"},{"text":"Zotero 使用手册","icon":"study","link":"https://zotero-cn.github.io/zotero/"}]},{"text":"博客","icon":"blog","link":"/blog/"},{"text":"归档","icon":"time","link":"/timeline/"},{"text":"工具","icon":"tool","children":[{"text":"订阅转换工具","icon":"anonymous","link":"https://northword.github.io/sub-web/"},{"text":"Aria 2 WebUI","icon":"install","link":"https://aria2.northword.cn"}]}],"sidebar":{"/dft-learning/":"structure","/characterization/":"structure","/docs/":"structure","/code/":"structure","/software/":"structure","/blog/":"structure","/":["","structure"]}}}}`),Wv=Z(Hv),Gc=()=>Wv,qc=Symbol(""),Uv=()=>{const e=ce(qc);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},jv=(e,n)=>{const{locales:t,...a}=e;return{...a,...t==null?void 0:t[n]}},Gv=bn({enhance({app:e}){const n=Gc(),t=e._context.provides[Fo],a=w(()=>jv(n.value,t.value));e.provide(qc,a),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return n.value}},$themeLocale:{get(){return a.value}}})}});var qv={"/":{copy:"复制代码",copied:"已复制",hint:"复制成功"}},Kv=['.theme-hope-content div[class*="language-"] pre'];const Xv=800,Zv=2e3,Yv=qv,Jv=!1,Qv=Kv,Vr=!1,zs=new Map,e2=()=>{const{copy:e}=tv({legacy:!0}),n=Aa(Yv),t=ue(),a=$f(),s=i=>{if(!i.hasAttribute("copy-code-registered")){const c=document.createElement("button");c.type="button",c.classList.add("copy-code-button"),c.innerHTML='
',c.setAttribute("aria-label",n.value.copy),c.setAttribute("data-copied",n.value.copied),i.parentElement&&i.parentElement.insertBefore(c,i),i.setAttribute("copy-code-registered","")}},o=()=>pt().then(()=>new Promise(i=>{setTimeout(()=>{Qv.forEach(c=>{document.querySelectorAll(c).forEach(s)}),i()},Xv)})),l=(i,c,u)=>{let{innerText:p=""}=c;/language-(shellscript|shell|bash|sh|zsh)/.test(i.classList.toString())&&(p=p.replace(/^ *(\$|>) /gm,"")),e(p).then(()=>{u.classList.add("copied"),clearTimeout(zs.get(u));const d=setTimeout(()=>{u.classList.remove("copied"),u.blur(),zs.delete(u)},Zv);zs.set(u,d)})};_e(()=>{(!a.value||Vr)&&o(),Le("click",i=>{const c=i.target;if(c.matches('div[class*="language-"] > button.copy')){const u=c.parentElement,p=c.nextElementSibling;p&&l(u,p,c)}else if(c.matches('div[class*="language-"] div.copy-icon')){const u=c.parentElement,p=u.parentElement,d=u.nextElementSibling;d&&l(p,d,u)}}),le(()=>t.value.path,()=>{(!a.value||Vr)&&o()})})};var n2=bn({setup:()=>{e2()}});const t2=()=>{Le("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})};let a2={};const Kc=Symbol(""),s2=()=>ce(Kc),o2=e=>{e.provide(Kc,a2)},Dr=()=>{const e=document.documentElement;return e.classList.contains("dark")||e.getAttribute("data-theme")==="dark"},bt={useMaxWidth:!1},l2=e=>({dark:e,background:e?"#1e1e1e":"#fff",primaryColor:e?"#389d70":"#4abf8a",primaryBorderColor:e?"#389d70":"#4abf8a",primaryTextColor:e?"#fff":"#000",secondaryColor:"#ffb500",secondaryBorderColor:e?"#fff":"#000",secondaryTextColor:e?"#ddd":"#333",tertiaryColor:e?"#282828":"#efeef4",tertiaryBorderColor:e?"#bbb":"#242424",tertiaryTextColor:e?"#ddd":"#333",noteBkgColor:e?"#f6d365":"#fff5ad",noteTextColor:"#242424",noteBorderColor:e?"#f6d365":"#333",lineColor:e?"#d3d3d3":"#333",textColor:e?"#fff":"#242424",mainBkg:e?"#389d70":"#4abf8a",errorBkgColor:"#eb4d5d",errorTextColor:"#fff",nodeBorder:e?"#389d70":"#4abf8a",nodeTextColor:e?"#fff":"#242424",signalTextColor:e?"#9e9e9e":"#242424",classText:"#fff",labelColor:"#fff",attributeBackgroundColorEven:e?"#0d1117":"#fff",attributeBackgroundColorOdd:e?"#161b22":"#f8f8f8",fillType0:e?"#cf1322":"#f1636e",fillType1:"#f39c12",fillType2:"#2ecc71",fillType3:"#fa541c",fillType4:"#25a55b",fillType5:"#13c2c2",fillType6:"#096dd9",fillType7:"#aa6fe9"});var r2=H({name:"Mermaid",props:{id:{type:String,required:!0},code:{type:String,required:!0},title:{type:String,default:""}},setup(e){const{themeVariables:n,...t}=s2(),a=en(),s=w(()=>wr(e.code)),o=Z(""),l=Z(!1);let i=!1;const c=async()=>{const[{default:d}]=await Promise.all([m(()=>import("./mermaid.core-Up0YySao.js").then(f=>f.b7),__vite__mapDeps([])),i?Promise.resolve():(i=!0,new Promise(f=>setTimeout(f,800)))]);d.initialize({theme:"base",themeVariables:{...l2(l.value),...Of(n)?n(l.value):n},flowchart:bt,sequence:bt,journey:bt,gantt:bt,er:bt,pie:bt,...t,startOnLoad:!1}),o.value=(await d.render(e.id,s.value)).svg},u=()=>{const{body:d}=document,f=document.createElement("div");f.classList.add("mermaid-preview"),f.innerHTML=o.value,d.appendChild(f),f.addEventListener("click",()=>{d.removeChild(f)})},p=()=>{const d=`data:image/svg+xml;charset=utf8,${o.value.replace(/
/g,"
").replace(/%/g,"%25").replace(/"/g,"%22").replace(/'/g,"%27").replace(/&/g,"%26").replace(/#/g,"%23").replace(/{/g,"%7B").replace(/}/g,"%7D").replace(//g,"%3E")}`,f=document.createElement("a");f.setAttribute("href",d),f.setAttribute("download",`${e.title?wr(e.title):e.id}.svg`),f.click()};return _e(()=>{l.value=Dr(),c(),cv(document.documentElement,()=>{l.value=Dr()},{attributeFilter:["class","data-theme"],attributes:!0}),le(l,()=>c())}),()=>[r("div",{class:"mermaid-actions"},[r("button",{class:"preview-button",onClick:()=>u(),title:"preview",innerHTML:''}),r("button",{class:"download-button",onClick:()=>p(),title:"download",innerHTML:''})]),r("div",{ref:a,class:"mermaid-wrapper"},o.value?r("div",{class:"mermaid-content",innerHTML:o.value}):r(yc,{class:"mermaid-loading",height:96}))]}});const i2=bn({enhance:({app:e})=>{o2(e),e.component("Mermaid",r2)},setup:()=>{t2()}});let c2={};const Xc=Symbol(""),u2=()=>ce(Xc),p2=e=>{e.provide(Xc,c2)};var d2={"/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"}};const f2=".theme-hope-content :not(a) > img:not([no-view])",v2=d2,m2=800,h2='
',g2=e=>he(e)?Array.from(document.querySelectorAll(e)):e.map(n=>Array.from(document.querySelectorAll(n))).flat(),Zc=e=>new Promise((n,t)=>{e.complete?n({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>n(Zc(e)),e.onerror=a=>t(a))}),b2=()=>{const e=Aa(v2),n=ke(),t=ue(),{isSupported:a,toggle:s}=Xo(),o=u2();let l;const i=w(()=>n.value.photoSwipe===!1?!1:n.value.photoSwipe||f2),c=p=>{p.on("uiRegister",()=>{a&&p.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{s()}}),p.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:(d,f)=>{d.setAttribute("download",""),d.setAttribute("target","_blank"),d.setAttribute("rel","noopener"),f.on("change",()=>{d.setAttribute("href",f.currSlide.data.src)})}}),p.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:(d,f)=>{const v=[];let b=-1;for(let k=0;k{f.goTo(v.indexOf(y.target))},v.push(A),d.appendChild(A)}f.on("change",()=>{b>=0&&v[b].classList.remove("active"),v[f.currIndex].classList.add("active"),b=f.currIndex})}})})},u=async()=>{if(i.value)return Promise.all([m(()=>import("./photoswipe.esm-mC0Qcr12.js"),__vite__mapDeps([])),pt().then(()=>new Promise(p=>setTimeout(p,m2)).then(()=>g2(i.value)))]).then(([{default:p},d])=>{const f=d.map(v=>({html:h2,element:v,msrc:v.src}));d.forEach((v,b)=>{const k=()=>{l=new p({preloaderDelay:0,showHideAnimationType:"zoom",...e.value,...o,dataSource:f,index:b,closeOnVerticalDrag:!0,wheelToZoom:!1}),c(l),l.addFilter("thumbEl",()=>v),l.addFilter("placeholderSrc",()=>v.src),l.init()};v.style.cursor="zoom-in",v.addEventListener("click",()=>{k()}),v.addEventListener("keypress",({key:A})=>{A==="Enter"&&k()})}),d.forEach((v,b)=>{Zc(v).then(k=>{f.splice(b,1,k),l==null||l.refreshSlideContent(b)})})})};_e(()=>{Le("wheel",()=>{l==null||l.close()}),le(()=>t.value.path,u,{immediate:!0})})};var y2=bn({enhance:({app:e})=>{p2(e)},setup:()=>{b2()}}),Mr={"/":{word:"约 $word 字",less1Minute:"小于 1 分钟",time:"大约 $time 分钟"}};const Yc=()=>{const e=ue();return w(()=>e.value.readingTime??null)},io=typeof Mr>"u"?null:Mr,Jc=(e,n)=>{const{minutes:t,words:a}=e,{less1Minute:s,word:o,time:l}=n;return{time:t<1?s:l.replace("$time",Math.round(t).toString()),words:o.replace("$word",a.toString())}},Br={words:"",time:""},Qc=()=>io?Aa(io):w(()=>null),_2=()=>{if(typeof io>"u")return w(()=>Br);const e=Yc(),n=Qc();return w(()=>e.value&&n.value?Jc(e.value,n.value):Br)},vt=()=>Gc(),re=()=>Uv(),Gt=()=>w(()=>!!vt().value.pure);var $s=H({name:"EmptyComponent",setup:()=>()=>null});const k2="719px",E2="1440px",w2="false",Jo={mobileBreakPoint:k2,pcBreakPoint:E2,enableThemeColor:w2},Qo={"/dft-learning/":[{text:"理论知识",prefix:"01.Theory/",collapsible:!0,children:["/dft-learning/pages/77a22e/"]},{text:"软件安装",prefix:"02.Install/",collapsible:!0,children:["/dft-learning/pages/06c8b9/","/dft-learning/pages/6424b6/","/dft-learning/pages/66a232/","/dft-learning/pages/fce84f/","/dft-learning/pages/40eca8/","/dft-learning/pages/ea401e/","/dft-learning/pages/a33822/","/dft-learning/pages/816847/","/dft-learning/pages/e8ba48/"]},{text:"Linux 基础",prefix:"03.Linux/",collapsible:!0,children:["/dft-learning/pages/linux/","/dft-learning/pages/832cb5/"]},{text:"Materials Studio",prefix:"04.Materials-Studio/",collapsible:!0,children:["/dft-learning/pages/2e10d2/","/dft-learning/pages/6daef6/","/dft-learning/pages/ae5253/","/dft-learning/pages/391336/"]},{text:"VASP",prefix:"05.VASP/",collapsible:!0,link:"/dft-learning/pages/df30ef/",children:[{text:"VASP 输入输出文件",prefix:"01.VASP输入输出文件/",collapsible:!0,children:["/dft-learning/pages/69b75c/","/dft-learning/pages/4f0a58/","/dft-learning/pages/206ec4/","/dft-learning/pages/b32235/"]},{text:"结构优化",prefix:"02.优化/",collapsible:!0,children:["/dft-learning/pages/d67596/","/dft-learning/pages/663d74/","/dft-learning/pages/35fcd2/","/dft-learning/pages/4abf1b/","/dft-learning/pages/c81f27/"]},{text:"电子结构",prefix:"03.电子结构/",collapsible:!0,children:["/dft-learning/pages/bbb6cc/","/dft-learning/pages/904969/","/dft-learning/pages/b63e81/","/dft-learning/pages/2a0d7d/"]},{text:"反应路径",prefix:"04.反应路径/",collapsible:!0,children:["/dft-learning/pages/19e493/","/dft-learning/pages/297f6a/","/dft-learning/pages/16cc62/"]},{text:"分子动力学",prefix:"05.分子动力学/",collapsible:!0,children:["/dft-learning/pages/6e7240/"]},{text:"其他",prefix:"08.其他/",collapsible:!0,children:["/dft-learning/pages/9909a6/","/dft-learning/pages/908cf1/","/dft-learning/vasp/error/","poscar-convert"]}]},{text:"故障排除",prefix:"09.Others/",collapsible:!0,children:["/dft-learning/pages/5e29d2/","/dft-learning/pages/fa5420/","/dft-learning/pages/1dfd6d/"]}],"/characterization/":["/characterization/raman/","/characterization/sem/","x-ray-absorption","/characterization/xrd/"],"/docs/":[],"/code/":["/code/bash-for-windows/",{text:"CSL 中文文档",prefix:"citation-style-language/",collapsible:!0,children:["",{text:"CSL 介绍",prefix:"primer/",collapsible:!0,children:["","citation-formats","end","the-csl-ecosystem","understanding-csl-styles"]},{text:"CSL 1.0.2 规范",prefix:"specification/",collapsible:!0,children:["",{text:"Appendix",prefix:"appendix/",collapsible:!0,children:["appendix1-categories","appendix2-terms","appendix3-types","appendix4-variables","appendix5-page-range-formats","appendix6-links"]},"file-types","locale-files-strucure","namespacing","rendering-elements","style-behavior","styles-structure","whitespace-handling","xml-declaration"]},"translating-locale-files","xml-basic"]},"document-style-guide",{text:"Linux",prefix:"linux/",collapsible:!0,children:["/code/linux/intro/","/code/linux/commend/","/code/linux/vim/","/code/linux/lrzsz/","/code/linux/bashrc/","/code/linux/install-app-non-root/","/code/linux/openmpi/"]},{text:"Python",prefix:"python/",collapsible:!0,children:["/code/python/pip-error/","/code/python/pip-mirrors/"]}],"/software/":["Aria2",{text:"Office",prefix:"office/",collapsible:!0,children:["/software/office/install/"]},"windows-applications",{text:"Zotero",prefix:"zotero/",collapsible:!0,children:["Zotero 将引文链接到参考书目","Zotero 指北"]},"使用Pavadan和MentoHUST进行锐捷认证","内网穿透折腾记录","开启代理后msftconnecttest无法跳转","服务器的折腾"],"/blog/":["一台新电脑的自我修养","考研的相关总结"]},eu=e=>{const{icon:n="",color:t,size:a}=e,s={};return t&&(s.color=t),a&&(s.height=Number.isNaN(Number(a))?a:`${a}px`),ft(n)?r("img",{class:"icon",src:n,"no-view":"",style:s}):wa(n)?r("img",{class:"icon",src:Ae(n),"no-view":"",style:s}):r(Qe("FontIcon"),e)};eu.displayName="HopeIcon";var We=eu;const Sa=()=>{const e=$e(),n=xn();return t=>{if(t)if(wa(t))n.path!==t&&e.push(t);else if(Ui(t))window&&window.open(t);else{const a=n.path.slice(0,n.path.lastIndexOf("/"));e.push(`${a}/${encodeURI(t)}`)}}},nu=()=>{const e=re(),n=ke();return w(()=>{const{author:t}=n.value;return t?ha(t):t===!1?[]:ha(e.value.author,!1)})},A2=()=>{const e=ke();return w(()=>Ac(e.value.category).map(n=>{var t,a;return{name:n,path:((a=(t=ce(Symbol.for("categoryMap")))==null?void 0:t.value.map[n])==null?void 0:a.path)||""}}))},P2=()=>{const e=ke();return w(()=>Pc(e.value.tag).map(n=>{var t,a;return{name:n,path:((a=(t=ce(Symbol.for("tagMap")))==null?void 0:t.value.map[n])==null?void 0:a.path)||""}}))},S2=()=>{const e=ke(),n=ue();return w(()=>{const t=jo(e.value.date);if(t)return t;const{createdTime:a}=n.value.git||{};return a?new Date(a):null})},x2=()=>{const e=re(),n=ue(),t=ke(),a=nu(),s=A2(),o=P2(),l=S2(),i=Yc(),c=_2(),u=w(()=>({author:a.value,category:s.value,date:l.value,localizedDate:n.value.localizedDate,tag:o.value,isOriginal:t.value.isOriginal||!1,readingTime:i.value,readingTimeLocale:c.value,pageview:"pageview"in t.value?t.value.pageview:!0})),p=w(()=>"pageInfo"in t.value?t.value.pageInfo:"pageInfo"in e.value?e.value.pageInfo:null);return{info:u,items:p}},{mobileBreakPoint:T2,pcBreakPoint:L2}=Jo,Nr=e=>e.endsWith("px")?Number(e.slice(0,-2)):null,xa=()=>{const e=Z(!1),n=Z(!1),t=()=>{e.value=window.innerWidth<=(Nr(T2)??719),n.value=window.innerWidth>=(Nr(L2)??1440)};return _e(()=>{t(),Le("resize",t,!1),Le("orientationchange",t,!1)}),{isMobile:e,isPC:n}},tu=Symbol(""),Ta=()=>{const e=ce(tu);if(!e)throw new Error("useDarkmode() is called without provider.");return e},C2=e=>{const n=vt(),t=iv(),a=Nc("vuepress-theme-hope-scheme","auto"),s=w(()=>n.value.darkmode||"switch"),o=w(()=>{const i=s.value;return i==="disable"?!1:i==="enable"?!0:i==="auto"?t.value:i==="toggle"?a.value==="dark":a.value==="dark"||a.value==="auto"&&t.value}),l=w(()=>{const i=s.value;return i==="switch"||i==="toggle"});e.provide(tu,{canToggle:l,config:s,isDarkmode:o,status:a}),Object.defineProperties(e.config.globalProperties,{$isDarkmode:{get:()=>o.value}})},R2=()=>{const{isDarkmode:e}=Ta(),n=(t=e.value)=>document.documentElement.setAttribute("data-theme",t?"dark":"light");_e(()=>{le(e,n,{immediate:!0})})};var qe=H({name:"AutoLink",inheritAttrs:!1,props:{config:{type:Object,required:!0},exact:Boolean,noExternalLinkIcon:Boolean},emits:["focusout"],slots:Object,setup(e,{attrs:n,emit:t,slots:a}){const s=xn(),o=Qi(),l=Ft(e,"config"),i=w(()=>ft(l.value.link)),c=w(()=>!i.value&&Ui(l.value.link)),u=w(()=>l.value.target||(i.value?"_blank":void 0)),p=w(()=>u.value==="_blank"),d=w(()=>!i.value&&!c.value&&!p.value),f=w(()=>l.value.rel||(p.value?"noopener noreferrer":void 0)),v=w(()=>l.value.ariaLabel||l.value.text),b=w(()=>{if(e.exact)return!1;const A=Sn(o.value.locales);return A.length?A.every(y=>y!==l.value.link):l.value.link!=="/"}),k=w(()=>d.value?l.value.activeMatch?new RegExp(l.value.activeMatch).test(s.path):b.value?Dt(s.path,l.value.link):s.path===l.value.link:!1);return()=>{const{before:A,after:y,default:x}=a,{text:_,icon:P,link:V}=l.value;return d.value?r(Ne,{to:V,"aria-label":v.value,...n,class:["nav-link",{active:k.value},n.class],onFocusout:()=>t("focusout")},()=>x?x():[A?A():r(We,{icon:P}),_,y==null?void 0:y()]):r("a",{href:V,rel:f.value,target:u.value,"aria-label":v.value,...n,class:["nav-link",n.class],onFocusout:()=>t("focusout")},x?x():[A?A():r(We,{icon:P}),_,e.noExternalLinkIcon?null:r(Uc),y==null?void 0:y()])}}});const Bt=(e,n,t=!1)=>"activeMatch"in n?new RegExp(n.activeMatch).test(e.path):xc(e,n.link)?!0:n.children&&!t?n.children.some(a=>Bt(e,a)):!1,au=(e,n)=>n.type==="group"?n.children.some(t=>t.type==="group"?au(e,t):t.type==="page"&&Bt(e,t,!0))||"prefix"in n&&xc(e,n.prefix):!1,su=(e,n)=>he(e.link)?r(qe,{...n,config:e}):r("p",n,[r(We,{icon:e.icon}),e.text]),ou=e=>{const n=xn();return e?r("ul",{class:"vp-sidebar-sub-headers"},e.map(t=>r("li",{class:"vp-sidebar-sub-header"},[su(t,{class:["vp-sidebar-link","vp-heading",{active:Bt(n,t,!0)}]}),ou(t.children)]))):null};var ye=(e=>(e.type="y",e.title="t",e.shortTitle="s",e.icon="i",e.author="a",e.date="d",e.localizedDate="l",e.category="c",e.tag="g",e.isEncrypted="n",e.isOriginal="o",e.readingTime="r",e.excerpt="e",e.sticky="u",e.cover="v",e.index="I",e.order="O",e))(ye||{}),lu=(e=>(e.article="a",e.home="h",e.slide="s",e.page="p",e))(lu||{});const lt=(e="",n="")=>wa(n)?n:`${G0(e)}${n}`,St=(e,n,t=!1)=>{let a=Mt(e,Ec(encodeURI(n)));a.name==="404"&&(a=Mt(e,n));const{fullPath:s,meta:o,name:l}=a;return{text:!t&&o[ye.shortTitle]?o[ye.shortTitle]:o[ye.title]||n,link:l==="404"?n:s,...o[ye.icon]?{icon:o[ye.icon]}:{}}},O2=(e,n)=>{const t=ue();return{type:"heading",text:e.title,link:`${t.value.path}#${e.slug}`,children:el(e.children,n)}},el=(e,n)=>n>0?e.map(t=>O2(t,n-1)):[],ru=e=>{const n=ue();return el(n.value.headers,e)},co=(e,n,t="")=>{const a=$e(),s=ue(),o=(l,i=t)=>{var u;const c=he(l)?St(a,lt(i,l)):l.link?{...l,...as(l.link)?{}:{link:St(a,lt(i,l.link)).link}}:l;if("children"in c){const p=lt(i,c.prefix),d=c.children==="structure"?Qo[p]:c.children;return{type:"group",...c,prefix:p,children:d.map(f=>o(f,p))}}return{type:"page",...c,children:c.link===s.value.path?el(((u=s.value.headers[0])==null?void 0:u.level)===1?s.value.headers[0].children:s.value.headers,n):[]}};return e.map(l=>o(l))},I2=(e,n)=>{const t=ue(),a=Sn(e).sort((s,o)=>o.length-s.length);for(const s of a)if(Dt(decodeURI(t.value.path),s)){const o=e[s];return o?co(o==="structure"?Qo[s]:o==="heading"?ru(n):o,n,s):[]}return console.warn(`${t.value.path} is missing sidebar config.`),[]},V2=(e,n)=>{const t=gn();return e===!1?[]:e==="heading"?ru(n):e==="structure"?co(Qo[t.value],n,t.value):ee(e)?co(e,n):zo(e)?I2(e,n):[]},iu=Symbol(""),D2=()=>{const e=ke(),n=re(),t=ue(),a=w(()=>e.value.home?!1:e.value.sidebar??n.value.sidebar??"structure"),s=w(()=>e.value.headerDepth??n.value.headerDepth??2),o=qo(()=>[a.value,s.value,t.value.path,null],()=>V2(a.value,s.value));rn(iu,o)},nl=()=>{const e=ce(iu);if(!e)throw new Error("useSidebarItems() is called without provider.");return e};var M2=H({name:"PageFooter",setup(){const e=ke(),n=re(),t=nu(),a=w(()=>{const{copyright:l,footer:i}=e.value;return i!==!1&&!!(l||i||n.value.displayFooter)}),s=w(()=>{const{footer:l}=e.value;return l===!1?!1:he(l)?l:n.value.footer||""}),o=w(()=>"copyright"in e.value?e.value.copyright:"copyright"in n.value?n.value.copyright:t.value.length?`Copyright © ${new Date().getFullYear()} ${t.value[0].name}`:!1);return()=>a.value?r("footer",{class:"vp-footer-wrapper"},[s.value?r("div",{class:"vp-footer",innerHTML:s.value}):null,o.value?r("div",{class:"vp-copyright",innerHTML:o.value}):null]):null}}),B2=H({name:"NavbarDropdownLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:n}){const t=ue(),a=Ft(e,"config"),s=w(()=>a.value.ariaLabel||a.value.text),o=Z(!1);le(()=>t.value.path,()=>{o.value=!1});const l=i=>{i.detail===0&&(o.value=!o.value)};return()=>{var i;return r("div",{class:["dropdown-wrapper",{open:o.value}]},[r("button",{type:"button",class:"dropdown-title","aria-label":s.value,onClick:l},[((i=n.title)==null?void 0:i.call(n))||r("span",{class:"title"},[r(We,{icon:a.value.icon}),e.config.text]),r("span",{class:"arrow"}),r("ul",{class:"nav-dropdown"},a.value.children.map((c,u)=>{const p=u===a.value.children.length-1;return r("li",{class:"dropdown-item"},"children"in c?[r("h4",{class:"dropdown-subtitle"},c.link?r(qe,{config:c,onFocusout:()=>{c.children.length===0&&p&&(o.value=!1)}}):r("span",c.text)),r("ul",{class:"dropdown-subitem-wrapper"},c.children.map((d,f)=>r("li",{class:"dropdown-subitem"},r(qe,{config:d,onFocusout:()=>{f===c.children.length-1&&p&&(o.value=!1)}}))))]:r(qe,{config:c,onFocusout:()=>{p&&(o.value=!1)}}))}))])])}}});const cu=(e,n,t="")=>he(n)?St(e,lt(t,n)):"children"in n?{...n,...n.link&&!as(n.link)?St(e,lt(t,n.link)):{},children:n.children.map(a=>cu(e,a,lt(t,n.prefix)))}:{...n,link:as(n.link)?n.link:St(e,lt(t,n.link)).link},uu=()=>{const e=re(),n=$e(),t=()=>(e.value.navbar||[]).map(a=>cu(n,a));return qo(()=>e.value.navbar,()=>t())},N2=()=>{const e=re(),n=w(()=>e.value.repo||null),t=w(()=>n.value?Bf(n.value):null),a=w(()=>n.value?Tc(n.value):null),s=w(()=>t.value?e.value.repoLabel??(a.value===null?"Source":a.value):null);return w(()=>!t.value||!s.value||e.value.repoDisplay===!1?null:{type:a.value||"Source",label:s.value,link:t.value})};var z2=H({name:"NavScreenDropdown",props:{config:{type:Object,required:!0}},setup(e){const n=ue(),t=Ft(e,"config"),a=w(()=>t.value.ariaLabel||t.value.text),s=Z(!1);le(()=>n.value.path,()=>{s.value=!1});const o=(l,i)=>i[i.length-1]===l;return()=>[r("button",{type:"button",class:["nav-screen-dropdown-title",{active:s.value}],"aria-label":a.value,onClick:()=>{s.value=!s.value}},[r("span",{class:"title"},[r(We,{icon:t.value.icon}),e.config.text]),r("span",{class:["arrow",s.value?"down":"end"]})]),r("ul",{class:["nav-screen-dropdown",{hide:!s.value}]},t.value.children.map(l=>r("li",{class:"dropdown-item"},"children"in l?[r("h4",{class:"dropdown-subtitle"},l.link?r(qe,{config:l,onFocusout:()=>{o(l,t.value.children)&&l.children.length===0&&(s.value=!1)}}):r("span",l.text)),r("ul",{class:"dropdown-subitem-wrapper"},l.children.map(i=>r("li",{class:"dropdown-subitem"},r(qe,{config:i,onFocusout:()=>{o(i,l.children)&&o(l,t.value.children)&&(s.value=!1)}}))))]:r(qe,{config:l,onFocusout:()=>{o(l,t.value.children)&&(s.value=!1)}}))))]}}),$2=H({name:"NavScreenLinks",setup(){const e=uu();return()=>e.value.length?r("nav",{class:"nav-screen-links"},e.value.map(n=>r("div",{class:"navbar-links-item"},"children"in n?r(z2,{config:n}):r(qe,{config:n})))):null}});const pu=()=>r(ve,{name:"dark"},()=>r("path",{d:"M524.8 938.667h-4.267a439.893 439.893 0 0 1-313.173-134.4 446.293 446.293 0 0 1-11.093-597.334A432.213 432.213 0 0 1 366.933 90.027a42.667 42.667 0 0 1 45.227 9.386 42.667 42.667 0 0 1 10.24 42.667 358.4 358.4 0 0 0 82.773 375.893 361.387 361.387 0 0 0 376.747 82.774 42.667 42.667 0 0 1 54.187 55.04 433.493 433.493 0 0 1-99.84 154.88 438.613 438.613 0 0 1-311.467 128z"}));pu.displayName="DarkIcon";const du=()=>r(ve,{name:"light"},()=>r("path",{d:"M952 552h-80a40 40 0 0 1 0-80h80a40 40 0 0 1 0 80zM801.88 280.08a41 41 0 0 1-57.96-57.96l57.96-58a41.04 41.04 0 0 1 58 58l-58 57.96zM512 752a240 240 0 1 1 0-480 240 240 0 0 1 0 480zm0-560a40 40 0 0 1-40-40V72a40 40 0 0 1 80 0v80a40 40 0 0 1-40 40zm-289.88 88.08-58-57.96a41.04 41.04 0 0 1 58-58l57.96 58a41 41 0 0 1-57.96 57.96zM192 512a40 40 0 0 1-40 40H72a40 40 0 0 1 0-80h80a40 40 0 0 1 40 40zm30.12 231.92a41 41 0 0 1 57.96 57.96l-57.96 58a41.04 41.04 0 0 1-58-58l58-57.96zM512 832a40 40 0 0 1 40 40v80a40 40 0 0 1-80 0v-80a40 40 0 0 1 40-40zm289.88-88.08 58 57.96a41.04 41.04 0 0 1-58 58l-57.96-58a41 41 0 0 1 57.96-57.96z"}));du.displayName="LightIcon";const fu=()=>r(ve,{name:"auto"},()=>r("path",{d:"M512 992C246.92 992 32 777.08 32 512S246.92 32 512 32s480 214.92 480 480-214.92 480-480 480zm0-840c-198.78 0-360 161.22-360 360 0 198.84 161.22 360 360 360s360-161.16 360-360c0-198.78-161.22-360-360-360zm0 660V212c165.72 0 300 134.34 300 300 0 165.72-134.28 300-300 300z"}));fu.displayName="AutoIcon";const vu=()=>r(ve,{name:"enter-fullscreen"},()=>r("path",{d:"M762.773 90.24h-497.28c-96.106 0-174.4 78.293-174.4 174.4v497.28c0 96.107 78.294 174.4 174.4 174.4h497.28c96.107 0 175.04-78.293 174.4-174.4V264.64c0-96.213-78.186-174.4-174.4-174.4zm-387.2 761.173H215.04c-21.867 0-40.427-17.92-41.067-41.066V649.92c0-22.507 17.92-40.427 40.427-40.427 11.307 0 21.227 4.694 28.48 11.947 7.253 7.253 11.947 17.92 11.947 28.48v62.293l145.28-145.28c15.893-15.893 41.813-15.893 57.706 0 15.894 15.894 15.894 41.814 0 57.707l-145.28 145.28h62.294c22.506 0 40.426 17.92 40.426 40.427s-17.173 41.066-39.68 41.066zM650.24 165.76h160.427c21.866 0 40.426 17.92 41.066 41.067v160.426c0 22.507-17.92 40.427-40.426 40.427-11.307 0-21.227-4.693-28.48-11.947-7.254-7.253-11.947-17.92-11.947-28.48v-62.186L625.6 450.347c-15.893 15.893-41.813 15.893-57.707 0-15.893-15.894-15.893-41.814 0-57.707l145.28-145.28H650.88c-22.507 0-40.427-17.92-40.427-40.427s17.174-41.173 39.787-41.173z"}));vu.displayName="EnterFullScreenIcon";const mu=()=>r(ve,{name:"cancel-fullscreen"},()=>r("path",{d:"M778.468 78.62H247.922c-102.514 0-186.027 83.513-186.027 186.027V795.08c0 102.514 83.513 186.027 186.027 186.027h530.432c102.514 0 186.71-83.513 186.026-186.027V264.647C964.494 162.02 880.981 78.62 778.468 78.62zM250.88 574.35h171.122c23.324 0 43.122 19.115 43.804 43.805v171.121c0 24.008-19.114 43.122-43.122 43.122-12.06 0-22.641-5.006-30.378-12.743s-12.743-19.115-12.743-30.379V722.83L224.597 877.91c-16.953 16.952-44.6 16.952-61.553 0-16.953-16.954-16.953-44.602 0-61.554L318.009 661.39h-66.446c-24.007 0-43.122-19.114-43.122-43.122 0-24.12 18.432-43.918 42.439-43.918zm521.899-98.873H601.657c-23.325 0-43.122-19.114-43.805-43.804V260.55c0-24.007 19.115-43.122 43.122-43.122 12.06 0 22.642 5.007 30.379 12.743s12.743 19.115 12.743 30.38v66.445l154.965-154.965c16.953-16.953 44.601-16.953 61.554 0 16.953 16.953 16.953 44.6 0 61.554L705.536 388.55h66.446c24.007 0 43.122 19.115 43.122 43.122.114 24.007-18.318 43.804-42.325 43.804z"}));mu.displayName="CancelFullScreenIcon";const hu=()=>r(ve,{name:"outlook"},()=>[r("path",{d:"M224 800c0 9.6 3.2 44.8 6.4 54.4 6.4 48-48 76.8-48 76.8s80 41.6 147.2 0 134.4-134.4 38.4-195.2c-22.4-12.8-41.6-19.2-57.6-19.2C259.2 716.8 227.2 761.6 224 800zM560 675.2l-32 51.2c-51.2 51.2-83.2 32-83.2 32 25.6 67.2 0 112-12.8 128 25.6 6.4 51.2 9.6 80 9.6 54.4 0 102.4-9.6 150.4-32l0 0c3.2 0 3.2-3.2 3.2-3.2 22.4-16 12.8-35.2 6.4-44.8-9.6-12.8-12.8-25.6-12.8-41.6 0-54.4 60.8-99.2 137.6-99.2 6.4 0 12.8 0 22.4 0 12.8 0 38.4 9.6 48-25.6 0-3.2 0-3.2 3.2-6.4 0-3.2 3.2-6.4 3.2-6.4 6.4-16 6.4-16 6.4-19.2 9.6-35.2 16-73.6 16-115.2 0-105.6-41.6-198.4-108.8-268.8C704 396.8 560 675.2 560 675.2zM224 419.2c0-28.8 22.4-51.2 51.2-51.2 28.8 0 51.2 22.4 51.2 51.2 0 28.8-22.4 51.2-51.2 51.2C246.4 470.4 224 448 224 419.2zM320 284.8c0-22.4 19.2-41.6 41.6-41.6 22.4 0 41.6 19.2 41.6 41.6 0 22.4-19.2 41.6-41.6 41.6C339.2 326.4 320 307.2 320 284.8zM457.6 208c0-12.8 12.8-25.6 25.6-25.6 12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6C470.4 233.6 457.6 220.8 457.6 208zM128 505.6C128 592 153.6 672 201.6 736c28.8-60.8 112-60.8 124.8-60.8-16-51.2 16-99.2 16-99.2l316.8-422.4c-48-19.2-99.2-32-150.4-32C297.6 118.4 128 291.2 128 505.6zM764.8 86.4c-22.4 19.2-390.4 518.4-390.4 518.4-22.4 28.8-12.8 76.8 22.4 99.2l9.6 6.4c35.2 22.4 80 12.8 99.2-25.6 0 0 6.4-12.8 9.6-19.2 54.4-105.6 275.2-524.8 288-553.6 6.4-19.2-3.2-32-19.2-32C777.6 76.8 771.2 80 764.8 86.4z"})]);hu.displayName="OutlookIcon";var gu=H({name:"AppearanceSwitch",setup(){const{config:e,status:n}=Ta(),t=()=>{e.value==="switch"?n.value={light:"dark",dark:"auto",auto:"light"}[n.value]:n.value=n.value==="light"?"dark":"light"};return()=>r("button",{type:"button",id:"appearance-switch",onClick:()=>t()},[r(fu,{style:{display:n.value==="auto"?"block":"none"}}),r(pu,{style:{display:n.value==="dark"?"block":"none"}}),r(du,{style:{display:n.value==="light"?"block":"none"}})])}}),F2=H({name:"AppearanceMode",setup(){const e=re(),{canToggle:n}=Ta(),t=w(()=>e.value.outlookLocales.darkmode);return()=>n.value?r("div",{class:"appearance-wrapper"},[r("label",{class:"appearance-title",for:"appearance-switch"},t.value),r(gu)]):null}});const Fs="VUEPRESS_THEME_COLOR";var H2=H({name:"ThemeColorPicker",props:{themeColor:{type:Object,required:!0}},setup(e){const n=(t="")=>{const a=document.documentElement.classList,s=Sn(e.themeColor);if(!t){localStorage.removeItem(Fs),a.remove(...s);return}a.remove(...s.filter(o=>o!==t)),a.add(t),localStorage.setItem(Fs,t)};return _e(()=>{const t=localStorage.getItem(Fs);t&&n(t)}),()=>r("ul",{id:"theme-color-picker"},[r("li",r("span",{class:"theme-color",onClick:()=>n()})),Ut(e.themeColor).map(([t,a])=>r("li",r("span",{style:{background:a},onClick:()=>n(t)})))])}});const xt=Jo.enableThemeColor==="true",W2=xt?If(Ut(Jo).filter(([e])=>e.startsWith("theme-"))):{};var U2=H({name:"ThemeColor",setup(){const e=re(),n=w(()=>e.value.outlookLocales.themeColor);return()=>xt?r("div",{class:"theme-color-wrapper"},[r("label",{class:"theme-color-title",for:"theme-color-picker"},n.value),r(H2,{themeColor:W2})]):null}}),bu=H({name:"ToggleFullScreenButton",setup(){const e=re(),{isSupported:n,isFullscreen:t,toggle:a}=Xo(),s=w(()=>e.value.outlookLocales.fullscreen);return()=>n?r("div",{class:"full-screen-wrapper"},[r("label",{class:"full-screen-title",for:"full-screen-switch"},s.value),r("button",{type:"button",id:"full-screen-switch",class:"full-screen",ariaPressed:t.value,onClick:()=>a()},t.value?r(mu):r(vu))]):null}}),yu=H({name:"OutlookSettings",setup(){const e=vt(),n=Gt(),t=w(()=>!n.value&&e.value.fullscreen);return()=>r(fs,()=>[xt?r(U2):null,r(F2),t.value?r(bu):null])}}),j2=H({name:"NavScreen",props:{show:Boolean},emits:["close"],slots:Object,setup(e,{emit:n,slots:t}){const a=ue(),{isMobile:s}=xa(),o=en(),l=Zo(o);return _e(()=>{o.value=document.body,le(s,i=>{!i&&e.show&&(l.value=!1,n("close"))}),le(()=>a.value.path,()=>{l.value=!1,n("close")})}),Ht(()=>{l.value=!1}),()=>r(Zn,{name:"fade",onEnter:()=>{l.value=!0},onAfterLeave:()=>{l.value=!1}},()=>{var i,c;return e.show?r("div",{id:"nav-screen"},r("div",{class:"vp-nav-screen-container"},[(i=t.before)==null?void 0:i.call(t),r($2),r("div",{class:"vp-outlook-wrapper"},r(yu)),(c=t.after)==null?void 0:c.call(t)])):null})}}),G2=H({name:"NavbarBrand",setup(){const e=gn(),n=Wt(),t=re(),a=w(()=>t.value.home||e.value),s=w(()=>n.value.title),o=w(()=>t.value.navTitle??s.value),l=w(()=>t.value.logo?Ae(t.value.logo):null),i=w(()=>t.value.logoDark?Ae(t.value.logoDark):null);return()=>r(Ne,{to:a.value,class:"vp-brand"},()=>[l.value?r("img",{class:["vp-nav-logo",{light:!!i.value}],src:l.value,alt:s.value}):null,i.value?r("img",{class:["vp-nav-logo dark"],src:i.value,alt:s.value}):null,o.value?r("span",{class:["vp-site-name",{"hide-in-pad":l.value&&t.value.hideSiteNameOnMobile!==!1}]},o.value):null])}}),q2=H({name:"NavbarLinks",setup(){const e=uu();return()=>e.value.length?r("nav",{class:"vp-nav-links"},e.value.map(n=>r("div",{class:"nav-item hide-in-mobile"},"children"in n?r(B2,{config:n}):r(qe,{config:n})))):null}}),K2=H({name:"RepoLink",components:{BitbucketIcon:Oc,GiteeIcon:Rc,GitHubIcon:Lc,GitLabIcon:Cc,SourceIcon:Ic},setup(){const e=N2();return()=>e.value?r("div",{class:"nav-item vp-repo"},r("a",{class:"vp-repo-link",href:e.value.link,target:"_blank",rel:"noopener noreferrer","aria-label":e.value.label},r(Qe(`${e.value.type}Icon`),{style:{width:"1.25rem",height:"1.25rem",verticalAlign:"middle"}}))):null}});const _u=({active:e=!1},{emit:n})=>r("button",{type:"button",class:["vp-toggle-navbar-button",{"is-active":e}],"aria-label":"Toggle Navbar","aria-expanded":e,"aria-controls":"nav-screen",onClick:()=>n("toggle")},r("span",[r("span",{class:"vp-top"}),r("span",{class:"vp-middle"}),r("span",{class:"vp-bottom"})]));_u.displayName="ToggleNavbarButton";var X2=_u;const uo=(e,{emit:n})=>r("button",{type:"button",class:"vp-toggle-sidebar-button",title:"Toggle Sidebar",onClick:()=>n("toggle")},r("span",{class:"icon"}));uo.displayName="ToggleSidebarButton",uo.emits=["toggle"];var Z2=uo,Y2=H({name:"OutlookButton",setup(){const{isSupported:e}=Xo(),n=vt(),t=Gt(),a=ue(),{canToggle:s}=Ta(),o=Z(!1),l=w(()=>!t.value&&n.value.fullscreen&&e);return le(()=>a.value.path,()=>{o.value=!1}),()=>s.value||l.value||xt?r("div",{class:"nav-item hide-in-mobile"},s.value&&!l.value&&!xt?r(gu):l.value&&!s.value&&!xt?r(bu):r("button",{type:"button",class:["outlook-button",{open:o.value}],tabindex:"-1","aria-hidden":!0},[r(hu),r("div",{class:"outlook-dropdown"},r(yu))])):null}}),J2=H({name:"NavBar",emits:["toggleSidebar"],slots:Object,setup(e,{emit:n,slots:t}){const a=re(),{isMobile:s}=xa(),o=Z(!1),l=w(()=>{const{navbarAutoHide:p="mobile"}=a.value;return p!=="none"&&(p==="always"||s.value)}),i=w(()=>a.value.navbarLayout||{start:["Brand"],center:["Links"],end:["Language","Repo","Outlook","Search"]}),c={Brand:G2,Language:$s,Links:q2,Repo:K2,Outlook:Y2,Search:Dn("Docsearch")?Qe("Docsearch"):Dn("SearchBox")?Qe("SearchBox"):$s},u=p=>c[p]??(Dn(p)?Qe(p):$s);return()=>{var p,d,f,v,b,k;return[r("header",{id:"navbar",class:["vp-navbar",{"auto-hide":l.value,"hide-icon":a.value.navbarIcon===!1}]},[r("div",{class:"vp-navbar-start"},[r(Z2,{onToggle:()=>{o.value&&(o.value=!1),n("toggleSidebar")}}),(p=t.startBefore)==null?void 0:p.call(t),(i.value.start||[]).map(A=>r(u(A))),(d=t.startAfter)==null?void 0:d.call(t)]),r("div",{class:"vp-navbar-center"},[(f=t.centerBefore)==null?void 0:f.call(t),(i.value.center||[]).map(A=>r(u(A))),(v=t.centerAfter)==null?void 0:v.call(t)]),r("div",{class:"vp-navbar-end"},[(b=t.endBefore)==null?void 0:b.call(t),(i.value.end||[]).map(A=>r(u(A))),(k=t.endAfter)==null?void 0:k.call(t),r(X2,{active:o.value,onToggle:()=>{o.value=!o.value}})])]),r(j2,{show:o.value,onClose:()=>{o.value=!1}},{before:()=>{var A;return(A=t.screenTop)==null?void 0:A.call(t)},after:()=>{var A;return(A=t.screenBottom)==null?void 0:A.call(t)}})]}}}),Q2=H({name:"SidebarChild",props:{config:{type:Object,required:!0}},setup(e){const n=xn();return()=>[su(e.config,{class:["vp-sidebar-link",`vp-sidebar-${e.config.type}`,{active:Bt(n,e.config,!0)}],exact:!0}),ou(e.config.children)]}}),em=H({name:"SidebarGroup",props:{config:{type:Object,required:!0},open:{type:Boolean,required:!0}},emits:["toggle"],setup(e,{emit:n}){const t=xn(),a=w(()=>Bt(t,e.config)),s=w(()=>Bt(t,e.config,!0));return()=>{const{collapsible:o,children:l=[],icon:i,prefix:c,link:u,text:p}=e.config;return r("section",{class:"vp-sidebar-group"},[r(o?"button":"p",{class:["vp-sidebar-heading",{clickable:o||u,exact:s.value,active:a.value}],...o?{type:"button",onClick:()=>n("toggle"),onKeydown:d=>{d.key==="Enter"&&n("toggle")}}:{}},[r(We,{icon:i}),u?r(qe,{class:"vp-sidebar-title",config:{text:p,link:u},noExternalLinkIcon:!0}):r("span",{class:"vp-sidebar-title"},p),o?r("span",{class:["vp-arrow",e.open?"down":"end"]}):null]),e.open||!o?r(ku,{key:c,config:l}):null])}}}),ku=H({name:"SidebarLinks",props:{config:{type:Array,required:!0}},setup(e){const n=xn(),t=Z(-1),a=s=>{t.value=s===t.value?-1:s};return le(()=>n.path,()=>{const s=e.config.findIndex(o=>au(n,o));t.value=s},{immediate:!0,flush:"post"}),()=>r("ul",{class:"vp-sidebar-links"},e.config.map((s,o)=>r("li",s.type==="group"?r(em,{config:s,open:o===t.value,onToggle:()=>a(o)}):r(Q2,{config:s}))))}}),nm=H({name:"SideBar",slots:Object,setup(e,{slots:n}){const t=xn(),a=re(),s=nl(),o=en();return _e(()=>{le(()=>t.hash,l=>{const i=document.querySelector(`.vp-sidebar a.vp-sidebar-link[href="${t.path}${l}"]`);if(!i)return;const{top:c,height:u}=o.value.getBoundingClientRect(),{top:p,height:d}=i.getBoundingClientRect();pc+u&&i.scrollIntoView(!1)},{immediate:!0})}),()=>{var l,i,c;return r("aside",{ref:o,id:"sidebar",class:["vp-sidebar",{"hide-icon":a.value.sidebarIcon===!1}]},[(l=n.top)==null?void 0:l.call(n),((i=n.default)==null?void 0:i.call(n))||r(ku,{config:s.value}),(c=n.bottom)==null?void 0:c.call(n)])}}}),tl=H({name:"CommonWrapper",props:{containerClass:{type:String,default:""},noNavbar:Boolean,noSidebar:Boolean,noToc:Boolean},slots:Object,setup(e,{slots:n}){const t=$e(),a=ue(),s=ke(),o=re(),{isMobile:l,isPC:i}=xa(),[c,u]=Pr(!1),[p,d]=Pr(!1),f=nl(),v=Z(!1),b=w(()=>e.noNavbar||s.value.navbar===!1||o.value.navbar===!1?!1:!!(a.value.title||o.value.logo||o.value.repo||o.value.navbar)),k=w(()=>e.noSidebar?!1:s.value.sidebar!==!1&&f.value.length!==0&&!s.value.home),A=w(()=>e.noToc||s.value.home?!1:s.value.toc||o.value.toc!==!1&&s.value.toc!==!1),y={x:0,y:0},x=R=>{y.x=R.changedTouches[0].clientX,y.y=R.changedTouches[0].clientY},_=R=>{const G=R.changedTouches[0].clientX-y.x,N=R.changedTouches[0].clientY-y.y;Math.abs(G)>Math.abs(N)*1.5&&Math.abs(G)>40&&(G>0&&y.x<=80?u(!0):u(!1))},P=()=>window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;let V=0;return Le("scroll",Zf(()=>{const R=P();R<=58||R{R||u(!1)}),_e(()=>{const R=Zo(document.body);le(c,N=>{R.value=N});const G=t.afterEach(()=>{u(!1)});Ht(()=>{R.value=!1,G()})}),()=>r(Dn("GlobalEncrypt")?Qe("GlobalEncrypt"):_c,()=>r("div",{class:["theme-container",{"no-navbar":!b.value,"no-sidebar":!k.value&&!(n.sidebar||n.sidebarTop||n.sidebarBottom),"has-toc":A.value,"hide-navbar":v.value,"sidebar-collapsed":!l.value&&!i.value&&p.value,"sidebar-open":l.value&&c.value},e.containerClass,s.value.containerClass||""],onTouchStart:x,onTouchEnd:_},[b.value?r(J2,{onToggleSidebar:()=>u()},{startBefore:()=>{var R;return(R=n.navbarStartBefore)==null?void 0:R.call(n)},startAfter:()=>{var R;return(R=n.navbarStartAfter)==null?void 0:R.call(n)},centerBefore:()=>{var R;return(R=n.navbarCenterBefore)==null?void 0:R.call(n)},centerAfter:()=>{var R;return(R=n.navbarCenterAfter)==null?void 0:R.call(n)},endBefore:()=>{var R;return(R=n.navbarEndBefore)==null?void 0:R.call(n)},endAfter:()=>{var R;return(R=n.navbarEndAfter)==null?void 0:R.call(n)},screenTop:()=>{var R;return(R=n.navScreenTop)==null?void 0:R.call(n)},screenBottom:()=>{var R;return(R=n.navScreenBottom)==null?void 0:R.call(n)}}):null,r(Zn,{name:"fade"},()=>c.value?r("div",{class:"vp-sidebar-mask",onClick:()=>u(!1)}):null),r(Zn,{name:"fade"},()=>l.value?null:r("div",{class:"toggle-sidebar-wrapper",onClick:()=>d()},r("span",{class:["arrow",p.value?"end":"start"]}))),r(nm,{},{...n.sidebar?{default:()=>n.sidebar()}:{},top:()=>{var R;return(R=n.sidebarTop)==null?void 0:R.call(n)},bottom:()=>{var R;return(R=n.sidebarBottom)==null?void 0:R.call(n)}}),n.default(),r(M2)]))}}),me=H({name:"DropTransition",props:{type:{type:String,default:"single"},delay:{type:Number,default:0},duration:{type:Number,default:.25},appear:Boolean},slots:Object,setup(e,{slots:n}){const t=s=>{s.style.transition=`transform ${e.duration}s ease-in-out ${e.delay}s, opacity ${e.duration}s ease-in-out ${e.delay}s`,s.style.transform="translateY(-20px)",s.style.opacity="0"},a=s=>{s.style.transform="translateY(0)",s.style.opacity="1"};return()=>r(e.type==="single"?Zn:R0,{name:"drop",appear:e.appear,onAppear:t,onAfterAppear:a,onEnter:t,onAfterEnter:a,onBeforeLeave:t},()=>n.default())}});const po=({custom:e})=>r(nc,{class:["theme-hope-content",{custom:e}]});po.displayName="MarkdownContent",po.props={custom:Boolean};var al=po;const Eu=()=>r(ve,{name:"author"},()=>r("path",{d:"M649.6 633.6c86.4-48 147.2-144 147.2-249.6 0-160-128-288-288-288s-288 128-288 288c0 108.8 57.6 201.6 147.2 249.6-121.6 48-214.4 153.6-240 288-3.2 9.6 0 19.2 6.4 25.6 3.2 9.6 12.8 12.8 22.4 12.8h704c9.6 0 19.2-3.2 25.6-12.8 6.4-6.4 9.6-16 6.4-25.6-25.6-134.4-121.6-240-243.2-288z"}));Eu.displayName="AuthorIcon";const wu=()=>r(ve,{name:"calendar"},()=>r("path",{d:"M716.4 110.137c0-18.753-14.72-33.473-33.472-33.473-18.753 0-33.473 14.72-33.473 33.473v33.473h66.993v-33.473zm-334.87 0c0-18.753-14.72-33.473-33.473-33.473s-33.52 14.72-33.52 33.473v33.473h66.993v-33.473zm468.81 33.52H716.4v100.465c0 18.753-14.72 33.473-33.472 33.473a33.145 33.145 0 01-33.473-33.473V143.657H381.53v100.465c0 18.753-14.72 33.473-33.473 33.473a33.145 33.145 0 01-33.473-33.473V143.657H180.6A134.314 134.314 0 0046.66 277.595v535.756A134.314 134.314 0 00180.6 947.289h669.74a134.36 134.36 0 00133.94-133.938V277.595a134.314 134.314 0 00-133.94-133.938zm33.473 267.877H147.126a33.145 33.145 0 01-33.473-33.473c0-18.752 14.72-33.473 33.473-33.473h736.687c18.752 0 33.472 14.72 33.472 33.473a33.145 33.145 0 01-33.472 33.473z"}));wu.displayName="CalendarIcon";const Au=()=>r(ve,{name:"category"},()=>r("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));Au.displayName="CategoryIcon";const Pu=()=>r(ve,{name:"print"},()=>r("path",{d:"M819.2 364.8h-44.8V128c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v236.8h-44.8C145.067 364.8 96 413.867 96 473.6v192c0 59.733 49.067 108.8 108.8 108.8h44.8V896c0 17.067 14.933 32 32 32h460.8c17.067 0 32-14.933 32-32V774.4h44.8c59.733 0 108.8-49.067 108.8-108.8v-192c0-59.733-49.067-108.8-108.8-108.8zM313.6 160h396.8v204.8H313.6V160zm396.8 704H313.6V620.8h396.8V864zM864 665.6c0 25.6-19.2 44.8-44.8 44.8h-44.8V588.8c0-17.067-14.933-32-32-32H281.6c-17.067 0-32 14.933-32 32v121.6h-44.8c-25.6 0-44.8-19.2-44.8-44.8v-192c0-25.6 19.2-44.8 44.8-44.8h614.4c25.6 0 44.8 19.2 44.8 44.8v192z"}));Pu.displayName="PrintIcon";const Su=()=>r(ve,{name:"tag"},()=>r("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));Su.displayName="TagIcon";const xu=()=>r(ve,{name:"timer"},()=>r("path",{d:"M799.387 122.15c4.402-2.978 7.38-7.897 7.38-13.463v-1.165c0-8.933-7.38-16.312-16.312-16.312H256.33c-8.933 0-16.311 7.38-16.311 16.312v1.165c0 5.825 2.977 10.874 7.637 13.592 4.143 194.44 97.22 354.963 220.201 392.763-122.204 37.542-214.893 196.511-220.2 389.397-4.661 5.049-7.638 11.651-7.638 19.03v5.825h566.49v-5.825c0-7.379-2.849-13.981-7.509-18.9-5.049-193.016-97.867-351.985-220.2-389.527 123.24-37.67 216.446-198.453 220.588-392.892zM531.16 450.445v352.632c117.674 1.553 211.787 40.778 211.787 88.676H304.097c0-48.286 95.149-87.382 213.728-88.676V450.445c-93.077-3.107-167.901-81.297-167.901-177.093 0-8.803 6.99-15.793 15.793-15.793 8.803 0 15.794 6.99 15.794 15.793 0 80.261 63.69 145.635 142.01 145.635s142.011-65.374 142.011-145.635c0-8.803 6.99-15.793 15.794-15.793s15.793 6.99 15.793 15.793c0 95.019-73.789 172.82-165.96 177.093z"}));xu.displayName="TimerIcon";const Tu=()=>r(ve,{name:"word"},()=>[r("path",{d:"M518.217 432.64V73.143A73.143 73.143 0 01603.43 1.097a512 512 0 01419.474 419.474 73.143 73.143 0 01-72.046 85.212H591.36a73.143 73.143 0 01-73.143-73.143z"}),r("path",{d:"M493.714 566.857h340.297a73.143 73.143 0 0173.143 85.577A457.143 457.143 0 11371.566 117.76a73.143 73.143 0 0185.577 73.143v339.383a36.571 36.571 0 0036.571 36.571z"})]);Tu.displayName="WordIcon";const et=()=>{const e=re();return w(()=>e.value.metaLocales)};var tm=H({name:"AuthorInfo",inheritAttrs:!1,props:{author:{type:Array,required:!0},pure:Boolean},setup(e){const n=et();return()=>e.author.length?r("span",{class:"page-author-info","aria-label":`${n.value.author}${e.pure?"":"🖊"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[r(Eu),r("span",e.author.map(t=>t.url?r("a",{class:"page-author-item",href:t.url,target:"_blank",rel:"noopener noreferrer"},t.name):r("span",{class:"page-author-item"},t.name))),r("span",{property:"author",content:e.author.map(t=>t.name).join(", ")})]):null}}),am=H({name:"CategoryInfo",inheritAttrs:!1,props:{category:{type:Array,required:!0},pure:Boolean},setup(e){const n=$e(),t=ue(),a=et(),s=(o,l="")=>{l&&t.value.path!==l&&(o.preventDefault(),n.push(l))};return()=>e.category.length?r("span",{class:"page-category-info","aria-label":`${a.value.category}${e.pure?"":"🌈"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[r(Au),e.category.map(({name:o,path:l})=>r("span",{class:["page-category-item",{[`category${hs(o,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:i=>s(i,l)},o)),r("meta",{property:"articleSection",content:e.category.map(({name:o})=>o).join(",")})]):null}}),sm=H({name:"DateInfo",inheritAttrs:!1,props:{date:{type:Object,default:null},localizedDate:{type:String,default:""},pure:Boolean},setup(e){const n=Yi(),t=et();return()=>e.date?r("span",{class:"page-date-info","aria-label":`${t.value.date}${e.pure?"":"📅"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[r(wu),r("span",r(fs,()=>e.localizedDate||e.date.toLocaleDateString(n.value))),r("meta",{property:"datePublished",content:e.date.toISOString()||""})]):null}}),om=H({name:"OriginalInfo",inheritAttrs:!1,props:{isOriginal:Boolean},setup(e){const n=et();return()=>e.isOriginal?r("span",{class:"page-original-info"},n.value.origin):null}}),lm=H({name:"ReadingTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const n=et(),t=w(()=>{if(!e.readingTime)return null;const{minutes:a}=e.readingTime;return a<1?"PT1M":`PT${Math.round(a)}M`});return()=>{var a,s;return(a=e.readingTimeLocale)!=null&&a.time?r("span",{class:"page-reading-time-info","aria-label":`${n.value.readingTime}${e.pure?"":"⌛"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[r(xu),r("span",(s=e.readingTimeLocale)==null?void 0:s.time),r("meta",{property:"timeRequired",content:t.value})]):null}}}),rm=H({name:"TagInfo",inheritAttrs:!1,props:{tag:{type:Array,default:()=>[]},pure:Boolean},setup(e){const n=$e(),t=ue(),a=et(),s=(o,l="")=>{l&&t.value.path!==l&&(o.preventDefault(),n.push(l))};return()=>e.tag.length?r("span",{class:"page-tag-info","aria-label":`${a.value.tag}${e.pure?"":"🏷"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[r(Su),e.tag.map(({name:o,path:l})=>r("span",{class:["page-tag-item",{[`tag${hs(o,9)}`]:!e.pure,clickable:l}],role:l?"navigation":"",onClick:i=>s(i,l)},o)),r("meta",{property:"keywords",content:e.tag.map(({name:o})=>o).join(",")})]):null}}),im=H({name:"ReadTimeInfo",inheritAttrs:!1,props:{readingTime:{type:Object,default:()=>null},readingTimeLocale:{type:Object,default:()=>null},pure:Boolean},setup(e){const n=et();return()=>{var t,a,s;return(t=e.readingTimeLocale)!=null&&t.words?r("span",{class:"page-word-info","aria-label":`${n.value.words}${e.pure?"":"🔠"}`,...e.pure?{}:{"data-balloon-pos":"down"}},[r(Tu),r("span",(a=e.readingTimeLocale)==null?void 0:a.words),r("meta",{property:"wordCount",content:(s=e.readingTime)==null?void 0:s.words})]):null}}}),Lu=H({name:"PageInfo",components:{AuthorInfo:tm,CategoryInfo:am,DateInfo:sm,OriginalInfo:om,PageViewInfo:()=>null,ReadingTimeInfo:lm,TagInfo:rm,WordInfo:im},props:{items:{type:[Array,Boolean],default:()=>["Author","Original","Date","PageView","ReadingTime","Category","Tag"]},info:{type:Object,required:!0}},setup(e){const n=Gt();return()=>e.items?r("div",{class:"page-info"},e.items.map(t=>r(Qe(`${t}Info`),{...e.info,pure:n.value}))):null}}),cm=H({name:"PrintButton",setup(){const e=vt(),n=re();return()=>e.value.print===!1?null:r("button",{type:"button",class:"print-button",title:n.value.metaLocales.print,onClick:()=>{window.print()}},r(Pu))}});const um=({title:e,level:n,slug:t})=>r(Ne,{to:`#${t}`,class:["toc-link",`level${n}`]},()=>e),fo=(e,n)=>{const t=xn();return e.length&&n>0?r("ul",{class:"toc-list"},e.map(a=>{const s=fo(a.children,n-1);return[r("li",{class:["toc-item",{active:t.hash===`#${a.slug}`}]},um(a)),s?r("li",s):null]})):null};var Cu=H({name:"TOC",props:{items:{type:Array,default:()=>[]},headerDepth:{type:Number,default:2}},slots:Object,setup(e,{slots:n}){const t=xn(),a=ue(),s=et(),o=en(),l=Z("-1.7rem"),i=u=>{var p;(p=o.value)==null||p.scrollTo({top:u,behavior:"smooth"})},c=()=>{if(o.value){const u=document.querySelector(".toc-item.active");u?l.value=`${u.getBoundingClientRect().top-o.value.getBoundingClientRect().top+o.value.scrollTop}px`:l.value="-1.7rem"}else l.value="-1.7rem"};return _e(()=>{le(()=>t.hash,u=>{if(o.value){const p=document.querySelector(`#toc a.toc-link[href$="${u}"]`);if(!p)return;const{top:d,height:f}=o.value.getBoundingClientRect(),{top:v,height:b}=p.getBoundingClientRect();vd+f&&i(o.value.scrollTop+v+b-d-f)}}),le(()=>t.fullPath,c,{flush:"post",immediate:!0})}),()=>{var p,d;const u=e.items.length?fo(e.items,e.headerDepth):a.value.headers?fo(a.value.headers,e.headerDepth):null;return u?r("div",{class:"toc-place-holder"},[r("aside",{id:"toc"},[(p=n.before)==null?void 0:p.call(n),r("div",{class:"toc-header"},[s.value.toc,r(cm)]),r("div",{class:"toc-wrapper",ref:o},[u,r("div",{class:"toc-marker",style:{top:l.value}})]),(d=n.after)==null?void 0:d.call(n)])]):null}}}),sl=H({name:"SkipLink",props:{content:{type:String,default:"main-content"}},setup(e){const n=ue(),t=re(),a=en(),s=({target:o})=>{const l=document.querySelector(o.hash);if(l){const i=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",i)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",i),l.focus(),window.scrollTo(0,0)}};return _e(()=>{le(()=>n.value.path,()=>a.value.focus())}),()=>[r("span",{ref:a,tabindex:"-1"}),r("a",{href:`#${e.content}`,class:"vp-skip-link sr-only",onClick:s},t.value.routeLocales.skipToContent)]}});let Hs=null,Yt=null;const pm={wait:()=>Hs,pending:()=>{Hs=new Promise(e=>Yt=e)},resolve:()=>{Yt==null||Yt(),Hs=null,Yt=null}},Ru=()=>pm;var dm=H({name:"FadeSlideY",slots:Object,setup(e,{slots:n}){const{resolve:t,pending:a}=Ru();return()=>r(Zn,{name:"fade-slide-y",mode:"out-in",onBeforeEnter:t,onBeforeLeave:a},()=>{var s;return(s=n.default)==null?void 0:s.call(n)})}});const fm=(e,n)=>{const t=e.replace(n,"/").split("/"),a=[];let s=$o(n);return t.forEach((o,l)=>{l!==t.length-1?(s+=`${o}/`,a.push({link:s,name:o||"Home"})):o!==""&&(s+=o,a.push({link:s,name:o}))}),a},Ou=(e,{slots:n})=>{var d,f;const{bgImage:t,bgImageDark:a,bgImageStyle:s,color:o,description:l,image:i,imageDark:c,header:u,features:p=[]}=e;return r("div",{class:"vp-feature-wrapper"},[t?r("div",{class:["vp-feature-bg",{light:a}],style:[{"background-image":`url(${t})`},s]}):null,a?r("div",{class:"vp-feature-bg dark",style:[{"background-image":`url(${a})`},s]}):null,r("div",{class:"vp-feature",style:o?{color:o}:{}},[((d=n.image)==null?void 0:d.call(n,e))||[i?r("img",{class:["vp-feature-image",{light:c}],src:Ae(i),alt:u}):null,c?r("img",{class:"vp-feature-image dark",src:Ae(c),alt:u}):null],((f=n.info)==null?void 0:f.call(n,e))||[u?r("h2",{class:"vp-feature-header"},u):null,l?r("p",{class:"vp-feature-description",innerHTML:l}):null],p.length?r("div",{class:"vp-features"},p.map(({icon:v,title:b,details:k,link:A})=>{const y=[r("h3",{class:"vp-feature-title"},[r(We,{icon:v}),r("span",{innerHTML:b})]),r("p",{class:"vp-feature-details",innerHTML:k})];return A?as(A)?r("a",{class:"vp-feature-item link",href:A,"aria-label":b,target:"_blank"},y):r(Ne,{class:"vp-feature-item link",to:A,"aria-label":b},()=>y):r("div",{class:"vp-feature-item"},y)})):null])])};Ou.displayName="FeaturePanel";var zr=Ou;const Iu=e=>{const{icon:n="",color:t,size:a}=e,s={};return t&&(s.color=t),a&&(s.height=Number.isNaN(Number(a))?a:`${a}px`),ft(n)?r("img",{class:"icon",src:n,"no-view":"",style:s}):wa(n)?r("img",{class:"icon",src:Ae(n),"no-view":"",style:s}):r(Qe("FontIcon"),e)};Iu.displayName="HopeIcon";var vm=Iu,mm=H({name:"HeroInfo",slots:Object,setup(e,{slots:n}){const t=ke(),a=Wt(),s=w(()=>t.value.heroFullScreen??!1),o=w(()=>{const{heroText:u,tagline:p}=t.value;return{text:u??a.value.title??"Hello",tagline:p??a.value.description??"",isFullScreen:s.value}}),l=w(()=>{const{heroText:u,heroImage:p,heroImageDark:d,heroAlt:f,heroImageStyle:v}=t.value;return{image:p?Ae(p):null,imageDark:d?Ae(d):null,heroStyle:v,alt:f||u||"hero image",isFullScreen:s.value}}),i=w(()=>{const{bgImage:u,bgImageDark:p,bgImageStyle:d}=t.value;return{image:Mn(u)?Ae(u):null,imageDark:Mn(p)?Ae(p):null,bgStyle:d,isFullScreen:s.value}}),c=w(()=>t.value.actions??[]);return()=>{var u,p,d;return r("header",{class:["vp-hero-info-wrapper",{fullscreen:s.value}]},[((u=n.heroBg)==null?void 0:u.call(n,i.value))||[i.value.image?r("div",{class:["vp-hero-mask",{light:i.value.imageDark}],style:[{"background-image":`url(${i.value.image})`},i.value.bgStyle]}):null,i.value.imageDark?r("div",{class:"vp-hero-mask dark",style:[{"background-image":`url(${i.value.imageDark})`},i.value.bgStyle]}):null],r("div",{class:"vp-hero-info"},[((p=n.heroImage)==null?void 0:p.call(n,l.value))||r(me,{appear:!0,type:"group"},()=>[l.value.image?r("img",{key:"light",class:["vp-hero-image",{light:l.value.imageDark}],style:l.value.heroStyle,src:l.value.image,alt:l.value.alt}):null,l.value.imageDark?r("img",{key:"dark",class:"vp-hero-image dark",style:l.value.heroStyle,src:l.value.imageDark,alt:l.value.alt}):null]),((d=n.heroInfo)==null?void 0:d.call(n,o.value))??r("div",{class:"vp-hero-infos"},[o.value.text?r(me,{appear:!0,delay:.04},()=>r("h1",{id:"main-title"},o.value.text)):null,o.value.tagline?r(me,{appear:!0,delay:.08},()=>r("p",{id:"main-description",innerHTML:o.value.tagline})):null,c.value.length?r(me,{appear:!0,delay:.12},()=>r("p",{class:"vp-hero-actions"},c.value.map(f=>r(qe,{class:["vp-hero-action",f.type||"default"],config:f,noExternalLinkIcon:!0},f.icon?{before:()=>r(vm,{icon:f.icon})}:{})))):null])])])}}});const Vu=(e,{slots:n})=>{var f,v,b;const{bgImage:t,bgImageDark:a,bgImageStyle:s,color:o,description:l,image:i,imageDark:c,header:u,highlights:p=[],type:d="un-order"}=e;return r("div",{class:"vp-highlight-wrapper",style:o?{color:o}:{}},[t?r("div",{class:["vp-highlight-bg",{light:a}],style:[{"background-image":`url(${t})`},s]}):null,a?r("div",{class:"vp-highlight-bg dark",style:[{"background-image":`url(${a})`},s]}):null,r("div",{class:"vp-highlight"},[((f=n.image)==null?void 0:f.call(n,e))||[i?r("img",{class:["vp-highlight-image",{light:c}],src:Ae(i),alt:u}):null,c?r("img",{class:"vp-highlight-image dark",src:Ae(c),alt:u}):null],((v=n.info)==null?void 0:v.call(n,e))||[r("div",{class:"vp-highlight-info-wrapper"},r("div",{class:"vp-highlight-info"},[u?r("h2",{class:"vp-highlight-header",innerHTML:u}):null,l?r("p",{class:"vp-highlight-description",innerHTML:l}):null,((b=n.highlights)==null?void 0:b.call(n,p))||r(d==="order"?"ol":d==="no-order"?"dl":"ul",{class:"vp-highlights"},p.map(({icon:k,title:A,details:y,link:x})=>{const _=[r(d==="no-order"?"dt":"h3",{class:"vp-highlight-title"},[k?r(We,{class:"vp-highlight-icon",icon:k}):null,r("span",{innerHTML:A})]),y?r(d==="no-order"?"dd":"p",{class:"vp-highlight-details",innerHTML:y}):null];return r(d==="no-order"?"div":"li",{class:["vp-highlight-item-wrapper",{link:x}]},x?Tf(x)?r("a",{class:"vp-highlight-item link",href:x,"aria-label":A,target:"_blank"},_):r(Ne,{class:"vp-highlight-item link",to:x,"aria-label":A},()=>_):r("div",{class:"vp-highlight-item"},_))}))]))]])])};Vu.displayName="HighlightPanel";var hm=Vu,gm=H({name:"HomePage",slots:Object,setup(e,{slots:n}){const t=Gt(),a=ke(),s=w(()=>{const{features:l}=a.value;return ee(l)?l:null}),o=w(()=>{const{highlights:l}=a.value;return ee(l)?l:null});return()=>{var l,i,c,u;return r("main",{id:"main-content",class:["vp-project-home ",{pure:t.value}],"aria-labelledby":a.value.heroText===null?"":"main-title"},[(l=n.top)==null?void 0:l.call(n),r(mm),((i=o.value)==null?void 0:i.map(p=>"features"in p?r(zr,p):r(hm,p)))||(s.value?r(me,{appear:!0,delay:.24},()=>r(zr,{features:s.value})):null),(c=n.center)==null?void 0:c.call(n),r(me,{appear:!0,delay:.32},()=>r(al)),(u=n.bottom)==null?void 0:u.call(n)])}}}),bm=H({name:"BreadCrumb",setup(){const e=$e(),n=ue(),t=gn(),a=ke(),s=re(),o=en([]),l=w(()=>(a.value.breadcrumb||a.value.breadcrumb!==!1&&s.value.breadcrumb!==!1)&&o.value.length>1),i=w(()=>a.value.breadcrumbIcon||a.value.breadcrumbIcon!==!1&&s.value.breadcrumbIcon!==!1),c=()=>{const u=e.getRoutes(),p=fm(n.value.path,t.value).map(({link:d,name:f})=>{const v=u.find(b=>b.path===d);if(v){const{meta:b,path:k}=Mt(e,v.path);return{title:b[ye.shortTitle]||b[ye.title]||f,icon:b[ye.icon],path:k}}return null}).filter(d=>d!==null);p.length>1&&(o.value=p)};return _e(()=>{le(()=>n.value.path,c,{immediate:!0})}),()=>r("nav",{class:["vp-breadcrumb",{disable:!l.value}]},l.value?r("ol",{vocab:"https://schema.org/",typeof:"BreadcrumbList"},o.value.map((u,p)=>r("li",{class:{"is-active":o.value.length-1===p},property:"itemListElement",typeof:"ListItem"},[r(Ne,{to:u.path,property:"item",typeof:"WebPage"},()=>[i.value?r(We,{icon:u.icon}):null,r("span",{property:"name"},u.title||"Unknown")]),r("meta",{property:"position",content:p+1})]))):[])}});const $r=e=>{const n=$e();return e===!1?!1:he(e)?St(n,e,!0):zo(e)?e:null},vo=(e,n,t)=>{const a=e.findIndex(s=>s.link===n);if(a!==-1){const s=e[a+t];return s!=null&&s.link?s:null}for(const s of e)if(s.children){const o=vo(s.children,n,t);if(o)return o}return null};var ym=H({name:"PageNav",setup(){const e=re(),n=ke(),t=nl(),a=ue(),s=Sa(),o=w(()=>{const i=$r(n.value.prev);return i===!1?null:i||(e.value.prevLink===!1?null:vo(t.value,a.value.path,-1))}),l=w(()=>{const i=$r(n.value.next);return i===!1?null:i||(e.value.nextLink===!1?null:vo(t.value,a.value.path,1))});return Le("keydown",i=>{i.altKey&&(i.key==="ArrowRight"?l.value&&(s(l.value.link),i.preventDefault()):i.key==="ArrowLeft"&&o.value&&(s(o.value.link),i.preventDefault()))}),()=>o.value||l.value?r("nav",{class:"vp-page-nav"},[o.value?r(qe,{class:"prev",config:o.value},()=>{var i,c;return[r("div",{class:"hint"},[r("span",{class:"arrow start"}),e.value.metaLocales.prev]),r("div",{class:"link"},[r(We,{icon:(i=o.value)==null?void 0:i.icon}),(c=o.value)==null?void 0:c.text])]}):null,l.value?r(qe,{class:"next",config:l.value},()=>{var i,c;return[r("div",{class:"hint"},[e.value.metaLocales.next,r("span",{class:"arrow end"})]),r("div",{class:"link"},[(i=l.value)==null?void 0:i.text,r(We,{icon:(c=l.value)==null?void 0:c.icon})])]}):null]):null}});const _m={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},km=({docsRepo:e,docsBranch:n,docsDir:t,filePathRelative:a,editLinkPattern:s})=>{if(!a)return null;const o=Tc(e);let l;return s?l=s:o!==null&&(l=_m[o]),l?l.replace(/:repo/,ft(e)?e:`https://github.com/${e}`).replace(/:branch/,n).replace(/:path/,ji(`${$o(t)}/${a}`)):null},Em=()=>{const e=re(),n=ue(),t=ke();return w(()=>{const{repo:a,docsRepo:s=a,docsBranch:o="main",docsDir:l="",editLink:i,editLinkPattern:c=""}=e.value;if(!(t.value.editLink??i??!0)||!s)return null;const u=km({docsRepo:s,docsBranch:o,docsDir:l,editLinkPattern:c,filePathRelative:n.value.filePathRelative});return u?{text:e.value.metaLocales.editLink,link:u}:null})},wm=()=>{const e=Wt(),n=re(),t=ue(),a=ke();return w(()=>{var s,o;return!(a.value.lastUpdated??n.value.lastUpdated??!0)||!((s=t.value.git)!=null&&s.updatedTime)?null:new Date((o=t.value.git)==null?void 0:o.updatedTime).toLocaleString(e.value.lang)})},Am=()=>{const e=re(),n=ue(),t=ke();return w(()=>{var a;return t.value.contributors??e.value.contributors??!0?((a=n.value.git)==null?void 0:a.contributors)??null:null})};var Pm=H({name:"PageTitle",setup(){const e=ue(),n=ke(),t=re(),{info:a,items:s}=x2();return()=>r("div",{class:"vp-page-title"},[r("h1",[t.value.titleIcon===!1?null:r(We,{icon:n.value.icon}),e.value.title]),r(Lu,{info:a.value,...s.value===null?{}:{items:s.value}}),r("hr")])}});const Du=()=>r(ve,{name:"edit"},()=>[r("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),r("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})]);Du.displayName="EditIcon";var Sm=H({name:"PageMeta",setup(){const e=re(),n=Em(),t=wm(),a=Am();return()=>{const{metaLocales:s}=e.value;return r("footer",{class:"page-meta"},[n.value?r("div",{class:"meta-item edit-link"},r(qe,{class:"label",config:n.value},{before:()=>r(Du)})):null,r("div",{class:"meta-item git-info"},[t.value?r("div",{class:"update-time"},[r("span",{class:"label"},`${s.lastUpdated}: `),r(fs,()=>r("span",{class:"info"},t.value))]):null,a.value&&a.value.length?r("div",{class:"contributors"},[r("span",{class:"label"},`${s.contributors}: `),a.value.map(({email:o,name:l},i)=>[r("span",{class:"contributor",title:`email: ${o}`},l),i!==a.value.length-1?",":""])]):null])])}}}),xm=H({name:"NormalPage",slots:Object,setup(e,{slots:n}){const t=ke(),a=ue(),{isDarkmode:s}=Ta(),o=re(),l=w(()=>t.value.toc||t.value.toc!==!1&&o.value.toc!==!1);return()=>r("main",{id:"main-content",class:"vp-page"},r(Dn("LocalEncrypt")?Qe("LocalEncrypt"):_c,()=>{var i,c,u,p;return[(i=n.top)==null?void 0:i.call(n),t.value.cover?r("img",{class:"page-cover",src:Ae(t.value.cover),alt:a.value.title,"no-view":""}):null,r(bm),r(Pm),l.value?r(Cu,{headerDepth:t.value.headerDepth??o.value.headerDepth??2},{before:()=>{var d;return(d=n.tocBefore)==null?void 0:d.call(n)},after:()=>{var d;return(d=n.tocAfter)==null?void 0:d.call(n)}}):null,(c=n.contentBefore)==null?void 0:c.call(n),r(al),(u=n.contentAfter)==null?void 0:u.call(n),r(Sm),r(ym),Dn("CommentService")?r(Qe("CommentService"),{darkmode:s.value}):null,(p=n.bottom)==null?void 0:p.call(n)]}))}}),Tm=H({name:"Layout",slots:Object,setup(e,{slots:n}){const t=vt(),a=re(),s=ue(),o=ke(),{isMobile:l}=xa(),i=w(()=>{var c,u;return((c=a.value.blog)==null?void 0:c.sidebarDisplay)||((u=t.value.blog)==null?void 0:u.sidebarDisplay)||"mobile"});return()=>[r(sl),r(tl,{},{default:()=>{var c;return((c=n.default)==null?void 0:c.call(n))||(o.value.home?r(gm):r(dm,()=>r(xm,{key:s.value.path},{top:()=>{var u;return(u=n.top)==null?void 0:u.call(n)},bottom:()=>{var u;return(u=n.bottom)==null?void 0:u.call(n)},contentBefore:()=>{var u;return(u=n.contentBefore)==null?void 0:u.call(n)},contentAfter:()=>{var u;return(u=n.contentAfter)==null?void 0:u.call(n)},tocBefore:()=>{var u;return(u=n.tocBefore)==null?void 0:u.call(n)},tocAfter:()=>{var u;return(u=n.tocAfter)==null?void 0:u.call(n)}})))},...i.value!=="none"?{navScreenBottom:()=>r(Qe("BloggerInfo"))}:{},...!l.value&&i.value==="always"?{sidebar:()=>r(Qe("BloggerInfo"))}:{}})]}}),Lm=H({name:"NotFoundHint",setup(){const e=re(),n=()=>{const t=e.value.routeLocales.notFoundMsg;return t[Math.floor(Math.random()*t.length)]};return()=>r("div",{class:"not-found-hint"},[r("p",{class:"error-code"},"404"),r("h1",{class:"error-title"},e.value.routeLocales.notFoundTitle),r("p",{class:"error-hint"},n())])}}),Cm=H({name:"NotFound",slots:Object,setup(e,{slots:n}){const t=gn(),a=re(),{navigate:s}=so({to:a.value.home??t.value});return()=>[r(sl),r(tl,{noSidebar:!0},()=>{var o;return r("main",{id:"main-content",class:"vp-page not-found"},((o=n.default)==null?void 0:o.call(n))||[r(Lm),r("div",{class:"actions"},[r("button",{type:"button",class:"action-button",onClick:()=>{window.history.go(-1)}},a.value.routeLocales.back),r("button",{type:"button",class:"action-button",onClick:()=>s()},a.value.routeLocales.home)])])})]}});const Rm={},Om={category:{"/":{path:"/category/",map:{Linux:{path:"/category/linux/",keys:["v-67bc2210","v-ec98fe74","v-726f7072","v-218ea978","v-dfd7264e","v-ea20dcf0"]},Install:{path:"/category/install/",keys:["v-25eb367b","v-3ad9eb9e","v-22c29653","v-03c8e5f0","v-279833aa","v-f0abf42e","v-60f15105","v-95f27414","v-28c0fe97"]},linux:{path:"/category/linux/",keys:["v-279833aa"]},Theory:{path:"/category/theory/",keys:["v-5f5c14e3"]},安装:{path:"/category/%E5%AE%89%E8%A3%85/",keys:["v-3ad9eb9e"]},"Materials-Studio":{path:"/category/materials-studio/",keys:["v-7757da05","v-ba918472","v-5934b528","v-e6ee3948"]},VASP:{path:"/category/vasp/",keys:["v-087aa3e5","v-264f8f39","v-ee92304c","v-76165238","v-c8267792","v-207456c6","v-580e7486","v-8a8094b0","v-76a4ec21","v-0d003bb2","v-e90de79a","v-3de23628","v-6c38d36e","v-0e400be1","v-389e5394","v-b05d858c","v-2deff341","v-2599bd96","v-48a4ee89"]},Others:{path:"/category/others/",keys:["v-6f1e0448","v-5ae1580f","v-417c1e62"]},优化:{path:"/category/%E4%BC%98%E5%8C%96/",keys:["v-087aa3e5","v-264f8f39","v-ee92304c","v-76165238"]},电子结构:{path:"/category/%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/",keys:["v-c8267792","v-8a8094b0"]},反应路径:{path:"/category/%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/",keys:["v-207456c6","v-580e7486"]},分子动力学:{path:"/category/%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/",keys:["v-76a4ec21"]},"Other App":{path:"/category/other-app/",keys:["v-89e8430c"]}}}},tag:{"/":{path:"/tag/",map:{"ase python":{path:"/tag/ase-python/",keys:["v-14e0ef58"]}}}}},Im={article:{"/":{path:"/article/",keys:["v-0d8a8100","v-39c6dbde","v-15d002d2","v-14e0ef58","v-18ed4b78","v-1aa77d92","v-398f20bb","v-200d9c72","v-4022cd1f","v-326a924f","v-326d07e0","v-25eb367b","v-45111e2a","v-3e8b5a96","v-587333a4","v-52613576","v-3a58307c","v-74acd478","v-1989b542","v-1f0249ff","v-bca6172c","v-3ad3b172","v-08a9b111","v-39b473fe","v-bc476d32","v-3e741b5c","v-bf62cb02","v-74326aa0","v-42793124","v-7a387cd2","v-818acdc8","v-27805d44","v-75033482","v-f322b4c4","v-cd2badd2","v-7fdba302","v-4ebfad01","v-37da871d","v-3ad9eb9e","v-462cf0b5","v-2d2d3678","v-724feff4","v-0f6d941f","v-22c29653","v-3ba57220","v-087aa3e5","v-264f8f39","v-ee92304c","v-76165238","v-c8267792","v-207456c6","v-580e7486","v-8a8094b0","v-7757da05","v-76a4ec21","v-03c8e5f0","v-0d003bb2","v-89e8430c","v-ba918472","v-e90de79a","v-3de23628","v-6c38d36e","v-6f1e0448","v-0e400be1","v-389e5394","v-b05d858c","v-279833aa","v-f0abf42e","v-60f15105","v-95f27414","v-2deff341","v-5f5c14e3","v-2599bd96","v-28c0fe97","v-5ae1580f","v-1985bd92","v-3c7a5793","v-633fb764","v-67bc2210","v-ec98fe74","v-48a4ee89","v-55a1aa9d","v-726f7072","v-218ea978","v-dfd7264e","v-ea20dcf0","v-290994d6","v-5934b528","v-e6ee3948","v-417c1e62"]}},star:{"/":{path:"/star/",keys:[]}},timeline:{"/":{path:"/timeline/",keys:["v-0d8a8100","v-39c6dbde","v-15d002d2","v-14e0ef58","v-18ed4b78","v-1aa77d92","v-398f20bb","v-200d9c72","v-4022cd1f","v-326a924f","v-326d07e0","v-25eb367b","v-45111e2a","v-3e8b5a96","v-587333a4","v-52613576","v-3a58307c","v-74acd478","v-1989b542","v-1f0249ff","v-bca6172c","v-3ad3b172","v-08a9b111","v-39b473fe","v-bc476d32","v-3e741b5c","v-bf62cb02","v-74326aa0","v-42793124","v-7a387cd2","v-818acdc8","v-27805d44","v-75033482","v-f322b4c4","v-cd2badd2","v-7fdba302","v-4ebfad01","v-37da871d","v-3ad9eb9e","v-462cf0b5","v-2d2d3678","v-724feff4","v-0f6d941f","v-22c29653","v-3ba57220","v-087aa3e5","v-264f8f39","v-ee92304c","v-76165238","v-c8267792","v-207456c6","v-580e7486","v-8a8094b0","v-7757da05","v-76a4ec21","v-03c8e5f0","v-0d003bb2","v-89e8430c","v-ba918472","v-e90de79a","v-3de23628","v-6c38d36e","v-6f1e0448","v-0e400be1","v-389e5394","v-b05d858c","v-279833aa","v-f0abf42e","v-60f15105","v-95f27414","v-2deff341","v-5f5c14e3","v-2599bd96","v-28c0fe97","v-5ae1580f","v-1985bd92","v-3c7a5793","v-633fb764","v-67bc2210","v-ec98fe74","v-48a4ee89","v-55a1aa9d","v-726f7072","v-218ea978","v-dfd7264e","v-ea20dcf0","v-290994d6","v-5934b528","v-e6ee3948","v-417c1e62"]}}},Fr=Z(Om),Mu=(e="")=>{const n=ue(),t=$e(),a=gn();return w(()=>{var c;const s=e||((c=ke().value.blog)==null?void 0:c.key)||"";if(!s)return console.warn("useBlogCategory: key not found"),{path:"/",map:{}};const o=t.getRoutes();if(!Fr.value[s])throw new Error(`useBlogCategory: key ${s} is invalid`);const l=Fr.value[s][a.value],i={path:l.path,map:{}};for(const u in l.map){const p=l.map[u];i.map[u]={path:p.path,items:[]};for(const d of p.keys){const f=o.find(({name:v})=>v===d);if(f){const v=Mt(t,f.path);i.map[u].items.push({path:v.path,info:v.meta})}}n.value.path===p.path&&(i.currentItems=i.map[u].items)}return i})},Hr=Z(Im),bs=(e="")=>{const n=$e(),t=gn();return w(()=>{var i;const a=e||((i=ke().value.blog)==null?void 0:i.key)||"";if(!a)return console.warn("useBlogType: key not found"),{path:"/",items:[]};if(!Hr.value[a])throw new Error(`useBlogType: key ${e} is invalid`);const s=n.getRoutes(),o=Hr.value[a][t.value],l={path:o.path,items:[]};for(const c of o.keys){const u=s.find(({name:p})=>p===c);if(u){const p=Mt(n,u.path);l.items.push({path:p.path,info:p.meta})}}return l})};var Vm=[];const Bu=Symbol.for("categoryMap"),La=()=>{const e=ce(Bu);if(!e)throw new Error("useCategoryMap() is called without provider.");return e},Dm=()=>{const e=Mu("category");rn(Bu,e)},Ca=()=>{const e=vt(),n=re();return w(()=>({...e.value.blog,...n.value.blog}))},Nu=Symbol.for("tagMap"),Ra=()=>{const e=ce(Nu);if(!e)throw new Error("useTagMap() is called without provider.");return e},Mm=()=>{const e=Mu("tag");rn(Nu,e)},Bm=e=>{const n=re();return w(()=>{const{[ye.author]:t}=e.value;return t?ha(t):t===!1?[]:ha(n.value.author,!1)})},Nm=e=>{const n=La();return w(()=>Ac(e.value[ye.category]).map(t=>({name:t,path:n.value.map[t].path})))},zm=e=>{const n=Ra();return w(()=>Pc(e.value[ye.tag]).map(t=>({name:t,path:n.value.map[t].path})))},$m=e=>w(()=>{const{[ye.date]:n}=e.value;return jo(n)}),Fm=e=>{const n=Ft(e,"info"),t=Ca(),a=Bm(n),s=Nm(n),o=zm(n),l=$m(n),i=Qc(),c=w(()=>({author:a.value,category:s.value,date:l.value,localizedDate:n.value[ye.localizedDate]||"",tag:o.value,isOriginal:n.value[ye.isOriginal]||!1,readingTime:n.value[ye.readingTime]||null,readingTimeLocale:n.value[ye.readingTime]&&i.value?Jc(n.value[ye.readingTime],i.value):null,pageview:e.path})),u=w(()=>t.value.articleInfo);return{info:c,items:u}},zu=Symbol(""),Oa=()=>{const e=ce(zu);if(!e)throw new Error("useArticles() is called without provider.");return e},Hm=()=>{const e=bs("article");rn(zu,e)},$u=Symbol(""),ol=()=>{const e=ce($u);if(!e)throw new Error("useStars() is called without provider.");return e},Wm=()=>{const e=bs("star");rn($u,e)},Fu=Symbol(""),ll=()=>{const e=ce(Fu);if(!e)throw new Error("useTimelines() is called without provider.");return e},Um=()=>{const e=bs("timeline"),n=w(()=>{const t=[];return e.value.items.forEach(({info:a,path:s})=>{const o=jo(a[ye.date]),l=o==null?void 0:o.getFullYear(),i=o?o.getMonth()+1:null,c=o==null?void 0:o.getDate();l&&i&&c&&((!t[0]||t[0].year!==l)&&t.unshift({year:l,items:[]}),t[0].items.push({date:`${i}/${c}`,info:a,path:s}))}),{...e.value,config:t.reverse()}});rn(Fu,n)},jm=()=>{Hm(),Dm(),Wm(),Mm(),Um()};var Gm=H({name:"SocialMedia",setup(){const e=Ca(),n=Gt(),t=w(()=>{const a=e.value.medias;return a?Ut(a).map(([s,o])=>({name:s,icon:Rm[s],url:o})):[]});return()=>t.value.length?r("div",{class:"vp-social-medias"},t.value.map(({name:a,icon:s,url:o})=>r("a",{class:"vp-social-media",href:o,rel:"noopener noreferrer",target:"_blank","aria-label":a,...n.value?{}:{"data-balloon-pos":"up"},innerHTML:s}))):null}}),rl=H({name:"BloggerInfo",setup(){const e=Ca(),n=Wt(),t=re(),a=Oa(),s=La(),o=Ra(),l=ll(),i=Sa(),c=w(()=>{var f;return e.value.name||((f=ha(t.value.author)[0])==null?void 0:f.name)||n.value.title}),u=w(()=>e.value.avatar||t.value.logo),p=w(()=>t.value.blogLocales),d=w(()=>e.value.intro);return()=>{const{article:f,category:v,tag:b,timeline:k}=p.value,A=[[a.value.path,a.value.items.length,f],[s.value.path,Sn(s.value.map).length,v],[o.value.path,Sn(o.value.map).length,b],[l.value.path,l.value.items.length,k]];return r("div",{class:"vp-blogger-info",vocab:"https://schema.org/",typeof:"Person"},[r("div",{class:"vp-blogger",...d.value?{style:{cursor:"pointer"},"aria-label":p.value.intro,"data-balloon-pos":"down",role:"link",onClick:()=>i(d.value)}:{}},[u.value?r("img",{class:["vp-blogger-avatar",{round:e.value.roundAvatar}],src:Ae(u.value),property:"image",alt:"Blogger Avatar",loading:"lazy"}):null,c.value?r("div",{class:"vp-blogger-name",property:"name"},c.value):null,e.value.description?r("div",{class:"vp-blogger-description",innerHTML:e.value.description}):null,d.value?r("meta",{property:"url",content:Ae(d.value)}):null]),r("div",{class:"vp-blog-counts"},A.map(([y,x,_])=>r(Ne,{class:"vp-blog-count",to:y},()=>[r("div",{class:"count"},x),r("div",_)]))),r(Gm)])}}});const il=()=>r(ve,{name:"category"},()=>r("path",{d:"M148.41 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H148.41c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.311-40.31zM147.556 553.478H429.73c22.263 0 40.311 18.048 40.311 40.31v282.176c0 22.263-18.048 40.312-40.31 40.312H147.555c-22.263 0-40.311-18.049-40.311-40.312V593.79c0-22.263 18.048-40.311 40.31-40.311zM593.927 106.992h282.176c22.263 0 40.31 18.048 40.31 40.31V429.48c0 22.263-18.047 40.31-40.31 40.31H593.927c-22.263 0-40.311-18.047-40.311-40.31V147.302c0-22.263 18.048-40.31 40.31-40.31zM730.22 920.502H623.926c-40.925 0-74.22-33.388-74.22-74.425V623.992c0-41.038 33.387-74.424 74.425-74.424h222.085c41.038 0 74.424 33.226 74.424 74.067v114.233c0 10.244-8.304 18.548-18.547 18.548s-18.548-8.304-18.548-18.548V623.635c0-20.388-16.746-36.974-37.33-36.974H624.13c-20.585 0-37.331 16.747-37.331 37.33v222.086c0 20.585 16.654 37.331 37.126 37.331H730.22c10.243 0 18.547 8.304 18.547 18.547 0 10.244-8.304 18.547-18.547 18.547z"}));il.displayName="CategoryIcon";const cl=()=>r(ve,{name:"tag"},()=>r("path",{d:"M939.902 458.563L910.17 144.567c-1.507-16.272-14.465-29.13-30.737-30.737L565.438 84.098h-.402c-3.215 0-5.726 1.005-7.634 2.913l-470.39 470.39a10.004 10.004 0 000 14.164l365.423 365.424c1.909 1.908 4.42 2.913 7.132 2.913s5.223-1.005 7.132-2.913l470.39-470.39c2.01-2.11 3.014-5.023 2.813-8.036zm-240.067-72.121c-35.458 0-64.286-28.828-64.286-64.286s28.828-64.285 64.286-64.285 64.286 28.828 64.286 64.285-28.829 64.286-64.286 64.286z"}));cl.displayName="TagIcon";const ul=()=>r(ve,{name:"timeline"},()=>r("path",{d:"M511.997 70.568c-243.797 0-441.429 197.633-441.429 441.435 0 243.797 197.632 441.429 441.43 441.429S953.431 755.8 953.431 512.002c0-243.796-197.637-441.434-441.435-441.434zm150.158 609.093-15.605 15.61c-8.621 8.615-22.596 8.615-31.215 0L472.197 552.126c-4.95-4.944-4.34-14.888-4.34-24.677V247.14c0-12.19 9.882-22.07 22.07-22.07h22.07c12.19 0 22.07 9.882 22.07 22.07v273.218l128.088 128.088c8.62 8.62 8.62 22.595 0 31.215zm0 0"}));ul.displayName="TimelineIcon";const Hu=()=>r(ve,{name:"slides"},()=>r("path",{d:"M896 170.667v426.666a85.333 85.333 0 0 1-85.333 85.334h-256v61.184l192.597 115.584-43.861 73.13-148.736-89.173v95.275h-85.334v-95.318l-148.736 89.216-43.861-73.13 192.597-115.627v-61.141h-256A85.333 85.333 0 0 1 128 597.333V170.667H85.333V85.333h853.334v85.334H896zm-682.667 0v426.666h597.334V170.667H213.333zM426.667 512h-85.334V341.333h85.334V512zm128 0h-85.334V256h85.334v256zm128 0h-85.334V384h85.334v128z"}));Hu.displayName="SlideIcon";const Wu=()=>r(ve,{name:"sticky"},()=>[r("path",{d:"m381.3 733.8l-161.9 118c-5.9 4.5-13.2 6.6-20.1 6.6-8.7 0-17.7-3.4-24.3-10-12.2-12.2-13.9-31.3-3.5-45.2l144.5-195.5-113.6-112.9c-11.1-11.1-13.2-28.4-5.5-42 5.5-8.7 52.1-76.4 155.5-51 1.8 0.3 3.5 0.3 5.6 0.7 4.2 0.3 9 0.7 14.2 1.7 21.9 3.5 60.8-13.9 94.5-42.7 32.3-27.5 53.1-59.4 53.1-81.6 0-5.2 0-10.8-0.3-16-0.7-20.8-2.1-52.8 21.5-76.4 28.1-28.1 72.9-30.6 103.9-5.2 0.6 0.3 1 1 1.7 1.7 16.7 16.3 187.5 187.2 189.3 188.9 14.5 14.6 22.9 34.4 22.9 55.3 0 20.8-8 40.2-22.9 54.8-23.7 23.6-56 22.6-77.1 21.6-4.9 0-10.5-0.4-15.7-0.4-20.8 0-45.8 14.6-70.5 41.3-34.3 37.5-55.5 85.8-53.8 107.7 0.7 6.9 2.1 19.1 2.4 20.8 25 101.4-42.7 147.6-50.7 152.8-13.9 8.4-31.6 6.3-42.7-4.8l-112.1-112.2z"})]);Wu.displayName="StickyIcon";const ys=()=>r(ve,{name:"article"},()=>r("path",{d:"M853.333 938.667H170.667A42.667 42.667 0 0 1 128 896V128a42.667 42.667 0 0 1 42.667-42.667h682.666A42.667 42.667 0 0 1 896 128v768a42.667 42.667 0 0 1-42.667 42.667zm-42.666-85.334V170.667H213.333v682.666h597.334zM298.667 256h170.666v170.667H298.667V256zm0 256h426.666v85.333H298.667V512zm0 170.667h426.666V768H298.667v-85.333zm256-384h170.666V384H554.667v-85.333z"}));ys.displayName="ArticleIcon";const Uu=()=>r(ve,{name:"book"},()=>r("path",{d:"M256 853.333h426.667A85.333 85.333 0 0 0 768 768V256a85.333 85.333 0 0 0-85.333-85.333H469.333a42.667 42.667 0 0 1 0-85.334h213.334A170.667 170.667 0 0 1 853.333 256v512a170.667 170.667 0 0 1-170.666 170.667H213.333A42.667 42.667 0 0 1 170.667 896V128a42.667 42.667 0 0 1 42.666-42.667h128A42.667 42.667 0 0 1 384 128v304.256l61.653-41.088a42.667 42.667 0 0 1 47.36 0l61.654 41.045V256A42.667 42.667 0 0 1 640 256v256a42.667 42.667 0 0 1-66.347 35.499l-104.32-69.547-104.32 69.547A42.667 42.667 0 0 1 298.667 512V170.667H256v682.666z"}));Uu.displayName="BookIcon";const ju=()=>r(ve,{name:"link"},()=>r("path",{d:"M460.8 584.533c17.067 17.067 17.067 42.667 0 59.734-17.067 17.066-42.667 17.066-59.733 0-85.334-85.334-85.334-217.6 0-302.934L554.667 192C640 110.933 776.533 110.933 857.6 196.267c81.067 81.066 81.067 213.333 0 294.4l-68.267 64c0-34.134-4.266-68.267-17.066-102.4l21.333-21.334c51.2-46.933 55.467-128 4.267-179.2s-128-55.466-179.2-4.266c-4.267 0-4.267 4.266-4.267 4.266L465.067 401.067c-51.2 51.2-51.2 132.266-4.267 183.466m123.733-183.466C601.6 384 627.2 384 644.267 401.067c85.333 85.333 85.333 217.6 0 302.933l-153.6 149.333C405.333 934.4 268.8 934.4 187.733 849.067c-81.066-81.067-81.066-213.334 0-294.4l68.267-64c0 34.133 4.267 72.533 17.067 102.4L251.733 614.4C204.8 665.6 204.8 746.667 256 793.6c51.2 46.933 123.733 46.933 174.933 0l149.334-149.333c51.2-51.2 51.2-128 0-179.2-12.8-17.067-17.067-46.934 4.266-64z"}));ju.displayName="LinkIcon";const Gu=()=>r(ve,{name:"project"},()=>r("path",{d:"M987.456 425.152H864V295.296a36.48 36.48 0 0 0-36.544-36.544h-360l-134.08-128.256A9.344 9.344 0 0 0 327.04 128H36.48A36.48 36.48 0 0 0 0 164.544v676.608a36.48 36.48 0 0 0 36.544 36.544h797.76a36.672 36.672 0 0 0 33.92-22.848L1021.44 475.52a36.48 36.48 0 0 0-33.92-50.304zM82.304 210.304h215.424l136.64 130.752h347.328v84.096H198.848A36.672 36.672 0 0 0 164.928 448L82.304 652.8V210.304zM808.32 795.456H108.544l118.08-292.608h699.904L808.32 795.52z"}));Gu.displayName="ProjectIcon";const qu=()=>r(ve,{name:"friend"},()=>r("path",{d:"M860.16 213.333A268.373 268.373 0 0 0 512 186.027a267.52 267.52 0 0 0-348.16 404.48L428.8 855.893a118.613 118.613 0 0 0 166.4 0l264.96-265.386a267.52 267.52 0 0 0 0-377.174zM800 531.627l-264.96 264.96a32.427 32.427 0 0 1-46.08 0L224 530.347a183.04 183.04 0 0 1 0-256 182.187 182.187 0 0 1 256 0 42.667 42.667 0 0 0 60.587 0 182.187 182.187 0 0 1 256 0 183.04 183.04 0 0 1 3.413 256z"}));qu.displayName="FriendIcon";const mo=()=>r(ve,{name:"slide-down"},()=>r("path",{d:"M108.775 312.23c13.553 0 27.106 3.734 39.153 11.806l375.205 250.338 363.641-252.808c32.587-21.624 76.499-12.83 98.123 19.757 21.685 32.467 12.95 76.56-19.576 98.184l-402.854 278.89c-23.733 15.901-54.694 15.962-78.547.12L69.501 442.097c-32.647-21.685-41.441-65.777-19.817-98.304 13.734-20.54 36.201-31.563 59.09-31.563Z"}));mo.displayName="SlideDownIcon";const Ku=()=>r("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",class:"empty-icon",viewBox:"0 0 1024 1024",innerHTML:''});Ku.displayName="EmptyIcon";const Xu=()=>r(ve,{name:"lock"},()=>r("path",{d:"M787.168 952.268H236.832c-30.395 0-55.033-24.638-55.033-55.033V429.45c0-30.395 24.638-55.034 55.033-55.034h82.55V264.35c0-106.38 86.238-192.618 192.618-192.618S704.618 157.97 704.618 264.35v110.066h82.55c30.395 0 55.033 24.639 55.033 55.034v467.785c0 30.395-24.639 55.033-55.033 55.033zM484.483 672.046v115.122h55.034V672.046c31.99-11.373 55.033-41.605 55.033-77.496 0-45.592-36.958-82.55-82.55-82.55s-82.55 36.958-82.55 82.55c0 35.89 23.042 66.123 55.033 77.496zM622.067 264.35c0-60.788-49.28-110.067-110.067-110.067s-110.067 49.28-110.067 110.067v110.066h220.135V264.35z"}));Xu.displayName="LockIcon";var qm=H({name:"ArticleItem",props:{info:{type:Object,required:!0},path:{type:String,required:!0}},slots:Object,setup(e,{slots:n}){const t=Ft(e,"info"),{info:a,items:s}=Fm(e);return()=>{var f,v,b;const{[ye.title]:o,[ye.type]:l,[ye.isEncrypted]:i=!1,[ye.cover]:c,[ye.excerpt]:u,[ye.sticky]:p}=t.value,d=a.value;return r("div",{class:"vp-article-wrapper"},r("article",{class:"vp-article-item",vocab:"https://schema.org/",typeof:"Article"},[((f=n.cover)==null?void 0:f.call(n,{cover:c}))||(c?[r("img",{class:"vp-article-cover",src:Ae(c),loading:"lazy"}),r("meta",{property:"image",content:Ae(c)})]:[]),p?r(Wu):null,r(Ne,{to:e.path},()=>{var k;return((k=n.title)==null?void 0:k.call(n,{title:o,isEncrypted:i,type:l}))||r("header",{class:"vp-article-title"},[i?r(Xu):null,l===lu.slide?r(Hu):null,r("span",{property:"headline"},o)])}),((v=n.excerpt)==null?void 0:v.call(n,{excerpt:u}))||(u?r("div",{class:"vp-article-excerpt",innerHTML:u}):null),r("hr",{class:"vp-article-hr"}),((b=n.info)==null?void 0:b.call(n,{info:d}))||r(Lu,{info:d,...s.value?{items:s.value}:{}})]))}}}),Km=H({name:"Pagination",props:{total:{type:Number,default:10},perPage:{type:Number,default:10},current:{type:Number,default:1}},emits:["updateCurrentPage"],setup(e,{emit:n}){let t;const a=re(),s=Z(""),o=w(()=>a.value.paginationLocales),l=w(()=>Math.ceil(e.total/e.perPage)),i=w(()=>!!l.value&&l.value!==1),c=w(()=>l.value<7?!1:e.current>4),u=w(()=>l.value<7?!1:e.current{const{current:v}=e;let b=1,k=l.value;const A=[];l.value>=7&&(v<=4&&v4&&v>=l.value-3?(k=l.value,b=l.value-4):l.value>7&&(b=v-2,k=v+2));for(let y=b;y<=k;y++)A.push(y);return A}),d=v=>n("updateCurrentPage",v),f=v=>{const b=parseInt(v);b<=l.value&&b>0?d(b):t.pop(`${o.value.errorText.replace(/\$page/g,l.value.toString())}`)};return _e(()=>{t=new Df}),()=>r("div",{class:"vp-pagination"},i.value?r("nav",{class:"vp-pagination-list"},[r("div",{class:"vp-pagination-number "},[e.current>1?r("div",{class:"prev",role:"navigation",unselectable:"on",onClick:()=>d(e.current-1)},o.value.prev):null,c.value?[r("div",{role:"navigation",onClick:()=>d(1)},1),r("div",{class:"ellipsis"},"...")]:null,p.value.map(v=>r("div",{key:v,class:{active:e.current===v},role:"navigation",onClick:()=>d(v)},v)),u.value?[r("div",{class:"ellipsis"},"..."),r("div",{role:"navigation",onClick:()=>d(l.value)},l.value)]:null,e.currentd(e.current+1)},o.value.next):null]),r("div",{class:"vp-pagination-nav"},[r("label",{for:"navigation-text"},`${o.value.navigate}: `),r("input",{id:"navigation-text",value:s.value,onInput:({target:v})=>{s.value=v.value},onKeydown:v=>{v.key==="Enter"&&(v.preventDefault(),f(s.value))}}),r("button",{class:"vp-pagination-button",role:"navigation",title:o.value.action,onClick:()=>f(s.value)},o.value.action)])]):[])}}),pl=H({name:"ArticleList",props:{items:{type:Array,default:()=>[]}},setup(e){const n=xn(),t=$e(),a=Ca(),s=Z(1),o=w(()=>a.value.articlePerPage||10),l=w(()=>e.items.slice((s.value-1)*o.value,s.value*o.value)),i=async c=>{s.value=c;const u={...n.query};!(u.page===c.toString()||c===1&&!u.page)&&(c===1?delete u.page:u.page=c.toString(),await t.push({path:n.path,query:u}))};return _e(()=>{const{page:c}=n.query;console.log("mounted"),i(c?Number(c):1),le(s,()=>{const u=document.querySelector("#article-list").getBoundingClientRect().top+window.scrollY;setTimeout(()=>{window.scrollTo(0,u)},100)})}),()=>r("div",{id:"article-list",class:"vp-article-list",role:"feed"},l.value.length?[...l.value.map(({info:c,path:u},p)=>r(me,{appear:!0,delay:p*.04},()=>r(qm,{key:u,info:c,path:u}))),r(Km,{current:s.value,perPage:o.value,total:e.items.length,onUpdateCurrentPage:i})]:r(Ku))}}),Zu=H({name:"CategoryList",setup(){const e=ue(),n=La();return()=>r("ul",{class:"vp-category-list"},Ut(n.value.map).sort(([,t],[,a])=>a.items.length-t.items.length).map(([t,{path:a,items:s}])=>r("li",{class:["vp-category",`vp-category${hs(t,9)}`,{active:a===e.value.path}]},r(Ne,{to:a},()=>[t,r("span",{class:"count"},s.length)]))))}}),Yu=H({name:"TagList",setup(){const e=ke(),n=Ra(),t=a=>{var s;return a===((s=e.value.blog)==null?void 0:s.name)};return()=>r("ul",{class:"tag-list-wrapper"},Ut(n.value.map).sort(([,a],[,s])=>s.items.length-a.items.length).map(([a,{path:s,items:o}])=>r("li",{class:["tag",`tag${hs(a,9)}`,{active:t(a)}]},r(Ne,{to:s},()=>[a,r("span",{class:"tag-num"},o.length)]))))}}),Xm=H({name:"TimelineList",setup(){const e=re(),n=ll(),t=Sa(),a=w(()=>e.value.blogLocales.timeline);return()=>r("div",{class:"timeline-list-wrapper"},[r("div",{class:"timeline-list-title",onClick:()=>t(n.value.path)},[r(ul),r("span",{class:"num"},n.value.items.length),a.value]),r("hr"),r("div",{class:"timeline-content"},r("ul",{class:"timeline-list"},n.value.config.map(({year:s,items:o},l)=>r(me,{appear:!0,delay:.08*(l+1)},()=>r("li",[r("h3",{class:"timeline-year"},s),r("ul",{class:"timeline-year-wrapper"},o.map(({date:i,info:c,path:u})=>r("li",{class:"timeline-item"},[r("span",{class:"timeline-date"},i),r(Ne,{class:"timeline-title",to:u},()=>c[ye.title])])))])))))])}});const Zm={article:ys,category:il,tag:cl,timeline:ul};var Ju=H({name:"InfoList",setup(){const e=re(),n=Oa(),t=La(),a=w(()=>Sn(t.value.map).length),s=ol(),o=Ra(),l=w(()=>Sn(o.value.map).length),i=Sa(),c=Z("article"),u=w(()=>e.value.blogLocales);return()=>r("div",{class:"vp-blog-infos"},[r("div",{class:"vp-blog-type-switcher"},Ut(Zm).map(([p,d])=>r("button",{type:"button",class:"vp-blog-type-button",onClick:()=>{c.value=p}},r("div",{class:["icon-wrapper",{active:c.value===p}],"aria-label":u.value[p],"data-balloon-pos":"up"},r(d))))),r(me,()=>c.value==="article"?r("div",{class:"vp-star-article-wrapper"},[r("div",{class:"title",onClick:()=>i(n.value.path)},[r(ys),r("span",{class:"num"},n.value.items.length),u.value.article]),r("hr"),s.value.items.length?r("ul",{class:"vp-star-articles"},s.value.items.map(({info:p,path:d},f)=>r(me,{appear:!0,delay:.08*(f+1)},()=>r("li",{class:"vp-star-article"},r(Ne,{to:d},()=>p[ye.title]))))):r("div",{class:"vp-star-article-empty"},u.value.empty.replace("$text",u.value.star))]):c.value==="category"?r("div",{class:"vp-category-wrapper"},[a.value?[r("div",{class:"title",onClick:()=>i(t.value.path)},[r(il),r("span",{class:"num"},a.value),u.value.category]),r("hr"),r(me,{delay:.04},()=>r(Zu))]:r("div",{class:"vp-category-empty"},u.value.empty.replace("$text",u.value.category))]):c.value==="tag"?r("div",{class:"vp-tag-wrapper"},[l.value?[r("div",{class:"title",onClick:()=>i(o.value.path)},[r(cl),r("span",{class:"num"},l.value),u.value.tag]),r("hr"),r(me,{delay:.04},()=>r(Yu))]:r("div",{class:"vp-tag-empty"},u.value.empty.replace("$text",u.value.tag))]):r(me,()=>r(Xm)))])}}),_s=H({name:"BlogWrapper",slots:Object,setup(e,{slots:n}){const{isMobile:t}=xa();return()=>[r(sl),r(tl,{noSidebar:!0,noToc:!0},{default:()=>n.default(),navScreenBottom:()=>r(rl),...t.value?{sidebar:()=>r(Ju)}:{}})]}});const Qu=()=>r("aside",{class:"vp-blog-info-wrapper"},[r(me,()=>r(rl)),r(me,{delay:.04},()=>r(Ju))]);Qu.displayName="InfoPanel";var ks=Qu,Ym=H({name:"BlogPage",setup(){const e=ue(),n=ke(),t=La(),a=Ra();return()=>{const{key:s="",name:o=""}=n.value.blog||{},l=o?s==="category"?t.value.map[o].items:s==="tag"?a.value.map[o].items:[]:[];return r(_s,()=>r("div",{class:"vp-page vp-blog"},r("div",{class:"blog-page-wrapper"},[r("main",{id:"main-content",class:"vp-blog-main"},[r(me,()=>s==="category"?r(Zu):s==="tag"?r(Yu):null),o?r(me,{appear:!0,delay:.24},()=>r(pl,{key:e.value.path,items:l})):null]),r(me,{delay:.16},()=>r(ks,{key:"blog"}))])))}}});const Jm="//theme-hope-assets.vuejs.press/hero/default.jpg";var Qm=H({name:"BlogHero",slots:Object,setup(e,{slots:n}){const t=ke(),a=Wt(),s=en(),o=w(()=>t.value.heroFullScreen??!1),l=w(()=>{const{heroText:c,heroImage:u,heroImageDark:p,heroAlt:d,heroImageStyle:f,tagline:v}=t.value;return{text:c??a.value.title??"Hello",image:u?Ae(u):null,imageDark:p?Ae(p):null,heroStyle:f,alt:d||c||"hero image",tagline:v??"",isFullScreen:o.value}}),i=w(()=>{const{bgImage:c,bgImageDark:u,bgImageStyle:p}=t.value;return{image:he(c)?Ae(c):c===!1?null:Jm,imageDark:he(u)?Ae(u):null,bgStyle:p,isFullScreen:o.value}});return()=>{var c,u;return t.value.hero===!1?null:r("div",{ref:s,class:["vp-blog-hero",{fullscreen:o.value,"no-bg":!i.value.image}]},[((c=n.heroBg)==null?void 0:c.call(n,i.value))||[i.value.image?r("div",{class:["vp-blog-mask",{light:i.value.imageDark}],style:[{background:`url(${i.value.image}) center/cover no-repeat`},i.value.bgStyle]}):null,i.value.imageDark?r("div",{class:"vp-blog-mask dark",style:[{background:`url(${i.value.imageDark}) center/cover no-repeat`},i.value.bgStyle]}):null],((u=n.heroInfo)==null?void 0:u.call(n,l.value))||[r(me,{appear:!0,type:"group",delay:.04},()=>[l.value.image?r("img",{key:"light",class:["vp-blog-hero-image",{light:l.value.imageDark}],style:l.value.heroStyle,src:l.value.image,alt:l.value.alt}):null,l.value.imageDark?r("img",{key:"dark",class:"vp-blog-hero-image dark",style:l.value.heroStyle,src:l.value.imageDark,alt:l.value.alt}):null]),r(me,{appear:!0,delay:.08},()=>l.value.text?r("h1",{class:"vp-blog-hero-title"},l.value.text):null),r(me,{appear:!0,delay:.12},()=>l.value.tagline?r("p",{class:"vp-blog-hero-description",innerHTML:l.value.tagline}):null)],l.value.isFullScreen?r("button",{type:"button",class:"slide-down-button",onClick:()=>{window.scrollTo({top:s.value.clientHeight,behavior:"smooth"})}},[r(mo),r(mo)]):null])}}});const eh=["link","article","book","project","friend"];var nh=H({name:"ProjectPanel",components:{ArticleIcon:ys,BookIcon:Uu,FriendIcon:qu,LinkIcon:ju,ProjectIcon:Gu},props:{items:{type:Array,required:!0}},setup(e){const n=Gt(),t=Sa(),a=(s="",o="icon")=>eh.includes(s)?r(Qe(`${s}-icon`)):ft(s)?r("img",{class:"vp-project-image",src:s,alt:o}):wa(s)?r("img",{class:"vp-project-image",src:Ae(s),alt:o}):r(We,{icon:s});return()=>r("div",{class:"vp-project-panel"},e.items.map(({icon:s,link:o,name:l,desc:i},c)=>r("div",{class:["vp-project-card",{[`project${c%9}`]:!n.value}],onClick:()=>t(o)},[a(s,l),r("div",{class:"vp-project-name"},l),r("div",{class:"vp-project-desc"},i)])))}}),th=H({name:"BlogHome",setup(){const e=Oa(),n=ke(),t=w(()=>n.value.projects??[]);return()=>r("div",{class:"vp-page vp-blog"},[r(Qm),r("div",{class:"blog-page-wrapper"},[r("main",{id:"main-content",class:"vp-blog-main"},[t.value.length?r(me,{appear:!0,delay:.16},()=>r(nh,{items:t.value})):null,r(me,{appear:!0,delay:.24},()=>r(pl,{items:e.value.items}))]),r(me,{appear:!0,delay:.16},()=>r(ks,{key:"blog"}))]),r(me,{appear:!0,delay:.28},()=>r(al))])}});const ep=()=>r(_s,()=>r(th));ep.displayName="BlogHomeLayout";var ah=ep,sh=H({name:"ArticleType",setup(){const e=ue(),n=gn(),t=re(),a=Oa(),s=ol(),o=w(()=>{const l=t.value.blogLocales;return[{text:l.all,path:a.value.path},{text:l.star,path:s.value.path},...Vm.map(({key:i,path:c})=>({text:l[i],path:c.replace(/^\//,n.value)}))]});return()=>r("ul",{class:"vp-article-type-wrapper"},o.value.map(l=>r("li",{class:["vp-article-type",{active:l.path===e.value.path}]},r(Ne,{to:l.path},()=>l.text))))}}),oh=H({name:"BlogPage",setup(){const e=bs(),n=ke(),t=ue(),a=Oa(),s=ol(),o=w(()=>{const{key:l="",type:i}=n.value.blog||{};return l==="star"?s.value.items:i==="type"&&l?e.value.items:a.value.items});return()=>r(_s,()=>r("div",{class:"vp-page vp-blog"},r("div",{class:"blog-page-wrapper"},[r("main",{id:"main-content",class:"vp-blog-main"},[r(me,()=>r(sh)),r(me,{appear:!0,delay:.24},()=>r(pl,{key:t.value.path,items:o.value}))]),r(me,{delay:.16},()=>r(ks,{key:"blog"}))])))}}),lh=H({name:"TimelineItems",setup(){const e=Ca(),n=re(),t=ll(),a=w(()=>e.value.timeline||n.value.blogLocales.timelineTitle),s=w(()=>t.value.config.map(({year:o})=>({title:o.toString(),level:2,slug:o.toString(),children:[]})));return()=>r("div",{class:"timeline-wrapper"},r("ul",{class:"timeline-content"},[r(me,()=>r("li",{class:"motto"},a.value)),r(Cu,{items:s.value}),t.value.config.map(({year:o,items:l},i)=>r(me,{appear:!0,delay:.08*(i+1),type:"group"},()=>[r("h3",{key:"title",id:o,class:"timeline-year-title"},r("span",o)),r("li",{key:"content",class:"timeline-year-list"},[r("ul",{class:"timeline-year-wrapper"},l.map(({date:c,info:u,path:p})=>r("li",{class:"timeline-item"},[r("span",{class:"timeline-date"},c),r(Ne,{class:"timeline-title",to:p},()=>u[ye.title])])))])]))]))}});const np=()=>r(_s,()=>r("div",{class:"vp-page vp-blog"},r("div",{class:"blog-page-wrapper"},[r("main",{id:"main-content",class:"vp-blog-main"},[r(me,{appear:!0,delay:.24},()=>r(lh))]),r(me,{delay:.16},()=>r(ks,{key:"blog"}))])));np.displayName="Timeline";var rh=np;Tv(We);const ih=bn({enhance:({app:e,router:n})=>{const{scrollBehavior:t}=n.options;n.options.scrollBehavior=async(...a)=>(await Ru().wait(),t(...a)),C2(e),e.component("HopeIcon",We),e.component("VPLink",Ne),e.component("BloggerInfo",rl)},setup:()=>{R2(),D2(),jm()},layouts:{Layout:Tm,NotFound:Cm,BlogCategory:Ym,BlogHome:ah,BlogType:oh,Timeline:rh}}),qt=({name:e="",color:n="currentColor"},{slots:t})=>{var a;return r("svg",{xmlns:"http://www.w3.org/2000/svg",class:["icon",`${e}-icon`],viewBox:"0 0 1024 1024",fill:n,"aria-label":`${e} icon`},(a=t.default)==null?void 0:a.call(t))};qt.displayName="IconBase";const ch=e=>[/\((ipad);[-\w),; ]+apple/i,/applecoremedia\/[\w.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i].some(n=>n.test(e)),uh=e=>[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/cfnetwork\/.+darwin/i].some(n=>n.test(e)),ph=e=>[/(mac os x) ?([\w. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i].some(n=>n.test(e));function dh(){const e=Z(!1);return dt()&&_e(()=>{e.value=!0}),e}function fh(e){return dh(),w(()=>!!e())}const vh=e=>typeof e=="string",tp=(e,n)=>vh(e)&&e.startsWith(n),mh=e=>(e.endsWith(".md")&&(e=`${e.slice(0,-3)}.html`),!e.endsWith("/")&&!e.endsWith(".html")&&(e=`${e}.html`),e=e.replace(/(^|\/)(?:README|index).html$/i,"$1"),e),hh=e=>{const[n,t=""]=e.split("#");return n?`${mh(n)}${t?`#${t}`:""}`:e},gh=e=>{var n;if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)&&!(e.currentTarget&&((n=e.currentTarget.getAttribute("target"))!=null&&n.match(/\b_blank\b/i))))return e.preventDefault(),!0},bh=({to:e="",class:n="",...t},{slots:a})=>{var i;const s=$e(),o=hh(e),l=(c={})=>gh(c)?s.push(e).catch():Promise.resolve();return r("a",{...t,class:["vp-link",n],href:tp(o,"/")?Ae(o):o,onClick:l},(i=a.default)==null?void 0:i.call(a))};bh.displayName="VPLink";const yh=()=>fh(()=>typeof window<"u"&&window.navigator&&"userAgent"in window.navigator),_h=()=>{const e=yh();return w(()=>e.value&&/\b(?:Android|iPhone)/i.test(navigator.userAgent))},dl=e=>{const n=gn();return w(()=>e[n.value])},kh=()=>r(qt,{name:"heading"},()=>r("path",{d:"M250.4 704.6H64V595.4h202.4l26.2-166.6H94V319.6h214.4L352 64h127.8l-43.6 255.4h211.2L691 64h126.2l-43.6 255.4H960v109.2H756.2l-24.6 166.6H930v109.2H717L672 960H545.8l43.6-255.4H376.6L333 960H206.8l43.6-255.4zm168.4-276L394 595.4h211.2l24.6-166.6h-211z"}));kh.displayName="HeadingIcon";const Eh=()=>r(qt,{name:"heart"},()=>r("path",{d:"M1024 358.156C1024 195.698 892.3 64 729.844 64c-86.362 0-164.03 37.218-217.844 96.49C458.186 101.218 380.518 64 294.156 64 131.698 64 0 195.698 0 358.156 0 444.518 37.218 522.186 96.49 576H96l320 320c32 32 64 64 96 64s64-32 96-64l320-320h-.49c59.272-53.814 96.49-131.482 96.49-217.844zM841.468 481.232 517.49 805.49a2981.962 2981.962 0 0 1-5.49 5.48c-1.96-1.95-3.814-3.802-5.49-5.48L182.532 481.234C147.366 449.306 128 405.596 128 358.156 128 266.538 202.538 192 294.156 192c47.44 0 91.15 19.366 123.076 54.532L512 350.912l94.768-104.378C638.696 211.366 682.404 192 729.844 192 821.462 192 896 266.538 896 358.156c0 47.44-19.368 91.15-54.532 123.076z"}));Eh.displayName="HeartIcon";const wh=()=>r(qt,{name:"history"},()=>r("path",{d:"M512 1024a512 512 0 1 1 512-512 512 512 0 0 1-512 512zm0-896a384 384 0 1 0 384 384 384 384 0 0 0-384-384zm192 448H512a64 64 0 0 1-64-64V320a64 64 0 0 1 128 0v128h128a64 64 0 0 1 0 128z"}));wh.displayName="HistoryIcon";const Ah=()=>r(qt,{name:"title"},()=>r("path",{d:"M512 256c70.656 0 134.656 28.672 180.992 75.008A254.933 254.933 0 0 1 768 512c0 83.968-41.024 157.888-103.488 204.48C688.96 748.736 704 788.48 704 832c0 105.984-86.016 192-192 192-106.048 0-192-86.016-192-192h128a64 64 0 1 0 128 0 64 64 0 0 0-64-64 255.19 255.19 0 0 1-181.056-75.008A255.403 255.403 0 0 1 256 512c0-83.968 41.024-157.824 103.488-204.544C335.04 275.264 320 235.584 320 192A192 192 0 0 1 512 0c105.984 0 192 85.952 192 192H576a64.021 64.021 0 0 0-128 0c0 35.328 28.672 64 64 64zM384 512c0 70.656 57.344 128 128 128s128-57.344 128-128-57.344-128-128-128-128 57.344-128 128z"}));Ah.displayName="TitleIcon";const fl=()=>r(qt,{name:"search"},()=>r("path",{d:"M192 480a256 256 0 1 1 512 0 256 256 0 0 1-512 0m631.776 362.496-143.2-143.168A318.464 318.464 0 0 0 768 480c0-176.736-143.264-320-320-320S128 303.264 128 480s143.264 320 320 320a318.016 318.016 0 0 0 184.16-58.592l146.336 146.368c12.512 12.48 32.768 12.48 45.28 0 12.48-12.512 12.48-32.768 0-45.28"}));fl.displayName="SearchIcon";const ap=()=>r("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",preserveAspectRatio:"xMidYMid",viewBox:"0 0 100 100"},[r("circle",{cx:"28",cy:"75",r:"11",fill:"currentColor"},r("animate",{attributeName:"fill-opacity",begin:"0s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),r("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 47a28 28 0 0 1 28 28"},r("animate",{attributeName:"stroke-opacity",begin:"0.1s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"})),r("path",{fill:"none",stroke:"#88baf0","stroke-width":"10",d:"M28 25a50 50 0 0 1 50 50"},r("animate",{attributeName:"stroke-opacity",begin:"0.2s",dur:"1s",keyTimes:"0;0.2;1",repeatCount:"indefinite",values:"0;1;1"}))]);ap.displayName="LoadingIcon";const sp=({hint:e})=>r("div",{class:"search-pro-result-wrapper loading"},[r(ap),e]);sp.displayName="SearchLoading";const Ph='';var Sh={0:"分类:$content",1:"标签:$content"},xh={"/":{cancel:"取消",placeholder:"搜索",search:"搜索",searching:"搜索中",defaultTitle:"文档",select:"选择",navigate:"切换",autocomplete:"自动补全",exit:"关闭",history:"搜索历史",emptyHistory:"无搜索历史",emptyResult:"没有找到结果",loading:"正在加载搜索索引..."}},Th={searchDelay:150,suggestDelay:0,queryHistoryCount:5,resultHistoryCount:5,hotKeys:[{key:"k",ctrl:!0},{key:"/",ctrl:!0}],worker:"search-pro.worker.js"};const vl=Th,i3=Sh,op=vl.hotKeys,ml=xh;new URL("data:application/javascript;base64,aW1wb3J0e3NlYXJjaCBhcyBDLGdldFN0b3JlZEZpZWxkcyBhcyBSLGF1dG9TdWdnZXN0IGFzIFQsbG9hZEpTT05JbmRleCBhcyB3fWZyb20ic2xpbXNlYXJjaCI7aW1wb3J0ICQgZnJvbSJAdGVtcC9zZWFyY2gtcHJvL2luZGV4IjtpbXBvcnR7ZW50cmllcyBhcyBFfWZyb20idnVlcHJlc3Mtc2hhcmVkL2NsaWVudCI7Y29uc3QgeD0obCxlKT0+e2NvbnN0IG49bC50b0xvd2VyQ2FzZSgpLHM9ZS50b0xvd2VyQ2FzZSgpLG89W107bGV0IHQ9MCxyPTA7Y29uc3QgaT0oYyxnPSExKT0+e2xldCBwPSIiO3I9PT0wP3A9Yy5sZW5ndGg+MjA/YOKApiAke2Muc2xpY2UoLTIwKX1gOmM6Zz9wPWMubGVuZ3RoK3I+MTAwP2Ake2Muc2xpY2UoMCwxMDAtcil94oCmIGA6YzpwPWMubGVuZ3RoPjIwP2Ake2Muc2xpY2UoMCwyMCl9IOKApiAke2Muc2xpY2UoLTIwKX1gOmMscCYmby5wdXNoKHApLHIrPXAubGVuZ3RoLGd8fChvLnB1c2goWyJtYXJrIixlXSkscis9ZS5sZW5ndGgscj49MTAwJiZvLnB1c2goIiDigKYiKSl9O2xldCBoPW4uaW5kZXhPZihzLHQpO2lmKGg9PT0tMSlyZXR1cm4gbnVsbDtmb3IoO2g+PTA7KXtjb25zdCBjPWgrcy5sZW5ndGg7aWYoaShsLnNsaWNlKHQsaCkpLHQ9YyxyPjEwMClicmVhaztoPW4uaW5kZXhPZihzLHQpfXJldHVybiByPDEwMCYmaShsLnNsaWNlKHQpLCEwKSxvfSxTPS9bXHU0ZTAwLVx1OWZhNV0vZyxNPShsPXt9KT0+KHtmdXp6eTouMixwcmVmaXg6ITAscHJvY2Vzc1Rlcm06ZT0+e2NvbnN0IG49ZS5tYXRjaChTKXx8W10scz1lLnJlcGxhY2UoUywiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4gcz9bcywuLi5uXTpbLi4ubl19LC4uLmx9KSxGPShsLGUpPT5lLmNvbnRlbnRzLnJlZHVjZSgobixbLHNdKT0+bitzLDApLWwuY29udGVudHMucmVkdWNlKChuLFssc10pPT5uK3MsMCksXz0obCxlKT0+TWF0aC5tYXgoLi4uZS5jb250ZW50cy5tYXAoKFssbl0pPT5uKSktTWF0aC5tYXgoLi4ubC5jb250ZW50cy5tYXAoKFssbl0pPT5uKSksTz0obCxlLG49e30pPT57Y29uc3Qgcz17fTtyZXR1cm4gQyhlLGwsTSh7Ym9vc3Q6e2g6Mix0OjEsYzo0fSwuLi5ufSkpLmZvckVhY2gobz0+e2NvbnN0e2lkOnQsdGVybXM6cixzY29yZTppfT1vLGg9dC5pbmNsdWRlcygiQCIpLGM9dC5pbmNsdWRlcygiIyIpLFtnLHBdPXQuc3BsaXQoL1sjQF0vKSxtPXIuc29ydCgodSxhKT0+dS5sZW5ndGgtYS5sZW5ndGgpLmZpbHRlcigodSxhKT0+ci5zbGljZShhKzEpLmV2ZXJ5KGY9PiFmLmluY2x1ZGVzKHUpKSkse2NvbnRlbnRzOmR9PXNbZ10/Pz17dGl0bGU6IiIsY29udGVudHM6W119O2lmKGgpZC5wdXNoKFt7dHlwZToiY3VzdG9tRmllbGQiLGtleTpnLGluZGV4OnAsZGlzcGxheTptLm1hcCh1PT5vLmMubWFwKGE9PngoYSx1KSkpLmZsYXQoKS5maWx0ZXIodT0+dSE9PW51bGwpfSxpXSk7ZWxzZXtjb25zdCB1PW0ubWFwKGE9Pngoby5oLGEpKS5maWx0ZXIoYT0+YSE9PW51bGwpO2lmKHUubGVuZ3RoJiZkLnB1c2goW3t0eXBlOmM/ImhlYWRpbmciOiJ0aXRsZSIsa2V5OmcsLi4uYyYme2FuY2hvcjpwfSxkaXNwbGF5OnV9LGldKSwidCJpbiBvKWZvcihjb25zdCBhIG9mIG8udCl7Y29uc3QgZj1tLm1hcCh5PT54KGEseSkpLmZpbHRlcih5PT55IT09bnVsbCk7Zi5sZW5ndGgmJmQucHVzaChbe3R5cGU6InRleHQiLGtleTpnLC4uLmMmJnthbmNob3I6cH0sZGlzcGxheTpmfSxpXSl9fX0pLEUocykuc29ydCgoWyxvXSxbLHRdKT0+U0VBUkNIX1BST19TT1JUX1NUUkFURUdZPT09InRvdGFsIj9GKG8sdCk6XyhvLHQpKS5tYXAoKFtvLHt0aXRsZTp0LGNvbnRlbnRzOnJ9XSk9PntpZighdCl7Y29uc3QgaT1SKGUsbyk7aSYmKHQ9aS5oKX1yZXR1cm57dGl0bGU6dCxjb250ZW50czpyLm1hcCgoW2ldKT0+aSl9fSl9LGs9KGwsZSxuPXt9KT0+VChlLGwsTShuKSkubWFwKCh7c3VnZ2VzdGlvbjpzfSk9PnMpO3NlbGYub25tZXNzYWdlPWFzeW5jKHtkYXRhOnt0eXBlOmw9ImFsbCIscXVlcnk6ZSxsb2NhbGU6bixvcHRpb25zOnN9fSk9Pntjb25zdHtkZWZhdWx0Om99PWF3YWl0ICRbbl0oKSx0PXcobyx7ZmllbGRzOlsiaCIsInQiLCJjIl0sc3RvcmVGaWVsZHM6WyJoIiwidCIsImMiXX0pO2w9PT0ic3VnZ2VzdCI/c2VsZi5wb3N0TWVzc2FnZShrKGUsdCxzKSk6bD09PSJzZWFyY2giP3NlbGYucG9zdE1lc3NhZ2UoTyhlLHQscykpOnNlbGYucG9zdE1lc3NhZ2Uoe3N1Z2dlc3Rpb25zOmsoZSx0LHMpLHJlc3VsdHM6TyhlLHQscyl9KX07Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcAo=",import.meta.url);let Lh={};const lp=Symbol(""),Ch=()=>ce(lp),Rh=e=>{e.provide(lp,Lh)},Oh=()=>{const e=new Worker(`/${vl.worker}`,{}),n=[];return e.addEventListener("message",({data:t})=>{const{resolve:a}=n.shift();a(t)}),{search:t=>new Promise((a,s)=>{e.postMessage(t),n.push({resolve:a,reject:s})}),terminate:()=>{e.terminate(),n.forEach(({reject:t})=>t(new Error("Worker has been terminated.")))}}},Ih=(e,n=!1)=>{const t=Z(0),a=w(()=>e.value[t.value]),s=()=>{t.value=t.value>0?t.value-1:e.value.length-1},o=()=>{t.value=t.value{n||(t.value=0)}),{index:t,item:a,prev:s,next:o}},hl=Symbol(""),Vh=()=>{const e=Z(!1);rn(hl,e)},Dh=e=>e instanceof Element?document.activeElement===e&&(["TEXTAREA","SELECT","INPUT"].includes(e.tagName)||e.hasAttribute("contenteditable")):!1,Mh=e=>op.some(n=>{const{key:t,ctrl:a=!1,shift:s=!1,alt:o=!1,meta:l=!1}=n;return t===e.key&&a===e.ctrlKey&&s===e.shiftKey&&o===e.altKey&&l===e.metaKey}),Bh='',Nh='',zh='',$h='',Fh=e=>{const n=Z([]);{const t=Ch(),a=gn();_e(()=>{const s=Xf(i=>{i?o({type:"suggest",query:i,locale:a.value,options:t}).then(c=>{n.value=c.length?tp(c[0],i)&&!c[0].slice(i.length).includes(" ")?c:[i,...c]:[]}).catch(c=>{console.error(c)}):n.value=[]},vl.suggestDelay),{search:o,terminate:l}=Oh();le([e,a],()=>s(e.value),{immediate:!0}),Ht(()=>{l()})})}return{suggestions:n}},Ws=op[0];var Hh=H({name:"SearchBox",setup(){const e=dl(ml),n=ce(hl),t=Z(!1),a=w(()=>Ws?[(t.value?["⌃","⇧","⌥","⌘"]:["Ctrl","Shift","Alt","Win"]).filter((s,o)=>Ws[["ctrl","shift","alt","meta"][o]]),Ws.key.toUpperCase()]:null);return Le("keydown",s=>{!n.value&&Mh(s)&&!Dh(s.target)&&(s.preventDefault(),n.value=!0)}),_e(()=>{const{userAgent:s}=navigator;t.value=ph(s)||uh(s)||ch(s)}),()=>[r("button",{type:"button",class:"search-pro-button",role:"search","aria-label":e.value.search,onClick:()=>{n.value=!0}},[r(fl),r("div",{class:"search-pro-placeholder"},e.value.search),a.value?r("div",{class:"search-pro-key-hints"},a.value.map(s=>r("kbd",{class:"search-pro-key"},s))):null])]}});const Wh=S({loader:()=>m(()=>import("./SearchResult-nHYR70zC.js"),__vite__mapDeps([])),loadingComponent:()=>{const e=dl(ml);return r(sp,{hint:e.value.loading})}});var Uh=H({name:"SearchModal",setup(){const e=ce(hl),n=Wt(),t=_h(),a=dl(ml),s=Z(""),{suggestions:o}=Fh(s),l=Z(!1),{index:i,prev:c,next:u}=Ih(o),p=en(),d=en(),f=(v=i.value)=>{s.value=o.value[v],l.value=!1};return Le("keydown",v=>{l.value?v.key==="ArrowUp"?c():v.key==="ArrowDown"?u():v.key==="Enter"?f():v.key==="Escape"&&(l.value=!1):v.key==="Escape"&&(e.value=!1)}),_e(()=>{const v=Zo(document.body);le(e,async b=>{var k;v.value=b,b&&(await pt(),(k=p.value)==null||k.focus())}),ev(d,()=>{l.value=!1}),Ht(()=>{v.value=!1})}),()=>e.value?r("div",{class:"search-pro-modal-wrapper"},[r("div",{class:"search-pro-mask",onClick:()=>{e.value=!1,s.value=""}}),r("div",{class:"search-pro-modal"},[r("div",{class:"search-pro-box"},[r("form",[r("label",{for:"search-pro","aria-label":a.value.search},r(fl)),r("input",{ref:p,type:"search",class:"search-pro-input",id:"search-pro",placeholder:a.value.placeholder,spellcheck:"false",autocapitalize:"off",autocomplete:"off",autocorrect:"off",name:`${n.value.title}-search`,value:s.value,"aria-controls":"search-pro-results",onKeydown:v=>{const{key:b}=v;o.value.length&&(b==="Tab"?(f(),v.preventDefault()):(b==="ArrowDown"||b==="ArrowUp"||b==="Escape")&&v.preventDefault())},onInput:({target:v})=>{s.value=v.value,l.value=!0,i.value=0}}),s.value?r("button",{type:"reset",class:"search-pro-clear-button",innerHTML:Ph,onClick:()=>{s.value=""}}):null,l.value&&o.value.length?r("ul",{class:"search-pro-suggestions",ref:d},o.value.map((v,b)=>r("li",{class:["search-pro-suggestion",{active:b===i.value}],onClick:()=>{f(b)}},[r("kbd",{class:"search-pro-auto-complete",title:`Tab ${a.value.autocomplete}`},"Tab"),v]))):null]),r("button",{type:"button",class:"search-pro-close-button",onClick:()=>{e.value=!1,s.value=""}},a.value.cancel)]),r(Wh,{query:s.value,isFocusing:!l.value,onClose:()=>{e.value=!1},onUpdateQuery:v=>{s.value=v}}),t.value?null:r("div",{class:"search-pro-hints"},[r("span",{class:"search-pro-hint"},[r("kbd",{innerHTML:Bh}),a.value.select]),r("span",{class:"search-pro-hint"},[r("kbd",{innerHTML:zh}),r("kbd",{innerHTML:Nh}),a.value.navigate]),r("span",{class:"search-pro-hint"},[r("kbd",{innerHTML:$h}),a.value.exit])])])]):null}}),jh=bn({enhance({app:e}){Rh(e),e.component("SearchBox",Hh)},setup(){Vh()},rootComponents:[Uh]});const Ga=[s1,_v,xv,Iv,Bv,Fv,Gv,n2,i2,y2,ih,jh],Gh=[["v-8daa1a0e","/",{y:"h",t:"首页",i:"home"},["/README.md"]],["v-145ac574","/blog/",{y:"p",t:"博客"},["/blog/README.md"]],["v-633fb764","/blog/%E4%B8%80%E5%8F%B0%E6%96%B0%E7%94%B5%E8%84%91%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB.html",{d:160475636e4,l:"2020年11月7日",e:`

配置策划与记录

+

设置

+

计划的目录划分

+
    +
  • C:\\ +
      +
    • Program Files / x86
    • +
    • ProgramData
    • +
    • Windows
    • +
    • Users
    • +
    +
  • +
  • D:\\ +
      +
    • Northword
    • +
    • Documents
    • +
    • Downloads
    • +
    • Music
    • +
    • Pictures
    • +
    • Videos
    • +
    • OneDrive
    • +
    • Working Assets
    • +
    • Program Files
    • +
    • Tools
    • +
    • Games
    • +
    • Backups
    • +
    • Fav / library / Other Assets
    • +
    • Temporary
    • +
    +
  • +
`,r:{minutes:1.01,words:302},y:"a",t:"配置策划与记录"},["/blog/一台新电脑的自我修养.html","/blog/一台新电脑的自我修养.md",":md"]],["v-1985bd92","/blog/%E8%80%83%E7%A0%94%E7%9A%84%E7%9B%B8%E5%85%B3%E6%80%BB%E7%BB%93.html",{d:1604756386e3,l:"2020年11月7日",e:`

考研的一些总结

+

引言

+

20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。

+

谈一谈这一年踩过的坑与心得。

+

就按照考试顺序吧。

+

政治

+

考研政治其实跟好肖秀荣就够了,我先列一下我的:

+

基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。

`,r:{minutes:12.01,words:3604},y:"a",t:"考研的一些总结"},["/blog/考研的相关总结.html","/blog/考研的相关总结.md",":md"]],["v-759eeeca","/characterization/",{y:"p",t:"材料表征"},["/characterization/README.md"]],["v-4022cd1f","/characterization/raman/",{d:1663339021e3,l:"2022年9月16日",e:`

Raman

+

波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm1cm^{-1})。

`,r:{minutes:.36,words:108},y:"a",t:"Raman"},["/characterization/raman.html","/characterization/raman.md"]],["v-326a924f","/characterization/sem/",{d:1663199896e3,l:"2022年9月15日",e:`

SEM

+`,r:{minutes:.04,words:12},y:"a",t:"SEM"},["/characterization/sem.html","/characterization/sem.md"]],["v-1aa77d92","/characterization/x-ray-absorption.html",{d:1663519492e3,l:"2022年9月19日",e:`

X 射线吸收谱

+

download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)

+

撰文:LY & CWX   编辑:DJ

+

前言:

+

随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。

`,r:{minutes:5.99,words:1796},y:"a",t:"X 射线吸收谱"},[":md"]],["v-326d07e0","/characterization/xrd/",{d:1663159095e3,l:"2022年9月14日",e:`

X射线衍射

+`,r:{minutes:.08,words:23},y:"a",t:"XRD"},["/characterization/x-ray-diffraction.html","/characterization/x-ray-diffraction.md"]],["v-146a1089","/code/",{y:"p",t:"代码笔记"},["/code/README.md"]],["v-0d8a8100","/code/bash-for-windows/",{d:1670880393e3,l:"2022年12月13日",e:`

在 Windows 中使用 Bash shell

+
+

概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率
+本文语雀地址:https://www.yuque.com/achuan-2/blog/eu4rbz
+本文博客地址:https://achuan-2.github.io/posts/be43.html +source: https://zhuanlan.zhihu.com/p/418321777

+
`,r:{minutes:8.27,words:2482},y:"a",t:"在 Windows 中使用 Bash shell"},["/code/bash-for-windows.html","/code/bash-for-windows.md"]],["v-7fdba302","/code/document-style-guide.html",{d:1659209331e3,l:"2022年7月31日",e:`

中文技术文档的写作规范

+

中文技术文档的写作规范,转自 ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)

+

当前版本:b7723b8

`,r:{minutes:14.74,words:4423},y:"a",t:"中文技术文档的写作规范"},[":md"]],["v-55a1aa9d","/dft-learning/",{d:16041672e5,l:"2020年11月1日",e:`

不完全不准确不系统的计算模拟入坑记录

+
学不会系列之材料计算
+
+

本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。

+

课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。

+

教学大纲:

+
    +
  1. 绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。
  2. +
  3. Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。
  4. +
  5. Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
  6. +
  7. VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
  8. +
  9. 结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。
  10. +
  11. 电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。
  12. +
  13. 反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。
  14. +
  15. 计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础
  16. +
`,r:{minutes:2.55,words:765},y:"a",t:"不完全不准确不系统的计算模拟入坑记录"},["/dft-learning/README.md"]],["v-147825fb","/docs/",{y:"p",t:"文档"},["/docs/README.md"]],["v-0f6d941f","/software/Aria2.html",{d:1642542879e3,l:"2022年1月19日",e:`

Aria2 折腾记录

+

关于 Aria2

+

aria2 是一款支持多种协议的轻量级命令行下载工具。

+

安装与配置 Aria2

+

Aria2 的运行依靠以下几个文件:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文件名描述必须?
aria2c (or aria2c.exe)主程序
aria2.conf配置文件
aria2.session任务文件
aria2.log日志文件
`,r:{minutes:.67,words:202},y:"a",t:"Aria2 折腾记录"},[":md"]],["v-f785aee2","/software/",{y:"p",t:"软件使用"},["/software/README.md"]],["v-37da871d","/software/windows-applications.html",{d:1658862524e3,l:"2022年7月27日",e:`

Windows 的自我修养

+

Windows Applications

+

windows 必备应用列表是个人重装电脑后会安装的应用。

+

文档类

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称需要安装配置文件备注
[MS Office]通过 office tool plus 安装
福昕 PDF 编辑器企业版福昕 9.6.0
CAJViewerCAJViewer7.3
Notepad3Notepad3 配置说明
`,r:{minutes:2.83,words:850},y:"a",t:"Windows 的自我修养"},[":md"]],["v-3c7a5793","/software/%E4%BD%BF%E7%94%A8Pavadan%E5%92%8CMentoHUST%E8%BF%9B%E8%A1%8C%E9%94%90%E6%8D%B7%E8%AE%A4%E8%AF%81.html",{d:1604756371e3,l:"2020年11月7日",e:`

1. 红米 AC2100 刷入 Pavadan 固件

+

目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。

+

Download Link

+
    +
  • Hiboy:
  • +
+

2. MentoHUST 的配置

+

在 WebUI 配置

+

路径:拓展功能 - 配置拓展环境 - 锐捷认证

+
    +
  • 启用 MentoHUST
  • +
  • 用户名:学号
  • +
  • 密码:校园网上网密码,默认密码为身份证后六位
  • +
  • 组播地址:0(标准)
  • +
  • DHCP 方式:2(认证后)
  • +
  • 是否后台运行:2(是,保留输出)
  • +
  • 客户端版本号:4.96
  • +
  • 其余均保持默认
  • +
`,r:{minutes:2.5,words:750},y:"a",t:""},["/software/使用Pavadan和MentoHUST进行锐捷认证.html","/software/使用Pavadan和MentoHUST进行锐捷认证.md",":md"]],["v-724feff4","/software/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E6%8A%98%E8%85%BE%E8%AE%B0%E5%BD%95.html",{d:1642543109e3,l:"2022年1月19日",e:`

内网穿透折腾记录

+

通过 frp

+

配置参考

+

参考 | frp (gofrp.org)

+

frps.ini

+
[common]
+bind_port = 7000
+token = 通讯密码
+subdomin_host = frp.northword.cn
+log_file = ./frps.log
+log_level       = info
+log_max_days    = 5
+
`,r:{minutes:.85,words:254},y:"a",t:"内网穿透折腾记录"},["/software/内网穿透折腾记录.html","/software/内网穿透折腾记录.md",":md"]],["v-3ba57220","/software/%E5%BC%80%E5%90%AF%E4%BB%A3%E7%90%86%E5%90%8Emsftconnecttest%E6%97%A0%E6%B3%95%E8%B7%B3%E8%BD%AC.html",{d:161506202e4,l:"2021年3月7日",e:`

开启代理后校园网认证无法跳转

+

连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。

+

但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。

+

由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。

`,r:{minutes:1.95,words:584},y:"a",t:"开启代理后 msftconnecttest.com 无法跳转"},["/software/开启代理后msftconnecttest无法跳转.html","/software/开启代理后msftconnecttest无法跳转.md",":md"]],["v-462cf0b5","/software/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%8A%98%E8%85%BE.html",{d:1642785716e3,l:"2022年1月22日",e:`

云服务器的折腾记录

+

工具

+

Aria2c

+

Aria2

+

Frps

+

Docker

+

其他

+

效率

+

网速监控

+

raboof/nethogs: Linux 'net top' tool (github.com)

`,r:{minutes:.19,words:56},y:"a",t:"云服务器的折腾记录"},["/software/服务器的折腾.html","/software/服务器的折腾.md",":md"]],["v-27805d44","/code/citation-style-language/",{d:1659370984e3,l:"2022年8月2日",e:`

CSL 中文文档

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。

+

Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。LaTeX\\LaTeX 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 LaTeX\\LaTeX 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 LaTeX\\LaTeX 同样漂亮的引用和参考文献目录。

`,r:{minutes:1.95,words:585},y:"a",t:"CSL 中文文档"},["/code/citation-style-language/README.md"]],["v-3e8b5a96","/code/citation-style-language/translating-locale-files.html",{d:1659456133e3,l:"2022年8月3日",e:`

Locale File

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

前言

+

​ 这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。

+

​ 用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:"British Psychological Society" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。

`,r:{minutes:1.74,words:523},y:"a",t:"Locale File"},[":md"]],["v-75033482","/code/citation-style-language/xml-basic.html",{d:1659370984e3,l:"2022年8月2日",e:`

XML 基础

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

CSL 基于 XML(eXtensible Markup Language)XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。

+
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>  # 文档声明
+
+<!-- 这是一个注释 -->		# 注释
+
+<hello>	# 根元素,文档的第一个元素,有且仅有一个
+    # 子元素
+    # 属性
+    # 元素文本
+</hello>
+
`,r:{minutes:2.42,words:725},y:"a",t:"XML 基础"},[":md"]],["v-726f7072","/code/linux/intro/",{d:16041672e5,l:"2020年11月1日",c:["Linux"],e:`

Linux

+

没啥好写的,不就是个系统,区别于 WindowsMacOs 嘛。

+

一些非初级非高级玩法

+ +`,r:{minutes:.23,words:70},y:"a",t:"Linux"},["/code/linux/00.intro.html","/code/linux/00.intro.md"]],["v-218ea978","/code/linux/commend/",{d:16041672e5,l:"2020年11月1日",c:["Linux"],e:`

Linux 常用命令

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
命令说明
cd切换目录
ls列出文件和目录
ll同上
mkdir新建文件夹
cp复制
mv移动
rm删除文件
rmdir删除目录
pwd当前目录
cat查看文件全文
tail预览文件后几行
tar压缩/解压缩
`,r:{minutes:13.43,words:4028},y:"a",t:"Linux 常用命令"},["/code/linux/15.linux-command.html","/code/linux/15.linux-command.md"]],["v-dfd7264e","/code/linux/vim/",{d:16041672e5,l:"2020年11月1日",c:["Linux"],e:`

vi / vim 编辑器

+

vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程 吧。

+

三种模式

+
img
+

基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:

`,r:{minutes:8.34,words:2501},y:"a",t:"vi / vim 编辑器"},["/code/linux/16.linux-vi.html","/code/linux/16.linux-vi.md"]],["v-67bc2210","/code/linux/lrzsz/",{d:160441386e4,l:"2020年11月3日",c:["Linux"],e:`

lrzsz 的使用方法

+

上传下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此,

+

sz:让服务器将选定的文件发送(send)到本地

+

rz:让服务器接收 (receive) 在本地选择的文件

+

上传(rz)

+

方法 1:拖拽

`,r:{minutes:1.65,words:494},y:"a",t:"lrzsz 的使用方法"},["/code/linux/17.linux-lrzsz-usage.html","/code/linux/17.linux-lrzsz-usage.md"]],["v-ec98fe74","/code/linux/bashrc/",{d:160441386e4,l:"2020年11月3日",c:["Linux"],e:`

19.linux-bashrc-VS-bash_profile

+

环境变量

+

自定义命令提示符

+

通过修改 PS1 变量实现:

+
 \\u 显示当前用户账号
+ \\v BASH的版本信息
+ 
+ \\H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound
+ \\h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun
+ 
+ \\W 只显示当前路径最后一个目录
+ \\w 显示当前绝对路径(当前用户目录会以 ~代替)
+ 
+ \\t 显示时间为24小时格式,如:14:19:34
+ \\T 显示时间为12小时格式,如:02:19:34
+ \\A 显示时间为24小时格式但是不带秒,如:14:19
+ \\d 代表日期,格式为weekday month date,例如:"Mon Aug1"
+ 
+ $PWD 显示当前全路径
+ # 显示命令行提示符号,一般使用'$'或者'#'
+ sudo echo "export PS1='[\\u@\\h \\w]# '" >> /etc/profile
+ # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\\w
+
`,r:{minutes:2.67,words:801},y:"a",t:"19.linux-bashrc-VS-bash_profile"},["/code/linux/19.linux-bashrc-VS-bash_profile.html","/code/linux/19.linux-bashrc-VS-bash_profile.md"]],["v-279833aa","/code/linux/install-app-non-root/",{d:160596073e4,l:"2020年11月21日",c:["Install","linux"],e:`

Linux 下无 Root 权限编译软件

+

参考:linux 非 root 用户安装软件入门 | tlanyan.me .

+

下为上文的备份。

+
+

下面是 Linux 下非 root 用户安装软件的一般流程:

+
    +
  1. 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码;
  2. +
  3. 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz
  4. +
  5. 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置;
  6. +
  7. 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟);
  8. +
  9. 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中;
  10. +
  11. 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。
  12. +
`,r:{minutes:6,words:1799},y:"a",t:"Linux 下无 Root 权限编译软件"},["/code/linux/31.linux-install-app-for-nonRoot.html","/code/linux/31.linux-install-app-for-nonRoot.md"]],["v-510100b8","/code/Linux/",{y:"p",t:"Linux"},["/code/linux/","/code/linux/README.md"]],["v-15d002d2","/code/linux/openmpi/",{d:1667237976e3,l:"2022年11月1日",e:`

Openmpi

+

各种乱七八糟的报错

+
libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4
+--------------------------------------------------------------------------
+Failed to create a queue pair (QP):
+
+Hostname: compute-0-9
+Requested max number of outstanding WRs in the SQ:                1
+Requested max number of outstanding WRs in the RQ:                2
+Requested max number of SGEs in a WR in the SQ:                   511
+Requested max number of SGEs in a WR in the RQ:                   511
+Requested max number of data that can be posted inline to the SQ: 0
+Error:    File exists
+
+Check requested attributes.
+--------------------------------------------------------------------------
+--------------------------------------------------------------------------
+Open MPI has detected that there are UD-capable Verbs devices on your
+system, but none of them were able to be setup properly.  This may
+indicate a problem on this system.
+
+You job will continue, but Open MPI will ignore the "ud" oob component
+in this run.
+
+Hostname: compute-0-9
+--------------------------------------------------------------------------
+
`,r:{minutes:.95,words:284},y:"a",t:"Openmpi"},["/code/linux/openmpi.html","/code/linux/openmpi.md"]],["v-b72643ac","/code/python/",{y:"p",t:"Python"},["/code/python/README.md"]],["v-200d9c72","/code/python/pip-error/",{d:1663359893e3,l:"2022年9月17日",e:`

pip 报错

+

找不到指定文件

+

安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。

+

课题组一个同学安装 ase 时遇到以下报错,

+
C:\\Users\\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
+Defaulting to user installation because normal site-packages is not writeable
+Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
+Collecting ase
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
+Collecting matplotlib>=3.1.0
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB)
+Collecting numpy>=1.15.0
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB)
+Collecting scipy>=1.1.0
+  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB)
+  Installing build dependencies ... done
+  Getting requirements to build wheel ... error
+  error: subprocess-exited-with-error
+
+  × Getting requirements to build wheel did not run successfully.
+  │ exit code: 1
+  ╰─> [55 lines of output]
+      The Meson build system
+      Version: 0.62.2
+      Source dir: C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd
+      Build dir: C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build
+      Build type: native build
+      Project name: SciPy
+      Project version: 1.9.1
+      WARNING: Failed to activate VS environment: Could not find C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe
+
+      ..\\..\\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]
+      The following exception(s) were encountered:
+      Running "icl " gave "[WinError 2] 系统找不到指定的文件。"
+      Running "cl /?" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "cc --version" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "gcc --version" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "clang --version" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "clang-cl /?" gave "[WinError 2] 系统找不到指定的文件。"
+      Running "pgcc --version" gave "[WinError 2] 系统找不到指定的文件。"
+
+      A full log can be found at C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build\\meson-logs\\meson-log.txt
+      + meson setup --native-file=C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\\Program Files\\Python311 C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build
+      Traceback (most recent call last):
+        File "C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 363, in <module>
+          main()
+        File "C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 345, in main
+          json_out['return_val'] = hook(**hook_input['kwargs'])
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+        File "C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 130, in get_requires_for_build_wheel
+          return hook(config_settings)
+                 ^^^^^^^^^^^^^^^^^^^^^
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 923, in get_requires_for_build_wheel
+          with _project(config_settings) as project:
+        File "C:\\Program Files\\Python311\\Lib\\contextlib.py", line 137, in __enter__
+          return next(self.gen)
+                 ^^^^^^^^^^^^^^
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 902, in _project
+          with Project.with_temp_working_dir(
+        File "C:\\Program Files\\Python311\\Lib\\contextlib.py", line 137, in __enter__
+          return next(self.gen)
+                 ^^^^^^^^^^^^^^
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 547, in with_temp_working_dir
+          yield cls(source_dir, tmpdir, build_dir)
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 463, in __init__
+          self._configure(reconfigure=bool(build_dir) and not native_file_mismatch)
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 494, in _configure
+          self._meson(
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 477, in _meson
+          return self._proc('meson', *args)
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
+        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 472, in _proc
+          subprocess.check_call(list(args))
+        File "C:\\Program Files\\Python311\\Lib\\subprocess.py", line 413, in check_call
+          raise CalledProcessError(retcode, cmd)
+      subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\\\Program Files\\\\Python311', 'C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build']' returned non-zero exit status 1.
+      [end of output]
+
+  note: This error originates from a subprocess, and is likely not a problem with pip.
+error: subprocess-exited-with-error
+
+× Getting requirements to build wheel did not run successfully.
+│ exit code: 1
+╰─> See above for output.
+
+note: This error originates from a subprocess, and is likely not a problem with pip.
+
+
`,r:{minutes:6.62,words:1985},y:"a",t:"pip 报错"},["/code/python/pip-error.html","/code/python/pip-error.md"]],["v-398f20bb","/code/python/pip-mirrors/",{d:166336162e4,l:"2022年9月17日",e:`

pip 换源

+

国内源

+

新版 ubuntu 要求使用 https 源,要注意。

+`,r:{minutes:.61,words:184},y:"a",t:"pip 换源"},["/code/python/pip-mirrors.html","/code/python/pip-mirrors.md"]],["v-5f5c14e3","/dft-learning/pages/77a22e/",{d:160564129e4,l:"2020年11月18日",c:["Theory"],e:`

关于材料计算

+

不写了,反正写了也看不懂 — — !

+

+

关于理论计算

+

啊这...我也不知道啊...

+

插播一个我觉得还不错的视频 谈谈理论计算如何入门(上) | BV1z7411f7ra ,UP是刘锦程博士:

+
+ +
`,r:{minutes:.53,words:158},y:"a",t:"理论知识"},["/dft-learning/01.Theory/","/dft-learning/01.Theory/README.md"]],["v-290994d6","/dft-learning/pages/06c8b9/",{d:160415089e4,l:"2020年10月31日",e:`

计算常用软件

+

本列表中,对于完成课程所必需使用的软件,标注为 (Required);可选安装的软件,标注为 (Optional)

+

对于 Windows 端的程序,部分关键的安装步骤展示在第二节。

+

For Windows

+
    +
  • 建模及可视化软件 (Required) +
      +
    • Materials Studio
    • +
    • VESTA:官网 / 下载
    • +
    • GaussView:高斯 (Optional)
    • +
    +
  • +
  • SSH 客户端 (Required) + +
  • +
  • 文件传输工具 (Required) +
      +
    • XFTP
    • +
    • WinSCP
    • +
    +
  • +
  • X Server (Required) + +
  • +
  • 开发环境:Python (Required)(含 ase 包) + +
  • +
  • 文本编辑器 (Optional) +
      +
    • Notepad++
    • +
    • VS Code
    • +
    +
  • +
  • Markdown 编辑器(Optional) +
      +
    • Typora
    • +
    +
  • +
`,r:{minutes:1.19,words:356},y:"a",t:"计算常用软件"},["/dft-learning/02.Install/00.requirements.html","/dft-learning/02.Install/00.requirements.md"]],["v-22c29653","/dft-learning/pages/6424b6/",{d:1631467411e3,l:"2021年9月13日",c:["Install"],e:`

Windows 平台的部分软件安装

+

由于安装过于简单,故只对部分关键步骤做说明。

+

Materials Studio 激活

+

安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \\Program Files (x86)\\BIOVIA\\LicensePack\\Licenses

+
image-20210913190855840
+

然后启动授权管理器:

+
image-20210913190616258
`,r:{minutes:.69,words:207},y:"a",t:"Windows 平台的部分软件安装"},["/dft-learning/02.Install/01.windows-apps.html","/dft-learning/02.Install/01.windows-apps.md"]],["v-28c0fe97","/dft-learning/pages/66a232/",{d:160561122e4,l:"2020年11月17日",c:["Install"],e:`

安装 ASE

+

总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。

+

Requirements

+

最新版本的 ase 需要的环境条件 [1]

`,r:{minutes:2.7,words:811},y:"a",t:"安装 ASE"},["/dft-learning/02.Install/03.install-ase.html","/dft-learning/02.Install/03.install-ase.md"]],["v-60f15105","/dft-learning/pages/fce84f/",{d:16058052e5,l:"2020年11月20日",c:["Install"],e:`

VASPKIT 的配置

+

推荐视频 VASPKIT 功能介绍,解放你的双手

+
+
`,r:{minutes:3.61,words:1084},y:"a",t:"VASPKIT 的配置"},["/dft-learning/02.Install/21.linux-install-vaspkit.html","/dft-learning/02.Install/21.linux-install-vaspkit.md"]],["v-95f27414","/dft-learning/pages/40eca8/",{d:16058052e5,l:"2020年11月20日",c:["Install"],e:`

配置 VTST 的脚本

+

下载

+
cd ~/app
+wget http://theory.cm.utexas.edu/code/vtstscripts.tgz
+
`,r:{minutes:.26,words:77},y:"a",t:"配置 VTST 的脚本"},["/dft-learning/02.Install/22.linux-install-vtstScript.html","/dft-learning/02.Install/22.linux-install-vtstScript.md"]],["v-25eb367b","/dft-learning/pages/ea401e/",{d:1663003411e3,l:"2022年9月13日",c:["Install"],e:`

为 linux 非 ROOT 用户安装 lrzsz

+

lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rzsz 命令进行上传和下载。

+

如果拥有 ROOT 权限,可以直接执行下述代码安装:

+
yum -y install lrzsz
+
`,r:{minutes:.98,words:293},y:"a",t:"为 linux 非 ROOT 用户安装 lrzsz"},["/dft-learning/02.Install/23.linux-install-lrzsz.html","/dft-learning/02.Install/23.linux-install-lrzsz.md"]],["v-03c8e5f0","/dft-learning/pages/a33822/",{d:160803889e4,l:"2020年12月15日",c:["Install"],e:`

使用默认 GCC 编译 gnuplot

+

无需,学校已安装。

+
cd /tmp
+wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz
+tar xzvf gnuplot-5.2.5.tar.gz 
+cd gnuplot-5.2.5/
+./configure --prefix=/public/home/zjb/app/gunplot/
+make & make install
+
`,r:{minutes:.25,words:75},y:"a",t:"linux 编译 gnuplot"},["/dft-learning/02.Install/32.linux-install-gnuplot.html","/dft-learning/02.Install/32.linux-install-gnuplot.md"]],["v-f0abf42e","/dft-learning/pages/816847/",{d:160596073e4,l:"2020年11月21日",c:["Install"],e:`

为学校的 linux 安装 python3

+

由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。

+

步骤放在最前面

+

升级 OPENSSL

+
cd /tmp
+wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz
+tar -xvf openssl-1.1.1d.tar.gz
+cd openssl-1.1.1d
+./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib  #注意添加no-zlib
+make && make install
+
`,r:{minutes:4.1,words:1231},y:"a",t:"linux 编译 py3"},["/dft-learning/02.Install/33.linux-install-python-for-nonRoot.html","/dft-learning/02.Install/33.linux-install-python-for-nonRoot.md"]],["v-3ad9eb9e","/dft-learning/pages/e8ba48/",{d:1645907651e3,l:"2022年2月27日",c:["Install","安装"],e:`

编译 VASP with VTST

+

准备源码

+

VASP 源码目录结构

+
$ more README
+           vasp.X.X.X (root directory)
+                      |
+   ---------------------------------------
+  |              |          |             |
+ arch           bin       build          src
+                                          |
+                                     ----------
+                                    |          |
+                                   lib       CUDA
+
`,r:{minutes:3.21,words:962},y:"a",t:"编译 VASP with VTST"},["/dft-learning/02.Install/34.linux-install-vtst-vasp.html","/dft-learning/02.Install/34.linux-install-vtst-vasp.md"]],["v-5606cfbc","/dft-learning/pages/install/",{y:"p",t:"软件安装"},["/dft-learning/02.Install/","/dft-learning/02.Install/README.md"]],["v-ea20dcf0","/dft-learning/pages/832cb5/",{d:16041672e5,l:"2020年11月1日",c:["Linux"],e:`

PBS

+

作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。

+

PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。

+

PBS 命令

+

提交作业

+

用以下命令提交作业:

+
qsub [options] <control script>
+
`,r:{minutes:8.17,words:2450},y:"a",t:"PBS"},["/dft-learning/03.Linux/PBS.html","/dft-learning/03.Linux/PBS.md"]],["v-37263cfa","/dft-learning/pages/linux/",{y:"p",t:"Linux 基础"},["/dft-learning/03.Linux/","/dft-learning/03.Linux/README.md"]],["v-7757da05","/dft-learning/pages/6daef6/",{d:1608387351e3,l:"2020年12月19日",c:["Materials-Studio"],e:`

一些乱七八糟的为什么

+

为什么要建立超胞?

+
    +
  1. 避免周期性镜像间的互相影响
  2. +
  3. 考虑多分⼦吸附时的多种构象
  4. +
+
+

如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么?

+

我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢?

+

(1)掺杂问题

+

1)建立超胞是为了获得合适的掺杂浓度;

+

2)清晰地分成置换固溶体或间隙固溶体

+

(2)表面吸附问题

+

1)可以模拟不同晶向的吸附密度;

+

2)要避免吸附的气体分子和镜像分子间有作用;

+

https://www.zhihu.com/question/282248524

+
`,r:{minutes:2.48,words:744},y:"a",t:"建模中的一些小疑惑"},["/dft-learning/04.Materials-Studio/02.note.html","/dft-learning/04.Materials-Studio/02.note.md"]],["v-5934b528","/dft-learning/pages/ae5253/",{d:160129567e4,l:"2020年9月28日",c:["Materials-Studio"],e:`

作业:CO吸附在Au上建模

+

任务:建立CO在Au 111 晶面的吸附模型

+

步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。

+

结果:

+
Model of CO adsorption on Au
+`,r:{minutes:.32,words:95},y:"a",t:"作业:CO吸附在Au上建模"},["/dft-learning/04.Materials-Studio/11.task-model-of-CO-absorption-on-Au copy.html","/dft-learning/04.Materials-Studio/11.task-model-of-CO-absorption-on-Au%20copy.html","/dft-learning/04.Materials-Studio/11.task-model-of-CO-absorption-on-Au copy.md","/dft-learning/04.Materials-Studio/11.task-model-of-CO-absorption-on-Au%20copy.md"]],["v-e6ee3948","/dft-learning/pages/391336/",{d:160129567e4,l:"2020年9月28日",c:["Materials-Studio"],e:`

作业:矩形石墨烯建模

+

任务

+

建立矩形的石墨烯模型

+

步骤

+
    +
  1. +

    导入石墨烯结构

    +

    import - Structures\\ceramics\\graphite.msi

    +
  2. +
  3. +

    Make P1 降低对成性

    +

    Build -> Symmetry -> Make P1,

    +

    删掉一层C原子层

    +
  4. +
  5. +

    切面

    +

    Build -> Surfaces -> Cleave Surface

    +

    Surface Box - Cleave plane: 001

    +

    Surface Mesh - Surface vectors - U: 210

    +
  6. +
  7. +

    超胞

    +

    Build -> Symmetry -> Supercell

    +

    Supercell range A=3, B=5 (60 C atoms)

    +
  8. +
  9. +

    真空层

    +

    Build -> Crystals -> Build Vacuum Slab

    +

    Vacuum orientation: C

    +

    Vacuum thickness: 20 Å

    +
  10. +
  11. +

    将原子层移动到Z方向中部(只是看起来方便)

    +
  12. +
  13. +

    Display style -> Lattice -> display style -> style -> In cell

    +
  14. +
  15. +

    修改背景、标尺、晶格的颜色等

    +
  16. +
  17. +

    Save and Print to PDF

    +
  18. +
`,r:{minutes:.68,words:203},y:"a",t:"作业:矩形石墨烯建模"},["/dft-learning/04.Materials-Studio/12.task-model-of-Rectangular-graphene.html","/dft-learning/04.Materials-Studio/12.task-model-of-Rectangular-graphene.md"]],["v-ba918472","/dft-learning/pages/2e10d2/",{d:160674289e4,l:"2020年11月30日",c:["Materials-Studio"],e:`

Materials Studio

+

懒得写了的

+

建模

+

问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体?

+

答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。

`,r:{minutes:2.64,words:793},y:"a",t:"Materials Studio"},["/dft-learning/04.Materials-Studio/","/dft-learning/04.Materials-Studio/README.md"]],["v-0d003bb2","/dft-learning/pages/df30ef/",{d:160803889e4,l:"2020年12月15日",c:["VASP"],e:`

VASP

+

VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。

+

vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。

+

因此我们需要区分开 VASPVASPKITVASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。

`,r:{minutes:1.21,words:363},y:"a",t:"VASP"},["/dft-learning/05.VASP/","/dft-learning/05.VASP/README.md"]],["v-417c1e62","/dft-learning/pages/5e29d2/",{d:160112689e4,l:"2020年9月26日",c:["Others"],e:`

Materials Studio 在 Windows2004 及以上假死

+

一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。

+`,r:{minutes:.26,words:78},y:"a",t:"MS 在 win2004 及以上一按鼠标就卡住"},["/dft-learning/09.Others/01.MS-NoResponse-win2004.html","/dft-learning/09.Others/01.MS-NoResponse-win2004.md"]],["v-5ae1580f","/dft-learning/pages/fa5420/",{d:160528849e4,l:"2020年11月14日",c:["Others"],e:`

在 Windows 20H2 上运行 ASE 报错

+
 ase --version
+ ** On entry to DGEBAL parameter number  3 had an illegal value
+ ** On entry to DGEHRD  parameter number  2 had an illegal value
+ ** On entry to DORGHR DORGQR parameter number  2 had an illegal value
+ ** On entry to DHSEQR parameter number  4 had an illegal value
+Traceback (most recent call last):
+  File "c:\\users\\northword\\appdata\\local\\programs\\python\\python39\\lib\\runpy.py", line 197, in _run_module_as_main
+    return _run_code(code, main_globals, None,
+  File "c:\\users\\northword\\appdata\\local\\programs\\python\\python39\\lib\\runpy.py", line 87, in _run_code
+    exec(code, run_globals)
+  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\Scripts\\ase.exe\\__main__.py", line 4, in <module>
+  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\ase\\__init__.py", line 8, in <module>
+    import numpy as np
+  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\__init__.py", line 305, in <module>
+    _win_os_check()
+  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\__init__.py", line 302, in _win_os_check
+    raise RuntimeError(msg.format(__file__)) from None
+RuntimeError: The current Numpy installation ('C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86
+
`,r:{minutes:1.18,words:354},y:"a",t:"numpy 在 win2004 及以上报错"},["/dft-learning/09.Others/03.numpy-in-win20H2.html","/dft-learning/09.Others/03.numpy-in-win20H2.md"]],["v-6f1e0448","/dft-learning/pages/1dfd6d/",{d:160599007e4,l:"2020年11月22日",c:["Others"],e:`

呼呼哈嘿

+

啊这,我还没写完...

+

还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~

+
+

本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233

+`,r:{minutes:.43,words:130},y:"a",t:"on-the-end"},["/dft-learning/09.Others/99.on-the-end.html","/dft-learning/09.Others/99.on-the-end.md"]],["v-7e76b8f8","/dft-learning/pages/vasp-error/",{y:"p",t:"故障排除"},["/dft-learning/09.Others/","/dft-learning/09.Others/README.md"]],["v-18ed4b78","/software/office/install/",{d:1663783123e3,l:"2022年9月22日",e:`

Office 安装

+

使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。

+

下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。

+

OTP 下载

+

下载 | Office Tool Plus 官方网站 (landian.vip)

`,r:{minutes:.51,words:153},y:"a",t:"Office 安装"},["/software/office/install.html","/software/office/install.md"]],["v-46bb4806","/software/zotero/",{y:"p",t:"Zotero"},["/software/zotero/README.md"]],["v-4ebfad01","/software/zotero/Zotero%20%E5%B0%86%E5%BC%95%E6%96%87%E9%93%BE%E6%8E%A5%E5%88%B0%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE.html",{d:1659126197e3,l:"2022年7月30日",e:`

Zotero 将引文链接到参考书目

+

描述

+

建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”:

+
+

Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]

`,r:{minutes:3.02,words:905},y:"a",t:"Zotero 将引文链接到参考书目"},["/software/zotero/Zotero 将引文链接到参考书目.html","/software/zotero/Zotero 将引文链接到参考书目.md",":md"]],["v-2d2d3678","/software/zotero/Zotero%20%E6%8C%87%E5%8C%97.html",{d:1642543206e3,l:"2022年1月19日",e:`

Zotero 指北

+

关于 Zotero 是什么以及为什么使用它

+

Why Zotero & Why NOT EndNote?

+
+

Todo

+
+

安装与配置

+

主程序

+

没什么好记录的,在 Zotero 官网 下载一路下一步安装即可。

+

浏览器插件 Zotero Connector

`,r:{minutes:5.23,words:1569},y:"a",t:"Zotero 指北"},["/software/zotero/Zotero 指北.html","/software/zotero/Zotero 指北.md",":md"]],["v-f322b4c4","/code/citation-style-language/primer/",{d:1659370984e3,l:"2022年8月2日",e:`

CSL 介绍

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

前言

+

CSL 是一种基于 XML 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 CSL 规范

+

CSL 是什么

`,r:{minutes:.99,words:296},y:"a",t:"CSL 介绍"},["/code/citation-style-language/primer/README.md"]],["v-52613576","/code/citation-style-language/primer/citation-formats.html",{d:1659375191e3,l:"2022年8月2日",e:`

引文格式

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下:

+

In-text Styles

+

引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numericlabel 格式。

`,r:{minutes:3.22,words:967},y:"a",t:"引文格式"},[":md"]],["v-3a58307c","/code/citation-style-language/primer/end.html",{d:1659375191e3,l:"2022年8月2日",e:`

更进一步

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看 CSL 标准文档或者其他参考文档。

+`,r:{minutes:.25,words:74},y:"a",t:"更进一步"},[":md"]],["v-74acd478","/code/citation-style-language/primer/the-csl-ecosystem.html",{d:1659375191e3,l:"2022年8月2日",e:`

CSL 生态

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。

`,r:{minutes:5.94,words:1783},y:"a",t:"CSL 生态"},[":md"]],["v-1989b542","/code/citation-style-language/primer/understanding-csl-styles.html",{d:1659375191e3,l:"2022年8月2日",e:`

理解 CSL 格式

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。

`,r:{minutes:10.12,words:3036},y:"a",t:"理解 CSL 格式"},[":md"]],["v-bca6172c","/code/citation-style-language/specification/",{d:1659372926e3,l:"2022年8月2日",e:`

CSL 1.0.2 规范

+
+

[!DONE] +此页面于 2022-8-2 已校对完成。

+
+

主要作者:Rintze M. Zelle, PhD、 Brenton M. Wiernik、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier

`,r:{minutes:1.72,words:517},y:"a",t:"CSL 1.0.2 规范"},["/code/citation-style-language/specification/README.md"]],["v-3ad3b172","/code/citation-style-language/specification/file-types.html",{d:1659372926e3,l:"2022年8月2日",e:`

文件类型

+
+

[!DONE] File Types

+
+

CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。

+

独立样式

+

独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。

`,r:{minutes:1.28,words:384},y:"a",t:"文件类型"},[":md"]],["v-08a9b111","/code/citation-style-language/specification/locale-files-strucure.html",{d:1659372926e3,l:"2022年8月2日",e:`

本地化文件的结构

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。

+

每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名("xx-XX" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 "1.0")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:termscs:datecs:style-options 子元素。下面是一个 本地化文件的部分示例:

`,r:{minutes:7.27,words:2181},y:"a",t:"本地化文件的结构"},[":md"]],["v-45111e2a","/code/citation-style-language/specification/namespacing.html",{d:1659474028e3,l:"2022年8月3日",e:`

命名空间

+
+

[!Done] Namespacing

+
+

CSL XML 命名空间 URI 是 http://purl.org/net/xbiblio/csl

+

在本规范中,当提及 CSL 元素时,命名空间前缀为 cs: ,但对于根元素 cs:stylecs:locale 的默认命名空间声明(用 xmlns 属性设置),通常省略 cs:

`,r:{minutes:.29,words:86},y:"a",t:"命名空间"},[":md"]],["v-cd2badd2","/code/citation-style-language/specification/rendering-elements.html",{d:1659360344e3,l:"2022年8月1日",e:`

渲染元素

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。

+

Layout

+

cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixesformattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 "(1,2)" 类型的引文可以使用下面的代码实现:

`,r:{minutes:22.59,words:6778},y:"a",t:"渲染元素"},[":md"]],["v-39b473fe","/code/citation-style-language/specification/style-behavior.html",{d:1659372926e3,l:"2022年8月2日",e:`

样式的行为

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

选项

+

样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:stylecs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。

`,r:{minutes:22.38,words:6713},y:"a",t:"样式的行为"},[":md"]],["v-bc476d32","/code/citation-style-language/specification/styles-structure.html",{d:1659372926e3,l:"2022年8月2日",e:`

样式的结构

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

根元素 cs:style

+

样式的根元素是 cs:style。在 独立样式 中,根元素有以下几种属性:

`,r:{minutes:8.58,words:2573},y:"a",t:"样式的结构"},[":md"]],["v-587333a4","/code/citation-style-language/specification/whitespace-handling.html",{d:1659456133e3,l:"2022年8月3日",e:`

空格处理

+
+

[!question] Whitespace Handling +翻译有一些疑惑,请参阅原文,欢迎提出改善意见。

+
+

CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output:

+

CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。

`,r:{minutes:.45,words:135},y:"a",t:"空格处理"},[":md"]],["v-1f0249ff","/code/citation-style-language/specification/xml-declaration.html",{d:1659375191e3,l:"2022年8月2日",e:`

XML 声明

+
+

[!Done] XML Declaration

+
+

每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是:

+
<?xml version="1.0" encoding="UTF-8"?>
+
`,r:{minutes:.25,words:75},y:"a",t:"XML 声明"},[":md"]],["v-2deff341","/dft-learning/pages/69b75c/",{d:160579249e4,l:"2020年11月19日",c:["VASP"],e:`

VASP 的输入文件

+

VASP 运行至少包含四个输入文件:INCARPOSCARPOTCATRKPOINTS

+

INCAR

+

INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。

+

标签的含义可以查 vasp-input-files-INCAR 和 [VASP 手册](https://www.vasp.at/wiki/index.php/Category: INCAR)。

`,r:{minutes:8.58,words:2574},y:"a",t:"VASP 的输入文件"},["/dft-learning/05.VASP/01.VASP输入输出文件/01.vasp-input-files.html","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/01.vasp-input-files.html","/dft-learning/05.VASP/01.VASP输入输出文件/01.vasp-input-files.md","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/01.vasp-input-files.md"]],["v-0e400be1","/dft-learning/pages/4f0a58/",{d:160599007e4,l:"2020年11月22日",c:["VASP"],e:`

INCAR 中的常用标签

+

整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。

+

标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔;

+

与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.

+

几种必要的数据类型(仅是为了方便我理解,这个并不用会):

`,r:{minutes:7.83,words:2349},y:"a",t:"INCAR 中的常用标签"},["/dft-learning/05.VASP/01.VASP输入输出文件/02.vasp-input-files-INCAR.html","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/02.vasp-input-files-INCAR.html","/dft-learning/05.VASP/01.VASP输入输出文件/02.vasp-input-files-INCAR.md","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/02.vasp-input-files-INCAR.md"]],["v-48a4ee89","/dft-learning/pages/206ec4/",{d:160417116e4,l:"2020年11月1日",c:["VASP"],e:`

准备 VASP 的输入文件

+

输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。

+

该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。

+
+

VASPKIT 生成输入文件的选项

+

VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具:

+
[zjb@op O2_opt]$ vaspkit
+ 
+            \\\\\\///         
+           / _  _ \\       Hey, you must know what you are doing.  
+         (| (.)(.) |)     Otherwise you might get wrong results!  
+ +-----.OOOo--()--oOOO.------------------------------------------+
+ |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
+ |        Core Developer: Vei WANG (wangvei@icloud.com)          |
+ |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
+ |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
+ +-----.oooO-----------------------------------------------------+
+        (   )   Oooo.     
+         \\ (    (   )     
+          \\_)    ) /      
+                (_/       
+ ===================== Structural Options ========================
+ 1)  VASP Input Files Generator    2)  Elastic-Properties         
+ 3)  K-Path Generator              4)  Structure Editor           
+ 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
+ 
+ ===================== Electronic Options ========================
+ 11) Density-of-States             21) DFT Band-Structure         
+ 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
+ 26) Fermi-Surface                 28) Band-Structure Unfolding   
+ 
+ =========== Charge & Potential & Wavefunction Options ===========
+ 31) Charge & Spin Density         42) Potential-Related          
+ 51) Wave-Function Analysis  
+ ====================== Misc Utilities ===========================
+ 71) Optical-Properties            72) Molecular-Dynamics Kit 
+ 73) VASP2other Interface          74) USER interface
+ 91) Semiconductor Calculator      92) 2D-Materials Kit       
+                                                                  
+ 0)  Quit                                                         
+ ------------>>
+
+
`,r:{minutes:7.04,words:2112},y:"a",t:"准备 VASP 的输入文件"},["/dft-learning/05.VASP/01.VASP输入输出文件/03.vasp-input-files-gen.html","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/03.vasp-input-files-gen.html","/dft-learning/05.VASP/01.VASP输入输出文件/03.vasp-input-files-gen.md","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/03.vasp-input-files-gen.md"]],["v-389e5394","/dft-learning/pages/b32235/",{d:160599007e4,l:"2020年11月22日",c:["VASP"],e:`

VASP 的输出文件

+

基本的输出文件:OUTCAR、OSZICAR、stdout;

+

OUTCAR

+
+

todo

+
+

OSZICAR

+

收敛速度与当前步的信息。

+

其他

+

LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。

+

官网文档

+

[Category: Output_Files - vaspwiki](https://www.vasp.at/wiki/index.php/Category: Output_Files)

`,r:{minutes:.28,words:85},y:"a",t:"VASP 的输出文件"},["/dft-learning/05.VASP/01.VASP输入输出文件/05.vasp-output-files.html","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/05.vasp-output-files.html","/dft-learning/05.VASP/01.VASP输入输出文件/05.vasp-output-files.md","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/05.vasp-output-files.md"]],["v-7c106e16","/dft-learning/pages/vasp-files/",{y:"p",t:"VASP 输入输出文件"},["/dft-learning/05.VASP/01.VASP输入输出文件/","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/","/dft-learning/05.VASP/01.VASP输入输出文件/README.md","/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/README.md"]],["v-b05d858c","/dft-learning/pages/d67596/",{d:160599007e4,l:"2020年11月22日",c:["VASP"],e:`

结构优化、自洽、非自洽

+

结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。

+

静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。

+

非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。

+

本页对O2O_2进行结构优化、静电自洽、非静电自洽。

`,r:{minutes:3.64,words:1092},y:"a",t:"结构优化、自洽、非自洽"},["/dft-learning/05.VASP/02.优化/02.vasp-opt.html","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/02.vasp-opt.html","/dft-learning/05.VASP/02.优化/02.vasp-opt.md","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/02.vasp-opt.md"]],["v-264f8f39","/dft-learning/pages/663d74/",{d:1612904756e3,l:"2021年2月10日",c:["VASP","优化"],e:`

晶格常数计算

+

晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3).

+

Birch-Murnaghan 状态方程拟合

+
+

todo...

+

Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHW

+
+

直接优化晶格常数

`,r:{minutes:1.61,words:484},y:"a",t:"晶格常数计算"},["/dft-learning/05.VASP/02.优化/03.vasp-bulk.html","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/03.vasp-bulk.html","/dft-learning/05.VASP/02.优化/03.vasp-bulk.md","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/03.vasp-bulk.md"]],["v-ee92304c","/dft-learning/pages/35fcd2/",{d:1612028524e3,l:"2021年1月31日",c:["VASP","优化"],e:`
DFT+U Calculation
+ LDAU   = .TRUE.        (启用 DFT+U)
+ LDATYPE=  2            (+U的类型)
+ LDAUL  =  2 -1         (Orbitals for each species)
+ LDAUU  =  3.5  0       (U for each species)
+ LDAUJ  =  0  0         (J for each species)
+ LMAXMIX=  4            (Mixing cut-off; 4-d, 6-f)
+
`,r:{minutes:.96,words:288},y:"a",t:"DFT+U"},["/dft-learning/05.VASP/02.优化/04.vasp-DFT-plus-U.html","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/04.vasp-DFT-plus-U.html","/dft-learning/05.VASP/02.优化/04.vasp-DFT-plus-U.md","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/04.vasp-DFT-plus-U.md"]],["v-087aa3e5","/dft-learning/pages/4abf1b/",{d:161391195e4,l:"2021年2月21日",c:["VASP","优化"],e:`

表面能计算

+

定义

+

表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。

`,r:{minutes:3.65,words:1096},y:"a",t:"表面能的计算"},["/dft-learning/05.VASP/02.优化/05.vasp-surface-energy.html","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/05.vasp-surface-energy.html","/dft-learning/05.VASP/02.优化/05.vasp-surface-energy.md","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/05.vasp-surface-energy.md"]],["v-76165238","/dft-learning/pages/c81f27/",{d:161125713e4,l:"2021年1月22日",c:["VASP","优化"],e:`

吸附能的计算

+
+

Todo

+
+

影响因素

+

slab 模型在 Z 方向

+
    +
  • slab 的厚度
  • +
  • 真空层厚度
  • +
+

一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。

+

slab 模型在 XY 方向

+
    +
  • 表面大小:影响覆盖度,计算的工作量。
  • +
  • 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。
  • +
  • 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等
  • +
`,r:{minutes:1.11,words:334},y:"a",t:"吸附能的计算"},["/dft-learning/05.VASP/02.优化/06.vasp-adsorption-energy.html","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/06.vasp-adsorption-energy.html","/dft-learning/05.VASP/02.优化/06.vasp-adsorption-energy.md","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/06.vasp-adsorption-energy.md"]],["v-bba2610e","/dft-learning/pages/vasp-opt/",{y:"p",t:"结构优化"},["/dft-learning/05.VASP/02.优化/","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/","/dft-learning/05.VASP/02.优化/README.md","/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/README.md"]],["v-e90de79a","/dft-learning/pages/bbb6cc/",{d:160657009e4,l:"2020年11月28日",c:["VASP"],e:`

VASP 计算电荷密度差

+

文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。

`,r:{minutes:5.59,words:1678},y:"a",t:"VASP 计算电荷密度差"},["/dft-learning/05.VASP/03.电子结构/02.vasp-chg-diff.html","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/02.vasp-chg-diff.html","/dft-learning/05.VASP/03.电子结构/02.vasp-chg-diff.md","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/02.vasp-chg-diff.md"]],["v-8a8094b0","/dft-learning/pages/904969/",{d:161054767e4,l:"2021年1月13日",c:["VASP","电子结构"],e:`

自旋电荷密度

+

本页以 O2 的自选电荷密度为例。

+

步骤

+

本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。

+

2-scf/ 文件夹中进行。

+

有两种方法获得其自旋电荷密度:

+

方法 1:通过 VTST 脚本

+
# Usage
+$ chgsplit.pl <CHGCAR>
+
+# This example
+[zjb@op 2-scf]$ chgsplit.pl CHGCAR
+Atoms in file: 2
+Points in total charge density: 1200000
+Points in magnetization density: 1200000
+
`,r:{minutes:.83,words:250},y:"a",t:"自旋电荷密度"},["/dft-learning/05.VASP/03.电子结构/03.vasp-chg-split.html","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/03.vasp-chg-split.html","/dft-learning/05.VASP/03.电子结构/03.vasp-chg-split.md","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/03.vasp-chg-split.md"]],["v-3de23628","/dft-learning/pages/b63e81/",{d:160657009e4,l:"2020年11月28日",c:["VASP"],e:`

态密度分析

+

态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。

+

非自洽计算的基础上进行态密度分析。

+

本页以计算 O2 的态密度为例。

+

步骤

+

本页操作在完成 O2 结构优化、自洽、非自洽 之后进行。在 3-nscf 文件夹中继续。

+

计算完成后用 VTST Script 的脚本 split_dos 分离态密度:

`,r:{minutes:1.07,words:320},y:"a",t:"态密度分析"},["/dft-learning/05.VASP/03.电子结构/04.vasp-DOS.html","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/04.vasp-DOS.html","/dft-learning/05.VASP/03.电子结构/04.vasp-DOS.md","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/04.vasp-DOS.md"]],["v-c8267792","/dft-learning/pages/2a0d7d/",{d:1611240489e3,l:"2021年1月21日",c:["VASP","电子结构"],e:`

Bader 电荷分析

+
+

Todo

+
+

理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。

`,r:{minutes:1.52,words:456},y:"a",t:"Bader 电荷分析"},["/dft-learning/05.VASP/03.电子结构/05.vasp-chg-bader.html","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/05.vasp-chg-bader.html","/dft-learning/05.VASP/03.电子结构/05.vasp-chg-bader.md","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/05.vasp-chg-bader.md"]],["v-bbad892c","/dft-learning/pages/vasp-chg/",{y:"p",t:"电子结构"},["/dft-learning/05.VASP/03.电子结构/","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/","/dft-learning/05.VASP/03.电子结构/README.md","/dft-learning/05.VASP/03.%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/README.md"]],["v-2599bd96","/dft-learning/pages/19e493/",{d:160564129e4,l:"2020年11月18日",c:["VASP"],e:`

使用 NEB 方法计算反应路径

+

流程

+
    +
  1. 分别对初态和末态进行结构优化
  2. +
  3. 使用脚本生成中间过程图像 (结构)
  4. +
  5. NEB 计算
  6. +
  7. 处理结果
  8. +
+

文件结构

+
详情 +
neb 计算的文件结构示意
+
+

这张图整挺好,直接拿过来了,这是原地址

+
+
[zjb@op neb]$ tree
+.
+├── ini                ***初态常规结构优化***
+│   ├── CONTCAR            -初态优化后的结构——新的初态
+│   ├── INCAR              -初态结构优化的输入文件1
+│   ├── ini2.vasp          -
+│   ├── KPOINTS            -初态结构优化的输入文件2
+│   ├── OSZICAR
+│   ├── OUTCAR
+│   ├── out.log
+│   ├── POSCAR             -初态结构优化的输入文件3
+│   ├── POTCAR             -初态结构优化的输入文件4
+│   ├── stdout
+│   ├── vasp.pbs
+├── fin                ***末态常规结构优化***
+│   ├── CONTCAR            -末态优化后的结构——新的末态
+│   ├── fin2.vasp
+│   ├── INCAR
+│   ├── KPOINTS
+│   ├── OSZICAR
+│   ├── OUTCAR
+│   ├── out.log
+│   ├── POSCAR
+│   ├── POTCAR
+│   ├── stdout
+│   └── vasp.pbs
+├── 00                 ***↓↓↓*****中间态*****↓↓↓***
+│   ├── OUTCAR            -初态结构优化后的OUTCAR   ../ini/OUTCAR
+│   ├── POSCAR            -初态结构优化后的CONTCAR  ../ini/CONTCAR
+│   └── POSCAR.xyz
+├── 01
+│   ├── CONTCAR
+│   ├── OUTCAR
+│   ├── POSCAR
+│   └── POSCAR.xyz
+│   └── stdout
+├── 02
+│   ├── CONTCAR
+│   ├── OUTCAR
+│   ├── POSCAR
+│   ├── POSCAR.xyz
+│   └── stdout
+├── 03
+│   ├── CONTCAR
+│   ├── OUTCAR
+│   ├── POSCAR
+│   ├── POSCAR.xyz
+│   └── stdout
+├── 04
+│   ├── OUTCAR            *末态结构优化后的OUTCAR  ../fin/OUTCAR
+│   ├── POSCAR            *末态结构优化后的CONTCAR ../fin/CONTCAR
+│   └── POSCAR.xyz     ***↑↑↑*****中间态*****↑↑↑***
+
+├── INCAR              ***neb计算的输入文件等***
+├── KPOINTS
+├── movie
+├── movie.xyz
+├── neb.dat
+├── out.log
+├── POTCAR
+├── stdout
+├── vasp.pbs
+└── vasprun.xml
+
`,r:{minutes:7.82,words:2345},y:"a",t:"使用 NEB 方法计算反应路径"},["/dft-learning/05.VASP/04.反应路径/01.vasp-neb.html","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/01.vasp-neb.html","/dft-learning/05.VASP/04.反应路径/01.vasp-neb.md","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/01.vasp-neb.md"]],["v-580e7486","/dft-learning/pages/297f6a/",{d:1611240272e3,l:"2021年1月21日",c:["VASP","反应路径"],e:`

Dimer 方法搜索过渡态

+
+

Todo

+
+`,r:{minutes:.12,words:36},y:"a",t:"Dimer 方法"},["/dft-learning/05.VASP/04.反应路径/02.vasp-dimer.html","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/02.vasp-dimer.html","/dft-learning/05.VASP/04.反应路径/02.vasp-dimer.md","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/02.vasp-dimer.md"]],["v-207456c6","/dft-learning/pages/16cc62/",{d:1611240369e3,l:"2021年1月21日",c:["VASP","反应路径"],e:`

频率分析

+
+

Todo.... 频率分析是个啥,理论知识...

+
+

频率分析作用

+
    +
  1. +

    确定结构是否稳定;

    +
  2. +
  3. +

    看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;

    +
  4. +
  5. +

    反应热,反应能垒,吸附能等的零点能矫正;

    +
  6. +
  7. +

    确认过渡态(有一个振动的虚频)

    +
  8. +
  9. +

    热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

    +
  10. +
`,r:{minutes:8.49,words:2547},y:"a",t:"频率分析"},["/dft-learning/05.VASP/04.反应路径/03.vasp-frequency-analysis.html","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/03.vasp-frequency-analysis.html","/dft-learning/05.VASP/04.反应路径/03.vasp-frequency-analysis.md","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/03.vasp-frequency-analysis.md"]],["v-bba3a0be","/dft-learning/pages/vasp-neb/",{y:"p",t:"反应路径"},["/dft-learning/05.VASP/04.反应路径/","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/","/dft-learning/05.VASP/04.反应路径/README.md","/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/README.md"]],["v-76a4ec21","/dft-learning/pages/6e7240/",{d:160838671e4,l:"2020年12月19日",c:["VASP","分子动力学"],e:`

分子动力学入门

+

课上:八个水分子为例的分子动力学。

+

分子动力学

+

步骤

+

建模

+

在 MS 中建立模型,上传,vaspkit-106。

+

结构优化

+

INCAR 为:

+
详情 +
[zjb@op geo2]$ cat INCAR 
+Global Parameters
+ ISTART =  0            (Read existing wavefunction; if there)
+# ISPIN =  2           (Spin polarised DFT)
+ ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
+ LREAL  = .FALSE.          (Projection operators: automatic)
+ ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
+ PREC   =  Normal       (Precision level)
+ LWAVE  = .FALSE.        (Write WAVECAR or not)
+ LCHARG = .FALSE.        (Write CHGCAR or not)
+ NPAR   = 4           (Max is no. nodes; don't set for hybrids)
+ ALGO   = Fast
+
+Electronic Relaxation
+ISMEAR =  0            (Gaussian smearing; metals:1)
+SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
+EDIFF  =  1E-04        (SCF energy convergence; in eV)
+
+Ionic Relaxation
+NSW    =  100          (Max electronic SCF steps)
+IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
+POTIM  =  0.3
+#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
+EDIFFG = -1E-02        (Ionic convergence; eV/AA)
+# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
+
+
`,r:{minutes:1.24,words:372},y:"a",t:"分子动力学"},["/dft-learning/05.VASP/05.分子动力学/01.vasp-md.html","/dft-learning/05.VASP/05.%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/01.vasp-md.html","/dft-learning/05.VASP/05.分子动力学/01.vasp-md.md","/dft-learning/05.VASP/05.%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/01.vasp-md.md"]],["v-2715d38a","/dft-learning/pages/vasp-md/",{y:"p",t:"分子动力学"},["/dft-learning/05.VASP/05.分子动力学/","/dft-learning/05.VASP/05.%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/","/dft-learning/05.VASP/05.分子动力学/README.md","/dft-learning/05.VASP/05.%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/README.md"]],["v-6c38d36e","/dft-learning/pages/9909a6/",{d:160648369e4,l:"2020年11月27日",c:["VASP"],e:`

然后打开 vaspkit,依次进入 3303

+
[zjb@op NaCl]$ cp NaCl.vasp POSCAR
+[zjb@op NaCl]$ vaspkit
+ 
+            \\\\\\///         
+           / _  _ \\       Hey, you must know what you are doing.  
+         (| (.)(.) |)     Otherwise you might get wrong results!  
+ +-----.OOOo--()--oOOO.------------------------------------------+
+ |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
+ |        Core Developer: Vei WANG (wangvei@icloud.com)          |
+ |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
+ |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
+ +-----.oooO-----------------------------------------------------+
+        (   )   Oooo.     
+         \\ (    (   )     
+          \\_)    ) /      
+                (_/       
+ ===================== Structural Options ========================
+ 1)  VASP Input Files Generator    2)  Elastic-Properties         
+ 3)  K-Path Generator              4)  Structure Editor           
+ 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
+ 
+ ===================== Electronic Options ========================
+ 11) Density-of-States             21) DFT Band-Structure         
+ 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
+ 26) Fermi-Surface                 28) Band-Structure Unfolding   
+ 
+ =========== Charge & Potential & Wavefunction Options ===========
+ 31) Charge & Spin Density         42) Potential-Related          
+ 51) Wave-Function Analysis  
+ ====================== Misc Utilities ===========================
+ 71) Optical-Properties            72) Molecular-Dynamics Kit 
+ 73) VASP2other Interface          74) USER interface
+ 91) Semiconductor Calculator      92) 2D-Materials Kit       
+                                                                  
+ 0)  Quit                                                         
+ ------------>>
+3
+ ===================== K-Path Options ============================
+ 301) 1D Nano Structure
+ 302) 2D Nano Structure (Experimental)
+ 303) 3D bulk structure (Experimental)
+ 304) Phonopy K-Path for 2D Nano Structure (Experimental)
+ 
+ 0) Quit                                              
+ 9) Back                                              
+ ------------>>
+303
+ +-------------------------- Warm Tips --------------------------+
+   The suggested K-Path is only for standardized primtive cell.
+   It is for reference only and you can manually modify K-Path.
+ +---------------------------------------------------------------+
+ +-------------------------- Warm Tips --------------------------+
+     See An Example in vaspkit/examples/seek_kpath/GaAs_bulk.        
+   The suggested K-Path is only for standardized primtive cell.
+ This Feature is Experimental & Check Your System using SeeK-Path.       
+ For More details See [www.materialscloud.org/work/tools/seekpath].
+ +---------------------------------------------------------------+
+  -->> (01) Reading Structural Parameters from POSCAR File...
+ +-------------------------- Summary ----------------------------+
+                           Prototype: AB
+           Total Atoms in Input Cell:   8
+     Lattice Constants in Input Cell:   5.620   5.620   5.620
+        Lattice Angles in Input Cell:  90.000  90.000  90.000
+       Total Atoms in Primitive Cell:   2
+ Lattice Constants in Primitive Cell:   3.974   3.974   3.974
+    Lattice Angles in Primitive Cell:  60.000  60.000  60.000
+                      Crystal System: Cubic
+                       Crystal Class: m-3m
+                     Bravais Lattice: cF
+            Extended Bravais Lattice: cF2
+                         Space Group: 225
+                         Point Group: 32 [ Oh ]
+                       International: Fm-3m
+                 Symmetry Operations: 192
+                    Suggested K-Path: (shown in the next line)
+ [ Gamma-X-U|K-Gamma-L-W-X ]
+ +---------------------------------------------------------------+
+  -->> (02) Written PRIMCELL.vasp file.
+  -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference.
+  -->> (04) Written POTCAR File with the Recommended Potential!
+  -->> (05) Written KPATH.in File for Band-Structure Calculation.
+ +----------------------------WARNING----------------------------+
+ | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know |
+ |   what you are doing. Otherwise you might get wrong results!  |
+ +---------------------------------------------------------------+
+ +---------------------------------------------------------------+
+ |                       * ACKNOWLEDGMENTS *                     |
+ | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
+ | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
+ +---------------------------------------------------------------+
+ |                          * CITATIONS *                        |
+ | We Would Appreciate if You Cite in Your Research with VASPKIT.|
+ | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
+ | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
+ +---------------------------------------------------------------+
+[zjb@op NaCl]$ 
+
+
`,r:{minutes:2.14,words:641},y:"a",t:"K-PATH"},["/dft-learning/05.VASP/08.其他/01.K-PATH.html","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/01.K-PATH.html","/dft-learning/05.VASP/08.其他/01.K-PATH.md","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/01.K-PATH.md"]],["v-89e8430c","/dft-learning/pages/908cf1/",{d:160803889e4,l:"2020年12月15日",c:["Other App"],e:`

ASE GUI 的用法

+

原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。

+

参考文档:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui

`,r:{minutes:.25,words:75},y:"a",t:"ASE-usage"},["/dft-learning/05.VASP/08.其他/02.ASE-usage.html","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/02.ASE-usage.html","/dft-learning/05.VASP/08.其他/02.ASE-usage.md","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/02.ASE-usage.md"]],["v-6ba6606f","/dft-learning/pages/vasp-others/",{y:"p",t:"其他"},["/dft-learning/05.VASP/08.其他/","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/","/dft-learning/05.VASP/08.其他/README.md","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/README.md"]],["v-39c6dbde","/dft-learning/vasp/error/",{d:1668106247e3,l:"2022年11月11日",e:`

VASP 运行中的错误

+

Error EDDDAV: Call to ZHEGV failed. Returncode = xx

+

这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。

+

参考:Re: on solving "Error EDDDAV: Call to ZHEGV failed. Returncode = xx" (vasp.at)

`,r:{minutes:.88,words:265},y:"a",t:"VASP 运行中的错误"},["/dft-learning/05.VASP/08.其他/error.html","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/error.html","/dft-learning/05.VASP/08.其他/error.md","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/error.md"]],["v-14e0ef58","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/poscar-convert.html",{d:1664475437e3,l:"2022年9月30日",g:["ase python"],e:`

POSCAR 与其他格式互转

+

将 POSCAR 转换为 xsd 格式文件

+

该方法依赖 ASE。

+

ASE 的 ase.io.read()ase.io.write()

+

ase.io.read()ase.io.write(),文档见 File input and output — ASE documentation (dtu.dk)

`,r:{minutes:2.24,words:673},y:"a",t:"POSCAR 与其他格式互转"},["/dft-learning/05.VASP/08.其他/poscar-convert.html","/dft-learning/05.VASP/08.其他/poscar-convert.md",":md"]],["v-818acdc8","/code/citation-style-language/specification/appendix/appendix1-categories.html",{d:1659372135e3,l:"2022年8月2日",e:`

附录 I 学科分类

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+
    +
  • anthropology 人类学
  • +
  • astronomy 天文学
  • +
  • biology 生物学
  • +
  • botany 植物学
  • +
  • chemistry 化学
  • +
  • communications 通讯
  • +
  • engineering 工程学
  • +
  • generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA
  • +
  • geography 地理学
  • +
  • geology 地质学
  • +
  • history 历史
  • +
  • humanities 人文学科
  • +
  • law 法学
  • +
  • linguistics 语言学
  • +
  • literature 文学
  • +
  • math 数学
  • +
  • medicine 药物学
  • +
  • philosophy 哲学
  • +
  • physics 物理学
  • +
  • political_science 政治科学
  • +
  • psychology 心理学
  • +
  • science 科学
  • +
  • social_science 社会科学
  • +
  • sociology 社会学
  • +
  • theology 神学
  • +
  • zoology 动物学
  • +
`,r:{minutes:.53,words:160},y:"a",t:"附录 I 学科分类"},[":md"]],["v-7a387cd2","/code/citation-style-language/specification/appendix/appendix2-terms.html",{d:1659372239e3,l:"2022年8月2日",e:`

附录 II 术语

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

术语在本地化文件中使用

+

Locators/用来定位的术语

+
    +
  • book 书
  • +
  • chapter 章
  • +
  • column
  • +
  • figure 图
  • +
  • folio 作品集
  • +
  • issue 议题/问题
  • +
  • line 行
  • +
  • note 笔记/注记
  • +
  • opus 作品(音乐作品)
  • +
  • page 页
  • +
  • paragraph 段
  • +
  • part 部分
  • +
  • section 节
  • +
  • sub verbo 词条
  • +
  • verse 诗
  • +
  • volume 卷
  • +
`,r:{minutes:.99,words:297},y:"a",t:"附录 II 术语"},[":md"]],["v-bf62cb02","/code/citation-style-language/specification/appendix/appendix3-types.html",{d:1659372435e3,l:"2022年8月2日",e:`

附录 III 文献类型

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+
    +
  • article 文章
  • +
  • article-magazine 杂志文章
  • +
  • article-newspaper 新闻文章
  • +
  • article-journal 期刊文章
  • +
  • bill
  • +
  • book 书
  • +
  • broadcast
  • +
  • chapter 章节
  • +
  • dataset 数据集
  • +
  • entry
  • +
  • entry-dictionary
  • +
  • entry-encyclopedia
  • +
  • figure 图
  • +
  • graphic
  • +
  • interview 采访
  • +
  • legislation
  • +
  • legal_case
  • +
  • manuscript
  • +
  • map 地图
  • +
  • motion_picture
  • +
  • musical_score
  • +
  • pamphlet
  • +
  • paper-conference
  • +
  • patent
  • +
  • post 海报
  • +
  • post-weblog
  • +
  • personal_communication 私人交流
  • +
  • report 报告
  • +
  • review
  • +
  • review-book
  • +
  • song 歌曲
  • +
  • speech 演讲
  • +
  • thesis 学位论文
  • +
  • treaty
  • +
  • webpage 网页
  • +
`,r:{minutes:.42,words:127},y:"a",t:"附录 III 文献类型"},[":md"]],["v-74326aa0","/code/citation-style-language/specification/appendix/appendix4-variables.html",{d:1659372435e3,l:"2022年8月2日",e:`

附录 IV 变量

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

标准变量

+
    +
  • +

    abstract 项目的摘要(例:期刊文章的摘要)

    +
  • +
  • +

    annote 读者关于项目内容的笔记

    +
  • +
  • +

    archive 保存项目的存档

    +
  • +
  • +

    archive_location 存档的位置

    +
  • +
  • +

    archive-place 存档的地理位置

    +
  • +
  • +

    authority

    +
  • +
  • +

    call-number

    +

    call number (to locate the item in a library)

    +
  • +
  • +

    citation-label

    +

    label identifying the item in in-text citations of label styles (e.g. "Ferr78"). May be assigned by the CSL processor based on item metadata.

    +
  • +
  • +

    citation-number

    +

    index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor)

    +
  • +
  • +

    collection-title

    +

    title of the collection holding the item (e.g. the series title for a book)

    +
  • +
  • +

    container-title

    +

    title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article)

    +
  • +
  • +

    container-title-short

    +

    short/abbreviated form of "container-title" (also accessible through the "short" form of the "container-title" variable)

    +
  • +
  • +

    dimensions

    +

    physical (e.g. size) or temporal (e.g. running time) dimensions of the item

    +
  • +
  • +

    DOI

    +

    Digital Object Identifier (e.g. "10.1128/AEM.02591-07")

    +
  • +
  • +

    event

    +

    name of the related event (e.g. the conference name when citing a conference paper)

    +
  • +
  • +

    event-place

    +

    geographic location of the related event (e.g. "Amsterdam, the Netherlands")

    +
  • +
  • +

    first-reference-note-number

    +

    number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes.

    +
  • +
  • +

    genre

    +

    class, type or genre of the item (e.g. "adventure" for an adventure movie, "PhD dissertation" for a PhD thesis)

    +
  • +
  • +

    ISBN

    +

    International Standard Book Number

    +
  • +
  • +

    ISSN

    +

    International Standard Serial Number

    +
  • +
  • +

    jurisdiction

    +

    geographic scope of relevance (e.g. "US" for a US patent)

    +
  • +
  • +

    keyword 关键字

    +
  • +
  • +

    locator

    +

    a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the Locators term list), which determines which term is rendered by cs:label when the "locator" variable is selected.

    +
  • +
  • +

    medium

    +

    medium description (e.g. "CD", "DVD", etc.)

    +
  • +
  • +

    note

    +

    (short) inline note giving additional item details (e.g. a concise summary or commentary)

    +
  • +
  • +

    original-publisher

    +

    original publisher, for items that have been republished by a different publisher

    +
  • +
  • +

    original-publisher-place

    +

    geographic location of the original publisher (e.g. "London, UK")

    +
  • +
  • +

    original-title 最初版本的题目

    +
  • +
  • +

    page 项目的页码范围

    +
  • +
  • +

    page-first 页码范围的第一个页码

    +
  • +
  • +

    PMCID

    +

    PubMed Central reference number

    +
  • +
  • +

    PMID

    +

    PubMed reference number

    +
  • +
  • +

    publisher 出版商/出版社

    +
  • +
  • +

    publisher-place 出版社的地理位置

    +
  • +
  • +

    references

    +

    resources related to the procedural history of a legal case

    +
  • +
  • +

    reviewed-title

    +

    title of the item reviewed by the current item

    +
  • +
  • +

    scale

    +

    scale of e.g. a map

    +
  • +
  • +

    section

    +

    container section holding the item (e.g. "politics" for a newspaper article)

    +
  • +
  • +

    source

    +

    from whence the item originates (e.g. a library catalog or database)

    +
  • +
  • +

    status

    +

    (publication) status of the item (e.g. "forthcoming")

    +
  • +
  • +

    title

    +

    primary title of the item

    +
  • +
  • +

    title-short

    +

    short/abbreviated form of "title" (also accessible through the "short" form of the "title" variable)

    +
  • +
  • +

    URL 链接

    +
  • +
  • +

    version 版本

    +
  • +
  • +

    year-suffix

    +

    disambiguating year suffix in author-date styles (e.g. "a" in "Doe, 1999a")

    +
  • +
`,r:{minutes:2.9,words:871},y:"a",t:"附录 IV 变量"},[":md"]],["v-42793124","/code/citation-style-language/specification/appendix/appendix5-page-range-formats.html",{d:1659372435e3,l:"2022年8月2日",e:`

附录 V 页码范围格式

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是:

+

"chicago"

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
第一个数字第二个数字
小于 100使用所有的位数3–10; 71–72
100 或者 100 的整数使用所有的位数100–104; 600–613; 1100–1123
100 到 109 (包括对应 100 的倍数的范围)仅使用有变化的部分,忽略不需要的 0107–8; 505–17; 1002–6
110 到 199 (包括对应 100 的倍数的范围)根据需要使用两位数或者更多321–25; 415–532; 11564–68; 13792–803
4 位数如果数字是 4 位并且其中有 3 位不同,使用所有的位数1496–1504; 2787–2816
`,r:{minutes:.98,words:295},y:"a",t:"附录 V 页码范围格式"},[":md"]],["v-3e741b5c","/code/citation-style-language/specification/appendix/appendix6-links.html",{d:1659372585e3,l:"2022年8月2日",e:`

附录 VI 链接

+
+

[!warning] WORK IN PROGRESS +此页面正在施工中。

+
+

The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules:

+

If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:

`,r:{minutes:.57,words:171},y:"a",t:"附录 VI 链接"},[":md"]],["v-3706649a","/404.html",{y:"p",t:""},[]],["v-0e1a9384","/code/linux/",{y:"p",t:"Linux"},[]],["v-1bdaec70","/dft-learning/pages/",{y:"p",t:"Pages"},[]],["v-f2c2fcf8","/software/office/",{y:"p",t:"Office"},[]],["v-316e1a6a","/dft-learning/vasp/",{y:"p",t:"Vasp"},[]],["v-31dd63ff","/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/",{y:"p",t:"08.其他"},["/dft-learning/05.VASP/08.其他/"]],["v-458c0b5b","/dft-learning/05.VASP/",{y:"p",t:"05. V A S P"},[]],["v-1dd09e5c","/code/citation-style-language/specification/appendix/",{y:"p",t:"Appendix"},[]],["v-5bc93818","/category/",{y:"p",t:"分类",I:0},[]],["v-744d024e","/tag/",{y:"p",t:"标签",I:0},[]],["v-e52c881c","/article/",{y:"p",t:"文章",I:0},[]],["v-154dc4c4","/star/",{y:"p",t:"收藏",I:0},[]],["v-01560935","/timeline/",{y:"p",t:"时间轴",I:0},[]],["v-9c48d85a","/category/linux/",{y:"p",t:"Linux 分类",I:0},[]],["v-6800466b","/tag/ase-python/",{y:"p",t:"标签: ase python",I:0},[]],["v-fadba3e8","/category/install/",{y:"p",t:"Install 分类",I:0},[]],["v-2e924cd2","/category/theory/",{y:"p",t:"Theory 分类",I:0},[]],["v-4b7237e6","/category/%E5%AE%89%E8%A3%85/",{y:"p",t:"安装 分类",I:0},["/category/安装/"]],["v-5faa7940","/category/materials-studio/",{y:"p",t:"Materials-Studio 分类",I:0},[]],["v-58dac1cf","/category/vasp/",{y:"p",t:"VASP 分类",I:0},[]],["v-3ab30614","/category/others/",{y:"p",t:"Others 分类",I:0},[]],["v-84d1097c","/category/%E4%BC%98%E5%8C%96/",{y:"p",t:"优化 分类",I:0},["/category/优化/"]],["v-7175f2e8","/category/%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/",{y:"p",t:"电子结构 分类",I:0},["/category/电子结构/"]],["v-68581533","/category/%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/",{y:"p",t:"反应路径 分类",I:0},["/category/反应路径/"]],["v-229bd4e8","/category/%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/",{y:"p",t:"分子动力学 分类",I:0},["/category/分子动力学/"]],["v-39235e3a","/category/other-app/",{y:"p",t:"Other App 分类",I:0},[]]];var Wr=H({name:"Vuepress",setup(){const e=Q0();return()=>r(e.value)}}),qh=()=>Gh.reduce((e,[n,t,a,s])=>(e.push({name:n,path:t,component:Wr,meta:a},{path:t.endsWith("/")?t+"index.html":t.substring(0,t.length-5),redirect:t},...s.map(o=>({path:o===":md"?t.substring(0,t.length-5)+".md":o,redirect:t}))),e),[{name:"404",path:"/:catchAll(.*)",component:Wr}]),Kh=E1,Xh=()=>{const e=of({history:Kh($o("/")),routes:qh(),scrollBehavior:(n,t,a)=>a||(n.hash?{el:n.hash}:{top:0})});return e.beforeResolve(async(n,t)=>{var a;(n.path!==t.path||t===On)&&([n.meta._data]=await Promise.all([Rn.resolvePageData(n.name),(a=Gi[n.name])==null?void 0:a.__asyncLoader()]))}),e},Zh=e=>{e.component("ClientOnly",fs),e.component("Content",nc)},Yh=(e,n,t)=>{const a=Ar(()=>n.currentRoute.value.path),s=Ar(()=>Rn.resolveRouteLocale(kt.value.locales,a.value)),o=qo(a,()=>n.currentRoute.value.meta._data),l=w(()=>Rn.resolveLayouts(t)),i=w(()=>Rn.resolveSiteLocaleData(kt.value,s.value)),c=w(()=>Rn.resolvePageFrontmatter(o.value)),u=w(()=>Rn.resolvePageHeadTitle(o.value,i.value)),p=w(()=>Rn.resolvePageHead(u.value,c.value,i.value)),d=w(()=>Rn.resolvePageLang(o.value,i.value)),f=w(()=>Rn.resolvePageLayout(o.value,l.value));return e.provide(X0,l),e.provide(qi,o),e.provide(Ki,c),e.provide(J0,u),e.provide(Xi,p),e.provide(Zi,d),e.provide(Ji,f),e.provide(Fo,s),e.provide(ec,i),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>c.value},$head:{get:()=>p.value},$headTitle:{get:()=>u.value},$lang:{get:()=>d.value},$page:{get:()=>o.value},$routeLocale:{get:()=>s.value},$site:{get:()=>kt.value},$siteLocale:{get:()=>i.value},$withBase:{get:()=>Ae}}),{layouts:l,pageData:o,pageFrontmatter:c,pageHead:p,pageHeadTitle:u,pageLang:d,pageLayout:f,routeLocale:s,siteData:kt,siteLocaleData:i}},Jh=()=>{const e=Y0(),n=Yi(),t=Z([]),a=()=>{e.value.forEach(o=>{const l=Qh(o);l&&t.value.push(l)})},s=()=>{document.documentElement.lang=n.value,t.value.forEach(o=>{o.parentNode===document.head&&document.head.removeChild(o)}),t.value.splice(0,t.value.length),e.value.forEach(o=>{const l=e3(o);l!==null&&(document.head.appendChild(l),t.value.push(l))})};rn(n1,s),_e(()=>{a(),s(),le(()=>e.value,s)})},Qh=([e,n,t=""])=>{const a=Object.entries(n).map(([i,c])=>he(c)?`[${i}=${JSON.stringify(c)}]`:c===!0?`[${i}]`:"").join(""),s=`head > ${e}${a}`;return Array.from(document.querySelectorAll(s)).find(i=>i.innerText===t)||null},e3=([e,n,t])=>{if(!he(e))return null;const a=document.createElement(e);return zo(n)&&Object.entries(n).forEach(([s,o])=>{he(o)?a.setAttribute(s,o):o===!0&&a.setAttribute(s,"")}),he(t)&&a.appendChild(document.createTextNode(t)),a},n3=N0,t3=async()=>{var t;const e=n3({name:"VuepressApp",setup(){var a;Jh();for(const s of Ga)(a=s.setup)==null||a.call(s);return()=>[r(dc),...Ga.flatMap(({rootComponents:s=[]})=>s.map(o=>r(o)))]}}),n=Xh();Zh(e),Yh(e,n,Ga);for(const a of Ga)await((t=a.enhance)==null?void 0:t.call(a,{app:e,router:n,siteData:kt}));return e.use(n),{app:e,router:n}};t3().then(({app:e,router:n})=>{n.isReady().then(()=>{e.mount("#app")})});export{en as A,_e as B,Ht as C,he as D,i3 as E,zo as F,vl as G,Xf as H,dl as J,Oh as O,Ch as R,m as _,Ii as a,Vi as b,s3 as c,t3 as createVueApp,o3 as d,Me as e,H as f,$e as g,gn as h,ml as i,Z as j,w as k,Le as l,le as m,r as n,a3 as o,wh as p,Ph as q,Qe as r,bh as s,Ft as t,r3 as u,sp as v,id as w,Ah as x,kh as y,Eh as z}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/index.html-r4KFp5Pr.js","assets/plugin-vue_export-helper-x3n3nnut.js","assets/index.html-UzbTA_Oa.js","assets/一台新电脑的自我修养.html-Wj6uz103.js","assets/考研的相关总结.html-BCMIQNjX.js","assets/index.html-Hg3Zeshb.js","assets/index.html-sI6EOuhl.js","assets/index.html-LRzXIxjE.js","assets/x-ray-absorption.html-humqFyJ6.js","assets/index.html-Q19uLxXK.js","assets/index.html-wu1WGakg.js","assets/index.html-1JsIXzJU.js","assets/document-style-guide.html-bBx7fYPO.js","assets/index.html-GEcJO9t1.js","assets/index.html-G_enMliH.js","assets/Aria2.html-PJ74YCVK.js","assets/index.html-nM1gbzHG.js","assets/windows-applications.html-w3qnV1IQ.js","assets/使用Pavadan和MentoHUST进行锐捷认证.html-kBFfCnyy.js","assets/内网穿透折腾记录.html-T7lkRiov.js","assets/开启代理后msftconnecttest无法跳转.html-C0wF6MG9.js","assets/服务器的折腾.html-VIwo8NQM.js","assets/index.html-AsX6-gvs.js","assets/translating-locale-files.html-fyhQn8Fi.js","assets/xml-basic.html-_M3j6rQd.js","assets/index.html-8Pfd_AG6.js","assets/index.html-s-wMahwO.js","assets/index.html-VQ3o3DlV.js","assets/index.html-RgTwsCTF.js","assets/index.html-uASuo5Z7.js","assets/index.html-BZHq4iHB.js","assets/index.html-2MwUsXrZ.js","assets/index.html-wJG6jgxw.js","assets/index.html-pMaLkGBA.js","assets/index.html-vhDWhlKA.js","assets/index.html-bk_D9tT2.js","assets/index.html-1ZWZ5KQE.js","assets/index.html-6pn7OJe1.js","assets/index.html-lhyKpbpk.js","assets/index.html-QyQjsQQt.js","assets/index.html-kC55fK8J.js","assets/index.html-lf5PKNFU.js","assets/index.html-mEZlrX25.js","assets/index.html-mm_FQLj7.js","assets/index.html-uZmfIb-W.js","assets/index.html-KEXZyb31.js","assets/index.html-5bg7tJ2F.js","assets/index.html-_e1pHnuc.js","assets/index.html-AFHjJm8s.js","assets/index.html-k2_RklJM.js","assets/index.html-7I8BaSii.js","assets/index.html-ZXtGgZrX.js","assets/index.html-8Yu_nBBe.js","assets/index.html-7m4C3hB8.js","assets/index.html-V7-_XDhs.js","assets/index.html-igyzptdK.js","assets/index.html-VWsX53il.js","assets/index.html-QCq2KaUt.js","assets/index.html-cogQzq1C.js","assets/index.html-XjkjwiMq.js","assets/Zotero 将引文链接到参考书目.html-dYd7MQua.js","assets/Zotero 指北.html-0nIpCpal.js","assets/index.html-N8V76_f2.js","assets/citation-formats.html-qf1EMp7P.js","assets/end.html-BDEjjGZf.js","assets/the-csl-ecosystem.html-ADI1t1tr.js","assets/understanding-csl-styles.html-Yx2tBXtg.js","assets/index.html-sKlVMgw1.js","assets/file-types.html-QnaqPc_S.js","assets/locale-files-strucure.html-UmiIrXTl.js","assets/namespacing.html-xT4LQWix.js","assets/rendering-elements.html-T-xwdnoK.js","assets/style-behavior.html-wXLDL7qS.js","assets/styles-structure.html-xcDsd5F5.js","assets/whitespace-handling.html-YLKviumy.js","assets/xml-declaration.html-3Y0z2m7m.js","assets/index.html-yVLcUGJY.js","assets/index.html-8i62bqhd.js","assets/index.html-6KfMzBnc.js","assets/index.html-bWnBlUw3.js","assets/index.html-EvFZVL2w.js","assets/index.html-nmGgGxSe.js","assets/index.html-tnSEWlBr.js","assets/index.html-mVwIyCLN.js","assets/index.html-iCVcKNm9.js","assets/index.html-XrnaE3eW.js","assets/index.html-5rrp5meq.js","assets/index.html-6XNTIiLr.js","assets/index.html-i2ZTRu49.js","assets/index.html-1Ib6BxE3.js","assets/index.html-qf687FXZ.js","assets/index.html-1bHTdLG6.js","assets/index.html-KFqMjBbI.js","assets/index.html-bsO9ILsM.js","assets/index.html-7lNSjMEW.js","assets/index.html-P7041sin.js","assets/index.html-rQc8Nrss.js","assets/index.html-feT6lC9f.js","assets/index.html-GPnIpFjZ.js","assets/index.html-BkcPohES.js","assets/index.html-FSJmlPDA.js","assets/index.html-RJYdClUd.js","assets/poscar-convert.html-8aC_BtqK.js","assets/appendix1-categories.html-lXPk6_lt.js","assets/appendix2-terms.html-B1TffPxv.js","assets/appendix3-types.html-NXTDq6th.js","assets/appendix4-variables.html-FuJvXF6-.js","assets/appendix5-page-range-formats.html-Vip2H80I.js","assets/appendix6-links.html-f1IFMlVG.js","assets/404.html-f5N7lpKI.js","assets/index.html-YdspMJk7.js","assets/index.html-pz5iu5w5.js","assets/index.html-kER87C2T.js","assets/index.html-NUB0R-Ht.js","assets/index.html-CoM9z2GD.js","assets/index.html-4awr8kEm.js","assets/index.html-oqVK2nLJ.js","assets/index.html-pgLCj_kZ.js","assets/index.html-279NygD0.js","assets/index.html-XDyrBeaJ.js","assets/index.html-gg9bzuVT.js","assets/index.html-0NFUYqoh.js","assets/index.html-lDCNVhP2.js","assets/index.html-WoJuStdU.js","assets/index.html-5kSJeijP.js","assets/index.html-j4BPmuUZ.js","assets/index.html-fVW4eUKk.js","assets/index.html-0NjsvMae.js","assets/index.html-deE-7P-H.js","assets/index.html-ImYwWgI6.js","assets/index.html-K766vQ0K.js","assets/index.html-TUooTaDW.js","assets/index.html-64j_S6LF.js","assets/index.html-Q6-PYyTa.js","assets/index.html-Fu2dNNPA.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/assets/appendix1-categories.html-4fIKJfJF.js b/assets/appendix1-categories.html-4fIKJfJF.js new file mode 100644 index 00000000..68d9cf92 --- /dev/null +++ b/assets/appendix1-categories.html-4fIKJfJF.js @@ -0,0 +1 @@ +const i=JSON.parse('{"key":"v-818acdc8","path":"/code/citation-style-language/specification/appendix/appendix1-categories.html","title":"附录 I 学科分类","lang":"zh-CN","frontmatter":{"title":"附录 I 学科分类","date":"2022-08-01T16:42:15.000Z","updated":"2022-08-03T10:27:14.000Z","description":"附录 I 学科分类 [!warning] WORK IN PROGRESS 此页面正在施工中。 anthropology 人类学 astronomy 天文学 biology 生物学 botany 植物学 chemistry 化学 communications 通讯 engineering 工程学 generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA geography 地理学 geology 地质学 history 历史 humanities 人文学科 law 法学 linguistics 语言学 literature 文学 math 数学 medicine 药物学 philosophy 哲学 physics 物理学 political_science 政治科学 psychology 心理学 science 科学 social_science 社会科学 sociology 社会学 theology 神学 zoology 动物学","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/appendix1-categories.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"附录 I 学科分类"}],["meta",{"property":"og:description","content":"附录 I 学科分类 [!warning] WORK IN PROGRESS 此页面正在施工中。 anthropology 人类学 astronomy 天文学 biology 生物学 botany 植物学 chemistry 化学 communications 通讯 engineering 工程学 generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA geography 地理学 geology 地质学 history 历史 humanities 人文学科 law 法学 linguistics 语言学 literature 文学 math 数学 medicine 药物学 philosophy 哲学 physics 物理学 political_science 政治科学 psychology 心理学 science 科学 social_science 社会科学 sociology 社会学 theology 神学 zoology 动物学"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:42:15.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"附录 I 学科分类\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:42:15.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.53,"words":160},"filePathRelative":"code/citation-style-language/specification/appendix/appendix1-categories.md","localizedDate":"2022年8月2日","excerpt":"

附录 I 学科分类

\\n
\\n

[!warning] WORK IN PROGRESS\\n此页面正在施工中。

\\n
\\n
    \\n
  • anthropology 人类学
  • \\n
  • astronomy 天文学
  • \\n
  • biology 生物学
  • \\n
  • botany 植物学
  • \\n
  • chemistry 化学
  • \\n
  • communications 通讯
  • \\n
  • engineering 工程学
  • \\n
  • generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA
  • \\n
  • geography 地理学
  • \\n
  • geology 地质学
  • \\n
  • history 历史
  • \\n
  • humanities 人文学科
  • \\n
  • law 法学
  • \\n
  • linguistics 语言学
  • \\n
  • literature 文学
  • \\n
  • math 数学
  • \\n
  • medicine 药物学
  • \\n
  • philosophy 哲学
  • \\n
  • physics 物理学
  • \\n
  • political_science 政治科学
  • \\n
  • psychology 心理学
  • \\n
  • science 科学
  • \\n
  • social_science 社会科学
  • \\n
  • sociology 社会学
  • \\n
  • theology 神学
  • \\n
  • zoology 动物学
  • \\n
","autoDesc":true}');export{i as data}; diff --git a/assets/appendix1-categories.html-lXPk6_lt.js b/assets/appendix1-categories.html-lXPk6_lt.js new file mode 100644 index 00000000..9645f194 --- /dev/null +++ b/assets/appendix1-categories.html-lXPk6_lt.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as l,c as e,d as o}from"./app-Mf7X6hWu.js";const c={},t=o('

附录 I 学科分类

[!warning] WORK IN PROGRESS 此页面正在施工中。

  • anthropology 人类学
  • astronomy 天文学
  • biology 生物学
  • botany 植物学
  • chemistry 化学
  • communications 通讯
  • engineering 工程学
  • generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA
  • geography 地理学
  • geology 地质学
  • history 历史
  • humanities 人文学科
  • law 法学
  • linguistics 语言学
  • literature 文学
  • math 数学
  • medicine 药物学
  • philosophy 哲学
  • physics 物理学
  • political_science 政治科学
  • psychology 心理学
  • science 科学
  • social_science 社会科学
  • sociology 社会学
  • theology 神学
  • zoology 动物学
',3),a=[t];function s(n,r){return l(),e("div",null,a)}const g=i(c,[["render",s],["__file","appendix1-categories.html.vue"]]);export{g as default}; diff --git a/assets/appendix2-terms.html-B1TffPxv.js b/assets/appendix2-terms.html-B1TffPxv.js new file mode 100644 index 00000000..12d2a3fe --- /dev/null +++ b/assets/appendix2-terms.html-B1TffPxv.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as l,c as e,d as a}from"./app-Mf7X6hWu.js";const o={},n=a('

附录 II 术语

[!warning] WORK IN PROGRESS 此页面正在施工中。

术语在本地化文件中使用

Locators/用来定位的术语

  • book 书
  • chapter 章
  • column
  • figure 图
  • folio 作品集
  • issue 议题/问题
  • line 行
  • note 笔记/注记
  • opus 作品(音乐作品)
  • page 页
  • paragraph 段
  • part 部分
  • section 节
  • sub verbo 词条
  • verse 诗
  • volume 卷

Months/月

  • month-01
  • month-02
  • month-03
  • month-04
  • month-05
  • month-06
  • month-07
  • month-08
  • month-09
  • month-10
  • month-11
  • month-12

Ordinals/序数

  • ordinal
  • ordinal-00 through ordinal-99
  • long-ordinal-01
  • long-ordinal-02
  • long-ordinal-03
  • long-ordinal-04
  • long-ordinal-05
  • long-ordinal-06
  • long-ordinal-07
  • long-ordinal-08
  • long-ordinal-09
  • long-ordinal-10

Quotation marks/引号

  • open-quote
  • close-quote
  • open-inner-quote
  • close-inner-quote

Roles/角色

  • author 作者
  • collection-editor 文集编辑
  • composer 作曲者
  • container-author 文章作者
  • director 主任/导演
  • editor 编辑
  • editorial-director 编辑部主任
  • editortranslator
  • illustrator 插画者
  • interviewer 采访者
  • original-author 原作者
  • recipient 收件人
  • reviewed-author 复查作者
  • translator 译者

Seasons/季节

  • season-01
  • season-02
  • season-03
  • season-04

Miscellaneous/其他

  • accessed
  • ad
  • and
  • and others
  • anonymous
  • at
  • available at
  • bc
  • by
  • circa
  • cited
  • edition
  • et-al
  • forthcoming
  • from
  • ibid
  • in
  • in press
  • internet
  • interview
  • letter
  • no date
  • online
  • presented at
  • reference
  • retrieved
  • scale
  • version
',17),r=[n];function t(s,d){return l(),e("div",null,r)}const u=i(o,[["render",t],["__file","appendix2-terms.html.vue"]]);export{u as default}; diff --git a/assets/appendix2-terms.html-e-Fc1GmY.js b/assets/appendix2-terms.html-e-Fc1GmY.js new file mode 100644 index 00000000..3fd3ec47 --- /dev/null +++ b/assets/appendix2-terms.html-e-Fc1GmY.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7a387cd2","path":"/code/citation-style-language/specification/appendix/appendix2-terms.html","title":"附录 II 术语","lang":"zh-CN","frontmatter":{"title":"附录 II 术语","date":"2022-08-01T16:43:59.000Z","updated":"2022-08-03T10:28:07.000Z","description":"附录 II 术语 [!warning] WORK IN PROGRESS 此页面正在施工中。 术语在本地化文件中使用 Locators/用来定位的术语 book 书 chapter 章 column figure 图 folio 作品集 issue 议题/问题 line 行 note 笔记/注记 opus 作品(音乐作品) page 页 paragraph 段 part 部分 section 节 sub verbo 词条 verse 诗 volume 卷","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/appendix2-terms.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"附录 II 术语"}],["meta",{"property":"og:description","content":"附录 II 术语 [!warning] WORK IN PROGRESS 此页面正在施工中。 术语在本地化文件中使用 Locators/用来定位的术语 book 书 chapter 章 column figure 图 folio 作品集 issue 议题/问题 line 行 note 笔记/注记 opus 作品(音乐作品) page 页 paragraph 段 part 部分 section 节 sub verbo 词条 verse 诗 volume 卷"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:43:59.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"附录 II 术语\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:43:59.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Locators/用来定位的术语","slug":"locators-用来定位的术语","link":"#locators-用来定位的术语","children":[]},{"level":2,"title":"Months/月","slug":"months-月","link":"#months-月","children":[]},{"level":2,"title":"Ordinals/序数","slug":"ordinals-序数","link":"#ordinals-序数","children":[]},{"level":2,"title":"Quotation marks/引号","slug":"quotation-marks-引号","link":"#quotation-marks-引号","children":[]},{"level":2,"title":"Roles/角色","slug":"roles-角色","link":"#roles-角色","children":[]},{"level":2,"title":"Seasons/季节","slug":"seasons-季节","link":"#seasons-季节","children":[]},{"level":2,"title":"Miscellaneous/其他","slug":"miscellaneous-其他","link":"#miscellaneous-其他","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.99,"words":297},"filePathRelative":"code/citation-style-language/specification/appendix/appendix2-terms.md","localizedDate":"2022年8月2日","excerpt":"

附录 II 术语

\\n
\\n

[!warning] WORK IN PROGRESS\\n此页面正在施工中。

\\n
\\n

术语在本地化文件中使用

\\n

Locators/用来定位的术语

\\n
    \\n
  • book 书
  • \\n
  • chapter 章
  • \\n
  • column
  • \\n
  • figure 图
  • \\n
  • folio 作品集
  • \\n
  • issue 议题/问题
  • \\n
  • line 行
  • \\n
  • note 笔记/注记
  • \\n
  • opus 作品(音乐作品)
  • \\n
  • page 页
  • \\n
  • paragraph 段
  • \\n
  • part 部分
  • \\n
  • section 节
  • \\n
  • sub verbo 词条
  • \\n
  • verse 诗
  • \\n
  • volume 卷
  • \\n
","autoDesc":true}');export{e as data}; diff --git a/assets/appendix3-types.html-0yQjm-MT.js b/assets/appendix3-types.html-0yQjm-MT.js new file mode 100644 index 00000000..9ad99090 --- /dev/null +++ b/assets/appendix3-types.html-0yQjm-MT.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-bf62cb02","path":"/code/citation-style-language/specification/appendix/appendix3-types.html","title":"附录 III 文献类型","lang":"zh-CN","frontmatter":{"title":"附录 III 文献类型","date":"2022-08-01T16:47:15.000Z","updated":"2022-08-03T10:28:14.000Z","description":"附录 III 文献类型 [!warning] WORK IN PROGRESS 此页面正在施工中。 article 文章 article-magazine 杂志文章 article-newspaper 新闻文章 article-journal 期刊文章 bill book 书 broadcast chapter 章节 dataset 数据集 entry entry-dictionary entry-encyclopedia figure 图 graphic interview 采访 legislation legal_case manuscript map 地图 motion_picture musical_score pamphlet paper-conference patent post 海报 post-weblog personal_communication 私人交流 report 报告 review review-book song 歌曲 speech 演讲 thesis 学位论文 treaty webpage 网页","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/appendix3-types.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"附录 III 文献类型"}],["meta",{"property":"og:description","content":"附录 III 文献类型 [!warning] WORK IN PROGRESS 此页面正在施工中。 article 文章 article-magazine 杂志文章 article-newspaper 新闻文章 article-journal 期刊文章 bill book 书 broadcast chapter 章节 dataset 数据集 entry entry-dictionary entry-encyclopedia figure 图 graphic interview 采访 legislation legal_case manuscript map 地图 motion_picture musical_score pamphlet paper-conference patent post 海报 post-weblog personal_communication 私人交流 report 报告 review review-book song 歌曲 speech 演讲 thesis 学位论文 treaty webpage 网页"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:47:15.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"附录 III 文献类型\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:47:15.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.42,"words":127},"filePathRelative":"code/citation-style-language/specification/appendix/appendix3-types.md","localizedDate":"2022年8月2日","excerpt":"

附录 III 文献类型

\\n
\\n

[!warning] WORK IN PROGRESS\\n此页面正在施工中。

\\n
\\n
    \\n
  • article 文章
  • \\n
  • article-magazine 杂志文章
  • \\n
  • article-newspaper 新闻文章
  • \\n
  • article-journal 期刊文章
  • \\n
  • bill
  • \\n
  • book 书
  • \\n
  • broadcast
  • \\n
  • chapter 章节
  • \\n
  • dataset 数据集
  • \\n
  • entry
  • \\n
  • entry-dictionary
  • \\n
  • entry-encyclopedia
  • \\n
  • figure 图
  • \\n
  • graphic
  • \\n
  • interview 采访
  • \\n
  • legislation
  • \\n
  • legal_case
  • \\n
  • manuscript
  • \\n
  • map 地图
  • \\n
  • motion_picture
  • \\n
  • musical_score
  • \\n
  • pamphlet
  • \\n
  • paper-conference
  • \\n
  • patent
  • \\n
  • post 海报
  • \\n
  • post-weblog
  • \\n
  • personal_communication 私人交流
  • \\n
  • report 报告
  • \\n
  • review
  • \\n
  • review-book
  • \\n
  • song 歌曲
  • \\n
  • speech 演讲
  • \\n
  • thesis 学位论文
  • \\n
  • treaty
  • \\n
  • webpage 网页
  • \\n
","autoDesc":true}');export{e as data}; diff --git a/assets/appendix3-types.html-NXTDq6th.js b/assets/appendix3-types.html-NXTDq6th.js new file mode 100644 index 00000000..fac4b53c --- /dev/null +++ b/assets/appendix3-types.html-NXTDq6th.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as l,c as e,d as t}from"./app-Mf7X6hWu.js";const a={},r=t('

附录 III 文献类型

[!warning] WORK IN PROGRESS 此页面正在施工中。

  • article 文章
  • article-magazine 杂志文章
  • article-newspaper 新闻文章
  • article-journal 期刊文章
  • bill
  • book 书
  • broadcast
  • chapter 章节
  • dataset 数据集
  • entry
  • entry-dictionary
  • entry-encyclopedia
  • figure 图
  • graphic
  • interview 采访
  • legislation
  • legal_case
  • manuscript
  • map 地图
  • motion_picture
  • musical_score
  • pamphlet
  • paper-conference
  • patent
  • post 海报
  • post-weblog
  • personal_communication 私人交流
  • report 报告
  • review
  • review-book
  • song 歌曲
  • speech 演讲
  • thesis 学位论文
  • treaty
  • webpage 网页
',3),o=[r];function c(n,s){return l(),e("div",null,o)}const d=i(a,[["render",c],["__file","appendix3-types.html.vue"]]);export{d as default}; diff --git a/assets/appendix4-variables.html-6p3RaXn8.js b/assets/appendix4-variables.html-6p3RaXn8.js new file mode 100644 index 00000000..8920c93a --- /dev/null +++ b/assets/appendix4-variables.html-6p3RaXn8.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-74326aa0","path":"/code/citation-style-language/specification/appendix/appendix4-variables.html","title":"附录 IV 变量","lang":"zh-CN","frontmatter":{"title":"附录 IV 变量","date":"2022-08-01T16:47:15.000Z","updated":"2022-08-03T10:28:18.000Z","description":"附录 IV 变量 [!warning] WORK IN PROGRESS 此页面正在施工中。 标准变量 abstract 项目的摘要(例:期刊文章的摘要) annote 读者关于项目内容的笔记 archive 保存项目的存档 archive_location 存档的位置 archive-place 存档的地理位置 authority call-number call number (to locate the item in a library) citation-label label identifying the item in in-text citations of label styles (e.g. \\"Ferr78\\"). May be assigned by the CSL processor based on item metadata. citation-number index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor) collection-title title of the collection holding the item (e.g. the series title for a book) container-title title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article) container-title-short short/abbreviated form of \\"container-title\\" (also accessible through the \\"short\\" form of the \\"container-title\\" variable) dimensions physical (e.g. size) or temporal (e.g. running time) dimensions of the item DOI Digital Object Identifier (e.g. \\"10.1128/AEM.02591-07\\") event name of the related event (e.g. the conference name when citing a conference paper) event-place geographic location of the related event (e.g. \\"Amsterdam, the Netherlands\\") first-reference-note-number number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes. genre class, type or genre of the item (e.g. \\"adventure\\" for an adventure movie, \\"PhD dissertation\\" for a PhD thesis) ISBN International Standard Book Number ISSN International Standard Serial Number jurisdiction geographic scope of relevance (e.g. \\"US\\" for a US patent) keyword 关键字 locator a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the Locators term list), which determines which term is rendered by cs:label when the \\"locator\\" variable is selected. medium medium description (e.g. \\"CD\\", \\"DVD\\", etc.) note (short) inline note giving additional item details (e.g. a concise summary or commentary) original-publisher original publisher, for items that have been republished by a different publisher original-publisher-place geographic location of the original publisher (e.g. \\"London, UK\\") original-title 最初版本的题目 page 项目的页码范围 page-first 页码范围的第一个页码 PMCID PubMed Central reference number PMID PubMed reference number publisher 出版商/出版社 publisher-place 出版社的地理位置 references resources related to the procedural history of a legal case reviewed-title title of the item reviewed by the current item scale scale of e.g. a map section container section holding the item (e.g. \\"politics\\" for a newspaper article) source from whence the item originates (e.g. a library catalog or database) status (publication) status of the item (e.g. \\"forthcoming\\") title primary title of the item title-short short/abbreviated form of \\"title\\" (also accessible through the \\"short\\" form of the \\"title\\" variable) URL 链接 version 版本 year-suffix disambiguating year suffix in author-date styles (e.g. \\"a\\" in \\"Doe, 1999a\\")","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/appendix4-variables.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"附录 IV 变量"}],["meta",{"property":"og:description","content":"附录 IV 变量 [!warning] WORK IN PROGRESS 此页面正在施工中。 标准变量 abstract 项目的摘要(例:期刊文章的摘要) annote 读者关于项目内容的笔记 archive 保存项目的存档 archive_location 存档的位置 archive-place 存档的地理位置 authority call-number call number (to locate the item in a library) citation-label label identifying the item in in-text citations of label styles (e.g. \\"Ferr78\\"). May be assigned by the CSL processor based on item metadata. citation-number index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor) collection-title title of the collection holding the item (e.g. the series title for a book) container-title title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article) container-title-short short/abbreviated form of \\"container-title\\" (also accessible through the \\"short\\" form of the \\"container-title\\" variable) dimensions physical (e.g. size) or temporal (e.g. running time) dimensions of the item DOI Digital Object Identifier (e.g. \\"10.1128/AEM.02591-07\\") event name of the related event (e.g. the conference name when citing a conference paper) event-place geographic location of the related event (e.g. \\"Amsterdam, the Netherlands\\") first-reference-note-number number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes. genre class, type or genre of the item (e.g. \\"adventure\\" for an adventure movie, \\"PhD dissertation\\" for a PhD thesis) ISBN International Standard Book Number ISSN International Standard Serial Number jurisdiction geographic scope of relevance (e.g. \\"US\\" for a US patent) keyword 关键字 locator a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the Locators term list), which determines which term is rendered by cs:label when the \\"locator\\" variable is selected. medium medium description (e.g. \\"CD\\", \\"DVD\\", etc.) note (short) inline note giving additional item details (e.g. a concise summary or commentary) original-publisher original publisher, for items that have been republished by a different publisher original-publisher-place geographic location of the original publisher (e.g. \\"London, UK\\") original-title 最初版本的题目 page 项目的页码范围 page-first 页码范围的第一个页码 PMCID PubMed Central reference number PMID PubMed reference number publisher 出版商/出版社 publisher-place 出版社的地理位置 references resources related to the procedural history of a legal case reviewed-title title of the item reviewed by the current item scale scale of e.g. a map section container section holding the item (e.g. \\"politics\\" for a newspaper article) source from whence the item originates (e.g. a library catalog or database) status (publication) status of the item (e.g. \\"forthcoming\\") title primary title of the item title-short short/abbreviated form of \\"title\\" (also accessible through the \\"short\\" form of the \\"title\\" variable) URL 链接 version 版本 year-suffix disambiguating year suffix in author-date styles (e.g. \\"a\\" in \\"Doe, 1999a\\")"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:47:15.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"附录 IV 变量\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:47:15.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"标准变量","slug":"标准变量","link":"#标准变量","children":[]},{"level":2,"title":"数据变量","slug":"数据变量","link":"#数据变量","children":[]},{"level":2,"title":"日期变量","slug":"日期变量","link":"#日期变量","children":[]},{"level":2,"title":"名字变量","slug":"名字变量","link":"#名字变量","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":2.9,"words":871},"filePathRelative":"code/citation-style-language/specification/appendix/appendix4-variables.md","localizedDate":"2022年8月2日","excerpt":"

附录 IV 变量

\\n
\\n

[!warning] WORK IN PROGRESS\\n此页面正在施工中。

\\n
\\n

标准变量

\\n
    \\n
  • \\n

    abstract 项目的摘要(例:期刊文章的摘要)

    \\n
  • \\n
  • \\n

    annote 读者关于项目内容的笔记

    \\n
  • \\n
  • \\n

    archive 保存项目的存档

    \\n
  • \\n
  • \\n

    archive_location 存档的位置

    \\n
  • \\n
  • \\n

    archive-place 存档的地理位置

    \\n
  • \\n
  • \\n

    authority

    \\n
  • \\n
  • \\n

    call-number

    \\n

    call number (to locate the item in a library)

    \\n
  • \\n
  • \\n

    citation-label

    \\n

    label identifying the item in in-text citations of label styles (e.g. \\"Ferr78\\"). May be assigned by the CSL processor based on item metadata.

    \\n
  • \\n
  • \\n

    citation-number

    \\n

    index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor)

    \\n
  • \\n
  • \\n

    collection-title

    \\n

    title of the collection holding the item (e.g. the series title for a book)

    \\n
  • \\n
  • \\n

    container-title

    \\n

    title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article)

    \\n
  • \\n
  • \\n

    container-title-short

    \\n

    short/abbreviated form of \\"container-title\\" (also accessible through the \\"short\\" form of the \\"container-title\\" variable)

    \\n
  • \\n
  • \\n

    dimensions

    \\n

    physical (e.g. size) or temporal (e.g. running time) dimensions of the item

    \\n
  • \\n
  • \\n

    DOI

    \\n

    Digital Object Identifier (e.g. \\"10.1128/AEM.02591-07\\")

    \\n
  • \\n
  • \\n

    event

    \\n

    name of the related event (e.g. the conference name when citing a conference paper)

    \\n
  • \\n
  • \\n

    event-place

    \\n

    geographic location of the related event (e.g. \\"Amsterdam, the Netherlands\\")

    \\n
  • \\n
  • \\n

    first-reference-note-number

    \\n

    number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes.

    \\n
  • \\n
  • \\n

    genre

    \\n

    class, type or genre of the item (e.g. \\"adventure\\" for an adventure movie, \\"PhD dissertation\\" for a PhD thesis)

    \\n
  • \\n
  • \\n

    ISBN

    \\n

    International Standard Book Number

    \\n
  • \\n
  • \\n

    ISSN

    \\n

    International Standard Serial Number

    \\n
  • \\n
  • \\n

    jurisdiction

    \\n

    geographic scope of relevance (e.g. \\"US\\" for a US patent)

    \\n
  • \\n
  • \\n

    keyword 关键字

    \\n
  • \\n
  • \\n

    locator

    \\n

    a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the Locators term list), which determines which term is rendered by cs:label when the \\"locator\\" variable is selected.

    \\n
  • \\n
  • \\n

    medium

    \\n

    medium description (e.g. \\"CD\\", \\"DVD\\", etc.)

    \\n
  • \\n
  • \\n

    note

    \\n

    (short) inline note giving additional item details (e.g. a concise summary or commentary)

    \\n
  • \\n
  • \\n

    original-publisher

    \\n

    original publisher, for items that have been republished by a different publisher

    \\n
  • \\n
  • \\n

    original-publisher-place

    \\n

    geographic location of the original publisher (e.g. \\"London, UK\\")

    \\n
  • \\n
  • \\n

    original-title 最初版本的题目

    \\n
  • \\n
  • \\n

    page 项目的页码范围

    \\n
  • \\n
  • \\n

    page-first 页码范围的第一个页码

    \\n
  • \\n
  • \\n

    PMCID

    \\n

    PubMed Central reference number

    \\n
  • \\n
  • \\n

    PMID

    \\n

    PubMed reference number

    \\n
  • \\n
  • \\n

    publisher 出版商/出版社

    \\n
  • \\n
  • \\n

    publisher-place 出版社的地理位置

    \\n
  • \\n
  • \\n

    references

    \\n

    resources related to the procedural history of a legal case

    \\n
  • \\n
  • \\n

    reviewed-title

    \\n

    title of the item reviewed by the current item

    \\n
  • \\n
  • \\n

    scale

    \\n

    scale of e.g. a map

    \\n
  • \\n
  • \\n

    section

    \\n

    container section holding the item (e.g. \\"politics\\" for a newspaper article)

    \\n
  • \\n
  • \\n

    source

    \\n

    from whence the item originates (e.g. a library catalog or database)

    \\n
  • \\n
  • \\n

    status

    \\n

    (publication) status of the item (e.g. \\"forthcoming\\")

    \\n
  • \\n
  • \\n

    title

    \\n

    primary title of the item

    \\n
  • \\n
  • \\n

    title-short

    \\n

    short/abbreviated form of \\"title\\" (also accessible through the \\"short\\" form of the \\"title\\" variable)

    \\n
  • \\n
  • \\n

    URL 链接

    \\n
  • \\n
  • \\n

    version 版本

    \\n
  • \\n
  • \\n

    year-suffix

    \\n

    disambiguating year suffix in author-date styles (e.g. \\"a\\" in \\"Doe, 1999a\\")

    \\n
  • \\n
","autoDesc":true}');export{e as data}; diff --git a/assets/appendix4-variables.html-FuJvXF6-.js b/assets/appendix4-variables.html-FuJvXF6-.js new file mode 100644 index 00000000..502d3509 --- /dev/null +++ b/assets/appendix4-variables.html-FuJvXF6-.js @@ -0,0 +1 @@ +import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as a,c as n,a as e,b as i,e as l,d as t}from"./app-Mf7X6hWu.js";const s={},c=e("h1",{id:"附录-iv-变量",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#附录-iv-变量","aria-hidden":"true"},"#"),i(" 附录 IV 变量")],-1),h=e("blockquote",null,[e("p",null,"[!warning] WORK IN PROGRESS 此页面正在施工中。")],-1),u=e("h2",{id:"标准变量",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#标准变量","aria-hidden":"true"},"#"),i(" 标准变量")],-1),d=t("
  • abstract 项目的摘要(例:期刊文章的摘要)

  • annote 读者关于项目内容的笔记

  • archive 保存项目的存档

  • archive_location 存档的位置

  • archive-place 存档的地理位置

  • authority

  • call-number

    call number (to locate the item in a library)

  • citation-label

    label identifying the item in in-text citations of label styles (e.g. "Ferr78"). May be assigned by the CSL processor based on item metadata.

  • citation-number

    index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor)

  • collection-title

    title of the collection holding the item (e.g. the series title for a book)

  • container-title

    title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article)

  • container-title-short

    short/abbreviated form of "container-title" (also accessible through the "short" form of the "container-title" variable)

  • dimensions

    physical (e.g. size) or temporal (e.g. running time) dimensions of the item

  • DOI

    Digital Object Identifier (e.g. "10.1128/AEM.02591-07")

  • event

    name of the related event (e.g. the conference name when citing a conference paper)

  • event-place

    geographic location of the related event (e.g. "Amsterdam, the Netherlands")

  • first-reference-note-number

    number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes.

  • genre

    class, type or genre of the item (e.g. "adventure" for an adventure movie, "PhD dissertation" for a PhD thesis)

  • ISBN

    International Standard Book Number

  • ISSN

    International Standard Serial Number

  • jurisdiction

    geographic scope of relevance (e.g. "US" for a US patent)

  • keyword 关键字

  • ",22),m=e("p",null,"locator",-1),b={href:"https://docs.citationstyles.org/en/stable/specification.html#locators",target:"_blank",rel:"noopener noreferrer"},f=e("code",null,"cs:label",-1),g=t("
  • medium

    medium description (e.g. "CD", "DVD", etc.)

  • note

    (short) inline note giving additional item details (e.g. a concise summary or commentary)

  • original-publisher

    original publisher, for items that have been republished by a different publisher

  • original-publisher-place

    geographic location of the original publisher (e.g. "London, UK")

  • original-title 最初版本的题目

  • page 项目的页码范围

  • page-first 页码范围的第一个页码

  • PMCID

    PubMed Central reference number

  • PMID

    PubMed reference number

  • publisher 出版商/出版社

  • publisher-place 出版社的地理位置

  • references

    resources related to the procedural history of a legal case

  • reviewed-title

    title of the item reviewed by the current item

  • scale

    scale of e.g. a map

  • section

    container section holding the item (e.g. "politics" for a newspaper article)

  • source

    from whence the item originates (e.g. a library catalog or database)

  • status

    (publication) status of the item (e.g. "forthcoming")

  • title

    primary title of the item

  • title-short

    short/abbreviated form of "title" (also accessible through the "short" form of the "title" variable)

  • URL 链接

  • version 版本

  • year-suffix

    disambiguating year suffix in author-date styles (e.g. "a" in "Doe, 1999a")

  • ",22),v=e("h2",{id:"数据变量",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#数据变量","aria-hidden":"true"},"#"),i(" 数据变量")],-1),q={href:"https://docs.citationstyles.org/en/stable/specification.html#standard-variables",target:"_blank",rel:"noopener noreferrer"},_=t('
    • chapter-number

      章序号

    • collection-number

      number identifying the collection holding the item (e.g. the series number for a book)

    • edition

      版本序号(注意和 version 的区别)

    • issue

      (container) issue holding the item (e.g. "5" when citing a journal article from journal volume 2, issue 5)

    • number

      number identifying the item (e.g. a report number)

    • number-of-pages

      引用项目的总的页数

    • number-of-volumes

      total number of volumes, usable for citing multi-volume books and such

    • volume

      (container) volume holding the item (e.g. "2" when citing a chapter from book volume 2)

    日期变量

    • accessed

      date the item has been accessed

    • container

      ?

    • event-date

      date the related event took place

    • issued

      date the item was issued/published

    • original-date

      (issue) date of the original version

    • submitted

      date the item (e.g. a manuscript) has been submitted for publication

    名字变量

    • author

    • collection-editor

      editor of the collection holding the item (e.g. the series editor for a book)

    • composer

      composer (e.g. of a musical score)

    • container-author

      author of the container holding the item (e.g. the book author for a book chapter)

    • director

      director (e.g. of a film)

    • editor

    • editorial-director

      managing editor ("Directeur de la Publication" in French)

    • illustrator

      illustrator (e.g. of a children’s book)

    • interviewer

      interviewer (e.g. of an interview)

    • original-author

    • recipient

      recipient (e.g. of a letter)

    • reviewed-author

      author of the item reviewed by the current item

    • translator

    ',5);function y(k,w){const o=r("ExternalLinkIcon");return a(),n("div",null,[c,h,u,e("ul",null,[d,e("li",null,[m,e("p",null,[i("a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the "),e("a",b,[i("Locators"),l(o)]),i(" term list), which determines which term is rendered by "),f,i(' when the "locator" variable is selected.')])]),g]),v,e("p",null,[i("Number variables are a subset of the "),e("a",q,[i("Standard Variables"),l(o)]),i(".")]),_])}const I=p(s,[["render",y],["__file","appendix4-variables.html.vue"]]);export{I as default}; diff --git a/assets/appendix5-page-range-formats.html--KEoUp71.js b/assets/appendix5-page-range-formats.html--KEoUp71.js new file mode 100644 index 00000000..ea982ce9 --- /dev/null +++ b/assets/appendix5-page-range-formats.html--KEoUp71.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-42793124","path":"/code/citation-style-language/specification/appendix/appendix5-page-range-formats.html","title":"附录 V 页码范围格式","lang":"zh-CN","frontmatter":{"title":"附录 V 页码范围格式","date":"2022-08-01T16:47:15.000Z","updated":"2022-08-03T10:28:22.000Z","description":"附录 V 页码范围格式 [!warning] WORK IN PROGRESS 此页面正在施工中。 cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是: \\"chicago\\" 第一个数字 第二个数字 例 小于 100 使用所有的位数 3–10; 71–72 100 或者 100 的整数 使用所有的位数 100–104; 600–613; 1100–1123 100 到 109 (包括对应 100 的倍数的范围) 仅使用有变化的部分,忽略不需要的 0 107–8; 505–17; 1002–6 110 到 199 (包括对应 100 的倍数的范围) 根据需要使用两位数或者更多 321–25; 415–532; 11564–68; 13792–803 4 位数 如果数字是 4 位并且其中有 3 位不同,使用所有的位数 1496–1504; 2787–2816","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/appendix5-page-range-formats.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"附录 V 页码范围格式"}],["meta",{"property":"og:description","content":"附录 V 页码范围格式 [!warning] WORK IN PROGRESS 此页面正在施工中。 cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是: \\"chicago\\" 第一个数字 第二个数字 例 小于 100 使用所有的位数 3–10; 71–72 100 或者 100 的整数 使用所有的位数 100–104; 600–613; 1100–1123 100 到 109 (包括对应 100 的倍数的范围) 仅使用有变化的部分,忽略不需要的 0 107–8; 505–17; 1002–6 110 到 199 (包括对应 100 的倍数的范围) 根据需要使用两位数或者更多 321–25; 415–532; 11564–68; 13792–803 4 位数 如果数字是 4 位并且其中有 3 位不同,使用所有的位数 1496–1504; 2787–2816"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:47:15.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"附录 V 页码范围格式\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:47:15.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.98,"words":295},"filePathRelative":"code/citation-style-language/specification/appendix/appendix5-page-range-formats.md","localizedDate":"2022年8月2日","excerpt":"

    附录 V 页码范围格式

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是:

    \\n

    \\"chicago\\"

    \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
    第一个数字第二个数字
    小于 100使用所有的位数3–10; 71–72
    100 或者 100 的整数使用所有的位数100–104; 600–613; 1100–1123
    100 到 109 (包括对应 100 的倍数的范围)仅使用有变化的部分,忽略不需要的 0107–8; 505–17; 1002–6
    110 到 199 (包括对应 100 的倍数的范围)根据需要使用两位数或者更多321–25; 415–532; 11564–68; 13792–803
    4 位数如果数字是 4 位并且其中有 3 位不同,使用所有的位数1496–1504; 2787–2816
    ","autoDesc":true}');export{t as data}; diff --git a/assets/appendix5-page-range-formats.html-Vip2H80I.js b/assets/appendix5-page-range-formats.html-Vip2H80I.js new file mode 100644 index 00000000..23232eb9 --- /dev/null +++ b/assets/appendix5-page-range-formats.html-Vip2H80I.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as d,c as e,d as o}from"./app-Mf7X6hWu.js";const a={},c=o('

    附录 V 页码范围格式

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是:

    "chicago"

    第一个数字第二个数字
    小于 100使用所有的位数3–10; 71–72
    100 或者 100 的整数使用所有的位数100–104; 600–613; 1100–1123
    100 到 109 (包括对应 100 的倍数的范围)仅使用有变化的部分,忽略不需要的 0107–8; 505–17; 1002–6
    110 到 199 (包括对应 100 的倍数的范围)根据需要使用两位数或者更多321–25; 415–532; 11564–68; 13792–803
    4 位数如果数字是 4 位并且其中有 3 位不同,使用所有的位数1496–1504; 2787–2816

    "expanded"

    ​ 扩展模式,不适用缩写。eg. 42–45、321–328、2787–2816

    "minimal"

    ​ 第二个数字中重复的所有数字都被省略:42–5,321–8,2787–816

    "minimal-two"

    ​ 和 "minimal" 类似,但当第二个数字有两个或者两个以上的数字时,第二个数字至少保留两位。

    ',11),r=[c];function p(n,i){return d(),e("div",null,r)}const l=t(a,[["render",p],["__file","appendix5-page-range-formats.html.vue"]]);export{l as default}; diff --git a/assets/appendix6-links.html-Q_iwdsIW.js b/assets/appendix6-links.html-Q_iwdsIW.js new file mode 100644 index 00000000..797a0e37 --- /dev/null +++ b/assets/appendix6-links.html-Q_iwdsIW.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3e741b5c","path":"/code/citation-style-language/specification/appendix/appendix6-links.html","title":"附录 VI 链接","lang":"zh-CN","frontmatter":{"title":"附录 VI 链接","date":"2022-08-01T16:49:45.000Z","updated":"2022-08-03T10:28:33.000Z","description":"附录 VI 链接 [!warning] WORK IN PROGRESS 此页面正在施工中。 The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules: If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/appendix6-links.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"附录 VI 链接"}],["meta",{"property":"og:description","content":"附录 VI 链接 [!warning] WORK IN PROGRESS 此页面正在施工中。 The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules: If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:49:45.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"附录 VI 链接\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:49:45.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.57,"words":171},"filePathRelative":"code/citation-style-language/specification/appendix/appendix6-links.md","localizedDate":"2022年8月2日","excerpt":"

    附录 VI 链接

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules:

    \\n

    If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:

    ","autoDesc":true}');export{e as data}; diff --git a/assets/appendix6-links.html-f1IFMlVG.js b/assets/appendix6-links.html-f1IFMlVG.js new file mode 100644 index 00000000..c6bd08f6 --- /dev/null +++ b/assets/appendix6-links.html-f1IFMlVG.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as l,c as s,a as e,b as n,e as t}from"./app-Mf7X6hWu.js";const a={},c=e("h1",{id:"附录-vi-链接",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#附录-vi-链接","aria-hidden":"true"},"#"),n(" 附录 VI 链接")],-1),h=e("blockquote",null,[e("p",null,"[!warning] WORK IN PROGRESS 此页面正在施工中。")],-1),d=e("p",null,"The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules:",-1),p=e("p",null,"If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:",-1),_=e("li",null,[e("code",null,"url"),n(": output as is")],-1),u=e("code",null,"doi",-1),f={href:"https://doi.org/",target:"_blank",rel:"noopener noreferrer"},g=e("code",null,"pmid",-1),b={href:"https://www.ncbi.nlm.nih.gov/pubmed/",target:"_blank",rel:"noopener noreferrer"},m=e("code",null,"pmcid",-1),w={href:"https://www.ncbi.nlm.nih.gov/pmc/articles/",target:"_blank",rel:"noopener noreferrer"},k={href:"https://doi.org/",target:"_blank",rel:"noopener noreferrer"},v=e("p",null,"Citation processors should include an option flag for calling applications to disable bibliography linking behavior.",-1);function x(I,y){const o=r("ExternalLinkIcon");return l(),s("div",null,[c,h,d,p,e("ol",null,[_,e("li",null,[u,n(": prepend with “"),e("a",f,[n("https://doi.org/"),t(o)]),n("”")]),e("li",null,[g,n(": prepend with “"),e("a",b,[n("https://www.ncbi.nlm.nih.gov/pubmed/"),t(o)]),n("”")]),e("li",null,[m,n(": prepend with “"),e("a",w,[n("https://www.ncbi.nlm.nih.gov/pmc/articles/"),t(o)]),n("”")])]),e("p",null,[n("If the identifier is rendered as a URI, include rendered URI components (e.g. “"),e("a",k,[n("https://doi.org/"),t(o)]),n("”) in the link anchor. Do not include any other affix text in the link anchor (e.g. “Available from: “, “doi: “, “PMID: “).")]),v])}const L=i(a,[["render",x],["__file","appendix6-links.html.vue"]]);export{L as default}; diff --git a/assets/arc-M4yoLkG1.js b/assets/arc-M4yoLkG1.js new file mode 100644 index 00000000..3cc51ef1 --- /dev/null +++ b/assets/arc-M4yoLkG1.js @@ -0,0 +1 @@ +import{w as ln,c as U}from"./path-aUcfwwLI.js";import{aO as an,aP as Y,aQ as O,aR as rn,aS as y,aK as on,aT as z,aU as _,aV as un,aW as t,aX as sn,aY as tn,aZ as fn}from"./mermaid.core-Up0YySao.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function mn(l){return l.endAngle}function pn(l){return l&&l.padAngle}function dn(l,h,D,S,v,R,V,a){var E=D-l,i=S-h,n=V-v,m=a-R,r=m*E-n*i;if(!(r*ru*u+X*X&&(K=w,Q=d),{cx:K,cy:Q,x01:-n,y01:-m,x11:K*(v/T-1),y11:Q*(v/T-1)}}function vn(){var l=cn,h=yn,D=U(0),S=null,v=gn,R=mn,V=pn,a=null,E=ln(i);function i(){var n,m,r=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-rn,c=R.apply(this,arguments)-rn,W=un(c-f),o=c>f;if(a||(a=n=E()),sy))a.moveTo(0,0);else if(W>on-y)a.moveTo(s*Y(f),s*O(f)),a.arc(0,0,s,f,c,!o),r>y&&(a.moveTo(r*Y(c),r*O(c)),a.arc(0,0,r,c,f,o));else{var p=f,g=c,A=f,T=c,P=W,I=W,K=V.apply(this,arguments)/2,Q=K>y&&(S?+S.apply(this,arguments):z(r*r+s*s)),w=_(un(s-r)/2,+D.apply(this,arguments)),d=w,x=w,e,u;if(Q>y){var X=sn(Q/r*O(K)),B=sn(Q/s*O(K));(P-=X*2)>y?(X*=o?1:-1,A+=X,T-=X):(P=0,A=T=(f+c)/2),(I-=B*2)>y?(B*=o?1:-1,p+=B,g-=B):(I=0,p=g=(f+c)/2)}var Z=s*Y(p),j=s*O(p),C=r*Y(T),F=r*O(T);if(w>y){var G=s*Y(g),H=s*O(g),L=r*Y(A),M=r*O(A),q;if(Wy?x>y?(e=J(L,M,Z,j,s,x,o),u=J(G,H,C,F,s,x,o),a.moveTo(e.cx+e.x01,e.cy+e.y01),xy)||!(P>y)?a.lineTo(C,F):d>y?(e=J(C,F,G,H,r,-d,o),u=J(Z,j,L,M,r,-d,o),a.lineTo(e.cx+e.x01,e.cy+e.y01),d"u"&&(D.yylloc={});var Ht=D.yylloc;u.push(Ht);var ke=D.options&&D.options.ranges;typeof vt.yy.parseError=="function"?this.parseError=vt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ae(){var X;return X=g.pop()||D.lex()||ae,typeof X!="number"&&(X instanceof Array&&(g=X,X=g.pop()),X=x.symbols_[X]||X),X}for(var M,kt,N,qt,Ct={},Mt,z,re,Lt;;){if(kt=m[m.length-1],this.defaultActions[kt]?N=this.defaultActions[kt]:((M===null||typeof M>"u")&&(M=Ae()),N=Tt[kt]&&Tt[kt][M]),typeof N>"u"||!N.length||!N[0]){var Gt="";Lt=[];for(Mt in Tt[kt])this.terminals_[Mt]&&Mt>Ee&&Lt.push("'"+this.terminals_[Mt]+"'");D.showPosition?Gt="Parse error on line "+(Et+1)+`: +`+D.showPosition()+` +Expecting `+Lt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":Gt="Parse error on line "+(Et+1)+": Unexpected "+(M==ae?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(Gt,{text:D.match,token:this.terminals_[M]||M,line:D.yylineno,loc:Ht,expected:Lt})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+kt+", token: "+M);switch(N[0]){case 1:m.push(M),T.push(D.yytext),u.push(D.yylloc),m.push(N[1]),M=null,se=D.yyleng,y=D.yytext,Et=D.yylineno,Ht=D.yylloc;break;case 2:if(z=this.productions_[N[1]][1],Ct.$=T[T.length-z],Ct._$={first_line:u[u.length-(z||1)].first_line,last_line:u[u.length-1].last_line,first_column:u[u.length-(z||1)].first_column,last_column:u[u.length-1].last_column},ke&&(Ct._$.range=[u[u.length-(z||1)].range[0],u[u.length-1].range[1]]),qt=this.performAction.apply(Ct,[y,se,Et,vt.yy,N[1],T,u].concat(ve)),typeof qt<"u")return qt;z&&(m=m.slice(0,-1*z*2),T=T.slice(0,-1*z),u=u.slice(0,-1*z)),m.push(this.productions_[N[1]][0]),T.push(Ct.$),u.push(Ct._$),re=Tt[m[m.length-2]][m[m.length-1]],m.push(re);break;case 3:return!0}}return!0}},me=function(){var bt={EOF:1,parseError:function(x,m){if(this.yy.parser)this.yy.parser.parseError(x,m);else throw new Error(x)},setInput:function(_,x){return this.yy=x||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var x=_.match(/(?:\r\n?|\n).*/g);return x?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},unput:function(_){var x=_.length,m=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-x),this.offset-=x;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===g.length?this.yylloc.first_column:0)+g[g.length-m.length].length-m[0].length:this.yylloc.first_column-x},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-x]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(_){this.unput(this.match.slice(_))},pastInput:function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var _=this.pastInput(),x=new Array(_.length+1).join("-");return _+this.upcomingInput()+` +`+x+"^"},test_match:function(_,x){var m,g,T;if(this.options.backtrack_lexer&&(T={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(T.yylloc.range=this.yylloc.range.slice(0))),g=_[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],m=this.performAction.call(this,this.yy,this,x,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),m)return m;if(this._backtrack){for(var u in T)this[u]=T[u];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,x,m,g;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),u=0;ux[0].length)){if(x=m,g=u,this.options.backtrack_lexer){if(_=this.test_match(m,T[u]),_!==!1)return _;if(this._backtrack){x=!1;continue}else return!1}else if(!this.options.flex)break}return x?(_=this.test_match(x,T[g]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var x=this.next();return x||this.lex()},begin:function(x){this.conditionStack.push(x)},popState:function(){var x=this.conditionStack.length-1;return x>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(x){return x=this.conditionStack.length-1-Math.abs(x||0),x>=0?this.conditionStack[x]:"INITIAL"},pushState:function(x){this.begin(x)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(x,m,g,T){switch(g){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:return this.begin("node"),39;case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:return this.begin("rel_u"),66;case 53:return this.begin("rel_u"),66;case 54:return this.begin("rel_d"),67;case 55:return this.begin("rel_d"),67;case 56:return this.begin("rel_l"),68;case 57:return this.begin("rel_l"),68;case 58:return this.begin("rel_r"),69;case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return bt}();Xt.lexer=me;function Wt(){this.yy={}}return Wt.prototype=Xt,Xt.Parser=Wt,new Wt}();Yt.parser=Yt;const Ne=Yt;let U=[],_t=[""],P="global",j="",V=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],St=[],te="",ee=!1,It=4,jt=2;var de;const Be=function(){return de},Ye=function(e){de=ue(e,Dt())},Ie=function(e,t,a,o,l,i,s,r,n){if(e==null||t===void 0||t===null||a===void 0||a===null||o===void 0||o===null)return;let h={};const f=St.find(d=>d.from===t&&d.to===a);if(f?h=f:St.push(h),h.type=e,h.from=t,h.to=a,h.label={text:o},l==null)h.techn={text:""};else if(typeof l=="object"){let[d,p]=Object.entries(l)[0];h[d]={text:p}}else h.techn={text:l};if(i==null)h.descr={text:""};else if(typeof i=="object"){let[d,p]=Object.entries(i)[0];h[d]={text:p}}else h.descr={text:i};if(typeof s=="object"){let[d,p]=Object.entries(s)[0];h[d]=p}else h.sprite=s;if(typeof r=="object"){let[d,p]=Object.entries(r)[0];h[d]=p}else h.tags=r;if(typeof n=="object"){let[d,p]=Object.entries(n)[0];h[d]=p}else h.link=n;h.wrap=xt()},je=function(e,t,a,o,l,i,s){if(t===null||a===null)return;let r={};const n=U.find(h=>h.alias===t);if(n&&t===n.alias?r=n:(r.alias=t,U.push(r)),a==null?r.label={text:""}:r.label={text:a},o==null)r.descr={text:""};else if(typeof o=="object"){let[h,f]=Object.entries(o)[0];r[h]={text:f}}else r.descr={text:o};if(typeof l=="object"){let[h,f]=Object.entries(l)[0];r[h]=f}else r.sprite=l;if(typeof i=="object"){let[h,f]=Object.entries(i)[0];r[h]=f}else r.tags=i;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];r[h]=f}else r.link=s;r.typeC4Shape={text:e},r.parentBoundary=P,r.wrap=xt()},Ue=function(e,t,a,o,l,i,s,r){if(t===null||a===null)return;let n={};const h=U.find(f=>f.alias===t);if(h&&t===h.alias?n=h:(n.alias=t,U.push(n)),a==null?n.label={text:""}:n.label={text:a},o==null)n.techn={text:""};else if(typeof o=="object"){let[f,d]=Object.entries(o)[0];n[f]={text:d}}else n.techn={text:o};if(l==null)n.descr={text:""};else if(typeof l=="object"){let[f,d]=Object.entries(l)[0];n[f]={text:d}}else n.descr={text:l};if(typeof i=="object"){let[f,d]=Object.entries(i)[0];n[f]=d}else n.sprite=i;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];n[f]=d}else n.tags=s;if(typeof r=="object"){let[f,d]=Object.entries(r)[0];n[f]=d}else n.link=r;n.wrap=xt(),n.typeC4Shape={text:e},n.parentBoundary=P},Fe=function(e,t,a,o,l,i,s,r){if(t===null||a===null)return;let n={};const h=U.find(f=>f.alias===t);if(h&&t===h.alias?n=h:(n.alias=t,U.push(n)),a==null?n.label={text:""}:n.label={text:a},o==null)n.techn={text:""};else if(typeof o=="object"){let[f,d]=Object.entries(o)[0];n[f]={text:d}}else n.techn={text:o};if(l==null)n.descr={text:""};else if(typeof l=="object"){let[f,d]=Object.entries(l)[0];n[f]={text:d}}else n.descr={text:l};if(typeof i=="object"){let[f,d]=Object.entries(i)[0];n[f]=d}else n.sprite=i;if(typeof s=="object"){let[f,d]=Object.entries(s)[0];n[f]=d}else n.tags=s;if(typeof r=="object"){let[f,d]=Object.entries(r)[0];n[f]=d}else n.link=r;n.wrap=xt(),n.typeC4Shape={text:e},n.parentBoundary=P},Ve=function(e,t,a,o,l){if(e===null||t===null)return;let i={};const s=V.find(r=>r.alias===e);if(s&&e===s.alias?i=s:(i.alias=e,V.push(i)),t==null?i.label={text:""}:i.label={text:t},a==null)i.type={text:"system"};else if(typeof a=="object"){let[r,n]=Object.entries(a)[0];i[r]={text:n}}else i.type={text:a};if(typeof o=="object"){let[r,n]=Object.entries(o)[0];i[r]=n}else i.tags=o;if(typeof l=="object"){let[r,n]=Object.entries(l)[0];i[r]=n}else i.link=l;i.parentBoundary=P,i.wrap=xt(),j=P,P=e,_t.push(j)},ze=function(e,t,a,o,l){if(e===null||t===null)return;let i={};const s=V.find(r=>r.alias===e);if(s&&e===s.alias?i=s:(i.alias=e,V.push(i)),t==null?i.label={text:""}:i.label={text:t},a==null)i.type={text:"container"};else if(typeof a=="object"){let[r,n]=Object.entries(a)[0];i[r]={text:n}}else i.type={text:a};if(typeof o=="object"){let[r,n]=Object.entries(o)[0];i[r]=n}else i.tags=o;if(typeof l=="object"){let[r,n]=Object.entries(l)[0];i[r]=n}else i.link=l;i.parentBoundary=P,i.wrap=xt(),j=P,P=e,_t.push(j)},Xe=function(e,t,a,o,l,i,s,r){if(t===null||a===null)return;let n={};const h=V.find(f=>f.alias===t);if(h&&t===h.alias?n=h:(n.alias=t,V.push(n)),a==null?n.label={text:""}:n.label={text:a},o==null)n.type={text:"node"};else if(typeof o=="object"){let[f,d]=Object.entries(o)[0];n[f]={text:d}}else n.type={text:o};if(l==null)n.descr={text:""};else if(typeof l=="object"){let[f,d]=Object.entries(l)[0];n[f]={text:d}}else n.descr={text:l};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];n[f]=d}else n.tags=s;if(typeof r=="object"){let[f,d]=Object.entries(r)[0];n[f]=d}else n.link=r;n.nodeType=e,n.parentBoundary=P,n.wrap=xt(),j=P,P=t,_t.push(j)},We=function(){P=j,_t.pop(),j=_t.pop(),_t.push(j)},Qe=function(e,t,a,o,l,i,s,r,n,h,f){let d=U.find(p=>p.alias===t);if(!(d===void 0&&(d=V.find(p=>p.alias===t),d===void 0))){if(a!=null)if(typeof a=="object"){let[p,E]=Object.entries(a)[0];d[p]=E}else d.bgColor=a;if(o!=null)if(typeof o=="object"){let[p,E]=Object.entries(o)[0];d[p]=E}else d.fontColor=o;if(l!=null)if(typeof l=="object"){let[p,E]=Object.entries(l)[0];d[p]=E}else d.borderColor=l;if(i!=null)if(typeof i=="object"){let[p,E]=Object.entries(i)[0];d[p]=E}else d.shadowing=i;if(s!=null)if(typeof s=="object"){let[p,E]=Object.entries(s)[0];d[p]=E}else d.shape=s;if(r!=null)if(typeof r=="object"){let[p,E]=Object.entries(r)[0];d[p]=E}else d.sprite=r;if(n!=null)if(typeof n=="object"){let[p,E]=Object.entries(n)[0];d[p]=E}else d.techn=n;if(h!=null)if(typeof h=="object"){let[p,E]=Object.entries(h)[0];d[p]=E}else d.legendText=h;if(f!=null)if(typeof f=="object"){let[p,E]=Object.entries(f)[0];d[p]=E}else d.legendSprite=f}},He=function(e,t,a,o,l,i,s){const r=St.find(n=>n.from===t&&n.to===a);if(r!==void 0){if(o!=null)if(typeof o=="object"){let[n,h]=Object.entries(o)[0];r[n]=h}else r.textColor=o;if(l!=null)if(typeof l=="object"){let[n,h]=Object.entries(l)[0];r[n]=h}else r.lineColor=l;if(i!=null)if(typeof i=="object"){let[n,h]=Object.entries(i)[0];r[n]=parseInt(h)}else r.offsetX=parseInt(i);if(s!=null)if(typeof s=="object"){let[n,h]=Object.entries(s)[0];r[n]=parseInt(h)}else r.offsetY=parseInt(s)}},qe=function(e,t,a){let o=It,l=jt;if(typeof t=="object"){const i=Object.values(t)[0];o=parseInt(i)}else o=parseInt(t);if(typeof a=="object"){const i=Object.values(a)[0];l=parseInt(i)}else l=parseInt(a);o>=1&&(It=o),l>=1&&(jt=l)},Ge=function(){return It},Ke=function(){return jt},Je=function(){return P},Ze=function(){return j},fe=function(e){return e==null?U:U.filter(t=>t.parentBoundary===e)},$e=function(e){return U.find(t=>t.alias===e)},t0=function(e){return Object.keys(fe(e))},e0=function(e){return e==null?V:V.filter(t=>t.parentBoundary===e)},i0=function(){return St},n0=function(){return te},s0=function(e){ee=e},xt=function(){return ee},a0=function(){U=[],V=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],j="",P="global",_t=[""],St=[],_t=[""],te="",ee=!1,It=4,jt=2},r0={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},l0={FILLED:0,OPEN:1},o0={LEFTOF:0,RIGHTOF:1,OVER:2},c0=function(e){te=ue(e,Dt())},Jt={addPersonOrSystem:je,addPersonOrSystemBoundary:Ve,addContainer:Ue,addContainerBoundary:ze,addComponent:Fe,addDeploymentNode:Xe,popBoundaryParseStack:We,addRel:Ie,updateElStyle:Qe,updateRelStyle:He,updateLayoutConfig:qe,autoWrap:xt,setWrap:s0,getC4ShapeArray:fe,getC4Shape:$e,getC4ShapeKeys:t0,getBoundarys:e0,getCurrentBoundaryParse:Je,getParentBoundaryParse:Ze,getRels:i0,getTitle:n0,getC4Type:Be,getC4ShapeInRow:Ge,getC4BoundaryInRow:Ke,setAccTitle:Ce,getAccTitle:we,getAccDescription:Oe,setAccDescription:Te,getConfig:()=>Dt().c4,clear:a0,LINETYPE:r0,ARROWTYPE:l0,PLACEMENT:o0,setTitle:c0,setC4Type:Ye},ie=function(e,t){return Me(e,t)},pe=function(e,t,a,o,l,i){const s=e.append("image");s.attr("width",t),s.attr("height",a),s.attr("x",o),s.attr("y",l);let r=i.startsWith("data:image/png;base64")?i:Pe.sanitizeUrl(i);s.attr("xlink:href",r)},h0=(e,t,a)=>{const o=e.append("g");let l=0;for(let i of t){let s=i.textColor?i.textColor:"#444444",r=i.lineColor?i.lineColor:"#444444",n=i.offsetX?parseInt(i.offsetX):0,h=i.offsetY?parseInt(i.offsetY):0,f="";if(l===0){let p=o.append("line");p.attr("x1",i.startPoint.x),p.attr("y1",i.startPoint.y),p.attr("x2",i.endPoint.x),p.attr("y2",i.endPoint.y),p.attr("stroke-width","1"),p.attr("stroke",r),p.style("fill","none"),i.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(i.type==="birel"||i.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)"),l=-1}else{let p=o.append("path");p.attr("fill","none").attr("stroke-width","1").attr("stroke",r).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",i.startPoint.x).replaceAll("starty",i.startPoint.y).replaceAll("controlx",i.startPoint.x+(i.endPoint.x-i.startPoint.x)/2-(i.endPoint.x-i.startPoint.x)/4).replaceAll("controly",i.startPoint.y+(i.endPoint.y-i.startPoint.y)/2).replaceAll("stopx",i.endPoint.x).replaceAll("stopy",i.endPoint.y)),i.type!=="rel_b"&&p.attr("marker-end","url("+f+"#arrowhead)"),(i.type==="birel"||i.type==="rel_b")&&p.attr("marker-start","url("+f+"#arrowend)")}let d=a.messageFont();W(a)(i.label.text,o,Math.min(i.startPoint.x,i.endPoint.x)+Math.abs(i.endPoint.x-i.startPoint.x)/2+n,Math.min(i.startPoint.y,i.endPoint.y)+Math.abs(i.endPoint.y-i.startPoint.y)/2+h,i.label.width,i.label.height,{fill:s},d),i.techn&&i.techn.text!==""&&(d=a.messageFont(),W(a)("["+i.techn.text+"]",o,Math.min(i.startPoint.x,i.endPoint.x)+Math.abs(i.endPoint.x-i.startPoint.x)/2+n,Math.min(i.startPoint.y,i.endPoint.y)+Math.abs(i.endPoint.y-i.startPoint.y)/2+a.messageFontSize+5+h,Math.max(i.label.width,i.techn.width),i.techn.height,{fill:s,"font-style":"italic"},d))}},u0=function(e,t,a){const o=e.append("g");let l=t.bgColor?t.bgColor:"none",i=t.borderColor?t.borderColor:"#444444",s=t.fontColor?t.fontColor:"black",r={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(r={"stroke-width":1});let n={x:t.x,y:t.y,fill:l,stroke:i,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:r};ie(o,n);let h=a.boundaryFont();h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=s,W(a)(t.label.text,o,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},h),t.type&&t.type.text!==""&&(h=a.boundaryFont(),h.fontColor=s,W(a)(t.type.text,o,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},h)),t.descr&&t.descr.text!==""&&(h=a.boundaryFont(),h.fontSize=h.fontSize-2,h.fontColor=s,W(a)(t.descr.text,o,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},h))},d0=function(e,t,a){var o;let l=t.bgColor?t.bgColor:a[t.typeC4Shape.text+"_bg_color"],i=t.borderColor?t.borderColor:a[t.typeC4Shape.text+"_border_color"],s=t.fontColor?t.fontColor:"#FFFFFF",r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const n=e.append("g");n.attr("class","person-man");const h=Le();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":h.x=t.x,h.y=t.y,h.fill=l,h.width=t.width,h.height=t.height,h.stroke=i,h.rx=2.5,h.ry=2.5,h.attrs={"stroke-width":.5},ie(n,h);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":n.append("path").attr("fill",l).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),n.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":n.append("path").attr("fill",l).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),n.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let f=E0(a,t.typeC4Shape.text);switch(n.append("text").attr("fill",s).attr("font-family",f.fontFamily).attr("font-size",f.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":pe(n,48,48,t.x+t.width/2-24,t.y+t.image.Y,r);break}let d=a[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=s,W(a)(t.label.text,n,t.x,t.y+t.label.Y,t.width,t.height,{fill:s},d),d=a[t.typeC4Shape.text+"Font"](),d.fontColor=s,t.techn&&((o=t.techn)==null?void 0:o.text)!==""?W(a)(t.techn.text,n,t.x,t.y+t.techn.Y,t.width,t.height,{fill:s,"font-style":"italic"},d):t.type&&t.type.text!==""&&W(a)(t.type.text,n,t.x,t.y+t.type.Y,t.width,t.height,{fill:s,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=a.personFont(),d.fontColor=s,W(a)(t.descr.text,n,t.x,t.y+t.descr.Y,t.width,t.height,{fill:s},d)),t.height},f0=function(e){e.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},p0=function(e){e.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},y0=function(e){e.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},g0=function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},b0=function(e){e.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},_0=function(e){e.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},x0=function(e){e.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},m0=function(e){const a=e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);a.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),a.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},E0=(e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),W=function(){function e(l,i,s,r,n,h,f){const d=i.append("text").attr("x",s+n/2).attr("y",r+h/2+5).style("text-anchor","middle").text(l);o(d,f)}function t(l,i,s,r,n,h,f,d){const{fontSize:p,fontFamily:E,fontWeight:O}=d,R=l.split(Kt.lineBreakRegex);for(let S=0;S=this.data.widthLimit||o>=this.data.widthLimit||this.nextData.cnt>ye)&&(a=this.nextData.startx+t.margin+b.nextLinePaddingX,l=this.nextData.stopy+t.margin*2,this.nextData.stopx=o=a+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=l+t.height,this.nextData.cnt=1),t.x=a,t.y=l,this.updateVal(this.data,"startx",a,Math.min),this.updateVal(this.data,"starty",l,Math.min),this.updateVal(this.data,"stopx",o,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",a,Math.min),this.updateVal(this.nextData,"starty",l,Math.min),this.updateVal(this.nextData,"stopx",o,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},$t(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}}const $t=function(e){Re(b,e),e.fontFamily&&(b.personFontFamily=b.systemFontFamily=b.messageFontFamily=e.fontFamily),e.fontSize&&(b.personFontSize=b.systemFontSize=b.messageFontSize=e.fontSize),e.fontWeight&&(b.personFontWeight=b.systemFontWeight=b.messageFontWeight=e.fontWeight)},Rt=(e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),Bt=e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),v0=e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight});function I(e,t,a,o,l){if(!t[e].width)if(a)t[e].text=Se(t[e].text,l,o),t[e].textLines=t[e].text.split(Kt.lineBreakRegex).length,t[e].width=l,t[e].height=oe(t[e].text,o);else{let i=t[e].text.split(Kt.lineBreakRegex);t[e].textLines=i.length;let s=0;t[e].height=0,t[e].width=0;for(const r of i)t[e].width=Math.max(wt(r,o),t[e].width),s=oe(r,o),t[e].height=t[e].height+s}}const be=function(e,t,a){t.x=a.data.startx,t.y=a.data.starty,t.width=a.data.stopx-a.data.startx,t.height=a.data.stopy-a.data.starty,t.label.y=b.c4ShapeMargin-35;let o=t.wrap&&b.wrap,l=Bt(b);l.fontSize=l.fontSize+2,l.fontWeight="bold";let i=wt(t.label.text,l);I("label",t,o,l,i),F.drawBoundary(e,t,b)},_e=function(e,t,a,o){let l=0;for(const i of o){l=0;const s=a[i];let r=Rt(b,s.typeC4Shape.text);switch(r.fontSize=r.fontSize-2,s.typeC4Shape.width=wt("«"+s.typeC4Shape.text+"»",r),s.typeC4Shape.height=r.fontSize+2,s.typeC4Shape.Y=b.c4ShapePadding,l=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=l,l=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=l,l=s.image.Y+s.image.height);let n=s.wrap&&b.wrap,h=b.width-b.c4ShapePadding*2,f=Rt(b,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",I("label",s,n,f,h),s.label.Y=l+8,l=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let E=Rt(b,s.typeC4Shape.text);I("type",s,n,E,h),s.type.Y=l+5,l=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let E=Rt(b,s.techn.text);I("techn",s,n,E,h),s.techn.Y=l+5,l=s.techn.Y+s.techn.height}let d=l,p=s.label.width;if(s.descr&&s.descr.text!==""){let E=Rt(b,s.typeC4Shape.text);I("descr",s,n,E,h),s.descr.Y=l+20,l=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=l-s.descr.textLines*5}p=p+b.c4ShapePadding,s.width=Math.max(s.width||b.width,p,b.width),s.height=Math.max(s.height||b.height,d,b.height),s.margin=s.margin||b.c4ShapeMargin,e.insert(s),F.drawC4Shape(t,s,b)}e.bumpLastMargin(b.c4ShapeMargin)};class B{constructor(t,a){this.x=t,this.y=a}}let ce=function(e,t){let a=e.x,o=e.y,l=t.x,i=t.y,s=a+e.width/2,r=o+e.height/2,n=Math.abs(a-l),h=Math.abs(o-i),f=h/n,d=e.height/e.width,p=null;return o==i&&al?p=new B(a,r):a==l&&oi&&(p=new B(s,o)),a>l&&o=f?p=new B(a,r+f*e.width/2):p=new B(s-n/h*e.height/2,o+e.height):a=f?p=new B(a+e.width,r+f*e.width/2):p=new B(s+n/h*e.height/2,o+e.height):ai?d>=f?p=new B(a+e.width,r-f*e.width/2):p=new B(s+e.height/2*n/h,o):a>l&&o>i&&(d>=f?p=new B(a,r-e.width/2*f):p=new B(s-e.height/2*n/h,o)),p},k0=function(e,t){let a={x:0,y:0};a.x=t.x+t.width/2,a.y=t.y+t.height/2;let o=ce(e,a);a.x=e.x+e.width/2,a.y=e.y+e.height/2;let l=ce(t,a);return{startPoint:o,endPoint:l}};const A0=function(e,t,a,o){let l=0;for(let i of t){l=l+1;let s=i.wrap&&b.wrap,r=v0(b);o.db.getC4Type()==="C4Dynamic"&&(i.label.text=l+": "+i.label.text);let h=wt(i.label.text,r);I("label",i,s,r,h),i.techn&&i.techn.text!==""&&(h=wt(i.techn.text,r),I("techn",i,s,r,h)),i.descr&&i.descr.text!==""&&(h=wt(i.descr.text,r),I("descr",i,s,r,h));let f=a(i.from),d=a(i.to),p=k0(f,d);i.startPoint=p.startPoint,i.endPoint=p.endPoint}F.drawRels(e,t,b)};function xe(e,t,a,o,l){let i=new ge(l);i.data.widthLimit=a.data.widthLimit/Math.min(Zt,o.length);for(let[s,r]of o.entries()){let n=0;r.image={width:0,height:0,Y:0},r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=n,n=r.image.Y+r.image.height);let h=r.wrap&&b.wrap,f=Bt(b);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",I("label",r,h,f,i.data.widthLimit),r.label.Y=n+8,n=r.label.Y+r.label.height,r.type&&r.type.text!==""){r.type.text="["+r.type.text+"]";let O=Bt(b);I("type",r,h,O,i.data.widthLimit),r.type.Y=n+5,n=r.type.Y+r.type.height}if(r.descr&&r.descr.text!==""){let O=Bt(b);O.fontSize=O.fontSize-2,I("descr",r,h,O,i.data.widthLimit),r.descr.Y=n+20,n=r.descr.Y+r.descr.height}if(s==0||s%Zt===0){let O=a.data.startx+b.diagramMarginX,R=a.data.stopy+b.diagramMarginY+n;i.setData(O,O,R,R)}else{let O=i.data.stopx!==i.data.startx?i.data.stopx+b.diagramMarginX:i.data.startx,R=i.data.starty;i.setData(O,O,R,R)}i.name=r.alias;let d=l.db.getC4ShapeArray(r.alias),p=l.db.getC4ShapeKeys(r.alias);p.length>0&&_e(i,e,d,p),t=r.alias;let E=l.db.getBoundarys(t);E.length>0&&xe(e,t,i,E,l),r.alias!=="global"&&be(e,r,i),a.data.stopy=Math.max(i.data.stopy+b.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(i.data.stopx+b.c4ShapeMargin,a.data.stopx),Ut=Math.max(Ut,a.data.stopx),Ft=Math.max(Ft,a.data.stopy)}}const C0=function(e,t,a,o){b=Dt().c4;const l=Dt().securityLevel;let i;l==="sandbox"&&(i=Nt("#i"+t));const s=l==="sandbox"?Nt(i.nodes()[0].contentDocument.body):Nt("body");let r=o.db;o.db.setWrap(b.wrap),ye=r.getC4ShapeInRow(),Zt=r.getC4BoundaryInRow(),le.debug(`C:${JSON.stringify(b,null,2)}`);const n=l==="sandbox"?s.select(`[id="${t}"]`):Nt(`[id="${t}"]`);F.insertComputerIcon(n),F.insertDatabaseIcon(n),F.insertClockIcon(n);let h=new ge(o);h.setData(b.diagramMarginX,b.diagramMarginX,b.diagramMarginY,b.diagramMarginY),h.data.widthLimit=screen.availWidth,Ut=b.diagramMarginX,Ft=b.diagramMarginY;const f=o.db.getTitle();let d=o.db.getBoundarys("");xe(n,"",h,d,o),F.insertArrowHead(n),F.insertArrowEnd(n),F.insertArrowCrossHead(n),F.insertArrowFilledHead(n),A0(n,o.db.getRels(),o.db.getC4Shape,o),h.data.stopx=Ut,h.data.stopy=Ft;const p=h.data;let O=p.stopy-p.starty+2*b.diagramMarginY;const S=p.stopx-p.startx+2*b.diagramMarginX;f&&n.append("text").text(f).attr("x",(p.stopx-p.startx)/2-4*b.diagramMarginX).attr("y",p.starty+b.diagramMarginY),De(n,O,S,b.useMaxWidth);const L=f?60:0;n.attr("viewBox",p.startx-b.diagramMarginX+" -"+(b.diagramMarginY+L)+" "+S+" "+(O+L)),le.debug("models:",p)},he={drawPersonOrSystemArray:_e,drawBoundary:be,setConf:$t,draw:C0},w0=e=>`.person { + stroke: ${e.personBorder}; + fill: ${e.personBkg}; + } +`,O0=w0,S0={parser:Ne,db:Jt,renderer:he,styles:O0,init:({c4:e,wrap:t})=>{he.setConf(e),Jt.setWrap(t)}};export{S0 as diagram}; diff --git a/assets/citation-formats.html-Xly2JM7c.js b/assets/citation-formats.html-Xly2JM7c.js new file mode 100644 index 00000000..6857c984 --- /dev/null +++ b/assets/citation-formats.html-Xly2JM7c.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-52613576","path":"/code/citation-style-language/primer/citation-formats.html","title":"引文格式","lang":"zh-CN","frontmatter":{"title":"引文格式","date":"2022-08-01T17:33:11.000Z","updated":"2022-08-03T10:18:39.000Z","description":"引文格式 [!warning] WORK IN PROGRESS 此页面正在施工中。 引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下: In-text Styles 引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numeric 和 label 格式。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/primer/citation-formats.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"引文格式"}],["meta",{"property":"og:description","content":"引文格式 [!warning] WORK IN PROGRESS 此页面正在施工中。 引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下: In-text Styles 引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numeric 和 label 格式。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T17:33:11.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"引文格式\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T17:33:11.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"In-text Styles","slug":"in-text-styles","link":"#in-text-styles","children":[{"level":3,"title":"“author-date” 和 “author” 格式","slug":"author-date-和-author-格式","link":"#author-date-和-author-格式","children":[]},{"level":3,"title":"“numeric”格式","slug":"numeric-格式","link":"#numeric-格式","children":[]},{"level":3,"title":"\\"numeric\\" 复合格式","slug":"numeric-复合格式","link":"#numeric-复合格式","children":[]},{"level":3,"title":"标签格式","slug":"标签格式","link":"#标签格式","children":[]}]},{"level":2,"title":"Note Styles","slug":"note-styles","link":"#note-styles","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":3.22,"words":967},"filePathRelative":"code/citation-style-language/primer/citation-formats.md","localizedDate":"2022年8月2日","excerpt":"

    引文格式

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下:

    \\n

    In-text Styles

    \\n

    引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numericlabel 格式。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/citation-formats.html-qf1EMp7P.js b/assets/citation-formats.html-qf1EMp7P.js new file mode 100644 index 00000000..ecc68c2e --- /dev/null +++ b/assets/citation-formats.html-qf1EMp7P.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,d as t}from"./app-Mf7X6hWu.js";const i={},n=t('

    引文格式

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下:

    In-text Styles

    引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numericlabel 格式。

    CSL 中,每个单独的 pointer 称为一个引用。例如,引文 “(Doe et al. 2002, Smith 1997)” 包含两个引用:一个是 Doe et al. 在 2002 年发表的文献,另外一个是 Smith1997 年发表的文献。

    “author-date” 和 “author” 格式

    author-date 引用格式会显示作者的名字和发表的日期,比如:(Van der Klei et al. 1991; Zwart et al. 1983)author 只显示作者名字,例如:(Gidijala et al.)。参考文献条目一般使用字母表顺序对作者进行排序。

    应该注意的是,许多引用格式使用了令人疑惑的 Harvard 术语来指代 author-date 格式,但是大多数这些格式与哈佛大学并没有关系。而且也并不存在一个官方的 Harvard 格式。

    参考文献条目实例

    Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.

    van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

    Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.

    “numeric”格式

    numeric 格式由数字组成,比如 [1,2][3]。参考文献条目一般使用作者首字母排序或者使用第一次在正文中的引用顺序排序。国标就是一种典型的 numeric 格式。

    参考文献条目实例

    1. Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.
    1. Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.
    1. van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

    "numeric" 复合格式

    复合格式是 numeric 格式的变体。这种风格在化学领域很流行。CSL 中暂时不支持这种格式,这里也不多作介绍。

    参考文献条目实例

    1. Gidijala L, et al. (2008) BMC Biotechnol 8: 29.
    1. a) Zwart KB, et al. (1983) Antonie van Leeuwenhoek 49: 369-385, b) van der Klei IJ, et al. (1991) Arch Microbiol 156: 15-23.

    标签格式

    这种引用格式由 keys 构成,例 GBKv2008][ZwVH1983; vaHV1991]CSL 对这种格式支持有限,这里也不多作介绍。

    参考文献条目实例

    [GBKv2008] Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.

    [vaHV1991] van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

    [ZwVH1983] Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.

    Note Styles

    引用格式的第二类为 Note 格式。引用中的 marker 可以是数字或者符号,例如 [*] 或者 [†]。每个 marker 指向脚注或者尾注。CSL 不能设置使用哪些数字或者符号用于 marker,这些应该用字处理软件 (比如 word) 设置。与上面的 in-text 格式不同,尾注或者脚注通常显示的信息更多。

    参考文献条目实例

    [*] Voyage to St. Kilda’ (3rd edit. 1753), p. 37.

    [†] Sir J. E. Tennent, ‘Ceylon,’ vol. ii. 1859, p. 107.

    ',30),c=[n];function d(r,l){return o(),a("div",null,c)}const u=e(i,[["render",d],["__file","citation-formats.html.vue"]]);export{u as default}; diff --git a/assets/classDiagram-48ab76fb-jXeM6zOd.js b/assets/classDiagram-48ab76fb-jXeM6zOd.js new file mode 100644 index 00000000..452210bb --- /dev/null +++ b/assets/classDiagram-48ab76fb-jXeM6zOd.js @@ -0,0 +1,2 @@ +import{p as A,d as S,s as G}from"./styles-4ba6ed67-R_EEqhPc.js";import{c as v,l as y,h as B,i as W,ao as $,y as M,ar as I}from"./mermaid.core-Up0YySao.js";import{G as O,l as P}from"./layout-bNXk8SHo.js";import{l as X}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";let H=0;const Y=function(i,a,t,o,p){const g=function(e){switch(e){case p.db.relationType.AGGREGATION:return"aggregation";case p.db.relationType.EXTENSION:return"extension";case p.db.relationType.COMPOSITION:return"composition";case p.db.relationType.DEPENDENCY:return"dependency";case p.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(e=>!Number.isNaN(e.y));const s=a.points,c=X().x(function(e){return e.x}).y(function(e){return e.y}).curve($),n=i.append("path").attr("d",c(s)).attr("id","edge"+H).attr("class","relation");let r="";o.arrowMarkerAbsolute&&(r=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,r=r.replace(/\(/g,"\\("),r=r.replace(/\)/g,"\\)")),t.relation.lineType==1&&n.attr("class","relation dashed-line"),t.relation.lineType==10&&n.attr("class","relation dotted-line"),t.relation.type1!=="none"&&n.attr("marker-start","url("+r+"#"+g(t.relation.type1)+"Start)"),t.relation.type2!=="none"&&n.attr("marker-end","url("+r+"#"+g(t.relation.type2)+"End)");let f,h;const x=a.points.length;let b=M.calcLabelPosition(a.points);f=b.x,h=b.y;let u,m,w,k;if(x%2!==0&&x>1){let e=M.calcCardinalityPosition(t.relation.type1!=="none",a.points,a.points[0]),d=M.calcCardinalityPosition(t.relation.type2!=="none",a.points,a.points[x-1]);y.debug("cardinality_1_point "+JSON.stringify(e)),y.debug("cardinality_2_point "+JSON.stringify(d)),u=e.x,m=e.y,w=d.x,k=d.y}if(t.title!==void 0){const e=i.append("g").attr("class","classLabel"),d=e.append("text").attr("class","label").attr("x",f).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(t.title);window.label=d;const l=d.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",l.x-o.padding/2).attr("y",l.y-o.padding/2).attr("width",l.width+o.padding).attr("height",l.height+o.padding)}y.info("Rendering relation "+JSON.stringify(t)),t.relationTitle1!==void 0&&t.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",u).attr("y",m).attr("fill","black").attr("font-size","6").text(t.relationTitle1),t.relationTitle2!==void 0&&t.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",w).attr("y",k).attr("fill","black").attr("font-size","6").text(t.relationTitle2),H++},J=function(i,a,t,o){y.debug("Rendering class ",a,t);const p=a.id,g={id:p,label:a.id,width:0,height:0},s=i.append("g").attr("id",o.db.lookUpDomId(p)).attr("class","classGroup");let c;a.link?c=s.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",t.textHeight+t.padding).attr("x",0):c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);let n=!0;a.annotations.forEach(function(d){const l=c.append("tspan").text("«"+d+"»");n||l.attr("dy",t.textHeight),n=!1});let r=C(a);const f=c.append("tspan").text(r).attr("class","title");n||f.attr("dy",t.textHeight);const h=c.node().getBBox().height;let x,b,u;if(a.members.length>0){x=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin/2).attr("y2",t.padding+h+t.dividerMargin/2);const d=s.append("text").attr("x",t.padding).attr("y",h+t.dividerMargin+t.textHeight).attr("fill","white").attr("class","classText");n=!0,a.members.forEach(function(l){_(d,l,n,t),n=!1}),b=d.node().getBBox()}if(a.methods.length>0){u=s.append("line").attr("x1",0).attr("y1",t.padding+h+t.dividerMargin+b.height).attr("y2",t.padding+h+t.dividerMargin+b.height);const d=s.append("text").attr("x",t.padding).attr("y",h+2*t.dividerMargin+b.height+t.textHeight).attr("fill","white").attr("class","classText");n=!0,a.methods.forEach(function(l){_(d,l,n,t),n=!1})}const m=s.node().getBBox();var w=" ";a.cssClasses.length>0&&(w=w+a.cssClasses.join(" "));const e=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",m.width+2*t.padding).attr("height",m.height+t.padding+.5*t.dividerMargin).attr("class",w).node().getBBox().width;return c.node().childNodes.forEach(function(d){d.setAttribute("x",(e-d.getBBox().width)/2)}),a.tooltip&&c.insert("title").text(a.tooltip),x&&x.attr("x2",e),u&&u.attr("x2",e),g.width=e,g.height=m.height+t.padding+.5*t.dividerMargin,g},C=function(i){let a=i.id;return i.type&&(a+="<"+I(i.type)+">"),a},Z=function(i,a,t,o){y.debug("Rendering note ",a,t);const p=a.id,g={id:p,text:a.text,width:0,height:0},s=i.append("g").attr("id",p).attr("class","classGroup");let c=s.append("text").attr("y",t.textHeight+t.padding).attr("x",0);const n=JSON.parse(`"${a.text}"`).split(` +`);n.forEach(function(x){y.debug(`Adding line: ${x}`),c.append("tspan").text(x).attr("class","title").attr("dy",t.textHeight)});const r=s.node().getBBox(),h=s.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",r.width+2*t.padding).attr("height",r.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin).node().getBBox().width;return c.node().childNodes.forEach(function(x){x.setAttribute("x",(h-x.getBBox().width)/2)}),g.width=h,g.height=r.height+n.length*t.textHeight+t.padding+.5*t.dividerMargin,g},_=function(i,a,t,o){const{displayText:p,cssStyle:g}=a.getDisplayDetails(),s=i.append("tspan").attr("x",o.padding).text(p);g!==""&&s.attr("style",a.cssStyle),t||s.attr("dy",o.textHeight)},N={getClassTitleString:C,drawClass:J,drawEdge:Y,drawNote:Z};let T={};const E=20,L=function(i){const a=Object.entries(T).find(t=>t[1].label===i);if(a)return a[0]},R=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},F=function(i,a,t,o){const p=v().class;T={},y.info("Rendering diagram "+i);const g=v().securityLevel;let s;g==="sandbox"&&(s=B("#i"+a));const c=g==="sandbox"?B(s.nodes()[0].contentDocument.body):B("body"),n=c.select(`[id='${a}']`);R(n);const r=new O({multigraph:!0});r.setGraph({isMultiGraph:!0}),r.setDefaultEdgeLabel(function(){return{}});const f=o.db.getClasses(),h=Object.keys(f);for(const e of h){const d=f[e],l=N.drawClass(n,d,p,o);T[l.id]=l,r.setNode(l.id,l),y.info("Org height: "+l.height)}o.db.getRelations().forEach(function(e){y.info("tjoho"+L(e.id1)+L(e.id2)+JSON.stringify(e)),r.setEdge(L(e.id1),L(e.id2),{relation:e},e.title||"DEFAULT")}),o.db.getNotes().forEach(function(e){y.debug(`Adding note: ${JSON.stringify(e)}`);const d=N.drawNote(n,e,p,o);T[d.id]=d,r.setNode(d.id,d),e.class&&e.class in f&&r.setEdge(e.id,L(e.class),{relation:{id1:e.id,id2:e.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),P(r),r.nodes().forEach(function(e){e!==void 0&&r.node(e)!==void 0&&(y.debug("Node "+e+": "+JSON.stringify(r.node(e))),c.select("#"+(o.db.lookUpDomId(e)||e)).attr("transform","translate("+(r.node(e).x-r.node(e).width/2)+","+(r.node(e).y-r.node(e).height/2)+" )"))}),r.edges().forEach(function(e){e!==void 0&&r.edge(e)!==void 0&&(y.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(r.edge(e))),N.drawEdge(n,r.edge(e),r.edge(e).relation,p,o))});const u=n.node().getBBox(),m=u.width+E*2,w=u.height+E*2;W(n,w,m,p.useMaxWidth);const k=`${u.x-E} ${u.y-E} ${m} ${w}`;y.debug(`viewBox ${k}`),n.attr("viewBox",k)},U={draw:F},tt={parser:A,db:S,renderer:U,styles:G,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,S.clear()}};export{tt as diagram}; diff --git a/assets/classDiagram-v2-8ecb0bfc-rRpGDOX7.js b/assets/classDiagram-v2-8ecb0bfc-rRpGDOX7.js new file mode 100644 index 00000000..6944013d --- /dev/null +++ b/assets/classDiagram-v2-8ecb0bfc-rRpGDOX7.js @@ -0,0 +1,2 @@ +import{p as M,d as N,s as $}from"./styles-4ba6ed67-R_EEqhPc.js";import{l as d,c,h as w,y as R,t as B,r as E,o as _,p as G,j as C}from"./mermaid.core-Up0YySao.js";import{G as z}from"./layout-bNXk8SHo.js";import{r as P}from"./index-67a42d7d-Sclb7lyu.js";import"./app-Mf7X6hWu.js";import"./edges-80f1ebb6-Okp3_yLQ.js";import"./createText-aebacdfe-sWKH4swq.js";import"./line-rSV082x4.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const S=s=>C.sanitizeText(s,c());let k={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const q=function(s,t,y,n){const e=Object.keys(s);d.info("keys:",e),d.info(s),e.forEach(function(i){var o,r;const l=s[i],p={shape:"rect",id:l.id,domId:l.domId,labelText:S(l.id),labelStyle:"",style:"fill: none; stroke: black",padding:((o=c().flowchart)==null?void 0:o.padding)??((r=c().class)==null?void 0:r.padding)};t.setNode(l.id,p),A(l.classes,t,y,n,l.id),d.info("setNode",p)})},A=function(s,t,y,n,e){const i=Object.keys(s);d.info("keys:",i),d.info(s),i.filter(o=>s[o].parent==e).forEach(function(o){var r,l;const a=s[o],p=a.cssClasses.join(" "),f={labelStyle:"",style:""},m=a.label??a.id,b=0,h="class_box",u={labelStyle:f.labelStyle,shape:h,labelText:S(m),classData:a,rx:b,ry:b,class:p,style:f.style,id:a.id,domId:a.domId,tooltip:n.db.getTooltip(a.id,e)||"",haveCallback:a.haveCallback,link:a.link,width:a.type==="group"?500:void 0,type:a.type,padding:((r=c().flowchart)==null?void 0:r.padding)??((l=c().class)==null?void 0:l.padding)};t.setNode(a.id,u),e&&t.setParent(a.id,e),d.info("setNode",u)})},F=function(s,t,y,n){d.info(s),s.forEach(function(e,i){var o,r;const l=e,a="",p={labelStyle:"",style:""},f=l.text,m=0,b="note",h={labelStyle:p.labelStyle,shape:b,labelText:S(f),noteData:l,rx:m,ry:m,class:a,style:p.style,id:l.id,domId:l.id,tooltip:"",type:"note",padding:((o=c().flowchart)==null?void 0:o.padding)??((r=c().class)==null?void 0:r.padding)};if(t.setNode(l.id,h),d.info("setNode",h),!l.class||!(l.class in n))return;const u=y+i,g={id:`edgeNote${u}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:E(k.curve,_)};t.setEdge(l.id,l.class,g,u)})},H=function(s,t){const y=c().flowchart;let n=0;s.forEach(function(e){var i;n++;const o={classes:"relation",pattern:e.relation.lineType==1?"dashed":"solid",id:"id"+n,arrowhead:e.type==="arrow_open"?"none":"normal",startLabelRight:e.relationTitle1==="none"?"":e.relationTitle1,endLabelLeft:e.relationTitle2==="none"?"":e.relationTitle2,arrowTypeStart:D(e.relation.type1),arrowTypeEnd:D(e.relation.type2),style:"fill:none",labelStyle:"",curve:E(y==null?void 0:y.curve,_)};if(d.info(o,e),e.style!==void 0){const r=G(e.style);o.style=r.style,o.labelStyle=r.labelStyle}e.text=e.title,e.text===void 0?e.style!==void 0&&(o.arrowheadStyle="fill: #333"):(o.arrowheadStyle="fill: #333",o.labelpos="c",((i=c().flowchart)==null?void 0:i.htmlLabels)??c().htmlLabels?(o.labelType="html",o.label=''+e.text+""):(o.labelType="text",o.label=e.text.replace(C.lineBreakRegex,` +`),e.style===void 0&&(o.style=o.style||"stroke: #333; stroke-width: 1.5px;fill:none"),o.labelStyle=o.labelStyle.replace("color:","fill:"))),t.setEdge(e.id1,e.id2,o,n)})},V=function(s){k={...k,...s}},W=async function(s,t,y,n){d.info("Drawing class - ",t);const e=c().flowchart??c().class,i=c().securityLevel;d.info("config:",e);const o=(e==null?void 0:e.nodeSpacing)??50,r=(e==null?void 0:e.rankSpacing)??50,l=new z({multigraph:!0,compound:!0}).setGraph({rankdir:n.db.getDirection(),nodesep:o,ranksep:r,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),a=n.db.getNamespaces(),p=n.db.getClasses(),f=n.db.getRelations(),m=n.db.getNotes();d.info(f),q(a,l,t,n),A(p,l,t,n),H(f,l),F(m,l,f.length+1,p);let b;i==="sandbox"&&(b=w("#i"+t));const h=i==="sandbox"?w(b.nodes()[0].contentDocument.body):w("body"),u=h.select(`[id="${t}"]`),g=h.select("#"+t+" g");if(await P(g,l,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",t),R.insertTitle(u,"classTitleText",(e==null?void 0:e.titleTopMargin)??5,n.db.getDiagramTitle()),B(l,u,e==null?void 0:e.diagramPadding,e==null?void 0:e.useMaxWidth),!(e!=null&&e.htmlLabels)){const T=i==="sandbox"?b.nodes()[0].contentDocument:document,I=T.querySelectorAll('[id="'+t+'"] .edgeLabel .label');for(const x of I){const L=x.getBBox(),v=T.createElementNS("http://www.w3.org/2000/svg","rect");v.setAttribute("rx",0),v.setAttribute("ry",0),v.setAttribute("width",L.width),v.setAttribute("height",L.height),x.insertBefore(v,x.firstChild)}}};function D(s){let t;switch(s){case 0:t="aggregation";break;case 1:t="extension";break;case 2:t="composition";break;case 3:t="dependency";break;case 4:t="lollipop";break;default:t="none"}return t}const J={setConf:V,draw:W},oe={parser:M,db:N,renderer:J,styles:$,init:s=>{s.class||(s.class={}),s.class.arrowMarkerAbsolute=s.arrowMarkerAbsolute,N.clear()}};export{oe as diagram}; diff --git a/assets/createText-aebacdfe-sWKH4swq.js b/assets/createText-aebacdfe-sWKH4swq.js new file mode 100644 index 00000000..476d78a6 --- /dev/null +++ b/assets/createText-aebacdfe-sWKH4swq.js @@ -0,0 +1,7 @@ +import{l as At,an as zt,ap as It}from"./mermaid.core-Up0YySao.js";const Tt={};function Bt(n,r){const t=r||Tt,e=typeof t.includeImageAlt=="boolean"?t.includeImageAlt:!0,u=typeof t.includeHtml=="boolean"?t.includeHtml:!0;return et(n,e,u)}function et(n,r,t){if(Lt(n)){if("value"in n)return n.type==="html"&&!t?"":n.value;if(r&&"alt"in n&&n.alt)return n.alt;if("children"in n)return Vn(n.children,r,t)}return Array.isArray(n)?Vn(n,r,t):""}function Vn(n,r,t){const e=[];let u=-1;for(;++uu?0:u+r:r=r>u?u:r,t=t>0?t:0,e.length<1e4)l=Array.from(e),l.unshift(r,t),n.splice(...l);else for(t&&n.splice(r,t);i0?(tn(n,n.length,0,r),n):r}const Wn={}.hasOwnProperty;function Ot(n){const r={};let t=-1;for(;++tl))return;const T=r.events.length;let H=T,N,V;for(;H--;)if(r.events[H][0]==="exit"&&r.events[H][1].type==="chunkFlow"){if(N){V=r.events[H][1].end;break}N=!0}for(b(e),k=T;kF;){const _=t[D];r.containerState=_[1],_[0].exit.call(r,n)}t.length=F}function j(){u.write([null]),i=void 0,u=void 0,r.containerState._closeFlow=void 0}}function Ut(n,r,t){return O(n,n.attempt(this.parser.constructs.document,r,t),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Un(n){if(n===null||Z(n)||Ht(n))return 1;if(qt(n))return 2}function Ln(n,r,t){const e=[];let u=-1;for(;++u1&&n[t][1].end.offset-n[t][1].start.offset>1?2:1;const f=Object.assign({},n[e][1].end),x=Object.assign({},n[t][1].start);$n(f,-m),$n(x,m),l={type:m>1?"strongSequence":"emphasisSequence",start:f,end:Object.assign({},n[e][1].end)},a={type:m>1?"strongSequence":"emphasisSequence",start:Object.assign({},n[t][1].start),end:x},i={type:m>1?"strongText":"emphasisText",start:Object.assign({},n[e][1].end),end:Object.assign({},n[t][1].start)},u={type:m>1?"strong":"emphasis",start:Object.assign({},l.start),end:Object.assign({},a.end)},n[e][1].end=Object.assign({},l.start),n[t][1].start=Object.assign({},a.end),c=[],n[e][1].end.offset-n[e][1].start.offset&&(c=Y(c,[["enter",n[e][1],r],["exit",n[e][1],r]])),c=Y(c,[["enter",u,r],["enter",l,r],["exit",l,r],["enter",i,r]]),c=Y(c,Ln(r.parser.constructs.insideSpan.null,n.slice(e+1,t),r)),c=Y(c,[["exit",i,r],["enter",a,r],["exit",a,r],["exit",u,r]]),n[t][1].end.offset-n[t][1].start.offset?(p=2,c=Y(c,[["enter",n[t][1],r],["exit",n[t][1],r]])):p=0,tn(n,e-1,t-e+3,c),t=e+c.length-p-2;break}}for(t=-1;++t0&&z(k)?O(n,j,"linePrefix",i+1)(k):j(k)}function j(k){return k===null||C(k)?n.check(Yn,I,D)(k):(n.enter("codeFlowValue"),F(k))}function F(k){return k===null||C(k)?(n.exit("codeFlowValue"),j(k)):(n.consume(k),F)}function D(k){return n.exit("codeFenced"),r(k)}function _(k,T,H){let N=0;return V;function V(w){return k.enter("lineEnding"),k.consume(w),k.exit("lineEnding"),y}function y(w){return k.enter("codeFencedFence"),z(w)?O(k,S,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):S(w)}function S(w){return w===a?(k.enter("codeFencedFenceSequence"),P(w)):H(w)}function P(w){return w===a?(N++,k.consume(w),P):N>=l?(k.exit("codeFencedFenceSequence"),z(w)?O(k,R,"whitespace")(w):R(w)):H(w)}function R(w){return w===null||C(w)?(k.exit("codeFencedFence"),T(w)):H(w)}}}function re(n,r,t){const e=this;return u;function u(l){return l===null?t(l):(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),i)}function i(l){return e.parser.lazy[e.now().line]?t(l):r(l)}}const Cn={name:"codeIndented",tokenize:ue},ie={tokenize:le,partial:!0};function ue(n,r,t){const e=this;return u;function u(c){return n.enter("codeIndented"),O(n,i,"linePrefix",5)(c)}function i(c){const p=e.events[e.events.length-1];return p&&p[1].type==="linePrefix"&&p[2].sliceSerialize(p[1],!0).length>=4?l(c):t(c)}function l(c){return c===null?m(c):C(c)?n.attempt(ie,l,m)(c):(n.enter("codeFlowValue"),a(c))}function a(c){return c===null||C(c)?(n.exit("codeFlowValue"),l(c)):(n.consume(c),a)}function m(c){return n.exit("codeIndented"),r(c)}}function le(n,r,t){const e=this;return u;function u(l){return e.parser.lazy[e.now().line]?t(l):C(l)?(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),u):O(n,i,"linePrefix",5)(l)}function i(l){const a=e.events[e.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?r(l):C(l)?u(l):t(l)}}const ae={name:"codeText",tokenize:ce,resolve:oe,previous:se};function oe(n){let r=n.length-4,t=3,e,u;if((n[t][1].type==="lineEnding"||n[t][1].type==="space")&&(n[r][1].type==="lineEnding"||n[r][1].type==="space")){for(e=t;++e=4?r(l):n.interrupt(e.parser.constructs.flow,t,r)(l)}}function at(n,r,t,e,u,i,l,a,m){const c=m||Number.POSITIVE_INFINITY;let p=0;return f;function f(b){return b===60?(n.enter(e),n.enter(u),n.enter(i),n.consume(b),n.exit(i),x):b===null||b===32||b===41||An(b)?t(b):(n.enter(e),n.enter(l),n.enter(a),n.enter("chunkString",{contentType:"string"}),I(b))}function x(b){return b===62?(n.enter(i),n.consume(b),n.exit(i),n.exit(u),n.exit(e),r):(n.enter(a),n.enter("chunkString",{contentType:"string"}),h(b))}function h(b){return b===62?(n.exit("chunkString"),n.exit(a),x(b)):b===null||b===60||C(b)?t(b):(n.consume(b),b===92?A:h)}function A(b){return b===60||b===62||b===92?(n.consume(b),h):h(b)}function I(b){return!p&&(b===null||b===41||Z(b))?(n.exit("chunkString"),n.exit(a),n.exit(l),n.exit(e),r(b)):p999||h===null||h===91||h===93&&!m||h===94&&!a&&"_hiddenFootnoteSupport"in l.parser.constructs?t(h):h===93?(n.exit(i),n.enter(u),n.consume(h),n.exit(u),n.exit(e),r):C(h)?(n.enter("lineEnding"),n.consume(h),n.exit("lineEnding"),p):(n.enter("chunkString",{contentType:"string"}),f(h))}function f(h){return h===null||h===91||h===93||C(h)||a++>999?(n.exit("chunkString"),p(h)):(n.consume(h),m||(m=!z(h)),h===92?x:f)}function x(h){return h===91||h===92||h===93?(n.consume(h),a++,f):f(h)}}function st(n,r,t,e,u,i){let l;return a;function a(x){return x===34||x===39||x===40?(n.enter(e),n.enter(u),n.consume(x),n.exit(u),l=x===40?41:x,m):t(x)}function m(x){return x===l?(n.enter(u),n.consume(x),n.exit(u),n.exit(e),r):(n.enter(i),c(x))}function c(x){return x===l?(n.exit(i),m(l)):x===null?t(x):C(x)?(n.enter("lineEnding"),n.consume(x),n.exit("lineEnding"),O(n,c,"linePrefix")):(n.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===l||x===null||C(x)?(n.exit("chunkString"),c(x)):(n.consume(x),x===92?f:p)}function f(x){return x===l||x===92?(n.consume(x),p):p(x)}}function dn(n,r){let t;return e;function e(u){return C(u)?(n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),t=!0,e):z(u)?O(n,e,t?"linePrefix":"lineSuffix")(u):r(u)}}function xn(n){return n.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ke={name:"definition",tokenize:be},de={tokenize:ye,partial:!0};function be(n,r,t){const e=this;let u;return i;function i(h){return n.enter("definition"),l(h)}function l(h){return ot.call(e,n,a,t,"definitionLabel","definitionLabelMarker","definitionLabelString")(h)}function a(h){return u=xn(e.sliceSerialize(e.events[e.events.length-1][1]).slice(1,-1)),h===58?(n.enter("definitionMarker"),n.consume(h),n.exit("definitionMarker"),m):t(h)}function m(h){return Z(h)?dn(n,c)(h):c(h)}function c(h){return at(n,p,t,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(h)}function p(h){return n.attempt(de,f,f)(h)}function f(h){return z(h)?O(n,x,"whitespace")(h):x(h)}function x(h){return h===null||C(h)?(n.exit("definition"),e.parser.defined.push(u),r(h)):t(h)}}function ye(n,r,t){return e;function e(a){return Z(a)?dn(n,u)(a):t(a)}function u(a){return st(n,i,t,"definitionTitle","definitionTitleMarker","definitionTitleString")(a)}function i(a){return z(a)?O(n,l,"whitespace")(a):l(a)}function l(a){return a===null||C(a)?r(a):t(a)}}const Se={name:"hardBreakEscape",tokenize:Fe};function Fe(n,r,t){return e;function e(i){return n.enter("hardBreakEscape"),n.consume(i),u}function u(i){return C(i)?(n.exit("hardBreakEscape"),r(i)):t(i)}}const Ee={name:"headingAtx",tokenize:we,resolve:Ce};function Ce(n,r){let t=n.length-2,e=3,u,i;return n[e][1].type==="whitespace"&&(e+=2),t-2>e&&n[t][1].type==="whitespace"&&(t-=2),n[t][1].type==="atxHeadingSequence"&&(e===t-1||t-4>e&&n[t-2][1].type==="whitespace")&&(t-=e+1===t?2:4),t>e&&(u={type:"atxHeadingText",start:n[e][1].start,end:n[t][1].end},i={type:"chunkText",start:n[e][1].start,end:n[t][1].end,contentType:"text"},tn(n,e,t-e+1,[["enter",u,r],["enter",i,r],["exit",i,r],["exit",u,r]])),n}function we(n,r,t){let e=0;return u;function u(p){return n.enter("atxHeading"),i(p)}function i(p){return n.enter("atxHeadingSequence"),l(p)}function l(p){return p===35&&e++<6?(n.consume(p),l):p===null||Z(p)?(n.exit("atxHeadingSequence"),a(p)):t(p)}function a(p){return p===35?(n.enter("atxHeadingSequence"),m(p)):p===null||C(p)?(n.exit("atxHeading"),r(p)):z(p)?O(n,a,"whitespace")(p):(n.enter("atxHeadingText"),c(p))}function m(p){return p===35?(n.consume(p),m):(n.exit("atxHeadingSequence"),a(p))}function c(p){return p===null||p===35||Z(p)?(n.exit("atxHeadingText"),a(p)):(n.consume(p),c)}}const Ae=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],Jn=["pre","script","style","textarea"],ze={name:"htmlFlow",tokenize:Le,resolveTo:Be,concrete:!0},Ie={tokenize:De,partial:!0},Te={tokenize:Oe,partial:!0};function Be(n){let r=n.length;for(;r--&&!(n[r][0]==="enter"&&n[r][1].type==="htmlFlow"););return r>1&&n[r-2][1].type==="linePrefix"&&(n[r][1].start=n[r-2][1].start,n[r+1][1].start=n[r-2][1].start,n.splice(r-2,2)),n}function Le(n,r,t){const e=this;let u,i,l,a,m;return c;function c(s){return p(s)}function p(s){return n.enter("htmlFlow"),n.enter("htmlFlowData"),n.consume(s),f}function f(s){return s===33?(n.consume(s),x):s===47?(n.consume(s),i=!0,I):s===63?(n.consume(s),u=3,e.interrupt?r:o):nn(s)?(n.consume(s),l=String.fromCharCode(s),M):t(s)}function x(s){return s===45?(n.consume(s),u=2,h):s===91?(n.consume(s),u=5,a=0,A):nn(s)?(n.consume(s),u=4,e.interrupt?r:o):t(s)}function h(s){return s===45?(n.consume(s),e.interrupt?r:o):t(s)}function A(s){const K="CDATA[";return s===K.charCodeAt(a++)?(n.consume(s),a===K.length?e.interrupt?r:S:A):t(s)}function I(s){return nn(s)?(n.consume(s),l=String.fromCharCode(s),M):t(s)}function M(s){if(s===null||s===47||s===62||Z(s)){const K=s===47,hn=l.toLowerCase();return!K&&!i&&Jn.includes(hn)?(u=1,e.interrupt?r(s):S(s)):Ae.includes(l.toLowerCase())?(u=6,K?(n.consume(s),b):e.interrupt?r(s):S(s)):(u=7,e.interrupt&&!e.parser.lazy[e.now().line]?t(s):i?j(s):F(s))}return s===45||v(s)?(n.consume(s),l+=String.fromCharCode(s),M):t(s)}function b(s){return s===62?(n.consume(s),e.interrupt?r:S):t(s)}function j(s){return z(s)?(n.consume(s),j):V(s)}function F(s){return s===47?(n.consume(s),V):s===58||s===95||nn(s)?(n.consume(s),D):z(s)?(n.consume(s),F):V(s)}function D(s){return s===45||s===46||s===58||s===95||v(s)?(n.consume(s),D):_(s)}function _(s){return s===61?(n.consume(s),k):z(s)?(n.consume(s),_):F(s)}function k(s){return s===null||s===60||s===61||s===62||s===96?t(s):s===34||s===39?(n.consume(s),m=s,T):z(s)?(n.consume(s),k):H(s)}function T(s){return s===m?(n.consume(s),m=null,N):s===null||C(s)?t(s):(n.consume(s),T)}function H(s){return s===null||s===34||s===39||s===47||s===60||s===61||s===62||s===96||Z(s)?_(s):(n.consume(s),H)}function N(s){return s===47||s===62||z(s)?F(s):t(s)}function V(s){return s===62?(n.consume(s),y):t(s)}function y(s){return s===null||C(s)?S(s):z(s)?(n.consume(s),y):t(s)}function S(s){return s===45&&u===2?(n.consume(s),U):s===60&&u===1?(n.consume(s),W):s===62&&u===4?(n.consume(s),J):s===63&&u===3?(n.consume(s),o):s===93&&u===5?(n.consume(s),en):C(s)&&(u===6||u===7)?(n.exit("htmlFlowData"),n.check(Ie,rn,P)(s)):s===null||C(s)?(n.exit("htmlFlowData"),P(s)):(n.consume(s),S)}function P(s){return n.check(Te,R,rn)(s)}function R(s){return n.enter("lineEnding"),n.consume(s),n.exit("lineEnding"),w}function w(s){return s===null||C(s)?P(s):(n.enter("htmlFlowData"),S(s))}function U(s){return s===45?(n.consume(s),o):S(s)}function W(s){return s===47?(n.consume(s),l="",G):S(s)}function G(s){if(s===62){const K=l.toLowerCase();return Jn.includes(K)?(n.consume(s),J):S(s)}return nn(s)&&l.length<8?(n.consume(s),l+=String.fromCharCode(s),G):S(s)}function en(s){return s===93?(n.consume(s),o):S(s)}function o(s){return s===62?(n.consume(s),J):s===45&&u===2?(n.consume(s),o):S(s)}function J(s){return s===null||C(s)?(n.exit("htmlFlowData"),rn(s)):(n.consume(s),J)}function rn(s){return n.exit("htmlFlow"),r(s)}}function Oe(n,r,t){const e=this;return u;function u(l){return C(l)?(n.enter("lineEnding"),n.consume(l),n.exit("lineEnding"),i):t(l)}function i(l){return e.parser.lazy[e.now().line]?t(l):r(l)}}function De(n,r,t){return e;function e(u){return n.enter("lineEnding"),n.consume(u),n.exit("lineEnding"),n.attempt(Sn,r,t)}}const Pe={name:"htmlText",tokenize:_e};function _e(n,r,t){const e=this;let u,i,l;return a;function a(o){return n.enter("htmlText"),n.enter("htmlTextData"),n.consume(o),m}function m(o){return o===33?(n.consume(o),c):o===47?(n.consume(o),_):o===63?(n.consume(o),F):nn(o)?(n.consume(o),H):t(o)}function c(o){return o===45?(n.consume(o),p):o===91?(n.consume(o),i=0,A):nn(o)?(n.consume(o),j):t(o)}function p(o){return o===45?(n.consume(o),h):t(o)}function f(o){return o===null?t(o):o===45?(n.consume(o),x):C(o)?(l=f,W(o)):(n.consume(o),f)}function x(o){return o===45?(n.consume(o),h):f(o)}function h(o){return o===62?U(o):o===45?x(o):f(o)}function A(o){const J="CDATA[";return o===J.charCodeAt(i++)?(n.consume(o),i===J.length?I:A):t(o)}function I(o){return o===null?t(o):o===93?(n.consume(o),M):C(o)?(l=I,W(o)):(n.consume(o),I)}function M(o){return o===93?(n.consume(o),b):I(o)}function b(o){return o===62?U(o):o===93?(n.consume(o),b):I(o)}function j(o){return o===null||o===62?U(o):C(o)?(l=j,W(o)):(n.consume(o),j)}function F(o){return o===null?t(o):o===63?(n.consume(o),D):C(o)?(l=F,W(o)):(n.consume(o),F)}function D(o){return o===62?U(o):F(o)}function _(o){return nn(o)?(n.consume(o),k):t(o)}function k(o){return o===45||v(o)?(n.consume(o),k):T(o)}function T(o){return C(o)?(l=T,W(o)):z(o)?(n.consume(o),T):U(o)}function H(o){return o===45||v(o)?(n.consume(o),H):o===47||o===62||Z(o)?N(o):t(o)}function N(o){return o===47?(n.consume(o),U):o===58||o===95||nn(o)?(n.consume(o),V):C(o)?(l=N,W(o)):z(o)?(n.consume(o),N):U(o)}function V(o){return o===45||o===46||o===58||o===95||v(o)?(n.consume(o),V):y(o)}function y(o){return o===61?(n.consume(o),S):C(o)?(l=y,W(o)):z(o)?(n.consume(o),y):N(o)}function S(o){return o===null||o===60||o===61||o===62||o===96?t(o):o===34||o===39?(n.consume(o),u=o,P):C(o)?(l=S,W(o)):z(o)?(n.consume(o),S):(n.consume(o),R)}function P(o){return o===u?(n.consume(o),u=void 0,w):o===null?t(o):C(o)?(l=P,W(o)):(n.consume(o),P)}function R(o){return o===null||o===34||o===39||o===60||o===61||o===96?t(o):o===47||o===62||Z(o)?N(o):(n.consume(o),R)}function w(o){return o===47||o===62||Z(o)?N(o):t(o)}function U(o){return o===62?(n.consume(o),n.exit("htmlTextData"),n.exit("htmlText"),r):t(o)}function W(o){return n.exit("htmlTextData"),n.enter("lineEnding"),n.consume(o),n.exit("lineEnding"),G}function G(o){return z(o)?O(n,en,"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o):en(o)}function en(o){return n.enter("htmlTextData"),l(o)}}const Dn={name:"labelEnd",tokenize:Ne,resolveTo:He,resolveAll:qe},Me={tokenize:Ve},je={tokenize:We},Re={tokenize:Qe};function qe(n){let r=-1;for(;++r=3&&(c===null||C(c))?(n.exit("thematicBreak"),r(c)):t(c)}function m(c){return c===u?(n.consume(c),e++,m):(n.exit("thematicBreakSequence"),z(c)?O(n,a,"whitespace")(c):a(c))}}const $={name:"list",tokenize:ve,continuation:{tokenize:nr},exit:er},Ke={tokenize:rr,partial:!0},Xe={tokenize:tr,partial:!0};function ve(n,r,t){const e=this,u=e.events[e.events.length-1];let i=u&&u[1].type==="linePrefix"?u[2].sliceSerialize(u[1],!0).length:0,l=0;return a;function a(h){const A=e.containerState.type||(h===42||h===43||h===45?"listUnordered":"listOrdered");if(A==="listUnordered"?!e.containerState.marker||h===e.containerState.marker:zn(h)){if(e.containerState.type||(e.containerState.type=A,n.enter(A,{_container:!0})),A==="listUnordered")return n.enter("listItemPrefix"),h===42||h===45?n.check(bn,t,c)(h):c(h);if(!e.interrupt||h===49)return n.enter("listItemPrefix"),n.enter("listItemValue"),m(h)}return t(h)}function m(h){return zn(h)&&++l<10?(n.consume(h),m):(!e.interrupt||l<2)&&(e.containerState.marker?h===e.containerState.marker:h===41||h===46)?(n.exit("listItemValue"),c(h)):t(h)}function c(h){return n.enter("listItemMarker"),n.consume(h),n.exit("listItemMarker"),e.containerState.marker=e.containerState.marker||h,n.check(Sn,e.interrupt?t:p,n.attempt(Ke,x,f))}function p(h){return e.containerState.initialBlankLine=!0,i++,x(h)}function f(h){return z(h)?(n.enter("listItemPrefixWhitespace"),n.consume(h),n.exit("listItemPrefixWhitespace"),x):t(h)}function x(h){return e.containerState.size=i+e.sliceSerialize(n.exit("listItemPrefix"),!0).length,r(h)}}function nr(n,r,t){const e=this;return e.containerState._closeFlow=void 0,n.check(Sn,u,i);function u(a){return e.containerState.furtherBlankLines=e.containerState.furtherBlankLines||e.containerState.initialBlankLine,O(n,r,"listItemIndent",e.containerState.size+1)(a)}function i(a){return e.containerState.furtherBlankLines||!z(a)?(e.containerState.furtherBlankLines=void 0,e.containerState.initialBlankLine=void 0,l(a)):(e.containerState.furtherBlankLines=void 0,e.containerState.initialBlankLine=void 0,n.attempt(Xe,r,l)(a))}function l(a){return e.containerState._closeFlow=!0,e.interrupt=void 0,O(n,n.attempt($,r,t),"linePrefix",e.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a)}}function tr(n,r,t){const e=this;return O(n,u,"listItemIndent",e.containerState.size+1);function u(i){const l=e.events[e.events.length-1];return l&&l[1].type==="listItemIndent"&&l[2].sliceSerialize(l[1],!0).length===e.containerState.size?r(i):t(i)}}function er(n){n.exit(this.containerState.type)}function rr(n,r,t){const e=this;return O(n,u,"listItemPrefixWhitespace",e.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function u(i){const l=e.events[e.events.length-1];return!z(i)&&l&&l[1].type==="listItemPrefixWhitespace"?r(i):t(i)}}const Kn={name:"setextUnderline",tokenize:ur,resolveTo:ir};function ir(n,r){let t=n.length,e,u,i;for(;t--;)if(n[t][0]==="enter"){if(n[t][1].type==="content"){e=t;break}n[t][1].type==="paragraph"&&(u=t)}else n[t][1].type==="content"&&n.splice(t,1),!i&&n[t][1].type==="definition"&&(i=t);const l={type:"setextHeading",start:Object.assign({},n[u][1].start),end:Object.assign({},n[n.length-1][1].end)};return n[u][1].type="setextHeadingText",i?(n.splice(u,0,["enter",l,r]),n.splice(i+1,0,["exit",n[e][1],r]),n[e][1].end=Object.assign({},n[i][1].end)):n[e][1]=l,n.push(["exit",l,r]),n}function ur(n,r,t){const e=this;let u;return i;function i(c){let p=e.events.length,f;for(;p--;)if(e.events[p][1].type!=="lineEnding"&&e.events[p][1].type!=="linePrefix"&&e.events[p][1].type!=="content"){f=e.events[p][1].type==="paragraph";break}return!e.parser.lazy[e.now().line]&&(e.interrupt||f)?(n.enter("setextHeadingLine"),u=c,l(c)):t(c)}function l(c){return n.enter("setextHeadingLineSequence"),a(c)}function a(c){return c===u?(n.consume(c),a):(n.exit("setextHeadingLineSequence"),z(c)?O(n,m,"lineSuffix")(c):m(c))}function m(c){return c===null||C(c)?(n.exit("setextHeadingLine"),r(c)):t(c)}}const lr={tokenize:ar};function ar(n){const r=this,t=n.attempt(Sn,e,n.attempt(this.parser.constructs.flowInitial,u,O(n,n.attempt(this.parser.constructs.flow,u,n.attempt(pe,u)),"linePrefix")));return t;function e(i){if(i===null){n.consume(i);return}return n.enter("lineEndingBlank"),n.consume(i),n.exit("lineEndingBlank"),r.currentConstruct=void 0,t}function u(i){if(i===null){n.consume(i);return}return n.enter("lineEnding"),n.consume(i),n.exit("lineEnding"),r.currentConstruct=void 0,t}}const or={resolveAll:ht()},sr=ct("string"),cr=ct("text");function ct(n){return{tokenize:r,resolveAll:ht(n==="text"?hr:void 0)};function r(t){const e=this,u=this.parser.constructs[n],i=t.attempt(u,l,a);return l;function l(p){return c(p)?i(p):a(p)}function a(p){if(p===null){t.consume(p);return}return t.enter("data"),t.consume(p),m}function m(p){return c(p)?(t.exit("data"),i(p)):(t.consume(p),m)}function c(p){if(p===null)return!0;const f=u[p];let x=-1;if(f)for(;++x-1){const a=l[0];typeof a=="string"?l[0]=a.slice(e):l.shift()}i>0&&l.push(n[u].slice(0,i))}return l}function mr(n,r){let t=-1;const e=[];let u;for(;++t13&&t<32||t>126&&t<160||t>55295&&t<57344||t>64975&&t<65008||(t&65535)===65535||(t&65535)===65534||t>1114111?"�":String.fromCharCode(t)}const Ir=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Tr(n){return n.replace(Ir,Br)}function Br(n,r,t){if(r)return r;if(t.charCodeAt(0)===35){const u=t.charCodeAt(1),i=u===120||u===88;return pt(t.slice(i?2:1),i?16:10)}return On(t)||n}function yn(n){return!n||typeof n!="object"?"":"position"in n||"type"in n?vn(n.position):"start"in n||"end"in n?vn(n):"line"in n||"column"in n?Tn(n):""}function Tn(n){return nt(n&&n.line)+":"+nt(n&&n.column)}function vn(n){return Tn(n&&n.start)+"-"+Tn(n&&n.end)}function nt(n){return n&&typeof n=="number"?n:1}const ft={}.hasOwnProperty,mt=function(n,r,t){return typeof r!="string"&&(t=r,r=void 0),Lr(t)(zr(wr(t).document().write(Ar()(n,r,!0))))};function Lr(n){const r={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:a(Hn),autolinkProtocol:y,autolinkEmail:y,atxHeading:a(jn),blockQuote:a(Fn),characterEscape:y,characterReference:y,codeFenced:a(Mn),codeFencedFenceInfo:m,codeFencedFenceMeta:m,codeIndented:a(Mn,m),codeText:a(kt,m),codeTextData:y,data:y,codeFlowValue:y,definition:a(dt),definitionDestinationString:m,definitionLabelString:m,definitionTitleString:m,emphasis:a(bt),hardBreakEscape:a(Rn),hardBreakTrailing:a(Rn),htmlFlow:a(qn,m),htmlFlowData:y,htmlText:a(qn,m),htmlTextData:y,image:a(yt),label:m,link:a(Hn),listItem:a(St),listItemValue:A,listOrdered:a(Nn,h),listUnordered:a(Nn),paragraph:a(Ft),reference:hn,referenceString:m,resourceDestinationString:m,resourceTitleString:m,setextHeading:a(jn),strong:a(Et),thematicBreak:a(wt)},exit:{atxHeading:p(),atxHeadingSequence:T,autolink:p(),autolinkEmail:mn,autolinkProtocol:fn,blockQuote:p(),characterEscapeValue:S,characterReferenceMarkerHexadecimal:pn,characterReferenceMarkerNumeric:pn,characterReferenceValue:an,codeFenced:p(j),codeFencedFence:b,codeFencedFenceInfo:I,codeFencedFenceMeta:M,codeFlowValue:S,codeIndented:p(F),codeText:p(W),codeTextData:S,data:S,definition:p(),definitionDestinationString:k,definitionLabelString:D,definitionTitleString:_,emphasis:p(),hardBreakEscape:p(R),hardBreakTrailing:p(R),htmlFlow:p(w),htmlFlowData:S,htmlText:p(U),htmlTextData:S,image:p(en),label:J,labelText:o,lineEnding:P,link:p(G),listItem:p(),listOrdered:p(),listUnordered:p(),paragraph:p(),referenceString:Q,resourceDestinationString:rn,resourceTitleString:s,resource:K,setextHeading:p(V),setextHeadingLineSequence:N,setextHeadingText:H,strong:p(),thematicBreak:p()}};xt(r,(n||{}).mdastExtensions||[]);const t={};return e;function e(g){let d={type:"root",children:[]};const E={stack:[d],tokenStack:[],config:r,enter:c,exit:f,buffer:m,resume:x,setData:i,getData:l},B=[];let L=-1;for(;++L0){const X=E.tokenStack[E.tokenStack.length-1];(X[1]||tt).call(E,void 0,X[0])}for(d.position={start:sn(g.length>0?g[0][1].start:{line:1,column:1,offset:0}),end:sn(g.length>0?g[g.length-2][1].end:{line:1,column:1,offset:0})},L=-1;++L{p!==0&&(u++,e.push([])),c.split(" ").forEach(f=>{f&&e[u].push({content:f,type:a})})}):(l.type==="strong"||l.type==="emphasis")&&l.children.forEach(m=>{i(m,l.type)})}return t.forEach(l=>{l.type==="paragraph"&&l.children.forEach(a=>{i(a)})}),e}function _r(n){const{children:r}=mt(n);function t(e){return e.type==="text"?e.value.replace(/\n/g,"
    "):e.type==="strong"?`${e.children.map(t).join("")}`:e.type==="emphasis"?`${e.children.map(t).join("")}`:e.type==="paragraph"?`

    ${e.children.map(t).join("")}

    `:`Unsupported markdown: ${e.type}`}return r.map(t).join("")}function Mr(n){return Intl.Segmenter?[...new Intl.Segmenter().segment(n)].map(r=>r.segment):[...n]}function jr(n,r){const t=Mr(r.content);return gt(n,[],t,r.type)}function gt(n,r,t,e){if(t.length===0)return[{content:r.join(""),type:e},{content:"",type:e}];const[u,...i]=t,l=[...r,u];return n([{content:l.join(""),type:e}])?gt(n,l,i,e):(r.length===0&&u&&(r.push(u),t.shift()),[{content:r.join(""),type:e},{content:t.join(""),type:e}])}function Rr(n,r){if(n.some(({content:t})=>t.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return Bn(n,r)}function Bn(n,r,t=[],e=[]){if(n.length===0)return e.length>0&&t.push(e),t.length>0?t:[];let u="";n[0].content===" "&&(u=" ",n.shift());const i=n.shift()??{content:" ",type:"normal"},l=[...e];if(u!==""&&l.push({content:u,type:"normal"}),l.push(i),r(l))return Bn(n,r,t,l);if(e.length>0)t.push(e),n.unshift(i);else if(i.content){const[a,m]=jr(r,i);t.push([a]),m.content&&n.unshift(m)}return Bn(n,r,t)}function qr(n,r){r&&n.attr("style",r)}function Hr(n,r,t,e,u=!1){const i=n.append("foreignObject"),l=i.append("xhtml:div"),a=r.label,m=r.isNode?"nodeLabel":"edgeLabel";l.html(` + "+a+""),qr(l,r.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("max-width",t+"px"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),u&&l.attr("class","labelBkg");let c=l.node().getBoundingClientRect();return c.width===t&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",t+"px"),c=l.node().getBoundingClientRect()),i.style("width",c.width),i.style("height",c.height),i.node()}function Pn(n,r,t){return n.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",r*t-.1+"em").attr("dy",t+"em")}function Nr(n,r,t){const e=n.append("text"),u=Pn(e,1,r);_n(u,t);const i=u.node().getComputedTextLength();return e.remove(),i}function Qr(n,r,t){var e;const u=n.append("text"),i=Pn(u,1,r);_n(i,[{content:t,type:"normal"}]);const l=(e=i.node())==null?void 0:e.getBoundingClientRect();return l&&u.remove(),l}function Vr(n,r,t,e=!1){const i=r.append("g"),l=i.insert("rect").attr("class","background"),a=i.append("text").attr("y","-10.1");let m=0;for(const c of t){const p=x=>Nr(i,1.1,x)<=n,f=p(c)?[c]:Rr(c,p);for(const x of f){const h=Pn(a,m,1.1);_n(h,x),m++}}if(e){const c=a.node().getBBox(),p=2;return l.attr("x",-p).attr("y",-p).attr("width",c.width+2*p).attr("height",c.height+2*p),i.node()}else return a.node()}function _n(n,r){n.text(""),r.forEach((t,e)=>{const u=n.append("tspan").attr("font-style",t.type==="emphasis"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",t.type==="strong"?"bold":"normal");e===0?u.text(t.content):u.text(" "+t.content)})}const Ur=(n,r="",{style:t="",isTitle:e=!1,classes:u="",useHtmlLabels:i=!0,isNode:l=!0,width:a=200,addSvgBackground:m=!1}={})=>{if(At.info("createText",r,t,e,u,i,l,m),i){const c=_r(r),p={isNode:l,label:zt(c).replace(/fa[blrs]?:fa-[\w-]+/g,x=>``),labelStyle:t.replace("fill:","color:")};return Hr(n,p,a,u,m)}else{const c=Pr(r);return Vr(a,n,c,m)}};export{Qr as a,Ur as c}; diff --git a/assets/css/publish.admonition.css b/assets/css/publish.admonition.css new file mode 100644 index 00000000..3b533c75 --- /dev/null +++ b/assets/css/publish.admonition.css @@ -0,0 +1,262 @@ +/** Constants */ +:root { + --admonition-details-icon: url("data:image/svg+xml;charset=utf-8,"); +} + +.admonition { + margin: 1.5625em 0; + padding: 0; + overflow: hidden; + color: var(--text-normal); + page-break-inside: avoid; + background-color: var(--background-secondary); + border-left: 0.2rem solid rgb(var(--admonition-color)); + border-radius: 0.1rem; + box-shadow: 0 0.2rem 0.5rem var(--background-modifier-box-shadow); +} + +.admonition-title { + position: relative; + padding: 0.6rem 0.25em; + font-weight: 700; + background-color: rgba(var(--admonition-color), 0.1); +} + +.admonition-title-content { + display: flex; + justify-content: flex-start; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.admonition-title-icon { + color: rgb(var(--admonition-color)); + display: flex; + align-items: center; + justify-content: center; + margin: 0 0.5em 0 0.25em; + min-width: 1em; + width: min-content; +} + +.admonition-title-markdown { + display: block; +} + +.admonition-title.no-title { + display: none; +} + +.admonition > .admonition-title.no-title + .admonition-content-holder { + margin-top: 1rem; + margin-bottom: 1rem; +} + +.admonition-content-holder { + position: relative; +} + +.admonition-content { + margin: 10px 15px; + position: relative; + overflow-x: auto; +} + +.admonition-content-copy { + color: var(--text-faint); + cursor: pointer; + opacity: 0; + position: absolute; + right: 0.375rem; + top: -5px; + transition: 0.3s opacity ease-in; +} + +.admonition-content-copy:hover { + color: var(--text-normal); +} + +.admonition:hover .admonition-content-copy, +.admonition-content-copy:hover { + opacity: 1; +} +.admonition-title:hover + .admonition-content .admonition-content-copy { + opacity: 0; +} + +details.admonition:not([open]) { + padding-bottom: 0; +} + +details.admonition > summary { + outline: none; + display: block !important; + list-style: none !important; + list-style-type: none !important; + min-height: 1rem; + border-top-left-radius: 0.1rem; + border-top-right-radius: 0.1rem; + cursor: pointer; +} + +details.admonition > summary::-webkit-details-marker, +details.admonition > summary::marker { + display: none !important; +} + +details.admonition > summary > .collapser { + position: absolute; + top: 50%; + right: 8px; + transform: translateY(-50%); + content: ""; +} + +details.admonition > summary > .collapser > .handle { + transform: rotate(0deg); + transition: transform 0.25s; + background-color: currentColor; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: var(--admonition-details-icon); + mask-image: var(--admonition-details-icon); + width: 20px; + height: 20px; +} + +details.admonition[open] > summary > .collapser > .handle { + transform: rotate(90deg); +} + +/** Settings */ +.admonition-setting-additional-container + > .setting-item:not(.setting-item-heading) { + border: 0px; +} + +.admonition-setting-additional-container { + border-bottom: 1px solid var(--background-modifier-border); + border-top: 1px solid var(--background-modifier-border); + padding: 18px 0 0 0; +} + +.admonition-setting-additional-container > .setting-item-heading:only-child { + padding-bottom: 18px; +} + +.admonition-setting-additional-container > .additional { + margin: 6px 12px; +} +.admonition-setting-additional-container > .additional > .setting-item { + border-top: 0; + padding-top: 9px; +} +.admonition-setting-additional-container + > .additional + > .setting-item + > .setting-item-control + > *:first-child { + margin: 0 6px; +} + +.setting-item > .admonition { + width: 50%; + margin: 0; +} + +.unset-align-items { + align-items: unset; +} + +.has-invalid-message { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + grid-template-areas: + "text image" + "inv inv"; +} + +input.is-invalid { + border-color: #dc3545 !important; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.admonition-type-setting input { + grid-column: span 2; +} + +.invalid-feedback { + display: block; + grid-area: inv; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #dc3545; +} + +.suggestion-content.admonition-icon { + display: flex; + align-items: center; + justify-content: space-between; + flex-flow: row wrap; +} + +.suggestion-content.admonition-icon > .suggestion-text.admonition-text { + width: fit-content; +} + +.suggestion-content.admonition-icon + > .suggestion-flair.admonition-suggester-icon { + width: min-content; + position: relative; + top: unset; + left: unset; + right: unset; + bottom: unset; + display: flex; + align-items: center; +} + +.suggestion-content.admonition-icon > .suggestion-note { + width: 100%; +} + +.admonition-suggester-icon svg { + width: 1em; +} + +/** Internal */ + +.admonition li.task-list-item.is-checked p { + text-decoration: line-through; +} + +.admonition-settings .coffee { + width: 60%; + color: var(--text-faint); + margin: 1rem auto; + text-align: center; +} +.admonition-settings .coffee img { + height: 30px; +} + +.admonition-file-upload { + margin-right: 0; + margin-left: 12px; +} +.admonition-file-upload > input[type="file"] { + display: none; +} + +.insert-admonition-modal button:focus, +.insert-admonition-modal .clickable-icon:focus { + box-shadow: 0px 0px 5px rgb(0 0 0 / 50%); + border-color: var(--background-modifier-border-focus); +} diff --git a/assets/dcd25a6082e1989975c280213f3e1052-tli5j0BX.png b/assets/dcd25a6082e1989975c280213f3e1052-tli5j0BX.png new file mode 100644 index 00000000..07629410 Binary files /dev/null and b/assets/dcd25a6082e1989975c280213f3e1052-tli5j0BX.png differ diff --git a/assets/document-style-guide.html-EGDv-WCd.js b/assets/document-style-guide.html-EGDv-WCd.js new file mode 100644 index 00000000..2542e8b4 --- /dev/null +++ b/assets/document-style-guide.html-EGDv-WCd.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7fdba302","path":"/code/document-style-guide.html","title":"中文技术文档的写作规范","lang":"zh-CN","frontmatter":{"title":"中文技术文档的写作规范","date":"2022-07-30T19:28:51.000Z","updated":"2022-07-30T20:06:10.000Z","description":"中文技术文档的写作规范 中文技术文档的写作规范,转自 ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)。 当前版本:b7723b8","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/document-style-guide.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"中文技术文档的写作规范"}],["meta",{"property":"og:description","content":"中文技术文档的写作规范 中文技术文档的写作规范,转自 ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)。 当前版本:b7723b8"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-07-30T19:28:51.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"中文技术文档的写作规范\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-07-30T19:28:51.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]},{"level":2,"title":"标题","slug":"标题","link":"#标题","children":[{"level":3,"title":"层级","slug":"层级","link":"#层级","children":[]},{"level":3,"title":"原则","slug":"原则","link":"#原则","children":[]}]},{"level":2,"title":"文本","slug":"文本","link":"#文本","children":[{"level":3,"title":"字间距","slug":"字间距","link":"#字间距","children":[]},{"level":3,"title":"句子","slug":"句子","link":"#句子","children":[]},{"level":3,"title":"写作风格","slug":"写作风格","link":"#写作风格","children":[]},{"level":3,"title":"英文处理","slug":"英文处理","link":"#英文处理","children":[]}]},{"level":2,"title":"段落","slug":"段落","link":"#段落","children":[{"level":3,"title":"原则","slug":"原则-1","link":"#原则-1","children":[]},{"level":3,"title":"引用","slug":"引用","link":"#引用","children":[]}]},{"level":2,"title":"数值","slug":"数值","link":"#数值","children":[{"level":3,"title":"半角数字","slug":"半角数字","link":"#半角数字","children":[]},{"level":3,"title":"千分号","slug":"千分号","link":"#千分号","children":[]},{"level":3,"title":"货币","slug":"货币","link":"#货币","children":[]},{"level":3,"title":"数值范围","slug":"数值范围","link":"#数值范围","children":[]},{"level":3,"title":"变化程度的表示法","slug":"变化程度的表示法","link":"#变化程度的表示法","children":[]}]},{"level":2,"title":"标点符号","slug":"标点符号","link":"#标点符号","children":[{"level":3,"title":"原则","slug":"原则-2","link":"#原则-2","children":[]},{"level":3,"title":"句号","slug":"句号","link":"#句号","children":[]},{"level":3,"title":"逗号","slug":"逗号","link":"#逗号","children":[]},{"level":3,"title":"顿号","slug":"顿号","link":"#顿号","children":[]},{"level":3,"title":"分号","slug":"分号","link":"#分号","children":[]},{"level":3,"title":"引号","slug":"引号","link":"#引号","children":[]},{"level":3,"title":"括号","slug":"括号","link":"#括号","children":[]},{"level":3,"title":"冒号","slug":"冒号","link":"#冒号","children":[]},{"level":3,"title":"省略号","slug":"省略号","link":"#省略号","children":[]},{"level":3,"title":"感叹号","slug":"感叹号","link":"#感叹号","children":[]},{"level":3,"title":"破折号","slug":"破折号","link":"#破折号","children":[]},{"level":3,"title":"连接号","slug":"连接号","link":"#连接号","children":[]}]},{"level":2,"title":"文档体系","slug":"文档体系","link":"#文档体系","children":[{"level":3,"title":"结构","slug":"结构","link":"#结构","children":[]},{"level":3,"title":"文件名","slug":"文件名","link":"#文件名","children":[]}]},{"level":2,"title":"参考链接","slug":"参考链接","link":"#参考链接","children":[]},{"level":2,"title":"License","slug":"license","link":"#license","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":14.74,"words":4423},"filePathRelative":"code/document-style-guide.md","localizedDate":"2022年7月31日","excerpt":"

    中文技术文档的写作规范

    \\n

    中文技术文档的写作规范,转自 ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)

    \\n

    当前版本:b7723b8

    ","autoDesc":true}');export{e as data}; diff --git a/assets/document-style-guide.html-bBx7fYPO.js b/assets/document-style-guide.html-bBx7fYPO.js new file mode 100644 index 00000000..cd90e791 --- /dev/null +++ b/assets/document-style-guide.html-bBx7fYPO.js @@ -0,0 +1,162 @@ +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as t,c as r,a as e,b as n,e as i,d}from"./app-Mf7X6hWu.js";const c={},o=e("h1",{id:"中文技术文档的写作规范",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#中文技术文档的写作规范","aria-hidden":"true"},"#"),n(" 中文技术文档的写作规范")],-1),u={href:"https://github.com/ruanyf/document-style-guide",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/ruanyf/document-style-guide/tree/b7723b845f01b402a1a453224df33156a64e6c99",target:"_blank",rel:"noopener noreferrer"},p=d(`

    目录

    1. 标题
    2. 文本
    3. 段落
    4. 数值
    5. 标点符号
    6. 文档体系
    7. 参考链接

    标题

    层级

    标题分为四级。

    • 一级标题:文章的标题
    • 二级标题:文章主要部分的大标题
    • 三级标题:二级标题下面一级的小标题
    • 四级标题:三级标题下面某一方面的小标题

    下面是示例。

    # 一级标题
    +
    +## 二级标题
    +
    +### 三级标题
    +
    +#### 四级标题
    +

    原则

    (1)一级标题下,不能直接出现三级标题。

    示例:下面的文章结构,缺少二级标题。

    # 一级标题
    +
    +### 三级标题
    +

    (2)标题要避免孤立编号(即同级标题只有一个)。

    示例:下面的文章结构,二级标题 A 只包含一个三级标题,完全可以省略 三级标题 A

    ## 二级标题 A
    +
    +### 三级标题 A
    +
    +## 二级标题 B
    +

    (3)下级标题不重复上一级标题的名字。

    示例:下面的文章结构,二级标题与下属的三级标题同名,建议避免。

    ## 概述
    +
    +### 概述
    +

    (4)谨慎使用四级标题,尽量避免出现,保持层级的简单,防止出现过于复杂的章节。

    如果三级标题下有并列性的内容,建议只使用项目列表(Item list)。

    示例:下面的结构二要好于结构一。结构一适用的场景,主要是较长篇幅的内容。

    结构一
    +
    +### 三级标题
    +
    +#### 四级标题 A
    +
    +#### 四级标题 B
    +
    +#### 四级标题 C
    +
    +结构二
    +
    +### 三级标题
    +
    +**(1)A**
    +
    +**(2)B**
    +
    +**(3)C**
    +

    文本

    字间距

    (1)全角中文字符与半角英文字符之间,应有一个半角空格。

    错误:本文介绍如何快速启动Windows系统。
    +
    +正确:本文介绍如何快速启动 Windows 系统。
    +

    (2)全角中文字符与半角阿拉伯数字之间,有没有半角空格都可,但必须保证风格统一,不能两种风格混杂。

    正确:2011年5月15日,我订购了5台笔记本电脑与10台平板电脑。
    +
    +正确:2011 年 5 月 15 日,我订购了 5 台笔记本电脑与 10 台平板电脑。
    +

    半角的百分号,视同阿拉伯数字。

    正确:今年我国经济增长率是6.5%。
    +
    +正确:今年我国经济增长率是 6.5%。
    +

    (3)英文单位若不翻译,单位前的阿拉伯数字与单位符号之间,应留出适当的空隙。

    例1:一部容量为 16 GB 的智能手机
    +
    +例2:1 h = 60 min = 3,600 s
    +

    (4)半角英文字符和半角阿拉伯数字,与全角标点符号之间不留空格。

    错误:他的电脑是 MacBook Air 。
    +
    +正确:他的电脑是 MacBook Air。
    +

    句子

    (1)避免使用长句。

    不包含任何标点符号的单个句子,或者以逗号分隔的句子构件,长度尽量保持在 20 个字以内;20~29 个字的句子,可以接受;30~39 个字的句子,语义必须明确,才能接受;多于 40 个字的句子,任何情况下都不能接受。

    错误:本产品适用于从由一台服务器进行动作控制的单一节点结构到由多台服务器进行动作控制的并行处理程序结构等多种体系结构。
    +
    +正确:本产品适用于多种体系结构。无论是由一台服务器(单一节点结构),还是由多台服务器(并行处理结构)进行动作控制,均可以使用本产品。
    +

    逗号分割的长句,总长度不应该超过 100 字或者正文的 3 行。

    (2)尽量使用简单句和并列句,避免使用复合句。

    并列句:他昨天生病了,没有参加会议。
    +
    +复合句:那个昨天生病的人没有参加会议。
    +

    (3)同样一个意思,尽量使用肯定句表达,不使用否定句表达。

    错误:请确认没有接通装置的电源。
    +
    +正确:请确认装置的电源已关闭。
    +

    (4)避免使用双重否定句。

    错误:没有删除权限的用户,不能删除此文件。
    +
    +正确:用户必须拥有删除权限,才能删除此文件。
    +

    写作风格

    (1)尽量不使用被动语态,改为使用主动语态。

    错误:假如此软件尚未被安装,
    +
    +正确:假如尚未安装这个软件,
    +

    (2)不使用非正式的语言风格。

    错误:Lady Gaga 的演唱会真是酷毙了,从没看过这么给力的表演!!!
    +
    +正确:无法参加本次活动,我深感遗憾。
    +

    (3)不使用冷僻、生造或者文言文的词语,而要使用现代汉语的常用表达方式。

    错误:这是唯二的快速启动的方法。
    +
    +正确:这是仅有的两种快速启动的方法。
    +

    (4)用对“的”、“地”、“得”。

    她露出了开心的笑容。
    +(形容词+的+名词)
    +
    +她开心地笑了。
    +(副词+地+动词)
    +
    +她笑得很开心。
    +(动词+得+副词)
    +

    (5)使用代词时(比如“其”、“该”、“此”、“这”等词),必须明确指代的内容,保证只有一个含义。

    错误:从管理系统可以监视中继系统和受其直接控制的分配系统。
    +
    +正确:从管理系统可以监视两个系统:中继系统和受中继系统直接控制的分配系统。
    +

    (6)名词前不要使用过多的形容词。

    错误:此设备的使用必须在接受过本公司举办的正式的设备培训的技师的指导下进行。
    +
    +正确:此设备必须在技师的指导下使用,且指导技师必须接受过由本公司举办的正式设备培训。
    +

    英文处理

    (1)英文原文如果使用了复数形式,翻译成中文时,应该将其还原为单数形式。

    英文:...information stored in random access memory (RAMs)...
    +
    +中文:⋯⋯存储在随机存取存储器(RAM)里的信息⋯⋯
    +

    (2)外文缩写可以使用半角圆点 (.) 表示缩写。

    U.S.A.
    +Apple, Inc.
    +

    (3)表示中文时,英文省略号(...)应改为中文省略号(⋯⋯)。

    英文:5 minutes later...
    +
    +中文:5 分钟过去了⋯⋯
    +

    (4)英文书名或电影名改用中文表达时,双引号应改为书名号。

    英文:He published an article entitled "The Future of the Aviation".
    +
    +中文:他发表了一篇名为《航空业的未来》的文章。
    +

    (5)第一次出现英文词汇时,在括号中给出中文标注。此后再次出现时,直接使用英文缩写即可。

    IOC(International Olympic Committee,国际奥林匹克委员会)。这样定义后,便可以直接使用“IOC”了。
    +

    (6)专有名词中每个词第一个字母均应大写,非专有名词则不需要大写。

    “American Association of Physicists in Medicine”(美国医学物理学家协会)是专有名词,需要大写。
    +
    +“online transaction processing”(在线事务处理)不是专有名词,不应大写。
    +

    段落

    原则

    • 一个段落只能有一个主题,或一个中心句子。
    • 段落的中心句子放在段首,对全段内容进行概述。后面陈述的句子为核心句服务。
    • 一个段落的长度不能超过七行,最佳段落长度小于等于四行。
    • 段落的句子语气要使用陈述和肯定语气,避免使用感叹语气。
    • 段落之间使用一个空行隔开。
    • 段落开头不要留出空白字符。

    引用

    引用第三方内容时,应注明出处。

    One man’s constant is another man’s variable. — Alan Perlis
    +

    如果是全篇转载,请在全文开头显著位置注明作者和出处,并链接至原文。

    本文转载自 WikiQuote
    +

    使用外部图片时,必须在图片下方或文末标明来源。

    本文部分图片来自 Wikipedia
    +

    数值

    半角数字

    阿拉伯数字一律使用半角形式,不得使用全角形式。

    错误:这件商品的价格是1000元。
    +
    +正确:这件商品的价格是 1000 元。
    +

    千分号

    数值为千位以上,应添加千分号(半角逗号)。

    XXX 公司的实收资本为 ¥1,258,000 人民币。
    +

    对于 4 位的数值,千分号是选用的,比如 10001,000 都可以接受。对于 4 位以上的数值,应添加千分号。

    货币

    货币应为阿拉伯数字,并在数字前写出货币符号,或在数字后写出货币中文名称。

    $1,000
    +1,000 美元
    +
    `,92),m={href:"https://en.wikipedia.org/wiki/ISO_4217",target:"_blank",rel:"noopener noreferrer"},h=d(`

    数值范围

    表示数值范围时,用波浪线()或一字线()连接。参见《标点符号》一节的“连接号”部分。

    带有单位或百分号时,两个数字建议都要加上单位或百分号。

    132 kg~234 kg
    +
    +67%~89%
    +

    变化程度的表示法

    数字的增加要使用“增加了”、“增加到”。“了”表示增量,“到”表示定量。

    增加到过去的两倍
    +(过去为一,现在为二)
    +
    +增加了两倍
    +(过去为一,现在为三)
    +

    数字的减少要使用“降低了”、“降低到”。“了”表示增量,“到”表示定量。

    降低到百分之八十
    +(定额是一百,现在是八十)
    +
    +降低了百分之八十
    +(原来是一百,现在是二十)
    +

    不能用“降低 N 倍”或“减少 N 倍”的表示法,要用“降低百分之几”或“减少百分之几”。因为减少(或降低)一倍表示数值原来为一百,现在等于零。

    标点符号

    原则

    (1)中文语句的标点符号,均应该采取全角符号,这样可以与全角文字保持视觉的一致。

    (2)如果整句为英文,则该句使用英文/半角标点。

    (3)句号、问号、叹号、逗号、顿号、分号和冒号不得出现在一行之首。

    (4)点号(句号、逗号、顿号、分号、冒号)不得出现在标题的末尾,而标号(引号、括号、破折号、省略号、书名号、着重号、间隔号、叹号、问号)可以。

    句号

    (1)中文语句的结尾处应该用全角句号()。

    (2)句子末尾用括号加注时,句号应在括号之外。

    错误:关于文件的输出,请参照第 1.3 节(见第 26 页。)
    +
    +正确:关于文件的输出,请参照第 1.3 节(见第 26 页)。
    +

    逗号

    (1)逗号()表示句子内部的一般性停顿。

    (2)注意避免“一逗到底”,即整个段落除了结尾,全部停顿都使用逗号。

    顿号

    (1)句子内部的并列词,应该用全角顿号 () 分隔,而不用逗号,即使并列词是英语也是如此。

    错误:我最欣赏的科技公司有 Google, Facebook, 腾讯, 阿里和百度等。
    +
    +正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。
    +

    (2)英文句子中,并列词语之间使用半角逗号(,)分隔。

    例句:Microsoft Office includes Word, Excel, PowerPoint, Outlook and other components.
    +

    (3)中文句子内部的并列词,最后一个尽量使用()来连接,使句子读起来更加连贯,下面两个句子都可以,第二个更优。

    正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里,以及百度等。
    +
    +正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。
    +

    分号

    (1)分号()表示复句内部并列分句之间的停顿。

    引号

    (1)引用时,应该使用全角双引号(“ ”),注意前后双引号不同。

    例句:许多人都认为客户服务的核心是“友好”和“专业”。
    +

    (2)引号里面还要用引号时,外面一层用双引号,里面一层用单引号(‘ ’),注意前后单引号不同。

    例句:鲍勃解释道:“我要放音乐,可萨利说,‘不行!’。”
    +
    `,37),b={href:"https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.zh-Hans.md#%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BD%BF%E7%94%A8%E7%9B%B4%E8%A7%92%E5%BC%95%E5%8F%B7",target:"_blank",rel:"noopener noreferrer"},g=e("p",null,"用法:",-1),x=e("blockquote",null,[e("p",null,"「老师,『有条不紊』的『紊』是什么意思?」")],-1),f=e("p",null,"对比用法:",-1),k=e("blockquote",null,[e("p",null,"“老师,‘有条不紊’的‘紊’是什么意思?”")],-1),_=d(`

    括号

    (1)补充说明时,使用全角圆括号(()),括号前后不加空格。

    例句:请确认所有的连接(电缆和接插件)均安装牢固。
    +

    (2)几种括号的中英文名称。

    英文中文
    { }braces 或 curly brackets大括号
    [ ]square brackets 或 brackets方括号
    < >angled brackets尖括号
    ( )parentheses圆括号

    冒号

    (1)全角冒号()常用在需要解释的词语后边,引出解释和说明。

    例句:请确认以下几项内容:时间、地点、活动名称和来宾数量。
    +

    (2)表示时间时,应使用半角冒号(:)。

    例句:早上 8:00
    +

    省略号

    (1)省略号(⋯⋯)表示语句未完、或者语气的不连续。

    (2)省略号占两个汉字空间、包含六个省略点,不要使用 。。。... 等非标准形式。

    (3)省略号不应与“等”这个词一起使用。

    错误:我们为会餐准备了香蕉、苹果、梨…等各色水果。
    +
    +正确:我们为会餐准备了各色水果,有香蕉、苹果、梨⋯⋯
    +
    +正确:我们为会餐准备了香蕉、苹果、梨等各色水果。
    +

    感叹号

    (1)应该使用平静的语气叙述,尽量避免使用感叹号()。

    (2)不得多个感叹号连用,比如 !!!!!

    破折号

    (1)破折号 ———— 一般用于进一步解释。

    (2)破折号应占两个汉字的位置。如果破折号本身只占一个汉字的位置,那么前后应该留出一个半角空格。

    例句:直觉————尽管它并不总是可靠的————告诉我,这事可能出了些问题。
    +
    +例句:直觉 —— 尽管它并不总是可靠的 —— 告诉我,这事可能出了些问题。
    +

    连接号

    (1)连接号用于连接两个类似的词。

    (2)以下场合应该使用直线连接号(-),占一个半角字符的位置。

    • 两个名词的复合
    • 图表编号
    例句:氧化-还原反应
    +
    +例句:图 1-1
    +

    (3)数值范围(例如日期、时间或数字)应该使用波浪连接号()或一字号(),占一个全角字符的位置。

    例句:2009 年~2011 年
    +

    注意,波浪连接号前后两个值都建议加上单位。

    (4)波浪连接号也可以用汉字“至”代替。

    例句:周围温度:-20 °C 至 -10 °C
    +

    文档体系

    结构

    软件手册是一部完整的书,建议采用下面的结构。

    • 简介(Introduction):[必备] [文件] 提供对产品和文档本身的总体的、扼要的说明
    • 快速上手(Getting Started):[可选] [文件] 如何最快速地使用产品
    • 入门篇(Basics):[必备] [目录] 又称“使用篇”,提供初级的使用教程
      • 环境准备(Prerequisite):[必备] [文件] 软件使用需要满足的前置条件
      • 安装(Installation):[可选] [文件] 软件的安装方法
      • 设置(Configuration):[必备] [文件] 软件的设置
    • 进阶篇(Advanced):[可选] [目录] 又称“开发篇”,提供中高级的开发教程
    • API(Reference):[可选] [目录|文件] 软件 API 的逐一介绍
    • FAQ:[可选] [文件] 常见问题解答
    • 附录(Appendix):[可选] [目录] 不属于教程本身、但对阅读教程有帮助的内容
      • Glossary:[可选] [文件] 名词解释
      • Recipes:[可选] [文件] 最佳实践
      • Troubleshooting:[可选] [文件] 故障处理
      • ChangeLog:[可选] [文件] 版本说明
      • Feedback:[可选] [文件] 反馈方式

    下面是两个真实范例,可参考。

    `,37),E={href:"https://redux.js.org/introduction/getting-started",target:"_blank",rel:"noopener noreferrer"},y={href:"http://flight-manual.atom.io/",target:"_blank",rel:"noopener noreferrer"},A=d(`

    文件名

    文档的文件名不得含有空格。

    文件名必须使用半角字符,不得使用全角字符。这也意味着,中文不能用于文件名。

    错误:名词解释.md
    +
    +正确:glossary.md
    +

    文件名建议只使用小写字母,不使用大写字母。

    错误:TroubleShooting.md
    +
    +正确:troubleshooting.md
    +

    为了醒目,某些说明文件的文件名,可以使用大写字母,比如 READMELICENSE

    文件名包含多个单词时,单词之间建议使用半角的连词线(-)分隔。

    不佳:advanced_usage.md
    +
    +正确:advanced-usage.md
    +

    参考链接

    `,10),B={href:"https://www.taodocs.com/p-51273.html",target:"_blank",rel:"noopener noreferrer"},w={href:"http://guide.daocloud.io/dcs/%E5%86%99%E4%BD%9C%E8%A7%84%E8%8C%83%E5%92%8C%E6%A0%BC%E5%BC%8F%E8%A7%84%E8%8C%83-9153803.html",target:"_blank",rel:"noopener noreferrer"},C={href:"http://www.hitachi-tc.co.jp/company/thesis/thesis.pdf",target:"_blank",rel:"noopener noreferrer"},D={href:"https://www.lengoo.de/documents/styleguides/lengoo_styleguide_ZH.pdf",target:"_blank",rel:"noopener noreferrer"},G={href:"https://open.leancloud.cn/copywriting-style-guide.html",target:"_blank",rel:"noopener noreferrer"},I={href:"https://docs.google.com/document/d/1R8lMCPf6zCD5KEA8ekZ5knK77iw9J-vJ6vEopPemqZM/edit",target:"_blank",rel:"noopener noreferrer"},F={href:"https://github.com/sparanoid/chinese-copywriting-guidelines",target:"_blank",rel:"noopener noreferrer"},M={href:"http://w3c.github.io/clreq/",target:"_blank",rel:"noopener noreferrer"},q={href:"http://www.ruanyifeng.com/blog/2017/02/filename-should-be-lowercase.html",target:"_blank",rel:"noopener noreferrer"},P={href:"https://developers.google.com/style/",target:"_blank",rel:"noopener noreferrer"},S={href:"http://www.moe.gov.cn/ewebeditor/uploadfile/2015/01/13/20150113091154536.pdf",target:"_blank",rel:"noopener noreferrer"},O={href:"https://zh.wikisource.org/zh-hans/GB_3100-1993_%E5%9B%BD%E9%99%85%E5%8D%95%E4%BD%8D%E5%88%B6%E5%8F%8A%E5%85%B6%E5%BA%94%E7%94%A8",target:"_blank",rel:"noopener noreferrer"},R=e("h2",{id:"license",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#license","aria-hidden":"true"},"#"),n(" License")],-1),L=e("p",null,"公共领域(public domain)",-1);function N(W,T){const a=l("ExternalLinkIcon");return t(),r("div",null,[o,e("p",null,[n("中文技术文档的写作规范,转自 "),e("a",u,[n("ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)"),i(a)]),n("。")]),e("p",null,[n("当前版本:"),e("a",v,[n("b7723b8"),i(a)])]),p,e("p",null,[n("英文的货币名称,建议参考国际标准 "),e("a",m,[n("ISO 4217"),i(a)]),n("。")]),h,e("blockquote",null,[e("p",null,[n("[!tip] "),e("a",b,[n("简体中文使用直角引号"),i(a)])]),g,x,f,k]),_,e("ul",null,[e("li",null,[e("a",E,[n("Redux 手册"),i(a)])]),e("li",null,[e("a",y,[n("Atom 手册"),i(a)])])]),A,e("ul",null,[e("li",null,[e("a",B,[n("产品手册中文写作规范"),i(a)]),n(", by 华为")]),e("li",null,[e("a",w,[n("写作规范和格式规范"),i(a)]),n(", by DaoCloud")]),e("li",null,[e("a",C,[n("技术写作技巧在日汉翻译中的应用"),i(a)]),n(", by 刘方")]),e("li",null,[e("a",D,[n("简体中文规范指南"),i(a)]),n(", by lengoo")]),e("li",null,[e("a",G,[n("文档风格指南"),i(a)]),n(", by LeanCloud")]),e("li",null,[e("a",I,[n("豌豆荚文案风格指南"),i(a)]),n(", by 豌豆荚")]),e("li",null,[e("a",F,[n("中文文案排版指北"),i(a)]),n(", by sparanoid")]),e("li",null,[e("a",M,[n("中文排版需求"),i(a)]),n(", by W3C")]),e("li",null,[e("a",q,[n("为什么文件名要小写?"),i(a)]),n(", by 阮一峰")]),e("li",null,[e("a",P,[n("Google Developer Documentation Style Guide"),i(a)]),n(", by Google")]),e("li",null,[e("a",S,[n("出版物上数字用法的规定(国家标准GBT15835-2011)"),i(a)])]),e("li",null,[e("a",O,[n("GB 3100-1993 国际单位制及其应用"),i(a)])])]),R,L])}const H=s(c,[["render",N],["__file","document-style-guide.html.vue"]]);export{H as default}; diff --git a/assets/edges-80f1ebb6-Okp3_yLQ.js b/assets/edges-80f1ebb6-Okp3_yLQ.js new file mode 100644 index 00000000..14d2b9d1 --- /dev/null +++ b/assets/edges-80f1ebb6-Okp3_yLQ.js @@ -0,0 +1,4 @@ +import{q as $,c as w,d as q,an as Q,h as M,l as x,y as j,ao as nt}from"./mermaid.core-Up0YySao.js";import{c as at}from"./createText-aebacdfe-sWKH4swq.js";import{l as lt}from"./line-rSV082x4.js";const ct=(a,t,r,n)=>{t.forEach(e=>{ut[e](a,r,n)})},ht=(a,t,r)=>{x.trace("Making markers for ",r),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},ot=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},ft=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},pt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),a.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},yt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),a.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},dt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},xt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},bt=(a,t,r)=>{a.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),a.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},gt=(a,t,r)=>{a.append("defs").append("marker").attr("id",r+"_"+t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},ut={extension:ht,composition:ot,aggregation:ft,dependency:pt,lollipop:yt,point:dt,circle:xt,cross:bt,barb:gt},rr=ct;function wt(a,t){t&&a.attr("style",t)}function mt(a){const t=M(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div"),n=a.label,e=a.isNode?"nodeLabel":"edgeLabel";return r.html('"+n+""),wt(r,a.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}const kt=(a,t,r,n)=>{let e=a||"";if(typeof e=="object"&&(e=e[0]),$(w().flowchart.htmlLabels)){e=e.replace(/\\n|\n/g,"
    "),x.info("vertexText"+e);const i={isNode:n,label:Q(e).replace(/fa[blrs]?:fa-[\w-]+/g,l=>``),labelStyle:t.replace("fill:","color:")};return mt(i)}else{const i=document.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("style",t.replace("color:","fill:"));let s=[];typeof e=="string"?s=e.split(/\\n|\n|/gi):Array.isArray(e)?s=e:s=[];for(const l of s){const c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),r?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),i.appendChild(c)}return i}},I=kt,_=async(a,t,r,n)=>{let e;const i=t.useHtmlLabels||$(w().flowchart.htmlLabels);r?e=r:e="node default";const s=a.insert("g").attr("class",e).attr("id",t.domId||t.id),l=s.insert("g").attr("class","label").attr("style",t.labelStyle);let c;t.labelText===void 0?c="":c=typeof t.labelText=="string"?t.labelText:t.labelText[0];const o=l.node();let h;t.labelType==="markdown"?h=at(l,q(Q(c),w()),{useHtmlLabels:i,width:t.width||w().flowchart.wrappingWidth,classes:"markdown-node-label"}):h=o.appendChild(I(q(Q(c),w()),t.labelStyle,!1,n));let f=h.getBBox();const y=t.padding/2;if($(w().flowchart.htmlLabels)){const p=h.children[0],u=M(h),k=p.getElementsByTagName("img");if(k){const g=c.replace(/]*>/g,"").trim()==="";await Promise.all([...k].map(d=>new Promise(b=>{function B(){if(d.style.display="flex",d.style.flexDirection="column",g){const C=w().fontSize?w().fontSize:window.getComputedStyle(document.body).fontSize,X=5;d.style.width=parseInt(C,10)*X+"px"}else d.style.width="100%";b(d)}setTimeout(()=>{d.complete&&B()}),d.addEventListener("error",B),d.addEventListener("load",B)})))}f=p.getBoundingClientRect(),u.attr("width",f.width),u.attr("height",f.height)}return i?l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):l.attr("transform","translate(0, "+-f.height/2+")"),t.centerLabel&&l.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:s,bbox:f,halfPadding:y,label:l}},v=(a,t)=>{const r=t.node().getBBox();a.width=r.width,a.height=r.height};function N(a,t,r,n){return a.insert("polygon",":first-child").attr("points",n.map(function(e){return e.x+","+e.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}function vt(a,t){return a.intersect(t)}function et(a,t,r,n){var e=a.x,i=a.y,s=e-n.x,l=i-n.y,c=Math.sqrt(t*t*l*l+r*r*s*s),o=Math.abs(t*r*s/c);n.x0}function Et(a,t,r){var n=a.x,e=a.y,i=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(u){s=Math.min(s,u.x),l=Math.min(l,u.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var c=n-a.width/2-s,o=e-a.height/2-l,h=0;h1&&i.sort(function(u,k){var g=u.x-r.x,d=u.y-r.y,b=Math.sqrt(g*g+d*d),B=k.x-r.x,C=k.y-r.y,X=Math.sqrt(B*B+C*C);return b{var r=a.x,n=a.y,e=t.x-r,i=t.y-n,s=a.width/2,l=a.height/2,c,o;return Math.abs(i)*s>Math.abs(e)*l?(i<0&&(l=-l),c=i===0?0:l*e/i,o=l):(e<0&&(s=-s),c=s,o=e===0?0:s*i/e),{x:r+c,y:n+o}},Mt=Bt,m={node:vt,circle:Lt,ellipse:et,polygon:Et,rect:Mt},_t=async(a,t)=>{t.useHtmlLabels||w().flowchart.htmlLabels||(t.centerLabel=!0);const{shapeSvg:n,bbox:e,halfPadding:i}=await _(a,t,"node "+t.classes,!0);x.info("Classes = ",t.classes);const s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2-i).attr("y",-e.height/2-i).attr("width",e.width+t.padding).attr("height",e.height+t.padding),v(t,s),t.intersect=function(l){return m.rect(t,l)},n},Ct=_t,K=a=>a?" "+a:"",R=(a,t)=>`${t||"node default"}${K(a.classes)} ${K(a.class)}`,G=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=e+i,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];x.info("Question main (Circle)");const c=N(r,s,s,l);return c.attr("style",t.style),v(t,c),t.intersect=function(o){return x.warn("Intersect called"),m.polygon(t,l,o)},r},Tt=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,e=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",e.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return m.circle(t,14,s)},r},Rt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=4,i=n.height+t.padding,s=i/e,l=n.width+2*s+t.padding,c=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-i/2},{x:l-s,y:-i},{x:s,y:-i},{x:0,y:-i/2}],o=N(r,l,i,c);return o.attr("style",t.style),v(t,o),t.intersect=function(h){return m.polygon(t,c,h)},r},It=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-i/2,y:0},{x:e,y:0},{x:e,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return N(r,e,i,s).attr("style",t.style),t.width=e+i,t.height=i,t.intersect=function(c){return m.polygon(t,s,c)},r},$t=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ht=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:2*i/6,y:0},{x:e+i/6,y:0},{x:e-2*i/6,y:-i},{x:-i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Nt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:-2*i/6,y:0},{x:e+2*i/6,y:0},{x:e-i/6,y:-i},{x:i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ot=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:i/6,y:0},{x:e-i/6,y:0},{x:e+2*i/6,y:-i},{x:-2*i/6,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Xt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e+i/2,y:0},{x:e,y:-i/2},{x:e+i/2,y:-i},{x:0,y:-i}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Yt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=e/2,s=i/(2.5+e/50),l=n.height+s+t.padding,c="M 0,"+s+" a "+i+","+s+" 0,0,0 "+e+" 0 a "+i+","+s+" 0,0,0 "+-e+" 0 l 0,"+l+" a "+i+","+s+" 0,0,0 "+e+" 0 l 0,"+-l,o=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-e/2+","+-(l/2+s)+")");return v(t,o),t.intersect=function(h){const f=m.rect(t,h),y=f.x-t.x;if(i!=0&&(Math.abs(y)t.height/2-s)){let p=s*s*(1-y*y/(i*i));p!=0&&(p=Math.sqrt(p)),p=s-p,h.y-t.y>0&&(p=-p),f.y+=p}return f},r},Wt=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,"node "+t.classes+" "+t.class,!0),i=r.insert("rect",":first-child"),s=n.width+t.padding,l=n.height+t.padding;if(i.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-n.width/2-e).attr("y",-n.height/2-e).attr("width",s).attr("height",l),t.props){const c=new Set(Object.keys(t.props));t.props.borders&&(st(i,t.props.borders,s,l),c.delete("borders")),c.forEach(o=>{x.warn(`Unknown node property ${o}`)})}return v(t,i),t.intersect=function(c){return m.rect(t,c)},r},Dt=async(a,t)=>{const{shapeSvg:r}=await _(a,t,"label",!0);x.trace("Classes = ",t.class);const n=r.insert("rect",":first-child"),e=0,i=0;if(n.attr("width",e).attr("height",i),r.attr("class","label edgeLabel"),t.props){const s=new Set(Object.keys(t.props));t.props.borders&&(st(n,t.props.borders,e,i),s.delete("borders")),s.forEach(l=>{x.warn(`Unknown node property ${l}`)})}return v(t,n),t.intersect=function(s){return m.rect(t,s)},r};function st(a,t,r,n){const e=[],i=l=>{e.push(l,0)},s=l=>{e.push(0,l)};t.includes("t")?(x.debug("add top border"),i(r)):s(r),t.includes("r")?(x.debug("add right border"),i(n)):s(n),t.includes("b")?(x.debug("add bottom border"),i(r)):s(r),t.includes("l")?(x.debug("add left border"),i(n)):s(n),a.attr("stroke-dasharray",e.join(" "))}const jt=(a,t)=>{let r;t.classes?r="node "+t.classes:r="node default";const n=a.insert("g").attr("class",r).attr("id",t.domId||t.id),e=n.insert("rect",":first-child"),i=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText;let c="";typeof l=="object"?c=l[0]:c=l,x.info("Label text abc79",c,l,typeof l=="object");const o=s.node().appendChild(I(c,t.labelStyle,!0,!0));let h={width:0,height:0};if($(w().flowchart.htmlLabels)){const k=o.children[0],g=M(o);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}x.info("Text 2",l);const f=l.slice(1,l.length);let y=o.getBBox();const p=s.node().appendChild(I(f.join?f.join("
    "):f,t.labelStyle,!0,!0));if($(w().flowchart.htmlLabels)){const k=p.children[0],g=M(p);h=k.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}const u=t.padding/2;return M(p).attr("transform","translate( "+(h.width>y.width?0:(y.width-h.width)/2)+", "+(y.height+u+5)+")"),M(o).attr("transform","translate( "+(h.width{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.height+t.padding,i=n.width+e/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",e/2).attr("ry",e/2).attr("x",-i/2).attr("y",-e/2).attr("width",i).attr("height",e);return v(t,s),t.intersect=function(l){return m.rect(t,l)},r},Ut=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("Circle main"),v(t,i),t.intersect=function(s){return x.info("Circle intersect",t,n.width/2+e,s),m.circle(t,n.width/2+e,s)},r},zt=async(a,t)=>{const{shapeSvg:r,bbox:n,halfPadding:e}=await _(a,t,R(t,void 0),!0),i=5,s=r.insert("g",":first-child"),l=s.insert("circle"),c=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e+i).attr("width",n.width+t.padding+i*2).attr("height",n.height+t.padding+i*2),c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+e).attr("width",n.width+t.padding).attr("height",n.height+t.padding),x.info("DoubleCircle main"),v(t,l),t.intersect=function(o){return x.info("DoubleCircle intersect",t,n.width/2+e+i,o),m.circle(t,n.width/2+e+i,o)},r},Zt=async(a,t)=>{const{shapeSvg:r,bbox:n}=await _(a,t,R(t,void 0),!0),e=n.width+t.padding,i=n.height+t.padding,s=[{x:0,y:0},{x:e,y:0},{x:e,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:e+8,y:0},{x:e+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],l=N(r,e,i,s);return l.attr("style",t.style),v(t,l),t.intersect=function(c){return m.polygon(t,s,c)},r},Ft=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),v(t,n),t.intersect=function(e){return m.circle(t,7,e)},r},P=(a,t,r)=>{const n=a.insert("g").attr("class","node default").attr("id",t.domId||t.id);let e=70,i=10;r==="LR"&&(e=10,i=70);const s=n.append("rect").attr("x",-1*e/2).attr("y",-1*i/2).attr("width",e).attr("height",i).attr("class","fork-join");return v(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return m.rect(t,l)},n},Qt=(a,t)=>{const r=a.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),e=r.insert("circle",":first-child");return e.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),v(t,e),t.intersect=function(i){return m.circle(t,7,i)},r},Vt=(a,t)=>{const r=t.padding/2,n=4,e=8;let i;t.classes?i="node "+t.classes:i="node default";const s=a.insert("g").attr("class",i).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),c=s.insert("line"),o=s.insert("line");let h=0,f=n;const y=s.insert("g").attr("class","label");let p=0;const u=t.classData.annotations&&t.classData.annotations[0],k=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",g=y.node().appendChild(I(k,t.labelStyle,!0,!0));let d=g.getBBox();if($(w().flowchart.htmlLabels)){const L=g.children[0],S=M(g);d=L.getBoundingClientRect(),S.attr("width",d.width),S.attr("height",d.height)}t.classData.annotations[0]&&(f+=d.height+n,h+=d.width);let b=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(w().flowchart.htmlLabels?b+="<"+t.classData.type+">":b+="<"+t.classData.type+">");const B=y.node().appendChild(I(b,t.labelStyle,!0,!0));M(B).attr("class","classTitle");let C=B.getBBox();if($(w().flowchart.htmlLabels)){const L=B.children[0],S=M(B);C=L.getBoundingClientRect(),S.attr("width",C.width),S.attr("height",C.height)}f+=C.height+n,C.width>h&&(h=C.width);const X=[];t.classData.members.forEach(L=>{const S=L.getDisplayDetails();let Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));const H=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0));let T=H.getBBox();if($(w().flowchart.htmlLabels)){const F=H.children[0],D=M(H);T=F.getBoundingClientRect(),D.attr("width",T.width),D.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,X.push(H)}),f+=e;const V=[];if(t.classData.methods.forEach(L=>{const S=L.getDisplayDetails();let Y=S.displayText;w().flowchart.htmlLabels&&(Y=Y.replace(//g,">"));const H=y.node().appendChild(I(Y,S.cssStyle?S.cssStyle:t.labelStyle,!0,!0));let T=H.getBBox();if($(w().flowchart.htmlLabels)){const F=H.children[0],D=M(H);T=F.getBoundingClientRect(),D.attr("width",T.width),D.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,V.push(H)}),f+=e,u){let L=(h-d.width)/2;M(g).attr("transform","translate( "+(-1*h/2+L)+", "+-1*f/2+")"),p=d.height+n}let it=(h-C.width)/2;return M(B).attr("transform","translate( "+(-1*h/2+it)+", "+(-1*f/2+p)+")"),p+=C.height+n,c.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,X.forEach(L=>{M(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p+e/2)+")");const S=L==null?void 0:L.getBBox();p+=((S==null?void 0:S.height)??0)+n}),p+=e,o.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+e+p).attr("y2",-f/2-r+e+p),p+=e,V.forEach(L=>{M(L).attr("transform","translate( "+-h/2+", "+(-1*f/2+p)+")");const S=L==null?void 0:L.getBBox();p+=((S==null?void 0:S.height)??0)+n}),l.attr("class","outer title-state").attr("x",-h/2-r).attr("y",-(f/2)-r).attr("width",h+t.padding).attr("height",f+t.padding),v(t,l),t.intersect=function(L){return m.rect(t,L)},s},tt={rhombus:G,question:G,rect:Wt,labelRect:Dt,rectWithTitle:jt,choice:Tt,circle:Ut,doublecircle:zt,stadium:At,hexagon:Rt,rect_left_inv_arrow:It,lean_right:$t,lean_left:Ht,trapezoid:Nt,inv_trapezoid:Ot,rect_right_inv_arrow:Xt,cylinder:Yt,start:Ft,end:Qt,note:Ct,subroutine:Zt,fork:P,join:P,class_box:Vt};let W={};const ar=async(a,t,r)=>{let n,e;if(t.link){let i;w().securityLevel==="sandbox"?i="_top":t.linkTarget&&(i=t.linkTarget||"_blank"),n=a.insert("svg:a").attr("xlink:href",t.link).attr("target",i),e=await tt[t.shape](n,t,r)}else e=await tt[t.shape](a,t,r),n=e;return t.tooltip&&e.attr("title",t.tooltip),t.class&&e.attr("class","node default "+t.class),W[t.id]=n,t.haveCallback&&W[t.id].attr("class",W[t.id].attr("class")+" clickable"),n},er=(a,t)=>{W[t.id]=a},sr=()=>{W={}},ir=a=>{const t=W[a.id];x.trace("Transforming node",a.diff,a,"translate("+(a.x-a.width/2-5)+", "+a.width/2+")");const r=8,n=a.diff||0;return a.clusterNode?t.attr("transform","translate("+(a.x+n-a.width/2)+", "+(a.y-a.height/2-r)+")"):t.attr("transform","translate("+a.x+", "+a.y+")"),n},O={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function A(a,t){a=z(a),t=z(t);const[r,n]=[a.x,a.y],[e,i]=[t.x,t.y],s=e-r,l=i-n;return{angle:Math.atan(l/s),deltaX:s,deltaY:l}}const z=a=>Array.isArray(a)?{x:a[0],y:a[1]}:a,qt=a=>({x:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){const{angle:i,deltaX:s}=A(n[0],n[1]);e=O[a.arrowTypeStart]*Math.cos(i)*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){const{angle:i,deltaX:s}=A(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.cos(i)*(s>=0?1:-1)}return z(t).x+e},y:function(t,r,n){let e=0;if(r===0&&Object.hasOwn(O,a.arrowTypeStart)){const{angle:i,deltaY:s}=A(n[0],n[1]);e=O[a.arrowTypeStart]*Math.abs(Math.sin(i))*(s>=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(O,a.arrowTypeEnd)){const{angle:i,deltaY:s}=A(n[n.length-1],n[n.length-2]);e=O[a.arrowTypeEnd]*Math.abs(Math.sin(i))*(s>=0?1:-1)}return z(t).y+e}});let Z={},E={};const nr=()=>{Z={},E={}},lr=(a,t)=>{const r=$(w().flowchart.htmlLabels),n=t.labelType==="markdown"?at(a,t.label,{style:t.labelStyle,useHtmlLabels:r,addSvgBackground:!0}):I(t.label,t.labelStyle);x.info("abc82",t,t.labelType);const e=a.insert("g").attr("class","edgeLabel"),i=e.insert("g").attr("class","label");i.node().appendChild(n);let s=n.getBBox();if(r){const c=n.children[0],o=M(n);s=c.getBoundingClientRect(),o.attr("width",s.width),o.attr("height",s.height)}i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),Z[t.id]=e,t.width=s.width,t.height=s.height;let l;if(t.startLabelLeft){const c=I(t.startLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),E[t.id]||(E[t.id]={}),E[t.id].startLeft=o,U(l,t.startLabelLeft)}if(t.startLabelRight){const c=I(t.startLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=o.node().appendChild(c),h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),E[t.id]||(E[t.id]={}),E[t.id].startRight=o,U(l,t.startLabelRight)}if(t.endLabelLeft){const c=I(t.endLabelLeft,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),E[t.id]||(E[t.id]={}),E[t.id].endLeft=o,U(l,t.endLabelLeft)}if(t.endLabelRight){const c=I(t.endLabelRight,t.labelStyle),o=a.insert("g").attr("class","edgeTerminals"),h=o.insert("g").attr("class","inner");l=h.node().appendChild(c);const f=c.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),o.node().appendChild(c),E[t.id]||(E[t.id]={}),E[t.id].endRight=o,U(l,t.endLabelRight)}return n};function U(a,t){w().flowchart.htmlLabels&&a&&(a.style.width=t.length*9+"px",a.style.height="12px")}const cr=(a,t)=>{x.info("Moving label abc78 ",a.id,a.label,Z[a.id]);let r=t.updatedPath?t.updatedPath:t.originalPath;if(a.label){const n=Z[a.id];let e=a.x,i=a.y;if(r){const s=j.calcLabelPosition(r);x.info("Moving label "+a.label+" from (",e,",",i,") to (",s.x,",",s.y,") abc78"),t.updatedPath&&(e=s.x,i=s.y)}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelLeft){const n=E[a.id].startLeft;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.startLabelRight){const n=E[a.id].startRight;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeStart?10:0,"start_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelLeft){const n=E[a.id].endLeft;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_left",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}if(a.endLabelRight){const n=E[a.id].endRight;let e=a.x,i=a.y;if(r){const s=j.calcTerminalLabelPosition(a.arrowTypeEnd?10:0,"end_right",r);e=s.x,i=s.y}n.attr("transform","translate("+e+", "+i+")")}},Jt=(a,t)=>{const r=a.x,n=a.y,e=Math.abs(t.x-r),i=Math.abs(t.y-n),s=a.width/2,l=a.height/2;return e>=s||i>=l},Kt=(a,t,r)=>{x.warn(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${a.x} y:${a.y} w:${a.width} h:${a.height}`);const n=a.x,e=a.y,i=Math.abs(n-r.x),s=a.width/2;let l=r.xMath.abs(n-t.x)*c){let f=r.y{x.warn("abc88 cutPathAtIntersect",a,t);let r=[],n=a[0],e=!1;return a.forEach(i=>{if(x.info("abc88 checking point",i,t),!Jt(t,i)&&!e){const s=Kt(t,n,i);x.warn("abc88 inside",i,n,s),x.warn("abc88 intersection",s);let l=!1;r.forEach(c=>{l=l||c.x===s.x&&c.y===s.y}),r.some(c=>c.x===s.x&&c.y===s.y)?x.warn("abc88 no intersect",s,r):r.push(s),e=!0}else x.warn("abc88 outside",i,n),n=i,e||r.push(i)}),x.warn("abc88 returning points",r),r},hr=function(a,t,r,n,e,i,s){let l=r.points,c=!1;const o=i.node(t.v);var h=i.node(t.w);x.info("abc88 InsertEdge: ",r),h.intersect&&o.intersect&&(l=l.slice(1,r.points.length-1),l.unshift(o.intersect(l[0])),x.info("Last point",l[l.length-1],h,h.intersect(l[l.length-1])),l.push(h.intersect(l[l.length-1]))),r.toCluster&&(x.info("to cluster abc88",n[r.toCluster]),l=rt(r.points,n[r.toCluster].node),c=!0),r.fromCluster&&(x.info("from cluster abc88",n[r.fromCluster]),l=rt(l.reverse(),n[r.fromCluster].node).reverse(),c=!0);const f=l.filter(C=>!Number.isNaN(C.y));let y=nt;r.curve&&(e==="graph"||e==="flowchart")&&(y=r.curve);const{x:p,y:u}=qt(r),k=lt().x(p).y(u).curve(y);let g;switch(r.thickness){case"normal":g="edge-thickness-normal";break;case"thick":g="edge-thickness-thick";break;case"invisible":g="edge-thickness-thick";break;default:g=""}switch(r.pattern){case"solid":g+=" edge-pattern-solid";break;case"dotted":g+=" edge-pattern-dotted";break;case"dashed":g+=" edge-pattern-dashed";break}const d=a.append("path").attr("d",k(f)).attr("id",r.id).attr("class"," "+g+(r.classes?" "+r.classes:"")).attr("style",r.style);let b="";switch((w().flowchart.arrowMarkerAbsolute||w().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),x.info("arrowTypeStart",r.arrowTypeStart),x.info("arrowTypeEnd",r.arrowTypeEnd),r.arrowTypeStart){case"arrow_cross":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-crossStart)");break;case"arrow_point":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-pointStart)");break;case"arrow_barb":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-barbStart)");break;case"arrow_circle":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-circleStart)");break;case"aggregation":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-aggregationStart)");break;case"extension":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-extensionStart)");break;case"composition":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-compositionStart)");break;case"dependency":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-dependencyStart)");break;case"lollipop":d.attr("marker-start","url("+b+"#"+s+"_"+e+"-lollipopStart)");break}switch(r.arrowTypeEnd){case"arrow_cross":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-crossEnd)");break;case"arrow_point":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-pointEnd)");break;case"arrow_barb":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-barbEnd)");break;case"arrow_circle":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-circleEnd)");break;case"aggregation":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-aggregationEnd)");break;case"extension":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-extensionEnd)");break;case"composition":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-compositionEnd)");break;case"dependency":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-dependencyEnd)");break;case"lollipop":d.attr("marker-end","url("+b+"#"+s+"_"+e+"-lollipopEnd)");break}let B={};return c&&(B.updatedPath=l),B.originalPath=r.points,B};export{ar as a,lr as b,hr as c,cr as d,sr as e,nr as f,I as g,Mt as h,rr as i,qt as j,_ as l,ir as p,er as s,v as u}; diff --git a/assets/end.html-BDEjjGZf.js b/assets/end.html-BDEjjGZf.js new file mode 100644 index 00000000..7b426163 --- /dev/null +++ b/assets/end.html-BDEjjGZf.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c,a as e,b as o}from"./app-Mf7X6hWu.js";const a={},s=e("h1",{id:"更进一步",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#更进一步","aria-hidden":"true"},"#"),o(" 更进一步")],-1),l=e("blockquote",null,[e("p",null,"[!warning] WORK IN PROGRESS 此页面正在施工中。")],-1),r=e("p",null,[o("这里只给出了一个基本的介绍。有关 "),e("code",null,"CSL"),o(" 更详细的介绍可以查看 "),e("code",null," CSL"),o(" 标准文档或者其他参考文档。")],-1),_=[s,l,r];function d(i,h){return n(),c("div",null,_)}const m=t(a,[["render",d],["__file","end.html.vue"]]);export{m as default}; diff --git a/assets/end.html-DOFgPd1d.js b/assets/end.html-DOFgPd1d.js new file mode 100644 index 00000000..e1ad74ea --- /dev/null +++ b/assets/end.html-DOFgPd1d.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3a58307c","path":"/code/citation-style-language/primer/end.html","title":"更进一步","lang":"zh-CN","frontmatter":{"title":"更进一步","date":"2022-08-01T17:33:11.000Z","updated":"2022-08-03T10:18:41.000Z","description":"更进一步 [!warning] WORK IN PROGRESS 此页面正在施工中。 这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看 CSL 标准文档或者其他参考文档。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/primer/end.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"更进一步"}],["meta",{"property":"og:description","content":"更进一步 [!warning] WORK IN PROGRESS 此页面正在施工中。 这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看 CSL 标准文档或者其他参考文档。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T17:33:11.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"更进一步\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T17:33:11.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.25,"words":74},"filePathRelative":"code/citation-style-language/primer/end.md","localizedDate":"2022年8月2日","excerpt":"

    更进一步

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看 CSL 标准文档或者其他参考文档。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/erDiagram-9cfc3649-3ZBYicXe.js b/assets/erDiagram-9cfc3649-3ZBYicXe.js new file mode 100644 index 00000000..4d761856 --- /dev/null +++ b/assets/erDiagram-9cfc3649-3ZBYicXe.js @@ -0,0 +1,51 @@ +import{c as Z,s as Et,g as mt,b as gt,a as kt,v as xt,x as Rt,l as V,z as Ot,h as rt,y as bt,i as Nt,ao as Tt,ar as At}from"./mermaid.core-Up0YySao.js";import{G as Mt,l as St}from"./layout-bNXk8SHo.js";import{l as wt}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const It=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function vt(t){return typeof t=="string"&&It.test(t)}const A=[];for(let t=0;t<256;++t)A.push((t+256).toString(16).slice(1));function Dt(t,e=0){return A[t[e+0]]+A[t[e+1]]+A[t[e+2]]+A[t[e+3]]+"-"+A[t[e+4]]+A[t[e+5]]+"-"+A[t[e+6]]+A[t[e+7]]+"-"+A[t[e+8]]+A[t[e+9]]+"-"+A[t[e+10]]+A[t[e+11]]+A[t[e+12]]+A[t[e+13]]+A[t[e+14]]+A[t[e+15]]}function Lt(t){if(!vt(t))throw TypeError("Invalid UUID");let e;const r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}function Bt(t){t=unescape(encodeURIComponent(t));const e=[];for(let r=0;r>>32-e}function Ft(t){const e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){const f=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;x=g,g=m,m=it(_,30)>>>0,_=h,h=I}r[0]=r[0]+h>>>0,r[1]=r[1]+_>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+g>>>0,r[4]=r[4]+x>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,r[0]&255,r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,r[1]&255,r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,r[2]&255,r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,r[3]&255,r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,r[4]&255]}const Wt=Yt("v5",80,Ft),Ut=Wt;var at=function(){var t=function(S,a,n,c){for(n=n||{},c=S.length;c--;n[S[c]]=a);return n},e=[6,8,10,20,22,24,26,27,28],r=[1,10],u=[1,11],l=[1,12],p=[1,13],f=[1,14],o=[1,15],h=[1,21],_=[1,22],m=[1,23],g=[1,24],x=[1,25],y=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],N=[1,34],I=[27,28,46,47],F=[41,42,43,44,45],W=[17,34],C=[1,54],T=[1,53],M=[17,34,36,38],R={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:function(a,n,c,d,E,i,K){var s=i.length-1;switch(E){case 1:break;case 2:this.$=[];break;case 3:i[s-1].push(i[s]),this.$=i[s-1];break;case 4:case 5:this.$=i[s];break;case 6:case 7:this.$=[];break;case 8:d.addEntity(i[s-4]),d.addEntity(i[s-2]),d.addRelationship(i[s-4],i[s],i[s-2],i[s-3]);break;case 9:d.addEntity(i[s-3]),d.addAttributes(i[s-3],i[s-1]);break;case 10:d.addEntity(i[s-2]);break;case 11:d.addEntity(i[s]);break;case 12:d.addEntity(i[s-6],i[s-4]),d.addAttributes(i[s-6],i[s-1]);break;case 13:d.addEntity(i[s-5],i[s-3]);break;case 14:d.addEntity(i[s-3],i[s-1]);break;case 15:case 16:this.$=i[s].trim(),d.setAccTitle(this.$);break;case 17:case 18:this.$=i[s].trim(),d.setAccDescription(this.$);break;case 19:case 43:this.$=i[s];break;case 20:case 41:case 42:this.$=i[s].replace(/"/g,"");break;case 21:case 29:this.$=[i[s]];break;case 22:i[s].push(i[s-1]),this.$=i[s];break;case 23:this.$={attributeType:i[s-1],attributeName:i[s]};break;case 24:this.$={attributeType:i[s-2],attributeName:i[s-1],attributeKeyTypeList:i[s]};break;case 25:this.$={attributeType:i[s-2],attributeName:i[s-1],attributeComment:i[s]};break;case 26:this.$={attributeType:i[s-3],attributeName:i[s-2],attributeKeyTypeList:i[s-1],attributeComment:i[s]};break;case 27:case 28:case 31:this.$=i[s];break;case 30:i[s-2].push(i[s]),this.$=i[s-2];break;case 32:this.$=i[s].replace(/"/g,"");break;case 33:this.$={cardA:i[s],relType:i[s-1],cardB:i[s-2]};break;case 34:this.$=d.Cardinality.ZERO_OR_ONE;break;case 35:this.$=d.Cardinality.ZERO_OR_MORE;break;case 36:this.$=d.Cardinality.ONE_OR_MORE;break;case 37:this.$=d.Cardinality.ONLY_ONE;break;case 38:this.$=d.Cardinality.MD_PARENT;break;case 39:this.$=d.Identification.NON_IDENTIFYING;break;case 40:this.$=d.Identification.IDENTIFYING;break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:r,22:u,24:l,26:p,27:f,28:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:16,11:9,20:r,22:u,24:l,26:p,27:f,28:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:h,42:_,43:m,44:g,45:x}),{21:[1,26]},{23:[1,27]},{25:[1,28]},t(e,[2,18]),t(y,[2,19]),t(y,[2,20]),t(e,[2,4]),{11:29,27:f,28:o},{16:30,17:[1,31],29:32,30:33,34:N},{11:35,27:f,28:o},{40:36,46:[1,37],47:[1,38]},t(I,[2,34]),t(I,[2,35]),t(I,[2,36]),t(I,[2,37]),t(I,[2,38]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),{13:[1,39]},{17:[1,40]},t(e,[2,10]),{16:41,17:[2,21],29:32,30:33,34:N},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:h,42:_,43:m,44:g,45:x},t(F,[2,39]),t(F,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},t(e,[2,9]),{17:[2,22]},t(W,[2,23],{32:50,33:51,35:52,37:C,38:T}),t([17,34,37,38],[2,28]),t(e,[2,14],{15:[1,55]}),t([27,28],[2,33]),t(e,[2,8]),t(e,[2,41]),t(e,[2,42]),t(e,[2,43]),t(W,[2,24],{33:56,36:[1,57],38:T}),t(W,[2,25]),t(M,[2,29]),t(W,[2,32]),t(M,[2,31]),{16:58,17:[1,59],29:32,30:33,34:N},t(W,[2,26]),{35:60,37:C},{17:[1,61]},t(e,[2,13]),t(M,[2,30]),t(e,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:function(a,n){if(n.recoverable)this.trace(a);else{var c=new Error(a);throw c.hash=n,c}},parse:function(a){var n=this,c=[0],d=[],E=[null],i=[],K=this.table,s="",Q=0,st=0,ft=2,ot=1,yt=i.slice.call(arguments,1),b=Object.create(this.lexer),z={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(z.yy[J]=this.yy[J]);b.setInput(a,z.yy),z.yy.lexer=b,z.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var $=b.yylloc;i.push($);var pt=b.options&&b.options.ranges;typeof z.yy.parseError=="function"?this.parseError=z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function _t(){var Y;return Y=d.pop()||b.lex()||ot,typeof Y!="number"&&(Y instanceof Array&&(d=Y,Y=d.pop()),Y=n.symbols_[Y]||Y),Y}for(var w,H,v,tt,G={},j,P,lt,q;;){if(H=c[c.length-1],this.defaultActions[H]?v=this.defaultActions[H]:((w===null||typeof w>"u")&&(w=_t()),v=K[H]&&K[H][w]),typeof v>"u"||!v.length||!v[0]){var et="";q=[];for(j in K[H])this.terminals_[j]&&j>ft&&q.push("'"+this.terminals_[j]+"'");b.showPosition?et="Parse error on line "+(Q+1)+`: +`+b.showPosition()+` +Expecting `+q.join(", ")+", got '"+(this.terminals_[w]||w)+"'":et="Parse error on line "+(Q+1)+": Unexpected "+(w==ot?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(et,{text:b.match,token:this.terminals_[w]||w,line:b.yylineno,loc:$,expected:q})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+w);switch(v[0]){case 1:c.push(w),E.push(b.yytext),i.push(b.yylloc),c.push(v[1]),w=null,st=b.yyleng,s=b.yytext,Q=b.yylineno,$=b.yylloc;break;case 2:if(P=this.productions_[v[1]][1],G.$=E[E.length-P],G._$={first_line:i[i.length-(P||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(P||1)].first_column,last_column:i[i.length-1].last_column},pt&&(G._$.range=[i[i.length-(P||1)].range[0],i[i.length-1].range[1]]),tt=this.performAction.apply(G,[s,st,Q,z.yy,v[1],E,i].concat(yt)),typeof tt<"u")return tt;P&&(c=c.slice(0,-1*P*2),E=E.slice(0,-1*P),i=i.slice(0,-1*P)),c.push(this.productions_[v[1]][0]),E.push(G.$),i.push(G._$),lt=K[c[c.length-2]][c[c.length-1]],c.push(lt);break;case 3:return!0}}return!0}},O=function(){var S={EOF:1,parseError:function(n,c){if(this.yy.parser)this.yy.parser.parseError(n,c);else throw new Error(n)},setInput:function(a,n){return this.yy=n||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var n=a.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var n=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var E=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),n=new Array(a.length+1).join("-");return a+this.upcomingInput()+` +`+n+"^"},test_match:function(a,n){var c,d,E;if(this.options.backtrack_lexer&&(E={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(E.yylloc.range=this.yylloc.range.slice(0))),d=a[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],c=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var i in E)this[i]=E[i];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,n,c,d;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),i=0;in[0].length)){if(n=c,d=i,this.options.backtrack_lexer){if(a=this.test_match(c,E[i]),a!==!1)return a;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(a=this.test_match(n,E[d]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var n=this.next();return n||this.lex()},begin:function(n){this.conditionStack.push(n)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(n){this.begin(n)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(n,c,d,E){switch(d){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return c.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return c.yytext[0];case 55:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return S}();R.lexer=O;function D(){this.yy={}}return D.prototype=R,R.Parser=D,new D}();at.parser=at;const zt=at;let U={},nt=[];const Ht={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},Gt={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},dt=function(t,e=void 0){return U[t]===void 0?(U[t]={attributes:[],alias:e},V.info("Added new entity :",t)):U[t]&&!U[t].alias&&e&&(U[t].alias=e,V.info(`Add alias '${e}' to entity '${t}'`)),U[t]},Kt=()=>U,Vt=function(t,e){let r=dt(t),u;for(u=e.length-1;u>=0;u--)r.attributes.push(e[u]),V.debug("Added attribute ",e[u].attributeName)},Xt=function(t,e,r,u){let l={entityA:t,roleA:e,entityB:r,relSpec:u};nt.push(l),V.debug("Added new relationship :",l)},Qt=()=>nt,jt=function(){U={},nt=[],Ot()},qt={Cardinality:Ht,Identification:Gt,getConfig:()=>Z().er,addEntity:dt,addAttributes:Vt,getEntities:Kt,addRelationship:Xt,getRelationships:Qt,clear:jt,setAccTitle:Et,getAccTitle:mt,setAccDescription:gt,getAccDescription:kt,setDiagramTitle:xt,getDiagramTitle:Rt},L={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},Jt=function(t,e){let r;t.append("defs").append("marker").attr("id",L.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",L.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",L.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",L.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",L.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",L.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",L.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},B={ERMarkers:L,insertMarkers:Jt},$t=/[^\dA-Za-z](\W)*/g;let k={},X=new Map;const te=function(t){const e=Object.keys(t);for(const r of e)k[r]=t[r]},ee=(t,e,r)=>{const u=k.entityPadding/3,l=k.entityPadding/3,p=k.fontSize*.85,f=e.node().getBBox(),o=[];let h=!1,_=!1,m=0,g=0,x=0,y=0,N=f.height+u*2,I=1;r.forEach(T=>{T.attributeKeyTypeList!==void 0&&T.attributeKeyTypeList.length>0&&(h=!0),T.attributeComment!==void 0&&(_=!0)}),r.forEach(T=>{const M=`${e.node().id}-attr-${I}`;let R=0;const O=At(T.attributeType),D=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(O),S=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(T.attributeName),a={};a.tn=D,a.nn=S;const n=D.node().getBBox(),c=S.node().getBBox();if(m=Math.max(m,n.width),g=Math.max(g,c.width),R=Math.max(n.height,c.height),h){const d=T.attributeKeyTypeList!==void 0?T.attributeKeyTypeList.join(","):"",E=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(d);a.kn=E;const i=E.node().getBBox();x=Math.max(x,i.width),R=Math.max(R,i.height)}if(_){const d=t.append("text").classed("er entityLabel",!0).attr("id",`${M}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Z().fontFamily).style("font-size",p+"px").text(T.attributeComment||"");a.cn=d;const E=d.node().getBBox();y=Math.max(y,E.width),R=Math.max(R,E.height)}a.height=R,o.push(a),N+=R+u*2,I+=1});let F=4;h&&(F+=2),_&&(F+=2);const W=m+g+x+y,C={width:Math.max(k.minEntityWidth,Math.max(f.width+k.entityPadding*2,W+l*F)),height:r.length>0?N:Math.max(k.minEntityHeight,f.height+k.entityPadding*2)};if(r.length>0){const T=Math.max(0,(C.width-W-l*F)/(F/2));e.attr("transform","translate("+C.width/2+","+(u+f.height/2)+")");let M=f.height+u*2,R="attributeBoxOdd";o.forEach(O=>{const D=M+u+O.height/2;O.tn.attr("transform","translate("+l+","+D+")");const S=t.insert("rect","#"+O.tn.node().id).classed(`er ${R}`,!0).attr("x",0).attr("y",M).attr("width",m+l*2+T).attr("height",O.height+u*2),a=parseFloat(S.attr("x"))+parseFloat(S.attr("width"));O.nn.attr("transform","translate("+(a+l)+","+D+")");const n=t.insert("rect","#"+O.nn.node().id).classed(`er ${R}`,!0).attr("x",a).attr("y",M).attr("width",g+l*2+T).attr("height",O.height+u*2);let c=parseFloat(n.attr("x"))+parseFloat(n.attr("width"));if(h){O.kn.attr("transform","translate("+(c+l)+","+D+")");const d=t.insert("rect","#"+O.kn.node().id).classed(`er ${R}`,!0).attr("x",c).attr("y",M).attr("width",x+l*2+T).attr("height",O.height+u*2);c=parseFloat(d.attr("x"))+parseFloat(d.attr("width"))}_&&(O.cn.attr("transform","translate("+(c+l)+","+D+")"),t.insert("rect","#"+O.cn.node().id).classed(`er ${R}`,"true").attr("x",c).attr("y",M).attr("width",y+l*2+T).attr("height",O.height+u*2)),M+=O.height+u*2,R=R==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else C.height=Math.max(k.minEntityHeight,N),e.attr("transform","translate("+C.width/2+","+C.height/2+")");return C},re=function(t,e,r){const u=Object.keys(e);let l;return u.forEach(function(p){const f=le(p,"entity");X.set(p,f);const o=t.append("g").attr("id",f);l=l===void 0?f:l;const h="text-"+f,_=o.append("text").classed("er entityLabel",!0).attr("id",h).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Z().fontFamily).style("font-size",k.fontSize+"px").text(e[p].alias??p),{width:m,height:g}=ee(o,_,e[p].attributes),y=o.insert("rect","#"+h).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",m).attr("height",g).node().getBBox();r.setNode(f,{width:y.width,height:y.height,shape:"rect",id:f})}),l},ie=function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )")})},ut=function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},ae=function(t,e){return t.forEach(function(r){e.setEdge(X.get(r.entityA),X.get(r.entityB),{relationship:r},ut(r))}),t};let ct=0;const ne=function(t,e,r,u,l){ct++;const p=r.edge(X.get(e.entityA),X.get(e.entityB),ut(e)),f=wt().x(function(N){return N.x}).y(function(N){return N.y}).curve(Tt),o=t.insert("path","#"+u).classed("er relationshipLine",!0).attr("d",f(p.points)).style("stroke",k.stroke).style("fill","none");e.relSpec.relType===l.db.Identification.NON_IDENTIFYING&&o.attr("stroke-dasharray","8,8");let h="";switch(k.arrowMarkerAbsolute&&(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,h=h.replace(/\(/g,"\\("),h=h.replace(/\)/g,"\\)")),e.relSpec.cardA){case l.db.Cardinality.ZERO_OR_ONE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ZERO_OR_ONE_END+")");break;case l.db.Cardinality.ZERO_OR_MORE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ZERO_OR_MORE_END+")");break;case l.db.Cardinality.ONE_OR_MORE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ONE_OR_MORE_END+")");break;case l.db.Cardinality.ONLY_ONE:o.attr("marker-end","url("+h+"#"+B.ERMarkers.ONLY_ONE_END+")");break;case l.db.Cardinality.MD_PARENT:o.attr("marker-end","url("+h+"#"+B.ERMarkers.MD_PARENT_END+")");break}switch(e.relSpec.cardB){case l.db.Cardinality.ZERO_OR_ONE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ZERO_OR_ONE_START+")");break;case l.db.Cardinality.ZERO_OR_MORE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ZERO_OR_MORE_START+")");break;case l.db.Cardinality.ONE_OR_MORE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ONE_OR_MORE_START+")");break;case l.db.Cardinality.ONLY_ONE:o.attr("marker-start","url("+h+"#"+B.ERMarkers.ONLY_ONE_START+")");break;case l.db.Cardinality.MD_PARENT:o.attr("marker-start","url("+h+"#"+B.ERMarkers.MD_PARENT_START+")");break}const _=o.node().getTotalLength(),m=o.node().getPointAtLength(_*.5),g="rel"+ct,y=t.append("text").classed("er relationshipLabel",!0).attr("id",g).attr("x",m.x).attr("y",m.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Z().fontFamily).style("font-size",k.fontSize+"px").text(e.roleA).node().getBBox();t.insert("rect","#"+g).classed("er relationshipLabelBox",!0).attr("x",m.x-y.width/2).attr("y",m.y-y.height/2).attr("width",y.width).attr("height",y.height)},se=function(t,e,r,u){k=Z().er,V.info("Drawing ER diagram");const l=Z().securityLevel;let p;l==="sandbox"&&(p=rt("#i"+e));const o=(l==="sandbox"?rt(p.nodes()[0].contentDocument.body):rt("body")).select(`[id='${e}']`);B.insertMarkers(o,k);let h;h=new Mt({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:k.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const _=re(o,u.db.getEntities(),h),m=ae(u.db.getRelationships(),h);St(h),ie(o,h),m.forEach(function(I){ne(o,I,h,_,u)});const g=k.diagramPadding;bt.insertTitle(o,"entityTitleText",k.titleTopMargin,u.db.getDiagramTitle());const x=o.node().getBBox(),y=x.width+g*2,N=x.height+g*2;Nt(o,N,y,k.useMaxWidth),o.attr("viewBox",`${x.x-g} ${x.y-g} ${y} ${N}`)},oe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function le(t="",e=""){const r=t.replace($t,"");return`${ht(e)}${ht(r)}${Ut(t,oe)}`}function ht(t=""){return t.length>0?`${t}-`:""}const ce={setConf:te,draw:se},he=t=>` + .entityBox { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${t.attributeBackgroundColorOdd}; + stroke: ${t.nodeBorder}; + } + + .attributeBoxEven { + fill: ${t.attributeBackgroundColorEven}; + stroke: ${t.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${t.tertiaryColor}; + opacity: 0.7; + background-color: ${t.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${t.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } + +`,de=he,me={parser:zt,db:qt,renderer:ce,styles:de};export{me as diagram}; diff --git a/assets/f0e3a3ee689a10f1fa1db2a25481ad7bc5abbb13.jpg@942w_594h_progressive-dRSMhlpr.webp b/assets/f0e3a3ee689a10f1fa1db2a25481ad7bc5abbb13.jpg@942w_594h_progressive-dRSMhlpr.webp new file mode 100644 index 00000000..deba7684 Binary files /dev/null and b/assets/f0e3a3ee689a10f1fa1db2a25481ad7bc5abbb13.jpg@942w_594h_progressive-dRSMhlpr.webp differ diff --git a/assets/fb82fb8edec5b3cc583777287d507f80d74d5e39.jpg@942w_638h_progressive-cQU3tAMD.webp b/assets/fb82fb8edec5b3cc583777287d507f80d74d5e39.jpg@942w_638h_progressive-cQU3tAMD.webp new file mode 100644 index 00000000..4194bfb8 Binary files /dev/null and b/assets/fb82fb8edec5b3cc583777287d507f80d74d5e39.jpg@942w_638h_progressive-cQU3tAMD.webp differ diff --git a/assets/file-types.html-QnaqPc_S.js b/assets/file-types.html-QnaqPc_S.js new file mode 100644 index 00000000..e344f26a --- /dev/null +++ b/assets/file-types.html-QnaqPc_S.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,d as t}from"./app-Mf7X6hWu.js";const c={},d=t('

    文件类型

    [!DONE] File Types

    CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。

    独立样式

    独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。

    从属样式

    从属样式是独立样式的别名(alias),其仅包含样式元数据,不包括任何格式的指示。

    通过将具有相同引用风格的期刊(例如 "Nature Biotechnology","Nature Nanotechnology")的从属样式链接到一个单独的独立样式(例如 "Nature Journals"),从属样式就不再需要再重复一遍格式说明。

    [!NOTE] 译者注

    也就是说从属样式是依赖其他样式的,被依赖的样式成为称为父样式

    本地化文件

    每个本地化文件包含一系列对某种特定的语言 / 方言的本地化数据(术语翻译,本地化日期格式以及语法选项)。

    [!NOTE] 译者注 本地化文件主要用于在不同的语言环境中使用样式,比如在中文环境中使用,中文对应的本地化文件可以将英文中的 et al. 替换为

    ',12),r=[d];function n(h,l){return o(),a("div",null,r)}const p=e(c,[["render",n],["__file","file-types.html.vue"]]);export{p as default}; diff --git a/assets/file-types.html-w6cLRIs5.js b/assets/file-types.html-w6cLRIs5.js new file mode 100644 index 00000000..4e7c4e72 --- /dev/null +++ b/assets/file-types.html-w6cLRIs5.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3ad3b172","path":"/code/citation-style-language/specification/file-types.html","title":"文件类型","lang":"zh-CN","frontmatter":{"title":"文件类型","date":"2022-08-01T16:55:26.000Z","updated":"2022-08-03T12:19:19.000Z","description":"文件类型 [!DONE] File Types CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。 独立样式 独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/file-types.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"文件类型"}],["meta",{"property":"og:description","content":"文件类型 [!DONE] File Types CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。 独立样式 独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:55:26.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"文件类型\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:55:26.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"独立样式","slug":"独立样式","link":"#独立样式","children":[]},{"level":2,"title":"从属样式","slug":"从属样式","link":"#从属样式","children":[]},{"level":2,"title":"本地化文件","slug":"本地化文件","link":"#本地化文件","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.28,"words":384},"filePathRelative":"code/citation-style-language/specification/file-types.md","localizedDate":"2022年8月2日","excerpt":"

    文件类型

    \\n
    \\n

    [!DONE] File Types

    \\n
    \\n

    CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。

    \\n

    独立样式

    \\n

    独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/flowDb-170db09d-WyyBGkz_.js b/assets/flowDb-170db09d-WyyBGkz_.js new file mode 100644 index 00000000..c0ed2e49 --- /dev/null +++ b/assets/flowDb-170db09d-WyyBGkz_.js @@ -0,0 +1,6 @@ +import{c as ft,u as ye,s as me,g as ve,a as Ve,b as Le,v as Ie,x as Re,l as Z1,y as At,z as Ne,j as Oe,h as N1}from"./mermaid.core-Up0YySao.js";var ht=function(){var e=function(h1,a,o,p){for(o=o||{},p=h1.length;p--;o[h1[p]]=a);return o},u=[1,4],i=[1,3],n=[1,5],c=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],l=[2,2],h=[1,13],U=[1,14],F=[1,15],O=[1,16],z=[1,23],c1=[1,25],f1=[1,26],A1=[1,27],S=[1,49],k=[1,48],o1=[1,29],w1=[1,30],U1=[1,31],G1=[1,32],M1=[1,33],B=[1,44],x=[1,46],y=[1,42],m=[1,47],v=[1,43],V=[1,50],L=[1,45],I=[1,51],R=[1,52],K1=[1,34],j1=[1,35],Y1=[1,36],X1=[1,37],L1=[1,57],b=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],W=[1,61],q=[1,60],Q=[1,62],z1=[8,9,11,73,75],k1=[1,88],b1=[1,93],g1=[1,92],D1=[1,89],F1=[1,85],T1=[1,91],C1=[1,87],S1=[1,94],_1=[1,90],B1=[1,95],x1=[1,86],H1=[8,9,10,11,73,75],N=[8,9,10,11,44,73,75],M=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Et=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],I1=[42,58,86,99,102,103,106,108,111,112,113],kt=[1,121],bt=[1,120],gt=[1,128],Dt=[1,142],Ft=[1,143],Tt=[1,144],Ct=[1,145],St=[1,130],_t=[1,132],Bt=[1,136],xt=[1,137],yt=[1,138],mt=[1,139],vt=[1,140],Vt=[1,141],Lt=[1,146],It=[1,147],Rt=[1,126],Nt=[1,127],Ot=[1,134],Pt=[1,129],wt=[1,133],Ut=[1,131],it=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],Gt=[1,149],T=[8,9,11],K=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],f=[1,169],P=[1,165],w=[1,166],A=[1,170],d=[1,167],E=[1,168],y1=[75,113,116],g=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],Mt=[10,103],l1=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],Z=[1,235],J=[1,233],$=[1,237],t1=[1,231],e1=[1,232],s1=[1,234],u1=[1,236],i1=[1,238],m1=[1,255],Kt=[8,9,11,103],H=[8,9,10,11,58,81,102,103,106,107,108,109],rt={trace:function(){},yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(a,o,p,r,C,t,R1){var s=t.length-1;switch(C){case 2:this.$=[];break;case 3:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 176:this.$=t[s];break;case 11:r.setDirection("TB"),this.$="TB";break;case 12:r.setDirection(t[s-1]),this.$=t[s-1];break;case 27:this.$=t[s-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=r.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 34:this.$=r.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 35:this.$=r.addSubGraph(void 0,t[s-1],void 0);break;case 37:this.$=t[s].trim(),r.setAccTitle(this.$);break;case 38:case 39:this.$=t[s].trim(),r.setAccDescription(this.$);break;case 43:r.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 44:r.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 45:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 46:this.$={stmt:t[s],nodes:t[s]};break;case 47:this.$=[t[s]];break;case 48:this.$=t[s-4].concat(t[s]);break;case 49:this.$=t[s];break;case 50:this.$=t[s-2],r.setClass(t[s-2],t[s]);break;case 51:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"square");break;case 52:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"doublecircle");break;case 53:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"circle");break;case 54:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"ellipse");break;case 55:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"stadium");break;case 56:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"subroutine");break;case 57:this.$=t[s-7],r.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 58:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"cylinder");break;case 59:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"round");break;case 60:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"diamond");break;case 61:this.$=t[s-5],r.addVertex(t[s-5],t[s-2],"hexagon");break;case 62:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"odd");break;case 63:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"trapezoid");break;case 64:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 65:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_right");break;case 66:this.$=t[s-3],r.addVertex(t[s-3],t[s-1],"lean_left");break;case 67:this.$=t[s],r.addVertex(t[s]);break;case 68:t[s-1].text=t[s],this.$=t[s-1];break;case 69:case 70:t[s-2].text=t[s-1],this.$=t[s-2];break;case 71:this.$=t[s];break;case 72:var j=r.destructLink(t[s],t[s-2]);this.$={type:j.type,stroke:j.stroke,length:j.length,text:t[s-1]};break;case 73:this.$={text:t[s],type:"text"};break;case 74:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 75:this.$={text:t[s],type:"string"};break;case 76:this.$={text:t[s],type:"markdown"};break;case 77:var j=r.destructLink(t[s]);this.$={type:j.type,stroke:j.stroke,length:j.length};break;case 78:this.$=t[s-1];break;case 79:this.$={text:t[s],type:"text"};break;case 80:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 81:this.$={text:t[s],type:"string"};break;case 82:case 97:this.$={text:t[s],type:"markdown"};break;case 94:this.$={text:t[s],type:"text"};break;case 95:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 96:this.$={text:t[s],type:"text"};break;case 98:this.$=t[s-4],r.addClass(t[s-2],t[s]);break;case 99:this.$=t[s-4],r.setClass(t[s-2],t[s]);break;case 100:case 108:this.$=t[s-1],r.setClickEvent(t[s-1],t[s]);break;case 101:case 109:this.$=t[s-3],r.setClickEvent(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 102:this.$=t[s-2],r.setClickEvent(t[s-2],t[s-1],t[s]);break;case 103:this.$=t[s-4],r.setClickEvent(t[s-4],t[s-3],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 104:this.$=t[s-2],r.setLink(t[s-2],t[s]);break;case 105:this.$=t[s-4],r.setLink(t[s-4],t[s-2]),r.setTooltip(t[s-4],t[s]);break;case 106:this.$=t[s-4],r.setLink(t[s-4],t[s-2],t[s]);break;case 107:this.$=t[s-6],r.setLink(t[s-6],t[s-4],t[s]),r.setTooltip(t[s-6],t[s-2]);break;case 110:this.$=t[s-1],r.setLink(t[s-1],t[s]);break;case 111:this.$=t[s-3],r.setLink(t[s-3],t[s-2]),r.setTooltip(t[s-3],t[s]);break;case 112:this.$=t[s-3],r.setLink(t[s-3],t[s-2],t[s]);break;case 113:this.$=t[s-5],r.setLink(t[s-5],t[s-4],t[s]),r.setTooltip(t[s-5],t[s-2]);break;case 114:this.$=t[s-4],r.addVertex(t[s-2],void 0,void 0,t[s]);break;case 115:this.$=t[s-4],r.updateLink([t[s-2]],t[s]);break;case 116:this.$=t[s-4],r.updateLink(t[s-2],t[s]);break;case 117:this.$=t[s-8],r.updateLinkInterpolate([t[s-6]],t[s-2]),r.updateLink([t[s-6]],t[s]);break;case 118:this.$=t[s-8],r.updateLinkInterpolate(t[s-6],t[s-2]),r.updateLink(t[s-6],t[s]);break;case 119:this.$=t[s-6],r.updateLinkInterpolate([t[s-4]],t[s]);break;case 120:this.$=t[s-6],r.updateLinkInterpolate(t[s-4],t[s]);break;case 121:case 123:this.$=[t[s]];break;case 122:case 124:t[s-2].push(t[s]),this.$=t[s-2];break;case 126:this.$=t[s-1]+t[s];break;case 174:this.$=t[s];break;case 175:this.$=t[s-1]+""+t[s];break;case 177:this.$=t[s-1]+""+t[s];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:u,10:i,12:n},{1:[3]},e(c,l,{5:6}),{4:7,9:u,10:i,12:n},{4:8,9:u,10:i,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(c,[2,9]),e(c,[2,10]),e(c,[2,11]),{8:[1,54],9:[1,55],10:L1,15:53,18:56},e(b,[2,3]),e(b,[2,4]),e(b,[2,5]),e(b,[2,6]),e(b,[2,7]),e(b,[2,8]),{8:W,9:q,11:Q,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:W,9:q,11:Q,21:66},{8:W,9:q,11:Q,21:67},{8:W,9:q,11:Q,21:68},{8:W,9:q,11:Q,21:69},{8:W,9:q,11:Q,21:70},{8:W,9:q,10:[1,71],11:Q,21:72},e(b,[2,36]),{35:[1,73]},{37:[1,74]},e(b,[2,39]),e(z1,[2,46],{18:75,10:L1}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:k1,42:b1,58:g1,77:[1,83],86:D1,92:[1,80],94:[1,81],98:82,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},e(b,[2,178]),e(b,[2,179]),e(b,[2,180]),e(b,[2,181]),e(H1,[2,47]),e(H1,[2,49],{44:[1,96]}),e(N,[2,67],{110:109,29:[1,97],42:S,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:k,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(M,[2,174]),e(M,[2,135]),e(M,[2,136]),e(M,[2,137]),e(M,[2,138]),e(M,[2,139]),e(M,[2,140]),e(M,[2,141]),e(M,[2,142]),e(M,[2,143]),e(M,[2,144]),e(M,[2,145]),e(c,[2,12]),e(c,[2,18]),e(c,[2,19]),{9:[1,110]},e(Et,[2,26],{18:111,10:L1}),e(b,[2,27]),{40:112,41:38,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(b,[2,40]),e(b,[2,41]),e(b,[2,42]),e(I1,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:kt,116:bt},e([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),e(b,[2,28]),e(b,[2,29]),e(b,[2,30]),e(b,[2,31]),e(b,[2,32]),{10:gt,12:Dt,14:Ft,27:Tt,28:122,32:Ct,42:St,58:_t,73:Bt,77:[1,124],78:[1,125],80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:123,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(it,l,{5:148}),e(b,[2,37]),e(b,[2,38]),e(z1,[2,45],{42:Gt}),{42:S,45:150,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{99:[1,151],100:152,102:[1,153]},{42:S,45:154,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{42:S,45:155,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},e(T,[2,108],{117:160,10:[1,159],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,110],{10:[1,161]}),e(K,[2,176]),e(K,[2,163]),e(K,[2,164]),e(K,[2,165]),e(K,[2,166]),e(K,[2,167]),e(K,[2,168]),e(K,[2,169]),e(K,[2,170]),e(K,[2,171]),e(K,[2,172]),e(K,[2,173]),{42:S,45:162,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{30:163,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:171,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:173,48:[1,172],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:174,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:175,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:176,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{106:[1,177]},{30:178,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:179,63:[1,180],65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:181,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:182,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{30:183,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(M,[2,175]),e(c,[2,20]),e(Et,[2,25]),e(z1,[2,43],{18:184,10:L1}),e(I1,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{75:[1,188],76:189,113:kt,116:bt},e(y1,[2,73]),e(y1,[2,75]),e(y1,[2,76]),e(y1,[2,161]),e(y1,[2,162]),{8:W,9:q,10:gt,11:Q,12:Dt,14:Ft,21:191,27:Tt,29:[1,190],32:Ct,42:St,58:_t,73:Bt,80:135,81:xt,82:yt,83:mt,84:vt,85:Vt,86:Lt,87:It,88:192,102:Rt,106:Nt,108:Ot,111:Pt,112:wt,113:Ut},e(g,[2,94]),e(g,[2,96]),e(g,[2,97]),e(g,[2,150]),e(g,[2,151]),e(g,[2,152]),e(g,[2,153]),e(g,[2,154]),e(g,[2,155]),e(g,[2,156]),e(g,[2,157]),e(g,[2,158]),e(g,[2,159]),e(g,[2,160]),e(g,[2,83]),e(g,[2,84]),e(g,[2,85]),e(g,[2,86]),e(g,[2,87]),e(g,[2,88]),e(g,[2,89]),e(g,[2,90]),e(g,[2,91]),e(g,[2,92]),e(g,[2,93]),{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,193],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:L1,18:194},{10:[1,195],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,196]},{10:[1,197],103:[1,198]},e(Mt,[2,121]),{10:[1,199],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{10:[1,200],42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:109,111:L,112:I,113:R},{77:[1,201]},e(T,[2,102],{10:[1,202]}),e(T,[2,104],{10:[1,203]}),{77:[1,204]},e(K,[2,177]),{77:[1,205],95:[1,206]},e(H1,[2,50],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),{31:[1,207],65:f,79:208,113:A,114:d,115:E},e(l1,[2,79]),e(l1,[2,81]),e(l1,[2,82]),e(l1,[2,146]),e(l1,[2,147]),e(l1,[2,148]),e(l1,[2,149]),{47:[1,209],65:f,79:208,113:A,114:d,115:E},{30:210,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{49:[1,211],65:f,79:208,113:A,114:d,115:E},{51:[1,212],65:f,79:208,113:A,114:d,115:E},{53:[1,213],65:f,79:208,113:A,114:d,115:E},{55:[1,214],65:f,79:208,113:A,114:d,115:E},{58:[1,215]},{62:[1,216],65:f,79:208,113:A,114:d,115:E},{64:[1,217],65:f,79:208,113:A,114:d,115:E},{30:218,65:f,77:P,78:w,79:164,113:A,114:d,115:E},{31:[1,219],65:f,79:208,113:A,114:d,115:E},{65:f,67:[1,220],69:[1,221],79:208,113:A,114:d,115:E},{65:f,67:[1,223],69:[1,222],79:208,113:A,114:d,115:E},e(z1,[2,44],{42:Gt}),e(I1,[2,70]),e(I1,[2,69]),{60:[1,224],65:f,79:208,113:A,114:d,115:E},e(I1,[2,72]),e(y1,[2,74]),{30:225,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(it,l,{5:226}),e(g,[2,95]),e(b,[2,35]),{41:227,42:S,43:39,45:40,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},{10:Z,58:J,81:$,89:228,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:239,101:[1,240],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:241,101:[1,242],102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{102:[1,243]},{10:Z,58:J,81:$,89:244,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{42:S,45:245,58:k,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R},e(T,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},e(T,[2,109]),e(T,[2,111],{10:[1,249]}),e(T,[2,112]),e(N,[2,51]),e(l1,[2,80]),e(N,[2,52]),{49:[1,250],65:f,79:208,113:A,114:d,115:E},e(N,[2,59]),e(N,[2,54]),e(N,[2,55]),e(N,[2,56]),{106:[1,251]},e(N,[2,58]),e(N,[2,60]),{64:[1,252],65:f,79:208,113:A,114:d,115:E},e(N,[2,62]),e(N,[2,63]),e(N,[2,65]),e(N,[2,64]),e(N,[2,66]),e([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,254],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},e(H1,[2,48]),e(T,[2,114],{103:m1}),e(Kt,[2,123],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(H,[2,125]),e(H,[2,127]),e(H,[2,128]),e(H,[2,129]),e(H,[2,130]),e(H,[2,131]),e(H,[2,132]),e(H,[2,133]),e(H,[2,134]),e(T,[2,115],{103:m1}),{10:[1,257]},e(T,[2,116],{103:m1}),{10:[1,258]},e(Mt,[2,122]),e(T,[2,98],{103:m1}),e(T,[2,99],{110:109,42:S,58:k,86:B,99:x,102:y,103:m,106:v,108:V,111:L,112:I,113:R}),e(T,[2,103]),e(T,[2,105],{10:[1,259]}),e(T,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:W,9:q,11:Q,21:264},e(b,[2,34]),{10:Z,58:J,81:$,102:t1,104:265,105:230,106:e1,107:s1,108:u1,109:i1},e(H,[2,126]),{14:k1,42:b1,58:g1,86:D1,98:266,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{14:k1,42:b1,58:g1,86:D1,98:267,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1,117:84},{95:[1,268]},e(T,[2,113]),e(N,[2,53]),{30:269,65:f,77:P,78:w,79:164,113:A,114:d,115:E},e(N,[2,61]),e(it,l,{5:270}),e(Kt,[2,124],{105:256,10:Z,58:J,81:$,102:t1,106:e1,107:s1,108:u1,109:i1}),e(T,[2,119],{117:160,10:[1,271],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,120],{117:160,10:[1,272],14:k1,42:b1,58:g1,86:D1,102:F1,103:T1,106:C1,108:S1,111:_1,112:B1,113:x1}),e(T,[2,107]),{31:[1,273],65:f,79:208,113:A,114:d,115:E},{6:11,7:12,8:h,9:U,10:F,11:O,20:17,22:18,23:19,24:20,25:21,26:22,27:z,32:[1,274],33:24,34:c1,36:f1,38:A1,40:28,41:38,42:S,43:39,45:40,58:k,81:o1,82:w1,83:U1,84:G1,85:M1,86:B,99:x,102:y,103:m,106:v,108:V,110:41,111:L,112:I,113:R,118:K1,119:j1,120:Y1,121:X1},{10:Z,58:J,81:$,89:275,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},{10:Z,58:J,81:$,89:276,102:t1,104:229,105:230,106:e1,107:s1,108:u1,109:i1},e(N,[2,57]),e(b,[2,33]),e(T,[2,117],{103:m1}),e(T,[2,118],{103:m1})],defaultActions:{},parseError:function(a,o){if(o.recoverable)this.trace(a);else{var p=new Error(a);throw p.hash=o,p}},parse:function(a){var o=this,p=[0],r=[],C=[null],t=[],R1=this.table,s="",j=0,jt=0,Se=2,Yt=1,_e=t.slice.call(arguments,1),_=Object.create(this.lexer),d1={yy:{}};for(var at in this.yy)Object.prototype.hasOwnProperty.call(this.yy,at)&&(d1.yy[at]=this.yy[at]);_.setInput(a,d1.yy),d1.yy.lexer=_,d1.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var ct=_.yylloc;t.push(ct);var Be=_.options&&_.options.ranges;typeof d1.yy.parseError=="function"?this.parseError=d1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xe(){var n1;return n1=r.pop()||_.lex()||Yt,typeof n1!="number"&&(n1 instanceof Array&&(r=n1,n1=r.pop()),n1=o.symbols_[n1]||n1),n1}for(var G,E1,Y,ot,v1={},W1,r1,Xt,q1;;){if(E1=p[p.length-1],this.defaultActions[E1]?Y=this.defaultActions[E1]:((G===null||typeof G>"u")&&(G=xe()),Y=R1[E1]&&R1[E1][G]),typeof Y>"u"||!Y.length||!Y[0]){var lt="";q1=[];for(W1 in R1[E1])this.terminals_[W1]&&W1>Se&&q1.push("'"+this.terminals_[W1]+"'");_.showPosition?lt="Parse error on line "+(j+1)+`: +`+_.showPosition()+` +Expecting `+q1.join(", ")+", got '"+(this.terminals_[G]||G)+"'":lt="Parse error on line "+(j+1)+": Unexpected "+(G==Yt?"end of input":"'"+(this.terminals_[G]||G)+"'"),this.parseError(lt,{text:_.match,token:this.terminals_[G]||G,line:_.yylineno,loc:ct,expected:q1})}if(Y[0]instanceof Array&&Y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E1+", token: "+G);switch(Y[0]){case 1:p.push(G),C.push(_.yytext),t.push(_.yylloc),p.push(Y[1]),G=null,jt=_.yyleng,s=_.yytext,j=_.yylineno,ct=_.yylloc;break;case 2:if(r1=this.productions_[Y[1]][1],v1.$=C[C.length-r1],v1._$={first_line:t[t.length-(r1||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(r1||1)].first_column,last_column:t[t.length-1].last_column},Be&&(v1._$.range=[t[t.length-(r1||1)].range[0],t[t.length-1].range[1]]),ot=this.performAction.apply(v1,[s,jt,j,d1.yy,Y[1],C,t].concat(_e)),typeof ot<"u")return ot;r1&&(p=p.slice(0,-1*r1*2),C=C.slice(0,-1*r1),t=t.slice(0,-1*r1)),p.push(this.productions_[Y[1]][0]),C.push(v1.$),t.push(v1._$),Xt=R1[p[p.length-2]][p[p.length-1]],p.push(Xt);break;case 3:return!0}}return!0}},Ce=function(){var h1={EOF:1,parseError:function(o,p){if(this.yy.parser)this.yy.parser.parseError(o,p);else throw new Error(o)},setInput:function(a,o){return this.yy=o||this.yy||{},this._input=a,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var o=a.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var o=a.length,p=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),p.length-1&&(this.yylineno-=p.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:p?(p.length===r.length?this.yylloc.first_column:0)+r[r.length-p.length].length-p[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),o=new Array(a.length+1).join("-");return a+this.upcomingInput()+` +`+o+"^"},test_match:function(a,o){var p,r,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),r=a[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+a[0].length},this.yytext+=a[0],this.match+=a[0],this.matches=a,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(a[0].length),this.matched+=a[0],p=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),p)return p;if(this._backtrack){for(var t in C)this[t]=C[t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,o,p,r;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),t=0;to[0].length)){if(o=p,r=t,this.options.backtrack_lexer){if(a=this.test_match(p,C[t]),a!==!1)return a;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(a=this.test_match(o,C[r]),a!==!1?a:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(o,p,r,C){switch(r){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 92;case 11:this.popState();break;case 12:return 93;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("md_string");break;case 16:return"STR";case 17:this.popState();break;case 18:this.pushState("string");break;case 19:return 81;case 20:return 99;case 21:return 82;case 22:return 101;case 23:return 83;case 24:return 84;case 25:return 94;case 26:this.begin("click");break;case 27:this.popState();break;case 28:return 85;case 29:return o.lex.firstGraph()&&this.begin("dir"),12;case 30:return o.lex.firstGraph()&&this.begin("dir"),12;case 31:return o.lex.firstGraph()&&this.begin("dir"),12;case 32:return 27;case 33:return 32;case 34:return 95;case 35:return 95;case 36:return 95;case 37:return 95;case 38:return this.popState(),13;case 39:return this.popState(),14;case 40:return this.popState(),14;case 41:return this.popState(),14;case 42:return this.popState(),14;case 43:return this.popState(),14;case 44:return this.popState(),14;case 45:return this.popState(),14;case 46:return this.popState(),14;case 47:return this.popState(),14;case 48:return this.popState(),14;case 49:return 118;case 50:return 119;case 51:return 120;case 52:return 121;case 53:return 102;case 54:return 108;case 55:return 44;case 56:return 58;case 57:return 42;case 58:return 8;case 59:return 103;case 60:return 112;case 61:return this.popState(),75;case 62:return this.pushState("edgeText"),73;case 63:return 116;case 64:return this.popState(),75;case 65:return this.pushState("thickEdgeText"),73;case 66:return 116;case 67:return this.popState(),75;case 68:return this.pushState("dottedEdgeText"),73;case 69:return 116;case 70:return 75;case 71:return this.popState(),51;case 72:return"TEXT";case 73:return this.pushState("ellipseText"),50;case 74:return this.popState(),53;case 75:return this.pushState("text"),52;case 76:return this.popState(),55;case 77:return this.pushState("text"),54;case 78:return 56;case 79:return this.pushState("text"),65;case 80:return this.popState(),62;case 81:return this.pushState("text"),61;case 82:return this.popState(),47;case 83:return this.pushState("text"),46;case 84:return this.popState(),67;case 85:return this.popState(),69;case 86:return 114;case 87:return this.pushState("trapText"),66;case 88:return this.pushState("trapText"),68;case 89:return 115;case 90:return 65;case 91:return 87;case 92:return"SEP";case 93:return 86;case 94:return 112;case 95:return 108;case 96:return 42;case 97:return 106;case 98:return 111;case 99:return 113;case 100:return this.popState(),60;case 101:return this.pushState("text"),60;case 102:return this.popState(),49;case 103:return this.pushState("text"),48;case 104:return this.popState(),31;case 105:return this.pushState("text"),29;case 106:return this.popState(),64;case 107:return this.pushState("text"),63;case 108:return"TEXT";case 109:return"QUOTE";case 110:return 9;case 111:return 10;case 112:return 11}},rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{callbackargs:{rules:[11,12,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},callbackname:{rules:[8,9,10,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},href:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},click:{rules:[15,18,27,28,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dottedEdgeText:{rules:[15,18,67,69,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},thickEdgeText:{rules:[15,18,64,66,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},edgeText:{rules:[15,18,61,63,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},trapText:{rules:[15,18,70,73,75,77,81,83,84,85,86,87,88,101,103,105,107],inclusive:!1},ellipseText:{rules:[15,18,70,71,72,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},text:{rules:[15,18,70,73,74,75,76,77,80,81,82,83,87,88,100,101,102,103,104,105,106,107,108],inclusive:!1},vertex:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dir:{rules:[15,18,38,39,40,41,42,43,44,45,46,47,48,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr_multiline:{rules:[5,6,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr:{rules:[3,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_title:{rules:[1,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},md_string:{rules:[13,14,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},string:{rules:[15,16,17,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},INITIAL:{rules:[0,2,4,7,15,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,73,75,77,78,79,81,83,87,88,89,90,91,92,93,94,95,96,97,98,99,101,103,105,107,109,110,111,112],inclusive:!0}}};return h1}();rt.lexer=Ce;function nt(){this.yy={}}return nt.prototype=rt,rt.Parser=nt,new nt}();ht.parser=ht;const ze=ht,Pe="flowchart-";let zt=0,dt=ft(),D={},p1=[],V1={},a1=[],J1={},$1={},Q1=0,pt=!0,X,tt,et=[];const st=e=>Oe.sanitizeText(e,dt),P1=function(e){const u=Object.keys(D);for(const i of u)if(D[i].id===e)return D[i].domId;return e},Ht=function(e,u,i,n,c,l,h={}){let U,F=e;F!==void 0&&F.trim().length!==0&&(D[F]===void 0&&(D[F]={id:F,labelType:"text",domId:Pe+F+"-"+zt,styles:[],classes:[]}),zt++,u!==void 0?(dt=ft(),U=st(u.text.trim()),D[F].labelType=u.type,U[0]==='"'&&U[U.length-1]==='"'&&(U=U.substring(1,U.length-1)),D[F].text=U):D[F].text===void 0&&(D[F].text=e),i!==void 0&&(D[F].type=i),n!=null&&n.forEach(function(O){D[F].styles.push(O)}),c!=null&&c.forEach(function(O){D[F].classes.push(O)}),l!==void 0&&(D[F].dir=l),D[F].props===void 0?D[F].props=h:h!==void 0&&Object.assign(D[F].props,h))},Wt=function(e,u,i){const l={start:e,end:u,type:void 0,text:"",labelType:"text"};Z1.info("abc78 Got edge...",l);const h=i.text;if(h!==void 0&&(l.text=st(h.text.trim()),l.text[0]==='"'&&l.text[l.text.length-1]==='"'&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=h.type),i!==void 0&&(l.type=i.type,l.stroke=i.stroke,l.length=i.length),(l==null?void 0:l.length)>10&&(l.length=10),p1.length<280)Z1.info("abc78 pushing edge..."),p1.push(l);else throw new Error("Too many edges")},qt=function(e,u,i){Z1.info("addLink (abc78)",e,u,i);let n,c;for(n=0;n/)&&(X="LR"),X.match(/.*v/)&&(X="TB"),X==="TD"&&(X="TB")},ut=function(e,u){e.split(",").forEach(function(i){let n=i;D[n]!==void 0&&D[n].classes.push(u),J1[n]!==void 0&&J1[n].classes.push(u)})},we=function(e,u){e.split(",").forEach(function(i){u!==void 0&&($1[tt==="gen-1"?P1(i):i]=st(u))})},Ue=function(e,u,i){let n=P1(e);if(ft().securityLevel!=="loose"||u===void 0)return;let c=[];if(typeof i=="string"){c=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l")),c.classed("hover",!0)}).on("mouseout",function(){u.transition().duration(500).style("opacity",0),N1(this).classed("hover",!1)})};et.push(ce);const oe=function(e="gen-1"){D={},V1={},p1=[],et=[ce],a1=[],J1={},Q1=0,$1={},pt=!0,tt=e,Ne()},le=e=>{tt=e||"gen-2"},he=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},pe=function(e,u,i){let n=e.text.trim(),c=i.text;e===i&&i.text.match(/\s/)&&(n=void 0);function l(z){const c1={boolean:{},number:{},string:{}},f1=[];let A1;return{nodeList:z.filter(function(k){const o1=typeof k;return k.stmt&&k.stmt==="dir"?(A1=k.value,!1):k.trim()===""?!1:o1 in c1?c1[o1].hasOwnProperty(k)?!1:c1[o1][k]=!0:f1.includes(k)?!1:f1.push(k)}),dir:A1}}let h=[];const{nodeList:U,dir:F}=l(h.concat.apply(h,u));if(h=U,tt==="gen-1")for(let z=0;z2e3)return;if(fe[O1]=u,a1[u].id===e)return{result:!0,count:0};let n=0,c=1;for(;n=0){const h=Ae(e,l);if(h.result)return{result:!0,count:c+h.count};c=c+h.count}n=n+1}return{result:!1,count:c}},de=function(e){return fe[e]},Ee=function(){O1=-1,a1.length>0&&Ae("none",a1.length-1)},ke=function(){return a1},be=()=>pt?(pt=!1,!0):!1,Me=e=>{let u=e.trim(),i="arrow_open";switch(u[0]){case"<":i="arrow_point",u=u.slice(1);break;case"x":i="arrow_cross",u=u.slice(1);break;case"o":i="arrow_circle",u=u.slice(1);break}let n="normal";return u.includes("=")&&(n="thick"),u.includes(".")&&(n="dotted"),{type:i,stroke:n}},Ke=(e,u)=>{const i=u.length;let n=0;for(let c=0;c{const u=e.trim();let i=u.slice(0,-1),n="arrow_open";switch(u.slice(-1)){case"x":n="arrow_cross",u[0]==="x"&&(n="double_"+n,i=i.slice(1));break;case">":n="arrow_point",u[0]==="<"&&(n="double_"+n,i=i.slice(1));break;case"o":n="arrow_circle",u[0]==="o"&&(n="double_"+n,i=i.slice(1));break}let c="normal",l=i.length-1;i[0]==="="&&(c="thick"),i[0]==="~"&&(c="invisible");let h=Ke(".",i);return h&&(c="dotted",l=h),{type:n,stroke:c,length:l}},ge=(e,u)=>{const i=je(e);let n;if(u){if(n=Me(u),n.stroke!==i.stroke)return{type:"INVALID",stroke:"INVALID"};if(n.type==="arrow_open")n.type=i.type;else{if(n.type!==i.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return n.type==="double_arrow"&&(n.type="double_arrow_point"),n.length=i.length,n}return i},De=(e,u)=>{let i=!1;return e.forEach(n=>{n.nodes.indexOf(u)>=0&&(i=!0)}),i},Fe=(e,u)=>{const i=[];return e.nodes.forEach((n,c)=>{De(u,n)||i.push(e.nodes[c])}),{nodes:i}},Te={firstGraph:be},Ye={defaultConfig:()=>ye.flowchart,setAccTitle:me,getAccTitle:ve,getAccDescription:Ve,setAccDescription:Le,addVertex:Ht,lookUpDomId:P1,addLink:qt,updateLinkInterpolate:Qt,updateLink:Zt,addClass:Jt,setDirection:$t,setClass:ut,setTooltip:we,getTooltip:ee,setClickEvent:se,setLink:te,bindFunctions:ue,getDirection:ie,getVertices:re,getEdges:ne,getClasses:ae,clear:oe,setGen:le,defaultStyle:he,addSubGraph:pe,getDepthFirstPos:de,indexNodes:Ee,getSubGraphs:ke,destructLink:ge,lex:Te,exists:De,makeUniq:Fe,setDiagramTitle:Ie,getDiagramTitle:Re},He=Object.freeze(Object.defineProperty({__proto__:null,addClass:Jt,addLink:qt,addSingleLink:Wt,addSubGraph:pe,addVertex:Ht,bindFunctions:ue,clear:oe,default:Ye,defaultStyle:he,destructLink:ge,firstGraph:be,getClasses:ae,getDepthFirstPos:de,getDirection:ie,getEdges:ne,getSubGraphs:ke,getTooltip:ee,getVertices:re,indexNodes:Ee,lex:Te,lookUpDomId:P1,setClass:ut,setClickEvent:se,setDirection:$t,setGen:le,setLink:te,updateLink:Zt,updateLinkInterpolate:Qt},Symbol.toStringTag,{value:"Module"}));export{He as d,Ye as f,ze as p}; diff --git a/assets/flowDiagram-61eb444c-2NEM-51B.js b/assets/flowDiagram-61eb444c-2NEM-51B.js new file mode 100644 index 00000000..c53da766 --- /dev/null +++ b/assets/flowDiagram-61eb444c-2NEM-51B.js @@ -0,0 +1,4 @@ +import{p as St,f as W}from"./flowDb-170db09d-WyyBGkz_.js";import{h as S,u as Lt,r as Et,p as _t,l as Tt,d as M,f as tt,G as Nt}from"./layout-bNXk8SHo.js";import{h as x,o as P,p as z,q as et,c as J,j as rt,l as R,r as V,t as At}from"./mermaid.core-Up0YySao.js";import{a as N,b as at,i as nt,c as _,e as st,d as it,f as Ct,g as It,s as Bt}from"./styles-b966c4ae-SO_n7QzH.js";import{l as Mt}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./index-67a42d7d-Sclb7lyu.js";import"./edges-80f1ebb6-Okp3_yLQ.js";import"./createText-aebacdfe-sWKH4swq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function Dt(r){if(!r.ok)throw new Error(r.status+" "+r.statusText);return r.text()}function Rt(r,e){return fetch(r,e).then(Dt)}function Gt(r){return(e,t)=>Rt(e,t).then(n=>new DOMParser().parseFromString(n,r))}var Pt=Gt("image/svg+xml"),Y={normal:$t,vee:Wt,undirected:Vt};function Ut(r){Y=r}function $t(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Wt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function Vt(r,e,t,n){var a=r.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto"),s=a.append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");N(s,t[n+"Style"]),t[n+"Class"]&&s.attr("class",t[n+"Class"])}function zt(r,e){var t=r;return t.node().appendChild(e.label),N(t,e.labelStyle),t}function Yt(r,e){for(var t=r.append("text"),n=Ht(e.label).split(` +`),a=0;a0}function T(r,e,t){var n=r.x,a=r.y,s=[],i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;e.forEach(function(p){i=Math.min(i,p.x),o=Math.min(o,p.y)});for(var c=n-r.width/2-i,d=a-r.height/2-o,l=0;l1&&s.sort(function(p,g){var f=p.x-t.x,y=p.y-t.y,k=Math.sqrt(f*f+y*y),I=g.x-t.x,E=g.y-t.y,U=Math.sqrt(I*I+E*E);return kMath.abs(a)*o?(s<0&&(o=-o),c=s===0?0:o*a/s,d=o):(a<0&&(i=-i),c=i,d=a===0?0:i*s/a),{x:t+c,y:n+d}}var Q={rect:ie,ellipse:oe,circle:le,diamond:ce};function se(r){Q=r}function ie(r,e,t){var n=r.insert("rect",":first-child").attr("rx",t.rx).attr("ry",t.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return t.intersect=function(a){return Z(t,a)},n}function oe(r,e,t){var n=e.width/2,a=e.height/2,s=r.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",n).attr("ry",a);return t.intersect=function(i){return lt(t,n,a,i)},s}function le(r,e,t){var n=Math.max(e.width,e.height)/2,a=r.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",n);return t.intersect=function(s){return ae(t,n,s)},a}function ce(r,e,t){var n=e.width*Math.SQRT2/2,a=e.height*Math.SQRT2/2,s=[{x:0,y:-a},{x:-n,y:0},{x:0,y:a},{x:n,y:0}],i=r.insert("polygon",":first-child").attr("points",s.map(function(o){return o.x+","+o.y}).join(" "));return t.intersect=function(o){return T(t,s,o)},i}function de(){var r=function(e,t){fe(t);var n=D(e,"output"),a=D(n,"clusters"),s=D(n,"edgePaths"),i=X(D(n,"edgeLabels"),t),o=q(D(n,"nodes"),t,Q);Tt(t),re(o,t),ee(i,t),F(s,t,Y);var c=H(a,t);te(c,t),pe(t)};return r.createNodes=function(e){return arguments.length?(jt(e),r):q},r.createClusters=function(e){return arguments.length?(Xt(e),r):H},r.createEdgeLabels=function(e){return arguments.length?(Ft(e),r):X},r.createEdgePaths=function(e){return arguments.length?(qt(e),r):F},r.shapes=function(e){return arguments.length?(se(e),r):Q},r.arrows=function(e){return arguments.length?(Ut(e),r):Y},r}var he={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},ue={arrowhead:"normal",curve:P};function fe(r){r.nodes().forEach(function(e){var t=r.node(e);!S(t,"label")&&!r.children(e).length&&(t.label=e),S(t,"paddingX")&&M(t,{paddingLeft:t.paddingX,paddingRight:t.paddingX}),S(t,"paddingY")&&M(t,{paddingTop:t.paddingY,paddingBottom:t.paddingY}),S(t,"padding")&&M(t,{paddingLeft:t.padding,paddingRight:t.padding,paddingTop:t.padding,paddingBottom:t.padding}),M(t,he),tt(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(n){t[n]=Number(t[n])}),S(t,"width")&&(t._prevWidth=t.width),S(t,"height")&&(t._prevHeight=t.height)}),r.edges().forEach(function(e){var t=r.edge(e);S(t,"label")||(t.label=""),M(t,ue)})}function pe(r){tt(r.nodes(),function(e){var t=r.node(e);S(t,"_prevWidth")?t.width=t._prevWidth:delete t.width,S(t,"_prevHeight")?t.height=t._prevHeight:delete t.height,delete t._prevWidth,delete t._prevHeight})}function D(r,e){var t=r.select("g."+e);return t.empty()&&(t=r.append("g").attr("class",e)),t}function ct(r,e,t){const n=e.width,a=e.height,s=(n+a)*.9,i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}],o=A(r,s,s,i);return t.intersect=function(c){return T(t,i,c)},o}function dt(r,e,t){const a=e.height,s=a/4,i=e.width+2*s,o=[{x:s,y:0},{x:i-s,y:0},{x:i,y:-a/2},{x:i-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],c=A(r,i,a,o);return t.intersect=function(d){return T(t,o,d)},c}function ht(r,e,t){const n=e.width,a=e.height,s=[{x:-a/2,y:0},{x:n,y:0},{x:n,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function ut(r,e,t){const n=e.width,a=e.height,s=[{x:-2*a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function ft(r,e,t){const n=e.width,a=e.height,s=[{x:2*a/6,y:0},{x:n+a/6,y:0},{x:n-2*a/6,y:-a},{x:-a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function pt(r,e,t){const n=e.width,a=e.height,s=[{x:-2*a/6,y:0},{x:n+2*a/6,y:0},{x:n-a/6,y:-a},{x:a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function vt(r,e,t){const n=e.width,a=e.height,s=[{x:a/6,y:0},{x:n-a/6,y:0},{x:n+2*a/6,y:-a},{x:-2*a/6,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function yt(r,e,t){const n=e.width,a=e.height,s=[{x:0,y:0},{x:n+a/2,y:0},{x:n,y:-a/2},{x:n+a/2,y:-a},{x:0,y:-a}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function gt(r,e,t){const n=e.height,a=e.width+n/4,s=r.insert("rect",":first-child").attr("rx",n/2).attr("ry",n/2).attr("x",-a/2).attr("y",-n/2).attr("width",a).attr("height",n);return t.intersect=function(i){return Z(t,i)},s}function wt(r,e,t){const n=e.width,a=e.height,s=[{x:0,y:0},{x:n,y:0},{x:n,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:n+8,y:0},{x:n+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],i=A(r,n,a,s);return t.intersect=function(o){return T(t,s,o)},i}function mt(r,e,t){const n=e.width,a=n/2,s=a/(2.5+n/50),i=e.height+s,o="M 0,"+s+" a "+a+","+s+" 0,0,0 "+n+" 0 a "+a+","+s+" 0,0,0 "+-n+" 0 l 0,"+i+" a "+a+","+s+" 0,0,0 "+n+" 0 l 0,"+-i,c=r.attr("label-offset-y",s).insert("path",":first-child").attr("d",o).attr("transform","translate("+-n/2+","+-(i/2+s)+")");return t.intersect=function(d){const l=Z(t,d),v=l.x-t.x;if(a!=0&&(Math.abs(v)t.height/2-s)){let h=s*s*(1-v*v/(a*a));h!=0&&(h=Math.sqrt(h)),h=s-h,d.y-t.y>0&&(h=-h),l.y+=h}return l},c}function ve(r){r.shapes().question=ct,r.shapes().hexagon=dt,r.shapes().stadium=gt,r.shapes().subroutine=wt,r.shapes().cylinder=mt,r.shapes().rect_left_inv_arrow=ht,r.shapes().lean_right=ut,r.shapes().lean_left=ft,r.shapes().trapezoid=pt,r.shapes().inv_trapezoid=vt,r.shapes().rect_right_inv_arrow=yt}function ye(r){r({question:ct}),r({hexagon:dt}),r({stadium:gt}),r({subroutine:wt}),r({cylinder:mt}),r({rect_left_inv_arrow:ht}),r({lean_right:ut}),r({lean_left:ft}),r({trapezoid:pt}),r({inv_trapezoid:vt}),r({rect_right_inv_arrow:yt})}function A(r,e,t,n){return r.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+-e/2+","+t/2+")")}const ge={addToRender:ve,addToRenderV2:ye},xt={},we=function(r){const e=Object.keys(r);for(const t of e)xt[t]=r[t]},bt=function(r,e,t,n,a,s){const i=n?n.select(`[id="${t}"]`):x(`[id="${t}"]`),o=a||document;Object.keys(r).forEach(function(d){const l=r[d];let v="default";l.classes.length>0&&(v=l.classes.join(" "));const h=z(l.styles);let u=l.text!==void 0?l.text:l.id,p;if(et(J().flowchart.htmlLabels)){const y={label:u.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};p=at(i,y).node(),p.parentNode.removeChild(p)}else{const y=o.createElementNS("http://www.w3.org/2000/svg","text");y.setAttribute("style",h.labelStyle.replace("color:","fill:"));const k=u.split(rt.lineBreakRegex);for(const I of k){const E=o.createElementNS("http://www.w3.org/2000/svg","tspan");E.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),E.setAttribute("dy","1em"),E.setAttribute("x","1"),E.textContent=I,y.appendChild(E)}p=y}let g=0,f="";switch(l.type){case"round":g=5,f="rect";break;case"square":f="rect";break;case"diamond":f="question";break;case"hexagon":f="hexagon";break;case"odd":f="rect_left_inv_arrow";break;case"lean_right":f="lean_right";break;case"lean_left":f="lean_left";break;case"trapezoid":f="trapezoid";break;case"inv_trapezoid":f="inv_trapezoid";break;case"odd_right":f="rect_left_inv_arrow";break;case"circle":f="circle";break;case"ellipse":f="ellipse";break;case"stadium":f="stadium";break;case"subroutine":f="subroutine";break;case"cylinder":f="cylinder";break;case"group":f="rect";break;default:f="rect"}R.warn("Adding node",l.id,l.domId),e.setNode(s.db.lookUpDomId(l.id),{labelType:"svg",labelStyle:h.labelStyle,shape:f,label:p,rx:g,ry:g,class:v,style:h.style,id:s.db.lookUpDomId(l.id)})})},kt=function(r,e,t){let n=0,a,s;if(r.defaultStyle!==void 0){const i=z(r.defaultStyle);a=i.style,s=i.labelStyle}r.forEach(function(i){n++;const o="L-"+i.start+"-"+i.end,c="LS-"+i.start,d="LE-"+i.end,l={};i.type==="arrow_open"?l.arrowhead="none":l.arrowhead="normal";let v="",h="";if(i.style!==void 0){const u=z(i.style);v=u.style,h=u.labelStyle}else switch(i.stroke){case"normal":v="fill:none",a!==void 0&&(v=a),s!==void 0&&(h=s);break;case"dotted":v="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":v=" stroke-width: 3.5px;fill:none";break}l.style=v,l.labelStyle=h,i.interpolate!==void 0?l.curve=V(i.interpolate,P):r.defaultInterpolate!==void 0?l.curve=V(r.defaultInterpolate,P):l.curve=V(xt.curve,P),i.text===void 0?i.style!==void 0&&(l.arrowheadStyle="fill: #333"):(l.arrowheadStyle="fill: #333",l.labelpos="c",et(J().flowchart.htmlLabels)?(l.labelType="html",l.label=`${i.text.replace(/fa[blrs]?:fa-[\w-]+/g,u=>``)}`):(l.labelType="text",l.label=i.text.replace(rt.lineBreakRegex,` +`),i.style===void 0&&(l.style=l.style||"stroke: #333; stroke-width: 1.5px;fill:none"),l.labelStyle=l.labelStyle.replace("color:","fill:"))),l.id=o,l.class=c+" "+d,l.minlen=i.length||1,e.setEdge(t.db.lookUpDomId(i.start),t.db.lookUpDomId(i.end),l,n)})},me=function(r,e){return R.info("Extracting classes"),e.db.getClasses()},xe=function(r,e,t,n){R.info("Drawing flowchart");const{securityLevel:a,flowchart:s}=J();let i;a==="sandbox"&&(i=x("#i"+e));const o=a==="sandbox"?x(i.nodes()[0].contentDocument.body):x("body"),c=a==="sandbox"?i.nodes()[0].contentDocument:document;let d=n.db.getDirection();d===void 0&&(d="TD");const l=s.nodeSpacing||50,v=s.rankSpacing||50,h=new Nt({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:l,ranksep:v,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let u;const p=n.db.getSubGraphs();for(let w=p.length-1;w>=0;w--)u=p[w],n.db.addVertex(u.id,u.title,"group",void 0,u.classes);const g=n.db.getVertices();R.warn("Get vertices",g);const f=n.db.getEdges();let y=0;for(y=p.length-1;y>=0;y--){u=p[y],Bt("cluster").append("text");for(let w=0;w{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,be.setConf(r.flowchart),W.clear(),W.setGen("gen-1")}};export{Me as diagram}; diff --git a/assets/flowDiagram-v2-2f8f667a-UhW5F7df.js b/assets/flowDiagram-v2-2f8f667a-UhW5F7df.js new file mode 100644 index 00000000..c1fd2fdd --- /dev/null +++ b/assets/flowDiagram-v2-2f8f667a-UhW5F7df.js @@ -0,0 +1 @@ +import{p as e,f as o}from"./flowDb-170db09d-WyyBGkz_.js";import{f as t,g as a}from"./styles-b966c4ae-SO_n7QzH.js";import{aq as s}from"./mermaid.core-Up0YySao.js";import"./layout-bNXk8SHo.js";import"./index-67a42d7d-Sclb7lyu.js";import"./edges-80f1ebb6-Okp3_yLQ.js";import"./createText-aebacdfe-sWKH4swq.js";import"./line-rSV082x4.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";import"./app-Mf7X6hWu.js";const u={parser:e,db:o,renderer:t,styles:a,init:r=>{r.flowchart||(r.flowchart={}),r.flowchart.arrowMarkerAbsolute=r.arrowMarkerAbsolute,s({flowchart:{arrowMarkerAbsolute:r.arrowMarkerAbsolute}}),t.setConf(r.flowchart),o.clear(),o.setGen("gen-2")}};export{u as diagram}; diff --git a/assets/flowchart-elk-definition-e097735e-YWVs5gv6.js b/assets/flowchart-elk-definition-e097735e-YWVs5gv6.js new file mode 100644 index 00000000..b3543240 --- /dev/null +++ b/assets/flowchart-elk-definition-e097735e-YWVs5gv6.js @@ -0,0 +1,139 @@ +import{d as bMe,p as wMe}from"./flowDb-170db09d-WyyBGkz_.js";import{aB as Hee,aC as gMe,l as K1,h as lI,a$ as OH,t as pMe,p as V1n,r as X1n,o as IH,j as vMe}from"./mermaid.core-Up0YySao.js";import{i as mMe,a as kMe,l as yMe,b as jMe,j as EMe}from"./edges-80f1ebb6-Okp3_yLQ.js";import{l as CMe}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./createText-aebacdfe-sWKH4swq.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function PH(Ae){throw new Error('Could not dynamically require "'+Ae+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Uee={exports:{}};(function(Ae,At){(function(ft){Ae.exports=ft()})(function(){return function(){function ft(dt,Vt,Et){function y(Bt,qt){if(!Vt[Bt]){if(!dt[Bt]){var Ge=typeof PH=="function"&&PH;if(!qt&&Ge)return Ge(Bt,!0);if(Ht)return Ht(Bt,!0);var Ki=new Error("Cannot find module '"+Bt+"'");throw Ki.code="MODULE_NOT_FOUND",Ki}var Ii=Vt[Bt]={exports:{}};dt[Bt][0].call(Ii.exports,function(An){var Uc=dt[Bt][1][An];return y(Uc||An)},Ii,Ii.exports,ft,dt,Vt,Et)}return Vt[Bt].exports}for(var Ht=typeof PH=="function"&&PH,Lc=0;Lc0&&arguments[0]!==void 0?arguments[0]:{},Ki=Ge.defaultLayoutOptions,Ii=Ki===void 0?{}:Ki,An=Ge.algorithms,Uc=An===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:An,Nc=Ge.workerFactory,ju=Ge.workerUrl;if(y(this,Bt),this.defaultLayoutOptions=Ii,this.initialized=!1,typeof ju>"u"&&typeof Nc>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var vr=Nc;typeof ju<"u"&&typeof Nc>"u"&&(vr=function(q1){return new Worker(q1)});var Jo=vr(ju);if(typeof Jo.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new Lc(Jo),this.worker.postMessage({cmd:"register",algorithms:Uc}).then(function(H1){return qt.initialized=!0}).catch(console.err)}return Et(Bt,[{key:"layout",value:function(Ge){var Ki=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Ii=Ki.layoutOptions,An=Ii===void 0?this.defaultLayoutOptions:Ii,Uc=Ki.logging,Nc=Uc===void 0?!1:Uc,ju=Ki.measureExecutionTime,vr=ju===void 0?!1:ju;return Ge?this.worker.postMessage({cmd:"layout",graph:Ge,layoutOptions:An,options:{logging:Nc,measureExecutionTime:vr}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),Bt}();Vt.default=Ht;var Lc=function(){function Bt(qt){var Ge=this;if(y(this,Bt),qt===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=qt,this.worker.onmessage=function(Ki){setTimeout(function(){Ge.receive(Ge,Ki)},0)}}return Et(Bt,[{key:"postMessage",value:function(Ge){var Ki=this.id||0;this.id=Ki+1,Ge.id=Ki;var Ii=this;return new Promise(function(An,Uc){Ii.resolvers[Ki]=function(Nc,ju){Nc?(Ii.convertGwtStyleError(Nc),Uc(Nc)):An(ju)},Ii.worker.postMessage(Ge)})}},{key:"receive",value:function(Ge,Ki){var Ii=Ki.data,An=Ge.resolvers[Ii.id];An&&(delete Ge.resolvers[Ii.id],Ii.error?An(Ii.error):An(null,Ii.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(Ge){if(Ge){var Ki=Ge.__java$exception;Ki&&(Ki.cause&&Ki.cause.backingJsObject&&(Ge.cause=Ki.cause.backingJsObject,this.convertGwtStyleError(Ge.cause)),delete Ge.__java$exception)}}}]),Bt}()},{}],2:[function(ft,dt,Vt){(function(Et){(function(){var y;typeof window<"u"?y=window:typeof Et<"u"?y=Et:typeof self<"u"&&(y=self);var Ht;function Lc(){}function Bt(){}function qt(){}function Ge(){}function Ki(){}function Ii(){}function An(){}function Uc(){}function Nc(){}function ju(){}function vr(){}function Jo(){}function H1(){}function q1(){}function ww(){}function Np(){}function G1(){}function Th(){}function Q1n(){}function J1n(){}function zy(){}function Y1n(){}function Z1n(){}function nln(){}function eln(){}function Xg(){}function N(){}function tln(){}function aI(){}function iln(){}function rln(){}function cln(){}function uln(){}function DH(){}function sln(){}function oln(){}function fln(){}function z1(){}function U1(){}function dI(){}function hln(){}function lln(){}function aln(){}function $H(){}function dln(){}function bln(){}function Vg(){}function Qg(){}function wln(){}function gln(){}function pln(){}function vln(){}function FH(){}function W1(){}function Jg(){}function Yg(){}function mln(){}function Vee(){}function bI(){}function kln(){}function yln(){}function jln(){}function Eln(){}function Cln(){}function Tln(){}function Mln(){}function Aln(){}function Sln(){}function Pln(){}function Iln(){}function Oln(){}function Dln(){}function $ln(){}function Fln(){}function xln(){}function Lln(){}function Nln(){}function Bln(){}function Rln(){}function _ln(){}function Kln(){}function Hln(){}function qln(){}function Gln(){}function zln(){}function Uln(){}function Wln(){}function Xln(){}function Vln(){}function Qln(){}function Jln(){}function Yln(){}function xH(){}function Zln(){}function nan(){}function ean(){}function tan(){}function wI(){}function gI(){}function Uy(){}function ian(){}function ran(){}function pI(){}function can(){}function uan(){}function san(){}function Wy(){}function oan(){}function fan(){}function han(){}function lan(){}function aan(){}function dan(){}function ban(){}function wan(){}function gan(){}function LH(){}function pan(){}function van(){}function man(){}function kan(){}function yan(){}function NH(){}function jan(){}function Ean(){}function Can(){}function Tan(){}function Man(){}function Aan(){}function San(){}function Pan(){}function Ian(){}function Oan(){}function Dan(){}function $an(){}function Fan(){}function xan(){}function vI(){}function Lan(){}function Nan(){}function Ban(){}function Ran(){}function _an(){}function BH(){}function Kan(){}function Han(){}function qan(){}function Gan(){}function zan(){}function Uan(){}function Wan(){}function Xan(){}function Van(){}function Qan(){}function Jan(){}function Yan(){}function Zan(){}function ndn(){}function edn(){}function tdn(){}function idn(){}function rdn(){}function cdn(){}function udn(){}function sdn(){}function odn(){}function fdn(){}function hdn(){}function ldn(){}function adn(){}function ddn(){}function bdn(){}function wdn(){}function gdn(){}function pdn(){}function vdn(){}function mdn(){}function kdn(){}function ydn(){}function jdn(){}function Edn(){}function Cdn(){}function Tdn(){}function Mdn(){}function Adn(){}function Sdn(){}function Pdn(){}function Idn(){}function Odn(){}function Ddn(){}function $dn(){}function Fdn(){}function xdn(){}function Ldn(){}function Ndn(){}function Bdn(){}function Rdn(){}function _dn(){}function Kdn(){}function Hdn(){}function qdn(){}function Gdn(){}function zdn(){}function Udn(){}function Wdn(){}function Xdn(){}function Vdn(){}function Qdn(){}function Jdn(){}function Ydn(){}function Zdn(){}function n0n(){}function e0n(){}function t0n(){}function i0n(){}function r0n(){}function c0n(){}function u0n(){}function s0n(){}function o0n(){}function f0n(){}function h0n(){}function l0n(){}function a0n(){}function d0n(){}function b0n(){}function w0n(){}function g0n(){}function p0n(){}function v0n(){}function m0n(){}function k0n(){}function y0n(){}function j0n(){}function E0n(){}function C0n(){}function T0n(){}function M0n(){}function A0n(){}function S0n(){}function P0n(){}function I0n(){}function O0n(){}function D0n(){}function RH(){}function $0n(){}function F0n(){}function x0n(){}function L0n(){}function N0n(){}function B0n(){}function R0n(){}function _0n(){}function K0n(){}function H0n(){}function q0n(){}function G0n(){}function z0n(){}function U0n(){}function W0n(){}function X0n(){}function V0n(){}function Q0n(){}function J0n(){}function Y0n(){}function Z0n(){}function nbn(){}function ebn(){}function tbn(){}function ibn(){}function rbn(){}function cbn(){}function ubn(){}function sbn(){}function obn(){}function fbn(){}function hbn(){}function lbn(){}function abn(){}function dbn(){}function bbn(){}function wbn(){}function gbn(){}function pbn(){}function vbn(){}function mbn(){}function kbn(){}function ybn(){}function jbn(){}function Ebn(){}function Cbn(){}function Tbn(){}function Mbn(){}function Abn(){}function Sbn(){}function Pbn(){}function Ibn(){}function Obn(){}function Dbn(){}function $bn(){}function Fbn(){}function xbn(){}function Lbn(){}function Nbn(){}function Bbn(){}function Rbn(){}function _bn(){}function Kbn(){}function Hbn(){}function qbn(){}function Gbn(){}function zbn(){}function _H(){}function Ubn(){}function Wbn(){}function Xbn(){}function Vbn(){}function Qbn(){}function Jbn(){}function Ybn(){}function Zbn(){}function nwn(){}function ewn(){}function twn(){}function iwn(){}function rwn(){}function cwn(){}function uwn(){}function swn(){}function own(){}function fwn(){}function hwn(){}function lwn(){}function KH(){}function awn(){}function dwn(){}function bwn(){}function wwn(){}function gwn(){}function pwn(){}function HH(){}function qH(){}function vwn(){}function GH(){}function zH(){}function mwn(){}function kwn(){}function ywn(){}function jwn(){}function Ewn(){}function Cwn(){}function Twn(){}function Mwn(){}function Awn(){}function UH(){}function Swn(){}function Pwn(){}function Iwn(){}function Own(){}function Dwn(){}function $wn(){}function Fwn(){}function xwn(){}function Lwn(){}function Nwn(){}function Bwn(){}function Rwn(){}function _wn(){}function Kwn(){}function Hwn(){}function qwn(){}function Gwn(){}function zwn(){}function Uwn(){}function Wwn(){}function Xwn(){}function Vwn(){}function Qwn(){}function Jwn(){}function Ywn(){}function Zwn(){}function ngn(){}function egn(){}function tgn(){}function ign(){}function rgn(){}function cgn(){}function ugn(){}function sgn(){}function ogn(){}function fgn(){}function hgn(){}function lgn(){}function agn(){}function dgn(){}function bgn(){}function wgn(){}function ggn(){}function pgn(){}function vgn(){}function mgn(){}function kgn(){}function ygn(){}function jgn(){}function Egn(){}function Cgn(){}function Tgn(){}function Mgn(){}function Agn(){}function Sgn(){}function Pgn(){}function Ign(){}function Ogn(){}function Dgn(){}function $gn(){}function Fgn(){}function xgn(){}function Lgn(){}function Ngn(){}function Bgn(){}function Rgn(){}function _gn(){}function Kgn(){}function mI(){}function kI(){}function yI(){}function Hgn(){}function qgn(){}function Ggn(){}function zgn(){}function Ugn(){}function WH(){}function Wgn(){}function Xgn(){}function Qee(){}function Vgn(){}function Qgn(){}function Jgn(){}function Ygn(){}function Zgn(){}function n2n(){}function e2n(){}function Zl(){}function t2n(){}function Zg(){}function XH(){}function i2n(){}function r2n(){}function c2n(){}function u2n(){}function s2n(){}function o2n(){}function f2n(){}function h2n(){}function l2n(){}function a2n(){}function d2n(){}function b2n(){}function w2n(){}function g2n(){}function p2n(){}function v2n(){}function m2n(){}function k2n(){}function y2n(){}function j2n(){}function E2n(){}function dn(){}function C2n(){}function T2n(){}function M2n(){}function A2n(){}function S2n(){}function P2n(){}function I2n(){}function O2n(){}function D2n(){}function $2n(){}function jI(){}function F2n(){}function x2n(){}function L2n(){}function N2n(){}function B2n(){}function VH(){}function Xy(){}function Vy(){}function R2n(){}function QH(){}function Qy(){}function _2n(){}function K2n(){}function H2n(){}function q2n(){}function G2n(){}function z2n(){}function Jy(){}function U2n(){}function W2n(){}function X2n(){}function Yy(){}function V2n(){}function JH(){}function Q2n(){}function EI(){}function YH(){}function J2n(){}function Y2n(){}function Z2n(){}function npn(){}function Jee(){}function epn(){}function tpn(){}function ipn(){}function rpn(){}function cpn(){}function upn(){}function spn(){}function opn(){}function fpn(){}function hpn(){}function Bp(){}function CI(){}function lpn(){}function apn(){}function dpn(){}function bpn(){}function wpn(){}function gpn(){}function ppn(){}function vpn(){}function mpn(){}function kpn(){}function ypn(){}function jpn(){}function Epn(){}function Cpn(){}function Tpn(){}function Mpn(){}function Apn(){}function Spn(){}function Ppn(){}function Ipn(){}function Opn(){}function Dpn(){}function $pn(){}function Fpn(){}function xpn(){}function Lpn(){}function Npn(){}function Bpn(){}function Rpn(){}function _pn(){}function Kpn(){}function Hpn(){}function qpn(){}function Gpn(){}function zpn(){}function Upn(){}function Wpn(){}function Xpn(){}function Vpn(){}function Qpn(){}function Jpn(){}function Ypn(){}function Zpn(){}function n3n(){}function e3n(){}function t3n(){}function i3n(){}function r3n(){}function c3n(){}function u3n(){}function s3n(){}function o3n(){}function f3n(){}function h3n(){}function l3n(){}function a3n(){}function d3n(){}function b3n(){}function w3n(){}function g3n(){}function p3n(){}function v3n(){}function m3n(){}function k3n(){}function y3n(){}function j3n(){}function E3n(){}function C3n(){}function T3n(){}function M3n(){}function A3n(){}function S3n(){}function P3n(){}function I3n(){}function O3n(){}function D3n(){}function $3n(){}function F3n(){}function x3n(){}function L3n(){}function N3n(){}function B3n(){}function R3n(){}function _3n(){}function K3n(){}function H3n(){}function q3n(){}function G3n(){}function z3n(){}function U3n(){}function W3n(){}function X3n(){}function V3n(){}function Q3n(){}function J3n(){}function Y3n(){}function Z3n(){}function n4n(){}function e4n(){}function t4n(){}function i4n(){}function ZH(){}function r4n(){}function c4n(){}function TI(){Rv()}function u4n(){pF()}function s4n(){a6()}function o4n(){WT()}function f4n(){YJ()}function h4n(){Go()}function l4n(){fJ()}function a4n(){C7()}function d4n(){q9()}function b4n(){H9()}function w4n(){w8()}function g4n(){v7n()}function p4n(){x2()}function v4n(){Sj()}function m4n(){PSn()}function k4n(){HIn()}function y4n(){sPn()}function j4n(){CMn()}function E4n(){V3()}function C4n(){yl()}function T4n(){qIn()}function M4n(){pAn()}function A4n(){zZ()}function S4n(){IFn()}function P4n(){TMn()}function I4n(){nn()}function O4n(){EMn()}function D4n(){GIn()}function $4n(){WOn()}function F4n(){AMn()}function x4n(){aPn()}function L4n(){m7n()}function N4n(){$Y()}function B4n(){gb()}function R4n(){pOn()}function _4n(){S7()}function K4n(){Ux()}function H4n(){ZF()}function q4n(){Zd()}function G4n(){PV()}function z4n(){MMn()}function U4n(){BBn()}function W4n(){IY()}function X4n(){Bx()}function V4n(){DC()}function Q4n(){nM()}function nq(){Xe()}function J4n(){wT()}function Y4n(){NQ()}function eq(){mM()}function Fo(){dEn()}function tq(){eF()}function Z4n(){pZ()}function iq(n){_n(n)}function nvn(n){this.a=n}function Zy(n){this.a=n}function evn(n){this.a=n}function tvn(n){this.a=n}function ivn(n){this.a=n}function rvn(n){this.a=n}function cvn(n){this.a=n}function uvn(n){this.a=n}function rq(n){this.a=n}function cq(n){this.a=n}function svn(n){this.a=n}function MI(n){this.a=n}function ovn(n){this.a=n}function AI(n){this.a=n}function fvn(n){this.a=n}function SI(n){this.a=n}function hvn(n){this.a=n}function PI(n){this.a=n}function lvn(n){this.a=n}function avn(n){this.a=n}function dvn(n){this.a=n}function uq(n){this.b=n}function bvn(n){this.c=n}function wvn(n){this.a=n}function gvn(n){this.a=n}function pvn(n){this.a=n}function vvn(n){this.a=n}function mvn(n){this.a=n}function kvn(n){this.a=n}function yvn(n){this.a=n}function jvn(n){this.a=n}function Evn(n){this.a=n}function Cvn(n){this.a=n}function Tvn(n){this.a=n}function Mvn(n){this.a=n}function Avn(n){this.a=n}function sq(n){this.a=n}function oq(n){this.a=n}function nj(n){this.a=n}function M9(n){this.a=n}function na(){this.a=[]}function Svn(n,e){n.a=e}function Yee(n,e){n.a=e}function Zee(n,e){n.b=e}function nte(n,e){n.b=e}function ete(n,e){n.b=e}function fq(n,e){n.j=e}function tte(n,e){n.g=e}function ite(n,e){n.i=e}function rte(n,e){n.c=e}function cte(n,e){n.d=e}function ute(n,e){n.d=e}function ste(n,e){n.c=e}function ea(n,e){n.k=e}function ote(n,e){n.c=e}function hq(n,e){n.c=e}function lq(n,e){n.a=e}function fte(n,e){n.a=e}function hte(n,e){n.f=e}function lte(n,e){n.a=e}function ate(n,e){n.b=e}function II(n,e){n.d=e}function ej(n,e){n.i=e}function aq(n,e){n.o=e}function dte(n,e){n.r=e}function bte(n,e){n.a=e}function wte(n,e){n.b=e}function Pvn(n,e){n.e=e}function gte(n,e){n.f=e}function dq(n,e){n.g=e}function pte(n,e){n.e=e}function vte(n,e){n.f=e}function mte(n,e){n.f=e}function kte(n,e){n.n=e}function yte(n,e){n.a=e}function jte(n,e){n.a=e}function Ete(n,e){n.c=e}function Cte(n,e){n.c=e}function Tte(n,e){n.d=e}function Mte(n,e){n.e=e}function Ate(n,e){n.g=e}function Ste(n,e){n.a=e}function Pte(n,e){n.c=e}function Ite(n,e){n.d=e}function Ote(n,e){n.e=e}function Dte(n,e){n.f=e}function $te(n,e){n.j=e}function Fte(n,e){n.a=e}function xte(n,e){n.b=e}function Lte(n,e){n.a=e}function Ivn(n){n.b=n.a}function Ovn(n){n.c=n.d.d}function $v(n){this.d=n}function ta(n){this.a=n}function Rp(n){this.a=n}function bq(n){this.a=n}function Mh(n){this.a=n}function A9(n){this.a=n}function Dvn(n){this.a=n}function wq(n){this.a=n}function S9(n){this.a=n}function gq(n){this.a=n}function pq(n){this.a=n}function vq(n){this.a=n}function L0(n){this.a=n}function P9(n){this.a=n}function I9(n){this.a=n}function mq(n){this.b=n}function _p(n){this.b=n}function Kp(n){this.b=n}function OI(n){this.a=n}function $vn(n){this.a=n}function kq(n){this.a=n}function DI(n){this.c=n}function E(n){this.c=n}function Fvn(n){this.c=n}function yq(n){this.a=n}function jq(n){this.a=n}function Eq(n){this.a=n}function Cq(n){this.a=n}function ut(n){this.a=n}function xvn(n){this.a=n}function Tq(n){this.a=n}function Mq(n){this.a=n}function Lvn(n){this.a=n}function Nvn(n){this.a=n}function Fv(n){this.a=n}function Bvn(n){this.a=n}function Rvn(n){this.a=n}function _vn(n){this.a=n}function Kvn(n){this.a=n}function Hvn(n){this.a=n}function qvn(n){this.a=n}function Gvn(n){this.a=n}function zvn(n){this.a=n}function Uvn(n){this.a=n}function Wvn(n){this.a=n}function Xvn(n){this.a=n}function Vvn(n){this.a=n}function Qvn(n){this.a=n}function Jvn(n){this.a=n}function Yvn(n){this.a=n}function Zvn(n){this.a=n}function n5n(n){this.a=n}function O9(n){this.a=n}function e5n(n){this.a=n}function t5n(n){this.a=n}function tj(n){this.a=n}function i5n(n){this.a=n}function r5n(n){this.a=n}function Hp(n){this.a=n}function Aq(n){this.a=n}function c5n(n){this.a=n}function u5n(n){this.a=n}function s5n(n){this.a=n}function o5n(n){this.a=n}function f5n(n){this.a=n}function Sq(n){this.a=n}function Pq(n){this.a=n}function Iq(n){this.a=n}function ij(n){this.a=n}function rj(n){this.e=n}function qp(n){this.a=n}function h5n(n){this.a=n}function n2(n){this.a=n}function Oq(n){this.a=n}function l5n(n){this.a=n}function a5n(n){this.a=n}function d5n(n){this.a=n}function b5n(n){this.a=n}function w5n(n){this.a=n}function g5n(n){this.a=n}function p5n(n){this.a=n}function v5n(n){this.a=n}function m5n(n){this.a=n}function k5n(n){this.a=n}function y5n(n){this.a=n}function Dq(n){this.a=n}function j5n(n){this.a=n}function E5n(n){this.a=n}function C5n(n){this.a=n}function T5n(n){this.a=n}function M5n(n){this.a=n}function A5n(n){this.a=n}function S5n(n){this.a=n}function P5n(n){this.a=n}function I5n(n){this.a=n}function O5n(n){this.a=n}function D5n(n){this.a=n}function $5n(n){this.a=n}function F5n(n){this.a=n}function x5n(n){this.a=n}function L5n(n){this.a=n}function N5n(n){this.a=n}function B5n(n){this.a=n}function R5n(n){this.a=n}function _5n(n){this.a=n}function K5n(n){this.a=n}function H5n(n){this.a=n}function q5n(n){this.a=n}function G5n(n){this.a=n}function z5n(n){this.a=n}function U5n(n){this.a=n}function W5n(n){this.a=n}function X5n(n){this.a=n}function V5n(n){this.a=n}function Q5n(n){this.a=n}function J5n(n){this.a=n}function Y5n(n){this.a=n}function Z5n(n){this.a=n}function n6n(n){this.a=n}function e6n(n){this.a=n}function t6n(n){this.a=n}function i6n(n){this.a=n}function r6n(n){this.a=n}function c6n(n){this.c=n}function u6n(n){this.b=n}function s6n(n){this.a=n}function o6n(n){this.a=n}function f6n(n){this.a=n}function h6n(n){this.a=n}function l6n(n){this.a=n}function a6n(n){this.a=n}function d6n(n){this.a=n}function b6n(n){this.a=n}function w6n(n){this.a=n}function g6n(n){this.a=n}function p6n(n){this.a=n}function v6n(n){this.a=n}function m6n(n){this.a=n}function k6n(n){this.a=n}function y6n(n){this.a=n}function j6n(n){this.a=n}function E6n(n){this.a=n}function C6n(n){this.a=n}function T6n(n){this.a=n}function M6n(n){this.a=n}function A6n(n){this.a=n}function S6n(n){this.a=n}function P6n(n){this.a=n}function I6n(n){this.a=n}function X1(n){this.a=n}function e2(n){this.a=n}function O6n(n){this.a=n}function D6n(n){this.a=n}function $6n(n){this.a=n}function F6n(n){this.a=n}function x6n(n){this.a=n}function L6n(n){this.a=n}function N6n(n){this.a=n}function B6n(n){this.a=n}function R6n(n){this.a=n}function _6n(n){this.a=n}function K6n(n){this.a=n}function H6n(n){this.a=n}function q6n(n){this.a=n}function G6n(n){this.a=n}function z6n(n){this.a=n}function U6n(n){this.a=n}function cj(n){this.a=n}function W6n(n){this.a=n}function X6n(n){this.a=n}function V6n(n){this.a=n}function Q6n(n){this.a=n}function J6n(n){this.a=n}function Y6n(n){this.a=n}function Z6n(n){this.a=n}function nmn(n){this.a=n}function emn(n){this.a=n}function tmn(n){this.a=n}function imn(n){this.a=n}function rmn(n){this.a=n}function cmn(n){this.a=n}function umn(n){this.a=n}function smn(n){this.a=n}function omn(n){this.a=n}function fmn(n){this.a=n}function hmn(n){this.a=n}function lmn(n){this.a=n}function amn(n){this.a=n}function dmn(n){this.a=n}function bmn(n){this.a=n}function wmn(n){this.a=n}function gmn(n){this.a=n}function pmn(n){this.a=n}function vmn(n){this.a=n}function mmn(n){this.a=n}function kmn(n){this.a=n}function $q(n){this.a=n}function kt(n){this.b=n}function ymn(n){this.f=n}function Fq(n){this.a=n}function jmn(n){this.a=n}function Emn(n){this.a=n}function Cmn(n){this.a=n}function Tmn(n){this.a=n}function Mmn(n){this.a=n}function Amn(n){this.a=n}function Smn(n){this.a=n}function Pmn(n){this.a=n}function D9(n){this.a=n}function Imn(n){this.a=n}function Omn(n){this.b=n}function xq(n){this.c=n}function uj(n){this.e=n}function Dmn(n){this.a=n}function sj(n){this.a=n}function oj(n){this.a=n}function $I(n){this.a=n}function $mn(n){this.a=n}function Fmn(n){this.d=n}function Lq(n){this.a=n}function Nq(n){this.a=n}function cd(n){this.e=n}function Nte(){this.a=0}function gw(){dyn(this)}function X(){RO(this)}function we(){Cu(this)}function FI(){pTn(this)}function xmn(){}function ud(){this.c=p1n}function Bte(n,e){e.Wb(n)}function Lmn(n,e){n.b+=e}function Nmn(n){n.b=new JI}function T(n){return n.e}function Rte(n){return n.a}function _te(n){return n.a}function Kte(n){return n.a}function Hte(n){return n.a}function qte(n){return n.a}function Gte(){return null}function zte(){return null}function Ute(){EG(),iTe()}function Wte(n){n.b.tf(n.e)}function xv(n,e){n.b=e-n.b}function Lv(n,e){n.a=e-n.a}function Bmn(n,e){e.ad(n.a)}function Xte(n,e){si(e,n)}function Vte(n,e,t){n.Od(t,e)}function $9(n,e){n.e=e,e.b=n}function Bq(n){$f(),this.a=n}function Rmn(n){$f(),this.a=n}function _mn(n){$f(),this.a=n}function Rq(n){nb(),this.a=n}function Kmn(n){k3(),aR.be(n)}function ia(){Qyn.call(this)}function _q(){Qyn.call(this)}function Kq(){ia.call(this)}function xI(){ia.call(this)}function Hmn(){ia.call(this)}function F9(){ia.call(this)}function fu(){ia.call(this)}function Nv(){ia.call(this)}function ye(){ia.call(this)}function vs(){ia.call(this)}function qmn(){ia.call(this)}function ic(){ia.call(this)}function Gmn(){ia.call(this)}function zmn(){this.a=this}function fj(){this.Bb|=256}function Umn(){this.b=new Xkn}function Hq(){Hq=N,new we}function qq(){Kq.call(this)}function Wmn(n,e){n.length=e}function hj(n,e){W(n.a,e)}function Qte(n,e){nY(n.c,e)}function Jte(n,e){ci(n.b,e)}function Yte(n,e){KT(n.a,e)}function Zte(n,e){MF(n.a,e)}function Gp(n,e){et(n.e,e)}function t2(n){iM(n.c,n.b)}function nie(n,e){n.kc().Nb(e)}function Gq(n){this.a=Yge(n)}function hi(){this.a=new we}function Xmn(){this.a=new we}function lj(){this.a=new X}function LI(){this.a=new X}function zq(){this.a=new X}function Ns(){this.a=new Oln}function ra(){this.a=new TSn}function Uq(){this.a=new LH}function Wq(){this.a=new h7n}function Vmn(){this.a=new YMn}function Xq(){this.a=new bMn}function Vq(){this.a=new Bjn}function Qmn(){this.a=new X}function Qq(){this.a=new X}function Jmn(){this.a=new X}function Ymn(){this.a=new X}function Zmn(){this.d=new X}function n9n(){this.a=new hi}function e9n(){this.a=new we}function t9n(){this.b=new we}function i9n(){this.b=new X}function Jq(){this.e=new X}function r9n(){this.d=new X}function c9n(){this.a=new C4n}function u9n(){X.call(this)}function Yq(){lj.call(this)}function s9n(){kE.call(this)}function o9n(){Qq.call(this)}function NI(){Bv.call(this)}function Bv(){xmn.call(this)}function i2(){xmn.call(this)}function Zq(){i2.call(this)}function f9n(){zTn.call(this)}function h9n(){zTn.call(this)}function l9n(){uG.call(this)}function a9n(){uG.call(this)}function d9n(){uG.call(this)}function b9n(){sG.call(this)}function hu(){Tt.call(this)}function nG(){B2n.call(this)}function eG(){B2n.call(this)}function w9n(){O9n.call(this)}function g9n(){O9n.call(this)}function p9n(){we.call(this)}function v9n(){we.call(this)}function m9n(){we.call(this)}function k9n(){hi.call(this)}function BI(){RIn.call(this)}function y9n(){fj.call(this)}function RI(){Oz.call(this)}function _I(){Oz.call(this)}function tG(){we.call(this)}function KI(){we.call(this)}function j9n(){we.call(this)}function iG(){Yy.call(this)}function E9n(){Yy.call(this)}function C9n(){iG.call(this)}function T9n(){ZH.call(this)}function M9n(n){hIn.call(this,n)}function A9n(n){hIn.call(this,n)}function rG(n){rq.call(this,n)}function cG(n){n7n.call(this,n)}function eie(n){cG.call(this,n)}function tie(n){n7n.call(this,n)}function zp(){this.a=new Tt}function uG(){this.a=new hi}function sG(){this.a=new we}function S9n(){this.a=new X}function P9n(){this.j=new X}function oG(){this.a=new Rgn}function I9n(){this.a=new T8n}function O9n(){this.a=new X2n}function HI(){HI=N,uR=new V9n}function qI(){qI=N,cR=new X9n}function Rv(){Rv=N,rR=new Bt}function aj(){aj=N,fR=new Xyn}function iie(n){cG.call(this,n)}function rie(n){cG.call(this,n)}function D9n(n){m$.call(this,n)}function $9n(n){m$.call(this,n)}function F9n(n){uEn.call(this,n)}function GI(n){C5e.call(this,n)}function sd(n){_0.call(this,n)}function _v(n){Cj.call(this,n)}function fG(n){Cj.call(this,n)}function x9n(n){Cj.call(this,n)}function _r(n){kCn.call(this,n)}function L9n(n){_r.call(this,n)}function r2(){M9.call(this,{})}function dj(n){c3(),this.a=n}function Kv(n){n.b=null,n.c=0}function cie(n,e){n.e=e,NNn(n,e)}function uie(n,e){n.a=e,h6e(n)}function zI(n,e,t){n.a[e.g]=t}function sie(n,e,t){M4e(t,n,e)}function oie(n,e){$ue(e.i,n.n)}function N9n(n,e){Fwe(n).td(e)}function fie(n,e){return n*n/e}function B9n(n,e){return n.g-e.g}function hie(n){return new nj(n)}function lie(n){return new Z0(n)}function bj(n){_r.call(this,n)}function mr(n){_r.call(this,n)}function R9n(n){_r.call(this,n)}function UI(n){kCn.call(this,n)}function WI(n){AV(),this.a=n}function _9n(n){aEn(),this.a=n}function N0(n){ED(),this.f=n}function XI(n){ED(),this.f=n}function Up(n){_r.call(this,n)}function Hn(n){_r.call(this,n)}function $r(n){_r.call(this,n)}function K9n(n){_r.call(this,n)}function c2(n){_r.call(this,n)}function on(n){return _n(n),n}function K(n){return _n(n),n}function x9(n){return _n(n),n}function hG(n){return _n(n),n}function aie(n){return _n(n),n}function Hv(n){return n.b==n.c}function B0(n){return!!n&&n.b}function die(n){return!!n&&n.k}function bie(n){return!!n&&n.j}function Hu(n){_n(n),this.a=n}function lG(n){return ja(n),n}function qv(n){EW(n,n.length)}function t1(n){_r.call(this,n)}function Sf(n){_r.call(this,n)}function VI(n){_r.call(this,n)}function pw(n){_r.call(this,n)}function Gv(n){_r.call(this,n)}function Ee(n){_r.call(this,n)}function QI(n){Vz.call(this,n,0)}function JI(){iX.call(this,12,3)}function aG(){aG=N,din=new Q1n}function H9n(){H9n=N,ain=new Lc}function wj(){wj=N,dm=new H1}function q9n(){q9n=N,vzn=new ww}function G9n(){throw T(new ye)}function dG(){throw T(new ye)}function z9n(){throw T(new ye)}function wie(){throw T(new ye)}function gie(){throw T(new ye)}function pie(){throw T(new ye)}function YI(){this.a=Ce(pe(Ji))}function u2(n){$f(),this.a=pe(n)}function U9n(n,e){n.Td(e),e.Sd(n)}function vie(n,e){n.a.ec().Mc(e)}function mie(n,e,t){n.c.lf(e,t)}function bG(n){mr.call(this,n)}function Pf(n){Hn.call(this,n)}function i1(){A9.call(this,"")}function zv(){A9.call(this,"")}function V1(){A9.call(this,"")}function R0(){A9.call(this,"")}function wG(n){mr.call(this,n)}function Wp(n){_p.call(this,n)}function ZI(n){lE.call(this,n)}function W9n(n){Wp.call(this,n)}function X9n(){AI.call(this,null)}function V9n(){AI.call(this,null)}function gj(){gj=N,k3()}function Q9n(){Q9n=N,Szn=Z4e()}function J9n(n){return n.a?n.b:0}function kie(n){return n.a?n.b:0}function yie(n,e){return n.a-e.a}function jie(n,e){return n.a-e.a}function Eie(n,e){return n.a-e.a}function pj(n,e){return WX(n,e)}function M(n,e){return pMn(n,e)}function Cie(n,e){return e in n.a}function Y9n(n,e){return n.f=e,n}function Tie(n,e){return n.b=e,n}function Z9n(n,e){return n.c=e,n}function Mie(n,e){return n.g=e,n}function gG(n,e){return n.a=e,n}function pG(n,e){return n.f=e,n}function Aie(n,e){return n.k=e,n}function vG(n,e){return n.a=e,n}function Sie(n,e){return n.e=e,n}function mG(n,e){return n.e=e,n}function Pie(n,e){return n.f=e,n}function Iie(n,e){n.b=!0,n.d=e}function Oie(n,e){n.b=new kr(e)}function Die(n,e,t){e.td(n.a[t])}function $ie(n,e,t){e.we(n.a[t])}function Fie(n,e){return n.b-e.b}function xie(n,e){return n.g-e.g}function Lie(n,e){return n.s-e.s}function Nie(n,e){return n?0:e-1}function n8n(n,e){return n?0:e-1}function Bie(n,e){return n?e-1:0}function Rie(n,e){return e.Yf(n)}function od(n,e){return n.b=e,n}function vj(n,e){return n.a=e,n}function fd(n,e){return n.c=e,n}function hd(n,e){return n.d=e,n}function ld(n,e){return n.e=e,n}function kG(n,e){return n.f=e,n}function Uv(n,e){return n.a=e,n}function Xp(n,e){return n.b=e,n}function Vp(n,e){return n.c=e,n}function gn(n,e){return n.c=e,n}function Dn(n,e){return n.b=e,n}function pn(n,e){return n.d=e,n}function vn(n,e){return n.e=e,n}function _ie(n,e){return n.f=e,n}function mn(n,e){return n.g=e,n}function kn(n,e){return n.a=e,n}function yn(n,e){return n.i=e,n}function jn(n,e){return n.j=e,n}function e8n(n,e){return n.k=e,n}function Kie(n,e){return n.j=e,n}function Hie(n,e){yl(),Hr(e,n)}function qie(n,e,t){Nfe(n.a,e,t)}function t8n(n){mTn.call(this,n)}function yG(n){mTn.call(this,n)}function mj(n){uD.call(this,n)}function i8n(n){u2e.call(this,n)}function Q1(n){Ld.call(this,n)}function r8n(n){XD.call(this,n)}function c8n(n){XD.call(this,n)}function u8n(){Mz.call(this,"")}function Li(){this.a=0,this.b=0}function s8n(){this.b=0,this.a=0}function o8n(n,e){n.b=0,hb(n,e)}function Gie(n,e){n.c=e,n.b=!0}function f8n(n,e){return n.c._b(e)}function xo(n){return n.e&&n.e()}function nO(n){return n?n.d:null}function h8n(n,e){return LDn(n.b,e)}function zie(n){return n?n.g:null}function Uie(n){return n?n.i:null}function J1(n){return Ph(n),n.o}function ad(){ad=N,Mne=h4e()}function l8n(){l8n=N,mi=jve()}function Qp(){Qp=N,g1n=a4e()}function a8n(){a8n=N,hee=l4e()}function jG(){jG=N,oc=s6e()}function EG(){EG=N,Wl=N3()}function d8n(){throw T(new ye)}function b8n(){throw T(new ye)}function w8n(){throw T(new ye)}function g8n(){throw T(new ye)}function p8n(){throw T(new ye)}function v8n(){throw T(new ye)}function kj(n){this.a=new s2(n)}function CG(n){d_n(),gTe(this,n)}function Y1(n){this.a=new AD(n)}function vw(n,e){for(;n.ye(e););}function TG(n,e){for(;n.sd(e););}function mw(n,e){return n.a+=e,n}function eO(n,e){return n.a+=e,n}function r1(n,e){return n.a+=e,n}function dd(n,e){return n.a+=e,n}function Wv(n){return fl(n),n.a}function yj(n){return n.b!=n.d.c}function m8n(n){return n.l|n.m<<22}function MG(n,e){return n.d[e.p]}function k8n(n,e){return Q8e(n,e)}function AG(n,e,t){n.splice(e,t)}function y8n(n){n.c?rBn(n):cBn(n)}function jj(n){this.a=0,this.b=n}function j8n(){this.a=new B7(Pon)}function E8n(){this.b=new B7(won)}function C8n(){this.b=new B7(OK)}function T8n(){this.b=new B7(OK)}function M8n(){throw T(new ye)}function A8n(){throw T(new ye)}function S8n(){throw T(new ye)}function P8n(){throw T(new ye)}function I8n(){throw T(new ye)}function O8n(){throw T(new ye)}function D8n(){throw T(new ye)}function $8n(){throw T(new ye)}function F8n(){throw T(new ye)}function x8n(){throw T(new ye)}function Wie(){throw T(new ic)}function Xie(){throw T(new ic)}function L9(n){this.a=new L8n(n)}function L8n(n){cbe(this,n,cve())}function N9(n){return!n||iTn(n)}function B9(n){return Mf[n]!=-1}function Vie(){_A!=0&&(_A=0),KA=-1}function N8n(){iR==null&&(iR=[])}function Qie(n,e){$x(R(n.a),e)}function Jie(n,e){$x(R(n.a),e)}function R9(n,e){Sw.call(this,n,e)}function Jp(n,e){R9.call(this,n,e)}function SG(n,e){this.b=n,this.c=e}function B8n(n,e){this.b=n,this.a=e}function R8n(n,e){this.a=n,this.b=e}function _8n(n,e){this.a=n,this.b=e}function K8n(n,e){this.a=n,this.b=e}function H8n(n,e){this.a=n,this.b=e}function q8n(n,e){this.a=n,this.b=e}function G8n(n,e){this.a=n,this.b=e}function z8n(n,e){this.a=n,this.b=e}function U8n(n,e){this.a=n,this.b=e}function W8n(n,e){this.b=n,this.a=e}function X8n(n,e){this.b=n,this.a=e}function V8n(n,e){this.b=n,this.a=e}function Q8n(n,e){this.b=n,this.a=e}function Oe(n,e){this.f=n,this.g=e}function Yp(n,e){this.e=n,this.d=e}function bd(n,e){this.g=n,this.i=e}function tO(n,e){this.a=n,this.b=e}function J8n(n,e){this.a=n,this.f=e}function Y8n(n,e){this.b=n,this.c=e}function Yie(n,e){this.a=n,this.b=e}function Z8n(n,e){this.a=n,this.b=e}function iO(n,e){this.a=n,this.b=e}function n7n(n){Bz(n.dc()),this.c=n}function Ej(n){this.b=u(pe(n),83)}function e7n(n){this.a=u(pe(n),83)}function _0(n){this.a=u(pe(n),15)}function t7n(n){this.a=u(pe(n),15)}function Cj(n){this.b=u(pe(n),47)}function Tj(){this.q=new y.Date}function nh(){nh=N,Sin=new tln}function Zp(){Zp=N,X4=new nln}function Xv(n){return n.f.c+n.g.c}function _9(n,e){return n.b.Hc(e)}function i7n(n,e){return n.b.Ic(e)}function r7n(n,e){return n.b.Qc(e)}function c7n(n,e){return n.b.Hc(e)}function u7n(n,e){return n.c.uc(e)}function Ah(n,e){return n.a._b(e)}function s7n(n,e){return tt(n.c,e)}function o7n(n,e){return Uu(n.b,e)}function f7n(n,e){return n>e&&e0}function cO(n,e){return fc(n,e)<0}function n5(n,e){return n.a.get(e)}function lre(n,e){return e.split(n)}function S7n(n,e){return Uu(n.e,e)}function LG(n){return _n(n),!1}function xj(n){xn.call(this,n,21)}function are(n,e){cMn.call(this,n,e)}function Lj(n,e){Oe.call(this,n,e)}function uO(n,e){Oe.call(this,n,e)}function NG(n){_D(),uEn.call(this,n)}function BG(n,e){fCn(n,n.length,e)}function z9(n,e){BCn(n,n.length,e)}function dre(n,e,t){e.ud(n.a.Ge(t))}function bre(n,e,t){e.we(n.a.Fe(t))}function wre(n,e,t){e.td(n.a.Kb(t))}function gre(n,e,t){n.Mb(t)&&e.td(t)}function e5(n,e,t){n.splice(e,0,t)}function pre(n,e){return au(n.e,e)}function Nj(n,e){this.d=n,this.e=e}function P7n(n,e){this.b=n,this.a=e}function I7n(n,e){this.b=n,this.a=e}function RG(n,e){this.b=n,this.a=e}function O7n(n,e){this.a=n,this.b=e}function D7n(n,e){this.a=n,this.b=e}function $7n(n,e){this.a=n,this.b=e}function F7n(n,e){this.a=n,this.b=e}function f2(n,e){this.a=n,this.b=e}function _G(n,e){this.b=n,this.a=e}function KG(n,e){this.b=n,this.a=e}function Bj(n,e){Oe.call(this,n,e)}function Rj(n,e){Oe.call(this,n,e)}function HG(n,e){Oe.call(this,n,e)}function qG(n,e){Oe.call(this,n,e)}function kw(n,e){Oe.call(this,n,e)}function sO(n,e){Oe.call(this,n,e)}function oO(n,e){Oe.call(this,n,e)}function fO(n,e){Oe.call(this,n,e)}function _j(n,e){Oe.call(this,n,e)}function GG(n,e){Oe.call(this,n,e)}function hO(n,e){Oe.call(this,n,e)}function U9(n,e){Oe.call(this,n,e)}function Kj(n,e){Oe.call(this,n,e)}function lO(n,e){Oe.call(this,n,e)}function t5(n,e){Oe.call(this,n,e)}function zG(n,e){Oe.call(this,n,e)}function zt(n,e){Oe.call(this,n,e)}function Hj(n,e){Oe.call(this,n,e)}function x7n(n,e){this.a=n,this.b=e}function L7n(n,e){this.a=n,this.b=e}function N7n(n,e){this.a=n,this.b=e}function B7n(n,e){this.a=n,this.b=e}function R7n(n,e){this.a=n,this.b=e}function _7n(n,e){this.a=n,this.b=e}function K7n(n,e){this.a=n,this.b=e}function H7n(n,e){this.a=n,this.b=e}function q7n(n,e){this.a=n,this.b=e}function UG(n,e){this.b=n,this.a=e}function G7n(n,e){this.b=n,this.a=e}function z7n(n,e){this.b=n,this.a=e}function U7n(n,e){this.b=n,this.a=e}function t3(n,e){this.c=n,this.d=e}function W7n(n,e){this.e=n,this.d=e}function X7n(n,e){this.a=n,this.b=e}function V7n(n,e){this.b=e,this.c=n}function qj(n,e){Oe.call(this,n,e)}function W9(n,e){Oe.call(this,n,e)}function aO(n,e){Oe.call(this,n,e)}function i5(n,e){Oe.call(this,n,e)}function WG(n,e){Oe.call(this,n,e)}function dO(n,e){Oe.call(this,n,e)}function bO(n,e){Oe.call(this,n,e)}function X9(n,e){Oe.call(this,n,e)}function XG(n,e){Oe.call(this,n,e)}function wO(n,e){Oe.call(this,n,e)}function r5(n,e){Oe.call(this,n,e)}function VG(n,e){Oe.call(this,n,e)}function c5(n,e){Oe.call(this,n,e)}function u5(n,e){Oe.call(this,n,e)}function H0(n,e){Oe.call(this,n,e)}function gO(n,e){Oe.call(this,n,e)}function pO(n,e){Oe.call(this,n,e)}function QG(n,e){Oe.call(this,n,e)}function s5(n,e){Oe.call(this,n,e)}function vO(n,e){Oe.call(this,n,e)}function Gj(n,e){Oe.call(this,n,e)}function V9(n,e){Oe.call(this,n,e)}function Q9(n,e){Oe.call(this,n,e)}function h2(n,e){Oe.call(this,n,e)}function mO(n,e){Oe.call(this,n,e)}function JG(n,e){Oe.call(this,n,e)}function kO(n,e){Oe.call(this,n,e)}function yO(n,e){Oe.call(this,n,e)}function YG(n,e){Oe.call(this,n,e)}function jO(n,e){Oe.call(this,n,e)}function EO(n,e){Oe.call(this,n,e)}function CO(n,e){Oe.call(this,n,e)}function TO(n,e){Oe.call(this,n,e)}function ZG(n,e){Oe.call(this,n,e)}function Q7n(n,e){this.b=n,this.a=e}function J7n(n,e){this.a=n,this.b=e}function Y7n(n,e){this.a=n,this.b=e}function Z7n(n,e){this.a=n,this.b=e}function nkn(n,e){this.a=n,this.b=e}function nz(n,e){Oe.call(this,n,e)}function ez(n,e){Oe.call(this,n,e)}function ekn(n,e){this.b=n,this.d=e}function tz(n,e){Oe.call(this,n,e)}function iz(n,e){Oe.call(this,n,e)}function tkn(n,e){this.a=n,this.b=e}function ikn(n,e){this.a=n,this.b=e}function zj(n,e){Oe.call(this,n,e)}function o5(n,e){Oe.call(this,n,e)}function rz(n,e){Oe.call(this,n,e)}function cz(n,e){Oe.call(this,n,e)}function uz(n,e){Oe.call(this,n,e)}function MO(n,e){Oe.call(this,n,e)}function sz(n,e){Oe.call(this,n,e)}function AO(n,e){Oe.call(this,n,e)}function Uj(n,e){Oe.call(this,n,e)}function SO(n,e){Oe.call(this,n,e)}function PO(n,e){Oe.call(this,n,e)}function J9(n,e){Oe.call(this,n,e)}function IO(n,e){Oe.call(this,n,e)}function oz(n,e){Oe.call(this,n,e)}function Y9(n,e){Oe.call(this,n,e)}function fz(n,e){Oe.call(this,n,e)}function vre(n,e){return au(n.c,e)}function mre(n,e){return au(e.b,n)}function kre(n,e){return-n.b.Je(e)}function hz(n,e){return au(n.g,e)}function Z9(n,e){Oe.call(this,n,e)}function l2(n,e){Oe.call(this,n,e)}function rkn(n,e){this.a=n,this.b=e}function ckn(n,e){this.a=n,this.b=e}function fn(n,e){this.a=n,this.b=e}function f5(n,e){Oe.call(this,n,e)}function h5(n,e){Oe.call(this,n,e)}function n8(n,e){Oe.call(this,n,e)}function OO(n,e){Oe.call(this,n,e)}function Wj(n,e){Oe.call(this,n,e)}function l5(n,e){Oe.call(this,n,e)}function DO(n,e){Oe.call(this,n,e)}function Xj(n,e){Oe.call(this,n,e)}function yw(n,e){Oe.call(this,n,e)}function e8(n,e){Oe.call(this,n,e)}function a5(n,e){Oe.call(this,n,e)}function d5(n,e){Oe.call(this,n,e)}function t8(n,e){Oe.call(this,n,e)}function Vj(n,e){Oe.call(this,n,e)}function jw(n,e){Oe.call(this,n,e)}function Qj(n,e){Oe.call(this,n,e)}function ukn(n,e){this.a=n,this.b=e}function skn(n,e){this.a=n,this.b=e}function okn(n,e){this.a=n,this.b=e}function fkn(n,e){this.a=n,this.b=e}function hkn(n,e){this.a=n,this.b=e}function lkn(n,e){this.a=n,this.b=e}function Si(n,e){this.a=n,this.b=e}function Jj(n,e){Oe.call(this,n,e)}function akn(n,e){this.a=n,this.b=e}function dkn(n,e){this.a=n,this.b=e}function bkn(n,e){this.a=n,this.b=e}function wkn(n,e){this.a=n,this.b=e}function gkn(n,e){this.a=n,this.b=e}function pkn(n,e){this.a=n,this.b=e}function vkn(n,e){this.b=n,this.a=e}function mkn(n,e){this.b=n,this.a=e}function kkn(n,e){this.b=n,this.a=e}function ykn(n,e){this.b=n,this.a=e}function jkn(n,e){this.a=n,this.b=e}function Ekn(n,e){this.a=n,this.b=e}function yre(n,e){J9e(n.a,u(e,56))}function Ckn(n,e){f0e(n.a,u(e,11))}function jre(n,e){return h3(),e!=n}function Tkn(){return Q9n(),new Szn}function Mkn(){c$(),this.b=new hi}function Akn(){hM(),this.a=new hi}function Skn(){tX(),lW.call(this)}function a2(n,e){Oe.call(this,n,e)}function Pkn(n,e){this.a=n,this.b=e}function Ikn(n,e){this.a=n,this.b=e}function Yj(n,e){this.a=n,this.b=e}function Okn(n,e){this.a=n,this.b=e}function Dkn(n,e){this.a=n,this.b=e}function $kn(n,e){this.a=n,this.b=e}function Fkn(n,e){this.d=n,this.b=e}function lz(n,e){this.d=n,this.e=e}function xkn(n,e){this.f=n,this.c=e}function i8(n,e){this.b=n,this.c=e}function az(n,e){this.i=n,this.g=e}function Lkn(n,e){this.e=n,this.a=e}function Nkn(n,e){this.a=n,this.b=e}function dz(n,e){n.i=null,nT(n,e)}function Ere(n,e){n&&it($y,n,e)}function Bkn(n,e){return NF(n.a,e)}function Zj(n){return g7(n.c,n.b)}function Vr(n){return n?n.dd():null}function B(n){return n??null}function q0(n){return typeof n===X2}function G0(n){return typeof n===UZ}function ki(n){return typeof n===EL}function el(n,e){return n.Hd().Xb(e)}function nE(n,e){return Rbe(n.Kc(),e)}function gd(n,e){return fc(n,e)==0}function Cre(n,e){return fc(n,e)>=0}function b5(n,e){return fc(n,e)!=0}function Tre(n){return""+(_n(n),n)}function r8(n,e){return n.substr(e)}function Rkn(n){return Fu(n),n.d.gc()}function $O(n){return yme(n,n.c),n}function eE(n){return A5(n==null),n}function w5(n,e){return n.a+=""+e,n}function dr(n,e){return n.a+=""+e,n}function g5(n,e){return n.a+=""+e,n}function rc(n,e){return n.a+=""+e,n}function De(n,e){return n.a+=""+e,n}function bz(n,e){return n.a+=""+e,n}function _kn(n,e){Kt(n,e,n.a,n.a.a)}function ua(n,e){Kt(n,e,n.c.b,n.c)}function Mre(n,e,t){VFn(e,Mx(n,t))}function Are(n,e,t){VFn(e,Mx(n,t))}function Sre(n,e){k0e(new ie(n),e)}function Kkn(n,e){n.q.setTime($d(e))}function Hkn(n,e){kW.call(this,n,e)}function qkn(n,e){kW.call(this,n,e)}function FO(n,e){kW.call(this,n,e)}function Gkn(n){Cu(this),Z5(this,n)}function wz(n){return Ln(n,0),null}function Lo(n){return n.a=0,n.b=0,n}function zkn(n,e){return n.a=e.g+1,n}function Pre(n,e){return n.j[e.p]==2}function gz(n){return lhe(u(n,79))}function Ukn(){Ukn=N,jUn=Fe(qF())}function Wkn(){Wkn=N,RWn=Fe(PNn())}function Xkn(){this.b=new s2(sb(12))}function Vkn(){this.b=0,this.a=!1}function Qkn(){this.b=0,this.a=!1}function p5(n){this.a=n,TI.call(this)}function Jkn(n){this.a=n,TI.call(this)}function In(n,e){ri.call(this,n,e)}function xO(n,e){V0.call(this,n,e)}function Ew(n,e){az.call(this,n,e)}function LO(n,e){H3.call(this,n,e)}function Ykn(n,e){c8.call(this,n,e)}function He(n,e){$j(),it(eI,n,e)}function NO(n,e){return Zu(n.a,0,e)}function Zkn(n,e){return n.a.a.a.cc(e)}function nyn(n,e){return B(n)===B(e)}function Ire(n,e){return ni(n.a,e.a)}function Ore(n,e){return Wc(n.a,e.a)}function Dre(n,e){return xCn(n.a,e.a)}function If(n,e){return n.indexOf(e)}function pd(n,e){return n==e?0:n?1:-1}function tE(n){return n<10?"0"+n:""+n}function $re(n){return pe(n),new p5(n)}function eyn(n){return Bc(n.l,n.m,n.h)}function i3(n){return Gt((_n(n),n))}function Fre(n){return Gt((_n(n),n))}function tyn(n,e){return Wc(n.g,e.g)}function Fr(n){return typeof n===UZ}function xre(n){return n==b0||n==Hb}function Lre(n){return n==b0||n==Kb}function pz(n){return xr(n.b.b,n,0)}function iyn(n){this.a=Tkn(),this.b=n}function ryn(n){this.a=Tkn(),this.b=n}function Nre(n,e){return W(n.a,e),e}function Bre(n,e){return W(n.c,e),n}function cyn(n,e){return cs(n.a,e),n}function Rre(n,e){return wo(),e.a+=n}function _re(n,e){return wo(),e.a+=n}function Kre(n,e){return wo(),e.c+=n}function vz(n,e){S3(n,0,n.length,e)}function Sh(){Tq.call(this,new ba)}function uyn(){xE.call(this,0,0,0,0)}function d2(){ys.call(this,0,0,0,0)}function kr(n){this.a=n.a,this.b=n.b}function tl(n){return n==Zs||n==Ao}function r3(n){return n==Yh||n==Jh}function syn(n){return n==xg||n==Fg}function Cw(n){return n!=Ef&&n!=ql}function qu(n){return n.Lg()&&n.Mg()}function oyn(n){return JE(u(n,118))}function iE(n){return cs(new li,n)}function fyn(n,e){return new H3(e,n)}function Hre(n,e){return new H3(e,n)}function mz(n,e,t){UC(n,e),WC(n,t)}function rE(n,e,t){Rd(n,e),Bd(n,t)}function Yo(n,e,t){nu(n,e),eu(n,t)}function cE(n,e,t){D3(n,e),F3(n,t)}function uE(n,e,t){$3(n,e),x3(n,t)}function BO(n,e){X3(n,e),L3(n,n.D)}function kz(n){xkn.call(this,n,!0)}function hyn(n,e,t){fU.call(this,n,e,t)}function il(n){jl(),qbe.call(this,n)}function lyn(){Lj.call(this,"Head",1)}function ayn(){Lj.call(this,"Tail",3)}function RO(n){n.c=F(Zn,rn,1,0,5,1)}function dyn(n){n.a=F(Zn,rn,1,8,5,1)}function byn(n){Zc(n.xf(),new t5n(n))}function Tw(n){return n!=null?mt(n):0}function qre(n,e){return ob(e,ef(n))}function Gre(n,e){return ob(e,ef(n))}function zre(n,e){return n[n.length]=e}function Ure(n,e){return n[n.length]=e}function yz(n){return zoe(n.b.Kc(),n.a)}function Wre(n,e){return ZC(BD(n.d),e)}function Xre(n,e){return ZC(BD(n.g),e)}function Vre(n,e){return ZC(BD(n.j),e)}function tr(n,e){ri.call(this,n.b,e)}function vd(n){xE.call(this,n,n,n,n)}function jz(n){return n.b&&uL(n),n.a}function Ez(n){return n.b&&uL(n),n.c}function Qre(n,e){vf||(n.b=e)}function _O(n,e,t){return St(n,e,t),t}function wyn(n,e,t){St(n.c[e.g],e.g,t)}function Jre(n,e,t){u(n.c,69).Xh(e,t)}function Yre(n,e,t){Yo(t,t.i+n,t.j+e)}function Zre(n,e){me(bc(n.a),PMn(e))}function nce(n,e){me(Du(n.a),IMn(e))}function v5(n){Je(),cd.call(this,n)}function ece(n){return n==null?0:mt(n)}function gyn(){gyn=N,hK=new f6(cH)}function je(){je=N,new pyn,new X}function pyn(){new we,new we,new we}function Cz(){Cz=N,Hq(),bin=new we}function Zo(){Zo=N,y.Math.log(2)}function ms(){ms=N,Ch=(E7n(),Dne)}function tce(){throw T(new t1(izn))}function ice(){throw T(new t1(izn))}function rce(){throw T(new t1(rzn))}function cce(){throw T(new t1(rzn))}function vyn(n){this.a=n,HU.call(this,n)}function KO(n){this.a=n,Ej.call(this,n)}function HO(n){this.a=n,Ej.call(this,n)}function wi(n,e){mD(n.c,n.c.length,e)}function Kr(n){return n.ae?1:0}function kyn(n,e){return fc(n,e)>0?n:e}function Bc(n,e,t){return{l:n,m:e,h:t}}function uce(n,e){n.a!=null&&Ckn(e,n.a)}function yyn(n){n.a=new aI,n.c=new aI}function sE(n){this.b=n,this.a=new X}function jyn(n){this.b=new san,this.a=n}function Mz(n){vU.call(this),this.a=n}function Eyn(){Lj.call(this,"Range",2)}function Cyn(){kJ(),this.a=new B7(Hrn)}function sce(n,e){pe(e),Iw(n).Jc(new ju)}function oce(n,e){return ns(),e.n.b+=n}function fce(n,e,t){return it(n.g,t,e)}function hce(n,e,t){return it(n.k,t,e)}function lce(n,e){return it(n.a,e.a,e)}function Mw(n,e,t){return _Q(e,t,n.c)}function Az(n){return new fn(n.c,n.d)}function ace(n){return new fn(n.c,n.d)}function Qr(n){return new fn(n.a,n.b)}function Tyn(n,e){return xEe(n.a,e,null)}function dce(n){Hi(n,null),Ci(n,null)}function Myn(n){s$(n,null),o$(n,null)}function Ayn(){c8.call(this,null,null)}function Syn(){wE.call(this,null,null)}function Sz(n){this.a=n,we.call(this)}function bce(n){this.b=(Pn(),new DI(n))}function oE(n){n.j=F(Ain,q,310,0,0,1)}function wce(n,e,t){n.c.Vc(e,u(t,133))}function gce(n,e,t){n.c.ji(e,u(t,133))}function Pyn(n,e){de(n),n.Gc(u(e,15))}function m5(n,e){return Jje(n.c,n.b,e)}function pce(n,e){return new Jyn(n.Kc(),e)}function qO(n,e){return gwe(n.Kc(),e)!=-1}function Pz(n,e){return n.a.Bc(e)!=null}function fE(n){return n.Ob()?n.Pb():null}function Iyn(n){return Hs(n,0,n.length)}function I(n,e){return n!=null&&WF(n,e)}function vce(n,e){n.q.setHours(e),S6(n,e)}function Oyn(n,e){n.c&&(ZU(e),iMn(e))}function mce(n,e,t){u(n.Kb(t),164).Nb(e)}function kce(n,e,t){return SEe(n,e,t),t}function Dyn(n,e,t){n.a=e^1502,n.b=t^tN}function GO(n,e,t){return n.a[e.g][t.g]}function nf(n,e){return n.a[e.c.p][e.p]}function yce(n,e){return n.e[e.c.p][e.p]}function jce(n,e){return n.c[e.c.p][e.p]}function Ece(n,e){return n.j[e.p]=D9e(e)}function Cce(n,e){return DX(n.f,e.tg())}function Tce(n,e){return DX(n.b,e.tg())}function Mce(n,e){return n.a0?e*e/n:e*e*100}function Jce(n,e){return n>0?e/(n*n):e*100}function Yce(n,e,t){return W(e,e$n(n,t))}function Zce(n,e,t){DC(),n.Xe(e)&&t.td(n)}function s3(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function U0(n,e,t){return n.a+=e,n.b+=t,n}function nue(n,e,t){return n.a*=e,n.b*=t,n}function o8(n,e,t){return n.a-=e,n.b-=t,n}function Zz(n,e){return n.a=e.a,n.b=e.b,n}function vE(n){return n.a=-n.a,n.b=-n.b,n}function fjn(n){this.c=n,this.a=1,this.b=1}function hjn(n){this.c=n,nu(n,0),eu(n,0)}function ljn(n){Tt.call(this),V5(this,n)}function ajn(n){yL(),Nmn(this),this.mf(n)}function djn(n,e){Zv(),c8.call(this,n,e)}function nU(n,e){c1(),wE.call(this,n,e)}function bjn(n,e){c1(),wE.call(this,n,e)}function wjn(n,e){c1(),nU.call(this,n,e)}function Gu(n,e,t){Xu.call(this,n,e,t,2)}function JO(n,e){ms(),FE.call(this,n,e)}function gjn(n,e){ms(),JO.call(this,n,e)}function eU(n,e){ms(),JO.call(this,n,e)}function pjn(n,e){ms(),eU.call(this,n,e)}function tU(n,e){ms(),FE.call(this,n,e)}function vjn(n,e){ms(),tU.call(this,n,e)}function mjn(n,e){ms(),FE.call(this,n,e)}function eue(n,e){return n.c.Fc(u(e,133))}function iU(n,e,t){return jM(G8(n,e),t)}function tue(n,e,t){return e.Qk(n.e,n.c,t)}function iue(n,e,t){return e.Rk(n.e,n.c,t)}function YO(n,e){return pl(n.e,u(e,49))}function rue(n,e,t){s6(Du(n.a),e,IMn(t))}function cue(n,e,t){s6(bc(n.a),e,PMn(t))}function rU(n,e){e.$modCount=n.$modCount}function C5(){C5=N,Xm=new kt("root")}function o3(){o3=N,xy=new w9n,new g9n}function kjn(){this.a=new Od,this.b=new Od}function cU(){RIn.call(this),this.Bb|=Yi}function yjn(){Oe.call(this,"GROW_TREE",0)}function uue(n){return n==null?null:CCe(n)}function sue(n){return n==null?null:D5e(n)}function oue(n){return n==null?null:Nr(n)}function fue(n){return n==null?null:Nr(n)}function Ph(n){n.o==null&&u9e(n)}function sn(n){return A5(n==null||q0(n)),n}function Y(n){return A5(n==null||G0(n)),n}function Ce(n){return A5(n==null||ki(n)),n}function uU(n){this.q=new y.Date($d(n))}function f8(n,e){this.c=n,Yp.call(this,n,e)}function mE(n,e){this.a=n,f8.call(this,n,e)}function hue(n,e){this.d=n,Ovn(this),this.b=e}function sU(n,e){P$.call(this,n),this.a=e}function oU(n,e){P$.call(this,n),this.a=e}function lue(n){xQ.call(this,0,0),this.f=n}function fU(n,e,t){IC.call(this,n,e,t,null)}function jjn(n,e,t){IC.call(this,n,e,t,null)}function aue(n,e,t){return n.ue(e,t)<=0?t:e}function due(n,e,t){return n.ue(e,t)<=0?e:t}function bue(n,e){return u(xd(n.b,e),149)}function wue(n,e){return u(xd(n.c,e),229)}function ZO(n){return u(un(n.a,n.b),287)}function Ejn(n){return new fn(n.c,n.d+n.a)}function Cjn(n){return ns(),syn(u(n,197))}function W0(){W0=N,prn=Cn((Qu(),id))}function gue(n,e){e.a?e7e(n,e):zO(n.a,e.b)}function Tjn(n,e){vf||W(n.a,e)}function pue(n,e){return H9(),K3(e.d.i,n)}function vue(n,e){return x2(),new ABn(e,n)}function Df(n,e){return T8(e,ann),n.f=e,n}function hU(n,e,t){return t=os(n,e,3,t),t}function lU(n,e,t){return t=os(n,e,6,t),t}function aU(n,e,t){return t=os(n,e,9,t),t}function h8(n,e,t){++n.j,n.Ki(),A$(n,e,t)}function Mjn(n,e,t){++n.j,n.Hi(e,n.oi(e,t))}function Ajn(n,e,t){var i;i=n.Zc(e),i.Rb(t)}function Sjn(n,e,t){return MZ(n.c,n.b,e,t)}function dU(n,e){return(e&nt)%n.d.length}function ri(n,e){kt.call(this,n),this.a=e}function bU(n,e){xq.call(this,n),this.a=e}function nD(n,e){xq.call(this,n),this.a=e}function Pjn(n,e){this.c=n,Ld.call(this,e)}function Ijn(n,e){this.a=n,Omn.call(this,e)}function l8(n,e){this.a=n,Omn.call(this,e)}function Ojn(n){this.a=(rs(n,Pb),new Pc(n))}function Djn(n){this.a=(rs(n,Pb),new Pc(n))}function a8(n){return!n.a&&(n.a=new vr),n.a}function $jn(n){return n>8?0:n+1}function mue(n,e){return qn(),n==e?0:n?1:-1}function wU(n,e,t){return m2(n,u(e,22),t)}function kue(n,e,t){return n.apply(e,t)}function Fjn(n,e,t){return n.a+=Hs(e,0,t),n}function gU(n,e){var t;return t=n.e,n.e=e,t}function yue(n,e){var t;t=n[eN],t.call(n,e)}function jue(n,e){var t;t=n[eN],t.call(n,e)}function X0(n,e){n.a.Vc(n.b,e),++n.b,n.c=-1}function xjn(n){Cu(n.e),n.d.b=n.d,n.d.a=n.d}function d8(n){n.b?d8(n.b):n.f.c.zc(n.e,n.d)}function Eue(n,e,t){ca(),Svn(n,e.Ce(n.a,t))}function Cue(n,e){return nO(p$n(n.a,e,!0))}function Tue(n,e){return nO(v$n(n.a,e,!0))}function bo(n,e){return pj(new Array(e),n)}function eD(n){return String.fromCharCode(n)}function Mue(n){return n==null?null:n.message}function Ljn(){this.a=new X,this.b=new X}function Njn(){this.a=new LH,this.b=new Umn}function Bjn(){this.b=new Li,this.c=new X}function pU(){this.d=new Li,this.e=new Li}function vU(){this.n=new Li,this.o=new Li}function kE(){this.n=new i2,this.i=new d2}function Rjn(){this.a=new v4n,this.b=new cwn}function _jn(){this.a=new X,this.d=new X}function Kjn(){this.b=new hi,this.a=new hi}function Hjn(){this.b=new we,this.a=new we}function qjn(){this.b=new E8n,this.a=new sgn}function Gjn(){kE.call(this),this.a=new Li}function T5(n){Jbe.call(this,n,(FC(),vR))}function mU(n,e,t,i){xE.call(this,n,e,t,i)}function Aue(n,e,t){t!=null&&JC(e,rx(n,t))}function Sue(n,e,t){t!=null&&YC(e,rx(n,t))}function kU(n,e,t){return t=os(n,e,11,t),t}function st(n,e){return n.a+=e.a,n.b+=e.b,n}function yi(n,e){return n.a-=e.a,n.b-=e.b,n}function Pue(n,e){return n.n.a=(_n(e),e+10)}function Iue(n,e){return n.n.a=(_n(e),e+10)}function Oue(n,e){return e==n||o4(sM(e),n)}function zjn(n,e){return it(n.a,e,"")==null}function Due(n,e){return H9(),!K3(e.d.i,n)}function $ue(n,e){tl(n.f)?Qme(n,e):Fve(n,e)}function Fue(n,e){var t;return t=e.Hh(n.a),t}function V0(n,e){mr.call(this,rm+n+Ra+e)}function g2(n,e,t,i){V.call(this,n,e,t,i)}function yU(n,e,t,i){V.call(this,n,e,t,i)}function Ujn(n,e,t,i){yU.call(this,n,e,t,i)}function Wjn(n,e,t,i){zE.call(this,n,e,t,i)}function tD(n,e,t,i){zE.call(this,n,e,t,i)}function jU(n,e,t,i){zE.call(this,n,e,t,i)}function Xjn(n,e,t,i){tD.call(this,n,e,t,i)}function EU(n,e,t,i){tD.call(this,n,e,t,i)}function Fn(n,e,t,i){jU.call(this,n,e,t,i)}function Vjn(n,e,t,i){EU.call(this,n,e,t,i)}function Qjn(n,e,t,i){yW.call(this,n,e,t,i)}function Jjn(n,e,t){this.a=n,Vz.call(this,e,t)}function Yjn(n,e,t){this.c=e,this.b=t,this.a=n}function xue(n,e,t){return n.d=u(e.Kb(t),164)}function CU(n,e){return n.Aj().Nh().Kh(n,e)}function TU(n,e){return n.Aj().Nh().Ih(n,e)}function Zjn(n,e){return _n(n),B(n)===B(e)}function Mn(n,e){return _n(n),B(n)===B(e)}function iD(n,e){return nO(p$n(n.a,e,!1))}function rD(n,e){return nO(v$n(n.a,e,!1))}function Lue(n,e){return n.b.sd(new D7n(n,e))}function Nue(n,e){return n.b.sd(new $7n(n,e))}function nEn(n,e){return n.b.sd(new F7n(n,e))}function MU(n,e,t){return n.lastIndexOf(e,t)}function Bue(n,e,t){return ni(n[e.b],n[t.b])}function Rue(n,e){return H(e,(nn(),Jk),n)}function _ue(n,e){return Wc(e.a.d.p,n.a.d.p)}function Kue(n,e){return Wc(n.a.d.p,e.a.d.p)}function Hue(n,e){return ni(n.c-n.s,e.c-e.s)}function eEn(n){return n.c?xr(n.c.a,n,0):-1}function que(n){return n<100?null:new Q1(n)}function p2(n){return n==td||n==Eh||n==Ac}function tEn(n,e){return I(e,15)&&oBn(n.c,e)}function Gue(n,e){vf||e&&(n.d=e)}function cD(n,e){var t;return t=e,!!VV(n,t)}function AU(n,e){this.c=n,DD.call(this,n,e)}function iEn(n){this.c=n,FO.call(this,IM,0)}function rEn(n,e){Voe.call(this,n,n.length,e)}function zue(n,e,t){return u(n.c,69).lk(e,t)}function yE(n,e,t){return u(n.c,69).mk(e,t)}function Uue(n,e,t){return tue(n,u(e,332),t)}function SU(n,e,t){return iue(n,u(e,332),t)}function Wue(n,e,t){return txn(n,u(e,332),t)}function cEn(n,e,t){return zve(n,u(e,332),t)}function M5(n,e){return e==null?null:ab(n.b,e)}function PU(n){return G0(n)?(_n(n),n):n.ke()}function jE(n){return!isNaN(n)&&!isFinite(n)}function uEn(n){$f(),this.a=(Pn(),new Wp(n))}function b8(n){h3(),this.d=n,this.a=new gw}function ks(n,e,t){this.a=n,this.b=e,this.c=t}function sEn(n,e,t){this.a=n,this.b=e,this.c=t}function oEn(n,e,t){this.d=n,this.b=t,this.a=e}function uD(n){yyn(this),_s(this),Vi(this,n)}function du(n){RO(this),GU(this.c,0,n.Pc())}function fEn(n){Wu(n.a),uPn(n.c,n.b),n.b=null}function hEn(n){this.a=n,nh(),tu(Date.now())}function lEn(){lEn=N,Xin=new Lc,XA=new Lc}function sD(){sD=N,Rin=new iln,Pzn=new rln}function aEn(){aEn=N,Nne=F(Zn,rn,1,0,5,1)}function dEn(){dEn=N,eee=F(Zn,rn,1,0,5,1)}function IU(){IU=N,tee=F(Zn,rn,1,0,5,1)}function $f(){$f=N,new Bq((Pn(),Pn(),cr))}function Xue(n){return FC(),$e((pPn(),Dzn),n)}function Vue(n){return lf(),$e((LSn(),Bzn),n)}function Que(n){return $T(),$e((qAn(),Gzn),n)}function Jue(n){return RC(),$e((GAn(),zzn),n)}function Yue(n){return dM(),$e((IOn(),Uzn),n)}function Zue(n){return _o(),$e(($Sn(),Vzn),n)}function nse(n){return Tu(),$e((FSn(),Jzn),n)}function ese(n){return Yc(),$e((xSn(),Zzn),n)}function tse(n){return SM(),$e((Ukn(),jUn),n)}function ise(n){return Hd(),$e((mPn(),CUn),n)}function rse(n){return K2(),$e((kPn(),MUn),n)}function cse(n){return d6(),$e((yPn(),PUn),n)}function use(n){return Aj(),$e((yAn(),IUn),n)}function sse(n){return _C(),$e((zAn(),WUn),n)}function ose(n){return W5(),$e((NSn(),bWn),n)}function fse(n){return Qi(),$e((JPn(),vWn),n)}function hse(n){return G3(),$e((vPn(),EWn),n)}function lse(n){return qd(),$e((BSn(),PWn),n)}function OU(n,e){if(!n)throw T(new Hn(e))}function ase(n){return Qn(),$e((vIn(),$Wn),n)}function DU(n){xE.call(this,n.d,n.c,n.a,n.b)}function oD(n){xE.call(this,n.d,n.c,n.a,n.b)}function $U(n,e,t){this.b=n,this.c=e,this.a=t}function EE(n,e,t){this.b=n,this.a=e,this.c=t}function bEn(n,e,t){this.a=n,this.b=e,this.c=t}function FU(n,e,t){this.a=n,this.b=e,this.c=t}function wEn(n,e,t){this.a=n,this.b=e,this.c=t}function xU(n,e,t){this.a=n,this.b=e,this.c=t}function gEn(n,e,t){this.b=n,this.a=e,this.c=t}function CE(n,e,t){this.e=e,this.b=n,this.d=t}function dse(n,e,t){return ca(),n.a.Od(e,t),e}function fD(n){var e;return e=new Dln,e.e=n,e}function LU(n){var e;return e=new Zmn,e.b=n,e}function w8(){w8=N,sS=new Fdn,oS=new xdn}function wo(){wo=N,WWn=new pbn,XWn=new vbn}function bse(n){return aT(),$e((EPn(),HWn),n)}function wse(n){return hf(),$e((TPn(),JWn),n)}function gse(n){return lM(),$e((mOn(),cXn),n)}function pse(n){return q2(),$e((yIn(),uXn),n)}function vse(n){return OC(),$e((JAn(),sXn),n)}function mse(n){return F2(),$e((RSn(),oXn),n)}function kse(n){return Vw(),$e((UPn(),ZWn),n)}function yse(n){return Kd(),$e((HSn(),rXn),n)}function jse(n){return VC(),$e((_Sn(),fXn),n)}function Ese(n){return Pa(),$e((GPn(),hXn),n)}function Cse(n){return V8(),$e((WAn(),lXn),n)}function Tse(n){return ya(),$e((KSn(),dXn),n)}function Mse(n){return eM(),$e((TIn(),bXn),n)}function Ase(n){return K8(),$e((XAn(),wXn),n)}function Sse(n){return A7(),$e((EIn(),gXn),n)}function Pse(n){return h4(),$e((jIn(),pXn),n)}function Ise(n){return or(),$e((zOn(),vXn),n)}function Ose(n){return q3(),$e((GSn(),mXn),n)}function Dse(n){return Nh(),$e((qSn(),yXn),n)}function $se(n){return kC(),$e((YAn(),jXn),n)}function Fse(n){return Ss(),$e((WPn(),EXn),n)}function xse(n){return JT(),$e((CIn(),BQn),n)}function Lse(n){return i6(),$e((zSn(),RQn),n)}function Nse(n){return wb(),$e((MPn(),_Qn),n)}function Bse(n){return ur(),$e((XSn(),UQn),n)}function Rse(n){return Zw(),$e((vOn(),HQn),n)}function _se(n){return Rh(),$e((WSn(),qQn),n)}function Kse(n){return z8(),$e((QAn(),GQn),n)}function Hse(n){return oT(),$e((USn(),WQn),n)}function qse(n){return b6(),$e((zPn(),KQn),n)}function Gse(n){return x8(),$e((VAn(),XQn),n)}function zse(n){return Q3(),$e((QSn(),VQn),n)}function Use(n){return uT(),$e((JSn(),QQn),n)}function Wse(n){return dT(),$e((VSn(),JQn),n)}function Xse(n){return _d(),$e((YSn(),hJn),n)}function Vse(n){return z5(),$e((nSn(),wJn),n)}function Qse(n){return xf(),$e((eSn(),jJn),n)}function Jse(n){return tf(),$e((tSn(),CJn),n)}function Yse(n){return No(),$e((ZAn(),RJn),n)}function Zse(n){return Id(),$e((iSn(),UJn),n)}function noe(n){return c4(),$e((jPn(),WJn),n)}function eoe(n){return k6(),$e((MIn(),VJn),n)}function toe(n){return aC(),$e((uSn(),fYn),n)}function ioe(n){return iT(),$e((cSn(),wYn),n)}function roe(n){return gC(),$e((rSn(),hYn),n)}function coe(n){return CT(),$e((ZSn(),pYn),n)}function uoe(n){return $C(),$e((sSn(),vYn),n)}function soe(n){return f7(),$e((nPn(),mYn),n)}function ooe(n){return qT(),$e((CPn(),FYn),n)}function foe(n){return sT(),$e((tPn(),xYn),n)}function hoe(n){return ET(),$e((ePn(),LYn),n)}function loe(n){return g4(),$e((QPn(),tZn),n)}function aoe(n){return w7(),$e((iPn(),iZn),n)}function doe(n){return Pj(),$e((mAn(),rZn),n)}function boe(n){return Ij(),$e((vAn(),uZn),n)}function woe(n){return L8(),$e((fSn(),sZn),n)}function goe(n){return P7(),$e((XPn(),oZn),n)}function poe(n){return Jv(),$e((kAn(),CZn),n)}function voe(n){return c7(),$e((oSn(),TZn),n)}function moe(n){return Ho(),$e((VPn(),OZn),n)}function koe(n){return y1(),$e((kOn(),$Zn),n)}function yoe(n){return fh(),$e((kIn(),FZn),n)}function joe(n){return vb(),$e((mIn(),_Zn),n)}function Eoe(n){return rr(),$e((Wkn(),RWn),n)}function Coe(n){return B3(),$e((UAn(),BWn),n)}function Toe(n){return sr(),$e((YPn(),ene),n)}function Moe(n){return of(),$e((cPn(),tne),n)}function Aoe(n){return Hh(),$e((PPn(),ine),n)}function Soe(n){return ZT(),$e((SIn(),rne),n)}function Poe(n){return _h(),$e((rPn(),une),n)}function Ioe(n){return us(),$e((SPn(),one),n)}function Ooe(n){return jb(),$e((POn(),fne),n)}function Doe(n){return qw(),$e((ZPn(),hne),n)}function $oe(n){return Mi(),$e((bIn(),lne),n)}function Foe(n){return Mu(),$e((AIn(),ane),n)}function xoe(n){return Qu(),$e((OPn(),vne),n)}function Loe(n){return Lu(),$e((UOn(),mne),n)}function Noe(n){return J(),$e((nIn(),dne),n)}function Boe(n){return AT(),$e((IPn(),kne),n)}function Roe(n){return Vu(),$e((APn(),Ene),n)}function _oe(n){return d4(),$e((yOn(),Lne),n)}function Koe(n,e){return _n(n),n+(_n(e),e)}function Hoe(n,e){return nh(),me(R(n.a),e)}function qoe(n,e){return nh(),me(R(n.a),e)}function hD(n,e){this.c=n,this.a=e,this.b=e-n}function pEn(n,e,t){this.a=n,this.b=e,this.c=t}function NU(n,e,t){this.a=n,this.b=e,this.c=t}function BU(n,e,t){this.a=n,this.b=e,this.c=t}function vEn(n,e,t){this.a=n,this.b=e,this.c=t}function mEn(n,e,t){this.a=n,this.b=e,this.c=t}function s1(n,e,t){this.e=n,this.a=e,this.c=t}function kEn(n,e,t){ms(),QW.call(this,n,e,t)}function lD(n,e,t){ms(),FW.call(this,n,e,t)}function RU(n,e,t){ms(),FW.call(this,n,e,t)}function _U(n,e,t){ms(),FW.call(this,n,e,t)}function yEn(n,e,t){ms(),lD.call(this,n,e,t)}function KU(n,e,t){ms(),lD.call(this,n,e,t)}function jEn(n,e,t){ms(),KU.call(this,n,e,t)}function EEn(n,e,t){ms(),RU.call(this,n,e,t)}function CEn(n,e,t){ms(),_U.call(this,n,e,t)}function g8(n,e){return pe(n),pe(e),new z8n(n,e)}function v2(n,e){return pe(n),pe(e),new NEn(n,e)}function Goe(n,e){return pe(n),pe(e),new BEn(n,e)}function zoe(n,e){return pe(n),pe(e),new W8n(n,e)}function u(n,e){return A5(n==null||WF(n,e)),n}function f3(n){var e;return e=new X,_$(e,n),e}function Uoe(n){var e;return e=new hi,_$(e,n),e}function TEn(n){var e;return e=new Wq,nF(e,n),e}function p8(n){var e;return e=new Tt,nF(e,n),e}function Woe(n){return!n.e&&(n.e=new X),n.e}function Xoe(n){return!n.c&&(n.c=new Bp),n.c}function W(n,e){return n.c[n.c.length]=e,!0}function MEn(n,e){this.c=n,this.b=e,this.a=!1}function HU(n){this.d=n,Ovn(this),this.b=_fe(n.d)}function AEn(){this.a=";,;",this.b="",this.c=""}function Voe(n,e,t){SCn.call(this,e,t),this.a=n}function SEn(n,e,t){this.b=n,Hkn.call(this,e,t)}function qU(n,e,t){this.c=n,Nj.call(this,e,t)}function GU(n,e,t){aY(t,0,n,e,t.length,!1)}function th(n,e,t,i,r){n.b=e,n.c=t,n.d=i,n.a=r}function Qoe(n,e){e&&(n.b=e,n.a=(fl(e),e.a))}function zU(n,e,t,i,r){n.d=e,n.c=t,n.a=i,n.b=r}function UU(n){var e,t;e=n.b,t=n.c,n.b=t,n.c=e}function WU(n){var e,t;t=n.d,e=n.a,n.d=e,n.a=t}function XU(n){return bl(the(Fr(n)?Ks(n):n))}function Joe(n,e){return Wc(GEn(n.d),GEn(e.d))}function Yoe(n,e){return e==(J(),Gn)?n.c:n.d}function h3(){h3=N,don=(J(),Gn),dP=Vn}function PEn(){this.b=K(Y(cn((Go(),xR))))}function IEn(n){return ca(),F(Zn,rn,1,n,5,1)}function Zoe(n){return new fn(n.c+n.b,n.d+n.a)}function nfe(n,e){return Sj(),Wc(n.d.p,e.d.p)}function aD(n){return ne(n.b!=0),Ts(n,n.a.a)}function efe(n){return ne(n.b!=0),Ts(n,n.c.b)}function VU(n,e){if(!n)throw T(new R9n(e))}function TE(n,e){if(!n)throw T(new Hn(e))}function QU(n,e,t){t3.call(this,n,e),this.b=t}function v8(n,e,t){lz.call(this,n,e),this.c=t}function OEn(n,e,t){oIn.call(this,e,t),this.d=n}function JU(n){IU(),Yy.call(this),this.th(n)}function DEn(n,e,t){this.a=n,Ew.call(this,e,t)}function $En(n,e,t){this.a=n,Ew.call(this,e,t)}function ME(n,e,t){lz.call(this,n,e),this.c=t}function FEn(){T3(),khe.call(this,(Z1(),uo))}function xEn(n){return n!=null&&!$F(n,a9,d9)}function tfe(n,e){return(GDn(n)<<4|GDn(e))&Ut}function ife(n,e){return QE(),ex(n,e),new oTn(n,e)}function sa(n,e){var t;n.n&&(t=e,W(n.f,t))}function l3(n,e,t){var i;i=new Z0(t),Ro(n,e,i)}function rfe(n,e){var t;return t=n.c,wV(n,e),t}function YU(n,e){return e<0?n.g=-1:n.g=e,n}function AE(n,e){return H0e(n),n.a*=e,n.b*=e,n}function LEn(n,e,t,i,r){n.c=e,n.d=t,n.b=i,n.a=r}function Ke(n,e){return Kt(n,e,n.c.b,n.c),!0}function ZU(n){n.a.b=n.b,n.b.a=n.a,n.a=n.b=null}function dD(n){this.b=n,this.a=Ed(this.b.a).Ed()}function NEn(n,e){this.b=n,this.a=e,TI.call(this)}function BEn(n,e){this.a=n,this.b=e,TI.call(this)}function REn(n,e){SCn.call(this,e,1040),this.a=n}function m8(n){return n==0||isNaN(n)?n:n<0?-1:1}function cfe(n){return C2(),hh(n)==Pt(ml(n))}function ufe(n){return C2(),ml(n)==Pt(hh(n))}function jd(n,e){return v6(n,new t3(e.a,e.b))}function sfe(n){return!Xi(n)&&n.c.i.c==n.d.i.c}function SE(n){var e;return e=n.n,n.a.b+e.d+e.a}function _En(n){var e;return e=n.n,n.e.b+e.d+e.a}function nW(n){var e;return e=n.n,n.e.a+e.b+e.c}function KEn(n){return Je(),new ih(0,n)}function ofe(n){return n.a?n.a:WD(n)}function A5(n){if(!n)throw T(new Up(null))}function HEn(){HEn=N,mH=(Pn(),new OI(XB))}function PE(){PE=N,new JQ((HI(),uR),(qI(),cR))}function qEn(){qEn=N,jin=F(Wi,q,19,256,0,1)}function bD(n,e,t,i){MQ.call(this,n,e,t,i,0,0)}function ffe(n,e,t){return it(n.b,u(t.b,17),e)}function hfe(n,e,t){return it(n.b,u(t.b,17),e)}function lfe(n,e){return W(n,new fn(e.a,e.b))}function afe(n,e){return n.c=e)throw T(new qq)}function Xfe(n,e,t){return St(e,0,rW(e[0],t[0])),e}function Vfe(n,e,t){e.Ye(t,K(Y(te(n.b,t)))*n.a)}function ACn(n,e,t){return eg(),R3(n,e)&&R3(n,t)}function D5(n){return Mu(),!n.Hc(n1)&&!n.Hc(Gl)}function qE(n){return new fn(n.c+n.b/2,n.d+n.a/2)}function MD(n,e){return e.kh()?pl(n.b,u(e,49)):e}function kW(n,e){this.e=n,this.d=e&64?e|Bf:e}function SCn(n,e){this.c=0,this.d=n,this.b=e|64|Bf}function GE(n){this.b=new Pc(11),this.a=(Ow(),n)}function AD(n){this.b=null,this.a=(Ow(),n||Lin)}function PCn(n){this.a=Y$n(n.a),this.b=new du(n.b)}function ICn(n){this.b=n,b2.call(this,n),$yn(this)}function OCn(n){this.b=n,u8.call(this,n),Fyn(this)}function Y0(n,e,t){this.a=n,g2.call(this,e,t,5,6)}function yW(n,e,t,i){this.b=n,Yt.call(this,e,t,i)}function gi(n,e,t,i,r){D$.call(this,n,e,t,i,r,-1)}function $5(n,e,t,i,r){R8.call(this,n,e,t,i,r,-1)}function V(n,e,t,i){Yt.call(this,n,e,t),this.b=i}function zE(n,e,t,i){v8.call(this,n,e,t),this.b=i}function DCn(n){xkn.call(this,n,!1),this.a=!1}function $Cn(n,e){this.b=n,bvn.call(this,n.b),this.a=e}function FCn(n,e){nb(),Yie.call(this,n,mT(new Hu(e)))}function UE(n,e){return Je(),new xW(n,e,0)}function SD(n,e){return Je(),new xW(6,n,e)}function Qfe(n,e){return Mn(n.substr(0,e.length),e)}function Uu(n,e){return ki(e)?QD(n,e):!!Sr(n.f,e)}function Oi(n,e){for(_n(e);n.Ob();)e.td(n.Pb())}function Pw(n,e,t){jl(),this.e=n,this.d=e,this.a=t}function o1(n,e,t,i){var r;r=n.i,r.i=e,r.a=t,r.b=i}function jW(n){var e;for(e=n;e.f;)e=e.f;return e}function y2(n){var e;return e=t6(n),ne(e!=null),e}function Jfe(n){var e;return e=Lge(n),ne(e!=null),e}function d3(n,e){var t;return t=n.a.gc(),$X(e,t),t-e}function EW(n,e){var t;for(t=0;t0?y.Math.log(n/e):-100}function xCn(n,e){return fc(n,e)<0?-1:fc(n,e)>0?1:0}function SW(n,e,t){return MRn(n,u(e,46),u(t,167))}function LCn(n,e){return u(vW(Ed(n.a)).Xb(e),42).cd()}function uhe(n,e){return P0e(e,n.length),new REn(n,e)}function DD(n,e){this.d=n,ie.call(this,n),this.e=e}function Cd(n){this.d=(_n(n),n),this.a=0,this.c=IM}function PW(n,e){cd.call(this,1),this.a=n,this.b=e}function NCn(n,e){return n.c?NCn(n.c,e):W(n.b,e),n}function she(n,e,t){var i;return i=ub(n,e),g$(n,e,t),i}function IW(n,e){var t;return t=n.slice(0,e),WX(t,n)}function BCn(n,e,t){var i;for(i=0;i=n.g}function KD(n,e,t){var i;return i=Y$(n,e,t),rZ(n,i)}function j2(n,e){var t;t=n.a.length,ub(n,t),g$(n,t,e)}function ZCn(n,e){var t;t=console[n],t.call(console,e)}function nTn(n,e){var t;++n.j,t=n.Vi(),n.Ii(n.oi(t,e))}function mhe(n,e,t){u(e.b,65),Zc(e.a,new NU(n,t,e))}function FW(n,e,t){uj.call(this,e),this.a=n,this.b=t}function xW(n,e,t){cd.call(this,n),this.a=e,this.b=t}function LW(n,e,t){this.a=n,xq.call(this,e),this.b=t}function eTn(n,e,t){this.a=n,aX.call(this,8,e,null,t)}function khe(n){this.a=(_n(xe),xe),this.b=n,new tG}function tTn(n){this.c=n,this.b=this.c.a,this.a=this.c.e}function NW(n){this.c=n,this.b=n.a.d.a,rU(n.a.e,this)}function Wu(n){z0(n.c!=-1),n.d.$c(n.c),n.b=n.c,n.c=-1}function L5(n){return y.Math.sqrt(n.a*n.a+n.b*n.b)}function Md(n,e){return a3(e,n.a.c.length),un(n.a,e)}function Ff(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function yhe(n){return 0>=n?new PG:sbe(n-1)}function jhe(n){return aw?QD(aw,n):!1}function iTn(n){return n?n.dc():!n.Kc().Ob()}function Gi(n){return!n.a&&n.c?n.c.b:n.a}function Ehe(n){return!n.a&&(n.a=new Yt(zl,n,4)),n.a}function Ad(n){return!n.d&&(n.d=new Yt(ar,n,1)),n.d}function _n(n){if(n==null)throw T(new Nv);return n}function N5(n){n.c?n.c.He():(n.d=!0,S8e(n))}function fl(n){n.c?fl(n.c):(Ta(n),n.d=!0)}function rTn(n){KW(n.a),n.b=F(Zn,rn,1,n.b.length,5,1)}function Che(n,e){return Wc(e.j.c.length,n.j.c.length)}function The(n,e){n.c<0||n.b.b=0?n.Bh(t):bY(n,e)}function cTn(n){var e,t;return e=n.c.i.c,t=n.d.i.c,e==t}function Ahe(n){if(n.p!=4)throw T(new fu);return n.e}function She(n){if(n.p!=3)throw T(new fu);return n.e}function Phe(n){if(n.p!=6)throw T(new fu);return n.f}function Ihe(n){if(n.p!=6)throw T(new fu);return n.k}function Ohe(n){if(n.p!=3)throw T(new fu);return n.j}function Dhe(n){if(n.p!=4)throw T(new fu);return n.j}function BW(n){return!n.b&&(n.b=new sj(new KI)),n.b}function Sd(n){return n.c==-2&&Pte(n,Qve(n.g,n.b)),n.c}function g3(n,e){var t;return t=LD("",n),t.n=e,t.i=1,t}function $he(n,e){yD(u(e.b,65),n),Zc(e.a,new Aq(n))}function Fhe(n,e){me((!n.a&&(n.a=new l8(n,n)),n.a),e)}function uTn(n,e){this.b=n,DD.call(this,n,e),$yn(this)}function sTn(n,e){this.b=n,AU.call(this,n,e),Fyn(this)}function RW(n,e,t,i){bd.call(this,n,e),this.d=t,this.a=i}function VE(n,e,t,i){bd.call(this,n,t),this.a=e,this.f=i}function oTn(n,e){bce.call(this,obe(pe(n),pe(e))),this.a=e}function fTn(){UJ.call(this,Ka,(a8n(),hee)),tEe(this)}function hTn(){UJ.call(this,Vs,(Qp(),g1n)),lje(this)}function lTn(){Oe.call(this,"DELAUNAY_TRIANGULATION",0)}function xhe(n){return String.fromCharCode.apply(null,n)}function it(n,e,t){return ki(e)?yr(n,e,t):_c(n.f,e,t)}function _W(n){return Pn(),n?n.ve():(Ow(),Ow(),Bin)}function Lhe(n,e,t){return L2(),t.pg(n,u(e.cd(),146))}function aTn(n,e){return PE(),new JQ(new Wyn(n),new Uyn(e))}function Nhe(n){return rs(n,AL),KC(qi(qi(5,n),n/10|0))}function QE(){QE=N,fzn=new GI(A(M(Ha,1),OM,42,0,[]))}function dTn(n){return!n.d&&(n.d=new _p(n.c.Cc())),n.d}function p3(n){return!n.a&&(n.a=new W9n(n.c.vc())),n.a}function bTn(n){return!n.b&&(n.b=new Wp(n.c.ec())),n.b}function ch(n,e){for(;e-- >0;)n=n<<1|(n<0?1:0);return n}function pc(n,e){return B(n)===B(e)||n!=null&&tt(n,e)}function Bhe(n,e){return qn(),u(e.b,19).ai&&++i,i}function Oh(n){var e,t;return t=(e=new ud,e),O3(t,n),t}function UD(n){var e,t;return t=(e=new ud,e),VJ(t,n),t}function Zhe(n,e){var t;return t=te(n.f,e),MV(e,t),null}function WD(n){var e;return e=hbe(n),e||null}function CTn(n){return!n.b&&(n.b=new V(bi,n,12,3)),n.b}function n1e(n){return n!=null&&_9(tI,n.toLowerCase())}function e1e(n,e){return ni(bu(n)*zu(n),bu(e)*zu(e))}function t1e(n,e){return ni(bu(n)*zu(n),bu(e)*zu(e))}function i1e(n,e){return ni(n.d.c+n.d.b/2,e.d.c+e.d.b/2)}function r1e(n,e){return ni(n.g.c+n.g.b/2,e.g.c+e.g.b/2)}function TTn(n,e,t){t.a?eu(n,e.b-n.f/2):nu(n,e.a-n.g/2)}function MTn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ATn(n,e,t,i){this.a=n,this.b=e,this.c=t,this.d=i}function ha(n,e,t,i){this.e=n,this.a=e,this.c=t,this.d=i}function STn(n,e,t,i){this.a=n,this.c=e,this.d=t,this.b=i}function PTn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function ITn(n,e,t,i){ms(),ySn.call(this,e,t,i),this.a=n}function OTn(n,e){this.a=n,hue.call(this,n,u(n.d,15).Zc(e))}function XD(n){this.f=n,this.c=this.f.e,n.f>0&&qFn(this)}function DTn(n,e,t,i){this.b=n,this.c=i,FO.call(this,e,t)}function $Tn(n){return ne(n.b=0&&Mn(n.substr(t,e.length),e)}function hl(n,e,t,i,r,c,o){return new v$(n.e,e,t,i,r,c,o)}function QTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function JTn(n,e,t,i,r,c){this.a=n,z$.call(this,e,t,i,r,c)}function YTn(n,e){this.g=n,this.d=A(M(mh,1),E1,10,0,[e])}function f1(n,e){this.e=n,this.a=Zn,this.b=yBn(e),this.c=e}function ZTn(n,e){kE.call(this),eV(this),this.a=n,this.c=e}function M8(n,e,t,i){St(n.c[e.g],t.g,i),St(n.c[t.g],e.g,i)}function ZD(n,e,t,i){St(n.c[e.g],e.g,t),St(n.b[e.g],e.g,i)}function M1e(){return x8(),A(M(ron,1),z,376,0,[uK,iy])}function A1e(){return K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])}function S1e(){return V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])}function P1e(){return OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])}function I1e(){return kC(),A(M(fun,1),z,420,0,[j_,oun])}function O1e(){return z8(),A(M(non,1),z,421,0,[iK,rK])}function D1e(){return z5(),A(M(bJn,1),z,523,0,[Hm,Km])}function $1e(){return No(),A(M(BJn,1),z,520,0,[tw,Bl])}function F1e(){return xf(),A(M(yJn,1),z,516,0,[M0,I1])}function x1e(){return tf(),A(M(EJn,1),z,515,0,[Ja,yf])}function L1e(){return Id(),A(M(zJn,1),z,455,0,[Rl,Lg])}function N1e(){return gC(),A(M(Son,1),z,425,0,[yK,Aon])}function B1e(){return aC(),A(M(Mon,1),z,480,0,[kK,Ton])}function R1e(){return iT(),A(M(Pon,1),z,495,0,[EP,mv])}function _1e(){return $C(),A(M(Oon,1),z,426,0,[Ion,TK])}function K1e(){return c7(),A(M(Ffn,1),z,429,0,[DP,$fn])}function H1e(){return L8(),A(M(afn,1),z,430,0,[FK,IP])}function q1e(){return $T(),A(M(Jin,1),z,428,0,[yR,Qin])}function G1e(){return RC(),A(M(Zin,1),z,427,0,[Yin,jR])}function z1e(){return _C(),A(M(Arn,1),z,424,0,[$R,tS])}function U1e(){return B3(),A(M(NWn,1),z,511,0,[_k,UR])}function sC(n,e,t,i){return t>=0?n.jh(e,t,i):n.Sg(null,t,i)}function n$(n){return n.b.b==0?n.a.$e():aD(n.b)}function W1e(n){if(n.p!=5)throw T(new fu);return ge(n.f)}function X1e(n){if(n.p!=5)throw T(new fu);return ge(n.k)}function VW(n){return B(n.a)===B((eF(),gH))&&Vje(n),n.a}function nMn(n){this.a=u(pe(n),271),this.b=(Pn(),new Hz(n))}function eMn(n,e){bte(this,new fn(n.a,n.b)),wte(this,p8(e))}function Id(){Id=N,Rl=new iz(Y2,0),Lg=new iz(Z2,1)}function xf(){xf=N,M0=new ez(Z2,0),I1=new ez(Y2,1)}function Od(){rie.call(this,new s2(sb(12))),Bz(!0),this.a=2}function e$(n,e,t){Je(),cd.call(this,n),this.b=e,this.a=t}function QW(n,e,t){ms(),uj.call(this,e),this.a=n,this.b=t}function tMn(n){kE.call(this),eV(this),this.a=n,this.c=!0}function iMn(n){var e;e=n.c.d.b,n.b=e,n.a=n.c.d,e.a=n.c.d.b=n}function oC(n){var e;ebe(n.a),byn(n.a),e=new tj(n.a),TQ(e)}function V1e(n,e){aBn(n,!0),Zc(n.e.wf(),new $U(n,!0,e))}function fC(n,e){return LAn(e),Y0e(n,F(be,Le,25,e,15,1),e)}function Q1e(n,e){return C2(),n==Pt(hh(e))||n==Pt(ml(e))}function vc(n,e){return e==null?Vr(Sr(n.f,null)):n5(n.g,e)}function J1e(n){return n.b==0?null:(ne(n.b!=0),Ts(n,n.a.a))}function Gt(n){return Math.max(Math.min(n,nt),-2147483648)|0}function Y1e(n,e){var t=lR[n.charCodeAt(0)];return t??n}function hC(n,e){return tC(n,"set1"),tC(e,"set2"),new Z8n(n,e)}function Z1e(n,e){var t;return t=W0e(n.f,e),st(vE(t),n.f.d)}function R5(n,e){var t,i;return t=e,i=new dI,n_n(n,t,i),i.d}function t$(n,e,t,i){var r;r=new Gjn,e.a[t.g]=r,m2(n.b,i,r)}function JW(n,e,t){var i;i=n.Yg(e),i>=0?n.sh(i,t):_Y(n,e,t)}function Dw(n,e,t){dC(),n&&it(dH,n,e),n&&it($y,n,t)}function rMn(n,e,t){this.i=new X,this.b=n,this.g=e,this.a=t}function lC(n,e,t){this.c=new X,this.e=n,this.f=e,this.b=t}function YW(n,e,t){this.a=new X,this.e=n,this.f=e,this.c=t}function cMn(n,e){oE(this),this.f=e,this.g=n,eC(this),this._d()}function A8(n,e){var t;t=n.q.getHours(),n.q.setDate(e),S6(n,t)}function uMn(n,e){var t;for(pe(e),t=n.a;t;t=t.c)e.Od(t.g,t.i)}function sMn(n){var e;return e=new kj(sb(n.length)),qV(e,n),e}function nle(n){function e(){}return e.prototype=n||{},new e}function ele(n,e){return LOn(n,e)?(FIn(n),!0):!1}function Dh(n,e){if(e==null)throw T(new Nv);return Y2e(n,e)}function tle(n){if(n.qe())return null;var e=n.n;return RA[e]}function S8(n){return n.Db>>16!=3?null:u(n.Cb,33)}function ef(n){return n.Db>>16!=9?null:u(n.Cb,33)}function oMn(n){return n.Db>>16!=6?null:u(n.Cb,79)}function fMn(n){return n.Db>>16!=7?null:u(n.Cb,235)}function hMn(n){return n.Db>>16!=7?null:u(n.Cb,160)}function Pt(n){return n.Db>>16!=11?null:u(n.Cb,33)}function lMn(n,e){var t;return t=n.Yg(e),t>=0?n.lh(t):Ox(n,e)}function aMn(n,e){var t;return t=new iW(e),dxn(t,n),new du(t)}function ZW(n){var e;return e=n.d,e=n.si(n.f),me(n,e),e.Ob()}function dMn(n,e){return n.b+=e.b,n.c+=e.c,n.d+=e.d,n.a+=e.a,n}function i$(n,e){return y.Math.abs(n)0}function bMn(){this.a=new Sh,this.e=new hi,this.g=0,this.i=0}function wMn(n){this.a=n,this.b=F(lJn,q,1944,n.e.length,0,2)}function r$(n,e,t){var i;i=tDn(n,e,t),n.b=new tT(i.c.length)}function tf(){tf=N,Ja=new nz(hN,0),yf=new nz("UP",1)}function aC(){aC=N,kK=new rz(PHn,0),Ton=new rz("FAN",1)}function dC(){dC=N,dH=new we,$y=new we,Ere(Azn,new z2n)}function rle(n){if(n.p!=0)throw T(new fu);return b5(n.f,0)}function cle(n){if(n.p!=0)throw T(new fu);return b5(n.k,0)}function gMn(n){return n.Db>>16!=3?null:u(n.Cb,147)}function y3(n){return n.Db>>16!=6?null:u(n.Cb,235)}function eb(n){return n.Db>>16!=17?null:u(n.Cb,26)}function pMn(n,e){var t=n.a=n.a||[];return t[e]||(t[e]=n.le(e))}function ule(n,e){var t;return t=n.a.get(e),t??new Array}function sle(n,e){var t;t=n.q.getHours(),n.q.setMonth(e),S6(n,t)}function yr(n,e,t){return e==null?_c(n.f,null,t):Gd(n.g,e,t)}function _5(n,e,t,i,r,c){return new Lh(n.e,e,n.aj(),t,i,r,c)}function P8(n,e,t){return n.a=Zu(n.a,0,e)+(""+t)+r8(n.a,e),n}function ole(n,e,t){return W(n.a,(QE(),ex(e,t),new bd(e,t))),n}function nX(n){return _z(n.c),n.e=n.a=n.c,n.c=n.c.c,++n.d,n.a.f}function vMn(n){return _z(n.e),n.c=n.a=n.e,n.e=n.e.e,--n.d,n.a.f}function Ci(n,e){n.d&&Jc(n.d.e,n),n.d=e,n.d&&W(n.d.e,n)}function Hi(n,e){n.c&&Jc(n.c.g,n),n.c=e,n.c&&W(n.c.g,n)}function jr(n,e){n.c&&Jc(n.c.a,n),n.c=e,n.c&&W(n.c.a,n)}function Hr(n,e){n.i&&Jc(n.i.j,n),n.i=e,n.i&&W(n.i.j,n)}function mMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function kMn(n,e,t){this.a=e,this.c=n,this.b=(pe(t),new du(t))}function yMn(n,e){this.a=n,this.c=Qr(this.a),this.b=new uC(e)}function fle(n){var e;return Ta(n),e=new hi,gt(n,new Vvn(e))}function tb(n,e){if(n<0||n>e)throw T(new mr(cnn+n+unn+e))}function eX(n,e){return lCn(n.a,e)?TW(n,u(e,22).g,null):null}function hle(n){return yF(),qn(),u(n.a,81).d.e!=0}function jMn(){jMn=N,azn=Fe((aj(),A(M(lzn,1),z,538,0,[fR])))}function EMn(){EMn=N,YQn=Eu(new li,(Qi(),Or),(rr(),Kk))}function tX(){tX=N,ZQn=Eu(new li,(Qi(),Or),(rr(),Kk))}function CMn(){CMn=N,eJn=Eu(new li,(Qi(),Or),(rr(),Kk))}function TMn(){TMn=N,gJn=Ze(new li,(Qi(),Or),(rr(),km))}function ns(){ns=N,mJn=Ze(new li,(Qi(),Or),(rr(),km))}function MMn(){MMn=N,kJn=Ze(new li,(Qi(),Or),(rr(),km))}function c$(){c$=N,TJn=Ze(new li,(Qi(),Or),(rr(),km))}function AMn(){AMn=N,lYn=Eu(new li,(c4(),Gm),(k6(),lK))}function aa(n,e,t,i){this.c=n,this.d=i,s$(this,e),o$(this,t)}function M2(n){this.c=new Tt,this.b=n.b,this.d=n.c,this.a=n.a}function u$(n){this.a=y.Math.cos(n),this.b=y.Math.sin(n)}function s$(n,e){n.a&&Jc(n.a.k,n),n.a=e,n.a&&W(n.a.k,n)}function o$(n,e){n.b&&Jc(n.b.f,n),n.b=e,n.b&&W(n.b.f,n)}function SMn(n,e){mhe(n,n.b,n.c),u(n.b.b,65),e&&u(e.b,65).b}function lle(n,e){vQ(n,e),I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),2)}function f$(n,e){I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),4),Ic(n,e)}function bC(n,e){I(n.Cb,179)&&(u(n.Cb,179).tb=null),Ic(n,e)}function mc(n,e){return er(),R$(e)?new IE(e,n):new i8(e,n)}function ale(n,e){var t,i;t=e.c,i=t!=null,i&&j2(n,new Z0(e.c))}function PMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function IMn(n){var e,t;return t=(Qp(),e=new ud,e),O3(t,n),t}function OMn(n,e){var t;return t=new Rs(n),e.c[e.c.length]=t,t}function DMn(n,e){var t;return t=u(ab(T2(n.a),e),14),t?t.gc():0}function $Mn(n){var e;return Ta(n),e=(Ow(),Ow(),Nin),qC(n,e)}function FMn(n){for(var e;;)if(e=n.Pb(),!n.Ob())return e}function iX(n,e){tie.call(this,new s2(sb(n))),rs(e,W_n),this.a=e}function uh(n,e,t){KDn(e,t,n.gc()),this.c=n,this.a=e,this.b=t-e}function xMn(n,e,t){var i;KDn(e,t,n.c.length),i=t-e,AG(n.c,e,i)}function dle(n,e){Dyn(n,ge(ui(cl(e,24),FM)),ge(ui(e,FM)))}function Ln(n,e){if(n<0||n>=e)throw T(new mr(cnn+n+unn+e))}function Te(n,e){if(n<0||n>=e)throw T(new wG(cnn+n+unn+e))}function xn(n,e){this.b=(_n(n),n),this.a=e&Ib?e:e|64|Bf}function LMn(n){dyn(this),Wmn(this.a,KV(y.Math.max(8,n))<<1)}function rf(n){return Gr(A(M(di,1),q,8,0,[n.i.n,n.n,n.a]))}function ble(){return lf(),A(M(Bu,1),z,132,0,[Win,ls,Rb])}function wle(){return _o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])}function gle(){return Tu(),A(M(Qzn,1),z,461,0,[Vf,Ol,Co])}function ple(){return Yc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])}function vle(){return qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])}function mle(){return W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])}function kle(){return i6(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])}function yle(){return F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])}function jle(){return VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])}function Ele(){return ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])}function Cle(){return Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])}function Tle(){return Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])}function Mle(){return q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])}function Ale(){return ur(),A(M(zQn,1),z,452,0,[Bm,Su,xc])}function Sle(){return Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])}function Ple(){return oT(),A(M(ion,1),z,375,0,[eon,cK,ton])}function Ile(){return dT(),A(M(hon,1),z,377,0,[fK,pv,ew])}function Ole(){return Q3(),A(M(uon,1),z,336,0,[sK,con,Rm])}function Dle(){return uT(),A(M(fon,1),z,338,0,[oon,oK,son])}function $le(){return _d(),A(M(fJn,1),z,454,0,[ry,_m,aP])}function Fle(){return CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])}function xle(){return f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])}function Lle(){return ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])}function Nle(){return sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])}function Ble(){return w7(),A(M(OK,1),z,437,0,[AP,SP,PP])}function Rle(){return _h(),A(M(Khn,1),z,334,0,[HP,F1,i9])}function _le(){return of(),A(M(Phn,1),z,272,0,[jv,cw,Ev])}function Kle(n,e){return o9e(n,e,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Hle(n,e,t){var i;return i=O6(n,e,!1),i.b<=e&&i.a<=t}function NMn(n,e,t){var i;i=new Jwn,i.b=e,i.a=t,++e.b,W(n.d,i)}function qle(n,e){var t;return t=(_n(n),n).g,Yz(!!t),_n(e),t(e)}function rX(n,e){var t,i;return i=d3(n,e),t=n.a.Zc(i),new Y8n(n,t)}function Gle(n){return n.Db>>16!=6?null:u(Fx(n),235)}function zle(n){if(n.p!=2)throw T(new fu);return ge(n.f)&Ut}function Ule(n){if(n.p!=2)throw T(new fu);return ge(n.k)&Ut}function Wle(n){return n.a==(T3(),uI)&&Ste(n,C9e(n.g,n.b)),n.a}function A2(n){return n.d==(T3(),uI)&&Ite(n,pke(n.g,n.b)),n.d}function j(n){return ne(n.ai?1:0}function BMn(n,e){var t,i;return t=F$(e),i=t,u(te(n.c,i),19).a}function RMn(n,e){var t;for(t=n+"";t.length0&&n.a[--n.d]==0;);n.a[n.d++]==0&&(n.e=0)}function rAn(n){return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function rae(n){return!!n.a&&Du(n.a.a).i!=0&&!(n.b&&YF(n.b))}function cae(n){return!!n.u&&bc(n.u.a).i!=0&&!(n.n&&JF(n.n))}function cAn(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),16,new tvn(n))}function uae(n,e){return xCn(tu(n.q.getTime()),tu(e.q.getTime()))}function Lf(n){return u(af(n,F(GR,MN,17,n.c.length,0,1)),474)}function I8(n){return u(af(n,F(mh,E1,10,n.c.length,0,1)),193)}function sae(n){return ns(),!Xi(n)&&!(!Xi(n)&&n.c.i.c==n.d.i.c)}function uAn(n,e,t){var i;i=(pe(n),new du(n)),N3e(new mMn(i,e,t))}function O8(n,e,t){var i;i=(pe(n),new du(n)),B3e(new kMn(i,e,t))}function sAn(n,e){var t;return t=1-e,n.a[t]=eT(n.a[t],t),eT(n,e)}function oAn(n,e){var t;n.e=new oG,t=Cb(e),wi(t,n.c),eBn(n,t,0)}function Ti(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.a,r)}function Z(n,e,t,i){var r;r=new XH,r.a=e,r.b=t,r.c=i,Ke(n.b,r)}function po(n){var e,t,i;return e=new HCn,t=Zx(e,n),UEe(e),i=t,i}function hX(){var n,e,t;return e=(t=(n=new ud,n),t),W(M1n,e),e}function pC(n){return n.j.c=F(Zn,rn,1,0,5,1),KW(n.c),Khe(n.a),n}function $w(n){return Qv(),I(n.g,10)?u(n.g,10):null}function oae(n){return Iw(n).dc()?!1:(sce(n,new Np),!0)}function fae(n){if(!("stack"in n))try{throw n}catch{}return n}function D8(n,e){if(n<0||n>=e)throw T(new mr(j6e(n,e)));return n}function fAn(n,e,t){if(n<0||et)throw T(new mr(W5e(n,e,t)))}function d$(n,e){if(ci(n.a,e),e.d)throw T(new _r(wKn));e.d=n}function b$(n,e){if(e.$modCount!=n.$modCount)throw T(new vs)}function hAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function lAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function aAn(n,e){return I(e,42)?ix(n.a,u(e,42)):!1}function hae(n,e){return n.a<=n.b?(e.ud(n.a++),!0):!1}function $d(n){var e;return Fr(n)?(e=n,e==-0?0:e):m0e(n)}function vC(n){var e;return fl(n),e=new fln,vw(n.a,new Wvn(e)),e}function dAn(n){var e;return fl(n),e=new oln,vw(n.a,new Uvn(e)),e}function Pi(n,e){this.a=n,$v.call(this,n),tb(e,n.gc()),this.b=e}function lX(n){this.e=n,this.b=this.e.a.entries(),this.a=new Array}function lae(n){return gD(n.e.Hd().gc()*n.c.Hd().gc(),273,new evn(n))}function mC(n){return new Pc((rs(n,AL),KC(qi(qi(5,n),n/10|0))))}function bAn(n){return u(af(n,F(FWn,UKn,11,n.c.length,0,1)),1943)}function aae(n,e,t){return t.f.c.length>0?SW(n.a,e,t):SW(n.b,e,t)}function dae(n,e,t){n.d&&Jc(n.d.e,n),n.d=e,n.d&&Q0(n.d.e,t,n)}function w$(n,e){uTe(e,n),WU(n.d),WU(u(k(n,(nn(),eP)),207))}function H5(n,e){cTe(e,n),UU(n.d),UU(u(k(n,(nn(),eP)),207))}function Fd(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.fe()),i}function j3(n,e){var t,i;return t=ub(n,e),i=null,t&&(i=t.ie()),i}function q5(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=t.ie()),i}function $h(n,e){var t,i;return t=Dh(n,e),i=null,t&&(i=tY(t)),i}function bae(n,e,t){var i;return i=i4(t),gM(n.g,i,e),gM(n.i,e,t),e}function wae(n,e,t){var i;i=q2e();try{return kue(n,e,t)}finally{Mae(i)}}function wAn(n){var e;e=n.Wg(),this.a=I(e,69)?u(e,69).Zh():e.Kc()}function li(){P9n.call(this),this.j.c=F(Zn,rn,1,0,5,1),this.a=-1}function aX(n,e,t,i){this.d=n,this.n=e,this.g=t,this.o=i,this.p=-1}function gAn(n,e,t,i){this.e=i,this.d=null,this.c=n,this.a=e,this.b=t}function dX(n,e,t){this.d=new r6n(this),this.e=n,this.i=e,this.f=t}function kC(){kC=N,j_=new QG(I4,0),oun=new QG("TOP_LEFT",1)}function pAn(){pAn=N,aon=aTn(Q(1),Q(4)),lon=aTn(Q(1),Q(2))}function vAn(){vAn=N,uZn=Fe((Ij(),A(M(cZn,1),z,551,0,[$K])))}function mAn(){mAn=N,rZn=Fe((Pj(),A(M(lfn,1),z,482,0,[DK])))}function kAn(){kAn=N,CZn=Fe((Jv(),A(M(Dfn,1),z,530,0,[hy])))}function yAn(){yAn=N,IUn=Fe((Aj(),A(M(krn,1),z,481,0,[SR])))}function gae(){return Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])}function pae(){return FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])}function vae(){return d6(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])}function mae(){return K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])}function kae(){return G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])}function yae(){return aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])}function jAn(n,e,t,i){return I(t,54)?new ojn(n,e,t,i):new pW(n,e,t,i)}function jae(){return hf(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])}function Eae(n){var e;return n.j==(J(),ae)&&(e=GLn(n),au(e,Vn))}function Cae(n,e){var t;t=e.a,Hi(t,e.c.d),Ci(t,e.d.d),fb(t.a,n.n)}function EAn(n,e){return u(yd(KE(u(ct(n.k,e),15).Oc(),jg)),113)}function CAn(n,e){return u(yd(HE(u(ct(n.k,e),15).Oc(),jg)),113)}function Tae(n){return new xn(jbe(u(n.a.dd(),14).gc(),n.a.cd()),16)}function E3(n){return I(n,14)?u(n,14).dc():!n.Kc().Ob()}function S2(n){return Qv(),I(n.g,145)?u(n.g,145):null}function TAn(n){if(n.e.g!=n.b)throw T(new vs);return!!n.c&&n.d>0}function Re(n){return ne(n.b!=n.d.c),n.c=n.b,n.b=n.b.a,++n.a,n.c.c}function bX(n,e){_n(e),St(n.a,n.c,e),n.c=n.c+1&n.a.length-1,MFn(n)}function ll(n,e){_n(e),n.b=n.b-1&n.a.length-1,St(n.a,n.b,e),MFn(n)}function MAn(n,e){var t;for(t=n.j.c.length;t0&&gc(n.g,0,e,0,n.i),e}function IAn(n,e){$j();var t;return t=u(te(eI,n),55),!t||t.wj(e)}function Bae(n){if(n.p!=1)throw T(new fu);return ge(n.f)<<24>>24}function Rae(n){if(n.p!=1)throw T(new fu);return ge(n.k)<<24>>24}function _ae(n){if(n.p!=7)throw T(new fu);return ge(n.k)<<16>>16}function Kae(n){if(n.p!=7)throw T(new fu);return ge(n.f)<<16>>16}function Fh(n){var e;for(e=0;n.Ob();)n.Pb(),e=qi(e,1);return KC(e)}function OAn(n,e){var t;return t=new R0,n.xd(t),t.a+="..",e.yd(t),t.a}function Hae(n,e,t){var i;i=u(te(n.g,t),57),W(n.a.c,new Si(e,i))}function qae(n,e,t){return TD(Y(Vr(Sr(n.f,e))),Y(Vr(Sr(n.f,t))))}function yC(n,e,t){return vM(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function Gae(n,e,t){return m4(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function zae(n,e,t){return b9e(n,e,t,I(e,99)&&(u(e,18).Bb&Yi)!=0)}function pX(n,e){return n==(Qn(),ii)&&e==ii?4:n==ii||e==ii?8:32}function DAn(n,e){return B(e)===B(n)?"(this Map)":e==null?ru:Nr(e)}function Uae(n,e){return u(e==null?Vr(Sr(n.f,null)):n5(n.g,e),281)}function $An(n,e,t){var i;return i=i4(t),it(n.b,i,e),it(n.c,e,t),e}function FAn(n,e){var t;for(t=e;t;)U0(n,t.i,t.j),t=Pt(t);return n}function vX(n,e){var t;return t=C8(f3(new x$(n,e))),DE(new x$(n,e)),t}function sh(n,e){er();var t;return t=u(n,66).Mj(),M5e(t,e),t.Ok(e)}function Wae(n,e,t,i,r){var c;c=m9e(r,t,i),W(e,p6e(r,c)),o5e(n,r,e)}function xAn(n,e,t){n.i=0,n.e=0,e!=t&&(uDn(n,e,t),cDn(n,e,t))}function mX(n,e){var t;t=n.q.getHours(),n.q.setFullYear(e+Tl),S6(n,t)}function Xae(n,e,t){if(t){var i=t.ee();n.a[e]=i(t)}else delete n.a[e]}function g$(n,e,t){if(t){var i=t.ee();t=i(t)}else t=void 0;n.a[e]=t}function LAn(n){if(n<0)throw T(new K9n("Negative array size: "+n))}function bc(n){return n.n||(Ou(n),n.n=new wCn(n,ar,n),Ar(n)),n.n}function G5(n){return ne(n.a=0&&n.a[t]===e[t];t--);return t<0}function KAn(n,e){V3();var t;return t=n.j.g-e.j.g,t!=0?t:0}function HAn(n,e){return _n(e),n.a!=null?$fe(e.Kb(n.a)):UA}function jC(n){var e;return n?new iW(n):(e=new Sh,nF(e,n),e)}function ts(n,e){var t;return e.b.Kb(FPn(n,e.c.Ee(),(t=new Jvn(e),t)))}function EC(n){_J(),Dyn(this,ge(ui(cl(n,24),FM)),ge(ui(n,FM)))}function qAn(){qAn=N,Gzn=Fe(($T(),A(M(Jin,1),z,428,0,[yR,Qin])))}function GAn(){GAn=N,zzn=Fe((RC(),A(M(Zin,1),z,427,0,[Yin,jR])))}function zAn(){zAn=N,WUn=Fe((_C(),A(M(Arn,1),z,424,0,[$R,tS])))}function UAn(){UAn=N,BWn=Fe((B3(),A(M(NWn,1),z,511,0,[_k,UR])))}function WAn(){WAn=N,lXn=Fe((V8(),A(M(Wcn,1),z,419,0,[$S,Ucn])))}function XAn(){XAn=N,wXn=Fe((K8(),A(M(Qcn,1),z,479,0,[Vcn,xS])))}function VAn(){VAn=N,XQn=Fe((x8(),A(M(ron,1),z,376,0,[uK,iy])))}function QAn(){QAn=N,GQn=Fe((z8(),A(M(non,1),z,421,0,[iK,rK])))}function JAn(){JAn=N,sXn=Fe((OC(),A(M(Rcn,1),z,422,0,[Bcn,s_])))}function YAn(){YAn=N,jXn=Fe((kC(),A(M(fun,1),z,420,0,[j_,oun])))}function ZAn(){ZAn=N,RJn=Fe((No(),A(M(BJn,1),z,520,0,[tw,Bl])))}function nSn(){nSn=N,wJn=Fe((z5(),A(M(bJn,1),z,523,0,[Hm,Km])))}function eSn(){eSn=N,jJn=Fe((xf(),A(M(yJn,1),z,516,0,[M0,I1])))}function tSn(){tSn=N,CJn=Fe((tf(),A(M(EJn,1),z,515,0,[Ja,yf])))}function iSn(){iSn=N,UJn=Fe((Id(),A(M(zJn,1),z,455,0,[Rl,Lg])))}function rSn(){rSn=N,hYn=Fe((gC(),A(M(Son,1),z,425,0,[yK,Aon])))}function cSn(){cSn=N,wYn=Fe((iT(),A(M(Pon,1),z,495,0,[EP,mv])))}function uSn(){uSn=N,fYn=Fe((aC(),A(M(Mon,1),z,480,0,[kK,Ton])))}function sSn(){sSn=N,vYn=Fe(($C(),A(M(Oon,1),z,426,0,[Ion,TK])))}function oSn(){oSn=N,TZn=Fe((c7(),A(M(Ffn,1),z,429,0,[DP,$fn])))}function fSn(){fSn=N,sZn=Fe((L8(),A(M(afn,1),z,430,0,[FK,IP])))}function z5(){z5=N,Hm=new ZG("UPPER",0),Km=new ZG("LOWER",1)}function Yae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function Zae(n,e){var t;t=new r2,la(t,"x",e.a),la(t,"y",e.b),j2(n,t)}function nde(n,e){var t,i;i=!1;do t=JOn(n,e),i=i|t;while(t);return i}function jX(n,e){var t,i;for(t=e,i=0;t>0;)i+=n.a[t],t-=t&-t;return i}function hSn(n,e){var t;for(t=e;t;)U0(n,-t.i,-t.j),t=Pt(t);return n}function $i(n,e){var t,i;for(_n(e),i=n.Kc();i.Ob();)t=i.Pb(),e.td(t)}function lSn(n,e){var t;return t=e.cd(),new bd(t,n.e.pc(t,u(e.dd(),14)))}function Kt(n,e,t,i){var r;r=new aI,r.c=e,r.b=t,r.a=i,i.b=t.a=r,++n.b}function Es(n,e,t){var i;return i=(Ln(e,n.c.length),n.c[e]),n.c[e]=t,i}function ede(n,e,t){return u(e==null?_c(n.f,null,t):Gd(n.g,e,t),281)}function k$(n){return n.c&&n.d?cX(n.c)+"->"+cX(n.d):"e_"+md(n)}function C3(n,e){return(Ta(n),Wv(new $n(n,new UX(e,n.a)))).sd(V4)}function tde(){return Qi(),A(M(Hrn,1),z,356,0,[Qf,$l,Hc,Cc,Or])}function ide(){return J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])}function rde(n){return gj(),function(){return wae(n,this,arguments)}}function cde(){return Date.now?Date.now():new Date().getTime()}function Xi(n){return!n.c||!n.d?!1:!!n.c.i&&n.c.i==n.d.i}function aSn(n){if(!n.c.Sb())throw T(new ic);return n.a=!0,n.c.Ub()}function $8(n){n.i=0,z9(n.b,null),z9(n.c,null),n.a=null,n.e=null,++n.g}function EX(n){are.call(this,n==null?ru:Nr(n),I(n,78)?u(n,78):null)}function dSn(n){B_n(),Nmn(this),this.a=new Tt,QV(this,n),Ke(this.a,n)}function bSn(){RO(this),this.b=new fn(Ft,Ft),this.a=new fn(Qt,Qt)}function wSn(n,e){this.c=0,this.b=e,qkn.call(this,n,17493),this.a=this.c}function y$(n){CC(),!vf&&(this.c=n,this.e=!0,this.a=new X)}function CC(){CC=N,vf=!0,Fzn=!1,xzn=!1,Nzn=!1,Lzn=!1}function CX(n,e){return I(e,149)?Mn(n.c,u(e,149).c):!1}function TX(n,e){var t;return t=0,n&&(t+=n.f.a/2),e&&(t+=e.f.a/2),t}function j$(n,e){var t;return t=u(xd(n.d,e),23),t||u(xd(n.e,e),23)}function gSn(n){this.b=n,ie.call(this,n),this.a=u(Rn(this.b.a,4),126)}function pSn(n){this.b=n,w2.call(this,n),this.a=u(Rn(this.b.a,4),126)}function Ou(n){return n.t||(n.t=new Amn(n),s6(new _9n(n),0,n.t)),n.t}function ude(){return sr(),A(M(e9,1),z,103,0,[kh,Ao,Zs,Jh,Yh])}function sde(){return qw(),A(M(c9,1),z,249,0,[Hl,Cy,Hhn,r9,qhn])}function ode(){return Ho(),A(M($1,1),z,175,0,[Xn,vi,Zf,Ya,D1])}function fde(){return P7(),A(M(gfn,1),z,316,0,[dfn,xK,wfn,LK,bfn])}function hde(){return b6(),A(M(Usn,1),z,315,0,[zsn,nK,eK,Lm,Nm])}function lde(){return Pa(),A(M(zcn,1),z,335,0,[f_,Gcn,h_,Em,jm])}function ade(){return g4(),A(M(eZn,1),z,355,0,[Ng,Ep,Qm,Vm,Jm])}function dde(){return Vw(),A(M(YWn,1),z,363,0,[SS,IS,OS,PS,AS])}function bde(){return Ss(),A(M(jun,1),z,163,0,[Qk,Sm,xl,Pm,Ub])}function T3(){T3=N;var n,e;cI=(Qp(),e=new fj,e),uI=(n=new BI,n)}function vSn(n){var e;return n.c||(e=n.r,I(e,88)&&(n.c=u(e,26))),n.c}function wde(n){return n.e=3,n.d=n.Yb(),n.e!=2?(n.e=0,!0):!1}function E$(n){var e,t,i;return e=n&Nu,t=n>>22&Nu,i=n<0?Wh:0,Bc(e,t,i)}function gde(n){var e,t,i,r;for(t=n,i=0,r=t.length;i0?g$n(n,e):BNn(n,-e)}function MX(n,e){return e==0||n.e==0?n:e>0?BNn(n,e):g$n(n,-e)}function ve(n){if(Se(n))return n.c=n.a,n.a.Pb();throw T(new ic)}function kSn(n){var e,t;return e=n.c.i,t=n.d.i,e.k==(Qn(),Xt)&&t.k==Xt}function C$(n){var e;return e=new Pd,Pr(e,n),H(e,(nn(),Mr),null),e}function T$(n,e,t){var i;return i=n.Yg(e),i>=0?n._g(i,t,!0):Yd(n,e,t)}function AX(n,e,t,i){var r;for(r=0;re)throw T(new mr(fY(n,e,"index")));return n}function M$(n,e,t,i){var r;return r=F(be,Le,25,e,15,1),Pve(r,n,e,t,i),r}function vde(n,e){var t;t=n.q.getHours()+(e/60|0),n.q.setMinutes(e),S6(n,t)}function mde(n,e){return y.Math.min(al(e.a,n.d.d.c),al(e.b,n.d.d.c))}function O2(n,e){return ki(e)?e==null?MY(n.f,null):$On(n.g,e):MY(n.f,e)}function sf(n){this.c=n,this.a=new E(this.c.a),this.b=new E(this.c.b)}function TC(){this.e=new X,this.c=new X,this.d=new X,this.b=new X}function TSn(){this.g=new zq,this.b=new zq,this.a=new X,this.k=new X}function MSn(n,e,t){this.a=n,this.c=e,this.d=t,W(e.e,this),W(t.b,this)}function ASn(n,e){Hkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function SSn(n,e){qkn.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function FX(n,e){FO.call(this,e.rd(),e.qd()&-6),_n(n),this.a=n,this.b=e}function MC(n,e,t){this.a=n,this.b=e,this.c=t,W(n.t,this),W(e.i,this)}function AC(){this.b=new Tt,this.a=new Tt,this.b=new Tt,this.a=new Tt}function SC(){SC=N,Ym=new kt("org.eclipse.elk.labels.labelManager")}function PSn(){PSn=N,$cn=new ri("separateLayerConnections",(aT(),QR))}function No(){No=N,tw=new tz("REGULAR",0),Bl=new tz("CRITICAL",1)}function x8(){x8=N,uK=new YG("STACKED",0),iy=new YG("SEQUENCED",1)}function L8(){L8=N,FK=new oz("FIXED",0),IP=new oz("CENTER_NODE",1)}function kde(n,e){var t;return t=CEe(n,e),n.b=new tT(t.c.length),Lje(n,t)}function yde(n,e,t){var i;return++n.e,--n.f,i=u(n.d[e].$c(t),133),i.dd()}function ISn(n){var e;return n.a||(e=n.r,I(e,148)&&(n.a=u(e,148))),n.a}function xX(n){if(n.a){if(n.e)return xX(n.e)}else return n;return null}function jde(n,e){return n.pe.p?-1:0}function PC(n,e){return _n(e),n.c=0,"Initial capacity must not be negative")}function $Sn(){$Sn=N,Vzn=Fe((_o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])))}function FSn(){FSn=N,Jzn=Fe((Tu(),A(M(Qzn,1),z,461,0,[Vf,Ol,Co])))}function xSn(){xSn=N,Zzn=Fe((Yc(),A(M(Yzn,1),z,462,0,[Wo,Dl,To])))}function LSn(){LSn=N,Bzn=Fe((lf(),A(M(Bu,1),z,132,0,[Win,ls,Rb])))}function NSn(){NSn=N,bWn=Fe((W5(),A(M(Krn,1),z,379,0,[NR,LR,BR])))}function BSn(){BSn=N,PWn=Fe((qd(),A(M(zrn,1),z,423,0,[yg,Grn,qR])))}function RSn(){RSn=N,oXn=Fe((F2(),A(M(Kcn,1),z,314,0,[ap,qk,_cn])))}function _Sn(){_Sn=N,fXn=Fe((VC(),A(M(qcn,1),z,337,0,[Hcn,DS,o_])))}function KSn(){KSn=N,dXn=Fe((ya(),A(M(aXn,1),z,450,0,[l_,cv,Tg])))}function HSn(){HSn=N,rXn=Fe((Kd(),A(M(YR,1),z,361,0,[g0,Fl,w0])))}function qSn(){qSn=N,yXn=Fe((Nh(),A(M(kXn,1),z,303,0,[zk,Ag,dp])))}function GSn(){GSn=N,mXn=Fe((q3(),A(M(y_,1),z,292,0,[m_,k_,Gk])))}function zSn(){zSn=N,RQn=Fe((i6(),A(M(Gsn,1),z,378,0,[J_,qsn,oP])))}function USn(){USn=N,WQn=Fe((oT(),A(M(ion,1),z,375,0,[eon,cK,ton])))}function WSn(){WSn=N,qQn=Fe((Rh(),A(M(Zsn,1),z,339,0,[Nl,Ysn,tK])))}function XSn(){XSn=N,UQn=Fe((ur(),A(M(zQn,1),z,452,0,[Bm,Su,xc])))}function VSn(){VSn=N,JQn=Fe((dT(),A(M(hon,1),z,377,0,[fK,pv,ew])))}function QSn(){QSn=N,VQn=Fe((Q3(),A(M(uon,1),z,336,0,[sK,con,Rm])))}function JSn(){JSn=N,QQn=Fe((uT(),A(M(fon,1),z,338,0,[oon,oK,son])))}function YSn(){YSn=N,hJn=Fe((_d(),A(M(fJn,1),z,454,0,[ry,_m,aP])))}function ZSn(){ZSn=N,pYn=Fe((CT(),A(M(gYn,1),z,442,0,[CK,jK,EK])))}function nPn(){nPn=N,mYn=Fe((f7(),A(M(Fon,1),z,380,0,[CP,Don,$on])))}function ePn(){ePn=N,LYn=Fe((ET(),A(M(Yon,1),z,381,0,[Jon,IK,Qon])))}function tPn(){tPn=N,xYn=Fe((sT(),A(M(Xon,1),z,293,0,[PK,Won,Uon])))}function iPn(){iPn=N,iZn=Fe((w7(),A(M(OK,1),z,437,0,[AP,SP,PP])))}function rPn(){rPn=N,une=Fe((_h(),A(M(Khn,1),z,334,0,[HP,F1,i9])))}function cPn(){cPn=N,tne=Fe((of(),A(M(Phn,1),z,272,0,[jv,cw,Ev])))}function Pde(){return Mi(),A(M(Ghn,1),z,98,0,[ql,Ef,Tv,td,Eh,Ac])}function wa(n,e){return!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),NF(n.o,e)}function Ide(n){return!n.g&&(n.g=new Qy),!n.g.d&&(n.g.d=new Cmn(n)),n.g.d}function Ode(n){return!n.g&&(n.g=new Qy),!n.g.a&&(n.g.a=new Tmn(n)),n.g.a}function Dde(n){return!n.g&&(n.g=new Qy),!n.g.b&&(n.g.b=new Emn(n)),n.g.b}function N8(n){return!n.g&&(n.g=new Qy),!n.g.c&&(n.g.c=new Mmn(n)),n.g.c}function $de(n,e,t){var i,r;for(r=new H3(e,n),i=0;it||e=0?n._g(t,!0,!0):Yd(n,e,!0)}function Qde(n,e){return ni(K(Y(k(n,(G(),k0)))),K(Y(k(e,k0))))}function aPn(){aPn=N,aYn=Xd(Xd(Dj(new li,(c4(),qm)),(k6(),pP)),aK)}function Jde(n,e,t){var i;return i=tDn(n,e,t),n.b=new tT(i.c.length),JY(n,i)}function Yde(n){if(n.b<=0)throw T(new ic);return--n.b,n.a-=n.c.c,Q(n.a)}function Zde(n){var e;if(!n.a)throw T(new gTn);return e=n.a,n.a=Pt(n.a),e}function n0e(n){for(;!n.a;)if(!nEn(n.c,new Xvn(n)))return!1;return!0}function $2(n){var e;return pe(n),I(n,198)?(e=u(n,198),e):new dvn(n)}function e0e(n){DC(),u(n.We((Xe(),rw)),174).Fc((Mu(),Ty)),n.Ye(eH,null)}function DC(){DC=N,SZn=new n2n,IZn=new e2n,PZn=Rwe((Xe(),eH),SZn,_l,IZn)}function $C(){$C=N,Ion=new sz("LEAF_NUMBER",0),TK=new sz("NODE_SIZE",1)}function t0e(n,e,t){n.a=e,n.c=t,n.b.a.$b(),_s(n.d),n.e.a.c=F(Zn,rn,1,0,5,1)}function $$(n){n.a=F(be,Le,25,n.b+1,15,1),n.c=F(be,Le,25,n.b,15,1),n.d=0}function i0e(n,e){n.a.ue(e.d,n.b)>0&&(W(n.c,new QU(e.c,e.d,n.d)),n.b=e.d)}function zX(n,e){if(n.g==null||e>=n.i)throw T(new xO(e,n.i));return n.g[e]}function dPn(n,e,t){if(W3(n,t),t!=null&&!n.wj(t))throw T(new xI);return t}function bPn(n){var e;if(n.Ek())for(e=n.i-1;e>=0;--e)D(n,e);return gX(n)}function r0e(n){var e,t;if(!n.b)return null;for(t=n.b;e=t.a[0];)t=e;return t}function c0e(n,e){var t,i;return LAn(e),t=(i=n.slice(0,e),WX(i,n)),t.length=e,t}function S3(n,e,t,i){var r;i=(Ow(),i||Lin),r=n.slice(e,t),hY(r,n,e,t,-e,i)}function Cs(n,e,t,i,r){return e<0?Yd(n,t,i):u(t,66).Nj().Pj(n,n.yh(),e,i,r)}function u0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Nr(n)}function s0e(n){return I(n,172)?""+u(n,172).a:n==null?null:Nr(n)}function wPn(n,e){if(e.a)throw T(new _r(wKn));ci(n.a,e),e.a=n,!n.j&&(n.j=e)}function UX(n,e){FO.call(this,e.rd(),e.qd()&-16449),_n(n),this.a=n,this.c=e}function gPn(n,e){var t,i;return i=e/n.c.Hd().gc()|0,t=e%n.c.Hd().gc(),D2(n,i,t)}function Tu(){Tu=N,Vf=new oO(Y2,0),Ol=new oO(I4,1),Co=new oO(Z2,2)}function FC(){FC=N,vR=new Lj("All",0),qin=new lyn,Gin=new Eyn,zin=new ayn}function pPn(){pPn=N,Dzn=Fe((FC(),A(M(WA,1),z,297,0,[vR,qin,Gin,zin])))}function vPn(){vPn=N,EWn=Fe((G3(),A(M(jWn,1),z,405,0,[b0,Hb,Kb,kg])))}function mPn(){mPn=N,CUn=Fe((Hd(),A(M(EUn,1),z,406,0,[Ok,Ik,MR,AR])))}function kPn(){kPn=N,MUn=Fe((K2(),A(M(TUn,1),z,323,0,[$k,Dk,Fk,xk])))}function yPn(){yPn=N,PUn=Fe((d6(),A(M(SUn,1),z,394,0,[Lk,YA,ZA,Nk])))}function jPn(){jPn=N,WJn=Fe((c4(),A(M(won,1),z,393,0,[gP,qm,uy,Gm])))}function EPn(){EPn=N,HWn=Fe((aT(),A(M(KWn,1),z,360,0,[QR,TS,MS,Hk])))}function CPn(){CPn=N,FYn=Fe((qT(),A(M(zon,1),z,340,0,[SK,qon,Gon,Hon])))}function TPn(){TPn=N,JWn=Fe((hf(),A(M(QWn,1),z,411,0,[lp,nv,ev,JR])))}function MPn(){MPn=N,_Qn=Fe((wb(),A(M(Z_,1),z,197,0,[fP,Y_,xg,Fg])))}function APn(){APn=N,Ene=Fe((Vu(),A(M(jne,1),z,396,0,[gs,Yhn,Jhn,Zhn])))}function SPn(){SPn=N,one=Fe((us(),A(M(sne,1),z,285,0,[Ey,yh,Kl,jy])))}function PPn(){PPn=N,ine=Fe((Hh(),A(M(cH,1),z,218,0,[rH,yy,Cv,Sp])))}function IPn(){IPn=N,kne=Fe((AT(),A(M(Qhn,1),z,311,0,[oH,Whn,Vhn,Xhn])))}function OPn(){OPn=N,vne=Fe((Qu(),A(M(o9,1),z,374,0,[Ay,id,My,uw])))}function DPn(){DPn=N,mM(),F1n=Ft,Tee=Qt,x1n=new S9(Ft),Mee=new S9(Qt)}function K8(){K8=N,Vcn=new VG(Xh,0),xS=new VG("IMPROVE_STRAIGHTNESS",1)}function o0e(n,e){return h3(),W(n,new Si(e,Q(e.e.c.length+e.g.c.length)))}function f0e(n,e){return h3(),W(n,new Si(e,Q(e.e.c.length+e.g.c.length)))}function WX(n,e){return U8(e)!=10&&A($u(e),e.hm,e.__elementTypeId$,U8(e),n),n}function Jc(n,e){var t;return t=xr(n,e,0),t==-1?!1:(h1(n,t),!0)}function $Pn(n,e){var t;return t=u(O2(n.e,e),387),t?(ZU(t),t.e):null}function P3(n){var e;return Fr(n)&&(e=0-n,!isNaN(e))?e:bl(z3(n))}function xr(n,e,t){for(;t=0?BT(n,t,!0,!0):Yd(n,e,!0)}function YX(n,e){Qv();var t,i;return t=S2(n),i=S2(e),!!t&&!!i&&!V$n(t.k,i.k)}function a0e(n,e){nu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function d0e(n,e){eu(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function b0e(n,e){Rd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function w0e(n,e){Bd(n,e==null||jE((_n(e),e))||isNaN((_n(e),e))?0:(_n(e),e))}function BPn(n){(this.q?this.q:(Pn(),Pn(),vh)).Ac(n.q?n.q:(Pn(),Pn(),vh))}function g0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function p0e(n,e){return I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n)}function RPn(n,e){vrn=new Wy,AUn=e,gm=n,u(gm.b,65),BX(gm,vrn,null),DRn(gm)}function B$(n,e,t){var i;return i=n.g[e],k5(n,e,n.oi(e,t)),n.gi(e,t,i),n.ci(),i}function BC(n,e){var t;return t=n.Xc(e),t>=0?(n.$c(t),!0):!1}function R$(n){var e;return n.d!=n.r&&(e=qs(n),n.e=!!e&&e.Cj()==kGn,n.d=e),n.e}function _$(n,e){var t;for(pe(n),pe(e),t=!1;e.Ob();)t=t|n.Fc(e.Pb());return t}function xd(n,e){var t;return t=u(te(n.e,e),387),t?(Oyn(n,t),t.e):null}function _Pn(n){var e,t;return e=n/60|0,t=n%60,t==0?""+e:""+e+":"+(""+t)}function qr(n,e){var t,i;return Ta(n),i=new FX(e,n.a),t=new iEn(i),new $n(n,t)}function ub(n,e){var t=n.a[e],i=(cF(),dR)[typeof t];return i?i(t):tQ(typeof t)}function v0e(n){switch(n.g){case 0:return nt;case 1:return-1;default:return 0}}function m0e(n){return mJ(n,(I3(),pin))<0?-xce(z3(n)):n.l+n.m*J2+n.h*$a}function U8(n){return n.__elementTypeCategory$==null?10:n.__elementTypeCategory$}function K$(n){var e;return e=n.b.c.length==0?null:un(n.b,0),e!=null&&J$(n,0),e}function KPn(n,e){for(;e[0]=0;)++e[0]}function W8(n,e){this.e=e,this.a=FOn(n),this.a<54?this.f=$d(n):this.c=m7(n)}function HPn(n,e,t,i){Je(),cd.call(this,26),this.c=n,this.a=e,this.d=t,this.b=i}function oh(n,e,t){var i,r;for(i=10,r=0;rn.a[i]&&(i=t);return i}function T0e(n,e){var t;return t=zd(n.e.c,e.e.c),t==0?ni(n.e.d,e.e.d):t}function Fw(n,e){return e.e==0||n.e==0?W4:(a4(),Hx(n,e))}function M0e(n,e){if(!n)throw T(new Hn(P8e("Enum constant undefined: %s",e)))}function X5(){X5=N,MWn=new San,AWn=new Man,CWn=new $an,TWn=new Fan,SWn=new xan}function RC(){RC=N,Yin=new qG("BY_SIZE",0),jR=new qG("BY_SIZE_AND_SHAPE",1)}function _C(){_C=N,$R=new GG("EADES",0),tS=new GG("FRUCHTERMAN_REINGOLD",1)}function V8(){V8=N,$S=new XG("READING_DIRECTION",0),Ucn=new XG("ROTATION",1)}function GPn(){GPn=N,hXn=Fe((Pa(),A(M(zcn,1),z,335,0,[f_,Gcn,h_,Em,jm])))}function zPn(){zPn=N,KQn=Fe((b6(),A(M(Usn,1),z,315,0,[zsn,nK,eK,Lm,Nm])))}function UPn(){UPn=N,ZWn=Fe((Vw(),A(M(YWn,1),z,363,0,[SS,IS,OS,PS,AS])))}function WPn(){WPn=N,EXn=Fe((Ss(),A(M(jun,1),z,163,0,[Qk,Sm,xl,Pm,Ub])))}function XPn(){XPn=N,oZn=Fe((P7(),A(M(gfn,1),z,316,0,[dfn,xK,wfn,LK,bfn])))}function VPn(){VPn=N,OZn=Fe((Ho(),A(M($1,1),z,175,0,[Xn,vi,Zf,Ya,D1])))}function QPn(){QPn=N,tZn=Fe((g4(),A(M(eZn,1),z,355,0,[Ng,Ep,Qm,Vm,Jm])))}function JPn(){JPn=N,vWn=Fe((Qi(),A(M(Hrn,1),z,356,0,[Qf,$l,Hc,Cc,Or])))}function YPn(){YPn=N,ene=Fe((sr(),A(M(e9,1),z,103,0,[kh,Ao,Zs,Jh,Yh])))}function ZPn(){ZPn=N,hne=Fe((qw(),A(M(c9,1),z,249,0,[Hl,Cy,Hhn,r9,qhn])))}function nIn(){nIn=N,dne=Fe((J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])))}function H$(n,e){var t;return t=u(te(n.a,e),134),t||(t=new pI,it(n.a,e,t)),t}function eIn(n){var e;return e=u(k(n,(G(),p0)),305),e?e.a==n:!1}function tIn(n){var e;return e=u(k(n,(G(),p0)),305),e?e.i==n:!1}function iIn(n,e){return _n(e),mW(n),n.d.Ob()?(e.td(n.d.Pb()),!0):!1}function KC(n){return fc(n,nt)>0?nt:fc(n,Bi)<0?Bi:ge(n)}function sb(n){return n<3?(rs(n,J_n),n+1):n=0&&e=-.01&&n.a<=wf&&(n.a=0),n.b>=-.01&&n.b<=wf&&(n.b=0),n}function cIn(n,e){return e==(sD(),sD(),Pzn)?n.toLocaleLowerCase():n.toLowerCase()}function nV(n){return(n.i&2?"interface ":n.i&1?"":"class ")+(Ph(n),n.o)}function Cr(n){var e,t;t=(e=new RI,e),me((!n.q&&(n.q=new V(co,n,11,10)),n.q),t)}function A0e(n,e){var t;return t=e>0?e-1:e,e8n(Kie(IIn(YU(new zp,t),n.n),n.j),n.k)}function S0e(n,e,t,i){var r;n.j=-1,EY(n,iY(n,e,t),(er(),r=u(e,66).Mj(),r.Ok(i)))}function uIn(n){this.g=n,this.f=new X,this.a=y.Math.min(this.g.c.c,this.g.d.c)}function sIn(n){this.b=new X,this.a=new X,this.c=new X,this.d=new X,this.e=n}function oIn(n,e){this.a=new we,this.e=new we,this.b=(i6(),oP),this.c=n,this.b=e}function fIn(n,e,t){kE.call(this),eV(this),this.a=n,this.c=t,this.b=e.d,this.f=e.e}function hIn(n){this.d=n,this.c=n.c.vc().Kc(),this.b=null,this.a=null,this.e=(aj(),fR)}function Ld(n){if(n<0)throw T(new Hn("Illegal Capacity: "+n));this.g=this.ri(n)}function P0e(n,e){if(0>n||n>e)throw T(new bG("fromIndex: 0, toIndex: "+n+tnn+e))}function I0e(n){var e;if(n.a==n.b.a)throw T(new ic);return e=n.a,n.c=e,n.a=n.a.e,e}function HC(n){var e;z0(!!n.c),e=n.c.a,Ts(n.d,n.c),n.b==n.c?n.b=e:--n.a,n.c=null}function qC(n,e){var t;return Ta(n),t=new DTn(n,n.a.rd(),n.a.qd()|4,e),new $n(n,t)}function O0e(n,e){var t,i;return t=u(ab(n.d,e),14),t?(i=e,n.e.pc(i,t)):null}function GC(n,e){var t,i;for(i=n.Kc();i.Ob();)t=u(i.Pb(),70),H(t,(G(),pp),e)}function D0e(n){var e;return e=K(Y(k(n,(nn(),S1)))),e<0&&(e=0,H(n,S1,e)),e}function $0e(n,e,t){var i;i=y.Math.max(0,n.b/2-.5),g6(t,i,1),W(e,new L7n(t,i))}function F0e(n,e,t){var i;return i=n.a.e[u(e.a,10).p]-n.a.e[u(t.a,10).p],Gt(m8(i))}function lIn(n,e,t,i,r,c){var o;o=C$(i),Hi(o,r),Ci(o,c),Tn(n.a,i,new EE(o,e,t.f))}function aIn(n,e){var t;if(t=R7(n.Tg(),e),!t)throw T(new Hn(Pl+e+MB));return t}function ob(n,e){var t;for(t=n;Pt(t);)if(t=Pt(t),t==e)return!0;return!1}function x0e(n,e){var t,i,r;for(i=e.a.cd(),t=u(e.a.dd(),14).gc(),r=0;r0&&(n.a/=e,n.b/=e),n}function is(n){var e;return n.w?n.w:(e=Gle(n),e&&!e.kh()&&(n.w=e),e)}function q0e(n){var e;return n==null?null:(e=u(n,190),Gve(e,e.length))}function D(n,e){if(n.g==null||e>=n.i)throw T(new xO(e,n.i));return n.li(e,n.g[e])}function G0e(n){var e,t;for(e=n.a.d.j,t=n.c.d.j;e!=t;)ko(n.b,e),e=yT(e);ko(n.b,e)}function z0e(n){var e;for(e=0;e=14&&e<=16))),n}function gIn(n,e,t){var i=function(){return n.apply(i,arguments)};return e.apply(i,t),i}function pIn(n,e,t){var i,r;i=e;do r=K(n.p[i.p])+t,n.p[i.p]=r,i=n.a[i.p];while(i!=e)}function O3(n,e){var t,i;i=n.a,t=Tge(n,e,null),i!=e&&!n.e&&(t=j4(n,e,t)),t&&t.Fi()}function tV(n,e){return Zo(),mo(Cl),y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)}function iV(n,e){return Zo(),mo(Cl),y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)}function X0e(n,e){return yl(),Wc(n.b.c.length-n.e.c.length,e.b.c.length-e.e.c.length)}function xw(n,e){return Uie(J5(n,e,ge(Ni(dh,ch(ge(Ni(e==null?0:mt(e),bh)),15)))))}function vIn(){vIn=N,$Wn=Fe((Qn(),A(M(zR,1),z,267,0,[ii,pi,Xt,Tc,Ju,mf])))}function mIn(){mIn=N,_Zn=Fe((vb(),A(M(UK,1),z,291,0,[zK,gy,wy,GK,dy,by])))}function kIn(){kIn=N,FZn=Fe((fh(),A(M(Rfn,1),z,248,0,[HK,ly,ay,xP,$P,FP])))}function yIn(){yIn=N,uXn=Fe((q2(),A(M(rv,1),z,227,0,[iv,ym,tv,qb,Cg,Eg])))}function jIn(){jIn=N,pXn=Fe((h4(),A(M(sun,1),z,275,0,[Cm,iun,uun,cun,run,tun])))}function EIn(){EIn=N,gXn=Fe((A7(),A(M(eun,1),z,274,0,[LS,Ycn,nun,Jcn,Zcn,p_])))}function CIn(){CIn=N,BQn=Fe((JT(),A(M(Hsn,1),z,313,0,[Q_,_sn,V_,Rsn,Ksn,sP])))}function TIn(){TIn=N,bXn=Fe((eM(),A(M(Xcn,1),z,276,0,[d_,a_,w_,b_,g_,FS])))}function MIn(){MIn=N,VJn=Fe((k6(),A(M(XJn,1),z,327,0,[pP,aK,bK,dK,wK,lK])))}function AIn(){AIn=N,ane=Fe((Mu(),A(M(qP,1),z,273,0,[Gl,n1,Ty,s9,u9,Pp])))}function SIn(){SIn=N,rne=Fe((ZT(),A(M(xhn,1),z,312,0,[uH,Dhn,Fhn,Ihn,$hn,Ohn])))}function V0e(){return jb(),A(M(lr,1),z,93,0,[So,Zh,Po,Oo,jh,eo,ds,Io,no])}function UC(n,e){var t;t=n.a,n.a=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,0,t,n.a))}function WC(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,1,t,n.b))}function D3(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,3,t,n.b))}function Bd(n,e){var t;t=n.f,n.f=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,3,t,n.f))}function Rd(n,e){var t;t=n.g,n.g=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,4,t,n.g))}function nu(n,e){var t;t=n.i,n.i=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,5,t,n.i))}function eu(n,e){var t;t=n.j,n.j=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,6,t,n.j))}function $3(n,e){var t;t=n.j,n.j=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,1,t,n.j))}function F3(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,4,t,n.c))}function x3(n,e){var t;t=n.k,n.k=e,n.Db&4&&!(n.Db&1)&&et(n,new rb(n,2,t,n.k))}function G$(n,e){var t;t=n.d,n.d=e,n.Db&4&&!(n.Db&1)&&et(n,new p$(n,2,t,n.d))}function d1(n,e){var t;t=n.s,n.s=e,n.Db&4&&!(n.Db&1)&&et(n,new p$(n,4,t,n.s))}function hb(n,e){var t;t=n.t,n.t=e,n.Db&4&&!(n.Db&1)&&et(n,new p$(n,5,t,n.t))}function L3(n,e){var t;t=n.F,n.F=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,5,t,e))}function Q8(n,e){var t;return t=u(te(($j(),eI),n),55),t?t.xj(e):F(Zn,rn,1,e,5,1)}function Bh(n,e){var t,i;return t=e in n.a,t&&(i=Dh(n,e).he(),i)?i.a:null}function Q0e(n,e){var t,i,r;return t=(i=(ad(),r=new QH,r),e&&zY(i,e),i),aV(t,n),t}function PIn(n,e,t){if(W3(n,t),!n.Bk()&&t!=null&&!n.wj(t))throw T(new xI);return t}function IIn(n,e){return n.n=e,n.n?(n.f=new X,n.e=new X):(n.f=null,n.e=null),n}function Me(n,e,t,i,r,c){var o;return o=LD(n,e),DIn(t,o),o.i=r?8:0,o.f=i,o.e=r,o.g=c,o}function rV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=1,this.c=n,this.a=t}function cV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=2,this.c=n,this.a=t}function uV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=6,this.c=n,this.a=t}function sV(n,e,t,i,r){this.d=e,this.k=i,this.f=r,this.o=-1,this.p=7,this.c=n,this.a=t}function oV(n,e,t,i,r){this.d=e,this.j=i,this.e=r,this.o=-1,this.p=4,this.c=n,this.a=t}function OIn(n,e){var t,i,r,c;for(i=e,r=0,c=i.length;r=0),Q2e(n.d,n.c)<0&&(n.a=n.a-1&n.d.a.length-1,n.b=n.d.c),n.c=-1}function fV(n){return n.a<54?n.f<0?-1:n.f>0?1:0:(!n.c&&(n.c=h7(n.f)),n.c).e}function mo(n){if(!(n>=0))throw T(new Hn("tolerance ("+n+") must be >= 0"));return n}function N3(){return _K||(_K=new kBn,_w(_K,A(M(mg,1),rn,130,0,[new nq]))),_K}function ur(){ur=N,Bm=new kO(K6,0),Su=new kO("INPUT",1),xc=new kO("OUTPUT",2)}function VC(){VC=N,Hcn=new bO("ARD",0),DS=new bO("MSD",1),o_=new bO("MANUAL",2)}function _d(){_d=N,ry=new TO("BARYCENTER",0),_m=new TO(rHn,1),aP=new TO(cHn,2)}function J8(n,e){var t;if(t=n.gc(),e<0||e>t)throw T(new V0(e,t));return new AU(n,e)}function xIn(n,e){var t;return I(e,42)?n.c.Mc(e):(t=NF(n,e),IT(n,e),t)}function wr(n,e,t){return Ca(n,e),Ic(n,t),d1(n,0),hb(n,1),p1(n,!0),g1(n,!0),n}function rs(n,e){if(n<0)throw T(new Hn(e+" cannot be negative but was: "+n));return n}function LIn(n,e){var t,i;for(t=0,i=n.gc();t0?u(un(t.a,i-1),10):null}function Q5(n,e){var t;t=n.k,n.k=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,2,t,n.k))}function JC(n,e){var t;t=n.f,n.f=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,8,t,n.f))}function YC(n,e){var t;t=n.i,n.i=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,7,t,n.i))}function aV(n,e){var t;t=n.a,n.a=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,8,t,n.a))}function dV(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,0,t,n.b))}function bV(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,0,t,n.b))}function wV(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,1,t,n.c))}function gV(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,1,t,n.c))}function U$(n,e){var t;t=n.c,n.c=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,4,t,n.c))}function pV(n,e){var t;t=n.d,n.d=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,1,t,n.d))}function W$(n,e){var t;t=n.D,n.D=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,2,t,n.D))}function X$(n,e){n.r>0&&n.c0&&n.g!=0&&X$(n.i,e/n.r*n.i.d))}function cbe(n,e,t){var i;n.b=e,n.a=t,i=(n.a&512)==512?new T9n:new ZH,n.c=y7e(i,n.b,n.a)}function zIn(n,e){return zh(n.e,e)?(er(),R$(e)?new IE(e,n):new i8(e,n)):new Nkn(e,n)}function ZC(n,e){return zie(Y5(n.a,e,ge(Ni(dh,ch(ge(Ni(e==null?0:mt(e),bh)),15)))))}function ube(n,e,t){return cb(n,new Hvn(e),new mln,new qvn(t),A(M(Bu,1),z,132,0,[]))}function sbe(n){var e,t;return 0>n?new PG:(e=n+1,t=new wSn(e,n),new oU(null,t))}function obe(n,e){Pn();var t;return t=new s2(1),ki(n)?yr(t,n,e):_c(t.f,n,e),new DI(t)}function fbe(n,e){var t,i;return t=n.o+n.p,i=e.o+e.p,te?(e<<=1,e>0?e:L6):e}function V$(n){switch(Rz(n.e!=3),n.e){case 2:return!1;case 0:return!0}return wde(n)}function WIn(n,e){var t;return I(e,8)?(t=u(e,8),n.a==t.a&&n.b==t.b):!1}function Q$(n,e,t){var i,r,c;return c=e>>5,r=e&31,i=ui(J0(n.n[t][c],ge(Ih(r,1))),3),i}function lbe(n,e){var t,i;for(i=e.vc().Kc();i.Ob();)t=u(i.Pb(),42),XT(n,t.cd(),t.dd())}function abe(n,e){var t;t=new Wy,u(e.b,65),u(e.b,65),u(e.b,65),Zc(e.a,new BU(n,t,e))}function vV(n,e){var t;t=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,21,t,n.b))}function mV(n,e){var t;t=n.d,n.d=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,11,t,n.d))}function nT(n,e){var t;t=n.j,n.j=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,13,t,n.j))}function XIn(n,e,t){var i,r,c;for(c=n.a.length-1,r=n.b,i=0;i>>31;i!=0&&(n[t]=i)}function jbe(n,e){Pn();var t,i;for(i=new X,t=0;t0&&(this.g=this.ri(this.i+(this.i/8|0)+1),n.Qc(this.g))}function $t(n,e){ME.call(this,ree,n,e),this.b=this,this.a=Kc(n.Tg(),On(this.e.Tg(),this.c))}function Z5(n,e){var t,i;for(_n(e),i=e.vc().Kc();i.Ob();)t=u(i.Pb(),42),n.zc(t.cd(),t.dd())}function Dbe(n,e,t){var i;for(i=t.Kc();i.Ob();)if(!yC(n,e,i.Pb()))return!1;return!0}function $be(n,e,t,i,r){var c;return t&&(c=yt(e.Tg(),n.c),r=t.gh(e,-1-(c==-1?i:c),null,r)),r}function Fbe(n,e,t,i,r){var c;return t&&(c=yt(e.Tg(),n.c),r=t.ih(e,-1-(c==-1?i:c),null,r)),r}function dOn(n){var e;if(n.b==-2){if(n.e==0)e=-1;else for(e=0;n.a[e]==0;e++);n.b=e}return n.b}function bOn(n){switch(n.g){case 2:return J(),Gn;case 4:return J(),Vn;default:return n}}function wOn(n){switch(n.g){case 1:return J(),ae;case 3:return J(),Kn;default:return n}}function xbe(n){var e,t,i;return n.j==(J(),Kn)&&(e=GLn(n),t=au(e,Vn),i=au(e,Gn),i||i&&t)}function Lbe(n){var e,t;return e=u(n.e&&n.e(),9),t=u(IW(e,e.length),9),new ks(e,t,e.length)}function Nbe(n,e){le(e,iHn,1),TQ(ire(new tj((Vv(),new GD(n,!1,!1,new BH))))),ce(e)}function Y8(n,e){return qn(),ki(n)?DX(n,Ce(e)):G0(n)?TD(n,Y(e)):q0(n)?Kfe(n,sn(e)):n.wd(e)}function TV(n,e){e.q=n,n.d=y.Math.max(n.d,e.r),n.b+=e.d+(n.a.c.length==0?0:n.c),W(n.a,e)}function R3(n,e){var t,i,r,c;return r=n.c,t=n.c+n.b,c=n.d,i=n.d+n.a,e.a>r&&e.ac&&e.b1||n.Ob())return++n.a,n.g=0,e=n.i,n.Ob(),e;throw T(new ic)}function Vbe(n){gyn();var e;return M7n(hK,n)||(e=new Zwn,e.a=n,wU(hK,n,e)),u(br(hK,n),635)}function Ks(n){var e,t,i,r;return r=n,i=0,r<0&&(r+=$a,i=Wh),t=Gt(r/J2),e=Gt(r-t*J2),Bc(e,t,i)}function Z8(n){var e,t,i;for(i=0,t=new o2(n.a);t.a>22),r=n.h+e.h+(i>>22),Bc(t&Nu,i&Nu,r&Wh)}function xOn(n,e){var t,i,r;return t=n.l-e.l,i=n.m-e.m+(t>>22),r=n.h-e.h+(i>>22),Bc(t&Nu,i&Nu,r&Wh)}function i7(n){var e;return n<128?(e=(QEn(),yin)[n],!e&&(e=yin[n]=new wq(n)),e):new wq(n)}function jt(n){var e;return I(n,78)?n:(e=n&&n.__java$exception,e||(e=new CDn(n),Kmn(e)),e)}function r7(n){if(I(n,186))return u(n,118);if(n)return null;throw T(new c2(Iqn))}function LOn(n,e){if(e==null)return!1;for(;n.a!=n.b;)if(tt(e,vT(n)))return!0;return!1}function OV(n){return n.a.Ob()?!0:n.a!=n.d?!1:(n.a=new lX(n.e.f),n.a.Ob())}function Zt(n,e){var t,i;return t=e.Pc(),i=t.length,i==0?!1:(GU(n.c,n.c.length,t),!0)}function hwe(n,e,t){var i,r;for(r=e.vc().Kc();r.Ob();)i=u(r.Pb(),42),n.yc(i.cd(),i.dd(),t);return n}function NOn(n,e){var t,i;for(i=new E(n.b);i.a=0,"Negative initial capacity"),TE(e>=0,"Non-positive load factor"),Cu(this)}function uF(n,e,t){return n>=128?!1:n<64?b5(ui(Ih(1,n),t),0):b5(ui(Ih(1,n-64),e),0)}function mwe(n,e){return!n||!e||n==e?!1:zd(n.b.c,e.b.c+e.b.b)<0&&zd(e.b.c,n.b.c+n.b.b)<0}function VOn(n){var e,t,i;return t=n.n,i=n.o,e=n.d,new ys(t.a-e.b,t.b-e.d,i.a+(e.b+e.c),i.b+(e.d+e.a))}function kwe(n){var e,t,i,r;for(t=n.a,i=0,r=t.length;ii)throw T(new V0(e,i));return n.hi()&&(t=aMn(n,t)),n.Vh(e,t)}function s7(n,e,t){return t==null?(!n.q&&(n.q=new we),O2(n.q,e)):(!n.q&&(n.q=new we),it(n.q,e,t)),n}function H(n,e,t){return t==null?(!n.q&&(n.q=new we),O2(n.q,e)):(!n.q&&(n.q=new we),it(n.q,e,t)),n}function QOn(n){var e,t;return t=new TC,Pr(t,n),H(t,(dl(),hp),n),e=new we,Cye(n,t,e),QEe(n,t,e),t}function Ewe(n){eg();var e,t,i;for(t=F(di,q,8,2,0,1),i=0,e=0;e<2;e++)i+=.5,t[e]=r3e(i,n);return t}function JOn(n,e){var t,i,r,c;for(t=!1,i=n.a[e].length,c=0;c>=1);return e}function ZOn(n){var e,t;return t=x7(n.h),t==32?(e=x7(n.m),e==32?x7(n.l)+32:e+20-10):t-12}function t6(n){var e;return e=n.a[n.b],e==null?null:(St(n.a,n.b,null),n.b=n.b+1&n.a.length-1,e)}function nDn(n){var e,t;return e=n.t-n.k[n.o.p]*n.d+n.j[n.o.p]>n.f,t=n.u+n.e[n.o.p]*n.d>n.f*n.s*n.d,e||t}function bT(n,e,t){var i,r;return i=new I$(e,t),r=new dI,n.b=zNn(n,n.b,i,r),r.b||++n.c,n.b.b=!1,r.d}function eDn(n,e,t){var i,r,c,o;for(o=c6(e,t),c=0,r=o.Kc();r.Ob();)i=u(r.Pb(),11),it(n.c,i,Q(c++))}function wl(n){var e,t;for(t=new E(n.a.b);t.at&&(t=n[e]);return t}function tDn(n,e,t){var i;return i=new X,XY(n,e,i,(J(),Vn),!0,!1),XY(n,t,i,Gn,!1,!1),i}function oF(n,e,t){var i,r,c,o;return c=null,o=e,r=Fd(o,"labels"),i=new jkn(n,t),c=(Hme(i.a,i.b,r),r),c}function Twe(n,e,t,i){var r;return r=xY(n,e,t,i),!r&&(r=Mge(n,t,i),r&&!rg(n,e,r))?null:r}function Mwe(n,e,t,i){var r;return r=LY(n,e,t,i),!r&&(r=TF(n,t,i),r&&!rg(n,e,r))?null:r}function iDn(n,e){var t;for(t=0;t1||e>=0&&n.b<3)}function o7(n){var e,t,i;for(e=new hu,i=_e(n,0);i.b!=i.d.c;)t=u(Re(i),8),s3(e,0,new kr(t));return e}function ja(n){var e,t;for(t=new E(n.a.b);t.ai?1:0}function QV(n,e){return ANn(n,e)?(Tn(n.b,u(k(e,(G(),Gb)),21),e),Ke(n.a,e),!0):!1}function Bwe(n){var e,t;e=u(k(n,(G(),Au)),10),e&&(t=e.c,Jc(t.a,e),t.a.c.length==0&&Jc(Gi(e).b,t))}function fDn(n){return vf?F($zn,lKn,572,0,0,1):u(af(n.a,F($zn,lKn,572,n.a.c.length,0,1)),842)}function Rwe(n,e,t,i){return QE(),new GI(A(M(Ha,1),OM,42,0,[(ex(n,e),new bd(n,e)),(ex(t,i),new bd(t,i))]))}function Rw(n,e,t){var i,r;return r=(i=new RI,i),wr(r,e,t),me((!n.q&&(n.q=new V(co,n,11,10)),n.q),r),r}function aF(n){var e,t,i,r;for(r=lre($ne,n),t=r.length,i=F(tn,q,2,t,6,1),e=0;e=n.b.c.length||(JV(n,2*e+1),t=2*e+2,t=0&&n[i]===e[i];i--);return i<0?0:cO(ui(n[i],fr),ui(e[i],fr))?-1:1}function _we(n,e){var t,i;for(i=_e(n,0);i.b!=i.d.c;)t=u(Re(i),214),t.e.length>0&&(e.td(t),t.i&&Fge(t))}function bF(n,e){var t,i;return i=u(Rn(n.a,4),126),t=F(bH,qB,415,e,0,1),i!=null&&gc(i,0,t,0,i.length),t}function lDn(n,e){var t;return t=new zx((n.f&256)!=0,n.i,n.a,n.d,(n.f&16)!=0,n.j,n.g,e),n.e!=null||(t.c=n),t}function Kwe(n,e){var t,i;for(i=n.Zb().Cc().Kc();i.Ob();)if(t=u(i.Pb(),14),t.Hc(e))return!0;return!1}function wF(n,e,t,i,r){var c,o;for(o=t;o<=r;o++)for(c=e;c<=i;c++)if(zw(n,c,o))return!0;return!1}function aDn(n,e,t){var i,r,c,o;for(_n(t),o=!1,c=n.Zc(e),r=t.Kc();r.Ob();)i=r.Pb(),c.Rb(i),o=!0;return o}function Hwe(n,e){var t;return n===e?!0:I(e,83)?(t=u(e,83),ZJ(Ed(n),t.vc())):!1}function dDn(n,e,t){var i,r;for(r=t.Kc();r.Ob();)if(i=u(r.Pb(),42),n.re(e,i.dd()))return!0;return!1}function bDn(n,e,t){return n.d[e.p][t.p]||(Bpe(n,e,t),n.d[e.p][t.p]=!0,n.d[t.p][e.p]=!0),n.a[e.p][t.p]}function W3(n,e){if(!n.ai()&&e==null)throw T(new Hn("The 'no null' constraint is violated"));return e}function X3(n,e){n.D==null&&n.B!=null&&(n.D=n.B,n.B=null),W$(n,e==null?null:(_n(e),e)),n.C&&n.yk(null)}function qwe(n,e){var t;return!n||n==e||!ai(e,(G(),m0))?!1:(t=u(k(e,(G(),m0)),10),t!=n)}function gF(n){switch(n.i){case 2:return!0;case 1:return!1;case-1:++n.c;default:return n.pl()}}function wDn(n){switch(n.i){case-2:return!0;case-1:return!1;case 1:--n.c;default:return n.ql()}}function gDn(n){cMn.call(this,"The given string does not match the expected format for individual spacings.",n)}function Vu(){Vu=N,gs=new Jj("ELK",0),Yhn=new Jj("JSON",1),Jhn=new Jj("DOT",2),Zhn=new Jj("SVG",3)}function f7(){f7=N,CP=new AO(Xh,0),Don=new AO("RADIAL_COMPACTION",1),$on=new AO("WEDGE_COMPACTION",2)}function lf(){lf=N,Win=new uO("CONCURRENT",0),ls=new uO("IDENTITY_FINISH",1),Rb=new uO("UNORDERED",2)}function pF(){pF=N,jrn=(Aj(),SR),yrn=new In(pnn,jrn),OUn=new kt(vnn),DUn=new kt(mnn),$Un=new kt(knn)}function V3(){V3=N,xcn=new j0n,Lcn=new E0n,zWn=new C0n,GWn=new T0n,qWn=new M0n,Fcn=(_n(qWn),new uln)}function Q3(){Q3=N,sK=new jO("CONSERVATIVE",0),con=new jO("CONSERVATIVE_SOFT",1),Rm=new jO("SLOPPY",2)}function wT(){wT=N,_hn=new vd(15),cne=new tr((Xe(),nd),_hn),t9=Mp,Lhn=HZn,Nhn=Za,Rhn=Kg,Bhn=BP}function vF(n,e,t){var i,r,c;for(i=new Tt,c=_e(t,0);c.b!=c.d.c;)r=u(Re(c),8),Ke(i,new kr(r));aDn(n,e,i)}function Gwe(n){var e,t,i;for(e=0,i=F(di,q,8,n.b,0,1),t=_e(n,0);t.b!=t.d.c;)i[e++]=u(Re(t),8);return i}function ZV(n){var e;return e=(!n.a&&(n.a=new V(e1,n,9,5)),n.a),e.i!=0?ore(u(D(e,0),678)):null}function zwe(n,e){var t;return t=qi(n,e),cO(h$(n,e),0)|Cre(h$(n,t),0)?t:qi(IM,h$(J0(t,63),1))}function Uwe(n,e){var t;t=cn((xF(),uP))!=null&&e.wg()!=null?K(Y(e.wg()))/K(Y(cn(uP))):1,it(n.b,e,t)}function Wwe(n,e){var t,i;return t=u(n.d.Bc(e),14),t?(i=n.e.hc(),i.Gc(t),n.e.d-=t.gc(),t.$b(),i):null}function nQ(n,e){var t,i;if(i=n.c[e],i!=0)for(n.c[e]=0,n.d-=i,t=e+1;t0)return a3(e-1,n.a.c.length),h1(n.a,e-1);throw T(new qmn)}function Xwe(n,e,t){if(e<0)throw T(new mr(_Hn+e));ee)throw T(new Hn(xM+n+aKn+e));if(n<0||e>t)throw T(new bG(xM+n+rnn+e+tnn+t))}function mDn(n){if(!n.a||!(n.a.i&8))throw T(new $r("Enumeration class expected for layout option "+n.f))}function lb(n){var e;++n.j,n.i==0?n.g=null:n.ihA?n-t>hA:t-n>hA}function kF(n,e){return!n||e&&!n.j||I(n,124)&&u(n,124).a.b==0?0:n.Re()}function pT(n,e){return!n||e&&!n.k||I(n,124)&&u(n,124).a.a==0?0:n.Se()}function h7(n){return jl(),n<0?n!=-1?new VQ(-1,-n):gR:n<=10?xin[Gt(n)]:new VQ(1,n)}function tQ(n){throw cF(),T(new L9n("Unexpected typeof result '"+n+"'; please report this bug to the GWT team"))}function CDn(n){H9n(),oE(this),eC(this),this.e=n,NNn(this,n),this.g=n==null?ru:Nr(n),this.a="",this.b=n,this.a=""}function iQ(){this.a=new qgn,this.f=new O6n(this),this.b=new D6n(this),this.i=new $6n(this),this.e=new F6n(this)}function TDn(){iie.call(this,new _X(sb(16))),rs(2,W_n),this.b=2,this.a=new RW(null,null,0,null),$9(this.a,this.a)}function i6(){i6=N,J_=new vO("DUMMY_NODE_OVER",0),qsn=new vO("DUMMY_NODE_UNDER",1),oP=new vO("EQUAL",2)}function yF(){yF=N,_R=sMn(A(M(e9,1),z,103,0,[(sr(),Zs),Ao])),KR=sMn(A(M(e9,1),z,103,0,[Yh,Jh]))}function jF(n){return(J(),uu).Hc(n.j)?K(Y(k(n,(G(),hv)))):Gr(A(M(di,1),q,8,0,[n.i.n,n.n,n.a])).b}function Zwe(n){var e,t,i,r;for(i=n.b.a,t=i.a.ec().Kc();t.Ob();)e=u(t.Pb(),561),r=new pNn(e,n.e,n.f),W(n.g,r)}function Ca(n,e){var t,i,r;i=n.nk(e,null),r=null,e&&(r=(Qp(),t=new ud,t),O3(r,n.r)),i=df(n,r,i),i&&i.Fi()}function nge(n,e){var t,i;for(i=xu(n.d,1)!=0,t=!0;t;)t=!1,t=e.c.Tf(e.e,i),t=t|_7(n,e,i,!1),i=!i;yV(n)}function rQ(n,e){var t,i,r;return i=!1,t=e.q.d,e.dr&&(JFn(e.q,r),i=t!=e.q.d)),i}function MDn(n,e){var t,i,r,c,o,f,h,l;return h=e.i,l=e.j,i=n.f,r=i.i,c=i.j,o=h-r,f=l-c,t=y.Math.sqrt(o*o+f*f),t}function cQ(n,e){var t,i;return i=OT(n),i||(t=(bL(),Yxn(e)),i=new Fmn(t),me(i.Vk(),n)),i}function l7(n,e){var t,i;return t=u(n.c.Bc(e),14),t?(i=n.hc(),i.Gc(t),n.d-=t.gc(),t.$b(),n.mc(i)):n.jc()}function ADn(n,e){var t;for(t=0;t=n.c.b:n.a<=n.c.b))throw T(new ic);return e=n.a,n.a+=n.c.c,++n.b,Q(e)}function ige(n){var e;return e=new uIn(n),O8(n.a,SWn,new Hu(A(M(Rk,1),rn,369,0,[e]))),e.d&&W(e.f,e.d),e.f}function EF(n){var e;return e=new Mz(n.a),Pr(e,n),H(e,(G(),rt),n),e.o.a=n.g,e.o.b=n.f,e.n.a=n.i,e.n.b=n.j,e}function rge(n,e,t,i){var r,c;for(c=n.Kc();c.Ob();)r=u(c.Pb(),70),r.n.a=e.a+(i.a-r.o.a)/2,r.n.b=e.b,e.b+=r.o.b+t}function cge(n,e,t){var i,r;for(r=e.a.a.ec().Kc();r.Ob();)if(i=u(r.Pb(),57),_Tn(n,i,t))return!0;return!1}function uge(n){var e,t;for(t=new E(n.r);t.a=0?e:-e;i>0;)i%2==0?(t*=t,i=i/2|0):(r*=t,i-=1);return e<0?1/r:r}function hge(n,e){var t,i,r;for(r=1,t=n,i=e>=0?e:-e;i>0;)i%2==0?(t*=t,i=i/2|0):(r*=t,i-=1);return e<0?1/r:r}function FDn(n){var e,t;if(n!=null)for(t=0;t0&&(t=u(un(n.a,n.a.c.length-1),570),QV(t,e))||W(n.a,new dSn(e))}function wge(n){wo();var e,t;e=n.d.c-n.e.c,t=u(n.g,145),Zc(t.b,new _5n(e)),Zc(t.c,new K5n(e)),$i(t.i,new H5n(e))}function BDn(n){var e;return e=new V1,e.a+="VerticalSegment ",rc(e,n.e),e.a+=" ",De(e,Lz(new YI,new E(n.k))),e.a}function gge(n){var e;return e=u(xd(n.c.c,""),229),e||(e=new M2(Vp(Xp(new Zg,""),"Other")),Aa(n.c.c,"",e)),e}function r6(n){var e;return n.Db&64?yo(n):(e=new Bs(yo(n)),e.a+=" (name: ",dr(e,n.zb),e.a+=")",e.a)}function hQ(n,e,t){var i,r;return r=n.sb,n.sb=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,4,r,e),t?t.Ei(i):t=i),t}function CF(n,e){var t,i,r;for(t=0,r=zr(n,e).Kc();r.Ob();)i=u(r.Pb(),11),t+=k(i,(G(),Au))!=null?1:0;return t}function Kw(n,e,t){var i,r,c;for(i=0,c=_e(n,0);c.b!=c.d.c&&(r=K(Y(Re(c))),!(r>t));)r>=e&&++i;return i}function pge(n,e,t){var i,r;return i=new Lh(n.e,3,13,null,(r=e.c,r||(Sn(),Tf)),v1(n,e),!1),t?t.Ei(i):t=i,t}function vge(n,e,t){var i,r;return i=new Lh(n.e,4,13,(r=e.c,r||(Sn(),Tf)),null,v1(n,e),!1),t?t.Ei(i):t=i,t}function lQ(n,e,t){var i,r;return r=n.r,n.r=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,8,r,n.r),t?t.Ei(i):t=i),t}function w1(n,e){var t,i;return t=u(e,676),i=t.vk(),!i&&t.wk(i=I(e,88)?new Fkn(n,u(e,26)):new eAn(n,u(e,148))),i}function a7(n,e,t){var i;n.qi(n.i+1),i=n.oi(e,t),e!=n.i&&gc(n.g,e,n.g,e+1,n.i-e),St(n.g,e,i),++n.i,n.bi(e,t),n.ci()}function mge(n,e){var t;return e.a&&(t=e.a.a.length,n.a?De(n.a,n.b):n.a=new Yu(n.d),iAn(n.a,e.a,e.d.length,t)),n}function kge(n,e){var t,i,r,c;if(e.vi(n.a),c=u(Rn(n.a,8),1936),c!=null)for(t=c,i=0,r=t.length;it)throw T(new mr(xM+n+rnn+e+", size: "+t));if(n>e)throw T(new Hn(xM+n+aKn+e))}function As(n,e,t){if(e<0)bY(n,t);else{if(!t.Ij())throw T(new Hn(Pl+t.ne()+em));u(t,66).Nj().Vj(n,n.yh(),e)}}function Ege(n,e,t,i,r,c,o,f){var h;for(h=t;c=i||e=65&&n<=70?n-65+10:n>=97&&n<=102?n-97+10:n>=48&&n<=57?n-48:0}function zDn(n){var e;return n.Db&64?yo(n):(e=new Bs(yo(n)),e.a+=" (source: ",dr(e,n.d),e.a+=")",e.a)}function Tge(n,e,t){var i,r;return r=n.a,n.a=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,5,r,n.a),t?FJ(t,i):t=i),t}function g1(n,e){var t;t=(n.Bb&256)!=0,e?n.Bb|=256:n.Bb&=-257,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,2,t,e))}function dQ(n,e){var t;t=(n.Bb&256)!=0,e?n.Bb|=256:n.Bb&=-257,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,8,t,e))}function kT(n,e){var t;t=(n.Bb&256)!=0,e?n.Bb|=256:n.Bb&=-257,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,8,t,e))}function p1(n,e){var t;t=(n.Bb&512)!=0,e?n.Bb|=512:n.Bb&=-513,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,3,t,e))}function bQ(n,e){var t;t=(n.Bb&512)!=0,e?n.Bb|=512:n.Bb&=-513,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,9,t,e))}function u6(n,e){var t;return n.b==-1&&n.a&&(t=n.a.Gj(),n.b=t?n.c.Xg(n.a.aj(),t):yt(n.c.Tg(),n.a)),n.c.Og(n.b,e)}function Q(n){var e,t;return n>-129&&n<128?(e=n+128,t=(qEn(),jin)[e],!t&&(t=jin[e]=new gq(n)),t):new gq(n)}function J3(n){var e,t;return n>-129&&n<128?(e=n+128,t=(VEn(),Min)[e],!t&&(t=Min[e]=new vq(n)),t):new vq(n)}function wQ(n){var e,t;return e=n.k,e==(Qn(),Xt)?(t=u(k(n,(G(),ec)),61),t==(J(),Kn)||t==ae):!1}function Mge(n,e,t){var i,r,c;return c=(r=b4(n.b,e),r),c&&(i=u(jM(G8(n,c),""),26),i)?xY(n,i,e,t):null}function TF(n,e,t){var i,r,c;return c=(r=b4(n.b,e),r),c&&(i=u(jM(G8(n,c),""),26),i)?LY(n,i,e,t):null}function UDn(n,e){var t,i;for(i=new ie(n);i.e!=i.i.gc();)if(t=u(oe(i),138),B(e)===B(t))return!0;return!1}function s6(n,e,t){var i;if(i=n.gc(),e>i)throw T(new V0(e,i));if(n.hi()&&n.Hc(t))throw T(new Hn(yk));n.Xh(e,t)}function Age(n,e){var t;if(t=xw(n.i,e),t==null)throw T(new Sf("Node did not exist in input."));return MV(e,t),null}function Sge(n,e){var t;if(t=R7(n,e),I(t,322))return u(t,34);throw T(new Hn(Pl+e+"' is not a valid attribute"))}function Pge(n,e,t){var i,r;for(r=I(e,99)&&u(e,18).Bb&Yi?new LO(e,n):new H3(e,n),i=0;ie?1:n==e?n==0?ni(1/n,1/e):0:isNaN(n)?isNaN(e)?0:1:-1}function Bge(n,e){le(e,"Sort end labels",1),Rt(gt(qr(new $n(null,new xn(n.b,16)),new bdn),new wdn),new gdn),ce(e)}function o6(n,e,t){var i,r;return n.ej()?(r=n.fj(),i=Dx(n,e,t),n.$i(n.Zi(7,Q(t),i,e,r)),i):Dx(n,e,t)}function MF(n,e){var t,i,r;n.d==null?(++n.e,--n.f):(r=e.cd(),t=e.Sh(),i=(t&nt)%n.d.length,yde(n,i,hNn(n,i,t,r)))}function Y3(n,e){var t;t=(n.Bb&Eo)!=0,e?n.Bb|=Eo:n.Bb&=-1025,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,10,t,e))}function Z3(n,e){var t;t=(n.Bb&Ib)!=0,e?n.Bb|=Ib:n.Bb&=-4097,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,12,t,e))}function n4(n,e){var t;t=(n.Bb&mu)!=0,e?n.Bb|=mu:n.Bb&=-8193,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,15,t,e))}function e4(n,e){var t;t=(n.Bb&Bb)!=0,e?n.Bb|=Bb:n.Bb&=-2049,n.Db&4&&!(n.Db&1)&&et(n,new vo(n,1,11,t,e))}function Rge(n,e){var t;return t=ni(n.b.c,e.b.c),t!=0||(t=ni(n.a.a,e.a.a),t!=0)?t:ni(n.a.b,e.a.b)}function _ge(n,e){var t;if(t=te(n.k,e),t==null)throw T(new Sf("Port did not exist in input."));return MV(e,t),null}function Kge(n){var e,t;for(t=wNn(is(n)).Kc();t.Ob();)if(e=Ce(t.Pb()),A6(n,e))return Vae((C7n(),zne),e);return null}function Hge(n,e){var t,i,r,c,o;for(o=Kc(n.e.Tg(),e),c=0,t=u(n.g,119),r=0;r>10)+rk&Ut,e[1]=(n&1023)+56320&Ut,Hs(e,0,e.length)}function jT(n){var e,t;return t=u(k(n,(nn(),as)),103),t==(sr(),kh)?(e=K(Y(k(n,zS))),e>=1?Ao:Jh):t}function zge(n){switch(u(k(n,(nn(),Qh)),218).g){case 1:return new ewn;case 3:return new uwn;default:return new nwn}}function Ta(n){if(n.c)Ta(n.c);else if(n.d)throw T(new $r("Stream already terminated, can't be modified or used"))}function PF(n){var e;return n.Db&64?yo(n):(e=new Bs(yo(n)),e.a+=" (identifier: ",dr(e,n.k),e.a+=")",e.a)}function QDn(n,e,t){var i,r;return i=(ad(),r=new Xy,r),UC(i,e),WC(i,t),n&&me((!n.a&&(n.a=new Yt(io,n,5)),n.a),i),i}function IF(n,e,t,i){var r,c;return _n(i),_n(t),r=n.xc(e),c=r==null?t:l7n(u(r,15),u(t,14)),c==null?n.Bc(e):n.zc(e,c),c}function Cn(n){var e,t,i,r;return t=(e=u(xo((i=n.gm,r=i.f,r==Ie?i:r)),9),new ks(e,u(bo(e,e.length),9),0)),ko(t,n),t}function Uge(n,e,t){var i,r;for(r=n.a.ec().Kc();r.Ob();)if(i=u(r.Pb(),10),t7(t,u(un(e,i.p),14)))return i;return null}function Wge(n,e,t){var i;try{Awe(n,e,t)}catch(r){throw r=jt(r),I(r,597)?(i=r,T(new EX(i))):T(r)}return e}function vl(n,e){var t;return Fr(n)&&Fr(e)&&(t=n-e,ik>1,n.k=t-1>>1}function OF(){_J();var n,e,t;t=qTe+++Date.now(),n=Gt(y.Math.floor(t*uk))&FM,e=Gt(t-n*enn),this.a=n^1502,this.b=e^tN}function Kh(n){var e,t,i;for(e=new X,i=new E(n.j);i.a34028234663852886e22?Ft:e<-34028234663852886e22?Qt:e}function JDn(n){return n-=n>>1&1431655765,n=(n>>2&858993459)+(n&858993459),n=(n>>4)+n&252645135,n+=n>>8,n+=n>>16,n&63}function YDn(n){var e,t,i,r;for(e=new Djn(n.Hd().gc()),r=0,i=$2(n.Hd().Kc());i.Ob();)t=i.Pb(),ole(e,t,Q(r++));return $5e(e.a)}function Zge(n,e){var t,i,r;for(r=new we,i=e.vc().Kc();i.Ob();)t=u(i.Pb(),42),it(r,t.cd(),Gbe(n,u(t.dd(),15)));return r}function yQ(n,e){n.n.c.length==0&&W(n.n,new lC(n.s,n.t,n.i)),W(n.b,e),iJ(u(un(n.n,n.n.c.length-1),211),e),oRn(n,e)}function Hw(n){return(n.c!=n.b.b||n.i!=n.g.b)&&(n.a.c=F(Zn,rn,1,0,5,1),Zt(n.a,n.b),Zt(n.a,n.g),n.c=n.b.b,n.i=n.g.b),n.a}function DF(n,e){var t,i,r;for(r=0,i=u(e.Kb(n),20).Kc();i.Ob();)t=u(i.Pb(),17),on(sn(k(t,(G(),kf))))||++r;return r}function n2e(n,e){var t,i,r;i=$w(e),r=K(Y(bb(i,(nn(),Mo)))),t=y.Math.max(0,r/2-.5),g6(e,t,1),W(n,new G7n(e,t))}function Ss(){Ss=N,Qk=new Q9(Xh,0),Sm=new Q9("FIRST",1),xl=new Q9(uHn,2),Pm=new Q9("LAST",3),Ub=new Q9(sHn,4)}function Hh(){Hh=N,rH=new Wj(K6,0),yy=new Wj("POLYLINE",1),Cv=new Wj("ORTHOGONAL",2),Sp=new Wj("SPLINES",3)}function ET(){ET=N,Jon=new PO("ASPECT_RATIO_DRIVEN",0),IK=new PO("MAX_SCALE_DRIVEN",1),Qon=new PO("AREA_DRIVEN",2)}function w7(){w7=N,AP=new IO("P1_STRUCTURE",0),SP=new IO("P2_PROCESSING_ORDER",1),PP=new IO("P3_EXECUTION",2)}function CT(){CT=N,CK=new MO("OVERLAP_REMOVAL",0),jK=new MO("COMPACTION",1),EK=new MO("GRAPH_SIZE_CALCULATION",2)}function zd(n,e){return Zo(),mo(Cl),y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e))}function ZDn(n,e){var t,i;for(t=_e(n,0);t.b!=t.d.c;){if(i=x9(Y(Re(t))),i==e)return;if(i>e){a$(t);break}}y8(t,e)}function En(n,e){var t,i,r,c,o;if(t=e.f,Aa(n.c.d,t,e),e.g!=null)for(r=e.g,c=0,o=r.length;ce&&i.ue(n[c-1],n[c])>0;--c)o=n[c],St(n,c,n[c-1]),St(n,c-1,o)}function Ps(n,e,t,i){if(e<0)_Y(n,t,i);else{if(!t.Ij())throw T(new Hn(Pl+t.ne()+em));u(t,66).Nj().Tj(n,n.yh(),e,i)}}function TT(n,e){if(e==n.d)return n.e;if(e==n.e)return n.d;throw T(new Hn("Node "+e+" not part of edge "+n))}function t2e(n,e){switch(e.g){case 2:return n.b;case 1:return n.c;case 4:return n.d;case 3:return n.a;default:return!1}}function n$n(n,e){switch(e.g){case 2:return n.b;case 1:return n.c;case 4:return n.d;case 3:return n.a;default:return!1}}function jQ(n,e,t,i){switch(e){case 3:return n.f;case 4:return n.g;case 5:return n.i;case 6:return n.j}return aQ(n,e,t,i)}function i2e(n){return n.k!=(Qn(),ii)?!1:C3(new $n(null,new Cd(new re(ue(ei(n).a.Kc(),new An)))),new Hbn)}function r2e(n){return n.e==null?n:(!n.c&&(n.c=new zx((n.f&256)!=0,n.i,n.a,n.d,(n.f&16)!=0,n.j,n.g,null)),n.c)}function c2e(n,e){return n.h==tk&&n.m==0&&n.l==0?(e&&(Il=Bc(0,0,0)),eyn((I3(),gin))):(e&&(Il=Bc(n.l,n.m,n.h)),Bc(0,0,0))}function Nr(n){var e;return Array.isArray(n)&&n.im===Xg?J1($u(n))+"@"+(e=mt(n)>>>0,e.toString(16)):n.toString()}function f6(n){var e;this.a=(e=u(n.e&&n.e(),9),new ks(e,u(bo(e,e.length),9),0)),this.b=F(Zn,rn,1,this.a.a.length,5,1)}function u2e(n){var e,t,i;for(this.a=new Sh,i=new E(n);i.a0&&(Te(e-1,n.length),n.charCodeAt(e-1)==58)&&!$F(n,a9,d9))}function $F(n,e,t){var i,r;for(i=0,r=n.length;i=r)return e.c+t;return e.c+e.b.gc()}function l2e(n,e){o3();var t,i,r,c;for(i=bPn(n),r=e,S3(i,0,i.length,r),t=0;t0&&(i+=r,++t);return t>1&&(i+=n.d*(t-1)),i}function CQ(n){var e,t,i;for(i=new i1,i.a+="[",e=0,t=n.gc();e0&&this.b>0&&cW(this.c,this.b,this.a)}function AQ(n){xF(),this.c=uf(A(M(sMe,1),rn,831,0,[LQn])),this.b=new we,this.a=n,it(this.b,uP,1),Zc(NQn,new q6n(this))}function e$n(n,e){var t;return n.d?Uu(n.b,e)?u(te(n.b,e),51):(t=e.Kf(),it(n.b,e,t),t):e.Kf()}function SQ(n,e){var t;return B(n)===B(e)?!0:I(e,91)?(t=u(e,91),n.e==t.e&&n.d==t.d&&Jae(n,t.a)):!1}function B2(n){switch(J(),n.g){case 4:return Kn;case 1:return Vn;case 3:return ae;case 2:return Gn;default:return Xr}}function PQ(n,e){switch(e){case 3:return n.f!=0;case 4:return n.g!=0;case 5:return n.i!=0;case 6:return n.j!=0}return SV(n,e)}function p2e(n){switch(n.g){case 0:return new Lgn;case 1:return new Ngn;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function t$n(n){switch(n.g){case 0:return new xgn;case 1:return new Bgn;default:throw T(new Hn(AN+(n.f!=null?n.f:""+n.g)))}}function i$n(n){switch(n.g){case 0:return new sG;case 1:return new b9n;default:throw T(new Hn(bA+(n.f!=null?n.f:""+n.g)))}}function v2e(n){switch(n.g){case 1:return new Pgn;case 2:return new kjn;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function m2e(n){var e,t;if(n.b)return n.b;for(t=vf?null:n.d;t;){if(e=vf?null:t.b,e)return e;t=vf?null:t.d}return e3(),Uin}function k2e(n){var e,t,i;return n.e==0?0:(e=n.d<<5,t=n.a[n.d-1],n.e<0&&(i=dOn(n),i==n.d-1&&(--t,t=t|0)),e-=x7(t),e)}function y2e(n){var e,t,i;return n>5,e=n&31,i=F(be,Le,25,t+1,15,1),i[t]=1<3;)r*=10,--c;n=(n+(r>>1))/r|0}return i.i=n,!0}function E2e(n){return yF(),qn(),!!(n$n(u(n.a,81).j,u(n.b,103))||u(n.a,81).d.e!=0&&n$n(u(n.a,81).j,u(n.b,103)))}function C2e(n){DC(),u(n.We((Xe(),_l)),174).Hc((Lu(),UP))&&(u(n.We(rw),174).Fc((Mu(),Pp)),u(n.We(_l),174).Mc(UP))}function c$n(n,e){var t,i;if(e){for(t=0;t=0;--i)for(e=t[i],r=0;r>1,this.k=e-1>>1}function I2e(n,e){le(e,"End label post-processing",1),Rt(gt(qr(new $n(null,new xn(n.b,16)),new udn),new sdn),new odn),ce(e)}function O2e(n,e,t){var i,r;return i=K(n.p[e.i.p])+K(n.d[e.i.p])+e.n.b+e.a.b,r=K(n.p[t.i.p])+K(n.d[t.i.p])+t.n.b+t.a.b,r-i}function D2e(n,e,t){var i,r;for(i=ui(t,fr),r=0;fc(i,0)!=0&&r0&&(Te(0,e.length),e.charCodeAt(0)==43)?e.substr(1):e))}function F2e(n){var e;return n==null?null:new il((e=jc(n,!0),e.length>0&&(Te(0,e.length),e.charCodeAt(0)==43)?e.substr(1):e))}function LQ(n,e){var t;return n.i>0&&(e.lengthn.i&&St(e,n.i,null),e}function Oc(n,e,t){var i,r,c;return n.ej()?(i=n.i,c=n.fj(),a7(n,i,e),r=n.Zi(3,null,e,i,c),t?t.Ei(r):t=r):a7(n,n.i,e),t}function x2e(n,e,t){var i,r;return i=new Lh(n.e,4,10,(r=e.c,I(r,88)?u(r,26):(Sn(),so)),null,v1(n,e),!1),t?t.Ei(i):t=i,t}function L2e(n,e,t){var i,r;return i=new Lh(n.e,3,10,null,(r=e.c,I(r,88)?u(r,26):(Sn(),so)),v1(n,e),!1),t?t.Ei(i):t=i,t}function o$n(n){W0();var e;return e=new kr(u(n.e.We((Xe(),Kg)),8)),n.B.Hc((Lu(),Mv))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function f$n(n){wb();var e;return(n.q?n.q:(Pn(),Pn(),vh))._b((nn(),j0))?e=u(k(n,j0),197):e=u(k(Gi(n),$m),197),e}function bb(n,e){var t,i;return i=null,ai(n,(nn(),rP))&&(t=u(k(n,rP),94),t.Xe(e)&&(i=t.We(e))),i==null&&(i=k(Gi(n),e)),i}function h$n(n,e){var t,i,r;return I(e,42)?(t=u(e,42),i=t.cd(),r=ab(n.Rc(),i),Ff(r,t.dd())&&(r!=null||n.Rc()._b(i))):!1}function NF(n,e){var t,i,r;return n.f>0?(n.qj(),i=e==null?0:mt(e),r=(i&nt)%n.d.length,t=hNn(n,r,i,e),t!=-1):!1}function Ko(n,e){var t,i,r;return n.f>0&&(n.qj(),i=e==null?0:mt(e),r=(i&nt)%n.d.length,t=kY(n,r,i,e),t)?t.dd():null}function g7(n,e){var t,i,r,c;for(c=Kc(n.e.Tg(),e),t=u(n.g,119),r=0;r1?cf(Ih(e.a[1],32),ui(e.a[0],fr)):ui(e.a[0],fr),$d(Ni(e.e,t))))}function p7(n,e){var t;return Fr(n)&&Fr(e)&&(t=n%e,ik>5,e&=31,r=n.d+t+(e==0?0:1),i=F(be,Le,25,r,15,1),Nve(i,n.a,t,e),c=new Pw(n.e,r,i),K5(c),c}function BQ(n,e,t){var i,r;i=u(vc(Pv,e),117),r=u(vc(m9,e),117),t?(yr(Pv,n,i),yr(m9,n,r)):(yr(m9,n,i),yr(Pv,n,r))}function p$n(n,e,t){var i,r,c;for(r=null,c=n.b;c;){if(i=n.a.ue(e,c.d),t&&i==0)return c;i>=0?c=c.a[1]:(r=c,c=c.a[0])}return r}function v$n(n,e,t){var i,r,c;for(r=null,c=n.b;c;){if(i=n.a.ue(e,c.d),t&&i==0)return c;i<=0?c=c.a[0]:(r=c,c=c.a[1])}return r}function K2e(n,e,t,i){var r,c,o;return r=!1,jEe(n.f,t,i)&&(ape(n.f,n.a[e][t],n.a[e][i]),c=n.a[e],o=c[i],c[i]=c[t],c[t]=o,r=!0),r}function RQ(n,e,t,i,r){var c,o,f;for(o=r;e.b!=e.c;)c=u(y2(e),10),f=u(zr(c,i).Xb(0),11),n.d[f.p]=o++,t.c[t.c.length]=f;return o}function _Q(n,e,t){var i,r,c,o,f;return o=n.k,f=e.k,i=t[o.g][f.g],r=Y(bb(n,i)),c=Y(bb(e,i)),y.Math.max((_n(r),r),(_n(c),c))}function H2e(n,e,t){var i,r,c,o;for(i=t/n.c.length,r=0,o=new E(n);o.a2e3&&(wzn=n,KA=y.setTimeout(Vie,10))),_A++==0?(E0e((aG(),din)),!0):!1}function G2e(n,e){var t,i,r;for(i=new re(ue(ei(n).a.Kc(),new An));Se(i);)if(t=u(ve(i),17),r=t.d.i,r.c==e)return!1;return!0}function KQ(n,e){var t,i;if(I(e,245)){i=u(e,245);try{return t=n.vd(i),t==0}catch(r){if(r=jt(r),!I(r,205))throw T(r)}}return!1}function z2e(){return Error.stackTraceLimit>0?(y.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function U2e(n,e){return Zo(),Zo(),mo(Cl),(y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e)))>0}function HQ(n,e){return Zo(),Zo(),mo(Cl),(y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e)))<0}function y$n(n,e){return Zo(),Zo(),mo(Cl),(y.Math.abs(n-e)<=Cl||n==e||isNaN(n)&&isNaN(e)?0:ne?1:pd(isNaN(n),isNaN(e)))<=0}function RF(n,e){for(var t=0;!e[t]||e[t]=="";)t++;for(var i=e[t++];tJL)return t.fh();if(i=t.Zg(),i||t==n)break}return i}function qQ(n){return dC(),I(n,156)?u(te($y,Azn),288).vg(n):Uu($y,$u(n))?u(te($y,$u(n)),288).vg(n):null}function X2e(n){if(DT(B4,n))return qn(),z4;if(DT(EB,n))return qn(),qa;throw T(new Hn("Expecting true or false"))}function V2e(n,e){if(e.c==n)return e.d;if(e.d==n)return e.c;throw T(new Hn("Input edge is not connected to the input port."))}function A$n(n,e){return n.e>e.e?1:n.ee.d?n.e:n.d=48&&n<48+y.Math.min(10,10)?n-48:n>=97&&n<97?n-97+10:n>=65&&n<65?n-65+10:-1}function P$n(n,e){var t;return B(e)===B(n)?!0:!I(e,21)||(t=u(e,21),t.gc()!=n.gc())?!1:n.Ic(t)}function Q2e(n,e){var t,i,r,c;return i=n.a.length-1,t=e-n.b&i,c=n.c-e&i,r=n.c-n.b&i,cjn(t=c?(Vwe(n,e),-1):(Qwe(n,e),1)}function J2e(n,e){var t,i;for(t=(Te(e,n.length),n.charCodeAt(e)),i=e+1;ie.e?1:n.fe.f?1:mt(n)-mt(e)}function DT(n,e){return _n(n),e==null?!1:Mn(n,e)?!0:n.length==e.length&&Mn(n.toLowerCase(),e.toLowerCase())}function upe(n,e){var t,i,r,c;for(i=0,r=e.gc();i0&&fc(n,128)<0?(e=ge(n)+128,t=(XEn(),Ein)[e],!t&&(t=Ein[e]=new pq(n)),t):new pq(n)}function O$n(n,e){var t,i;return t=e.Hh(n.a),t&&(i=Ce(Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),We)),i!=null)?i:e.ne()}function spe(n,e){var t,i;return t=e.Hh(n.a),t&&(i=Ce(Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),We)),i!=null)?i:e.ne()}function ope(n,e){c$();var t,i;for(i=new re(ue(Kh(n).a.Kc(),new An));Se(i);)if(t=u(ve(i),17),t.d.i==e||t.c.i==e)return t;return null}function UQ(n,e,t){this.c=n,this.f=new X,this.e=new Li,this.j=new eW,this.n=new eW,this.b=e,this.g=new ys(e.c,e.d,e.b,e.a),this.a=t}function _F(n){var e,t,i,r;for(this.a=new Sh,this.d=new hi,this.e=0,t=n,i=0,r=t.length;i0):!1}function F$n(n){var e;B(hn(n,(Xe(),Bg)))===B((_h(),HP))&&(Pt(n)?(e=u(hn(Pt(n),Bg),334),gr(n,Bg,e)):gr(n,Bg,i9))}function ape(n,e,t){var i,r;yx(n.e,e,t,(J(),Gn)),yx(n.i,e,t,Vn),n.a&&(r=u(k(e,(G(),rt)),11),i=u(k(t,rt),11),l$(n.g,r,i))}function x$n(n,e,t){var i,r,c;i=e.c.p,c=e.p,n.b[i][c]=new YTn(n,e),t&&(n.a[i][c]=new c6n(e),r=u(k(e,(G(),m0)),10),r&&Tn(n.d,r,e))}function L$n(n,e){var t,i,r;if(W(eS,n),e.Fc(n),t=u(te(DR,n),21),t)for(r=t.Kc();r.Ob();)i=u(r.Pb(),33),xr(eS,i,0)!=-1||L$n(i,e)}function dpe(n,e,t){var i;(Fzn?(m2e(n),!0):xzn||Nzn?(e3(),!0):Lzn&&(e3(),!1))&&(i=new hEn(e),i.b=t,g5e(n,i))}function KF(n,e){var t;t=!n.A.Hc((Qu(),id))||n.q==(Mi(),Ac),n.u.Hc((Mu(),n1))?t?xCe(n,e):a_n(n,e):n.u.Hc(Gl)&&(t?nCe(n,e):M_n(n,e))}function r4(n,e){var t,i;if(++n.j,e!=null&&(t=(i=n.a.Cb,I(i,97)?u(i,97).Jg():null),ome(e,t))){R2(n.a,4,t);return}R2(n.a,4,u(e,126))}function N$n(n,e,t){return new ys(y.Math.min(n.a,e.a)-t/2,y.Math.min(n.b,e.b)-t/2,y.Math.abs(n.a-e.a)+t,y.Math.abs(n.b-e.b)+t)}function bpe(n,e){var t,i;return t=Wc(n.a.c.p,e.a.c.p),t!=0?t:(i=Wc(n.a.d.i.p,e.a.d.i.p),i!=0?i:Wc(e.a.d.p,n.a.d.p))}function wpe(n,e,t){var i,r,c,o;return c=e.j,o=t.j,c!=o?c.g-o.g:(i=n.f[e.p],r=n.f[t.p],i==0&&r==0?0:i==0?-1:r==0?1:ni(i,r))}function B$n(n,e,t){var i,r,c;if(!t[e.d])for(t[e.d]=!0,r=new E(Hw(e));r.a=r)return r;for(e=e>0?e:0;ei&&St(e,i,null),e}function _$n(n,e){var t,i;for(i=n.a.length,e.lengthi&&St(e,i,null),e}function Aa(n,e,t){var i,r,c;return r=u(te(n.e,e),387),r?(c=gU(r,t),Oyn(n,r),c):(i=new qU(n,e,t),it(n.e,e,i),iMn(i),null)}function vpe(n){var e;if(n==null)return null;if(e=a9e(jc(n,!0)),e==null)throw T(new VI("Invalid hexBinary value: '"+n+"'"));return e}function m7(n){return jl(),fc(n,0)<0?fc(n,-1)!=0?new OJ(-1,P3(n)):gR:fc(n,10)<=0?xin[ge(n)]:new OJ(1,n)}function qF(){return SM(),A(M(yUn,1),z,159,0,[mUn,vUn,kUn,hUn,fUn,lUn,bUn,dUn,aUn,pUn,gUn,wUn,sUn,uUn,oUn,rUn,iUn,cUn,eUn,nUn,tUn,TR])}function K$n(n){var e;this.d=new X,this.j=new Li,this.g=new Li,e=n.g.b,this.f=u(k(Gi(e),(nn(),as)),103),this.e=K(Y(xT(e,nw)))}function H$n(n){this.b=new X,this.e=new X,this.d=n,this.a=!Wv(gt(new $n(null,new Cd(new sf(n.b))),new Fv(new qbn))).sd((ca(),V4))}function Ho(){Ho=N,Xn=new Z9("PARENTS",0),vi=new Z9("NODES",1),Zf=new Z9("EDGES",2),Ya=new Z9("PORTS",3),D1=new Z9("LABELS",4)}function qw(){qw=N,Hl=new e8("DISTRIBUTED",0),Cy=new e8("JUSTIFIED",1),Hhn=new e8("BEGIN",2),r9=new e8(I4,3),qhn=new e8("END",4)}function mpe(n){var e;switch(e=n.yi(null),e){case 10:return 0;case 15:return 1;case 14:return 2;case 11:return 3;case 21:return 4}return-1}function GF(n){switch(n.g){case 1:return sr(),Yh;case 4:return sr(),Zs;case 2:return sr(),Ao;case 3:return sr(),Jh}return sr(),kh}function kpe(n,e,t){var i;switch(i=t.q.getFullYear()-Tl+Tl,i<0&&(i=-i),e){case 1:n.a+=i;break;case 2:oh(n,i%100,2);break;default:oh(n,i,e)}}function _e(n,e){var t,i;if(tb(e,n.b),e>=n.b>>1)for(i=n.c,t=n.b;t>e;--t)i=i.b;else for(i=n.a.a,t=0;t=64&&e<128&&(r=cf(r,Ih(1,e-64)));return r}function xT(n,e){var t,i;return i=null,ai(n,(Xe(),Ap))&&(t=u(k(n,Ap),94),t.Xe(e)&&(i=t.We(e))),i==null&&Gi(n)&&(i=k(Gi(n),e)),i}function z$n(n,e){var t,i,r;r=e.d.i,i=r.k,!(i==(Qn(),ii)||i==mf)&&(t=new re(ue(ei(r).a.Kc(),new An)),Se(t)&&it(n.k,e,u(ve(t),17)))}function zF(n,e){var t,i,r;return i=On(n.Tg(),e),t=e-n.Ah(),t<0?(r=n.Yg(i),r>=0?n.lh(r):Ox(n,i)):t<0?Ox(n,i):u(i,66).Nj().Sj(n,n.yh(),t)}function cn(n){var e;if(I(n.a,4)){if(e=qQ(n.a),e==null)throw T(new $r(HHn+n.b+"'. "+KHn+(Ph(Fy),Fy.k)+Etn));return e}else return n.a}function Epe(n){var e;if(n==null)return null;if(e=qCe(jc(n,!0)),e==null)throw T(new VI("Invalid base64Binary value: '"+n+"'"));return e}function oe(n){var e;try{return e=n.i.Xb(n.e),n.mj(),n.g=n.e++,e}catch(t){throw t=jt(t),I(t,73)?(n.mj(),T(new ic)):T(t)}}function UF(n){var e;try{return e=n.c.ki(n.e),n.mj(),n.g=n.e++,e}catch(t){throw t=jt(t),I(t,73)?(n.mj(),T(new ic)):T(t)}}function a6(){a6=N,Trn=(Xe(),yhn),IR=Zfn,FUn=Tp,Crn=nd,BUn=(WT(),irn),NUn=ern,RUn=crn,LUn=nrn,xUn=(pF(),yrn),PR=OUn,Ern=DUn,nS=$Un}function LT(n){switch(DG(),this.c=new X,this.d=n,n.g){case 0:case 2:this.a=_W(qrn),this.b=Ft;break;case 3:case 1:this.a=qrn,this.b=Qt}}function U$n(n,e,t){var i,r;if(n.c)nu(n.c,n.c.i+e),eu(n.c,n.c.j+t);else for(r=new E(n.b);r.a0&&(W(n.b,new MEn(e.a,t)),i=e.a.length,0i&&(e.a+=Iyn(F(Ls,Rf,25,-i,15,1))))}function W$n(n,e){var t,i,r;for(t=n.o,r=u(u(ct(n.r,e),21),84).Kc();r.Ob();)i=u(r.Pb(),111),i.e.a=M3e(i,t.a),i.e.b=t.b*K(Y(i.b.We(JA)))}function Tpe(n,e){var t,i,r,c;return r=n.k,t=K(Y(k(n,(G(),k0)))),c=e.k,i=K(Y(k(e,k0))),c!=(Qn(),Xt)?-1:r!=Xt?1:t==i?0:t=0?n.hh(e,t,i):(n.eh()&&(i=(r=n.Vg(),r>=0?n.Qg(i):n.eh().ih(n,-1-r,null,i))),n.Sg(e,t,i))}function XQ(n,e){switch(e){case 7:!n.e&&(n.e=new Fn(bi,n,7,4)),de(n.e);return;case 8:!n.d&&(n.d=new Fn(bi,n,8,5)),de(n.d);return}FQ(n,e)}function qo(n,e){var t;t=n.Zc(e);try{return t.Pb()}catch(i){throw i=jt(i),I(i,109)?T(new mr("Can't get element "+e)):T(i)}}function VQ(n,e){this.e=n,e=0&&(t.d=n.t);break;case 3:n.t>=0&&(t.a=n.t)}n.C&&(t.b=n.C.b,t.c=n.C.c)}function K2(){K2=N,$k=new Rj(NM,0),Dk=new Rj(lN,1),Fk=new Rj(aN,2),xk=new Rj(dN,3),$k.a=!1,Dk.a=!0,Fk.a=!1,xk.a=!0}function d6(){d6=N,Lk=new Bj(NM,0),YA=new Bj(lN,1),ZA=new Bj(aN,2),Nk=new Bj(dN,3),Lk.a=!1,YA.a=!0,ZA.a=!1,Nk.a=!0}function Ipe(n){var e;e=n.a;do e=u(ve(new re(ue(Lr(e).a.Kc(),new An))),17).c.i,e.k==(Qn(),pi)&&n.b.Fc(e);while(e.k==(Qn(),pi));n.b=va(n.b)}function Ope(n){var e,t,i;for(i=n.c.a,n.p=(pe(i),new du(i)),t=new E(i);t.at.b)return!0}return!1}function WF(n,e){return ki(n)?!!ozn[e]:n.hm?!!n.hm[e]:G0(n)?!!szn[e]:q0(n)?!!uzn[e]:!1}function gr(n,e,t){return t==null?(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),IT(n.o,e)):(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),XT(n.o,e,t)),n}function xpe(n,e,t,i){var r,c;c=e.Xe((Xe(),_g))?u(e.We(_g),21):n.j,r=Cge(c),r!=(SM(),TR)&&(t&&!GQ(r)||nY(d9e(n,r,i),e))}function BT(n,e,t,i){var r,c,o;return c=On(n.Tg(),e),r=e-n.Ah(),r<0?(o=n.Yg(c),o>=0?n._g(o,t,!0):Yd(n,c,t)):u(c,66).Nj().Pj(n,n.yh(),r,t,i)}function Lpe(n,e,t,i){var r,c,o;t.mh(e)&&(er(),R$(e)?(r=u(t.ah(e),153),upe(n,r)):(c=(o=e,o?u(i,49).xh(o):null),c&&Bte(t.ah(e),c)))}function Npe(n){switch(n.g){case 1:return Hd(),Ok;case 3:return Hd(),Ik;case 2:return Hd(),AR;case 4:return Hd(),MR;default:return null}}function QQ(n){switch(typeof n){case EL:return m1(n);case UZ:return Gt(n);case X2:return qn(),n?1231:1237;default:return n==null?0:md(n)}}function Bpe(n,e,t){if(n.e)switch(n.b){case 1:d1e(n.c,e,t);break;case 0:b1e(n.c,e,t)}else xAn(n.c,e,t);n.a[e.p][t.p]=n.c.i,n.a[t.p][e.p]=n.c.e}function Y$n(n){var e,t;if(n==null)return null;for(t=F(mh,q,193,n.length,0,2),e=0;e=0)return r;if(n.Fk()){for(i=0;i=r)throw T(new V0(e,r));if(n.hi()&&(i=n.Xc(t),i>=0&&i!=e))throw T(new Hn(yk));return n.mi(e,t)}function JQ(n,e){if(this.a=u(pe(n),245),this.b=u(pe(e),245),n.vd(e)>0||n==(qI(),cR)||e==(HI(),uR))throw T(new Hn("Invalid range: "+OAn(n,e)))}function Z$n(n){var e,t;for(this.b=new X,this.c=n,this.a=!1,t=new E(n.a);t.a0),(e&-e)==e)return Gt(e*xu(n,31)*4656612873077393e-25);do t=xu(n,31),i=t%e;while(t-i+(e-1)<0);return Gt(i)}function m1(n){lEn();var e,t,i;return t=":"+n,i=XA[t],i!=null?Gt((_n(i),i)):(i=Xin[t],e=i==null?I8e(n):Gt((_n(i),i)),c1e(),XA[t]=e,e)}function eFn(n,e,t){le(t,"Compound graph preprocessor",1),n.a=new Od,s_n(n,e,null),pje(n,e),Z9e(n),H(e,(G(),dun),n.a),n.a=null,Cu(n.b),ce(t)}function Kpe(n,e,t){switch(t.g){case 1:n.a=e.a/2,n.b=0;break;case 2:n.a=e.a,n.b=e.b/2;break;case 3:n.a=e.a/2,n.b=e.b;break;case 4:n.a=0,n.b=e.b/2}}function Hpe(n){var e,t,i;for(i=u(ct(n.a,(Vw(),IS)),15).Kc();i.Ob();)t=u(i.Pb(),101),e=hJ(t),b3(n,t,e[0],(Kd(),w0),0),b3(n,t,e[1],g0,1)}function qpe(n){var e,t,i;for(i=u(ct(n.a,(Vw(),OS)),15).Kc();i.Ob();)t=u(i.Pb(),101),e=hJ(t),b3(n,t,e[0],(Kd(),w0),0),b3(n,t,e[1],g0,1)}function XF(n){switch(n.g){case 0:return null;case 1:return new eOn;case 2:return new oG;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function k7(n,e,t){var i,r;for(lwe(n,e-n.s,t-n.t),r=new E(n.n);r.a1&&(c=_pe(n,e)),c}function VF(n){var e;return n.f&&n.f.kh()&&(e=u(n.f,49),n.f=u(pl(n,e),82),n.f!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,8,e,n.f))),n.f}function QF(n){var e;return n.i&&n.i.kh()&&(e=u(n.i,49),n.i=u(pl(n,e),82),n.i!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,7,e,n.i))),n.i}function ir(n){var e;return n.b&&n.b.Db&64&&(e=n.b,n.b=u(pl(n,e),18),n.b!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,21,e,n.b))),n.b}function KT(n,e){var t,i,r;n.d==null?(++n.e,++n.f):(i=e.Sh(),u8e(n,n.f+1),r=(i&nt)%n.d.length,t=n.d[r],!t&&(t=n.d[r]=n.uj()),t.Fc(e),++n.f)}function nJ(n,e,t){var i;return e.Kj()?!1:e.Zj()!=-2?(i=e.zj(),i==null?t==null:tt(i,t)):e.Hj()==n.e.Tg()&&t==null}function HT(){var n;rs(16,J_n),n=UIn(16),this.b=F(oR,nk,317,n,0,1),this.c=F(oR,nk,317,n,0,1),this.a=null,this.e=null,this.i=0,this.f=n-1,this.g=0}function qh(n){vU.call(this),this.k=(Qn(),ii),this.j=(rs(6,Pb),new Pc(6)),this.b=(rs(2,Pb),new Pc(2)),this.d=new NI,this.f=new Zq,this.a=n}function zpe(n){var e,t;n.c.length<=1||(e=ZNn(n,(J(),ae)),Kxn(n,u(e.a,19).a,u(e.b,19).a),t=ZNn(n,Gn),Kxn(n,u(t.a,19).a,u(t.b,19).a))}function b6(){b6=N,zsn=new V9("SIMPLE",0),nK=new V9(PN,1),eK=new V9("LINEAR_SEGMENTS",2),Lm=new V9("BRANDES_KOEPF",3),Nm=new V9(EHn,4)}function eJ(n,e,t){p2(u(k(e,(nn(),Lt)),98))||(VX(n,e,k1(e,t)),VX(n,e,k1(e,(J(),ae))),VX(n,e,k1(e,Kn)),Pn(),wi(e.j,new i6n(n)))}function tFn(n,e,t,i){var r,c,o;for(r=u(ct(i?n.a:n.b,e),21),o=r.Kc();o.Ob();)if(c=u(o.Pb(),33),aM(n,t,c))return!0;return!1}function JF(n){var e,t;for(t=new ie(n);t.e!=t.i.gc();)if(e=u(oe(t),87),e.e||(!e.d&&(e.d=new Yt(ar,e,1)),e.d).i!=0)return!0;return!1}function YF(n){var e,t;for(t=new ie(n);t.e!=t.i.gc();)if(e=u(oe(t),87),e.e||(!e.d&&(e.d=new Yt(ar,e,1)),e.d).i!=0)return!0;return!1}function Upe(n){var e,t,i;for(e=0,i=new E(n.c.a);i.a102?-1:n<=57?n-48:n<65?-1:n<=70?n-65+10:n<97?-1:n-97+10}function ex(n,e){if(n==null)throw T(new c2("null key in entry: null="+e));if(e==null)throw T(new c2("null value in entry: "+n+"=null"))}function Wpe(n,e){for(var t,i;n.Ob();)if(!e.Ob()||(t=n.Pb(),i=e.Pb(),!(B(t)===B(i)||t!=null&&tt(t,i))))return!1;return!e.Ob()}function rFn(n,e){var t;return t=A(M(Ei,1),pr,25,15,[kF(n.a[0],e),kF(n.a[1],e),kF(n.a[2],e)]),n.d&&(t[0]=y.Math.max(t[0],t[2]),t[2]=t[0]),t}function cFn(n,e){var t;return t=A(M(Ei,1),pr,25,15,[pT(n.a[0],e),pT(n.a[1],e),pT(n.a[2],e)]),n.d&&(t[0]=y.Math.max(t[0],t[2]),t[2]=t[0]),t}function Pa(){Pa=N,f_=new X9("GREEDY",0),Gcn=new X9(fHn,1),h_=new X9(PN,2),Em=new X9("MODEL_ORDER",3),jm=new X9("GREEDY_MODEL_ORDER",4)}function uFn(n,e){var t,i,r;for(n.b[e.g]=1,i=_e(e.d,0);i.b!=i.d.c;)t=u(Re(i),188),r=t.c,n.b[r.g]==1?Ke(n.a,t):n.b[r.g]==2?n.b[r.g]=1:uFn(n,r)}function Xpe(n,e){var t,i,r;for(r=new Pc(e.gc()),i=e.Kc();i.Ob();)t=u(i.Pb(),286),t.c==t.f?l4(n,t,t.c):U5e(n,t)||(r.c[r.c.length]=t);return r}function Vpe(n,e,t){var i,r,c,o,f;for(f=n.r+e,n.r+=e,n.d+=t,i=t/n.n.c.length,r=0,o=new E(n.n);o.ac&&St(e,c,null),e}function f3e(n,e){var t,i;if(i=n.gc(),e==null){for(t=0;t0&&(h+=r),l[a]=o,o+=f*(h+i)}function bFn(n){var e,t,i;for(i=n.f,n.n=F(Ei,pr,25,i,15,1),n.d=F(Ei,pr,25,i,15,1),e=0;e0?n.c:0),++r;n.b=i,n.d=c}function g3e(n,e){var t,i,r,c,o;for(i=0,r=0,t=0,o=new E(e);o.a0?n.g:0),++t;n.c=r,n.d=i}function mFn(n,e){var t;return t=A(M(Ei,1),pr,25,15,[ZQ(n,(_o(),Zr),e),ZQ(n,Fc,e),ZQ(n,nc,e)]),n.f&&(t[0]=y.Math.max(t[0],t[2]),t[2]=t[0]),t}function p3e(n,e,t){var i;try{wM(n,e+n.j,t+n.k,!1,!0)}catch(r){throw r=jt(r),I(r,73)?(i=r,T(new mr(i.g+RM+e+Ji+t+")."))):T(r)}}function v3e(n,e,t){var i;try{wM(n,e+n.j,t+n.k,!0,!1)}catch(r){throw r=jt(r),I(r,73)?(i=r,T(new mr(i.g+RM+e+Ji+t+")."))):T(r)}}function kFn(n){var e;ai(n,(nn(),y0))&&(e=u(k(n,y0),21),e.Hc((jb(),So))?(e.Mc(So),e.Fc(Po)):e.Hc(Po)&&(e.Mc(Po),e.Fc(So)))}function yFn(n){var e;ai(n,(nn(),y0))&&(e=u(k(n,y0),21),e.Hc((jb(),Oo))?(e.Mc(Oo),e.Fc(eo)):e.Hc(eo)&&(e.Mc(eo),e.Fc(Oo)))}function m3e(n,e,t){le(t,"Self-Loop ordering",1),Rt(Vc(gt(gt(qr(new $n(null,new xn(e.b,16)),new P0n),new I0n),new O0n),new D0n),new O5n(n)),ce(t)}function j7(n,e,t,i){var r,c;for(r=e;r0&&(r.b+=e),r}function zT(n,e){var t,i,r;for(r=new Li,i=n.Kc();i.Ob();)t=u(i.Pb(),37),M6(t,0,r.b),r.b+=t.f.b+e,r.a=y.Math.max(r.a,t.f.a);return r.a>0&&(r.a+=e),r}function EFn(n){var e,t,i;for(i=nt,t=new E(n.a);t.a>16==6?n.Cb.ih(n,5,Vo,e):(i=ir(u(On((t=u(Rn(n,16),26),t||n.zh()),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function C3e(n){k3();var e=n.e;if(e&&e.stack){var t=e.stack,i=e+` +`;return t.substring(0,i.length)==i&&(t=t.substring(i.length)),t.split(` +`)}return[]}function T3e(n){var e;return e=(_In(),kzn),e[n>>>28]|e[n>>24&15]<<4|e[n>>20&15]<<8|e[n>>16&15]<<12|e[n>>12&15]<<16|e[n>>8&15]<<20|e[n>>4&15]<<24|e[n&15]<<28}function MFn(n){var e,t,i;n.b==n.c&&(i=n.a.length,t=KV(y.Math.max(8,i))<<1,n.b!=0?(e=bo(n.a,t),XIn(n,e,i),n.a=e,n.b=0):Wmn(n.a,t),n.c=i)}function M3e(n,e){var t;return t=n.b,t.Xe((Xe(),Ru))?t.Hf()==(J(),Gn)?-t.rf().a-K(Y(t.We(Ru))):e+K(Y(t.We(Ru))):t.Hf()==(J(),Gn)?-t.rf().a:e}function E7(n){var e;return n.b.c.length!=0&&u(un(n.b,0),70).a?u(un(n.b,0),70).a:(e=WD(n),e??""+(n.c?xr(n.c.a,n,0):-1))}function UT(n){var e;return n.f.c.length!=0&&u(un(n.f,0),70).a?u(un(n.f,0),70).a:(e=WD(n),e??""+(n.i?xr(n.i.j,n,0):-1))}function A3e(n,e){var t,i;if(e<0||e>=n.gc())return null;for(t=e;t0?n.c:0),r=y.Math.max(r,e.d),++i;n.e=c,n.b=r}function P3e(n){var e,t;if(!n.b)for(n.b=mC(u(n.f,118).Ag().i),t=new ie(u(n.f,118).Ag());t.e!=t.i.gc();)e=u(oe(t),137),W(n.b,new XI(e));return n.b}function I3e(n,e){var t,i,r;if(e.dc())return o3(),o3(),xy;for(t=new Pjn(n,e.gc()),r=new ie(n);r.e!=r.i.gc();)i=oe(r),e.Hc(i)&&me(t,i);return t}function oJ(n,e,t,i){return e==0?i?(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),n.o):(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),N8(n.o)):BT(n,e,t,i)}function fx(n){var e,t;if(n.rb)for(e=0,t=n.rb.i;e>22),r+=i>>22,r<0)?!1:(n.l=t&Nu,n.m=i&Nu,n.h=r&Wh,!0)}function F3e(n,e,t,i,r,c,o){var f,h;return!(e.Ae()&&(h=n.a.ue(t,i),h<0||!r&&h==0)||e.Be()&&(f=n.a.ue(t,c),f>0||!o&&f==0))}function x3e(n,e){V3();var t;if(t=n.j.g-e.j.g,t!=0)return 0;switch(n.j.g){case 2:return DF(e,Lcn)-DF(n,Lcn);case 4:return DF(n,xcn)-DF(e,xcn)}return 0}function L3e(n){switch(n.g){case 0:return a_;case 1:return d_;case 2:return b_;case 3:return w_;case 4:return FS;case 5:return g_;default:return null}}function Tr(n,e,t){var i,r;return i=(r=new _I,Ca(r,e),Ic(r,t),me((!n.c&&(n.c=new V(P0,n,12,10)),n.c),r),r),d1(i,0),hb(i,1),p1(i,!0),g1(i,!0),i}function H2(n,e){var t,i;if(e>=n.i)throw T(new xO(e,n.i));return++n.j,t=n.g[e],i=n.i-e-1,i>0&&gc(n.g,e+1,n.g,e,i),St(n.g,--n.i,null),n.fi(e,t),n.ci(),t}function AFn(n,e){var t,i;return n.Db>>16==17?n.Cb.ih(n,21,ro,e):(i=ir(u(On((t=u(Rn(n,16),26),t||n.zh()),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function N3e(n){var e,t,i,r;for(Pn(),wi(n.c,n.a),r=new E(n.c);r.at.a.c.length))throw T(new Hn("index must be >= 0 and <= layer node count"));n.c&&Jc(n.c.a,n),n.c=t,t&&Q0(t.a,e,n)}function DFn(n,e){var t,i,r;for(i=new re(ue(Kh(n).a.Kc(),new An));Se(i);)return t=u(ve(i),17),r=u(e.Kb(t),10),new Zy(pe(r.n.b+r.o.b/2));return Rv(),Rv(),rR}function $Fn(n,e){this.c=new we,this.a=n,this.b=e,this.d=u(k(n,(G(),Ig)),304),B(k(n,(nn(),ysn)))===B((K8(),xS))?this.e=new h9n:this.e=new f9n}function q3e(n,e){var t,i,r,c;for(c=0,i=new E(n);i.a>16==6?n.Cb.ih(n,6,bi,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Dc(),XP)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function bJ(n,e){var t,i;return n.Db>>16==7?n.Cb.ih(n,1,Iy,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Dc(),e1n)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function wJ(n,e){var t,i;return n.Db>>16==9?n.Cb.ih(n,9,Ot,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Dc(),i1n)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function xFn(n,e){var t,i;return n.Db>>16==5?n.Cb.ih(n,9,iI,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Sn(),L1)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function gJ(n,e){var t,i;return n.Db>>16==3?n.Cb.ih(n,0,Dy,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Sn(),x1)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function LFn(n,e){var t,i;return n.Db>>16==7?n.Cb.ih(n,6,Vo,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Sn(),B1)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function NFn(){this.a=new q2n,this.g=new HT,this.j=new HT,this.b=new we,this.d=new HT,this.i=new HT,this.k=new we,this.c=new we,this.e=new we,this.f=new we}function W3e(n,e,t){var i,r,c;for(t<0&&(t=0),c=n.i,r=t;rJL)return u4(n,i);if(i==n)return!0}}return!1}function V3e(n){switch(dE(),n.q.g){case 5:yLn(n,(J(),Kn)),yLn(n,ae);break;case 4:gNn(n,(J(),Kn)),gNn(n,ae);break;default:g_n(n,(J(),Kn)),g_n(n,ae)}}function Q3e(n){switch(dE(),n.q.g){case 5:LLn(n,(J(),Vn)),LLn(n,Gn);break;case 4:W$n(n,(J(),Vn)),W$n(n,Gn);break;default:p_n(n,(J(),Vn)),p_n(n,Gn)}}function J3e(n){var e,t;e=u(k(n,(Go(),eWn)),19),e?(t=e.a,t==0?H(n,(dl(),cS),new OF):H(n,(dl(),cS),new EC(t))):H(n,(dl(),cS),new EC(1))}function Y3e(n,e){var t;switch(t=n.i,e.g){case 1:return-(n.n.b+n.o.b);case 2:return n.n.a-t.o.a;case 3:return n.n.b-t.o.b;case 4:return-(n.n.a+n.o.a)}return 0}function Z3e(n,e){switch(n.g){case 0:return e==(Ss(),xl)?TS:MS;case 1:return e==(Ss(),xl)?TS:Hk;case 2:return e==(Ss(),xl)?Hk:MS;default:return Hk}}function T7(n,e){var t,i,r;for(Jc(n.a,e),n.e-=e.r+(n.a.c.length==0?0:n.c),r=ttn,i=new E(n.a);i.a>16==3?n.Cb.ih(n,12,Ot,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Dc(),n1n)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function vJ(n,e){var t,i;return n.Db>>16==11?n.Cb.ih(n,10,Ot,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Dc(),t1n)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function BFn(n,e){var t,i;return n.Db>>16==10?n.Cb.ih(n,11,ro,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Sn(),N1)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function RFn(n,e){var t,i;return n.Db>>16==10?n.Cb.ih(n,12,co,e):(i=ir(u(On((t=u(Rn(n,16),26),t||(Sn(),lw)),n.Db>>16),18)),n.Cb.ih(n,i.n,i.f,e))}function qs(n){var e;return!(n.Bb&1)&&n.r&&n.r.kh()&&(e=u(n.r,49),n.r=u(pl(n,e),138),n.r!=e&&n.Db&4&&!(n.Db&1)&&et(n,new gi(n,9,8,e,n.r))),n.r}function lx(n,e,t){var i;return i=A(M(Ei,1),pr,25,15,[qJ(n,(_o(),Zr),e,t),qJ(n,Fc,e,t),qJ(n,nc,e,t)]),n.f&&(i[0]=y.Math.max(i[0],i[2]),i[2]=i[0]),i}function n4e(n,e){var t,i,r;if(r=Xpe(n,e),r.c.length!=0)for(wi(r,new e0n),t=r.c.length,i=0;i>19,l=e.h>>19,h!=l?l-h:(r=n.h,f=e.h,r!=f?r-f:(i=n.m,o=e.m,i!=o?i-o:(t=n.l,c=e.l,t-c)))}function WT(){WT=N,urn=(dM(),ER),crn=new In(snn,urn),rrn=(RC(),jR),irn=new In(onn,rrn),trn=($T(),yR),ern=new In(fnn,trn),nrn=new In(hnn,(qn(),!0))}function g6(n,e,t){var i,r;i=e*t,I(n.g,145)?(r=S2(n),r.f.d?r.f.a||(n.d.a+=i+wf):(n.d.d-=i+wf,n.d.a+=i+wf)):I(n.g,10)&&(n.d.d-=i,n.d.a+=2*i)}function _Fn(n,e,t){var i,r,c,o,f;for(r=n[t.g],f=new E(e.d);f.a0?n.g:0),++t;e.b=i,e.e=r}function KFn(n){var e,t,i;if(i=n.b,f7n(n.i,i.length)){for(t=i.length*2,n.b=F(oR,nk,317,t,0,1),n.c=F(oR,nk,317,t,0,1),n.f=t-1,n.i=0,e=n.a;e;e=e.c)D7(n,e,e);++n.g}}function o4e(n,e,t,i){var r,c,o,f;for(r=0;ro&&(f=o/i),r>c&&(h=c/r),Of(n,y.Math.min(f,h)),n}function h4e(){mM();var n,e;try{if(e=u(PJ((Z1(),uo),_4),2014),e)return e}catch(t){if(t=jt(t),I(t,102))n=t,gW((je(),n));else throw T(t)}return new R2n}function l4e(){DPn();var n,e;try{if(e=u(PJ((Z1(),uo),Ka),2024),e)return e}catch(t){if(t=jt(t),I(t,102))n=t,gW((je(),n));else throw T(t)}return new r3n}function a4e(){mM();var n,e;try{if(e=u(PJ((Z1(),uo),Vs),1941),e)return e}catch(t){if(t=jt(t),I(t,102))n=t,gW((je(),n));else throw T(t)}return new lpn}function d4e(n,e,t){var i,r;return r=n.e,n.e=e,n.Db&4&&!(n.Db&1)&&(i=new gi(n,1,4,r,e),t?t.Ei(i):t=i),r!=e&&(e?t=j4(n,uM(n,e),t):t=j4(n,n.a,t)),t}function HFn(){Tj.call(this),this.e=-1,this.a=!1,this.p=Bi,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=Bi}function b4e(n,e){var t,i,r;if(i=n.b.d.d,n.a||(i+=n.b.d.a),r=e.b.d.d,e.a||(r+=e.b.d.a),t=ni(i,r),t==0){if(!n.a&&e.a)return-1;if(!e.a&&n.a)return 1}return t}function w4e(n,e){var t,i,r;if(i=n.b.b.d,n.a||(i+=n.b.b.a),r=e.b.b.d,e.a||(r+=e.b.b.a),t=ni(i,r),t==0){if(!n.a&&e.a)return-1;if(!e.a&&n.a)return 1}return t}function g4e(n,e){var t,i,r;if(i=n.b.g.d,n.a||(i+=n.b.g.a),r=e.b.g.d,e.a||(r+=e.b.g.a),t=ni(i,r),t==0){if(!n.a&&e.a)return-1;if(!e.a&&n.a)return 1}return t}function kJ(){kJ=N,wWn=Eu(Ze(Ze(Ze(new li,(Qi(),Cc),(rr(),ycn)),Cc,jcn),Or,Ecn),Or,hcn),pWn=Ze(Ze(new li,Cc,icn),Cc,lcn),gWn=Eu(new li,Or,dcn)}function p4e(n){var e,t,i,r,c;for(e=u(k(n,(G(),Am)),83),c=n.n,i=e.Cc().Kc();i.Ob();)t=u(i.Pb(),306),r=t.i,r.c+=c.a,r.d+=c.b,t.c?rBn(t):cBn(t);H(n,Am,null)}function v4e(n,e,t){var i,r;switch(r=n.b,i=r.d,e.g){case 1:return-i.d-t;case 2:return r.o.a+i.c+t;case 3:return r.o.b+i.a+t;case 4:return-i.b-t;default:return-1}}function m4e(n){var e,t,i,r,c;if(i=0,r=D4,n.b)for(e=0;e<360;e++)t=e*.017453292519943295,hZ(n,n.d,0,0,ag,t),c=n.b.ig(n.d),c0&&(o=(c&nt)%n.d.length,r=kY(n,o,c,e),r)?(f=r.ed(t),f):(i=n.tj(c,e,t),n.c.Fc(i),null)}function EJ(n,e){var t,i,r,c;switch(w1(n,e)._k()){case 3:case 2:{for(t=ig(e),r=0,c=t.i;r=0;i--)if(Mn(n[i].d,e)||Mn(n[i].d,t)){n.length>=i+1&&n.splice(0,i+1);break}return n}function M7(n,e){var t;return Fr(n)&&Fr(e)&&(t=n/e,ik0&&(n.b+=2,n.a+=i):(n.b+=1,n.a+=y.Math.min(i,r))}function VFn(n,e){var t,i;if(i=!1,ki(e)&&(i=!0,j2(n,new Z0(Ce(e)))),i||I(e,236)&&(i=!0,j2(n,(t=PU(u(e,236)),new nj(t)))),!i)throw T(new UI(Btn))}function N4e(n,e,t,i){var r,c,o;return r=new Lh(n.e,1,10,(o=e.c,I(o,88)?u(o,26):(Sn(),so)),(c=t.c,I(c,88)?u(c,26):(Sn(),so)),v1(n,e),!1),i?i.Ei(r):i=r,i}function MJ(n){var e,t;switch(u(k(Gi(n),(nn(),dsn)),420).g){case 0:return e=n.n,t=n.o,new fn(e.a+t.a/2,e.b+t.b/2);case 1:return new kr(n.n);default:return null}}function A7(){A7=N,LS=new c5(Xh,0),Ycn=new c5("LEFTUP",1),nun=new c5("RIGHTUP",2),Jcn=new c5("LEFTDOWN",3),Zcn=new c5("RIGHTDOWN",4),p_=new c5("BALANCED",5)}function B4e(n,e,t){var i,r,c;if(i=ni(n.a[e.p],n.a[t.p]),i==0){if(r=u(k(e,(G(),gp)),15),c=u(k(t,gp),15),r.Hc(t))return-1;if(c.Hc(e))return 1}return i}function R4e(n){switch(n.g){case 1:return new Ogn;case 2:return new Dgn;case 3:return new Ign;case 0:return null;default:throw T(new Hn(lB+(n.f!=null?n.f:""+n.g)))}}function AJ(n,e,t){switch(e){case 1:!n.n&&(n.n=new V(Rr,n,1,7)),de(n.n),!n.n&&(n.n=new V(Rr,n,1,7)),Dt(n.n,u(t,14));return;case 2:Q5(n,Ce(t));return}WV(n,e,t)}function SJ(n,e,t){switch(e){case 3:Bd(n,K(Y(t)));return;case 4:Rd(n,K(Y(t)));return;case 5:nu(n,K(Y(t)));return;case 6:eu(n,K(Y(t)));return}AJ(n,e,t)}function VT(n,e,t){var i,r,c;c=(i=new _I,i),r=df(c,e,null),r&&r.Fi(),Ic(c,t),me((!n.c&&(n.c=new V(P0,n,12,10)),n.c),c),d1(c,0),hb(c,1),p1(c,!0),g1(c,!0)}function PJ(n,e){var t,i,r;return t=n5(n.g,e),I(t,235)?(r=u(t,235),r.Qh()==null,r.Nh()):I(t,498)?(i=u(t,1938),r=i.b,r):null}function _4e(n,e,t,i){var r,c;return pe(e),pe(t),c=u(M5(n.d,e),19),NPn(!!c,"Row %s not in %s",e,n.e),r=u(M5(n.b,t),19),NPn(!!r,"Column %s not in %s",t,n.c),HOn(n,c.a,r.a,i)}function QFn(n,e,t,i,r,c,o){var f,h,l,a,d;if(a=r[c],l=c==o-1,f=l?i:0,d=pFn(f,a),i!=10&&A(M(n,o-c),e[c],t[c],f,d),!l)for(++c,h=0;h1||f==-1?(c=u(h,15),r.Wb(W2e(n,c))):r.Wb(Zx(n,u(h,56)))))}function W4e(n,e,t,i){N8n();var r=iR;function c(){for(var o=0;ooB)return t;r>-1e-6&&++t}return t}function DJ(n,e){var t;e!=n.b?(t=null,n.b&&(t=sC(n.b,n,-4,t)),e&&(t=_2(e,n,-4,t)),t=DDn(n,e,t),t&&t.Fi()):n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,3,e,e))}function ZFn(n,e){var t;e!=n.f?(t=null,n.f&&(t=sC(n.f,n,-1,t)),e&&(t=_2(e,n,-1,t)),t=$Dn(n,e,t),t&&t.Fi()):n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,0,e,e))}function nxn(n){var e,t,i;if(n==null)return null;if(t=u(n,15),t.dc())return"";for(i=new i1,e=t.Kc();e.Ob();)dr(i,(ht(),Ce(e.Pb()))),i.a+=" ";return NO(i,i.a.length-1)}function exn(n){var e,t,i;if(n==null)return null;if(t=u(n,15),t.dc())return"";for(i=new i1,e=t.Kc();e.Ob();)dr(i,(ht(),Ce(e.Pb()))),i.a+=" ";return NO(i,i.a.length-1)}function eve(n,e,t){var i,r;return i=n.c[e.c.p][e.p],r=n.c[t.c.p][t.p],i.a!=null&&r.a!=null?TD(i.a,r.a):i.a!=null?-1:r.a!=null?1:0}function tve(n,e){var t,i,r,c,o,f;if(e)for(c=e.a.length,t=new fa(c),f=(t.b-t.a)*t.c<0?(nl(),Jl):new rl(t);f.Ob();)o=u(f.Pb(),19),r=j3(e,o.a),i=new tmn(n),zhe(i.a,r)}function ive(n,e){var t,i,r,c,o,f;if(e)for(c=e.a.length,t=new fa(c),f=(t.b-t.a)*t.c<0?(nl(),Jl):new rl(t);f.Ob();)o=u(f.Pb(),19),r=j3(e,o.a),i=new W6n(n),Ghe(i.a,r)}function rve(n){var e;if(n!=null&&n.length>0&&Di(n,n.length-1)==33)try{return e=Yxn(Zu(n,0,n.length-1)),e.e==null}catch(t){if(t=jt(t),!I(t,32))throw T(t)}return!1}function txn(n,e,t){var i,r,c;return i=e.ak(),c=e.dd(),r=i.$j()?hl(n,3,i,null,c,m4(n,i,c,I(i,99)&&(u(i,18).Bb&Yi)!=0),!0):hl(n,1,i,i.zj(),c,-1,!0),t?t.Ei(r):t=r,t}function cve(){var n,e,t;for(e=0,n=0;n<1;n++){if(t=CY((Te(n,1),"X".charCodeAt(n))),t==0)throw T(new Ee("Unknown Option: "+"X".substr(n)));e|=t}return e}function uve(n,e,t){var i,r,c;switch(i=Gi(e),r=jT(i),c=new wc,Hr(c,e),t.g){case 1:si(c,b7(B2(r)));break;case 2:si(c,B2(r))}return H(c,(nn(),Jb),Y(k(n,Jb))),c}function $J(n){var e,t;return e=u(ve(new re(ue(Lr(n.a).a.Kc(),new An))),17),t=u(ve(new re(ue(ei(n.a).a.Kc(),new An))),17),on(sn(k(e,(G(),kf))))||on(sn(k(t,kf)))}function Vw(){Vw=N,SS=new W9("ONE_SIDE",0),IS=new W9("TWO_SIDES_CORNER",1),OS=new W9("TWO_SIDES_OPPOSING",2),PS=new W9("THREE_SIDES",3),AS=new W9("FOUR_SIDES",4)}function wx(n,e,t,i,r){var c,o;c=u(ts(gt(e.Oc(),new Jbn),ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[(lf(),ls)]))),15),o=u(ma(n.b,t,i),15),r==0?o.Wc(0,c):o.Gc(c)}function sve(n,e){var t,i,r,c,o;for(c=new E(e.a);c.a0&&SFn(this,this.c-1,(J(),Vn)),this.c0&&n[0].length>0&&(this.c=on(sn(k(Gi(n[0][0]),(G(),wun))))),this.a=F(cJn,q,2018,n.length,0,2),this.b=F(uJn,q,2019,n.length,0,2),this.d=new TDn}function ave(n){return n.c.length==0?!1:(Ln(0,n.c.length),u(n.c[0],17)).c.i.k==(Qn(),pi)?!0:C3(Vc(new $n(null,new xn(n,16)),new Iwn),new Own)}function dve(n,e,t){return le(t,"Tree layout",1),pC(n.b),rh(n.b,(c4(),gP),gP),rh(n.b,qm,qm),rh(n.b,uy,uy),rh(n.b,Gm,Gm),n.a=EM(n.b,e),H8e(n,e,kc(t,1)),ce(t),e}function rxn(n,e){var t,i,r,c,o,f,h;for(f=Cb(e),c=e.f,h=e.g,o=y.Math.sqrt(c*c+h*h),r=0,i=new E(f);i.a=0?(t=M7(n,$M),i=p7(n,$M)):(e=J0(n,1),t=M7(e,5e8),i=p7(e,5e8),i=qi(Ih(i,1),ui(n,1))),cf(Ih(i,32),ui(t,fr))}function sxn(n,e,t){var i,r;switch(i=(ne(e.b!=0),u(Ts(e,e.a.a),8)),t.g){case 0:i.b=0;break;case 2:i.b=n.f;break;case 3:i.a=0;break;default:i.a=n.g}return r=_e(e,0),y8(r,i),e}function oxn(n,e,t,i){var r,c,o,f,h;switch(h=n.b,c=e.d,o=c.j,f=WQ(o,h.d[o.g],t),r=st(Qr(c.n),c.a),c.j.g){case 1:case 3:f.a+=r.a;break;case 2:case 4:f.b+=r.b}Kt(i,f,i.c.b,i.c)}function Tve(n,e,t){var i,r,c,o;for(o=xr(n.e,e,0),c=new Jq,c.b=t,i=new Pi(n.e,o);i.b1;e>>=1)e&1&&(i=Fw(i,t)),t.d==1?t=Fw(t,t):t=new D$n(KBn(t.a,t.d,F(be,Le,25,t.d<<1,15,1)));return i=Fw(i,t),i}function _J(){_J=N;var n,e,t,i;for(Kin=F(Ei,pr,25,25,15,1),Hin=F(Ei,pr,25,33,15,1),i=152587890625e-16,e=32;e>=0;e--)Hin[e]=i,i*=.5;for(t=1,n=24;n>=0;n--)Kin[n]=t,t*=.5}function Ove(n){var e,t;if(on(sn(hn(n,(nn(),Qb))))){for(t=new re(ue(Gh(n).a.Kc(),new An));Se(t);)if(e=u(ve(t),79),Jd(e)&&on(sn(hn(e,Wa))))return!0}return!1}function fxn(n,e){var t,i,r;ci(n.f,e)&&(e.b=n,i=e.c,xr(n.j,i,0)!=-1||W(n.j,i),r=e.d,xr(n.j,r,0)!=-1||W(n.j,r),t=e.a.b,t.c.length!=0&&(!n.i&&(n.i=new K$n(n)),Wbe(n.i,t)))}function Dve(n){var e,t,i,r,c;return t=n.c.d,i=t.j,r=n.d.d,c=r.j,i==c?t.p=0&&Mn(n.substr(e,3),"GMT")||e>=0&&Mn(n.substr(e,3),"UTC"))&&(t[0]=e+3),dZ(n,t,i)}function Fve(n,e){var t,i,r,c,o;for(c=n.g.a,o=n.g.b,i=new E(n.d);i.at;c--)n[c]|=e[c-t-1]>>>o,n[c-1]=e[c-t-1]<=n.f)break;c.c[c.c.length]=t}return c}function HJ(n){var e,t,i,r;for(e=null,r=new E(n.wf());r.a0&&gc(n.g,e,n.g,e+i,f),o=t.Kc(),n.i+=i,r=0;rc&&Qfe(l,cIn(t[f],Rin))&&(r=f,c=h);return r>=0&&(i[0]=e+c),r}function Kve(n,e){var t;if(t=tyn(n.b.Hf(),e.b.Hf()),t!=0)return t;switch(n.b.Hf().g){case 1:case 2:return Wc(n.b.sf(),e.b.sf());case 3:case 4:return Wc(e.b.sf(),n.b.sf())}return 0}function Hve(n){var e,t,i;for(i=n.e.c.length,n.a=oa(be,[q,Le],[48,25],15,[i,i],2),t=new E(n.c);t.a>4&15,c=n[i]&15,o[r++]=r1n[t],o[r++]=r1n[c];return Hs(o,0,o.length)}function zve(n,e,t){var i,r,c;return i=e.ak(),c=e.dd(),r=i.$j()?hl(n,4,i,c,null,m4(n,i,c,I(i,99)&&(u(i,18).Bb&Yi)!=0),!0):hl(n,i.Kj()?2:1,i,c,i.zj(),-1,!0),t?t.Ei(r):t=r,t}function iu(n){var e,t;return n>=Yi?(e=rk+(n-Yi>>10&1023)&Ut,t=56320+(n-Yi&1023)&Ut,String.fromCharCode(e)+(""+String.fromCharCode(t))):String.fromCharCode(n&Ut)}function Uve(n,e){W0();var t,i,r,c;return r=u(u(ct(n.r,e),21),84),r.gc()>=2?(i=u(r.Kc().Pb(),111),t=n.u.Hc((Mu(),s9)),c=n.u.Hc(Pp),!i.a&&!t&&(r.gc()==2||c)):!1}function axn(n,e,t,i,r){var c,o,f;for(c=VNn(n,e,t,i,r),f=!1;!c;)rM(n,r,!0),f=!0,c=VNn(n,e,t,i,r);f&&rM(n,r,!1),o=rF(r),o.c.length!=0&&(n.d&&n.d.lg(o),axn(n,r,t,i,o))}function ZT(){ZT=N,uH=new l5(Xh,0),Dhn=new l5("DIRECTED",1),Fhn=new l5("UNDIRECTED",2),Ihn=new l5("ASSOCIATION",3),$hn=new l5("GENERALIZATION",4),Ohn=new l5("DEPENDENCY",5)}function Wve(n,e){var t;if(!ef(n))throw T(new $r(sqn));switch(t=ef(n),e.g){case 1:return-(n.j+n.f);case 2:return n.i-t.g;case 3:return n.j-t.f;case 4:return-(n.i+n.g)}return 0}function f4(n,e){var t,i;for(_n(e),i=n.b.c.length,W(n.b,e);i>0;){if(t=i,i=(i-1)/2|0,n.a.ue(un(n.b,i),e)<=0)return Es(n.b,t,e),!0;Es(n.b,t,un(n.b,i))}return Es(n.b,i,e),!0}function qJ(n,e,t,i){var r,c;if(r=0,t)r=pT(n.a[t.g][e.g],i);else for(c=0;c=f)}function GJ(n,e,t,i){var r;if(r=!1,ki(i)&&(r=!0,l3(e,t,Ce(i))),r||q0(i)&&(r=!0,GJ(n,e,t,i)),r||I(i,236)&&(r=!0,la(e,t,u(i,236))),!r)throw T(new UI(Btn))}function Vve(n,e){var t,i,r;if(t=e.Hh(n.a),t&&(r=Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),Xs),r!=null)){for(i=1;i<(gu(),S1n).length;++i)if(Mn(S1n[i],r))return i}return 0}function Qve(n,e){var t,i,r;if(t=e.Hh(n.a),t&&(r=Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),Xs),r!=null)){for(i=1;i<(gu(),P1n).length;++i)if(Mn(P1n[i],r))return i}return 0}function dxn(n,e){var t,i,r,c;if(_n(e),c=n.a.gc(),c0?1:0;c.a[r]!=t;)c=c.a[r],r=n.a.ue(t.d,c.d)>0?1:0;c.a[r]=i,i.b=t.b,i.a[0]=t.a[0],i.a[1]=t.a[1],t.a[0]=null,t.a[1]=null}function Zve(n){Mu();var e,t;return e=pt(n1,A(M(qP,1),z,273,0,[Gl])),!(Z8(hC(e,n))>1||(t=pt(s9,A(M(qP,1),z,273,0,[u9,Pp])),Z8(hC(t,n))>1))}function UJ(n,e){var t;t=vc((Z1(),uo),n),I(t,498)?yr(uo,n,new Dkn(this,e)):yr(uo,n,this),jx(this,e),e==(Qp(),g1n)?(this.wb=u(this,1939),u(e,1941)):this.wb=(ol(),Nn)}function n5e(n){var e,t,i;if(n==null)return null;for(e=null,t=0;t=j1?"error":i>=900?"warn":i>=800?"info":"log"),ZCn(t,n.a),n.b&&UY(e,t,n.b,"Exception: ",!0))}function k(n,e){var t,i;return i=(!n.q&&(n.q=new we),te(n.q,e)),i??(t=e.wg(),I(t,4)&&(t==null?(!n.q&&(n.q=new we),O2(n.q,e)):(!n.q&&(n.q=new we),it(n.q,e,t))),t)}function Qi(){Qi=N,Qf=new U9("P1_CYCLE_BREAKING",0),$l=new U9("P2_LAYERING",1),Hc=new U9("P3_NODE_ORDERING",2),Cc=new U9("P4_NODE_PLACEMENT",3),Or=new U9("P5_EDGE_ROUTING",4)}function pxn(n,e){var t,i,r,c,o;for(r=e==1?KR:_R,i=r.a.ec().Kc();i.Ob();)for(t=u(i.Pb(),103),o=u(ct(n.f.c,t),21).Kc();o.Ob();)c=u(o.Pb(),46),Jc(n.b.b,c.b),Jc(n.b.a,u(c.b,81).d)}function e5e(n,e){X5();var t;if(n.c==e.c){if(n.b==e.b||Mbe(n.b,e.b)){if(t=xre(n.b)?1:-1,n.a&&!e.a)return t;if(!n.a&&e.a)return-t}return Wc(n.b.g,e.b.g)}else return ni(n.c,e.c)}function t5e(n,e){var t;le(e,"Hierarchical port position processing",1),t=n.b,t.c.length>0&&LBn((Ln(0,t.c.length),u(t.c[0],29)),n),t.c.length>1&&LBn(u(un(t,t.c.length-1),29),n),ce(e)}function vxn(n,e){var t,i,r;if(XJ(n,e))return!0;for(i=new E(e);i.a=r||e<0)throw T(new mr(NB+e+Ra+r));if(t>=r||t<0)throw T(new mr(BB+t+Ra+r));return e!=t?i=(c=n.Ti(t),n.Hi(e,c),c):i=n.Oi(t),i}function yxn(n){var e,t,i;if(i=n,n)for(e=0,t=n.Ug();t;t=t.Ug()){if(++e>JL)return yxn(t);if(i=t,t==n)throw T(new $r("There is a cycle in the containment hierarchy of "+n))}return i}function kl(n){var e,t,i;for(i=new ka(Ji,"[","]"),t=n.Kc();t.Ob();)e=t.Pb(),xh(i,B(e)===B(n)?"(this Collection)":e==null?ru:Nr(e));return i.a?i.e.length==0?i.a.a:i.a.a+(""+i.e):i.c}function XJ(n,e){var t,i;if(i=!1,e.gc()<2)return!1;for(t=0;ti&&(Te(e-1,n.length),n.charCodeAt(e-1)<=32);)--e;return i>0||e1&&(n.j.b+=n.e)):(n.j.a+=t.a,n.j.b=y.Math.max(n.j.b,t.b),n.d.c.length>1&&(n.j.a+=n.e))}function yl(){yl=N,eXn=A(M(Zi,1),hc,61,0,[(J(),Kn),Vn,ae]),nXn=A(M(Zi,1),hc,61,0,[Vn,ae,Gn]),tXn=A(M(Zi,1),hc,61,0,[ae,Gn,Kn]),iXn=A(M(Zi,1),hc,61,0,[Gn,Kn,Vn])}function r5e(n,e,t,i){var r,c,o,f,h,l,a;if(o=n.c.d,f=n.d.d,o.j!=f.j)for(a=n.b,r=o.j,h=null;r!=f.j;)h=e==0?yT(r):pQ(r),c=WQ(r,a.d[r.g],t),l=WQ(h,a.d[h.g],t),Ke(i,st(c,l)),r=h}function c5e(n,e,t,i){var r,c,o,f,h;return o=PFn(n.a,e,t),f=u(o.a,19).a,c=u(o.b,19).a,i&&(h=u(k(e,(G(),Au)),10),r=u(k(t,Au),10),h&&r&&(xAn(n.b,h,r),f+=n.b.i,c+=n.b.e)),f>c}function Exn(n){var e,t,i,r,c,o,f,h,l;for(this.a=Y$n(n),this.b=new X,t=n,i=0,r=t.length;iZO(n.d).c?(n.i+=n.g.c,BF(n.d)):ZO(n.d).c>ZO(n.g).c?(n.e+=n.d.c,BF(n.g)):(n.i+=nCn(n.g),n.e+=nCn(n.d),BF(n.g),BF(n.d))}function o5e(n,e,t){var i,r,c,o;for(c=e.q,o=e.r,new aa((No(),Bl),e,c,1),new aa(Bl,c,o,1),r=new E(t);r.af&&(h=f/i),r>c&&(l=c/r),o=y.Math.min(h,l),n.a+=o*(e.a-n.a),n.b+=o*(e.b-n.b)}function a5e(n,e,t,i,r){var c,o;for(o=!1,c=u(un(t.b,0),33);Aye(n,e,c,i,r)&&(o=!0,z4e(t,c),t.b.c.length!=0);)c=u(un(t.b,0),33);return t.b.c.length==0&&T7(t.j,t),o&>(e.q),o}function d5e(n,e){eg();var t,i,r,c;if(e.b<2)return!1;for(c=_e(e,0),t=u(Re(c),8),i=t;c.b!=c.d.c;){if(r=u(Re(c),8),Kx(n,i,r))return!0;i=r}return!!Kx(n,i,t)}function QJ(n,e,t,i){var r,c;return t==0?(!n.o&&(n.o=new Xu((Dc(),Ul),S0,n,0)),yE(n.o,e,i)):(c=u(On((r=u(Rn(n,16),26),r||n.zh()),t),66),c.Nj().Rj(n,Rc(n),t-ee(n.zh()),e,i))}function jx(n,e){var t;e!=n.sb?(t=null,n.sb&&(t=u(n.sb,49).ih(n,1,h9,t)),e&&(t=u(e,49).gh(n,1,h9,t)),t=hQ(n,e,t),t&&t.Fi()):n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,4,e,e))}function b5e(n,e){var t,i,r,c;if(e)r=Bh(e,"x"),t=new Z6n(n),D3(t.a,(_n(r),r)),c=Bh(e,"y"),i=new nmn(n),F3(i.a,(_n(c),c));else throw T(new Sf("All edge sections need an end point."))}function w5e(n,e){var t,i,r,c;if(e)r=Bh(e,"x"),t=new Q6n(n),$3(t.a,(_n(r),r)),c=Bh(e,"y"),i=new J6n(n),x3(i.a,(_n(c),c));else throw T(new Sf("All edge sections need a start point."))}function g5e(n,e){var t,i,r,c,o,f,h;for(i=fDn(n),c=0,f=i.length;c>22-e,r=n.h<>22-e):e<44?(t=0,i=n.l<>44-e):(t=0,i=0,r=n.l<n)throw T(new Hn("k must be smaller than n"));return e==0||e==n?1:n==0?0:CJ(n)/(CJ(e)*CJ(n-e))}function JJ(n,e){var t,i,r,c;for(t=new kz(n);t.g==null&&!t.c?ZW(t):t.g==null||t.i!=0&&u(t.g[t.i-1],47).Ob();)if(c=u(cM(t),56),I(c,160))for(i=u(c,160),r=0;r>4],e[t*2+1]=oI[c&15];return Hs(e,0,e.length)}function $5e(n){QE();var e,t,i;switch(i=n.c.length,i){case 0:return fzn;case 1:return e=u(dLn(new E(n)),42),ife(e.cd(),e.dd());default:return t=u(af(n,F(Ha,OM,42,n.c.length,0,1)),165),new GI(t)}}function F5e(n){var e,t,i,r,c,o;for(e=new gw,t=new gw,ll(e,n),ll(t,n);t.b!=t.c;)for(r=u(y2(t),37),o=new E(r.a);o.a0&&H7(n,t,e),r):gme(n,e,t)}function Oxn(n,e,t){var i,r,c,o;if(e.b!=0){for(i=new Tt,o=_e(e,0);o.b!=o.d.c;)c=u(Re(o),86),Vi(i,$V(c)),r=c.e,r.a=u(k(c,(cc(),mK)),19).a,r.b=u(k(c,pon),19).a;Oxn(n,i,kc(t,i.b/n.a|0))}}function Dxn(n,e){var t,i,r,c,o;if(n.e<=e||Hle(n,n.g,e))return n.g;for(c=n.r,i=n.g,o=n.r,r=(c-i)/2+i;i+11&&(n.e.b+=n.a)):(n.e.a+=t.a,n.e.b=y.Math.max(n.e.b,t.b),n.d.c.length>1&&(n.e.a+=n.a))}function R5e(n){var e,t,i,r;switch(r=n.i,e=r.b,i=r.j,t=r.g,r.a.g){case 0:t.a=(n.g.b.o.a-i.a)/2;break;case 1:t.a=e.d.n.a+e.d.a.a;break;case 2:t.a=e.d.n.a+e.d.a.a-i.a;break;case 3:t.b=e.d.n.b+e.d.a.b}}function $xn(n,e,t,i,r){if(ii&&(n.a=i),n.br&&(n.b=r),n}function _5e(n){if(I(n,149))return w8e(u(n,149));if(I(n,229))return a2e(u(n,229));if(I(n,23))return m5e(u(n,23));throw T(new Hn(Rtn+kl(new Hu(A(M(Zn,1),rn,1,5,[n])))))}function K5e(n,e,t,i,r){var c,o,f;for(c=!0,o=0;o>>r|t[o+i+1]<>>r,++o}return c}function eY(n,e,t,i){var r,c,o;if(e.k==(Qn(),pi)){for(c=new re(ue(Lr(e).a.Kc(),new An));Se(c);)if(r=u(ve(c),17),o=r.c.i.k,o==pi&&n.c.a[r.c.i.c.p]==i&&n.c.a[e.c.p]==t)return!0}return!1}function H5e(n,e){var t,i,r,c;return e&=63,t=n.h&Wh,e<22?(c=t>>>e,r=n.m>>e|t<<22-e,i=n.l>>e|n.m<<22-e):e<44?(c=0,r=t>>>e-22,i=n.m>>e-22|n.h<<44-e):(c=0,r=0,i=t>>>e-44),Bc(i&Nu,r&Nu,c&Wh)}function Fxn(n,e,t,i){var r;this.b=i,this.e=n==(_d(),_m),r=e[t],this.d=oa(Ku,[q,gh],[177,25],16,[r.length,r.length],2),this.a=oa(be,[q,Le],[48,25],15,[r.length,r.length],2),this.c=new NJ(e,t)}function q5e(n){var e,t,i;for(n.k=new iX((J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])).length,n.j.c.length),i=new E(n.j);i.a=t)return l4(n,e,i.p),!0;return!1}function Lxn(n){var e;return n.Db&64?Ex(n):(e=new Yu(Stn),!n.a||De(De((e.a+=' "',e),n.a),'"'),De(dd(De(dd(De(dd(De(dd((e.a+=" (",e),n.i),","),n.j)," | "),n.g),","),n.f),")"),e.a)}function Nxn(n,e,t){var i,r,c,o,f;for(f=Kc(n.e.Tg(),e),r=u(n.g,119),i=0,o=0;ot?fY(n,t,"start index"):e<0||e>t?fY(e,t,"end index"):T6("end index (%s) must not be less than start index (%s)",A(M(Zn,1),rn,1,5,[Q(e),Q(n)]))}function Rxn(n,e){var t,i,r,c;for(i=0,r=n.length;i0&&_xn(n,c,t));e.p=0}function bn(n){var e;this.c=new Tt,this.f=n.e,this.e=n.d,this.i=n.g,this.d=n.c,this.b=n.b,this.k=n.j,this.a=n.a,n.i?this.j=n.i:this.j=(e=u(xo($1),9),new ks(e,u(bo(e,e.length),9),0)),this.g=n.f}function V5e(n){var e,t,i,r;for(e=sl(De(new Yu("Predicates."),"and"),40),t=!0,r=new $v(n);r.b0?f[o-1]:F(mh,E1,10,0,0,1),r=f[o],l=o=0?n.Bh(r):bY(n,i);else throw T(new Hn(Pl+i.ne()+em));else throw T(new Hn(vqn+e+mqn));else As(n,t,i)}function tY(n){var e,t;if(t=null,e=!1,I(n,204)&&(e=!0,t=u(n,204).a),e||I(n,258)&&(e=!0,t=""+u(n,258).a),e||I(n,483)&&(e=!0,t=""+u(n,483).a),!e)throw T(new UI(Btn));return t}function Gxn(n,e){var t,i;if(n.f){for(;e.Ob();)if(t=u(e.Pb(),72),i=t.ak(),I(i,99)&&u(i,18).Bb&uc&&(!n.e||i.Gj()!=Av||i.aj()!=0)&&t.dd()!=null)return e.Ub(),!0;return!1}else return e.Ob()}function zxn(n,e){var t,i;if(n.f){for(;e.Sb();)if(t=u(e.Ub(),72),i=t.ak(),I(i,99)&&u(i,18).Bb&uc&&(!n.e||i.Gj()!=Av||i.aj()!=0)&&t.dd()!=null)return e.Pb(),!0;return!1}else return e.Sb()}function iY(n,e,t){var i,r,c,o,f,h;for(h=Kc(n.e.Tg(),e),i=0,f=n.i,r=u(n.g,119),o=0;o1&&(e.c[e.c.length]=c))}function Z5e(n){var e,t,i,r;for(t=new Tt,Vi(t,n.o),i=new Yq;t.b!=0;)e=u(t.b==0?null:(ne(t.b!=0),Ts(t,t.a.a)),508),r=C_n(n,e,!0),r&&W(i.a,e);for(;i.a.c.length!=0;)e=u(pDn(i),508),C_n(n,e,!1)}function y1(){y1=N,Lfn=new l2(K6,0),_i=new l2("BOOLEAN",1),sc=new l2("INT",2),kv=new l2("STRING",3),Dr=new l2("DOUBLE",4),Nt=new l2("ENUM",5),Cp=new l2("ENUMSET",6),jf=new l2("OBJECT",7)}function m6(n,e){var t,i,r,c,o;i=y.Math.min(n.c,e.c),c=y.Math.min(n.d,e.d),r=y.Math.max(n.c+n.b,e.c+e.b),o=y.Math.max(n.d+n.a,e.d+e.a),r=(r/2|0))for(this.e=i?i.c:null,this.d=r;t++0;)nX(this);this.b=e,this.a=null}function t6e(n,e){var t,i;e.a?T8e(n,e):(t=u(rD(n.b,e.b),57),t&&t==n.a[e.b.f]&&t.a&&t.a!=e.b.a&&t.c.Fc(e.b),i=u(iD(n.b,e.b),57),i&&n.a[i.f]==e.b&&i.a&&i.a!=e.b.a&&e.b.c.Fc(i),zO(n.b,e.b))}function Wxn(n,e){var t,i;if(t=u(br(n.b,e),124),u(u(ct(n.r,e),21),84).dc()){t.n.b=0,t.n.c=0;return}t.n.b=n.C.b,t.n.c=n.C.c,n.A.Hc((Qu(),id))&&pBn(n,e),i=Dpe(n,e),qx(n,e)==(qw(),Hl)&&(i+=2*n.w),t.a.a=i}function Xxn(n,e){var t,i;if(t=u(br(n.b,e),124),u(u(ct(n.r,e),21),84).dc()){t.n.d=0,t.n.a=0;return}t.n.d=n.C.d,t.n.a=n.C.a,n.A.Hc((Qu(),id))&&vBn(n,e),i=$pe(n,e),qx(n,e)==(qw(),Hl)&&(i+=2*n.w),t.a.b=i}function i6e(n,e){var t,i,r,c;for(c=new X,i=new E(e);i.at.a&&(i.Hc((vb(),dy))?r=(e.a-t.a)/2:i.Hc(by)&&(r=e.a-t.a)),e.b>t.b&&(i.Hc((vb(),gy))?c=(e.b-t.b)/2:i.Hc(wy)&&(c=e.b-t.b)),zJ(n,r,c)}function tLn(n,e,t,i,r,c,o,f,h,l,a,d,g){I(n.Cb,88)&&yb(Ou(u(n.Cb,88)),4),Ic(n,t),n.f=o,Z3(n,f),e4(n,h),Y3(n,l),n4(n,a),p1(n,d),t4(n,g),g1(n,!0),d1(n,r),n.ok(c),Ca(n,e),i!=null&&(n.i=null,nT(n,i))}function iLn(n){var e,t;if(n.f){for(;n.n>0;){if(e=u(n.k.Xb(n.n-1),72),t=e.ak(),I(t,99)&&u(t,18).Bb&uc&&(!n.e||t.Gj()!=Av||t.aj()!=0)&&e.dd()!=null)return!0;--n.n}return!1}else return n.n>0}function fY(n,e,t){if(n<0)return T6(K_n,A(M(Zn,1),rn,1,5,[t,Q(n)]));if(e<0)throw T(new Hn(H_n+e));return T6("%s (%s) must not be greater than size (%s)",A(M(Zn,1),rn,1,5,[t,Q(n),Q(e)]))}function hY(n,e,t,i,r,c){var o,f,h,l;if(o=i-t,o<7){e2e(e,t,i,c);return}if(h=t+r,f=i+r,l=h+(f-h>>1),hY(e,n,h,l,-r,c),hY(e,n,l,f,-r,c),c.ue(n[l-1],n[l])<=0){for(;t=0?n.sh(c,t):_Y(n,r,t);else throw T(new Hn(Pl+r.ne()+em));else throw T(new Hn(vqn+e+mqn));else Ps(n,i,r,t)}function rLn(n){var e,t,i,r;if(t=u(n,49).qh(),t)try{if(i=null,e=b4((Z1(),uo),_Bn(r2e(t))),e&&(r=e.rh(),r&&(i=r.Wk(aie(t.e)))),i&&i!=n)return rLn(i)}catch(c){if(c=jt(c),!I(c,60))throw T(c)}return n}function _c(n,e,t){var i,r,c,o;if(o=e==null?0:n.b.se(e),r=(i=n.a.get(o),i??new Array),r.length==0)n.a.set(o,r);else if(c=kDn(n,e,r),c)return c.ed(t);return St(r,r.length,new Nj(e,t)),++n.c,cC(n.b),null}function cLn(n,e){var t,i;return pC(n.a),rh(n.a,(iT(),EP),EP),rh(n.a,mv,mv),i=new li,Ze(i,mv,(CT(),CK)),B(hn(e,(gb(),AK)))!==B((f7(),CP))&&Ze(i,mv,jK),Ze(i,mv,EK),cyn(n.a,i),t=EM(n.a,e),t}function uLn(n){if(!n)return q9n(),vzn;var e=n.valueOf?n.valueOf():n;if(e!==n){var t=dR[typeof e];return t?t(e):tQ(typeof e)}else return n instanceof Array||n instanceof y.Array?new sq(n):new M9(n)}function sLn(n,e,t){var i,r,c;switch(c=n.o,i=u(br(n.p,t),244),r=i.i,r.b=F7(i),r.a=$7(i),r.b=y.Math.max(r.b,c.a),r.b>c.a&&!e&&(r.b=c.a),r.c=-(r.b-c.a)/2,t.g){case 1:r.d=-r.a;break;case 3:r.d=c.b}tL(i),iL(i)}function oLn(n,e,t){var i,r,c;switch(c=n.o,i=u(br(n.p,t),244),r=i.i,r.b=F7(i),r.a=$7(i),r.a=y.Math.max(r.a,c.b),r.a>c.b&&!e&&(r.a=c.b),r.d=-(r.a-c.b)/2,t.g){case 4:r.c=-r.b;break;case 2:r.c=c.a}tL(i),iL(i)}function v6e(n,e){var t,i,r,c,o;if(!e.dc()){if(r=u(e.Xb(0),128),e.gc()==1){xNn(n,r,r,1,0,e);return}for(t=1;t0)try{r=ss(e,Bi,nt)}catch(c){throw c=jt(c),I(c,127)?(i=c,T(new xC(i))):T(c)}return t=(!n.a&&(n.a=new $I(n)),n.a),r=0?u(D(t,r),56):null}function j6e(n,e){if(n<0)return T6(K_n,A(M(Zn,1),rn,1,5,["index",Q(n)]));if(e<0)throw T(new Hn(H_n+e));return T6("%s (%s) must be less than size (%s)",A(M(Zn,1),rn,1,5,["index",Q(n),Q(e)]))}function E6e(n){var e,t,i,r,c;if(n==null)return ru;for(c=new ka(Ji,"[","]"),t=n,i=0,r=t.length;i0)for(o=n.c.d,f=n.d.d,r=Of(yi(new fn(f.a,f.b),o),1/(i+1)),c=new fn(o.a,o.b),t=new E(n.a);t.a=0?n._g(t,!0,!0):Yd(n,r,!0),153)),u(i,215).ol(e);else throw T(new Hn(Pl+e.ne()+em))}function wY(n){var e,t;return n>-0x800000000000&&n<0x800000000000?n==0?0:(e=n<0,e&&(n=-n),t=Gt(y.Math.floor(y.Math.log(n)/.6931471805599453)),(!e||n!=y.Math.pow(2,t))&&++t,t):FOn(tu(n))}function L6e(n){var e,t,i,r,c,o,f;for(c=new Sh,t=new E(n);t.a2&&f.e.b+f.j.b<=2&&(r=f,i=o),c.a.zc(r,c),r.q=i);return c}function gLn(n,e){var t,i,r;return i=new qh(n),Pr(i,e),H(i,(G(),qS),e),H(i,(nn(),Lt),(Mi(),Ac)),H(i,Jf,(fh(),FP)),ea(i,(Qn(),Xt)),t=new wc,Hr(t,i),si(t,(J(),Gn)),r=new wc,Hr(r,i),si(r,Vn),i}function pLn(n){switch(n.g){case 0:return new WI((_d(),ry));case 1:return new D4n;case 2:return new R4n;default:throw T(new Hn("No implementation is available for the crossing minimizer "+(n.f!=null?n.f:""+n.g)))}}function vLn(n,e){var t,i,r,c,o;for(n.c[e.p]=!0,W(n.a,e),o=new E(e.j);o.a=c)o.$b();else for(r=o.Kc(),i=0;i0?dG():o<0&&jLn(n,e,-o),!0):!1}function $7(n){var e,t,i,r,c,o,f;if(f=0,n.b==0){for(o=rFn(n,!0),e=0,i=o,r=0,c=i.length;r0&&(f+=t,++e);e>1&&(f+=n.c*(e-1))}else f=J9n(oOn(YE(gt(ID(n.a),new xln),new Lln)));return f>0?f+n.n.d+n.n.a:0}function F7(n){var e,t,i,r,c,o,f;if(f=0,n.b==0)f=J9n(oOn(YE(gt(ID(n.a),new $ln),new Fln)));else{for(o=cFn(n,!0),e=0,i=o,r=0,c=i.length;r0&&(f+=t,++e);e>1&&(f+=n.c*(e-1))}return f>0?f+n.n.b+n.n.c:0}function G6e(n,e){var t,i,r,c;for(c=u(br(n.b,e),124),t=c.a,r=u(u(ct(n.r,e),21),84).Kc();r.Ob();)i=u(r.Pb(),111),i.c&&(t.a=y.Math.max(t.a,nW(i.c)));if(t.a>0)switch(e.g){case 2:c.n.c=n.s;break;case 4:c.n.b=n.s}}function z6e(n,e){var t,i,r;return t=u(k(e,(Go(),Q4)),19).a-u(k(n,Q4),19).a,t==0?(i=yi(Qr(u(k(n,(dl(),Bk)),8)),u(k(n,vm),8)),r=yi(Qr(u(k(e,Bk),8)),u(k(e,vm),8)),ni(i.a*i.b,r.a*r.b)):t}function U6e(n,e){var t,i,r;return t=u(k(e,(Zd(),jP)),19).a-u(k(n,jP),19).a,t==0?(i=yi(Qr(u(k(n,(cc(),sy)),8)),u(k(n,zm),8)),r=yi(Qr(u(k(e,sy),8)),u(k(e,zm),8)),ni(i.a*i.b,r.a*r.b)):t}function ELn(n){var e,t;return t=new V1,t.a+="e_",e=ewe(n),e!=null&&(t.a+=""+e),n.c&&n.d&&(De((t.a+=" ",t),UT(n.c)),De(rc((t.a+="[",t),n.c.i),"]"),De((t.a+=TN,t),UT(n.d)),De(rc((t.a+="[",t),n.d.i),"]")),t.a}function CLn(n){switch(n.g){case 0:return new F4n;case 1:return new x4n;case 2:return new $4n;case 3:return new L4n;default:throw T(new Hn("No implementation is available for the layout phase "+(n.f!=null?n.f:""+n.g)))}}function pY(n,e,t,i,r){var c;switch(c=0,r.g){case 1:c=y.Math.max(0,e.b+n.b-(t.b+i));break;case 3:c=y.Math.max(0,-n.b-i);break;case 2:c=y.Math.max(0,-n.a-i);break;case 4:c=y.Math.max(0,e.a+n.a-(t.a+i))}return c}function W6e(n,e,t){var i,r,c,o,f;if(t)for(r=t.a.length,i=new fa(r),f=(i.b-i.a)*i.c<0?(nl(),Jl):new rl(i);f.Ob();)o=u(f.Pb(),19),c=j3(t,o.a),Dtn in c.a||xB in c.a?rke(n,c,e):hTe(n,c,e),Oce(u(te(n.b,i4(c)),79))}function vY(n){var e,t;switch(n.b){case-1:return!0;case 0:return t=n.t,t>1||t==-1?(n.b=-1,!0):(e=qs(n),e&&(er(),e.Cj()==kGn)?(n.b=-1,!0):(n.b=1,!1));default:case 1:return!1}}function X6e(n,e){var t,i,r,c,o;for(i=(!e.s&&(e.s=new V(ou,e,21,17)),e.s),c=null,r=0,o=i.i;r=0&&i=0?n._g(t,!0,!0):Yd(n,r,!0),153)),u(i,215).ll(e);throw T(new Hn(Pl+e.ne()+MB))}function Z6e(){FG();var n;return cee?u(b4((Z1(),uo),Vs),1939):(He(Ha,new Qpn),FEe(),n=u(I(vc((Z1(),uo),Vs),547)?vc(uo,Vs):new hTn,547),cee=!0,ITe(n),xTe(n),it(($G(),w1n),n,new apn),yr(uo,Vs,n),n)}function nme(n,e){var t,i,r,c;n.j=-1,qu(n.e)?(t=n.i,c=n.i!=0,F8(n,e),i=new Lh(n.e,3,n.c,null,e,t,c),r=e.Qk(n.e,n.c,null),r=txn(n,e,r),r?(r.Ei(i),r.Fi()):et(n.e,i)):(F8(n,e),r=e.Qk(n.e,n.c,null),r&&r.Fi())}function tM(n,e){var t,i,r;if(r=0,i=e[0],i>=n.length)return-1;for(t=(Te(i,n.length),n.charCodeAt(i));t>=48&&t<=57&&(r=r*10+(t-48),++i,!(i>=n.length));)t=(Te(i,n.length),n.charCodeAt(i));return i>e[0]?e[0]=i:r=-1,r}function eme(n){var e,t,i,r,c;return r=u(n.a,19).a,c=u(n.b,19).a,t=r,i=c,e=y.Math.max(y.Math.abs(r),y.Math.abs(c)),r<=0&&r==c?(t=0,i=c-1):r==-e&&c!=e?(t=c,i=r,c>=0&&++t):(t=-c,i=r),new Si(Q(t),Q(i))}function tme(n,e,t,i){var r,c,o,f,h,l;for(r=0;r=0&&l>=0&&h=n.i)throw T(new mr(NB+e+Ra+n.i));if(t>=n.i)throw T(new mr(BB+t+Ra+n.i));return i=n.g[t],e!=t&&(e>16),e=i>>16&16,t=16-e,n=n>>e,i=n-256,e=i>>16&8,t+=e,n<<=e,i=n-Ib,e=i>>16&4,t+=e,n<<=e,i=n-Bf,e=i>>16&2,t+=e,n<<=e,i=n>>14,e=i&~(i>>1),t+2-e)}function rme(n){C2();var e,t,i,r;for(eS=new X,DR=new we,OR=new X,e=(!n.a&&(n.a=new V(Ot,n,10,11)),n.a),LCe(e),r=new ie(e);r.e!=r.i.gc();)i=u(oe(r),33),xr(eS,i,0)==-1&&(t=new X,W(OR,t),L$n(i,t));return OR}function cme(n,e,t){var i,r,c,o;n.a=t.b.d,I(e,352)?(r=ng(u(e,79),!1,!1),c=I7(r),i=new s5n(n),$i(c,i),z7(c,r),e.We((Xe(),Rg))!=null&&$i(u(e.We(Rg),74),i)):(o=u(e,470),o.Hg(o.Dg()+n.a.a),o.Ig(o.Eg()+n.a.b))}function MLn(n,e){var t,i,r,c,o,f,h,l;for(l=K(Y(k(e,(nn(),Fm)))),h=n[0].n.a+n[0].o.a+n[0].d.c+l,f=1;f=0?t:(f=L5(yi(new fn(o.c+o.b/2,o.d+o.a/2),new fn(c.c+c.b/2,c.d+c.a/2))),-(XBn(c,o)-1)*f)}function sme(n,e,t){var i;Rt(new $n(null,(!t.a&&(t.a=new V(Mt,t,6,6)),new xn(t.a,16))),new hkn(n,e)),Rt(new $n(null,(!t.n&&(t.n=new V(Rr,t,1,7)),new xn(t.n,16))),new lkn(n,e)),i=u(hn(t,(Xe(),Rg)),74),i&&EV(i,n,e)}function Yd(n,e,t){var i,r,c;if(c=rg((gu(),xi),n.Tg(),e),c)return er(),u(c,66).Oj()||(c=A2(Er(xi,c))),r=(i=n.Yg(c),u(i>=0?n._g(i,!0,!0):Yd(n,c,!0),153)),u(r,215).hl(e,t);throw T(new Hn(Pl+e.ne()+MB))}function kY(n,e,t,i){var r,c,o,f,h;if(r=n.d[e],r){if(c=r.g,h=r.i,i!=null){for(f=0;f=t&&(i=e,l=(h.c+h.a)/2,o=l-t,h.c<=l-t&&(r=new hD(h.c,o),Q0(n,i++,r)),f=l+t,f<=h.a&&(c=new hD(f,h.a),tb(i,n.c.length),e5(n.c,i,c)))}function yY(n){var e;if(!n.c&&n.g==null)n.d=n.si(n.f),me(n,n.d),e=n.d;else{if(n.g==null)return!0;if(n.i==0)return!1;e=u(n.g[n.i-1],47)}return e==n.b&&null.km>=null.jm()?(cM(n),yY(n)):e.Ob()}function lme(n,e,t){var i,r,c,o,f;if(f=t,!f&&(f=YU(new zp,0)),le(f,qKn,1),XRn(n.c,e),o=TEe(n.a,e),o.gc()==1)IRn(u(o.Xb(0),37),f);else for(c=1/o.gc(),r=o.Kc();r.Ob();)i=u(r.Pb(),37),IRn(i,kc(f,c));mie(n.a,o,e),T7e(e),ce(f)}function PLn(n){if(this.a=n,n.c.i.k==(Qn(),Xt))this.c=n.c,this.d=u(k(n.c.i,(G(),ec)),61);else if(n.d.i.k==Xt)this.c=n.d,this.d=u(k(n.d.i,(G(),ec)),61);else throw T(new Hn("Edge "+n+" is not an external edge."))}function ILn(n,e){var t,i,r;r=n.b,n.b=e,n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,3,r,n.b)),e?e!=n&&(Ic(n,e.zb),G$(n,e.d),t=(i=e.c,i??e.zb),U$(n,t==null||Mn(t,e.zb)?null:t)):(Ic(n,null),G$(n,0),U$(n,null))}function OLn(n){var e,t;if(n.f){for(;n.n=o)throw T(new V0(e,o));return r=t[e],o==1?i=null:(i=F(bH,qB,415,o-1,0,1),gc(t,0,i,0,e),c=o-e-1,c>0&&gc(t,e+1,i,e,c)),r4(n,i),nLn(n,e,r),r}function z2(){z2=N,Dp=u(D(R((jG(),oc).qb),6),34),Op=u(D(R(oc.qb),3),34),kH=u(D(R(oc.qb),4),34),yH=u(D(R(oc.qb),5),18),QT(Dp),QT(Op),QT(kH),QT(yH),fee=new Hu(A(M(ou,1),gg,170,0,[Dp,Op]))}function xLn(n,e){var t;this.d=new Bv,this.b=e,this.e=new kr(e.qf()),t=n.u.Hc((Mu(),Ty)),n.u.Hc(n1)?n.D?this.a=t&&!e.If():this.a=!0:n.u.Hc(Gl)?t?this.a=!(e.zf().Kc().Ob()||e.Bf().Kc().Ob()):this.a=!1:this.a=!1}function LLn(n,e){var t,i,r,c;for(t=n.o.a,c=u(u(ct(n.r,e),21),84).Kc();c.Ob();)r=u(c.Pb(),111),r.e.a=(i=r.b,i.Xe((Xe(),Ru))?i.Hf()==(J(),Gn)?-i.rf().a-K(Y(i.We(Ru))):t+K(Y(i.We(Ru))):i.Hf()==(J(),Gn)?-i.rf().a:t)}function NLn(n,e){var t,i,r,c;t=u(k(n,(nn(),as)),103),c=u(hn(e,dv),61),r=u(k(n,Lt),98),r!=(Mi(),Ef)&&r!=ql?c==(J(),Xr)&&(c=mZ(e,t),c==Xr&&(c=B2(t))):(i=PRn(e),i>0?c=B2(t):c=b7(B2(t))),gr(e,dv,c)}function wme(n,e){var t,i,r,c,o;for(o=n.j,e.a!=e.b&&wi(o,new zbn),r=o.c.length/2|0,i=0;i0&&H7(n,t,e),c):i.a!=null?(H7(n,e,t),-1):r.a!=null?(H7(n,t,e),1):0}function BLn(n,e){var t,i,r,c;n.ej()?(t=n.Vi(),c=n.fj(),++n.j,n.Hi(t,n.oi(t,e)),i=n.Zi(3,null,e,t,c),n.bj()?(r=n.cj(e,null),r?(r.Ei(i),r.Fi()):n.$i(i)):n.$i(i)):(nTn(n,e),n.bj()&&(r=n.cj(e,null),r&&r.Fi()))}function iM(n,e){var t,i,r,c,o;for(o=Kc(n.e.Tg(),e),r=new Jy,t=u(n.g,119),c=n.i;--c>=0;)i=t[c],o.rl(i.ak())&&me(r,i);!A_n(n,r)&&qu(n.e)&&Gp(n,e.$j()?hl(n,6,e,(Pn(),cr),null,-1,!1):hl(n,e.Kj()?2:1,e,null,null,-1,!1))}function a4(){a4=N;var n,e;for(fp=F(vg,q,91,32,0,1),wm=F(vg,q,91,32,0,1),n=1,e=0;e<=18;e++)fp[e]=m7(n),wm[e]=m7(Ih(n,e)),n=Ni(n,5);for(;eo)||e.q&&(i=e.C,o=i.c.c.a-i.o.a/2,r=i.n.a-t,r>o)))}function vme(n,e){var t;le(e,"Partition preprocessing",1),t=u(ts(gt(qr(gt(new $n(null,new xn(n.a,16)),new v0n),new m0n),new k0n),ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[(lf(),ls)]))),15),Rt(t.Oc(),new y0n),ce(e)}function RLn(n){c$();var e,t,i,r,c,o,f;for(t=new ba,r=new E(n.e.b);r.a1?n.e*=K(n.a):n.f/=K(n.a),Zwe(n),rpe(n),_7e(n),H(n.b,(a6(),nS),n.g)}function qLn(n,e,t){var i,r,c,o,f,h;for(i=0,h=t,e||(i=t*(n.c.length-1),h*=-1),c=new E(n);c.a=0?(e||(e=new zv,i>0&&dr(e,n.substr(0,i))),e.a+="\\",w3(e,t&Ut)):e&&w3(e,t&Ut);return e?e.a:n}function Ame(n){var e;if(!n.a)throw T(new $r("IDataType class expected for layout option "+n.f));if(e=xae(n.a),e==null)throw T(new $r("Couldn't create new instance of property '"+n.f+"'. "+KHn+(Ph(Fy),Fy.k)+Etn));return u(e,414)}function Fx(n){var e,t,i,r,c;return c=n.eh(),c&&c.kh()&&(r=pl(n,c),r!=c)?(t=n.Vg(),i=(e=n.Vg(),e>=0?n.Qg(null):n.eh().ih(n,-1-e,null,null)),n.Rg(u(r,49),t),i&&i.Fi(),n.Lg()&&n.Mg()&&t>-1&&et(n,new gi(n,9,t,c,r)),r):c}function XLn(n){var e,t,i,r,c,o,f,h;for(o=0,c=n.f.e,i=0;i>5,r>=n.d)return n.e<0;if(t=n.a[r],e=1<<(e&31),n.e<0){if(i=dOn(n),r>16)),15).Xc(c),f0&&(!(tl(n.a.c)&&e.n.d)&&!(r3(n.a.c)&&e.n.b)&&(e.g.d+=y.Math.max(0,i/2-.5)),!(tl(n.a.c)&&e.n.a)&&!(r3(n.a.c)&&e.n.c)&&(e.g.a-=i-1))}function JLn(n){var e,t,i,r,c;if(r=new X,c=GBn(n,r),e=u(k(n,(G(),Au)),10),e)for(i=new E(e.j);i.a>e,c=n.m>>e|t<<22-e,r=n.l>>e|n.m<<22-e):e<44?(o=i?Wh:0,c=t>>e-22,r=n.m>>e-22|t<<44-e):(o=i?Wh:0,c=i?Nu:0,r=t>>e-44),Bc(r&Nu,c&Nu,o&Wh)}function xx(n){var e,t,i,r,c,o;for(this.c=new X,this.d=n,i=Ft,r=Ft,e=Qt,t=Qt,o=_e(n,0);o.b!=o.d.c;)c=u(Re(o),8),i=y.Math.min(i,c.a),r=y.Math.min(r,c.b),e=y.Math.max(e,c.a),t=y.Math.max(t,c.b);this.a=new ys(i,r,e-i,t-r)}function nNn(n,e){var t,i,r,c,o,f;for(c=new E(n.b);c.a0&&I(e,42)&&(n.a.qj(),l=u(e,42),h=l.cd(),c=h==null?0:mt(h),o=dU(n.a,c),t=n.a.d[o],t)){for(i=u(t.g,367),a=t.i,f=0;f=2)for(t=r.Kc(),e=Y(t.Pb());t.Ob();)c=e,e=Y(t.Pb()),i=y.Math.min(i,(_n(e),e-(_n(c),c)));return i}function Bme(n,e){var t,i,r,c,o;i=new Tt,Kt(i,e,i.c.b,i.c);do for(t=(ne(i.b!=0),u(Ts(i,i.a.a),86)),n.b[t.g]=1,c=_e(t.d,0);c.b!=c.d.c;)r=u(Re(c),188),o=r.c,n.b[o.g]==1?Ke(n.a,r):n.b[o.g]==2?n.b[o.g]=1:Kt(i,o,i.c.b,i.c);while(i.b!=0)}function Rme(n,e){var t,i,r;if(B(e)===B(pe(n)))return!0;if(!I(e,15)||(i=u(e,15),r=n.gc(),r!=i.gc()))return!1;if(I(i,54)){for(t=0;t0&&(r=t),o=new E(n.f.e);o.a0?(e-=1,t-=1):i>=0&&r<0?(e+=1,t+=1):i>0&&r>=0?(e-=1,t+=1):(e+=1,t-=1),new Si(Q(e),Q(t))}function i9e(n,e){return n.ce.c?1:n.be.b?1:n.a!=e.a?mt(n.a)-mt(e.a):n.d==(z5(),Hm)&&e.d==Km?-1:n.d==Km&&e.d==Hm?1:0}function sNn(n,e){var t,i,r,c,o;return c=e.a,c.c.i==e.b?o=c.d:o=c.c,c.c.i==e.b?i=c.c:i=c.d,r=O2e(n.a,o,i),r>0&&r0):r<0&&-r0):!1}function r9e(n,e,t,i){var r,c,o,f,h,l,a,d;for(r=(e-n.d)/n.c.c.length,c=0,n.a+=t,n.d=e,d=new E(n.c);d.a>24;return o}function u9e(n){if(n.pe()){var e=n.c;e.qe()?n.o="["+e.n:e.pe()?n.o="["+e.ne():n.o="[L"+e.ne()+";",n.b=e.me()+"[]",n.k=e.oe()+"[]";return}var t=n.j,i=n.d;i=i.split("/"),n.o=RF(".",[t,RF("$",i)]),n.b=RF(".",[t,RF(".",i)]),n.k=i[i.length-1]}function s9e(n,e){var t,i,r,c,o;for(o=null,c=new E(n.e.a);c.a=0;e-=2)for(t=0;t<=e;t+=2)(n.b[t]>n.b[t+2]||n.b[t]===n.b[t+2]&&n.b[t+1]>n.b[t+3])&&(i=n.b[t+2],n.b[t+2]=n.b[t],n.b[t]=i,i=n.b[t+3],n.b[t+3]=n.b[t+1],n.b[t+1]=i);n.c=!0}}function oNn(n,e){var t,i,r,c,o,f,h,l;for(o=e==1?KR:_R,c=o.a.ec().Kc();c.Ob();)for(r=u(c.Pb(),103),h=u(ct(n.f.c,r),21).Kc();h.Ob();)switch(f=u(h.Pb(),46),i=u(f.b,81),l=u(f.a,189),t=l.c,r.g){case 2:case 1:i.g.d+=t;break;case 4:case 3:i.g.c+=t}}function h9e(n,e){var t,i,r,c,o,f,h,l,a;for(l=-1,a=0,o=n,f=0,h=o.length;f0&&++a;++l}return a}function yo(n){var e,t;return t=new Yu(J1(n.gm)),t.a+="@",De(t,(e=mt(n)>>>0,e.toString(16))),n.kh()?(t.a+=" (eProxyURI: ",rc(t,n.qh()),n.$g()&&(t.a+=" eClass: ",rc(t,n.$g())),t.a+=")"):n.$g()&&(t.a+=" (eClass: ",rc(t,n.$g()),t.a+=")"),t.a}function E6(n){var e,t,i,r;if(n.e)throw T(new $r((Ph(kR),uN+kR.k+sN)));for(n.d==(sr(),kh)&&TM(n,Zs),t=new E(n.a.a);t.a>24}return t}function d9e(n,e,t){var i,r,c;if(r=u(br(n.i,e),306),!r)if(r=new fIn(n.d,e,t),m2(n.i,e,r),GQ(e))Pce(n.a,e.c,e.b,r);else switch(c=n6e(e),i=u(br(n.p,c),244),c.g){case 1:case 3:r.j=!0,zI(i,e.b,r);break;case 4:case 2:r.k=!0,zI(i,e.c,r)}return r}function b9e(n,e,t,i){var r,c,o,f,h,l;if(f=new Jy,h=Kc(n.e.Tg(),e),r=u(n.g,119),er(),u(e,66).Oj())for(o=0;o=0)return r;for(c=1,f=new E(e.j);f.a0&&e.ue((Ln(r-1,n.c.length),u(n.c[r-1],10)),c)>0;)Es(n,r,(Ln(r-1,n.c.length),u(n.c[r-1],10))),--r;Ln(r,n.c.length),n.c[r]=c}t.a=new we,t.b=new we}function w9e(n,e,t){var i,r,c,o,f,h,l,a;for(a=(i=u(e.e&&e.e(),9),new ks(i,u(bo(i,i.length),9),0)),h=Tb(t,"[\\[\\]\\s,]+"),c=h,o=0,f=c.length;o0&&(!(tl(n.a.c)&&e.n.d)&&!(r3(n.a.c)&&e.n.b)&&(e.g.d-=y.Math.max(0,i/2-.5)),!(tl(n.a.c)&&e.n.a)&&!(r3(n.a.c)&&e.n.c)&&(e.g.a+=y.Math.max(0,i-1)))}function dNn(n,e,t){var i,r;if((n.c-n.b&n.a.length-1)==2)e==(J(),Kn)||e==Vn?(GC(u(t6(n),15),(us(),yh)),GC(u(t6(n),15),Kl)):(GC(u(t6(n),15),(us(),Kl)),GC(u(t6(n),15),yh));else for(r=new B5(n);r.a!=r.b;)i=u(vT(r),15),GC(i,t)}function p9e(n,e){var t,i,r,c,o,f,h;for(r=f3(new Fq(n)),f=new Pi(r,r.c.length),c=f3(new Fq(e)),h=new Pi(c,c.c.length),o=null;f.b>0&&h.b>0&&(t=(ne(f.b>0),u(f.a.Xb(f.c=--f.b),33)),i=(ne(h.b>0),u(h.a.Xb(h.c=--h.b),33)),t==i);)o=t;return o}function xu(n,e){var t,i,r,c,o,f;return c=n.a*tN+n.b*1502,f=n.b*tN+11,t=y.Math.floor(f*uk),c+=t,f-=t*enn,c%=enn,n.a=c,n.b=f,e<=24?y.Math.floor(n.a*Kin[e]):(r=n.a*(1<=2147483648&&(i-=YL),i)}function bNn(n,e,t){var i,r,c,o;BMn(n,e)>BMn(n,t)?(i=zr(t,(J(),Vn)),n.d=i.dc()?0:wD(u(i.Xb(0),11)),o=zr(e,Gn),n.b=o.dc()?0:wD(u(o.Xb(0),11))):(r=zr(t,(J(),Gn)),n.d=r.dc()?0:wD(u(r.Xb(0),11)),c=zr(e,Vn),n.b=c.dc()?0:wD(u(c.Xb(0),11)))}function wNn(n){var e,t,i,r,c,o,f;if(n&&(e=n.Hh(Vs),e&&(o=Ce(Ko((!e.b&&(e.b=new Gu((Sn(),nr),tc,e)),e.b),"conversionDelegates")),o!=null))){for(f=new X,i=Tb(o,"\\w+"),r=0,c=i.length;rn.c));o++)r.a>=n.s&&(c<0&&(c=o),f=o);return h=(n.s+n.c)/2,c>=0&&(i=nke(n,e,c,f),h=fre((Ln(i,e.c.length),u(e.c[i],329))),hme(e,i,t)),h}function Bx(){Bx=N,zYn=new tr((Xe(),Tp),1.3),efn=ehn,ofn=new vd(15),YYn=new tr(nd,ofn),nZn=new tr(ed,15),UYn=LP,VYn=Za,QYn=Kg,JYn=_l,XYn=_g,cfn=ky,ZYn=rw,sfn=(IY(),HYn),rfn=_Yn,ufn=KYn,ffn=qYn,tfn=RYn,ifn=NP,WYn=ihn,fy=BYn,nfn=NYn,hfn=GYn}function ke(n,e,t){var i,r,c,o,f,h,l;for(o=(c=new JH,c),pV(o,(_n(e),e)),l=(!o.b&&(o.b=new Gu((Sn(),nr),tc,o)),o.b),h=1;h0&&Wje(this,r)}function NY(n,e,t,i,r,c){var o,f,h;if(!r[e.b]){for(r[e.b]=!0,o=i,!o&&(o=new TC),W(o.e,e),h=c[e.b].Kc();h.Ob();)f=u(h.Pb(),282),!(f.d==t||f.c==t)&&(f.c!=e&&NY(n,f.c,e,o,r,c),f.d!=e&&NY(n,f.d,e,o,r,c),W(o.c,f),Zt(o.d,f.b));return o}return null}function k9e(n){var e,t,i,r,c,o,f;for(e=0,r=new E(n.e);r.a=2}function y9e(n,e){var t,i,r,c;for(le(e,"Self-Loop pre-processing",1),i=new E(n.a);i.a1||(e=pt(So,A(M(lr,1),z,93,0,[Zh,Po])),Z8(hC(e,n))>1)||(i=pt(Oo,A(M(lr,1),z,93,0,[jh,eo])),Z8(hC(i,n))>1))}function C9e(n,e){var t,i,r;return t=e.Hh(n.a),t&&(r=Ce(Ko((!t.b&&(t.b=new Gu((Sn(),nr),tc,t)),t.b),"affiliation")),r!=null)?(i=aE(r,iu(35)),i==-1?TF(n,I5(n,is(e.Hj())),r):i==0?TF(n,null,r.substr(1)):TF(n,r.substr(0,i),r.substr(i+1))):null}function T9e(n){var e,t,i;try{return n==null?ru:Nr(n)}catch(r){if(r=jt(r),I(r,102))return e=r,i=J1($u(n))+"@"+(t=(nh(),QQ(n)>>>0),t.toString(16)),dpe(awe(),(e3(),"Exception during lenientFormat for "+i),e),"<"+i+" threw "+J1(e.gm)+">";throw T(r)}}function vNn(n){switch(n.g){case 0:return new T4n;case 1:return new k4n;case 2:return new k7n;case 3:return new jwn;case 4:return new Kjn;case 5:return new M4n;default:throw T(new Hn("No implementation is available for the layerer "+(n.f!=null?n.f:""+n.g)))}}function BY(n,e,t){var i,r,c;for(c=new E(n.t);c.a0&&(i.b.n-=i.c,i.b.n<=0&&i.b.u>0&&Ke(e,i.b));for(r=new E(n.i);r.a0&&(i.a.u-=i.c,i.a.u<=0&&i.a.n>0&&Ke(t,i.a))}function cM(n){var e,t,i,r,c;if(n.g==null&&(n.d=n.si(n.f),me(n,n.d),n.c))return c=n.f,c;if(e=u(n.g[n.i-1],47),r=e.Pb(),n.e=e,t=n.si(r),t.Ob())n.d=t,me(n,t);else for(n.d=null;!e.Ob()&&(St(n.g,--n.i,null),n.i!=0);)i=u(n.g[n.i-1],47),e=i;return r}function M9e(n,e){var t,i,r,c,o,f;if(i=e,r=i.ak(),zh(n.e,r)){if(r.hi()&&yC(n,r,i.dd()))return!1}else for(f=Kc(n.e.Tg(),r),t=u(n.g,119),c=0;c1||t>1)return 2;return e+t==1?2:0}function kNn(n,e,t){var i,r,c,o,f;for(le(t,"ELK Force",1),on(sn(hn(e,(Go(),Irn))))||oC((i=new O9((K0(),new N0(e))),i)),f=QOn(e),J3e(f),Iwe(n,u(k(f,Prn),424)),o=fRn(n.a,f),c=o.Kc();c.Ob();)r=u(c.Pb(),231),ake(n.b,r,kc(t,1/o.gc()));f=j_n(o),m_n(f),ce(t)}function $9e(n,e){var t,i,r,c,o;if(le(e,"Breaking Point Processor",1),ZEe(n),on(sn(k(n,(nn(),Nsn))))){for(r=new E(n.b);r.a=0?n._g(i,!0,!0):Yd(n,c,!0),153)),u(r,215).ml(e,t)}else throw T(new Hn(Pl+e.ne()+em))}function N9e(n,e){var t,i,r,c,o;for(t=new X,r=qr(new $n(null,new xn(n,16)),new wgn),c=qr(new $n(null,new xn(n,16)),new ggn),o=h0e(Tde(YE(g8e(A(M(UTe,1),rn,833,0,[r,c])),new pgn))),i=1;i=2*e&&W(t,new hD(o[i-1]+e,o[i]-e));return t}function B9e(n,e,t){le(t,"Eades radial",1),t.n&&e&&go(t,po(e),(Vu(),gs)),n.d=u(hn(e,(C5(),Xm)),33),n.c=K(Y(hn(e,(gb(),MP)))),n.e=XF(u(hn(e,oy),293)),n.a=p2e(u(hn(e,Kon),426)),n.b=R4e(u(hn(e,_on),340)),m4e(n),t.n&&e&&go(t,po(e),(Vu(),gs))}function R9e(n,e,t){var i,r,c,o,f,h,l,a;if(t)for(c=t.a.length,i=new fa(c),f=(i.b-i.a)*i.c<0?(nl(),Jl):new rl(i);f.Ob();)o=u(f.Pb(),19),r=j3(t,o.a),r&&(h=Nae(n,(l=(ad(),a=new eG,a),e&&KY(l,e),l),r),Q5(h,$h(r,Wf)),YT(r,h),lY(r,h),oF(n,r,h))}function sM(n){var e,t,i,r,c,o;if(!n.j){if(o=new npn,e=b9,c=e.a.zc(n,e),c==null){for(i=new ie(Ar(n));i.e!=i.i.gc();)t=u(oe(i),26),r=sM(t),Dt(o,r),me(o,t);e.a.Bc(n)!=null}lb(o),n.j=new Ew((u(D(R((ol(),Nn).o),11),18),o.i),o.g),Ou(n).b&=-33}return n.j}function _9e(n){var e,t,i,r;if(n==null)return null;if(i=jc(n,!0),r=Ak.length,Mn(i.substr(i.length-r,r),Ak)){if(t=i.length,t==4){if(e=(Te(0,i.length),i.charCodeAt(0)),e==43)return x1n;if(e==45)return Mee}else if(t==3)return x1n}return new Gq(i)}function K9e(n){var e,t,i;return t=n.l,t&t-1||(i=n.m,i&i-1)||(e=n.h,e&e-1)||e==0&&i==0&&t==0?-1:e==0&&i==0&&t!=0?hV(t):e==0&&i!=0&&t==0?hV(i)+22:e!=0&&i==0&&t==0?hV(e)+44:-1}function H9e(n,e){var t,i,r,c,o;for(le(e,"Edge joining",1),t=on(sn(k(n,(nn(),U_)))),r=new E(n.b);r.a1)for(r=new E(n.a);r.a0),c.a.Xb(c.c=--c.b),X0(c,r),ne(c.b3&&oh(n,0,e-3))}function U9e(n){var e,t,i,r;return B(k(n,(nn(),Vb)))===B((_h(),F1))?!n.e&&B(k(n,Jk))!==B((q3(),Gk)):(i=u(k(n,F_),292),r=on(sn(k(n,x_)))||B(k(n,Om))===B((F2(),qk)),e=u(k(n,nsn),19).a,t=n.a.c.length,!r&&i!=(q3(),Gk)&&(e==0||e>t))}function W9e(n){var e,t;for(t=0;t0);t++);if(t>0&&t0);e++);return e>0&&t>16!=6&&e){if(u4(n,e))throw T(new Hn(tm+_Ln(n)));i=null,n.Cb&&(i=(t=n.Db>>16,t>=0?dJ(n,i):n.Cb.ih(n,-1-t,null,i))),e&&(i=_2(e,n,6,i)),i=lU(n,e,i),i&&i.Fi()}else n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,6,e,e))}function KY(n,e){var t,i;if(e!=n.Cb||n.Db>>16!=9&&e){if(u4(n,e))throw T(new Hn(tm+jBn(n)));i=null,n.Cb&&(i=(t=n.Db>>16,t>=0?wJ(n,i):n.Cb.ih(n,-1-t,null,i))),e&&(i=_2(e,n,9,i)),i=aU(n,e,i),i&&i.Fi()}else n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,9,e,e))}function _x(n,e){var t,i;if(e!=n.Cb||n.Db>>16!=3&&e){if(u4(n,e))throw T(new Hn(tm+yRn(n)));i=null,n.Cb&&(i=(t=n.Db>>16,t>=0?pJ(n,i):n.Cb.ih(n,-1-t,null,i))),e&&(i=_2(e,n,12,i)),i=hU(n,e,i),i&&i.Fi()}else n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,3,e,e))}function w4(n){var e,t,i,r,c;if(i=qs(n),c=n.j,c==null&&i)return n.$j()?null:i.zj();if(I(i,148)){if(t=i.Aj(),t&&(r=t.Nh(),r!=n.i)){if(e=u(i,148),e.Ej())try{n.g=r.Kh(e,c)}catch(o){if(o=jt(o),I(o,78))n.g=null;else throw T(o)}n.i=r}return n.g}return null}function ENn(n){var e;return e=new X,W(e,new f2(new fn(n.c,n.d),new fn(n.c+n.b,n.d))),W(e,new f2(new fn(n.c,n.d),new fn(n.c,n.d+n.a))),W(e,new f2(new fn(n.c+n.b,n.d+n.a),new fn(n.c+n.b,n.d))),W(e,new f2(new fn(n.c+n.b,n.d+n.a),new fn(n.c,n.d+n.a))),e}function CNn(n,e,t,i){var r,c,o;if(o=TJ(e,t),i.c[i.c.length]=e,n.j[o.p]==-1||n.j[o.p]==2||n.a[e.p])return i;for(n.j[o.p]=-1,c=new re(ue(Kh(o).a.Kc(),new An));Se(c);)if(r=u(ve(c),17),!(!(!Xi(r)&&!(!Xi(r)&&r.c.i.c==r.d.i.c))||r==e))return CNn(n,r,o,i);return i}function X9e(n,e,t){var i,r,c;for(c=e.a.ec().Kc();c.Ob();)r=u(c.Pb(),79),i=u(te(n.b,r),266),!i&&(Pt(hh(r))==Pt(ml(r))?f7e(n,r,t):hh(r)==Pt(ml(r))?te(n.c,r)==null&&te(n.b,ml(r))!=null&&i_n(n,r,t,!1):te(n.d,r)==null&&te(n.b,hh(r))!=null&&i_n(n,r,t,!0))}function V9e(n,e){var t,i,r,c,o,f,h;for(r=n.Kc();r.Ob();)for(i=u(r.Pb(),10),f=new wc,Hr(f,i),si(f,(J(),Vn)),H(f,(G(),GS),(qn(),!0)),o=e.Kc();o.Ob();)c=u(o.Pb(),10),h=new wc,Hr(h,c),si(h,Gn),H(h,GS,!0),t=new Pd,H(t,GS,!0),Hi(t,f),Ci(t,h)}function Q9e(n,e,t,i){var r,c,o,f;r=m$n(n,e,t),c=m$n(n,t,e),o=u(te(n.c,e),112),f=u(te(n.c,t),112),ri.b.g&&(c.c[c.c.length]=i);return c}function g4(){g4=N,Ng=new J9("CANDIDATE_POSITION_LAST_PLACED_RIGHT",0),Ep=new J9("CANDIDATE_POSITION_LAST_PLACED_BELOW",1),Qm=new J9("CANDIDATE_POSITION_WHOLE_DRAWING_RIGHT",2),Vm=new J9("CANDIDATE_POSITION_WHOLE_DRAWING_BELOW",3),Jm=new J9("WHOLE_DRAWING",4)}function J9e(n,e){if(I(e,239))return Age(n,u(e,33));if(I(e,186))return _ge(n,u(e,118));if(I(e,354))return Zhe(n,u(e,137));if(I(e,352))return Eye(n,u(e,79));if(e)return null;throw T(new Hn(Rtn+kl(new Hu(A(M(Zn,1),rn,1,5,[e])))))}function Y9e(n){var e,t,i,r,c,o,f;for(c=new Tt,r=new E(n.d.a);r.a1)for(e=kd((t=new ra,++n.b,t),n.d),f=_e(c,0);f.b!=f.d.c;)o=u(Re(f),121),jo(lo(ho(ao(fo(new Ns,1),0),e),o))}function HY(n,e){var t,i;if(e!=n.Cb||n.Db>>16!=11&&e){if(u4(n,e))throw T(new Hn(tm+uZ(n)));i=null,n.Cb&&(i=(t=n.Db>>16,t>=0?vJ(n,i):n.Cb.ih(n,-1-t,null,i))),e&&(i=_2(e,n,10,i)),i=kU(n,e,i),i&&i.Fi()}else n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,11,e,e))}function Z9e(n){var e,t,i,r;for(i=new Ea(new ta(n.b).a);i.b;)t=Nd(i),r=u(t.cd(),11),e=u(t.dd(),10),H(e,(G(),rt),r),H(r,Au,e),H(r,Wk,(qn(),!0)),si(r,u(k(e,ec),61)),k(e,ec),H(r.i,(nn(),Lt),(Mi(),Tv)),u(k(Gi(r.i),Mc),21).Fc((or(),ov))}function n8e(n,e,t){var i,r,c,o,f,h;if(c=0,o=0,n.c)for(h=new E(n.d.i.j);h.ac.a?-1:r.ah){for(a=n.d,n.d=F(u1n,Xtn,63,2*h+4,0,1),c=0;c=9223372036854776e3?(I3(),win):(r=!1,n<0&&(r=!0,n=-n),i=0,n>=$a&&(i=Gt(n/$a),n-=i*$a),t=0,n>=J2&&(t=Gt(n/J2),n-=t*J2),e=Gt(n),c=Bc(e,t,i),r&&sF(c),c)}function h8e(n,e){var t,i,r,c;for(t=!e||!n.u.Hc((Mu(),n1)),c=0,r=new E(n.e.Cf());r.a=-e&&i==e?new Si(Q(t-1),Q(i)):new Si(Q(t),Q(i-1))}function PNn(){return rr(),A(M(nMe,1),z,77,0,[fcn,ucn,mm,WR,Scn,dS,ES,Z4,Mcn,pcn,Ccn,Y4,Acn,bcn,Pcn,ncn,pS,XR,lS,kS,Ocn,mS,ecn,Tcn,Dcn,yS,Icn,aS,lcn,jcn,ycn,CS,rcn,hS,wS,icn,J4,mcn,wcn,Ecn,km,scn,ccn,kcn,gcn,gS,jS,tcn,vS,vcn,bS,acn,hcn,Kk,fS,dcn,ocn])}function b8e(n,e,t){n.d=0,n.b=0,e.k==(Qn(),Tc)&&t.k==Tc&&u(k(e,(G(),rt)),10)==u(k(t,rt),10)&&(F$(e).j==(J(),Kn)?bNn(n,e,t):bNn(n,t,e)),e.k==Tc&&t.k==pi?F$(e).j==(J(),Kn)?n.d=1:n.b=1:t.k==Tc&&e.k==pi&&(F$(t).j==(J(),Kn)?n.b=1:n.d=1),e3e(n,e,t)}function w8e(n){var e,t,i,r,c,o,f,h,l,a,d;return d=KJ(n),e=n.a,h=e!=null,h&&l3(d,"category",n.a),r=N9(new Rp(n.d)),o=!r,o&&(l=new na,Ro(d,"knownOptions",l),t=new pmn(l),$i(new Rp(n.d),t)),c=N9(n.g),f=!c,f&&(a=new na,Ro(d,"supportedFeatures",a),i=new vmn(a),$i(n.g,i)),d}function g8e(n){var e,t,i,r,c,o,f,h,l;for(i=!1,e=336,t=0,c=new Ojn(n.length),f=n,h=0,l=f.length;h>16!=7&&e){if(u4(n,e))throw T(new Hn(tm+Lxn(n)));i=null,n.Cb&&(i=(t=n.Db>>16,t>=0?bJ(n,i):n.Cb.ih(n,-1-t,null,i))),e&&(i=u(e,49).gh(n,1,Iy,i)),i=aW(n,e,i),i&&i.Fi()}else n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,7,e,e))}function INn(n,e){var t,i;if(e!=n.Cb||n.Db>>16!=3&&e){if(u4(n,e))throw T(new Hn(tm+zDn(n)));i=null,n.Cb&&(i=(t=n.Db>>16,t>=0?gJ(n,i):n.Cb.ih(n,-1-t,null,i))),e&&(i=u(e,49).gh(n,0,Dy,i)),i=dW(n,e,i),i&&i.Fi()}else n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,3,e,e))}function Hx(n,e){a4();var t,i,r,c,o,f,h,l,a;return e.d>n.d&&(f=n,n=e,e=f),e.d<63?u7e(n,e):(o=(n.d&-2)<<4,l=MX(n,o),a=MX(e,o),i=rL(n,P2(l,o)),r=rL(e,P2(a,o)),h=Hx(l,a),t=Hx(i,r),c=Hx(rL(l,i),rL(r,a)),c=aL(aL(c,h),t),c=P2(c,o),h=P2(h,o<<1),aL(aL(h,c),t))}function v8e(n,e,t){var i,r,c,o,f;for(o=c6(n,t),f=F(mh,E1,10,e.length,0,1),i=0,c=o.Kc();c.Ob();)r=u(c.Pb(),11),on(sn(k(r,(G(),Wk))))&&(f[i++]=u(k(r,Au),10));if(i=0;c+=t?1:-1)o=o|e.c.Sf(h,c,t,i&&!on(sn(k(e.j,(G(),v0))))&&!on(sn(k(e.j,(G(),Pg))))),o=o|e.q._f(h,c,t),o=o|wBn(n,h[c],t,i);return ci(n.c,e),o}function fM(n,e,t){var i,r,c,o,f,h,l,a,d,g;for(a=bAn(n.j),d=0,g=a.length;d1&&(n.a=!0),Ffe(u(t.b,65),st(Qr(u(e.b,65).c),Of(yi(Qr(u(t.b,65).a),u(e.b,65).a),r))),SMn(n,e),ONn(n,t)}function DNn(n){var e,t,i,r,c,o,f;for(c=new E(n.a.a);c.a0&&c>0?o.p=e++:i>0?o.p=t++:c>0?o.p=r++:o.p=t++}Pn(),wi(n.j,new d0n)}function E8e(n){var e,t;t=null,e=u(un(n.g,0),17);do{if(t=e.d.i,ai(t,(G(),Ys)))return u(k(t,Ys),11).i;if(t.k!=(Qn(),ii)&&Se(new re(ue(ei(t).a.Kc(),new An))))e=u(ve(new re(ue(ei(t).a.Kc(),new An))),17);else if(t.k!=ii)return null}while(t&&t.k!=(Qn(),ii));return t}function C8e(n,e){var t,i,r,c,o,f,h,l,a;for(f=e.j,o=e.g,h=u(un(f,f.c.length-1),113),a=(Ln(0,f.c.length),u(f.c[0],113)),l=sx(n,o,h,a),c=1;cl&&(h=t,a=r,l=i);e.a=a,e.c=h}function T8e(n,e){var t,i;if(i=k8(n.b,e.b),!i)throw T(new $r("Invalid hitboxes for scanline constraint calculation."));(ROn(e.b,u(Tue(n.b,e.b),57))||ROn(e.b,u(Cue(n.b,e.b),57)))&&(nh(),e.b+""),n.a[e.b.f]=u(rD(n.b,e.b),57),t=u(iD(n.b,e.b),57),t&&(n.a[t.f]=e.b)}function jo(n){if(!n.a.d||!n.a.e)throw T(new $r((Ph(Wzn),Wzn.k+" must have a source and target "+(Ph(grn),grn.k)+" specified.")));if(n.a.d==n.a.e)throw T(new $r("Network simplex does not support self-loops: "+n.a+" "+n.a.d+" "+n.a.e));return bE(n.a.d.g,n.a),bE(n.a.e.b,n.a),n.a}function M8e(n,e,t){var i,r,c,o,f,h,l;for(l=new Y1(new g6n(n)),o=A(M(FWn,1),UKn,11,0,[e,t]),f=0,h=o.length;fh-n.b&&fh-n.a&&f0&&++p;++g}return p}function L8e(n,e){var t,i,r,c,o;for(o=u(k(e,(Zd(),Eon)),425),c=_e(e.b,0);c.b!=c.d.c;)if(r=u(Re(c),86),n.b[r.g]==0){switch(o.g){case 0:uFn(n,r);break;case 1:Bme(n,r)}n.b[r.g]=2}for(i=_e(n.a,0);i.b!=i.d.c;)t=u(Re(i),188),db(t.b.d,t,!0),db(t.c.b,t,!0);H(e,(cc(),gon),n.a)}function Kc(n,e){er();var t,i,r,c;return e?e==(ht(),Cee)||(e==aee||e==rd||e==lee)&&n!=$1n?new BZ(n,e):(i=u(e,677),t=i.pk(),t||(v3(Er((gu(),xi),e)),t=i.pk()),c=(!t.i&&(t.i=new we),t.i),r=u(Vr(Sr(c.f,n)),1942),!r&&it(c,n,r=new BZ(n,e)),r):oee}function N8e(n,e){var t,i,r,c,o,f,h,l,a;for(h=u(k(n,(G(),rt)),11),l=Gr(A(M(di,1),q,8,0,[h.i.n,h.n,h.a])).a,a=n.i.n.b,t=Lf(n.e),r=t,c=0,o=r.length;c0?c.a?(f=c.b.rf().a,t>f&&(r=(t-f)/2,c.d.b=r,c.d.c=r)):c.d.c=n.s+t:D5(n.u)&&(i=HJ(c.b),i.c<0&&(c.d.b=-i.c),i.c+i.b>c.b.rf().a&&(c.d.c=i.c+i.b-c.b.rf().a))}function K8e(n,e){var t,i,r,c;for(le(e,"Semi-Interactive Crossing Minimization Processor",1),t=!1,r=new E(n.b);r.a=0){if(e==t)return new Si(Q(-e-1),Q(-e-1));if(e==-t)return new Si(Q(-e),Q(t+1))}return y.Math.abs(e)>y.Math.abs(t)?e<0?new Si(Q(-e),Q(t)):new Si(Q(-e),Q(t+1)):new Si(Q(e+1),Q(t))}function G8e(n){var e,t;t=u(k(n,(nn(),qc)),163),e=u(k(n,(G(),za)),303),t==(Ss(),xl)?(H(n,qc,Qk),H(n,za,(Nh(),Ag))):t==Ub?(H(n,qc,Qk),H(n,za,(Nh(),dp))):e==(Nh(),Ag)?(H(n,qc,xl),H(n,za,zk)):e==dp&&(H(n,qc,Ub),H(n,za,zk))}function hM(){hM=N,cy=new ngn,$Jn=Ze(new li,(Qi(),Hc),(rr(),lS)),LJn=Eu(Ze(new li,Hc,mS),Or,vS),NJn=Xd(Xd(Dj(Eu(Ze(new li,Qf,ES),Or,jS),Cc),yS),CS),FJn=Eu(Ze(Ze(Ze(new li,$l,dS),Cc,wS),Cc,J4),Or,bS),xJn=Eu(Ze(Ze(new li,Cc,J4),Cc,hS),Or,fS)}function C6(){C6=N,_Jn=Ze(Eu(new li,(Qi(),Or),(rr(),acn)),Hc,lS),GJn=Xd(Xd(Dj(Eu(Ze(new li,Qf,ES),Or,jS),Cc),yS),CS),KJn=Eu(Ze(Ze(Ze(new li,$l,dS),Cc,wS),Cc,J4),Or,bS),qJn=Ze(Ze(new li,Hc,mS),Or,vS),HJn=Eu(Ze(Ze(new li,Cc,J4),Cc,hS),Or,fS)}function z8e(n,e,t,i,r){var c,o;(!Xi(e)&&e.c.i.c==e.d.i.c||!WIn(Gr(A(M(di,1),q,8,0,[r.i.n,r.n,r.a])),t))&&!Xi(e)&&(e.c==r?s3(e.a,0,new kr(t)):Ke(e.a,new kr(t)),i&&!Ah(n.a,t)&&(o=u(k(e,(nn(),Mr)),74),o||(o=new hu,H(e,Mr,o)),c=new kr(t),Kt(o,c,o.c.b,o.c),ci(n.a,c)))}function U8e(n){var e,t;for(t=new re(ue(Lr(n).a.Kc(),new An));Se(t);)if(e=u(ve(t),17),e.c.i.k!=(Qn(),Ju))throw T(new pw(SN+E7(n)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function W8e(n,e,t){var i,r,c,o,f,h,l;if(r=JDn(n.Db&254),r==0)n.Eb=t;else{if(r==1)f=F(Zn,rn,1,2,5,1),c=ux(n,e),c==0?(f[0]=t,f[1]=n.Eb):(f[0]=n.Eb,f[1]=t);else for(f=F(Zn,rn,1,r+1,5,1),o=pa(n.Eb),i=2,h=0,l=0;i<=128;i<<=1)i==e?f[l++]=t:n.Db&i&&(f[l++]=o[h++]);n.Eb=f}n.Db|=e}function FNn(n,e,t){var i,r,c,o;for(this.b=new X,r=0,i=0,o=new E(n);o.a0&&(c=u(un(this.b,0),167),r+=c.o,i+=c.p),r*=2,i*=2,e>1?r=Gt(y.Math.ceil(r*e)):i=Gt(y.Math.ceil(i/e)),this.a=new xQ(r,i)}function xNn(n,e,t,i,r,c){var o,f,h,l,a,d,g,p,v,m,C,S;for(a=i,e.j&&e.o?(p=u(te(n.f,e.A),57),m=p.d.c+p.d.b,--a):m=e.a.c+e.a.b,d=r,t.q&&t.o?(p=u(te(n.f,t.C),57),l=p.d.c,++d):l=t.a.c,C=l-m,h=y.Math.max(2,d-a),f=C/h,v=m+f,g=a;g=0;o+=r?1:-1){for(f=e[o],h=i==(J(),Vn)?r?zr(f,i):va(zr(f,i)):r?va(zr(f,i)):zr(f,i),c&&(n.c[f.p]=h.gc()),d=h.Kc();d.Ob();)a=u(d.Pb(),11),n.d[a.p]=l++;Zt(t,h)}}function LNn(n,e,t){var i,r,c,o,f,h,l,a;for(c=K(Y(n.b.Kc().Pb())),l=K(Y(twe(e.b))),i=Of(Qr(n.a),l-t),r=Of(Qr(e.a),t-c),a=st(i,r),Of(a,1/(l-c)),this.a=a,this.b=new X,f=!0,o=n.b.Kc(),o.Pb();o.Ob();)h=K(Y(o.Pb())),f&&h-t>oB&&(this.b.Fc(t),f=!1),this.b.Fc(h);f&&this.b.Fc(t)}function X8e(n){var e,t,i,r;if(cke(n,n.n),n.d.c.length>0){for(qv(n.c);AY(n,u(j(new E(n.e.a)),121))>5,e&=31,i>=n.d)return n.e<0?(jl(),gR):(jl(),W4);if(c=n.d-i,r=F(be,Le,25,c+1,15,1),K5e(r,c,n.a,i,e),n.e<0){for(t=0;t0&&n.a[t]<<32-e){for(t=0;t=0?!1:(t=rg((gu(),xi),r,e),t?(i=t.Zj(),(i>1||i==-1)&&Sd(Er(xi,t))!=3):!0)):!1}function Y8e(n,e,t,i){var r,c,o,f,h;return f=Ir(u(D((!e.b&&(e.b=new Fn(he,e,4,7)),e.b),0),82)),h=Ir(u(D((!e.c&&(e.c=new Fn(he,e,5,8)),e.c),0),82)),Pt(f)==Pt(h)||ob(h,f)?null:(o=S8(e),o==t?i:(c=u(te(n.a,o),10),c&&(r=c.e,r)?r:null))}function Z8e(n,e){var t;switch(t=u(k(n,(nn(),JS)),276),le(e,"Label side selection ("+t+")",1),t.g){case 0:nNn(n,(us(),yh));break;case 1:nNn(n,(us(),Kl));break;case 2:wRn(n,(us(),yh));break;case 3:wRn(n,(us(),Kl));break;case 4:QNn(n,(us(),yh));break;case 5:QNn(n,(us(),Kl))}ce(e)}function VY(n,e,t){var i,r,c,o,f,h;if(i=Bie(t,n.length),o=n[i],o[0].k==(Qn(),Xt))for(c=n8n(t,o.length),h=e.j,r=0;r0&&(t[0]+=n.d,o-=t[0]),t[2]>0&&(t[2]+=n.d,o-=t[2]),c=y.Math.max(0,o),t[1]=y.Math.max(t[1],o),SX(n,Fc,r.c+i.b+t[0]-(t[1]-o)/2,t),e==Fc&&(n.c.b=c,n.c.c=r.c+i.b+(c-o)/2)}function WNn(){this.c=F(Ei,pr,25,(J(),A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn])).length,15,1),this.b=F(Ei,pr,25,A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn]).length,15,1),this.a=F(Ei,pr,25,A(M(Zi,1),hc,61,0,[Xr,Kn,Vn,ae,Gn]).length,15,1),BG(this.c,Ft),BG(this.b,Qt),BG(this.a,Qt)}function yc(n,e,t){var i,r,c,o;if(e<=t?(r=e,c=t):(r=t,c=e),i=0,n.b==null)n.b=F(be,Le,25,2,15,1),n.b[0]=r,n.b[1]=c,n.c=!0;else{if(i=n.b.length,n.b[i-1]+1==r){n.b[i-1]=c;return}o=F(be,Le,25,i+2,15,1),gc(n.b,0,o,0,i),n.b=o,n.b[i-1]>=r&&(n.c=!1,n.a=!1),n.b[i++]=r,n.b[i]=c,n.c||Jw(n)}}function s7e(n,e,t){var i,r,c,o,f,h,l;for(l=e.d,n.a=new Pc(l.c.length),n.c=new we,f=new E(l);f.a=0?n._g(l,!1,!0):Yd(n,t,!1),58));n:for(c=d.Kc();c.Ob();){for(r=u(c.Pb(),56),a=0;a1;)Eb(r,r.i-1);return i}function a7e(n,e){var t,i,r,c,o,f,h;for(le(e,"Comment post-processing",1),c=new E(n.b);c.an.d[o.p]&&(t+=jX(n.b,c),ll(n.a,Q(c)));for(;!Hv(n.a);)ZX(n.b,u(y2(n.a),19).a)}return t}function JNn(n,e,t){var i,r,c,o;for(c=(!e.a&&(e.a=new V(Ot,e,10,11)),e.a).i,r=new ie((!e.a&&(e.a=new V(Ot,e,10,11)),e.a));r.e!=r.i.gc();)i=u(oe(r),33),(!i.a&&(i.a=new V(Ot,i,10,11)),i.a).i==0||(c+=JNn(n,i,!1));if(t)for(o=Pt(e);o;)c+=(!o.a&&(o.a=new V(Ot,o,10,11)),o.a).i,o=Pt(o);return c}function Eb(n,e){var t,i,r,c;return n.ej()?(i=null,r=n.fj(),n.ij()&&(i=n.kj(n.pi(e),null)),t=n.Zi(4,c=H2(n,e),null,e,r),n.bj()&&c!=null&&(i=n.dj(c,i)),i?(i.Ei(t),i.Fi()):n.$i(t),c):(c=H2(n,e),n.bj()&&c!=null&&(i=n.dj(c,null),i&&i.Fi()),c)}function b7e(n){var e,t,i,r,c,o,f,h,l,a;for(l=n.a,e=new hi,h=0,i=new E(n.d);i.af.d&&(a=f.d+f.a+l));t.c.d=a,e.a.zc(t,e),h=y.Math.max(h,t.c.d+t.c.a)}return h}function or(){or=N,NS=new H0("COMMENTS",0),$s=new H0("EXTERNAL_PORTS",1),Tm=new H0("HYPEREDGES",2),BS=new H0("HYPERNODES",3),ov=new H0("NON_FREE_PORTS",4),Mg=new H0("NORTH_SOUTH_PORTS",5),Mm=new H0(lHn,6),uv=new H0("CENTER_LABELS",7),sv=new H0("END_LABELS",8),RS=new H0("PARTITIONS",9)}function Cb(n){var e,t,i,r,c;for(r=new X,e=new S5((!n.a&&(n.a=new V(Ot,n,10,11)),n.a)),i=new re(ue(Gh(n).a.Kc(),new An));Se(i);)t=u(ve(i),79),I(D((!t.b&&(t.b=new Fn(he,t,4,7)),t.b),0),186)||(c=Ir(u(D((!t.c&&(t.c=new Fn(he,t,5,8)),t.c),0),82)),e.a._b(c)||(r.c[r.c.length]=c));return r}function w7e(n){var e,t,i,r,c,o;for(c=new hi,e=new S5((!n.a&&(n.a=new V(Ot,n,10,11)),n.a)),r=new re(ue(Gh(n).a.Kc(),new An));Se(r);)i=u(ve(r),79),I(D((!i.b&&(i.b=new Fn(he,i,4,7)),i.b),0),186)||(o=Ir(u(D((!i.c&&(i.c=new Fn(he,i,5,8)),i.c),0),82)),e.a._b(o)||(t=c.a.zc(o,c),t==null));return c}function g7e(n,e,t,i,r){return i<0?(i=Qw(n,r,A(M(tn,1),q,2,6,[IL,OL,DL,$L,V2,FL,xL,LL,NL,BL,RL,_L]),e),i<0&&(i=Qw(n,r,A(M(tn,1),q,2,6,["Jan","Feb","Mar","Apr",V2,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),i<0?!1:(t.k=i,!0)):i>0?(t.k=i-1,!0):!1}function p7e(n,e,t,i,r){return i<0?(i=Qw(n,r,A(M(tn,1),q,2,6,[IL,OL,DL,$L,V2,FL,xL,LL,NL,BL,RL,_L]),e),i<0&&(i=Qw(n,r,A(M(tn,1),q,2,6,["Jan","Feb","Mar","Apr",V2,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),i<0?!1:(t.k=i,!0)):i>0?(t.k=i-1,!0):!1}function v7e(n,e,t,i,r,c){var o,f,h,l;if(f=32,i<0){if(e[0]>=n.length||(f=Di(n,e[0]),f!=43&&f!=45)||(++e[0],i=tM(n,e),i<0))return!1;f==45&&(i=-i)}return f==32&&e[0]-t==2&&r.b==2&&(h=new Tj,l=h.q.getFullYear()-Tl+Tl-80,o=l%100,c.a=i==o,i+=(l/100|0)*100+(i=l&&(h=i);h&&(a=y.Math.max(a,h.a.o.a)),a>g&&(d=l,g=a)}return d}function y7e(n,e,t){var i,r,c;if(n.e=t,n.d=0,n.b=0,n.f=1,n.i=e,(n.e&16)==16&&(n.i=ske(n.i)),n.j=n.i.length,Qe(n),c=Wd(n),n.d!=n.j)throw T(new Ee(Pe((je(),$qn))));if(n.g){for(i=0;iFHn?wi(h,n.b):i<=FHn&&i>xHn?wi(h,n.d):i<=xHn&&i>LHn?wi(h,n.c):i<=LHn&&wi(h,n.a),c=eBn(n,h,c);return r}function jl(){jl=N;var n;for(qA=new l1(1,1),pR=new l1(1,10),W4=new l1(0,0),gR=new l1(-1,1),xin=A(M(vg,1),q,91,0,[W4,qA,new l1(1,2),new l1(1,3),new l1(1,4),new l1(1,5),new l1(1,6),new l1(1,7),new l1(1,8),new l1(1,9),pR]),GA=F(vg,q,91,32,0,1),n=0;n1,f&&(i=new fn(r,t.b),Ke(e.a,i)),V5(e.a,A(M(di,1),q,8,0,[g,d]))}function uBn(n){wd(n,new Ia(ld(od(hd(fd(new Zl,gA),"ELK Randomizer"),'Distributes the nodes randomly on the plane, leading to very obfuscating layouts. Can be useful to demonstrate the power of "real" layout algorithms.'),new $2n))),Z(n,gA,u0,zhn),Z(n,gA,Db,15),Z(n,gA,HM,Q(0)),Z(n,gA,ep,$4)}function YY(){YY=N;var n,e,t,i,r,c;for(v9=F(yu,wg,25,255,15,1),oI=F(Ls,Rf,25,16,15,1),e=0;e<255;e++)v9[e]=-1;for(t=57;t>=48;t--)v9[t]=t-48<<24>>24;for(i=70;i>=65;i--)v9[i]=i-65+10<<24>>24;for(r=102;r>=97;r--)v9[r]=r-97+10<<24>>24;for(c=0;c<10;c++)oI[c]=48+c&Ut;for(n=10;n<=15;n++)oI[n]=65+n-10&Ut}function aM(n,e,t){var i,r,c,o,f,h,l,a;return f=e.i-n.g/2,h=t.i-n.g/2,l=e.j-n.g/2,a=t.j-n.g/2,c=e.g+n.g/2,o=t.g+n.g/2,i=e.f+n.g/2,r=t.f+n.g/2,f>19)return"-"+sBn(z3(n));for(t=n,i="";!(t.l==0&&t.m==0&&t.h==0);){if(r=E$($M),t=IZ(t,r,!0),e=""+m8n(Il),!(t.l==0&&t.m==0&&t.h==0))for(c=9-e.length;c>0;c--)e="0"+e;i=e+i}return i}function A7e(){if(!Object.create||!Object.getOwnPropertyNames)return!1;var n="__proto__",e=Object.create(null);if(e[n]!==void 0)return!1;var t=Object.getOwnPropertyNames(e);return!(t.length!=0||(e[n]=42,e[n]!==42)||Object.getOwnPropertyNames(e).length==0)}function S7e(n){var e,t,i,r,c,o,f;for(e=!1,t=0,r=new E(n.d.b);r.a=n.a||!RJ(e,t))return-1;if(E3(u(i.Kb(e),20)))return 1;for(r=0,o=u(i.Kb(e),20).Kc();o.Ob();)if(c=u(o.Pb(),17),h=c.c.i==e?c.d.i:c.c.i,f=nZ(n,h,t,i),f==-1||(r=y.Math.max(r,f),r>n.c-1))return-1;return r+1}function oBn(n,e){var t,i,r,c,o,f;if(B(e)===B(n))return!0;if(!I(e,15)||(i=u(e,15),f=n.gc(),i.gc()!=f))return!1;if(o=i.Kc(),n.ni()){for(t=0;t0){if(n.qj(),e!=null){for(c=0;c>24;case 97:case 98:case 99:case 100:case 101:case 102:return n-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return n-65+10<<24>>24;default:throw T(new Pf("Invalid hexadecimal"))}}function D7e(n,e,t){var i,r,c,o;for(le(t,"Processor order nodes",2),n.a=K(Y(k(e,(Zd(),Con)))),r=new Tt,o=_e(e.b,0);o.b!=o.d.c;)c=u(Re(o),86),on(sn(k(c,(cc(),iw))))&&Kt(r,c,r.c.b,r.c);i=(ne(r.b!=0),u(r.a.a.c,86)),SRn(n,i),!t.b&&X$(t,1),cZ(n,i,0-K(Y(k(i,(cc(),kP))))/2,0),!t.b&&X$(t,1),ce(t)}function dM(){dM=N,brn=new kw("SPIRAL",0),hrn=new kw("LINE_BY_LINE",1),lrn=new kw("MANHATTAN",2),frn=new kw("JITTER",3),ER=new kw("QUADRANTS_LINE_BY_LINE",4),drn=new kw("QUADRANTS_MANHATTAN",5),arn=new kw("QUADRANTS_JITTER",6),orn=new kw("COMBINE_LINE_BY_LINE_MANHATTAN",7),srn=new kw("COMBINE_JITTER_MANHATTAN",8)}function hBn(n,e,t,i){var r,c,o,f,h,l;for(h=ax(n,t),l=ax(e,t),r=!1;h&&l&&(i||S3e(h,l,t));)o=ax(h,t),f=ax(l,t),H8(e),H8(n),c=h.c,gL(h,!1),gL(l,!1),t?(pb(e,l.p,c),e.p=l.p,pb(n,h.p+1,c),n.p=h.p):(pb(n,h.p,c),n.p=h.p,pb(e,l.p+1,c),e.p=l.p),jr(h,null),jr(l,null),h=o,l=f,r=!0;return r}function $7e(n,e,t,i){var r,c,o,f,h;for(r=!1,c=!1,f=new E(i.j);f.a=e.length)throw T(new mr("Greedy SwitchDecider: Free layer not in graph."));this.c=e[n],this.e=new b8(i),Y$(this.e,this.c,(J(),Gn)),this.i=new b8(i),Y$(this.i,this.c,Vn),this.f=new oCn(this.c),this.a=!c&&r.i&&!r.s&&this.c[0].k==(Qn(),Xt),this.a&&Q5e(this,n,e.length)}function aBn(n,e){var t,i,r,c,o,f;c=!n.B.Hc((Lu(),Sy)),o=n.B.Hc(sH),n.a=new s$n(o,c,n.c),n.n&&GW(n.a.n,n.n),zI(n.g,(_o(),Fc),n.a),e||(i=new l6(1,c,n.c),i.n.a=n.k,m2(n.p,(J(),Kn),i),r=new l6(1,c,n.c),r.n.d=n.k,m2(n.p,ae,r),f=new l6(0,c,n.c),f.n.c=n.k,m2(n.p,Gn,f),t=new l6(0,c,n.c),t.n.b=n.k,m2(n.p,Vn,t))}function x7e(n){var e,t,i;switch(e=u(k(n.d,(nn(),Qh)),218),e.g){case 2:t=lTe(n);break;case 3:t=(i=new X,Rt(gt(Vc(qr(qr(new $n(null,new xn(n.d.b,16)),new Pbn),new Ibn),new Obn),new gbn),new U5n(i)),i);break;default:throw T(new $r("Compaction not supported for "+e+" edges."))}$je(n,t),$i(new Rp(n.g),new G5n(n))}function L7e(n,e){var t;return t=new pI,e&&Pr(t,u(te(n.a,Iy),94)),I(e,470)&&Pr(t,u(te(n.a,Oy),94)),I(e,354)?(Pr(t,u(te(n.a,Rr),94)),t):(I(e,82)&&Pr(t,u(te(n.a,he),94)),I(e,239)?(Pr(t,u(te(n.a,Ot),94)),t):I(e,186)?(Pr(t,u(te(n.a,_u),94)),t):(I(e,352)&&Pr(t,u(te(n.a,bi),94)),t))}function Go(){Go=N,Q4=new tr((Xe(),_P),Q(1)),rS=new tr(ed,80),iWn=new tr(jhn,5),XUn=new tr(Tp,$4),eWn=new tr(tH,Q(1)),tWn=new tr(iH,(qn(),!0)),Orn=new vd(50),ZUn=new tr(nd,Orn),Srn=NP,Drn=n9,VUn=new tr(WK,!1),Irn=ky,YUn=_l,JUn=Za,QUn=_g,nWn=rw,Prn=(YJ(),KUn),xR=zUn,iS=_Un,FR=HUn,$rn=GUn}function N7e(n){var e,t,i,r,c,o,f,h;for(h=new bSn,f=new E(n.a);f.a0&&e=0)return!1;if(e.p=t.b,W(t.e,e),r==(Qn(),pi)||r==Tc){for(o=new E(e.j);o.a1||o==-1)&&(c|=16),r.Bb&uc&&(c|=64)),t.Bb&Yi&&(c|=Bb),c|=Eo):I(e,457)?c|=512:(i=e.Bj(),i&&i.i&1&&(c|=256)),n.Bb&512&&(c|=128),c}function T6(n,e){var t,i,r,c,o;for(n=n==null?ru:(_n(n),n),r=0;rn.d[f.p]&&(t+=jX(n.b,c),ll(n.a,Q(c)))):++o;for(t+=n.b.d*o;!Hv(n.a);)ZX(n.b,u(y2(n.a),19).a)}return t}function U7e(n,e){var t;return n.f==mH?(t=Sd(Er((gu(),xi),e)),n.e?t==4&&e!=(z2(),Dp)&&e!=(z2(),Op)&&e!=(z2(),kH)&&e!=(z2(),yH):t==2):n.d&&(n.d.Hc(e)||n.d.Hc(A2(Er((gu(),xi),e)))||n.d.Hc(rg((gu(),xi),n.b,e)))?!0:n.f&&qY((gu(),n.f),E8(Er(xi,e)))?(t=Sd(Er(xi,e)),n.e?t==4:t==2):!1}function W7e(n,e,t,i){var r,c,o,f,h,l,a,d;return o=u(hn(t,(Xe(),Mp)),8),h=o.a,a=o.b+n,r=y.Math.atan2(a,h),r<0&&(r+=ag),r+=e,r>ag&&(r-=ag),f=u(hn(i,Mp),8),l=f.a,d=f.b+n,c=y.Math.atan2(d,l),c<0&&(c+=ag),c+=e,c>ag&&(c-=ag),Zo(),mo(1e-10),y.Math.abs(r-c)<=1e-10||r==c||isNaN(r)&&isNaN(c)?0:rc?1:pd(isNaN(r),isNaN(c))}function Wx(n){var e,t,i,r,c,o,f;for(f=new we,i=new E(n.a.b);i.a=n.o)throw T(new qq);f=e>>5,o=e&31,c=Ih(1,ge(Ih(o,1))),r?n.n[t][f]=cf(n.n[t][f],c):n.n[t][f]=ui(n.n[t][f],XU(c)),c=Ih(c,1),i?n.n[t][f]=cf(n.n[t][f],c):n.n[t][f]=ui(n.n[t][f],XU(c))}catch(h){throw h=jt(h),I(h,320)?T(new mr(bN+n.o+"*"+n.p+wN+e+Ji+t+gN)):T(h)}}function cZ(n,e,t,i){var r,c,o;e&&(c=K(Y(k(e,(cc(),O1))))+i,o=t+K(Y(k(e,kP)))/2,H(e,mK,Q(ge(tu(y.Math.round(c))))),H(e,pon,Q(ge(tu(y.Math.round(o))))),e.d.b==0||cZ(n,u(fE((r=_e(new X1(e).a.d,0),new e2(r))),86),t+K(Y(k(e,kP)))+n.a,i+K(Y(k(e,vv)))),k(e,vK)!=null&&cZ(n,u(k(e,vK),86),t,i))}function V7e(n,e){var t,i,r,c,o,f,h,l,a,d,g;for(h=Gi(e.a),r=K(Y(k(h,(nn(),Qa))))*2,a=K(Y(k(h,$g))),l=y.Math.max(r,a),c=F(Ei,pr,25,e.f-e.c+1,15,1),i=-l,t=0,f=e.b.Kc();f.Ob();)o=u(f.Pb(),10),i+=n.a[o.c.p]+l,c[t++]=i;for(i+=n.a[e.a.c.p]+l,c[t++]=i,g=new E(e.e);g.a0&&(i=(!n.n&&(n.n=new V(Rr,n,1,7)),u(D(n.n,0),137)).a,!i||De(De((e.a+=' "',e),i),'"'))),De(dd(De(dd(De(dd(De(dd((e.a+=" (",e),n.i),","),n.j)," | "),n.g),","),n.f),")"),e.a)}function jBn(n){var e,t,i;return n.Db&64?Ex(n):(e=new Yu(Itn),t=n.k,t?De(De((e.a+=' "',e),t),'"'):(!n.n&&(n.n=new V(Rr,n,1,7)),n.n.i>0&&(i=(!n.n&&(n.n=new V(Rr,n,1,7)),u(D(n.n,0),137)).a,!i||De(De((e.a+=' "',e),i),'"'))),De(dd(De(dd(De(dd(De(dd((e.a+=" (",e),n.i),","),n.j)," | "),n.g),","),n.f),")"),e.a)}function Vx(n,e){var t,i,r,c,o,f,h;if(e==null||e.length==0)return null;if(r=u(vc(n.a,e),149),!r){for(i=(f=new Mh(n.b).a.vc().Kc(),new L0(f));i.a.Ob();)if(t=(c=u(i.a.Pb(),42),u(c.dd(),149)),o=t.c,h=e.length,Mn(o.substr(o.length-h,h),e)&&(e.length==o.length||Di(o,o.length-e.length-1)==46)){if(r)return null;r=t}r&&yr(n.a,e,r)}return r}function Y7e(n,e){var t,i,r,c;return t=new zln,i=u(ts(Vc(new $n(null,new xn(n.f,16)),t),cb(new Vg,new Qg,new Jg,new Yg,A(M(Bu,1),z,132,0,[(lf(),Rb),ls]))),21),r=i.gc(),i=u(ts(Vc(new $n(null,new xn(e.f,16)),t),cb(new Vg,new Qg,new Jg,new Yg,A(M(Bu,1),z,132,0,[Rb,ls]))),21),c=i.gc(),rr.p?(si(c,ae),c.d&&(f=c.o.b,e=c.a.b,c.a.b=f-e)):c.j==ae&&r.p>n.p&&(si(c,Kn),c.d&&(f=c.o.b,e=c.a.b,c.a.b=-(f-e)));break}return r}function nke(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v;if(c=t,t1,f&&(i=new fn(r,t.b),Ke(e.a,i)),V5(e.a,A(M(di,1),q,8,0,[g,d]))}function Qx(n,e,t){var i,r,c,o,f,h;if(e)if(t<=-1){if(i=On(e.Tg(),-1-t),I(i,99))return u(i,18);for(o=u(e.ah(i),153),f=0,h=o.gc();f0){for(r=h.length;r>0&&h[r-1]=="";)--r;r=40,o&&lye(n),wje(n),X8e(n),t=WDn(n),i=0;t&&i0&&Ke(n.f,c)):(n.c[o]-=l+1,n.c[o]<=0&&n.a[o]>0&&Ke(n.e,c))))}function Mke(n){var e,t,i,r,c,o,f,h,l;for(f=new Y1(u(pe(new Wln),62)),l=Qt,t=new E(n.d);t.a=0&&ht?e:t;l<=d;++l)l==t?f=i++:(c=r[l],a=v.rl(c.ak()),l==e&&(h=l==d&&!a?i-1:i),a&&++i);return g=u(o6(n,e,t),72),f!=h&&Gp(n,new R8(n.e,7,o,Q(f),p.dd(),h)),g}}else return u(Dx(n,e,t),72);return u(o6(n,e,t),72)}function Ike(n,e){var t,i,r,c,o,f,h;for(le(e,"Port order processing",1),h=u(k(n,(nn(),Ssn)),421),i=new E(n.b);i.a=0&&(f=$3e(n,o),!(f&&(l<22?h.l|=1<>>1,o.m=a>>>1|(d&1)<<21,o.l=g>>>1|(a&1)<<21,--l;return t&&sF(h),c&&(i?(Il=z3(n),r&&(Il=xOn(Il,(I3(),gin)))):Il=Bc(n.l,n.m,n.h)),h}function $ke(n,e){var t,i,r,c,o,f,h,l,a,d;for(l=n.e[e.c.p][e.p]+1,h=e.c.a.c.length+1,f=new E(n.a);f.a0&&(Te(0,n.length),n.charCodeAt(0)==45||(Te(0,n.length),n.charCodeAt(0)==43))?1:0,i=o;it)throw T(new Pf(c0+n+'"'));return f}function Fke(n){var e,t,i,r,c,o,f;for(o=new Tt,c=new E(n.a);c.a1)&&e==1&&u(n.a[n.b],10).k==(Qn(),Ju)?W2(u(n.a[n.b],10),(us(),yh)):i&&(!t||(n.c-n.b&n.a.length-1)>1)&&e==1&&u(n.a[n.c-1&n.a.length-1],10).k==(Qn(),Ju)?W2(u(n.a[n.c-1&n.a.length-1],10),(us(),Kl)):(n.c-n.b&n.a.length-1)==2?(W2(u(t6(n),10),(us(),yh)),W2(u(t6(n),10),Kl)):S9e(n,r),kX(n)}function Nke(n,e,t){var i,r,c,o,f;for(c=0,r=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));r.e!=r.i.gc();)i=u(oe(r),33),o="",(!i.n&&(i.n=new V(Rr,i,1,7)),i.n).i==0||(o=u(D((!i.n&&(i.n=new V(Rr,i,1,7)),i.n),0),137).a),f=new hF(c++,e,o),Pr(f,i),H(f,(cc(),Wm),i),f.e.b=i.j+i.f/2,f.f.a=y.Math.max(i.g,1),f.e.a=i.i+i.g/2,f.f.b=y.Math.max(i.f,1),Ke(e.b,f),_c(t.f,i,f)}function Bke(n){var e,t,i,r,c;i=u(k(n,(G(),rt)),33),c=u(hn(i,(nn(),Xa)),174).Hc((Qu(),id)),n.e||(r=u(k(n,Mc),21),e=new fn(n.f.a+n.d.b+n.d.c,n.f.b+n.d.d+n.d.a),r.Hc((or(),$s))?(gr(i,Lt,(Mi(),Ac)),t0(i,e.a,e.b,!1,!0)):on(sn(hn(i,H_)))||t0(i,e.a,e.b,!0,!0)),c?gr(i,Xa,Cn(id)):gr(i,Xa,(t=u(xo(o9),9),new ks(t,u(bo(t,t.length),9),0)))}function dZ(n,e,t){var i,r,c,o;if(e[0]>=n.length)return t.o=0,!0;switch(Di(n,e[0])){case 43:r=1;break;case 45:r=-1;break;default:return t.o=0,!0}if(++e[0],c=e[0],o=tM(n,e),o==0&&e[0]==c)return!1;if(e[0]=0&&f!=t&&(c=new gi(n,1,f,o,null),i?i.Ei(c):i=c),t>=0&&(c=new gi(n,1,t,f==t?o:null,e),i?i.Ei(c):i=c)),i}function _Bn(n){var e,t,i;if(n.b==null){if(i=new i1,n.i!=null&&(dr(i,n.i),i.a+=":"),n.f&256){for(n.f&256&&n.a!=null&&(n1e(n.i)||(i.a+="//"),dr(i,n.a)),n.d!=null&&(i.a+="/",dr(i,n.d)),n.f&16&&(i.a+="/"),e=0,t=n.j.length;eg?!1:(d=(h=O6(i,g,!1),h.a),a+f+d<=e.b&&(B8(t,c-t.s),t.c=!0,B8(i,c-t.s),k7(i,t.s,t.t+t.d+f),i.k=!0,TV(t.q,i),p=!0,r&&(XC(e,i),i.j=e,n.c.length>o&&(T7((Ln(o,n.c.length),u(n.c[o],200)),i),(Ln(o,n.c.length),u(n.c[o],200)).a.c.length==0&&h1(n,o)))),p)}function Uke(n,e){var t,i,r,c,o,f;if(le(e,"Partition midprocessing",1),r=new Od,Rt(gt(new $n(null,new xn(n.a,16)),new w0n),new I5n(r)),r.d!=0){for(f=u(ts($Mn((c=r.i,new $n(null,(c||(r.i=new Sw(r,r.c))).Nc()))),ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[(lf(),ls)]))),15),i=f.Kc(),t=u(i.Pb(),19);i.Ob();)o=u(i.Pb(),19),V9e(u(ct(r,t),21),u(ct(r,o),21)),t=o;ce(e)}}function qBn(n,e,t){var i,r,c,o,f,h,l,a;if(e.p==0){for(e.p=1,o=t,o||(r=new X,c=(i=u(xo(Zi),9),new ks(i,u(bo(i,i.length),9),0)),o=new Si(r,c)),u(o.a,15).Fc(e),e.k==(Qn(),Xt)&&u(o.b,21).Fc(u(k(e,(G(),ec)),61)),h=new E(e.j);h.a0){if(r=u(n.Ab.g,1934),e==null){for(c=0;c1)for(i=new E(r);i.at.s&&ff&&(f=r,a.c=F(Zn,rn,1,0,5,1)),r==f&&W(a,new Si(t.c.i,t)));Pn(),wi(a,n.c),Q0(n.b,h.p,a)}}function Yke(n,e){var t,i,r,c,o,f,h,l,a;for(o=new E(e.b);o.af&&(f=r,a.c=F(Zn,rn,1,0,5,1)),r==f&&W(a,new Si(t.d.i,t)));Pn(),wi(a,n.c),Q0(n.f,h.p,a)}}function zBn(n){wd(n,new Ia(ld(od(hd(fd(new Zl,f0),"ELK Box"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges."),new m2n))),Z(n,f0,u0,Gfn),Z(n,f0,Db,15),Z(n,f0,hk,Q(0)),Z(n,f0,dA,cn(Kfn)),Z(n,f0,hg,cn(LZn)),Z(n,f0,tp,cn(NZn)),Z(n,f0,ep,qHn),Z(n,f0,lk,cn(Hfn)),Z(n,f0,ip,cn(qfn)),Z(n,f0,Ctn,cn(qK)),Z(n,f0,sA,cn(xZn))}function UBn(n,e){var t,i,r,c,o,f,h,l,a;if(r=n.i,o=r.o.a,c=r.o.b,o<=0&&c<=0)return J(),Xr;switch(l=n.n.a,a=n.n.b,f=n.o.a,t=n.o.b,e.g){case 2:case 1:if(l<0)return J(),Gn;if(l+f>o)return J(),Vn;break;case 4:case 3:if(a<0)return J(),Kn;if(a+t>c)return J(),ae}return h=(l+f/2)/o,i=(a+t/2)/c,h+i<=1&&h-i<=0?(J(),Gn):h+i>=1&&h-i>=0?(J(),Vn):i<.5?(J(),Kn):(J(),ae)}function Zke(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m;for(t=!1,a=K(Y(k(e,(nn(),T0)))),v=Cl*a,r=new E(e.b);r.ah+v&&(m=d.g+g.g,g.a=(g.g*g.a+d.g*d.a)/m,g.g=m,d.f=g,t=!0)),c=f,d=g;return t}function WBn(n,e,t,i,r,c,o){var f,h,l,a,d,g;for(g=new d2,l=e.Kc();l.Ob();)for(f=u(l.Pb(),839),d=new E(f.wf());d.a0?f.a?(l=f.b.rf().b,r>l&&(n.v||f.c.d.c.length==1?(o=(r-l)/2,f.d.d=o,f.d.a=o):(t=u(un(f.c.d,0),181).rf().b,i=(t-l)/2,f.d.d=y.Math.max(0,i),f.d.a=r-i-l))):f.d.a=n.t+r:D5(n.u)&&(c=HJ(f.b),c.d<0&&(f.d.d=-c.d),c.d+c.a>f.b.rf().b&&(f.d.a=c.d+c.a-f.b.rf().b))}function tye(n,e){var t;switch(U8(n)){case 6:return ki(e);case 7:return G0(e);case 8:return q0(e);case 3:return Array.isArray(e)&&(t=U8(e),!(t>=14&&t<=16));case 11:return e!=null&&typeof e===CL;case 12:return e!=null&&(typeof e===Q7||typeof e==CL);case 0:return WF(e,n.__elementTypeId$);case 2:return OD(e)&&e.im!==Xg;case 1:return OD(e)&&e.im!==Xg||WF(e,n.__elementTypeId$);default:return!0}}function XBn(n,e){var t,i,r,c;return i=y.Math.min(y.Math.abs(n.c-(e.c+e.b)),y.Math.abs(n.c+n.b-e.c)),c=y.Math.min(y.Math.abs(n.d-(e.d+e.a)),y.Math.abs(n.d+n.a-e.d)),t=y.Math.abs(n.c+n.b/2-(e.c+e.b/2)),t>n.b/2+e.b/2||(r=y.Math.abs(n.d+n.a/2-(e.d+e.a/2)),r>n.a/2+e.a/2)?1:t==0&&r==0?0:t==0?c/r+1:r==0?i/t+1:y.Math.min(i/t,c/r)+1}function VBn(n,e){var t,i,r,c,o,f;return r=fV(n),f=fV(e),r==f?n.e==e.e&&n.a<54&&e.a<54?n.fe.f?1:0:(i=n.e-e.e,t=(n.d>0?n.d:y.Math.floor((n.a-1)*uKn)+1)-(e.d>0?e.d:y.Math.floor((e.a-1)*uKn)+1),t>i+1?r:t0&&(o=Fw(o,pRn(i))),A$n(c,o))):r0&&n.d!=(W5(),BR)&&(f+=o*(i.d.a+n.a[e.b][i.b]*(e.d.a-i.d.a)/t)),t>0&&n.d!=(W5(),LR)&&(h+=o*(i.d.b+n.a[e.b][i.b]*(e.d.b-i.d.b)/t)));switch(n.d.g){case 1:return new fn(f/c,e.d.b);case 2:return new fn(e.d.a,h/c);default:return new fn(f/c,h/c)}}function QBn(n,e){V3();var t,i,r,c,o;if(o=u(k(n.i,(nn(),Lt)),98),c=n.j.g-e.j.g,c!=0||!(o==(Mi(),td)||o==Eh||o==Ac))return 0;if(o==(Mi(),td)&&(t=u(k(n,P1),19),i=u(k(e,P1),19),t&&i&&(r=t.a-i.a,r!=0)))return r;switch(n.j.g){case 1:return ni(n.n.a,e.n.a);case 2:return ni(n.n.b,e.n.b);case 3:return ni(e.n.a,n.n.a);case 4:return ni(e.n.b,n.n.b);default:throw T(new $r($nn))}}function JBn(n){var e,t,i,r,c,o;for(t=(!n.a&&(n.a=new Yt(io,n,5)),n.a).i+2,o=new Pc(t),W(o,new fn(n.j,n.k)),Rt(new $n(null,(!n.a&&(n.a=new Yt(io,n,5)),new xn(n.a,16))),new z6n(o)),W(o,new fn(n.b,n.c)),e=1;e0&&(u7(h,!1,(sr(),Zs)),u7(h,!0,Ao)),Zc(e.g,new H7n(n,t)),it(n.g,e,t)}function ZBn(){ZBn=N;var n;for(Cin=A(M(be,1),Le,25,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),bR=F(be,Le,25,37,15,1),yzn=A(M(be,1),Le,25,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),Tin=F(Yl,QL,25,37,14,1),n=2;n<=36;n++)bR[n]=Gt(y.Math.pow(n,Cin[n])),Tin[n]=M7(IM,bR[n])}function rye(n){var e;if((!n.a&&(n.a=new V(Mt,n,6,6)),n.a).i!=1)throw T(new Hn(oqn+(!n.a&&(n.a=new V(Mt,n,6,6)),n.a).i));return e=new hu,r7(u(D((!n.b&&(n.b=new Fn(he,n,4,7)),n.b),0),82))&&Vi(e,x_n(n,r7(u(D((!n.b&&(n.b=new Fn(he,n,4,7)),n.b),0),82)),!1)),r7(u(D((!n.c&&(n.c=new Fn(he,n,5,8)),n.c),0),82))&&Vi(e,x_n(n,r7(u(D((!n.c&&(n.c=new Fn(he,n,5,8)),n.c),0),82)),!0)),e}function nRn(n,e){var t,i,r,c,o;for(e.d?r=n.a.c==(xf(),M0)?Lr(e.b):ei(e.b):r=n.a.c==(xf(),I1)?Lr(e.b):ei(e.b),c=!1,i=new re(ue(r.a.Kc(),new An));Se(i);)if(t=u(ve(i),17),o=on(n.a.f[n.a.g[e.b.p].p]),!(!o&&!Xi(t)&&t.c.i.c==t.d.i.c)&&!(on(n.a.n[n.a.g[e.b.p].p])||on(n.a.n[n.a.g[e.b.p].p]))&&(c=!0,Ah(n.b,n.a.g[b3e(t,e.b).p])))return e.c=!0,e.a=t,e;return e.c=c,e.a=null,e}function cye(n,e,t,i,r){var c,o,f,h,l,a,d;for(Pn(),wi(n,new I2n),f=new Pi(n,0),d=new X,c=0;f.bc*2?(a=new zC(d),l=bu(o)/zu(o),h=kL(a,e,new i2,t,i,r,l),st(Lo(a.e),h),d.c=F(Zn,rn,1,0,5,1),c=0,d.c[d.c.length]=a,d.c[d.c.length]=o,c=bu(a)*zu(a)+bu(o)*zu(o)):(d.c[d.c.length]=o,c+=bu(o)*zu(o));return d}function wZ(n,e,t){var i,r,c,o,f,h,l;if(i=t.gc(),i==0)return!1;if(n.ej())if(h=n.fj(),IQ(n,e,t),o=i==1?n.Zi(3,null,t.Kc().Pb(),e,h):n.Zi(5,null,t,e,h),n.bj()){for(f=i<100?null:new Q1(i),c=e+i,r=e;r0){for(o=0;o>16==-15&&n.Cb.nh()&&L$(new D$(n.Cb,9,13,t,n.c,v1(Du(u(n.Cb,59)),n))):I(n.Cb,88)&&n.Db>>16==-23&&n.Cb.nh()&&(e=n.c,I(e,88)||(e=(Sn(),so)),I(t,88)||(t=(Sn(),so)),L$(new D$(n.Cb,9,10,t,e,v1(bc(u(n.Cb,26)),n)))))),n.c}function uye(n,e){var t,i,r,c,o,f,h,l,a,d;for(le(e,"Hypernodes processing",1),r=new E(n.b);r.at);return r}function tRn(n,e){var t,i,r;i=xu(n.d,1)!=0,!on(sn(k(e.j,(G(),v0))))&&!on(sn(k(e.j,Pg)))||B(k(e.j,(nn(),Ll)))===B((Rh(),Nl))?e.c.Tf(e.e,i):i=on(sn(k(e.j,v0))),_7(n,e,i,!0),on(sn(k(e.j,Pg)))&&H(e.j,Pg,(qn(),!1)),on(sn(k(e.j,v0)))&&(H(e.j,v0,(qn(),!1)),H(e.j,Pg,!0)),t=Sx(n,e);do{if(yV(n),t==0)return 0;i=!i,r=t,_7(n,e,i,!1),t=Sx(n,e)}while(r>t);return r}function iRn(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v;if(e==t)return!0;if(e=TY(n,e),t=TY(n,t),i=nx(e),i){if(a=nx(t),a!=i)return a?(h=i.Dj(),v=a.Dj(),h==v&&h!=null):!1;if(o=(!e.d&&(e.d=new Yt(ar,e,1)),e.d),c=o.i,g=(!t.d&&(t.d=new Yt(ar,t,1)),t.d),c==g.i){for(l=0;l0,f=TT(e,c),Uz(t?f.b:f.g,e),Hw(f).c.length==1&&Kt(i,f,i.c.b,i.c),r=new Si(c,e),ll(n.o,r),Jc(n.e.a,c))}function sRn(n,e){var t,i,r,c,o,f,h;return i=y.Math.abs(qE(n.b).a-qE(e.b).a),f=y.Math.abs(qE(n.b).b-qE(e.b).b),r=0,h=0,t=1,o=1,i>n.b.b/2+e.b.b/2&&(r=y.Math.min(y.Math.abs(n.b.c-(e.b.c+e.b.b)),y.Math.abs(n.b.c+n.b.b-e.b.c)),t=1-r/i),f>n.b.a/2+e.b.a/2&&(h=y.Math.min(y.Math.abs(n.b.d-(e.b.d+e.b.a)),y.Math.abs(n.b.d+n.b.a-e.b.d)),o=1-h/f),c=y.Math.min(t,o),(1-c)*y.Math.sqrt(i*i+f*f)}function aye(n){var e,t,i,r;for(mL(n,n.e,n.f,(Id(),Rl),!0,n.c,n.i),mL(n,n.e,n.f,Rl,!1,n.c,n.i),mL(n,n.e,n.f,Lg,!0,n.c,n.i),mL(n,n.e,n.f,Lg,!1,n.c,n.i),bye(n,n.c,n.e,n.f,n.i),i=new Pi(n.i,0);i.b=65;t--)Mf[t]=t-65<<24>>24;for(i=122;i>=97;i--)Mf[i]=i-97+26<<24>>24;for(r=57;r>=48;r--)Mf[r]=r-48+52<<24>>24;for(Mf[43]=62,Mf[47]=63,c=0;c<=25;c++)R1[c]=65+c&Ut;for(o=26,h=0;o<=51;++o,h++)R1[o]=97+h&Ut;for(n=52,f=0;n<=61;++n,f++)R1[n]=48+f&Ut;R1[62]=43,R1[63]=47}function dye(n,e){var t,i,r,c,o,f,h,l,a,d,g,p;if(n.dc())return new Li;for(l=0,d=0,r=n.Kc();r.Ob();)i=u(r.Pb(),37),c=i.f,l=y.Math.max(l,c.a),d+=c.a*c.b;for(l=y.Math.max(l,y.Math.sqrt(d)*K(Y(k(u(n.Kc().Pb(),37),(nn(),zS))))),g=0,p=0,h=0,t=e,f=n.Kc();f.Ob();)o=u(f.Pb(),37),a=o.f,g+a.a>l&&(g=0,p+=h+e,h=0),M6(o,g,p),t=y.Math.max(t,g+a.a),h=y.Math.max(h,a.b),g+=a.a+e;return new fn(t+e,p+h+e)}function bye(n,e,t,i,r){var c,o,f,h,l,a,d;for(o=new E(e);o.ac)return J(),Vn;break;case 4:case 3:if(h<0)return J(),Kn;if(h+n.f>r)return J(),ae}return o=(f+n.g/2)/c,t=(h+n.f/2)/r,o+t<=1&&o-t<=0?(J(),Gn):o+t>=1&&o-t>=0?(J(),Vn):t<.5?(J(),Kn):(J(),ae)}function wye(n,e,t,i,r){var c,o;if(c=qi(ui(e[0],fr),ui(i[0],fr)),n[0]=ge(c),c=cl(c,32),t>=r){for(o=1;o0&&(r.b[o++]=0,r.b[o++]=c.b[0]-1),e=1;e0&&(II(h,h.d-r.d),r.c==(No(),Bl)&<e(h,h.a-r.d),h.d<=0&&h.i>0&&Kt(e,h,e.c.b,e.c)));for(c=new E(n.f);c.a0&&(ej(f,f.i-r.d),r.c==(No(),Bl)&&ate(f,f.b-r.d),f.i<=0&&f.d>0&&Kt(t,f,t.c.b,t.c)))}function gye(n,e,t){var i,r,c,o,f,h,l,a;for(le(t,"Processor compute fanout",1),Cu(n.b),Cu(n.a),f=null,c=_e(e.b,0);!f&&c.b!=c.d.c;)l=u(Re(c),86),on(sn(k(l,(cc(),iw))))&&(f=l);for(h=new Tt,Kt(h,f,h.c.b,h.c),v_n(n,h),a=_e(e.b,0);a.b!=a.d.c;)l=u(Re(a),86),o=Ce(k(l,(cc(),Um))),r=vc(n.b,o)!=null?u(vc(n.b,o),19).a:0,H(l,vP,Q(r)),i=1+(vc(n.a,o)!=null?u(vc(n.a,o),19).a:0),H(l,QJn,Q(i));ce(t)}function pye(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v;for(g=nve(n,t),h=0;h0),i.a.Xb(i.c=--i.b),d>g+h&&Wu(i);for(o=new E(p);o.a0),i.a.Xb(i.c=--i.b)}}function vye(){Je();var n,e,t,i,r,c;if(EH)return EH;for(n=new es(4),Ab(n,El(eR,!0)),F6(n,El("M",!0)),F6(n,El("C",!0)),c=new es(4),i=0;i<11;i++)yc(c,i,i);return e=new es(4),Ab(e,El("M",!0)),yc(e,4448,4607),yc(e,65438,65439),r=new v5(2),Oa(r,n),Oa(r,k9),t=new v5(2),t.$l(LE(c,El("L",!0))),t.$l(e),t=new ib(3,t),t=new PW(r,t),EH=t,EH}function mye(n){var e,t;if(e=Ce(hn(n,(Xe(),Zm))),!EOn(e,n)&&!wa(n,yv)&&((!n.a&&(n.a=new V(Ot,n,10,11)),n.a).i!=0||on(sn(hn(n,vy)))))if(e==null||mb(e).length==0){if(!EOn(Jn,n))throw t=De(De(new Yu("Unable to load default layout algorithm "),Jn)," for unconfigured node "),CM(n,t),T(new pw(t.a))}else throw t=De(De(new Yu("Layout algorithm '"),e),"' not found for "),CM(n,t),T(new pw(t.a))}function tL(n){var e,t,i,r,c,o,f,h,l,a,d,g,p;if(t=n.i,e=n.n,n.b==0)for(p=t.c+e.b,g=t.b-e.b-e.c,o=n.a,h=0,a=o.length;h0&&(d-=i[0]+n.c,i[0]+=n.c),i[2]>0&&(d-=i[2]+n.c),i[1]=y.Math.max(i[1],d),BE(n.a[1],t.c+e.b+i[0]-(i[1]-d)/2,i[1]);for(c=n.a,f=0,l=c.length;f0?(n.n.c.length-1)*n.i:0,i=new E(n.n);i.a1)for(i=_e(r,0);i.b!=i.d.c;)for(t=u(Re(i),231),c=0,h=new E(t.e);h.a0&&(e[0]+=n.c,d-=e[0]),e[2]>0&&(d-=e[2]+n.c),e[1]=y.Math.max(e[1],d),RE(n.a[1],i.d+t.d+e[0]-(e[1]-d)/2,e[1]);else for(v=i.d+t.d,p=i.a-t.d-t.a,o=n.a,h=0,a=o.length;h=0&&c!=t))throw T(new Hn(yk));for(r=0,h=0;h0||zd(r.b.d,n.b.d+n.b.a)==0&&i.b<0||zd(r.b.d+r.b.a,n.b.d)==0&&i.b>0){f=0;break}}else f=y.Math.min(f,lLn(n,r,i));f=y.Math.min(f,lRn(n,c,f,i))}return f}function z7(n,e){var t,i,r,c,o,f,h;if(n.b<2)throw T(new Hn("The vector chain must contain at least a source and a target point."));for(r=(ne(n.b!=0),u(n.a.a.c,8)),uE(e,r.a,r.b),h=new b2((!e.a&&(e.a=new Yt(io,e,5)),e.a)),o=_e(n,1);o.aK(nf(o.g,o.d[0]).a)?(ne(h.b>0),h.a.Xb(h.c=--h.b),X0(h,o),r=!0):f.e&&f.e.gc()>0&&(c=(!f.e&&(f.e=new X),f.e).Mc(e),l=(!f.e&&(f.e=new X),f.e).Mc(t),(c||l)&&((!f.e&&(f.e=new X),f.e).Fc(o),++o.c));r||(i.c[i.c.length]=o)}function bRn(n){var e,t,i;if(Cw(u(k(n,(nn(),Lt)),98)))for(t=new E(n.j);t.a>>0,"0"+e.toString(16)),i="\\x"+Zu(t,t.length-2,t.length)):n>=Yi?(t=(e=n>>>0,"0"+e.toString(16)),i="\\v"+Zu(t,t.length-6,t.length)):i=""+String.fromCharCode(n&Ut)}return i}function rL(n,e){var t,i,r,c,o,f,h,l,a,d;if(o=n.e,h=e.e,h==0)return n;if(o==0)return e.e==0?e:new Pw(-e.e,e.d,e.a);if(c=n.d,f=e.d,c+f==2)return t=ui(n.a[0],fr),i=ui(e.a[0],fr),o<0&&(t=P3(t)),h<0&&(i=P3(i)),m7(vl(t,i));if(r=c!=f?c>f?1:-1:YV(n.a,e.a,c),r==-1)d=-h,a=o==h?M$(e.a,f,n.a,c):S$(e.a,f,n.a,c);else if(d=o,o==h){if(r==0)return jl(),W4;a=M$(n.a,c,e.a,f)}else a=S$(n.a,c,e.a,f);return l=new Pw(d,a.length,a),K5(l),l}function jZ(n){var e,t,i,r,c,o;for(this.e=new X,this.a=new X,t=n.b-1;t<3;t++)s3(n,0,u(qo(n,0),8));if(n.b<4)throw T(new Hn("At (least dimension + 1) control points are necessary!"));for(this.b=3,this.d=!0,this.c=!1,l9e(this,n.b+this.b-1),o=new X,c=new E(this.e),e=0;e=e.o&&t.f<=e.f||e.a*.5<=t.f&&e.a*1.5>=t.f){if(o=u(un(e.n,e.n.c.length-1),211),o.e+o.d+t.g+r<=i&&(c=u(un(e.n,e.n.c.length-1),211),c.f-n.f+t.f<=n.b||n.a.c.length==1))return yQ(e,t),!0;if(e.s+t.g<=i&&(e.t+e.d+t.f+r<=n.b||n.a.c.length==1))return W(e.b,t),f=u(un(e.n,e.n.c.length-1),211),W(e.n,new lC(e.s,f.f+f.a+e.i,e.i)),iJ(u(un(e.n,e.n.c.length-1),211),t),oRn(e,t),!0}return!1}function gRn(n,e,t){var i,r,c,o;return n.ej()?(r=null,c=n.fj(),i=n.Zi(1,o=B$(n,e,t),t,e,c),n.bj()&&!(n.ni()&&o!=null?tt(o,t):B(o)===B(t))?(o!=null&&(r=n.dj(o,r)),r=n.cj(t,r),n.ij()&&(r=n.lj(o,t,r)),r?(r.Ei(i),r.Fi()):n.$i(i)):(n.ij()&&(r=n.lj(o,t,r)),r?(r.Ei(i),r.Fi()):n.$i(i)),o):(o=B$(n,e,t),n.bj()&&!(n.ni()&&o!=null?tt(o,t):B(o)===B(t))&&(r=null,o!=null&&(r=n.dj(o,null)),r=n.cj(t,r),r&&r.Fi()),o)}function S6(n,e){var t,i,r,c,o,f,h,l;e%=24,n.q.getHours()!=e&&(i=new y.Date(n.q.getTime()),i.setDate(i.getDate()+1),f=n.q.getTimezoneOffset()-i.getTimezoneOffset(),f>0&&(h=f/60|0,l=f%60,r=n.q.getDate(),t=n.q.getHours(),t+h>=24&&++r,c=new y.Date(n.q.getFullYear(),n.q.getMonth(),r,e+h,n.q.getMinutes()+l,n.q.getSeconds(),n.q.getMilliseconds()),n.q.setTime(c.getTime()))),o=n.q.getTime(),n.q.setTime(o+36e5),n.q.getHours()!=e&&n.q.setTime(o)}function Sye(n,e){var t,i,r,c,o;if(le(e,"Path-Like Graph Wrapping",1),n.b.c.length==0){ce(e);return}if(r=new PY(n),o=(r.i==null&&(r.i=jV(r,new HH)),K(r.i)*r.f),t=o/(r.i==null&&(r.i=jV(r,new HH)),K(r.i)),r.b>t){ce(e);return}switch(u(k(n,(nn(),W_)),337).g){case 2:c=new GH;break;case 0:c=new KH;break;default:c=new zH}if(i=c.Vf(n,r),!c.Wf())switch(u(k(n,cP),338).g){case 2:i=aLn(r,i);break;case 1:i=lxn(r,i)}Tje(n,r,i),ce(e)}function Pye(n,e){var t,i,r,c;if(dle(n.d,n.e),n.c.a.$b(),K(Y(k(e.j,(nn(),XS))))!=0||K(Y(k(e.j,XS)))!=0)for(t=D4,B(k(e.j,Ll))!==B((Rh(),Nl))&&H(e.j,(G(),v0),(qn(),!0)),c=u(k(e.j,xm),19).a,r=0;rr&&++l,W(o,(Ln(f+l,e.c.length),u(e.c[f+l],19))),h+=(Ln(f+l,e.c.length),u(e.c[f+l],19)).a-i,++t;t1&&(h>bu(f)*zu(f)/2||o.b==0)&&(d=new zC(g),a=bu(f)/zu(f),l=kL(d,e,new i2,t,i,r,a),st(Lo(d.e),l),f=d,p.c[p.c.length]=d,h=0,g.c=F(Zn,rn,1,0,5,1)));return Zt(p,g),p}function Dye(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m;if(t.mh(e)&&(a=(p=e,p?u(i,49).xh(p):null),a))if(m=t.bh(e,n.a),v=e.t,v>1||v==-1)if(d=u(m,69),g=u(a,69),d.dc())g.$b();else for(o=!!ir(e),c=0,f=n.a?d.Kc():d.Zh();f.Ob();)l=u(f.Pb(),56),r=u(xd(n,l),56),r?(o?(h=g.Xc(r),h==-1?g.Xh(c,r):c!=h&&g.ji(c,r)):g.Xh(c,r),++c):n.b&&!o&&(g.Xh(c,l),++c);else m==null?a.Wb(null):(r=xd(n,m),r==null?n.b&&!ir(e)&&a.Wb(m):a.Wb(r))}function $ye(n,e){var t,i,r,c,o,f,h,l;for(t=new $dn,r=new re(ue(Lr(e).a.Kc(),new An));Se(r);)if(i=u(ve(r),17),!Xi(i)&&(f=i.c.i,RJ(f,oS))){if(l=nZ(n,f,oS,sS),l==-1)continue;t.b=y.Math.max(t.b,l),!t.a&&(t.a=new X),W(t.a,f)}for(o=new re(ue(ei(e).a.Kc(),new An));Se(o);)if(c=u(ve(o),17),!Xi(c)&&(h=c.d.i,RJ(h,sS))){if(l=nZ(n,h,sS,oS),l==-1)continue;t.d=y.Math.max(t.d,l),!t.c&&(t.c=new X),W(t.c,h)}return t}function pRn(n){a4();var e,t,i,r;if(e=Gt(n),n1e6)throw T(new bj("power of ten too big"));if(n<=nt)return P2(L7(fp[1],e),e);for(i=L7(fp[1],nt),r=i,t=tu(n-nt),e=Gt(n%nt);fc(t,nt)>0;)r=Fw(r,i),t=vl(t,nt);for(r=Fw(r,L7(fp[1],e)),r=P2(r,nt),t=tu(n-nt);fc(t,nt)>0;)r=P2(r,nt),t=vl(t,nt);return r=P2(r,e),r}function Fye(n,e){var t,i,r,c,o,f,h,l,a;for(le(e,"Hierarchical port dummy size processing",1),h=new X,a=new X,i=K(Y(k(n,(nn(),Dg)))),t=i*2,c=new E(n.b);c.al&&i>l)a=f,l=K(e.p[f.p])+K(e.d[f.p])+f.o.b+f.d.a;else{r=!1,t.n&&sa(t,"bk node placement breaks on "+f+" which should have been after "+a);break}if(!r)break}return t.n&&sa(t,e+" is feasible: "+r),r}function Rye(n,e,t,i){var r,c,o,f,h,l,a;for(f=-1,a=new E(n);a.a=C&&n.e[h.p]>v*n.b||O>=t*C)&&(g.c[g.c.length]=f,f=new X,Vi(o,c),c.a.$b(),l-=a,p=y.Math.max(p,l*n.b+m),l+=O,$=O,O=0,a=0,m=0);return new Si(p,g)}function qye(n){var e,t,i,r,c,o,f,h,l,a,d,g,p;for(t=(l=new Mh(n.c.b).a.vc().Kc(),new L0(l));t.a.Ob();)e=(f=u(t.a.Pb(),42),u(f.dd(),149)),r=e.a,r==null&&(r=""),i=wue(n.c,r),!i&&r.length==0&&(i=gge(n)),i&&!db(i.c,e,!1)&&Ke(i.c,e);for(o=_e(n.a,0);o.b!=o.d.c;)c=u(Re(o),478),a=j$(n.c,c.a),p=j$(n.c,c.b),a&&p&&Ke(a.c,new Si(p,c.c));for(_s(n.a),g=_e(n.b,0);g.b!=g.d.c;)d=u(Re(g),478),e=bue(n.c,d.a),h=j$(n.c,d.b),e&&h&&rre(e,h,d.c);_s(n.b)}function Gye(n,e,t){var i,r,c,o,f,h,l,a,d,g,p;c=new M9(n),o=new NFn,r=($8(o.g),$8(o.j),Cu(o.b),$8(o.d),$8(o.i),Cu(o.k),Cu(o.c),Cu(o.e),p=kLn(o,c,null),fNn(o,c),p),e&&(l=new M9(e),f=nje(l),JJ(r,A(M(xfn,1),rn,527,0,[f]))),g=!1,d=!1,t&&(l=new M9(t),kA in l.a&&(g=Dh(l,kA).ge().a),Dqn in l.a&&(d=Dh(l,Dqn).ge().a)),a=e8n(IIn(new zp,g),d),N5e(new Qgn,r,a),kA in c.a&&Ro(c,kA,null),(g||d)&&(h=new r2,dRn(a,h,g,d),Ro(c,kA,h)),i=new omn(o),Owe(new kz(r),i)}function zye(n,e,t){var i,r,c,o,f,h,l,a,d;for(o=new HFn,l=A(M(be,1),Le,25,15,[0]),r=-1,c=0,i=0,h=0;h0){if(r<0&&a.a&&(r=h,c=l[0],i=0),r>=0){if(f=a.b,h==r&&(f-=i++,f==0))return 0;if(!k_n(e,l,a,f,o)){h=r-1,l[0]=c;continue}}else if(r=-1,!k_n(e,l,a,0,o))return 0}else{if(r=-1,Di(a.c,0)==32){if(d=l[0],KPn(e,l),l[0]>d)continue}else if(T1e(e,a.c,l[0])){l[0]+=a.c.length;continue}return 0}return TCe(o,t)?l[0]:0}function I6(n){var e,t,i,r,c,o,f,h;if(!n.f){if(h=new YH,f=new YH,e=b9,o=e.a.zc(n,e),o==null){for(c=new ie(Ar(n));c.e!=c.i.gc();)r=u(oe(c),26),Dt(h,I6(r));e.a.Bc(n)!=null,e.a.gc()==0}for(i=(!n.s&&(n.s=new V(ou,n,21,17)),new ie(n.s));i.e!=i.i.gc();)t=u(oe(i),170),I(t,99)&&me(f,u(t,18));lb(f),n.r=new $En(n,(u(D(R((ol(),Nn).o),6),18),f.i),f.g),Dt(h,n.r),lb(h),n.f=new Ew((u(D(R(Nn.o),5),18),h.i),h.g),Ou(n).b&=-3}return n.f}function Uye(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v;for(o=n.o,i=F(be,Le,25,o,15,1),r=F(be,Le,25,o,15,1),t=n.p,e=F(be,Le,25,t,15,1),c=F(be,Le,25,t,15,1),l=0;l=0&&!zw(n,a,d);)--d;r[a]=d}for(p=0;p=0&&!zw(n,f,v);)--f;c[v]=f}for(h=0;he[g]&&gi[h]&&wM(n,h,g,!1,!0)}function EZ(n){var e,t,i,r,c,o,f,h;t=on(sn(k(n,(Go(),VUn)))),c=n.a.c.d,f=n.a.d.d,t?(o=Of(yi(new fn(f.a,f.b),c),.5),h=Of(Qr(n.e),.5),e=yi(st(new fn(c.a,c.b),o),h),Zz(n.d,e)):(r=K(Y(k(n.a,iWn))),i=n.d,c.a>=f.a?c.b>=f.b?(i.a=f.a+(c.a-f.a)/2+r,i.b=f.b+(c.b-f.b)/2-r-n.e.b):(i.a=f.a+(c.a-f.a)/2+r,i.b=c.b+(f.b-c.b)/2+r):c.b>=f.b?(i.a=c.a+(f.a-c.a)/2+r,i.b=f.b+(c.b-f.b)/2+r):(i.a=c.a+(f.a-c.a)/2+r,i.b=c.b+(f.b-c.b)/2-r-n.e.b))}function jc(n,e){var t,i,r,c,o,f,h;if(n==null)return null;if(c=n.length,c==0)return"";for(h=F(Ls,Rf,25,c,15,1),RX(0,c,n.length),RX(0,c,h.length),RCn(n,0,c,h,0),t=null,f=e,r=0,o=0;r0?Zu(t.a,0,c-1):""):n.substr(0,c-1):t?t.a:n}function kRn(n){wd(n,new Ia(ld(od(hd(fd(new Zl,La),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new han))),Z(n,La,vN,cn(Trn)),Z(n,La,mN,cn(IR)),Z(n,La,ep,cn(FUn)),Z(n,La,u0,cn(Crn)),Z(n,La,onn,cn(BUn)),Z(n,La,fnn,cn(NUn)),Z(n,La,snn,cn(RUn)),Z(n,La,hnn,cn(LUn)),Z(n,La,pnn,cn(xUn)),Z(n,La,vnn,cn(PR)),Z(n,La,mnn,cn(Ern)),Z(n,La,knn,cn(nS))}function CZ(n,e,t,i){var r,c,o,f,h,l,a,d,g;if(c=new qh(n),ea(c,(Qn(),Tc)),H(c,(nn(),Lt),(Mi(),Ac)),r=0,e){for(o=new wc,H(o,(G(),rt),e),H(c,rt,e.i),si(o,(J(),Gn)),Hr(o,c),g=Lf(e.e),l=g,a=0,d=l.length;a0)if(t-=i.length-e,t>=0){for(r.a+="0.";t>Ga.length;t-=Ga.length)YEn(r,Ga);Fjn(r,Ga,Gt(t)),De(r,i.substr(e))}else t=e-t,De(r,Zu(i,e,Gt(t))),r.a+=".",De(r,r8(i,Gt(t)));else{for(De(r,i.substr(e));t<-Ga.length;t+=Ga.length)YEn(r,Ga);Fjn(r,Ga,Gt(-t))}return r.a}function TZ(n,e,t,i){var r,c,o,f,h,l,a,d,g;return h=yi(new fn(t.a,t.b),n),l=h.a*e.b-h.b*e.a,a=e.a*i.b-e.b*i.a,d=(h.a*i.b-h.b*i.a)/a,g=l/a,a==0?l==0?(r=st(new fn(t.a,t.b),Of(new fn(i.a,i.b),.5)),c=al(n,r),o=al(st(new fn(n.a,n.b),e),r),f=y.Math.sqrt(i.a*i.a+i.b*i.b)*.5,c=0&&d<=1&&g>=0&&g<=1?st(new fn(n.a,n.b),Of(new fn(e.a,e.b),d)):null}function Xye(n,e,t){var i,r,c,o,f;if(i=u(k(n,(nn(),$_)),21),t.a>e.a&&(i.Hc((vb(),dy))?n.c.a+=(t.a-e.a)/2:i.Hc(by)&&(n.c.a+=t.a-e.a)),t.b>e.b&&(i.Hc((vb(),gy))?n.c.b+=(t.b-e.b)/2:i.Hc(wy)&&(n.c.b+=t.b-e.b)),u(k(n,(G(),Mc)),21).Hc((or(),$s))&&(t.a>e.a||t.b>e.b))for(f=new E(n.a);f.ae.a&&(i.Hc((vb(),dy))?n.c.a+=(t.a-e.a)/2:i.Hc(by)&&(n.c.a+=t.a-e.a)),t.b>e.b&&(i.Hc((vb(),gy))?n.c.b+=(t.b-e.b)/2:i.Hc(wy)&&(n.c.b+=t.b-e.b)),u(k(n,(G(),Mc)),21).Hc((or(),$s))&&(t.a>e.a||t.b>e.b))for(o=new E(n.a);o.ae&&(r=0,c+=a.b+t,d.c[d.c.length]=a,a=new oX(c,t),i=new lF(0,a.f,a,t),XC(a,i),r=0),i.b.c.length==0||h.f>=i.o&&h.f<=i.f||i.a*.5<=h.f&&i.a*1.5>=h.f?yQ(i,h):(o=new lF(i.s+i.r+t,a.f,a,t),XC(a,o),yQ(o,h)),r=h.i+h.g;return d.c[d.c.length]=a,d}function ig(n){var e,t,i,r,c,o,f,h;if(!n.a){if(n.o=null,h=new Smn(n),e=new J2n,t=b9,f=t.a.zc(n,t),f==null){for(o=new ie(Ar(n));o.e!=o.i.gc();)c=u(oe(o),26),Dt(h,ig(c));t.a.Bc(n)!=null,t.a.gc()==0}for(r=(!n.s&&(n.s=new V(ou,n,21,17)),new ie(n.s));r.e!=r.i.gc();)i=u(oe(r),170),I(i,322)&&me(e,u(i,34));lb(e),n.k=new DEn(n,(u(D(R((ol(),Nn).o),7),18),e.i),e.g),Dt(h,n.k),lb(h),n.a=new Ew((u(D(R(Nn.o),4),18),h.i),h.g),Ou(n).b&=-2}return n.a}function Yye(n,e,t,i,r,c,o){var f,h,l,a,d,g;return d=!1,h=SNn(t.q,e.f+e.b-t.q.f),g=r-(t.q.e+h-o),g=(Ln(c,n.c.length),u(n.c[c],200)).e,a=(f=O6(i,g,!1),f.a),a>e.b&&!l)?!1:((l||a<=e.b)&&(l&&a>e.b?(t.d=a,B8(t,Dxn(t,a))):(JFn(t.q,h),t.c=!0),B8(i,r-(t.s+t.r)),k7(i,t.q.e+t.q.d,e.f),XC(e,i),n.c.length>c&&(T7((Ln(c,n.c.length),u(n.c[c],200)),i),(Ln(c,n.c.length),u(n.c[c],200)).a.c.length==0&&h1(n,c)),d=!0),d)}function MZ(n,e,t,i){var r,c,o,f,h,l,a;if(a=Kc(n.e.Tg(),e),r=0,c=u(n.g,119),h=null,er(),u(e,66).Oj()){for(f=0;fn.o.a&&(a=(h-n.o.a)/2,f.b=y.Math.max(f.b,a),f.c=y.Math.max(f.c,a))}}function nje(n){var e,t,i,r,c,o,f,h;for(c=new ZMn,Bre(c,(L2(),MZn)),i=(r=Z$(n,F(tn,q,2,0,6,1)),new $v(new Hu(new iO(n,r).b)));i.b0?n.i:0)>e&&h>0&&(c=0,o+=h+n.i,r=y.Math.max(r,g),i+=h+n.i,h=0,g=0,t&&(++d,W(n.n,new lC(n.s,o,n.i))),f=0),g+=l.g+(f>0?n.i:0),h=y.Math.max(h,l.f),t&&iJ(u(un(n.n,d),211),l),c+=l.g+(f>0?n.i:0),++f;return r=y.Math.max(r,g),i+=h,t&&(n.r=r,n.d=i,sJ(n.j)),new ys(n.s,n.t,r,i)}function gc(n,e,t,i,r){nh();var c,o,f,h,l,a,d,g,p;if(MW(n,"src"),MW(t,"dest"),g=$u(n),h=$u(t),VU((g.i&4)!=0,"srcType is not an array"),VU((h.i&4)!=0,"destType is not an array"),d=g.c,o=h.c,VU(d.i&1?d==o:(o.i&1)==0,"Array types don't match"),p=n.length,l=t.length,e<0||i<0||r<0||e+r>p||i+r>l)throw T(new Kq);if(!(d.i&1)&&g!=h)if(a=pa(n),c=pa(t),B(n)===B(t)&&ei;)St(c,f,a[--e]);else for(f=i+r;i0&&aY(n,e,t,i,r,!0)}function oL(){oL=N,Ezn=A(M(be,1),Le,25,15,[Bi,1162261467,L6,1220703125,362797056,1977326743,L6,387420489,$M,214358881,429981696,815730721,1475789056,170859375,268435456,410338673,612220032,893871739,128e7,1801088541,113379904,148035889,191102976,244140625,308915776,387420489,481890304,594823321,729e6,887503681,L6,1291467969,1544804416,1838265625,60466176]),Czn=A(M(be,1),Le,25,15,[-1,-1,31,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5])}function eje(n){var e,t,i,r,c,o,f,h;for(r=new E(n.b);r.a=n.b.length?(c[r++]=o.b[i++],c[r++]=o.b[i++]):i>=o.b.length?(c[r++]=n.b[t++],c[r++]=n.b[t++]):o.b[i]0?n.i:0)),++e;for(d2e(n.n,h),n.d=t,n.r=i,n.g=0,n.f=0,n.e=0,n.o=Ft,n.p=Ft,c=new E(n.b);c.a0&&(r=(!n.n&&(n.n=new V(Rr,n,1,7)),u(D(n.n,0),137)).a,!r||De(De((e.a+=' "',e),r),'"'))),t=(!n.b&&(n.b=new Fn(he,n,4,7)),!(n.b.i<=1&&(!n.c&&(n.c=new Fn(he,n,5,8)),n.c.i<=1))),t?e.a+=" [":e.a+=" ",De(e,Lz(new YI,new ie(n.b))),t&&(e.a+="]"),e.a+=TN,t&&(e.a+="["),De(e,Lz(new YI,new ie(n.c))),t&&(e.a+="]"),e.a)}function fL(n,e){var t,i,r,c,o,f,h;if(n.a){if(f=n.a.ne(),h=null,f!=null?e.a+=""+f:(o=n.a.Dj(),o!=null&&(c=If(o,iu(91)),c!=-1?(h=o.substr(c),e.a+=""+Zu(o==null?ru:(_n(o),o),0,c)):e.a+=""+o)),n.d&&n.d.i!=0){for(r=!0,e.a+="<",i=new ie(n.d);i.e!=i.i.gc();)t=u(oe(i),87),r?r=!1:e.a+=Ji,fL(t,e);e.a+=">"}h!=null&&(e.a+=""+h)}else n.e?(f=n.e.zb,f!=null&&(e.a+=""+f)):(e.a+="?",n.b?(e.a+=" super ",fL(n.b,e)):n.f&&(e.a+=" extends ",fL(n.f,e)))}function rje(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn;for(_=n.c,U=e.c,t=xr(_.a,n,0),i=xr(U.a,e,0),O=u(Ud(n,(ur(),Su)).Kc().Pb(),11),wn=u(Ud(n,xc).Kc().Pb(),11),x=u(Ud(e,Su).Kc().Pb(),11),zn=u(Ud(e,xc).Kc().Pb(),11),S=Lf(O.e),en=Lf(wn.g),$=Lf(x.e),ln=Lf(zn.g),pb(n,i,U),o=$,a=0,v=o.length;aa?new aa((No(),tw),t,e,l-a):l>0&&a>0&&(new aa((No(),tw),e,t,0),new aa(tw,t,e,0))),o)}function ERn(n,e){var t,i,r,c,o,f;for(o=new Ea(new ta(n.f.b).a);o.b;){if(c=Nd(o),r=u(c.cd(),594),e==1){if(r.gf()!=(sr(),Yh)&&r.gf()!=Jh)continue}else if(r.gf()!=(sr(),Zs)&&r.gf()!=Ao)continue;switch(i=u(u(c.dd(),46).b,81),f=u(u(c.dd(),46).a,189),t=f.c,r.gf().g){case 2:i.g.c=n.e.a,i.g.b=y.Math.max(1,i.g.b+t);break;case 1:i.g.c=i.g.c+t,i.g.b=y.Math.max(1,i.g.b-t);break;case 4:i.g.d=n.e.b,i.g.a=y.Math.max(1,i.g.a+t);break;case 3:i.g.d=i.g.d+t,i.g.a=y.Math.max(1,i.g.a-t)}}}function cje(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m;for(f=F(be,Le,25,e.b.c.length,15,1),l=F(zR,z,267,e.b.c.length,0,1),h=F(mh,E1,10,e.b.c.length,0,1),d=n.a,g=0,p=d.length;g0&&h[i]&&(v=Mw(n.b,h[i],r)),m=y.Math.max(m,r.c.c.b+v);for(c=new E(a.e);c.a1)throw T(new Hn(Mk));h||(c=sh(e,i.Kc().Pb()),o.Fc(c))}return NV(n,iY(n,e,t),o)}function oje(n,e){var t,i,r,c;for(z0e(e.b.j),Rt(Vc(new $n(null,new xn(e.d,16)),new iwn),new rwn),c=new E(e.d);c.an.o.b||(t=zr(n,Vn),f=e.d+e.a+(t.gc()-1)*o,f>n.o.b)))}function aL(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v;if(o=n.e,h=e.e,o==0)return e;if(h==0)return n;if(c=n.d,f=e.d,c+f==2)return t=ui(n.a[0],fr),i=ui(e.a[0],fr),o==h?(a=qi(t,i),v=ge(a),p=ge(J0(a,32)),p==0?new l1(o,v):new Pw(o,2,A(M(be,1),Le,25,15,[v,p]))):m7(o<0?vl(i,t):vl(t,i));if(o==h)g=o,d=c>=f?S$(n.a,c,e.a,f):S$(e.a,f,n.a,c);else{if(r=c!=f?c>f?1:-1:YV(n.a,e.a,c),r==0)return jl(),W4;r==1?(g=o,d=M$(n.a,c,e.a,f)):(g=h,d=M$(e.a,f,n.a,c))}return l=new Pw(g,d.length,d),K5(l),l}function dL(n,e,t,i,r,c,o){var f,h,l,a,d,g,p;return d=on(sn(k(e,(nn(),ksn)))),g=null,c==(ur(),Su)&&i.c.i==t?g=i.c:c==xc&&i.d.i==t&&(g=i.d),l=o,!l||!d||g?(a=(J(),Xr),g?a=g.j:Cw(u(k(t,Lt),98))&&(a=c==Su?Gn:Vn),h=aje(n,e,t,c,a,i),f=C$((Gi(t),i)),c==Su?(Hi(f,u(un(h.j,0),11)),Ci(f,r)):(Hi(f,r),Ci(f,u(un(h.j,0),11))),l=new HDn(i,f,h,u(k(h,(G(),rt)),11),c,!g)):(W(l.e,i),p=y.Math.max(K(Y(k(l.d,S1))),K(Y(k(i,S1)))),H(l.d,S1,p)),Tn(n.a,i,new EE(l.d,e,c)),l}function jM(n,e){var t,i,r,c,o,f,h,l,a,d;if(a=null,n.d&&(a=u(vc(n.d,e),138)),!a){if(c=n.a.Mh(),d=c.i,!n.d||Xv(n.d)!=d){for(h=new we,n.d&&Z5(h,n.d),l=h.f.c+h.g.c,f=l;f0?(p=(v-1)*t,f&&(p+=i),a&&(p+=i),p=n.b[r+1])r+=2;else if(t0)for(i=new du(u(ct(n.a,c),21)),Pn(),wi(i,new Iq(e)),r=new Pi(c.b,0);r.b_)?(h=2,o=nt):h==0?(h=1,o=en):(h=0,o=en)):(p=en>=o||o-en0?1:pd(isNaN(i),isNaN(0)))>=0^(mo(zf),(y.Math.abs(f)<=zf||f==0||isNaN(f)&&isNaN(0)?0:f<0?-1:f>0?1:pd(isNaN(f),isNaN(0)))>=0)?y.Math.max(f,i):(mo(zf),(y.Math.abs(i)<=zf||i==0||isNaN(i)&&isNaN(0)?0:i<0?-1:i>0?1:pd(isNaN(i),isNaN(0)))>0?y.Math.sqrt(f*f+i*i):-y.Math.sqrt(f*f+i*i))}function Oa(n,e){var t,i,r,c,o,f;if(e){if(!n.a&&(n.a=new lj),n.e==2){hj(n.a,e);return}if(e.e==1){for(r=0;r=Yi?dr(t,kQ(i)):w3(t,i&Ut),o=new e$(10,null,0),Zfe(n.a,o,f-1)):(t=(o.bm().length+c,new zv),dr(t,o.bm())),e.e==0?(i=e._l(),i>=Yi?dr(t,kQ(i)):w3(t,i&Ut)):dr(t,e.bm()),u(o,521).b=t.a}}function ORn(n){var e,t,i,r,c;return n.g!=null?n.g:n.a<32?(n.g=NCe(tu(n.f),Gt(n.e)),n.g):(r=jL((!n.c&&(n.c=h7(n.f)),n.c),0),n.e==0?r:(e=(!n.c&&(n.c=h7(n.f)),n.c).e<0?2:1,t=r.length,i=-n.e+t-e,c=new V1,c.a+=""+r,n.e>0&&i>=-6?i>=0?P8(c,t-Gt(n.e),"."):(c.a=Zu(c.a,0,e-1)+"0."+r8(c.a,e-1),P8(c,e+1,Hs(Ga,0,-Gt(i)-1))):(t-e>=1&&(P8(c,e,"."),++t),P8(c,t,"E"),i>0&&P8(c,++t,"+"),P8(c,++t,""+O5(tu(i)))),n.g=c.a,n.g))}function Tje(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C;if(!t.dc()){for(f=0,g=0,i=t.Kc(),v=u(i.Pb(),19).a;f1&&(h=l.mg(h,n.a,f));return h.c.length==1?u(un(h,h.c.length-1),220):h.c.length==2?bje((Ln(0,h.c.length),u(h.c[0],220)),(Ln(1,h.c.length),u(h.c[1],220)),o,c):null}function DRn(n){var e,t,i,r,c,o;for(Zc(n.a,new can),t=new E(n.a);t.a=y.Math.abs(i.b)?(i.b=0,c.d+c.a>o.d&&c.do.c&&c.c0){if(e=new az(n.i,n.g),t=n.i,c=t<100?null:new Q1(t),n.ij())for(i=0;i0){for(f=n.g,l=n.i,U5(n),c=l<100?null:new Q1(l),i=0;i>13|(n.m&15)<<9,r=n.m>>4&8191,c=n.m>>17|(n.h&255)<<5,o=(n.h&1048320)>>8,f=e.l&8191,h=e.l>>13|(e.m&15)<<9,l=e.m>>4&8191,a=e.m>>17|(e.h&255)<<5,d=(e.h&1048320)>>8,ln=t*f,wn=i*f,zn=r*f,Wn=c*f,se=o*f,h!=0&&(wn+=t*h,zn+=i*h,Wn+=r*h,se+=c*h),l!=0&&(zn+=t*l,Wn+=i*l,se+=r*l),a!=0&&(Wn+=t*a,se+=i*a),d!=0&&(se+=t*d),p=ln&Nu,v=(wn&511)<<13,g=p+v,C=ln>>22,S=wn>>9,$=(zn&262143)<<4,O=(Wn&31)<<17,m=C+S+$+O,_=zn>>18,U=Wn>>5,en=(se&4095)<<8,x=_+U+en,m+=g>>22,g&=Nu,x+=m>>22,m&=Nu,x&=Wh,Bc(g,m,x)}function $Rn(n){var e,t,i,r,c,o,f;if(f=u(un(n.j,0),11),f.g.c.length!=0&&f.e.c.length!=0)throw T(new $r("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(f.g.c.length!=0){for(c=Ft,t=new E(f.g);t.a4)if(n.wj(e)){if(n.rk()){if(r=u(e,49),i=r.Ug(),h=i==n.e&&(n.Dk()?r.Og(r.Vg(),n.zk())==n.Ak():-1-r.Vg()==n.aj()),n.Ek()&&!h&&!i&&r.Zg()){for(c=0;c0&&(l=n.n.a/c);break;case 2:case 4:r=n.i.o.b,r>0&&(l=n.n.b/r)}H(n,(G(),k0),l)}if(h=n.o,o=n.a,i)o.a=i.a,o.b=i.b,n.d=!0;else if(e!=Ef&&e!=ql&&f!=Xr)switch(f.g){case 1:o.a=h.a/2;break;case 2:o.a=h.a,o.b=h.b/2;break;case 3:o.a=h.a/2,o.b=h.b;break;case 4:o.b=h.b/2}else o.a=h.a/2,o.b=h.b/2}function $6(n){var e,t,i,r,c,o,f,h,l,a;if(n.ej())if(a=n.Vi(),h=n.fj(),a>0)if(e=new CV(n.Gi()),t=a,c=t<100?null:new Q1(t),h8(n,t,e.g),r=t==1?n.Zi(4,D(e,0),null,0,h):n.Zi(6,e,null,-1,h),n.bj()){for(i=new ie(e);i.e!=i.i.gc();)c=n.dj(oe(i),c);c?(c.Ei(r),c.Fi()):n.$i(r)}else c?(c.Ei(r),c.Fi()):n.$i(r);else h8(n,n.Vi(),n.Wi()),n.$i(n.Zi(6,(Pn(),cr),null,-1,h));else if(n.bj())if(a=n.Vi(),a>0){for(f=n.Wi(),l=a,h8(n,a,f),c=l<100?null:new Q1(l),i=0;in.d[o.p]&&(t+=jX(n.b,c)*u(h.b,19).a,ll(n.a,Q(c)));for(;!Hv(n.a);)ZX(n.b,u(y2(n.a),19).a)}return t}function Nje(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C;for(d=new kr(u(hn(n,(nM(),qfn)),8)),d.a=y.Math.max(d.a-t.b-t.c,0),d.b=y.Math.max(d.b-t.d-t.a,0),r=Y(hn(n,_fn)),(r==null||(_n(r),r<=0))&&(r=1.3),f=new X,v=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));v.e!=v.i.gc();)p=u(oe(v),33),o=new hjn(p),f.c[f.c.length]=o;switch(g=u(hn(n,qK),311),g.g){case 3:C=cye(f,e,d.a,d.b,(l=i,_n(r),l));break;case 1:C=Oye(f,e,d.a,d.b,(a=i,_n(r),a));break;default:C=_je(f,e,d.a,d.b,(h=i,_n(r),h))}c=new zC(C),m=kL(c,e,t,d.a,d.b,i,(_n(r),r)),t0(n,m.a,m.b,!1,!0)}function Bje(n,e){var t,i,r,c;t=e.b,c=new du(t.j),r=0,i=t.j,i.c=F(Zn,rn,1,0,5,1),Td(u(ma(n.b,(J(),Kn),(Kd(),g0)),15),t),r=j7(c,r,new Fbn,i),Td(u(ma(n.b,Kn,Fl),15),t),r=j7(c,r,new $bn,i),Td(u(ma(n.b,Kn,w0),15),t),Td(u(ma(n.b,Vn,g0),15),t),Td(u(ma(n.b,Vn,Fl),15),t),r=j7(c,r,new xbn,i),Td(u(ma(n.b,Vn,w0),15),t),Td(u(ma(n.b,ae,g0),15),t),r=j7(c,r,new Lbn,i),Td(u(ma(n.b,ae,Fl),15),t),r=j7(c,r,new Nbn,i),Td(u(ma(n.b,ae,w0),15),t),Td(u(ma(n.b,Gn,g0),15),t),r=j7(c,r,new Xbn,i),Td(u(ma(n.b,Gn,Fl),15),t),Td(u(ma(n.b,Gn,w0),15),t)}function Rje(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m;for(le(e,"Layer size calculation",1),a=Ft,l=Qt,r=!1,f=new E(n.b);f.a.5?S-=o*2*(v-.5):v<.5&&(S+=c*2*(.5-v)),r=f.d.b,SC.a-m-a&&(S=C.a-m-a),f.n.a=e+S}}function _je(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v,m,C;for(f=F(Ei,pr,25,n.c.length,15,1),g=new GE(new P2n),lJ(g,n),l=0,m=new X;g.b.c.length!=0;)if(o=u(g.b.c.length==0?null:un(g.b,0),157),l>1&&bu(o)*zu(o)/2>f[0]){for(c=0;cf[c];)++c;v=new uh(m,0,c+1),d=new zC(v),a=bu(o)/zu(o),h=kL(d,e,new i2,t,i,r,a),st(Lo(d.e),h),M3(f4(g,d)),p=new uh(m,c+1,m.c.length),lJ(g,p),m.c=F(Zn,rn,1,0,5,1),l=0,fCn(f,f.length,0)}else C=g.b.c.length==0?null:un(g.b,0),C!=null&&J$(g,0),l>0&&(f[l]=f[l-1]),f[l]+=bu(o)*zu(o),++l,m.c[m.c.length]=o;return m}function Kje(n){var e,t,i,r,c;if(i=u(k(n,(nn(),qc)),163),i==(Ss(),xl)){for(t=new re(ue(Lr(n).a.Kc(),new An));Se(t);)if(e=u(ve(t),17),!kSn(e))throw T(new pw(SN+E7(n)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(i==Ub){for(c=new re(ue(ei(n).a.Kc(),new An));Se(c);)if(r=u(ve(c),17),!kSn(r))throw T(new pw(SN+E7(n)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}}function Hje(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v;for(le(e,"Label dummy removal",1),i=K(Y(k(n,(nn(),jp)))),r=K(Y(k(n,nw))),l=u(k(n,as),103),h=new E(n.b);h.a0&&_xn(n,f,d);for(r=new E(d);r.a>19&&(e=z3(e),h=!h),o=K9e(e),c=!1,r=!1,i=!1,n.h==tk&&n.m==0&&n.l==0)if(r=!0,c=!0,o==-1)n=eyn((I3(),win)),i=!0,h=!h;else return f=SY(n,o),h&&sF(f),t&&(Il=Bc(0,0,0)),f;else n.h>>19&&(c=!0,n=z3(n),i=!0,h=!h);return o!=-1?Swe(n,o,h,c,t):mJ(n,e)<0?(t&&(c?Il=z3(n):Il=Bc(n.l,n.m,n.h)),Bc(0,0,0)):Dke(i?n:Bc(n.l,n.m,n.h),e,h,c,r,t)}function EM(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v;if(n.e&&n.c.ce.f||e.g>n.f)){for(t=0,i=0,o=n.w.a.ec().Kc();o.Ob();)r=u(o.Pb(),11),mF(Gr(A(M(di,1),q,8,0,[r.i.n,r.n,r.a])).b,e.g,e.f)&&++t;for(f=n.r.a.ec().Kc();f.Ob();)r=u(f.Pb(),11),mF(Gr(A(M(di,1),q,8,0,[r.i.n,r.n,r.a])).b,e.g,e.f)&&--t;for(h=e.w.a.ec().Kc();h.Ob();)r=u(h.Pb(),11),mF(Gr(A(M(di,1),q,8,0,[r.i.n,r.n,r.a])).b,n.g,n.f)&&++i;for(c=e.r.a.ec().Kc();c.Ob();)r=u(c.Pb(),11),mF(Gr(A(M(di,1),q,8,0,[r.i.n,r.n,r.a])).b,n.g,n.f)&&--i;t=0)return r=Jge(n,e.substr(1,o-1)),a=e.substr(o+1,h-(o+1)),UCe(n,a,r)}else{if(t=-1,kin==null&&(kin=new RegExp("\\d")),kin.test(String.fromCharCode(f))&&(t=MU(e,iu(46),h-1),t>=0)){i=u(T$(n,aIn(n,e.substr(1,t-1)),!1),58),l=0;try{l=ss(e.substr(t+1),Bi,nt)}catch(g){throw g=jt(g),I(g,127)?(c=g,T(new xC(c))):T(g)}if(l=0)return t;switch(Sd(Er(n,t))){case 2:{if(Mn("",w1(n,t.Hj()).ne())){if(h=E8(Er(n,t)),f=v3(Er(n,t)),a=xY(n,e,h,f),a)return a;for(r=oZ(n,e),o=0,d=r.gc();o1)throw T(new Hn(Mk));for(a=Kc(n.e.Tg(),e),i=u(n.g,119),o=0;o1,l=new sf(g.b);Kr(l.a)||Kr(l.b);)h=u(Kr(l.a)?j(l.a):j(l.b),17),d=h.c==g?h.d:h.c,y.Math.abs(Gr(A(M(di,1),q,8,0,[d.i.n,d.n,d.a])).b-o.b)>1&&z8e(n,h,o,c,g)}}function nEe(n){var e,t,i,r,c,o;if(r=new Pi(n.e,0),i=new Pi(n.a,0),n.d)for(t=0;toB;){for(c=e,o=0;y.Math.abs(e-c)0),r.a.Xb(r.c=--r.b),pye(n,n.b-o,c,i,r),ne(r.b0),i.a.Xb(i.c=--i.b)}if(!n.d)for(t=0;t0?(n.f[a.p]=p/(a.e.c.length+a.g.c.length),n.c=y.Math.min(n.c,n.f[a.p]),n.b=y.Math.max(n.b,n.f[a.p])):f&&(n.f[a.p]=p)}}function tEe(n){n.b=null,n.bb=null,n.fb=null,n.qb=null,n.a=null,n.c=null,n.d=null,n.e=null,n.f=null,n.n=null,n.M=null,n.L=null,n.Q=null,n.R=null,n.K=null,n.db=null,n.eb=null,n.g=null,n.i=null,n.j=null,n.k=null,n.gb=null,n.o=null,n.p=null,n.q=null,n.r=null,n.$=null,n.ib=null,n.S=null,n.T=null,n.t=null,n.s=null,n.u=null,n.v=null,n.w=null,n.B=null,n.A=null,n.C=null,n.D=null,n.F=null,n.G=null,n.H=null,n.I=null,n.J=null,n.P=null,n.Z=null,n.U=null,n.V=null,n.W=null,n.X=null,n.Y=null,n._=null,n.ab=null,n.cb=null,n.hb=null,n.nb=null,n.lb=null,n.mb=null,n.ob=null,n.pb=null,n.jb=null,n.kb=null,n.N=!1,n.O=!1}function iEe(n,e,t){var i,r,c,o;for(le(t,"Graph transformation ("+n.a+")",1),o=Dd(e.a),c=new E(e.b);c.a0&&(n.a=h+(p-1)*c,e.c.b+=n.a,e.f.b+=n.a)),v.a.gc()!=0&&(g=new FD(1,c),p=FZ(g,e,v,m,e.f.b+h-e.c.b),p>0&&(e.f.b+=h+(p-1)*c))}function y4(n,e){var t,i,r,c;c=n.F,e==null?(n.F=null,X3(n,null)):(n.F=(_n(e),e),i=If(e,iu(60)),i!=-1?(r=e.substr(0,i),If(e,iu(46))==-1&&!Mn(r,X2)&&!Mn(r,cm)&&!Mn(r,EA)&&!Mn(r,um)&&!Mn(r,sm)&&!Mn(r,om)&&!Mn(r,fm)&&!Mn(r,hm)&&(r=yGn),t=aE(e,iu(62)),t!=-1&&(r+=""+e.substr(t+1)),X3(n,r)):(r=e,If(e,iu(46))==-1&&(i=If(e,iu(91)),i!=-1&&(r=e.substr(0,i)),!Mn(r,X2)&&!Mn(r,cm)&&!Mn(r,EA)&&!Mn(r,um)&&!Mn(r,sm)&&!Mn(r,om)&&!Mn(r,fm)&&!Mn(r,hm)?(r=yGn,i!=-1&&(r+=""+e.substr(i))):r=e),X3(n,r),r==e&&(n.F=n.D))),n.Db&4&&!(n.Db&1)&&et(n,new gi(n,1,5,c,e))}function cEe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O;if(m=e.b.c.length,!(m<3)){for(p=F(be,Le,25,m,15,1),d=0,a=new E(e.b);a.ao)&&ci(n.b,u(C.b,17));++f}c=o}}}function OZ(n,e){var t;if(e==null||Mn(e,ru)||e.length==0&&n.k!=(y1(),Cp))return null;switch(n.k.g){case 1:return DT(e,B4)?(qn(),z4):DT(e,EB)?(qn(),qa):null;case 2:try{return Q(ss(e,Bi,nt))}catch(i){if(i=jt(i),I(i,127))return null;throw T(i)}case 4:try{return kb(e)}catch(i){if(i=jt(i),I(i,127))return null;throw T(i)}case 3:return e;case 5:return mDn(n),TLn(n,e);case 6:return mDn(n),w9e(n,n.a,e);case 7:try{return t=Ame(n),t.Jf(e),t}catch(i){if(i=jt(i),I(i,32))return null;throw T(i)}default:throw T(new $r("Invalid type set for this layout option."))}}function uEe(n){X5();var e,t,i,r,c,o,f;for(f=new Qmn,t=new E(n);t.a=f.b.c)&&(f.b=e),(!f.c||e.c<=f.c.c)&&(f.d=f.c,f.c=e),(!f.e||e.d>=f.e.d)&&(f.e=e),(!f.f||e.d<=f.f.d)&&(f.f=e);return i=new LT((G3(),b0)),O8(n,AWn,new Hu(A(M(Rk,1),rn,369,0,[i]))),o=new LT(Hb),O8(n,MWn,new Hu(A(M(Rk,1),rn,369,0,[o]))),r=new LT(Kb),O8(n,TWn,new Hu(A(M(Rk,1),rn,369,0,[r]))),c=new LT(kg),O8(n,CWn,new Hu(A(M(Rk,1),rn,369,0,[c]))),Rx(i.c,b0),Rx(r.c,Kb),Rx(c.c,kg),Rx(o.c,Hb),f.a.c=F(Zn,rn,1,0,5,1),Zt(f.a,i.c),Zt(f.a,va(r.c)),Zt(f.a,c.c),Zt(f.a,va(o.c)),f}function DZ(n){var e;switch(n.d){case 1:{if(n.hj())return n.o!=-2;break}case 2:{if(n.hj())return n.o==-2;break}case 3:case 5:case 4:case 6:case 7:return n.o>-2;default:return!1}switch(e=n.gj(),n.p){case 0:return e!=null&&on(sn(e))!=b5(n.k,0);case 1:return e!=null&&u(e,217).a!=ge(n.k)<<24>>24;case 2:return e!=null&&u(e,172).a!=(ge(n.k)&Ut);case 6:return e!=null&&b5(u(e,162).a,n.k);case 5:return e!=null&&u(e,19).a!=ge(n.k);case 7:return e!=null&&u(e,184).a!=ge(n.k)<<16>>16;case 3:return e!=null&&K(Y(e))!=n.j;case 4:return e!=null&&u(e,155).a!=n.j;default:return e==null?n.n!=null:!tt(e,n.n)}}function X7(n,e,t){var i,r,c,o;return n.Fk()&&n.Ek()&&(o=MD(n,u(t,56)),B(o)!==B(t))?(n.Oi(e),n.Ui(e,dPn(n,e,o)),n.rk()&&(c=(r=u(t,49),n.Dk()?n.Bk()?r.ih(n.b,ir(u(On(Qc(n.b),n.aj()),18)).n,u(On(Qc(n.b),n.aj()).Yj(),26).Bj(),null):r.ih(n.b,yt(r.Tg(),ir(u(On(Qc(n.b),n.aj()),18))),null,null):r.ih(n.b,-1-n.aj(),null,null)),!u(o,49).eh()&&(c=(i=u(o,49),n.Dk()?n.Bk()?i.gh(n.b,ir(u(On(Qc(n.b),n.aj()),18)).n,u(On(Qc(n.b),n.aj()).Yj(),26).Bj(),c):i.gh(n.b,yt(i.Tg(),ir(u(On(Qc(n.b),n.aj()),18))),null,c):i.gh(n.b,-1-n.aj(),null,c))),c&&c.Fi()),qu(n.b)&&n.$i(n.Zi(9,t,o,e,!1)),o):t}function NRn(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x;for(a=K(Y(k(n,(nn(),C0)))),i=K(Y(k(n,Osn))),g=new jI,H(g,C0,a+i),l=e,S=l.d,m=l.c.i,$=l.d.i,C=pz(m.c),O=pz($.c),r=new X,d=C;d<=O;d++)f=new qh(n),ea(f,(Qn(),pi)),H(f,(G(),rt),l),H(f,Lt,(Mi(),Ac)),H(f,rP,g),p=u(un(n.b,d),29),d==C?pb(f,p.a.c.length-t,p):jr(f,p),x=K(Y(k(l,S1))),x<0&&(x=0,H(l,S1,x)),f.o.b=x,v=y.Math.floor(x/2),o=new wc,si(o,(J(),Gn)),Hr(o,f),o.n.b=v,h=new wc,si(h,Vn),Hr(h,f),h.n.b=v,Ci(l,o),c=new Pd,Pr(c,l),H(c,Mr,null),Hi(c,h),Ci(c,S),f4e(f,l,c),r.c[r.c.length]=c,l=c;return r}function gL(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O;for(h=u(k1(n,(J(),Gn)).Kc().Pb(),11).e,p=u(k1(n,Vn).Kc().Pb(),11).g,f=h.c.length,O=rf(u(un(n.j,0),11));f-- >0;){for(m=(Ln(0,h.c.length),u(h.c[0],17)),r=(Ln(0,p.c.length),u(p.c[0],17)),$=r.d.e,c=xr($,r,0),dae(m,r.d,c),Hi(r,null),Ci(r,null),v=m.a,e&&Ke(v,new kr(O)),i=_e(r.a,0);i.b!=i.d.c;)t=u(Re(i),8),Ke(v,new kr(t));for(S=m.b,g=new E(r.b);g.a0&&(o=y.Math.max(o,lOn(n.C.b+i.d.b,r))),a=i,d=r,g=c;n.C&&n.C.c>0&&(p=g+n.C.c,l&&(p+=a.d.c),o=y.Math.max(o,(Zo(),mo(wf),y.Math.abs(d-1)<=wf||d==1||isNaN(d)&&isNaN(1)?0:p/(1-d)))),t.n.b=0,t.a.a=o}function RRn(n,e){var t,i,r,c,o,f,h,l,a,d,g,p;if(t=u(br(n.b,e),124),h=u(u(ct(n.r,e),21),84),h.dc()){t.n.d=0,t.n.a=0;return}for(l=n.u.Hc((Mu(),n1)),o=0,n.A.Hc((Qu(),id))&&vBn(n,e),f=h.Kc(),a=null,g=0,d=0;f.Ob();)i=u(f.Pb(),111),c=K(Y(i.b.We((dE(),JA)))),r=i.b.rf().b,a?(p=d+a.d.a+n.w+i.d.d,o=y.Math.max(o,(Zo(),mo(wf),y.Math.abs(g-c)<=wf||g==c||isNaN(g)&&isNaN(c)?0:p/(c-g)))):n.C&&n.C.d>0&&(o=y.Math.max(o,lOn(n.C.d+i.d.d,c))),a=i,g=c,d=r;n.C&&n.C.a>0&&(p=d+n.C.a,l&&(p+=a.d.a),o=y.Math.max(o,(Zo(),mo(wf),y.Math.abs(g-1)<=wf||g==1||isNaN(g)&&isNaN(1)?0:p/(1-g)))),t.n.d=0,t.a.b=o}function _Rn(n,e,t){var i,r,c,o,f,h;for(this.g=n,f=e.d.length,h=t.d.length,this.d=F(mh,E1,10,f+h,0,1),o=0;o0?q$(this,this.f/this.a):nf(e.g,e.d[0]).a!=null&&nf(t.g,t.d[0]).a!=null?q$(this,(K(nf(e.g,e.d[0]).a)+K(nf(t.g,t.d[0]).a))/2):nf(e.g,e.d[0]).a!=null?q$(this,nf(e.g,e.d[0]).a):nf(t.g,t.d[0]).a!=null&&q$(this,nf(t.g,t.d[0]).a)}function sEe(n,e){var t,i,r,c,o,f,h,l,a,d;for(n.a=new XCn(Lbe(e9)),i=new E(e.a);i.a=1&&(C-o>0&&d>=0?(h.n.a+=m,h.n.b+=c*o):C-o<0&&a>=0&&(h.n.a+=m*C,h.n.b+=c));n.o.a=e.a,n.o.b=e.b,H(n,(nn(),Xa),(Qu(),i=u(xo(o9),9),new ks(i,u(bo(i,i.length),9),0)))}function lEe(n,e,t,i,r,c){var o;if(!(e==null||!$F(e,a1n,d1n)))throw T(new Hn("invalid scheme: "+e));if(!n&&!(t!=null&&If(t,iu(35))==-1&&t.length>0&&(Te(0,t.length),t.charCodeAt(0)!=47)))throw T(new Hn("invalid opaquePart: "+t));if(n&&!(e!=null&&_9(tI,e.toLowerCase()))&&!(t==null||!$F(t,a9,d9)))throw T(new Hn(oGn+t));if(n&&e!=null&&_9(tI,e.toLowerCase())&&!rve(t))throw T(new Hn(oGn+t));if(!o2e(i))throw T(new Hn("invalid device: "+i));if(!ege(r))throw o=r==null?"invalid segments: null":"invalid segment: "+Jwe(r),T(new Hn(o));if(!(c==null||If(c,iu(35))==-1))throw T(new Hn("invalid query: "+c))}function aEe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S;for(le(e,"Calculate Graph Size",1),e.n&&n&&go(e,po(n),(Vu(),gs)),f=D4,h=D4,c=ttn,o=ttn,d=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));d.e!=d.i.gc();)l=u(oe(d),33),v=l.i,m=l.j,S=l.g,i=l.f,r=u(hn(l,(Xe(),my)),142),f=y.Math.min(f,v-r.b),h=y.Math.min(h,m-r.d),c=y.Math.max(c,v+S+r.c),o=y.Math.max(o,m+i+r.a);for(p=u(hn(n,(Xe(),nd)),116),g=new fn(f-p.b,h-p.d),a=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));a.e!=a.i.gc();)l=u(oe(a),33),nu(l,l.i-g.a),eu(l,l.j-g.b);C=c-f+(p.b+p.c),t=o-h+(p.d+p.a),Rd(n,C),Bd(n,t),e.n&&n&&go(e,po(n),(Vu(),gs))}function qRn(n){var e,t,i,r,c,o,f,h,l,a;for(i=new X,o=new E(n.e.a);o.a0){NT(n,t,0),t.a+=String.fromCharCode(i),r=J2e(e,c),NT(n,t,r),c+=r-1;continue}i==39?c+11)for(m=F(be,Le,25,n.b.b.c.length,15,1),d=0,l=new E(n.b.b);l.a=f&&r<=h)f<=r&&c<=h?(t[a++]=r,t[a++]=c,i+=2):f<=r?(t[a++]=r,t[a++]=h,n.b[i]=h+1,o+=2):c<=h?(t[a++]=f,t[a++]=c,i+=2):(t[a++]=f,t[a++]=h,n.b[i]=h+1);else if(hCl)&&f<10);mG(n.c,new Tan),GRn(n),ehe(n.c),fEe(n.f)}function gEe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C;if(on(sn(k(t,(nn(),Qb)))))for(f=new E(t.j);f.a=2){for(h=_e(t,0),o=u(Re(h),8),f=u(Re(h),8);f.a0&&u7(l,!0,(sr(),Ao)),f.k==(Qn(),Xt)&&pTn(l),it(n.f,f,e)}}function kEe(n,e,t){var i,r,c,o,f,h,l,a,d,g;switch(le(t,"Node promotion heuristic",1),n.g=e,MCe(n),n.q=u(k(e,(nn(),__)),260),a=u(k(n.g,psn),19).a,c=new h0n,n.q.g){case 2:case 1:k4(n,c);break;case 3:for(n.q=(Zw(),lP),k4(n,c),h=0,f=new E(n.a);f.an.j&&(n.q=ey,k4(n,c));break;case 4:for(n.q=(Zw(),lP),k4(n,c),l=0,r=new E(n.b);r.an.k&&(n.q=ty,k4(n,c));break;case 6:g=Gt(y.Math.ceil(n.f.length*a/100)),k4(n,new M5n(g));break;case 5:d=Gt(y.Math.ceil(n.d*a/100)),k4(n,new A5n(d));break;default:k4(n,c)}d7e(n,e),ce(t)}function URn(n,e,t){var i,r,c,o;this.j=n,this.e=LJ(n),this.o=this.j.e,this.i=!!this.o,this.p=this.i?u(un(t,Gi(this.o).p),214):null,r=u(k(n,(G(),Mc)),21),this.g=r.Hc((or(),$s)),this.b=new X,this.d=new b$n(this.e),o=u(k(this.j,vp),230),this.q=Ybe(e,o,this.e),this.k=new wMn(this),c=uf(A(M(VWn,1),rn,225,0,[this,this.d,this.k,this.q])),e==(_d(),ry)&&!on(sn(k(n,(nn(),Wb))))?(i=new BJ(this.e),c.c[c.c.length]=i,this.c=new dX(i,o,u(this.q,402))):e==ry&&on(sn(k(n,(nn(),Wb))))?(i=new BJ(this.e),c.c[c.c.length]=i,this.c=new JIn(i,o,u(this.q,402))):this.c=new V7n(e,this),W(c,this.c),ARn(c,this.e),this.s=tTe(this.k)}function yEe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x;for(d=u(fE((o=_e(new X1(e).a.d,0),new e2(o))),86),v=d?u(k(d,(cc(),pK)),86):null,r=1;d&&v;){for(h=0,x=0,t=d,i=v,f=0;f=n.i?(++n.i,W(n.a,Q(1)),W(n.b,a)):(i=n.c[e.p][1],Es(n.a,l,Q(u(un(n.a,l),19).a+1-i)),Es(n.b,l,K(Y(un(n.b,l)))+a-i*n.e)),(n.q==(Zw(),ey)&&(u(un(n.a,l),19).a>n.j||u(un(n.a,l-1),19).a>n.j)||n.q==ty&&(K(Y(un(n.b,l)))>n.k||K(Y(un(n.b,l-1)))>n.k))&&(h=!1),o=new re(ue(Lr(e).a.Kc(),new An));Se(o);)c=u(ve(o),17),f=c.c.i,n.f[f.p]==l&&(d=WRn(n,f),r=r+u(d.a,19).a,h=h&&on(sn(d.b)));return n.f[e.p]=l,r=r+n.c[e.p][0],new Si(Q(r),(qn(),!!h))}function FZ(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v,m,C,S;for(d=new we,o=new X,wLn(n,t,n.d.fg(),o,d),wLn(n,i,n.d.gg(),o,d),n.b=.2*(m=rNn(qr(new $n(null,new xn(o,16)),new vgn)),C=rNn(qr(new $n(null,new xn(o,16)),new mgn)),y.Math.min(m,C)),c=0,f=0;f=2&&(S=MNn(o,!0,g),!n.e&&(n.e=new I6n(n)),Z2e(n.e,S,o,n.b)),uxn(o,g),NEe(o),p=-1,a=new E(o);a.af)}function EEe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m;for(t=u(k(n,(nn(),Lt)),98),o=n.f,c=n.d,f=o.a+c.b+c.c,h=0-c.d-n.c.b,a=o.b+c.d+c.a-n.c.b,l=new X,d=new X,r=new E(e);r.a0),u(a.a.Xb(a.c=--a.b),17));c!=i&&a.b>0;)n.a[c.p]=!0,n.a[i.p]=!0,c=(ne(a.b>0),u(a.a.Xb(a.c=--a.b),17));a.b>0&&Wu(a)}}function JRn(n,e,t){var i,r,c,o,f,h,l,a,d;if(n.a!=e.Aj())throw T(new Hn(R4+e.ne()+h0));if(i=w1((gu(),xi),e).$k(),i)return i.Aj().Nh().Ih(i,t);if(o=w1(xi,e).al(),o){if(t==null)return null;if(f=u(t,15),f.dc())return"";for(d=new i1,c=f.Kc();c.Ob();)r=c.Pb(),dr(d,o.Aj().Nh().Ih(o,r)),d.a+=" ";return NO(d,d.a.length-1)}if(a=w1(xi,e).bl(),!a.dc()){for(l=a.Kc();l.Ob();)if(h=u(l.Pb(),148),h.wj(t))try{if(d=h.Aj().Nh().Ih(h,t),d!=null)return d}catch(g){if(g=jt(g),!I(g,102))throw T(g)}throw T(new Hn("Invalid value: '"+t+"' for datatype :"+e.ne()))}return u(e,834).Fj(),t==null?null:I(t,172)?""+u(t,172).a:$u(t)==HA?Tyn(l9[0],u(t,199)):Nr(t)}function PEe(n){var e,t,i,r,c,o,f,h,l,a;for(l=new Tt,f=new Tt,c=new E(n);c.a-1){for(r=_e(f,0);r.b!=r.d.c;)i=u(Re(r),128),i.v=o;for(;f.b!=0;)for(i=u(hx(f,0),128),t=new E(i.i);t.a0&&(t+=h.n.a+h.o.a/2,++d),v=new E(h.j);v.a0&&(t/=d),S=F(Ei,pr,25,i.a.c.length,15,1),f=0,l=new E(i.a);l.a=f&&r<=h)f<=r&&c<=h?i+=2:f<=r?(n.b[i]=h+1,o+=2):c<=h?(t[a++]=r,t[a++]=f-1,i+=2):(t[a++]=r,t[a++]=f-1,n.b[i]=h+1,o+=2);else if(h0?r-=864e5:r+=864e5,h=new uU(qi(tu(e.q.getTime()),r))),a=new R0,l=n.a.length,c=0;c=97&&i<=122||i>=65&&i<=90){for(o=c+1;o=l)throw T(new Hn("Missing trailing '"));o+10&&t.c==0&&(!e&&(e=new X),e.c[e.c.length]=t);if(e)for(;e.c.length!=0;){if(t=u(h1(e,0),233),t.b&&t.b.c.length>0){for(c=(!t.b&&(t.b=new X),new E(t.b));c.axr(n,t,0))return new Si(r,t)}else if(K(nf(r.g,r.d[0]).a)>K(nf(t.g,t.d[0]).a))return new Si(r,t)}for(f=(!t.e&&(t.e=new X),t.e).Kc();f.Ob();)o=u(f.Pb(),233),h=(!o.b&&(o.b=new X),o.b),tb(0,h.c.length),e5(h.c,0,t),o.c==h.c.length&&(e.c[e.c.length]=o)}return null}function t_n(n,e){var t,i,r,c,o,f,h,l,a;if(n==null)return ru;if(h=e.a.zc(n,e),h!=null)return"[...]";for(t=new ka(Ji,"[","]"),r=n,c=0,o=r.length;c=14&&a<=16))?e.a._b(i)?(t.a?De(t.a,t.b):t.a=new Yu(t.d),g5(t.a,"[...]")):(f=pa(i),l=new S5(e),xh(t,t_n(f,l))):I(i,177)?xh(t,M6e(u(i,177))):I(i,190)?xh(t,wve(u(i,190))):I(i,195)?xh(t,T5e(u(i,195))):I(i,2012)?xh(t,gve(u(i,2012))):I(i,48)?xh(t,T6e(u(i,48))):I(i,364)?xh(t,R6e(u(i,364))):I(i,832)?xh(t,C6e(u(i,832))):I(i,104)&&xh(t,E6e(u(i,104))):xh(t,i==null?ru:Nr(i));return t.a?t.e.length==0?t.a.a:t.a.a+(""+t.e):t.c}function i_n(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O;for(f=ng(e,!1,!1),S=I7(f),i&&(S=o7(S)),O=K(Y(hn(e,(a6(),IR)))),C=(ne(S.b!=0),u(S.a.a.c,8)),d=u(qo(S,1),8),S.b>2?(a=new X,Zt(a,new uh(S,1,S.b)),c=L_n(a,O+n.a),$=new xx(c),Pr($,e),t.c[t.c.length]=$):i?$=u(te(n.b,hh(e)),266):$=u(te(n.b,ml(e)),266),h=hh(e),i&&(h=ml(e)),o=z5e(C,h),l=O+n.a,o.a?(l+=y.Math.abs(C.b-d.b),m=new fn(d.a,(d.b+C.b)/2)):(l+=y.Math.abs(C.a-d.a),m=new fn((d.a+C.a)/2,d.b)),i?it(n.d,e,new cJ($,o,m,l)):it(n.c,e,new cJ($,o,m,l)),it(n.b,e,$),v=(!e.n&&(e.n=new V(Rr,e,1,7)),e.n),p=new ie(v);p.e!=p.i.gc();)g=u(oe(p),137),r=K7(n,g,!0,0,0),t.c[t.c.length]=r}function NEe(n){var e,t,i,r,c,o,f,h,l,a;for(l=new X,f=new X,o=new E(n);o.a-1){for(c=new E(f);c.a0)&&(aq(h,y.Math.min(h.o,r.o-1)),ej(h,h.i-1),h.i==0&&(f.c[f.c.length]=h))}}function j4(n,e,t){var i,r,c,o,f,h,l;if(l=n.c,!e&&(e=p1n),n.c=e,n.Db&4&&!(n.Db&1)&&(h=new gi(n,1,2,l,n.c),t?t.Ei(h):t=h),l!=e){if(I(n.Cb,284))n.Db>>16==-10?t=u(n.Cb,284).nk(e,t):n.Db>>16==-15&&(!e&&(e=(Sn(),Tf)),!l&&(l=(Sn(),Tf)),n.Cb.nh()&&(h=new Lh(n.Cb,1,13,l,e,v1(Du(u(n.Cb,59)),n),!1),t?t.Ei(h):t=h));else if(I(n.Cb,88))n.Db>>16==-23&&(I(e,88)||(e=(Sn(),so)),I(l,88)||(l=(Sn(),so)),n.Cb.nh()&&(h=new Lh(n.Cb,1,10,l,e,v1(bc(u(n.Cb,26)),n),!1),t?t.Ei(h):t=h));else if(I(n.Cb,444))for(f=u(n.Cb,836),o=(!f.b&&(f.b=new sj(new KI)),f.b),c=(i=new Ea(new ta(o.a).a),new oj(i));c.a.b;)r=u(Nd(c.a).cd(),87),t=j4(r,uM(r,f),t)}return t}function BEe(n,e){var t,i,r,c,o,f,h,l,a,d,g;for(o=on(sn(hn(n,(nn(),Qb)))),g=u(hn(n,Yb),21),h=!1,l=!1,d=new ie((!n.c&&(n.c=new V(_u,n,9,9)),n.c));d.e!=d.i.gc()&&(!h||!l);){for(c=u(oe(d),118),f=0,r=ul(ff(A(M(pf,1),rn,20,0,[(!c.d&&(c.d=new Fn(bi,c,8,5)),c.d),(!c.e&&(c.e=new Fn(bi,c,7,4)),c.e)])));Se(r)&&(i=u(ve(r),79),a=o&&Jd(i)&&on(sn(hn(i,Wa))),t=FRn((!i.b&&(i.b=new Fn(he,i,4,7)),i.b),c)?n==Pt(Ir(u(D((!i.c&&(i.c=new Fn(he,i,5,8)),i.c),0),82))):n==Pt(Ir(u(D((!i.b&&(i.b=new Fn(he,i,4,7)),i.b),0),82))),!((a||t)&&(++f,f>1))););(f>0||g.Hc((Mu(),n1))&&(!c.n&&(c.n=new V(Rr,c,1,7)),c.n).i>0)&&(h=!0),f>1&&(l=!0)}h&&e.Fc((or(),$s)),l&&e.Fc((or(),Tm))}function r_n(n){var e,t,i,r,c,o,f,h,l,a,d,g;if(g=u(hn(n,(Xe(),Za)),21),g.dc())return null;if(f=0,o=0,g.Hc((Qu(),Ay))){for(a=u(hn(n,n9),98),i=2,t=2,r=2,c=2,e=Pt(n)?u(hn(Pt(n),A0),103):u(hn(n,A0),103),l=new ie((!n.c&&(n.c=new V(_u,n,9,9)),n.c));l.e!=l.i.gc();)if(h=u(oe(l),118),d=u(hn(h,Hg),61),d==(J(),Xr)&&(d=mZ(h,e),gr(h,Hg,d)),a==(Mi(),Ac))switch(d.g){case 1:i=y.Math.max(i,h.i+h.g);break;case 2:t=y.Math.max(t,h.j+h.f);break;case 3:r=y.Math.max(r,h.i+h.g);break;case 4:c=y.Math.max(c,h.j+h.f)}else switch(d.g){case 1:i+=h.g+2;break;case 2:t+=h.f+2;break;case 3:r+=h.g+2;break;case 4:c+=h.f+2}f=y.Math.max(i,r),o=y.Math.max(t,c)}return t0(n,f,o,!0,!0)}function pL(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x;for($=u(ts(qC(gt(new $n(null,new xn(e.d,16)),new Q5n(t)),new J5n(t)),ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[(lf(),ls)]))),15),d=nt,a=Bi,h=new E(e.b.j);h.a0,l?l&&(g=S.p,o?++g:--g,d=u(un(S.c.a,g),10),i=VOn(d),p=!(Kx(i,U,t[0])||ACn(i,U,t[0]))):p=!0),v=!1,_=e.D.i,_&&_.c&&f.e&&(a=o&&_.p>0||!o&&_.p<_.c.a.c.length-1,a?(g=_.p,o?--g:++g,d=u(un(_.c.a,g),10),i=VOn(d),v=!(Kx(i,t[0],ln)||ACn(i,t[0],ln))):v=!0),p&&v&&Ke(n.a,en),p||V5(n.a,A(M(di,1),q,8,0,[m,C])),v||V5(n.a,A(M(di,1),q,8,0,[x,O]))}function CM(n,e){var t,i,r,c,o,f,h,l;if(I(n.Ug(),160)?(CM(u(n.Ug(),160),e),e.a+=" > "):e.a+="Root ",t=n.Tg().zb,Mn(t.substr(0,3),"Elk")?De(e,t.substr(3)):e.a+=""+t,r=n.zg(),r){De((e.a+=" ",e),r);return}if(I(n,354)&&(l=u(n,137).a,l)){De((e.a+=" ",e),l);return}for(o=new ie(n.Ag());o.e!=o.i.gc();)if(c=u(oe(o),137),l=c.a,l){De((e.a+=" ",e),l);return}if(I(n,352)&&(i=u(n,79),!i.b&&(i.b=new Fn(he,i,4,7)),i.b.i!=0&&(!i.c&&(i.c=new Fn(he,i,5,8)),i.c.i!=0))){for(e.a+=" (",f=new b2((!i.b&&(i.b=new Fn(he,i,4,7)),i.b));f.e!=f.i.gc();)f.e>0&&(e.a+=Ji),CM(u(oe(f),160),e);for(e.a+=TN,h=new b2((!i.c&&(i.c=new Fn(he,i,5,8)),i.c));h.e!=h.i.gc();)h.e>0&&(e.a+=Ji),CM(u(oe(h),160),e);e.a+=")"}}function GEe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p;if(c=u(k(n,(G(),rt)),79),!!c){for(i=n.a,r=new kr(t),st(r,F4e(n)),K3(n.d.i,n.c.i)?(g=n.c,d=Gr(A(M(di,1),q,8,0,[g.n,g.a])),yi(d,t)):d=rf(n.c),Kt(i,d,i.a,i.a.a),p=rf(n.d),k(n,I_)!=null&&st(p,u(k(n,I_),8)),Kt(i,p,i.c.b,i.c),fb(i,r),o=ng(c,!0,!0),JC(o,u(D((!c.b&&(c.b=new Fn(he,c,4,7)),c.b),0),82)),YC(o,u(D((!c.c&&(c.c=new Fn(he,c,5,8)),c.c),0),82)),z7(i,o),a=new E(n.b);a.a=0){for(h=null,f=new Pi(a.a,l+1);f.bo?1:pd(isNaN(0),isNaN(o)))<0&&(mo(zf),(y.Math.abs(o-1)<=zf||o==1||isNaN(o)&&isNaN(1)?0:o<1?-1:o>1?1:pd(isNaN(o),isNaN(1)))<0)&&(mo(zf),(y.Math.abs(0-f)<=zf||f==0||isNaN(0)&&isNaN(f)?0:0f?1:pd(isNaN(0),isNaN(f)))<0)&&(mo(zf),(y.Math.abs(f-1)<=zf||f==1||isNaN(f)&&isNaN(1)?0:f<1?-1:f>1?1:pd(isNaN(f),isNaN(1)))<0)),c)}function UEe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U;for(d=new NW(new Mq(n));d.b!=d.c.a.d;)for(a=fPn(d),f=u(a.d,56),e=u(a.e,56),o=f.Tg(),m=0,x=(o.i==null&&Nf(o),o.i).length;m=0&&m=l.c.c.length?a=pX((Qn(),ii),pi):a=pX((Qn(),pi),pi),a*=2,c=t.a.g,t.a.g=y.Math.max(c,c+(a-c)),o=t.b.g,t.b.g=y.Math.max(o,o+(a-o)),r=e}}function VEe(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_;for(_=TEn(n),a=new X,f=n.c.length,d=f-1,g=f+1;_.a.c!=0;){for(;t.b!=0;)O=(ne(t.b!=0),u(Ts(t,t.a.a),112)),R5(_.a,O)!=null,O.g=d--,kZ(O,e,t,i);for(;e.b!=0;)x=(ne(e.b!=0),u(Ts(e,e.a.a),112)),R5(_.a,x)!=null,x.g=g++,kZ(x,e,t,i);for(l=Bi,S=(o=new T5(new j5(new P9(_.a).a).b),new I9(o));G9(S.a.a);){if(C=(c=pE(S.a),u(c.cd(),112)),!i&&C.b>0&&C.a<=0){a.c=F(Zn,rn,1,0,5,1),a.c[a.c.length]=C;break}m=C.i-C.d,m>=l&&(m>l&&(a.c=F(Zn,rn,1,0,5,1),l=m),a.c[a.c.length]=C)}a.c.length!=0&&(h=u(un(a,_T(r,a.c.length)),112),R5(_.a,h)!=null,h.g=g++,kZ(h,e,t,i),a.c=F(Zn,rn,1,0,5,1))}for($=n.c.length+1,v=new E(n);v.a0&&(g.d+=a.n.d,g.d+=a.d),g.a>0&&(g.a+=a.n.a,g.a+=a.d),g.b>0&&(g.b+=a.n.b,g.b+=a.d),g.c>0&&(g.c+=a.n.c,g.c+=a.d),g}function u_n(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v;for(g=t.d,d=t.c,c=new fn(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),o=c.b,l=new E(n.a);l.a0&&(n.c[e.c.p][e.p].d+=xu(n.i,24)*uk*.07000000029802322-.03500000014901161,n.c[e.c.p][e.p].a=n.c[e.c.p][e.p].d/n.c[e.c.p][e.p].b)}}function iCe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C;for(v=new E(n);v.ai.d,i.d=y.Math.max(i.d,e),f&&t&&(i.d=y.Math.max(i.d,i.a),i.a=i.d+r);break;case 3:t=e>i.a,i.a=y.Math.max(i.a,e),f&&t&&(i.a=y.Math.max(i.a,i.d),i.d=i.a+r);break;case 2:t=e>i.c,i.c=y.Math.max(i.c,e),f&&t&&(i.c=y.Math.max(i.b,i.c),i.b=i.c+r);break;case 4:t=e>i.b,i.b=y.Math.max(i.b,e),f&&t&&(i.b=y.Math.max(i.b,i.c),i.c=i.b+r)}}}function sCe(n){var e,t,i,r,c,o,f,h,l,a,d;for(l=new E(n);l.a0||a.j==Gn&&a.e.c.length-a.g.c.length<0)){e=!1;break}for(r=new E(a.g);r.a=l&&_>=C&&(g+=v.n.b+m.n.b+m.a.b-x,++f));if(t)for(o=new E($.e);o.a=l&&_>=C&&(g+=v.n.b+m.n.b+m.a.b-x,++f))}f>0&&(U+=g/f,++p)}p>0?(e.a=r*U/p,e.g=p):(e.a=0,e.g=0)}function fCe(n,e){var t,i,r,c,o,f,h,l,a,d,g;for(r=new E(n.a.b);r.aQt||e.o==Ja&&a0&&nu(S,x*U),_>0&&eu(S,_*en);for(n6(n.b,new gan),e=new X,f=new Ea(new ta(n.c).a);f.b;)o=Nd(f),i=u(o.cd(),79),t=u(o.dd(),395).a,r=ng(i,!1,!1),d=sxn(hh(i),I7(r),t),z7(d,r),O=mxn(i),O&&xr(e,O,0)==-1&&(e.c[e.c.length]=O,TTn(O,(ne(d.b!=0),u(d.a.a.c,8)),t));for(C=new Ea(new ta(n.d).a);C.b;)m=Nd(C),i=u(m.cd(),79),t=u(m.dd(),395).a,r=ng(i,!1,!1),d=sxn(ml(i),o7(I7(r)),t),d=o7(d),z7(d,r),O=kxn(i),O&&xr(e,O,0)==-1&&(e.c[e.c.length]=O,TTn(O,(ne(d.b!=0),u(d.c.b.c,8)),t))}function f_n(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en;if(t.c.length!=0){for(p=new X,g=new E(t);g.a1)for(p=new SZ(v,O,i),$i(O,new tkn(n,p)),o.c[o.c.length]=p,d=O.a.ec().Kc();d.Ob();)a=u(d.Pb(),46),Jc(c,a.b);if(f.a.gc()>1)for(p=new SZ(v,f,i),$i(f,new ikn(n,p)),o.c[o.c.length]=p,d=f.a.ec().Kc();d.Ob();)a=u(d.Pb(),46),Jc(c,a.b)}}function l_n(n){wd(n,new Ia(vj(ld(od(hd(fd(new Zl,Uf),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new Fgn),Uf))),Z(n,Uf,oA,cn(DYn)),Z(n,Uf,Db,cn($Yn)),Z(n,Uf,hg,cn(SYn)),Z(n,Uf,ip,cn(PYn)),Z(n,Uf,tp,cn(IYn)),Z(n,Uf,F4,cn(AYn)),Z(n,Uf,G6,cn(Ron)),Z(n,Uf,x4,cn(OYn)),Z(n,Uf,dB,cn(MK)),Z(n,Uf,aB,cn(AK)),Z(n,Uf,otn,cn(_on)),Z(n,Uf,rtn,cn(TP)),Z(n,Uf,ctn,cn(MP)),Z(n,Uf,utn,cn(oy)),Z(n,Uf,stn,cn(Kon))}function NZ(n){var e;if(this.r=Uhe(new Nln,new Bln),this.b=new f6(u(pe(Zi),290)),this.p=new f6(u(pe(Zi),290)),this.i=new f6(u(pe(yUn),290)),this.e=n,this.o=new kr(n.rf()),this.D=n.Df()||on(sn(n.We((Xe(),vy)))),this.A=u(n.We((Xe(),Za)),21),this.B=u(n.We(_l),21),this.q=u(n.We(n9),98),this.u=u(n.We(rw),21),!Zve(this.u))throw T(new pw("Invalid port label placement: "+this.u));if(this.v=on(sn(n.We(mhn))),this.j=u(n.We(_g),21),!E9e(this.j))throw T(new pw("Invalid node label placement: "+this.j));this.n=u(w6(n,uhn),116),this.k=K(Y(w6(n,KP))),this.d=K(Y(w6(n,Ehn))),this.w=K(Y(w6(n,Shn))),this.s=K(Y(w6(n,Chn))),this.t=K(Y(w6(n,Thn))),this.C=u(w6(n,Mhn),142),this.c=2*this.d,e=!this.B.Hc((Lu(),Sy)),this.f=new l6(0,e,0),this.g=new l6(1,e,0),zI(this.f,(_o(),Fc),this.g)}function vCe(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn;for(O=0,v=0,p=0,g=1,$=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));$.e!=$.i.gc();)C=u(oe($),33),g+=Fh(new re(ue(Gh(C).a.Kc(),new An))),ln=C.g,v=y.Math.max(v,ln),d=C.f,p=y.Math.max(p,d),O+=ln*d;for(m=(!n.a&&(n.a=new V(Ot,n,10,11)),n.a).i,o=O+2*i*i*g*m,c=y.Math.sqrt(o),h=y.Math.max(c*t,v),f=y.Math.max(c/t,p),S=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));S.e!=S.i.gc();)C=u(oe(S),33),wn=r.b+(xu(e,26)*N6+xu(e,27)*B6)*(h-C.g),zn=r.b+(xu(e,26)*N6+xu(e,27)*B6)*(f-C.f),nu(C,wn),eu(C,zn);for(en=h+(r.b+r.c),U=f+(r.d+r.a),_=new ie((!n.a&&(n.a=new V(Ot,n,10,11)),n.a));_.e!=_.i.gc();)for(x=u(oe(_),33),a=new re(ue(Gh(x).a.Kc(),new An));Se(a);)l=u(ve(a),79),j6(l)||mTe(l,e,en,U);en+=r.b+r.c,U+=r.d+r.a,t0(n,en,U,!1,!0)}function MM(n){var e,t,i,r,c,o,f,h,l,a,d;if(n==null)throw T(new Pf(ru));if(l=n,c=n.length,h=!1,c>0&&(e=(Te(0,n.length),n.charCodeAt(0)),(e==45||e==43)&&(n=n.substr(1),--c,h=e==45)),c==0)throw T(new Pf(c0+l+'"'));for(;n.length>0&&(Te(0,n.length),n.charCodeAt(0)==48);)n=n.substr(1),--c;if(c>(ZBn(),yzn)[10])throw T(new Pf(c0+l+'"'));for(r=0;r0&&(d=-parseInt(n.substr(0,i),10),n=n.substr(i),c-=i,t=!1);c>=o;){if(i=parseInt(n.substr(0,o),10),n=n.substr(o),c-=o,t)t=!1;else{if(fc(d,f)<0)throw T(new Pf(c0+l+'"'));d=Ni(d,a)}d=vl(d,i)}if(fc(d,0)>0)throw T(new Pf(c0+l+'"'));if(!h&&(d=P3(d),fc(d,0)<0))throw T(new Pf(c0+l+'"'));return d}function BZ(n,e){HEn();var t,i,r,c,o,f,h;if(this.a=new Sz(this),this.b=n,this.c=e,this.f=PD(Er((gu(),xi),e)),this.f.dc())if((f=EJ(xi,n))==e)for(this.e=!0,this.d=new X,this.f=new H2n,this.f.Fc(Ka),u(jM(G8(xi,is(n)),""),26)==n&&this.f.Fc(I5(xi,is(n))),r=Jx(xi,n).Kc();r.Ob();)switch(i=u(r.Pb(),170),Sd(Er(xi,i))){case 4:{this.d.Fc(i);break}case 5:{this.f.Gc(PD(Er(xi,i)));break}}else if(er(),u(e,66).Oj())for(this.e=!0,this.f=null,this.d=new X,o=0,h=(n.i==null&&Nf(n),n.i).length;o=0&&o0&&(u(br(n.b,e),124).a.b=t)}function mCe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S;for(le(e,"Comment pre-processing",1),t=0,h=new E(n.a);h.a0&&(h=(Te(0,e.length),e.charCodeAt(0)),h!=64)){if(h==37&&(d=e.lastIndexOf("%"),l=!1,d!=0&&(d==g-1||(l=(Te(d+1,e.length),e.charCodeAt(d+1)==46))))){if(o=e.substr(1,d-1),O=Mn("%",o)?null:_Z(o),i=0,l)try{i=ss(e.substr(d+2),Bi,nt)}catch(x){throw x=jt(x),I(x,127)?(f=x,T(new xC(f))):T(x)}for(C=kV(n.Wg());C.Ob();)if(v=hT(C),I(v,510)&&(r=u(v,590),$=r.d,(O==null?$==null:Mn(O,$))&&i--==0))return r;return null}if(a=e.lastIndexOf("."),p=a==-1?e:e.substr(0,a),t=0,a!=-1)try{t=ss(e.substr(a+1),Bi,nt)}catch(x){if(x=jt(x),I(x,127))p=e;else throw T(x)}for(p=Mn("%",p)?null:_Z(p),m=kV(n.Wg());m.Ob();)if(v=hT(m),I(v,191)&&(c=u(v,191),S=c.ne(),(p==null?S==null:Mn(p,S))&&t--==0))return c;return null}return LRn(n,e)}function jCe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn;for(U=new X,v=new E(n.b);v.a=e.length)return{done:!0};var r=e[i++];return{value:[r,t.get(r)],done:!1}}}},A7e()||(n.prototype.createObject=function(){return{}},n.prototype.get=function(e){return this.obj[":"+e]},n.prototype.set=function(e,t){this.obj[":"+e]=t},n.prototype[eN]=function(e){delete this.obj[":"+e]},n.prototype.keys=function(){var e=[];for(var t in this.obj)t.charCodeAt(0)==58&&e.push(t.substring(1));return e}),n}function CCe(n){vZ();var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C;if(n==null)return null;if(d=n.length*8,d==0)return"";for(f=d%24,p=d/24|0,g=f!=0?p+1:p,c=null,c=F(Ls,Rf,25,g*4,15,1),l=0,a=0,e=0,t=0,i=0,o=0,r=0,h=0;h>24,l=(e&3)<<24>>24,v=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,m=t&-128?(t>>4^240)<<24>>24:t>>4<<24>>24,C=i&-128?(i>>6^252)<<24>>24:i>>6<<24>>24,c[o++]=R1[v],c[o++]=R1[m|l<<4],c[o++]=R1[a<<2|C],c[o++]=R1[i&63];return f==8?(e=n[r],l=(e&3)<<24>>24,v=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,c[o++]=R1[v],c[o++]=R1[l<<4],c[o++]=61,c[o++]=61):f==16&&(e=n[r],t=n[r+1],a=(t&15)<<24>>24,l=(e&3)<<24>>24,v=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,m=t&-128?(t>>4^240)<<24>>24:t>>4<<24>>24,c[o++]=R1[v],c[o++]=R1[m|l<<4],c[o++]=R1[a<<2],c[o++]=61),Hs(c,0,c.length)}function TCe(n,e){var t,i,r,c,o,f,h;if(n.e==0&&n.p>0&&(n.p=-(n.p-1)),n.p>Bi&&mX(e,n.p-Tl),o=e.q.getDate(),A8(e,1),n.k>=0&&sle(e,n.k),n.c>=0?A8(e,n.c):n.k>=0?(h=new _V(e.q.getFullYear()-Tl,e.q.getMonth(),35),i=35-h.q.getDate(),A8(e,y.Math.min(i,o))):A8(e,o),n.f<0&&(n.f=e.q.getHours()),n.b>0&&n.f<12&&(n.f+=12),vce(e,n.f==24&&n.g?0:n.f),n.j>=0&&vde(e,n.j),n.n>=0&&Lde(e,n.n),n.i>=0&&Kkn(e,qi(Ni(M7(tu(e.q.getTime()),j1),j1),n.i)),n.a&&(r=new Tj,mX(r,r.q.getFullYear()-Tl-80),cO(tu(e.q.getTime()),tu(r.q.getTime()))&&mX(e,r.q.getFullYear()-Tl+100)),n.d>=0){if(n.c==-1)t=(7+n.d-e.q.getDay())%7,t>3&&(t-=7),f=e.q.getMonth(),A8(e,e.q.getDate()+t),e.q.getMonth()!=f&&A8(e,e.q.getDate()+(t>0?-7:7));else if(e.q.getDay()!=n.d)return!1}return n.o>Bi&&(c=e.q.getTimezoneOffset(),Kkn(e,qi(tu(e.q.getTime()),(n.o-c)*60*j1))),!0}function b_n(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x;if(r=k(e,(G(),rt)),!!I(r,239)){for(v=u(r,33),m=e.e,g=new kr(e.c),c=e.d,g.a+=c.b,g.b+=c.d,x=u(hn(v,(nn(),iP)),174),au(x,(Lu(),GP))&&(p=u(hn(v,Esn),116),Yee(p,c.a),ute(p,c.d),Zee(p,c.b),ste(p,c.c)),t=new X,a=new E(e.a);a.a0&&W(n.p,a),W(n.o,a);e-=i,p=h+e,l+=e*n.e,Es(n.a,f,Q(p)),Es(n.b,f,l),n.j=y.Math.max(n.j,p),n.k=y.Math.max(n.k,l),n.d+=e,e+=m}}function J(){J=N;var n;Xr=new t8(K6,0),Kn=new t8(NM,1),Vn=new t8(lN,2),ae=new t8(aN,3),Gn=new t8(dN,4),Cf=(Pn(),new Wp((n=u(xo(Zi),9),new ks(n,u(bo(n,n.length),9),0)))),Do=b1(pt(Kn,A(M(Zi,1),hc,61,0,[]))),Fs=b1(pt(Vn,A(M(Zi,1),hc,61,0,[]))),bs=b1(pt(ae,A(M(Zi,1),hc,61,0,[]))),to=b1(pt(Gn,A(M(Zi,1),hc,61,0,[]))),uu=b1(pt(Kn,A(M(Zi,1),hc,61,0,[ae]))),Gc=b1(pt(Vn,A(M(Zi,1),hc,61,0,[Gn]))),$o=b1(pt(Kn,A(M(Zi,1),hc,61,0,[Gn]))),Pu=b1(pt(Kn,A(M(Zi,1),hc,61,0,[Vn]))),ws=b1(pt(ae,A(M(Zi,1),hc,61,0,[Gn]))),xs=b1(pt(Vn,A(M(Zi,1),hc,61,0,[ae]))),Iu=b1(pt(Kn,A(M(Zi,1),hc,61,0,[Vn,Gn]))),cu=b1(pt(Vn,A(M(Zi,1),hc,61,0,[ae,Gn]))),su=b1(pt(Kn,A(M(Zi,1),hc,61,0,[ae,Gn]))),ku=b1(pt(Kn,A(M(Zi,1),hc,61,0,[Vn,ae]))),Sc=b1(pt(Kn,A(M(Zi,1),hc,61,0,[Vn,ae,Gn])))}function v_n(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O;if(e.b!=0){for(p=new Tt,f=null,v=null,i=Gt(y.Math.floor(y.Math.log(e.b)*y.Math.LOG10E)+1),h=0,O=_e(e,0);O.b!=O.d.c;)for(S=u(Re(O),86),B(v)!==B(k(S,(cc(),Um)))&&(v=Ce(k(S,Um)),h=0),v!=null?f=v+RMn(h++,i):f=RMn(h++,i),H(S,Um,f),C=(r=_e(new X1(S).a.d,0),new e2(r));yj(C.a);)m=u(Re(C.a),188).c,Kt(p,m,p.c.b,p.c),H(m,Um,f);for(g=new we,o=0;o=h){ne(S.b>0),S.a.Xb(S.c=--S.b);break}else m.a>l&&(r?(Zt(r.b,m.b),r.a=y.Math.max(r.a,m.a),Wu(S)):(W(m.b,d),m.c=y.Math.min(m.c,l),m.a=y.Math.max(m.a,h),r=m));r||(r=new i9n,r.c=l,r.a=h,X0(S,r),W(r.b,d))}for(f=e.b,a=0,C=new E(i);C.af?1:0:(n.b&&(n.b._b(c)&&(r=u(n.b.xc(c),19).a),n.b._b(h)&&(f=u(n.b.xc(h),19).a)),rf?1:0)):e.e.c.length!=0&&t.g.c.length!=0?1:-1}function PCe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en;for(le(e,oHn,1),m=new X,U=new X,l=new E(n.b);l.a0&&(O-=p),PZ(o,O),a=0,g=new E(o.a);g.a0),f.a.Xb(f.c=--f.b)),h=.4*i*a,!c&&f.be.d.c){if(p=n.c[e.a.d],C=n.c[d.a.d],p==C)continue;jo(lo(ho(ao(fo(new Ns,1),100),p),C))}}}}}function _Z(n){bL();var e,t,i,r,c,o,f,h;if(n==null)return null;if(r=If(n,iu(37)),r<0)return n;for(h=new Yu(n.substr(0,r)),e=F(yu,wg,25,4,15,1),f=0,i=0,o=n.length;rr+2&&uF((Te(r+1,n.length),n.charCodeAt(r+1)),h1n,l1n)&&uF((Te(r+2,n.length),n.charCodeAt(r+2)),h1n,l1n))if(t=tfe((Te(r+1,n.length),n.charCodeAt(r+1)),(Te(r+2,n.length),n.charCodeAt(r+2))),r+=2,i>0?(t&192)==128?e[f++]=t<<24>>24:i=0:t>=128&&((t&224)==192?(e[f++]=t<<24>>24,i=2):(t&240)==224?(e[f++]=t<<24>>24,i=3):(t&248)==240&&(e[f++]=t<<24>>24,i=4)),i>0){if(f==i){switch(f){case 2:{sl(h,((e[0]&31)<<6|e[1]&63)&Ut);break}case 3:{sl(h,((e[0]&15)<<12|(e[1]&63)<<6|e[2]&63)&Ut);break}}f=0,i=0}}else{for(c=0;c0){if(o+i>n.length)return!1;f=tM(n.substr(0,o+i),e)}else f=tM(n,e);switch(c){case 71:return f=Qw(n,o,A(M(tn,1),q,2,6,[nKn,eKn]),e),r.e=f,!0;case 77:return g7e(n,e,r,f,o);case 76:return p7e(n,e,r,f,o);case 69:return o6e(n,e,o,r);case 99:return f6e(n,e,o,r);case 97:return f=Qw(n,o,A(M(tn,1),q,2,6,["AM","PM"]),e),r.b=f,!0;case 121:return v7e(n,e,o,f,t,r);case 100:return f<=0?!1:(r.c=f,!0);case 83:return f<0?!1:j2e(f,o,e[0],r);case 104:f==12&&(f=0);case 75:case 72:return f<0?!1:(r.f=f,r.g=!1,!0);case 107:return f<0?!1:(r.f=f,r.g=!0,!0);case 109:return f<0?!1:(r.j=f,!0);case 115:return f<0?!1:(r.n=f,!0);case 90:if(oU&&(v.c=U-v.b),W(o.d,new jD(v,gQ(o,v))),$=e==Kn?y.Math.max($,m.b+l.b.rf().b):y.Math.min($,m.b));for($+=e==Kn?n.t:-n.t,O=DQ((o.e=$,o)),O>0&&(u(br(n.b,e),124).a.b=O),a=g.Kc();a.Ob();)l=u(a.Pb(),111),!(!l.c||l.c.d.c.length<=0)&&(v=l.c.i,v.c-=l.e.a,v.d-=l.e.b)}function LCe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p;for(e=new we,h=new ie(n);h.e!=h.i.gc();){for(f=u(oe(h),33),t=new hi,it(DR,f,t),p=new lan,r=u(ts(new $n(null,new Cd(new re(ue(N7(f).a.Kc(),new An)))),hCn(p,ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[(lf(),ls)])))),83),$In(t,u(r.xc((qn(),!0)),14),new aan),i=u(ts(gt(u(r.xc(!1),15).Lc(),new dan),ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[ls]))),15),o=i.Kc();o.Ob();)c=u(o.Pb(),79),g=mxn(c),g&&(l=u(Vr(Sr(e.f,g)),21),l||(l=RNn(g),_c(e.f,g,l)),Vi(t,l));for(r=u(ts(new $n(null,new Cd(new re(ue(Gh(f).a.Kc(),new An)))),hCn(p,ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[ls])))),83),$In(t,u(r.xc(!0),14),new ban),i=u(ts(gt(u(r.xc(!1),15).Lc(),new wan),ga(new U1,new z1,new W1,A(M(Bu,1),z,132,0,[ls]))),15),d=i.Kc();d.Ob();)a=u(d.Pb(),79),g=kxn(a),g&&(l=u(Vr(Sr(e.f,g)),21),l||(l=RNn(g),_c(e.f,g,l)),Vi(t,l))}}function NCe(n,e){oL();var t,i,r,c,o,f,h,l,a,d,g,p,v,m;if(h=fc(n,0)<0,h&&(n=P3(n)),fc(n,0)==0)switch(e){case 0:return"0";case 1:return S4;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return p=new V1,e<0?p.a+="0E+":p.a+="0E",p.a+=e==Bi?"2147483648":""+-e,p.a}a=18,d=F(Ls,Rf,25,a+1,15,1),t=a,m=n;do l=m,m=M7(m,10),d[--t]=ge(qi(48,vl(l,Ni(m,10))))&Ut;while(fc(m,0)!=0);if(r=vl(vl(vl(a,t),e),1),e==0)return h&&(d[--t]=45),Hs(d,t,a-t);if(e>0&&fc(r,-6)>=0){if(fc(r,0)>=0){for(c=t+ge(r),f=a-1;f>=c;f--)d[f+1]=d[f];return d[++c]=46,h&&(d[--t]=45),Hs(d,t,a-t+1)}for(o=2;cO(o,qi(P3(r),1));o++)d[--t]=48;return d[--t]=46,d[--t]=48,h&&(d[--t]=45),Hs(d,t,a-t)}return v=t+1,i=a,g=new R0,h&&(g.a+="-"),i-v>=1?(sl(g,d[t]),g.a+=".",g.a+=Hs(d,t+1,a-t-1)):g.a+=Hs(d,t,a-t),g.a+="E",fc(r,0)>0&&(g.a+="+"),g.a+=""+O5(r),g.a}function BCe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p;if(n.e.a.$b(),n.f.a.$b(),n.c.c=F(Zn,rn,1,0,5,1),n.i.c=F(Zn,rn,1,0,5,1),n.g.a.$b(),e)for(o=new E(e.a);o.a=1&&(_-l>0&&v>=0?(nu(d,d.i+x),eu(d,d.j+h*l)):_-l<0&&p>=0&&(nu(d,d.i+x*_),eu(d,d.j+h)));return gr(n,(Xe(),Za),(Qu(),c=u(xo(o9),9),new ks(c,u(bo(c,c.length),9),0))),new fn(U,a)}function y_n(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v;if(p=Pt(Ir(u(D((!n.b&&(n.b=new Fn(he,n,4,7)),n.b),0),82))),v=Pt(Ir(u(D((!n.c&&(n.c=new Fn(he,n,5,8)),n.c),0),82))),d=p==v,f=new Li,e=u(hn(n,(wT(),Lhn)),74),e&&e.b>=2){if((!n.a&&(n.a=new V(Mt,n,6,6)),n.a).i==0)t=(ad(),r=new Vy,r),me((!n.a&&(n.a=new V(Mt,n,6,6)),n.a),t);else if((!n.a&&(n.a=new V(Mt,n,6,6)),n.a).i>1)for(g=new b2((!n.a&&(n.a=new V(Mt,n,6,6)),n.a));g.e!=g.i.gc();)p6(g);z7(e,u(D((!n.a&&(n.a=new V(Mt,n,6,6)),n.a),0),202))}if(d)for(i=new ie((!n.a&&(n.a=new V(Mt,n,6,6)),n.a));i.e!=i.i.gc();)for(t=u(oe(i),202),l=new ie((!t.a&&(t.a=new Yt(io,t,5)),t.a));l.e!=l.i.gc();)h=u(oe(l),469),f.a=y.Math.max(f.a,h.a),f.b=y.Math.max(f.b,h.b);for(o=new ie((!n.n&&(n.n=new V(Rr,n,1,7)),n.n));o.e!=o.i.gc();)c=u(oe(o),137),a=u(hn(c,t9),8),a&&Yo(c,a.a,a.b),d&&(f.a=y.Math.max(f.a,c.i+c.g),f.b=y.Math.max(f.b,c.j+c.f));return f}function RCe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln;for(O=e.c.length,r=new tg(n.a,t,null,null),ln=F(Ei,pr,25,O,15,1),m=F(Ei,pr,25,O,15,1),v=F(Ei,pr,25,O,15,1),C=0,f=0;fln[h]&&(C=h),d=new E(n.a.b);d.ap&&(c&&(ua(U,g),ua(ln,Q(l.b-1))),Ye=t.b,fi+=g+e,g=0,a=y.Math.max(a,t.b+t.c+se)),nu(f,Ye),eu(f,fi),a=y.Math.max(a,Ye+se+t.c),g=y.Math.max(g,d),Ye+=se+e;if(a=y.Math.max(a,i),Wn=fi+g+t.a,WnHf,wn=y.Math.abs(g.b-v.b)>Hf,(!t&&ln&&wn||t&&(ln||wn))&&Ke(C.a,x)),Vi(C.a,i),i.b==0?g=x:g=(ne(i.b!=0),u(i.c.b.c,8)),iwe(p,d,m),hOn(r)==en&&(Gi(en.i)!=r.a&&(m=new Li,rY(m,Gi(en.i),$)),H(C,I_,m)),A5e(p,C,$),a.a.zc(p,a);Hi(C,_),Ci(C,en)}for(l=a.a.ec().Kc();l.Ob();)h=u(l.Pb(),17),Hi(h,null),Ci(h,null);ce(e)}function j_n(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x;if(n.gc()==1)return u(n.Xb(0),231);if(n.gc()<=0)return new TC;for(r=n.Kc();r.Ob();){for(t=u(r.Pb(),231),v=0,a=nt,d=nt,h=Bi,l=Bi,p=new E(t.e);p.af&&(O=0,x+=o+S,o=0),Tke(m,t,O,x),e=y.Math.max(e,O+C.a),o=y.Math.max(o,C.b),O+=C.a+S;return m}function E_n(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v;switch(a=new hu,n.a.g){case 3:g=u(k(e.e,(G(),Ua)),15),p=u(k(e.j,Ua),15),v=u(k(e.f,Ua),15),t=u(k(e.e,Og),15),i=u(k(e.j,Og),15),r=u(k(e.f,Og),15),o=new X,Zt(o,g),p.Jc(new pwn),Zt(o,I(p,152)?I2(u(p,152)):I(p,131)?u(p,131).a:I(p,54)?new sd(p):new _0(p)),Zt(o,v),c=new X,Zt(c,t),Zt(c,I(i,152)?I2(u(i,152)):I(i,131)?u(i,131).a:I(i,54)?new sd(i):new _0(i)),Zt(c,r),H(e.f,Ua,o),H(e.f,Og,c),H(e.f,yun,e.f),H(e.e,Ua,null),H(e.e,Og,null),H(e.j,Ua,null),H(e.j,Og,null);break;case 1:Vi(a,e.e.a),Ke(a,e.i.n),Vi(a,va(e.j.a)),Ke(a,e.a.n),Vi(a,e.f.a);break;default:Vi(a,e.e.a),Vi(a,va(e.j.a)),Vi(a,e.f.a)}_s(e.f.a),Vi(e.f.a,a),Hi(e.f,e.e.c),f=u(k(e.e,(nn(),Mr)),74),l=u(k(e.j,Mr),74),h=u(k(e.f,Mr),74),(f||l||h)&&(d=new hu,AW(d,h),AW(d,l),AW(d,f),H(e.f,Mr,d)),Hi(e.j,null),Ci(e.j,null),Hi(e.e,null),Ci(e.e,null),jr(e.a,null),jr(e.i,null),e.g&&E_n(n,e.g)}function qCe(n){vZ();var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C;if(n==null||(c=NC(n),v=Ige(c),v%4!=0))return null;if(m=v/4|0,m==0)return F(yu,wg,25,0,15,1);for(d=null,e=0,t=0,i=0,r=0,o=0,f=0,h=0,l=0,p=0,g=0,a=0,d=F(yu,wg,25,m*3,15,1);p>4)<<24>>24,d[g++]=((t&15)<<4|i>>2&15)<<24>>24,d[g++]=(i<<6|r)<<24>>24}return!B9(o=c[a++])||!B9(f=c[a++])?null:(e=Mf[o],t=Mf[f],h=c[a++],l=c[a++],Mf[h]==-1||Mf[l]==-1?h==61&&l==61?t&15?null:(C=F(yu,wg,25,p*3+1,15,1),gc(d,0,C,0,p*3),C[g]=(e<<2|t>>4)<<24>>24,C):h!=61&&l==61?(i=Mf[h],i&3?null:(C=F(yu,wg,25,p*3+2,15,1),gc(d,0,C,0,p*3),C[g++]=(e<<2|t>>4)<<24>>24,C[g]=((t&15)<<4|i>>2&15)<<24>>24,C)):null:(i=Mf[h],r=Mf[l],d[g++]=(e<<2|t>>4)<<24>>24,d[g++]=((t&15)<<4|i>>2&15)<<24>>24,d[g++]=(i<<6|r)<<24>>24,d))}function GCe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_;for(le(e,oHn,1),v=u(k(n,(nn(),Qh)),218),r=new E(n.b);r.a=2){for(m=!0,g=new E(c.j),t=u(j(g),11),p=null;g.a0&&(r=u(un(C.c.a,U-1),10),o=n.i[r.p],ln=y.Math.ceil(Mw(n.n,r,C)),c=_.a.e-C.d.d-(o.a.e+r.o.b+r.d.a)-ln),l=Ft,U0&&en.a.e.e-en.a.a-(en.b.e.e-en.b.a)<0,v=O.a.e.e-O.a.a-(O.b.e.e-O.b.a)<0&&en.a.e.e-en.a.a-(en.b.e.e-en.b.a)>0,p=O.a.e.e+O.b.aen.b.e.e+en.a.a,x=0,!m&&!v&&(g?c+d>0?x=d:l-i>0&&(x=i):p&&(c+f>0?x=f:l-$>0&&(x=$))),_.a.e+=x,_.b&&(_.d.e+=x),!1))}function T_n(n,e,t){var i,r,c,o,f,h,l,a,d,g;if(i=new ys(e.qf().a,e.qf().b,e.rf().a,e.rf().b),r=new d2,n.c)for(o=new E(e.wf());o.al&&(i.a+=Iyn(F(Ls,Rf,25,-l,15,1))),i.a+="Is",If(h,iu(32))>=0)for(r=0;r=i.o.b/2}else $=!d;$?(S=u(k(i,(G(),mp)),15),S?g?c=S:(r=u(k(i,bp),15),r?S.gc()<=r.gc()?c=S:c=r:(c=new X,H(i,bp,c))):(c=new X,H(i,mp,c))):(r=u(k(i,(G(),bp)),15),r?d?c=r:(S=u(k(i,mp),15),S?r.gc()<=S.gc()?c=r:c=S:(c=new X,H(i,mp,c))):(c=new X,H(i,bp,c))),c.Fc(n),H(n,(G(),_S),t),e.d==t?(Ci(e,null),t.e.c.length+t.g.c.length==0&&Hr(t,null),Bwe(t)):(Hi(e,null),t.e.c.length+t.g.c.length==0&&Hr(t,null)),_s(e.a)}function XCe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye;for($=new Pi(n.b,0),a=e.Kc(),v=0,l=u(a.Pb(),19).a,_=0,t=new hi,en=new Sh;$.b<$.d.gc();){for(S=(ne($.b<$.d.gc()),u($.d.Xb($.c=$.b++),29)),x=new E(S.a);x.a=n.a&&(i=$ye(n,$),a=y.Math.max(a,i.b),x=y.Math.max(x,i.d),W(f,new Si($,i)));for(ln=new X,l=0;l0),C.a.Xb(C.c=--C.b),wn=new Rs(n.b),X0(C,wn),ne(C.b0?(l=0,C&&(l+=f),l+=(wn-1)*o,O&&(l+=f),ln&&O&&(l=y.Math.max(l,D8e(O,o,$,en))),l<$&&!g&&!p&&(Wn=($-l)/2,l=$),x+=l):!g&&!p&&(x+=$),O&&PZ(O,x),U=new E(n.i);U.a0){for(g=a<100?null:new Q1(a),l=new CV(e),v=l.g,S=F(be,Le,25,a,15,1),i=0,x=new Ld(a),r=0;r=0;)if(p!=null?tt(p,v[h]):B(p)===B(v[h])){S.length<=i&&(C=S,S=F(be,Le,25,2*S.length,15,1),gc(C,0,S,0,i)),S[i++]=r,me(x,v[h]);break n}if(p=p,B(p)===B(f))break}}if(l=x,v=x.g,a=i,i>S.length&&(C=S,S=F(be,Le,25,i,15,1),gc(C,0,S,0,i)),i>0){for(O=!0,c=0;c=0;)H2(n,S[o]);if(i!=a){for(r=a;--r>=i;)H2(l,r);C=S,S=F(be,Le,25,i,15,1),gc(C,0,S,0,i)}e=l}}}else for(e=I3e(n,e),r=n.i;--r>=0;)e.Hc(n.g[r])&&(H2(n,r),O=!0);if(O){if(S!=null){for(t=e.gc(),d=t==1?_5(n,4,e.Kc().Pb(),null,S[0],m):_5(n,6,e,S,S[0],m),g=t<100?null:new Q1(t),r=e.Kc();r.Ob();)p=r.Pb(),g=SU(n,u(p,72),g);g?(g.Ei(d),g.Fi()):et(n.e,d)}else{for(g=que(e.gc()),r=e.Kc();r.Ob();)p=r.Pb(),g=SU(n,u(p,72),g);g&&g.Fi()}return!0}else return!1}function ZCe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O;for(t=new Z$n(e),t.a||Lke(e),l=N7e(e),h=new Od,C=new WNn,m=new E(e.a);m.a0||t.o==yf&&r0?(d=u(un(g.c.a,o-1),10),ln=Mw(n.b,g,d),C=g.n.b-g.d.d-(d.n.b+d.o.b+d.d.a+ln)):C=g.n.b-g.d.d,l=y.Math.min(C,l),oo?p4(n,e,t):p4(n,t,e),ro?1:0}return i=u(k(e,(G(),dc)),19).a,c=u(k(t,dc),19).a,i>c?p4(n,e,t):p4(n,t,e),ic?1:0}function KZ(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C,S,$;if(on(sn(hn(e,(Xe(),RP)))))return Pn(),Pn(),cr;if(l=(!e.a&&(e.a=new V(Ot,e,10,11)),e.a).i!=0,d=K6e(e),a=!d.dc(),l||a){if(r=u(hn(e,yv),149),!r)throw T(new pw("Resolved algorithm is not set; apply a LayoutAlgorithmResolver before computing layout."));if($=hz(r,(d4(),YP)),F$n(e),!l&&a&&!$)return Pn(),Pn(),cr;if(h=new X,B(hn(e,Bg))===B((_h(),F1))&&(hz(r,QP)||hz(r,VP)))for(p=gBn(n,e),v=new Tt,Vi(v,(!e.a&&(e.a=new V(Ot,e,10,11)),e.a));v.b!=0;)g=u(v.b==0?null:(ne(v.b!=0),Ts(v,v.a.a)),33),F$n(g),S=B(hn(g,Bg))===B(i9),S||wa(g,Zm)&&!CX(r,hn(g,yv))?(f=KZ(n,g,t,i),Zt(h,f),gr(g,Bg,i9),$Bn(g)):Vi(v,(!g.a&&(g.a=new V(Ot,g,10,11)),g.a));else for(p=(!e.a&&(e.a=new V(Ot,e,10,11)),e.a).i,o=new ie((!e.a&&(e.a=new V(Ot,e,10,11)),e.a));o.e!=o.i.gc();)c=u(oe(o),33),f=KZ(n,c,t,i),Zt(h,f),$Bn(c);for(C=new E(h);C.a=0?p=B2(f):p=b7(B2(f)),n.Ye(dv,p)),l=new Li,g=!1,n.Xe(E0)?(Zz(l,u(n.We(E0),8)),g=!0):Sce(l,o.a/2,o.b/2),p.g){case 4:H(a,qc,(Ss(),xl)),H(a,HS,(ya(),Tg)),a.o.b=o.b,m<0&&(a.o.a=-m),si(d,(J(),Vn)),g||(l.a=o.a),l.a-=o.a;break;case 2:H(a,qc,(Ss(),Ub)),H(a,HS,(ya(),cv)),a.o.b=o.b,m<0&&(a.o.a=-m),si(d,(J(),Gn)),g||(l.a=0);break;case 1:H(a,za,(Nh(),Ag)),a.o.a=o.a,m<0&&(a.o.b=-m),si(d,(J(),ae)),g||(l.b=o.b),l.b-=o.b;break;case 3:H(a,za,(Nh(),dp)),a.o.a=o.a,m<0&&(a.o.b=-m),si(d,(J(),Kn)),g||(l.b=0)}if(Zz(d.n,l),H(a,E0,l),e==td||e==Eh||e==Ac){if(v=0,e==td&&n.Xe(P1))switch(p.g){case 1:case 2:v=u(n.We(P1),19).a;break;case 3:case 4:v=-u(n.We(P1),19).a}else switch(p.g){case 4:case 2:v=c.b,e==Eh&&(v/=r.b);break;case 1:case 3:v=c.a,e==Eh&&(v/=r.a)}H(a,k0,v)}return H(a,ec,p),a}function tTe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn;if(t=K(Y(k(n.a.j,(nn(),esn)))),t<-1||!n.a.i||p2(u(k(n.a.o,Lt),98))||zr(n.a.o,(J(),Vn)).gc()<2&&zr(n.a.o,Gn).gc()<2)return!0;if(n.a.c.Rf())return!1;for(_=0,x=0,O=new X,h=n.a.e,l=0,a=h.length;l=t}function iTe(){EG();function n(i){var r=this;this.dispatch=function(c){var o=c.data;switch(o.cmd){case"algorithms":var f=OQ((Pn(),new _p(new Mh(Wl.b))));i.postMessage({id:o.id,data:f});break;case"categories":var h=OQ((Pn(),new _p(new Mh(Wl.c))));i.postMessage({id:o.id,data:h});break;case"options":var l=OQ((Pn(),new _p(new Mh(Wl.d))));i.postMessage({id:o.id,data:l});break;case"register":hEe(o.algorithms),i.postMessage({id:o.id});break;case"layout":Gye(o.graph,o.layoutOptions||{},o.options||{}),i.postMessage({id:o.id,data:o.graph});break}},this.saveDispatch=function(c){try{r.dispatch(c)}catch(o){i.postMessage({id:c.data.id,error:o})}}}function e(i){var r=this;this.dispatcher=new n({postMessage:function(c){r.onmessage({data:c})}}),this.postMessage=function(c){setTimeout(function(){r.dispatcher.saveDispatch({data:c})},0)}}if(typeof document===cN&&typeof self!==cN){var t=new n(self);self.onmessage=t.saveDispatch}else typeof dt!==cN&&dt.exports&&(Object.defineProperty(Vt,"__esModule",{value:!0}),dt.exports={default:e,Worker:e})}function rTe(n){n.N||(n.N=!0,n.b=Yr(n,0),It(n.b,0),It(n.b,1),It(n.b,2),n.bb=Yr(n,1),It(n.bb,0),It(n.bb,1),n.fb=Yr(n,2),It(n.fb,3),It(n.fb,4),bt(n.fb,5),n.qb=Yr(n,3),It(n.qb,0),bt(n.qb,1),bt(n.qb,2),It(n.qb,3),It(n.qb,4),bt(n.qb,5),It(n.qb,6),n.a=Ue(n,4),n.c=Ue(n,5),n.d=Ue(n,6),n.e=Ue(n,7),n.f=Ue(n,8),n.g=Ue(n,9),n.i=Ue(n,10),n.j=Ue(n,11),n.k=Ue(n,12),n.n=Ue(n,13),n.o=Ue(n,14),n.p=Ue(n,15),n.q=Ue(n,16),n.s=Ue(n,17),n.r=Ue(n,18),n.t=Ue(n,19),n.u=Ue(n,20),n.v=Ue(n,21),n.w=Ue(n,22),n.B=Ue(n,23),n.A=Ue(n,24),n.C=Ue(n,25),n.D=Ue(n,26),n.F=Ue(n,27),n.G=Ue(n,28),n.H=Ue(n,29),n.J=Ue(n,30),n.I=Ue(n,31),n.K=Ue(n,32),n.M=Ue(n,33),n.L=Ue(n,34),n.P=Ue(n,35),n.Q=Ue(n,36),n.R=Ue(n,37),n.S=Ue(n,38),n.T=Ue(n,39),n.U=Ue(n,40),n.V=Ue(n,41),n.X=Ue(n,42),n.W=Ue(n,43),n.Y=Ue(n,44),n.Z=Ue(n,45),n.$=Ue(n,46),n._=Ue(n,47),n.ab=Ue(n,48),n.cb=Ue(n,49),n.db=Ue(n,50),n.eb=Ue(n,51),n.gb=Ue(n,52),n.hb=Ue(n,53),n.ib=Ue(n,54),n.jb=Ue(n,55),n.kb=Ue(n,56),n.lb=Ue(n,57),n.mb=Ue(n,58),n.nb=Ue(n,59),n.ob=Ue(n,60),n.pb=Ue(n,61))}function cTe(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x;if($=0,e.f.a==0)for(C=new E(n);C.al&&(Ln(l,e.c.length),u(e.c[l],200)).a.c.length==0;)Jc(e,(Ln(l,e.c.length),e.c[l]));if(!h){--c;continue}if(zke(e,a,r,h,g,t,l,i)){d=!0;continue}if(g){if(Yye(e,a,r,h,t,l,i)){d=!0;continue}else if(rQ(a,r)){r.c=!0,d=!0;continue}}else if(rQ(a,r)){r.c=!0,d=!0;continue}if(d)continue}if(rQ(a,r)){r.c=!0,d=!0,h&&(h.k=!1);continue}else GT(r.q)}return d}function kL(n,e,t,i,r,c,o){var f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye,fi;for(m=0,zn=0,l=new E(n.b);l.am&&(c&&(ua(U,p),ua(ln,Q(a.b-1)),W(n.d,v),f.c=F(Zn,rn,1,0,5,1)),Ye=t.b,fi+=p+e,p=0,d=y.Math.max(d,t.b+t.c+se)),f.c[f.c.length]=h,U$n(h,Ye,fi),d=y.Math.max(d,Ye+se+t.c),p=y.Math.max(p,g),Ye+=se+e,v=h;if(Zt(n.a,f),W(n.d,u(un(f,f.c.length-1),157)),d=y.Math.max(d,i),Wn=fi+p+t.a,Wn1&&(o=y.Math.min(o,y.Math.abs(u(qo(f.a,1),8).b-a.b)))));else for(m=new E(e.j);m.ar&&(c=g.a-r,o=nt,i.c=F(Zn,rn,1,0,5,1),r=g.a),g.a>=r&&(i.c[i.c.length]=f,f.a.b>1&&(o=y.Math.min(o,y.Math.abs(u(qo(f.a,f.a.b-2),8).b-g.b)))));if(i.c.length!=0&&c>e.o.a/2&&o>e.o.b/2){for(p=new wc,Hr(p,e),si(p,(J(),Kn)),p.n.a=e.o.a/2,S=new wc,Hr(S,e),si(S,ae),S.n.a=e.o.a/2,S.n.b=e.o.b,h=new E(i);h.a=l.b?Hi(f,S):Hi(f,p)):(l=u(efe(f.a),8),C=f.a.b==0?rf(f.c):u(gE(f.a),8),C.b>=l.b?Ci(f,S):Ci(f,p)),d=u(k(f,(nn(),Mr)),74),d&&db(d,l,!0);e.n.a=r-e.o.a/2}}function hTe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye,fi,ps,oo;if(zn=null,se=e,Wn=$An(n,PAn(t),se),Q5(Wn,$h(se,Wf)),Ye=u(xw(n.g,G2(Dh(se,PB))),33),g=Dh(se,"sourcePort"),i=null,g&&(i=G2(g)),fi=u(xw(n.j,i),118),!Ye)throw f=i4(se),v="An edge must have a source node (edge id: '"+f,m=v+K4,T(new Sf(m));if(fi&&!Ff(ef(fi),Ye))throw h=$h(se,Wf),C="The source port of an edge must be a port of the edge's source node (edge id: '"+h,S=C+K4,T(new Sf(S));if(ln=(!Wn.b&&(Wn.b=new Fn(he,Wn,4,7)),Wn.b),c=null,fi?c=fi:c=Ye,me(ln,c),ps=u(xw(n.g,G2(Dh(se,_tn))),33),p=Dh(se,"targetPort"),r=null,p&&(r=G2(p)),oo=u(xw(n.j,r),118),!ps)throw d=i4(se),$="An edge must have a target node (edge id: '"+d,O=$+K4,T(new Sf(O));if(oo&&!Ff(ef(oo),ps))throw l=$h(se,Wf),x="The target port of an edge must be a port of the edge's target node (edge id: '"+l,_=x+K4,T(new Sf(_));if(wn=(!Wn.c&&(Wn.c=new Fn(he,Wn,5,8)),Wn.c),o=null,oo?o=oo:o=ps,me(wn,o),(!Wn.b&&(Wn.b=new Fn(he,Wn,4,7)),Wn.b).i==0||(!Wn.c&&(Wn.c=new Fn(he,Wn,5,8)),Wn.c).i==0)throw a=$h(se,Wf),U=Tqn+a,en=U+K4,T(new Sf(en));return YT(se,Wn),n9e(se,Wn),zn=oF(n,se,Wn),zn}function I_n(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn;return d=dye(Xc(n,(J(),Cf)),e),v=Uw(Xc(n,Do),e),x=Uw(Xc(n,bs),e),ln=zT(Xc(n,to),e),g=zT(Xc(n,Fs),e),$=Uw(Xc(n,$o),e),m=Uw(Xc(n,Pu),e),U=Uw(Xc(n,ws),e),_=Uw(Xc(n,xs),e),wn=zT(Xc(n,Gc),e),S=Uw(Xc(n,uu),e),O=Uw(Xc(n,Iu),e),en=Uw(Xc(n,cu),e),zn=zT(Xc(n,su),e),p=zT(Xc(n,ku),e),C=Uw(Xc(n,Sc),e),t=Bw(A(M(Ei,1),pr,25,15,[$.a,ln.a,U.a,zn.a])),i=Bw(A(M(Ei,1),pr,25,15,[v.a,d.a,x.a,C.a])),r=S.a,c=Bw(A(M(Ei,1),pr,25,15,[m.a,g.a,_.a,p.a])),l=Bw(A(M(Ei,1),pr,25,15,[$.b,v.b,m.b,O.b])),h=Bw(A(M(Ei,1),pr,25,15,[ln.b,d.b,g.b,C.b])),a=wn.b,f=Bw(A(M(Ei,1),pr,25,15,[U.b,x.b,_.b,en.b])),a1(Xc(n,Cf),t+r,l+a),a1(Xc(n,Sc),t+r,l+a),a1(Xc(n,Do),t+r,0),a1(Xc(n,bs),t+r,l+a+h),a1(Xc(n,to),0,l+a),a1(Xc(n,Fs),t+r+i,l+a),a1(Xc(n,Pu),t+r+i,0),a1(Xc(n,ws),0,l+a+h),a1(Xc(n,xs),t+r+i,l+a+h),a1(Xc(n,Gc),0,l),a1(Xc(n,uu),t,0),a1(Xc(n,cu),0,l+a+h),a1(Xc(n,ku),t+r+i,0),o=new Li,o.a=Bw(A(M(Ei,1),pr,25,15,[t+i+r+c,wn.a,O.a,en.a])),o.b=Bw(A(M(Ei,1),pr,25,15,[l+h+a+f,S.b,zn.b,p.b])),o}function lTe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C;for(m=new X,g=new E(n.d.b);g.ar.d.d+r.d.a?a.f.d=!0:(a.f.d=!0,a.f.a=!0))),i.b!=i.d.c&&(e=t);a&&(c=u(te(n.f,o.d.i),57),e.bc.d.d+c.d.a?a.f.d=!0:(a.f.d=!0,a.f.a=!0))}for(f=new re(ue(Lr(p).a.Kc(),new An));Se(f);)o=u(ve(f),17),o.a.b!=0&&(e=u(gE(o.a),8),o.d.j==(J(),Kn)&&(C=new P6(e,new fn(e.a,r.d.d),r,o),C.f.a=!0,C.a=o.d,m.c[m.c.length]=C),o.d.j==ae&&(C=new P6(e,new fn(e.a,r.d.d+r.d.a),r,o),C.f.d=!0,C.a=o.d,m.c[m.c.length]=C))}return m}function aTe(n,e,t){var i,r,c,o,f,h,l,a,d;if(le(t,"Network simplex node placement",1),n.e=e,n.n=u(k(e,(G(),Ig)),304),Pje(n),fve(n),Rt(qr(new $n(null,new xn(n.e.b,16)),new Fwn),new E6n(n)),Rt(gt(qr(gt(qr(new $n(null,new xn(n.e.b,16)),new Wwn),new Xwn),new Vwn),new Qwn),new j6n(n)),on(sn(k(n.e,(nn(),Dm))))&&(o=kc(t,1),le(o,"Straight Edges Pre-Processing",1),XEe(n),ce(o)),Gpe(n.f),c=u(k(e,xm),19).a*n.f.a.c.length,Yx(gG(pG(fD(n.f),c),!1),kc(t,1)),n.d.a.gc()!=0){for(o=kc(t,1),le(o,"Flexible Where Space Processing",1),f=u(yd(HE(Vc(new $n(null,new xn(n.f.a,16)),new xwn),new Swn)),19).a,h=u(yd(KE(Vc(new $n(null,new xn(n.f.a,16)),new Lwn),new Pwn)),19).a,l=h-f,a=kd(new ra,n.f),d=kd(new ra,n.f),jo(lo(ho(fo(ao(new Ns,2e4),l),a),d)),Rt(gt(gt(ID(n.i),new Nwn),new Bwn),new kTn(f,a,l,d)),r=n.d.a.ec().Kc();r.Ob();)i=u(r.Pb(),213),i.g=1;Yx(gG(pG(fD(n.f),c),!1),kc(o,1)),ce(o)}on(sn(k(e,Dm)))&&(o=kc(t,1),le(o,"Straight Edges Post-Processing",1),Z5e(n),ce(o)),DEe(n),n.e=null,n.f=null,n.i=null,n.c=null,Cu(n.k),n.j=null,n.a=null,n.o=null,n.d.a.$b(),ce(t)}function dTe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_;for(f=new E(n.a.b);f.a0)if(i=d.gc(),l=Gt(y.Math.floor((i+1)/2))-1,r=Gt(y.Math.ceil((i+1)/2))-1,e.o==yf)for(a=r;a>=l;a--)e.a[x.p]==x&&(m=u(d.Xb(a),46),v=u(m.a,10),!Ah(t,m.b)&&p>n.b.e[v.p]&&(e.a[v.p]=x,e.g[x.p]=e.g[v.p],e.a[x.p]=e.g[x.p],e.f[e.g[x.p].p]=(qn(),!!(on(e.f[e.g[x.p].p])&x.k==(Qn(),pi))),p=n.b.e[v.p]));else for(a=l;a<=r;a++)e.a[x.p]==x&&(S=u(d.Xb(a),46),C=u(S.a,10),!Ah(t,S.b)&&p=v&&($>v&&(p.c=F(Zn,rn,1,0,5,1),v=$),p.c[p.c.length]=o);p.c.length!=0&&(g=u(un(p,_T(e,p.c.length)),128),Wn.a.Bc(g)!=null,g.s=m++,BY(g,wn,U),p.c=F(Zn,rn,1,0,5,1))}for(x=n.c.length+1,f=new E(n);f.azn.s&&(Wu(t),Jc(zn.i,i),i.c>0&&(i.a=zn,W(zn.t,i),i.b=en,W(en.i,i)))}function HZ(n){var e,t,i,r,c;switch(e=n.c,e){case 11:return n.Ml();case 12:return n.Ol();case 14:return n.Ql();case 15:return n.Tl();case 16:return n.Rl();case 17:return n.Ul();case 21:return Qe(n),Je(),Je(),k9;case 10:switch(n.a){case 65:return n.yl();case 90:return n.Dl();case 122:return n.Kl();case 98:return n.El();case 66:return n.zl();case 60:return n.Jl();case 62:return n.Hl()}}switch(c=oTe(n),e=n.c,e){case 3:return n.Zl(c);case 4:return n.Xl(c);case 5:return n.Yl(c);case 0:if(n.a==123&&n.d=48&&e<=57){for(i=e-48;r=48&&e<=57;)if(i=i*10+e-48,i<0)throw T(new Ee(Pe((je(),Utn))))}else throw T(new Ee(Pe((je(),Zqn))));if(t=i,e==44){if(r>=n.j)throw T(new Ee(Pe((je(),eGn))));if((e=Di(n.i,r++))>=48&&e<=57){for(t=e-48;r=48&&e<=57;)if(t=t*10+e-48,t<0)throw T(new Ee(Pe((je(),Utn))));if(i>t)throw T(new Ee(Pe((je(),tGn))))}else t=-1}if(e!=125)throw T(new Ee(Pe((je(),nGn))));n.sl(r)?(c=(Je(),Je(),new ib(9,c)),n.d=r+1):(c=(Je(),Je(),new ib(3,c)),n.d=r),c.dm(i),c.cm(t),Qe(n)}}return c}function O_n(n,e,t,i,r){var c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn;for(m=new Pc(e.b),x=new Pc(e.b),g=new Pc(e.b),ln=new Pc(e.b),C=new Pc(e.b),en=_e(e,0);en.b!=en.d.c;)for(_=u(Re(en),11),f=new E(_.g);f.a0,S=_.g.c.length>0,l&&S?g.c[g.c.length]=_:l?m.c[m.c.length]=_:S&&(x.c[x.c.length]=_);for(v=new E(m);v.a1)for(v=new b2((!n.a&&(n.a=new V(Mt,n,6,6)),n.a));v.e!=v.i.gc();)p6(v);for(o=u(D((!n.a&&(n.a=new V(Mt,n,6,6)),n.a),0),202),C=Ye,Ye>_+x?C=_+x:Ye<_-x&&(C=_-x),S=fi,fi>U+m?S=U+m:fi_-x&&C<_+x&&S>U-m&&SYe+se?ln=Ye+se:_fi+en?wn=fi+en:UYe-se&&lnfi-en&&wnt&&(g=t-1),p=Ky+xu(e,24)*uk*d-d/2,p<0?p=1:p>i&&(p=i-1),r=(ad(),h=new Xy,h),UC(r,g),WC(r,p),me((!o.a&&(o.a=new Yt(io,o,5)),o.a),r)}function nn(){nn=N,q_=(Xe(),QZn),Isn=JZn,Zk=yhn,Mo=YZn,jp=jhn,C0=ZZn,nw=Ehn,wv=Chn,gv=Thn,G_=KP,T0=ed,z_=nne,Fm=Shn,rP=Ap,Yk=(zZ(),WVn),Dg=XVn,Qa=VVn,$g=QVn,$Qn=new tr(_P,Q(0)),bv=GVn,Psn=zVn,yp=UVn,Bsn=vQn,Osn=ZVn,Dsn=tQn,W_=fQn,$sn=cQn,Fsn=sQn,cP=jQn,X_=mQn,Lsn=bQn,xsn=aQn,Nsn=gQn,j0=BVn,$m=RVn,B_=tVn,ssn=rVn,Csn=new vd(12),Esn=new tr(nd,Csn),rsn=(Hh(),Cv),Qh=new tr(Jfn,rsn),Jb=new tr(Ru,0),FQn=new tr(tH,Q(1)),zS=new tr(Tp,$4),Va=RP,Lt=n9,dv=Hg,MQn=py,Jf=KZn,Vb=Bg,xQn=new tr(iH,(qn(),!0)),Qb=vy,Wa=VK,Xa=Za,iP=_l,H_=BP,isn=(sr(),kh),as=new tr(A0,isn),y0=_g,eP=uhn,Yb=rw,DQn=eH,Asn=mhn,Msn=(qw(),Cy),new tr(bhn,Msn),PQn=JK,IQn=YK,OQn=ZK,SQn=QK,U_=YVn,vsn=MVn,__=TVn,xm=JVn,qc=vVn,Xb=XXn,Om=WXn,Wb=FXn,nsn=xXn,F_=RXn,Jk=LXn,x_=zXn,msn=AVn,ksn=SVn,dsn=aVn,tP=HVn,K_=OVn,R_=sVn,jsn=LVn,usn=nVn,N_=eVn,$_=LP,ysn=PVn,WS=AXn,Jun=MXn,US=TXn,hsn=hVn,fsn=fVn,lsn=lVn,lv=Kg,Mr=Rg,S1=Zfn,Yf=XK,L_=WK,esn=KXn,P1=nH,Im=GZn,YS=zZn,E0=ghn,Tsn=UZn,av=WZn,wsn=kVn,gsn=jVn,Zb=Mp,O_=CXn,psn=CVn,JS=JXn,QS=QXn,nP=my,bsn=wVn,Dm=$Vn,ny=Mhn,tsn=VXn,Ssn=qVn,csn=YXn,AQn=pVn,TQn=qXn,asn=ihn,ZS=mVn,VS=GXn,Ll=$Xn,Zun=OXn,XS=PXn,Yun=IXn,D_=DXn,kp=SXn,osn=oVn}function jL(n,e){oL();var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye;if(ln=n.e,v=n.d,r=n.a,ln==0)switch(e){case 0:return"0";case 1:return S4;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return U=new V1,e<0?U.a+="0E+":U.a+="0E",U.a+=-e,U.a}if(O=v*10+1+7,x=F(Ls,Rf,25,O+1,15,1),t=O,v==1)if(f=r[0],f<0){Ye=ui(f,fr);do m=Ye,Ye=M7(Ye,10),x[--t]=48+ge(vl(m,Ni(Ye,10)))&Ut;while(fc(Ye,0)!=0)}else{Ye=f;do m=Ye,Ye=Ye/10|0,x[--t]=48+(m-Ye*10)&Ut;while(Ye!=0)}else{zn=F(be,Le,25,v,15,1),se=v,gc(r,0,zn,0,se);n:for(;;){for(en=0,l=se-1;l>=0;l--)Wn=qi(Ih(en,32),ui(zn[l],fr)),S=Cve(Wn),zn[l]=ge(S),en=ge(cl(S,32));$=ge(en),C=t;do x[--t]=48+$%10&Ut;while(($=$/10|0)!=0&&t!=0);for(i=9-C+t,h=0;h0;h++)x[--t]=48;for(d=se-1;zn[d]==0;d--)if(d==0)break n;se=d+1}for(;x[t]==48;)++t}if(p=ln<0,o=O-t-e-1,e==0)return p&&(x[--t]=45),Hs(x,t,O-t);if(e>0&&o>=-6){if(o>=0){for(a=t+o,g=O-1;g>=a;g--)x[g+1]=x[g];return x[++a]=46,p&&(x[--t]=45),Hs(x,t,O-t+1)}for(d=2;d<-o+1;d++)x[--t]=48;return x[--t]=46,x[--t]=48,p&&(x[--t]=45),Hs(x,t,O-t)}return wn=t+1,c=O,_=new R0,p&&(_.a+="-"),c-wn>=1?(sl(_,x[t]),_.a+=".",_.a+=Hs(x,t+1,O-t-1)):_.a+=Hs(x,t,O-t),_.a+="E",o>0&&(_.a+="+"),_.a+=""+o,_.a}function F_n(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U;switch(n.c=e,n.g=new we,t=(K0(),new N0(n.c)),i=new tj(t),TQ(i),O=Ce(hn(n.c,(S7(),kfn))),h=u(hn(n.c,BK),316),_=u(hn(n.c,RK),429),o=u(hn(n.c,pfn),482),x=u(hn(n.c,NK),430),n.j=K(Y(hn(n.c,lZn))),f=n.a,h.g){case 0:f=n.a;break;case 1:f=n.b;break;case 2:f=n.i;break;case 3:f=n.e;break;case 4:f=n.f;break;default:throw T(new Hn(bA+(h.f!=null?h.f:""+h.g)))}if(n.d=new rMn(f,_,o),H(n.d,(_3(),pm),sn(hn(n.c,fZn))),n.d.c=on(sn(hn(n.c,vfn))),iC(n.c).i==0)return n.d;for(d=new ie(iC(n.c));d.e!=d.i.gc();){for(a=u(oe(d),33),p=a.g/2,g=a.f/2,U=new fn(a.i+p,a.j+g);Uu(n.g,U);)U0(U,(y.Math.random()-.5)*Hf,(y.Math.random()-.5)*Hf);m=u(hn(a,(Xe(),my)),142),C=new yMn(U,new ys(U.a-p-n.j/2-m.b,U.b-g-n.j/2-m.d,a.g+n.j+(m.b+m.c),a.f+n.j+(m.d+m.a))),W(n.d.i,C),it(n.g,U,new Si(C,a))}switch(x.g){case 0:if(O==null)n.d.d=u(un(n.d.i,0),65);else for($=new E(n.d.i);$.a<$.c.c.length;)C=u(j($),65),v=u(u(te(n.g,C.a),46).b,33).zg(),v!=null&&Mn(v,O)&&(n.d.d=C);break;case 1:for(r=new fn(n.c.g,n.c.f),r.a*=.5,r.b*=.5,U0(r,n.c.i,n.c.j),c=Ft,S=new E(n.d.i);S.a1&&Kt(a,S,a.c.b,a.c),HC(r)));S=$}return a}function kTe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye,fi,ps,oo,Af;for(le(t,"Greedy cycle removal",1),O=e.a,Af=O.c.length,n.a=F(be,Le,25,Af,15,1),n.c=F(be,Le,25,Af,15,1),n.b=F(be,Le,25,Af,15,1),l=0,S=new E(O);S.a0?se+1:1);for(o=new E(U.g);o.a0?se+1:1)}n.c[l]==0?Ke(n.e,m):n.a[l]==0&&Ke(n.f,m),++l}for(v=-1,p=1,d=new X,n.d=u(k(e,(G(),vp)),230);Af>0;){for(;n.e.b!=0;)fi=u(aD(n.e),10),n.b[fi.p]=v--,lZ(n,fi),--Af;for(;n.f.b!=0;)ps=u(aD(n.f),10),n.b[ps.p]=p++,lZ(n,ps),--Af;if(Af>0){for(g=Bi,$=new E(O);$.a<$.c.c.length;)m=u(j($),10),n.b[m.p]==0&&(x=n.c[m.p]-n.a[m.p],x>=g&&(x>g&&(d.c=F(Zn,rn,1,0,5,1),g=x),d.c[d.c.length]=m));a=n.Zf(d),n.b[a.p]=p++,lZ(n,a),--Af}}for(Ye=O.c.length+1,l=0;ln.b[oo]&&(e0(i,!0),H(e,Uk,(qn(),!0)));n.a=null,n.c=null,n.b=null,_s(n.f),_s(n.e),ce(t)}function L_n(n,e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S;for(i=new X,f=new X,C=e/2,p=n.gc(),r=u(n.Xb(0),8),S=u(n.Xb(1),8),v=Lx(r.a,r.b,S.a,S.b,C),W(i,(Ln(0,v.c.length),u(v.c[0],8))),W(f,(Ln(1,v.c.length),u(v.c[1],8))),l=2;l=0;h--)Ke(t,(Ln(h,o.c.length),u(o.c[h],8)));return t}function yTe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p;if(o=!0,d=null,i=null,r=null,e=!1,p=Hne,l=null,c=null,f=0,h=HF(n,f,a1n,d1n),h=0&&Mn(n.substr(f,2),"//")?(f+=2,h=HF(n,f,a9,d9),i=n.substr(f,h-f),f=h):d!=null&&(f==n.length||(Te(f,n.length),n.charCodeAt(f)!=47))&&(o=!1,h=qz(n,iu(35),f),h==-1&&(h=n.length),i=n.substr(f,h-f),f=h);if(!t&&f0&&Di(a,a.length-1)==58&&(r=a,f=h)),f=n.j){n.a=-1,n.c=1;return}if(e=Di(n.i,n.d++),n.a=e,n.b==1){switch(e){case 92:if(i=10,n.d>=n.j)throw T(new Ee(Pe((je(),yA))));n.a=Di(n.i,n.d++);break;case 45:(n.e&512)==512&&n.d=n.j||Di(n.i,n.d)!=63)break;if(++n.d>=n.j)throw T(new Ee(Pe((je(),_B))));switch(e=Di(n.i,n.d++),e){case 58:i=13;break;case 61:i=14;break;case 33:i=15;break;case 91:i=19;break;case 62:i=18;break;case 60:if(n.d>=n.j)throw T(new Ee(Pe((je(),_B))));if(e=Di(n.i,n.d++),e==61)i=16;else if(e==33)i=17;else throw T(new Ee(Pe((je(),xqn))));break;case 35:for(;n.d=n.j)throw T(new Ee(Pe((je(),yA))));n.a=Di(n.i,n.d++);break;default:i=0}n.c=i}function ETe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se;if(en=u(k(n,(nn(),Lt)),98),en!=(Mi(),Ef)&&en!=ql){for(v=n.b,p=v.c.length,a=new Pc((rs(p+2,AL),KC(qi(qi(5,p+2),(p+2)/10|0)))),m=new Pc((rs(p+2,AL),KC(qi(qi(5,p+2),(p+2)/10|0)))),W(a,new we),W(a,new we),W(m,new X),W(m,new X),U=new X,e=0;e=_||!G2e(S,i))&&(i=OMn(e,a)),jr(S,i),c=new re(ue(Lr(S).a.Kc(),new An));Se(c);)r=u(ve(c),17),!n.a[r.p]&&(m=r.c.i,--n.e[m.p],n.e[m.p]==0&&M3(f4(p,m)));for(l=a.c.length-1;l>=0;--l)W(e.b,(Ln(l,a.c.length),u(a.c[l],29)));e.a.c=F(Zn,rn,1,0,5,1),ce(t)}function N_n(n){var e,t,i,r,c,o,f,h,l;for(n.b=1,Qe(n),e=null,n.c==0&&n.a==94?(Qe(n),e=(Je(),Je(),new es(4)),yc(e,0,q4),f=new es(4)):f=(Je(),Je(),new es(4)),r=!0;(l=n.c)!=1;){if(l==0&&n.a==93&&!r){e&&(F6(e,f),f=e);break}if(t=n.a,i=!1,l==10)switch(t){case 100:case 68:case 119:case 87:case 115:case 83:Ab(f,v4(t)),i=!0;break;case 105:case 73:case 99:case 67:t=(Ab(f,v4(t)),-1),t<0&&(i=!0);break;case 112:case 80:if(h=mY(n,t),!h)throw T(new Ee(Pe((je(),KB))));Ab(f,h),i=!0;break;default:t=ZY(n)}else if(l==24&&!r){if(e&&(F6(e,f),f=e),c=N_n(n),F6(f,c),n.c!=0||n.a!=93)throw T(new Ee(Pe((je(),zqn))));break}if(Qe(n),!i){if(l==0){if(t==91)throw T(new Ee(Pe((je(),Gtn))));if(t==93)throw T(new Ee(Pe((je(),ztn))));if(t==45&&!r&&n.a!=93)throw T(new Ee(Pe((je(),HB))))}if(n.c!=0||n.a!=45||t==45&&r)yc(f,t,t);else{if(Qe(n),(l=n.c)==1)throw T(new Ee(Pe((je(),jA))));if(l==0&&n.a==93)yc(f,t,t),yc(f,45,45);else{if(l==0&&n.a==93||l==24)throw T(new Ee(Pe((je(),HB))));if(o=n.a,l==0){if(o==91)throw T(new Ee(Pe((je(),Gtn))));if(o==93)throw T(new Ee(Pe((je(),ztn))));if(o==45)throw T(new Ee(Pe((je(),HB))))}else l==10&&(o=ZY(n));if(Qe(n),t>o)throw T(new Ee(Pe((je(),Xqn))));yc(f,t,o)}}}r=!1}if(n.c==1)throw T(new Ee(Pe((je(),jA))));return Jw(f),D6(f),n.b=0,Qe(n),f}function TTe(n){ke(n.c,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#decimal"])),ke(n.d,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#integer"])),ke(n.e,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#boolean"])),ke(n.f,xe,A(M(tn,1),q,2,6,[Ri,"EBoolean",We,"EBoolean:Object"])),ke(n.i,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#byte"])),ke(n.g,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#hexBinary"])),ke(n.j,xe,A(M(tn,1),q,2,6,[Ri,"EByte",We,"EByte:Object"])),ke(n.n,xe,A(M(tn,1),q,2,6,[Ri,"EChar",We,"EChar:Object"])),ke(n.t,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#double"])),ke(n.u,xe,A(M(tn,1),q,2,6,[Ri,"EDouble",We,"EDouble:Object"])),ke(n.F,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#float"])),ke(n.G,xe,A(M(tn,1),q,2,6,[Ri,"EFloat",We,"EFloat:Object"])),ke(n.I,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#int"])),ke(n.J,xe,A(M(tn,1),q,2,6,[Ri,"EInt",We,"EInt:Object"])),ke(n.N,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#long"])),ke(n.O,xe,A(M(tn,1),q,2,6,[Ri,"ELong",We,"ELong:Object"])),ke(n.Z,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#short"])),ke(n.$,xe,A(M(tn,1),q,2,6,[Ri,"EShort",We,"EShort:Object"])),ke(n._,xe,A(M(tn,1),q,2,6,[Ri,"http://www.w3.org/2001/XMLSchema#string"]))}function MTe(n){var e,t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se;if(n.c.length==1)return Ln(0,n.c.length),u(n.c[0],135);if(n.c.length<=0)return new AC;for(h=new E(n);h.ad&&(Wn=0,se+=a+en,a=0),L9e(_,o,Wn,se),e=y.Math.max(e,Wn+U.a),a=y.Math.max(a,U.b),Wn+=U.a+en;for(x=new we,t=new we,wn=new E(n);wn.aNx(c))&&(d=c);for(!d&&(d=(Ln(0,C.c.length),u(C.c[0],180))),m=new E(e.b);m.a=-1900?1:0,t>=4?De(n,A(M(tn,1),q,2,6,[nKn,eKn])[f]):De(n,A(M(tn,1),q,2,6,["BC","AD"])[f]);break;case 121:kpe(n,t,i);break;case 77:Cke(n,t,i);break;case 107:h=r.q.getHours(),h==0?oh(n,24,t):oh(n,h,t);break;case 83:z9e(n,t,r);break;case 69:a=i.q.getDay(),t==5?De(n,A(M(tn,1),q,2,6,["S","M","T","W","T","F","S"])[a]):t==4?De(n,A(M(tn,1),q,2,6,[KL,HL,qL,GL,zL,UL,WL])[a]):De(n,A(M(tn,1),q,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[a]);break;case 97:r.q.getHours()>=12&&r.q.getHours()<24?De(n,A(M(tn,1),q,2,6,["AM","PM"])[1]):De(n,A(M(tn,1),q,2,6,["AM","PM"])[0]);break;case 104:d=r.q.getHours()%12,d==0?oh(n,12,t):oh(n,d,t);break;case 75:g=r.q.getHours()%12,oh(n,g,t);break;case 72:p=r.q.getHours(),oh(n,p,t);break;case 99:v=i.q.getDay(),t==5?De(n,A(M(tn,1),q,2,6,["S","M","T","W","T","F","S"])[v]):t==4?De(n,A(M(tn,1),q,2,6,[KL,HL,qL,GL,zL,UL,WL])[v]):t==3?De(n,A(M(tn,1),q,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[v]):oh(n,v,1);break;case 76:m=i.q.getMonth(),t==5?De(n,A(M(tn,1),q,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[m]):t==4?De(n,A(M(tn,1),q,2,6,[IL,OL,DL,$L,V2,FL,xL,LL,NL,BL,RL,_L])[m]):t==3?De(n,A(M(tn,1),q,2,6,["Jan","Feb","Mar","Apr",V2,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[m]):oh(n,m+1,t);break;case 81:C=i.q.getMonth()/3|0,t<4?De(n,A(M(tn,1),q,2,6,["Q1","Q2","Q3","Q4"])[C]):De(n,A(M(tn,1),q,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[C]);break;case 100:S=i.q.getDate(),oh(n,S,t);break;case 109:l=r.q.getMinutes(),oh(n,l,t);break;case 115:o=r.q.getSeconds(),oh(n,o,t);break;case 122:t<4?De(n,c.c[0]):De(n,c.c[1]);break;case 118:De(n,c.b);break;case 90:t<3?De(n,F6e(c)):t==3?De(n,N6e(c)):De(n,B6e(c.a));break;default:return!1}return!0}function GZ(n,e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye;if(CBn(e),h=u(D((!e.b&&(e.b=new Fn(he,e,4,7)),e.b),0),82),a=u(D((!e.c&&(e.c=new Fn(he,e,5,8)),e.c),0),82),f=Ir(h),l=Ir(a),o=(!e.a&&(e.a=new V(Mt,e,6,6)),e.a).i==0?null:u(D((!e.a&&(e.a=new V(Mt,e,6,6)),e.a),0),202),en=u(te(n.a,f),10),Wn=u(te(n.a,l),10),ln=null,se=null,I(h,186)&&(U=u(te(n.a,h),299),I(U,11)?ln=u(U,11):I(U,10)&&(en=u(U,10),ln=u(un(en.j,0),11))),I(a,186)&&(zn=u(te(n.a,a),299),I(zn,11)?se=u(zn,11):I(zn,10)&&(Wn=u(zn,10),se=u(un(Wn.j,0),11))),!en||!Wn)throw T(new Gv("The source or the target of edge "+e+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(m=new Pd,Pr(m,e),H(m,(G(),rt),e),H(m,(nn(),Mr),null),p=u(k(i,Mc),21),en==Wn&&p.Fc((or(),Mm)),ln||(_=(ur(),xc),wn=null,o&&Cw(u(k(en,Lt),98))&&(wn=new fn(o.j,o.k),FAn(wn,S8(e)),hSn(wn,t),ob(l,f)&&(_=Su,st(wn,en.n))),ln=jRn(en,wn,_,i)),se||(_=(ur(),Su),Ye=null,o&&Cw(u(k(Wn,Lt),98))&&(Ye=new fn(o.b,o.c),FAn(Ye,S8(e)),hSn(Ye,t)),se=jRn(Wn,Ye,_,Gi(Wn))),Hi(m,ln),Ci(m,se),(ln.e.c.length>1||ln.g.c.length>1||se.e.c.length>1||se.g.c.length>1)&&p.Fc((or(),Tm)),g=new ie((!e.n&&(e.n=new V(Rr,e,1,7)),e.n));g.e!=g.i.gc();)if(d=u(oe(g),137),!on(sn(hn(d,Va)))&&d.a)switch(C=EF(d),W(m.b,C),u(k(C,Yf),272).g){case 1:case 2:p.Fc((or(),sv));break;case 0:p.Fc((or(),uv)),H(C,Yf,(of(),jv))}if(c=u(k(i,Om),314),S=u(k(i,tP),315),r=c==(F2(),qk)||S==(b6(),nK),o&&(!o.a&&(o.a=new Yt(io,o,5)),o.a).i!=0&&r){for($=I7(o),v=new hu,x=_e($,0);x.b!=x.d.c;)O=u(Re(x),8),Ke(v,new kr(O));H(m,gun,v)}return m}function ITe(n){n.gb||(n.gb=!0,n.b=Yr(n,0),It(n.b,18),bt(n.b,19),n.a=Yr(n,1),It(n.a,1),bt(n.a,2),bt(n.a,3),bt(n.a,4),bt(n.a,5),n.o=Yr(n,2),It(n.o,8),It(n.o,9),bt(n.o,10),bt(n.o,11),bt(n.o,12),bt(n.o,13),bt(n.o,14),bt(n.o,15),bt(n.o,16),bt(n.o,17),bt(n.o,18),bt(n.o,19),bt(n.o,20),bt(n.o,21),bt(n.o,22),bt(n.o,23),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),Cr(n.o),n.p=Yr(n,3),It(n.p,2),It(n.p,3),It(n.p,4),It(n.p,5),bt(n.p,6),bt(n.p,7),Cr(n.p),Cr(n.p),n.q=Yr(n,4),It(n.q,8),n.v=Yr(n,5),bt(n.v,9),Cr(n.v),Cr(n.v),Cr(n.v),n.w=Yr(n,6),It(n.w,2),It(n.w,3),It(n.w,4),bt(n.w,5),n.B=Yr(n,7),bt(n.B,1),Cr(n.B),Cr(n.B),Cr(n.B),n.Q=Yr(n,8),bt(n.Q,0),Cr(n.Q),n.R=Yr(n,9),It(n.R,1),n.S=Yr(n,10),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),Cr(n.S),n.T=Yr(n,11),bt(n.T,10),bt(n.T,11),bt(n.T,12),bt(n.T,13),bt(n.T,14),Cr(n.T),Cr(n.T),n.U=Yr(n,12),It(n.U,2),It(n.U,3),bt(n.U,4),bt(n.U,5),bt(n.U,6),bt(n.U,7),Cr(n.U),n.V=Yr(n,13),bt(n.V,10),n.W=Yr(n,14),It(n.W,18),It(n.W,19),It(n.W,20),bt(n.W,21),bt(n.W,22),bt(n.W,23),n.bb=Yr(n,15),It(n.bb,10),It(n.bb,11),It(n.bb,12),It(n.bb,13),It(n.bb,14),It(n.bb,15),It(n.bb,16),bt(n.bb,17),Cr(n.bb),Cr(n.bb),n.eb=Yr(n,16),It(n.eb,2),It(n.eb,3),It(n.eb,4),It(n.eb,5),It(n.eb,6),It(n.eb,7),bt(n.eb,8),bt(n.eb,9),n.ab=Yr(n,17),It(n.ab,0),It(n.ab,1),n.H=Yr(n,18),bt(n.H,0),bt(n.H,1),bt(n.H,2),bt(n.H,3),bt(n.H,4),bt(n.H,5),Cr(n.H),n.db=Yr(n,19),bt(n.db,2),n.c=Ue(n,20),n.d=Ue(n,21),n.e=Ue(n,22),n.f=Ue(n,23),n.i=Ue(n,24),n.g=Ue(n,25),n.j=Ue(n,26),n.k=Ue(n,27),n.n=Ue(n,28),n.r=Ue(n,29),n.s=Ue(n,30),n.t=Ue(n,31),n.u=Ue(n,32),n.fb=Ue(n,33),n.A=Ue(n,34),n.C=Ue(n,35),n.D=Ue(n,36),n.F=Ue(n,37),n.G=Ue(n,38),n.I=Ue(n,39),n.J=Ue(n,40),n.L=Ue(n,41),n.M=Ue(n,42),n.N=Ue(n,43),n.O=Ue(n,44),n.P=Ue(n,45),n.X=Ue(n,46),n.Y=Ue(n,47),n.Z=Ue(n,48),n.$=Ue(n,49),n._=Ue(n,50),n.cb=Ue(n,51),n.K=Ue(n,52))}function Xe(){Xe=N;var n,e;Zm=new kt(GHn),yv=new kt(zHn),Ufn=(fh(),HK),KZn=new In(Oen,Ufn),Tp=new In(ep,null),HZn=new kt(Ttn),Xfn=(vb(),pt(zK,A(M(UK,1),z,291,0,[GK]))),LP=new In(sA,Xfn),py=new In(mk,(qn(),!1)),Vfn=(sr(),kh),A0=new In(Fen,Vfn),Yfn=(Hh(),rH),Jfn=new In(pk,Yfn),ehn=new In(dA,!1),thn=(_h(),HP),Bg=new In(uA,thn),ahn=new vd(12),nd=new In(u0,ahn),NP=new In(lk,!1),ihn=new In(cB,!1),ky=new In(G6,!1),phn=(Mi(),ql),n9=new In(CN,phn),Mp=new kt(oA),_P=new kt(hk),tH=new kt(HM),iH=new kt(q6),rhn=new hu,Rg=new In(qen,rhn),GZn=new In(Uen,!1),zZn=new In(Wen,!1),chn=new Bv,my=new In(Ven,chn),RP=new In(Pen,!1),VZn=new In(UHn,1),new In(WHn,!0),Q(0),new In(XHn,Q(100)),new In(VHn,!1),Q(0),new In(QHn,Q(4e3)),Q(0),new In(JHn,Q(400)),new In(YHn,!1),new In(ZHn,!1),new In(nqn,!0),new In(eqn,!1),Wfn=(AT(),oH),qZn=new In(Ctn,Wfn),QZn=new In(pen,10),JZn=new In(ven,10),yhn=new In(vN,20),YZn=new In(men,10),jhn=new In(EN,2),ZZn=new In(ken,10),Ehn=new In(yen,0),KP=new In(Cen,5),Chn=new In(jen,1),Thn=new In(Een,1),ed=new In(Db,20),nne=new In(Ten,10),Shn=new In(Men,10),Ap=new kt(Aen),Ahn=new uyn,Mhn=new In(Qen,Ahn),WZn=new kt(rB),dhn=!1,UZn=new In(iB,dhn),shn=new vd(5),uhn=new In(xen,shn),ohn=(jb(),e=u(xo(lr),9),new ks(e,u(bo(e,e.length),9),0)),_g=new In(F4,ohn),whn=(qw(),Hl),bhn=new In(Ben,whn),JK=new kt(Ren),YK=new kt(_en),ZK=new kt(Ken),QK=new kt(Hen),fhn=(n=u(xo(o9),9),new ks(n,u(bo(n,n.length),9),0)),Za=new In(hg,fhn),lhn=Cn((Lu(),Mv)),_l=new In(tp,lhn),hhn=new fn(0,0),Kg=new In(ip,hhn),BP=new In(tB,!1),Qfn=(of(),jv),XK=new In(Gen,Qfn),WK=new In(qM,!1),Q(1),new In(tqn,null),ghn=new kt(Xen),nH=new kt(zen),khn=(J(),Xr),Hg=new In(Ien,khn),Ru=new kt(Sen),vhn=(Mu(),Cn(Gl)),rw=new In(x4,vhn),eH=new In(Len,!1),mhn=new In(Nen,!0),vy=new In(Den,!1),VK=new In($en,!1),Zfn=new In(mN,1),nhn=(ZT(),uH),new In(iqn,nhn),XZn=!0}function G(){G=N;var n,e;rt=new kt(Ann),aun=new kt("coordinateOrigin"),S_=new kt("processors"),lun=new ri("compoundNode",(qn(),!1)),Wk=new ri("insideConnections",!1),gun=new kt("originalBendpoints"),pun=new kt("originalDummyNodePosition"),vun=new kt("originalLabelEdge"),Vk=new kt("representedLabels"),Am=new kt("endLabels"),wp=new kt("endLabel.origin"),pp=new ri("labelSide",(us(),Ey)),Sg=new ri("maxEdgeThickness",0),kf=new ri("reversed",!1),vp=new kt(RKn),Xo=new ri("longEdgeSource",null),Ys=new ri("longEdgeTarget",null),zb=new ri("longEdgeHasLabelDummies",!1),Xk=new ri("longEdgeBeforeLabelDummy",!1),HS=new ri("edgeConstraint",(ya(),l_)),m0=new kt("inLayerLayoutUnit"),za=new ri("inLayerConstraint",(Nh(),zk)),gp=new ri("inLayerSuccessorConstraint",new X),wun=new ri("inLayerSuccessorConstraintBetweenNonDummies",!1),Au=new kt("portDummy"),KS=new ri("crossingHint",Q(0)),Mc=new ri("graphProperties",(e=u(xo(v_),9),new ks(e,u(bo(e,e.length),9),0))),ec=new ri("externalPortSide",(J(),Xr)),bun=new ri("externalPortSize",new Li),E_=new kt("externalPortReplacedDummies"),qS=new kt("externalPortReplacedDummy"),Gb=new ri("externalPortConnections",(n=u(xo(Zi),9),new ks(n,u(bo(n,n.length),9),0))),k0=new ri(OKn,0),hun=new kt("barycenterAssociates"),mp=new kt("TopSideComments"),bp=new kt("BottomSideComments"),_S=new kt("CommentConnectionPort"),T_=new ri("inputCollect",!1),A_=new ri("outputCollect",!1),Uk=new ri("cyclic",!1),dun=new kt("crossHierarchyMap"),I_=new kt("targetOffset"),new ri("splineLabelSize",new Li),Ig=new kt("spacings"),GS=new ri("partitionConstraint",!1),p0=new kt("breakingPoint.info"),yun=new kt("splines.survivingEdge"),Ua=new kt("splines.route.start"),Og=new kt("splines.edgeChain"),kun=new kt("originalPortConstraints"),fv=new kt("selfLoopHolder"),hv=new kt("splines.nsPortY"),dc=new kt("modelOrder"),M_=new kt("longEdgeTargetNode"),v0=new ri(aHn,!1),Pg=new ri(aHn,!1),C_=new kt("layerConstraints.hiddenNodes"),mun=new kt("layerConstraints.opposidePort"),P_=new kt("targetNode.modelOrder")}function zZ(){zZ=N,Dun=(V8(),$S),VXn=new In(xnn,Dun),sVn=new In(Lnn,(qn(),!1)),Bun=(kC(),j_),aVn=new In(WM,Bun),AVn=new In(Nnn,!1),SVn=new In(Bnn,!0),CXn=new In(Rnn,!1),Uun=(z8(),iK),qVn=new In(_nn,Uun),Q(1),JVn=new In(Knn,Q(7)),YVn=new In(Hnn,!1),oVn=new In(qnn,!1),Oun=(Pa(),f_),XXn=new In(IN,Oun),Kun=(JT(),Q_),MVn=new In(wk,Kun),Run=(Ss(),Qk),vVn=new In(Gnn,Run),Q(-1),pVn=new In(znn,Q(-1)),Q(-1),mVn=new In(Unn,Q(-1)),Q(-1),kVn=new In(ON,Q(4)),Q(-1),jVn=new In(DN,Q(2)),_un=(Zw(),hP),TVn=new In($N,_un),Q(0),CVn=new In(FN,Q(0)),wVn=new In(xN,Q(nt)),Iun=(F2(),ap),WXn=new In(X6,Iun),FXn=new In(Wnn,!1),KXn=new In(LN,.1),zXn=new In(NN,!1),Q(-1),qXn=new In(Xnn,Q(-1)),Q(-1),GXn=new In(Vnn,Q(-1)),Q(0),xXn=new In(Qnn,Q(40)),Pun=(q3(),k_),RXn=new In(BN,Pun),Sun=Gk,LXn=new In(XM,Sun),zun=(b6(),Lm),HVn=new In(lg,zun),$Vn=new kt(VM),Hun=(K8(),xS),PVn=new In(RN,Hun),qun=(A7(),LS),OVn=new In(_N,qun),LVn=new In(KN,.3),BVn=new kt(HN),Gun=(wb(),fP),RVn=new In(qN,Gun),xun=(oT(),cK),nVn=new In(Jnn,xun),Lun=(x8(),uK),eVn=new In(Ynn,Lun),Nun=(Q3(),Rm),tVn=new In(QM,Nun),rVn=new In(JM,.2),YXn=new In(GN,2),WVn=new In(Znn,null),VVn=new In(nen,10),XVn=new In(een,10),QVn=new In(ten,20),Q(0),GVn=new In(ien,Q(0)),Q(0),zVn=new In(ren,Q(0)),Q(0),UVn=new In(cen,Q(0)),TXn=new In(zN,!1),Cun=(h4(),Cm),AXn=new In(uen,Cun),Eun=(OC(),s_),MXn=new In(sen,Eun),hVn=new In(YM,!1),Q(0),fVn=new In(UN,Q(16)),Q(0),lVn=new In(WN,Q(5)),Vun=(dT(),fK),vQn=new In(Vh,Vun),ZVn=new In(ZM,10),tQn=new In(nA,1),Xun=(VC(),DS),fQn=new In(V6,Xun),cQn=new kt(XN),Wun=Q(1),Q(0),sQn=new In(VN,Wun),Qun=(uT(),oK),jQn=new In(eA,Qun),mQn=new kt(tA),bQn=new In(iA,!0),aQn=new In(rA,2),gQn=new In(QN,!0),Fun=(eM(),FS),JXn=new In(oen,Fun),$un=(q2(),iv),QXn=new In(fen,$un),Aun=(Rh(),Nl),$Xn=new In(cA,Aun),DXn=new In(hen,!1),Tun=(qd(),yg),SXn=new In(JN,Tun),Mun=(i6(),J_),OXn=new In(len,Mun),PXn=new In(YN,0),IXn=new In(ZN,0),bVn=h_,dVn=qk,yVn=sP,EVn=sP,gVn=V_,HXn=(_h(),F1),UXn=ap,_Xn=ap,NXn=ap,BXn=F1,FVn=Nm,xVn=Lm,IVn=Lm,DVn=Lm,NVn=eK,KVn=Nm,_Vn=Nm,iVn=(Hh(),Sp),cVn=Sp,uVn=Rm,ZXn=yy,nQn=pv,eQn=ew,iQn=pv,rQn=ew,hQn=pv,lQn=ew,uQn=o_,oQn=DS,EQn=pv,CQn=ew,kQn=pv,yQn=ew,wQn=ew,dQn=ew,pQn=ew}function rr(){rr=N,fcn=new zt("DIRECTION_PREPROCESSOR",0),ucn=new zt("COMMENT_PREPROCESSOR",1),mm=new zt("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),WR=new zt("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),Scn=new zt("PARTITION_PREPROCESSOR",4),dS=new zt("LABEL_DUMMY_INSERTER",5),ES=new zt("SELF_LOOP_PREPROCESSOR",6),Z4=new zt("LAYER_CONSTRAINT_PREPROCESSOR",7),Mcn=new zt("PARTITION_MIDPROCESSOR",8),pcn=new zt("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),Ccn=new zt("NODE_PROMOTION",10),Y4=new zt("LAYER_CONSTRAINT_POSTPROCESSOR",11),Acn=new zt("PARTITION_POSTPROCESSOR",12),bcn=new zt("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),Pcn=new zt("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),ncn=new zt("BREAKING_POINT_INSERTER",15),pS=new zt("LONG_EDGE_SPLITTER",16),XR=new zt("PORT_SIDE_PROCESSOR",17),lS=new zt("INVERTED_PORT_PROCESSOR",18),kS=new zt("PORT_LIST_SORTER",19),Ocn=new zt("SORT_BY_INPUT_ORDER_OF_MODEL",20),mS=new zt("NORTH_SOUTH_PORT_PREPROCESSOR",21),ecn=new zt("BREAKING_POINT_PROCESSOR",22),Tcn=new zt(rHn,23),Dcn=new zt(cHn,24),yS=new zt("SELF_LOOP_PORT_RESTORER",25),Icn=new zt("SINGLE_EDGE_GRAPH_WRAPPER",26),aS=new zt("IN_LAYER_CONSTRAINT_PROCESSOR",27),lcn=new zt("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),jcn=new zt("LABEL_AND_NODE_SIZE_PROCESSOR",29),ycn=new zt("INNERMOST_NODE_MARGIN_CALCULATOR",30),CS=new zt("SELF_LOOP_ROUTER",31),rcn=new zt("COMMENT_NODE_MARGIN_CALCULATOR",32),hS=new zt("END_LABEL_PREPROCESSOR",33),wS=new zt("LABEL_DUMMY_SWITCHER",34),icn=new zt("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),J4=new zt("LABEL_SIDE_SELECTOR",36),mcn=new zt("HYPEREDGE_DUMMY_MERGER",37),wcn=new zt("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),Ecn=new zt("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),km=new zt("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),scn=new zt("CONSTRAINTS_POSTPROCESSOR",41),ccn=new zt("COMMENT_POSTPROCESSOR",42),kcn=new zt("HYPERNODE_PROCESSOR",43),gcn=new zt("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),gS=new zt("LONG_EDGE_JOINER",45),jS=new zt("SELF_LOOP_POSTPROCESSOR",46),tcn=new zt("BREAKING_POINT_REMOVER",47),vS=new zt("NORTH_SOUTH_PORT_POSTPROCESSOR",48),vcn=new zt("HORIZONTAL_COMPACTOR",49),bS=new zt("LABEL_DUMMY_REMOVER",50),acn=new zt("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),hcn=new zt("END_LABEL_SORTER",52),Kk=new zt("REVERSED_EDGE_RESTORER",53),fS=new zt("END_LABEL_POSTPROCESSOR",54),dcn=new zt("HIERARCHICAL_NODE_RESIZER",55),ocn=new zt("DIRECTION_POSTPROCESSOR",56)}function OTe(n,e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn,zn,Wn,se,Ye,fi,ps,oo,Af,hI,Ky,y9,Hy,Ov,CH,Ree,TH,_1,$0,Dv,qy,Gy,Fp,MH,j9,_ee,W1n,F0,E9,AH,xp,C9,bw,T9,SH,Kee;for(W1n=0,Ye=e,oo=0,Ky=Ye.length;oo0&&(n.a[_1.p]=W1n++)}for(C9=0,fi=t,Af=0,y9=fi.length;Af0;){for(_1=(ne(Gy.b>0),u(Gy.a.Xb(Gy.c=--Gy.b),11)),qy=0,f=new E(_1.e);f.a0&&(_1.j==(J(),Kn)?(n.a[_1.p]=C9,++C9):(n.a[_1.p]=C9+Hy+CH,++CH))}C9+=CH}for(Dv=new we,v=new Sh,se=e,ps=0,hI=se.length;psl.b&&(l.b=Fp)):_1.i.c==_ee&&(Fpl.c&&(l.c=Fp));for(S3(m,0,m.length,null),xp=F(be,Le,25,m.length,15,1),i=F(be,Le,25,C9+1,15,1),S=0;S0;)en%2>0&&(r+=SH[en+1]),en=(en-1)/2|0,++SH[en];for(wn=F(dJn,rn,362,m.length*2,0,1),x=0;x'?":Mn(xqn,n)?"'(?<' or '(? toIndex: ",rnn=", toIndex: ",cnn="Index: ",unn=", Size: ",P4="org.eclipse.elk.alg.common",lt={62:1},dKn="org.eclipse.elk.alg.common.compaction",bKn="Scanline/EventHandler",wh="org.eclipse.elk.alg.common.compaction.oned",wKn="CNode belongs to another CGroup.",gKn="ISpacingsHandler/1",uN="The ",sN=" instance has been finished already.",pKn="The direction ",vKn=" is not supported by the CGraph instance.",mKn="OneDimensionalCompactor",kKn="OneDimensionalCompactor/lambda$0$Type",yKn="Quadruplet",jKn="ScanlineConstraintCalculator",EKn="ScanlineConstraintCalculator/ConstraintsScanlineHandler",CKn="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",TKn="ScanlineConstraintCalculator/Timestamp",MKn="ScanlineConstraintCalculator/lambda$0$Type",_f={169:1,45:1},oN="org.eclipse.elk.alg.common.compaction.options",Wr="org.eclipse.elk.core.data",snn="org.eclipse.elk.polyomino.traversalStrategy",onn="org.eclipse.elk.polyomino.lowLevelSort",fnn="org.eclipse.elk.polyomino.highLevelSort",hnn="org.eclipse.elk.polyomino.fill",zs={130:1},fN="polyomino",_6="org.eclipse.elk.alg.common.networksimplex",gh={177:1,3:1,4:1},AKn="org.eclipse.elk.alg.common.nodespacing",Fa="org.eclipse.elk.alg.common.nodespacing.cellsystem",I4="CENTER",SKn={212:1,326:1},lnn={3:1,4:1,5:1,595:1},Y2="LEFT",Z2="RIGHT",ann="Vertical alignment cannot be null",dnn="BOTTOM",LM="org.eclipse.elk.alg.common.nodespacing.internal",K6="UNDEFINED",wf=.01,sk="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",PKn="LabelPlacer/lambda$0$Type",IKn="LabelPlacer/lambda$1$Type",OKn="portRatioOrPosition",O4="org.eclipse.elk.alg.common.overlaps",hN="DOWN",Kf="org.eclipse.elk.alg.common.polyomino",NM="NORTH",lN="EAST",aN="SOUTH",dN="WEST",BM="org.eclipse.elk.alg.common.polyomino.structures",bnn="Direction",bN="Grid is only of size ",wN=". Requested point (",gN=") is out of bounds.",RM=" Given center based coordinates were (",ok="org.eclipse.elk.graph.properties",DKn="IPropertyHolder",wnn={3:1,94:1,134:1},np="org.eclipse.elk.alg.common.spore",$Kn="org.eclipse.elk.alg.common.utils",xa={209:1},og="org.eclipse.elk.core",FKn="Connected Components Compaction",xKn="org.eclipse.elk.alg.disco",_M="org.eclipse.elk.alg.disco.graph",pN="org.eclipse.elk.alg.disco.options",gnn="CompactionStrategy",pnn="org.eclipse.elk.disco.componentCompaction.strategy",vnn="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",mnn="org.eclipse.elk.disco.debug.discoGraph",knn="org.eclipse.elk.disco.debug.discoPolys",LKn="componentCompaction",La="org.eclipse.elk.disco",vN="org.eclipse.elk.spacing.componentComponent",mN="org.eclipse.elk.edge.thickness",ep="org.eclipse.elk.aspectRatio",u0="org.eclipse.elk.padding",fg="org.eclipse.elk.alg.disco.transform",kN=1.5707963267948966,D4=17976931348623157e292,Ob={3:1,4:1,5:1,192:1},ynn={3:1,6:1,4:1,5:1,106:1,120:1},jnn="org.eclipse.elk.alg.force",Enn="ComponentsProcessor",NKn="ComponentsProcessor/1",fk="org.eclipse.elk.alg.force.graph",BKn="Component Layout",Cnn="org.eclipse.elk.alg.force.model",KM="org.eclipse.elk.force.model",Tnn="org.eclipse.elk.force.iterations",Mnn="org.eclipse.elk.force.repulsivePower",yN="org.eclipse.elk.force.temperature",Hf=.001,jN="org.eclipse.elk.force.repulsion",H6="org.eclipse.elk.alg.force.options",$4=1.600000023841858,fs="org.eclipse.elk.force",hk="org.eclipse.elk.priority",Db="org.eclipse.elk.spacing.nodeNode",EN="org.eclipse.elk.spacing.edgeLabel",HM="org.eclipse.elk.randomSeed",q6="org.eclipse.elk.separateConnectedComponents",lk="org.eclipse.elk.interactive",CN="org.eclipse.elk.portConstraints",qM="org.eclipse.elk.edgeLabels.inline",G6="org.eclipse.elk.omitNodeMicroLayout",tp="org.eclipse.elk.nodeSize.options",hg="org.eclipse.elk.nodeSize.constraints",F4="org.eclipse.elk.nodeLabels.placement",x4="org.eclipse.elk.portLabels.placement",Ann="origin",RKn="random",_Kn="boundingBox.upLeft",KKn="boundingBox.lowRight",Snn="org.eclipse.elk.stress.fixed",Pnn="org.eclipse.elk.stress.desiredEdgeLength",Inn="org.eclipse.elk.stress.dimension",Onn="org.eclipse.elk.stress.epsilon",Dnn="org.eclipse.elk.stress.iterationLimit",Ml="org.eclipse.elk.stress",HKn="ELK Stress",ip="org.eclipse.elk.nodeSize.minimum",GM="org.eclipse.elk.alg.force.stress",qKn="Layered layout",rp="org.eclipse.elk.alg.layered",ak="org.eclipse.elk.alg.layered.compaction.components",z6="org.eclipse.elk.alg.layered.compaction.oned",zM="org.eclipse.elk.alg.layered.compaction.oned.algs",Na="org.eclipse.elk.alg.layered.compaction.recthull",qf="org.eclipse.elk.alg.layered.components",Xh="NONE",hc={3:1,6:1,4:1,9:1,5:1,122:1},GKn={3:1,6:1,4:1,5:1,141:1,106:1,120:1},UM="org.eclipse.elk.alg.layered.compound",xt={51:1},$c="org.eclipse.elk.alg.layered.graph",TN=" -> ",zKn="Not supported by LGraph",$nn="Port side is undefined",MN={3:1,6:1,4:1,5:1,474:1,141:1,106:1,120:1},E1={3:1,6:1,4:1,5:1,141:1,193:1,203:1,106:1,120:1},UKn={3:1,6:1,4:1,5:1,141:1,1943:1,203:1,106:1,120:1},WKn=`([{"' \r +`,XKn=`)]}"' \r +`,VKn="The given string contains parts that cannot be parsed as numbers.",dk="org.eclipse.elk.core.math",QKn={3:1,4:1,142:1,207:1,414:1},JKn={3:1,4:1,116:1,207:1,414:1},Jn="org.eclipse.elk.layered",C1="org.eclipse.elk.alg.layered.graph.transform",YKn="ElkGraphImporter",ZKn="ElkGraphImporter/lambda$0$Type",nHn="ElkGraphImporter/lambda$1$Type",eHn="ElkGraphImporter/lambda$2$Type",tHn="ElkGraphImporter/lambda$4$Type",iHn="Node margin calculation",Un="org.eclipse.elk.alg.layered.intermediate",rHn="ONE_SIDED_GREEDY_SWITCH",cHn="TWO_SIDED_GREEDY_SWITCH",AN="No implementation is available for the layout processor ",Fnn="IntermediateProcessorStrategy",SN="Node '",uHn="FIRST_SEPARATE",sHn="LAST_SEPARATE",oHn="Odd port side processing",Jt="org.eclipse.elk.alg.layered.intermediate.compaction",U6="org.eclipse.elk.alg.layered.intermediate.greedyswitch",ph="org.eclipse.elk.alg.layered.p3order.counting",bk={225:1},cp="org.eclipse.elk.alg.layered.intermediate.loops",hs="org.eclipse.elk.alg.layered.intermediate.loops.ordering",Al="org.eclipse.elk.alg.layered.intermediate.loops.routing",W6="org.eclipse.elk.alg.layered.intermediate.preserveorder",Gf="org.eclipse.elk.alg.layered.intermediate.wrapping",lc="org.eclipse.elk.alg.layered.options",PN="INTERACTIVE",fHn="DEPTH_FIRST",hHn="EDGE_LENGTH",lHn="SELF_LOOPS",aHn="firstTryWithInitialOrder",xnn="org.eclipse.elk.layered.directionCongruency",Lnn="org.eclipse.elk.layered.feedbackEdges",WM="org.eclipse.elk.layered.interactiveReferencePoint",Nnn="org.eclipse.elk.layered.mergeEdges",Bnn="org.eclipse.elk.layered.mergeHierarchyEdges",Rnn="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",_nn="org.eclipse.elk.layered.portSortingStrategy",Knn="org.eclipse.elk.layered.thoroughness",Hnn="org.eclipse.elk.layered.unnecessaryBendpoints",qnn="org.eclipse.elk.layered.generatePositionAndLayerIds",IN="org.eclipse.elk.layered.cycleBreaking.strategy",wk="org.eclipse.elk.layered.layering.strategy",Gnn="org.eclipse.elk.layered.layering.layerConstraint",znn="org.eclipse.elk.layered.layering.layerChoiceConstraint",Unn="org.eclipse.elk.layered.layering.layerId",ON="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",DN="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",$N="org.eclipse.elk.layered.layering.nodePromotion.strategy",FN="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",xN="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",X6="org.eclipse.elk.layered.crossingMinimization.strategy",Wnn="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",LN="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",NN="org.eclipse.elk.layered.crossingMinimization.semiInteractive",Xnn="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",Vnn="org.eclipse.elk.layered.crossingMinimization.positionId",Qnn="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",BN="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",XM="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",lg="org.eclipse.elk.layered.nodePlacement.strategy",VM="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",RN="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",_N="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",KN="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",HN="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",qN="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",Jnn="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",Ynn="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",QM="org.eclipse.elk.layered.edgeRouting.splines.mode",JM="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",GN="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",Znn="org.eclipse.elk.layered.spacing.baseValue",nen="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",een="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",ten="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",ien="org.eclipse.elk.layered.priority.direction",ren="org.eclipse.elk.layered.priority.shortness",cen="org.eclipse.elk.layered.priority.straightness",zN="org.eclipse.elk.layered.compaction.connectedComponents",uen="org.eclipse.elk.layered.compaction.postCompaction.strategy",sen="org.eclipse.elk.layered.compaction.postCompaction.constraints",YM="org.eclipse.elk.layered.highDegreeNodes.treatment",UN="org.eclipse.elk.layered.highDegreeNodes.threshold",WN="org.eclipse.elk.layered.highDegreeNodes.treeHeight",Vh="org.eclipse.elk.layered.wrapping.strategy",ZM="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",nA="org.eclipse.elk.layered.wrapping.correctionFactor",V6="org.eclipse.elk.layered.wrapping.cutting.strategy",XN="org.eclipse.elk.layered.wrapping.cutting.cuts",VN="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",eA="org.eclipse.elk.layered.wrapping.validify.strategy",tA="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",iA="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",rA="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",QN="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",oen="org.eclipse.elk.layered.edgeLabels.sideSelection",fen="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",cA="org.eclipse.elk.layered.considerModelOrder.strategy",hen="org.eclipse.elk.layered.considerModelOrder.noModelOrder",JN="org.eclipse.elk.layered.considerModelOrder.components",len="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",YN="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",ZN="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",nB="layering",dHn="layering.minWidth",bHn="layering.nodePromotion",gk="crossingMinimization",uA="org.eclipse.elk.hierarchyHandling",wHn="crossingMinimization.greedySwitch",gHn="nodePlacement",pHn="nodePlacement.bk",vHn="edgeRouting",pk="org.eclipse.elk.edgeRouting",gf="spacing",aen="priority",den="compaction",mHn="compaction.postCompaction",kHn="Specifies whether and how post-process compaction is applied.",ben="highDegreeNodes",wen="wrapping",yHn="wrapping.cutting",jHn="wrapping.validify",gen="wrapping.multiEdge",eB="edgeLabels",vk="considerModelOrder",pen="org.eclipse.elk.spacing.commentComment",ven="org.eclipse.elk.spacing.commentNode",men="org.eclipse.elk.spacing.edgeEdge",ken="org.eclipse.elk.spacing.edgeNode",yen="org.eclipse.elk.spacing.labelLabel",jen="org.eclipse.elk.spacing.labelPortHorizontal",Een="org.eclipse.elk.spacing.labelPortVertical",Cen="org.eclipse.elk.spacing.labelNode",Ten="org.eclipse.elk.spacing.nodeSelfLoop",Men="org.eclipse.elk.spacing.portPort",Aen="org.eclipse.elk.spacing.individual",Sen="org.eclipse.elk.port.borderOffset",Pen="org.eclipse.elk.noLayout",Ien="org.eclipse.elk.port.side",mk="org.eclipse.elk.debugMode",Oen="org.eclipse.elk.alignment",Den="org.eclipse.elk.insideSelfLoops.activate",$en="org.eclipse.elk.insideSelfLoops.yo",tB="org.eclipse.elk.nodeSize.fixedGraphSize",Fen="org.eclipse.elk.direction",xen="org.eclipse.elk.nodeLabels.padding",Len="org.eclipse.elk.portLabels.nextToPortIfPossible",Nen="org.eclipse.elk.portLabels.treatAsGroup",Ben="org.eclipse.elk.portAlignment.default",Ren="org.eclipse.elk.portAlignment.north",_en="org.eclipse.elk.portAlignment.south",Ken="org.eclipse.elk.portAlignment.west",Hen="org.eclipse.elk.portAlignment.east",sA="org.eclipse.elk.contentAlignment",qen="org.eclipse.elk.junctionPoints",Gen="org.eclipse.elk.edgeLabels.placement",zen="org.eclipse.elk.port.index",Uen="org.eclipse.elk.commentBox",Wen="org.eclipse.elk.hypernode",Xen="org.eclipse.elk.port.anchor",iB="org.eclipse.elk.partitioning.activate",rB="org.eclipse.elk.partitioning.partition",oA="org.eclipse.elk.position",Ven="org.eclipse.elk.margins",Qen="org.eclipse.elk.spacing.portsSurrounding",cB="org.eclipse.elk.interactiveLayout",ac="org.eclipse.elk.core.util",Jen={3:1,4:1,5:1,593:1},EHn="NETWORK_SIMPLEX",Ec={123:1,51:1},fA="org.eclipse.elk.alg.layered.p1cycles",$b="org.eclipse.elk.alg.layered.p2layers",Yen={402:1,225:1},CHn={832:1,3:1,4:1},vu="org.eclipse.elk.alg.layered.p3order",hr="org.eclipse.elk.alg.layered.p4nodes",THn={3:1,4:1,5:1,840:1},zf=1e-5,Sl="org.eclipse.elk.alg.layered.p4nodes.bk",uB="org.eclipse.elk.alg.layered.p5edges",zo="org.eclipse.elk.alg.layered.p5edges.orthogonal",sB="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",oB=1e-6,Fb="org.eclipse.elk.alg.layered.p5edges.splines",fB=.09999999999999998,hA=1e-8,MHn=4.71238898038469,AHn=3.141592653589793,Q6="org.eclipse.elk.alg.mrtree",J6="org.eclipse.elk.alg.mrtree.graph",up="org.eclipse.elk.alg.mrtree.intermediate",SHn="Set neighbors in level",PHn="DESCENDANTS",Zen="org.eclipse.elk.mrtree.weighting",ntn="org.eclipse.elk.mrtree.searchOrder",lA="org.eclipse.elk.alg.mrtree.options",T1="org.eclipse.elk.mrtree",IHn="org.eclipse.elk.tree",etn="org.eclipse.elk.alg.radial",ag=6.283185307179586,ttn=5e-324,OHn="org.eclipse.elk.alg.radial.intermediate",hB="org.eclipse.elk.alg.radial.intermediate.compaction",DHn={3:1,4:1,5:1,106:1},itn="org.eclipse.elk.alg.radial.intermediate.optimization",lB="No implementation is available for the layout option ",Y6="org.eclipse.elk.alg.radial.options",rtn="org.eclipse.elk.radial.orderId",ctn="org.eclipse.elk.radial.radius",aB="org.eclipse.elk.radial.compactor",dB="org.eclipse.elk.radial.compactionStepSize",utn="org.eclipse.elk.radial.sorter",stn="org.eclipse.elk.radial.wedgeCriteria",otn="org.eclipse.elk.radial.optimizationCriteria",Uf="org.eclipse.elk.radial",$Hn="org.eclipse.elk.alg.radial.p1position.wedge",ftn="org.eclipse.elk.alg.radial.sorting",FHn=5.497787143782138,xHn=3.9269908169872414,LHn=2.356194490192345,NHn="org.eclipse.elk.alg.rectpacking",aA="org.eclipse.elk.alg.rectpacking.firstiteration",bB="org.eclipse.elk.alg.rectpacking.options",htn="org.eclipse.elk.rectpacking.optimizationGoal",ltn="org.eclipse.elk.rectpacking.lastPlaceShift",atn="org.eclipse.elk.rectpacking.currentPosition",dtn="org.eclipse.elk.rectpacking.desiredPosition",btn="org.eclipse.elk.rectpacking.onlyFirstIteration",wtn="org.eclipse.elk.rectpacking.rowCompaction",wB="org.eclipse.elk.rectpacking.expandToAspectRatio",gtn="org.eclipse.elk.rectpacking.targetWidth",dA="org.eclipse.elk.expandNodes",Us="org.eclipse.elk.rectpacking",kk="org.eclipse.elk.alg.rectpacking.util",bA="No implementation available for ",xb="org.eclipse.elk.alg.spore",Lb="org.eclipse.elk.alg.spore.options",s0="org.eclipse.elk.sporeCompaction",gB="org.eclipse.elk.underlyingLayoutAlgorithm",ptn="org.eclipse.elk.processingOrder.treeConstruction",vtn="org.eclipse.elk.processingOrder.spanningTreeCostFunction",pB="org.eclipse.elk.processingOrder.preferredRoot",vB="org.eclipse.elk.processingOrder.rootSelection",mB="org.eclipse.elk.structure.structureExtractionStrategy",mtn="org.eclipse.elk.compaction.compactionStrategy",ktn="org.eclipse.elk.compaction.orthogonal",ytn="org.eclipse.elk.overlapRemoval.maxIterations",jtn="org.eclipse.elk.overlapRemoval.runScanline",kB="processingOrder",BHn="overlapRemoval",L4="org.eclipse.elk.sporeOverlap",RHn="org.eclipse.elk.alg.spore.p1structure",yB="org.eclipse.elk.alg.spore.p2processingorder",jB="org.eclipse.elk.alg.spore.p3execution",_Hn="Invalid index: ",N4="org.eclipse.elk.core.alg",dg={331:1},Nb={288:1},KHn="Make sure its type is registered with the ",Etn=" utility class.",B4="true",EB="false",HHn="Couldn't clone property '",o0=.05,Ws="org.eclipse.elk.core.options",qHn=1.2999999523162842,f0="org.eclipse.elk.box",Ctn="org.eclipse.elk.box.packingMode",GHn="org.eclipse.elk.algorithm",zHn="org.eclipse.elk.resolvedAlgorithm",Ttn="org.eclipse.elk.bendPoints",LTe="org.eclipse.elk.labelManager",UHn="org.eclipse.elk.scaleFactor",WHn="org.eclipse.elk.animate",XHn="org.eclipse.elk.animTimeFactor",VHn="org.eclipse.elk.layoutAncestors",QHn="org.eclipse.elk.maxAnimTime",JHn="org.eclipse.elk.minAnimTime",YHn="org.eclipse.elk.progressBar",ZHn="org.eclipse.elk.validateGraph",nqn="org.eclipse.elk.validateOptions",eqn="org.eclipse.elk.zoomToFit",NTe="org.eclipse.elk.font.name",tqn="org.eclipse.elk.font.size",iqn="org.eclipse.elk.edge.type",rqn="partitioning",cqn="nodeLabels",wA="portAlignment",CB="nodeSize",TB="port",Mtn="portLabels",uqn="insideSelfLoops",Z6="org.eclipse.elk.fixed",gA="org.eclipse.elk.random",sqn="port must have a parent node to calculate the port side",oqn="The edge needs to have exactly one edge section. Found: ",nm="org.eclipse.elk.core.util.adapters",Is="org.eclipse.emf.ecore",bg="org.eclipse.elk.graph",fqn="EMapPropertyHolder",hqn="ElkBendPoint",lqn="ElkGraphElement",aqn="ElkConnectableShape",Atn="ElkEdge",dqn="ElkEdgeSection",bqn="EModelElement",wqn="ENamedElement",Stn="ElkLabel",Ptn="ElkNode",Itn="ElkPort",gqn={92:1,90:1},sp="org.eclipse.emf.common.notify.impl",Pl="The feature '",em="' is not a valid changeable feature",pqn="Expecting null",MB="' is not a valid feature",vqn="The feature ID",mqn=" is not a valid feature ID",uc=32768,kqn={105:1,92:1,90:1,56:1,49:1,97:1},Bn="org.eclipse.emf.ecore.impl",Ba="org.eclipse.elk.graph.impl",tm="Recursive containment not allowed for ",R4="The datatype '",h0="' is not a valid classifier",AB="The value '",wg={190:1,3:1,4:1},SB="The class '",_4="http://www.eclipse.org/elk/ElkGraph",Eo=1024,Otn="property",im="value",PB="source",yqn="properties",jqn="identifier",IB="height",OB="width",DB="parent",$B="text",FB="children",Eqn="hierarchical",Dtn="sources",xB="targets",$tn="sections",pA="bendPoints",Ftn="outgoingShape",xtn="incomingShape",Ltn="outgoingSections",Ntn="incomingSections",Ui="org.eclipse.emf.common.util",Btn="Severe implementation error in the Json to ElkGraph importer.",Wf="id",Fi="org.eclipse.elk.graph.json",Rtn="Unhandled parameter types: ",Cqn="startPoint",Tqn="An edge must have at least one source and one target (edge id: '",K4="').",Mqn="Referenced edge section does not exist: ",Aqn=" (edge id: '",_tn="target",Sqn="sourcePoint",Pqn="targetPoint",vA="group",We="name",Iqn="connectableShape cannot be null",Oqn="edge cannot be null",LB="Passed edge is not 'simple'.",mA="org.eclipse.elk.graph.util",yk="The 'no duplicates' constraint is violated",NB="targetIndex=",Ra=", size=",BB="sourceIndex=",Xf={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1},RB={3:1,4:1,20:1,28:1,52:1,14:1,47:1,15:1,54:1,67:1,63:1,58:1,588:1},kA="logging",Dqn="measureExecutionTime",$qn="parser.parse.1",Fqn="parser.parse.2",yA="parser.next.1",_B="parser.next.2",xqn="parser.next.3",Lqn="parser.next.4",_a="parser.factor.1",Ktn="parser.factor.2",Nqn="parser.factor.3",Bqn="parser.factor.4",Rqn="parser.factor.5",_qn="parser.factor.6",Kqn="parser.atom.1",Hqn="parser.atom.2",qqn="parser.atom.3",Htn="parser.atom.4",KB="parser.atom.5",qtn="parser.cc.1",jA="parser.cc.2",Gqn="parser.cc.3",zqn="parser.cc.5",Gtn="parser.cc.6",ztn="parser.cc.7",HB="parser.cc.8",Uqn="parser.ope.1",Wqn="parser.ope.2",Xqn="parser.ope.3",M1="parser.descape.1",Vqn="parser.descape.2",Qqn="parser.descape.3",Jqn="parser.descape.4",Yqn="parser.descape.5",Os="parser.process.1",Zqn="parser.quantifier.1",nGn="parser.quantifier.2",eGn="parser.quantifier.3",tGn="parser.quantifier.4",Utn="parser.quantifier.5",iGn="org.eclipse.emf.common.notify",Wtn={415:1,672:1},rGn={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1},jk={366:1,143:1},rm="index=",qB={3:1,4:1,5:1,126:1},cGn={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,58:1},Xtn={3:1,6:1,4:1,5:1,192:1},uGn={3:1,4:1,5:1,165:1,367:1},sGn=";/?:@&=+$,",oGn="invalid authority: ",fGn="EAnnotation",hGn="ETypedElement",lGn="EStructuralFeature",aGn="EAttribute",dGn="EClassifier",bGn="EEnumLiteral",wGn="EGenericType",gGn="EOperation",pGn="EParameter",vGn="EReference",mGn="ETypeParameter",vt="org.eclipse.emf.ecore.util",GB={76:1},Vtn={3:1,20:1,14:1,15:1,58:1,589:1,76:1,69:1,95:1},kGn="org.eclipse.emf.ecore.util.FeatureMap$Entry",mu=8192,Bb=2048,cm="byte",EA="char",um="double",sm="float",om="int",fm="long",hm="short",yGn="java.lang.Object",gg={3:1,4:1,5:1,247:1},Qtn={3:1,4:1,5:1,673:1},jGn={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,69:1},Br={3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,69:1,95:1},Ek="mixed",xe="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",Xs="kind",EGn={3:1,4:1,5:1,674:1},Jtn={3:1,4:1,20:1,28:1,52:1,14:1,15:1,67:1,58:1,76:1,69:1,95:1},CA={20:1,28:1,52:1,14:1,15:1,58:1,69:1},TA={47:1,125:1,279:1},MA={72:1,332:1},AA="The value of type '",SA="' must be of type '",pg=1316,Vs="http://www.eclipse.org/emf/2002/Ecore",PA=-32768,l0="constraints",Ri="baseType",CGn="getEStructuralFeature",TGn="getFeatureID",lm="feature",MGn="getOperationID",Ytn="operation",AGn="defaultValue",SGn="eTypeParameters",PGn="isInstance",IGn="getEEnumLiteral",OGn="eContainingClass",qe={55:1},DGn={3:1,4:1,5:1,119:1},$Gn="org.eclipse.emf.ecore.resource",FGn={92:1,90:1,591:1,1935:1},zB="org.eclipse.emf.ecore.resource.impl",Ztn="unspecified",Ck="simple",IA="attribute",xGn="attributeWildcard",OA="element",UB="elementWildcard",Uo="collapse",WB="itemType",DA="namespace",Tk="##targetNamespace",Qs="whiteSpace",nin="wildcards",Ka="http://www.eclipse.org/emf/2003/XMLType",XB="##any",H4="uninitialized",Mk="The multiplicity constraint is violated",$A="org.eclipse.emf.ecore.xml.type",LGn="ProcessingInstruction",NGn="SimpleAnyType",BGn="XMLTypeDocumentRoot",Wt="org.eclipse.emf.ecore.xml.type.impl",Ak="INF",RGn="processing",_Gn="ENTITIES_._base",ein="minLength",tin="ENTITY",FA="NCName",KGn="IDREFS_._base",iin="integer",VB="token",QB="pattern",HGn="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",rin="\\i\\c*",qGn="[\\i-[:]][\\c-[:]]*",GGn="nonPositiveInteger",Sk="maxInclusive",cin="NMTOKEN",zGn="NMTOKENS_._base",uin="nonNegativeInteger",Pk="minInclusive",UGn="normalizedString",WGn="unsignedByte",XGn="unsignedInt",VGn="18446744073709551615",QGn="unsignedShort",JGn="processingInstruction",A1="org.eclipse.emf.ecore.xml.type.internal",q4=1114111,YGn="Internal Error: shorthands: \\u",am="xml:isDigit",JB="xml:isWord",YB="xml:isSpace",ZB="xml:isNameChar",nR="xml:isInitialNameChar",ZGn="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",nzn="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",ezn="Private Use",eR="ASSIGNED",tR="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯",sin="UNASSIGNED",G4={3:1,117:1},tzn="org.eclipse.emf.ecore.xml.type.util",xA={3:1,4:1,5:1,368:1},oin="org.eclipse.xtext.xbase.lib",izn="Cannot add elements to a Range",rzn="Cannot set elements in a Range",czn="Cannot remove elements from a Range",LA="locale",NA="default",BA="user.agent",s,RA,iR;y.goog=y.goog||{},y.goog.global=y.goog.global||y,f5e(),b(1,null,{},Lc),s.Fb=function(e){return nyn(this,e)},s.Gb=function(){return this.gm},s.Hb=function(){return md(this)},s.Ib=function(){var e;return J1($u(this))+"@"+(e=mt(this)>>>0,e.toString(16))},s.equals=function(n){return this.Fb(n)},s.hashCode=function(){return this.Hb()},s.toString=function(){return this.Ib()};var uzn,szn,ozn;b(290,1,{290:1,2026:1},RV),s.le=function(e){var t;return t=new RV,t.i=4,e>1?t.c=pMn(this,e-1):t.c=this,t},s.me=function(){return Ph(this),this.b},s.ne=function(){return J1(this)},s.oe=function(){return Ph(this),this.k},s.pe=function(){return(this.i&4)!=0},s.qe=function(){return(this.i&1)!=0},s.Ib=function(){return nV(this)},s.i=0;var Zn=w(Ur,"Object",1),fin=w(Ur,"Class",290);b(1998,1,J7),w(Y7,"Optional",1998),b(1170,1998,J7,Bt),s.Fb=function(e){return e===this},s.Hb=function(){return 2040732332},s.Ib=function(){return"Optional.absent()"},s.Jb=function(e){return pe(e),Rv(),rR};var rR;w(Y7,"Absent",1170),b(628,1,{},YI),w(Y7,"Joiner",628);var BTe=Ct(Y7,"Predicate");b(582,1,{169:1,582:1,3:1,45:1},nvn),s.Mb=function(e){return iDn(this,e)},s.Lb=function(e){return iDn(this,e)},s.Fb=function(e){var t;return I(e,582)?(t=u(e,582),DY(this.a,t.a)):!1},s.Hb=function(){return GV(this.a)+306654252},s.Ib=function(){return V5e(this.a)},w(Y7,"Predicates/AndPredicate",582),b(408,1998,{408:1,3:1},Zy),s.Fb=function(e){var t;return I(e,408)?(t=u(e,408),tt(this.a,t.a)):!1},s.Hb=function(){return 1502476572+mt(this.a)},s.Ib=function(){return q_n+this.a+")"},s.Jb=function(e){return new Zy(tC(e.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},w(Y7,"Present",408),b(198,1,E4),s.Nb=function(e){Oi(this,e)},s.Qb=function(){G9n()},w(an,"UnmodifiableIterator",198),b(1978,198,C4),s.Qb=function(){G9n()},s.Rb=function(e){throw T(new ye)},s.Wb=function(e){throw T(new ye)},w(an,"UnmodifiableListIterator",1978),b(386,1978,C4),s.Ob=function(){return this.c0},s.Pb=function(){if(this.c>=this.d)throw T(new ic);return this.Xb(this.c++)},s.Tb=function(){return this.c},s.Ub=function(){if(this.c<=0)throw T(new ic);return this.Xb(--this.c)},s.Vb=function(){return this.c-1},s.c=0,s.d=0,w(an,"AbstractIndexedListIterator",386),b(699,198,E4),s.Ob=function(){return V$(this)},s.Pb=function(){return XX(this)},s.e=1,w(an,"AbstractIterator",699),b(1986,1,{224:1}),s.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},s.Fb=function(e){return dF(this,e)},s.Hb=function(){return mt(this.Zb())},s.dc=function(){return this.gc()==0},s.ec=function(){return k2(this)},s.Ib=function(){return Nr(this.Zb())},w(an,"AbstractMultimap",1986),b(726,1986,Da),s.$b=function(){QC(this)},s._b=function(e){return f8n(this,e)},s.ac=function(){return new Yp(this,this.c)},s.ic=function(e){return this.hc()},s.bc=function(){return new Sw(this,this.c)},s.jc=function(){return this.mc(this.hc())},s.kc=function(){return new A9n(this)},s.lc=function(){return kx(this.c.vc().Nc(),new Ge,64,this.d)},s.cc=function(e){return ct(this,e)},s.fc=function(e){return l7(this,e)},s.gc=function(){return this.d},s.mc=function(e){return Pn(),new _p(e)},s.nc=function(){return new M9n(this)},s.oc=function(){return kx(this.c.Cc().Nc(),new qt,64,this.d)},s.pc=function(e,t){return new IC(this,e,t,null)},s.d=0,w(an,"AbstractMapBasedMultimap",726),b(1631,726,Da),s.hc=function(){return new Pc(this.a)},s.jc=function(){return Pn(),Pn(),cr},s.cc=function(e){return u(ct(this,e),15)},s.fc=function(e){return u(l7(this,e),15)},s.Zb=function(){return T2(this)},s.Fb=function(e){return dF(this,e)},s.qc=function(e){return u(ct(this,e),15)},s.rc=function(e){return u(l7(this,e),15)},s.mc=function(e){return C8(u(e,15))},s.pc=function(e,t){return jAn(this,e,u(t,15),null)},w(an,"AbstractListMultimap",1631),b(732,1,ji),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return this.c.Ob()||this.e.Ob()},s.Pb=function(){var e;return this.e.Ob()||(e=u(this.c.Pb(),42),this.b=e.cd(),this.a=u(e.dd(),14),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},s.Qb=function(){this.e.Qb(),this.a.dc()&&this.c.Qb(),--this.d.d},w(an,"AbstractMapBasedMultimap/Itr",732),b(1099,732,ji,M9n),s.sc=function(e,t){return t},w(an,"AbstractMapBasedMultimap/1",1099),b(1100,1,{},qt),s.Kb=function(e){return u(e,14).Nc()},w(an,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1100),b(1101,732,ji,A9n),s.sc=function(e,t){return new bd(e,t)},w(an,"AbstractMapBasedMultimap/2",1101);var hin=Ct(fe,"Map");b(1967,1,r0),s.wc=function(e){n6(this,e)},s.yc=function(e,t,i){return IF(this,e,t,i)},s.$b=function(){this.vc().$b()},s.tc=function(e){return ix(this,e)},s._b=function(e){return!!xJ(this,e,!1)},s.uc=function(e){var t,i,r;for(i=this.vc().Kc();i.Ob();)if(t=u(i.Pb(),42),r=t.dd(),B(e)===B(r)||e!=null&&tt(e,r))return!0;return!1},s.Fb=function(e){var t,i,r;if(e===this)return!0;if(!I(e,83)||(r=u(e,83),this.gc()!=r.gc()))return!1;for(i=r.vc().Kc();i.Ob();)if(t=u(i.Pb(),42),!this.tc(t))return!1;return!0},s.xc=function(e){return Vr(xJ(this,e,!1))},s.Hb=function(){return FV(this.vc())},s.dc=function(){return this.gc()==0},s.ec=function(){return new Rp(this)},s.zc=function(e,t){throw T(new t1("Put not supported on this map"))},s.Ac=function(e){Z5(this,e)},s.Bc=function(e){return Vr(xJ(this,e,!0))},s.gc=function(){return this.vc().gc()},s.Ib=function(){return cxn(this)},s.Cc=function(){return new Mh(this)},w(fe,"AbstractMap",1967),b(1987,1967,r0),s.bc=function(){return new Ej(this)},s.vc=function(){return yCn(this)},s.ec=function(){var e;return e=this.g,e||(this.g=this.bc())},s.Cc=function(){var e;return e=this.i,e||(this.i=new e7n(this))},w(an,"Maps/ViewCachingAbstractMap",1987),b(389,1987,r0,Yp),s.xc=function(e){return O0e(this,e)},s.Bc=function(e){return Wwe(this,e)},s.$b=function(){this.d==this.e.c?this.e.$b():DE(new tW(this))},s._b=function(e){return LDn(this.d,e)},s.Ec=function(){return new rvn(this)},s.Dc=function(){return this.Ec()},s.Fb=function(e){return this===e||tt(this.d,e)},s.Hb=function(){return mt(this.d)},s.ec=function(){return this.e.ec()},s.gc=function(){return this.d.gc()},s.Ib=function(){return Nr(this.d)},w(an,"AbstractMapBasedMultimap/AsMap",389);var pf=Ct(Ur,"Iterable");b(28,1,Sb),s.Jc=function(e){$i(this,e)},s.Lc=function(){return this.Oc()},s.Nc=function(){return new xn(this,0)},s.Oc=function(){return new $n(null,this.Nc())},s.Fc=function(e){throw T(new t1("Add not supported on this collection"))},s.Gc=function(e){return Vi(this,e)},s.$b=function(){KW(this)},s.Hc=function(e){return db(this,e,!1)},s.Ic=function(e){return t7(this,e)},s.dc=function(){return this.gc()==0},s.Mc=function(e){return db(this,e,!0)},s.Pc=function(){return wW(this)},s.Qc=function(e){return y7(this,e)},s.Ib=function(){return kl(this)},w(fe,"AbstractCollection",28);var Js=Ct(fe,"Set");b(bf,28,pu),s.Nc=function(){return new xn(this,1)},s.Fb=function(e){return P$n(this,e)},s.Hb=function(){return FV(this)},w(fe,"AbstractSet",bf),b(1970,bf,pu),w(an,"Sets/ImprovedAbstractSet",1970),b(1971,1970,pu),s.$b=function(){this.Rc().$b()},s.Hc=function(e){return h$n(this,e)},s.dc=function(){return this.Rc().dc()},s.Mc=function(e){var t;return this.Hc(e)?(t=u(e,42),this.Rc().ec().Mc(t.cd())):!1},s.gc=function(){return this.Rc().gc()},w(an,"Maps/EntrySet",1971),b(1097,1971,pu,rvn),s.Hc=function(e){return fQ(this.a.d.vc(),e)},s.Kc=function(){return new tW(this.a)},s.Rc=function(){return this.a},s.Mc=function(e){var t;return fQ(this.a.d.vc(),e)?(t=u(e,42),pde(this.a.e,t.cd()),!0):!1},s.Nc=function(){return g8(this.a.d.vc().Nc(),new cvn(this.a))},w(an,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1097),b(1098,1,{},cvn),s.Kb=function(e){return lSn(this.a,u(e,42))},w(an,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1098),b(730,1,ji,tW),s.Nb=function(e){Oi(this,e)},s.Pb=function(){var e;return e=u(this.b.Pb(),42),this.a=u(e.dd(),14),lSn(this.c,e)},s.Ob=function(){return this.b.Ob()},s.Qb=function(){Nw(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},w(an,"AbstractMapBasedMultimap/AsMap/AsMapIterator",730),b(532,1970,pu,Ej),s.$b=function(){this.b.$b()},s.Hc=function(e){return this.b._b(e)},s.Jc=function(e){pe(e),this.b.wc(new jvn(e))},s.dc=function(){return this.b.dc()},s.Kc=function(){return new _v(this.b.vc().Kc())},s.Mc=function(e){return this.b._b(e)?(this.b.Bc(e),!0):!1},s.gc=function(){return this.b.gc()},w(an,"Maps/KeySet",532),b(318,532,pu,Sw),s.$b=function(){var e;DE((e=this.b.vc().Kc(),new SG(this,e)))},s.Ic=function(e){return this.b.ec().Ic(e)},s.Fb=function(e){return this===e||tt(this.b.ec(),e)},s.Hb=function(){return mt(this.b.ec())},s.Kc=function(){var e;return e=this.b.vc().Kc(),new SG(this,e)},s.Mc=function(e){var t,i;return i=0,t=u(this.b.Bc(e),14),t&&(i=t.gc(),t.$b(),this.a.d-=i),i>0},s.Nc=function(){return this.b.ec().Nc()},w(an,"AbstractMapBasedMultimap/KeySet",318),b(731,1,ji,SG),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return this.c.Ob()},s.Pb=function(){return this.a=u(this.c.Pb(),42),this.a.cd()},s.Qb=function(){var e;Nw(!!this.a),e=u(this.a.dd(),14),this.c.Qb(),this.b.a.d-=e.gc(),e.$b(),this.a=null},w(an,"AbstractMapBasedMultimap/KeySet/1",731),b(491,389,{83:1,161:1},f8),s.bc=function(){return this.Sc()},s.ec=function(){return this.Tc()},s.Sc=function(){return new R9(this.c,this.Uc())},s.Tc=function(){var e;return e=this.b,e||(this.b=this.Sc())},s.Uc=function(){return u(this.d,161)},w(an,"AbstractMapBasedMultimap/SortedAsMap",491),b(542,491,G_n,mE),s.bc=function(){return new Jp(this.a,u(u(this.d,161),171))},s.Sc=function(){return new Jp(this.a,u(u(this.d,161),171))},s.ec=function(){var e;return e=this.b,u(e||(this.b=new Jp(this.a,u(u(this.d,161),171))),271)},s.Tc=function(){var e;return e=this.b,u(e||(this.b=new Jp(this.a,u(u(this.d,161),171))),271)},s.Uc=function(){return u(u(this.d,161),171)},w(an,"AbstractMapBasedMultimap/NavigableAsMap",542),b(490,318,z_n,R9),s.Nc=function(){return this.b.ec().Nc()},w(an,"AbstractMapBasedMultimap/SortedKeySet",490),b(388,490,WZ,Jp),w(an,"AbstractMapBasedMultimap/NavigableKeySet",388),b(541,28,Sb,IC),s.Fc=function(e){var t,i;return Fu(this),i=this.d.dc(),t=this.d.Fc(e),t&&(++this.f.d,i&&d8(this)),t},s.Gc=function(e){var t,i,r;return e.dc()?!1:(r=(Fu(this),this.d.gc()),t=this.d.Gc(e),t&&(i=this.d.gc(),this.f.d+=i-r,r==0&&d8(this)),t)},s.$b=function(){var e;e=(Fu(this),this.d.gc()),e!=0&&(this.d.$b(),this.f.d-=e,NE(this))},s.Hc=function(e){return Fu(this),this.d.Hc(e)},s.Ic=function(e){return Fu(this),this.d.Ic(e)},s.Fb=function(e){return e===this?!0:(Fu(this),tt(this.d,e))},s.Hb=function(){return Fu(this),mt(this.d)},s.Kc=function(){return Fu(this),new HU(this)},s.Mc=function(e){var t;return Fu(this),t=this.d.Mc(e),t&&(--this.f.d,NE(this)),t},s.gc=function(){return Rkn(this)},s.Nc=function(){return Fu(this),this.d.Nc()},s.Ib=function(){return Fu(this),Nr(this.d)},w(an,"AbstractMapBasedMultimap/WrappedCollection",541);var Ds=Ct(fe,"List");b(728,541,{20:1,28:1,14:1,15:1},pW),s.ad=function(e){Lw(this,e)},s.Nc=function(){return Fu(this),this.d.Nc()},s.Vc=function(e,t){var i;Fu(this),i=this.d.dc(),u(this.d,15).Vc(e,t),++this.a.d,i&&d8(this)},s.Wc=function(e,t){var i,r,c;return t.dc()?!1:(c=(Fu(this),this.d.gc()),i=u(this.d,15).Wc(e,t),i&&(r=this.d.gc(),this.a.d+=r-c,c==0&&d8(this)),i)},s.Xb=function(e){return Fu(this),u(this.d,15).Xb(e)},s.Xc=function(e){return Fu(this),u(this.d,15).Xc(e)},s.Yc=function(){return Fu(this),new vyn(this)},s.Zc=function(e){return Fu(this),new OTn(this,e)},s.$c=function(e){var t;return Fu(this),t=u(this.d,15).$c(e),--this.a.d,NE(this),t},s._c=function(e,t){return Fu(this),u(this.d,15)._c(e,t)},s.bd=function(e,t){return Fu(this),jAn(this.a,this.e,u(this.d,15).bd(e,t),this.b?this.b:this)},w(an,"AbstractMapBasedMultimap/WrappedList",728),b(1096,728,{20:1,28:1,14:1,15:1,54:1},ojn),w(an,"AbstractMapBasedMultimap/RandomAccessWrappedList",1096),b(620,1,ji,HU),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return m3(this),this.b.Ob()},s.Pb=function(){return m3(this),this.b.Pb()},s.Qb=function(){zyn(this)},w(an,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",620),b(729,620,lh,vyn,OTn),s.Qb=function(){zyn(this)},s.Rb=function(e){var t;t=Rkn(this.a)==0,(m3(this),u(this.b,125)).Rb(e),++this.a.a.d,t&&d8(this.a)},s.Sb=function(){return(m3(this),u(this.b,125)).Sb()},s.Tb=function(){return(m3(this),u(this.b,125)).Tb()},s.Ub=function(){return(m3(this),u(this.b,125)).Ub()},s.Vb=function(){return(m3(this),u(this.b,125)).Vb()},s.Wb=function(e){(m3(this),u(this.b,125)).Wb(e)},w(an,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",729),b(727,541,z_n,fU),s.Nc=function(){return Fu(this),this.d.Nc()},w(an,"AbstractMapBasedMultimap/WrappedSortedSet",727),b(1095,727,WZ,hyn),w(an,"AbstractMapBasedMultimap/WrappedNavigableSet",1095),b(1094,541,pu,jjn),s.Nc=function(){return Fu(this),this.d.Nc()},w(an,"AbstractMapBasedMultimap/WrappedSet",1094),b(1103,1,{},Ge),s.Kb=function(e){return Ede(u(e,42))},w(an,"AbstractMapBasedMultimap/lambda$1$Type",1103),b(1102,1,{},uvn),s.Kb=function(e){return new bd(this.a,e)},w(an,"AbstractMapBasedMultimap/lambda$2$Type",1102);var Ha=Ct(fe,"Map/Entry");b(345,1,PM),s.Fb=function(e){var t;return I(e,42)?(t=u(e,42),Ff(this.cd(),t.cd())&&Ff(this.dd(),t.dd())):!1},s.Hb=function(){var e,t;return e=this.cd(),t=this.dd(),(e==null?0:mt(e))^(t==null?0:mt(t))},s.ed=function(e){throw T(new ye)},s.Ib=function(){return this.cd()+"="+this.dd()},w(an,U_n,345),b(1988,28,Sb),s.$b=function(){this.fd().$b()},s.Hc=function(e){var t;return I(e,42)?(t=u(e,42),iae(this.fd(),t.cd(),t.dd())):!1},s.Mc=function(e){var t;return I(e,42)?(t=u(e,42),tAn(this.fd(),t.cd(),t.dd())):!1},s.gc=function(){return this.fd().d},w(an,"Multimaps/Entries",1988),b(733,1988,Sb,rq),s.Kc=function(){return this.a.kc()},s.fd=function(){return this.a},s.Nc=function(){return this.a.lc()},w(an,"AbstractMultimap/Entries",733),b(734,733,pu,rG),s.Nc=function(){return this.a.lc()},s.Fb=function(e){return ZJ(this,e)},s.Hb=function(){return iOn(this)},w(an,"AbstractMultimap/EntrySet",734),b(735,28,Sb,cq),s.$b=function(){this.a.$b()},s.Hc=function(e){return Kwe(this.a,e)},s.Kc=function(){return this.a.nc()},s.gc=function(){return this.a.d},s.Nc=function(){return this.a.oc()},w(an,"AbstractMultimap/Values",735),b(1989,28,{835:1,20:1,28:1,14:1}),s.Jc=function(e){pe(e),Iw(this).Jc(new yvn(e))},s.Nc=function(){var e;return e=Iw(this).Nc(),kx(e,new G1,64|e.qd()&1296,this.a.d)},s.Fc=function(e){return dG(),!0},s.Gc=function(e){return pe(this),pe(e),I(e,543)?oae(u(e,835)):!e.dc()&&_$(this,e.Kc())},s.Hc=function(e){var t;return t=u(ab(T2(this.a),e),14),(t?t.gc():0)>0},s.Fb=function(e){return e9e(this,e)},s.Hb=function(){return mt(Iw(this))},s.dc=function(){return Iw(this).dc()},s.Mc=function(e){return jLn(this,e,1)>0},s.Ib=function(){return Nr(Iw(this))},w(an,"AbstractMultiset",1989),b(1991,1970,pu),s.$b=function(){QC(this.a.a)},s.Hc=function(e){var t,i;return I(e,492)?(i=u(e,416),u(i.a.dd(),14).gc()<=0?!1:(t=DMn(this.a,i.a.cd()),t==u(i.a.dd(),14).gc())):!1},s.Mc=function(e){var t,i,r,c;return I(e,492)&&(i=u(e,416),t=i.a.cd(),r=u(i.a.dd(),14).gc(),r!=0)?(c=this.a,q6e(c,t,r)):!1},w(an,"Multisets/EntrySet",1991),b(1109,1991,pu,svn),s.Kc=function(){return new x9n(yCn(T2(this.a.a)).Kc())},s.gc=function(){return T2(this.a.a).gc()},w(an,"AbstractMultiset/EntrySet",1109),b(619,726,Da),s.hc=function(){return this.gd()},s.jc=function(){return this.hd()},s.cc=function(e){return this.jd(e)},s.fc=function(e){return this.kd(e)},s.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},s.hd=function(){return Pn(),Pn(),zA},s.Fb=function(e){return dF(this,e)},s.jd=function(e){return u(ct(this,e),21)},s.kd=function(e){return u(l7(this,e),21)},s.mc=function(e){return Pn(),new Wp(u(e,21))},s.pc=function(e,t){return new jjn(this,e,u(t,21))},w(an,"AbstractSetMultimap",619),b(1657,619,Da),s.hc=function(){return new Y1(this.b)},s.gd=function(){return new Y1(this.b)},s.jc=function(){return DW(new Y1(this.b))},s.hd=function(){return DW(new Y1(this.b))},s.cc=function(e){return u(u(ct(this,e),21),84)},s.jd=function(e){return u(u(ct(this,e),21),84)},s.fc=function(e){return u(u(l7(this,e),21),84)},s.kd=function(e){return u(u(l7(this,e),21),84)},s.mc=function(e){return I(e,271)?DW(u(e,271)):(Pn(),new Hz(u(e,84)))},s.Zb=function(){var e;return e=this.f,e||(this.f=I(this.c,171)?new mE(this,u(this.c,171)):I(this.c,161)?new f8(this,u(this.c,161)):new Yp(this,this.c))},s.pc=function(e,t){return I(t,271)?new hyn(this,e,u(t,271)):new fU(this,e,u(t,84))},w(an,"AbstractSortedSetMultimap",1657),b(1658,1657,Da),s.Zb=function(){var e;return e=this.f,u(u(e||(this.f=I(this.c,171)?new mE(this,u(this.c,171)):I(this.c,161)?new f8(this,u(this.c,161)):new Yp(this,this.c)),161),171)},s.ec=function(){var e;return e=this.i,u(u(e||(this.i=I(this.c,171)?new Jp(this,u(this.c,171)):I(this.c,161)?new R9(this,u(this.c,161)):new Sw(this,this.c)),84),271)},s.bc=function(){return I(this.c,171)?new Jp(this,u(this.c,171)):I(this.c,161)?new R9(this,u(this.c,161)):new Sw(this,this.c)},w(an,"AbstractSortedKeySortedSetMultimap",1658),b(2010,1,{1947:1}),s.Fb=function(e){return D4e(this,e)},s.Hb=function(){var e;return FV((e=this.g,e||(this.g=new MI(this))))},s.Ib=function(){var e;return cxn((e=this.f,e||(this.f=new Fz(this))))},w(an,"AbstractTable",2010),b(665,bf,pu,MI),s.$b=function(){z9n()},s.Hc=function(e){var t,i;return I(e,468)?(t=u(e,682),i=u(ab(GCn(this.a),el(t.c.e,t.b)),83),!!i&&fQ(i.vc(),new bd(el(t.c.c,t.a),D2(t.c,t.b,t.a)))):!1},s.Kc=function(){return g1e(this.a)},s.Mc=function(e){var t,i;return I(e,468)?(t=u(e,682),i=u(ab(GCn(this.a),el(t.c.e,t.b)),83),!!i&&bge(i.vc(),new bd(el(t.c.c,t.a),D2(t.c,t.b,t.a)))):!1},s.gc=function(){return tCn(this.a)},s.Nc=function(){return lae(this.a)},w(an,"AbstractTable/CellSet",665),b(1928,28,Sb,ovn),s.$b=function(){z9n()},s.Hc=function(e){return Eve(this.a,e)},s.Kc=function(){return p1e(this.a)},s.gc=function(){return tCn(this.a)},s.Nc=function(){return cAn(this.a)},w(an,"AbstractTable/Values",1928),b(1632,1631,Da),w(an,"ArrayListMultimapGwtSerializationDependencies",1632),b(513,1632,Da,JI,iX),s.hc=function(){return new Pc(this.a)},s.a=0,w(an,"ArrayListMultimap",513),b(664,2010,{664:1,1947:1,3:1},DLn),w(an,"ArrayTable",664),b(1924,386,C4,Ryn),s.Xb=function(e){return new BV(this.a,e)},w(an,"ArrayTable/1",1924),b(1925,1,{},evn),s.ld=function(e){return new BV(this.a,e)},w(an,"ArrayTable/1methodref$getCell$Type",1925),b(2011,1,{682:1}),s.Fb=function(e){var t;return e===this?!0:I(e,468)?(t=u(e,682),Ff(el(this.c.e,this.b),el(t.c.e,t.b))&&Ff(el(this.c.c,this.a),el(t.c.c,t.a))&&Ff(D2(this.c,this.b,this.a),D2(t.c,t.b,t.a))):!1},s.Hb=function(){return gT(A(M(Zn,1),rn,1,5,[el(this.c.e,this.b),el(this.c.c,this.a),D2(this.c,this.b,this.a)]))},s.Ib=function(){return"("+el(this.c.e,this.b)+","+el(this.c.c,this.a)+")="+D2(this.c,this.b,this.a)},w(an,"Tables/AbstractCell",2011),b(468,2011,{468:1,682:1},BV),s.a=0,s.b=0,s.d=0,w(an,"ArrayTable/2",468),b(1927,1,{},tvn),s.ld=function(e){return gPn(this.a,e)},w(an,"ArrayTable/2methodref$getValue$Type",1927),b(1926,386,C4,_yn),s.Xb=function(e){return gPn(this.a,e)},w(an,"ArrayTable/3",1926),b(1979,1967,r0),s.$b=function(){DE(this.kc())},s.vc=function(){return new Evn(this)},s.lc=function(){return new vTn(this.kc(),this.gc())},w(an,"Maps/IteratorBasedAbstractMap",1979),b(828,1979,r0),s.$b=function(){throw T(new ye)},s._b=function(e){return h8n(this.c,e)},s.kc=function(){return new Kyn(this,this.c.b.c.gc())},s.lc=function(){return gD(this.c.b.c.gc(),16,new ivn(this))},s.xc=function(e){var t;return t=u(M5(this.c,e),19),t?this.nd(t.a):null},s.dc=function(){return this.c.b.c.dc()},s.ec=function(){return CD(this.c)},s.zc=function(e,t){var i;if(i=u(M5(this.c,e),19),!i)throw T(new Hn(this.md()+" "+e+" not in "+CD(this.c)));return this.od(i.a,t)},s.Bc=function(e){throw T(new ye)},s.gc=function(){return this.c.b.c.gc()},w(an,"ArrayTable/ArrayMap",828),b(1923,1,{},ivn),s.ld=function(e){return UCn(this.a,e)},w(an,"ArrayTable/ArrayMap/0methodref$getEntry$Type",1923),b(1921,345,PM,G8n),s.cd=function(){return Dce(this.a,this.b)},s.dd=function(){return this.a.nd(this.b)},s.ed=function(e){return this.a.od(this.b,e)},s.b=0,w(an,"ArrayTable/ArrayMap/1",1921),b(1922,386,C4,Kyn),s.Xb=function(e){return UCn(this.a,e)},w(an,"ArrayTable/ArrayMap/2",1922),b(1920,828,r0,$Cn),s.md=function(){return"Column"},s.nd=function(e){return D2(this.b,this.a,e)},s.od=function(e,t){return HOn(this.b,this.a,e,t)},s.a=0,w(an,"ArrayTable/Row",1920),b(829,828,r0,Fz),s.nd=function(e){return new $Cn(this.a,e)},s.zc=function(e,t){return u(t,83),wie()},s.od=function(e,t){return u(t,83),gie()},s.md=function(){return"Row"},w(an,"ArrayTable/RowMap",829),b(1120,1,Gs,z8n),s.qd=function(){return this.a.qd()&-262},s.rd=function(){return this.a.rd()},s.Nb=function(e){this.a.Nb(new _8n(e,this.b))},s.sd=function(e){return this.a.sd(new R8n(e,this.b))},w(an,"CollectSpliterators/1",1120),b(1121,1,Yn,R8n),s.td=function(e){this.a.td(this.b.Kb(e))},w(an,"CollectSpliterators/1/lambda$0$Type",1121),b(1122,1,Yn,_8n),s.td=function(e){this.a.td(this.b.Kb(e))},w(an,"CollectSpliterators/1/lambda$1$Type",1122),b(1123,1,Gs,gAn),s.qd=function(){return this.a},s.rd=function(){return this.d&&(this.b=kyn(this.b,this.d.rd())),kyn(this.b,0)},s.Nb=function(e){this.d&&(this.d.Nb(e),this.d=null),this.c.Nb(new B8n(this.e,e)),this.b=0},s.sd=function(e){for(;;){if(this.d&&this.d.sd(e))return b5(this.b,IM)&&(this.b=vl(this.b,1)),!0;if(this.d=null,!this.c.sd(new K8n(this,this.e)))return!1}},s.a=0,s.b=0,w(an,"CollectSpliterators/1FlatMapSpliterator",1123),b(1124,1,Yn,K8n),s.td=function(e){xue(this.a,this.b,e)},w(an,"CollectSpliterators/1FlatMapSpliterator/lambda$0$Type",1124),b(1125,1,Yn,B8n),s.td=function(e){mce(this.b,this.a,e)},w(an,"CollectSpliterators/1FlatMapSpliterator/lambda$1$Type",1125),b(1117,1,Gs,Yjn),s.qd=function(){return 16464|this.b},s.rd=function(){return this.a.rd()},s.Nb=function(e){this.a.xe(new q8n(e,this.c))},s.sd=function(e){return this.a.ye(new H8n(e,this.c))},s.b=0,w(an,"CollectSpliterators/1WithCharacteristics",1117),b(1118,1,Z7,H8n),s.ud=function(e){this.a.td(this.b.ld(e))},w(an,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1118),b(1119,1,Z7,q8n),s.ud=function(e){this.a.td(this.b.ld(e))},w(an,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1119),b(245,1,TL),s.wd=function(e){return this.vd(u(e,245))},s.vd=function(e){var t;return e==(HI(),uR)?1:e==(qI(),cR)?-1:(t=(PE(),Y8(this.a,e.a)),t!=0?t:I(this,519)==I(e,519)?0:I(this,519)?1:-1)},s.zd=function(){return this.a},s.Fb=function(e){return KQ(this,e)},w(an,"Cut",245),b(1761,245,TL,X9n),s.vd=function(e){return e==this?0:1},s.xd=function(e){throw T(new _q)},s.yd=function(e){e.a+="+∞)"},s.zd=function(){throw T(new $r(X_n))},s.Hb=function(){return nh(),QQ(this)},s.Ad=function(e){return!1},s.Ib=function(){return"+∞"};var cR;w(an,"Cut/AboveAll",1761),b(519,245,{245:1,519:1,3:1,35:1},Uyn),s.xd=function(e){rc((e.a+="(",e),this.a)},s.yd=function(e){sl(rc(e,this.a),93)},s.Hb=function(){return~mt(this.a)},s.Ad=function(e){return PE(),Y8(this.a,e)<0},s.Ib=function(){return"/"+this.a+"\\"},w(an,"Cut/AboveValue",519),b(1760,245,TL,V9n),s.vd=function(e){return e==this?0:-1},s.xd=function(e){e.a+="(-∞"},s.yd=function(e){throw T(new _q)},s.zd=function(){throw T(new $r(X_n))},s.Hb=function(){return nh(),QQ(this)},s.Ad=function(e){return!0},s.Ib=function(){return"-∞"};var uR;w(an,"Cut/BelowAll",1760),b(1762,245,TL,Wyn),s.xd=function(e){rc((e.a+="[",e),this.a)},s.yd=function(e){sl(rc(e,this.a),41)},s.Hb=function(){return mt(this.a)},s.Ad=function(e){return PE(),Y8(this.a,e)<=0},s.Ib=function(){return"\\"+this.a+"/"},w(an,"Cut/BelowValue",1762),b(537,1,ah),s.Jc=function(e){$i(this,e)},s.Ib=function(){return Gge(u(tC(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},w(an,"FluentIterable",537),b(433,537,ah,p5),s.Kc=function(){return new re(ue(this.a.Kc(),new An))},w(an,"FluentIterable/2",433),b(1046,537,ah,Jkn),s.Kc=function(){return ul(this)},w(an,"FluentIterable/3",1046),b(708,386,C4,xz),s.Xb=function(e){return this.a[e].Kc()},w(an,"FluentIterable/3/1",708),b(1972,1,{}),s.Ib=function(){return Nr(this.Bd().b)},w(an,"ForwardingObject",1972),b(1973,1972,V_n),s.Bd=function(){return this.Cd()},s.Jc=function(e){$i(this,e)},s.Lc=function(){return this.Oc()},s.Nc=function(){return new xn(this,0)},s.Oc=function(){return new $n(null,this.Nc())},s.Fc=function(e){return this.Cd(),b8n()},s.Gc=function(e){return this.Cd(),w8n()},s.$b=function(){this.Cd(),g8n()},s.Hc=function(e){return this.Cd().Hc(e)},s.Ic=function(e){return this.Cd().Ic(e)},s.dc=function(){return this.Cd().b.dc()},s.Kc=function(){return this.Cd().Kc()},s.Mc=function(e){return this.Cd(),p8n()},s.gc=function(){return this.Cd().b.gc()},s.Pc=function(){return this.Cd().Pc()},s.Qc=function(e){return this.Cd().Qc(e)},w(an,"ForwardingCollection",1973),b(1980,28,XZ),s.Kc=function(){return this.Ed()},s.Fc=function(e){throw T(new ye)},s.Gc=function(e){throw T(new ye)},s.$b=function(){throw T(new ye)},s.Hc=function(e){return e!=null&&db(this,e,!1)},s.Dd=function(){switch(this.gc()){case 0:return nb(),nb(),sR;case 1:return nb(),new pD(pe(this.Ed().Pb()));default:return new FCn(this,this.Pc())}},s.Mc=function(e){throw T(new ye)},w(an,"ImmutableCollection",1980),b(712,1980,XZ,Bq),s.Kc=function(){return $2(this.a.Kc())},s.Hc=function(e){return e!=null&&this.a.Hc(e)},s.Ic=function(e){return this.a.Ic(e)},s.dc=function(){return this.a.dc()},s.Ed=function(){return $2(this.a.Kc())},s.gc=function(){return this.a.gc()},s.Pc=function(){return this.a.Pc()},s.Qc=function(e){return this.a.Qc(e)},s.Ib=function(){return Nr(this.a)},w(an,"ForwardingImmutableCollection",712),b(152,1980,x6),s.Kc=function(){return this.Ed()},s.Yc=function(){return this.Fd(0)},s.Zc=function(e){return this.Fd(e)},s.ad=function(e){Lw(this,e)},s.Nc=function(){return new xn(this,16)},s.bd=function(e,t){return this.Gd(e,t)},s.Vc=function(e,t){throw T(new ye)},s.Wc=function(e,t){throw T(new ye)},s.Fb=function(e){return Rme(this,e)},s.Hb=function(){return Qbe(this)},s.Xc=function(e){return e==null?-1:f3e(this,e)},s.Ed=function(){return this.Fd(0)},s.Fd=function(e){return Qz(this,e)},s.$c=function(e){throw T(new ye)},s._c=function(e,t){throw T(new ye)},s.Gd=function(e,t){var i;return mT((i=new t7n(this),new uh(i,e,t)))};var sR;w(an,"ImmutableList",152),b(2006,152,x6),s.Kc=function(){return $2(this.Hd().Kc())},s.bd=function(e,t){return mT(this.Hd().bd(e,t))},s.Hc=function(e){return e!=null&&this.Hd().Hc(e)},s.Ic=function(e){return this.Hd().Ic(e)},s.Fb=function(e){return tt(this.Hd(),e)},s.Xb=function(e){return el(this,e)},s.Hb=function(){return mt(this.Hd())},s.Xc=function(e){return this.Hd().Xc(e)},s.dc=function(){return this.Hd().dc()},s.Ed=function(){return $2(this.Hd().Kc())},s.gc=function(){return this.Hd().gc()},s.Gd=function(e,t){return mT(this.Hd().bd(e,t))},s.Pc=function(){return this.Hd().Qc(F(Zn,rn,1,this.Hd().gc(),5,1))},s.Qc=function(e){return this.Hd().Qc(e)},s.Ib=function(){return Nr(this.Hd())},w(an,"ForwardingImmutableList",2006),b(714,1,T4),s.vc=function(){return Ed(this)},s.wc=function(e){n6(this,e)},s.ec=function(){return CD(this)},s.yc=function(e,t,i){return IF(this,e,t,i)},s.Cc=function(){return this.Ld()},s.$b=function(){throw T(new ye)},s._b=function(e){return this.xc(e)!=null},s.uc=function(e){return this.Ld().Hc(e)},s.Jd=function(){return new Rmn(this)},s.Kd=function(){return new _mn(this)},s.Fb=function(e){return Hwe(this,e)},s.Hb=function(){return Ed(this).Hb()},s.dc=function(){return this.gc()==0},s.zc=function(e,t){return pie()},s.Bc=function(e){throw T(new ye)},s.Ib=function(){return k5e(this)},s.Ld=function(){return this.e?this.e:this.e=this.Kd()},s.c=null,s.d=null,s.e=null;var fzn;w(an,"ImmutableMap",714),b(715,714,T4),s._b=function(e){return h8n(this,e)},s.uc=function(e){return u7n(this.b,e)},s.Id=function(){return xDn(new fvn(this))},s.Jd=function(){return xDn(bTn(this.b))},s.Kd=function(){return $f(),new Bq(dTn(this.b))},s.Fb=function(e){return s7n(this.b,e)},s.xc=function(e){return M5(this,e)},s.Hb=function(){return mt(this.b.c)},s.dc=function(){return this.b.c.dc()},s.gc=function(){return this.b.c.gc()},s.Ib=function(){return Nr(this.b.c)},w(an,"ForwardingImmutableMap",715),b(1974,1973,ML),s.Bd=function(){return this.Md()},s.Cd=function(){return this.Md()},s.Nc=function(){return new xn(this,1)},s.Fb=function(e){return e===this||this.Md().Fb(e)},s.Hb=function(){return this.Md().Hb()},w(an,"ForwardingSet",1974),b(1069,1974,ML,fvn),s.Bd=function(){return p3(this.a.b)},s.Cd=function(){return p3(this.a.b)},s.Hc=function(e){if(I(e,42)&&u(e,42).cd()==null)return!1;try{return c7n(p3(this.a.b),e)}catch(t){if(t=jt(t),I(t,205))return!1;throw T(t)}},s.Md=function(){return p3(this.a.b)},s.Qc=function(e){var t;return t=VTn(p3(this.a.b),e),p3(this.a.b).b.gc()=0?"+":"")+(i/60|0),t=tE(y.Math.abs(i)%60),(wxn(),Tzn)[this.q.getDay()]+" "+Mzn[this.q.getMonth()]+" "+tE(this.q.getDate())+" "+tE(this.q.getHours())+":"+tE(this.q.getMinutes())+":"+tE(this.q.getSeconds())+" GMT"+e+t+" "+this.q.getFullYear()};var HA=w(fe,"Date",199);b(1915,199,rKn,HFn),s.a=!1,s.b=0,s.c=0,s.d=0,s.e=0,s.f=0,s.g=!1,s.i=0,s.j=0,s.k=0,s.n=0,s.o=0,s.p=0,w("com.google.gwt.i18n.shared.impl","DateRecord",1915),b(1966,1,{}),s.fe=function(){return null},s.ge=function(){return null},s.he=function(){return null},s.ie=function(){return null},s.je=function(){return null},w(Q2,"JSONValue",1966),b(216,1966,{216:1},na,sq),s.Fb=function(e){return I(e,216)?uX(this.a,u(e,216).a):!1},s.ee=function(){return Rte},s.Hb=function(){return WW(this.a)},s.fe=function(){return this},s.Ib=function(){var e,t,i;for(i=new Yu("["),t=0,e=this.a.length;t0&&(i.a+=","),rc(i,ub(this,t));return i.a+="]",i.a},w(Q2,"JSONArray",216),b(483,1966,{483:1},oq),s.ee=function(){return _te},s.ge=function(){return this},s.Ib=function(){return qn(),""+this.a},s.a=!1;var gzn,pzn;w(Q2,"JSONBoolean",483),b(985,60,Uh,L9n),w(Q2,"JSONException",985),b(1023,1966,{},ww),s.ee=function(){return zte},s.Ib=function(){return ru};var vzn;w(Q2,"JSONNull",1023),b(258,1966,{258:1},nj),s.Fb=function(e){return I(e,258)?this.a==u(e,258).a:!1},s.ee=function(){return Kte},s.Hb=function(){return i3(this.a)},s.he=function(){return this},s.Ib=function(){return this.a+""},s.a=0,w(Q2,"JSONNumber",258),b(183,1966,{183:1},r2,M9),s.Fb=function(e){return I(e,183)?uX(this.a,u(e,183).a):!1},s.ee=function(){return Hte},s.Hb=function(){return WW(this.a)},s.ie=function(){return this},s.Ib=function(){var e,t,i,r,c,o,f;for(f=new Yu("{"),e=!0,o=Z$(this,F(tn,q,2,0,6,1)),i=o,r=0,c=i.length;r=0?":"+this.c:"")+")"},s.c=0;var Ain=w(Ur,"StackTraceElement",310);ozn={3:1,475:1,35:1,2:1};var tn=w(Ur,VZ,2);b(107,418,{475:1},i1,zv,Bs),w(Ur,"StringBuffer",107),b(100,418,{475:1},V1,R0,Yu),w(Ur,"StringBuilder",100),b(687,73,VL,wG),w(Ur,"StringIndexOutOfBoundsException",687),b(2043,1,{});var Sin;b(844,1,{},cln),s.Kb=function(e){return u(e,78).e},w(Ur,"Throwable/lambda$0$Type",844),b(41,60,{3:1,102:1,60:1,78:1,41:1},ye,t1),w(Ur,"UnsupportedOperationException",41),b(240,236,{3:1,35:1,236:1,240:1},W8,CG),s.wd=function(e){return VBn(this,u(e,240))},s.ke=function(){return kb(ORn(this))},s.Fb=function(e){var t;return this===e?!0:I(e,240)?(t=u(e,240),this.e==t.e&&VBn(this,t)==0):!1},s.Hb=function(){var e;return this.b!=0?this.b:this.a<54?(e=tu(this.f),this.b=ge(ui(e,-1)),this.b=33*this.b+ge(ui(cl(e,32),-1)),this.b=17*this.b+Gt(this.e),this.b):(this.b=17*PDn(this.c)+Gt(this.e),this.b)},s.Ib=function(){return ORn(this)},s.a=0,s.b=0,s.d=0,s.e=0,s.f=0;var jzn,Ga,Pin,Iin,Oin,Din,$in,Fin,wR=w("java.math","BigDecimal",240);b(91,236,{3:1,35:1,236:1,91:1},VQ,l1,Pw,OJ,D$n,il),s.wd=function(e){return A$n(this,u(e,91))},s.ke=function(){return kb(jL(this,0))},s.Fb=function(e){return SQ(this,e)},s.Hb=function(){return PDn(this)},s.Ib=function(){return jL(this,0)},s.b=-2,s.c=0,s.d=0,s.e=0;var gR,qA,xin,pR,GA,W4,vg=w("java.math","BigInteger",91),Ezn,Czn,fp,wm;b(488,1967,r0),s.$b=function(){Cu(this)},s._b=function(e){return Uu(this,e)},s.uc=function(e){return dDn(this,e,this.g)||dDn(this,e,this.f)},s.vc=function(){return new ta(this)},s.xc=function(e){return te(this,e)},s.zc=function(e,t){return it(this,e,t)},s.Bc=function(e){return O2(this,e)},s.gc=function(){return Xv(this)},w(fe,"AbstractHashMap",488),b(261,bf,pu,ta),s.$b=function(){this.a.$b()},s.Hc=function(e){return lAn(this,e)},s.Kc=function(){return new Ea(this.a)},s.Mc=function(e){var t;return lAn(this,e)?(t=u(e,42).cd(),this.a.Bc(t),!0):!1},s.gc=function(){return this.a.gc()},w(fe,"AbstractHashMap/EntrySet",261),b(262,1,ji,Ea),s.Nb=function(e){Oi(this,e)},s.Pb=function(){return Nd(this)},s.Ob=function(){return this.b},s.Qb=function(){oPn(this)},s.b=!1,w(fe,"AbstractHashMap/EntrySetIterator",262),b(417,1,ji,$v),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return G9(this)},s.Pb=function(){return $Tn(this)},s.Qb=function(){Wu(this)},s.b=0,s.c=-1,w(fe,"AbstractList/IteratorImpl",417),b(96,417,lh,Pi),s.Qb=function(){Wu(this)},s.Rb=function(e){X0(this,e)},s.Sb=function(){return this.b>0},s.Tb=function(){return this.b},s.Ub=function(){return ne(this.b>0),this.a.Xb(this.c=--this.b)},s.Vb=function(){return this.b-1},s.Wb=function(e){z0(this.c!=-1),this.a._c(this.c,e)},w(fe,"AbstractList/ListIteratorImpl",96),b(219,52,A4,uh),s.Vc=function(e,t){tb(e,this.b),this.c.Vc(this.a+e,t),++this.b},s.Xb=function(e){return Ln(e,this.b),this.c.Xb(this.a+e)},s.$c=function(e){var t;return Ln(e,this.b),t=this.c.$c(this.a+e),--this.b,t},s._c=function(e,t){return Ln(e,this.b),this.c._c(this.a+e,t)},s.gc=function(){return this.b},s.a=0,s.b=0,w(fe,"AbstractList/SubList",219),b(384,bf,pu,Rp),s.$b=function(){this.a.$b()},s.Hc=function(e){return this.a._b(e)},s.Kc=function(){var e;return e=this.a.vc().Kc(),new bq(e)},s.Mc=function(e){return this.a._b(e)?(this.a.Bc(e),!0):!1},s.gc=function(){return this.a.gc()},w(fe,"AbstractMap/1",384),b(691,1,ji,bq),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return this.a.Ob()},s.Pb=function(){var e;return e=u(this.a.Pb(),42),e.cd()},s.Qb=function(){this.a.Qb()},w(fe,"AbstractMap/1/1",691),b(226,28,Sb,Mh),s.$b=function(){this.a.$b()},s.Hc=function(e){return this.a.uc(e)},s.Kc=function(){var e;return e=this.a.vc().Kc(),new L0(e)},s.gc=function(){return this.a.gc()},w(fe,"AbstractMap/2",226),b(294,1,ji,L0),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return this.a.Ob()},s.Pb=function(){var e;return e=u(this.a.Pb(),42),e.dd()},s.Qb=function(){this.a.Qb()},w(fe,"AbstractMap/2/1",294),b(484,1,{484:1,42:1}),s.Fb=function(e){var t;return I(e,42)?(t=u(e,42),pc(this.d,t.cd())&&pc(this.e,t.dd())):!1},s.cd=function(){return this.d},s.dd=function(){return this.e},s.Hb=function(){return Tw(this.d)^Tw(this.e)},s.ed=function(e){return gU(this,e)},s.Ib=function(){return this.d+"="+this.e},w(fe,"AbstractMap/AbstractEntry",484),b(383,484,{484:1,383:1,42:1},Nj),w(fe,"AbstractMap/SimpleEntry",383),b(1984,1,ZL),s.Fb=function(e){var t;return I(e,42)?(t=u(e,42),pc(this.cd(),t.cd())&&pc(this.dd(),t.dd())):!1},s.Hb=function(){return Tw(this.cd())^Tw(this.dd())},s.Ib=function(){return this.cd()+"="+this.dd()},w(fe,U_n,1984),b(1992,1967,G_n),s.tc=function(e){return mSn(this,e)},s._b=function(e){return cD(this,e)},s.vc=function(){return new mq(this)},s.xc=function(e){var t;return t=e,Vr(VV(this,t))},s.ec=function(){return new P9(this)},w(fe,"AbstractNavigableMap",1992),b(739,bf,pu,mq),s.Hc=function(e){return I(e,42)&&mSn(this.b,u(e,42))},s.Kc=function(){return new T5(this.b)},s.Mc=function(e){var t;return I(e,42)?(t=u(e,42),uPn(this.b,t)):!1},s.gc=function(){return this.b.c},w(fe,"AbstractNavigableMap/EntrySet",739),b(493,bf,WZ,P9),s.Nc=function(){return new xj(this)},s.$b=function(){Kv(this.a)},s.Hc=function(e){return cD(this.a,e)},s.Kc=function(){var e;return e=new T5(new j5(this.a).b),new I9(e)},s.Mc=function(e){return cD(this.a,e)?(R5(this.a,e),!0):!1},s.gc=function(){return this.a.c},w(fe,"AbstractNavigableMap/NavigableKeySet",493),b(494,1,ji,I9),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return G9(this.a.a)},s.Pb=function(){var e;return e=pE(this.a),e.cd()},s.Qb=function(){fEn(this.a)},w(fe,"AbstractNavigableMap/NavigableKeySet/1",494),b(2004,28,Sb),s.Fc=function(e){return M3(f4(this,e)),!0},s.Gc=function(e){return _n(e),TE(e!=this,"Can't add a queue to itself"),Vi(this,e)},s.$b=function(){for(;K$(this)!=null;);},w(fe,"AbstractQueue",2004),b(302,28,{4:1,20:1,28:1,14:1},gw,LMn),s.Fc=function(e){return bX(this,e),!0},s.$b=function(){kX(this)},s.Hc=function(e){return LOn(new B5(this),e)},s.dc=function(){return Hv(this)},s.Kc=function(){return new B5(this)},s.Mc=function(e){return ele(new B5(this),e)},s.gc=function(){return this.c-this.b&this.a.length-1},s.Nc=function(){return new xn(this,272)},s.Qc=function(e){var t;return t=this.c-this.b&this.a.length-1,e.lengtht&&St(e,t,null),e},s.b=0,s.c=0,w(fe,"ArrayDeque",302),b(446,1,ji,B5),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return this.a!=this.b},s.Pb=function(){return vT(this)},s.Qb=function(){FIn(this)},s.a=0,s.b=0,s.c=-1,w(fe,"ArrayDeque/IteratorImpl",446),b(12,52,sKn,X,Pc,du),s.Vc=function(e,t){Q0(this,e,t)},s.Fc=function(e){return W(this,e)},s.Wc=function(e,t){return eQ(this,e,t)},s.Gc=function(e){return Zt(this,e)},s.$b=function(){this.c=F(Zn,rn,1,0,5,1)},s.Hc=function(e){return xr(this,e,0)!=-1},s.Jc=function(e){Zc(this,e)},s.Xb=function(e){return un(this,e)},s.Xc=function(e){return xr(this,e,0)},s.dc=function(){return this.c.length==0},s.Kc=function(){return new E(this)},s.$c=function(e){return h1(this,e)},s.Mc=function(e){return Jc(this,e)},s.Ud=function(e,t){xMn(this,e,t)},s._c=function(e,t){return Es(this,e,t)},s.gc=function(){return this.c.length},s.ad=function(e){wi(this,e)},s.Pc=function(){return XO(this)},s.Qc=function(e){return af(this,e)};var RTe=w(fe,"ArrayList",12);b(7,1,ji,E),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return Kr(this)},s.Pb=function(){return j(this)},s.Qb=function(){F5(this)},s.a=0,s.b=-1,w(fe,"ArrayList/1",7),b(2013,y.Function,{},zy),s.te=function(e,t){return ni(e,t)},b(154,52,oKn,Hu),s.Hc=function(e){return LIn(this,e)!=-1},s.Jc=function(e){var t,i,r,c;for(_n(e),i=this.a,r=0,c=i.length;r>>0,e.toString(16)))},s.f=0,s.i=Qt;var VA=w(wh,"CNode",57);b(814,1,{},Vq),w(wh,"CNode/CNodeBuilder",814);var _zn;b(1525,1,{},Tln),s.Oe=function(e,t){return 0},s.Pe=function(e,t){return 0},w(wh,gKn,1525),b(1790,1,{},Mln),s.Le=function(e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C;for(a=Ft,r=new E(e.a.b);r.ar.d.c||r.d.c==o.d.c&&r.d.b0?e+this.n.d+this.n.a:0},s.Se=function(){var e,t,i,r,c;if(c=0,this.e)this.b?c=this.b.a:this.a[1][1]&&(c=this.a[1][1].Se());else if(this.g)c=EQ(this,lx(this,null,!0));else for(t=(_o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])),i=0,r=t.length;i0?c+this.n.b+this.n.c:0},s.Te=function(){var e,t,i,r,c;if(this.g)for(e=lx(this,null,!1),i=(_o(),A(M(_b,1),z,232,0,[Zr,Fc,nc])),r=0,c=i.length;r0&&(r[0]+=this.d,i-=r[0]),r[2]>0&&(r[2]+=this.d,i-=r[2]),this.c.a=y.Math.max(0,i),this.c.d=t.d+e.d+(this.c.a-i)/2,r[1]=y.Math.max(r[1],i),AX(this,Fc,t.d+e.d+r[0]-(r[1]-i)/2,r)},s.b=null,s.d=0,s.e=!1,s.f=!1,s.g=!1;var CR=0,QA=0;w(Fa,"GridContainerCell",1473),b(461,22,{3:1,35:1,22:1,461:1},oO);var Ol,Vf,Co,Qzn=Me(Fa,"HorizontalLabelAlignment",461,Ie,gle,nse),Jzn;b(306,212,{212:1,306:1},tMn,fIn,ZTn),s.Re=function(){return _En(this)},s.Se=function(){return nW(this)},s.a=0,s.c=!1;var VTe=w(Fa,"LabelCell",306);b(244,326,{212:1,326:1,244:1},l6),s.Re=function(){return $7(this)},s.Se=function(){return F7(this)},s.Te=function(){tL(this)},s.Ue=function(){iL(this)},s.b=0,s.c=0,s.d=!1,w(Fa,"StripContainerCell",244),b(1626,1,Ve,$ln),s.Mb=function(e){return die(u(e,212))},w(Fa,"StripContainerCell/lambda$0$Type",1626),b(1627,1,{},Fln),s.Fe=function(e){return u(e,212).Se()},w(Fa,"StripContainerCell/lambda$1$Type",1627),b(1628,1,Ve,xln),s.Mb=function(e){return bie(u(e,212))},w(Fa,"StripContainerCell/lambda$2$Type",1628),b(1629,1,{},Lln),s.Fe=function(e){return u(e,212).Re()},w(Fa,"StripContainerCell/lambda$3$Type",1629),b(462,22,{3:1,35:1,22:1,462:1},fO);var To,Dl,Wo,Yzn=Me(Fa,"VerticalLabelAlignment",462,Ie,ple,ese),Zzn;b(789,1,{},NZ),s.c=0,s.d=0,s.k=0,s.s=0,s.t=0,s.v=!1,s.w=0,s.D=!1,w(LM,"NodeContext",789),b(1471,1,lt,Nln),s.ue=function(e,t){return tyn(u(e,61),u(t,61))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(LM,"NodeContext/0methodref$comparePortSides$Type",1471),b(1472,1,lt,Bln),s.ue=function(e,t){return Kve(u(e,111),u(t,111))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(LM,"NodeContext/1methodref$comparePortContexts$Type",1472),b(159,22,{3:1,35:1,22:1,159:1},Ms);var nUn,eUn,tUn,iUn,rUn,cUn,uUn,sUn,oUn,fUn,hUn,lUn,aUn,dUn,bUn,wUn,gUn,pUn,vUn,mUn,kUn,TR,yUn=Me(LM,"NodeLabelLocation",159,Ie,qF,tse),jUn;b(111,1,{111:1},xLn),s.a=!1,w(LM,"PortContext",111),b(1476,1,Yn,Rln),s.td=function(e){y8n(u(e,306))},w(sk,PKn,1476),b(1477,1,Ve,_ln),s.Mb=function(e){return!!u(e,111).c},w(sk,IKn,1477),b(1478,1,Yn,Kln),s.td=function(e){y8n(u(e,111).c)},w(sk,"LabelPlacer/lambda$2$Type",1478);var prn;b(1475,1,Yn,qln),s.td=function(e){W0(),Wte(u(e,111))},w(sk,"NodeLabelAndSizeUtilities/lambda$0$Type",1475),b(790,1,Yn,$U),s.td=function(e){cre(this.b,this.c,this.a,u(e,181))},s.a=!1,s.c=!1,w(sk,"NodeLabelCellCreator/lambda$0$Type",790),b(1474,1,Yn,i5n),s.td=function(e){Qte(this.a,u(e,181))},w(sk,"PortContextCreator/lambda$0$Type",1474);var JA;b(1829,1,{},Gln),w(O4,"GreedyRectangleStripOverlapRemover",1829),b(1830,1,lt,Hln),s.ue=function(e,t){return Nce(u(e,222),u(t,222))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(O4,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1830),b(1786,1,{},Zmn),s.a=5,s.e=0,w(O4,"RectangleStripOverlapRemover",1786),b(1787,1,lt,Uln),s.ue=function(e,t){return Bce(u(e,222),u(t,222))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(O4,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1787),b(1789,1,lt,Wln),s.ue=function(e,t){return ohe(u(e,222),u(t,222))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(O4,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1789),b(406,22,{3:1,35:1,22:1,406:1},_j);var Ik,MR,AR,Ok,EUn=Me(O4,"RectangleStripOverlapRemover/OverlapRemovalDirection",406,Ie,gae,ise),CUn;b(222,1,{222:1},jD),w(O4,"RectangleStripOverlapRemover/RectangleNode",222),b(1788,1,Yn,r5n),s.td=function(e){a3e(this.a,u(e,222))},w(O4,"RectangleStripOverlapRemover/lambda$1$Type",1788),b(1304,1,lt,Xln),s.ue=function(e,t){return vje(u(e,167),u(t,167))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Kf,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1304),b(1307,1,{},Vln),s.Kb=function(e){return u(e,324).a},w(Kf,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1307),b(1308,1,Ve,Qln),s.Mb=function(e){return u(e,323).a},w(Kf,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1308),b(1309,1,Ve,Jln),s.Mb=function(e){return u(e,323).a},w(Kf,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1309),b(1302,1,lt,Yln),s.ue=function(e,t){return Y7e(u(e,167),u(t,167))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Kf,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1302),b(1305,1,{},zln),s.Kb=function(e){return u(e,324).a},w(Kf,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1305),b(767,1,lt,xH),s.ue=function(e,t){return nwe(u(e,167),u(t,167))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Kf,"PolyominoCompactor/MinNumOfExtensionsComparator",767),b(1300,1,lt,Zln),s.ue=function(e,t){return fbe(u(e,321),u(t,321))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Kf,"PolyominoCompactor/MinPerimeterComparator",1300),b(1301,1,lt,nan),s.ue=function(e,t){return Rpe(u(e,321),u(t,321))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Kf,"PolyominoCompactor/MinPerimeterComparatorWithShape",1301),b(1303,1,lt,ean),s.ue=function(e,t){return yke(u(e,167),u(t,167))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Kf,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1303),b(1306,1,{},tan),s.Kb=function(e){return u(e,324).a},w(Kf,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1306),b(777,1,{},_G),s.Ce=function(e,t){return aae(this,u(e,46),u(t,167))},w(Kf,"SuccessorCombination",777),b(644,1,{},wI),s.Ce=function(e,t){var i;return eme((i=u(e,46),u(t,167),i))},w(Kf,"SuccessorJitter",644),b(643,1,{},gI),s.Ce=function(e,t){var i;return q8e((i=u(e,46),u(t,167),i))},w(Kf,"SuccessorLineByLine",643),b(568,1,{},Uy),s.Ce=function(e,t){var i;return t9e((i=u(e,46),u(t,167),i))},w(Kf,"SuccessorManhattan",568),b(1356,1,{},ian),s.Ce=function(e,t){var i;return d8e((i=u(e,46),u(t,167),i))},w(Kf,"SuccessorMaxNormWindingInMathPosSense",1356),b(400,1,{},Hp),s.Ce=function(e,t){return SW(this,e,t)},s.c=!1,s.d=!1,s.e=!1,s.f=!1,w(Kf,"SuccessorQuadrantsGeneric",400),b(1357,1,{},ran),s.Kb=function(e){return u(e,324).a},w(Kf,"SuccessorQuadrantsGeneric/lambda$0$Type",1357),b(323,22,{3:1,35:1,22:1,323:1},Rj),s.a=!1;var Dk,$k,Fk,xk,TUn=Me(BM,bnn,323,Ie,mae,rse),MUn;b(1298,1,{}),s.Ib=function(){var e,t,i,r,c,o;for(i=" ",e=Q(0),c=0;c=0?"b"+e+"["+k$(this.a)+"]":"b["+k$(this.a)+"]"):"b_"+md(this)},w(fk,"FBendpoint",559),b(282,134,{3:1,282:1,94:1,134:1},Ljn),s.Ib=function(){return k$(this)},w(fk,"FEdge",282),b(231,134,{3:1,231:1,94:1,134:1},TC);var JTe=w(fk,"FGraph",231);b(447,357,{3:1,447:1,357:1,94:1,134:1},RAn),s.Ib=function(){return this.b==null||this.b.length==0?"l["+k$(this.a)+"]":"l_"+this.b},w(fk,"FLabel",447),b(144,357,{3:1,144:1,357:1,94:1,134:1},VCn),s.Ib=function(){return cX(this)},s.b=0,w(fk,"FNode",144),b(2003,1,{}),s.bf=function(e){gZ(this,e)},s.cf=function(){vFn(this)},s.d=0,w(Cnn,"AbstractForceModel",2003),b(631,2003,{631:1},SOn),s.af=function(e,t){var i,r,c,o,f;return bLn(this.f,e,t),c=yi(Qr(t.d),e.d),f=y.Math.sqrt(c.a*c.a+c.b*c.b),r=y.Math.max(0,f-L5(e.e)/2-L5(t.e)/2),i=rDn(this.e,e,t),i>0?o=-che(r,this.c)*i:o=Jce(r,this.b)*u(k(e,(Go(),Q4)),19).a,Of(c,o/f),c},s.bf=function(e){gZ(this,e),this.a=u(k(e,(Go(),iS)),19).a,this.c=K(Y(k(e,rS))),this.b=K(Y(k(e,FR)))},s.df=function(e){return e0&&(o-=fie(r,this.a)*i),Of(c,o*this.b/f),c},s.bf=function(e){var t,i,r,c,o,f,h;for(gZ(this,e),this.b=K(Y(k(e,(Go(),xR)))),this.c=this.b/u(k(e,iS),19).a,r=e.e.c.length,o=0,c=0,h=new E(e.e);h.a0},s.a=0,s.b=0,s.c=0,w(Cnn,"FruchtermanReingoldModel",632),b(849,1,zs,f4n),s.Qe=function(e){En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,KM),""),"Force Model"),"Determines the model for force calculation."),Mrn),(y1(),Nt)),Arn),Cn((Ho(),Xn))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Tnn),""),"Iterations"),"The number of iterations on the force model."),Q(300)),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Mnn),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),Q(0)),sc),Wi),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,yN),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),Hf),Dr),Ai),Cn(Xn)))),Ti(e,yN,KM,UUn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,jN),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),Dr),Ai),Cn(Xn)))),Ti(e,jN,KM,qUn),w_n((new h4n,e))};var _Un,KUn,Mrn,HUn,qUn,GUn,zUn,UUn;w(H6,"ForceMetaDataProvider",849),b(424,22,{3:1,35:1,22:1,424:1},GG);var $R,tS,Arn=Me(H6,"ForceModelStrategy",424,Ie,z1e,sse),WUn;b(988,1,zs,h4n),s.Qe=function(e){w_n(e)};var XUn,VUn,Srn,iS,Prn,QUn,JUn,YUn,Irn,ZUn,Orn,Drn,nWn,Q4,eWn,FR,$rn,tWn,iWn,rS,xR;w(H6,"ForceOptions",988),b(989,1,{},van),s.$e=function(){var e;return e=new Uq,e},s._e=function(e){},w(H6,"ForceOptions/ForceFactory",989);var Bk,vm,hp,cS;b(850,1,zs,l4n),s.Qe=function(e){En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Snn),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(qn(),!1)),(y1(),_i)),oi),Cn((Ho(),vi))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Pnn),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),Dr),Ai),pt(Xn,A(M($1,1),z,175,0,[Zf]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Inn),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),Frn),Nt),Krn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Onn),""),"Stress Epsilon"),"Termination criterion for the iterative process."),Hf),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Dnn),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),Q(nt)),sc),Wi),Cn(Xn)))),ZRn((new a4n,e))};var rWn,cWn,Frn,uWn,sWn,oWn;w(H6,"StressMetaDataProvider",850),b(992,1,zs,a4n),s.Qe=function(e){ZRn(e)};var uS,xrn,Lrn,Nrn,Brn,Rrn,fWn,hWn,lWn,aWn,_rn,dWn;w(H6,"StressOptions",992),b(993,1,{},man),s.$e=function(){var e;return e=new Njn,e},s._e=function(e){},w(H6,"StressOptions/StressFactory",993),b(1128,209,xa,Njn),s.Ze=function(e,t){var i,r,c,o,f;for(le(t,HKn,1),on(sn(hn(e,(C7(),Brn))))?on(sn(hn(e,_rn)))||oC((i=new O9((K0(),new N0(e))),i)):kNn(new Uq,e,kc(t,1)),c=QOn(e),r=fRn(this.a,c),f=r.Kc();f.Ob();)o=u(f.Pb(),231),!(o.e.c.length<=1)&&(gje(this.b,o),Xme(this.b),Zc(o.d,new kan));c=j_n(r),m_n(c),ce(t)},w(GM,"StressLayoutProvider",1128),b(1129,1,Yn,kan),s.td=function(e){EZ(u(e,447))},w(GM,"StressLayoutProvider/lambda$0$Type",1129),b(990,1,{},Umn),s.c=0,s.e=0,s.g=0,w(GM,"StressMajorization",990),b(379,22,{3:1,35:1,22:1,379:1},hO);var LR,NR,BR,Krn=Me(GM,"StressMajorization/Dimension",379,Ie,mle,ose),bWn;b(991,1,lt,o5n),s.ue=function(e,t){return Bue(this.a,u(e,144),u(t,144))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(GM,"StressMajorization/lambda$0$Type",991),b(1229,1,{},YMn),w(rp,"ElkLayered",1229),b(1230,1,Yn,yan),s.td=function(e){V6e(u(e,37))},w(rp,"ElkLayered/lambda$0$Type",1230),b(1231,1,Yn,f5n),s.td=function(e){Rue(this.a,u(e,37))},w(rp,"ElkLayered/lambda$1$Type",1231),b(1263,1,{},Cyn);var wWn,gWn,pWn;w(rp,"GraphConfigurator",1263),b(759,1,Yn,Sq),s.td=function(e){Mxn(this.a,u(e,10))},w(rp,"GraphConfigurator/lambda$0$Type",759),b(760,1,{},NH),s.Kb=function(e){return kJ(),new $n(null,new xn(u(e,29).a,16))},w(rp,"GraphConfigurator/lambda$1$Type",760),b(761,1,Yn,Pq),s.td=function(e){Mxn(this.a,u(e,10))},w(rp,"GraphConfigurator/lambda$2$Type",761),b(1127,209,xa,Vmn),s.Ze=function(e,t){var i;i=Nye(new e9n,e),B(hn(e,(nn(),Vb)))===B((_h(),F1))?w2e(this.a,i,t):lme(this.a,i,t),b_n(new b4n,i)},w(rp,"LayeredLayoutProvider",1127),b(356,22,{3:1,35:1,22:1,356:1},U9);var Qf,$l,Hc,Cc,Or,Hrn=Me(rp,"LayeredPhases",356,Ie,tde,fse),vWn;b(1651,1,{},NIn),s.i=0;var mWn;w(ak,"ComponentsToCGraphTransformer",1651);var kWn;b(1652,1,{},jan),s.ef=function(e,t){return y.Math.min(e.a!=null?K(e.a):e.c.i,t.a!=null?K(t.a):t.c.i)},s.ff=function(e,t){return y.Math.min(e.a!=null?K(e.a):e.c.i,t.a!=null?K(t.a):t.c.i)},w(ak,"ComponentsToCGraphTransformer/1",1652),b(81,1,{81:1}),s.i=0,s.k=!0,s.o=Qt;var RR=w(z6,"CNode",81);b(460,81,{460:1,81:1},zz,UQ),s.Ib=function(){return""},w(ak,"ComponentsToCGraphTransformer/CRectNode",460),b(1623,1,{},Ean);var _R,KR;w(ak,"OneDimensionalComponentsCompaction",1623),b(1624,1,{},Can),s.Kb=function(e){return hle(u(e,46))},s.Fb=function(e){return this===e},w(ak,"OneDimensionalComponentsCompaction/lambda$0$Type",1624),b(1625,1,{},Tan),s.Kb=function(e){return E2e(u(e,46))},s.Fb=function(e){return this===e},w(ak,"OneDimensionalComponentsCompaction/lambda$1$Type",1625),b(1654,1,{},XCn),w(z6,"CGraph",1654),b(189,1,{189:1},_F),s.b=0,s.c=0,s.e=0,s.g=!0,s.i=Qt,w(z6,"CGroup",189),b(1653,1,{},Pan),s.ef=function(e,t){return y.Math.max(e.a!=null?K(e.a):e.c.i,t.a!=null?K(t.a):t.c.i)},s.ff=function(e,t){return y.Math.max(e.a!=null?K(e.a):e.c.i,t.a!=null?K(t.a):t.c.i)},w(z6,gKn,1653),b(1655,1,{},ALn),s.d=!1;var yWn,HR=w(z6,mKn,1655);b(1656,1,{},Ian),s.Kb=function(e){return OG(),qn(),u(u(e,46).a,81).d.e!=0},s.Fb=function(e){return this===e},w(z6,kKn,1656),b(823,1,{},eW),s.a=!1,s.b=!1,s.c=!1,s.d=!1,w(z6,yKn,823),b(1825,1,{},aCn),w(zM,jKn,1825);var Rk=Ct(Na,bKn);b(1826,1,{369:1},qTn),s.Ke=function(e){r7e(this,u(e,466))},w(zM,EKn,1826),b(1827,1,lt,Oan),s.ue=function(e,t){return r1e(u(e,81),u(t,81))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(zM,CKn,1827),b(466,1,{466:1},UG),s.a=!1,w(zM,TKn,466),b(1828,1,lt,Dan),s.ue=function(e,t){return g4e(u(e,466),u(t,466))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(zM,MKn,1828),b(140,1,{140:1},t3,QU),s.Fb=function(e){var t;return e==null||YTe!=$u(e)?!1:(t=u(e,140),pc(this.c,t.c)&&pc(this.d,t.d))},s.Hb=function(){return gT(A(M(Zn,1),rn,1,5,[this.c,this.d]))},s.Ib=function(){return"("+this.c+Ji+this.d+(this.a?"cx":"")+this.b+")"},s.a=!0,s.c=0,s.d=0;var YTe=w(Na,"Point",140);b(405,22,{3:1,35:1,22:1,405:1},Kj);var b0,Kb,kg,Hb,jWn=Me(Na,"Point/Quadrant",405,Ie,kae,hse),EWn;b(1642,1,{},Qmn),s.b=null,s.c=null,s.d=null,s.e=null,s.f=null;var CWn,TWn,MWn,AWn,SWn;w(Na,"RectilinearConvexHull",1642),b(574,1,{369:1},LT),s.Ke=function(e){i0e(this,u(e,140))},s.b=0;var qrn;w(Na,"RectilinearConvexHull/MaximalElementsEventHandler",574),b(1644,1,lt,Aan),s.ue=function(e,t){return Whe(Y(e),Y(t))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Na,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1644),b(1643,1,{369:1},uIn),s.Ke=function(e){p8e(this,u(e,140))},s.a=0,s.b=null,s.c=null,s.d=null,s.e=null,w(Na,"RectilinearConvexHull/RectangleEventHandler",1643),b(1645,1,lt,San),s.ue=function(e,t){return Qle(u(e,140),u(t,140))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Na,"RectilinearConvexHull/lambda$0$Type",1645),b(1646,1,lt,Man),s.ue=function(e,t){return Jle(u(e,140),u(t,140))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Na,"RectilinearConvexHull/lambda$1$Type",1646),b(1647,1,lt,$an),s.ue=function(e,t){return Zle(u(e,140),u(t,140))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Na,"RectilinearConvexHull/lambda$2$Type",1647),b(1648,1,lt,Fan),s.ue=function(e,t){return Yle(u(e,140),u(t,140))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Na,"RectilinearConvexHull/lambda$3$Type",1648),b(1649,1,lt,xan),s.ue=function(e,t){return e5e(u(e,140),u(t,140))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Na,"RectilinearConvexHull/lambda$4$Type",1649),b(1650,1,{},kMn),w(Na,"Scanline",1650),b(2005,1,{}),w(qf,"AbstractGraphPlacer",2005),b(325,1,{325:1},ajn),s.mf=function(e){return this.nf(e)?(Tn(this.b,u(k(e,(G(),Gb)),21),e),!0):!1},s.nf=function(e){var t,i,r,c;for(t=u(k(e,(G(),Gb)),21),c=u(ct(at,t),21),r=c.Kc();r.Ob();)if(i=u(r.Pb(),21),!u(ct(this.b,i),15).dc())return!1;return!0};var at;w(qf,"ComponentGroup",325),b(765,2005,{},Qq),s.of=function(e){var t,i;for(i=new E(this.a);i.av&&(U=0,en+=p+c,p=0),S=f.c,M6(f,U+S.a,en+S.b),Lo(S),i=y.Math.max(i,U+O.a),p=y.Math.max(p,O.b),U+=O.a+c;if(t.f.a=i,t.f.b=en+p,on(sn(k(o,US)))){for(r=new vI,qZ(r,e,c),g=e.Kc();g.Ob();)d=u(g.Pb(),37),st(Lo(d.c),r.e);st(Lo(t.f),r.a)}qX(t,e)},w(qf,"SimpleRowGraphPlacer",1291),b(1292,1,lt,Ban),s.ue=function(e,t){return Zbe(u(e,37),u(t,37))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(qf,"SimpleRowGraphPlacer/1",1292);var IWn;b(1262,1,_f,Ran),s.Lb=function(e){var t;return t=u(k(u(e,243).b,(nn(),Mr)),74),!!t&&t.b!=0},s.Fb=function(e){return this===e},s.Mb=function(e){var t;return t=u(k(u(e,243).b,(nn(),Mr)),74),!!t&&t.b!=0},w(UM,"CompoundGraphPostprocessor/1",1262),b(1261,1,xt,t9n),s.pf=function(e,t){eFn(this,u(e,37),t)},w(UM,"CompoundGraphPreprocessor",1261),b(441,1,{441:1},HDn),s.c=!1,w(UM,"CompoundGraphPreprocessor/ExternalPort",441),b(243,1,{243:1},EE),s.Ib=function(){return VO(this.c)+":"+ELn(this.b)},w(UM,"CrossHierarchyEdge",243),b(763,1,lt,Iq),s.ue=function(e,t){return H3e(this,u(e,243),u(t,243))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(UM,"CrossHierarchyEdgeComparator",763),b(299,134,{3:1,299:1,94:1,134:1}),s.p=0,w($c,"LGraphElement",299),b(17,299,{3:1,17:1,299:1,94:1,134:1},Pd),s.Ib=function(){return ELn(this)};var GR=w($c,"LEdge",17);b(37,299,{3:1,20:1,37:1,299:1,94:1,134:1},lV),s.Jc=function(e){$i(this,e)},s.Kc=function(){return new E(this.b)},s.Ib=function(){return this.b.c.length==0?"G-unlayered"+kl(this.a):this.a.c.length==0?"G-layered"+kl(this.b):"G[layerless"+kl(this.a)+", layers"+kl(this.b)+"]"};var OWn=w($c,"LGraph",37),DWn;b(657,1,{}),s.qf=function(){return this.e.n},s.We=function(e){return k(this.e,e)},s.rf=function(){return this.e.o},s.sf=function(){return this.e.p},s.Xe=function(e){return ai(this.e,e)},s.tf=function(e){this.e.n.a=e.a,this.e.n.b=e.b},s.uf=function(e){this.e.o.a=e.a,this.e.o.b=e.b},s.vf=function(e){this.e.p=e},w($c,"LGraphAdapters/AbstractLShapeAdapter",657),b(577,1,{839:1},ij),s.wf=function(){var e,t;if(!this.b)for(this.b=eh(this.a.b.c.length),t=new E(this.a.b);t.a0&&SDn((Te(t-1,e.length),e.charCodeAt(t-1)),XKn);)--t;if(o> ",e),UT(i)),De(rc((e.a+="[",e),i.i),"]")),e.a},s.c=!0,s.d=!1;var Xrn,Vrn,Qrn,Jrn,Yrn,Zrn,FWn=w($c,"LPort",11);b(397,1,ah,qp),s.Jc=function(e){$i(this,e)},s.Kc=function(){var e;return e=new E(this.a.e),new h5n(e)},w($c,"LPort/1",397),b(1290,1,ji,h5n),s.Nb=function(e){Oi(this,e)},s.Pb=function(){return u(j(this.a),17).c},s.Ob=function(){return Kr(this.a)},s.Qb=function(){F5(this.a)},w($c,"LPort/1/1",1290),b(359,1,ah,n2),s.Jc=function(e){$i(this,e)},s.Kc=function(){var e;return e=new E(this.a.g),new Oq(e)},w($c,"LPort/2",359),b(762,1,ji,Oq),s.Nb=function(e){Oi(this,e)},s.Pb=function(){return u(j(this.a),17).d},s.Ob=function(){return Kr(this.a)},s.Qb=function(){F5(this.a)},w($c,"LPort/2/1",762),b(1283,1,ah,q7n),s.Jc=function(e){$i(this,e)},s.Kc=function(){return new sf(this)},w($c,"LPort/CombineIter",1283),b(201,1,ji,sf),s.Nb=function(e){Oi(this,e)},s.Qb=function(){d8n()},s.Ob=function(){return E5(this)},s.Pb=function(){return Kr(this.a)?j(this.a):j(this.b)},w($c,"LPort/CombineIter/1",201),b(1285,1,_f,Kan),s.Lb=function(e){return CCn(e)},s.Fb=function(e){return this===e},s.Mb=function(e){return wu(),u(e,11).e.c.length!=0},w($c,"LPort/lambda$0$Type",1285),b(1284,1,_f,Han),s.Lb=function(e){return TCn(e)},s.Fb=function(e){return this===e},s.Mb=function(e){return wu(),u(e,11).g.c.length!=0},w($c,"LPort/lambda$1$Type",1284),b(1286,1,_f,qan),s.Lb=function(e){return wu(),u(e,11).j==(J(),Kn)},s.Fb=function(e){return this===e},s.Mb=function(e){return wu(),u(e,11).j==(J(),Kn)},w($c,"LPort/lambda$2$Type",1286),b(1287,1,_f,Gan),s.Lb=function(e){return wu(),u(e,11).j==(J(),Vn)},s.Fb=function(e){return this===e},s.Mb=function(e){return wu(),u(e,11).j==(J(),Vn)},w($c,"LPort/lambda$3$Type",1287),b(1288,1,_f,zan),s.Lb=function(e){return wu(),u(e,11).j==(J(),ae)},s.Fb=function(e){return this===e},s.Mb=function(e){return wu(),u(e,11).j==(J(),ae)},w($c,"LPort/lambda$4$Type",1288),b(1289,1,_f,Uan),s.Lb=function(e){return wu(),u(e,11).j==(J(),Gn)},s.Fb=function(e){return this===e},s.Mb=function(e){return wu(),u(e,11).j==(J(),Gn)},w($c,"LPort/lambda$5$Type",1289),b(29,299,{3:1,20:1,299:1,29:1,94:1,134:1},Rs),s.Jc=function(e){$i(this,e)},s.Kc=function(){return new E(this.a)},s.Ib=function(){return"L_"+xr(this.b.b,this,0)+kl(this.a)},w($c,"Layer",29),b(1342,1,{},e9n),w(C1,YKn,1342),b(1346,1,{},Wan),s.Kb=function(e){return Ir(u(e,82))},w(C1,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1346),b(1349,1,{},Xan),s.Kb=function(e){return Ir(u(e,82))},w(C1,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1349),b(1343,1,Yn,l5n),s.td=function(e){NLn(this.a,u(e,118))},w(C1,ZKn,1343),b(1344,1,Yn,a5n),s.td=function(e){NLn(this.a,u(e,118))},w(C1,nHn,1344),b(1345,1,{},Van),s.Kb=function(e){return new $n(null,new xn(Hhe(u(e,79)),16))},w(C1,eHn,1345),b(1347,1,Ve,d5n),s.Mb=function(e){return qre(this.a,u(e,33))},w(C1,tHn,1347),b(1348,1,{},Qan),s.Kb=function(e){return new $n(null,new xn(qhe(u(e,79)),16))},w(C1,"ElkGraphImporter/lambda$5$Type",1348),b(1350,1,Ve,b5n),s.Mb=function(e){return Gre(this.a,u(e,33))},w(C1,"ElkGraphImporter/lambda$7$Type",1350),b(1351,1,Ve,Jan),s.Mb=function(e){return u1e(u(e,79))},w(C1,"ElkGraphImporter/lambda$8$Type",1351),b(1278,1,{},b4n);var xWn;w(C1,"ElkGraphLayoutTransferrer",1278),b(1279,1,Ve,w5n),s.Mb=function(e){return Due(this.a,u(e,17))},w(C1,"ElkGraphLayoutTransferrer/lambda$0$Type",1279),b(1280,1,Yn,g5n),s.td=function(e){H9(),W(this.a,u(e,17))},w(C1,"ElkGraphLayoutTransferrer/lambda$1$Type",1280),b(1281,1,Ve,p5n),s.Mb=function(e){return pue(this.a,u(e,17))},w(C1,"ElkGraphLayoutTransferrer/lambda$2$Type",1281),b(1282,1,Yn,v5n),s.td=function(e){H9(),W(this.a,u(e,17))},w(C1,"ElkGraphLayoutTransferrer/lambda$3$Type",1282),b(1485,1,xt,Yan),s.pf=function(e,t){mbe(u(e,37),t)},w(Un,"CommentNodeMarginCalculator",1485),b(1486,1,{},Zan),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"CommentNodeMarginCalculator/lambda$0$Type",1486),b(1487,1,Yn,ndn),s.td=function(e){Zye(u(e,10))},w(Un,"CommentNodeMarginCalculator/lambda$1$Type",1487),b(1488,1,xt,edn),s.pf=function(e,t){a7e(u(e,37),t)},w(Un,"CommentPostprocessor",1488),b(1489,1,xt,tdn),s.pf=function(e,t){mCe(u(e,37),t)},w(Un,"CommentPreprocessor",1489),b(1490,1,xt,idn),s.pf=function(e,t){x9e(u(e,37),t)},w(Un,"ConstraintsPostprocessor",1490),b(1491,1,xt,rdn),s.pf=function(e,t){Hbe(u(e,37),t)},w(Un,"EdgeAndLayerConstraintEdgeReverser",1491),b(1492,1,xt,cdn),s.pf=function(e,t){I2e(u(e,37),t)},w(Un,"EndLabelPostprocessor",1492),b(1493,1,{},udn),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"EndLabelPostprocessor/lambda$0$Type",1493),b(1494,1,Ve,sdn),s.Mb=function(e){return C1e(u(e,10))},w(Un,"EndLabelPostprocessor/lambda$1$Type",1494),b(1495,1,Yn,odn),s.td=function(e){p4e(u(e,10))},w(Un,"EndLabelPostprocessor/lambda$2$Type",1495),b(1496,1,xt,fdn),s.pf=function(e,t){u6e(u(e,37),t)},w(Un,"EndLabelPreprocessor",1496),b(1497,1,{},hdn),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"EndLabelPreprocessor/lambda$0$Type",1497),b(1498,1,Yn,wEn),s.td=function(e){ure(this.a,this.b,this.c,u(e,10))},s.a=0,s.b=0,s.c=!1,w(Un,"EndLabelPreprocessor/lambda$1$Type",1498),b(1499,1,Ve,ldn),s.Mb=function(e){return B(k(u(e,70),(nn(),Yf)))===B((of(),Ev))},w(Un,"EndLabelPreprocessor/lambda$2$Type",1499),b(1500,1,Yn,m5n),s.td=function(e){Ke(this.a,u(e,70))},w(Un,"EndLabelPreprocessor/lambda$3$Type",1500),b(1501,1,Ve,adn),s.Mb=function(e){return B(k(u(e,70),(nn(),Yf)))===B((of(),cw))},w(Un,"EndLabelPreprocessor/lambda$4$Type",1501),b(1502,1,Yn,k5n),s.td=function(e){Ke(this.a,u(e,70))},w(Un,"EndLabelPreprocessor/lambda$5$Type",1502),b(1551,1,xt,d4n),s.pf=function(e,t){Bge(u(e,37),t)};var LWn;w(Un,"EndLabelSorter",1551),b(1552,1,lt,ddn),s.ue=function(e,t){return bpe(u(e,456),u(t,456))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"EndLabelSorter/1",1552),b(456,1,{456:1},xTn),w(Un,"EndLabelSorter/LabelGroup",456),b(1553,1,{},bdn),s.Kb=function(e){return q9(),new $n(null,new xn(u(e,29).a,16))},w(Un,"EndLabelSorter/lambda$0$Type",1553),b(1554,1,Ve,wdn),s.Mb=function(e){return q9(),u(e,10).k==(Qn(),ii)},w(Un,"EndLabelSorter/lambda$1$Type",1554),b(1555,1,Yn,gdn),s.td=function(e){p5e(u(e,10))},w(Un,"EndLabelSorter/lambda$2$Type",1555),b(1556,1,Ve,pdn),s.Mb=function(e){return q9(),B(k(u(e,70),(nn(),Yf)))===B((of(),cw))},w(Un,"EndLabelSorter/lambda$3$Type",1556),b(1557,1,Ve,vdn),s.Mb=function(e){return q9(),B(k(u(e,70),(nn(),Yf)))===B((of(),Ev))},w(Un,"EndLabelSorter/lambda$4$Type",1557),b(1503,1,xt,mdn),s.pf=function(e,t){hje(this,u(e,37))},s.b=0,s.c=0,w(Un,"FinalSplineBendpointsCalculator",1503),b(1504,1,{},kdn),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"FinalSplineBendpointsCalculator/lambda$0$Type",1504),b(1505,1,{},ydn),s.Kb=function(e){return new $n(null,new Cd(new re(ue(ei(u(e,10)).a.Kc(),new An))))},w(Un,"FinalSplineBendpointsCalculator/lambda$1$Type",1505),b(1506,1,Ve,jdn),s.Mb=function(e){return!Xi(u(e,17))},w(Un,"FinalSplineBendpointsCalculator/lambda$2$Type",1506),b(1507,1,Ve,Edn),s.Mb=function(e){return ai(u(e,17),(G(),Ua))},w(Un,"FinalSplineBendpointsCalculator/lambda$3$Type",1507),b(1508,1,Yn,y5n),s.td=function(e){Eke(this.a,u(e,128))},w(Un,"FinalSplineBendpointsCalculator/lambda$4$Type",1508),b(1509,1,Yn,Cdn),s.td=function(e){Ax(u(e,17).a)},w(Un,"FinalSplineBendpointsCalculator/lambda$5$Type",1509),b(792,1,xt,Dq),s.pf=function(e,t){iEe(this,u(e,37),t)},w(Un,"GraphTransformer",792),b(511,22,{3:1,35:1,22:1,511:1},zG);var UR,_k,NWn=Me(Un,"GraphTransformer/Mode",511,Ie,U1e,Coe),BWn;b(1510,1,xt,Tdn),s.pf=function(e,t){$8e(u(e,37),t)},w(Un,"HierarchicalNodeResizingProcessor",1510),b(1511,1,xt,Mdn),s.pf=function(e,t){bbe(u(e,37),t)},w(Un,"HierarchicalPortConstraintProcessor",1511),b(1512,1,lt,Adn),s.ue=function(e,t){return Tpe(u(e,10),u(t,10))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"HierarchicalPortConstraintProcessor/NodeComparator",1512),b(1513,1,xt,Sdn),s.pf=function(e,t){Fye(u(e,37),t)},w(Un,"HierarchicalPortDummySizeProcessor",1513),b(1514,1,xt,Pdn),s.pf=function(e,t){O7e(this,u(e,37),t)},s.a=0,w(Un,"HierarchicalPortOrthogonalEdgeRouter",1514),b(1515,1,lt,Idn),s.ue=function(e,t){return Lce(u(e,10),u(t,10))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"HierarchicalPortOrthogonalEdgeRouter/1",1515),b(1516,1,lt,Odn),s.ue=function(e,t){return Qde(u(e,10),u(t,10))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"HierarchicalPortOrthogonalEdgeRouter/2",1516),b(1517,1,xt,Ddn),s.pf=function(e,t){t5e(u(e,37),t)},w(Un,"HierarchicalPortPositionProcessor",1517),b(1518,1,xt,w4n),s.pf=function(e,t){JCe(this,u(e,37))},s.a=0,s.c=0;var sS,oS;w(Un,"HighDegreeNodeLayeringProcessor",1518),b(571,1,{571:1},$dn),s.b=-1,s.d=-1,w(Un,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",571),b(1519,1,{},Fdn),s.Kb=function(e){return w8(),Lr(u(e,10))},s.Fb=function(e){return this===e},w(Un,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1519),b(1520,1,{},xdn),s.Kb=function(e){return w8(),ei(u(e,10))},s.Fb=function(e){return this===e},w(Un,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1520),b(1526,1,xt,Ldn),s.pf=function(e,t){oye(this,u(e,37),t)},w(Un,"HyperedgeDummyMerger",1526),b(793,1,{},xU),s.a=!1,s.b=!1,s.c=!1,w(Un,"HyperedgeDummyMerger/MergeState",793),b(1527,1,{},Ndn),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"HyperedgeDummyMerger/lambda$0$Type",1527),b(1528,1,{},Bdn),s.Kb=function(e){return new $n(null,new xn(u(e,10).j,16))},w(Un,"HyperedgeDummyMerger/lambda$1$Type",1528),b(1529,1,Yn,Rdn),s.td=function(e){u(e,11).p=-1},w(Un,"HyperedgeDummyMerger/lambda$2$Type",1529),b(1530,1,xt,_dn),s.pf=function(e,t){uye(u(e,37),t)},w(Un,"HypernodesProcessor",1530),b(1531,1,xt,Kdn),s.pf=function(e,t){sye(u(e,37),t)},w(Un,"InLayerConstraintProcessor",1531),b(1532,1,xt,Hdn),s.pf=function(e,t){Nbe(u(e,37),t)},w(Un,"InnermostNodeMarginCalculator",1532),b(1533,1,xt,qdn),s.pf=function(e,t){bCe(this,u(e,37))},s.a=Qt,s.b=Qt,s.c=Ft,s.d=Ft;var ZTe=w(Un,"InteractiveExternalPortPositioner",1533);b(1534,1,{},Gdn),s.Kb=function(e){return u(e,17).d.i},s.Fb=function(e){return this===e},w(Un,"InteractiveExternalPortPositioner/lambda$0$Type",1534),b(1535,1,{},j5n),s.Kb=function(e){return Rce(this.a,Y(e))},s.Fb=function(e){return this===e},w(Un,"InteractiveExternalPortPositioner/lambda$1$Type",1535),b(1536,1,{},zdn),s.Kb=function(e){return u(e,17).c.i},s.Fb=function(e){return this===e},w(Un,"InteractiveExternalPortPositioner/lambda$2$Type",1536),b(1537,1,{},E5n),s.Kb=function(e){return _ce(this.a,Y(e))},s.Fb=function(e){return this===e},w(Un,"InteractiveExternalPortPositioner/lambda$3$Type",1537),b(1538,1,{},C5n),s.Kb=function(e){return Pue(this.a,Y(e))},s.Fb=function(e){return this===e},w(Un,"InteractiveExternalPortPositioner/lambda$4$Type",1538),b(1539,1,{},T5n),s.Kb=function(e){return Iue(this.a,Y(e))},s.Fb=function(e){return this===e},w(Un,"InteractiveExternalPortPositioner/lambda$5$Type",1539),b(77,22,{3:1,35:1,22:1,77:1,234:1},zt),s.Kf=function(){switch(this.g){case 15:return new awn;case 22:return new dwn;case 47:return new gwn;case 28:case 35:return new t0n;case 32:return new Yan;case 42:return new edn;case 1:return new tdn;case 41:return new idn;case 56:return new Dq((B3(),_k));case 0:return new Dq((B3(),UR));case 2:return new rdn;case 54:return new cdn;case 33:return new fdn;case 51:return new mdn;case 55:return new Tdn;case 13:return new Mdn;case 38:return new Sdn;case 44:return new Pdn;case 40:return new Ddn;case 9:return new w4n;case 49:return new ejn;case 37:return new Ldn;case 43:return new _dn;case 27:return new Kdn;case 30:return new Hdn;case 3:return new qdn;case 18:return new Wdn;case 29:return new Xdn;case 5:return new g4n;case 50:return new Udn;case 34:return new p4n;case 36:return new i0n;case 52:return new d4n;case 11:return new c0n;case 7:return new m4n;case 39:return new u0n;case 45:return new s0n;case 16:return new o0n;case 10:return new f0n;case 48:return new l0n;case 21:return new a0n;case 23:return new WI((_d(),_m));case 8:return new b0n;case 12:return new g0n;case 4:return new p0n;case 19:return new E4n;case 17:return new A0n;case 53:return new S0n;case 6:return new _0n;case 25:return new c9n;case 46:return new $0n;case 31:return new Rjn;case 14:return new X0n;case 26:return new mwn;case 20:return new Z0n;case 24:return new WI((_d(),aP));default:throw T(new Hn(AN+(this.f!=null?this.f:""+this.g)))}};var ncn,ecn,tcn,icn,rcn,ccn,ucn,scn,ocn,fcn,mm,fS,hS,hcn,lcn,acn,dcn,bcn,wcn,gcn,km,pcn,vcn,mcn,kcn,ycn,WR,lS,aS,jcn,dS,bS,wS,J4,Y4,Z4,Ecn,gS,pS,Ccn,vS,mS,Tcn,Mcn,Acn,Scn,kS,XR,Kk,yS,jS,ES,CS,Pcn,Icn,Ocn,Dcn,nMe=Me(Un,Fnn,77,Ie,PNn,Eoe),RWn;b(1540,1,xt,Wdn),s.pf=function(e,t){gCe(u(e,37),t)},w(Un,"InvertedPortProcessor",1540),b(1541,1,xt,Xdn),s.pf=function(e,t){gke(u(e,37),t)},w(Un,"LabelAndNodeSizeProcessor",1541),b(1542,1,Ve,Vdn),s.Mb=function(e){return u(e,10).k==(Qn(),ii)},w(Un,"LabelAndNodeSizeProcessor/lambda$0$Type",1542),b(1543,1,Ve,Qdn),s.Mb=function(e){return u(e,10).k==(Qn(),Xt)},w(Un,"LabelAndNodeSizeProcessor/lambda$1$Type",1543),b(1544,1,Yn,gEn),s.td=function(e){sre(this.b,this.a,this.c,u(e,10))},s.a=!1,s.c=!1,w(Un,"LabelAndNodeSizeProcessor/lambda$2$Type",1544),b(1545,1,xt,g4n),s.pf=function(e,t){_Ee(u(e,37),t)};var _Wn;w(Un,"LabelDummyInserter",1545),b(1546,1,_f,Jdn),s.Lb=function(e){return B(k(u(e,70),(nn(),Yf)))===B((of(),jv))},s.Fb=function(e){return this===e},s.Mb=function(e){return B(k(u(e,70),(nn(),Yf)))===B((of(),jv))},w(Un,"LabelDummyInserter/1",1546),b(1547,1,xt,Udn),s.pf=function(e,t){Hje(u(e,37),t)},w(Un,"LabelDummyRemover",1547),b(1548,1,Ve,Ydn),s.Mb=function(e){return on(sn(k(u(e,70),(nn(),L_))))},w(Un,"LabelDummyRemover/lambda$0$Type",1548),b(1359,1,xt,p4n),s.pf=function(e,t){pEe(this,u(e,37),t)},s.a=null;var VR;w(Un,"LabelDummySwitcher",1359),b(286,1,{286:1},ABn),s.c=0,s.d=null,s.f=0,w(Un,"LabelDummySwitcher/LabelDummyInfo",286),b(1360,1,{},Zdn),s.Kb=function(e){return x2(),new $n(null,new xn(u(e,29).a,16))},w(Un,"LabelDummySwitcher/lambda$0$Type",1360),b(1361,1,Ve,n0n),s.Mb=function(e){return x2(),u(e,10).k==(Qn(),Ju)},w(Un,"LabelDummySwitcher/lambda$1$Type",1361),b(1362,1,{},S5n),s.Kb=function(e){return vue(this.a,u(e,10))},w(Un,"LabelDummySwitcher/lambda$2$Type",1362),b(1363,1,Yn,P5n),s.td=function(e){phe(this.a,u(e,286))},w(Un,"LabelDummySwitcher/lambda$3$Type",1363),b(1364,1,lt,e0n),s.ue=function(e,t){return zfe(u(e,286),u(t,286))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"LabelDummySwitcher/lambda$4$Type",1364),b(791,1,xt,t0n),s.pf=function(e,t){Sde(u(e,37),t)},w(Un,"LabelManagementProcessor",791),b(1549,1,xt,i0n),s.pf=function(e,t){Z8e(u(e,37),t)},w(Un,"LabelSideSelector",1549),b(1550,1,Ve,r0n),s.Mb=function(e){return on(sn(k(u(e,70),(nn(),L_))))},w(Un,"LabelSideSelector/lambda$0$Type",1550),b(1558,1,xt,c0n),s.pf=function(e,t){xye(u(e,37),t)},w(Un,"LayerConstraintPostprocessor",1558),b(1559,1,xt,m4n),s.pf=function(e,t){Vme(u(e,37),t)};var $cn;w(Un,"LayerConstraintPreprocessor",1559),b(360,22,{3:1,35:1,22:1,360:1},Hj);var Hk,TS,MS,QR,KWn=Me(Un,"LayerConstraintPreprocessor/HiddenNodeConnections",360,Ie,yae,bse),HWn;b(1560,1,xt,u0n),s.pf=function(e,t){Rje(u(e,37),t)},w(Un,"LayerSizeAndGraphHeightCalculator",1560),b(1561,1,xt,s0n),s.pf=function(e,t){H9e(u(e,37),t)},w(Un,"LongEdgeJoiner",1561),b(1562,1,xt,o0n),s.pf=function(e,t){kje(u(e,37),t)},w(Un,"LongEdgeSplitter",1562),b(1563,1,xt,f0n),s.pf=function(e,t){kEe(this,u(e,37),t)},s.d=0,s.e=0,s.i=0,s.j=0,s.k=0,s.n=0,w(Un,"NodePromotion",1563),b(1564,1,{},h0n),s.Kb=function(e){return u(e,46),qn(),!0},s.Fb=function(e){return this===e},w(Un,"NodePromotion/lambda$0$Type",1564),b(1565,1,{},M5n),s.Kb=function(e){return Bhe(this.a,u(e,46))},s.Fb=function(e){return this===e},s.a=0,w(Un,"NodePromotion/lambda$1$Type",1565),b(1566,1,{},A5n),s.Kb=function(e){return Rhe(this.a,u(e,46))},s.Fb=function(e){return this===e},s.a=0,w(Un,"NodePromotion/lambda$2$Type",1566),b(1567,1,xt,l0n),s.pf=function(e,t){GCe(u(e,37),t)},w(Un,"NorthSouthPortPostprocessor",1567),b(1568,1,xt,a0n),s.pf=function(e,t){PCe(u(e,37),t)},w(Un,"NorthSouthPortPreprocessor",1568),b(1569,1,lt,d0n),s.ue=function(e,t){return rwe(u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"NorthSouthPortPreprocessor/lambda$0$Type",1569),b(1570,1,xt,b0n),s.pf=function(e,t){Uke(u(e,37),t)},w(Un,"PartitionMidprocessor",1570),b(1571,1,Ve,w0n),s.Mb=function(e){return ai(u(e,10),(nn(),av))},w(Un,"PartitionMidprocessor/lambda$0$Type",1571),b(1572,1,Yn,I5n),s.td=function(e){s1e(this.a,u(e,10))},w(Un,"PartitionMidprocessor/lambda$1$Type",1572),b(1573,1,xt,g0n),s.pf=function(e,t){o8e(u(e,37),t)},w(Un,"PartitionPostprocessor",1573),b(1574,1,xt,p0n),s.pf=function(e,t){vme(u(e,37),t)},w(Un,"PartitionPreprocessor",1574),b(1575,1,Ve,v0n),s.Mb=function(e){return ai(u(e,10),(nn(),av))},w(Un,"PartitionPreprocessor/lambda$0$Type",1575),b(1576,1,{},m0n),s.Kb=function(e){return new $n(null,new Cd(new re(ue(ei(u(e,10)).a.Kc(),new An))))},w(Un,"PartitionPreprocessor/lambda$1$Type",1576),b(1577,1,Ve,k0n),s.Mb=function(e){return lpe(u(e,17))},w(Un,"PartitionPreprocessor/lambda$2$Type",1577),b(1578,1,Yn,y0n),s.td=function(e){bwe(u(e,17))},w(Un,"PartitionPreprocessor/lambda$3$Type",1578),b(1579,1,xt,E4n),s.pf=function(e,t){Ike(u(e,37),t)};var Fcn,qWn,GWn,zWn,xcn,Lcn;w(Un,"PortListSorter",1579),b(1580,1,{},j0n),s.Kb=function(e){return V3(),u(e,11).e},w(Un,"PortListSorter/lambda$0$Type",1580),b(1581,1,{},E0n),s.Kb=function(e){return V3(),u(e,11).g},w(Un,"PortListSorter/lambda$1$Type",1581),b(1582,1,lt,C0n),s.ue=function(e,t){return KAn(u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"PortListSorter/lambda$2$Type",1582),b(1583,1,lt,T0n),s.ue=function(e,t){return x3e(u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"PortListSorter/lambda$3$Type",1583),b(1584,1,lt,M0n),s.ue=function(e,t){return QBn(u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"PortListSorter/lambda$4$Type",1584),b(1585,1,xt,A0n),s.pf=function(e,t){qme(u(e,37),t)},w(Un,"PortSideProcessor",1585),b(1586,1,xt,S0n),s.pf=function(e,t){G7e(u(e,37),t)},w(Un,"ReversedEdgeRestorer",1586),b(1591,1,xt,c9n),s.pf=function(e,t){m3e(this,u(e,37),t)},w(Un,"SelfLoopPortRestorer",1591),b(1592,1,{},P0n),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"SelfLoopPortRestorer/lambda$0$Type",1592),b(1593,1,Ve,I0n),s.Mb=function(e){return u(e,10).k==(Qn(),ii)},w(Un,"SelfLoopPortRestorer/lambda$1$Type",1593),b(1594,1,Ve,O0n),s.Mb=function(e){return ai(u(e,10),(G(),fv))},w(Un,"SelfLoopPortRestorer/lambda$2$Type",1594),b(1595,1,{},D0n),s.Kb=function(e){return u(k(u(e,10),(G(),fv)),403)},w(Un,"SelfLoopPortRestorer/lambda$3$Type",1595),b(1596,1,Yn,O5n),s.td=function(e){S5e(this.a,u(e,403))},w(Un,"SelfLoopPortRestorer/lambda$4$Type",1596),b(794,1,Yn,RH),s.td=function(e){q5e(u(e,101))},w(Un,"SelfLoopPortRestorer/lambda$5$Type",794),b(1597,1,xt,$0n),s.pf=function(e,t){Spe(u(e,37),t)},w(Un,"SelfLoopPostProcessor",1597),b(1598,1,{},F0n),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"SelfLoopPostProcessor/lambda$0$Type",1598),b(1599,1,Ve,x0n),s.Mb=function(e){return u(e,10).k==(Qn(),ii)},w(Un,"SelfLoopPostProcessor/lambda$1$Type",1599),b(1600,1,Ve,L0n),s.Mb=function(e){return ai(u(e,10),(G(),fv))},w(Un,"SelfLoopPostProcessor/lambda$2$Type",1600),b(1601,1,Yn,N0n),s.td=function(e){x4e(u(e,10))},w(Un,"SelfLoopPostProcessor/lambda$3$Type",1601),b(1602,1,{},B0n),s.Kb=function(e){return new $n(null,new xn(u(e,101).f,1))},w(Un,"SelfLoopPostProcessor/lambda$4$Type",1602),b(1603,1,Yn,D5n),s.td=function(e){Cae(this.a,u(e,409))},w(Un,"SelfLoopPostProcessor/lambda$5$Type",1603),b(1604,1,Ve,R0n),s.Mb=function(e){return!!u(e,101).i},w(Un,"SelfLoopPostProcessor/lambda$6$Type",1604),b(1605,1,Yn,$5n),s.td=function(e){oie(this.a,u(e,101))},w(Un,"SelfLoopPostProcessor/lambda$7$Type",1605),b(1587,1,xt,_0n),s.pf=function(e,t){y9e(u(e,37),t)},w(Un,"SelfLoopPreProcessor",1587),b(1588,1,{},K0n),s.Kb=function(e){return new $n(null,new xn(u(e,101).f,1))},w(Un,"SelfLoopPreProcessor/lambda$0$Type",1588),b(1589,1,{},H0n),s.Kb=function(e){return u(e,409).a},w(Un,"SelfLoopPreProcessor/lambda$1$Type",1589),b(1590,1,Yn,q0n),s.td=function(e){dce(u(e,17))},w(Un,"SelfLoopPreProcessor/lambda$2$Type",1590),b(1606,1,xt,Rjn),s.pf=function(e,t){v5e(this,u(e,37),t)},w(Un,"SelfLoopRouter",1606),b(1607,1,{},G0n),s.Kb=function(e){return new $n(null,new xn(u(e,29).a,16))},w(Un,"SelfLoopRouter/lambda$0$Type",1607),b(1608,1,Ve,z0n),s.Mb=function(e){return u(e,10).k==(Qn(),ii)},w(Un,"SelfLoopRouter/lambda$1$Type",1608),b(1609,1,Ve,U0n),s.Mb=function(e){return ai(u(e,10),(G(),fv))},w(Un,"SelfLoopRouter/lambda$2$Type",1609),b(1610,1,{},W0n),s.Kb=function(e){return u(k(u(e,10),(G(),fv)),403)},w(Un,"SelfLoopRouter/lambda$3$Type",1610),b(1611,1,Yn,x7n),s.td=function(e){Yhe(this.a,this.b,u(e,403))},w(Un,"SelfLoopRouter/lambda$4$Type",1611),b(1612,1,xt,X0n),s.pf=function(e,t){K8e(u(e,37),t)},w(Un,"SemiInteractiveCrossMinProcessor",1612),b(1613,1,Ve,V0n),s.Mb=function(e){return u(e,10).k==(Qn(),ii)},w(Un,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1613),b(1614,1,Ve,Q0n),s.Mb=function(e){return eCn(u(e,10))._b((nn(),Zb))},w(Un,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1614),b(1615,1,lt,J0n),s.ue=function(e,t){return gbe(u(e,10),u(t,10))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Un,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1615),b(1616,1,{},Y0n),s.Ce=function(e,t){return w1e(u(e,10),u(t,10))},w(Un,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1616),b(1618,1,xt,Z0n),s.pf=function(e,t){Lye(u(e,37),t)},w(Un,"SortByInputModelProcessor",1618),b(1619,1,Ve,nbn),s.Mb=function(e){return u(e,11).g.c.length!=0},w(Un,"SortByInputModelProcessor/lambda$0$Type",1619),b(1620,1,Yn,F5n),s.td=function(e){X5e(this.a,u(e,11))},w(Un,"SortByInputModelProcessor/lambda$1$Type",1620),b(1693,803,{},QIn),s.Me=function(e){var t,i,r,c;switch(this.c=e,this.a.g){case 2:t=new X,Rt(gt(new $n(null,new xn(this.c.a.b,16)),new bbn),new _7n(this,t)),O7(this,new ibn),Zc(t,new rbn),t.c=F(Zn,rn,1,0,5,1),Rt(gt(new $n(null,new xn(this.c.a.b,16)),new cbn),new L5n(t)),O7(this,new ubn),Zc(t,new sbn),t.c=F(Zn,rn,1,0,5,1),i=myn(fOn(YE(new $n(null,new xn(this.c.a.b,16)),new N5n(this))),new obn),Rt(new $n(null,new xn(this.c.a.a,16)),new N7n(i,t)),O7(this,new hbn),Zc(t,new ebn),t.c=F(Zn,rn,1,0,5,1);break;case 3:r=new X,O7(this,new tbn),c=myn(fOn(YE(new $n(null,new xn(this.c.a.b,16)),new x5n(this))),new fbn),Rt(gt(new $n(null,new xn(this.c.a.b,16)),new lbn),new R7n(c,r)),O7(this,new abn),Zc(r,new dbn),r.c=F(Zn,rn,1,0,5,1);break;default:throw T(new Gmn)}},s.b=0,w(Jt,"EdgeAwareScanlineConstraintCalculation",1693),b(1694,1,_f,tbn),s.Lb=function(e){return I(u(e,57).g,145)},s.Fb=function(e){return this===e},s.Mb=function(e){return I(u(e,57).g,145)},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1694),b(1695,1,{},x5n),s.Fe=function(e){return A6e(this.a,u(e,57))},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1695),b(1703,1,DM,L7n),s.Vd=function(){g6(this.a,this.b,-1)},s.b=0,w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1703),b(1705,1,_f,ibn),s.Lb=function(e){return I(u(e,57).g,145)},s.Fb=function(e){return this===e},s.Mb=function(e){return I(u(e,57).g,145)},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1705),b(1706,1,Yn,rbn),s.td=function(e){u(e,365).Vd()},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1706),b(1707,1,Ve,cbn),s.Mb=function(e){return I(u(e,57).g,10)},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1707),b(1709,1,Yn,L5n),s.td=function(e){n2e(this.a,u(e,57))},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1709),b(1708,1,DM,G7n),s.Vd=function(){g6(this.b,this.a,-1)},s.a=0,w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1708),b(1710,1,_f,ubn),s.Lb=function(e){return I(u(e,57).g,10)},s.Fb=function(e){return this===e},s.Mb=function(e){return I(u(e,57).g,10)},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1710),b(1711,1,Yn,sbn),s.td=function(e){u(e,365).Vd()},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1711),b(1712,1,{},N5n),s.Fe=function(e){return S6e(this.a,u(e,57))},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1712),b(1713,1,{},obn),s.De=function(){return 0},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1713),b(1696,1,{},fbn),s.De=function(){return 0},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1696),b(1715,1,Yn,N7n),s.td=function(e){xfe(this.a,this.b,u(e,307))},s.a=0,w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1715),b(1714,1,DM,B7n),s.Vd=function(){uNn(this.a,this.b,-1)},s.b=0,w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1714),b(1716,1,_f,hbn),s.Lb=function(e){return u(e,57),!0},s.Fb=function(e){return this===e},s.Mb=function(e){return u(e,57),!0},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1716),b(1717,1,Yn,ebn),s.td=function(e){u(e,365).Vd()},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1717),b(1697,1,Ve,lbn),s.Mb=function(e){return I(u(e,57).g,10)},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1697),b(1699,1,Yn,R7n),s.td=function(e){Lfe(this.a,this.b,u(e,57))},s.a=0,w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1699),b(1698,1,DM,z7n),s.Vd=function(){g6(this.b,this.a,-1)},s.a=0,w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1698),b(1700,1,_f,abn),s.Lb=function(e){return u(e,57),!0},s.Fb=function(e){return this===e},s.Mb=function(e){return u(e,57),!0},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1700),b(1701,1,Yn,dbn),s.td=function(e){u(e,365).Vd()},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1701),b(1702,1,Ve,bbn),s.Mb=function(e){return I(u(e,57).g,145)},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1702),b(1704,1,Yn,_7n),s.td=function(e){$0e(this.a,this.b,u(e,57))},w(Jt,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1704),b(1521,1,xt,ejn),s.pf=function(e,t){Aje(this,u(e,37),t)};var UWn;w(Jt,"HorizontalGraphCompactor",1521),b(1522,1,{},B5n),s.Oe=function(e,t){var i,r,c;return YX(e,t)||(i=$w(e),r=$w(t),i&&i.k==(Qn(),Xt)||r&&r.k==(Qn(),Xt))?0:(c=u(k(this.a.a,(G(),Ig)),304),Kce(c,i?i.k:(Qn(),pi),r?r.k:(Qn(),pi)))},s.Pe=function(e,t){var i,r,c;return YX(e,t)?1:(i=$w(e),r=$w(t),c=u(k(this.a.a,(G(),Ig)),304),Wz(c,i?i.k:(Qn(),pi),r?r.k:(Qn(),pi)))},w(Jt,"HorizontalGraphCompactor/1",1522),b(1523,1,{},wbn),s.Ne=function(e,t){return Qv(),e.a.i==0},w(Jt,"HorizontalGraphCompactor/lambda$0$Type",1523),b(1524,1,{},R5n),s.Ne=function(e,t){return l1e(this.a,e,t)},w(Jt,"HorizontalGraphCompactor/lambda$1$Type",1524),b(1664,1,{},xPn);var WWn,XWn;w(Jt,"LGraphToCGraphTransformer",1664),b(1672,1,Ve,gbn),s.Mb=function(e){return e!=null},w(Jt,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1672),b(1665,1,{},pbn),s.Kb=function(e){return wo(),Nr(k(u(u(e,57).g,10),(G(),rt)))},w(Jt,"LGraphToCGraphTransformer/lambda$0$Type",1665),b(1666,1,{},vbn),s.Kb=function(e){return wo(),BDn(u(u(e,57).g,145))},w(Jt,"LGraphToCGraphTransformer/lambda$1$Type",1666),b(1675,1,Ve,mbn),s.Mb=function(e){return wo(),I(u(e,57).g,10)},w(Jt,"LGraphToCGraphTransformer/lambda$10$Type",1675),b(1676,1,Yn,kbn),s.td=function(e){h1e(u(e,57))},w(Jt,"LGraphToCGraphTransformer/lambda$11$Type",1676),b(1677,1,Ve,ybn),s.Mb=function(e){return wo(),I(u(e,57).g,145)},w(Jt,"LGraphToCGraphTransformer/lambda$12$Type",1677),b(1681,1,Yn,jbn),s.td=function(e){wge(u(e,57))},w(Jt,"LGraphToCGraphTransformer/lambda$13$Type",1681),b(1678,1,Yn,_5n),s.td=function(e){Rre(this.a,u(e,8))},s.a=0,w(Jt,"LGraphToCGraphTransformer/lambda$14$Type",1678),b(1679,1,Yn,K5n),s.td=function(e){Kre(this.a,u(e,110))},s.a=0,w(Jt,"LGraphToCGraphTransformer/lambda$15$Type",1679),b(1680,1,Yn,H5n),s.td=function(e){_re(this.a,u(e,8))},s.a=0,w(Jt,"LGraphToCGraphTransformer/lambda$16$Type",1680),b(1682,1,{},Ebn),s.Kb=function(e){return wo(),new $n(null,new Cd(new re(ue(ei(u(e,10)).a.Kc(),new An))))},w(Jt,"LGraphToCGraphTransformer/lambda$17$Type",1682),b(1683,1,Ve,Cbn),s.Mb=function(e){return wo(),Xi(u(e,17))},w(Jt,"LGraphToCGraphTransformer/lambda$18$Type",1683),b(1684,1,Yn,q5n),s.td=function(e){y0e(this.a,u(e,17))},w(Jt,"LGraphToCGraphTransformer/lambda$19$Type",1684),b(1668,1,Yn,G5n),s.td=function(e){eae(this.a,u(e,145))},w(Jt,"LGraphToCGraphTransformer/lambda$2$Type",1668),b(1685,1,{},Tbn),s.Kb=function(e){return wo(),new $n(null,new xn(u(e,29).a,16))},w(Jt,"LGraphToCGraphTransformer/lambda$20$Type",1685),b(1686,1,{},Mbn),s.Kb=function(e){return wo(),new $n(null,new Cd(new re(ue(ei(u(e,10)).a.Kc(),new An))))},w(Jt,"LGraphToCGraphTransformer/lambda$21$Type",1686),b(1687,1,{},Abn),s.Kb=function(e){return wo(),u(k(u(e,17),(G(),Ua)),15)},w(Jt,"LGraphToCGraphTransformer/lambda$22$Type",1687),b(1688,1,Ve,Sbn),s.Mb=function(e){return qce(u(e,15))},w(Jt,"LGraphToCGraphTransformer/lambda$23$Type",1688),b(1689,1,Yn,z5n),s.td=function(e){v6e(this.a,u(e,15))},w(Jt,"LGraphToCGraphTransformer/lambda$24$Type",1689),b(1667,1,Yn,K7n),s.td=function(e){Hae(this.a,this.b,u(e,145))},w(Jt,"LGraphToCGraphTransformer/lambda$3$Type",1667),b(1669,1,{},Pbn),s.Kb=function(e){return wo(),new $n(null,new xn(u(e,29).a,16))},w(Jt,"LGraphToCGraphTransformer/lambda$4$Type",1669),b(1670,1,{},Ibn),s.Kb=function(e){return wo(),new $n(null,new Cd(new re(ue(ei(u(e,10)).a.Kc(),new An))))},w(Jt,"LGraphToCGraphTransformer/lambda$5$Type",1670),b(1671,1,{},Obn),s.Kb=function(e){return wo(),u(k(u(e,17),(G(),Ua)),15)},w(Jt,"LGraphToCGraphTransformer/lambda$6$Type",1671),b(1673,1,Yn,U5n),s.td=function(e){Q6e(this.a,u(e,15))},w(Jt,"LGraphToCGraphTransformer/lambda$8$Type",1673),b(1674,1,Yn,H7n),s.td=function(e){fce(this.a,this.b,u(e,145))},w(Jt,"LGraphToCGraphTransformer/lambda$9$Type",1674),b(1663,1,{},Dbn),s.Le=function(e){var t,i,r,c,o;for(this.a=e,this.d=new LI,this.c=F(grn,rn,121,this.a.a.a.c.length,0,1),this.b=0,i=new E(this.a.a.a);i.a=C&&(W(o,Q(d)),O=y.Math.max(O,x[d-1]-g),h+=m,S+=x[d-1]-S,g=x[d-1],m=l[d]),m=y.Math.max(m,l[d]),++d;h+=m}v=y.Math.min(1/O,1/t.b/h),v>r&&(r=v,i=o)}return i},s.Wf=function(){return!1},w(Gf,"MSDCutIndexHeuristic",802),b(1617,1,xt,mwn),s.pf=function(e,t){Sye(u(e,37),t)},w(Gf,"SingleEdgeGraphWrapper",1617),b(227,22,{3:1,35:1,22:1,227:1},i5);var Eg,tv,iv,qb,ym,Cg,rv=Me(lc,"CenterEdgeLabelPlacementStrategy",227,Ie,Rde,pse),uXn;b(422,22,{3:1,35:1,22:1,422:1},WG);var Bcn,s_,Rcn=Me(lc,"ConstraintCalculationStrategy",422,Ie,P1e,vse),sXn;b(314,22,{3:1,35:1,22:1,314:1,246:1,234:1},dO),s.Kf=function(){return pLn(this)},s.Xf=function(){return pLn(this)};var qk,ap,_cn,Kcn=Me(lc,"CrossingMinimizationStrategy",314,Ie,yle,mse),oXn;b(337,22,{3:1,35:1,22:1,337:1},bO);var Hcn,o_,DS,qcn=Me(lc,"CuttingStrategy",337,Ie,jle,jse),fXn;b(335,22,{3:1,35:1,22:1,335:1,246:1,234:1},X9),s.Kf=function(){return iNn(this)},s.Xf=function(){return iNn(this)};var Gcn,f_,jm,h_,Em,zcn=Me(lc,"CycleBreakingStrategy",335,Ie,lde,Ese),hXn;b(419,22,{3:1,35:1,22:1,419:1},XG);var $S,Ucn,Wcn=Me(lc,"DirectionCongruency",419,Ie,S1e,Cse),lXn;b(450,22,{3:1,35:1,22:1,450:1},wO);var cv,l_,Tg,aXn=Me(lc,"EdgeConstraint",450,Ie,Ele,Tse),dXn;b(276,22,{3:1,35:1,22:1,276:1},r5);var a_,d_,b_,w_,FS,g_,Xcn=Me(lc,"EdgeLabelSideSelection",276,Ie,qde,Mse),bXn;b(479,22,{3:1,35:1,22:1,479:1},VG);var xS,Vcn,Qcn=Me(lc,"EdgeStraighteningStrategy",479,Ie,A1e,Ase),wXn;b(274,22,{3:1,35:1,22:1,274:1},c5);var p_,Jcn,Ycn,LS,Zcn,nun,eun=Me(lc,"FixedAlignment",274,Ie,Kde,Sse),gXn;b(275,22,{3:1,35:1,22:1,275:1},u5);var tun,iun,run,cun,Cm,uun,sun=Me(lc,"GraphCompactionStrategy",275,Ie,_de,Pse),pXn;b(256,22,{3:1,35:1,22:1,256:1},H0);var uv,NS,sv,$s,Tm,BS,ov,Mg,RS,Mm,v_=Me(lc,"GraphProperties",256,Ie,Sbe,Ise),vXn;b(292,22,{3:1,35:1,22:1,292:1},gO);var Gk,m_,k_,y_=Me(lc,"GreedySwitchType",292,Ie,Mle,Ose),mXn;b(303,22,{3:1,35:1,22:1,303:1},pO);var dp,zk,Ag,kXn=Me(lc,"InLayerConstraint",303,Ie,Tle,Dse),yXn;b(420,22,{3:1,35:1,22:1,420:1},QG);var j_,oun,fun=Me(lc,"InteractiveReferencePoint",420,Ie,I1e,$se),jXn,hun,bp,p0,_S,lun,aun,KS,dun,Uk,HS,Am,wp,Gb,E_,qS,ec,bun,v0,Mc,C_,T_,Wk,za,m0,gp,wun,pp,Xk,zb,Xo,Ys,M_,Sg,dc,rt,gun,pun,vun,mun,kun,A_,GS,Au,k0,S_,vp,Vk,kf,Pg,fv,Ig,Og,hv,Ua,yun,P_,I_,mp;b(163,22,{3:1,35:1,22:1,163:1},Q9);var Sm,xl,Pm,Ub,Qk,jun=Me(lc,"LayerConstraint",163,Ie,bde,Fse),EXn;b(848,1,zs,A4n),s.Qe=function(e){En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,xnn),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),Dun),(y1(),Nt)),Wcn),Cn((Ho(),Xn))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Lnn),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(qn(),!1)),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,WM),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),Bun),Nt),fun),Cn(Xn)))),Ti(e,WM,IN,bVn),Ti(e,WM,X6,dVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Nnn),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Bnn),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),_i),oi),Cn(Xn)))),En(e,new bn(_ie(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Rnn),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),_i),oi),Cn(Ya)),A(M(tn,1),q,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,_nn),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),Uun),Nt),non),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Knn),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),Q(7)),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Hnn),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,qnn),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,IN),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),Oun),Nt),zcn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,wk),nB),"Node Layering Strategy"),"Strategy for node layering."),Kun),Nt),Hsn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Gnn),nB),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),Run),Nt),jun),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,znn),nB),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),Q(-1)),sc),Wi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Unn),nB),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),Q(-1)),sc),Wi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ON),dHn),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),Q(4)),sc),Wi),Cn(Xn)))),Ti(e,ON,wk,yVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,DN),dHn),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),Q(2)),sc),Wi),Cn(Xn)))),Ti(e,DN,wk,EVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,$N),bHn),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),_un),Nt),Jsn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,FN),bHn),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),Q(0)),sc),Wi),Cn(Xn)))),Ti(e,FN,$N,null),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,xN),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),Q(nt)),sc),Wi),Cn(Xn)))),Ti(e,xN,wk,gVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,X6),gk),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),Iun),Nt),Kcn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Wnn),gk),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,LN),gk),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),Dr),Ai),Cn(Xn)))),Ti(e,LN,uA,HXn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,NN),gk),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),_i),oi),Cn(Xn)))),Ti(e,NN,X6,UXn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Xnn),gk),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),Q(-1)),sc),Wi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Vnn),gk),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),Q(-1)),sc),Wi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Qnn),wHn),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),Q(40)),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,BN),wHn),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),Pun),Nt),y_),Cn(Xn)))),Ti(e,BN,X6,_Xn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,XM),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),Sun),Nt),y_),Cn(Xn)))),Ti(e,XM,X6,NXn),Ti(e,XM,uA,BXn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,lg),gHn),"Node Placement Strategy"),"Strategy for node placement."),zun),Nt),Usn),Cn(Xn)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,VM),gHn),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),_i),oi),Cn(Xn)))),Ti(e,VM,lg,FVn),Ti(e,VM,lg,xVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,RN),pHn),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),Hun),Nt),Qcn),Cn(Xn)))),Ti(e,RN,lg,IVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,_N),pHn),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),qun),Nt),eun),Cn(Xn)))),Ti(e,_N,lg,DVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,KN),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),Dr),Ai),Cn(Xn)))),Ti(e,KN,lg,NVn),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,HN),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),Nt),Z_),Cn(vi)))),Ti(e,HN,lg,KVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,qN),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),Gun),Nt),Z_),Cn(Xn)))),Ti(e,qN,lg,_Vn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Jnn),vHn),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),xun),Nt),ion),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Ynn),vHn),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),Lun),Nt),ron),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,QM),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),Nun),Nt),uon),Cn(Xn)))),Ti(e,QM,pk,iVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,JM),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),Dr),Ai),Cn(Xn)))),Ti(e,JM,pk,cVn),Ti(e,JM,QM,uVn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,GN),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),Dr),Ai),Cn(Xn)))),Ti(e,GN,pk,ZXn),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Znn),gf),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,nen),gf),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,een),gf),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ten),gf),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ien),aen),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),Q(0)),sc),Wi),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ren),aen),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),Q(0)),sc),Wi),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,cen),aen),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),Q(0)),sc),Wi),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,zN),den),FKn),"Tries to further compact components (disconnected sub-graphs)."),!1),_i),oi),Cn(Xn)))),Ti(e,zN,q6,!0),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,uen),mHn),"Post Compaction Strategy"),kHn),Cun),Nt),sun),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,sen),mHn),"Post Compaction Constraint Calculation"),kHn),Eun),Nt),Rcn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,YM),ben),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,UN),ben),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),Q(16)),sc),Wi),Cn(Xn)))),Ti(e,UN,YM,!0),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,WN),ben),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),Q(5)),sc),Wi),Cn(Xn)))),Ti(e,WN,YM,!0),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Vh),wen),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),Vun),Nt),hon),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ZM),wen),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),Dr),Ai),Cn(Xn)))),Ti(e,ZM,Vh,nQn),Ti(e,ZM,Vh,eQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,nA),wen),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),Dr),Ai),Cn(Xn)))),Ti(e,nA,Vh,iQn),Ti(e,nA,Vh,rQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,V6),yHn),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),Xun),Nt),qcn),Cn(Xn)))),Ti(e,V6,Vh,hQn),Ti(e,V6,Vh,lQn),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,XN),yHn),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),jf),Ds),Cn(Xn)))),Ti(e,XN,V6,uQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,VN),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),Wun),sc),Wi),Cn(Xn)))),Ti(e,VN,V6,oQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,eA),jHn),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),Qun),Nt),fon),Cn(Xn)))),Ti(e,eA,Vh,EQn),Ti(e,eA,Vh,CQn),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,tA),jHn),"Valid Indices for Wrapping"),null),jf),Ds),Cn(Xn)))),Ti(e,tA,Vh,kQn),Ti(e,tA,Vh,yQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,iA),gen),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),_i),oi),Cn(Xn)))),Ti(e,iA,Vh,wQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,rA),gen),"Distance Penalty When Improving Cuts"),null),2),Dr),Ai),Cn(Xn)))),Ti(e,rA,Vh,dQn),Ti(e,rA,iA,!0),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,QN),gen),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),_i),oi),Cn(Xn)))),Ti(e,QN,Vh,pQn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,oen),eB),"Edge Label Side Selection"),"Method to decide on edge label sides."),Fun),Nt),Xcn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,fen),eB),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),$un),Nt),rv),pt(Xn,A(M($1,1),z,175,0,[D1]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,cA),vk),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),Aun),Nt),Zsn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,hen),vk),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),_i),oi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,JN),vk),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),Tun),Nt),zrn),Cn(Xn)))),Ti(e,JN,q6,null),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,len),vk),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),Mun),Nt),Gsn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,YN),vk),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),Dr),Ai),Cn(Xn)))),Ti(e,YN,cA,null),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ZN),vk),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),Dr),Ai),Cn(Xn)))),Ti(e,ZN,cA,null),R_n((new I4n,e))};var CXn,TXn,MXn,Eun,AXn,Cun,SXn,Tun,PXn,IXn,OXn,Mun,DXn,$Xn,Aun,FXn,xXn,LXn,Sun,NXn,BXn,RXn,Pun,_Xn,KXn,HXn,qXn,GXn,zXn,UXn,WXn,Iun,XXn,Oun,VXn,Dun,QXn,$un,JXn,Fun,YXn,ZXn,nVn,xun,eVn,Lun,tVn,Nun,iVn,rVn,cVn,uVn,sVn,oVn,fVn,hVn,lVn,aVn,Bun,dVn,bVn,wVn,gVn,pVn,vVn,Run,mVn,kVn,yVn,jVn,EVn,CVn,TVn,_un,MVn,Kun,AVn,SVn,PVn,Hun,IVn,OVn,qun,DVn,$Vn,FVn,xVn,LVn,NVn,BVn,RVn,Gun,_Vn,KVn,HVn,zun,qVn,Uun,GVn,zVn,UVn,WVn,XVn,VVn,QVn,JVn,YVn,ZVn,nQn,eQn,tQn,iQn,rQn,cQn,uQn,sQn,Wun,oQn,fQn,Xun,hQn,lQn,aQn,dQn,bQn,wQn,gQn,pQn,vQn,Vun,mQn,kQn,yQn,jQn,Qun,EQn,CQn;w(lc,"LayeredMetaDataProvider",848),b(986,1,zs,I4n),s.Qe=function(e){R_n(e)};var Jf,O_,zS,Im,US,Jun,WS,kp,XS,Yun,Zun,D_,Ll,$_,Wb,nsn,Jk,F_,esn,TQn,VS,x_,Om,Xb,MQn,as,tsn,isn,QS,L_,Yf,JS,Qh,rsn,csn,usn,N_,B_,ssn,S1,R_,osn,Vb,fsn,hsn,lsn,YS,Qb,Wa,asn,dsn,Mr,bsn,AQn,qc,ZS,wsn,gsn,psn,__,vsn,nP,msn,ksn,eP,y0,ysn,K_,Dm,jsn,j0,$m,tP,Xa,H_,lv,iP,Va,Esn,Csn,Tsn,av,Msn,SQn,PQn,IQn,OQn,E0,Jb,Lt,P1,DQn,Yb,Asn,dv,Ssn,Zb,$Qn,bv,Psn,yp,FQn,xQn,Yk,q_,Isn,Zk,Mo,Dg,jp,C0,Qa,rP,nw,G_,wv,gv,T0,$g,z_,ny,Fm,xm,U_,Osn,Dsn,$sn,Fsn,W_,xsn,Lsn,Nsn,Bsn,X_,cP;w(lc,"LayeredOptions",986),b(987,1,{},ywn),s.$e=function(){var e;return e=new Vmn,e},s._e=function(e){},w(lc,"LayeredOptions/LayeredFactory",987),b(1372,1,{}),s.a=0;var LQn;w(ac,"ElkSpacings/AbstractSpacingsBuilder",1372),b(779,1372,{},AQ);var uP,NQn;w(lc,"LayeredSpacings/LayeredSpacingsBuilder",779),b(313,22,{3:1,35:1,22:1,313:1,246:1,234:1},s5),s.Kf=function(){return vNn(this)},s.Xf=function(){return vNn(this)};var V_,Rsn,_sn,sP,Q_,Ksn,Hsn=Me(lc,"LayeringStrategy",313,Ie,Hde,xse),BQn;b(378,22,{3:1,35:1,22:1,378:1},vO);var J_,qsn,oP,Gsn=Me(lc,"LongEdgeOrderingStrategy",378,Ie,kle,Lse),RQn;b(197,22,{3:1,35:1,22:1,197:1},Gj);var Fg,xg,fP,Y_,Z_=Me(lc,"NodeFlexibility",197,Ie,Aae,Nse),_Qn;b(315,22,{3:1,35:1,22:1,315:1,246:1,234:1},V9),s.Kf=function(){return tNn(this)},s.Xf=function(){return tNn(this)};var Lm,nK,eK,Nm,zsn,Usn=Me(lc,"NodePlacementStrategy",315,Ie,hde,qse),KQn;b(260,22,{3:1,35:1,22:1,260:1},h2);var Wsn,ey,Xsn,Vsn,ty,Qsn,hP,lP,Jsn=Me(lc,"NodePromotionStrategy",260,Ie,K0e,Rse),HQn;b(339,22,{3:1,35:1,22:1,339:1},mO);var Ysn,Nl,tK,Zsn=Me(lc,"OrderingStrategy",339,Ie,Sle,_se),qQn;b(421,22,{3:1,35:1,22:1,421:1},JG);var iK,rK,non=Me(lc,"PortSortingStrategy",421,Ie,O1e,Kse),GQn;b(452,22,{3:1,35:1,22:1,452:1},kO);var Su,xc,Bm,zQn=Me(lc,"PortType",452,Ie,Ale,Bse),UQn;b(375,22,{3:1,35:1,22:1,375:1},yO);var eon,cK,ton,ion=Me(lc,"SelfLoopDistributionStrategy",375,Ie,Ple,Hse),WQn;b(376,22,{3:1,35:1,22:1,376:1},YG);var iy,uK,ron=Me(lc,"SelfLoopOrderingStrategy",376,Ie,M1e,Gse),XQn;b(304,1,{304:1},KRn),w(lc,"Spacings",304),b(336,22,{3:1,35:1,22:1,336:1},jO);var sK,con,Rm,uon=Me(lc,"SplineRoutingMode",336,Ie,Ole,zse),VQn;b(338,22,{3:1,35:1,22:1,338:1},EO);var oK,son,oon,fon=Me(lc,"ValidifyStrategy",338,Ie,Dle,Use),QQn;b(377,22,{3:1,35:1,22:1,377:1},CO);var ew,fK,pv,hon=Me(lc,"WrappingStrategy",377,Ie,Ile,Wse),JQn;b(1383,1,Ec,O4n),s.Yf=function(e){return u(e,37),YQn},s.pf=function(e,t){jje(this,u(e,37),t)};var YQn;w(fA,"DepthFirstCycleBreaker",1383),b(782,1,Ec,lW),s.Yf=function(e){return u(e,37),ZQn},s.pf=function(e,t){kTe(this,u(e,37),t)},s.Zf=function(e){return u(un(e,_T(this.d,e.c.length)),10)};var ZQn;w(fA,"GreedyCycleBreaker",782),b(1386,782,Ec,Skn),s.Zf=function(e){var t,i,r,c;for(c=null,t=nt,r=new E(e);r.a1&&(on(sn(k(Gi((Ln(0,e.c.length),u(e.c[0],10))),(nn(),Wb))))?aNn(e,this.d,u(this,660)):(Pn(),wi(e,this.d)),DOn(this.e,e))},s.Sf=function(e,t,i,r){var c,o,f,h,l,a,d;for(t!=iCn(i,e.length)&&(o=e[t-(i?1:-1)],LX(this.f,o,i?(ur(),xc):(ur(),Su))),c=e[t][0],d=!r||c.k==(Qn(),Xt),a=uf(e[t]),this.ag(a,d,!1,i),f=0,l=new E(a);l.a"),e0?r$(this.a,e[t-1],e[t]):!i&&t1&&(on(sn(k(Gi((Ln(0,e.c.length),u(e.c[0],10))),(nn(),Wb))))?aNn(e,this.d,this):(Pn(),wi(e,this.d)),on(sn(k(Gi((Ln(0,e.c.length),u(e.c[0],10))),Wb)))||DOn(this.e,e))},w(vu,"ModelOrderBarycenterHeuristic",660),b(1803,1,lt,a6n),s.ue=function(e,t){return L5e(this.a,u(e,10),u(t,10))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(vu,"ModelOrderBarycenterHeuristic/lambda$0$Type",1803),b(1403,1,Ec,R4n),s.Yf=function(e){var t;return u(e,37),t=iE(aJn),Ze(t,(Qi(),Hc),(rr(),kS)),t},s.pf=function(e,t){y1e((u(e,37),t))};var aJn;w(vu,"NoCrossingMinimizer",1403),b(796,402,Yen,yG),s.$f=function(e,t,i){var r,c,o,f,h,l,a,d,g,p,v;switch(g=this.g,i.g){case 1:{for(c=0,o=0,d=new E(e.j);d.a1&&(c.j==(J(),Vn)?this.b[e]=!0:c.j==Gn&&e>0&&(this.b[e-1]=!0))},s.f=0,w(ph,"AllCrossingsCounter",1798),b(587,1,{},tT),s.b=0,s.d=0,w(ph,"BinaryIndexedTree",587),b(524,1,{},b8);var don,dP;w(ph,"CrossingsCounter",524),b(1906,1,lt,d6n),s.ue=function(e,t){return Cfe(this.a,u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ph,"CrossingsCounter/lambda$0$Type",1906),b(1907,1,lt,b6n),s.ue=function(e,t){return Tfe(this.a,u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ph,"CrossingsCounter/lambda$1$Type",1907),b(1908,1,lt,w6n),s.ue=function(e,t){return Mfe(this.a,u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ph,"CrossingsCounter/lambda$2$Type",1908),b(1909,1,lt,g6n),s.ue=function(e,t){return Afe(this.a,u(e,11),u(t,11))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ph,"CrossingsCounter/lambda$3$Type",1909),b(1910,1,Yn,p6n),s.td=function(e){o0e(this.a,u(e,11))},w(ph,"CrossingsCounter/lambda$4$Type",1910),b(1911,1,Ve,v6n),s.Mb=function(e){return jre(this.a,u(e,11))},w(ph,"CrossingsCounter/lambda$5$Type",1911),b(1912,1,Yn,m6n),s.td=function(e){Ckn(this,e)},w(ph,"CrossingsCounter/lambda$6$Type",1912),b(1913,1,Yn,Q7n),s.td=function(e){var t;h3(),ll(this.b,(t=this.a,u(e,11),t))},w(ph,"CrossingsCounter/lambda$7$Type",1913),b(826,1,_f,UH),s.Lb=function(e){return h3(),ai(u(e,11),(G(),Au))},s.Fb=function(e){return this===e},s.Mb=function(e){return h3(),ai(u(e,11),(G(),Au))},w(ph,"CrossingsCounter/lambda$8$Type",826),b(1905,1,{},k6n),w(ph,"HyperedgeCrossingsCounter",1905),b(467,1,{35:1,467:1},_jn),s.wd=function(e){return cpe(this,u(e,467))},s.b=0,s.c=0,s.e=0,s.f=0;var eMe=w(ph,"HyperedgeCrossingsCounter/Hyperedge",467);b(362,1,{35:1,362:1},nC),s.wd=function(e){return i9e(this,u(e,362))},s.b=0,s.c=0;var dJn=w(ph,"HyperedgeCrossingsCounter/HyperedgeCorner",362);b(523,22,{3:1,35:1,22:1,523:1},ZG);var Km,Hm,bJn=Me(ph,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",523,Ie,D1e,Vse),wJn;b(1405,1,Ec,P4n),s.Yf=function(e){return u(k(u(e,37),(G(),Mc)),21).Hc((or(),$s))?gJn:null},s.pf=function(e,t){C4e(this,u(e,37),t)};var gJn;w(hr,"InteractiveNodePlacer",1405),b(1406,1,Ec,S4n),s.Yf=function(e){return u(k(u(e,37),(G(),Mc)),21).Hc((or(),$s))?pJn:null},s.pf=function(e,t){o3e(this,u(e,37),t)};var pJn,bP,wP;w(hr,"LinearSegmentsNodePlacer",1406),b(257,1,{35:1,257:1},Jq),s.wd=function(e){return Fie(this,u(e,257))},s.Fb=function(e){var t;return I(e,257)?(t=u(e,257),this.b==t.b):!1},s.Hb=function(){return this.b},s.Ib=function(){return"ls"+kl(this.e)},s.a=0,s.b=0,s.c=-1,s.d=-1,s.g=0;var vJn=w(hr,"LinearSegmentsNodePlacer/LinearSegment",257);b(1408,1,Ec,dCn),s.Yf=function(e){return u(k(u(e,37),(G(),Mc)),21).Hc((or(),$s))?mJn:null},s.pf=function(e,t){aTe(this,u(e,37),t)},s.b=0,s.g=0;var mJn;w(hr,"NetworkSimplexPlacer",1408),b(1427,1,lt,Swn),s.ue=function(e,t){return Wc(u(e,19).a,u(t,19).a)},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(hr,"NetworkSimplexPlacer/0methodref$compare$Type",1427),b(1429,1,lt,Pwn),s.ue=function(e,t){return Wc(u(e,19).a,u(t,19).a)},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(hr,"NetworkSimplexPlacer/1methodref$compare$Type",1429),b(649,1,{649:1},J7n);var tMe=w(hr,"NetworkSimplexPlacer/EdgeRep",649);b(401,1,{401:1},qW),s.b=!1;var iMe=w(hr,"NetworkSimplexPlacer/NodeRep",401);b(508,12,{3:1,4:1,20:1,28:1,52:1,12:1,14:1,15:1,54:1,508:1},u9n),w(hr,"NetworkSimplexPlacer/Path",508),b(1409,1,{},Iwn),s.Kb=function(e){return u(e,17).d.i.k},w(hr,"NetworkSimplexPlacer/Path/lambda$0$Type",1409),b(1410,1,Ve,Own),s.Mb=function(e){return u(e,267)==(Qn(),pi)},w(hr,"NetworkSimplexPlacer/Path/lambda$1$Type",1410),b(1411,1,{},Dwn),s.Kb=function(e){return u(e,17).d.i},w(hr,"NetworkSimplexPlacer/Path/lambda$2$Type",1411),b(1412,1,Ve,y6n),s.Mb=function(e){return Cjn(f$n(u(e,10)))},w(hr,"NetworkSimplexPlacer/Path/lambda$3$Type",1412),b(1413,1,Ve,$wn),s.Mb=function(e){return dfe(u(e,11))},w(hr,"NetworkSimplexPlacer/lambda$0$Type",1413),b(1414,1,Yn,Y7n),s.td=function(e){hce(this.a,this.b,u(e,11))},w(hr,"NetworkSimplexPlacer/lambda$1$Type",1414),b(1423,1,Yn,j6n),s.td=function(e){I6e(this.a,u(e,17))},w(hr,"NetworkSimplexPlacer/lambda$10$Type",1423),b(1424,1,{},Fwn),s.Kb=function(e){return ns(),new $n(null,new xn(u(e,29).a,16))},w(hr,"NetworkSimplexPlacer/lambda$11$Type",1424),b(1425,1,Yn,E6n),s.td=function(e){M7e(this.a,u(e,10))},w(hr,"NetworkSimplexPlacer/lambda$12$Type",1425),b(1426,1,{},xwn),s.Kb=function(e){return ns(),Q(u(e,121).e)},w(hr,"NetworkSimplexPlacer/lambda$13$Type",1426),b(1428,1,{},Lwn),s.Kb=function(e){return ns(),Q(u(e,121).e)},w(hr,"NetworkSimplexPlacer/lambda$15$Type",1428),b(1430,1,Ve,Nwn),s.Mb=function(e){return ns(),u(e,401).c.k==(Qn(),ii)},w(hr,"NetworkSimplexPlacer/lambda$17$Type",1430),b(1431,1,Ve,Bwn),s.Mb=function(e){return ns(),u(e,401).c.j.c.length>1},w(hr,"NetworkSimplexPlacer/lambda$18$Type",1431),b(1432,1,Yn,kTn),s.td=function(e){g2e(this.c,this.b,this.d,this.a,u(e,401))},s.c=0,s.d=0,w(hr,"NetworkSimplexPlacer/lambda$19$Type",1432),b(1415,1,{},Rwn),s.Kb=function(e){return ns(),new $n(null,new xn(u(e,29).a,16))},w(hr,"NetworkSimplexPlacer/lambda$2$Type",1415),b(1433,1,Yn,C6n),s.td=function(e){oce(this.a,u(e,11))},s.a=0,w(hr,"NetworkSimplexPlacer/lambda$20$Type",1433),b(1434,1,{},_wn),s.Kb=function(e){return ns(),new $n(null,new xn(u(e,29).a,16))},w(hr,"NetworkSimplexPlacer/lambda$21$Type",1434),b(1435,1,Yn,T6n),s.td=function(e){Ece(this.a,u(e,10))},w(hr,"NetworkSimplexPlacer/lambda$22$Type",1435),b(1436,1,Ve,Kwn),s.Mb=function(e){return Cjn(e)},w(hr,"NetworkSimplexPlacer/lambda$23$Type",1436),b(1437,1,{},Hwn),s.Kb=function(e){return ns(),new $n(null,new xn(u(e,29).a,16))},w(hr,"NetworkSimplexPlacer/lambda$24$Type",1437),b(1438,1,Ve,M6n),s.Mb=function(e){return Pre(this.a,u(e,10))},w(hr,"NetworkSimplexPlacer/lambda$25$Type",1438),b(1439,1,Yn,Z7n),s.td=function(e){Y5e(this.a,this.b,u(e,10))},w(hr,"NetworkSimplexPlacer/lambda$26$Type",1439),b(1440,1,Ve,qwn),s.Mb=function(e){return ns(),!Xi(u(e,17))},w(hr,"NetworkSimplexPlacer/lambda$27$Type",1440),b(1441,1,Ve,Gwn),s.Mb=function(e){return ns(),!Xi(u(e,17))},w(hr,"NetworkSimplexPlacer/lambda$28$Type",1441),b(1442,1,{},A6n),s.Ce=function(e,t){return kce(this.a,u(e,29),u(t,29))},w(hr,"NetworkSimplexPlacer/lambda$29$Type",1442),b(1416,1,{},zwn),s.Kb=function(e){return ns(),new $n(null,new Cd(new re(ue(ei(u(e,10)).a.Kc(),new An))))},w(hr,"NetworkSimplexPlacer/lambda$3$Type",1416),b(1417,1,Ve,Uwn),s.Mb=function(e){return ns(),sae(u(e,17))},w(hr,"NetworkSimplexPlacer/lambda$4$Type",1417),b(1418,1,Yn,S6n),s.td=function(e){Tye(this.a,u(e,17))},w(hr,"NetworkSimplexPlacer/lambda$5$Type",1418),b(1419,1,{},Wwn),s.Kb=function(e){return ns(),new $n(null,new xn(u(e,29).a,16))},w(hr,"NetworkSimplexPlacer/lambda$6$Type",1419),b(1420,1,Ve,Xwn),s.Mb=function(e){return ns(),u(e,10).k==(Qn(),ii)},w(hr,"NetworkSimplexPlacer/lambda$7$Type",1420),b(1421,1,{},Vwn),s.Kb=function(e){return ns(),new $n(null,new Cd(new re(ue(Kh(u(e,10)).a.Kc(),new An))))},w(hr,"NetworkSimplexPlacer/lambda$8$Type",1421),b(1422,1,Ve,Qwn),s.Mb=function(e){return ns(),sfe(u(e,17))},w(hr,"NetworkSimplexPlacer/lambda$9$Type",1422),b(1404,1,Ec,z4n),s.Yf=function(e){return u(k(u(e,37),(G(),Mc)),21).Hc((or(),$s))?kJn:null},s.pf=function(e,t){uje(u(e,37),t)};var kJn;w(hr,"SimpleNodePlacer",1404),b(180,1,{180:1},tg),s.Ib=function(){var e;return e="",this.c==(xf(),M0)?e+=Z2:this.c==I1&&(e+=Y2),this.o==(tf(),Ja)?e+=hN:this.o==yf?e+="UP":e+="BALANCED",e},w(Sl,"BKAlignedLayout",180),b(516,22,{3:1,35:1,22:1,516:1},ez);var I1,M0,yJn=Me(Sl,"BKAlignedLayout/HDirection",516,Ie,F1e,Qse),jJn;b(515,22,{3:1,35:1,22:1,515:1},nz);var Ja,yf,EJn=Me(Sl,"BKAlignedLayout/VDirection",515,Ie,x1e,Jse),CJn;b(1634,1,{},nkn),w(Sl,"BKAligner",1634),b(1637,1,{},$Fn),w(Sl,"BKCompactor",1637),b(654,1,{654:1},Jwn),s.a=0,w(Sl,"BKCompactor/ClassEdge",654),b(458,1,{458:1},r9n),s.a=null,s.b=0,w(Sl,"BKCompactor/ClassNode",458),b(1407,1,Ec,Mkn),s.Yf=function(e){return u(k(u(e,37),(G(),Mc)),21).Hc((or(),$s))?TJn:null},s.pf=function(e,t){ATe(this,u(e,37),t)},s.d=!1;var TJn;w(Sl,"BKNodePlacer",1407),b(1635,1,{},Ywn),s.d=0,w(Sl,"NeighborhoodInformation",1635),b(1636,1,lt,P6n),s.ue=function(e,t){return F0e(this,u(e,46),u(t,46))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Sl,"NeighborhoodInformation/NeighborComparator",1636),b(808,1,{}),w(Sl,"ThresholdStrategy",808),b(1763,808,{},f9n),s.bg=function(e,t,i){return this.a.o==(tf(),yf)?Ft:Qt},s.cg=function(){},w(Sl,"ThresholdStrategy/NullThresholdStrategy",1763),b(579,1,{579:1},ekn),s.c=!1,s.d=!1,w(Sl,"ThresholdStrategy/Postprocessable",579),b(1764,808,{},h9n),s.bg=function(e,t,i){var r,c,o;return c=t==i,r=this.a.a[i.p]==t,c||r?(o=e,this.a.c==(xf(),M0)?(c&&(o=hL(this,t,!0)),!isNaN(o)&&!isFinite(o)&&r&&(o=hL(this,i,!1))):(c&&(o=hL(this,t,!0)),!isNaN(o)&&!isFinite(o)&&r&&(o=hL(this,i,!1))),o):e},s.cg=function(){for(var e,t,i,r,c;this.d.b!=0;)c=u(J1e(this.d),579),r=nRn(this,c),r.a&&(e=r.a,i=on(this.a.f[this.a.g[c.b.p].p]),!(!i&&!Xi(e)&&e.c.i.c==e.d.i.c)&&(t=sNn(this,c),t||Nre(this.e,c)));for(;this.e.a.c.length!=0;)sNn(this,u(pDn(this.e),579))},w(Sl,"ThresholdStrategy/SimpleThresholdStrategy",1764),b(635,1,{635:1,246:1,234:1},Zwn),s.Kf=function(){return AOn(this)},s.Xf=function(){return AOn(this)};var hK;w(uB,"EdgeRouterFactory",635),b(1458,1,Ec,U4n),s.Yf=function(e){return c7e(u(e,37))},s.pf=function(e,t){dje(u(e,37),t)};var MJn,AJn,SJn,PJn,IJn,bon,OJn,DJn;w(uB,"OrthogonalEdgeRouter",1458),b(1451,1,Ec,Akn),s.Yf=function(e){return P4e(u(e,37))},s.pf=function(e,t){$Ce(this,u(e,37),t)};var $Jn,FJn,xJn,LJn,cy,NJn;w(uB,"PolylineEdgeRouter",1451),b(1452,1,_f,ngn),s.Lb=function(e){return IV(u(e,10))},s.Fb=function(e){return this===e},s.Mb=function(e){return IV(u(e,10))},w(uB,"PolylineEdgeRouter/1",1452),b(1809,1,Ve,egn),s.Mb=function(e){return u(e,129).c==(No(),Bl)},w(zo,"HyperEdgeCycleDetector/lambda$0$Type",1809),b(1810,1,{},tgn),s.Ge=function(e){return u(e,129).d},w(zo,"HyperEdgeCycleDetector/lambda$1$Type",1810),b(1811,1,Ve,ign),s.Mb=function(e){return u(e,129).c==(No(),Bl)},w(zo,"HyperEdgeCycleDetector/lambda$2$Type",1811),b(1812,1,{},rgn),s.Ge=function(e){return u(e,129).d},w(zo,"HyperEdgeCycleDetector/lambda$3$Type",1812),b(1813,1,{},cgn),s.Ge=function(e){return u(e,129).d},w(zo,"HyperEdgeCycleDetector/lambda$4$Type",1813),b(1814,1,{},ugn),s.Ge=function(e){return u(e,129).d},w(zo,"HyperEdgeCycleDetector/lambda$5$Type",1814),b(112,1,{35:1,112:1},n7),s.wd=function(e){return xie(this,u(e,112))},s.Fb=function(e){var t;return I(e,112)?(t=u(e,112),this.g==t.g):!1},s.Hb=function(){return this.g},s.Ib=function(){var e,t,i,r;for(e=new Yu("{"),r=new E(this.n);r.a"+this.b+" ("+Uce(this.c)+")"},s.d=0,w(zo,"HyperEdgeSegmentDependency",129),b(520,22,{3:1,35:1,22:1,520:1},tz);var Bl,tw,BJn=Me(zo,"HyperEdgeSegmentDependency/DependencyType",520,Ie,$1e,Yse),RJn;b(1815,1,{},I6n),w(zo,"HyperEdgeSegmentSplitter",1815),b(1816,1,{},s8n),s.a=0,s.b=0,w(zo,"HyperEdgeSegmentSplitter/AreaRating",1816),b(329,1,{329:1},hD),s.a=0,s.b=0,s.c=0,w(zo,"HyperEdgeSegmentSplitter/FreeArea",329),b(1817,1,lt,bgn),s.ue=function(e,t){return Hue(u(e,112),u(t,112))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(zo,"HyperEdgeSegmentSplitter/lambda$0$Type",1817),b(1818,1,Yn,yTn),s.td=function(e){Wae(this.a,this.d,this.c,this.b,u(e,112))},s.b=0,w(zo,"HyperEdgeSegmentSplitter/lambda$1$Type",1818),b(1819,1,{},wgn),s.Kb=function(e){return new $n(null,new xn(u(e,112).e,16))},w(zo,"HyperEdgeSegmentSplitter/lambda$2$Type",1819),b(1820,1,{},ggn),s.Kb=function(e){return new $n(null,new xn(u(e,112).j,16))},w(zo,"HyperEdgeSegmentSplitter/lambda$3$Type",1820),b(1821,1,{},pgn),s.Fe=function(e){return K(Y(e))},w(zo,"HyperEdgeSegmentSplitter/lambda$4$Type",1821),b(655,1,{},FD),s.a=0,s.b=0,s.c=0,w(zo,"OrthogonalRoutingGenerator",655),b(1638,1,{},vgn),s.Kb=function(e){return new $n(null,new xn(u(e,112).e,16))},w(zo,"OrthogonalRoutingGenerator/lambda$0$Type",1638),b(1639,1,{},mgn),s.Kb=function(e){return new $n(null,new xn(u(e,112).j,16))},w(zo,"OrthogonalRoutingGenerator/lambda$1$Type",1639),b(661,1,{}),w(sB,"BaseRoutingDirectionStrategy",661),b(1807,661,{},l9n),s.dg=function(e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C;if(!(e.r&&!e.q))for(d=t+e.o*i,a=new E(e.n);a.aHf&&(o=d,c=e,r=new fn(g,o),Ke(f.a,r),n0(this,f,c,r,!1),p=e.r,p&&(v=K(Y(qo(p.e,0))),r=new fn(v,o),Ke(f.a,r),n0(this,f,c,r,!1),o=t+p.o*i,c=p,r=new fn(v,o),Ke(f.a,r),n0(this,f,c,r,!1)),r=new fn(C,o),Ke(f.a,r),n0(this,f,c,r,!1)))},s.eg=function(e){return e.i.n.a+e.n.a+e.a.a},s.fg=function(){return J(),ae},s.gg=function(){return J(),Kn},w(sB,"NorthToSouthRoutingStrategy",1807),b(1808,661,{},a9n),s.dg=function(e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C;if(!(e.r&&!e.q))for(d=t-e.o*i,a=new E(e.n);a.aHf&&(o=d,c=e,r=new fn(g,o),Ke(f.a,r),n0(this,f,c,r,!1),p=e.r,p&&(v=K(Y(qo(p.e,0))),r=new fn(v,o),Ke(f.a,r),n0(this,f,c,r,!1),o=t-p.o*i,c=p,r=new fn(v,o),Ke(f.a,r),n0(this,f,c,r,!1)),r=new fn(C,o),Ke(f.a,r),n0(this,f,c,r,!1)))},s.eg=function(e){return e.i.n.a+e.n.a+e.a.a},s.fg=function(){return J(),Kn},s.gg=function(){return J(),ae},w(sB,"SouthToNorthRoutingStrategy",1808),b(1806,661,{},d9n),s.dg=function(e,t,i){var r,c,o,f,h,l,a,d,g,p,v,m,C;if(!(e.r&&!e.q))for(d=t+e.o*i,a=new E(e.n);a.aHf&&(o=d,c=e,r=new fn(o,g),Ke(f.a,r),n0(this,f,c,r,!0),p=e.r,p&&(v=K(Y(qo(p.e,0))),r=new fn(o,v),Ke(f.a,r),n0(this,f,c,r,!0),o=t+p.o*i,c=p,r=new fn(o,v),Ke(f.a,r),n0(this,f,c,r,!0)),r=new fn(o,C),Ke(f.a,r),n0(this,f,c,r,!0)))},s.eg=function(e){return e.i.n.b+e.n.b+e.a.b},s.fg=function(){return J(),Vn},s.gg=function(){return J(),Gn},w(sB,"WestToEastRoutingStrategy",1806),b(813,1,{},jZ),s.Ib=function(){return kl(this.a)},s.b=0,s.c=!1,s.d=!1,s.f=0,w(Fb,"NubSpline",813),b(407,1,{407:1},LNn,eMn),w(Fb,"NubSpline/PolarCP",407),b(1453,1,Ec,TFn),s.Yf=function(e){return vve(u(e,37))},s.pf=function(e,t){YCe(this,u(e,37),t)};var _Jn,KJn,HJn,qJn,GJn;w(Fb,"SplineEdgeRouter",1453),b(268,1,{268:1},MC),s.Ib=function(){return this.a+" ->("+this.c+") "+this.b},s.c=0,w(Fb,"SplineEdgeRouter/Dependency",268),b(455,22,{3:1,35:1,22:1,455:1},iz);var Rl,Lg,zJn=Me(Fb,"SplineEdgeRouter/SideToProcess",455,Ie,L1e,Zse),UJn;b(1454,1,Ve,agn),s.Mb=function(e){return C6(),!u(e,128).o},w(Fb,"SplineEdgeRouter/lambda$0$Type",1454),b(1455,1,{},lgn),s.Ge=function(e){return C6(),u(e,128).v+1},w(Fb,"SplineEdgeRouter/lambda$1$Type",1455),b(1456,1,Yn,tkn),s.td=function(e){ffe(this.a,this.b,u(e,46))},w(Fb,"SplineEdgeRouter/lambda$2$Type",1456),b(1457,1,Yn,ikn),s.td=function(e){hfe(this.a,this.b,u(e,46))},w(Fb,"SplineEdgeRouter/lambda$3$Type",1457),b(128,1,{35:1,128:1},Zxn,SZ),s.wd=function(e){return Lie(this,u(e,128))},s.b=0,s.e=!1,s.f=0,s.g=0,s.j=!1,s.k=!1,s.n=0,s.o=!1,s.p=!1,s.q=!1,s.s=0,s.u=0,s.v=0,s.F=0,w(Fb,"SplineSegment",128),b(459,1,{459:1},dgn),s.a=0,s.b=!1,s.c=!1,s.d=!1,s.e=!1,s.f=0,w(Fb,"SplineSegment/EdgeInformation",459),b(1234,1,{},sgn),w(Q6,Enn,1234),b(1235,1,lt,ogn),s.ue=function(e,t){return U6e(u(e,135),u(t,135))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(Q6,NKn,1235),b(1233,1,{},E8n),w(Q6,"MrTree",1233),b(393,22,{3:1,35:1,22:1,393:1,246:1,234:1},zj),s.Kf=function(){return CLn(this)},s.Xf=function(){return CLn(this)};var gP,qm,uy,Gm,won=Me(Q6,"TreeLayoutPhases",393,Ie,Sae,noe),WJn;b(1130,209,xa,qjn),s.Ze=function(e,t){var i,r,c,o,f,h,l;for(on(sn(hn(e,(Zd(),yon))))||oC((i=new O9((K0(),new N0(e))),i)),f=(h=new AC,Pr(h,e),H(h,(cc(),Wm),e),l=new we,Nke(e,h,l),nye(e,h,l),h),o=Wke(this.a,f),c=new E(o);c.a"+wC(this.c):"e_"+mt(this)},w(J6,"TEdge",188),b(135,134,{3:1,135:1,94:1,134:1},AC),s.Ib=function(){var e,t,i,r,c;for(c=null,r=_e(this.b,0);r.b!=r.d.c;)i=u(Re(r),86),c+=(i.c==null||i.c.length==0?"n_"+i.g:"n_"+i.c)+` +`;for(t=_e(this.a,0);t.b!=t.d.c;)e=u(Re(t),188),c+=(e.b&&e.c?wC(e.b)+"->"+wC(e.c):"e_"+mt(e))+` +`;return c};var rMe=w(J6,"TGraph",135);b(633,502,{3:1,502:1,633:1,94:1,134:1}),w(J6,"TShape",633),b(86,633,{3:1,502:1,86:1,633:1,94:1,134:1},hF),s.Ib=function(){return wC(this)};var cMe=w(J6,"TNode",86);b(255,1,ah,X1),s.Jc=function(e){$i(this,e)},s.Kc=function(){var e;return e=_e(this.a.d,0),new e2(e)},w(J6,"TNode/2",255),b(358,1,ji,e2),s.Nb=function(e){Oi(this,e)},s.Pb=function(){return u(Re(this.a),188).c},s.Ob=function(){return yj(this.a)},s.Qb=function(){HC(this.a)},w(J6,"TNode/2/1",358),b(1840,1,xt,Hjn),s.pf=function(e,t){gye(this,u(e,135),t)},w(up,"FanProcessor",1840),b(327,22,{3:1,35:1,22:1,327:1,234:1},o5),s.Kf=function(){switch(this.g){case 0:return new S9n;case 1:return new Hjn;case 2:return new jgn;case 3:return new kgn;case 4:return new Cgn;case 5:return new Tgn;default:throw T(new Hn(AN+(this.f!=null?this.f:""+this.g)))}};var lK,aK,dK,bK,wK,pP,XJn=Me(up,Fnn,327,Ie,Gde,eoe),VJn;b(1843,1,xt,kgn),s.pf=function(e,t){Yme(this,u(e,135),t)},s.a=0,w(up,"LevelHeightProcessor",1843),b(1844,1,ah,ygn),s.Jc=function(e){$i(this,e)},s.Kc=function(){return Pn(),Zp(),X4},w(up,"LevelHeightProcessor/1",1844),b(1841,1,xt,jgn),s.pf=function(e,t){c6e(this,u(e,135),t)},s.a=0,w(up,"NeighborsProcessor",1841),b(1842,1,ah,Egn),s.Jc=function(e){$i(this,e)},s.Kc=function(){return Pn(),Zp(),X4},w(up,"NeighborsProcessor/1",1842),b(1845,1,xt,Cgn),s.pf=function(e,t){Jme(this,u(e,135),t)},s.a=0,w(up,"NodePositionProcessor",1845),b(1839,1,xt,S9n),s.pf=function(e,t){Eje(this,u(e,135))},w(up,"RootProcessor",1839),b(1846,1,xt,Tgn),s.pf=function(e,t){Dge(u(e,135))},w(up,"Untreeifyer",1846);var sy,zm,QJn,gK,vP,Um,pK,mP,kP,vv,Wm,yP,O1,gon,JJn,vK,iw,mK,pon;b(851,1,zs,G4n),s.Qe=function(e){En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Zen),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),mon),(y1(),Nt)),Mon),Cn((Ho(),Xn))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ntn),""),"Search Order"),"Which search order to use when computing a spanning tree."),von),Nt),Son),Cn(Xn)))),QRn((new q4n,e))};var YJn,von,ZJn,mon;w(lA,"MrTreeMetaDataProvider",851),b(994,1,zs,q4n),s.Qe=function(e){QRn(e)};var nYn,kon,eYn,tYn,iYn,rYn,yon,cYn,jon,uYn,jP,Eon,sYn,Con,oYn;w(lA,"MrTreeOptions",994),b(995,1,{},Mgn),s.$e=function(){var e;return e=new qjn,e},s._e=function(e){},w(lA,"MrTreeOptions/MrtreeFactory",995),b(480,22,{3:1,35:1,22:1,480:1},rz);var kK,Ton,Mon=Me(lA,"OrderWeighting",480,Ie,B1e,toe),fYn;b(425,22,{3:1,35:1,22:1,425:1},cz);var Aon,yK,Son=Me(lA,"TreeifyingOrder",425,Ie,N1e,roe),hYn;b(1459,1,Ec,F4n),s.Yf=function(e){return u(e,135),lYn},s.pf=function(e,t){Obe(this,u(e,135),t)};var lYn;w("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1459),b(1460,1,Ec,x4n),s.Yf=function(e){return u(e,135),aYn},s.pf=function(e,t){w6e(this,u(e,135),t)};var aYn;w("org.eclipse.elk.alg.mrtree.p2order","NodeOrderer",1460),b(1461,1,Ec,$4n),s.Yf=function(e){return u(e,135),dYn},s.pf=function(e,t){D7e(this,u(e,135),t)},s.a=0;var dYn;w("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1461),b(1462,1,Ec,L4n),s.Yf=function(e){return u(e,135),bYn},s.pf=function(e,t){r4e(u(e,135),t)};var bYn;w("org.eclipse.elk.alg.mrtree.p4route","EdgeRouter",1462);var Xm;b(495,22,{3:1,35:1,22:1,495:1,246:1,234:1},uz),s.Kf=function(){return t$n(this)},s.Xf=function(){return t$n(this)};var EP,mv,Pon=Me(etn,"RadialLayoutPhases",495,Ie,R1e,ioe),wYn;b(1131,209,xa,j8n),s.Ze=function(e,t){var i,r,c,o,f,h;if(i=cLn(this,e),le(t,"Radial layout",i.c.length),on(sn(hn(e,(gb(),Ron))))||oC((r=new O9((K0(),new N0(e))),r)),h=yve(e),gr(e,(C5(),Xm),h),!h)throw T(new Hn("The given graph is not a tree!"));for(c=K(Y(hn(e,MP))),c==0&&(c=mLn(e)),gr(e,MP,c),f=new E(cLn(this,e));f.a0&&ADn((Te(t-1,e.length),e.charCodeAt(t-1)),XKn);)--t;if(r>=t)throw T(new Hn("The given string does not contain any numbers."));if(c=Tb(e.substr(r,t-r),`,|;|\r| +`),c.length!=2)throw T(new Hn("Exactly two numbers are expected, "+c.length+" were found."));try{this.a=kb(mb(c[0])),this.b=kb(mb(c[1]))}catch(o){throw o=jt(o),I(o,127)?(i=o,T(new Hn(VKn+i))):T(o)}},s.Ib=function(){return"("+this.a+","+this.b+")"},s.a=0,s.b=0;var di=w(dk,"KVector",8);b(74,68,{3:1,4:1,20:1,28:1,52:1,14:1,68:1,15:1,74:1,414:1},hu,mj,ljn),s.Pc=function(){return Gwe(this)},s.Jf=function(e){var t,i,r,c,o,f;r=Tb(e,`,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`),_s(this);try{for(i=0,o=0,c=0,f=0;i0&&(o%2==0?c=kb(r[i]):f=kb(r[i]),o>0&&o%2!=0&&Ke(this,new fn(c,f)),++o),++i}catch(h){throw h=jt(h),I(h,127)?(t=h,T(new Hn("The given string does not match the expected format for vectors."+t))):T(h)}},s.Ib=function(){var e,t,i;for(e=new Yu("("),t=_e(this,0);t.b!=t.d.c;)i=u(Re(t),8),De(e,i.a+","+i.b),t.b!=t.d.c&&(e.a+="; ");return(e.a+=")",e).a};var Bfn=w(dk,"KVectorChain",74);b(248,22,{3:1,35:1,22:1,248:1},f5);var HK,$P,FP,ly,ay,xP,Rfn=Me(Ws,"Alignment",248,Ie,Bde,yoe),FZn;b(979,1,zs,Q4n),s.Qe=function(e){zBn(e)};var _fn,qK,xZn,Kfn,Hfn,LZn,qfn,NZn,BZn,Gfn,zfn,RZn;w(Ws,"BoxLayouterOptions",979),b(980,1,{},m2n),s.$e=function(){var e;return e=new A2n,e},s._e=function(e){},w(Ws,"BoxLayouterOptions/BoxFactory",980),b(291,22,{3:1,35:1,22:1,291:1},h5);var dy,GK,by,wy,gy,zK,UK=Me(Ws,"ContentAlignment",291,Ie,Nde,joe),_Zn;b(684,1,zs,nq),s.Qe=function(e){En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,GHn),""),"Layout Algorithm"),"Select a specific layout algorithm."),(y1(),kv)),tn),Cn((Ho(),Xn))))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,zHn),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),jf),oMe),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Oen),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),Ufn),Nt),Rfn),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,ep),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Ttn),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),jf),Bfn),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,sA),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),Xfn),Cp),UK),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,mk),""),"Debug Mode"),"Whether additional debug information shall be generated."),(qn(),!1)),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Fen),""),bnn),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),Vfn),Nt),e9),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,pk),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),Yfn),Nt),cH),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,dA),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,uA),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),thn),Nt),Khn),pt(Xn,A(M($1,1),z,175,0,[vi]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,u0),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),ahn),jf),Wrn),pt(Xn,A(M($1,1),z,175,0,[vi]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,lk),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,cB),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,G6),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,CN),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),phn),Nt),Ghn),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,oA),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),jf),di),pt(vi,A(M($1,1),z,175,0,[Ya,D1]))))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,hk),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),sc),Wi),pt(vi,A(M($1,1),z,175,0,[Zf]))))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,HM),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,q6),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,qen),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),rhn),jf),Bfn),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Uen),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),_i),oi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Wen),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),_i),oi),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,LTe),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),jf),dMe),pt(Xn,A(M($1,1),z,175,0,[D1]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Ven),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),chn),jf),Urn),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Pen),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),_i),oi),pt(vi,A(M($1,1),z,175,0,[Zf,Ya,D1]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,UHn),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),Dr),Ai),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,WHn),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,XHn),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),Q(100)),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,VHn),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,QHn),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),Q(4e3)),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,JHn),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),Q(400)),sc),Wi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,YHn),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ZHn),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,nqn),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,eqn),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Ctn),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),Wfn),Nt),Qhn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,pen),gf),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ven),gf),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,vN),gf),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,men),gf),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,EN),gf),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ken),gf),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,yen),gf),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Cen),gf),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,jen),gf),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Een),gf),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Db),gf),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Ten),gf),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),Dr),Ai),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Men),gf),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),Dr),Ai),pt(Xn,A(M($1,1),z,175,0,[vi]))))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Aen),gf),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),jf),yne),pt(vi,A(M($1,1),z,175,0,[Zf,Ya,D1]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Qen),gf),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),Ahn),jf),Urn),Cn(Xn)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,rB),rqn),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),sc),Wi),pt(Xn,A(M($1,1),z,175,0,[vi]))))),Ti(e,rB,iB,XZn),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,iB),rqn),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),dhn),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,xen),cqn),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),shn),jf),Wrn),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,F4),cqn),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),ohn),Cp),lr),pt(vi,A(M($1,1),z,175,0,[D1]))))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Ben),wA),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),whn),Nt),c9),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Ren),wA),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),Nt),c9),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,_en),wA),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),Nt),c9),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Ken),wA),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),Nt),c9),Cn(vi)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Hen),wA),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),Nt),c9),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,hg),CB),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),fhn),Cp),o9),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,tp),CB),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),lhn),Cp),Uhn),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,ip),CB),"Node Size Minimum"),"The minimal size to which a node can be reduced."),hhn),jf),di),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,tB),CB),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),_i),oi),Cn(Xn)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Gen),eB),"Edge Label Placement"),"Gives a hint on where to put edge labels."),Qfn),Nt),Phn),Cn(D1)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,qM),eB),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),_i),oi),Cn(D1)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,NTe),"font"),"Font Name"),"Font name used for a label."),kv),tn),Cn(D1)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,tqn),"font"),"Font Size"),"Font size used for a label."),sc),Wi),Cn(D1)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Xen),TB),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),jf),di),Cn(Ya)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,zen),TB),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),sc),Wi),Cn(Ya)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Ien),TB),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),khn),Nt),Zi),Cn(Ya)))),En(e,new bn(yn(kn(jn(gn(mn(pn(vn(new dn,Sen),TB),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),Dr),Ai),Cn(Ya)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,x4),Mtn),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),vhn),Cp),qP),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Len),Mtn),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),_i),oi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Nen),Mtn),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),_i),oi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,Den),uqn),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),_i),oi),Cn(vi)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,$en),uqn),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),_i),oi),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,mN),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),Dr),Ai),Cn(Zf)))),En(e,new bn(yn(kn(jn(Dn(gn(mn(pn(vn(new dn,iqn),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),nhn),Nt),xhn),Cn(Zf)))),Yv(e,new M2(Uv(Vp(Xp(new Zg,Jn),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),Yv(e,new M2(Uv(Vp(Xp(new Zg,"org.eclipse.elk.orthogonal"),"Orthogonal"),`Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))),Yv(e,new M2(Uv(Vp(Xp(new Zg,fs),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),Yv(e,new M2(Uv(Vp(Xp(new Zg,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),Yv(e,new M2(Uv(Vp(Xp(new Zg,IHn),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),Yv(e,new M2(Uv(Vp(Xp(new Zg,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),Yv(e,new M2(Uv(Vp(Xp(new Zg,Uf),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),IBn((new J4n,e)),zBn((new Q4n,e)),uBn((new Y4n,e))};var Zm,KZn,Ufn,Tp,HZn,qZn,Wfn,GZn,LP,Xfn,py,A0,Vfn,WK,XK,Qfn,Jfn,Yfn,Zfn,nhn,ehn,Bg,thn,zZn,vy,VK,NP,ihn,Rg,rhn,my,chn,uhn,shn,_g,ohn,Za,fhn,BP,Kg,hhn,_l,lhn,RP,ky,nd,ahn,UZn,dhn,WZn,XZn,bhn,whn,QK,JK,YK,ZK,ghn,Ru,n9,phn,nH,eH,rw,vhn,mhn,Hg,khn,Mp,_P,tH,yv,VZn,iH,QZn,JZn,yhn,YZn,jhn,ZZn,Ap,Ehn,KP,Chn,Thn,ed,nne,Mhn,Ahn,Shn;w(Ws,"CoreOptions",684),b(103,22,{3:1,35:1,22:1,103:1},n8);var Jh,Zs,Ao,kh,Yh,e9=Me(Ws,bnn,103,Ie,ude,Toe),ene;b(272,22,{3:1,35:1,22:1,272:1},OO);var jv,cw,Ev,Phn=Me(Ws,"EdgeLabelPlacement",272,Ie,_le,Moe),tne;b(218,22,{3:1,35:1,22:1,218:1},Wj);var Cv,yy,Sp,rH,cH=Me(Ws,"EdgeRouting",218,Ie,Dae,Aoe),ine;b(312,22,{3:1,35:1,22:1,312:1},l5);var Ihn,Ohn,Dhn,$hn,uH,Fhn,xhn=Me(Ws,"EdgeType",312,Ie,Ude,Soe),rne;b(977,1,zs,J4n),s.Qe=function(e){IBn(e)};var Lhn,Nhn,Bhn,Rhn,cne,_hn,t9;w(Ws,"FixedLayouterOptions",977),b(978,1,{},D2n),s.$e=function(){var e;return e=new T2n,e},s._e=function(e){},w(Ws,"FixedLayouterOptions/FixedFactory",978),b(334,22,{3:1,35:1,22:1,334:1},DO);var F1,HP,i9,Khn=Me(Ws,"HierarchyHandling",334,Ie,Rle,Poe),une;b(285,22,{3:1,35:1,22:1,285:1},Xj);var yh,Kl,jy,Ey,sne=Me(Ws,"LabelSide",285,Ie,Oae,Ioe),one;b(93,22,{3:1,35:1,22:1,93:1},yw);var Zh,So,no,Po,ds,Io,eo,jh,Oo,lr=Me(Ws,"NodeLabelPlacement",93,Ie,V0e,Ooe),fne;b(249,22,{3:1,35:1,22:1,249:1},e8);var Hhn,r9,Hl,qhn,Cy,c9=Me(Ws,"PortAlignment",249,Ie,sde,Doe),hne;b(98,22,{3:1,35:1,22:1,98:1},a5);var td,Ac,Eh,Tv,Ef,ql,Ghn=Me(Ws,"PortConstraints",98,Ie,Pde,$oe),lne;b(273,22,{3:1,35:1,22:1,273:1},d5);var u9,s9,n1,Ty,Gl,Pp,qP=Me(Ws,"PortLabelPlacement",273,Ie,zde,Foe),ane;b(61,22,{3:1,35:1,22:1,61:1},t8);var Vn,Kn,Fs,xs,cu,Gc,Cf,Do,Pu,ku,Sc,Iu,uu,su,$o,bs,ws,to,ae,Xr,Gn,Zi=Me(Ws,"PortSide",61,Ie,ide,Noe),dne;b(981,1,zs,Y4n),s.Qe=function(e){uBn(e)};var bne,wne,zhn,gne,pne;w(Ws,"RandomLayouterOptions",981),b(982,1,{},$2n),s.$e=function(){var e;return e=new L2n,e},s._e=function(e){},w(Ws,"RandomLayouterOptions/RandomFactory",982),b(374,22,{3:1,35:1,22:1,374:1},Vj);var uw,My,Ay,id,o9=Me(Ws,"SizeConstraint",374,Ie,Iae,xoe),vne;b(259,22,{3:1,35:1,22:1,259:1},jw);var Sy,GP,Mv,sH,Py,f9,zP,UP,WP,Uhn=Me(Ws,"SizeOptions",259,Ie,tbe,Loe),mne;b(370,1,{1949:1},zp),s.b=!1,s.c=0,s.d=-1,s.e=null,s.f=null,s.g=-1,s.j=!1,s.k=!1,s.n=!1,s.o=0,s.q=0,s.r=0,w(ac,"BasicProgressMonitor",370),b(972,209,xa,A2n),s.Ze=function(e,t){var i,r,c,o,f,h,l,a,d;switch(le(t,"Box layout",2),c=x9(Y(hn(e,(nM(),RZn)))),o=u(hn(e,BZn),116),i=on(sn(hn(e,Kfn))),r=on(sn(hn(e,Hfn))),u(hn(e,qK),311).g){case 0:f=(h=new du((!e.a&&(e.a=new V(Ot,e,10,11)),e.a)),Pn(),wi(h,new H6n(r)),h),l=sY(e),a=Y(hn(e,_fn)),(a==null||(_n(a),a<=0))&&(a=1.3),d=KCe(f,c,o,l.a,l.b,i,(_n(a),a)),t0(e,d.a,d.b,!1,!0);break;default:Nje(e,c,o,i)}ce(t)},w(ac,"BoxLayoutProvider",972),b(973,1,lt,H6n),s.ue=function(e,t){return c8e(this,u(e,33),u(t,33))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},s.a=!1,w(ac,"BoxLayoutProvider/1",973),b(157,1,{157:1},zC,hjn),s.Ib=function(){return this.c?uZ(this.c):kl(this.b)},w(ac,"BoxLayoutProvider/Group",157),b(311,22,{3:1,35:1,22:1,311:1},Qj);var Whn,Xhn,Vhn,oH,Qhn=Me(ac,"BoxLayoutProvider/PackingMode",311,Ie,$ae,Boe),kne;b(974,1,lt,S2n),s.ue=function(e,t){return o1e(u(e,157),u(t,157))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ac,"BoxLayoutProvider/lambda$0$Type",974),b(975,1,lt,P2n),s.ue=function(e,t){return e1e(u(e,157),u(t,157))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ac,"BoxLayoutProvider/lambda$1$Type",975),b(976,1,lt,I2n),s.ue=function(e,t){return t1e(u(e,157),u(t,157))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ac,"BoxLayoutProvider/lambda$2$Type",976),b(1365,1,{831:1},O2n),s.qg=function(e,t){return Oj(),!I(t,160)||k8n((L2(),u(e,160)),t)},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1365),b(1366,1,Yn,q6n),s.td=function(e){Uwe(this.a,u(e,146))},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1366),b(1367,1,Yn,M2n),s.td=function(e){u(e,94),Oj()},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1367),b(1371,1,Yn,G6n),s.td=function(e){pbe(this.a,u(e,94))},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1371),b(1369,1,Ve,ukn),s.Mb=function(e){return Dwe(this.a,this.b,u(e,146))},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1369),b(1368,1,Ve,skn),s.Mb=function(e){return Vce(this.a,this.b,u(e,831))},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1368),b(1370,1,Yn,okn),s.td=function(e){Vfe(this.a,this.b,u(e,146))},w(ac,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1370),b(935,1,{},C2n),s.Kb=function(e){return oyn(e)},s.Fb=function(e){return this===e},w(ac,"ElkUtil/lambda$0$Type",935),b(936,1,Yn,fkn),s.td=function(e){sme(this.a,this.b,u(e,79))},s.a=0,s.b=0,w(ac,"ElkUtil/lambda$1$Type",936),b(937,1,Yn,hkn),s.td=function(e){sie(this.a,this.b,u(e,202))},s.a=0,s.b=0,w(ac,"ElkUtil/lambda$2$Type",937),b(938,1,Yn,lkn),s.td=function(e){Yre(this.a,this.b,u(e,137))},s.a=0,s.b=0,w(ac,"ElkUtil/lambda$3$Type",938),b(939,1,Yn,z6n),s.td=function(e){lfe(this.a,u(e,469))},w(ac,"ElkUtil/lambda$4$Type",939),b(342,1,{35:1,342:1},Nte),s.wd=function(e){return Mce(this,u(e,236))},s.Fb=function(e){var t;return I(e,342)?(t=u(e,342),this.a==t.a):!1},s.Hb=function(){return Gt(this.a)},s.Ib=function(){return this.a+" (exclusive)"},s.a=0,w(ac,"ExclusiveBounds/ExclusiveLowerBound",342),b(1138,209,xa,T2n),s.Ze=function(e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$,O,x,_,U,en,ln,wn;for(le(t,"Fixed Layout",1),o=u(hn(e,(Xe(),Jfn)),218),g=0,p=0,O=new ie((!e.a&&(e.a=new V(Ot,e,10,11)),e.a));O.e!=O.i.gc();){for(S=u(oe(O),33),wn=u(hn(S,(wT(),t9)),8),wn&&(Yo(S,wn.a,wn.b),u(hn(S,Nhn),174).Hc((Qu(),uw))&&(v=u(hn(S,Rhn),8),v.a>0&&v.b>0&&t0(S,v.a,v.b,!0,!0))),g=y.Math.max(g,S.i+S.g),p=y.Math.max(p,S.j+S.f),a=new ie((!S.n&&(S.n=new V(Rr,S,1,7)),S.n));a.e!=a.i.gc();)h=u(oe(a),137),wn=u(hn(h,t9),8),wn&&Yo(h,wn.a,wn.b),g=y.Math.max(g,S.i+h.i+h.g),p=y.Math.max(p,S.j+h.j+h.f);for(U=new ie((!S.c&&(S.c=new V(_u,S,9,9)),S.c));U.e!=U.i.gc();)for(_=u(oe(U),118),wn=u(hn(_,t9),8),wn&&Yo(_,wn.a,wn.b),en=S.i+_.i,ln=S.j+_.j,g=y.Math.max(g,en+_.g),p=y.Math.max(p,ln+_.f),l=new ie((!_.n&&(_.n=new V(Rr,_,1,7)),_.n));l.e!=l.i.gc();)h=u(oe(l),137),wn=u(hn(h,t9),8),wn&&Yo(h,wn.a,wn.b),g=y.Math.max(g,en+h.i+h.g),p=y.Math.max(p,ln+h.j+h.f);for(c=new re(ue(Gh(S).a.Kc(),new An));Se(c);)i=u(ve(c),79),d=y_n(i),g=y.Math.max(g,d.a),p=y.Math.max(p,d.b);for(r=new re(ue(N7(S).a.Kc(),new An));Se(r);)i=u(ve(r),79),Pt(hh(i))!=e&&(d=y_n(i),g=y.Math.max(g,d.a),p=y.Math.max(p,d.b))}if(o==(Hh(),Cv))for($=new ie((!e.a&&(e.a=new V(Ot,e,10,11)),e.a));$.e!=$.i.gc();)for(S=u(oe($),33),r=new re(ue(Gh(S).a.Kc(),new An));Se(r);)i=u(ve(r),79),f=rye(i),f.b==0?gr(i,Rg,null):gr(i,Rg,f);on(sn(hn(e,(wT(),Bhn))))||(x=u(hn(e,cne),116),C=g+x.b+x.c,m=p+x.d+x.a,t0(e,C,m,!0,!0)),ce(t)},w(ac,"FixedLayoutProvider",1138),b(373,134,{3:1,414:1,373:1,94:1,134:1},jI,BPn),s.Jf=function(e){var t,i,r,c,o,f,h,l,a;if(e)try{for(l=Tb(e,";,;"),o=l,f=0,h=o.length;f>16&Ut|t^r<<16},s.Kc=function(){return new U6n(this)},s.Ib=function(){return this.a==null&&this.b==null?"pair(null,null)":this.a==null?"pair(null,"+Nr(this.b)+")":this.b==null?"pair("+Nr(this.a)+",null)":"pair("+Nr(this.a)+","+Nr(this.b)+")"},w(ac,"Pair",46),b(983,1,ji,U6n),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return!this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)},s.Pb=function(){if(!this.c&&!this.b&&this.a.a!=null)return this.b=!0,this.a.a;if(!this.c&&this.a.b!=null)return this.c=!0,this.a.b;throw T(new ic)},s.Qb=function(){throw this.c&&this.a.b!=null?this.a.b=null:this.b&&this.a.a!=null&&(this.a.a=null),T(new fu)},s.b=!1,s.c=!1,w(ac,"Pair/1",983),b(448,1,{448:1},jTn),s.Fb=function(e){return pc(this.a,u(e,448).a)&&pc(this.c,u(e,448).c)&&pc(this.d,u(e,448).d)&&pc(this.b,u(e,448).b)},s.Hb=function(){return gT(A(M(Zn,1),rn,1,5,[this.a,this.c,this.d,this.b]))},s.Ib=function(){return"("+this.a+Ji+this.c+Ji+this.d+Ji+this.b+")"},w(ac,"Quadruple",448),b(1126,209,xa,L2n),s.Ze=function(e,t){var i,r,c,o,f;if(le(t,"Random Layout",1),(!e.a&&(e.a=new V(Ot,e,10,11)),e.a).i==0){ce(t);return}o=u(hn(e,(NQ(),gne)),19),o&&o.a!=0?c=new EC(o.a):c=new OF,i=x9(Y(hn(e,bne))),f=x9(Y(hn(e,pne))),r=u(hn(e,wne),116),vCe(e,c,i,f,r),ce(t)},w(ac,"RandomLayoutProvider",1126);var Cne;b(553,1,{}),s.qf=function(){return new fn(this.f.i,this.f.j)},s.We=function(e){return XTn(e,(Xe(),Ru))?hn(this.f,Tne):hn(this.f,e)},s.rf=function(){return new fn(this.f.g,this.f.f)},s.sf=function(){return this.g},s.Xe=function(e){return wa(this.f,e)},s.tf=function(e){nu(this.f,e.a),eu(this.f,e.b)},s.uf=function(e){Rd(this.f,e.a),Bd(this.f,e.b)},s.vf=function(e){this.g=e},s.g=0;var Tne;w(nm,"ElkGraphAdapters/AbstractElkGraphElementAdapter",553),b(554,1,{839:1},cj),s.wf=function(){var e,t;if(!this.b)for(this.b=mC(JE(this.a).i),t=new ie(JE(this.a));t.e!=t.i.gc();)e=u(oe(t),137),W(this.b,new XI(e));return this.b},s.b=null,w(nm,"ElkGraphAdapters/ElkEdgeAdapter",554),b(301,553,{},N0),s.xf=function(){return jFn(this)},s.a=null,w(nm,"ElkGraphAdapters/ElkGraphAdapter",301),b(630,553,{181:1},XI),w(nm,"ElkGraphAdapters/ElkLabelAdapter",630),b(629,553,{680:1},WO),s.wf=function(){return k3e(this)},s.Af=function(){var e;return e=u(hn(this.f,(Xe(),my)),142),!e&&(e=new Bv),e},s.Cf=function(){return y3e(this)},s.Ef=function(e){var t;t=new oD(e),gr(this.f,(Xe(),my),t)},s.Ff=function(e){gr(this.f,(Xe(),nd),new DU(e))},s.yf=function(){return this.d},s.zf=function(){var e,t;if(!this.a)for(this.a=new X,t=new re(ue(N7(u(this.f,33)).a.Kc(),new An));Se(t);)e=u(ve(t),79),W(this.a,new cj(e));return this.a},s.Bf=function(){var e,t;if(!this.c)for(this.c=new X,t=new re(ue(Gh(u(this.f,33)).a.Kc(),new An));Se(t);)e=u(ve(t),79),W(this.c,new cj(e));return this.c},s.Df=function(){return iC(u(this.f,33)).i!=0||on(sn(u(this.f,33).We((Xe(),vy))))},s.Gf=function(){l0e(this,(K0(),Cne))},s.a=null,s.b=null,s.c=null,s.d=null,s.e=null,w(nm,"ElkGraphAdapters/ElkNodeAdapter",629),b(1266,553,{838:1},ymn),s.wf=function(){return P3e(this)},s.zf=function(){var e,t;if(!this.a)for(this.a=eh(u(this.f,118).xg().i),t=new ie(u(this.f,118).xg());t.e!=t.i.gc();)e=u(oe(t),79),W(this.a,new cj(e));return this.a},s.Bf=function(){var e,t;if(!this.c)for(this.c=eh(u(this.f,118).yg().i),t=new ie(u(this.f,118).yg());t.e!=t.i.gc();)e=u(oe(t),79),W(this.c,new cj(e));return this.c},s.Hf=function(){return u(u(this.f,118).We((Xe(),Hg)),61)},s.If=function(){var e,t,i,r,c,o,f,h;for(r=ef(u(this.f,118)),i=new ie(u(this.f,118).yg());i.e!=i.i.gc();)for(e=u(oe(i),79),h=new ie((!e.c&&(e.c=new Fn(he,e,5,8)),e.c));h.e!=h.i.gc();){if(f=u(oe(h),82),ob(Ir(f),r))return!0;if(Ir(f)==r&&on(sn(hn(e,(Xe(),VK)))))return!0}for(t=new ie(u(this.f,118).xg());t.e!=t.i.gc();)for(e=u(oe(t),79),o=new ie((!e.b&&(e.b=new Fn(he,e,4,7)),e.b));o.e!=o.i.gc();)if(c=u(oe(o),82),ob(Ir(c),r))return!0;return!1},s.a=null,s.b=null,s.c=null,w(nm,"ElkGraphAdapters/ElkPortAdapter",1266),b(1267,1,lt,N2n),s.ue=function(e,t){return J7e(u(e,118),u(t,118))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(nm,"ElkGraphAdapters/PortComparator",1267);var zl=Ct(Is,"EObject"),Av=Ct(bg,fqn),io=Ct(bg,hqn),Iy=Ct(bg,lqn),Oy=Ct(bg,"ElkShape"),he=Ct(bg,aqn),bi=Ct(bg,Atn),Mt=Ct(bg,dqn),Dy=Ct(Is,bqn),h9=Ct(Is,"EFactory"),Mne,fH=Ct(Is,wqn),Vo=Ct(Is,"EPackage"),mi,Ane,Sne,n1n,XP,Pne,e1n,t1n,i1n,Ul,Ine,One,Rr=Ct(bg,Stn),Ot=Ct(bg,Ptn),_u=Ct(bg,Itn);b(90,1,gqn),s.Jg=function(){return this.Kg(),null},s.Kg=function(){return null},s.Lg=function(){return this.Kg(),!1},s.Mg=function(){return!1},s.Ng=function(e){et(this,e)},w(sp,"BasicNotifierImpl",90),b(97,90,kqn),s.nh=function(){return qu(this)},s.Og=function(e,t){return e},s.Pg=function(){throw T(new ye)},s.Qg=function(e){var t;return t=ir(u(On(this.Tg(),this.Vg()),18)),this.eh().ih(this,t.n,t.f,e)},s.Rg=function(e,t){throw T(new ye)},s.Sg=function(e,t,i){return os(this,e,t,i)},s.Tg=function(){var e;return this.Pg()&&(e=this.Pg().ck(),e)?e:this.zh()},s.Ug=function(){return Fx(this)},s.Vg=function(){throw T(new ye)},s.Wg=function(){var e,t;return t=this.ph().dk(),!t&&this.Pg().ik(t=(Zv(),e=VW(Nf(this.Tg())),e==null?pH:new c8(this,e))),t},s.Xg=function(e,t){return e},s.Yg=function(e){var t;return t=e.Gj(),t?e.aj():yt(this.Tg(),e)},s.Zg=function(){var e;return e=this.Pg(),e?e.fk():null},s.$g=function(){return this.Pg()?this.Pg().ck():null},s._g=function(e,t,i){return BT(this,e,t,i)},s.ah=function(e){return A3(this,e)},s.bh=function(e,t){return T$(this,e,t)},s.dh=function(){var e;return e=this.Pg(),!!e&&e.gk()},s.eh=function(){throw T(new ye)},s.fh=function(){return OT(this)},s.gh=function(e,t,i,r){return _2(this,e,t,r)},s.hh=function(e,t,i){var r;return r=u(On(this.Tg(),t),66),r.Nj().Qj(this,this.yh(),t-this.Ah(),e,i)},s.ih=function(e,t,i,r){return sC(this,e,t,r)},s.jh=function(e,t,i){var r;return r=u(On(this.Tg(),t),66),r.Nj().Rj(this,this.yh(),t-this.Ah(),e,i)},s.kh=function(){return!!this.Pg()&&!!this.Pg().ek()},s.lh=function(e){return zF(this,e)},s.mh=function(e){return lMn(this,e)},s.oh=function(e){return LRn(this,e)},s.ph=function(){throw T(new ye)},s.qh=function(){return this.Pg()?this.Pg().ek():null},s.rh=function(){return OT(this)},s.sh=function(e,t){Px(this,e,t)},s.th=function(e){this.ph().hk(e)},s.uh=function(e){this.ph().kk(e)},s.vh=function(e){this.ph().jk(e)},s.wh=function(e,t){var i,r,c,o;return o=this.Zg(),o&&e&&(t=zi(o.Vk(),this,t),o.Zk(this)),r=this.eh(),r&&(Qx(this,this.eh(),this.Vg()).Bb&Yi?(c=r.fh(),c&&(e?!o&&c.Zk(this):c.Yk(this))):(t=(i=this.Vg(),i>=0?this.Qg(t):this.eh().ih(this,-1-i,null,t)),t=this.Sg(null,-1,t))),this.uh(e),t},s.xh=function(e){var t,i,r,c,o,f,h,l;if(i=this.Tg(),o=yt(i,e),t=this.Ah(),o>=t)return u(e,66).Nj().Uj(this,this.yh(),o-t);if(o<=-1)if(f=rg((gu(),xi),i,e),f){if(er(),u(f,66).Oj()||(f=A2(Er(xi,f))),c=(r=this.Yg(f),u(r>=0?this._g(r,!0,!0):Yd(this,f,!0),153)),l=f.Zj(),l>1||l==-1)return u(u(c,215).hl(e,!1),76)}else throw T(new Hn(Pl+e.ne()+MB));else if(e.$j())return r=this.Yg(e),u(r>=0?this._g(r,!1,!0):Yd(this,e,!1),76);return h=new Okn(this,e),h},s.yh=function(){return QX(this)},s.zh=function(){return(ol(),Nn).S},s.Ah=function(){return ee(this.zh())},s.Bh=function(e){Cx(this,e)},s.Ib=function(){return yo(this)},w(Bn,"BasicEObjectImpl",97);var Dne;b(114,97,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1}),s.Ch=function(e){var t;return t=JX(this),t[e]},s.Dh=function(e,t){var i;i=JX(this),St(i,e,t)},s.Eh=function(e){var t;t=JX(this),St(t,e,null)},s.Jg=function(){return u(Rn(this,4),126)},s.Kg=function(){throw T(new ye)},s.Lg=function(){return(this.Db&4)!=0},s.Pg=function(){throw T(new ye)},s.Fh=function(e){R2(this,2,e)},s.Rg=function(e,t){this.Db=t<<16|this.Db&255,this.Fh(e)},s.Tg=function(){return Qc(this)},s.Vg=function(){return this.Db>>16},s.Wg=function(){var e,t;return Zv(),t=VW(Nf((e=u(Rn(this,16),26),e||this.zh()))),t==null?pH:new c8(this,t)},s.Mg=function(){return(this.Db&1)==0},s.Zg=function(){return u(Rn(this,128),1935)},s.$g=function(){return u(Rn(this,16),26)},s.dh=function(){return(this.Db&32)!=0},s.eh=function(){return u(Rn(this,2),49)},s.kh=function(){return(this.Db&64)!=0},s.ph=function(){throw T(new ye)},s.qh=function(){return u(Rn(this,64),281)},s.th=function(e){R2(this,16,e)},s.uh=function(e){R2(this,128,e)},s.vh=function(e){R2(this,64,e)},s.yh=function(){return Rc(this)},s.Db=0,w(Bn,"MinimalEObjectImpl",114),b(115,114,{105:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),s.Fh=function(e){this.Cb=e},s.eh=function(){return this.Cb},w(Bn,"MinimalEObjectImpl/Container",115),b(1985,115,{105:1,413:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),s._g=function(e,t,i){return oJ(this,e,t,i)},s.jh=function(e,t,i){return QJ(this,e,t,i)},s.lh=function(e){return sX(this,e)},s.sh=function(e,t){WV(this,e,t)},s.zh=function(){return Dc(),One},s.Bh=function(e){LV(this,e)},s.Ve=function(){return q$n(this)},s.We=function(e){return hn(this,e)},s.Xe=function(e){return wa(this,e)},s.Ye=function(e,t){return gr(this,e,t)},w(Ba,"EMapPropertyHolderImpl",1985),b(567,115,{105:1,469:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},Xy),s._g=function(e,t,i){switch(e){case 0:return this.a;case 1:return this.b}return BT(this,e,t,i)},s.lh=function(e){switch(e){case 0:return this.a!=0;case 1:return this.b!=0}return zF(this,e)},s.sh=function(e,t){switch(e){case 0:UC(this,K(Y(t)));return;case 1:WC(this,K(Y(t)));return}Px(this,e,t)},s.zh=function(){return Dc(),Ane},s.Bh=function(e){switch(e){case 0:UC(this,0);return;case 1:WC(this,0);return}Cx(this,e)},s.Ib=function(){var e;return this.Db&64?yo(this):(e=new Bs(yo(this)),e.a+=" (x: ",mw(e,this.a),e.a+=", y: ",mw(e,this.b),e.a+=")",e.a)},s.a=0,s.b=0,w(Ba,"ElkBendPointImpl",567),b(723,1985,{105:1,413:1,160:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),s._g=function(e,t,i){return aQ(this,e,t,i)},s.hh=function(e,t,i){return vx(this,e,t,i)},s.jh=function(e,t,i){return tF(this,e,t,i)},s.lh=function(e){return SV(this,e)},s.sh=function(e,t){AJ(this,e,t)},s.zh=function(){return Dc(),Pne},s.Bh=function(e){oQ(this,e)},s.zg=function(){return this.k},s.Ag=function(){return JE(this)},s.Ib=function(){return PF(this)},s.k=null,w(Ba,"ElkGraphElementImpl",723),b(724,723,{105:1,413:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),s._g=function(e,t,i){return jQ(this,e,t,i)},s.lh=function(e){return PQ(this,e)},s.sh=function(e,t){SJ(this,e,t)},s.zh=function(){return Dc(),Ine},s.Bh=function(e){FQ(this,e)},s.Bg=function(){return this.f},s.Cg=function(){return this.g},s.Dg=function(){return this.i},s.Eg=function(){return this.j},s.Fg=function(e,t){rE(this,e,t)},s.Gg=function(e,t){Yo(this,e,t)},s.Hg=function(e){nu(this,e)},s.Ig=function(e){eu(this,e)},s.Ib=function(){return Ex(this)},s.f=0,s.g=0,s.i=0,s.j=0,w(Ba,"ElkShapeImpl",724),b(725,724,{105:1,413:1,82:1,160:1,470:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1}),s._g=function(e,t,i){return tJ(this,e,t,i)},s.hh=function(e,t,i){return yJ(this,e,t,i)},s.jh=function(e,t,i){return jJ(this,e,t,i)},s.lh=function(e){return zV(this,e)},s.sh=function(e,t){OY(this,e,t)},s.zh=function(){return Dc(),Sne},s.Bh=function(e){XQ(this,e)},s.xg=function(){return!this.d&&(this.d=new Fn(bi,this,8,5)),this.d},s.yg=function(){return!this.e&&(this.e=new Fn(bi,this,7,4)),this.e},w(Ba,"ElkConnectableShapeImpl",725),b(352,723,{105:1,413:1,79:1,160:1,352:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},VH),s.Qg=function(e){return pJ(this,e)},s._g=function(e,t,i){switch(e){case 3:return S8(this);case 4:return!this.b&&(this.b=new Fn(he,this,4,7)),this.b;case 5:return!this.c&&(this.c=new Fn(he,this,5,8)),this.c;case 6:return!this.a&&(this.a=new V(Mt,this,6,6)),this.a;case 7:return qn(),!this.b&&(this.b=new Fn(he,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new Fn(he,this,5,8)),this.c.i<=1));case 8:return qn(),!!j6(this);case 9:return qn(),!!Jd(this);case 10:return qn(),!this.b&&(this.b=new Fn(he,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new Fn(he,this,5,8)),this.c.i!=0)}return aQ(this,e,t,i)},s.hh=function(e,t,i){var r;switch(t){case 3:return this.Cb&&(i=(r=this.Db>>16,r>=0?pJ(this,i):this.Cb.ih(this,-1-r,null,i))),hU(this,u(e,33),i);case 4:return!this.b&&(this.b=new Fn(he,this,4,7)),Oc(this.b,e,i);case 5:return!this.c&&(this.c=new Fn(he,this,5,8)),Oc(this.c,e,i);case 6:return!this.a&&(this.a=new V(Mt,this,6,6)),Oc(this.a,e,i)}return vx(this,e,t,i)},s.jh=function(e,t,i){switch(t){case 3:return hU(this,null,i);case 4:return!this.b&&(this.b=new Fn(he,this,4,7)),zi(this.b,e,i);case 5:return!this.c&&(this.c=new Fn(he,this,5,8)),zi(this.c,e,i);case 6:return!this.a&&(this.a=new V(Mt,this,6,6)),zi(this.a,e,i)}return tF(this,e,t,i)},s.lh=function(e){switch(e){case 3:return!!S8(this);case 4:return!!this.b&&this.b.i!=0;case 5:return!!this.c&&this.c.i!=0;case 6:return!!this.a&&this.a.i!=0;case 7:return!this.b&&(this.b=new Fn(he,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new Fn(he,this,5,8)),this.c.i<=1));case 8:return j6(this);case 9:return Jd(this);case 10:return!this.b&&(this.b=new Fn(he,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new Fn(he,this,5,8)),this.c.i!=0)}return SV(this,e)},s.sh=function(e,t){switch(e){case 3:_x(this,u(t,33));return;case 4:!this.b&&(this.b=new Fn(he,this,4,7)),de(this.b),!this.b&&(this.b=new Fn(he,this,4,7)),Dt(this.b,u(t,14));return;case 5:!this.c&&(this.c=new Fn(he,this,5,8)),de(this.c),!this.c&&(this.c=new Fn(he,this,5,8)),Dt(this.c,u(t,14));return;case 6:!this.a&&(this.a=new V(Mt,this,6,6)),de(this.a),!this.a&&(this.a=new V(Mt,this,6,6)),Dt(this.a,u(t,14));return}AJ(this,e,t)},s.zh=function(){return Dc(),n1n},s.Bh=function(e){switch(e){case 3:_x(this,null);return;case 4:!this.b&&(this.b=new Fn(he,this,4,7)),de(this.b);return;case 5:!this.c&&(this.c=new Fn(he,this,5,8)),de(this.c);return;case 6:!this.a&&(this.a=new V(Mt,this,6,6)),de(this.a);return}oQ(this,e)},s.Ib=function(){return yRn(this)},w(Ba,"ElkEdgeImpl",352),b(439,1985,{105:1,413:1,202:1,439:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},Vy),s.Qg=function(e){return dJ(this,e)},s._g=function(e,t,i){switch(e){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new Yt(io,this,5)),this.a;case 6:return oMn(this);case 7:return t?QF(this):this.i;case 8:return t?VF(this):this.f;case 9:return!this.g&&(this.g=new Fn(Mt,this,9,10)),this.g;case 10:return!this.e&&(this.e=new Fn(Mt,this,10,9)),this.e;case 11:return this.d}return oJ(this,e,t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 6:return this.Cb&&(i=(c=this.Db>>16,c>=0?dJ(this,i):this.Cb.ih(this,-1-c,null,i))),lU(this,u(e,79),i);case 9:return!this.g&&(this.g=new Fn(Mt,this,9,10)),Oc(this.g,e,i);case 10:return!this.e&&(this.e=new Fn(Mt,this,10,9)),Oc(this.e,e,i)}return o=u(On((r=u(Rn(this,16),26),r||(Dc(),XP)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Dc(),XP)),e,i)},s.jh=function(e,t,i){switch(t){case 5:return!this.a&&(this.a=new Yt(io,this,5)),zi(this.a,e,i);case 6:return lU(this,null,i);case 9:return!this.g&&(this.g=new Fn(Mt,this,9,10)),zi(this.g,e,i);case 10:return!this.e&&(this.e=new Fn(Mt,this,10,9)),zi(this.e,e,i)}return QJ(this,e,t,i)},s.lh=function(e){switch(e){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return!!this.a&&this.a.i!=0;case 6:return!!oMn(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&this.g.i!=0;case 10:return!!this.e&&this.e.i!=0;case 11:return this.d!=null}return sX(this,e)},s.sh=function(e,t){switch(e){case 1:$3(this,K(Y(t)));return;case 2:x3(this,K(Y(t)));return;case 3:D3(this,K(Y(t)));return;case 4:F3(this,K(Y(t)));return;case 5:!this.a&&(this.a=new Yt(io,this,5)),de(this.a),!this.a&&(this.a=new Yt(io,this,5)),Dt(this.a,u(t,14));return;case 6:jNn(this,u(t,79));return;case 7:YC(this,u(t,82));return;case 8:JC(this,u(t,82));return;case 9:!this.g&&(this.g=new Fn(Mt,this,9,10)),de(this.g),!this.g&&(this.g=new Fn(Mt,this,9,10)),Dt(this.g,u(t,14));return;case 10:!this.e&&(this.e=new Fn(Mt,this,10,9)),de(this.e),!this.e&&(this.e=new Fn(Mt,this,10,9)),Dt(this.e,u(t,14));return;case 11:mV(this,Ce(t));return}WV(this,e,t)},s.zh=function(){return Dc(),XP},s.Bh=function(e){switch(e){case 1:$3(this,0);return;case 2:x3(this,0);return;case 3:D3(this,0);return;case 4:F3(this,0);return;case 5:!this.a&&(this.a=new Yt(io,this,5)),de(this.a);return;case 6:jNn(this,null);return;case 7:YC(this,null);return;case 8:JC(this,null);return;case 9:!this.g&&(this.g=new Fn(Mt,this,9,10)),de(this.g);return;case 10:!this.e&&(this.e=new Fn(Mt,this,10,9)),de(this.e);return;case 11:mV(this,null);return}LV(this,e)},s.Ib=function(){return _Ln(this)},s.b=0,s.c=0,s.d=null,s.j=0,s.k=0,w(Ba,"ElkEdgeSectionImpl",439),b(150,115,{105:1,92:1,90:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),s._g=function(e,t,i){var r;return e==0?(!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab):Cs(this,e-ee(this.zh()),On((r=u(Rn(this,16),26),r||this.zh()),e),t,i)},s.hh=function(e,t,i){var r,c;return t==0?(!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i)):(c=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),c.Nj().Qj(this,Rc(this),t-ee(this.zh()),e,i))},s.jh=function(e,t,i){var r,c;return t==0?(!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i)):(c=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),c.Nj().Rj(this,Rc(this),t-ee(this.zh()),e,i))},s.lh=function(e){var t;return e==0?!!this.Ab&&this.Ab.i!=0:js(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.oh=function(e){return RZ(this,e)},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return}Ps(this,e-ee(this.zh()),On((i=u(Rn(this,16),26),i||this.zh()),e),t)},s.uh=function(e){R2(this,128,e)},s.zh=function(){return Sn(),Qne},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return}As(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.Gh=function(){this.Bb|=1},s.Hh=function(e){return A6(this,e)},s.Bb=0,w(Bn,"EModelElementImpl",150),b(704,150,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},eq),s.Ih=function(e,t){return JRn(this,e,t)},s.Jh=function(e){var t,i,r,c,o;if(this.a!=is(e)||e.Bb&256)throw T(new Hn(SB+e.zb+h0));for(r=Ar(e);bc(r.a).i!=0;){if(i=u(X7(r,0,(t=u(D(bc(r.a),0),87),o=t.c,I(o,88)?u(o,26):(Sn(),so))),26),Qd(i))return c=is(i).Nh().Jh(i),u(c,49).th(e),c;r=Ar(i)}return(e.D!=null?e.D:e.B)=="java.util.Map$Entry"?new UEn(e):new JU(e)},s.Kh=function(e,t){return i0(this,e,t)},s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.a}return Cs(this,e-ee((Sn(),Ql)),On((r=u(Rn(this,16),26),r||Ql),e),t,i)},s.hh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 1:return this.a&&(i=u(this.a,49).ih(this,4,Vo,i)),uQ(this,u(e,235),i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),Ql)),t),66),c.Nj().Qj(this,Rc(this),t-ee((Sn(),Ql)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 1:return uQ(this,null,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),Ql)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),Ql)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return!!this.a}return js(this,e-ee((Sn(),Ql)),On((t=u(Rn(this,16),26),t||Ql),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:jxn(this,u(t,235));return}Ps(this,e-ee((Sn(),Ql)),On((i=u(Rn(this,16),26),i||Ql),e),t)},s.zh=function(){return Sn(),Ql},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:jxn(this,null);return}As(this,e-ee((Sn(),Ql)),On((t=u(Rn(this,16),26),t||Ql),e))};var l9,r1n,$ne;w(Bn,"EFactoryImpl",704),b(Eo,704,{105:1,2014:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1},R2n),s.Ih=function(e,t){switch(e.yj()){case 12:return u(t,146).tg();case 13:return Nr(t);default:throw T(new Hn(R4+e.ne()+h0))}},s.Jh=function(e){var t,i,r,c,o,f,h,l;switch(e.G==-1&&(e.G=(t=is(e),t?v1(t.Mh(),e):-1)),e.G){case 4:return o=new QH,o;case 6:return f=new nG,f;case 7:return h=new eG,h;case 8:return r=new VH,r;case 9:return i=new Xy,i;case 10:return c=new Vy,c;case 11:return l=new _2n,l;default:throw T(new Hn(SB+e.zb+h0))}},s.Kh=function(e,t){switch(e.yj()){case 13:case 12:return null;default:throw T(new Hn(R4+e.ne()+h0))}},w(Ba,"ElkGraphFactoryImpl",Eo),b(438,150,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1}),s.Wg=function(){var e,t;return t=(e=u(Rn(this,16),26),VW(Nf(e||this.zh()))),t==null?(Zv(),Zv(),pH):new djn(this,t)},s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.ne()}return Cs(this,e-ee(this.zh()),On((r=u(Rn(this,16),26),r||this.zh()),e),t,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null}return js(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:this.Lh(Ce(t));return}Ps(this,e-ee(this.zh()),On((i=u(Rn(this,16),26),i||this.zh()),e),t)},s.zh=function(){return Sn(),Jne},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:this.Lh(null);return}As(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.ne=function(){return this.zb},s.Lh=function(e){Ic(this,e)},s.Ib=function(){return r6(this)},s.zb=null,w(Bn,"ENamedElementImpl",438),b(179,438,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},WTn),s.Qg=function(e){return LFn(this,e)},s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new Y0(this,Qo,this)),this.rb;case 6:return!this.vb&&(this.vb=new g2(Vo,this,6,7)),this.vb;case 7:return t?this.Db>>16==7?u(this.Cb,235):null:fMn(this)}return Cs(this,e-ee((Sn(),B1)),On((r=u(Rn(this,16),26),r||B1),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 4:return this.sb&&(i=u(this.sb,49).ih(this,1,h9,i)),hQ(this,u(e,471),i);case 5:return!this.rb&&(this.rb=new Y0(this,Qo,this)),Oc(this.rb,e,i);case 6:return!this.vb&&(this.vb=new g2(Vo,this,6,7)),Oc(this.vb,e,i);case 7:return this.Cb&&(i=(c=this.Db>>16,c>=0?LFn(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,7,i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),B1)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),B1)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 4:return hQ(this,null,i);case 5:return!this.rb&&(this.rb=new Y0(this,Qo,this)),zi(this.rb,e,i);case 6:return!this.vb&&(this.vb=new g2(Vo,this,6,7)),zi(this.vb,e,i);case 7:return os(this,null,7,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),B1)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),B1)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return!!this.sb;case 5:return!!this.rb&&this.rb.i!=0;case 6:return!!this.vb&&this.vb.i!=0;case 7:return!!fMn(this)}return js(this,e-ee((Sn(),B1)),On((t=u(Rn(this,16),26),t||B1),e))},s.oh=function(e){var t;return t=m8e(this,e),t||RZ(this,e)},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:Ic(this,Ce(t));return;case 2:cT(this,Ce(t));return;case 3:rT(this,Ce(t));return;case 4:jx(this,u(t,471));return;case 5:!this.rb&&(this.rb=new Y0(this,Qo,this)),de(this.rb),!this.rb&&(this.rb=new Y0(this,Qo,this)),Dt(this.rb,u(t,14));return;case 6:!this.vb&&(this.vb=new g2(Vo,this,6,7)),de(this.vb),!this.vb&&(this.vb=new g2(Vo,this,6,7)),Dt(this.vb,u(t,14));return}Ps(this,e-ee((Sn(),B1)),On((i=u(Rn(this,16),26),i||B1),e),t)},s.vh=function(e){var t,i;if(e&&this.rb)for(i=new ie(this.rb);i.e!=i.i.gc();)t=oe(i),I(t,351)&&(u(t,351).w=null);R2(this,64,e)},s.zh=function(){return Sn(),B1},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:Ic(this,null);return;case 2:cT(this,null);return;case 3:rT(this,null);return;case 4:jx(this,null);return;case 5:!this.rb&&(this.rb=new Y0(this,Qo,this)),de(this.rb);return;case 6:!this.vb&&(this.vb=new g2(Vo,this,6,7)),de(this.vb);return}As(this,e-ee((Sn(),B1)),On((t=u(Rn(this,16),26),t||B1),e))},s.Gh=function(){fx(this)},s.Mh=function(){return!this.rb&&(this.rb=new Y0(this,Qo,this)),this.rb},s.Nh=function(){return this.sb},s.Oh=function(){return this.ub},s.Ph=function(){return this.xb},s.Qh=function(){return this.yb},s.Rh=function(e){this.ub=e},s.Ib=function(){var e;return this.Db&64?r6(this):(e=new Bs(r6(this)),e.a+=" (nsURI: ",dr(e,this.yb),e.a+=", nsPrefix: ",dr(e,this.xb),e.a+=")",e.a)},s.xb=null,s.yb=null,w(Bn,"EPackageImpl",179),b(555,179,{105:1,2016:1,555:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1},VLn),s.q=!1,s.r=!1;var Fne=!1;w(Ba,"ElkGraphPackageImpl",555),b(354,724,{105:1,413:1,160:1,137:1,470:1,354:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},QH),s.Qg=function(e){return bJ(this,e)},s._g=function(e,t,i){switch(e){case 7:return hMn(this);case 8:return this.a}return jQ(this,e,t,i)},s.hh=function(e,t,i){var r;switch(t){case 7:return this.Cb&&(i=(r=this.Db>>16,r>=0?bJ(this,i):this.Cb.ih(this,-1-r,null,i))),aW(this,u(e,160),i)}return vx(this,e,t,i)},s.jh=function(e,t,i){return t==7?aW(this,null,i):tF(this,e,t,i)},s.lh=function(e){switch(e){case 7:return!!hMn(this);case 8:return!Mn("",this.a)}return PQ(this,e)},s.sh=function(e,t){switch(e){case 7:zY(this,u(t,160));return;case 8:aV(this,Ce(t));return}SJ(this,e,t)},s.zh=function(){return Dc(),e1n},s.Bh=function(e){switch(e){case 7:zY(this,null);return;case 8:aV(this,"");return}FQ(this,e)},s.Ib=function(){return Lxn(this)},s.a="",w(Ba,"ElkLabelImpl",354),b(239,725,{105:1,413:1,82:1,160:1,33:1,470:1,239:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},nG),s.Qg=function(e){return vJ(this,e)},s._g=function(e,t,i){switch(e){case 9:return!this.c&&(this.c=new V(_u,this,9,9)),this.c;case 10:return!this.a&&(this.a=new V(Ot,this,10,11)),this.a;case 11:return Pt(this);case 12:return!this.b&&(this.b=new V(bi,this,12,3)),this.b;case 13:return qn(),!this.a&&(this.a=new V(Ot,this,10,11)),this.a.i>0}return tJ(this,e,t,i)},s.hh=function(e,t,i){var r;switch(t){case 9:return!this.c&&(this.c=new V(_u,this,9,9)),Oc(this.c,e,i);case 10:return!this.a&&(this.a=new V(Ot,this,10,11)),Oc(this.a,e,i);case 11:return this.Cb&&(i=(r=this.Db>>16,r>=0?vJ(this,i):this.Cb.ih(this,-1-r,null,i))),kU(this,u(e,33),i);case 12:return!this.b&&(this.b=new V(bi,this,12,3)),Oc(this.b,e,i)}return yJ(this,e,t,i)},s.jh=function(e,t,i){switch(t){case 9:return!this.c&&(this.c=new V(_u,this,9,9)),zi(this.c,e,i);case 10:return!this.a&&(this.a=new V(Ot,this,10,11)),zi(this.a,e,i);case 11:return kU(this,null,i);case 12:return!this.b&&(this.b=new V(bi,this,12,3)),zi(this.b,e,i)}return jJ(this,e,t,i)},s.lh=function(e){switch(e){case 9:return!!this.c&&this.c.i!=0;case 10:return!!this.a&&this.a.i!=0;case 11:return!!Pt(this);case 12:return!!this.b&&this.b.i!=0;case 13:return!this.a&&(this.a=new V(Ot,this,10,11)),this.a.i>0}return zV(this,e)},s.sh=function(e,t){switch(e){case 9:!this.c&&(this.c=new V(_u,this,9,9)),de(this.c),!this.c&&(this.c=new V(_u,this,9,9)),Dt(this.c,u(t,14));return;case 10:!this.a&&(this.a=new V(Ot,this,10,11)),de(this.a),!this.a&&(this.a=new V(Ot,this,10,11)),Dt(this.a,u(t,14));return;case 11:HY(this,u(t,33));return;case 12:!this.b&&(this.b=new V(bi,this,12,3)),de(this.b),!this.b&&(this.b=new V(bi,this,12,3)),Dt(this.b,u(t,14));return}OY(this,e,t)},s.zh=function(){return Dc(),t1n},s.Bh=function(e){switch(e){case 9:!this.c&&(this.c=new V(_u,this,9,9)),de(this.c);return;case 10:!this.a&&(this.a=new V(Ot,this,10,11)),de(this.a);return;case 11:HY(this,null);return;case 12:!this.b&&(this.b=new V(bi,this,12,3)),de(this.b);return}XQ(this,e)},s.Ib=function(){return uZ(this)},w(Ba,"ElkNodeImpl",239),b(186,725,{105:1,413:1,82:1,160:1,118:1,470:1,186:1,94:1,92:1,90:1,56:1,108:1,49:1,97:1,114:1,115:1},eG),s.Qg=function(e){return wJ(this,e)},s._g=function(e,t,i){return e==9?ef(this):tJ(this,e,t,i)},s.hh=function(e,t,i){var r;switch(t){case 9:return this.Cb&&(i=(r=this.Db>>16,r>=0?wJ(this,i):this.Cb.ih(this,-1-r,null,i))),aU(this,u(e,33),i)}return yJ(this,e,t,i)},s.jh=function(e,t,i){return t==9?aU(this,null,i):jJ(this,e,t,i)},s.lh=function(e){return e==9?!!ef(this):zV(this,e)},s.sh=function(e,t){switch(e){case 9:KY(this,u(t,33));return}OY(this,e,t)},s.zh=function(){return Dc(),i1n},s.Bh=function(e){switch(e){case 9:KY(this,null);return}XQ(this,e)},s.Ib=function(){return jBn(this)},w(Ba,"ElkPortImpl",186);var xne=Ct(Ui,"BasicEMap/Entry");b(1092,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,114:1,115:1},_2n),s.Fb=function(e){return this===e},s.cd=function(){return this.b},s.Hb=function(){return md(this)},s.Uh=function(e){dV(this,u(e,146))},s._g=function(e,t,i){switch(e){case 0:return this.b;case 1:return this.c}return BT(this,e,t,i)},s.lh=function(e){switch(e){case 0:return!!this.b;case 1:return this.c!=null}return zF(this,e)},s.sh=function(e,t){switch(e){case 0:dV(this,u(t,146));return;case 1:gV(this,t);return}Px(this,e,t)},s.zh=function(){return Dc(),Ul},s.Bh=function(e){switch(e){case 0:dV(this,null);return;case 1:gV(this,null);return}Cx(this,e)},s.Sh=function(){var e;return this.a==-1&&(e=this.b,this.a=e?mt(e):0),this.a},s.dd=function(){return this.c},s.Th=function(e){this.a=e},s.ed=function(e){var t;return t=this.c,gV(this,e),t},s.Ib=function(){var e;return this.Db&64?yo(this):(e=new V1,De(De(De(e,this.b?this.b.tg():ru),TN),y5(this.c)),e.a)},s.a=-1,s.c=null;var S0=w(Ba,"ElkPropertyToValueMapEntryImpl",1092);b(984,1,{},q2n),w(Fi,"JsonAdapter",984),b(210,60,Uh,Sf),w(Fi,"JsonImportException",210),b(857,1,{},NFn),w(Fi,"JsonImporter",857),b(891,1,{},akn),w(Fi,"JsonImporter/lambda$0$Type",891),b(892,1,{},dkn),w(Fi,"JsonImporter/lambda$1$Type",892),b(900,1,{},W6n),w(Fi,"JsonImporter/lambda$10$Type",900),b(902,1,{},bkn),w(Fi,"JsonImporter/lambda$11$Type",902),b(903,1,{},wkn),w(Fi,"JsonImporter/lambda$12$Type",903),b(909,1,{},ATn),w(Fi,"JsonImporter/lambda$13$Type",909),b(908,1,{},MTn),w(Fi,"JsonImporter/lambda$14$Type",908),b(904,1,{},gkn),w(Fi,"JsonImporter/lambda$15$Type",904),b(905,1,{},pkn),w(Fi,"JsonImporter/lambda$16$Type",905),b(906,1,{},vkn),w(Fi,"JsonImporter/lambda$17$Type",906),b(907,1,{},mkn),w(Fi,"JsonImporter/lambda$18$Type",907),b(912,1,{},X6n),w(Fi,"JsonImporter/lambda$19$Type",912),b(893,1,{},V6n),w(Fi,"JsonImporter/lambda$2$Type",893),b(910,1,{},Q6n),w(Fi,"JsonImporter/lambda$20$Type",910),b(911,1,{},J6n),w(Fi,"JsonImporter/lambda$21$Type",911),b(915,1,{},Y6n),w(Fi,"JsonImporter/lambda$22$Type",915),b(913,1,{},Z6n),w(Fi,"JsonImporter/lambda$23$Type",913),b(914,1,{},nmn),w(Fi,"JsonImporter/lambda$24$Type",914),b(917,1,{},emn),w(Fi,"JsonImporter/lambda$25$Type",917),b(916,1,{},tmn),w(Fi,"JsonImporter/lambda$26$Type",916),b(918,1,Yn,kkn),s.td=function(e){Xde(this.b,this.a,Ce(e))},w(Fi,"JsonImporter/lambda$27$Type",918),b(919,1,Yn,ykn),s.td=function(e){Vde(this.b,this.a,Ce(e))},w(Fi,"JsonImporter/lambda$28$Type",919),b(920,1,{},jkn),w(Fi,"JsonImporter/lambda$29$Type",920),b(896,1,{},imn),w(Fi,"JsonImporter/lambda$3$Type",896),b(921,1,{},Ekn),w(Fi,"JsonImporter/lambda$30$Type",921),b(922,1,{},rmn),w(Fi,"JsonImporter/lambda$31$Type",922),b(923,1,{},cmn),w(Fi,"JsonImporter/lambda$32$Type",923),b(924,1,{},umn),w(Fi,"JsonImporter/lambda$33$Type",924),b(925,1,{},smn),w(Fi,"JsonImporter/lambda$34$Type",925),b(859,1,{},omn),w(Fi,"JsonImporter/lambda$35$Type",859),b(929,1,{},vEn),w(Fi,"JsonImporter/lambda$36$Type",929),b(926,1,Yn,fmn),s.td=function(e){Yae(this.a,u(e,469))},w(Fi,"JsonImporter/lambda$37$Type",926),b(927,1,Yn,Pkn),s.td=function(e){Mre(this.a,this.b,u(e,202))},w(Fi,"JsonImporter/lambda$38$Type",927),b(928,1,Yn,Ikn),s.td=function(e){Are(this.a,this.b,u(e,202))},w(Fi,"JsonImporter/lambda$39$Type",928),b(894,1,{},hmn),w(Fi,"JsonImporter/lambda$4$Type",894),b(930,1,Yn,lmn),s.td=function(e){Zae(this.a,u(e,8))},w(Fi,"JsonImporter/lambda$40$Type",930),b(895,1,{},amn),w(Fi,"JsonImporter/lambda$5$Type",895),b(899,1,{},dmn),w(Fi,"JsonImporter/lambda$6$Type",899),b(897,1,{},bmn),w(Fi,"JsonImporter/lambda$7$Type",897),b(898,1,{},wmn),w(Fi,"JsonImporter/lambda$8$Type",898),b(901,1,{},gmn),w(Fi,"JsonImporter/lambda$9$Type",901),b(948,1,Yn,pmn),s.td=function(e){j2(this.a,new Z0(Ce(e)))},w(Fi,"JsonMetaDataConverter/lambda$0$Type",948),b(949,1,Yn,vmn),s.td=function(e){whe(this.a,u(e,237))},w(Fi,"JsonMetaDataConverter/lambda$1$Type",949),b(950,1,Yn,mmn),s.td=function(e){ale(this.a,u(e,149))},w(Fi,"JsonMetaDataConverter/lambda$2$Type",950),b(951,1,Yn,kmn),s.td=function(e){ghe(this.a,u(e,175))},w(Fi,"JsonMetaDataConverter/lambda$3$Type",951),b(237,22,{3:1,35:1,22:1,237:1},a2);var VP,QP,hH,JP,YP,ZP,lH,aH,nI=Me(ok,"GraphFeature",237,Ie,B0e,_oe),Lne;b(13,1,{35:1,146:1},kt,ri,In,tr),s.wd=function(e){return Tce(this,u(e,146))},s.Fb=function(e){return XTn(this,e)},s.wg=function(){return cn(this)},s.tg=function(){return this.b},s.Hb=function(){return m1(this.b)},s.Ib=function(){return this.b},w(ok,"Property",13),b(818,1,lt,$q),s.ue=function(e,t){return qge(this,u(e,94),u(t,94))},s.Fb=function(e){return this===e},s.ve=function(){return new ut(this)},w(ok,"PropertyHolderComparator",818),b(695,1,ji,Fq),s.Nb=function(e){Oi(this,e)},s.Pb=function(){return Zde(this)},s.Qb=function(){d8n()},s.Ob=function(){return!!this.a},w(mA,"ElkGraphUtil/AncestorIterator",695);var c1n=Ct(Ui,"EList");b(67,52,{20:1,28:1,52:1,14:1,15:1,67:1,58:1}),s.Vc=function(e,t){s6(this,e,t)},s.Fc=function(e){return me(this,e)},s.Wc=function(e,t){return NV(this,e,t)},s.Gc=function(e){return Dt(this,e)},s.Zh=function(){return new w2(this)},s.$h=function(){return new u8(this)},s._h=function(e){return J8(this,e)},s.ai=function(){return!0},s.bi=function(e,t){},s.ci=function(){},s.di=function(e,t){A$(this,e,t)},s.ei=function(e,t,i){},s.fi=function(e,t){},s.gi=function(e,t,i){},s.Fb=function(e){return oBn(this,e)},s.Hb=function(){return DV(this)},s.hi=function(){return!1},s.Kc=function(){return new ie(this)},s.Yc=function(){return new b2(this)},s.Zc=function(e){var t;if(t=this.gc(),e<0||e>t)throw T(new V0(e,t));return new DD(this,e)},s.ji=function(e,t){this.ii(e,this.Xc(t))},s.Mc=function(e){return BC(this,e)},s.li=function(e,t){return t},s._c=function(e,t){return Gw(this,e,t)},s.Ib=function(){return CQ(this)},s.ni=function(){return!0},s.oi=function(e,t){return W3(this,t)},w(Ui,"AbstractEList",67),b(63,67,Xf,Jy,Ld,CV),s.Vh=function(e,t){return mx(this,e,t)},s.Wh=function(e){return hFn(this,e)},s.Xh=function(e,t){a7(this,e,t)},s.Yh=function(e){F8(this,e)},s.pi=function(e){return zX(this,e)},s.$b=function(){U5(this)},s.Hc=function(e){return o4(this,e)},s.Xb=function(e){return D(this,e)},s.qi=function(e){var t,i,r;++this.j,i=this.g==null?0:this.g.length,e>i&&(r=this.g,t=i+(i/2|0)+4,t=0?(this.$c(t),!0):!1},s.mi=function(e,t){return this.Ui(e,this.oi(e,t))},s.gc=function(){return this.Vi()},s.Pc=function(){return this.Wi()},s.Qc=function(e){return this.Xi(e)},s.Ib=function(){return this.Yi()},w(Ui,"DelegatingEList",1995),b(1996,1995,rGn),s.Vh=function(e,t){return wZ(this,e,t)},s.Wh=function(e){return this.Vh(this.Vi(),e)},s.Xh=function(e,t){WLn(this,e,t)},s.Yh=function(e){BLn(this,e)},s.ai=function(){return!this.bj()},s.$b=function(){$6(this)},s.Zi=function(e,t,i,r,c){return new QTn(this,e,t,i,r,c)},s.$i=function(e){et(this.Ai(),e)},s._i=function(){return null},s.aj=function(){return-1},s.Ai=function(){return null},s.bj=function(){return!1},s.cj=function(e,t){return t},s.dj=function(e,t){return t},s.ej=function(){return!1},s.fj=function(){return!this.Ri()},s.ii=function(e,t){var i,r;return this.ej()?(r=this.fj(),i=WJ(this,e,t),this.$i(this.Zi(7,Q(t),i,e,r)),i):WJ(this,e,t)},s.$c=function(e){var t,i,r,c;return this.ej()?(i=null,r=this.fj(),t=this.Zi(4,c=OE(this,e),null,e,r),this.bj()&&c?(i=this.dj(c,i),i?(i.Ei(t),i.Fi()):this.$i(t)):i?(i.Ei(t),i.Fi()):this.$i(t),c):(c=OE(this,e),this.bj()&&c&&(i=this.dj(c,null),i&&i.Fi()),c)},s.mi=function(e,t){return eRn(this,e,t)},w(sp,"DelegatingNotifyingListImpl",1996),b(143,1,jk),s.Ei=function(e){return FJ(this,e)},s.Fi=function(){L$(this)},s.xi=function(){return this.d},s._i=function(){return null},s.gj=function(){return null},s.yi=function(e){return-1},s.zi=function(){return KNn(this)},s.Ai=function(){return null},s.Bi=function(){return QY(this)},s.Ci=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},s.hj=function(){return!1},s.Di=function(e){var t,i,r,c,o,f,h,l,a,d,g;switch(this.d){case 1:case 2:switch(c=e.xi(),c){case 1:case 2:if(o=e.Ai(),B(o)===B(this.Ai())&&this.yi(null)==e.yi(null))return this.g=e.zi(),e.xi()==1&&(this.d=1),!0}case 4:{switch(c=e.xi(),c){case 4:{if(o=e.Ai(),B(o)===B(this.Ai())&&this.yi(null)==e.yi(null))return a=DZ(this),l=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,f=e.Ci(),this.d=6,g=new Ld(2),l<=f?(me(g,this.n),me(g,e.Bi()),this.g=A(M(be,1),Le,25,15,[this.o=l,f+1])):(me(g,e.Bi()),me(g,this.n),this.g=A(M(be,1),Le,25,15,[this.o=f,l])),this.n=g,a||(this.o=-2-this.o-1),!0;break}}break}case 6:{switch(c=e.xi(),c){case 4:{if(o=e.Ai(),B(o)===B(this.Ai())&&this.yi(null)==e.yi(null)){for(a=DZ(this),f=e.Ci(),d=u(this.g,48),r=F(be,Le,25,d.length+1,15,1),t=0;t>>0,t.toString(16))),r.a+=" (eventType: ",this.d){case 1:{r.a+="SET";break}case 2:{r.a+="UNSET";break}case 3:{r.a+="ADD";break}case 5:{r.a+="ADD_MANY";break}case 4:{r.a+="REMOVE";break}case 6:{r.a+="REMOVE_MANY";break}case 7:{r.a+="MOVE";break}case 8:{r.a+="REMOVING_ADAPTER";break}case 9:{r.a+="RESOLVE";break}default:{eO(r,this.d);break}}if(PBn(this)&&(r.a+=", touch: true"),r.a+=", position: ",eO(r,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),r.a+=", notifier: ",w5(r,this.Ai()),r.a+=", feature: ",w5(r,this._i()),r.a+=", oldValue: ",w5(r,QY(this)),r.a+=", newValue: ",this.d==6&&I(this.g,48)){for(i=u(this.g,48),r.a+="[",e=0;e10?((!this.b||this.c.j!=this.a)&&(this.b=new S5(this),this.a=this.j),Ah(this.b,e)):o4(this,e)},s.ni=function(){return!0},s.a=0,w(Ui,"AbstractEList/1",953),b(295,73,VL,V0),w(Ui,"AbstractEList/BasicIndexOutOfBoundsException",295),b(40,1,ji,ie),s.Nb=function(e){Oi(this,e)},s.mj=function(){if(this.i.j!=this.f)throw T(new vs)},s.nj=function(){return oe(this)},s.Ob=function(){return this.e!=this.i.gc()},s.Pb=function(){return this.nj()},s.Qb=function(){p6(this)},s.e=0,s.f=0,s.g=-1,w(Ui,"AbstractEList/EIterator",40),b(278,40,lh,b2,DD),s.Qb=function(){p6(this)},s.Rb=function(e){a$n(this,e)},s.oj=function(){var e;try{return e=this.d.Xb(--this.e),this.mj(),this.g=this.e,e}catch(t){throw t=jt(t),I(t,73)?(this.mj(),T(new ic)):T(t)}},s.pj=function(e){dFn(this,e)},s.Sb=function(){return this.e!=0},s.Tb=function(){return this.e},s.Ub=function(){return this.oj()},s.Vb=function(){return this.e-1},s.Wb=function(e){this.pj(e)},w(Ui,"AbstractEList/EListIterator",278),b(341,40,ji,w2),s.nj=function(){return UF(this)},s.Qb=function(){throw T(new ye)},w(Ui,"AbstractEList/NonResolvingEIterator",341),b(385,278,lh,u8,AU),s.Rb=function(e){throw T(new ye)},s.nj=function(){var e;try{return e=this.c.ki(this.e),this.mj(),this.g=this.e++,e}catch(t){throw t=jt(t),I(t,73)?(this.mj(),T(new ic)):T(t)}},s.oj=function(){var e;try{return e=this.c.ki(--this.e),this.mj(),this.g=this.e,e}catch(t){throw t=jt(t),I(t,73)?(this.mj(),T(new ic)):T(t)}},s.Qb=function(){throw T(new ye)},s.Wb=function(e){throw T(new ye)},w(Ui,"AbstractEList/NonResolvingEListIterator",385),b(1982,67,cGn),s.Vh=function(e,t){var i,r,c,o,f,h,l,a,d,g,p;if(c=t.gc(),c!=0){for(a=u(Rn(this.a,4),126),d=a==null?0:a.length,p=d+c,r=bF(this,p),g=d-e,g>0&&gc(a,e,r,e+c,g),l=t.Kc(),f=0;fi)throw T(new V0(e,i));return new sTn(this,e)},s.$b=function(){var e,t;++this.j,e=u(Rn(this.a,4),126),t=e==null?0:e.length,r4(this,null),A$(this,t,e)},s.Hc=function(e){var t,i,r,c,o;if(t=u(Rn(this.a,4),126),t!=null){if(e!=null){for(r=t,c=0,o=r.length;c=i)throw T(new V0(e,i));return t[e]},s.Xc=function(e){var t,i,r;if(t=u(Rn(this.a,4),126),t!=null){if(e!=null){for(i=0,r=t.length;ii)throw T(new V0(e,i));return new uTn(this,e)},s.ii=function(e,t){var i,r,c;if(i=k$n(this),c=i==null?0:i.length,e>=c)throw T(new mr(NB+e+Ra+c));if(t>=c)throw T(new mr(BB+t+Ra+c));return r=i[t],e!=t&&(e0&&gc(e,0,t,0,i),t},s.Qc=function(e){var t,i,r;return t=u(Rn(this.a,4),126),r=t==null?0:t.length,r>0&&(e.lengthr&&St(e,r,null),e};var Nne;w(Ui,"ArrayDelegatingEList",1982),b(1038,40,ji,gSn),s.mj=function(){if(this.b.j!=this.f||B(u(Rn(this.b.a,4),126))!==B(this.a))throw T(new vs)},s.Qb=function(){p6(this),this.a=u(Rn(this.b.a,4),126)},w(Ui,"ArrayDelegatingEList/EIterator",1038),b(706,278,lh,ICn,uTn),s.mj=function(){if(this.b.j!=this.f||B(u(Rn(this.b.a,4),126))!==B(this.a))throw T(new vs)},s.pj=function(e){dFn(this,e),this.a=u(Rn(this.b.a,4),126)},s.Qb=function(){p6(this),this.a=u(Rn(this.b.a,4),126)},w(Ui,"ArrayDelegatingEList/EListIterator",706),b(1039,341,ji,pSn),s.mj=function(){if(this.b.j!=this.f||B(u(Rn(this.b.a,4),126))!==B(this.a))throw T(new vs)},w(Ui,"ArrayDelegatingEList/NonResolvingEIterator",1039),b(707,385,lh,OCn,sTn),s.mj=function(){if(this.b.j!=this.f||B(u(Rn(this.b.a,4),126))!==B(this.a))throw T(new vs)},w(Ui,"ArrayDelegatingEList/NonResolvingEListIterator",707),b(606,295,VL,xO),w(Ui,"BasicEList/BasicIndexOutOfBoundsException",606),b(696,63,Xf,az),s.Vc=function(e,t){throw T(new ye)},s.Fc=function(e){throw T(new ye)},s.Wc=function(e,t){throw T(new ye)},s.Gc=function(e){throw T(new ye)},s.$b=function(){throw T(new ye)},s.qi=function(e){throw T(new ye)},s.Kc=function(){return this.Zh()},s.Yc=function(){return this.$h()},s.Zc=function(e){return this._h(e)},s.ii=function(e,t){throw T(new ye)},s.ji=function(e,t){throw T(new ye)},s.$c=function(e){throw T(new ye)},s.Mc=function(e){throw T(new ye)},s._c=function(e,t){throw T(new ye)},w(Ui,"BasicEList/UnmodifiableEList",696),b(705,1,{3:1,20:1,14:1,15:1,58:1,589:1}),s.Vc=function(e,t){wce(this,e,u(t,42))},s.Fc=function(e){return eue(this,u(e,42))},s.Jc=function(e){$i(this,e)},s.Xb=function(e){return u(D(this.c,e),133)},s.ii=function(e,t){return u(this.c.ii(e,t),42)},s.ji=function(e,t){gce(this,e,u(t,42))},s.Lc=function(){return new $n(null,new xn(this,16))},s.$c=function(e){return u(this.c.$c(e),42)},s._c=function(e,t){return fhe(this,e,u(t,42))},s.ad=function(e){Lw(this,e)},s.Nc=function(){return new xn(this,16)},s.Oc=function(){return new $n(null,new xn(this,16))},s.Wc=function(e,t){return this.c.Wc(e,t)},s.Gc=function(e){return this.c.Gc(e)},s.$b=function(){this.c.$b()},s.Hc=function(e){return this.c.Hc(e)},s.Ic=function(e){return t7(this.c,e)},s.qj=function(){var e,t,i;if(this.d==null){for(this.d=F(u1n,Xtn,63,2*this.f+1,0,1),i=this.e,this.f=0,t=this.c.Kc();t.e!=t.i.gc();)e=u(t.nj(),133),KT(this,e);this.e=i}},s.Fb=function(e){return tEn(this,e)},s.Hb=function(){return DV(this.c)},s.Xc=function(e){return this.c.Xc(e)},s.rj=function(){this.c=new jmn(this)},s.dc=function(){return this.f==0},s.Kc=function(){return this.c.Kc()},s.Yc=function(){return this.c.Yc()},s.Zc=function(e){return this.c.Zc(e)},s.sj=function(){return N8(this)},s.tj=function(e,t,i){return new mEn(e,t,i)},s.uj=function(){return new W2n},s.Mc=function(e){return xIn(this,e)},s.gc=function(){return this.f},s.bd=function(e,t){return new uh(this.c,e,t)},s.Pc=function(){return this.c.Pc()},s.Qc=function(e){return this.c.Qc(e)},s.Ib=function(){return CQ(this.c)},s.e=0,s.f=0,w(Ui,"BasicEMap",705),b(1033,63,Xf,jmn),s.bi=function(e,t){Yte(this,u(t,133))},s.ei=function(e,t,i){var r;++(r=this,u(t,133),r).a.e},s.fi=function(e,t){Zte(this,u(t,133))},s.gi=function(e,t,i){Hce(this,u(t,133),u(i,133))},s.di=function(e,t){TOn(this.a)},w(Ui,"BasicEMap/1",1033),b(1034,63,Xf,W2n),s.ri=function(e){return F(hMe,uGn,612,e,0,1)},w(Ui,"BasicEMap/2",1034),b(1035,bf,pu,Emn),s.$b=function(){this.a.c.$b()},s.Hc=function(e){return NF(this.a,e)},s.Kc=function(){return this.a.f==0?(o3(),xy.a):new r8n(this.a)},s.Mc=function(e){var t;return t=this.a.f,IT(this.a,e),this.a.f!=t},s.gc=function(){return this.a.f},w(Ui,"BasicEMap/3",1035),b(1036,28,Sb,Cmn),s.$b=function(){this.a.c.$b()},s.Hc=function(e){return fBn(this.a,e)},s.Kc=function(){return this.a.f==0?(o3(),xy.a):new c8n(this.a)},s.gc=function(){return this.a.f},w(Ui,"BasicEMap/4",1036),b(1037,bf,pu,Tmn),s.$b=function(){this.a.c.$b()},s.Hc=function(e){var t,i,r,c,o,f,h,l,a;if(this.a.f>0&&I(e,42)&&(this.a.qj(),l=u(e,42),h=l.cd(),c=h==null?0:mt(h),o=dU(this.a,c),t=this.a.d[o],t)){for(i=u(t.g,367),a=t.i,f=0;f"+this.c},s.a=0;var hMe=w(Ui,"BasicEMap/EntryImpl",612);b(536,1,{},Qy),w(Ui,"BasicEMap/View",536);var xy;b(768,1,{}),s.Fb=function(e){return DY((Pn(),cr),e)},s.Hb=function(){return GV((Pn(),cr))},s.Ib=function(){return kl((Pn(),cr))},w(Ui,"ECollections/BasicEmptyUnmodifiableEList",768),b(1312,1,lh,X2n),s.Nb=function(e){Oi(this,e)},s.Rb=function(e){throw T(new ye)},s.Ob=function(){return!1},s.Sb=function(){return!1},s.Pb=function(){throw T(new ic)},s.Tb=function(){return 0},s.Ub=function(){throw T(new ic)},s.Vb=function(){return-1},s.Qb=function(){throw T(new ye)},s.Wb=function(e){throw T(new ye)},w(Ui,"ECollections/BasicEmptyUnmodifiableEList/1",1312),b(1310,768,{20:1,14:1,15:1,58:1},w9n),s.Vc=function(e,t){M8n()},s.Fc=function(e){return A8n()},s.Wc=function(e,t){return S8n()},s.Gc=function(e){return P8n()},s.$b=function(){I8n()},s.Hc=function(e){return!1},s.Ic=function(e){return!1},s.Jc=function(e){$i(this,e)},s.Xb=function(e){return wz((Pn(),e)),null},s.Xc=function(e){return-1},s.dc=function(){return!0},s.Kc=function(){return this.a},s.Yc=function(){return this.a},s.Zc=function(e){return this.a},s.ii=function(e,t){return O8n()},s.ji=function(e,t){D8n()},s.Lc=function(){return new $n(null,new xn(this,16))},s.$c=function(e){return $8n()},s.Mc=function(e){return F8n()},s._c=function(e,t){return x8n()},s.gc=function(){return 0},s.ad=function(e){Lw(this,e)},s.Nc=function(){return new xn(this,16)},s.Oc=function(){return new $n(null,new xn(this,16))},s.bd=function(e,t){return Pn(),new uh(cr,e,t)},s.Pc=function(){return wW((Pn(),cr))},s.Qc=function(e){return Pn(),y7(cr,e)},w(Ui,"ECollections/EmptyUnmodifiableEList",1310),b(1311,768,{20:1,14:1,15:1,58:1,589:1},g9n),s.Vc=function(e,t){M8n()},s.Fc=function(e){return A8n()},s.Wc=function(e,t){return S8n()},s.Gc=function(e){return P8n()},s.$b=function(){I8n()},s.Hc=function(e){return!1},s.Ic=function(e){return!1},s.Jc=function(e){$i(this,e)},s.Xb=function(e){return wz((Pn(),e)),null},s.Xc=function(e){return-1},s.dc=function(){return!0},s.Kc=function(){return this.a},s.Yc=function(){return this.a},s.Zc=function(e){return this.a},s.ii=function(e,t){return O8n()},s.ji=function(e,t){D8n()},s.Lc=function(){return new $n(null,new xn(this,16))},s.$c=function(e){return $8n()},s.Mc=function(e){return F8n()},s._c=function(e,t){return x8n()},s.gc=function(){return 0},s.ad=function(e){Lw(this,e)},s.Nc=function(){return new xn(this,16)},s.Oc=function(){return new $n(null,new xn(this,16))},s.bd=function(e,t){return Pn(),new uh(cr,e,t)},s.Pc=function(){return wW((Pn(),cr))},s.Qc=function(e){return Pn(),y7(cr,e)},s.sj=function(){return Pn(),Pn(),vh},w(Ui,"ECollections/EmptyUnmodifiableEMap",1311);var o1n=Ct(Ui,"Enumerator"),eI;b(281,1,{281:1},zx),s.Fb=function(e){var t;return this===e?!0:I(e,281)?(t=u(e,281),this.f==t.f&&Ife(this.i,t.i)&&vD(this.a,this.f&256?t.f&256?t.a:null:t.f&256?null:t.a)&&vD(this.d,t.d)&&vD(this.g,t.g)&&vD(this.e,t.e)&&Cpe(this,t)):!1},s.Hb=function(){return this.f},s.Ib=function(){return _Bn(this)},s.f=0;var Bne=0,Rne=0,_ne=0,Kne=0,f1n=0,h1n=0,l1n=0,a1n=0,d1n=0,Hne,a9=0,d9=0,qne=0,Gne=0,tI,b1n;w(Ui,"URI",281),b(1091,43,sg,p9n),s.zc=function(e,t){return u(yr(this,Ce(e),u(t,281)),281)},w(Ui,"URI/URICache",1091),b(497,63,Xf,H2n,$E),s.hi=function(){return!0},w(Ui,"UniqueEList",497),b(581,60,Uh,xC),w(Ui,"WrappedException",581);var Be=Ct(Is,fGn),sw=Ct(Is,hGn),ou=Ct(Is,lGn),ow=Ct(Is,aGn),Qo=Ct(Is,dGn),ro=Ct(Is,"EClass"),wH=Ct(Is,"EDataType"),zne;b(1183,43,sg,v9n),s.xc=function(e){return ki(e)?vc(this,e):Vr(Sr(this.f,e))},w(Is,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1183);var iI=Ct(Is,"EEnum"),e1=Ct(Is,bGn),ar=Ct(Is,wGn),co=Ct(Is,gGn),uo,P0=Ct(Is,pGn),fw=Ct(Is,vGn);b(1029,1,{},K2n),s.Ib=function(){return"NIL"},w(Is,"EStructuralFeature/Internal/DynamicValueHolder/1",1029);var Une;b(1028,43,sg,m9n),s.xc=function(e){return ki(e)?vc(this,e):Vr(Sr(this.f,e))},w(Is,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1028);var zc=Ct(Is,mGn),Ip=Ct(Is,"EValidator/PatternMatcher"),w1n,g1n,Nn,x1,hw,Xl,Wne,Xne,Vne,Vl,L1,Ql,I0,Tf,Qne,Jne,so,N1,Yne,B1,lw,qg,nr,Zne,nee,O0,rI=Ct(vt,"FeatureMap/Entry");b(535,1,{72:1},Yj),s.ak=function(){return this.a},s.dd=function(){return this.b},w(Bn,"BasicEObjectImpl/1",535),b(1027,1,GB,Okn),s.Wj=function(e){return T$(this.a,this.b,e)},s.fj=function(){return lMn(this.a,this.b)},s.Wb=function(e){JW(this.a,this.b,e)},s.Xj=function(){Mhe(this.a,this.b)},w(Bn,"BasicEObjectImpl/4",1027),b(1983,1,{108:1}),s.bk=function(e){this.e=e==0?eee:F(Zn,rn,1,e,5,1)},s.Ch=function(e){return this.e[e]},s.Dh=function(e,t){this.e[e]=t},s.Eh=function(e){this.e[e]=null},s.ck=function(){return this.c},s.dk=function(){throw T(new ye)},s.ek=function(){throw T(new ye)},s.fk=function(){return this.d},s.gk=function(){return this.e!=null},s.hk=function(e){this.c=e},s.ik=function(e){throw T(new ye)},s.jk=function(e){throw T(new ye)},s.kk=function(e){this.d=e};var eee;w(Bn,"BasicEObjectImpl/EPropertiesHolderBaseImpl",1983),b(185,1983,{108:1},Fo),s.dk=function(){return this.a},s.ek=function(){return this.b},s.ik=function(e){this.a=e},s.jk=function(e){this.b=e},w(Bn,"BasicEObjectImpl/EPropertiesHolderImpl",185),b(506,97,kqn,Yy),s.Kg=function(){return this.f},s.Pg=function(){return this.k},s.Rg=function(e,t){this.g=e,this.i=t},s.Tg=function(){return this.j&2?this.ph().ck():this.zh()},s.Vg=function(){return this.i},s.Mg=function(){return(this.j&1)!=0},s.eh=function(){return this.g},s.kh=function(){return(this.j&4)!=0},s.ph=function(){return!this.k&&(this.k=new Fo),this.k},s.th=function(e){this.ph().hk(e),e?this.j|=2:this.j&=-3},s.vh=function(e){this.ph().jk(e),e?this.j|=4:this.j&=-5},s.zh=function(){return(ol(),Nn).S},s.i=0,s.j=1,w(Bn,"EObjectImpl",506),b(780,506,{105:1,92:1,90:1,56:1,108:1,49:1,97:1},JU),s.Ch=function(e){return this.e[e]},s.Dh=function(e,t){this.e[e]=t},s.Eh=function(e){this.e[e]=null},s.Tg=function(){return this.d},s.Yg=function(e){return yt(this.d,e)},s.$g=function(){return this.d},s.dh=function(){return this.e!=null},s.ph=function(){return!this.k&&(this.k=new V2n),this.k},s.th=function(e){this.d=e},s.yh=function(){var e;return this.e==null&&(e=ee(this.d),this.e=e==0?tee:F(Zn,rn,1,e,5,1)),this},s.Ah=function(){return 0};var tee;w(Bn,"DynamicEObjectImpl",780),b(1376,780,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1},UEn),s.Fb=function(e){return this===e},s.Hb=function(){return md(this)},s.th=function(e){this.d=e,this.b=R7(e,"key"),this.c=R7(e,im)},s.Sh=function(){var e;return this.a==-1&&(e=N$(this,this.b),this.a=e==null?0:mt(e)),this.a},s.cd=function(){return N$(this,this.b)},s.dd=function(){return N$(this,this.c)},s.Th=function(e){this.a=e},s.Uh=function(e){JW(this,this.b,e)},s.ed=function(e){var t;return t=N$(this,this.c),JW(this,this.c,e),t},s.a=0,w(Bn,"DynamicEObjectImpl/BasicEMapEntry",1376),b(1377,1,{108:1},V2n),s.bk=function(e){throw T(new ye)},s.Ch=function(e){throw T(new ye)},s.Dh=function(e,t){throw T(new ye)},s.Eh=function(e){throw T(new ye)},s.ck=function(){throw T(new ye)},s.dk=function(){return this.a},s.ek=function(){return this.b},s.fk=function(){return this.c},s.gk=function(){throw T(new ye)},s.hk=function(e){throw T(new ye)},s.ik=function(e){this.a=e},s.jk=function(e){this.b=e},s.kk=function(e){this.c=e},w(Bn,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1377),b(510,150,{105:1,92:1,90:1,590:1,147:1,56:1,108:1,49:1,97:1,510:1,150:1,114:1,115:1},JH),s.Qg=function(e){return gJ(this,e)},s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.d;case 2:return i?(!this.b&&(this.b=new Gu((Sn(),nr),tc,this)),this.b):(!this.b&&(this.b=new Gu((Sn(),nr),tc,this)),N8(this.b));case 3:return gMn(this);case 4:return!this.a&&(this.a=new Yt(zl,this,4)),this.a;case 5:return!this.c&&(this.c=new Aw(zl,this,5)),this.c}return Cs(this,e-ee((Sn(),x1)),On((r=u(Rn(this,16),26),r||x1),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 3:return this.Cb&&(i=(c=this.Db>>16,c>=0?gJ(this,i):this.Cb.ih(this,-1-c,null,i))),dW(this,u(e,147),i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),x1)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),x1)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 2:return!this.b&&(this.b=new Gu((Sn(),nr),tc,this)),yE(this.b,e,i);case 3:return dW(this,null,i);case 4:return!this.a&&(this.a=new Yt(zl,this,4)),zi(this.a,e,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),x1)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),x1)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return!!this.b&&this.b.f!=0;case 3:return!!gMn(this);case 4:return!!this.a&&this.a.i!=0;case 5:return!!this.c&&this.c.i!=0}return js(this,e-ee((Sn(),x1)),On((t=u(Rn(this,16),26),t||x1),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:wfe(this,Ce(t));return;case 2:!this.b&&(this.b=new Gu((Sn(),nr),tc,this)),fT(this.b,t);return;case 3:INn(this,u(t,147));return;case 4:!this.a&&(this.a=new Yt(zl,this,4)),de(this.a),!this.a&&(this.a=new Yt(zl,this,4)),Dt(this.a,u(t,14));return;case 5:!this.c&&(this.c=new Aw(zl,this,5)),de(this.c),!this.c&&(this.c=new Aw(zl,this,5)),Dt(this.c,u(t,14));return}Ps(this,e-ee((Sn(),x1)),On((i=u(Rn(this,16),26),i||x1),e),t)},s.zh=function(){return Sn(),x1},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:pV(this,null);return;case 2:!this.b&&(this.b=new Gu((Sn(),nr),tc,this)),this.b.c.$b();return;case 3:INn(this,null);return;case 4:!this.a&&(this.a=new Yt(zl,this,4)),de(this.a);return;case 5:!this.c&&(this.c=new Aw(zl,this,5)),de(this.c);return}As(this,e-ee((Sn(),x1)),On((t=u(Rn(this,16),26),t||x1),e))},s.Ib=function(){return zDn(this)},s.d=null,w(Bn,"EAnnotationImpl",510),b(151,705,Vtn,Xu),s.Xh=function(e,t){Jre(this,e,u(t,42))},s.lk=function(e,t){return zue(this,u(e,42),t)},s.pi=function(e){return u(u(this.c,69).pi(e),133)},s.Zh=function(){return u(this.c,69).Zh()},s.$h=function(){return u(this.c,69).$h()},s._h=function(e){return u(this.c,69)._h(e)},s.mk=function(e,t){return yE(this,e,t)},s.Wj=function(e){return u(this.c,76).Wj(e)},s.rj=function(){},s.fj=function(){return u(this.c,76).fj()},s.tj=function(e,t,i){var r;return r=u(is(this.b).Nh().Jh(this.b),133),r.Th(e),r.Uh(t),r.ed(i),r},s.uj=function(){return new Lq(this)},s.Wb=function(e){fT(this,e)},s.Xj=function(){u(this.c,76).Xj()},w(vt,"EcoreEMap",151),b(158,151,Vtn,Gu),s.qj=function(){var e,t,i,r,c,o;if(this.d==null){for(o=F(u1n,Xtn,63,2*this.f+1,0,1),i=this.c.Kc();i.e!=i.i.gc();)t=u(i.nj(),133),r=t.Sh(),c=(r&nt)%o.length,e=o[c],!e&&(e=o[c]=new Lq(this)),e.Fc(t);this.d=o}},w(Bn,"EAnnotationImpl/1",158),b(284,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,472:1,49:1,97:1,150:1,284:1,114:1,115:1}),s._g=function(e,t,i){var r,c;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return qn(),!!(this.Bb&256);case 3:return qn(),!!(this.Bb&512);case 4:return Q(this.s);case 5:return Q(this.t);case 6:return qn(),!!this.$j();case 7:return qn(),c=this.s,c>=1;case 8:return t?qs(this):this.r;case 9:return this.q}return Cs(this,e-ee(this.zh()),On((r=u(Rn(this,16),26),r||this.zh()),e),t,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 9:return xD(this,i)}return c=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),c.Nj().Rj(this,Rc(this),t-ee(this.zh()),e,i)},s.lh=function(e){var t,i;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return i=this.s,i>=1;case 8:return!!this.r&&!this.q.e&&Ad(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Ad(this.q).i==0)}return js(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.sh=function(e,t){var i,r;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:this.Lh(Ce(t));return;case 2:g1(this,on(sn(t)));return;case 3:p1(this,on(sn(t)));return;case 4:d1(this,u(t,19).a);return;case 5:this.ok(u(t,19).a);return;case 8:Ca(this,u(t,138));return;case 9:r=df(this,u(t,87),null),r&&r.Fi();return}Ps(this,e-ee(this.zh()),On((i=u(Rn(this,16),26),i||this.zh()),e),t)},s.zh=function(){return Sn(),nee},s.Bh=function(e){var t,i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:this.Lh(null);return;case 2:g1(this,!0);return;case 3:p1(this,!0);return;case 4:d1(this,0);return;case 5:this.ok(1);return;case 8:Ca(this,null);return;case 9:i=df(this,null,null),i&&i.Fi();return}As(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.Gh=function(){qs(this),this.Bb|=1},s.Yj=function(){return qs(this)},s.Zj=function(){return this.t},s.$j=function(){var e;return e=this.t,e>1||e==-1},s.hi=function(){return(this.Bb&512)!=0},s.nk=function(e,t){return lQ(this,e,t)},s.ok=function(e){hb(this,e)},s.Ib=function(){return jY(this)},s.s=0,s.t=1,w(Bn,"ETypedElementImpl",284),b(449,284,{105:1,92:1,90:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,449:1,284:1,114:1,115:1,677:1}),s.Qg=function(e){return AFn(this,e)},s._g=function(e,t,i){var r,c;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return qn(),!!(this.Bb&256);case 3:return qn(),!!(this.Bb&512);case 4:return Q(this.s);case 5:return Q(this.t);case 6:return qn(),!!this.$j();case 7:return qn(),c=this.s,c>=1;case 8:return t?qs(this):this.r;case 9:return this.q;case 10:return qn(),!!(this.Bb&Eo);case 11:return qn(),!!(this.Bb&Bb);case 12:return qn(),!!(this.Bb&Ib);case 13:return this.j;case 14:return w4(this);case 15:return qn(),!!(this.Bb&mu);case 16:return qn(),!!(this.Bb&Bf);case 17:return eb(this)}return Cs(this,e-ee(this.zh()),On((r=u(Rn(this,16),26),r||this.zh()),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 17:return this.Cb&&(i=(c=this.Db>>16,c>=0?AFn(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,17,i)}return o=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),o.Nj().Qj(this,Rc(this),t-ee(this.zh()),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 9:return xD(this,i);case 17:return os(this,null,17,i)}return c=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),c.Nj().Rj(this,Rc(this),t-ee(this.zh()),e,i)},s.lh=function(e){var t,i;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.$j();case 7:return i=this.s,i>=1;case 8:return!!this.r&&!this.q.e&&Ad(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Ad(this.q).i==0);case 10:return(this.Bb&Eo)==0;case 11:return(this.Bb&Bb)!=0;case 12:return(this.Bb&Ib)!=0;case 13:return this.j!=null;case 14:return w4(this)!=null;case 15:return(this.Bb&mu)!=0;case 16:return(this.Bb&Bf)!=0;case 17:return!!eb(this)}return js(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.sh=function(e,t){var i,r;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:f$(this,Ce(t));return;case 2:g1(this,on(sn(t)));return;case 3:p1(this,on(sn(t)));return;case 4:d1(this,u(t,19).a);return;case 5:this.ok(u(t,19).a);return;case 8:Ca(this,u(t,138));return;case 9:r=df(this,u(t,87),null),r&&r.Fi();return;case 10:Y3(this,on(sn(t)));return;case 11:e4(this,on(sn(t)));return;case 12:Z3(this,on(sn(t)));return;case 13:dz(this,Ce(t));return;case 15:n4(this,on(sn(t)));return;case 16:t4(this,on(sn(t)));return}Ps(this,e-ee(this.zh()),On((i=u(Rn(this,16),26),i||this.zh()),e),t)},s.zh=function(){return Sn(),Zne},s.Bh=function(e){var t,i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:I(this.Cb,88)&&yb(Ou(u(this.Cb,88)),4),Ic(this,null);return;case 2:g1(this,!0);return;case 3:p1(this,!0);return;case 4:d1(this,0);return;case 5:this.ok(1);return;case 8:Ca(this,null);return;case 9:i=df(this,null,null),i&&i.Fi();return;case 10:Y3(this,!0);return;case 11:e4(this,!1);return;case 12:Z3(this,!1);return;case 13:this.i=null,nT(this,null);return;case 15:n4(this,!1);return;case 16:t4(this,!1);return}As(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.Gh=function(){v3(Er((gu(),xi),this)),qs(this),this.Bb|=1},s.Gj=function(){return this.f},s.zj=function(){return w4(this)},s.Hj=function(){return eb(this)},s.Lj=function(){return null},s.pk=function(){return this.k},s.aj=function(){return this.n},s.Mj=function(){return QT(this)},s.Nj=function(){var e,t,i,r,c,o,f,h,l;return this.p||(i=eb(this),(i.i==null&&Nf(i),i.i).length,r=this.Lj(),r&&ee(eb(r)),c=qs(this),f=c.Bj(),e=f?f.i&1?f==Ku?oi:f==be?Wi:f==dw?U4:f==Ei?Ai:f==Yl?a0:f==Wg?d0:f==yu?op:bm:f:null,t=w4(this),h=c.zj(),Vge(this),this.Bb&Bf&&((o=EJ((gu(),xi),i))&&o!=this||(o=A2(Er(xi,this))))?this.p=new $kn(this,o):this.$j()?this.rk()?r?this.Bb&mu?e?this.sk()?this.p=new ha(47,e,this,r):this.p=new ha(5,e,this,r):this.sk()?this.p=new da(46,this,r):this.p=new da(4,this,r):e?this.sk()?this.p=new ha(49,e,this,r):this.p=new ha(7,e,this,r):this.sk()?this.p=new da(48,this,r):this.p=new da(6,this,r):this.Bb&mu?e?e==Ha?this.p=new s1(50,xne,this):this.sk()?this.p=new s1(43,e,this):this.p=new s1(1,e,this):this.sk()?this.p=new f1(42,this):this.p=new f1(0,this):e?e==Ha?this.p=new s1(41,xne,this):this.sk()?this.p=new s1(45,e,this):this.p=new s1(3,e,this):this.sk()?this.p=new f1(44,this):this.p=new f1(2,this):I(c,148)?e==rI?this.p=new f1(40,this):this.Bb&512?this.Bb&mu?e?this.p=new s1(9,e,this):this.p=new f1(8,this):e?this.p=new s1(11,e,this):this.p=new f1(10,this):this.Bb&mu?e?this.p=new s1(13,e,this):this.p=new f1(12,this):e?this.p=new s1(15,e,this):this.p=new f1(14,this):r?(l=r.t,l>1||l==-1?this.sk()?this.Bb&mu?e?this.p=new ha(25,e,this,r):this.p=new da(24,this,r):e?this.p=new ha(27,e,this,r):this.p=new da(26,this,r):this.Bb&mu?e?this.p=new ha(29,e,this,r):this.p=new da(28,this,r):e?this.p=new ha(31,e,this,r):this.p=new da(30,this,r):this.sk()?this.Bb&mu?e?this.p=new ha(33,e,this,r):this.p=new da(32,this,r):e?this.p=new ha(35,e,this,r):this.p=new da(34,this,r):this.Bb&mu?e?this.p=new ha(37,e,this,r):this.p=new da(36,this,r):e?this.p=new ha(39,e,this,r):this.p=new da(38,this,r)):this.sk()?this.Bb&mu?e?this.p=new s1(17,e,this):this.p=new f1(16,this):e?this.p=new s1(19,e,this):this.p=new f1(18,this):this.Bb&mu?e?this.p=new s1(21,e,this):this.p=new f1(20,this):e?this.p=new s1(23,e,this):this.p=new f1(22,this):this.qk()?this.sk()?this.p=new kEn(u(c,26),this,r):this.p=new QW(u(c,26),this,r):I(c,148)?e==rI?this.p=new f1(40,this):this.Bb&mu?e?this.p=new vCn(t,h,this,(LF(),f==be?E1n:f==Ku?v1n:f==Yl?C1n:f==dw?j1n:f==Ei?y1n:f==Wg?T1n:f==yu?m1n:f==Ls?k1n:vH)):this.p=new ITn(u(c,148),t,h,this):e?this.p=new pCn(t,h,this,(LF(),f==be?E1n:f==Ku?v1n:f==Yl?C1n:f==dw?j1n:f==Ei?y1n:f==Wg?T1n:f==yu?m1n:f==Ls?k1n:vH)):this.p=new PTn(u(c,148),t,h,this):this.rk()?r?this.Bb&mu?this.sk()?this.p=new jEn(u(c,26),this,r):this.p=new KU(u(c,26),this,r):this.sk()?this.p=new yEn(u(c,26),this,r):this.p=new lD(u(c,26),this,r):this.Bb&mu?this.sk()?this.p=new pjn(u(c,26),this):this.p=new eU(u(c,26),this):this.sk()?this.p=new gjn(u(c,26),this):this.p=new JO(u(c,26),this):this.sk()?r?this.Bb&mu?this.p=new EEn(u(c,26),this,r):this.p=new RU(u(c,26),this,r):this.Bb&mu?this.p=new vjn(u(c,26),this):this.p=new tU(u(c,26),this):r?this.Bb&mu?this.p=new CEn(u(c,26),this,r):this.p=new _U(u(c,26),this,r):this.Bb&mu?this.p=new mjn(u(c,26),this):this.p=new FE(u(c,26),this)),this.p},s.Ij=function(){return(this.Bb&Eo)!=0},s.qk=function(){return!1},s.rk=function(){return!1},s.Jj=function(){return(this.Bb&Bf)!=0},s.Oj=function(){return R$(this)},s.sk=function(){return!1},s.Kj=function(){return(this.Bb&mu)!=0},s.tk=function(e){this.k=e},s.Lh=function(e){f$(this,e)},s.Ib=function(){return bM(this)},s.e=!1,s.n=0,w(Bn,"EStructuralFeatureImpl",449),b(322,449,{105:1,92:1,90:1,34:1,147:1,191:1,56:1,170:1,66:1,108:1,472:1,49:1,97:1,322:1,150:1,449:1,284:1,114:1,115:1,677:1},BI),s._g=function(e,t,i){var r,c;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return qn(),!!(this.Bb&256);case 3:return qn(),!!(this.Bb&512);case 4:return Q(this.s);case 5:return Q(this.t);case 6:return qn(),!!vY(this);case 7:return qn(),c=this.s,c>=1;case 8:return t?qs(this):this.r;case 9:return this.q;case 10:return qn(),!!(this.Bb&Eo);case 11:return qn(),!!(this.Bb&Bb);case 12:return qn(),!!(this.Bb&Ib);case 13:return this.j;case 14:return w4(this);case 15:return qn(),!!(this.Bb&mu);case 16:return qn(),!!(this.Bb&Bf);case 17:return eb(this);case 18:return qn(),!!(this.Bb&uc);case 19:return t?iF(this):ISn(this)}return Cs(this,e-ee((Sn(),hw)),On((r=u(Rn(this,16),26),r||hw),e),t,i)},s.lh=function(e){var t,i;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return vY(this);case 7:return i=this.s,i>=1;case 8:return!!this.r&&!this.q.e&&Ad(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Ad(this.q).i==0);case 10:return(this.Bb&Eo)==0;case 11:return(this.Bb&Bb)!=0;case 12:return(this.Bb&Ib)!=0;case 13:return this.j!=null;case 14:return w4(this)!=null;case 15:return(this.Bb&mu)!=0;case 16:return(this.Bb&Bf)!=0;case 17:return!!eb(this);case 18:return(this.Bb&uc)!=0;case 19:return!!ISn(this)}return js(this,e-ee((Sn(),hw)),On((t=u(Rn(this,16),26),t||hw),e))},s.sh=function(e,t){var i,r;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:f$(this,Ce(t));return;case 2:g1(this,on(sn(t)));return;case 3:p1(this,on(sn(t)));return;case 4:d1(this,u(t,19).a);return;case 5:o8n(this,u(t,19).a);return;case 8:Ca(this,u(t,138));return;case 9:r=df(this,u(t,87),null),r&&r.Fi();return;case 10:Y3(this,on(sn(t)));return;case 11:e4(this,on(sn(t)));return;case 12:Z3(this,on(sn(t)));return;case 13:dz(this,Ce(t));return;case 15:n4(this,on(sn(t)));return;case 16:t4(this,on(sn(t)));return;case 18:SF(this,on(sn(t)));return}Ps(this,e-ee((Sn(),hw)),On((i=u(Rn(this,16),26),i||hw),e),t)},s.zh=function(){return Sn(),hw},s.Bh=function(e){var t,i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:I(this.Cb,88)&&yb(Ou(u(this.Cb,88)),4),Ic(this,null);return;case 2:g1(this,!0);return;case 3:p1(this,!0);return;case 4:d1(this,0);return;case 5:this.b=0,hb(this,1);return;case 8:Ca(this,null);return;case 9:i=df(this,null,null),i&&i.Fi();return;case 10:Y3(this,!0);return;case 11:e4(this,!1);return;case 12:Z3(this,!1);return;case 13:this.i=null,nT(this,null);return;case 15:n4(this,!1);return;case 16:t4(this,!1);return;case 18:SF(this,!1);return}As(this,e-ee((Sn(),hw)),On((t=u(Rn(this,16),26),t||hw),e))},s.Gh=function(){iF(this),v3(Er((gu(),xi),this)),qs(this),this.Bb|=1},s.$j=function(){return vY(this)},s.nk=function(e,t){return this.b=0,this.a=null,lQ(this,e,t)},s.ok=function(e){o8n(this,e)},s.Ib=function(){var e;return this.Db&64?bM(this):(e=new Bs(bM(this)),e.a+=" (iD: ",r1(e,(this.Bb&uc)!=0),e.a+=")",e.a)},s.b=0,w(Bn,"EAttributeImpl",322),b(351,438,{105:1,92:1,90:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,351:1,150:1,114:1,115:1,676:1}),s.uk=function(e){return e.Tg()==this},s.Qg=function(e){return ox(this,e)},s.Rg=function(e,t){this.w=null,this.Db=t<<16|this.Db&255,this.Cb=e},s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Qd(this);case 4:return this.zj();case 5:return this.F;case 6:return t?is(this):y3(this);case 7:return!this.A&&(this.A=new lu(zc,this,7)),this.A}return Cs(this,e-ee(this.zh()),On((r=u(Rn(this,16),26),r||this.zh()),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 6:return this.Cb&&(i=(c=this.Db>>16,c>=0?ox(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,6,i)}return o=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),o.Nj().Qj(this,Rc(this),t-ee(this.zh()),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 6:return os(this,null,6,i);case 7:return!this.A&&(this.A=new lu(zc,this,7)),zi(this.A,e,i)}return c=u(On((r=u(Rn(this,16),26),r||this.zh()),t),66),c.Nj().Rj(this,Rc(this),t-ee(this.zh()),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Qd(this);case 4:return this.zj()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!y3(this);case 7:return!!this.A&&this.A.i!=0}return js(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:bC(this,Ce(t));return;case 2:BO(this,Ce(t));return;case 5:y4(this,Ce(t));return;case 7:!this.A&&(this.A=new lu(zc,this,7)),de(this.A),!this.A&&(this.A=new lu(zc,this,7)),Dt(this.A,u(t,14));return}Ps(this,e-ee(this.zh()),On((i=u(Rn(this,16),26),i||this.zh()),e),t)},s.zh=function(){return Sn(),Wne},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:I(this.Cb,179)&&(u(this.Cb,179).tb=null),Ic(this,null);return;case 2:X3(this,null),L3(this,this.D);return;case 5:y4(this,null);return;case 7:!this.A&&(this.A=new lu(zc,this,7)),de(this.A);return}As(this,e-ee(this.zh()),On((t=u(Rn(this,16),26),t||this.zh()),e))},s.yj=function(){var e;return this.G==-1&&(this.G=(e=is(this),e?v1(e.Mh(),this):-1)),this.G},s.zj=function(){return null},s.Aj=function(){return is(this)},s.vk=function(){return this.v},s.Bj=function(){return Qd(this)},s.Cj=function(){return this.D!=null?this.D:this.B},s.Dj=function(){return this.F},s.wj=function(e){return nL(this,e)},s.wk=function(e){this.v=e},s.xk=function(e){uOn(this,e)},s.yk=function(e){this.C=e},s.Lh=function(e){bC(this,e)},s.Ib=function(){return MT(this)},s.C=null,s.D=null,s.G=-1,w(Bn,"EClassifierImpl",351),b(88,351,{105:1,92:1,90:1,26:1,138:1,147:1,191:1,56:1,108:1,49:1,97:1,88:1,351:1,150:1,473:1,114:1,115:1,676:1},tq),s.uk=function(e){return Oue(this,e.Tg())},s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Qd(this);case 4:return null;case 5:return this.F;case 6:return t?is(this):y3(this);case 7:return!this.A&&(this.A=new lu(zc,this,7)),this.A;case 8:return qn(),!!(this.Bb&256);case 9:return qn(),!!(this.Bb&512);case 10:return Ar(this);case 11:return!this.q&&(this.q=new V(co,this,11,10)),this.q;case 12:return ig(this);case 13:return I6(this);case 14:return I6(this),this.r;case 15:return ig(this),this.k;case 16:return oY(this);case 17:return cL(this);case 18:return Nf(this);case 19:return sM(this);case 20:return ig(this),this.o;case 21:return!this.s&&(this.s=new V(ou,this,21,17)),this.s;case 22:return bc(this);case 23:return Gx(this)}return Cs(this,e-ee((Sn(),Xl)),On((r=u(Rn(this,16),26),r||Xl),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 6:return this.Cb&&(i=(c=this.Db>>16,c>=0?ox(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,6,i);case 11:return!this.q&&(this.q=new V(co,this,11,10)),Oc(this.q,e,i);case 21:return!this.s&&(this.s=new V(ou,this,21,17)),Oc(this.s,e,i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),Xl)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),Xl)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 6:return os(this,null,6,i);case 7:return!this.A&&(this.A=new lu(zc,this,7)),zi(this.A,e,i);case 11:return!this.q&&(this.q=new V(co,this,11,10)),zi(this.q,e,i);case 21:return!this.s&&(this.s=new V(ou,this,21,17)),zi(this.s,e,i);case 22:return zi(bc(this),e,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),Xl)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),Xl)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Qd(this);case 4:return!1;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!y3(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)!=0;case 9:return(this.Bb&512)!=0;case 10:return!!this.u&&bc(this.u.a).i!=0&&!(this.n&&JF(this.n));case 11:return!!this.q&&this.q.i!=0;case 12:return ig(this).i!=0;case 13:return I6(this).i!=0;case 14:return I6(this),this.r.i!=0;case 15:return ig(this),this.k.i!=0;case 16:return oY(this).i!=0;case 17:return cL(this).i!=0;case 18:return Nf(this).i!=0;case 19:return sM(this).i!=0;case 20:return ig(this),!!this.o;case 21:return!!this.s&&this.s.i!=0;case 22:return!!this.n&&JF(this.n);case 23:return Gx(this).i!=0}return js(this,e-ee((Sn(),Xl)),On((t=u(Rn(this,16),26),t||Xl),e))},s.oh=function(e){var t;return t=this.i==null||this.q&&this.q.i!=0?null:R7(this,e),t||RZ(this,e)},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:bC(this,Ce(t));return;case 2:BO(this,Ce(t));return;case 5:y4(this,Ce(t));return;case 7:!this.A&&(this.A=new lu(zc,this,7)),de(this.A),!this.A&&(this.A=new lu(zc,this,7)),Dt(this.A,u(t,14));return;case 8:dQ(this,on(sn(t)));return;case 9:bQ(this,on(sn(t)));return;case 10:$6(Ar(this)),Dt(Ar(this),u(t,14));return;case 11:!this.q&&(this.q=new V(co,this,11,10)),de(this.q),!this.q&&(this.q=new V(co,this,11,10)),Dt(this.q,u(t,14));return;case 21:!this.s&&(this.s=new V(ou,this,21,17)),de(this.s),!this.s&&(this.s=new V(ou,this,21,17)),Dt(this.s,u(t,14));return;case 22:de(bc(this)),Dt(bc(this),u(t,14));return}Ps(this,e-ee((Sn(),Xl)),On((i=u(Rn(this,16),26),i||Xl),e),t)},s.zh=function(){return Sn(),Xl},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:I(this.Cb,179)&&(u(this.Cb,179).tb=null),Ic(this,null);return;case 2:X3(this,null),L3(this,this.D);return;case 5:y4(this,null);return;case 7:!this.A&&(this.A=new lu(zc,this,7)),de(this.A);return;case 8:dQ(this,!1);return;case 9:bQ(this,!1);return;case 10:this.u&&$6(this.u);return;case 11:!this.q&&(this.q=new V(co,this,11,10)),de(this.q);return;case 21:!this.s&&(this.s=new V(ou,this,21,17)),de(this.s);return;case 22:this.n&&de(this.n);return}As(this,e-ee((Sn(),Xl)),On((t=u(Rn(this,16),26),t||Xl),e))},s.Gh=function(){var e,t;if(ig(this),I6(this),oY(this),cL(this),Nf(this),sM(this),Gx(this),U5(Xoe(Ou(this))),this.s)for(e=0,t=this.s.i;e=0;--t)D(this,t);return LQ(this,e)},s.Xj=function(){de(this)},s.oi=function(e,t){return PIn(this,e,t)},w(vt,"EcoreEList",622),b(496,622,Br,v8),s.ai=function(){return!1},s.aj=function(){return this.c},s.bj=function(){return!1},s.Fk=function(){return!0},s.hi=function(){return!0},s.li=function(e,t){return t},s.ni=function(){return!1},s.c=0,w(vt,"EObjectEList",496),b(85,496,Br,Yt),s.bj=function(){return!0},s.Dk=function(){return!1},s.rk=function(){return!0},w(vt,"EObjectContainmentEList",85),b(545,85,Br,hE),s.ci=function(){this.b=!0},s.fj=function(){return this.b},s.Xj=function(){var e;de(this),qu(this.e)?(e=this.b,this.b=!1,et(this.e,new vo(this.e,2,this.c,e,!1))):this.b=!1},s.b=!1,w(vt,"EObjectContainmentEList/Unsettable",545),b(1140,545,Br,wCn),s.ii=function(e,t){var i,r;return i=u(o6(this,e,t),87),qu(this.e)&&Gp(this,new R8(this.a,7,(Sn(),Xne),Q(t),(r=i.c,I(r,88)?u(r,26):so),e)),i},s.jj=function(e,t){return L2e(this,u(e,87),t)},s.kj=function(e,t){return x2e(this,u(e,87),t)},s.lj=function(e,t,i){return N4e(this,u(e,87),u(t,87),i)},s.Zi=function(e,t,i,r,c){switch(e){case 3:return _5(this,e,t,i,r,this.i>1);case 5:return _5(this,e,t,i,r,this.i-u(i,15).gc()>0);default:return new Lh(this.e,e,this.c,t,i,r,!0)}},s.ij=function(){return!0},s.fj=function(){return JF(this)},s.Xj=function(){de(this)},w(Bn,"EClassImpl/1",1140),b(1154,1153,Wtn),s.ui=function(e){var t,i,r,c,o,f,h;if(i=e.xi(),i!=8){if(r=mpe(e),r==0)switch(i){case 1:case 9:{h=e.Bi(),h!=null&&(t=Ou(u(h,473)),!t.c&&(t.c=new Bp),BC(t.c,e.Ai())),f=e.zi(),f!=null&&(c=u(f,473),c.Bb&1||(t=Ou(c),!t.c&&(t.c=new Bp),me(t.c,u(e.Ai(),26))));break}case 3:{f=e.zi(),f!=null&&(c=u(f,473),c.Bb&1||(t=Ou(c),!t.c&&(t.c=new Bp),me(t.c,u(e.Ai(),26))));break}case 5:{if(f=e.zi(),f!=null)for(o=u(f,14).Kc();o.Ob();)c=u(o.Pb(),473),c.Bb&1||(t=Ou(c),!t.c&&(t.c=new Bp),me(t.c,u(e.Ai(),26)));break}case 4:{h=e.Bi(),h!=null&&(c=u(h,473),c.Bb&1||(t=Ou(c),!t.c&&(t.c=new Bp),BC(t.c,e.Ai())));break}case 6:{if(h=e.Bi(),h!=null)for(o=u(h,14).Kc();o.Ob();)c=u(o.Pb(),473),c.Bb&1||(t=Ou(c),!t.c&&(t.c=new Bp),BC(t.c,e.Ai()));break}}this.Hk(r)}},s.Hk=function(e){bBn(this,e)},s.b=63,w(Bn,"ESuperAdapter",1154),b(1155,1154,Wtn,Amn),s.Hk=function(e){yb(this,e)},w(Bn,"EClassImpl/10",1155),b(1144,696,Br),s.Vh=function(e,t){return mx(this,e,t)},s.Wh=function(e){return hFn(this,e)},s.Xh=function(e,t){a7(this,e,t)},s.Yh=function(e){F8(this,e)},s.pi=function(e){return zX(this,e)},s.mi=function(e,t){return B$(this,e,t)},s.lk=function(e,t){throw T(new ye)},s.Zh=function(){return new w2(this)},s.$h=function(){return new u8(this)},s._h=function(e){return J8(this,e)},s.mk=function(e,t){throw T(new ye)},s.Wj=function(e){return this},s.fj=function(){return this.i!=0},s.Wb=function(e){throw T(new ye)},s.Xj=function(){throw T(new ye)},w(vt,"EcoreEList/UnmodifiableEList",1144),b(319,1144,Br,Ew),s.ni=function(){return!1},w(vt,"EcoreEList/UnmodifiableEList/FastCompare",319),b(1147,319,Br,YOn),s.Xc=function(e){var t,i,r;if(I(e,170)&&(t=u(e,170),i=t.aj(),i!=-1)){for(r=this.i;i4)if(this.wj(e)){if(this.rk()){if(r=u(e,49),i=r.Ug(),h=i==this.b&&(this.Dk()?r.Og(r.Vg(),u(On(Qc(this.b),this.aj()).Yj(),26).Bj())==ir(u(On(Qc(this.b),this.aj()),18)).n:-1-r.Vg()==this.aj()),this.Ek()&&!h&&!i&&r.Zg()){for(c=0;c1||r==-1)):!1},s.Dk=function(){var e,t,i;return t=On(Qc(this.b),this.aj()),I(t,99)?(e=u(t,18),i=ir(e),!!i):!1},s.Ek=function(){var e,t;return t=On(Qc(this.b),this.aj()),I(t,99)?(e=u(t,18),(e.Bb&Yi)!=0):!1},s.Xc=function(e){var t,i,r,c;if(r=this.Qi(e),r>=0)return r;if(this.Fk()){for(i=0,c=this.Vi();i=0;--e)X7(this,e,this.Oi(e));return this.Wi()},s.Qc=function(e){var t;if(this.Ek())for(t=this.Vi()-1;t>=0;--t)X7(this,t,this.Oi(t));return this.Xi(e)},s.Xj=function(){$6(this)},s.oi=function(e,t){return dPn(this,e,t)},w(vt,"DelegatingEcoreEList",742),b(1150,742,Jtn,Ijn),s.Hi=function(e,t){cue(this,e,u(t,26))},s.Ii=function(e){Zre(this,u(e,26))},s.Oi=function(e){var t,i;return t=u(D(bc(this.a),e),87),i=t.c,I(i,88)?u(i,26):(Sn(),so)},s.Ti=function(e){var t,i;return t=u(Eb(bc(this.a),e),87),i=t.c,I(i,88)?u(i,26):(Sn(),so)},s.Ui=function(e,t){return u3e(this,e,u(t,26))},s.ai=function(){return!1},s.Zi=function(e,t,i,r,c){return null},s.Ji=function(){return new Pmn(this)},s.Ki=function(){de(bc(this.a))},s.Li=function(e){return qDn(this,e)},s.Mi=function(e){var t,i;for(i=e.Kc();i.Ob();)if(t=i.Pb(),!qDn(this,t))return!1;return!0},s.Ni=function(e){var t,i,r;if(I(e,15)&&(r=u(e,15),r.gc()==bc(this.a).i)){for(t=r.Kc(),i=new ie(this);t.Ob();)if(B(t.Pb())!==B(oe(i)))return!1;return!0}return!1},s.Pi=function(){var e,t,i,r,c;for(i=1,t=new ie(bc(this.a));t.e!=t.i.gc();)e=u(oe(t),87),r=(c=e.c,I(c,88)?u(c,26):(Sn(),so)),i=31*i+(r?md(r):0);return i},s.Qi=function(e){var t,i,r,c;for(r=0,i=new ie(bc(this.a));i.e!=i.i.gc();){if(t=u(oe(i),87),B(e)===B((c=t.c,I(c,88)?u(c,26):(Sn(),so))))return r;++r}return-1},s.Ri=function(){return bc(this.a).i==0},s.Si=function(){return null},s.Vi=function(){return bc(this.a).i},s.Wi=function(){var e,t,i,r,c,o;for(o=bc(this.a).i,c=F(Zn,rn,1,o,5,1),i=0,t=new ie(bc(this.a));t.e!=t.i.gc();)e=u(oe(t),87),c[i++]=(r=e.c,I(r,88)?u(r,26):(Sn(),so));return c},s.Xi=function(e){var t,i,r,c,o,f,h;for(h=bc(this.a).i,e.lengthh&&St(e,h,null),r=0,i=new ie(bc(this.a));i.e!=i.i.gc();)t=u(oe(i),87),o=(f=t.c,I(f,88)?u(f,26):(Sn(),so)),St(e,r++,o);return e},s.Yi=function(){var e,t,i,r,c;for(c=new i1,c.a+="[",e=bc(this.a),t=0,r=bc(this.a).i;t>16,c>=0?ox(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,6,i);case 9:return!this.a&&(this.a=new V(e1,this,9,5)),Oc(this.a,e,i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),Vl)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),Vl)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 6:return os(this,null,6,i);case 7:return!this.A&&(this.A=new lu(zc,this,7)),zi(this.A,e,i);case 9:return!this.a&&(this.a=new V(e1,this,9,5)),zi(this.a,e,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),Vl)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),Vl)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Qd(this);case 4:return!!ZV(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!y3(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)==0;case 9:return!!this.a&&this.a.i!=0}return js(this,e-ee((Sn(),Vl)),On((t=u(Rn(this,16),26),t||Vl),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:bC(this,Ce(t));return;case 2:BO(this,Ce(t));return;case 5:y4(this,Ce(t));return;case 7:!this.A&&(this.A=new lu(zc,this,7)),de(this.A),!this.A&&(this.A=new lu(zc,this,7)),Dt(this.A,u(t,14));return;case 8:kT(this,on(sn(t)));return;case 9:!this.a&&(this.a=new V(e1,this,9,5)),de(this.a),!this.a&&(this.a=new V(e1,this,9,5)),Dt(this.a,u(t,14));return}Ps(this,e-ee((Sn(),Vl)),On((i=u(Rn(this,16),26),i||Vl),e),t)},s.zh=function(){return Sn(),Vl},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:I(this.Cb,179)&&(u(this.Cb,179).tb=null),Ic(this,null);return;case 2:X3(this,null),L3(this,this.D);return;case 5:y4(this,null);return;case 7:!this.A&&(this.A=new lu(zc,this,7)),de(this.A);return;case 8:kT(this,!0);return;case 9:!this.a&&(this.a=new V(e1,this,9,5)),de(this.a);return}As(this,e-ee((Sn(),Vl)),On((t=u(Rn(this,16),26),t||Vl),e))},s.Gh=function(){var e,t;if(this.a)for(e=0,t=this.a.i;e>16==5?u(this.Cb,671):null}return Cs(this,e-ee((Sn(),L1)),On((r=u(Rn(this,16),26),r||L1),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 5:return this.Cb&&(i=(c=this.Db>>16,c>=0?xFn(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,5,i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),L1)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),L1)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 5:return os(this,null,5,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),L1)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),L1)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return!!this.b;case 4:return this.c!=null;case 5:return!!(this.Db>>16==5&&u(this.Cb,671))}return js(this,e-ee((Sn(),L1)),On((t=u(Rn(this,16),26),t||L1),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:Ic(this,Ce(t));return;case 2:G$(this,u(t,19).a);return;case 3:ILn(this,u(t,1940));return;case 4:U$(this,Ce(t));return}Ps(this,e-ee((Sn(),L1)),On((i=u(Rn(this,16),26),i||L1),e),t)},s.zh=function(){return Sn(),L1},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:Ic(this,null);return;case 2:G$(this,0);return;case 3:ILn(this,null);return;case 4:U$(this,null);return}As(this,e-ee((Sn(),L1)),On((t=u(Rn(this,16),26),t||L1),e))},s.Ib=function(){var e;return e=this.c,e??this.zb},s.b=null,s.c=null,s.d=0,w(Bn,"EEnumLiteralImpl",573);var lMe=Ct(Bn,"EFactoryImpl/InternalEDateTimeFormat");b(489,1,{2015:1},D9),w(Bn,"EFactoryImpl/1ClientInternalEDateTimeFormat",489),b(241,115,{105:1,92:1,90:1,87:1,56:1,108:1,49:1,97:1,241:1,114:1,115:1},ud),s.Sg=function(e,t,i){var r;return i=os(this,e,t,i),this.e&&I(e,170)&&(r=uM(this,this.e),r!=this.c&&(i=j4(this,r,i))),i},s._g=function(e,t,i){var r;switch(e){case 0:return this.f;case 1:return!this.d&&(this.d=new Yt(ar,this,1)),this.d;case 2:return t?pM(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return t?nx(this):this.a}return Cs(this,e-ee((Sn(),I0)),On((r=u(Rn(this,16),26),r||I0),e),t,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return $Dn(this,null,i);case 1:return!this.d&&(this.d=new Yt(ar,this,1)),zi(this.d,e,i);case 3:return DDn(this,null,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),I0)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),I0)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.f;case 1:return!!this.d&&this.d.i!=0;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return js(this,e-ee((Sn(),I0)),On((t=u(Rn(this,16),26),t||I0),e))},s.sh=function(e,t){var i;switch(e){case 0:ZFn(this,u(t,87));return;case 1:!this.d&&(this.d=new Yt(ar,this,1)),de(this.d),!this.d&&(this.d=new Yt(ar,this,1)),Dt(this.d,u(t,14));return;case 3:DJ(this,u(t,87));return;case 4:VJ(this,u(t,836));return;case 5:O3(this,u(t,138));return}Ps(this,e-ee((Sn(),I0)),On((i=u(Rn(this,16),26),i||I0),e),t)},s.zh=function(){return Sn(),I0},s.Bh=function(e){var t;switch(e){case 0:ZFn(this,null);return;case 1:!this.d&&(this.d=new Yt(ar,this,1)),de(this.d);return;case 3:DJ(this,null);return;case 4:VJ(this,null);return;case 5:O3(this,null);return}As(this,e-ee((Sn(),I0)),On((t=u(Rn(this,16),26),t||I0),e))},s.Ib=function(){var e;return e=new Yu(yo(this)),e.a+=" (expression: ",fL(this,e),e.a+=")",e.a};var p1n;w(Bn,"EGenericTypeImpl",241),b(1969,1964,CA),s.Xh=function(e,t){Ajn(this,e,t)},s.lk=function(e,t){return Ajn(this,this.gc(),e),t},s.pi=function(e){return qo(this.Gi(),e)},s.Zh=function(){return this.$h()},s.Gi=function(){return new $mn(this)},s.$h=function(){return this._h(0)},s._h=function(e){return this.Gi().Zc(e)},s.mk=function(e,t){return db(this,e,!0),t},s.ii=function(e,t){var i,r;return r=hx(this,t),i=this.Zc(e),i.Rb(r),r},s.ji=function(e,t){var i;db(this,t,!0),i=this.Zc(e),i.Rb(t)},w(vt,"AbstractSequentialInternalEList",1969),b(486,1969,CA,c8),s.pi=function(e){return qo(this.Gi(),e)},s.Zh=function(){return this.b==null?(c1(),c1(),Ly):this.Jk()},s.Gi=function(){return new Ykn(this.a,this.b)},s.$h=function(){return this.b==null?(c1(),c1(),Ly):this.Jk()},s._h=function(e){var t,i;if(this.b==null){if(e<0||e>1)throw T(new mr(rm+e+", size=0"));return c1(),c1(),Ly}for(i=this.Jk(),t=0;t0;)if(t=this.c[--this.d],(!this.e||t.Gj()!=Av||t.aj()!=0)&&(!this.Mk()||this.b.mh(t))){if(o=this.b.bh(t,this.Lk()),this.f=(er(),u(t,66).Oj()),this.f||t.$j()){if(this.Lk()?(r=u(o,15),this.k=r):(r=u(o,69),this.k=this.j=r),I(this.k,54)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j._h(this.k.gc()):this.k.Zc(this.k.gc()),this.p?zxn(this,this.p):iLn(this))return c=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?(e=u(c,72),e.ak(),i=e.dd(),this.i=i):(i=c,this.i=i),this.g=-3,!0}else if(o!=null)return this.k=null,this.p=null,i=o,this.i=i,this.g=-2,!0}return this.k=null,this.p=null,this.g=-1,!1}else return c=this.p?this.p.Ub():this.j?this.j.pi(--this.n):this.k.Xb(--this.n),this.f?(e=u(c,72),e.ak(),i=e.dd(),this.i=i):(i=c,this.i=i),this.g=-3,!0}},s.Pb=function(){return hT(this)},s.Tb=function(){return this.a},s.Ub=function(){var e;if(this.g<-1||this.Sb())return--this.a,this.g=0,e=this.i,this.Sb(),e;throw T(new ic)},s.Vb=function(){return this.a-1},s.Qb=function(){throw T(new ye)},s.Lk=function(){return!1},s.Wb=function(e){throw T(new ye)},s.Mk=function(){return!0},s.a=0,s.d=0,s.f=!1,s.g=0,s.n=0,s.o=0;var Ly;w(vt,"EContentsEList/FeatureIteratorImpl",279),b(697,279,TA,nU),s.Lk=function(){return!0},w(vt,"EContentsEList/ResolvingFeatureIteratorImpl",697),b(1157,697,TA,wjn),s.Mk=function(){return!1},w(Bn,"ENamedElementImpl/1/1",1157),b(1158,279,TA,bjn),s.Mk=function(){return!1},w(Bn,"ENamedElementImpl/1/2",1158),b(36,143,jk,rb,p$,gi,D$,Lh,vo,rV,qMn,cV,GMn,PX,zMn,oV,UMn,IX,WMn,uV,XMn,$5,R8,VD,sV,VMn,OX,QMn),s._i=function(){return HX(this)},s.gj=function(){var e;return e=HX(this),e?e.zj():null},s.yi=function(e){return this.b==-1&&this.a&&(this.b=this.c.Xg(this.a.aj(),this.a.Gj())),this.c.Og(this.b,e)},s.Ai=function(){return this.c},s.hj=function(){var e;return e=HX(this),e?e.Kj():!1},s.b=-1,w(Bn,"ENotificationImpl",36),b(399,284,{105:1,92:1,90:1,147:1,191:1,56:1,59:1,108:1,472:1,49:1,97:1,150:1,399:1,284:1,114:1,115:1},RI),s.Qg=function(e){return BFn(this,e)},s._g=function(e,t,i){var r,c,o;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return qn(),!!(this.Bb&256);case 3:return qn(),!!(this.Bb&512);case 4:return Q(this.s);case 5:return Q(this.t);case 6:return qn(),o=this.t,o>1||o==-1;case 7:return qn(),c=this.s,c>=1;case 8:return t?qs(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,26):null;case 11:return!this.d&&(this.d=new lu(zc,this,11)),this.d;case 12:return!this.c&&(this.c=new V(P0,this,12,10)),this.c;case 13:return!this.a&&(this.a=new l8(this,this)),this.a;case 14:return Du(this)}return Cs(this,e-ee((Sn(),N1)),On((r=u(Rn(this,16),26),r||N1),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 10:return this.Cb&&(i=(c=this.Db>>16,c>=0?BFn(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,10,i);case 12:return!this.c&&(this.c=new V(P0,this,12,10)),Oc(this.c,e,i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),N1)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),N1)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 9:return xD(this,i);case 10:return os(this,null,10,i);case 11:return!this.d&&(this.d=new lu(zc,this,11)),zi(this.d,e,i);case 12:return!this.c&&(this.c=new V(P0,this,12,10)),zi(this.c,e,i);case 14:return zi(Du(this),e,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),N1)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),N1)),e,i)},s.lh=function(e){var t,i,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return r=this.t,r>1||r==-1;case 7:return i=this.s,i>=1;case 8:return!!this.r&&!this.q.e&&Ad(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Ad(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,26));case 11:return!!this.d&&this.d.i!=0;case 12:return!!this.c&&this.c.i!=0;case 13:return!!this.a&&Du(this.a.a).i!=0&&!(this.b&&YF(this.b));case 14:return!!this.b&&YF(this.b)}return js(this,e-ee((Sn(),N1)),On((t=u(Rn(this,16),26),t||N1),e))},s.sh=function(e,t){var i,r;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:Ic(this,Ce(t));return;case 2:g1(this,on(sn(t)));return;case 3:p1(this,on(sn(t)));return;case 4:d1(this,u(t,19).a);return;case 5:hb(this,u(t,19).a);return;case 8:Ca(this,u(t,138));return;case 9:r=df(this,u(t,87),null),r&&r.Fi();return;case 11:!this.d&&(this.d=new lu(zc,this,11)),de(this.d),!this.d&&(this.d=new lu(zc,this,11)),Dt(this.d,u(t,14));return;case 12:!this.c&&(this.c=new V(P0,this,12,10)),de(this.c),!this.c&&(this.c=new V(P0,this,12,10)),Dt(this.c,u(t,14));return;case 13:!this.a&&(this.a=new l8(this,this)),$6(this.a),!this.a&&(this.a=new l8(this,this)),Dt(this.a,u(t,14));return;case 14:de(Du(this)),Dt(Du(this),u(t,14));return}Ps(this,e-ee((Sn(),N1)),On((i=u(Rn(this,16),26),i||N1),e),t)},s.zh=function(){return Sn(),N1},s.Bh=function(e){var t,i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:Ic(this,null);return;case 2:g1(this,!0);return;case 3:p1(this,!0);return;case 4:d1(this,0);return;case 5:hb(this,1);return;case 8:Ca(this,null);return;case 9:i=df(this,null,null),i&&i.Fi();return;case 11:!this.d&&(this.d=new lu(zc,this,11)),de(this.d);return;case 12:!this.c&&(this.c=new V(P0,this,12,10)),de(this.c);return;case 13:this.a&&$6(this.a);return;case 14:this.b&&de(this.b);return}As(this,e-ee((Sn(),N1)),On((t=u(Rn(this,16),26),t||N1),e))},s.Gh=function(){var e,t;if(this.c)for(e=0,t=this.c.i;eh&&St(e,h,null),r=0,i=new ie(Du(this.a));i.e!=i.i.gc();)t=u(oe(i),87),o=(f=t.c,f||(Sn(),Tf)),St(e,r++,o);return e},s.Yi=function(){var e,t,i,r,c;for(c=new i1,c.a+="[",e=Du(this.a),t=0,r=Du(this.a).i;t1);case 5:return _5(this,e,t,i,r,this.i-u(i,15).gc()>0);default:return new Lh(this.e,e,this.c,t,i,r,!0)}},s.ij=function(){return!0},s.fj=function(){return YF(this)},s.Xj=function(){de(this)},w(Bn,"EOperationImpl/2",1341),b(498,1,{1938:1,498:1},Dkn),w(Bn,"EPackageImpl/1",498),b(16,85,Br,V),s.zk=function(){return this.d},s.Ak=function(){return this.b},s.Dk=function(){return!0},s.b=0,w(vt,"EObjectContainmentWithInverseEList",16),b(353,16,Br,g2),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectContainmentWithInverseEList/Resolving",353),b(298,353,Br,Y0),s.ci=function(){this.a.tb=null},w(Bn,"EPackageImpl/2",298),b(1228,1,{},Jee),w(Bn,"EPackageImpl/3",1228),b(718,43,sg,tG),s._b=function(e){return ki(e)?QD(this,e):!!Sr(this.f,e)},w(Bn,"EPackageRegistryImpl",718),b(509,284,{105:1,92:1,90:1,147:1,191:1,56:1,2017:1,108:1,472:1,49:1,97:1,150:1,509:1,284:1,114:1,115:1},_I),s.Qg=function(e){return RFn(this,e)},s._g=function(e,t,i){var r,c,o;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return qn(),!!(this.Bb&256);case 3:return qn(),!!(this.Bb&512);case 4:return Q(this.s);case 5:return Q(this.t);case 6:return qn(),o=this.t,o>1||o==-1;case 7:return qn(),c=this.s,c>=1;case 8:return t?qs(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,59):null}return Cs(this,e-ee((Sn(),lw)),On((r=u(Rn(this,16),26),r||lw),e),t,i)},s.hh=function(e,t,i){var r,c,o;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),Oc(this.Ab,e,i);case 10:return this.Cb&&(i=(c=this.Db>>16,c>=0?RFn(this,i):this.Cb.ih(this,-1-c,null,i))),os(this,e,10,i)}return o=u(On((r=u(Rn(this,16),26),r||(Sn(),lw)),t),66),o.Nj().Qj(this,Rc(this),t-ee((Sn(),lw)),e,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 9:return xD(this,i);case 10:return os(this,null,10,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),lw)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),lw)),e,i)},s.lh=function(e){var t,i,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return r=this.t,r>1||r==-1;case 7:return i=this.s,i>=1;case 8:return!!this.r&&!this.q.e&&Ad(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Ad(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,59))}return js(this,e-ee((Sn(),lw)),On((t=u(Rn(this,16),26),t||lw),e))},s.zh=function(){return Sn(),lw},w(Bn,"EParameterImpl",509),b(99,449,{105:1,92:1,90:1,147:1,191:1,56:1,18:1,170:1,66:1,108:1,472:1,49:1,97:1,150:1,99:1,449:1,284:1,114:1,115:1,677:1},cU),s._g=function(e,t,i){var r,c,o,f;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return qn(),!!(this.Bb&256);case 3:return qn(),!!(this.Bb&512);case 4:return Q(this.s);case 5:return Q(this.t);case 6:return qn(),f=this.t,f>1||f==-1;case 7:return qn(),c=this.s,c>=1;case 8:return t?qs(this):this.r;case 9:return this.q;case 10:return qn(),!!(this.Bb&Eo);case 11:return qn(),!!(this.Bb&Bb);case 12:return qn(),!!(this.Bb&Ib);case 13:return this.j;case 14:return w4(this);case 15:return qn(),!!(this.Bb&mu);case 16:return qn(),!!(this.Bb&Bf);case 17:return eb(this);case 18:return qn(),!!(this.Bb&uc);case 19:return qn(),o=ir(this),!!(o&&o.Bb&uc);case 20:return qn(),!!(this.Bb&Yi);case 21:return t?ir(this):this.b;case 22:return t?HV(this):vSn(this);case 23:return!this.a&&(this.a=new Aw(ow,this,23)),this.a}return Cs(this,e-ee((Sn(),qg)),On((r=u(Rn(this,16),26),r||qg),e),t,i)},s.lh=function(e){var t,i,r,c;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return c=this.t,c>1||c==-1;case 7:return i=this.s,i>=1;case 8:return!!this.r&&!this.q.e&&Ad(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Ad(this.q).i==0);case 10:return(this.Bb&Eo)==0;case 11:return(this.Bb&Bb)!=0;case 12:return(this.Bb&Ib)!=0;case 13:return this.j!=null;case 14:return w4(this)!=null;case 15:return(this.Bb&mu)!=0;case 16:return(this.Bb&Bf)!=0;case 17:return!!eb(this);case 18:return(this.Bb&uc)!=0;case 19:return r=ir(this),!!r&&(r.Bb&uc)!=0;case 20:return(this.Bb&Yi)==0;case 21:return!!this.b;case 22:return!!vSn(this);case 23:return!!this.a&&this.a.i!=0}return js(this,e-ee((Sn(),qg)),On((t=u(Rn(this,16),26),t||qg),e))},s.sh=function(e,t){var i,r;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:f$(this,Ce(t));return;case 2:g1(this,on(sn(t)));return;case 3:p1(this,on(sn(t)));return;case 4:d1(this,u(t,19).a);return;case 5:hb(this,u(t,19).a);return;case 8:Ca(this,u(t,138));return;case 9:r=df(this,u(t,87),null),r&&r.Fi();return;case 10:Y3(this,on(sn(t)));return;case 11:e4(this,on(sn(t)));return;case 12:Z3(this,on(sn(t)));return;case 13:dz(this,Ce(t));return;case 15:n4(this,on(sn(t)));return;case 16:t4(this,on(sn(t)));return;case 18:lle(this,on(sn(t)));return;case 20:mQ(this,on(sn(t)));return;case 21:vV(this,u(t,18));return;case 23:!this.a&&(this.a=new Aw(ow,this,23)),de(this.a),!this.a&&(this.a=new Aw(ow,this,23)),Dt(this.a,u(t,14));return}Ps(this,e-ee((Sn(),qg)),On((i=u(Rn(this,16),26),i||qg),e),t)},s.zh=function(){return Sn(),qg},s.Bh=function(e){var t,i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:I(this.Cb,88)&&yb(Ou(u(this.Cb,88)),4),Ic(this,null);return;case 2:g1(this,!0);return;case 3:p1(this,!0);return;case 4:d1(this,0);return;case 5:hb(this,1);return;case 8:Ca(this,null);return;case 9:i=df(this,null,null),i&&i.Fi();return;case 10:Y3(this,!0);return;case 11:e4(this,!1);return;case 12:Z3(this,!1);return;case 13:this.i=null,nT(this,null);return;case 15:n4(this,!1);return;case 16:t4(this,!1);return;case 18:vQ(this,!1),I(this.Cb,88)&&yb(Ou(u(this.Cb,88)),2);return;case 20:mQ(this,!0);return;case 21:vV(this,null);return;case 23:!this.a&&(this.a=new Aw(ow,this,23)),de(this.a);return}As(this,e-ee((Sn(),qg)),On((t=u(Rn(this,16),26),t||qg),e))},s.Gh=function(){HV(this),v3(Er((gu(),xi),this)),qs(this),this.Bb|=1},s.Lj=function(){return ir(this)},s.qk=function(){var e;return e=ir(this),!!e&&(e.Bb&uc)!=0},s.rk=function(){return(this.Bb&uc)!=0},s.sk=function(){return(this.Bb&Yi)!=0},s.nk=function(e,t){return this.c=null,lQ(this,e,t)},s.Ib=function(){var e;return this.Db&64?bM(this):(e=new Bs(bM(this)),e.a+=" (containment: ",r1(e,(this.Bb&uc)!=0),e.a+=", resolveProxies: ",r1(e,(this.Bb&Yi)!=0),e.a+=")",e.a)},w(Bn,"EReferenceImpl",99),b(548,115,{105:1,42:1,92:1,90:1,133:1,56:1,108:1,49:1,97:1,548:1,114:1,115:1},epn),s.Fb=function(e){return this===e},s.cd=function(){return this.b},s.dd=function(){return this.c},s.Hb=function(){return md(this)},s.Uh=function(e){gfe(this,Ce(e))},s.ed=function(e){return rfe(this,Ce(e))},s._g=function(e,t,i){var r;switch(e){case 0:return this.b;case 1:return this.c}return Cs(this,e-ee((Sn(),nr)),On((r=u(Rn(this,16),26),r||nr),e),t,i)},s.lh=function(e){var t;switch(e){case 0:return this.b!=null;case 1:return this.c!=null}return js(this,e-ee((Sn(),nr)),On((t=u(Rn(this,16),26),t||nr),e))},s.sh=function(e,t){var i;switch(e){case 0:pfe(this,Ce(t));return;case 1:wV(this,Ce(t));return}Ps(this,e-ee((Sn(),nr)),On((i=u(Rn(this,16),26),i||nr),e),t)},s.zh=function(){return Sn(),nr},s.Bh=function(e){var t;switch(e){case 0:bV(this,null);return;case 1:wV(this,null);return}As(this,e-ee((Sn(),nr)),On((t=u(Rn(this,16),26),t||nr),e))},s.Sh=function(){var e;return this.a==-1&&(e=this.b,this.a=e==null?0:m1(e)),this.a},s.Th=function(e){this.a=e},s.Ib=function(){var e;return this.Db&64?yo(this):(e=new Bs(yo(this)),e.a+=" (key: ",dr(e,this.b),e.a+=", value: ",dr(e,this.c),e.a+=")",e.a)},s.a=-1,s.b=null,s.c=null;var tc=w(Bn,"EStringToStringMapEntryImpl",548),ree=Ct(vt,"FeatureMap/Entry/Internal");b(565,1,MA),s.Ok=function(e){return this.Pk(u(e,49))},s.Pk=function(e){return this.Ok(e)},s.Fb=function(e){var t,i;return this===e?!0:I(e,72)?(t=u(e,72),t.ak()==this.c?(i=this.dd(),i==null?t.dd()==null:tt(i,t.dd())):!1):!1},s.ak=function(){return this.c},s.Hb=function(){var e;return e=this.dd(),mt(this.c)^(e==null?0:mt(e))},s.Ib=function(){var e,t;return e=this.c,t=is(e.Hj()).Ph(),e.ne(),(t!=null&&t.length!=0?t+":"+e.ne():e.ne())+"="+this.dd()},w(Bn,"EStructuralFeatureImpl/BasicFeatureMapEntry",565),b(776,565,MA,bU),s.Pk=function(e){return new bU(this.c,e)},s.dd=function(){return this.a},s.Qk=function(e,t,i){return $be(this,e,this.a,t,i)},s.Rk=function(e,t,i){return Fbe(this,e,this.a,t,i)},w(Bn,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",776),b(1314,1,{},$kn),s.Pj=function(e,t,i,r,c){var o;return o=u(A3(e,this.b),215),o.nl(this.a).Wj(r)},s.Qj=function(e,t,i,r,c){var o;return o=u(A3(e,this.b),215),o.el(this.a,r,c)},s.Rj=function(e,t,i,r,c){var o;return o=u(A3(e,this.b),215),o.fl(this.a,r,c)},s.Sj=function(e,t,i){var r;return r=u(A3(e,this.b),215),r.nl(this.a).fj()},s.Tj=function(e,t,i,r){var c;c=u(A3(e,this.b),215),c.nl(this.a).Wb(r)},s.Uj=function(e,t,i){return u(A3(e,this.b),215).nl(this.a)},s.Vj=function(e,t,i){var r;r=u(A3(e,this.b),215),r.nl(this.a).Xj()},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1314),b(89,1,{},s1,ha,f1,da),s.Pj=function(e,t,i,r,c){var o;if(o=t.Ch(i),o==null&&t.Dh(i,o=AM(this,e)),!c)switch(this.e){case 50:case 41:return u(o,589).sj();case 40:return u(o,215).kl()}return o},s.Qj=function(e,t,i,r,c){var o,f;return f=t.Ch(i),f==null&&t.Dh(i,f=AM(this,e)),o=u(f,69).lk(r,c),o},s.Rj=function(e,t,i,r,c){var o;return o=t.Ch(i),o!=null&&(c=u(o,69).mk(r,c)),c},s.Sj=function(e,t,i){var r;return r=t.Ch(i),r!=null&&u(r,76).fj()},s.Tj=function(e,t,i,r){var c;c=u(t.Ch(i),76),!c&&t.Dh(i,c=AM(this,e)),c.Wb(r)},s.Uj=function(e,t,i){var r,c;return c=t.Ch(i),c==null&&t.Dh(i,c=AM(this,e)),I(c,76)?u(c,76):(r=u(t.Ch(i),15),new Dmn(r))},s.Vj=function(e,t,i){var r;r=u(t.Ch(i),76),!r&&t.Dh(i,r=AM(this,e)),r.Xj()},s.b=0,s.e=0,w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateMany",89),b(504,1,{}),s.Qj=function(e,t,i,r,c){throw T(new ye)},s.Rj=function(e,t,i,r,c){throw T(new ye)},s.Uj=function(e,t,i){return new STn(this,e,t,i)};var Ch;w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingle",504),b(1331,1,GB,STn),s.Wj=function(e){return this.a.Pj(this.c,this.d,this.b,e,!0)},s.fj=function(){return this.a.Sj(this.c,this.d,this.b)},s.Wb=function(e){this.a.Tj(this.c,this.d,this.b,e)},s.Xj=function(){this.a.Vj(this.c,this.d,this.b)},s.b=0,w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1331),b(769,504,{},QW),s.Pj=function(e,t,i,r,c){return Qx(e,e.eh(),e.Vg())==this.b?this.sk()&&r?Fx(e):e.eh():null},s.Qj=function(e,t,i,r,c){var o,f;return e.eh()&&(c=(o=e.Vg(),o>=0?e.Qg(c):e.eh().ih(e,-1-o,null,c))),f=yt(e.Tg(),this.e),e.Sg(r,f,c)},s.Rj=function(e,t,i,r,c){var o;return o=yt(e.Tg(),this.e),e.Sg(null,o,c)},s.Sj=function(e,t,i){var r;return r=yt(e.Tg(),this.e),!!e.eh()&&e.Vg()==r},s.Tj=function(e,t,i,r){var c,o,f,h,l;if(r!=null&&!nL(this.a,r))throw T(new Up(AA+(I(r,56)?IJ(u(r,56).Tg()):nV($u(r)))+SA+this.a+"'"));if(c=e.eh(),f=yt(e.Tg(),this.e),B(r)!==B(c)||e.Vg()!=f&&r!=null){if(u4(e,u(r,56)))throw T(new Hn(tm+e.Ib()));l=null,c&&(l=(o=e.Vg(),o>=0?e.Qg(l):e.eh().ih(e,-1-o,null,l))),h=u(r,49),h&&(l=h.gh(e,yt(h.Tg(),this.b),null,l)),l=e.Sg(h,f,l),l&&l.Fi()}else e.Lg()&&e.Mg()&&et(e,new gi(e,1,f,r,r))},s.Vj=function(e,t,i){var r,c,o,f;r=e.eh(),r?(f=(c=e.Vg(),c>=0?e.Qg(null):e.eh().ih(e,-1-c,null,null)),o=yt(e.Tg(),this.e),f=e.Sg(null,o,f),f&&f.Fi()):e.Lg()&&e.Mg()&&et(e,new $5(e,1,this.e,null,null))},s.sk=function(){return!1},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",769),b(1315,769,{},kEn),s.sk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1315),b(563,504,{}),s.Pj=function(e,t,i,r,c){var o;return o=t.Ch(i),o==null?this.b:B(o)===B(Ch)?null:o},s.Sj=function(e,t,i){var r;return r=t.Ch(i),r!=null&&(B(r)===B(Ch)||!tt(r,this.b))},s.Tj=function(e,t,i,r){var c,o;e.Lg()&&e.Mg()?(c=(o=t.Ch(i),o==null?this.b:B(o)===B(Ch)?null:o),r==null?this.c!=null?(t.Dh(i,null),r=this.b):this.b!=null?t.Dh(i,Ch):t.Dh(i,null):(this.Sk(r),t.Dh(i,r)),et(e,this.d.Tk(e,1,this.e,c,r))):r==null?this.c!=null?t.Dh(i,null):this.b!=null?t.Dh(i,Ch):t.Dh(i,null):(this.Sk(r),t.Dh(i,r))},s.Vj=function(e,t,i){var r,c;e.Lg()&&e.Mg()?(r=(c=t.Ch(i),c==null?this.b:B(c)===B(Ch)?null:c),t.Eh(i),et(e,this.d.Tk(e,1,this.e,r,this.b))):t.Eh(i)},s.Sk=function(e){throw T(new Hmn)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",563),b(pg,1,{},tpn),s.Tk=function(e,t,i,r,c){return new $5(e,t,i,r,c)},s.Uk=function(e,t,i,r,c,o){return new VD(e,t,i,r,c,o)};var v1n,m1n,k1n,y1n,j1n,E1n,C1n,vH,T1n;w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",pg),b(1332,pg,{},ipn),s.Tk=function(e,t,i,r,c){return new OX(e,t,i,on(sn(r)),on(sn(c)))},s.Uk=function(e,t,i,r,c,o){return new QMn(e,t,i,on(sn(r)),on(sn(c)),o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1332),b(1333,pg,{},rpn),s.Tk=function(e,t,i,r,c){return new rV(e,t,i,u(r,217).a,u(c,217).a)},s.Uk=function(e,t,i,r,c,o){return new qMn(e,t,i,u(r,217).a,u(c,217).a,o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1333),b(1334,pg,{},cpn),s.Tk=function(e,t,i,r,c){return new cV(e,t,i,u(r,172).a,u(c,172).a)},s.Uk=function(e,t,i,r,c,o){return new GMn(e,t,i,u(r,172).a,u(c,172).a,o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1334),b(1335,pg,{},upn),s.Tk=function(e,t,i,r,c){return new PX(e,t,i,K(Y(r)),K(Y(c)))},s.Uk=function(e,t,i,r,c,o){return new zMn(e,t,i,K(Y(r)),K(Y(c)),o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1335),b(1336,pg,{},spn),s.Tk=function(e,t,i,r,c){return new oV(e,t,i,u(r,155).a,u(c,155).a)},s.Uk=function(e,t,i,r,c,o){return new UMn(e,t,i,u(r,155).a,u(c,155).a,o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1336),b(1337,pg,{},opn),s.Tk=function(e,t,i,r,c){return new IX(e,t,i,u(r,19).a,u(c,19).a)},s.Uk=function(e,t,i,r,c,o){return new WMn(e,t,i,u(r,19).a,u(c,19).a,o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1337),b(1338,pg,{},fpn),s.Tk=function(e,t,i,r,c){return new uV(e,t,i,u(r,162).a,u(c,162).a)},s.Uk=function(e,t,i,r,c,o){return new XMn(e,t,i,u(r,162).a,u(c,162).a,o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1338),b(1339,pg,{},hpn),s.Tk=function(e,t,i,r,c){return new sV(e,t,i,u(r,184).a,u(c,184).a)},s.Uk=function(e,t,i,r,c,o){return new VMn(e,t,i,u(r,184).a,u(c,184).a,o)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1339),b(1317,563,{},PTn),s.Sk=function(e){if(!this.a.wj(e))throw T(new Up(AA+$u(e)+SA+this.a+"'"))},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1317),b(1318,563,{},pCn),s.Sk=function(e){},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1318),b(770,563,{}),s.Sj=function(e,t,i){var r;return r=t.Ch(i),r!=null},s.Tj=function(e,t,i,r){var c,o;e.Lg()&&e.Mg()?(c=!0,o=t.Ch(i),o==null?(c=!1,o=this.b):B(o)===B(Ch)&&(o=null),r==null?this.c!=null?(t.Dh(i,null),r=this.b):t.Dh(i,Ch):(this.Sk(r),t.Dh(i,r)),et(e,this.d.Uk(e,1,this.e,o,r,!c))):r==null?this.c!=null?t.Dh(i,null):t.Dh(i,Ch):(this.Sk(r),t.Dh(i,r))},s.Vj=function(e,t,i){var r,c;e.Lg()&&e.Mg()?(r=!0,c=t.Ch(i),c==null?(r=!1,c=this.b):B(c)===B(Ch)&&(c=null),t.Eh(i),et(e,this.d.Uk(e,2,this.e,c,this.b,r))):t.Eh(i)},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",770),b(1319,770,{},ITn),s.Sk=function(e){if(!this.a.wj(e))throw T(new Up(AA+$u(e)+SA+this.a+"'"))},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1319),b(1320,770,{},vCn),s.Sk=function(e){},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1320),b(398,504,{},FE),s.Pj=function(e,t,i,r,c){var o,f,h,l,a;if(a=t.Ch(i),this.Kj()&&B(a)===B(Ch))return null;if(this.sk()&&r&&a!=null){if(h=u(a,49),h.kh()&&(l=pl(e,h),h!=l)){if(!nL(this.a,l))throw T(new Up(AA+$u(l)+SA+this.a+"'"));t.Dh(i,a=l),this.rk()&&(o=u(l,49),f=h.ih(e,this.b?yt(h.Tg(),this.b):-1-yt(e.Tg(),this.e),null,null),!o.eh()&&(f=o.gh(e,this.b?yt(o.Tg(),this.b):-1-yt(e.Tg(),this.e),null,f)),f&&f.Fi()),e.Lg()&&e.Mg()&&et(e,new $5(e,9,this.e,h,l))}return a}else return a},s.Qj=function(e,t,i,r,c){var o,f;return f=t.Ch(i),B(f)===B(Ch)&&(f=null),t.Dh(i,r),this.bj()?B(f)!==B(r)&&f!=null&&(o=u(f,49),c=o.ih(e,yt(o.Tg(),this.b),null,c)):this.rk()&&f!=null&&(c=u(f,49).ih(e,-1-yt(e.Tg(),this.e),null,c)),e.Lg()&&e.Mg()&&(!c&&(c=new Q1(4)),c.Ei(new $5(e,1,this.e,f,r))),c},s.Rj=function(e,t,i,r,c){var o;return o=t.Ch(i),B(o)===B(Ch)&&(o=null),t.Eh(i),e.Lg()&&e.Mg()&&(!c&&(c=new Q1(4)),this.Kj()?c.Ei(new $5(e,2,this.e,o,null)):c.Ei(new $5(e,1,this.e,o,null))),c},s.Sj=function(e,t,i){var r;return r=t.Ch(i),r!=null},s.Tj=function(e,t,i,r){var c,o,f,h,l;if(r!=null&&!nL(this.a,r))throw T(new Up(AA+(I(r,56)?IJ(u(r,56).Tg()):nV($u(r)))+SA+this.a+"'"));l=t.Ch(i),h=l!=null,this.Kj()&&B(l)===B(Ch)&&(l=null),f=null,this.bj()?B(l)!==B(r)&&(l!=null&&(c=u(l,49),f=c.ih(e,yt(c.Tg(),this.b),null,f)),r!=null&&(c=u(r,49),f=c.gh(e,yt(c.Tg(),this.b),null,f))):this.rk()&&B(l)!==B(r)&&(l!=null&&(f=u(l,49).ih(e,-1-yt(e.Tg(),this.e),null,f)),r!=null&&(f=u(r,49).gh(e,-1-yt(e.Tg(),this.e),null,f))),r==null&&this.Kj()?t.Dh(i,Ch):t.Dh(i,r),e.Lg()&&e.Mg()?(o=new VD(e,1,this.e,l,r,this.Kj()&&!h),f?(f.Ei(o),f.Fi()):et(e,o)):f&&f.Fi()},s.Vj=function(e,t,i){var r,c,o,f,h;h=t.Ch(i),f=h!=null,this.Kj()&&B(h)===B(Ch)&&(h=null),o=null,h!=null&&(this.bj()?(r=u(h,49),o=r.ih(e,yt(r.Tg(),this.b),null,o)):this.rk()&&(o=u(h,49).ih(e,-1-yt(e.Tg(),this.e),null,o))),t.Eh(i),e.Lg()&&e.Mg()?(c=new VD(e,this.Kj()?2:1,this.e,h,null,f),o?(o.Ei(c),o.Fi()):et(e,c)):o&&o.Fi()},s.bj=function(){return!1},s.rk=function(){return!1},s.sk=function(){return!1},s.Kj=function(){return!1},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",398),b(564,398,{},JO),s.rk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",564),b(1323,564,{},gjn),s.sk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1323),b(772,564,{},eU),s.Kj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",772),b(1325,772,{},pjn),s.sk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1325),b(640,564,{},lD),s.bj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",640),b(1324,640,{},yEn),s.sk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1324),b(773,640,{},KU),s.Kj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",773),b(1326,773,{},jEn),s.sk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1326),b(641,398,{},tU),s.sk=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",641),b(1327,641,{},vjn),s.Kj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1327),b(774,641,{},RU),s.bj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",774),b(1328,774,{},EEn),s.Kj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1328),b(1321,398,{},mjn),s.Kj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1321),b(771,398,{},_U),s.bj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",771),b(1322,771,{},CEn),s.Kj=function(){return!0},w(Bn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1322),b(775,565,MA,LW),s.Pk=function(e){return new LW(this.a,this.c,e)},s.dd=function(){return this.b},s.Qk=function(e,t,i){return Fde(this,e,this.b,i)},s.Rk=function(e,t,i){return xde(this,e,this.b,i)},w(Bn,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",775),b(1329,1,GB,Dmn),s.Wj=function(e){return this.a},s.fj=function(){return I(this.a,95)?u(this.a,95).fj():!this.a.dc()},s.Wb=function(e){this.a.$b(),this.a.Gc(u(e,15))},s.Xj=function(){I(this.a,95)?u(this.a,95).Xj():this.a.$b()},w(Bn,"EStructuralFeatureImpl/SettingMany",1329),b(1330,565,MA,BAn),s.Ok=function(e){return new nD((ht(),p9),this.b.Ih(this.a,e))},s.dd=function(){return null},s.Qk=function(e,t,i){return i},s.Rk=function(e,t,i){return i},w(Bn,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1330),b(642,565,MA,nD),s.Ok=function(e){return new nD(this.c,e)},s.dd=function(){return this.a},s.Qk=function(e,t,i){return i},s.Rk=function(e,t,i){return i},w(Bn,"EStructuralFeatureImpl/SimpleFeatureMapEntry",642),b(391,497,Xf,Bp),s.ri=function(e){return F(ro,rn,26,e,0,1)},s.ni=function(){return!1},w(Bn,"ESuperAdapter/1",391),b(444,438,{105:1,92:1,90:1,147:1,191:1,56:1,108:1,836:1,49:1,97:1,150:1,444:1,114:1,115:1},CI),s._g=function(e,t,i){var r;switch(e){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new P5(this,ar,this)),this.a}return Cs(this,e-ee((Sn(),O0)),On((r=u(Rn(this,16),26),r||O0),e),t,i)},s.jh=function(e,t,i){var r,c;switch(t){case 0:return!this.Ab&&(this.Ab=new V(Be,this,0,3)),zi(this.Ab,e,i);case 2:return!this.a&&(this.a=new P5(this,ar,this)),zi(this.a,e,i)}return c=u(On((r=u(Rn(this,16),26),r||(Sn(),O0)),t),66),c.Nj().Rj(this,Rc(this),t-ee((Sn(),O0)),e,i)},s.lh=function(e){var t;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return!!this.a&&this.a.i!=0}return js(this,e-ee((Sn(),O0)),On((t=u(Rn(this,16),26),t||O0),e))},s.sh=function(e,t){var i;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab),!this.Ab&&(this.Ab=new V(Be,this,0,3)),Dt(this.Ab,u(t,14));return;case 1:Ic(this,Ce(t));return;case 2:!this.a&&(this.a=new P5(this,ar,this)),de(this.a),!this.a&&(this.a=new P5(this,ar,this)),Dt(this.a,u(t,14));return}Ps(this,e-ee((Sn(),O0)),On((i=u(Rn(this,16),26),i||O0),e),t)},s.zh=function(){return Sn(),O0},s.Bh=function(e){var t;switch(e){case 0:!this.Ab&&(this.Ab=new V(Be,this,0,3)),de(this.Ab);return;case 1:Ic(this,null);return;case 2:!this.a&&(this.a=new P5(this,ar,this)),de(this.a);return}As(this,e-ee((Sn(),O0)),On((t=u(Rn(this,16),26),t||O0),e))},w(Bn,"ETypeParameterImpl",444),b(445,85,Br,P5),s.cj=function(e,t){return xve(this,u(e,87),t)},s.dj=function(e,t){return Lve(this,u(e,87),t)},w(Bn,"ETypeParameterImpl/1",445),b(634,43,sg,KI),s.ec=function(){return new sj(this)},w(Bn,"ETypeParameterImpl/2",634),b(556,bf,pu,sj),s.Fc=function(e){return zjn(this,u(e,87))},s.Gc=function(e){var t,i,r;for(r=!1,i=e.Kc();i.Ob();)t=u(i.Pb(),87),it(this.a,t,"")==null&&(r=!0);return r},s.$b=function(){Cu(this.a)},s.Hc=function(e){return Uu(this.a,e)},s.Kc=function(){var e;return e=new Ea(new ta(this.a).a),new oj(e)},s.Mc=function(e){return OSn(this,e)},s.gc=function(){return Xv(this.a)},w(Bn,"ETypeParameterImpl/2/1",556),b(557,1,ji,oj),s.Nb=function(e){Oi(this,e)},s.Pb=function(){return u(Nd(this.a).cd(),87)},s.Ob=function(){return this.a.b},s.Qb=function(){oPn(this.a)},w(Bn,"ETypeParameterImpl/2/1/1",557),b(1276,43,sg,j9n),s._b=function(e){return ki(e)?QD(this,e):!!Sr(this.f,e)},s.xc=function(e){var t,i;return t=ki(e)?vc(this,e):Vr(Sr(this.f,e)),I(t,837)?(i=u(t,837),t=i._j(),it(this,u(e,235),t),t):t??(e==null?(rO(),uee):null)},w(Bn,"EValidatorRegistryImpl",1276),b(1313,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,1941:1,49:1,97:1,150:1,114:1,115:1},lpn),s.Ih=function(e,t){switch(e.yj()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return t==null?null:Nr(t);case 25:return q0e(t);case 27:return u0e(t);case 28:return s0e(t);case 29:return t==null?null:Tyn(l9[0],u(t,199));case 41:return t==null?"":J1(u(t,290));case 42:return Nr(t);case 50:return Ce(t);default:throw T(new Hn(R4+e.ne()+h0))}},s.Jh=function(e){var t,i,r,c,o,f,h,l,a,d,g,p,v,m,C,S;switch(e.G==-1&&(e.G=(p=is(e),p?v1(p.Mh(),e):-1)),e.G){case 0:return i=new BI,i;case 1:return t=new JH,t;case 2:return r=new tq,r;case 4:return c=new fj,c;case 5:return o=new y9n,o;case 6:return f=new zmn,f;case 7:return h=new eq,h;case 10:return a=new Yy,a;case 11:return d=new RI,d;case 12:return g=new WTn,g;case 13:return v=new _I,v;case 14:return m=new cU,m;case 17:return C=new epn,C;case 18:return l=new ud,l;case 19:return S=new CI,S;default:throw T(new Hn(SB+e.zb+h0))}},s.Kh=function(e,t){switch(e.yj()){case 20:return t==null?null:new CG(t);case 21:return t==null?null:new il(t);case 23:case 22:return t==null?null:X2e(t);case 26:case 24:return t==null?null:X8(ss(t,-128,127)<<24>>24);case 25:return c9e(t);case 27:return O3e(t);case 28:return D3e(t);case 29:return n5e(t);case 32:case 31:return t==null?null:kb(t);case 38:case 37:return t==null?null:new Gq(t);case 40:case 39:return t==null?null:Q(ss(t,Bi,nt));case 41:return null;case 42:return t==null,null;case 44:case 43:return t==null?null:Ma(MM(t));case 49:case 48:return t==null?null:J3(ss(t,PA,32767)<<16>>16);case 50:return t;default:throw T(new Hn(R4+e.ne()+h0))}},w(Bn,"EcoreFactoryImpl",1313),b(547,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,1939:1,49:1,97:1,150:1,179:1,547:1,114:1,115:1,675:1},hTn),s.gb=!1,s.hb=!1;var M1n,cee=!1;w(Bn,"EcorePackageImpl",547),b(1184,1,{837:1},apn),s._j=function(){return Vyn(),see},w(Bn,"EcorePackageImpl/1",1184),b(1193,1,qe,dpn),s.wj=function(e){return I(e,147)},s.xj=function(e){return F(Dy,rn,147,e,0,1)},w(Bn,"EcorePackageImpl/10",1193),b(1194,1,qe,bpn),s.wj=function(e){return I(e,191)},s.xj=function(e){return F(fH,rn,191,e,0,1)},w(Bn,"EcorePackageImpl/11",1194),b(1195,1,qe,wpn),s.wj=function(e){return I(e,56)},s.xj=function(e){return F(zl,rn,56,e,0,1)},w(Bn,"EcorePackageImpl/12",1195),b(1196,1,qe,gpn),s.wj=function(e){return I(e,399)},s.xj=function(e){return F(co,Qtn,59,e,0,1)},w(Bn,"EcorePackageImpl/13",1196),b(1197,1,qe,ppn),s.wj=function(e){return I(e,235)},s.xj=function(e){return F(Vo,rn,235,e,0,1)},w(Bn,"EcorePackageImpl/14",1197),b(1198,1,qe,vpn),s.wj=function(e){return I(e,509)},s.xj=function(e){return F(P0,rn,2017,e,0,1)},w(Bn,"EcorePackageImpl/15",1198),b(1199,1,qe,mpn),s.wj=function(e){return I(e,99)},s.xj=function(e){return F(fw,gg,18,e,0,1)},w(Bn,"EcorePackageImpl/16",1199),b(1200,1,qe,kpn),s.wj=function(e){return I(e,170)},s.xj=function(e){return F(ou,gg,170,e,0,1)},w(Bn,"EcorePackageImpl/17",1200),b(1201,1,qe,ypn),s.wj=function(e){return I(e,472)},s.xj=function(e){return F(sw,rn,472,e,0,1)},w(Bn,"EcorePackageImpl/18",1201),b(1202,1,qe,jpn),s.wj=function(e){return I(e,548)},s.xj=function(e){return F(tc,uGn,548,e,0,1)},w(Bn,"EcorePackageImpl/19",1202),b(1185,1,qe,Epn),s.wj=function(e){return I(e,322)},s.xj=function(e){return F(ow,gg,34,e,0,1)},w(Bn,"EcorePackageImpl/2",1185),b(1203,1,qe,Cpn),s.wj=function(e){return I(e,241)},s.xj=function(e){return F(ar,EGn,87,e,0,1)},w(Bn,"EcorePackageImpl/20",1203),b(1204,1,qe,Tpn),s.wj=function(e){return I(e,444)},s.xj=function(e){return F(zc,rn,836,e,0,1)},w(Bn,"EcorePackageImpl/21",1204),b(1205,1,qe,Mpn),s.wj=function(e){return q0(e)},s.xj=function(e){return F(oi,q,476,e,8,1)},w(Bn,"EcorePackageImpl/22",1205),b(1206,1,qe,Apn),s.wj=function(e){return I(e,190)},s.xj=function(e){return F(yu,q,190,e,0,2)},w(Bn,"EcorePackageImpl/23",1206),b(1207,1,qe,Spn),s.wj=function(e){return I(e,217)},s.xj=function(e){return F(op,q,217,e,0,1)},w(Bn,"EcorePackageImpl/24",1207),b(1208,1,qe,Ppn),s.wj=function(e){return I(e,172)},s.xj=function(e){return F(bm,q,172,e,0,1)},w(Bn,"EcorePackageImpl/25",1208),b(1209,1,qe,Ipn),s.wj=function(e){return I(e,199)},s.xj=function(e){return F(HA,q,199,e,0,1)},w(Bn,"EcorePackageImpl/26",1209),b(1210,1,qe,Opn),s.wj=function(e){return!1},s.xj=function(e){return F(G1n,rn,2110,e,0,1)},w(Bn,"EcorePackageImpl/27",1210),b(1211,1,qe,Dpn),s.wj=function(e){return G0(e)},s.xj=function(e){return F(Ai,q,333,e,7,1)},w(Bn,"EcorePackageImpl/28",1211),b(1212,1,qe,$pn),s.wj=function(e){return I(e,58)},s.xj=function(e){return F(c1n,Ob,58,e,0,1)},w(Bn,"EcorePackageImpl/29",1212),b(1186,1,qe,Fpn),s.wj=function(e){return I(e,510)},s.xj=function(e){return F(Be,{3:1,4:1,5:1,1934:1},590,e,0,1)},w(Bn,"EcorePackageImpl/3",1186),b(1213,1,qe,xpn),s.wj=function(e){return I(e,573)},s.xj=function(e){return F(o1n,rn,1940,e,0,1)},w(Bn,"EcorePackageImpl/30",1213),b(1214,1,qe,Lpn),s.wj=function(e){return I(e,153)},s.xj=function(e){return F(O1n,Ob,153,e,0,1)},w(Bn,"EcorePackageImpl/31",1214),b(1215,1,qe,Npn),s.wj=function(e){return I(e,72)},s.xj=function(e){return F(rI,DGn,72,e,0,1)},w(Bn,"EcorePackageImpl/32",1215),b(1216,1,qe,Bpn),s.wj=function(e){return I(e,155)},s.xj=function(e){return F(U4,q,155,e,0,1)},w(Bn,"EcorePackageImpl/33",1216),b(1217,1,qe,Rpn),s.wj=function(e){return I(e,19)},s.xj=function(e){return F(Wi,q,19,e,0,1)},w(Bn,"EcorePackageImpl/34",1217),b(1218,1,qe,_pn),s.wj=function(e){return I(e,290)},s.xj=function(e){return F(fin,rn,290,e,0,1)},w(Bn,"EcorePackageImpl/35",1218),b(1219,1,qe,Kpn),s.wj=function(e){return I(e,162)},s.xj=function(e){return F(a0,q,162,e,0,1)},w(Bn,"EcorePackageImpl/36",1219),b(1220,1,qe,Hpn),s.wj=function(e){return I(e,83)},s.xj=function(e){return F(hin,rn,83,e,0,1)},w(Bn,"EcorePackageImpl/37",1220),b(1221,1,qe,qpn),s.wj=function(e){return I(e,591)},s.xj=function(e){return F(A1n,rn,591,e,0,1)},w(Bn,"EcorePackageImpl/38",1221),b(1222,1,qe,Gpn),s.wj=function(e){return!1},s.xj=function(e){return F(z1n,rn,2111,e,0,1)},w(Bn,"EcorePackageImpl/39",1222),b(1187,1,qe,zpn),s.wj=function(e){return I(e,88)},s.xj=function(e){return F(ro,rn,26,e,0,1)},w(Bn,"EcorePackageImpl/4",1187),b(1223,1,qe,Upn),s.wj=function(e){return I(e,184)},s.xj=function(e){return F(d0,q,184,e,0,1)},w(Bn,"EcorePackageImpl/40",1223),b(1224,1,qe,Wpn),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Bn,"EcorePackageImpl/41",1224),b(1225,1,qe,Xpn),s.wj=function(e){return I(e,588)},s.xj=function(e){return F(s1n,rn,588,e,0,1)},w(Bn,"EcorePackageImpl/42",1225),b(1226,1,qe,Vpn),s.wj=function(e){return!1},s.xj=function(e){return F(U1n,q,2112,e,0,1)},w(Bn,"EcorePackageImpl/43",1226),b(1227,1,qe,Qpn),s.wj=function(e){return I(e,42)},s.xj=function(e){return F(Ha,OM,42,e,0,1)},w(Bn,"EcorePackageImpl/44",1227),b(1188,1,qe,Jpn),s.wj=function(e){return I(e,138)},s.xj=function(e){return F(Qo,rn,138,e,0,1)},w(Bn,"EcorePackageImpl/5",1188),b(1189,1,qe,Ypn),s.wj=function(e){return I(e,148)},s.xj=function(e){return F(wH,rn,148,e,0,1)},w(Bn,"EcorePackageImpl/6",1189),b(1190,1,qe,Zpn),s.wj=function(e){return I(e,457)},s.xj=function(e){return F(iI,rn,671,e,0,1)},w(Bn,"EcorePackageImpl/7",1190),b(1191,1,qe,n3n),s.wj=function(e){return I(e,573)},s.xj=function(e){return F(e1,rn,678,e,0,1)},w(Bn,"EcorePackageImpl/8",1191),b(1192,1,qe,e3n),s.wj=function(e){return I(e,471)},s.xj=function(e){return F(h9,rn,471,e,0,1)},w(Bn,"EcorePackageImpl/9",1192),b(1025,1982,cGn,_9n),s.bi=function(e,t){kge(this,u(t,415))},s.fi=function(e,t){nLn(this,e,u(t,415))},w(Bn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1025),b(1026,143,jk,eTn),s.Ai=function(){return this.a.a},w(Bn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1026),b(1053,1052,{},pyn),w("org.eclipse.emf.ecore.plugin","EcorePlugin",1053);var A1n=Ct($Gn,"Resource");b(781,1378,FGn),s.Yk=function(e){},s.Zk=function(e){},s.Vk=function(){return!this.a&&(this.a=new $I(this)),this.a},s.Wk=function(e){var t,i,r,c,o;if(r=e.length,r>0)if(Te(0,e.length),e.charCodeAt(0)==47){for(o=new Pc(4),c=1,t=1;t0&&(e=e.substr(0,i)));return H6e(this,e)},s.Xk=function(){return this.c},s.Ib=function(){var e;return J1(this.gm)+"@"+(e=mt(this)>>>0,e.toString(16))+" uri='"+this.d+"'"},s.b=!1,w(zB,"ResourceImpl",781),b(1379,781,FGn,Fmn),w(zB,"BinaryResourceImpl",1379),b(1169,694,RB),s.si=function(e){return I(e,56)?E1e(this,u(e,56)):I(e,591)?new ie(u(e,591).Vk()):B(e)===B(this.f)?u(e,14).Kc():(o3(),xy.a)},s.Ob=function(){return yY(this)},s.a=!1,w(vt,"EcoreUtil/ContentTreeIterator",1169),b(1380,1169,RB,DCn),s.si=function(e){return B(e)===B(this.f)?u(e,15).Kc():new wAn(u(e,56))},w(zB,"ResourceImpl/5",1380),b(648,1994,jGn,$I),s.Hc=function(e){return this.i<=4?o4(this,e):I(e,49)&&u(e,49).Zg()==this.a},s.bi=function(e,t){e==this.i-1&&(this.a.b||(this.a.b=!0))},s.di=function(e,t){e==0?this.a.b||(this.a.b=!0):A$(this,e,t)},s.fi=function(e,t){},s.gi=function(e,t,i){},s.aj=function(){return 2},s.Ai=function(){return this.a},s.bj=function(){return!0},s.cj=function(e,t){var i;return i=u(e,49),t=i.wh(this.a,t),t},s.dj=function(e,t){var i;return i=u(e,49),i.wh(null,t)},s.ej=function(){return!1},s.hi=function(){return!0},s.ri=function(e){return F(zl,rn,56,e,0,1)},s.ni=function(){return!1},w(zB,"ResourceImpl/ContentsEList",648),b(957,1964,A4,$mn),s.Zc=function(e){return this.a._h(e)},s.gc=function(){return this.a.gc()},w(vt,"AbstractSequentialInternalEList/1",957);var S1n,P1n,xi,I1n;b(624,1,{},FEn);var cI,uI;w(vt,"BasicExtendedMetaData",624),b(1160,1,{},Fkn),s.$k=function(){return null},s._k=function(){return this.a==-2&&yte(this,Vve(this.d,this.b)),this.a},s.al=function(){return null},s.bl=function(){return Pn(),Pn(),cr},s.ne=function(){return this.c==H4&&Ete(this,O$n(this.d,this.b)),this.c},s.cl=function(){return 0},s.a=-2,s.c=H4,w(vt,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1160),b(1161,1,{},eAn),s.$k=function(){return this.a==(T3(),cI)&&jte(this,l8e(this.f,this.b)),this.a},s._k=function(){return 0},s.al=function(){return this.c==(T3(),cI)&&Cte(this,a8e(this.f,this.b)),this.c},s.bl=function(){return!this.d&&Tte(this,lke(this.f,this.b)),this.d},s.ne=function(){return this.e==H4&&Mte(this,O$n(this.f,this.b)),this.e},s.cl=function(){return this.g==-2&&Ate(this,bve(this.f,this.b)),this.g},s.e=H4,s.g=-2,w(vt,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1161),b(1159,1,{},Lkn),s.b=!1,s.c=!1,w(vt,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1159),b(1162,1,{},nAn),s.c=-2,s.e=H4,s.f=H4,w(vt,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1162),b(585,622,Br,ME),s.aj=function(){return this.c},s.Fk=function(){return!1},s.li=function(e,t){return t},s.c=0,w(vt,"EDataTypeEList",585);var O1n=Ct(vt,"FeatureMap");b(75,585,{3:1,4:1,20:1,28:1,52:1,14:1,15:1,54:1,67:1,63:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},$t),s.Vc=function(e,t){s8e(this,e,u(t,72))},s.Fc=function(e){return M9e(this,u(e,72))},s.Yh=function(e){ahe(this,u(e,72))},s.cj=function(e,t){return Uue(this,u(e,72),t)},s.dj=function(e,t){return SU(this,u(e,72),t)},s.ii=function(e,t){return Pke(this,e,t)},s.li=function(e,t){return oEe(this,e,u(t,72))},s._c=function(e,t){return J8e(this,e,u(t,72))},s.jj=function(e,t){return Wue(this,u(e,72),t)},s.kj=function(e,t){return cEn(this,u(e,72),t)},s.lj=function(e,t,i){return J4e(this,u(e,72),u(t,72),i)},s.oi=function(e,t){return px(this,e,u(t,72))},s.dl=function(e,t){return fZ(this,e,t)},s.Wc=function(e,t){var i,r,c,o,f,h,l,a,d;for(a=new Ld(t.gc()),c=t.Kc();c.Ob();)if(r=u(c.Pb(),72),o=r.ak(),zh(this.e,o))(!o.hi()||!yC(this,o,r.dd())&&!o4(a,r))&&me(a,r);else{for(d=Kc(this.e.Tg(),o),i=u(this.g,119),f=!0,h=0;h=0;)if(t=e[this.c],this.k.rl(t.ak()))return this.j=this.f?t:t.dd(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},w(vt,"BasicFeatureMap/FeatureEIterator",410),b(662,410,lh,LO),s.Lk=function(){return!0},w(vt,"BasicFeatureMap/ResolvingFeatureEIterator",662),b(955,486,CA,Ayn),s.Gi=function(){return this},w(vt,"EContentsEList/1",955),b(956,486,CA,Ykn),s.Lk=function(){return!1},w(vt,"EContentsEList/2",956),b(954,279,TA,Syn),s.Nk=function(e){},s.Ob=function(){return!1},s.Sb=function(){return!1},w(vt,"EContentsEList/FeatureIteratorImpl/1",954),b(825,585,Br,$z),s.ci=function(){this.a=!0},s.fj=function(){return this.a},s.Xj=function(){var e;de(this),qu(this.e)?(e=this.a,this.a=!1,et(this.e,new vo(this.e,2,this.c,e,!1))):this.a=!1},s.a=!1,w(vt,"EDataTypeEList/Unsettable",825),b(1849,585,Br,Lyn),s.hi=function(){return!0},w(vt,"EDataTypeUniqueEList",1849),b(1850,825,Br,Nyn),s.hi=function(){return!0},w(vt,"EDataTypeUniqueEList/Unsettable",1850),b(139,85,Br,lu),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectContainmentEList/Resolving",139),b(1163,545,Br,xyn),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectContainmentEList/Unsettable/Resolving",1163),b(748,16,Br,yU),s.ci=function(){this.a=!0},s.fj=function(){return this.a},s.Xj=function(){var e;de(this),qu(this.e)?(e=this.a,this.a=!1,et(this.e,new vo(this.e,2,this.c,e,!1))):this.a=!1},s.a=!1,w(vt,"EObjectContainmentWithInverseEList/Unsettable",748),b(1173,748,Br,Ujn),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1173),b(743,496,Br,Dz),s.ci=function(){this.a=!0},s.fj=function(){return this.a},s.Xj=function(){var e;de(this),qu(this.e)?(e=this.a,this.a=!1,et(this.e,new vo(this.e,2,this.c,e,!1))):this.a=!1},s.a=!1,w(vt,"EObjectEList/Unsettable",743),b(328,496,Br,Aw),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectResolvingEList",328),b(1641,743,Br,Byn),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectResolvingEList/Unsettable",1641),b(1381,1,{},t3n);var uee;w(vt,"EObjectValidator",1381),b(546,496,Br,zE),s.zk=function(){return this.d},s.Ak=function(){return this.b},s.bj=function(){return!0},s.Dk=function(){return!0},s.b=0,w(vt,"EObjectWithInverseEList",546),b(1176,546,Br,Wjn),s.Ck=function(){return!0},w(vt,"EObjectWithInverseEList/ManyInverse",1176),b(625,546,Br,tD),s.ci=function(){this.a=!0},s.fj=function(){return this.a},s.Xj=function(){var e;de(this),qu(this.e)?(e=this.a,this.a=!1,et(this.e,new vo(this.e,2,this.c,e,!1))):this.a=!1},s.a=!1,w(vt,"EObjectWithInverseEList/Unsettable",625),b(1175,625,Br,Xjn),s.Ck=function(){return!0},w(vt,"EObjectWithInverseEList/Unsettable/ManyInverse",1175),b(749,546,Br,jU),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectWithInverseResolvingEList",749),b(31,749,Br,Fn),s.Ck=function(){return!0},w(vt,"EObjectWithInverseResolvingEList/ManyInverse",31),b(750,625,Br,EU),s.Ek=function(){return!0},s.li=function(e,t){return U2(this,e,u(t,56))},w(vt,"EObjectWithInverseResolvingEList/Unsettable",750),b(1174,750,Br,Vjn),s.Ck=function(){return!0},w(vt,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1174),b(1164,622,Br),s.ai=function(){return(this.b&1792)==0},s.ci=function(){this.b|=1},s.Bk=function(){return(this.b&4)!=0},s.bj=function(){return(this.b&40)!=0},s.Ck=function(){return(this.b&16)!=0},s.Dk=function(){return(this.b&8)!=0},s.Ek=function(){return(this.b&Bb)!=0},s.rk=function(){return(this.b&32)!=0},s.Fk=function(){return(this.b&Eo)!=0},s.wj=function(e){return this.d?IAn(this.d,e):this.ak().Yj().wj(e)},s.fj=function(){return this.b&2?(this.b&1)!=0:this.i!=0},s.hi=function(){return(this.b&128)!=0},s.Xj=function(){var e;de(this),this.b&2&&(qu(this.e)?(e=(this.b&1)!=0,this.b&=-2,Gp(this,new vo(this.e,2,yt(this.e.Tg(),this.ak()),e,!1))):this.b&=-2)},s.ni=function(){return(this.b&1536)==0},s.b=0,w(vt,"EcoreEList/Generic",1164),b(1165,1164,Br,RTn),s.ak=function(){return this.a},w(vt,"EcoreEList/Dynamic",1165),b(747,63,Xf,Lq),s.ri=function(e){return Q8(this.a.a,e)},w(vt,"EcoreEMap/1",747),b(746,85,Br,yW),s.bi=function(e,t){KT(this.b,u(t,133))},s.di=function(e,t){TOn(this.b)},s.ei=function(e,t,i){var r;++(r=this.b,u(t,133),r).e},s.fi=function(e,t){MF(this.b,u(t,133))},s.gi=function(e,t,i){MF(this.b,u(i,133)),B(i)===B(t)&&u(i,133).Th(ece(u(t,133).cd())),KT(this.b,u(t,133))},w(vt,"EcoreEMap/DelegateEObjectContainmentEList",746),b(1171,151,Vtn,BIn),w(vt,"EcoreEMap/Unsettable",1171),b(1172,746,Br,Qjn),s.ci=function(){this.a=!0},s.fj=function(){return this.a},s.Xj=function(){var e;de(this),qu(this.e)?(e=this.a,this.a=!1,et(this.e,new vo(this.e,2,this.c,e,!1))):this.a=!1},s.a=!1,w(vt,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1172),b(1168,228,sg,HCn),s.a=!1,s.b=!1,w(vt,"EcoreUtil/Copier",1168),b(745,1,ji,wAn),s.Nb=function(e){Oi(this,e)},s.Ob=function(){return l$n(this)},s.Pb=function(){var e;return l$n(this),e=this.b,this.b=null,e},s.Qb=function(){this.a.Qb()},w(vt,"EcoreUtil/ProperContentIterator",745),b(1382,1381,{},Z4n);var see;w(vt,"EcoreValidator",1382);var oee;Ct(vt,"FeatureMapUtil/Validator"),b(1260,1,{1942:1},i3n),s.rl=function(e){return!0},w(vt,"FeatureMapUtil/1",1260),b(757,1,{1942:1},BZ),s.rl=function(e){var t;return this.c==e?!0:(t=sn(te(this.a,e)),t==null?U7e(this,e)?(ESn(this.a,e,(qn(),z4)),!0):(ESn(this.a,e,(qn(),qa)),!1):t==(qn(),z4))},s.e=!1;var mH;w(vt,"FeatureMapUtil/BasicValidator",757),b(758,43,sg,Sz),w(vt,"FeatureMapUtil/BasicValidator/Cache",758),b(501,52,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,69:1,95:1},i8),s.Vc=function(e,t){_Nn(this.c,this.b,e,t)},s.Fc=function(e){return fZ(this.c,this.b,e)},s.Wc=function(e,t){return sje(this.c,this.b,e,t)},s.Gc=function(e){return m5(this,e)},s.Xh=function(e,t){S0e(this.c,this.b,e,t)},s.lk=function(e,t){return iZ(this.c,this.b,e,t)},s.pi=function(e){return kM(this.c,this.b,e,!1)},s.Zh=function(){return fyn(this.c,this.b)},s.$h=function(){return Hre(this.c,this.b)},s._h=function(e){return $de(this.c,this.b,e)},s.mk=function(e,t){return Sjn(this,e,t)},s.$b=function(){t2(this)},s.Hc=function(e){return yC(this.c,this.b,e)},s.Ic=function(e){return Dbe(this.c,this.b,e)},s.Xb=function(e){return kM(this.c,this.b,e,!0)},s.Wj=function(e){return this},s.Xc=function(e){return Gae(this.c,this.b,e)},s.dc=function(){return Zj(this)},s.fj=function(){return!g7(this.c,this.b)},s.Kc=function(){return g0e(this.c,this.b)},s.Yc=function(){return p0e(this.c,this.b)},s.Zc=function(e){return Pge(this.c,this.b,e)},s.ii=function(e,t){return rRn(this.c,this.b,e,t)},s.ji=function(e,t){Ade(this.c,this.b,e,t)},s.$c=function(e){return Nxn(this.c,this.b,e)},s.Mc=function(e){return dke(this.c,this.b,e)},s._c=function(e,t){return hRn(this.c,this.b,e,t)},s.Wb=function(e){iM(this.c,this.b),m5(this,u(e,15))},s.gc=function(){return Hge(this.c,this.b)},s.Pc=function(){return Kle(this.c,this.b)},s.Qc=function(e){return zae(this.c,this.b,e)},s.Ib=function(){var e,t;for(t=new i1,t.a+="[",e=fyn(this.c,this.b);gF(e);)dr(t,y5(RT(e))),gF(e)&&(t.a+=Ji);return t.a+="]",t.a},s.Xj=function(){iM(this.c,this.b)},w(vt,"FeatureMapUtil/FeatureEList",501),b(627,36,jk,v$),s.yi=function(e){return u6(this,e)},s.Di=function(e){var t,i,r,c,o,f,h;switch(this.d){case 1:case 2:{if(o=e.Ai(),B(o)===B(this.c)&&u6(this,null)==e.yi(null))return this.g=e.zi(),e.xi()==1&&(this.d=1),!0;break}case 3:{switch(c=e.xi(),c){case 3:{if(o=e.Ai(),B(o)===B(this.c)&&u6(this,null)==e.yi(null))return this.d=5,t=new Ld(2),me(t,this.g),me(t,e.zi()),this.g=t,!0;break}}break}case 5:{switch(c=e.xi(),c){case 3:{if(o=e.Ai(),B(o)===B(this.c)&&u6(this,null)==e.yi(null))return i=u(this.g,14),i.Fc(e.zi()),!0;break}}break}case 4:{switch(c=e.xi(),c){case 3:{if(o=e.Ai(),B(o)===B(this.c)&&u6(this,null)==e.yi(null))return this.d=1,this.g=e.zi(),!0;break}case 4:{if(o=e.Ai(),B(o)===B(this.c)&&u6(this,null)==e.yi(null))return this.d=6,h=new Ld(2),me(h,this.n),me(h,e.Bi()),this.n=h,f=A(M(be,1),Le,25,15,[this.o,e.Ci()]),this.g=f,!0;break}}break}case 6:{switch(c=e.xi(),c){case 4:{if(o=e.Ai(),B(o)===B(this.c)&&u6(this,null)==e.yi(null))return i=u(this.n,14),i.Fc(e.Bi()),f=u(this.g,48),r=F(be,Le,25,f.length+1,15,1),gc(f,0,r,0,f.length),r[f.length]=e.Ci(),this.g=r,!0;break}}break}}return!1},w(vt,"FeatureMapUtil/FeatureENotificationImpl",627),b(552,501,{20:1,28:1,52:1,14:1,15:1,58:1,76:1,153:1,215:1,1937:1,69:1,95:1},IE),s.dl=function(e,t){return fZ(this.c,e,t)},s.el=function(e,t,i){return iZ(this.c,e,t,i)},s.fl=function(e,t,i){return MZ(this.c,e,t,i)},s.gl=function(){return this},s.hl=function(e,t){return W7(this.c,e,t)},s.il=function(e){return u(kM(this.c,this.b,e,!1),72).ak()},s.jl=function(e){return u(kM(this.c,this.b,e,!1),72).dd()},s.kl=function(){return this.a},s.ll=function(e){return!g7(this.c,e)},s.ml=function(e,t){yM(this.c,e,t)},s.nl=function(e){return zIn(this.c,e)},s.ol=function(e){wFn(this.c,e)},w(vt,"FeatureMapUtil/FeatureFeatureMap",552),b(1259,1,GB,Nkn),s.Wj=function(e){return kM(this.b,this.a,-1,e)},s.fj=function(){return!g7(this.b,this.a)},s.Wb=function(e){yM(this.b,this.a,e)},s.Xj=function(){iM(this.b,this.a)},w(vt,"FeatureMapUtil/FeatureValue",1259);var Op,kH,yH,Dp,fee,Ny=Ct($A,"AnyType");b(666,60,Uh,VI),w($A,"InvalidDatatypeValueException",666);var sI=Ct($A,LGn),By=Ct($A,NGn),D1n=Ct($A,BGn),hee,oc,$1n,rd,lee,aee,dee,bee,wee,gee,pee,vee,mee,kee,yee,Gg,jee,zg,w9,Eee,D0,Ry,_y,Cee,g9,p9;b(830,506,{105:1,92:1,90:1,56:1,49:1,97:1,843:1},iG),s._g=function(e,t,i){switch(e){case 0:return i?(!this.c&&(this.c=new $t(this,0)),this.c):(!this.c&&(this.c=new $t(this,0)),this.c.b);case 1:return i?(!this.c&&(this.c=new $t(this,0)),u(mc(this.c,(ht(),rd)),153)):(!this.c&&(this.c=new $t(this,0)),u(u(mc(this.c,(ht(),rd)),153),215)).kl();case 2:return i?(!this.b&&(this.b=new $t(this,2)),this.b):(!this.b&&(this.b=new $t(this,2)),this.b.b)}return Cs(this,e-ee(this.zh()),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():this.zh(),e),t,i)},s.jh=function(e,t,i){var r;switch(t){case 0:return!this.c&&(this.c=new $t(this,0)),q7(this.c,e,i);case 1:return(!this.c&&(this.c=new $t(this,0)),u(u(mc(this.c,(ht(),rd)),153),69)).mk(e,i);case 2:return!this.b&&(this.b=new $t(this,2)),q7(this.b,e,i)}return r=u(On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():this.zh(),t),66),r.Nj().Rj(this,QX(this),t-ee(this.zh()),e,i)},s.lh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new $t(this,0)),u(mc(this.c,(ht(),rd)),153)).dc();case 2:return!!this.b&&this.b.i!=0}return js(this,e-ee(this.zh()),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():this.zh(),e))},s.sh=function(e,t){switch(e){case 0:!this.c&&(this.c=new $t(this,0)),j8(this.c,t);return;case 1:(!this.c&&(this.c=new $t(this,0)),u(u(mc(this.c,(ht(),rd)),153),215)).Wb(t);return;case 2:!this.b&&(this.b=new $t(this,2)),j8(this.b,t);return}Ps(this,e-ee(this.zh()),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():this.zh(),e),t)},s.zh=function(){return ht(),$1n},s.Bh=function(e){switch(e){case 0:!this.c&&(this.c=new $t(this,0)),de(this.c);return;case 1:(!this.c&&(this.c=new $t(this,0)),u(mc(this.c,(ht(),rd)),153)).$b();return;case 2:!this.b&&(this.b=new $t(this,2)),de(this.b);return}As(this,e-ee(this.zh()),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():this.zh(),e))},s.Ib=function(){var e;return this.j&4?yo(this):(e=new Bs(yo(this)),e.a+=" (mixed: ",w5(e,this.c),e.a+=", anyAttribute: ",w5(e,this.b),e.a+=")",e.a)},w(Wt,"AnyTypeImpl",830),b(667,506,{105:1,92:1,90:1,56:1,49:1,97:1,2021:1,667:1},c3n),s._g=function(e,t,i){switch(e){case 0:return this.a;case 1:return this.b}return Cs(this,e-ee((ht(),Gg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():Gg,e),t,i)},s.lh=function(e){switch(e){case 0:return this.a!=null;case 1:return this.b!=null}return js(this,e-ee((ht(),Gg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():Gg,e))},s.sh=function(e,t){switch(e){case 0:Fte(this,Ce(t));return;case 1:xte(this,Ce(t));return}Ps(this,e-ee((ht(),Gg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():Gg,e),t)},s.zh=function(){return ht(),Gg},s.Bh=function(e){switch(e){case 0:this.a=null;return;case 1:this.b=null;return}As(this,e-ee((ht(),Gg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():Gg,e))},s.Ib=function(){var e;return this.j&4?yo(this):(e=new Bs(yo(this)),e.a+=" (data: ",dr(e,this.a),e.a+=", target: ",dr(e,this.b),e.a+=")",e.a)},s.a=null,s.b=null,w(Wt,"ProcessingInstructionImpl",667),b(668,830,{105:1,92:1,90:1,56:1,49:1,97:1,843:1,2022:1,668:1},C9n),s._g=function(e,t,i){switch(e){case 0:return i?(!this.c&&(this.c=new $t(this,0)),this.c):(!this.c&&(this.c=new $t(this,0)),this.c.b);case 1:return i?(!this.c&&(this.c=new $t(this,0)),u(mc(this.c,(ht(),rd)),153)):(!this.c&&(this.c=new $t(this,0)),u(u(mc(this.c,(ht(),rd)),153),215)).kl();case 2:return i?(!this.b&&(this.b=new $t(this,2)),this.b):(!this.b&&(this.b=new $t(this,2)),this.b.b);case 3:return!this.c&&(this.c=new $t(this,0)),Ce(W7(this.c,(ht(),w9),!0));case 4:return CU(this.a,(!this.c&&(this.c=new $t(this,0)),Ce(W7(this.c,(ht(),w9),!0))));case 5:return this.a}return Cs(this,e-ee((ht(),zg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():zg,e),t,i)},s.lh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new $t(this,0)),u(mc(this.c,(ht(),rd)),153)).dc();case 2:return!!this.b&&this.b.i!=0;case 3:return!this.c&&(this.c=new $t(this,0)),Ce(W7(this.c,(ht(),w9),!0))!=null;case 4:return CU(this.a,(!this.c&&(this.c=new $t(this,0)),Ce(W7(this.c,(ht(),w9),!0))))!=null;case 5:return!!this.a}return js(this,e-ee((ht(),zg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():zg,e))},s.sh=function(e,t){switch(e){case 0:!this.c&&(this.c=new $t(this,0)),j8(this.c,t);return;case 1:(!this.c&&(this.c=new $t(this,0)),u(u(mc(this.c,(ht(),rd)),153),215)).Wb(t);return;case 2:!this.b&&(this.b=new $t(this,2)),j8(this.b,t);return;case 3:fX(this,Ce(t));return;case 4:fX(this,TU(this.a,t));return;case 5:Lte(this,u(t,148));return}Ps(this,e-ee((ht(),zg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():zg,e),t)},s.zh=function(){return ht(),zg},s.Bh=function(e){switch(e){case 0:!this.c&&(this.c=new $t(this,0)),de(this.c);return;case 1:(!this.c&&(this.c=new $t(this,0)),u(mc(this.c,(ht(),rd)),153)).$b();return;case 2:!this.b&&(this.b=new $t(this,2)),de(this.b);return;case 3:!this.c&&(this.c=new $t(this,0)),yM(this.c,(ht(),w9),null);return;case 4:fX(this,TU(this.a,null));return;case 5:this.a=null;return}As(this,e-ee((ht(),zg)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():zg,e))},w(Wt,"SimpleAnyTypeImpl",668),b(669,506,{105:1,92:1,90:1,56:1,49:1,97:1,2023:1,669:1},E9n),s._g=function(e,t,i){switch(e){case 0:return i?(!this.a&&(this.a=new $t(this,0)),this.a):(!this.a&&(this.a=new $t(this,0)),this.a.b);case 1:return i?(!this.b&&(this.b=new Xu((Sn(),nr),tc,this,1)),this.b):(!this.b&&(this.b=new Xu((Sn(),nr),tc,this,1)),N8(this.b));case 2:return i?(!this.c&&(this.c=new Xu((Sn(),nr),tc,this,2)),this.c):(!this.c&&(this.c=new Xu((Sn(),nr),tc,this,2)),N8(this.c));case 3:return!this.a&&(this.a=new $t(this,0)),mc(this.a,(ht(),Ry));case 4:return!this.a&&(this.a=new $t(this,0)),mc(this.a,(ht(),_y));case 5:return!this.a&&(this.a=new $t(this,0)),mc(this.a,(ht(),g9));case 6:return!this.a&&(this.a=new $t(this,0)),mc(this.a,(ht(),p9))}return Cs(this,e-ee((ht(),D0)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():D0,e),t,i)},s.jh=function(e,t,i){var r;switch(t){case 0:return!this.a&&(this.a=new $t(this,0)),q7(this.a,e,i);case 1:return!this.b&&(this.b=new Xu((Sn(),nr),tc,this,1)),yE(this.b,e,i);case 2:return!this.c&&(this.c=new Xu((Sn(),nr),tc,this,2)),yE(this.c,e,i);case 5:return!this.a&&(this.a=new $t(this,0)),Sjn(mc(this.a,(ht(),g9)),e,i)}return r=u(On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():(ht(),D0),t),66),r.Nj().Rj(this,QX(this),t-ee((ht(),D0)),e,i)},s.lh=function(e){switch(e){case 0:return!!this.a&&this.a.i!=0;case 1:return!!this.b&&this.b.f!=0;case 2:return!!this.c&&this.c.f!=0;case 3:return!this.a&&(this.a=new $t(this,0)),!Zj(mc(this.a,(ht(),Ry)));case 4:return!this.a&&(this.a=new $t(this,0)),!Zj(mc(this.a,(ht(),_y)));case 5:return!this.a&&(this.a=new $t(this,0)),!Zj(mc(this.a,(ht(),g9)));case 6:return!this.a&&(this.a=new $t(this,0)),!Zj(mc(this.a,(ht(),p9)))}return js(this,e-ee((ht(),D0)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():D0,e))},s.sh=function(e,t){switch(e){case 0:!this.a&&(this.a=new $t(this,0)),j8(this.a,t);return;case 1:!this.b&&(this.b=new Xu((Sn(),nr),tc,this,1)),fT(this.b,t);return;case 2:!this.c&&(this.c=new Xu((Sn(),nr),tc,this,2)),fT(this.c,t);return;case 3:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),Ry))),!this.a&&(this.a=new $t(this,0)),m5(mc(this.a,Ry),u(t,14));return;case 4:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),_y))),!this.a&&(this.a=new $t(this,0)),m5(mc(this.a,_y),u(t,14));return;case 5:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),g9))),!this.a&&(this.a=new $t(this,0)),m5(mc(this.a,g9),u(t,14));return;case 6:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),p9))),!this.a&&(this.a=new $t(this,0)),m5(mc(this.a,p9),u(t,14));return}Ps(this,e-ee((ht(),D0)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():D0,e),t)},s.zh=function(){return ht(),D0},s.Bh=function(e){switch(e){case 0:!this.a&&(this.a=new $t(this,0)),de(this.a);return;case 1:!this.b&&(this.b=new Xu((Sn(),nr),tc,this,1)),this.b.c.$b();return;case 2:!this.c&&(this.c=new Xu((Sn(),nr),tc,this,2)),this.c.c.$b();return;case 3:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),Ry)));return;case 4:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),_y)));return;case 5:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),g9)));return;case 6:!this.a&&(this.a=new $t(this,0)),t2(mc(this.a,(ht(),p9)));return}As(this,e-ee((ht(),D0)),On(this.j&2?(!this.k&&(this.k=new Fo),this.k).ck():D0,e))},s.Ib=function(){var e;return this.j&4?yo(this):(e=new Bs(yo(this)),e.a+=" (mixed: ",w5(e,this.a),e.a+=")",e.a)},w(Wt,"XMLTypeDocumentRootImpl",669),b(1919,704,{105:1,92:1,90:1,471:1,147:1,56:1,108:1,49:1,97:1,150:1,114:1,115:1,2024:1},r3n),s.Ih=function(e,t){switch(e.yj()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return t==null?null:Nr(t);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return Ce(t);case 6:return uue(u(t,190));case 12:case 47:case 49:case 11:return JRn(this,e,t);case 13:return t==null?null:Wye(u(t,240));case 15:case 14:return t==null?null:ihe(K(Y(t)));case 17:return nxn((ht(),t));case 18:return nxn(t);case 21:case 20:return t==null?null:rhe(u(t,155).a);case 27:return sue(u(t,190));case 30:return gFn((ht(),u(t,15)));case 31:return gFn(u(t,15));case 40:return fue((ht(),t));case 42:return exn((ht(),t));case 43:return exn(t);case 59:case 48:return oue((ht(),t));default:throw T(new Hn(R4+e.ne()+h0))}},s.Jh=function(e){var t,i,r,c,o;switch(e.G==-1&&(e.G=(i=is(e),i?v1(i.Mh(),e):-1)),e.G){case 0:return t=new iG,t;case 1:return r=new c3n,r;case 2:return c=new C9n,c;case 3:return o=new E9n,o;default:throw T(new Hn(SB+e.zb+h0))}},s.Kh=function(e,t){var i,r,c,o,f,h,l,a,d,g,p,v,m,C,S,$;switch(e.yj()){case 5:case 52:case 4:return t;case 6:return Epe(t);case 8:case 7:return t==null?null:hve(t);case 9:return t==null?null:X8(ss((r=jc(t,!0),r.length>0&&(Te(0,r.length),r.charCodeAt(0)==43)?r.substr(1):r),-128,127)<<24>>24);case 10:return t==null?null:X8(ss((c=jc(t,!0),c.length>0&&(Te(0,c.length),c.charCodeAt(0)==43)?c.substr(1):c),-128,127)<<24>>24);case 11:return Ce(i0(this,(ht(),dee),t));case 12:return Ce(i0(this,(ht(),bee),t));case 13:return t==null?null:new CG(jc(t,!0));case 15:case 14:return O9e(t);case 16:return Ce(i0(this,(ht(),wee),t));case 17:return j$n((ht(),t));case 18:return j$n(t);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return jc(t,!0);case 21:case 20:return _9e(t);case 22:return Ce(i0(this,(ht(),gee),t));case 23:return Ce(i0(this,(ht(),pee),t));case 24:return Ce(i0(this,(ht(),vee),t));case 25:return Ce(i0(this,(ht(),mee),t));case 26:return Ce(i0(this,(ht(),kee),t));case 27:return vpe(t);case 30:return E$n((ht(),t));case 31:return E$n(t);case 32:return t==null?null:Q(ss((d=jc(t,!0),d.length>0&&(Te(0,d.length),d.charCodeAt(0)==43)?d.substr(1):d),Bi,nt));case 33:return t==null?null:new il((g=jc(t,!0),g.length>0&&(Te(0,g.length),g.charCodeAt(0)==43)?g.substr(1):g));case 34:return t==null?null:Q(ss((p=jc(t,!0),p.length>0&&(Te(0,p.length),p.charCodeAt(0)==43)?p.substr(1):p),Bi,nt));case 36:return t==null?null:Ma(MM((v=jc(t,!0),v.length>0&&(Te(0,v.length),v.charCodeAt(0)==43)?v.substr(1):v)));case 37:return t==null?null:Ma(MM((m=jc(t,!0),m.length>0&&(Te(0,m.length),m.charCodeAt(0)==43)?m.substr(1):m)));case 40:return F2e((ht(),t));case 42:return C$n((ht(),t));case 43:return C$n(t);case 44:return t==null?null:new il((C=jc(t,!0),C.length>0&&(Te(0,C.length),C.charCodeAt(0)==43)?C.substr(1):C));case 45:return t==null?null:new il((S=jc(t,!0),S.length>0&&(Te(0,S.length),S.charCodeAt(0)==43)?S.substr(1):S));case 46:return jc(t,!1);case 47:return Ce(i0(this,(ht(),yee),t));case 59:case 48:return $2e((ht(),t));case 49:return Ce(i0(this,(ht(),jee),t));case 50:return t==null?null:J3(ss(($=jc(t,!0),$.length>0&&(Te(0,$.length),$.charCodeAt(0)==43)?$.substr(1):$),PA,32767)<<16>>16);case 51:return t==null?null:J3(ss((o=jc(t,!0),o.length>0&&(Te(0,o.length),o.charCodeAt(0)==43)?o.substr(1):o),PA,32767)<<16>>16);case 53:return Ce(i0(this,(ht(),Eee),t));case 55:return t==null?null:J3(ss((f=jc(t,!0),f.length>0&&(Te(0,f.length),f.charCodeAt(0)==43)?f.substr(1):f),PA,32767)<<16>>16);case 56:return t==null?null:J3(ss((h=jc(t,!0),h.length>0&&(Te(0,h.length),h.charCodeAt(0)==43)?h.substr(1):h),PA,32767)<<16>>16);case 57:return t==null?null:Ma(MM((l=jc(t,!0),l.length>0&&(Te(0,l.length),l.charCodeAt(0)==43)?l.substr(1):l)));case 58:return t==null?null:Ma(MM((a=jc(t,!0),a.length>0&&(Te(0,a.length),a.charCodeAt(0)==43)?a.substr(1):a)));case 60:return t==null?null:Q(ss((i=jc(t,!0),i.length>0&&(Te(0,i.length),i.charCodeAt(0)==43)?i.substr(1):i),Bi,nt));case 61:return t==null?null:Q(ss(jc(t,!0),Bi,nt));default:throw T(new Hn(R4+e.ne()+h0))}};var Tee,F1n,Mee,x1n;w(Wt,"XMLTypeFactoryImpl",1919),b(586,179,{105:1,92:1,90:1,147:1,191:1,56:1,235:1,108:1,49:1,97:1,150:1,179:1,114:1,115:1,675:1,1945:1,586:1},fTn),s.N=!1,s.O=!1;var Aee=!1;w(Wt,"XMLTypePackageImpl",586),b(1852,1,{837:1},u3n),s._j=function(){return pZ(),Lee},w(Wt,"XMLTypePackageImpl/1",1852),b(1861,1,qe,s3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/10",1861),b(1862,1,qe,o3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/11",1862),b(1863,1,qe,f3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/12",1863),b(1864,1,qe,h3n),s.wj=function(e){return G0(e)},s.xj=function(e){return F(Ai,q,333,e,7,1)},w(Wt,"XMLTypePackageImpl/13",1864),b(1865,1,qe,l3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/14",1865),b(1866,1,qe,a3n),s.wj=function(e){return I(e,15)},s.xj=function(e){return F(Ds,Ob,15,e,0,1)},w(Wt,"XMLTypePackageImpl/15",1866),b(1867,1,qe,d3n),s.wj=function(e){return I(e,15)},s.xj=function(e){return F(Ds,Ob,15,e,0,1)},w(Wt,"XMLTypePackageImpl/16",1867),b(1868,1,qe,b3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/17",1868),b(1869,1,qe,w3n),s.wj=function(e){return I(e,155)},s.xj=function(e){return F(U4,q,155,e,0,1)},w(Wt,"XMLTypePackageImpl/18",1869),b(1870,1,qe,g3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/19",1870),b(1853,1,qe,p3n),s.wj=function(e){return I(e,843)},s.xj=function(e){return F(Ny,rn,843,e,0,1)},w(Wt,"XMLTypePackageImpl/2",1853),b(1871,1,qe,v3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/20",1871),b(1872,1,qe,m3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/21",1872),b(1873,1,qe,k3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/22",1873),b(1874,1,qe,y3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/23",1874),b(1875,1,qe,j3n),s.wj=function(e){return I(e,190)},s.xj=function(e){return F(yu,q,190,e,0,2)},w(Wt,"XMLTypePackageImpl/24",1875),b(1876,1,qe,E3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/25",1876),b(1877,1,qe,C3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/26",1877),b(1878,1,qe,T3n),s.wj=function(e){return I(e,15)},s.xj=function(e){return F(Ds,Ob,15,e,0,1)},w(Wt,"XMLTypePackageImpl/27",1878),b(1879,1,qe,M3n),s.wj=function(e){return I(e,15)},s.xj=function(e){return F(Ds,Ob,15,e,0,1)},w(Wt,"XMLTypePackageImpl/28",1879),b(1880,1,qe,A3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/29",1880),b(1854,1,qe,S3n),s.wj=function(e){return I(e,667)},s.xj=function(e){return F(sI,rn,2021,e,0,1)},w(Wt,"XMLTypePackageImpl/3",1854),b(1881,1,qe,P3n),s.wj=function(e){return I(e,19)},s.xj=function(e){return F(Wi,q,19,e,0,1)},w(Wt,"XMLTypePackageImpl/30",1881),b(1882,1,qe,I3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/31",1882),b(1883,1,qe,O3n),s.wj=function(e){return I(e,162)},s.xj=function(e){return F(a0,q,162,e,0,1)},w(Wt,"XMLTypePackageImpl/32",1883),b(1884,1,qe,D3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/33",1884),b(1885,1,qe,$3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/34",1885),b(1886,1,qe,F3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/35",1886),b(1887,1,qe,x3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/36",1887),b(1888,1,qe,L3n),s.wj=function(e){return I(e,15)},s.xj=function(e){return F(Ds,Ob,15,e,0,1)},w(Wt,"XMLTypePackageImpl/37",1888),b(1889,1,qe,N3n),s.wj=function(e){return I(e,15)},s.xj=function(e){return F(Ds,Ob,15,e,0,1)},w(Wt,"XMLTypePackageImpl/38",1889),b(1890,1,qe,B3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/39",1890),b(1855,1,qe,R3n),s.wj=function(e){return I(e,668)},s.xj=function(e){return F(By,rn,2022,e,0,1)},w(Wt,"XMLTypePackageImpl/4",1855),b(1891,1,qe,_3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/40",1891),b(1892,1,qe,K3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/41",1892),b(1893,1,qe,H3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/42",1893),b(1894,1,qe,q3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/43",1894),b(1895,1,qe,G3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/44",1895),b(1896,1,qe,z3n),s.wj=function(e){return I(e,184)},s.xj=function(e){return F(d0,q,184,e,0,1)},w(Wt,"XMLTypePackageImpl/45",1896),b(1897,1,qe,U3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/46",1897),b(1898,1,qe,W3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/47",1898),b(1899,1,qe,X3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/48",1899),b(Tl,1,qe,V3n),s.wj=function(e){return I(e,184)},s.xj=function(e){return F(d0,q,184,e,0,1)},w(Wt,"XMLTypePackageImpl/49",Tl),b(1856,1,qe,Q3n),s.wj=function(e){return I(e,669)},s.xj=function(e){return F(D1n,rn,2023,e,0,1)},w(Wt,"XMLTypePackageImpl/5",1856),b(1901,1,qe,J3n),s.wj=function(e){return I(e,162)},s.xj=function(e){return F(a0,q,162,e,0,1)},w(Wt,"XMLTypePackageImpl/50",1901),b(1902,1,qe,Y3n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/51",1902),b(1903,1,qe,Z3n),s.wj=function(e){return I(e,19)},s.xj=function(e){return F(Wi,q,19,e,0,1)},w(Wt,"XMLTypePackageImpl/52",1903),b(1857,1,qe,n4n),s.wj=function(e){return ki(e)},s.xj=function(e){return F(tn,q,2,e,6,1)},w(Wt,"XMLTypePackageImpl/6",1857),b(1858,1,qe,e4n),s.wj=function(e){return I(e,190)},s.xj=function(e){return F(yu,q,190,e,0,2)},w(Wt,"XMLTypePackageImpl/7",1858),b(1859,1,qe,t4n),s.wj=function(e){return q0(e)},s.xj=function(e){return F(oi,q,476,e,8,1)},w(Wt,"XMLTypePackageImpl/8",1859),b(1860,1,qe,i4n),s.wj=function(e){return I(e,217)},s.xj=function(e){return F(op,q,217,e,0,1)},w(Wt,"XMLTypePackageImpl/9",1860);var Mf,R1,v9,oI,P;b(50,60,Uh,Ee),w(A1,"RegEx/ParseException",50),b(820,1,{},ZH),s.sl=function(e){return ei*16)throw T(new Ee(Pe((je(),Vqn))));i=i*16+c}while(!0);if(this.a!=125)throw T(new Ee(Pe((je(),Qqn))));if(i>q4)throw T(new Ee(Pe((je(),Jqn))));e=i}else{if(c=0,this.c!=0||(c=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(i=c,Qe(this),this.c!=0||(c=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));i=i*16+c,e=i}break;case 117:if(r=0,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));t=t*16+r,e=t;break;case 118:if(Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,Qe(this),this.c!=0||(r=Sa(this.a))<0)throw T(new Ee(Pe((je(),M1))));if(t=t*16+r,t>q4)throw T(new Ee(Pe((je(),"parser.descappe.4"))));e=t;break;case 65:case 90:case 122:throw T(new Ee(Pe((je(),Yqn))))}return e},s.ul=function(e){var t,i;switch(e){case 100:i=(this.e&32)==32?El("Nd",!0):(Je(),fI);break;case 68:i=(this.e&32)==32?El("Nd",!1):(Je(),K1n);break;case 119:i=(this.e&32)==32?El("IsWord",!0):(Je(),Iv);break;case 87:i=(this.e&32)==32?El("IsWord",!1):(Je(),q1n);break;case 115:i=(this.e&32)==32?El("IsSpace",!0):(Je(),$p);break;case 83:i=(this.e&32)==32?El("IsSpace",!1):(Je(),H1n);break;default:throw T(new _r((t=e,YGn+t.toString(16))))}return i},s.vl=function(e){var t,i,r,c,o,f,h,l,a,d,g,p;for(this.b=1,Qe(this),t=null,this.c==0&&this.a==94?(Qe(this),e?d=(Je(),Je(),new es(5)):(t=(Je(),Je(),new es(4)),yc(t,0,q4),d=new es(4))):d=(Je(),Je(),new es(4)),c=!0;(p=this.c)!=1&&!(p==0&&this.a==93&&!c);){if(c=!1,i=this.a,r=!1,p==10)switch(i){case 100:case 68:case 119:case 87:case 115:case 83:Ab(d,this.ul(i)),r=!0;break;case 105:case 73:case 99:case 67:i=this.Ll(d,i),i<0&&(r=!0);break;case 112:case 80:if(g=mY(this,i),!g)throw T(new Ee(Pe((je(),KB))));Ab(d,g),r=!0;break;default:i=this.tl()}else if(p==20){if(f=u3(this.i,58,this.d),f<0)throw T(new Ee(Pe((je(),qtn))));if(h=!0,Di(this.i,this.d)==94&&(++this.d,h=!1),o=Zu(this.i,this.d,f),l=hPn(o,h,(this.e&512)==512),!l)throw T(new Ee(Pe((je(),Gqn))));if(Ab(d,l),r=!0,f+1>=this.j||Di(this.i,f+1)!=93)throw T(new Ee(Pe((je(),qtn))));this.d=f+2}if(Qe(this),!r)if(this.c!=0||this.a!=45)yc(d,i,i);else{if(Qe(this),(p=this.c)==1)throw T(new Ee(Pe((je(),jA))));p==0&&this.a==93?(yc(d,i,i),yc(d,45,45)):(a=this.a,p==10&&(a=this.tl()),Qe(this),yc(d,i,a))}(this.e&Eo)==Eo&&this.c==0&&this.a==44&&Qe(this)}if(this.c==1)throw T(new Ee(Pe((je(),jA))));return t&&(F6(t,d),d=t),Jw(d),D6(d),this.b=0,Qe(this),d},s.wl=function(){var e,t,i,r;for(i=this.vl(!1);(r=this.c)!=7;)if(e=this.a,r==0&&(e==45||e==38)||r==4){if(Qe(this),this.c!=9)throw T(new Ee(Pe((je(),Uqn))));if(t=this.vl(!1),r==4)Ab(i,t);else if(e==45)F6(i,t);else if(e==38)zRn(i,t);else throw T(new _r("ASSERT"))}else throw T(new Ee(Pe((je(),Wqn))));return Qe(this),i},s.xl=function(){var e,t;return e=this.a-48,t=(Je(),Je(),new e$(12,null,e)),!this.g&&(this.g=new lj),hj(this.g,new Nq(e)),Qe(this),t},s.yl=function(){return Qe(this),Je(),Iee},s.zl=function(){return Qe(this),Je(),Pee},s.Al=function(){throw T(new Ee(Pe((je(),Os))))},s.Bl=function(){throw T(new Ee(Pe((je(),Os))))},s.Cl=function(){return Qe(this),xwe()},s.Dl=function(){return Qe(this),Je(),Dee},s.El=function(){return Qe(this),Je(),Fee},s.Fl=function(){var e;if(this.d>=this.j||((e=Di(this.i,this.d++))&65504)!=64)throw T(new Ee(Pe((je(),Kqn))));return Qe(this),Je(),Je(),new ih(0,e-64)},s.Gl=function(){return Qe(this),vye()},s.Hl=function(){return Qe(this),Je(),xee},s.Il=function(){var e;return e=(Je(),Je(),new ih(0,105)),Qe(this),e},s.Jl=function(){return Qe(this),Je(),$ee},s.Kl=function(){return Qe(this),Je(),Oee},s.Ll=function(e,t){return this.tl()},s.Ml=function(){return Qe(this),Je(),R1n},s.Nl=function(){var e,t,i,r,c;if(this.d+1>=this.j)throw T(new Ee(Pe((je(),Bqn))));if(r=-1,t=null,e=Di(this.i,this.d),49<=e&&e<=57){if(r=e-48,!this.g&&(this.g=new lj),hj(this.g,new Nq(r)),++this.d,Di(this.i,this.d)!=41)throw T(new Ee(Pe((je(),_a))));++this.d}else switch(e==63&&--this.d,Qe(this),t=HZ(this),t.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw T(new Ee(Pe((je(),_a))));break;default:throw T(new Ee(Pe((je(),Rqn))))}if(Qe(this),c=Wd(this),i=null,c.e==2){if(c.em()!=2)throw T(new Ee(Pe((je(),_qn))));i=c.am(1),c=c.am(0)}if(this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),Je(),Je(),new HPn(r,t,c,i)},s.Ol=function(){return Qe(this),Je(),_1n},s.Pl=function(){var e;if(Qe(this),e=UE(24,Wd(this)),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Ql=function(){var e;if(Qe(this),e=UE(20,Wd(this)),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Rl=function(){var e;if(Qe(this),e=UE(22,Wd(this)),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Sl=function(){var e,t,i,r,c;for(e=0,i=0,t=-1;this.d=this.j)throw T(new Ee(Pe((je(),Ktn))));if(t==45){for(++this.d;this.d=this.j)throw T(new Ee(Pe((je(),Ktn))))}if(t==58){if(++this.d,Qe(this),r=WCn(Wd(this),e,i),this.c!=7)throw T(new Ee(Pe((je(),_a))));Qe(this)}else if(t==41)++this.d,Qe(this),r=WCn(Wd(this),e,i);else throw T(new Ee(Pe((je(),Nqn))));return r},s.Tl=function(){var e;if(Qe(this),e=UE(21,Wd(this)),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Ul=function(){var e;if(Qe(this),e=UE(23,Wd(this)),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Vl=function(){var e,t;if(Qe(this),e=this.f++,t=SD(Wd(this),e),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),t},s.Wl=function(){var e;if(Qe(this),e=SD(Wd(this),0),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Xl=function(e){return Qe(this),this.c==5?(Qe(this),LE(e,(Je(),Je(),new ib(9,e)))):LE(e,(Je(),Je(),new ib(3,e)))},s.Yl=function(e){var t;return Qe(this),t=(Je(),Je(),new v5(2)),this.c==5?(Qe(this),Oa(t,k9),Oa(t,e)):(Oa(t,e),Oa(t,k9)),t},s.Zl=function(e){return Qe(this),this.c==5?(Qe(this),Je(),Je(),new ib(9,e)):(Je(),Je(),new ib(3,e))},s.a=0,s.b=0,s.c=0,s.d=0,s.e=0,s.f=1,s.g=null,s.j=0,w(A1,"RegEx/RegexParser",820),b(1824,820,{},T9n),s.sl=function(e){return!1},s.tl=function(){return ZY(this)},s.ul=function(e){return v4(e)},s.vl=function(e){return N_n(this)},s.wl=function(){throw T(new Ee(Pe((je(),Os))))},s.xl=function(){throw T(new Ee(Pe((je(),Os))))},s.yl=function(){throw T(new Ee(Pe((je(),Os))))},s.zl=function(){throw T(new Ee(Pe((je(),Os))))},s.Al=function(){return Qe(this),v4(67)},s.Bl=function(){return Qe(this),v4(73)},s.Cl=function(){throw T(new Ee(Pe((je(),Os))))},s.Dl=function(){throw T(new Ee(Pe((je(),Os))))},s.El=function(){throw T(new Ee(Pe((je(),Os))))},s.Fl=function(){return Qe(this),v4(99)},s.Gl=function(){throw T(new Ee(Pe((je(),Os))))},s.Hl=function(){throw T(new Ee(Pe((je(),Os))))},s.Il=function(){return Qe(this),v4(105)},s.Jl=function(){throw T(new Ee(Pe((je(),Os))))},s.Kl=function(){throw T(new Ee(Pe((je(),Os))))},s.Ll=function(e,t){return Ab(e,v4(t)),-1},s.Ml=function(){return Qe(this),Je(),Je(),new ih(0,94)},s.Nl=function(){throw T(new Ee(Pe((je(),Os))))},s.Ol=function(){return Qe(this),Je(),Je(),new ih(0,36)},s.Pl=function(){throw T(new Ee(Pe((je(),Os))))},s.Ql=function(){throw T(new Ee(Pe((je(),Os))))},s.Rl=function(){throw T(new Ee(Pe((je(),Os))))},s.Sl=function(){throw T(new Ee(Pe((je(),Os))))},s.Tl=function(){throw T(new Ee(Pe((je(),Os))))},s.Ul=function(){throw T(new Ee(Pe((je(),Os))))},s.Vl=function(){var e;if(Qe(this),e=SD(Wd(this),0),this.c!=7)throw T(new Ee(Pe((je(),_a))));return Qe(this),e},s.Wl=function(){throw T(new Ee(Pe((je(),Os))))},s.Xl=function(e){return Qe(this),LE(e,(Je(),Je(),new ib(3,e)))},s.Yl=function(e){var t;return Qe(this),t=(Je(),Je(),new v5(2)),Oa(t,e),Oa(t,k9),t},s.Zl=function(e){return Qe(this),Je(),Je(),new ib(3,e)};var Ug=null,Sv=null;w(A1,"RegEx/ParserForXMLSchema",1824),b(117,1,G4,cd),s.$l=function(e){throw T(new _r("Not supported."))},s._l=function(){return-1},s.am=function(e){return null},s.bm=function(){return null},s.cm=function(e){},s.dm=function(e){},s.em=function(){return 0},s.Ib=function(){return this.fm(0)},s.fm=function(e){return this.e==11?".":""},s.e=0;var L1n,Pv,m9,See,N1n,aw=null,fI,jH=null,B1n,k9,EH=null,R1n,_1n,K1n,H1n,q1n,Pee,$p,Iee,Oee,Dee,$ee,Iv,Fee,xee,aMe=w(A1,"RegEx/Token",117);b(136,117,{3:1,136:1,117:1},es),s.fm=function(e){var t,i,r;if(this.e==4)if(this==B1n)i=".";else if(this==fI)i="\\d";else if(this==Iv)i="\\w";else if(this==$p)i="\\s";else{for(r=new i1,r.a+="[",t=0;t0&&(r.a+=","),this.b[t]===this.b[t+1]?dr(r,U7(this.b[t])):(dr(r,U7(this.b[t])),r.a+="-",dr(r,U7(this.b[t+1])));r.a+="]",i=r.a}else if(this==K1n)i="\\D";else if(this==q1n)i="\\W";else if(this==H1n)i="\\S";else{for(r=new i1,r.a+="[^",t=0;t0&&(r.a+=","),this.b[t]===this.b[t+1]?dr(r,U7(this.b[t])):(dr(r,U7(this.b[t])),r.a+="-",dr(r,U7(this.b[t+1])));r.a+="]",i=r.a}return i},s.a=!1,s.c=!1,w(A1,"RegEx/RangeToken",136),b(584,1,{584:1},Nq),s.a=0,w(A1,"RegEx/RegexParser/ReferencePosition",584),b(583,1,{3:1,583:1},L8n),s.Fb=function(e){var t;return e==null||!I(e,583)?!1:(t=u(e,583),Mn(this.b,t.b)&&this.a==t.a)},s.Hb=function(){return m1(this.b+"/"+WY(this.a))},s.Ib=function(){return this.c.fm(this.a)},s.a=0,w(A1,"RegEx/RegularExpression",583),b(223,117,G4,ih),s._l=function(){return this.a},s.fm=function(e){var t,i,r;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:r="\\"+eD(this.a&Ut);break;case 12:r="\\f";break;case 10:r="\\n";break;case 13:r="\\r";break;case 9:r="\\t";break;case 27:r="\\e";break;default:this.a>=Yi?(i=(t=this.a>>>0,"0"+t.toString(16)),r="\\v"+Zu(i,i.length-6,i.length)):r=""+eD(this.a&Ut)}break;case 8:this==R1n||this==_1n?r=""+eD(this.a&Ut):r="\\"+eD(this.a&Ut);break;default:r=null}return r},s.a=0,w(A1,"RegEx/Token/CharToken",223),b(309,117,G4,ib),s.am=function(e){return this.a},s.cm=function(e){this.b=e},s.dm=function(e){this.c=e},s.em=function(){return 1},s.fm=function(e){var t;if(this.e==3)if(this.c<0&&this.b<0)t=this.a.fm(e)+"*";else if(this.c==this.b)t=this.a.fm(e)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)t=this.a.fm(e)+"{"+this.c+","+this.b+"}";else if(this.c>=0&&this.b<0)t=this.a.fm(e)+"{"+this.c+",}";else throw T(new _r("Token#toString(): CLOSURE "+this.c+Ji+this.b));else if(this.c<0&&this.b<0)t=this.a.fm(e)+"*?";else if(this.c==this.b)t=this.a.fm(e)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)t=this.a.fm(e)+"{"+this.c+","+this.b+"}?";else if(this.c>=0&&this.b<0)t=this.a.fm(e)+"{"+this.c+",}?";else throw T(new _r("Token#toString(): NONGREEDYCLOSURE "+this.c+Ji+this.b));return t},s.b=0,s.c=0,w(A1,"RegEx/Token/ClosureToken",309),b(821,117,G4,PW),s.am=function(e){return e==0?this.a:this.b},s.em=function(){return 2},s.fm=function(e){var t;return this.b.e==3&&this.b.am(0)==this.a?t=this.a.fm(e)+"+":this.b.e==9&&this.b.am(0)==this.a?t=this.a.fm(e)+"+?":t=this.a.fm(e)+(""+this.b.fm(e)),t},w(A1,"RegEx/Token/ConcatToken",821),b(1822,117,G4,HPn),s.am=function(e){if(e==0)return this.d;if(e==1)return this.b;throw T(new _r("Internal Error: "+e))},s.em=function(){return this.b?2:1},s.fm=function(e){var t;return this.c>0?t="(?("+this.c+")":this.a.e==8?t="(?("+this.a+")":t="(?"+this.a,this.b?t+=this.d+"|"+this.b+")":t+=this.d+")",t},s.c=0,w(A1,"RegEx/Token/ConditionToken",1822),b(1823,117,G4,HMn),s.am=function(e){return this.b},s.em=function(){return 1},s.fm=function(e){return"(?"+(this.a==0?"":WY(this.a))+(this.c==0?"":WY(this.c))+":"+this.b.fm(e)+")"},s.a=0,s.c=0,w(A1,"RegEx/Token/ModifierToken",1823),b(822,117,G4,xW),s.am=function(e){return this.a},s.em=function(){return 1},s.fm=function(e){var t;switch(t=null,this.e){case 6:this.b==0?t="(?:"+this.a.fm(e)+")":t="("+this.a.fm(e)+")";break;case 20:t="(?="+this.a.fm(e)+")";break;case 21:t="(?!"+this.a.fm(e)+")";break;case 22:t="(?<="+this.a.fm(e)+")";break;case 23:t="(?"+this.a.fm(e)+")"}return t},s.b=0,w(A1,"RegEx/Token/ParenToken",822),b(521,117,{3:1,117:1,521:1},e$),s.bm=function(){return this.b},s.fm=function(e){return this.e==12?"\\"+this.a:Mme(this.b)},s.a=0,w(A1,"RegEx/Token/StringToken",521),b(465,117,G4,v5),s.$l=function(e){Oa(this,e)},s.am=function(e){return u(Md(this.a,e),117)},s.em=function(){return this.a?this.a.a.c.length:0},s.fm=function(e){var t,i,r,c,o;if(this.e==1){if(this.a.a.c.length==2)t=u(Md(this.a,0),117),i=u(Md(this.a,1),117),i.e==3&&i.am(0)==t?c=t.fm(e)+"+":i.e==9&&i.am(0)==t?c=t.fm(e)+"+?":c=t.fm(e)+(""+i.fm(e));else{for(o=new i1,r=0;r=this.c.b:this.a<=this.c.b},s.Sb=function(){return this.b>0},s.Tb=function(){return this.b},s.Vb=function(){return this.b-1},s.Qb=function(){throw T(new t1(czn))},s.a=0,s.b=0,w(oin,"ExclusiveRange/RangeIterator",254);var Ls=g3(EA,"C"),be=g3(om,"I"),Ku=g3(X2,"Z"),Yl=g3(fm,"J"),yu=g3(cm,"B"),Ei=g3(um,"D"),dw=g3(sm,"F"),Wg=g3(hm,"S"),dMe=Ct("org.eclipse.elk.core.labels","ILabelManager"),G1n=Ct(Ui,"DiagnosticChain"),z1n=Ct($Gn,"ResourceSet"),U1n=w(Ui,"InvocationTargetException",null),Nee=(gj(),rde),Bee=Bee=W4e;Z0e(Ute),Tbe("permProps",[[[LA,NA],[BA,"gecko1_8"]],[[LA,NA],[BA,"ie10"]],[[LA,NA],[BA,"ie8"]],[[LA,NA],[BA,"ie9"]],[[LA,NA],[BA,"safari"]]]),Bee(null,"elk",null)}).call(this)}).call(this,typeof Hee<"u"?Hee:typeof self<"u"?self:typeof window<"u"?window:{})},{}],3:[function(ft,dt,Vt){function Et(qt,Ge){if(!(qt instanceof Ge))throw new TypeError("Cannot call a class as a function")}function y(qt,Ge){if(!qt)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return Ge&&(typeof Ge=="object"||typeof Ge=="function")?Ge:qt}function Ht(qt,Ge){if(typeof Ge!="function"&&Ge!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof Ge);qt.prototype=Object.create(Ge&&Ge.prototype,{constructor:{value:qt,enumerable:!1,writable:!0,configurable:!0}}),Ge&&(Object.setPrototypeOf?Object.setPrototypeOf(qt,Ge):qt.__proto__=Ge)}var Lc=ft("./elk-api.js").default,Bt=function(qt){Ht(Ge,qt);function Ge(){var Ki=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Et(this,Ge);var Ii=Object.assign({},Ki),An=!1;try{ft.resolve("web-worker"),An=!0}catch{}if(Ki.workerUrl)if(An){var Uc=ft("web-worker");Ii.workerFactory=function(vr){return new Uc(vr)}}else console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`);if(!Ii.workerFactory){var Nc=ft("./elk-worker.min.js"),ju=Nc.Worker;Ii.workerFactory=function(vr){return new ju(vr)}}return y(this,(Ge.__proto__||Object.getPrototypeOf(Ge)).call(this,Ii))}return Ge}(Lc);Object.defineProperty(dt.exports,"__esModule",{value:!0}),dt.exports=Bt,Bt.default=Bt},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(ft,dt,Vt){dt.exports=Worker},{}]},{},[3])(3)})})(Uee);var TMe=Uee.exports;const MMe=gMe(TMe),AMe=(Ae,At,ft)=>{const{parentById:dt}=ft,Vt=new Set;let Et=Ae;for(;Et;){if(Vt.add(Et),Et===At)return Et;Et=dt[Et]}for(Et=At;Et;){if(Vt.has(Et))return Et;Et=dt[Et]}return"root"},qee=new MMe;let x0={};const SMe={};let Lp={};const PMe=async function(Ae,At,ft,dt,Vt,Et,y){const Lc=ft.select(`[id="${At}"]`).insert("g").attr("class","nodes"),Bt=Object.keys(Ae);return await Promise.all(Bt.map(async function(qt){const Ge=Ae[qt];let Ki="default";Ge.classes.length>0&&(Ki=Ge.classes.join(" ")),Ki=Ki+" flowchart-label";const Ii=V1n(Ge.styles);let An=Ge.text!==void 0?Ge.text:Ge.id;const Uc={width:0,height:0},Nc=[{id:Ge.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:Ge.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:Ge.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:Ge.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let ju=0,vr="",Jo={};switch(Ge.type){case"round":ju=5,vr="rect";break;case"square":vr="rect";break;case"diamond":vr="question",Jo={portConstraints:"FIXED_SIDE"};break;case"hexagon":vr="hexagon";break;case"odd":vr="rect_left_inv_arrow";break;case"lean_right":vr="lean_right";break;case"lean_left":vr="lean_left";break;case"trapezoid":vr="trapezoid";break;case"inv_trapezoid":vr="inv_trapezoid";break;case"odd_right":vr="rect_left_inv_arrow";break;case"circle":vr="circle";break;case"ellipse":vr="ellipse";break;case"stadium":vr="stadium";break;case"subroutine":vr="subroutine";break;case"cylinder":vr="cylinder";break;case"group":vr="rect";break;case"doublecircle":vr="doublecircle";break;default:vr="rect"}const H1={labelStyle:Ii.labelStyle,shape:vr,labelText:An,labelType:Ge.labelType,rx:ju,ry:ju,class:Ki,style:Ii.style,id:Ge.id,link:Ge.link,linkTarget:Ge.linkTarget,tooltip:Vt.db.getTooltip(Ge.id)||"",domId:Vt.db.lookUpDomId(Ge.id),haveCallback:Ge.haveCallback,width:Ge.type==="group"?500:void 0,dir:Ge.dir,type:Ge.type,props:Ge.props,padding:OH().flowchart.padding};let q1,ww;if(H1.type!=="group")ww=await kMe(Lc,H1,Ge.dir),q1=ww.node().getBBox();else{dt.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:G1,bbox:Th}=await yMe(Lc,H1,void 0,!0);Uc.width=Th.width,Uc.wrappingWidth=OH().flowchart.wrappingWidth,Uc.height=Th.height,Uc.labelNode=G1.node(),H1.labelData=Uc}const Np={id:Ge.id,ports:Ge.type==="diamond"?Nc:[],layoutOptions:Jo,labelText:An,labelData:Uc,domId:Vt.db.lookUpDomId(Ge.id),width:q1==null?void 0:q1.width,height:q1==null?void 0:q1.height,type:Ge.type,el:ww,parent:Et.parentById[Ge.id]};Lp[H1.id]=Np})),y},Gee=(Ae,At,ft)=>{const dt={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return dt.TD=dt.TB,K1.info("abc88",ft,At,Ae),dt[ft][At][Ae]},zee=(Ae,At,ft)=>{if(K1.info("getNextPort abc88",{node:Ae,edgeDirection:At,graphDirection:ft}),!x0[Ae])switch(ft){case"TB":case"TD":x0[Ae]={inPosition:"north",outPosition:"south"};break;case"BT":x0[Ae]={inPosition:"south",outPosition:"north"};break;case"RL":x0[Ae]={inPosition:"east",outPosition:"west"};break;case"LR":x0[Ae]={inPosition:"west",outPosition:"east"};break}const dt=At==="in"?x0[Ae].inPosition:x0[Ae].outPosition;return At==="in"?x0[Ae].inPosition=Gee(x0[Ae].inPosition,At,ft):x0[Ae].outPosition=Gee(x0[Ae].outPosition,At,ft),dt},IMe=(Ae,At)=>{let ft=Ae.start,dt=Ae.end;const Vt=ft,Et=dt,y=Lp[ft],Ht=Lp[dt];return!y||!Ht?{source:ft,target:dt}:(y.type==="diamond"&&(ft=`${ft}-${zee(ft,"out",At)}`),Ht.type==="diamond"&&(dt=`${dt}-${zee(dt,"in",At)}`),{source:ft,target:dt,sourceId:Vt,targetId:Et})},OMe=function(Ae,At,ft,dt){K1.info("abc78 edges = ",Ae);const Vt=dt.insert("g").attr("class","edgeLabels");let Et={},y=At.db.getDirection(),Ht,Lc;if(Ae.defaultStyle!==void 0){const Bt=V1n(Ae.defaultStyle);Ht=Bt.style,Lc=Bt.labelStyle}return Ae.forEach(function(Bt){const qt="L-"+Bt.start+"-"+Bt.end;Et[qt]===void 0?(Et[qt]=0,K1.info("abc78 new entry",qt,Et[qt])):(Et[qt]++,K1.info("abc78 new entry",qt,Et[qt]));let Ge=qt+"-"+Et[qt];K1.info("abc78 new link id to be used is",qt,Ge,Et[qt]);const Ki="LS-"+Bt.start,Ii="LE-"+Bt.end,An={style:"",labelStyle:""};switch(An.minlen=Bt.length||1,Bt.type==="arrow_open"?An.arrowhead="none":An.arrowhead="normal",An.arrowTypeStart="arrow_open",An.arrowTypeEnd="arrow_open",Bt.type){case"double_arrow_cross":An.arrowTypeStart="arrow_cross";case"arrow_cross":An.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":An.arrowTypeStart="arrow_point";case"arrow_point":An.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":An.arrowTypeStart="arrow_circle";case"arrow_circle":An.arrowTypeEnd="arrow_circle";break}let Uc="",Nc="";switch(Bt.stroke){case"normal":Uc="fill:none;",Ht!==void 0&&(Uc=Ht),Lc!==void 0&&(Nc=Lc),An.thickness="normal",An.pattern="solid";break;case"dotted":An.thickness="normal",An.pattern="dotted",An.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":An.thickness="thick",An.pattern="solid",An.style="stroke-width: 3.5px;fill:none;";break}if(Bt.style!==void 0){const ww=V1n(Bt.style);Uc=ww.style,Nc=ww.labelStyle}An.style=An.style+=Uc,An.labelStyle=An.labelStyle+=Nc,Bt.interpolate!==void 0?An.curve=X1n(Bt.interpolate,IH):Ae.defaultInterpolate!==void 0?An.curve=X1n(Ae.defaultInterpolate,IH):An.curve=X1n(SMe.curve,IH),Bt.text===void 0?Bt.style!==void 0&&(An.arrowheadStyle="fill: #333"):(An.arrowheadStyle="fill: #333",An.labelpos="c"),An.labelType=Bt.labelType,An.label=Bt.text.replace(vMe.lineBreakRegex,` +`),Bt.style===void 0&&(An.style=An.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),An.labelStyle=An.labelStyle.replace("color:","fill:"),An.id=Ge,An.classes="flowchart-link "+Ki+" "+Ii;const ju=jMe(Vt,An),{source:vr,target:Jo,sourceId:H1,targetId:q1}=IMe(Bt,y);K1.debug("abc78 source and target",vr,Jo),ft.edges.push({id:"e"+Bt.start+Bt.end,sources:[vr],targets:[Jo],sourceId:H1,targetId:q1,labelEl:ju,labels:[{width:An.width,height:An.height,orgWidth:An.width,orgHeight:An.height,text:An.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:An})}),ft},DMe=function(Ae,At,ft,dt,Vt){let Et="";switch(dt&&(Et=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Et=Et.replace(/\(/g,"\\("),Et=Et.replace(/\)/g,"\\)")),At.arrowTypeStart){case"arrow_cross":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-crossStart)");break;case"arrow_point":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-pointStart)");break;case"arrow_barb":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-barbStart)");break;case"arrow_circle":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-circleStart)");break;case"aggregation":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-aggregationStart)");break;case"extension":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-extensionStart)");break;case"composition":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-compositionStart)");break;case"dependency":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-dependencyStart)");break;case"lollipop":Ae.attr("marker-start","url("+Et+"#"+Vt+"_"+ft+"-lollipopStart)");break}switch(At.arrowTypeEnd){case"arrow_cross":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-crossEnd)");break;case"arrow_point":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-pointEnd)");break;case"arrow_barb":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-barbEnd)");break;case"arrow_circle":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-circleEnd)");break;case"aggregation":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-aggregationEnd)");break;case"extension":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-extensionEnd)");break;case"composition":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-compositionEnd)");break;case"dependency":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-dependencyEnd)");break;case"lollipop":Ae.attr("marker-end","url("+Et+"#"+Vt+"_"+ft+"-lollipopEnd)");break}},$Me=function(Ae,At){return K1.info("Extracting classes"),At.db.getClasses()},FMe=function(Ae){const At={parentById:{},childrenById:{}},ft=Ae.getSubGraphs();return K1.info("Subgraphs - ",ft),ft.forEach(function(dt){dt.nodes.forEach(function(Vt){At.parentById[Vt]=dt.id,At.childrenById[dt.id]===void 0&&(At.childrenById[dt.id]=[]),At.childrenById[dt.id].push(Vt)})}),ft.forEach(function(dt){dt.id,At.parentById[dt.id]!==void 0&&At.parentById[dt.id]}),At},xMe=function(Ae,At,ft){const dt=AMe(Ae,At,ft);if(dt===void 0||dt==="root")return{x:0,y:0};const Vt=Lp[dt].offset;return{x:Vt.posX,y:Vt.posY}},LMe=function(Ae,At,ft,dt,Vt,Et){const y=xMe(At.sourceId,At.targetId,Vt),Ht=At.sections[0].startPoint,Lc=At.sections[0].endPoint,qt=(At.sections[0].bendPoints?At.sections[0].bendPoints:[]).map(Jo=>[Jo.x+y.x,Jo.y+y.y]),Ge=[[Ht.x+y.x,Ht.y+y.y],...qt,[Lc.x+y.x,Lc.y+y.y]],{x:Ki,y:Ii}=EMe(At.edgeData),An=CMe().x(Ki).y(Ii).curve(IH),Uc=Ae.insert("path").attr("d",An(Ge)).attr("class","path "+ft.classes).attr("fill","none"),Nc=Ae.insert("g").attr("class","edgeLabel"),ju=lI(Nc.node().appendChild(At.labelEl)),vr=ju.node().firstChild.getBoundingClientRect();ju.attr("width",vr.width),ju.attr("height",vr.height),Nc.attr("transform",`translate(${At.labels[0].x+y.x}, ${At.labels[0].y+y.y})`),DMe(Uc,ft,dt.type,dt.arrowMarkerAbsolute,Et)},Wee=(Ae,At)=>{Ae.forEach(ft=>{ft.children||(ft.children=[]);const dt=At.childrenById[ft.id];dt&&dt.forEach(Vt=>{ft.children.push(Lp[Vt])}),Wee(ft.children,At)})},NMe=async function(Ae,At,ft,dt){var Vt;dt.db.clear(),Lp={},x0={},dt.db.setGen("gen-2"),dt.parser.parse(Ae);const Et=lI("body").append("div").attr("style","height:400px").attr("id","cy");let y={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(K1.info("Drawing flowchart using v3 renderer",qee),dt.db.getDirection()){case"BT":y.layoutOptions["elk.direction"]="UP";break;case"TB":y.layoutOptions["elk.direction"]="DOWN";break;case"LR":y.layoutOptions["elk.direction"]="RIGHT";break;case"RL":y.layoutOptions["elk.direction"]="LEFT";break}const{securityLevel:Lc,flowchart:Bt}=OH();let qt;Lc==="sandbox"&&(qt=lI("#i"+At));const Ge=Lc==="sandbox"?lI(qt.nodes()[0].contentDocument.body):lI("body"),Ki=Lc==="sandbox"?qt.nodes()[0].contentDocument:document,Ii=Ge.select(`[id="${At}"]`);mMe(Ii,["point","circle","cross"],dt.type,At);const Uc=dt.db.getVertices();let Nc;const ju=dt.db.getSubGraphs();K1.info("Subgraphs - ",ju);for(let G1=ju.length-1;G1>=0;G1--)Nc=ju[G1],dt.db.addVertex(Nc.id,{text:Nc.title,type:Nc.labelType},"group",void 0,Nc.classes,Nc.dir);const vr=Ii.insert("g").attr("class","subgraphs"),Jo=FMe(dt.db);y=await PMe(Uc,At,Ge,Ki,dt,Jo,y);const H1=Ii.insert("g").attr("class","edges edgePath"),q1=dt.db.getEdges();y=OMe(q1,dt,y,Ii),Object.keys(Lp).forEach(G1=>{const Th=Lp[G1];Th.parent||y.children.push(Th),Jo.childrenById[G1]!==void 0&&(Th.labels=[{text:Th.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:Th.labelData.width,height:Th.labelData.height}],delete Th.x,delete Th.y,delete Th.width,delete Th.height)}),Wee(y.children,Jo),K1.info("after layout",JSON.stringify(y,null,2));const Np=await qee.layout(y);Xee(0,0,Np.children,Ii,vr,dt,0),K1.info("after layout",Np),(Vt=Np.edges)==null||Vt.map(G1=>{LMe(H1,G1,G1.edgeData,dt,Jo,At)}),pMe({},Ii,Bt.diagramPadding,Bt.useMaxWidth),Et.remove()},Xee=(Ae,At,ft,dt,Vt,Et,y)=>{ft.forEach(function(Ht){if(Ht)if(Lp[Ht.id].offset={posX:Ht.x+Ae,posY:Ht.y+At,x:Ae,y:At,depth:y,width:Ht.width,height:Ht.height},Ht.type==="group"){const Lc=Vt.insert("g").attr("class","subgraph");Lc.insert("rect").attr("class","subgraph subgraph-lvl-"+y%5+" node").attr("x",Ht.x+Ae).attr("y",Ht.y+At).attr("width",Ht.width).attr("height",Ht.height);const Bt=Lc.insert("g").attr("class","label"),qt=OH().flowchart.htmlLabels?Ht.labelData.width/2:0;Bt.attr("transform",`translate(${Ht.labels[0].x+Ae+Ht.x+qt}, ${Ht.labels[0].y+At+Ht.y+3})`),Bt.node().appendChild(Ht.labelData.labelNode),K1.info("Id (UGH)= ",Ht.type,Ht.labels)}else K1.info("Id (UGH)= ",Ht.id),Ht.el.attr("transform",`translate(${Ht.x+Ae+Ht.width/2}, ${Ht.y+At+Ht.height/2})`)}),ft.forEach(function(Ht){Ht&&Ht.type==="group"&&Xee(Ae+Ht.x,At+Ht.y,Ht.children,dt,Vt,Et,y+1)})},BMe={getClasses:$Me,draw:NMe},RMe=Ae=>{let At="";for(let ft=0;ft<5;ft++)At+=` + .subgraph-lvl-${ft} { + fill: ${Ae[`surface${ft}`]}; + stroke: ${Ae[`surfacePeer${ft}`]}; + } + `;return At},_Me=Ae=>`.label { + font-family: ${Ae.fontFamily}; + color: ${Ae.nodeTextColor||Ae.textColor}; + } + .cluster-label text { + fill: ${Ae.titleColor}; + } + .cluster-label span { + color: ${Ae.titleColor}; + } + + .label text,span { + fill: ${Ae.nodeTextColor||Ae.textColor}; + color: ${Ae.nodeTextColor||Ae.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${Ae.mainBkg}; + stroke: ${Ae.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${Ae.arrowheadColor}; + } + + .edgePath .path { + stroke: ${Ae.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${Ae.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${Ae.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${Ae.edgeLabelBackground}; + fill: ${Ae.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${Ae.clusterBkg}; + stroke: ${Ae.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${Ae.titleColor}; + } + + .cluster span { + color: ${Ae.titleColor}; + } + /* .cluster div { + color: ${Ae.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${Ae.fontFamily}; + font-size: 12px; + background: ${Ae.tertiaryColor}; + border: 1px solid ${Ae.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${Ae.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${RMe(Ae)} +`,KMe=_Me,QMe={db:bMe,renderer:BMe,parser:wMe,styles:KMe};export{QMe as diagram}; diff --git a/assets/ganttDiagram-db6931fb-mbEUIYH7.js b/assets/ganttDiagram-db6931fb-mbEUIYH7.js new file mode 100644 index 00000000..d5f53244 --- /dev/null +++ b/assets/ganttDiagram-db6931fb-mbEUIYH7.js @@ -0,0 +1,266 @@ +import{au as Be,av as Ze,aw as Xe,ax as qe,ay as Dn,az as Kt,aA as Mn,aB as ye,aC as ke,aD as nt,c as xt,s as Sn,g as _n,v as Un,x as Yn,b as Fn,a as Ln,z as En,m as An,l as qt,h as Pt,i as In,j as Wn,y as On}from"./mermaid.core-Up0YySao.js";import{b as zn,t as Ue,c as Hn,a as Nn,l as Vn}from"./linear-sLp5W0Cq.js";import{i as Pn}from"./init-Hi12RPRh.js";import"./app-Mf7X6hWu.js";function Rn(t,e){let n;if(e===void 0)for(const r of t)r!=null&&(n=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n=i)&&(n=i)}return n}function Bn(t,e){let n;if(e===void 0)for(const r of t)r!=null&&(n>r||n===void 0&&r>=r)&&(n=r);else{let r=-1;for(let i of t)(i=e(i,++r,t))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function Zn(t){return t}var Bt=1,te=2,ue=3,Rt=4,Ye=1e-6;function Xn(t){return"translate("+t+",0)"}function qn(t){return"translate(0,"+t+")"}function Gn(t){return e=>+t(e)}function jn(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function Qn(){return!this.__axis}function Ge(t,e){var n=[],r=null,i=null,s=6,a=6,y=3,_=typeof window<"u"&&window.devicePixelRatio>1?0:.5,k=t===Bt||t===Rt?-1:1,C=t===Rt||t===te?"x":"y",F=t===Bt||t===ue?Xn:qn;function w(x){var q=r??(e.ticks?e.ticks.apply(e,n):e.domain()),g=i??(e.tickFormat?e.tickFormat.apply(e,n):Zn),L=Math.max(s,0)+y,O=e.range(),W=+O[0]+_,B=+O[O.length-1]+_,Z=(e.bandwidth?jn:Gn)(e.copy(),_),Q=x.selection?x.selection():x,v=Q.selectAll(".domain").data([null]),A=Q.selectAll(".tick").data(q,e).order(),T=A.exit(),Y=A.enter().append("g").attr("class","tick"),D=A.select("line"),b=A.select("text");v=v.merge(v.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),A=A.merge(Y),D=D.merge(Y.append("line").attr("stroke","currentColor").attr(C+"2",k*s)),b=b.merge(Y.append("text").attr("fill","currentColor").attr(C,k*L).attr("dy",t===Bt?"0em":t===ue?"0.71em":"0.32em")),x!==Q&&(v=v.transition(x),A=A.transition(x),D=D.transition(x),b=b.transition(x),T=T.transition(x).attr("opacity",Ye).attr("transform",function(o){return isFinite(o=Z(o))?F(o+_):this.getAttribute("transform")}),Y.attr("opacity",Ye).attr("transform",function(o){var d=this.parentNode.__axis;return F((d&&isFinite(d=d(o))?d:Z(o))+_)})),T.remove(),v.attr("d",t===Rt||t===te?a?"M"+k*a+","+W+"H"+_+"V"+B+"H"+k*a:"M"+_+","+W+"V"+B:a?"M"+W+","+k*a+"V"+_+"H"+B+"V"+k*a:"M"+W+","+_+"H"+B),A.attr("opacity",1).attr("transform",function(o){return F(Z(o)+_)}),D.attr(C+"2",k*s),b.attr(C,k*L).text(g),Q.filter(Qn).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===te?"start":t===Rt?"end":"middle"),Q.each(function(){this.__axis=Z})}return w.scale=function(x){return arguments.length?(e=x,w):e},w.ticks=function(){return n=Array.from(arguments),w},w.tickArguments=function(x){return arguments.length?(n=x==null?[]:Array.from(x),w):n.slice()},w.tickValues=function(x){return arguments.length?(r=x==null?null:Array.from(x),w):r&&r.slice()},w.tickFormat=function(x){return arguments.length?(i=x,w):i},w.tickSize=function(x){return arguments.length?(s=a=+x,w):s},w.tickSizeInner=function(x){return arguments.length?(s=+x,w):s},w.tickSizeOuter=function(x){return arguments.length?(a=+x,w):a},w.tickPadding=function(x){return arguments.length?(y=+x,w):y},w.offset=function(x){return arguments.length?(_=+x,w):_},w}function $n(t){return Ge(Bt,t)}function Jn(t){return Ge(ue,t)}const Kn=Math.PI/180,tr=180/Math.PI,Gt=18,je=.96422,Qe=1,$e=.82521,Je=4/29,wt=6/29,Ke=3*wt*wt,er=wt*wt*wt;function tn(t){if(t instanceof ot)return new ot(t.l,t.a,t.b,t.opacity);if(t instanceof ut)return en(t);t instanceof Xe||(t=Dn(t));var e=ie(t.r),n=ie(t.g),r=ie(t.b),i=ee((.2225045*e+.7168786*n+.0606169*r)/Qe),s,a;return e===n&&n===r?s=a=i:(s=ee((.4360747*e+.3850649*n+.1430804*r)/je),a=ee((.0139322*e+.0971045*n+.7141733*r)/$e)),new ot(116*i-16,500*(s-i),200*(i-a),t.opacity)}function nr(t,e,n,r){return arguments.length===1?tn(t):new ot(t,e,n,r??1)}function ot(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}Be(ot,nr,Ze(qe,{brighter(t){return new ot(this.l+Gt*(t??1),this.a,this.b,this.opacity)},darker(t){return new ot(this.l-Gt*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return e=je*ne(e),t=Qe*ne(t),n=$e*ne(n),new Xe(re(3.1338561*e-1.6168667*t-.4906146*n),re(-.9787684*e+1.9161415*t+.033454*n),re(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}}));function ee(t){return t>er?Math.pow(t,1/3):t/Ke+Je}function ne(t){return t>wt?t*t*t:Ke*(t-Je)}function re(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ie(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function rr(t){if(t instanceof ut)return new ut(t.h,t.c,t.l,t.opacity);if(t instanceof ot||(t=tn(t)),t.a===0&&t.b===0)return new ut(NaN,0(t(s=new Date(+s)),s),i.ceil=s=>(t(s=new Date(s-1)),e(s,1),t(s),s),i.round=s=>{const a=i(s),y=i.ceil(s);return s-a(e(s=new Date(+s),a==null?1:Math.floor(a)),s),i.range=(s,a,y)=>{const _=[];if(s=i.ceil(s),y=y==null?1:Math.floor(y),!(s0))return _;let k;do _.push(k=new Date(+s)),e(s,y),t(s);while(kK(a=>{if(a>=a)for(;t(a),!s(a);)a.setTime(a-1)},(a,y)=>{if(a>=a)if(y<0)for(;++y<=0;)for(;e(a,-1),!s(a););else for(;--y>=0;)for(;e(a,1),!s(a););}),n&&(i.count=(s,a)=>(se.setTime(+s),ae.setTime(+a),t(se),t(ae),Math.floor(n(se,ae))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?a=>r(a)%s===0:a=>i.count(0,a)%s===0):i)),i}const Dt=K(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);Dt.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?K(e=>{e.setTime(Math.floor(e/t)*t)},(e,n)=>{e.setTime(+e+n*t)},(e,n)=>(n-e)/t):Dt);Dt.range;const ft=1e3,rt=ft*60,ht=rt*60,dt=ht*24,pe=dt*7,Fe=dt*30,oe=dt*365,gt=K(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*ft)},(t,e)=>(e-t)/ft,t=>t.getUTCSeconds());gt.range;const Et=K(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ft)},(t,e)=>{t.setTime(+t+e*rt)},(t,e)=>(e-t)/rt,t=>t.getMinutes());Et.range;const or=K(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*rt)},(t,e)=>(e-t)/rt,t=>t.getUTCMinutes());or.range;const At=K(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*ft-t.getMinutes()*rt)},(t,e)=>{t.setTime(+t+e*ht)},(t,e)=>(e-t)/ht,t=>t.getHours());At.range;const cr=K(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*ht)},(t,e)=>(e-t)/ht,t=>t.getUTCHours());cr.range;const yt=K(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*rt)/dt,t=>t.getDate()-1);yt.range;const Te=K(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/dt,t=>t.getUTCDate()-1);Te.range;const lr=K(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/dt,t=>Math.floor(t/dt));lr.range;function Tt(t){return K(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,n)=>{e.setDate(e.getDate()+n*7)},(e,n)=>(n-e-(n.getTimezoneOffset()-e.getTimezoneOffset())*rt)/pe)}const Ot=Tt(0),It=Tt(1),nn=Tt(2),rn=Tt(3),kt=Tt(4),sn=Tt(5),an=Tt(6);Ot.range;It.range;nn.range;rn.range;kt.range;sn.range;an.range;function vt(t){return K(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCDate(e.getUTCDate()+n*7)},(e,n)=>(n-e)/pe)}const on=vt(0),jt=vt(1),ur=vt(2),fr=vt(3),Mt=vt(4),hr=vt(5),dr=vt(6);on.range;jt.range;ur.range;fr.range;Mt.range;hr.range;dr.range;const Wt=K(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth());Wt.range;const mr=K(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth());mr.range;const mt=K(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());mt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:K(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,n)=>{e.setFullYear(e.getFullYear()+n*t)});mt.range;const pt=K(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());pt.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:K(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)});pt.range;function gr(t,e,n,r,i,s){const a=[[gt,1,ft],[gt,5,5*ft],[gt,15,15*ft],[gt,30,30*ft],[s,1,rt],[s,5,5*rt],[s,15,15*rt],[s,30,30*rt],[i,1,ht],[i,3,3*ht],[i,6,6*ht],[i,12,12*ht],[r,1,dt],[r,2,2*dt],[n,1,pe],[e,1,Fe],[e,3,3*Fe],[t,1,oe]];function y(k,C,F){const w=CL).right(a,w);if(x===a.length)return t.every(Ue(k/oe,C/oe,F));if(x===0)return Dt.every(Math.max(Ue(k,C,F),1));const[q,g]=a[w/a[x-1][2]53)return null;"w"in l||(l.w=1),"Z"in l?(H=le(Yt(l.y,0,1)),j=H.getUTCDay(),H=j>4||j===0?jt.ceil(H):jt(H),H=Te.offset(H,(l.V-1)*7),l.y=H.getUTCFullYear(),l.m=H.getUTCMonth(),l.d=H.getUTCDate()+(l.w+6)%7):(H=ce(Yt(l.y,0,1)),j=H.getDay(),H=j>4||j===0?It.ceil(H):It(H),H=yt.offset(H,(l.V-1)*7),l.y=H.getFullYear(),l.m=H.getMonth(),l.d=H.getDate()+(l.w+6)%7)}else("W"in l||"U"in l)&&("w"in l||(l.w="u"in l?l.u%7:"W"in l?1:0),j="Z"in l?le(Yt(l.y,0,1)).getUTCDay():ce(Yt(l.y,0,1)).getDay(),l.m=0,l.d="W"in l?(l.w+6)%7+l.W*7-(j+5)%7:l.w+l.U*7-(j+6)%7);return"Z"in l?(l.H+=l.Z/100|0,l.M+=l.Z%100,le(l)):ce(l)}}function T(p,E,M,l){for(var R=0,H=E.length,j=M.length,$,et;R=j)return-1;if($=E.charCodeAt(R++),$===37){if($=E.charAt(R++),et=Q[$ in Le?E.charAt(R++):$],!et||(l=et(p,M,l))<0)return-1}else if($!=M.charCodeAt(l++))return-1}return l}function Y(p,E,M){var l=k.exec(E.slice(M));return l?(p.p=C.get(l[0].toLowerCase()),M+l[0].length):-1}function D(p,E,M){var l=x.exec(E.slice(M));return l?(p.w=q.get(l[0].toLowerCase()),M+l[0].length):-1}function b(p,E,M){var l=F.exec(E.slice(M));return l?(p.w=w.get(l[0].toLowerCase()),M+l[0].length):-1}function o(p,E,M){var l=O.exec(E.slice(M));return l?(p.m=W.get(l[0].toLowerCase()),M+l[0].length):-1}function d(p,E,M){var l=g.exec(E.slice(M));return l?(p.m=L.get(l[0].toLowerCase()),M+l[0].length):-1}function m(p,E,M){return T(p,e,E,M)}function u(p,E,M){return T(p,n,E,M)}function S(p,E,M){return T(p,r,E,M)}function c(p){return a[p.getDay()]}function X(p){return s[p.getDay()]}function f(p){return _[p.getMonth()]}function h(p){return y[p.getMonth()]}function U(p){return i[+(p.getHours()>=12)]}function G(p){return 1+~~(p.getMonth()/3)}function z(p){return a[p.getUTCDay()]}function N(p){return s[p.getUTCDay()]}function I(p){return _[p.getUTCMonth()]}function V(p){return y[p.getUTCMonth()]}function st(p){return i[+(p.getUTCHours()>=12)]}function it(p){return 1+~~(p.getUTCMonth()/3)}return{format:function(p){var E=v(p+="",B);return E.toString=function(){return p},E},parse:function(p){var E=A(p+="",!1);return E.toString=function(){return p},E},utcFormat:function(p){var E=v(p+="",Z);return E.toString=function(){return p},E},utcParse:function(p){var E=A(p+="",!0);return E.toString=function(){return p},E}}}var Le={"-":"",_:" ",0:"0"},tt=/^\s*\d+/,Tr=/^%/,vr=/[\\^$*+?|[\]().{}]/g;function P(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",s=i.length;return r+(s[e.toLowerCase(),n]))}function xr(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function wr(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function Cr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Dr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Mr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Ee(t,e,n){var r=tt.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function Ae(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Sr(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function _r(t,e,n){var r=tt.exec(e.slice(n,n+1));return r?(t.q=r[0]*3-3,n+r[0].length):-1}function Ur(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Ie(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Yr(t,e,n){var r=tt.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function We(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Fr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Lr(t,e,n){var r=tt.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function Er(t,e,n){var r=tt.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function Ar(t,e,n){var r=tt.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function Ir(t,e,n){var r=Tr.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function Wr(t,e,n){var r=tt.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function Or(t,e,n){var r=tt.exec(e.slice(n));return r?(t.s=+r[0],n+r[0].length):-1}function Oe(t,e){return P(t.getDate(),e,2)}function zr(t,e){return P(t.getHours(),e,2)}function Hr(t,e){return P(t.getHours()%12||12,e,2)}function Nr(t,e){return P(1+yt.count(mt(t),t),e,3)}function cn(t,e){return P(t.getMilliseconds(),e,3)}function Vr(t,e){return cn(t,e)+"000"}function Pr(t,e){return P(t.getMonth()+1,e,2)}function Rr(t,e){return P(t.getMinutes(),e,2)}function Br(t,e){return P(t.getSeconds(),e,2)}function Zr(t){var e=t.getDay();return e===0?7:e}function Xr(t,e){return P(Ot.count(mt(t)-1,t),e,2)}function ln(t){var e=t.getDay();return e>=4||e===0?kt(t):kt.ceil(t)}function qr(t,e){return t=ln(t),P(kt.count(mt(t),t)+(mt(t).getDay()===4),e,2)}function Gr(t){return t.getDay()}function jr(t,e){return P(It.count(mt(t)-1,t),e,2)}function Qr(t,e){return P(t.getFullYear()%100,e,2)}function $r(t,e){return t=ln(t),P(t.getFullYear()%100,e,2)}function Jr(t,e){return P(t.getFullYear()%1e4,e,4)}function Kr(t,e){var n=t.getDay();return t=n>=4||n===0?kt(t):kt.ceil(t),P(t.getFullYear()%1e4,e,4)}function ti(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+P(e/60|0,"0",2)+P(e%60,"0",2)}function ze(t,e){return P(t.getUTCDate(),e,2)}function ei(t,e){return P(t.getUTCHours(),e,2)}function ni(t,e){return P(t.getUTCHours()%12||12,e,2)}function ri(t,e){return P(1+Te.count(pt(t),t),e,3)}function un(t,e){return P(t.getUTCMilliseconds(),e,3)}function ii(t,e){return un(t,e)+"000"}function si(t,e){return P(t.getUTCMonth()+1,e,2)}function ai(t,e){return P(t.getUTCMinutes(),e,2)}function oi(t,e){return P(t.getUTCSeconds(),e,2)}function ci(t){var e=t.getUTCDay();return e===0?7:e}function li(t,e){return P(on.count(pt(t)-1,t),e,2)}function fn(t){var e=t.getUTCDay();return e>=4||e===0?Mt(t):Mt.ceil(t)}function ui(t,e){return t=fn(t),P(Mt.count(pt(t),t)+(pt(t).getUTCDay()===4),e,2)}function fi(t){return t.getUTCDay()}function hi(t,e){return P(jt.count(pt(t)-1,t),e,2)}function di(t,e){return P(t.getUTCFullYear()%100,e,2)}function mi(t,e){return t=fn(t),P(t.getUTCFullYear()%100,e,2)}function gi(t,e){return P(t.getUTCFullYear()%1e4,e,4)}function yi(t,e){var n=t.getUTCDay();return t=n>=4||n===0?Mt(t):Mt.ceil(t),P(t.getUTCFullYear()%1e4,e,4)}function ki(){return"+0000"}function He(){return"%"}function Ne(t){return+t}function Ve(t){return Math.floor(+t/1e3)}var bt,Qt;pi({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function pi(t){return bt=pr(t),Qt=bt.format,bt.parse,bt.utcFormat,bt.utcParse,bt}function Ti(t){return new Date(t)}function vi(t){return t instanceof Date?+t:+new Date(+t)}function hn(t,e,n,r,i,s,a,y,_,k){var C=Hn(),F=C.invert,w=C.domain,x=k(".%L"),q=k(":%S"),g=k("%I:%M"),L=k("%I %p"),O=k("%a %d"),W=k("%b %d"),B=k("%B"),Z=k("%Y");function Q(v){return(_(v)4&&(x+=7),w.add(x,n));return q.diff(g,"week")+1},y.isoWeekday=function(k){return this.$utils().u(k)?this.day()||7:this.day(this.day()%7?k:k-7)};var _=y.startOf;y.startOf=function(k,C){var F=this.$utils(),w=!!F.u(C)||C;return F.p(k)==="isoweek"?w?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):_.bind(this)(k,C)}}})})(dn);var xi=dn.exports;const wi=ke(xi);var mn={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(ye,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},r=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,i=/\d\d/,s=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,y={},_=function(g){return(g=+g)+(g>68?1900:2e3)},k=function(g){return function(L){this[g]=+L}},C=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(L){if(!L||L==="Z")return 0;var O=L.match(/([+-]|\d\d)/g),W=60*O[1]+(+O[2]||0);return W===0?0:O[0]==="+"?-W:W}(g)}],F=function(g){var L=y[g];return L&&(L.indexOf?L:L.s.concat(L.f))},w=function(g,L){var O,W=y.meridiem;if(W){for(var B=1;B<=24;B+=1)if(g.indexOf(W(B,0,L))>-1){O=B>12;break}}else O=g===(L?"pm":"PM");return O},x={A:[a,function(g){this.afternoon=w(g,!1)}],a:[a,function(g){this.afternoon=w(g,!0)}],S:[/\d/,function(g){this.milliseconds=100*+g}],SS:[i,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[s,k("seconds")],ss:[s,k("seconds")],m:[s,k("minutes")],mm:[s,k("minutes")],H:[s,k("hours")],h:[s,k("hours")],HH:[s,k("hours")],hh:[s,k("hours")],D:[s,k("day")],DD:[i,k("day")],Do:[a,function(g){var L=y.ordinal,O=g.match(/\d+/);if(this.day=O[0],L)for(var W=1;W<=31;W+=1)L(W).replace(/\[|\]/g,"")===g&&(this.day=W)}],M:[s,k("month")],MM:[i,k("month")],MMM:[a,function(g){var L=F("months"),O=(F("monthsShort")||L.map(function(W){return W.slice(0,3)})).indexOf(g)+1;if(O<1)throw new Error;this.month=O%12||O}],MMMM:[a,function(g){var L=F("months").indexOf(g)+1;if(L<1)throw new Error;this.month=L%12||L}],Y:[/[+-]?\d+/,k("year")],YY:[i,function(g){this.year=_(g)}],YYYY:[/\d{4}/,k("year")],Z:C,ZZ:C};function q(g){var L,O;L=g,O=y&&y.formats;for(var W=(g=L.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Y,D,b){var o=b&&b.toUpperCase();return D||O[b]||n[b]||O[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(d,m,u){return m||u.slice(1)})})).match(r),B=W.length,Z=0;Z-1)return new Date((c==="X"?1e3:1)*S);var f=q(c)(S),h=f.year,U=f.month,G=f.day,z=f.hours,N=f.minutes,I=f.seconds,V=f.milliseconds,st=f.zone,it=new Date,p=G||(h||U?1:it.getDate()),E=h||it.getFullYear(),M=0;h&&!U||(M=U>0?U-1:it.getMonth());var l=z||0,R=N||0,H=I||0,j=V||0;return st?new Date(Date.UTC(E,M,p,l,R,H,j+60*st.offset*1e3)):X?new Date(Date.UTC(E,M,p,l,R,H,j)):new Date(E,M,p,l,R,H,j)}catch{return new Date("")}}(Q,T,v),this.init(),o&&o!==!0&&(this.$L=this.locale(o).$L),b&&Q!=this.format(T)&&(this.$d=new Date("")),y={}}else if(T instanceof Array)for(var d=T.length,m=1;m<=d;m+=1){A[1]=T[m-1];var u=O.apply(this,A);if(u.isValid()){this.$d=u.$d,this.$L=u.$L,this.init();break}m===d&&(this.$d=new Date(""))}else B.call(this,Z)}}})})(mn);var Ci=mn.exports;const Di=ke(Ci);var gn={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(ye,function(){return function(n,r){var i=r.prototype,s=i.format;i.format=function(a){var y=this,_=this.$locale();if(!this.isValid())return s.bind(this)(a);var k=this.$utils(),C=(a||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(F){switch(F){case"Q":return Math.ceil((y.$M+1)/3);case"Do":return _.ordinal(y.$D);case"gggg":return y.weekYear();case"GGGG":return y.isoWeekYear();case"wo":return _.ordinal(y.week(),"W");case"w":case"ww":return k.s(y.week(),F==="w"?1:2,"0");case"W":case"WW":return k.s(y.isoWeek(),F==="W"?1:2,"0");case"k":case"kk":return k.s(String(y.$H===0?24:y.$H),F==="k"?1:2,"0");case"X":return Math.floor(y.$d.getTime()/1e3);case"x":return y.$d.getTime();case"z":return"["+y.offsetName()+"]";case"zzz":return"["+y.offsetName("long")+"]";default:return F}});return s.bind(this)(C)}}})})(gn);var Mi=gn.exports;const Si=ke(Mi);var he=function(){var t=function(b,o,d,m){for(d=d||{},m=b.length;m--;d[b[m]]=o);return d},e=[6,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,33,35,37],n=[1,25],r=[1,26],i=[1,27],s=[1,28],a=[1,29],y=[1,30],_=[1,31],k=[1,9],C=[1,10],F=[1,11],w=[1,12],x=[1,13],q=[1,14],g=[1,15],L=[1,16],O=[1,18],W=[1,19],B=[1,20],Z=[1,21],Q=[1,22],v=[1,24],A=[1,32],T={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,dateFormat:19,inclusiveEndDates:20,topAxis:21,axisFormat:22,tickInterval:23,excludes:24,includes:25,todayMarker:26,title:27,acc_title:28,acc_title_value:29,acc_descr:30,acc_descr_value:31,acc_descr_multiline_value:32,section:33,clickStatement:34,taskTxt:35,taskData:36,click:37,callbackname:38,callbackargs:39,href:40,clickStatementDebug:41,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",19:"dateFormat",20:"inclusiveEndDates",21:"topAxis",22:"axisFormat",23:"tickInterval",24:"excludes",25:"includes",26:"todayMarker",27:"title",28:"acc_title",29:"acc_title_value",30:"acc_descr",31:"acc_descr_value",32:"acc_descr_multiline_value",33:"section",35:"taskTxt",36:"taskData",37:"click",38:"callbackname",39:"callbackargs",40:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[41,2],[41,3],[41,3],[41,4],[41,3],[41,4],[41,2]],performAction:function(o,d,m,u,S,c,X){var f=c.length-1;switch(S){case 1:return c[f-1];case 2:this.$=[];break;case 3:c[f-1].push(c[f]),this.$=c[f-1];break;case 4:case 5:this.$=c[f];break;case 6:case 7:this.$=[];break;case 8:u.setWeekday("monday");break;case 9:u.setWeekday("tuesday");break;case 10:u.setWeekday("wednesday");break;case 11:u.setWeekday("thursday");break;case 12:u.setWeekday("friday");break;case 13:u.setWeekday("saturday");break;case 14:u.setWeekday("sunday");break;case 15:u.setDateFormat(c[f].substr(11)),this.$=c[f].substr(11);break;case 16:u.enableInclusiveEndDates(),this.$=c[f].substr(18);break;case 17:u.TopAxis(),this.$=c[f].substr(8);break;case 18:u.setAxisFormat(c[f].substr(11)),this.$=c[f].substr(11);break;case 19:u.setTickInterval(c[f].substr(13)),this.$=c[f].substr(13);break;case 20:u.setExcludes(c[f].substr(9)),this.$=c[f].substr(9);break;case 21:u.setIncludes(c[f].substr(9)),this.$=c[f].substr(9);break;case 22:u.setTodayMarker(c[f].substr(12)),this.$=c[f].substr(12);break;case 24:u.setDiagramTitle(c[f].substr(6)),this.$=c[f].substr(6);break;case 25:this.$=c[f].trim(),u.setAccTitle(this.$);break;case 26:case 27:this.$=c[f].trim(),u.setAccDescription(this.$);break;case 28:u.addSection(c[f].substr(8)),this.$=c[f].substr(8);break;case 30:u.addTask(c[f-1],c[f]),this.$="task";break;case 31:this.$=c[f-1],u.setClickEvent(c[f-1],c[f],null);break;case 32:this.$=c[f-2],u.setClickEvent(c[f-2],c[f-1],c[f]);break;case 33:this.$=c[f-2],u.setClickEvent(c[f-2],c[f-1],null),u.setLink(c[f-2],c[f]);break;case 34:this.$=c[f-3],u.setClickEvent(c[f-3],c[f-2],c[f-1]),u.setLink(c[f-3],c[f]);break;case 35:this.$=c[f-2],u.setClickEvent(c[f-2],c[f],null),u.setLink(c[f-2],c[f-1]);break;case 36:this.$=c[f-3],u.setClickEvent(c[f-3],c[f-1],c[f]),u.setLink(c[f-3],c[f-2]);break;case 37:this.$=c[f-1],u.setLink(c[f-1],c[f]);break;case 38:case 44:this.$=c[f-1]+" "+c[f];break;case 39:case 40:case 42:this.$=c[f-2]+" "+c[f-1]+" "+c[f];break;case 41:case 43:this.$=c[f-3]+" "+c[f-2]+" "+c[f-1]+" "+c[f];break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:r,14:i,15:s,16:a,17:y,18:_,19:k,20:C,21:F,22:w,23:x,24:q,25:g,26:L,27:O,28:W,30:B,32:Z,33:Q,34:23,35:v,37:A},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:33,11:17,12:n,13:r,14:i,15:s,16:a,17:y,18:_,19:k,20:C,21:F,22:w,23:x,24:q,25:g,26:L,27:O,28:W,30:B,32:Z,33:Q,34:23,35:v,37:A},t(e,[2,5]),t(e,[2,6]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),{29:[1,34]},{31:[1,35]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),{36:[1,36]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),{38:[1,37],40:[1,38]},t(e,[2,4]),t(e,[2,25]),t(e,[2,26]),t(e,[2,30]),t(e,[2,31],{39:[1,39],40:[1,40]}),t(e,[2,37],{38:[1,41]}),t(e,[2,32],{40:[1,42]}),t(e,[2,33]),t(e,[2,35],{39:[1,43]}),t(e,[2,34]),t(e,[2,36])],defaultActions:{},parseError:function(o,d){if(d.recoverable)this.trace(o);else{var m=new Error(o);throw m.hash=d,m}},parse:function(o){var d=this,m=[0],u=[],S=[null],c=[],X=this.table,f="",h=0,U=0,G=2,z=1,N=c.slice.call(arguments,1),I=Object.create(this.lexer),V={yy:{}};for(var st in this.yy)Object.prototype.hasOwnProperty.call(this.yy,st)&&(V.yy[st]=this.yy[st]);I.setInput(o,V.yy),V.yy.lexer=I,V.yy.parser=this,typeof I.yylloc>"u"&&(I.yylloc={});var it=I.yylloc;c.push(it);var p=I.options&&I.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function E(){var ct;return ct=u.pop()||I.lex()||z,typeof ct!="number"&&(ct instanceof Array&&(u=ct,ct=u.pop()),ct=d.symbols_[ct]||ct),ct}for(var M,l,R,H,j={},$,et,Ut,Vt;;){if(l=m[m.length-1],this.defaultActions[l]?R=this.defaultActions[l]:((M===null||typeof M>"u")&&(M=E()),R=X[l]&&X[l][M]),typeof R>"u"||!R.length||!R[0]){var Jt="";Vt=[];for($ in X[l])this.terminals_[$]&&$>G&&Vt.push("'"+this.terminals_[$]+"'");I.showPosition?Jt="Parse error on line "+(h+1)+`: +`+I.showPosition()+` +Expecting `+Vt.join(", ")+", got '"+(this.terminals_[M]||M)+"'":Jt="Parse error on line "+(h+1)+": Unexpected "+(M==z?"end of input":"'"+(this.terminals_[M]||M)+"'"),this.parseError(Jt,{text:I.match,token:this.terminals_[M]||M,line:I.yylineno,loc:it,expected:Vt})}if(R[0]instanceof Array&&R.length>1)throw new Error("Parse Error: multiple actions possible at state: "+l+", token: "+M);switch(R[0]){case 1:m.push(M),S.push(I.yytext),c.push(I.yylloc),m.push(R[1]),M=null,U=I.yyleng,f=I.yytext,h=I.yylineno,it=I.yylloc;break;case 2:if(et=this.productions_[R[1]][1],j.$=S[S.length-et],j._$={first_line:c[c.length-(et||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(et||1)].first_column,last_column:c[c.length-1].last_column},p&&(j._$.range=[c[c.length-(et||1)].range[0],c[c.length-1].range[1]]),H=this.performAction.apply(j,[f,U,h,V.yy,R[1],S,c].concat(N)),typeof H<"u")return H;et&&(m=m.slice(0,-1*et*2),S=S.slice(0,-1*et),c=c.slice(0,-1*et)),m.push(this.productions_[R[1]][0]),S.push(j.$),c.push(j._$),Ut=X[m[m.length-2]][m[m.length-1]],m.push(Ut);break;case 3:return!0}}return!0}},Y=function(){var b={EOF:1,parseError:function(d,m){if(this.yy.parser)this.yy.parser.parseError(d,m);else throw new Error(d)},setInput:function(o,d){return this.yy=d||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var d=o.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},unput:function(o){var d=o.length,m=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===u.length?this.yylloc.first_column:0)+u[u.length-m.length].length-m[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(o){this.unput(this.match.slice(o))},pastInput:function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var o=this.pastInput(),d=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+d+"^"},test_match:function(o,d){var m,u,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),u=o[0].match(/(?:\r\n?|\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],m=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),m)return m;if(this._backtrack){for(var c in S)this[c]=S[c];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,d,m,u;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),c=0;cd[0].length)){if(d=m,u=c,this.options.backtrack_lexer){if(o=this.test_match(m,S[c]),o!==!1)return o;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(o=this.test_match(d,S[u]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var d=this.next();return d||this.lex()},begin:function(d){this.conditionStack.push(d)},popState:function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},pushState:function(d){this.begin(d)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(d,m,u,S){switch(u){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),28;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),30;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:break;case 15:this.begin("href");break;case 16:this.popState();break;case 17:return 40;case 18:this.begin("callbackname");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callbackargs");break;case 21:return 38;case 22:this.popState();break;case 23:return 39;case 24:this.begin("click");break;case 25:this.popState();break;case 26:return 37;case 27:return 4;case 28:return 19;case 29:return 20;case 30:return 21;case 31:return 22;case 32:return 23;case 33:return 25;case 34:return 24;case 35:return 26;case 36:return 12;case 37:return 13;case 38:return 14;case 39:return 15;case 40:return 16;case 41:return 17;case 42:return 18;case 43:return"date";case 44:return 27;case 45:return"accDescription";case 46:return 33;case 47:return 35;case 48:return 36;case 49:return":";case 50:return 6;case 51:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[22,23],inclusive:!1},callbackname:{rules:[19,20,21],inclusive:!1},href:{rules:[16,17],inclusive:!1},click:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,18,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return b}();T.lexer=Y;function D(){this.yy={}}return D.prototype=T,T.Parser=D,new D}();he.parser=he;const _i=he;nt.extend(wi);nt.extend(Di);nt.extend(Si);let at="",ve="",be,xe="",zt=[],Ht=[],we={},Ce=[],$t=[],St="",De="";const yn=["active","done","crit","milestone"];let Me=[],Nt=!1,Se=!1,_e="sunday",de=0;const Ui=function(){Ce=[],$t=[],St="",Me=[],Zt=0,ge=void 0,Xt=void 0,J=[],at="",ve="",De="",be=void 0,xe="",zt=[],Ht=[],Nt=!1,Se=!1,de=0,we={},En(),_e="sunday"},Yi=function(t){ve=t},Fi=function(){return ve},Li=function(t){be=t},Ei=function(){return be},Ai=function(t){xe=t},Ii=function(){return xe},Wi=function(t){at=t},Oi=function(){Nt=!0},zi=function(){return Nt},Hi=function(){Se=!0},Ni=function(){return Se},Vi=function(t){De=t},Pi=function(){return De},Ri=function(){return at},Bi=function(t){zt=t.toLowerCase().split(/[\s,]+/)},Zi=function(){return zt},Xi=function(t){Ht=t.toLowerCase().split(/[\s,]+/)},qi=function(){return Ht},Gi=function(){return we},ji=function(t){St=t,Ce.push(t)},Qi=function(){return Ce},$i=function(){let t=Pe();const e=10;let n=0;for(;!t&&n=6&&n.includes("weekends")||n.includes(t.format("dddd").toLowerCase())?!0:n.includes(t.format(e.trim()))},Ji=function(t){_e=t},Ki=function(){return _e},pn=function(t,e,n,r){if(!n.length||t.manualEndTime)return;let i;t.startTime instanceof Date?i=nt(t.startTime):i=nt(t.startTime,e,!0),i=i.add(1,"d");let s;t.endTime instanceof Date?s=nt(t.endTime):s=nt(t.endTime,e,!0);const[a,y]=ts(i,s,e,n,r);t.endTime=a.toDate(),t.renderEndTime=y},ts=function(t,e,n,r,i){let s=!1,a=null;for(;t<=e;)s||(a=e.toDate()),s=kn(t,n,r,i),s&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,a]},me=function(t,e,n){n=n.trim();const i=/^after\s+([\d\w- ]+)/.exec(n.trim());if(i!==null){let a=null;if(i[1].split(" ").forEach(function(y){let _=_t(y);_!==void 0&&(a?_.endTime>a.endTime&&(a=_):a=_)}),a)return a.endTime;{const y=new Date;return y.setHours(0,0,0,0),y}}let s=nt(n,e.trim(),!0);if(s.isValid())return s.toDate();{qt.debug("Invalid date:"+n),qt.debug("With date format:"+e.trim());const a=new Date(n);if(a===void 0||isNaN(a.getTime())||a.getFullYear()<-1e4||a.getFullYear()>1e4)throw new Error("Invalid date:"+n);return a}},Tn=function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},vn=function(t,e,n,r=!1){n=n.trim();let i=nt(n,e.trim(),!0);if(i.isValid())return r&&(i=i.add(1,"d")),i.toDate();let s=nt(t);const[a,y]=Tn(n);if(!Number.isNaN(a)){const _=s.add(a,y);_.isValid()&&(s=_)}return s.toDate()};let Zt=0;const Ct=function(t){return t===void 0?(Zt=Zt+1,"task"+Zt):t},es=function(t,e){let n;e.substr(0,1)===":"?n=e.substr(1,e.length):n=e;const r=n.split(","),i={};Cn(r,i,yn);for(let a=0;a{window.open(n,"_self")}),we[r]=n)}),xn(t,"clickable")},xn=function(t,e){t.split(",").forEach(function(n){let r=_t(n);r!==void 0&&r.classes.push(e)})},as=function(t,e,n){if(xt().securityLevel!=="loose"||e===void 0)return;let r=[];if(typeof n=="string"){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s{On.runFunc(e,...r)})},wn=function(t,e){Me.push(function(){const n=document.querySelector(`[id="${t}"]`);n!==null&&n.addEventListener("click",function(){e()})},function(){const n=document.querySelector(`[id="${t}-text"]`);n!==null&&n.addEventListener("click",function(){e()})})},os=function(t,e,n){t.split(",").forEach(function(r){as(r,e,n)}),xn(t,"clickable")},cs=function(t){Me.forEach(function(e){e(t)})},ls={getConfig:()=>xt().gantt,clear:Ui,setDateFormat:Wi,getDateFormat:Ri,enableInclusiveEndDates:Oi,endDatesAreInclusive:zi,enableTopAxis:Hi,topAxisEnabled:Ni,setAxisFormat:Yi,getAxisFormat:Fi,setTickInterval:Li,getTickInterval:Ei,setTodayMarker:Ai,getTodayMarker:Ii,setAccTitle:Sn,getAccTitle:_n,setDiagramTitle:Un,getDiagramTitle:Yn,setDisplayMode:Vi,getDisplayMode:Pi,setAccDescription:Fn,getAccDescription:Ln,addSection:ji,getSections:Qi,getTasks:$i,addTask:rs,findTaskById:_t,addTaskOrg:is,setIncludes:Bi,getIncludes:Zi,setExcludes:Xi,getExcludes:qi,setClickEvent:os,setLink:ss,getLinks:Gi,bindFunctions:cs,parseDuration:Tn,isInvalidDate:kn,setWeekday:Ji,getWeekday:Ki};function Cn(t,e,n){let r=!0;for(;r;)r=!1,n.forEach(function(i){const s="^\\s*"+i+"\\s*$",a=new RegExp(s);t[0].match(a)&&(e[i]=!0,t.shift(1),r=!0)})}const us=function(){qt.debug("Something is calling, setConf, remove the call")},Re={monday:It,tuesday:nn,wednesday:rn,thursday:kt,friday:sn,saturday:an,sunday:Ot},fs=(t,e)=>{let n=[...t].map(()=>-1/0),r=[...t].sort((s,a)=>s.startTime-a.startTime||s.order-a.order),i=0;for(const s of r)for(let a=0;a=n[a]){n[a]=s.endTime,s.order=a+e,a>i&&(i=a);break}return i};let lt;const hs=function(t,e,n,r){const i=xt().gantt,s=xt().securityLevel;let a;s==="sandbox"&&(a=Pt("#i"+e));const y=s==="sandbox"?Pt(a.nodes()[0].contentDocument.body):Pt("body"),_=s==="sandbox"?a.nodes()[0].contentDocument:document,k=_.getElementById(e);lt=k.parentElement.offsetWidth,lt===void 0&&(lt=1200),i.useWidth!==void 0&&(lt=i.useWidth);const C=r.db.getTasks();let F=[];for(const T of C)F.push(T.type);F=A(F);const w={};let x=2*i.topPadding;if(r.db.getDisplayMode()==="compact"||i.displayMode==="compact"){const T={};for(const D of C)T[D.section]===void 0?T[D.section]=[D]:T[D.section].push(D);let Y=0;for(const D of Object.keys(T)){const b=fs(T[D],Y)+1;Y+=b,x+=b*(i.barHeight+i.barGap),w[D]=b}}else{x+=C.length*(i.barHeight+i.barGap);for(const T of F)w[T]=C.filter(Y=>Y.type===T).length}k.setAttribute("viewBox","0 0 "+lt+" "+x);const q=y.select(`[id="${e}"]`),g=bi().domain([Bn(C,function(T){return T.startTime}),Rn(C,function(T){return T.endTime})]).rangeRound([0,lt-i.leftPadding-i.rightPadding]);function L(T,Y){const D=T.startTime,b=Y.startTime;let o=0;return D>b?o=1:Dh.order))].map(h=>T.find(U=>U.order===h));q.append("g").selectAll("rect").data(S).enter().append("rect").attr("x",0).attr("y",function(h,U){return U=h.order,U*Y+D-2}).attr("width",function(){return m-i.rightPadding/2}).attr("height",Y).attr("class",function(h){for(const[U,G]of F.entries())if(h.type===G)return"section section"+U%i.numberSectionStyles;return"section section0"});const c=q.append("g").selectAll("rect").data(T).enter(),X=r.db.getLinks();if(c.append("rect").attr("id",function(h){return h.id}).attr("rx",3).attr("ry",3).attr("x",function(h){return h.milestone?g(h.startTime)+b+.5*(g(h.endTime)-g(h.startTime))-.5*o:g(h.startTime)+b}).attr("y",function(h,U){return U=h.order,U*Y+D}).attr("width",function(h){return h.milestone?o:g(h.renderEndTime||h.endTime)-g(h.startTime)}).attr("height",o).attr("transform-origin",function(h,U){return U=h.order,(g(h.startTime)+b+.5*(g(h.endTime)-g(h.startTime))).toString()+"px "+(U*Y+D+.5*o).toString()+"px"}).attr("class",function(h){const U="task";let G="";h.classes.length>0&&(G=h.classes.join(" "));let z=0;for(const[I,V]of F.entries())h.type===V&&(z=I%i.numberSectionStyles);let N="";return h.active?h.crit?N+=" activeCrit":N=" active":h.done?h.crit?N=" doneCrit":N=" done":h.crit&&(N+=" crit"),N.length===0&&(N=" task"),h.milestone&&(N=" milestone "+N),N+=z,N+=" "+G,U+N}),c.append("text").attr("id",function(h){return h.id+"-text"}).text(function(h){return h.task}).attr("font-size",i.fontSize).attr("x",function(h){let U=g(h.startTime),G=g(h.renderEndTime||h.endTime);h.milestone&&(U+=.5*(g(h.endTime)-g(h.startTime))-.5*o),h.milestone&&(G=U+o);const z=this.getBBox().width;return z>G-U?G+z+1.5*i.leftPadding>m?U+b-5:G+b+5:(G-U)/2+U+b}).attr("y",function(h,U){return U=h.order,U*Y+i.barHeight/2+(i.fontSize/2-2)+D}).attr("text-height",o).attr("class",function(h){const U=g(h.startTime);let G=g(h.endTime);h.milestone&&(G=U+o);const z=this.getBBox().width;let N="";h.classes.length>0&&(N=h.classes.join(" "));let I=0;for(const[st,it]of F.entries())h.type===it&&(I=st%i.numberSectionStyles);let V="";return h.active&&(h.crit?V="activeCritText"+I:V="activeText"+I),h.done?h.crit?V=V+" doneCritText"+I:V=V+" doneText"+I:h.crit&&(V=V+" critText"+I),h.milestone&&(V+=" milestoneText"),z>G-U?G+z+1.5*i.leftPadding>m?N+" taskTextOutsideLeft taskTextOutside"+I+" "+V:N+" taskTextOutsideRight taskTextOutside"+I+" "+V+" width-"+z:N+" taskText taskText"+I+" "+V+" width-"+z}),xt().securityLevel==="sandbox"){let h;h=Pt("#i"+e);const U=h.nodes()[0].contentDocument;c.filter(function(G){return X[G.id]!==void 0}).each(function(G){var z=U.querySelector("#"+G.id),N=U.querySelector("#"+G.id+"-text");const I=z.parentNode;var V=U.createElement("a");V.setAttribute("xlink:href",X[G.id]),V.setAttribute("target","_top"),I.appendChild(V),V.appendChild(z),V.appendChild(N)})}}function B(T,Y,D,b,o,d,m,u){if(m.length===0&&u.length===0)return;let S,c;for(const{startTime:z,endTime:N}of d)(S===void 0||zc)&&(c=N);if(!S||!c)return;if(nt(c).diff(nt(S),"year")>5){qt.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}const X=r.db.getDateFormat(),f=[];let h=null,U=nt(S);for(;U.valueOf()<=c;)r.db.isInvalidDate(U,X,m,u)?h?h.end=U:h={start:U,end:U}:h&&(f.push(h),h=null),U=U.add(1,"d");q.append("g").selectAll("rect").data(f).enter().append("rect").attr("id",function(z){return"exclude-"+z.start.format("YYYY-MM-DD")}).attr("x",function(z){return g(z.start)+D}).attr("y",i.gridLineStartPadding).attr("width",function(z){const N=z.end.add(1,"day");return g(N)-g(z.start)}).attr("height",o-Y-i.gridLineStartPadding).attr("transform-origin",function(z,N){return(g(z.start)+D+.5*(g(z.end)-g(z.start))).toString()+"px "+(N*T+.5*o).toString()+"px"}).attr("class","exclude-range")}function Z(T,Y,D,b){let o=Jn(g).tickSize(-b+Y+i.gridLineStartPadding).tickFormat(Qt(r.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));const m=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(r.db.getTickInterval()||i.tickInterval);if(m!==null){const u=m[1],S=m[2],c=r.db.getWeekday()||i.weekday;switch(S){case"millisecond":o.ticks(Dt.every(u));break;case"second":o.ticks(gt.every(u));break;case"minute":o.ticks(Et.every(u));break;case"hour":o.ticks(At.every(u));break;case"day":o.ticks(yt.every(u));break;case"week":o.ticks(Re[c].every(u));break;case"month":o.ticks(Wt.every(u));break}}if(q.append("g").attr("class","grid").attr("transform","translate("+T+", "+(b-50)+")").call(o).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),r.db.topAxisEnabled()||i.topAxis){let u=$n(g).tickSize(-b+Y+i.gridLineStartPadding).tickFormat(Qt(r.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(m!==null){const S=m[1],c=m[2],X=r.db.getWeekday()||i.weekday;switch(c){case"millisecond":u.ticks(Dt.every(S));break;case"second":u.ticks(gt.every(S));break;case"minute":u.ticks(Et.every(S));break;case"hour":u.ticks(At.every(S));break;case"day":u.ticks(yt.every(S));break;case"week":u.ticks(Re[X].every(S));break;case"month":u.ticks(Wt.every(S));break}}q.append("g").attr("class","grid").attr("transform","translate("+T+", "+Y+")").call(u).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function Q(T,Y){let D=0;const b=Object.keys(w).map(o=>[o,w[o]]);q.append("g").selectAll("text").data(b).enter().append(function(o){const d=o[0].split(Wn.lineBreakRegex),m=-(d.length-1)/2,u=_.createElementNS("http://www.w3.org/2000/svg","text");u.setAttribute("dy",m+"em");for(const[S,c]of d.entries()){const X=_.createElementNS("http://www.w3.org/2000/svg","tspan");X.setAttribute("alignment-baseline","central"),X.setAttribute("x","10"),S>0&&X.setAttribute("dy","1em"),X.textContent=c,u.appendChild(X)}return u}).attr("x",10).attr("y",function(o,d){if(d>0)for(let m=0;m` + .mermaid-main-font { + font-family: "trebuchet ms", verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + .exclude-range { + fill: ${t.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${t.sectionBkgColor}; + } + + .section2 { + fill: ${t.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${t.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${t.titleColor}; + } + + .sectionTitle1 { + fill: ${t.titleColor}; + } + + .sectionTitle2 { + fill: ${t.titleColor}; + } + + .sectionTitle3 { + fill: ${t.titleColor}; + } + + .sectionTitle { + text-anchor: start; + // font-size: ${t.ganttFontSize}; + // text-height: 14px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${t.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + text { + font-family: ${t.fontFamily}; + fill: ${t.textColor}; + } + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${t.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + + // .taskText:not([font-size]) { + // font-size: ${t.ganttFontSize}; + // } + + .taskTextOutsideRight { + fill: ${t.taskTextDarkColor}; + text-anchor: start; + // font-size: ${t.ganttFontSize}; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + + } + + .taskTextOutsideLeft { + fill: ${t.taskTextDarkColor}; + text-anchor: end; + // font-size: ${t.ganttFontSize}; + } + + /* Special case clickable */ + .task.clickable { + cursor: pointer; + } + .taskText.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${t.taskTextClickableColor} !important; + font-weight: bold; + } + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${t.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${t.taskBkgColor}; + stroke: ${t.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${t.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${t.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${t.activeTaskBkgColor}; + stroke: ${t.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${t.doneTaskBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${t.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${t.critBorderColor}; + fill: ${t.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${t.critBorderColor}; + fill: ${t.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${t.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor} ; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } +`,gs=ms,vs={parser:_i,db:ls,renderer:ds,styles:gs};export{vs as diagram}; diff --git a/assets/gitGraphDiagram-6b463803-RA0QPUu6.js b/assets/gitGraphDiagram-6b463803-RA0QPUu6.js new file mode 100644 index 00000000..fa84e3c6 --- /dev/null +++ b/assets/gitGraphDiagram-6b463803-RA0QPUu6.js @@ -0,0 +1,70 @@ +import{c as A,s as Mt,g as Ct,a as At,b as Ot,v as St,x as It,l as G,j as D,z as Gt,h as Pt,y as Nt,as as Ht,at as Bt}from"./mermaid.core-Up0YySao.js";import"./app-Mf7X6hWu.js";var mt=function(){var r=function(q,h,b,k){for(b=b||{},k=q.length;k--;b[q[k]]=h);return b},a=[1,3],o=[1,6],u=[1,4],n=[1,5],c=[2,5],m=[1,12],l=[5,7,13,19,21,23,24,26,28,31,36,39,46],E=[7,13,19,21,23,24,26,28,31,36,39],_=[7,12,13,19,21,23,24,26,28,31,36,39],i=[7,13,46],g=[1,42],p=[1,41],x=[7,13,29,32,34,37,46],f=[1,55],d=[1,56],y=[1,57],H=[7,13,32,34,41,46],w={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,GG:5,document:6,EOF:7,":":8,DIR:9,options:10,body:11,OPT:12,NL:13,line:14,statement:15,commitStatement:16,mergeStatement:17,cherryPickStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ref:27,BRANCH:28,ORDER:29,NUM:30,CHERRY_PICK:31,COMMIT_ID:32,STR:33,COMMIT_TAG:34,EMPTYSTR:35,MERGE:36,COMMIT_TYPE:37,commitType:38,COMMIT:39,commit_arg:40,COMMIT_MSG:41,NORMAL:42,REVERSE:43,HIGHLIGHT:44,ID:45,";":46,$accept:0,$end:1},terminals_:{2:"error",5:"GG",7:"EOF",8:":",9:"DIR",12:"OPT",13:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",28:"BRANCH",29:"ORDER",30:"NUM",31:"CHERRY_PICK",32:"COMMIT_ID",33:"STR",34:"COMMIT_TAG",35:"EMPTYSTR",36:"MERGE",37:"COMMIT_TYPE",39:"COMMIT",41:"COMMIT_MSG",42:"NORMAL",43:"REVERSE",44:"HIGHLIGHT",45:"ID",46:";"},productions_:[0,[3,2],[3,3],[3,4],[3,5],[6,0],[6,2],[10,2],[10,1],[11,0],[11,2],[14,2],[14,1],[15,1],[15,1],[15,1],[15,2],[15,2],[15,1],[15,1],[15,1],[15,2],[25,2],[25,4],[18,3],[18,5],[18,5],[18,5],[18,5],[17,2],[17,4],[17,4],[17,4],[17,6],[17,6],[17,6],[17,6],[17,6],[17,6],[17,8],[17,8],[17,8],[17,8],[17,8],[17,8],[16,2],[16,3],[16,3],[16,5],[16,5],[16,3],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,3],[16,5],[16,5],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[40,0],[40,1],[38,1],[38,1],[38,1],[27,1],[27,1],[4,1],[4,1],[4,1]],performAction:function(h,b,k,s,T,t,X){var e=t.length-1;switch(T){case 2:return t[e];case 3:return t[e-1];case 4:return s.setDirection(t[e-3]),t[e-1];case 6:s.setOptions(t[e-1]),this.$=t[e];break;case 7:t[e-1]+=t[e],this.$=t[e-1];break;case 9:this.$=[];break;case 10:t[e-1].push(t[e]),this.$=t[e-1];break;case 11:this.$=t[e-1];break;case 16:this.$=t[e].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=t[e].trim(),s.setAccDescription(this.$);break;case 19:s.addSection(t[e].substr(8)),this.$=t[e].substr(8);break;case 21:s.checkout(t[e]);break;case 22:s.branch(t[e]);break;case 23:s.branch(t[e-2],t[e]);break;case 24:s.cherryPick(t[e],"",void 0);break;case 25:s.cherryPick(t[e-2],"",t[e]);break;case 26:case 28:s.cherryPick(t[e-2],"","");break;case 27:s.cherryPick(t[e],"",t[e-2]);break;case 29:s.merge(t[e],"","","");break;case 30:s.merge(t[e-2],t[e],"","");break;case 31:s.merge(t[e-2],"",t[e],"");break;case 32:s.merge(t[e-2],"","",t[e]);break;case 33:s.merge(t[e-4],t[e],"",t[e-2]);break;case 34:s.merge(t[e-4],"",t[e],t[e-2]);break;case 35:s.merge(t[e-4],"",t[e-2],t[e]);break;case 36:s.merge(t[e-4],t[e-2],t[e],"");break;case 37:s.merge(t[e-4],t[e-2],"",t[e]);break;case 38:s.merge(t[e-4],t[e],t[e-2],"");break;case 39:s.merge(t[e-6],t[e-4],t[e-2],t[e]);break;case 40:s.merge(t[e-6],t[e],t[e-4],t[e-2]);break;case 41:s.merge(t[e-6],t[e-4],t[e],t[e-2]);break;case 42:s.merge(t[e-6],t[e-2],t[e-4],t[e]);break;case 43:s.merge(t[e-6],t[e],t[e-2],t[e-4]);break;case 44:s.merge(t[e-6],t[e-2],t[e],t[e-4]);break;case 45:s.commit(t[e]);break;case 46:s.commit("","",s.commitType.NORMAL,t[e]);break;case 47:s.commit("","",t[e],"");break;case 48:s.commit("","",t[e],t[e-2]);break;case 49:s.commit("","",t[e-2],t[e]);break;case 50:s.commit("",t[e],s.commitType.NORMAL,"");break;case 51:s.commit("",t[e-2],s.commitType.NORMAL,t[e]);break;case 52:s.commit("",t[e],s.commitType.NORMAL,t[e-2]);break;case 53:s.commit("",t[e-2],t[e],"");break;case 54:s.commit("",t[e],t[e-2],"");break;case 55:s.commit("",t[e-4],t[e-2],t[e]);break;case 56:s.commit("",t[e-4],t[e],t[e-2]);break;case 57:s.commit("",t[e-2],t[e-4],t[e]);break;case 58:s.commit("",t[e],t[e-4],t[e-2]);break;case 59:s.commit("",t[e],t[e-2],t[e-4]);break;case 60:s.commit("",t[e-2],t[e],t[e-4]);break;case 61:s.commit(t[e],"",s.commitType.NORMAL,"");break;case 62:s.commit(t[e],"",s.commitType.NORMAL,t[e-2]);break;case 63:s.commit(t[e-2],"",s.commitType.NORMAL,t[e]);break;case 64:s.commit(t[e-2],"",t[e],"");break;case 65:s.commit(t[e],"",t[e-2],"");break;case 66:s.commit(t[e],t[e-2],s.commitType.NORMAL,"");break;case 67:s.commit(t[e-2],t[e],s.commitType.NORMAL,"");break;case 68:s.commit(t[e-4],"",t[e-2],t[e]);break;case 69:s.commit(t[e-4],"",t[e],t[e-2]);break;case 70:s.commit(t[e-2],"",t[e-4],t[e]);break;case 71:s.commit(t[e],"",t[e-4],t[e-2]);break;case 72:s.commit(t[e],"",t[e-2],t[e-4]);break;case 73:s.commit(t[e-2],"",t[e],t[e-4]);break;case 74:s.commit(t[e-4],t[e],t[e-2],"");break;case 75:s.commit(t[e-4],t[e-2],t[e],"");break;case 76:s.commit(t[e-2],t[e],t[e-4],"");break;case 77:s.commit(t[e],t[e-2],t[e-4],"");break;case 78:s.commit(t[e],t[e-4],t[e-2],"");break;case 79:s.commit(t[e-2],t[e-4],t[e],"");break;case 80:s.commit(t[e-4],t[e],s.commitType.NORMAL,t[e-2]);break;case 81:s.commit(t[e-4],t[e-2],s.commitType.NORMAL,t[e]);break;case 82:s.commit(t[e-2],t[e],s.commitType.NORMAL,t[e-4]);break;case 83:s.commit(t[e],t[e-2],s.commitType.NORMAL,t[e-4]);break;case 84:s.commit(t[e],t[e-4],s.commitType.NORMAL,t[e-2]);break;case 85:s.commit(t[e-2],t[e-4],s.commitType.NORMAL,t[e]);break;case 86:s.commit(t[e-6],t[e-4],t[e-2],t[e]);break;case 87:s.commit(t[e-6],t[e-4],t[e],t[e-2]);break;case 88:s.commit(t[e-6],t[e-2],t[e-4],t[e]);break;case 89:s.commit(t[e-6],t[e],t[e-4],t[e-2]);break;case 90:s.commit(t[e-6],t[e-2],t[e],t[e-4]);break;case 91:s.commit(t[e-6],t[e],t[e-2],t[e-4]);break;case 92:s.commit(t[e-4],t[e-6],t[e-2],t[e]);break;case 93:s.commit(t[e-4],t[e-6],t[e],t[e-2]);break;case 94:s.commit(t[e-2],t[e-6],t[e-4],t[e]);break;case 95:s.commit(t[e],t[e-6],t[e-4],t[e-2]);break;case 96:s.commit(t[e-2],t[e-6],t[e],t[e-4]);break;case 97:s.commit(t[e],t[e-6],t[e-2],t[e-4]);break;case 98:s.commit(t[e],t[e-4],t[e-2],t[e-6]);break;case 99:s.commit(t[e-2],t[e-4],t[e],t[e-6]);break;case 100:s.commit(t[e],t[e-2],t[e-4],t[e-6]);break;case 101:s.commit(t[e-2],t[e],t[e-4],t[e-6]);break;case 102:s.commit(t[e-4],t[e-2],t[e],t[e-6]);break;case 103:s.commit(t[e-4],t[e],t[e-2],t[e-6]);break;case 104:s.commit(t[e-2],t[e-4],t[e-6],t[e]);break;case 105:s.commit(t[e],t[e-4],t[e-6],t[e-2]);break;case 106:s.commit(t[e-2],t[e],t[e-6],t[e-4]);break;case 107:s.commit(t[e],t[e-2],t[e-6],t[e-4]);break;case 108:s.commit(t[e-4],t[e-2],t[e-6],t[e]);break;case 109:s.commit(t[e-4],t[e],t[e-6],t[e-2]);break;case 110:this.$="";break;case 111:this.$=t[e];break;case 112:this.$=s.commitType.NORMAL;break;case 113:this.$=s.commitType.REVERSE;break;case 114:this.$=s.commitType.HIGHLIGHT;break}},table:[{3:1,4:2,5:a,7:o,13:u,46:n},{1:[3]},{3:7,4:2,5:a,7:o,13:u,46:n},{6:8,7:c,8:[1,9],9:[1,10],10:11,13:m},r(l,[2,117]),r(l,[2,118]),r(l,[2,119]),{1:[2,1]},{7:[1,13]},{6:14,7:c,10:11,13:m},{8:[1,15]},r(E,[2,9],{11:16,12:[1,17]}),r(_,[2,8]),{1:[2,2]},{7:[1,18]},{6:19,7:c,10:11,13:m},{7:[2,6],13:[1,22],14:20,15:21,16:23,17:24,18:25,19:[1,26],21:[1,27],23:[1,28],24:[1,29],25:30,26:[1,31],28:[1,35],31:[1,34],36:[1,33],39:[1,32]},r(_,[2,7]),{1:[2,3]},{7:[1,36]},r(E,[2,10]),{4:37,7:o,13:u,46:n},r(E,[2,12]),r(i,[2,13]),r(i,[2,14]),r(i,[2,15]),{20:[1,38]},{22:[1,39]},r(i,[2,18]),r(i,[2,19]),r(i,[2,20]),{27:40,33:g,45:p},r(i,[2,110],{40:43,32:[1,46],33:[1,48],34:[1,44],37:[1,45],41:[1,47]}),{27:49,33:g,45:p},{32:[1,50],34:[1,51]},{27:52,33:g,45:p},{1:[2,4]},r(E,[2,11]),r(i,[2,16]),r(i,[2,17]),r(i,[2,21]),r(x,[2,115]),r(x,[2,116]),r(i,[2,45]),{33:[1,53]},{38:54,42:f,43:d,44:y},{33:[1,58]},{33:[1,59]},r(i,[2,111]),r(i,[2,29],{32:[1,60],34:[1,62],37:[1,61]}),{33:[1,63]},{33:[1,64],35:[1,65]},r(i,[2,22],{29:[1,66]}),r(i,[2,46],{32:[1,68],37:[1,67],41:[1,69]}),r(i,[2,47],{32:[1,71],34:[1,70],41:[1,72]}),r(H,[2,112]),r(H,[2,113]),r(H,[2,114]),r(i,[2,50],{34:[1,73],37:[1,74],41:[1,75]}),r(i,[2,61],{32:[1,78],34:[1,76],37:[1,77]}),{33:[1,79]},{38:80,42:f,43:d,44:y},{33:[1,81]},r(i,[2,24],{34:[1,82]}),{32:[1,83]},{32:[1,84]},{30:[1,85]},{38:86,42:f,43:d,44:y},{33:[1,87]},{33:[1,88]},{33:[1,89]},{33:[1,90]},{33:[1,91]},{33:[1,92]},{38:93,42:f,43:d,44:y},{33:[1,94]},{33:[1,95]},{38:96,42:f,43:d,44:y},{33:[1,97]},r(i,[2,30],{34:[1,99],37:[1,98]}),r(i,[2,31],{32:[1,101],34:[1,100]}),r(i,[2,32],{32:[1,102],37:[1,103]}),{33:[1,104],35:[1,105]},{33:[1,106]},{33:[1,107]},r(i,[2,23]),r(i,[2,48],{32:[1,108],41:[1,109]}),r(i,[2,52],{37:[1,110],41:[1,111]}),r(i,[2,62],{32:[1,113],37:[1,112]}),r(i,[2,49],{32:[1,114],41:[1,115]}),r(i,[2,54],{34:[1,116],41:[1,117]}),r(i,[2,65],{32:[1,119],34:[1,118]}),r(i,[2,51],{37:[1,120],41:[1,121]}),r(i,[2,53],{34:[1,122],41:[1,123]}),r(i,[2,66],{34:[1,125],37:[1,124]}),r(i,[2,63],{32:[1,127],37:[1,126]}),r(i,[2,64],{32:[1,129],34:[1,128]}),r(i,[2,67],{34:[1,131],37:[1,130]}),{38:132,42:f,43:d,44:y},{33:[1,133]},{33:[1,134]},{33:[1,135]},{33:[1,136]},{38:137,42:f,43:d,44:y},r(i,[2,25]),r(i,[2,26]),r(i,[2,27]),r(i,[2,28]),{33:[1,138]},{33:[1,139]},{38:140,42:f,43:d,44:y},{33:[1,141]},{38:142,42:f,43:d,44:y},{33:[1,143]},{33:[1,144]},{33:[1,145]},{33:[1,146]},{33:[1,147]},{33:[1,148]},{33:[1,149]},{38:150,42:f,43:d,44:y},{33:[1,151]},{33:[1,152]},{33:[1,153]},{38:154,42:f,43:d,44:y},{33:[1,155]},{38:156,42:f,43:d,44:y},{33:[1,157]},{33:[1,158]},{33:[1,159]},{38:160,42:f,43:d,44:y},{33:[1,161]},r(i,[2,36],{34:[1,162]}),r(i,[2,37],{37:[1,163]}),r(i,[2,35],{32:[1,164]}),r(i,[2,38],{34:[1,165]}),r(i,[2,33],{37:[1,166]}),r(i,[2,34],{32:[1,167]}),r(i,[2,59],{41:[1,168]}),r(i,[2,72],{32:[1,169]}),r(i,[2,60],{41:[1,170]}),r(i,[2,83],{37:[1,171]}),r(i,[2,73],{32:[1,172]}),r(i,[2,82],{37:[1,173]}),r(i,[2,58],{41:[1,174]}),r(i,[2,71],{32:[1,175]}),r(i,[2,57],{41:[1,176]}),r(i,[2,77],{34:[1,177]}),r(i,[2,70],{32:[1,178]}),r(i,[2,76],{34:[1,179]}),r(i,[2,56],{41:[1,180]}),r(i,[2,84],{37:[1,181]}),r(i,[2,55],{41:[1,182]}),r(i,[2,78],{34:[1,183]}),r(i,[2,79],{34:[1,184]}),r(i,[2,85],{37:[1,185]}),r(i,[2,69],{32:[1,186]}),r(i,[2,80],{37:[1,187]}),r(i,[2,68],{32:[1,188]}),r(i,[2,74],{34:[1,189]}),r(i,[2,75],{34:[1,190]}),r(i,[2,81],{37:[1,191]}),{33:[1,192]},{38:193,42:f,43:d,44:y},{33:[1,194]},{33:[1,195]},{38:196,42:f,43:d,44:y},{33:[1,197]},{33:[1,198]},{33:[1,199]},{33:[1,200]},{38:201,42:f,43:d,44:y},{33:[1,202]},{38:203,42:f,43:d,44:y},{33:[1,204]},{33:[1,205]},{33:[1,206]},{33:[1,207]},{33:[1,208]},{33:[1,209]},{33:[1,210]},{38:211,42:f,43:d,44:y},{33:[1,212]},{33:[1,213]},{33:[1,214]},{38:215,42:f,43:d,44:y},{33:[1,216]},{38:217,42:f,43:d,44:y},{33:[1,218]},{33:[1,219]},{33:[1,220]},{38:221,42:f,43:d,44:y},r(i,[2,39]),r(i,[2,41]),r(i,[2,40]),r(i,[2,42]),r(i,[2,44]),r(i,[2,43]),r(i,[2,100]),r(i,[2,101]),r(i,[2,98]),r(i,[2,99]),r(i,[2,103]),r(i,[2,102]),r(i,[2,107]),r(i,[2,106]),r(i,[2,105]),r(i,[2,104]),r(i,[2,109]),r(i,[2,108]),r(i,[2,97]),r(i,[2,96]),r(i,[2,95]),r(i,[2,94]),r(i,[2,92]),r(i,[2,93]),r(i,[2,91]),r(i,[2,90]),r(i,[2,89]),r(i,[2,88]),r(i,[2,86]),r(i,[2,87])],defaultActions:{7:[2,1],13:[2,2],18:[2,3],36:[2,4]},parseError:function(h,b){if(b.recoverable)this.trace(h);else{var k=new Error(h);throw k.hash=b,k}},parse:function(h){var b=this,k=[0],s=[],T=[null],t=[],X=this.table,e="",rt=0,pt=0,Tt=2,ft=1,Lt=t.slice.call(arguments,1),v=Object.create(this.lexer),Y={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(Y.yy[ct]=this.yy[ct]);v.setInput(h,Y.yy),Y.yy.lexer=v,Y.yy.parser=this,typeof v.yylloc>"u"&&(v.yylloc={});var ot=v.yylloc;t.push(ot);var Rt=v.options&&v.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function vt(){var j;return j=s.pop()||v.lex()||ft,typeof j!="number"&&(j instanceof Array&&(s=j,j=s.pop()),j=b.symbols_[j]||j),j}for(var I,K,V,lt,W={},it,z,bt,st;;){if(K=k[k.length-1],this.defaultActions[K]?V=this.defaultActions[K]:((I===null||typeof I>"u")&&(I=vt()),V=X[K]&&X[K][I]),typeof V>"u"||!V.length||!V[0]){var ht="";st=[];for(it in X[K])this.terminals_[it]&&it>Tt&&st.push("'"+this.terminals_[it]+"'");v.showPosition?ht="Parse error on line "+(rt+1)+`: +`+v.showPosition()+` +Expecting `+st.join(", ")+", got '"+(this.terminals_[I]||I)+"'":ht="Parse error on line "+(rt+1)+": Unexpected "+(I==ft?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(ht,{text:v.match,token:this.terminals_[I]||I,line:v.yylineno,loc:ot,expected:st})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+K+", token: "+I);switch(V[0]){case 1:k.push(I),T.push(v.yytext),t.push(v.yylloc),k.push(V[1]),I=null,pt=v.yyleng,e=v.yytext,rt=v.yylineno,ot=v.yylloc;break;case 2:if(z=this.productions_[V[1]][1],W.$=T[T.length-z],W._$={first_line:t[t.length-(z||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(z||1)].first_column,last_column:t[t.length-1].last_column},Rt&&(W._$.range=[t[t.length-(z||1)].range[0],t[t.length-1].range[1]]),lt=this.performAction.apply(W,[e,pt,rt,Y.yy,V[1],T,t].concat(Lt)),typeof lt<"u")return lt;z&&(k=k.slice(0,-1*z*2),T=T.slice(0,-1*z),t=t.slice(0,-1*z)),k.push(this.productions_[V[1]][0]),T.push(W.$),t.push(W._$),bt=X[k[k.length-2]][k[k.length-1]],k.push(bt);break;case 3:return!0}}return!0}},B=function(){var q={EOF:1,parseError:function(b,k){if(this.yy.parser)this.yy.parser.parseError(b,k);else throw new Error(b)},setInput:function(h,b){return this.yy=b||this.yy||{},this._input=h,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var b=h.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},unput:function(h){var b=h.length,k=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b),this.offset-=b;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===s.length?this.yylloc.first_column:0)+s[s.length-k.length].length-k[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-b]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(h){this.unput(this.match.slice(h))},pastInput:function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var h=this.pastInput(),b=new Array(h.length+1).join("-");return h+this.upcomingInput()+` +`+b+"^"},test_match:function(h,b){var k,s,T;if(this.options.backtrack_lexer&&(T={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(T.yylloc.range=this.yylloc.range.slice(0))),s=h[0].match(/(?:\r\n?|\n).*/g),s&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+h[0].length},this.yytext+=h[0],this.match+=h[0],this.matches=h,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(h[0].length),this.matched+=h[0],k=this.performAction.call(this,this.yy,this,b,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var t in T)this[t]=T[t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var h,b,k,s;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),t=0;tb[0].length)){if(b=k,s=t,this.options.backtrack_lexer){if(h=this.test_match(k,T[t]),h!==!1)return h;if(this._backtrack){b=!1;continue}else return!1}else if(!this.options.flex)break}return b?(h=this.test_match(b,T[s]),h!==!1?h:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var b=this.next();return b||this.lex()},begin:function(b){this.conditionStack.push(b)},popState:function(){var b=this.conditionStack.length-1;return b>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(b){return b=this.conditionStack.length-1-Math.abs(b||0),b>=0?this.conditionStack[b]:"INITIAL"},pushState:function(b){this.begin(b)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(b,k,s,T){switch(s){case 0:return this.begin("acc_title"),19;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),21;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 13;case 8:break;case 9:break;case 10:return 5;case 11:return 39;case 12:return 32;case 13:return 37;case 14:return 41;case 15:return 42;case 16:return 43;case 17:return 44;case 18:return 34;case 19:return 28;case 20:return 29;case 21:return 36;case 22:return 31;case 23:return 26;case 24:return 9;case 25:return 9;case 26:return 8;case 27:return"CARET";case 28:this.begin("options");break;case 29:this.popState();break;case 30:return 12;case 31:return 35;case 32:this.begin("string");break;case 33:this.popState();break;case 34:return 33;case 35:return 30;case 36:return 45;case 37:return 7}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:TB\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},options:{rules:[29,30],inclusive:!1},string:{rules:[33,34],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,31,32,35,36,37,38],inclusive:!0}}};return q}();w.lexer=B;function P(){this.yy={}}return P.prototype=w,w.Parser=P,new P}();mt.parser=mt;const Vt=mt;let at=A().gitGraph.mainBranchName,Dt=A().gitGraph.mainBranchOrder,R={},S=null,Z={};Z[at]={name:at,order:Dt};let L={};L[at]=S;let C=at,kt="LR",U=0;function ut(){return Bt({length:7})}function zt(r,a){const o=Object.create(null);return r.reduce((u,n)=>{const c=a(n);return o[c]||(o[c]=!0,u.push(n)),u},[])}const jt=function(r){kt=r};let xt={};const qt=function(r){G.debug("options str",r),r=r&&r.trim(),r=r||"{}";try{xt=JSON.parse(r)}catch(a){G.error("error while parsing gitGraph options",a.message)}},Yt=function(){return xt},Kt=function(r,a,o,u){G.debug("Entering commit:",r,a,o,u),a=D.sanitizeText(a,A()),r=D.sanitizeText(r,A()),u=D.sanitizeText(u,A());const n={id:a||U+"-"+ut(),message:r,seq:U++,type:o||$.NORMAL,tag:u||"",parents:S==null?[]:[S.id],branch:C};S=n,R[n.id]=n,L[C]=n.id,G.debug("in pushCommit "+n.id)},Ft=function(r,a){if(r=D.sanitizeText(r,A()),L[r]===void 0)L[r]=S!=null?S.id:null,Z[r]={name:r,order:a?parseInt(a,10):null},yt(r),G.debug("in createBranch");else{let o=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+r+'")');throw o.hash={text:"branch "+r,token:"branch "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+r+'"']},o}},Ut=function(r,a,o,u){r=D.sanitizeText(r,A()),a=D.sanitizeText(a,A());const n=R[L[C]],c=R[L[r]];if(C===r){let l=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw l.hash={text:"merge "+r,token:"merge "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},l}else if(n===void 0||!n){let l=new Error('Incorrect usage of "merge". Current branch ('+C+")has no commits");throw l.hash={text:"merge "+r,token:"merge "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},l}else if(L[r]===void 0){let l=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw l.hash={text:"merge "+r,token:"merge "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+r]},l}else if(c===void 0||!c){let l=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw l.hash={text:"merge "+r,token:"merge "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},l}else if(n===c){let l=new Error('Incorrect usage of "merge". Both branches have same head');throw l.hash={text:"merge "+r,token:"merge "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},l}else if(a&&R[a]!==void 0){let l=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw l.hash={text:"merge "+r+a+o+u,token:"merge "+r+a+o+u,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+r+" "+a+"_UNIQUE "+o+" "+u]},l}const m={id:a||U+"-"+ut(),message:"merged branch "+r+" into "+C,seq:U++,parents:[S==null?null:S.id,L[r]],branch:C,type:$.MERGE,customType:o,customId:!!a,tag:u||""};S=m,R[m.id]=m,L[C]=m.id,G.debug(L),G.debug("in mergeBranch")},Wt=function(r,a,o){if(G.debug("Entering cherryPick:",r,a,o),r=D.sanitizeText(r,A()),a=D.sanitizeText(a,A()),o=D.sanitizeText(o,A()),!r||R[r]===void 0){let c=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw c.hash={text:"cherryPick "+r+" "+a,token:"cherryPick "+r+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},c}let u=R[r],n=u.branch;if(u.type===$.MERGE){let c=new Error('Incorrect usage of "cherryPick". Source commit should not be a merge commit');throw c.hash={text:"cherryPick "+r+" "+a,token:"cherryPick "+r+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},c}if(!a||R[a]===void 0){if(n===C){let l=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw l.hash={text:"cherryPick "+r+" "+a,token:"cherryPick "+r+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},l}const c=R[L[C]];if(c===void 0||!c){let l=new Error('Incorrect usage of "cherry-pick". Current branch ('+C+")has no commits");throw l.hash={text:"cherryPick "+r+" "+a,token:"cherryPick "+r+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},l}const m={id:U+"-"+ut(),message:"cherry-picked "+u+" into "+C,seq:U++,parents:[S==null?null:S.id,u.id],branch:C,type:$.CHERRY_PICK,tag:o??"cherry-pick:"+u.id};S=m,R[m.id]=m,L[C]=m.id,G.debug(L),G.debug("in cherryPick")}},yt=function(r){if(r=D.sanitizeText(r,A()),L[r]===void 0){let a=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+r+'")');throw a.hash={text:"checkout "+r,token:"checkout "+r,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+r+'"']},a}else{C=r;const a=L[C];S=R[a]}};function gt(r,a,o){const u=r.indexOf(a);u===-1?r.push(o):r.splice(u,1,o)}function _t(r){const a=r.reduce((n,c)=>n.seq>c.seq?n:c,r[0]);let o="";r.forEach(function(n){n===a?o+=" *":o+=" |"});const u=[o,a.id,a.seq];for(let n in L)L[n]===a.id&&u.push(n);if(G.debug(u.join(" ")),a.parents&&a.parents.length==2){const n=R[a.parents[0]];gt(r,a,n),r.push(R[a.parents[1]])}else{if(a.parents.length==0)return;{const n=R[a.parents];gt(r,a,n)}}r=zt(r,n=>n.id),_t(r)}const Xt=function(){G.debug(R);const r=Et()[0];_t([r])},Jt=function(){R={},S=null;let r=A().gitGraph.mainBranchName,a=A().gitGraph.mainBranchOrder;L={},L[r]=null,Z={},Z[r]={name:r,order:a},C=r,U=0,Gt()},Qt=function(){return Object.values(Z).map((a,o)=>a.order!==null?a:{...a,order:parseFloat(`0.${o}`,10)}).sort((a,o)=>a.order-o.order).map(({name:a})=>({name:a}))},Zt=function(){return L},$t=function(){return R},Et=function(){const r=Object.keys(R).map(function(a){return R[a]});return r.forEach(function(a){G.debug(a.id)}),r.sort((a,o)=>a.seq-o.seq),r},te=function(){return C},ee=function(){return kt},re=function(){return S},$={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},ie={getConfig:()=>A().gitGraph,setDirection:jt,setOptions:qt,getOptions:Yt,commit:Kt,branch:Ft,merge:Ut,cherryPick:Wt,checkout:yt,prettyPrint:Xt,clear:Jt,getBranchesAsObjArray:Qt,getBranches:Zt,getCommits:$t,getCommitsArray:Et,getCurrentBranch:te,getDirection:ee,getHead:re,setAccTitle:Mt,getAccTitle:Ct,getAccDescription:At,setAccDescription:Ot,setDiagramTitle:St,getDiagramTitle:It,commitType:$};let J={};const N={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},F=8;let M={},tt={},nt=[],et=0,O="LR";const se=()=>{M={},tt={},J={},et=0,nt=[],O="LR"},wt=r=>{const a=document.createElementNS("http://www.w3.org/2000/svg","text");let o=[];typeof r=="string"?o=r.split(/\\n|\n|/gi):Array.isArray(r)?o=r:o=[];for(const u of o){const n=document.createElementNS("http://www.w3.org/2000/svg","tspan");n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),n.setAttribute("dy","1em"),n.setAttribute("x","0"),n.setAttribute("class","row"),n.textContent=u.trim(),a.appendChild(n)}return a},dt=(r,a,o)=>{const u=A().gitGraph,n=r.append("g").attr("class","commit-bullets"),c=r.append("g").attr("class","commit-labels");let m=0;O==="TB"&&(m=30),Object.keys(a).sort((_,i)=>a[_].seq-a[i].seq).forEach(_=>{const i=a[_],g=O==="TB"?m+10:M[i.branch].pos,p=O==="TB"?M[i.branch].pos:m+10;if(o){let x,f=i.customType!==void 0&&i.customType!==""?i.customType:i.type;switch(f){case N.NORMAL:x="commit-normal";break;case N.REVERSE:x="commit-reverse";break;case N.HIGHLIGHT:x="commit-highlight";break;case N.MERGE:x="commit-merge";break;case N.CHERRY_PICK:x="commit-cherry-pick";break;default:x="commit-normal"}if(f===N.HIGHLIGHT){const d=n.append("rect");d.attr("x",p-10),d.attr("y",g-10),d.attr("height",20),d.attr("width",20),d.attr("class",`commit ${i.id} commit-highlight${M[i.branch].index%F} ${x}-outer`),n.append("rect").attr("x",p-6).attr("y",g-6).attr("height",12).attr("width",12).attr("class",`commit ${i.id} commit${M[i.branch].index%F} ${x}-inner`)}else if(f===N.CHERRY_PICK)n.append("circle").attr("cx",p).attr("cy",g).attr("r",10).attr("class",`commit ${i.id} ${x}`),n.append("circle").attr("cx",p-3).attr("cy",g+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${i.id} ${x}`),n.append("circle").attr("cx",p+3).attr("cy",g+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${i.id} ${x}`),n.append("line").attr("x1",p+3).attr("y1",g+1).attr("x2",p).attr("y2",g-5).attr("stroke","#fff").attr("class",`commit ${i.id} ${x}`),n.append("line").attr("x1",p-3).attr("y1",g+1).attr("x2",p).attr("y2",g-5).attr("stroke","#fff").attr("class",`commit ${i.id} ${x}`);else{const d=n.append("circle");if(d.attr("cx",p),d.attr("cy",g),d.attr("r",i.type===N.MERGE?9:10),d.attr("class",`commit ${i.id} commit${M[i.branch].index%F}`),f===N.MERGE){const y=n.append("circle");y.attr("cx",p),y.attr("cy",g),y.attr("r",6),y.attr("class",`commit ${x} ${i.id} commit${M[i.branch].index%F}`)}f===N.REVERSE&&n.append("path").attr("d",`M ${p-5},${g-5}L${p+5},${g+5}M${p-5},${g+5}L${p+5},${g-5}`).attr("class",`commit ${x} ${i.id} commit${M[i.branch].index%F}`)}}if(O==="TB"?tt[i.id]={x:p,y:m+10}:tt[i.id]={x:m+10,y:g},o){if(i.type!==N.CHERRY_PICK&&(i.customId&&i.type===N.MERGE||i.type!==N.MERGE)&&u.showCommitLabel){const d=c.append("g"),y=d.insert("rect").attr("class","commit-label-bkg"),H=d.append("text").attr("x",m).attr("y",g+25).attr("class","commit-label").text(i.id);let w=H.node().getBBox();if(y.attr("x",m+10-w.width/2-2).attr("y",g+13.5).attr("width",w.width+2*2).attr("height",w.height+2*2),O==="TB"&&(y.attr("x",p-(w.width+4*4+5)).attr("y",g-12),H.attr("x",p-(w.width+4*4)).attr("y",g+w.height-12)),O!=="TB"&&H.attr("x",m+10-w.width/2),u.rotateCommitLabel)if(O==="TB")H.attr("transform","rotate(-45, "+p+", "+g+")"),y.attr("transform","rotate(-45, "+p+", "+g+")");else{let B=-7.5-(w.width+10)/25*9.5,P=10+w.width/25*8.5;d.attr("transform","translate("+B+", "+P+") rotate(-45, "+m+", "+g+")")}}if(i.tag){const d=c.insert("polygon"),y=c.append("circle"),H=c.append("text").attr("y",g-16).attr("class","tag-label").text(i.tag);let w=H.node().getBBox();H.attr("x",m+10-w.width/2);const B=w.height/2,P=g-19.2;d.attr("class","tag-label-bkg").attr("points",` + ${m-w.width/2-4/2},${P+2} + ${m-w.width/2-4/2},${P-2} + ${m+10-w.width/2-4},${P-B-2} + ${m+10+w.width/2+4},${P-B-2} + ${m+10+w.width/2+4},${P+B+2} + ${m+10-w.width/2-4},${P+B+2}`),y.attr("cx",m-w.width/2+4/2).attr("cy",P).attr("r",1.5).attr("class","tag-hole"),O==="TB"&&(d.attr("class","tag-label-bkg").attr("points",` + ${p},${m+2} + ${p},${m-2} + ${p+10},${m-B-2} + ${p+10+w.width+4},${m-B-2} + ${p+10+w.width+4},${m+B+2} + ${p+10},${m+B+2}`).attr("transform","translate(12,12) rotate(45, "+p+","+m+")"),y.attr("cx",p+4/2).attr("cy",m).attr("transform","translate(12,12) rotate(45, "+p+","+m+")"),H.attr("x",p+5).attr("y",m+3).attr("transform","translate(14,14) rotate(45, "+p+","+m+")"))}}m+=50,m>et&&(et=m)})},ae=(r,a,o)=>Object.keys(o).filter(c=>o[c].branch===a.branch&&o[c].seq>r.seq&&o[c].seq0,Q=(r,a,o=0)=>{const u=r+Math.abs(r-a)/2;if(o>5)return u;if(nt.every(m=>Math.abs(m-u)>=10))return nt.push(u),u;const c=Math.abs(r-a);return Q(r,a-c/5,o+1)},ne=(r,a,o,u)=>{const n=tt[a.id],c=tt[o.id],m=ae(a,o,u);let l="",E="",_=0,i=0,g=M[o.branch].index,p;if(m){l="A 10 10, 0, 0, 0,",E="A 10 10, 0, 0, 1,",_=10,i=10,g=M[o.branch].index;const x=n.yc.x&&(l="A 20 20, 0, 0, 0,",E="A 20 20, 0, 0, 1,",_=20,i=20,g=M[a.branch].index,p=`M ${n.x} ${n.y} L ${n.x} ${c.y-_} ${E} ${n.x-i} ${c.y} L ${c.x} ${c.y}`),n.x===c.x&&(g=M[a.branch].index,p=`M ${n.x} ${n.y} L ${n.x+_} ${n.y} ${l} ${n.x+i} ${c.y+_} L ${c.x} ${c.y}`)):(n.yc.y&&(l="A 20 20, 0, 0, 0,",_=20,i=20,g=M[a.branch].index,p=`M ${n.x} ${n.y} L ${c.x-_} ${n.y} ${l} ${c.x} ${n.y-i} L ${c.x} ${c.y}`),n.y===c.y&&(g=M[a.branch].index,p=`M ${n.x} ${n.y} L ${n.x} ${c.y-_} ${l} ${n.x+i} ${c.y} L ${c.x} ${c.y}`));r.append("path").attr("d",p).attr("class","arrow arrow"+g%F)},ce=(r,a)=>{const o=r.append("g").attr("class","commit-arrows");Object.keys(a).forEach(u=>{const n=a[u];n.parents&&n.parents.length>0&&n.parents.forEach(c=>{ne(o,a[c],n,a)})})},oe=(r,a)=>{const o=A().gitGraph,u=r.append("g");a.forEach((n,c)=>{const m=c%F,l=M[n.name].pos,E=u.append("line");E.attr("x1",0),E.attr("y1",l),E.attr("x2",et),E.attr("y2",l),E.attr("class","branch branch"+m),O==="TB"&&(E.attr("y1",30),E.attr("x1",l),E.attr("y2",et),E.attr("x2",l)),nt.push(l);let _=n.name;const i=wt(_),g=u.insert("rect"),x=u.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+m);x.node().appendChild(i);let f=i.getBBox();g.attr("class","branchLabelBkg label"+m).attr("rx",4).attr("ry",4).attr("x",-f.width-4-(o.rotateCommitLabel===!0?30:0)).attr("y",-f.height/2+8).attr("width",f.width+18).attr("height",f.height+4),x.attr("transform","translate("+(-f.width-14-(o.rotateCommitLabel===!0?30:0))+", "+(l-f.height/2-1)+")"),O==="TB"&&(g.attr("x",l-f.width/2-10).attr("y",0),x.attr("transform","translate("+(l-f.width/2-5)+", 0)")),O!=="TB"&&g.attr("transform","translate(-19, "+(l-f.height/2)+")")})},le=function(r,a,o,u){se();const n=A(),c=n.gitGraph;G.debug("in gitgraph renderer",r+` +`,"id:",a,o),J=u.db.getCommits();const m=u.db.getBranchesAsObjArray();O=u.db.getDirection();const l=Pt(`[id="${a}"]`);let E=0;m.forEach((_,i)=>{const g=wt(_.name),p=l.append("g"),x=p.insert("g").attr("class","branchLabel"),f=x.insert("g").attr("class","label branch-label");f.node().appendChild(g);let d=g.getBBox();M[_.name]={pos:E,index:i},E+=50+(c.rotateCommitLabel?40:0)+(O==="TB"?d.width/2:0),f.remove(),x.remove(),p.remove()}),dt(l,J,!1),c.showBranches&&oe(l,m),ce(l,J),dt(l,J,!0),Nt.insertTitle(l,"gitTitleText",c.titleTopMargin,u.db.getDiagramTitle()),Ht(void 0,l,c.diagramPadding,c.useMaxWidth??n.useMaxWidth)},he={draw:le},me=r=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(a=>` + .branch-label${a} { fill: ${r["gitBranchLabel"+a]}; } + .commit${a} { stroke: ${r["git"+a]}; fill: ${r["git"+a]}; } + .commit-highlight${a} { stroke: ${r["gitInv"+a]}; fill: ${r["gitInv"+a]}; } + .label${a} { fill: ${r["git"+a]}; } + .arrow${a} { stroke: ${r["git"+a]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${r.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${r.commitLabelFontSize}; fill: ${r.commitLabelColor};} + .commit-label-bkg { font-size: ${r.commitLabelFontSize}; fill: ${r.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${r.tagLabelFontSize}; fill: ${r.tagLabelColor};} + .tag-label-bkg { fill: ${r.tagLabelBackground}; stroke: ${r.tagLabelBorder}; } + .tag-hole { fill: ${r.textColor}; } + + .commit-merge { + stroke: ${r.primaryColor}; + fill: ${r.primaryColor}; + } + .commit-reverse { + stroke: ${r.primaryColor}; + fill: ${r.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${r.primaryColor}; + fill: ${r.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${r.textColor}; + } +`,ue=me,be={parser:Vt,db:ie,renderer:he,styles:ue};export{be as diagram}; diff --git a/assets/image-02.vasp-chg-diff-20221119172425312-FQuXE-oc.png b/assets/image-02.vasp-chg-diff-20221119172425312-FQuXE-oc.png new file mode 100644 index 00000000..9154d6c2 Binary files /dev/null and b/assets/image-02.vasp-chg-diff-20221119172425312-FQuXE-oc.png differ diff --git a/assets/image-02.vasp-chg-diff-20221119172425350-NEh4dsTO.png b/assets/image-02.vasp-chg-diff-20221119172425350-NEh4dsTO.png new file mode 100644 index 00000000..36d7f565 Binary files /dev/null and b/assets/image-02.vasp-chg-diff-20221119172425350-NEh4dsTO.png differ diff --git a/assets/image-02.vasp-opt-20221119172335103-EzAcl7Hu.png b/assets/image-02.vasp-opt-20221119172335103-EzAcl7Hu.png new file mode 100644 index 00000000..8c3ae89c Binary files /dev/null and b/assets/image-02.vasp-opt-20221119172335103-EzAcl7Hu.png differ diff --git a/assets/image-03.vasp-chg-split-20221119172440345-SkwFM3wD.png b/assets/image-03.vasp-chg-split-20221119172440345-SkwFM3wD.png new file mode 100644 index 00000000..706b9c21 Binary files /dev/null and b/assets/image-03.vasp-chg-split-20221119172440345-SkwFM3wD.png differ diff --git a/assets/image-03.vasp-chg-split-20221119172440366-AsYVt0Sc.png b/assets/image-03.vasp-chg-split-20221119172440366-AsYVt0Sc.png new file mode 100644 index 00000000..cedf9ffe Binary files /dev/null and b/assets/image-03.vasp-chg-split-20221119172440366-AsYVt0Sc.png differ diff --git a/assets/image-03.vasp-chg-split-20221119172440404-xl_8rjts.png b/assets/image-03.vasp-chg-split-20221119172440404-xl_8rjts.png new file mode 100644 index 00000000..a838a30b Binary files /dev/null and b/assets/image-03.vasp-chg-split-20221119172440404-xl_8rjts.png differ diff --git a/assets/image-04.vasp-DOS-20221119172502337-0f9mNQHX.jpg b/assets/image-04.vasp-DOS-20221119172502337-0f9mNQHX.jpg new file mode 100644 index 00000000..f7d81c89 Binary files /dev/null and b/assets/image-04.vasp-DOS-20221119172502337-0f9mNQHX.jpg differ diff --git a/assets/image-06.vasp-adsorption-energy-20221119172411787-GLczK5Wq.png b/assets/image-06.vasp-adsorption-energy-20221119172411787-GLczK5Wq.png new file mode 100644 index 00000000..9bc23913 Binary files /dev/null and b/assets/image-06.vasp-adsorption-energy-20221119172411787-GLczK5Wq.png differ diff --git a/assets/image-11.task-model-of-CO-absorption-on-Au-copy-20221119172646057-iH_ndoPx.png b/assets/image-11.task-model-of-CO-absorption-on-Au-copy-20221119172646057-iH_ndoPx.png new file mode 100644 index 00000000..4686c2cf Binary files /dev/null and b/assets/image-11.task-model-of-CO-absorption-on-Au-copy-20221119172646057-iH_ndoPx.png differ diff --git a/assets/image-12.task-model-of-Rectangular-graphene-20221119172731050-ok3BdR3S.png b/assets/image-12.task-model-of-Rectangular-graphene-20221119172731050-ok3BdR3S.png new file mode 100644 index 00000000..826df1bb Binary files /dev/null and b/assets/image-12.task-model-of-Rectangular-graphene-20221119172731050-ok3BdR3S.png differ diff --git a/assets/image-12.task-model-of-Rectangular-graphene-20221119172731098-ONnZ7TUK.png b/assets/image-12.task-model-of-Rectangular-graphene-20221119172731098-ONnZ7TUK.png new file mode 100644 index 00000000..771fb210 Binary files /dev/null and b/assets/image-12.task-model-of-Rectangular-graphene-20221119172731098-ONnZ7TUK.png differ diff --git a/assets/img/avatar.ico b/assets/img/avatar.ico new file mode 100644 index 00000000..6bbf3689 Binary files /dev/null and b/assets/img/avatar.ico differ diff --git a/assets/img/bg.jpeg b/assets/img/bg.jpeg new file mode 100644 index 00000000..402d7607 Binary files /dev/null and b/assets/img/bg.jpeg differ diff --git a/assets/img/bg.jpg b/assets/img/bg.jpg new file mode 100644 index 00000000..f093e799 Binary files /dev/null and b/assets/img/bg.jpg differ diff --git a/assets/img/favicon.ico b/assets/img/favicon.ico new file mode 100644 index 00000000..6bbf3689 Binary files /dev/null and b/assets/img/favicon.ico differ diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100644 index 00000000..5ba062b9 Binary files /dev/null and b/assets/img/logo.png differ diff --git a/assets/img/more.png b/assets/img/more.png new file mode 100644 index 00000000..830613ba Binary files /dev/null and b/assets/img/more.png differ diff --git a/assets/img/other.png b/assets/img/other.png new file mode 100644 index 00000000..87f80989 Binary files /dev/null and b/assets/img/other.png differ diff --git a/assets/img/panda-waving.png b/assets/img/panda-waving.png new file mode 100644 index 00000000..20246c60 Binary files /dev/null and b/assets/img/panda-waving.png differ diff --git a/assets/img/python.png b/assets/img/python.png new file mode 100644 index 00000000..c3ddebeb Binary files /dev/null and b/assets/img/python.png differ diff --git a/assets/img/ui.png b/assets/img/ui.png new file mode 100644 index 00000000..617c56d7 Binary files /dev/null and b/assets/img/ui.png differ diff --git a/assets/img/web.png b/assets/img/web.png new file mode 100644 index 00000000..0a6e27c4 Binary files /dev/null and b/assets/img/web.png differ diff --git a/assets/index-67a42d7d-Sclb7lyu.js b/assets/index-67a42d7d-Sclb7lyu.js new file mode 100644 index 00000000..7c06dbf7 --- /dev/null +++ b/assets/index-67a42d7d-Sclb7lyu.js @@ -0,0 +1 @@ +import{b as G,i as m,m as O,G as j,l as A}from"./layout-bNXk8SHo.js";import{i as M,u as _,s as H,a as V,b as q,p as D,c as U,d as W,e as Y,f as z,g as L,h as C}from"./edges-80f1ebb6-Okp3_yLQ.js";import{l as i,q as N,c as S,h as T}from"./mermaid.core-Up0YySao.js";import{c as K}from"./createText-aebacdfe-sWKH4swq.js";var Q=4;function Z(e){return G(e,Q)}function x(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:I(e),edges:tt(e)};return m(e.graph())||(t.value=Z(e.graph())),t}function I(e){return O(e.nodes(),function(t){var n=e.node(t),r=e.parent(t),s={v:t};return m(n)||(s.value=n),m(r)||(s.parent=r),s})}function tt(e){return O(e.edges(),function(t){var n=e.edge(t),r={v:t.v,w:t.w};return m(t.name)||(r.name=t.name),m(n)||(r.value=n),r})}let f={},g={},J={};const et=()=>{g={},J={},f={}},X=(e,t)=>(i.trace("In isDecendant",t," ",e," = ",g[t].includes(e)),!!g[t].includes(e)),nt=(e,t)=>(i.info("Decendants of ",t," is ",g[t]),i.info("Edge is ",e),e.v===t||e.w===t?!1:g[t]?g[t].includes(e.v)||X(e.v,t)||X(e.w,t)||g[t].includes(e.w):(i.debug("Tilt, ",t,",not in decendants"),!1)),R=(e,t,n,r)=>{i.warn("Copying children of ",e,"root",r,"data",t.node(e),r);const s=t.children(e)||[];e!==r&&s.push(e),i.warn("Copying (nodes) clusterId",e,"nodes",s),s.forEach(c=>{if(t.children(c).length>0)R(c,t,n,r);else{const d=t.node(c);i.info("cp ",c," to ",r," with parent ",e),n.setNode(c,d),r!==t.parent(c)&&(i.warn("Setting parent",c,t.parent(c)),n.setParent(c,t.parent(c))),e!==r&&c!==e?(i.debug("Setting parent",c,e),n.setParent(c,e)):(i.info("In copy ",e,"root",r,"data",t.node(e),r),i.debug("Not Setting parent for node=",c,"cluster!==rootId",e!==r,"node!==clusterId",c!==e));const l=t.edges(c);i.debug("Copying Edges",l),l.forEach(u=>{i.info("Edge",u);const h=t.edge(u.v,u.w,u.name);i.info("Edge data",h,r);try{nt(u,r)?(i.info("Copying as ",u.v,u.w,h,u.name),n.setEdge(u.v,u.w,h,u.name),i.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):i.info("Skipping copy of edge ",u.v,"-->",u.w," rootId: ",r," clusterId:",e)}catch(w){i.error(w)}})}i.debug("Removing node",c),t.removeNode(c)})},P=(e,t)=>{const n=t.children(e);let r=[...n];for(const s of n)J[s]=e,r=[...r,...P(s,t)];return r},b=(e,t)=>{i.trace("Searching",e);const n=t.children(e);if(i.trace("Searching children of id ",e,n),n.length<1)return i.trace("This is a valid node",e),e;for(const r of n){const s=b(r,t);if(s)return i.trace("Found replacement for",e," => ",s),s}},E=e=>!f[e]||!f[e].externalConnections?e:f[e]?f[e].id:e,it=(e,t)=>{if(!e||t>10){i.debug("Opting out, no graph ");return}else i.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(i.warn("Cluster identified",n," Replacement id in edges: ",b(n,e)),g[n]=P(n,e),f[n]={id:b(n,e),clusterData:e.node(n)})}),e.nodes().forEach(function(n){const r=e.children(n),s=e.edges();r.length>0?(i.debug("Cluster identified",n,g),s.forEach(c=>{if(c.v!==n&&c.w!==n){const d=X(c.v,n),l=X(c.w,n);d^l&&(i.warn("Edge: ",c," leaves cluster ",n),i.warn("Decendants of XXX ",n,": ",g[n]),f[n].externalConnections=!0)}})):i.debug("Not a cluster ",n,g)}),e.edges().forEach(function(n){const r=e.edge(n);i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let s=n.v,c=n.w;if(i.warn("Fix XXX",f,"ids:",n.v,n.w,"Translating: ",f[n.v]," --- ",f[n.w]),f[n.v]&&f[n.w]&&f[n.v]===f[n.w]){i.warn("Fixing and trixing link to self - removing XXX",n.v,n.w,n.name),i.warn("Fixing and trixing - removing XXX",n.v,n.w,n.name),s=E(n.v),c=E(n.w),e.removeEdge(n.v,n.w,n.name);const d=n.w+"---"+n.v;e.setNode(d,{domId:d,id:d,labelStyle:"",labelText:r.label,padding:0,shape:"labelRect",style:""});const l=structuredClone(r),u=structuredClone(r);l.label="",l.arrowTypeEnd="none",u.label="",l.fromCluster=n.v,u.toCluster=n.v,e.setEdge(s,d,l,n.name+"-cyclic-special"),e.setEdge(d,c,u,n.name+"-cyclic-special")}else(f[n.v]||f[n.w])&&(i.warn("Fixing and trixing - removing XXX",n.v,n.w,n.name),s=E(n.v),c=E(n.w),e.removeEdge(n.v,n.w,n.name),s!==n.v&&(r.fromCluster=n.v),c!==n.w&&(r.toCluster=n.w),i.warn("Fix Replacing with XXX",s,c,n.name),e.setEdge(s,c,r,n.name))}),i.warn("Adjusted Graph",x(e)),p(e,0),i.trace(f)},p=(e,t)=>{if(i.warn("extractor - ",t,x(e),e.children("D")),t>10){i.error("Bailing out");return}let n=e.nodes(),r=!1;for(const s of n){const c=e.children(s);r=r||c.length>0}if(!r){i.debug("Done, no node has children",e.nodes());return}i.debug("Nodes = ",n,t);for(const s of n)if(i.debug("Extracting node",s,f,f[s]&&!f[s].externalConnections,!e.parent(s),e.node(s),e.children("D")," Depth ",t),!f[s])i.debug("Not a cluster",s,t);else if(!f[s].externalConnections&&e.children(s)&&e.children(s).length>0){i.warn("Cluster without external connections, without a parent and with children",s,t);let d=e.graph().rankdir==="TB"?"LR":"TB";f[s]&&f[s].clusterData&&f[s].clusterData.dir&&(d=f[s].clusterData.dir,i.warn("Fixing dir",f[s].clusterData.dir,d));const l=new j({multigraph:!0,compound:!0}).setGraph({rankdir:d,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});i.warn("Old graph before copy",x(e)),R(s,e,l,s),e.setNode(s,{clusterNode:!0,id:s,clusterData:f[s].clusterData,labelText:f[s].labelText,graph:l}),i.warn("New graph after copy node: (",s,")",x(l)),i.debug("Old graph after copy",x(e))}else i.warn("Cluster ** ",s," **not meeting the criteria !externalConnections:",!f[s].externalConnections," no parent: ",!e.parent(s)," children ",e.children(s)&&e.children(s).length>0,e.children("D"),t),i.debug(f);n=e.nodes(),i.warn("New list of nodes",n);for(const s of n){const c=e.node(s);i.warn(" Now next level",s,c),c.clusterNode&&p(c.graph,t+1)}},F=(e,t)=>{if(t.length===0)return[];let n=Object.assign(t);return t.forEach(r=>{const s=e.children(r),c=F(e,s);n=[...n,...c]}),n},st=e=>F(e,e.children()),rt=(e,t)=>{i.info("Creating subgraph rect for ",t.id,t);const n=e.insert("g").attr("class","cluster"+(t.class?" "+t.class:"")).attr("id",t.id),r=n.insert("rect",":first-child"),s=N(S().flowchart.htmlLabels),c=n.insert("g").attr("class","cluster-label"),d=t.labelType==="markdown"?K(c,t.labelText,{style:t.labelStyle,useHtmlLabels:s}):c.node().appendChild(L(t.labelText,t.labelStyle,void 0,!0));let l=d.getBBox();if(N(S().flowchart.htmlLabels)){const a=d.children[0],o=T(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}const u=0*t.padding,h=u/2,w=t.width<=l.width+u?l.width+u:t.width;t.width<=l.width+u?t.diff=(l.width-t.width)/2-t.padding/2:t.diff=-t.padding/2,i.trace("Data ",t,JSON.stringify(t)),r.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-w/2).attr("y",t.y-t.height/2-h).attr("width",w).attr("height",t.height+u),s?c.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2)+")"):c.attr("transform","translate("+t.x+", "+(t.y-t.height/2)+")");const v=r.node().getBBox();return t.width=v.width,t.height=v.height,t.intersect=function(a){return C(t,a)},n},at=(e,t)=>{const n=e.insert("g").attr("class","note-cluster").attr("id",t.id),r=n.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2-c).attr("width",t.width+s).attr("height",t.height+s).attr("fill","none");const d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.intersect=function(l){return C(t,l)},n},ct=(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),s=n.insert("g").attr("class","cluster-label"),c=n.append("rect"),d=s.node().appendChild(L(t.labelText,t.labelStyle,void 0,!0));let l=d.getBBox();if(N(S().flowchart.htmlLabels)){const a=d.children[0],o=T(d);l=a.getBoundingClientRect(),o.attr("width",l.width),o.attr("height",l.height)}l=d.getBBox();const u=0*t.padding,h=u/2,w=t.width<=l.width+t.padding?l.width+t.padding:t.width;t.width<=l.width+t.padding?t.diff=(l.width+t.padding*0-t.width)/2:t.diff=-t.padding/2,r.attr("class","outer").attr("x",t.x-w/2-h).attr("y",t.y-t.height/2-h).attr("width",w+u).attr("height",t.height+u),c.attr("class","inner").attr("x",t.x-w/2-h).attr("y",t.y-t.height/2-h+l.height-1).attr("width",w+u).attr("height",t.height+u-l.height-3),s.attr("transform","translate("+(t.x-l.width/2)+", "+(t.y-t.height/2-t.padding/3+(N(S().flowchart.htmlLabels)?5:3))+")");const v=r.node().getBBox();return t.height=v.height,t.intersect=function(a){return C(t,a)},n},ot=(e,t)=>{const n=e.insert("g").attr("class",t.classes).attr("id",t.id),r=n.insert("rect",":first-child"),s=0*t.padding,c=s/2;r.attr("class","divider").attr("x",t.x-t.width/2-c).attr("y",t.y-t.height/2).attr("width",t.width+s).attr("height",t.height+s);const d=r.node().getBBox();return t.width=d.width,t.height=d.height,t.diff=-t.padding/2,t.intersect=function(l){return C(t,l)},n},lt={rect:rt,roundedWithTitle:ct,noteGroup:at,divider:ot};let k={};const ft=(e,t)=>{i.trace("Inserting cluster");const n=t.shape||"rect";k[t.id]=lt[n](e,t)},dt=()=>{k={}},$=async(e,t,n,r,s)=>{i.info("Graph in recursive render: XXX",x(t),s);const c=t.graph().rankdir;i.trace("Dir in recursive render - dir:",c);const d=e.insert("g").attr("class","root");t.nodes()?i.info("Recursive render XXX",t.nodes()):i.info("No nodes found for",t),t.edges().length>0&&i.trace("Recursive edges",t.edge(t.edges()[0]));const l=d.insert("g").attr("class","clusters"),u=d.insert("g").attr("class","edgePaths"),h=d.insert("g").attr("class","edgeLabels"),w=d.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(a){const o=t.node(a);if(s!==void 0){const y=JSON.parse(JSON.stringify(s.clusterData));i.info("Setting data for cluster XXX (",a,") ",y,s),t.setNode(s.id,y),t.parent(a)||(i.trace("Setting parent",a,s.id),t.setParent(a,s.id,y))}if(i.info("(Insert) Node XXX"+a+": "+JSON.stringify(t.node(a))),o&&o.clusterNode){i.info("Cluster identified",a,o.width,t.node(a));const y=await $(w,o.graph,n,r,t.node(a)),B=y.elem;_(o,B),o.diff=y.diff||0,i.info("Node bounds (abc123)",a,o,o.width,o.x,o.y),H(B,o),i.warn("Recursive render complete ",B,o)}else t.children(a).length>0?(i.info("Cluster - the non recursive path XXX",a,o.id,o,t),i.info(b(o.id,t)),f[o.id]={id:b(o.id,t),node:o}):(i.info("Node - the non recursive path",a,o.id,o),await V(w,t.node(a),c))})),t.edges().forEach(function(a){const o=t.edge(a.v,a.w,a.name);i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a)),i.info("Edge "+a.v+" -> "+a.w+": ",a," ",JSON.stringify(t.edge(a))),i.info("Fix",f,"ids:",a.v,a.w,"Translateing: ",f[a.v],f[a.w]),q(h,o)}),t.edges().forEach(function(a){i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(a))}),i.info("#############################################"),i.info("### Layout ###"),i.info("#############################################"),i.info(t),A(t),i.info("Graph after layout:",x(t));let v=0;return st(t).forEach(function(a){const o=t.node(a);i.info("Position "+a+": "+JSON.stringify(t.node(a))),i.info("Position "+a+": ("+o.x,","+o.y,") width: ",o.width," height: ",o.height),o&&o.clusterNode?D(o):t.children(a).length>0?(ft(l,o),f[o.id].node=o):D(o)}),t.edges().forEach(function(a){const o=t.edge(a);i.info("Edge "+a.v+" -> "+a.w+": "+JSON.stringify(o),o);const y=U(u,a,o,f,n,t,r);W(o,y)}),t.nodes().forEach(function(a){const o=t.node(a);i.info(a,o.type,o.diff),o.type==="group"&&(v=o.diff)}),{elem:d,diff:v}},xt=async(e,t,n,r,s)=>{M(e,n,r,s),Y(),z(),dt(),et(),i.warn("Graph at first:",JSON.stringify(x(t))),it(t),i.warn("Graph after:",JSON.stringify(x(t))),await $(e,t,r,s)};export{xt as r}; diff --git a/assets/index.html--5e5Ww4o.js b/assets/index.html--5e5Ww4o.js new file mode 100644 index 00000000..9a3fe64d --- /dev/null +++ b/assets/index.html--5e5Ww4o.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-ea20dcf0","path":"/dft-learning/pages/832cb5/","title":"PBS","lang":"zh-CN","frontmatter":{"title":"PBS","date":"2020-10-31T18:00:00.000Z","updated":"2022-11-14T11:11:12.000Z","permalink":"/dft-learning/pages/832cb5/","category":["Linux"],"description":"PBS 作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。 PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。 PBS 命令 提交作业 用以下命令提交作业: qsub [options] <control script>","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/832cb5/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"PBS"}],["meta",{"property":"og:description","content":"PBS 作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。 PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。 PBS 命令 提交作业 用以下命令提交作业: qsub [options] <control script>"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-11-14T03:12:12.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T18:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-11-14T03:12:12.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"PBS\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-10-31T18:00:00.000Z\\",\\"dateModified\\":\\"2022-11-14T03:12:12.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"PBS 命令","slug":"pbs-命令","link":"#pbs-命令","children":[{"level":3,"title":"提交作业","slug":"提交作业","link":"#提交作业","children":[]},{"level":3,"title":"查看任务","slug":"查看任务","link":"#查看任务","children":[]},{"level":3,"title":"qstat 的选项","slug":"qstat-的选项","link":"#qstat-的选项","children":[]},{"level":3,"title":"取消任务","slug":"取消任务","link":"#取消任务","children":[]},{"level":3,"title":"停止正在运行的任务","slug":"停止正在运行的任务","link":"#停止正在运行的任务","children":[]},{"level":3,"title":"checkjob","slug":"checkjob","link":"#checkjob","children":[]},{"level":3,"title":"pbsnodes","slug":"pbsnodes","link":"#pbsnodes","children":[]}]},{"level":2,"title":"PBS 脚本","slug":"pbs-脚本","link":"#pbs-脚本","children":[{"level":3,"title":"PBS 作业属性","slug":"pbs-作业属性","link":"#pbs-作业属性","children":[]},{"level":3,"title":"资源列表","slug":"资源列表","link":"#资源列表","children":[]},{"level":3,"title":"PBS 常用环境变量","slug":"pbs-常用环境变量","link":"#pbs-常用环境变量","children":[]}]},{"level":2,"title":"高级配置","slug":"高级配置","link":"#高级配置","children":[{"level":3,"title":"Qmgr 查看所有配置","slug":"qmgr-查看所有配置","link":"#qmgr-查看所有配置","children":[]},{"level":3,"title":"普通用户查询他人作业","slug":"普通用户查询他人作业","link":"#普通用户查询他人作业","children":[]},{"level":3,"title":"解除堆栈大小限制","slug":"解除堆栈大小限制","link":"#解除堆栈大小限制","children":[]}]}],"git":{"createdTime":1662985651000,"updatedTime":1668395532000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":5}]},"readingTime":{"minutes":8.17,"words":2450},"filePathRelative":"dft-learning/03.Linux/PBS.md","localizedDate":"2020年11月1日","excerpt":"

    PBS

    \\n

    作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。

    \\n

    PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。

    \\n

    PBS 命令

    \\n

    提交作业

    \\n

    用以下命令提交作业:

    \\n
    qsub [options] <control script>\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html--V6z5CvO.js b/assets/index.html--V6z5CvO.js new file mode 100644 index 00000000..91391e36 --- /dev/null +++ b/assets/index.html--V6z5CvO.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-55a1aa9d","path":"/dft-learning/","title":"不完全不准确不系统的计算模拟入坑记录","lang":"zh-CN","frontmatter":{"title":"不完全不准确不系统的计算模拟入坑记录","date":"2020-10-31T18:00:00.000Z","updated":"2022-09-16T10:04:29.000Z","heroText":"计算模拟学习笔记","home":false,"index":false,"postList":"simple","tagline":"不完全不准确不系统的计算模拟入坑记录","description":"不完全不准确不系统的计算模拟入坑记录 学不会系列之材料计算 本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。 课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。 教学大纲: 绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。 Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。 Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。 VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。 结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。 电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。 反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。 计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"不完全不准确不系统的计算模拟入坑记录"}],["meta",{"property":"og:description","content":"不完全不准确不系统的计算模拟入坑记录 学不会系列之材料计算 本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。 课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。 教学大纲: 绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。 Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。 Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。 VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。 结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。 电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。 反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。 计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"不完全不准确不系统的计算模拟入坑记录"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T18:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"不完全不准确不系统的计算模拟入坑记录\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-10-31T18:00:00.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":2.55,"words":765},"filePathRelative":"dft-learning/README.md","localizedDate":"2020年11月1日","excerpt":"

    不完全不准确不系统的计算模拟入坑记录

    \\n
    学不会系列之材料计算
    \\n
    \\n

    本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。

    \\n

    课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。

    \\n

    教学大纲:

    \\n
      \\n
    1. 绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。
    2. \\n
    3. Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。
    4. \\n
    5. Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
    6. \\n
    7. VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
    8. \\n
    9. 结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。
    10. \\n
    11. 电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。
    12. \\n
    13. 反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。
    14. \\n
    15. 计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础
    16. \\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-04USsxaR.js b/assets/index.html-04USsxaR.js new file mode 100644 index 00000000..f4fa2498 --- /dev/null +++ b/assets/index.html-04USsxaR.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-31dd63ff","path":"/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/","title":"08.其他","lang":"zh-CN","frontmatter":{"title":"08.其他","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"08.其他"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"08.其他\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-0JGa55sF.js b/assets/index.html-0JGa55sF.js new file mode 100644 index 00000000..bc957e47 --- /dev/null +++ b/assets/index.html-0JGa55sF.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-726f7072","path":"/code/linux/intro/","title":"Linux","lang":"zh-CN","frontmatter":{"title":"Linux","date":"2020-10-31T18:00:00.000Z","updated":"2022-09-16T18:39:26.000Z","permalink":"/code/linux/intro/","category":["Linux"],"redirectFrom":"/dft-learning/pages/9810fa/","description":"Linux 没啥好写的,不就是个系统,区别于 Windows、MacOs 嘛。 一些非初级非高级玩法 Linux 为非 ROOT 用户安装应用程序","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/intro/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux"}],["meta",{"property":"og:description","content":"Linux 没啥好写的,不就是个系统,区别于 Windows、MacOs 嘛。 一些非初级非高级玩法 Linux 为非 ROOT 用户安装应用程序"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T18:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Linux\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-10-31T18:00:00.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"一些非初级非高级玩法","slug":"一些非初级非高级玩法","link":"#一些非初级非高级玩法","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.23,"words":70},"filePathRelative":"code/linux/00.intro.md","localizedDate":"2020年11月1日","excerpt":"

    Linux

    \\n

    没啥好写的,不就是个系统,区别于 WindowsMacOs 嘛。

    \\n

    一些非初级非高级玩法

    \\n\\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-0NFUYqoh.js b/assets/index.html-0NFUYqoh.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-0NFUYqoh.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-0NjsvMae.js b/assets/index.html-0NjsvMae.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-0NjsvMae.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-0kcXt3ms.js b/assets/index.html-0kcXt3ms.js new file mode 100644 index 00000000..a9ec145a --- /dev/null +++ b/assets/index.html-0kcXt3ms.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-39235e3a","path":"/category/other-app/","title":"Other App 分类","lang":"zh-CN","frontmatter":{"title":"Other App 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"Other App","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/other-app/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Other App 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Other App 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-13vAgEUq.js b/assets/index.html-13vAgEUq.js new file mode 100644 index 00000000..1b235213 --- /dev/null +++ b/assets/index.html-13vAgEUq.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-5606cfbc","path":"/dft-learning/pages/install/","title":"软件安装","lang":"zh-CN","frontmatter":{"title":"软件安装","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-16T17:12:33.000Z","permalink":"/dft-learning/pages/install/","article":false,"index":false,"timeline":false,"description":"软件安装","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/install/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"软件安装"}],["meta",{"property":"og:description","content":"软件安装"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T09:42:44.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T09:42:44.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"软件安装\\",\\"description\\":\\"软件安装\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663321364000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":7}]},"readingTime":{"minutes":0.11,"words":32},"filePathRelative":"dft-learning/02.Install/README.md","localizedDate":"2022年9月13日","excerpt":"

    软件安装

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-1Ib6BxE3.js b/assets/index.html-1Ib6BxE3.js new file mode 100644 index 00000000..0639d979 --- /dev/null +++ b/assets/index.html-1Ib6BxE3.js @@ -0,0 +1,18 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as i,c as o,a as s,b as n,e as l,w as c,d}from"./app-Mf7X6hWu.js";const p="/assets/image-04.vasp-DOS-20221119172502337-0f9mNQHX.jpg",r={},u=s("h1",{id:"态密度分析",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#态密度分析","aria-hidden":"true"},"#"),n(" 态密度分析")],-1),m=s("p",null,"态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。",-1),v=s("p",null,[n("在"),s("strong",null,"非自洽计算"),n("的基础上进行态密度分析。")],-1),b=s("p",null,"本页以计算 O2 的态密度为例。",-1),_=s("h2",{id:"步骤",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#步骤","aria-hidden":"true"},"#"),n(" 步骤")],-1),h=s("code",null,"3-nscf",-1),k=d(`

    计算完成后用 VTST Script 的脚本 split_dos 分离态密度:

    [zjb@op 3-nscf]$ split_dos
    +The OUTCAR exists, we use it to get the Fermi level,
    +the RWIGS tag and the number of spins.
    +Fermi level: -6.6846
    +Spin polarized calculation
    +LORBIT = 11
    +WARNING: not completely test for vasp.4.*
    +Use at your own risk. Please check results for consistency.
    +7 6006
    +0 7 6006
    +1 6008 12007
    +2 12009 18008
    +
    +[zjb@op 3-nscf]$ ls
    +CHG     CONTCAR  DOS1  DOSCAR    IBZKPT  KPOINTS  OUTCAR   PCDAT   POTCAR  REPORT  tmp.dat   vasp.pbs     WAVECAR
    +CHGCAR  DOS0     DOS2  EIGENVAL  INCAR   OSZICAR  out.log  POSCAR  PROCAR  stdout  tmp.dat2  vasprun.xml  XDATCAR
    +

    这一命令后得到了 DOS0DOS1DOS2 三个文件,DOS0 是总的态密度,DOS1 和 DOS2 分别是第 1 个 O 原子,第二个 O 原子的态密度。

    使用脚本画图:

    dosplot.pl DOS0
    +

    执行后生成了 dosplot.eps,下载,使用矢量图工具打开。

    dosplot.eps
    dosplot.eps

    也可以将 DOS0 回传,使用 Origin 画图。

    ',8);function O(f,g){const e=t("RouterLink");return i(),o("div",null,[u,m,v,b,_,s("p",null,[n("本页操作在完成 "),l(e,{to:"/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/02.vasp-opt.html"},{default:c(()=>[n("O2 结构优化、自洽、非自洽")]),_:1}),n(" 之后进行。在 "),h,n(" 文件夹中继续。")]),k])}const R=a(r,[["render",O],["__file","index.html.vue"]]);export{R as default}; diff --git a/assets/index.html-1JsIXzJU.js b/assets/index.html-1JsIXzJU.js new file mode 100644 index 00000000..fd52fb83 --- /dev/null +++ b/assets/index.html-1JsIXzJU.js @@ -0,0 +1,71 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as l,c,a as n,b as e,e as a,d as i}from"./app-Mf7X6hWu.js";const r={},d=n("h1",{id:"在-windows-中使用-bash-shell",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#在-windows-中使用-bash-shell","aria-hidden":"true"},"#"),e(" 在 Windows 中使用 Bash shell")],-1),p=n("br",null,null,-1),u={href:"https://link.zhihu.com/?target=https%3A//www.yuque.com/achuan-2/blog/eu4rbz",target:"_blank",rel:"noopener noreferrer"},h=n("br",null,null,-1),b={href:"https://link.zhihu.com/?target=https%3A//achuan-2.github.io/posts/be43.html",target:"_blank",rel:"noopener noreferrer"},m={href:"https://zhuanlan.zhihu.com/p/418321777",target:"_blank",rel:"noopener noreferrer"},v=n("figure",null,[n("img",{src:"https://pic1.zhimg.com/v2-fe5921aa3b6ff6e32c670a8845e41634_b.jpg",alt:"",tabindex:"0",loading:"lazy"}),n("figcaption")],-1),g=n("p",null,"前排介绍",-1),k=n("ul",null,[n("li",null,"Git bash 是什么?"),n("li",null,"Git Bash 源自 MinGW, 是一个用于开发原生 Window 应用的开发环境, 提供了针对 WIn32 应用的 GCC、GNU binutils 等工具."),n("li",null,"为什么要用 Git Bash?"),n("li",null,"Windows 下的 Powershell 并不好用,或者说我并不知道如何使用。既然相较之下,更熟悉 Linux 命令行,就干脆把 Git Bash 当作默认终端了。Git Bash 自带 Vim,还集成了许多 Linux 命令,对我来说更加顺手")],-1),_=n("h2",{id:"_0-准备工作",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_0-准备工作","aria-hidden":"true"},"#"),e(" 0 准备工作")],-1),f={href:"https://link.zhihu.com/?target=https%3A//gitforwindows.org/",target:"_blank",rel:"noopener noreferrer"},q=i(`

    安装教程随便网上找一篇就好了,不多说

    1 设置为默认终端

    1. Windows Terminal 配置 Git bash 为默认终端
    2. VSCode 配置 Git bash 为默认终端

    1.1 Windows Terminal 配置 Git bash 为默认终端

    现在 Windows Terminal 有了图形界面,直接选择就好

    具体 json 文件配置

    "defaultProfile": "{c891c3d2-b798-4857-83c0-89bf2ea34021}",
    +    "profiles": 
    +    {
    +        "defaults": 
    +        {
    +            ...
    +        },
    +        "list": 
    +        [
    +            {
    +                "commandline": "D:\\\\Environment\\\\Git\\\\bin\\\\bash.exe --login -i",
    +                "guid": "{c891c3d2-b798-4857-83c0-89bf2ea34021}",
    +                "name": "Git Bash",
    +                "icon": "D:\\\\Program_Files\\\\Git\\\\mingw64\\\\share\\\\git\\\\git-for-windows.ico"
    +            },
    +

    其中 "commandline": "D:\\\\Environment\\\\Git\\\\bin\\\\bash.exe --login -i",

    之所以加了--login -i 后面见 「2 可能出现的问题」

    1.2 VSCode 配置 Git bash 为默认终端

    前排提示:我最初在网上搜索,发现之前许多教程里的 json 变量 “terminal.integrated.shell.windows” 已经过时了,现在是需要配置 profiles。

    `,13),w={href:"https://link.zhihu.com/?target=https%3A//code.visualstudio.com/docs/editor/integrated-terminal",target:"_blank",rel:"noopener noreferrer"},x=i(`

    Ctrl+,打开设置,搜索 shell:windows,在 settings.json 的最后添加下面的配置

    自行修改 Git Bash 和 Powershell exe 的路径

    "terminal.integrated.automationShell.windows": "D:\\\\Environment\\\\Git\\\\bin\\\\bash.exe",
    +  "terminal.integrated.profiles.windows": {
    +    "PowerShell": {
    +      "path": "C:\\\\Program Files\\\\PowerShell\\\\7-preview\\\\pwsh.exe",
    +      "icon": "terminal-powershell",
    +      "args": [
    +        "-NoLogo" //不显示 powershell 开头的输出
    +//不加载Powershell的配置和美化
    +//,"-NoProfile" 
    +      ]
    +    },
    +    "Command Prompt": {
    +      "path": [
    +        "\${env:windir}\\\\Sysnative\\\\cmd.exe",
    +        "\${env:windir}\\\\System32\\\\cmd.exe"
    +      ],
    +      "args": [],
    +      "icon": "terminal-cmd"
    +    },
    +    "Bash": {
    +      "path": [
    +        "D:\\\\Environment\\\\Git\\\\bin\\\\bash.exe" //Git bash路径
    +      ],
    +      "icon": "terminal-bash",
    +      "args": ["-i","-l"] // 激活Git在外部的配置
    +        }
    +  },
    +

    2 可能出现的配置问题

    1. Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置
    2. Git Bash 不会加载 ~/.bashrc 的配置
    3. Git-Bash 修改前缀 (隐藏用户 @ 主机)
    4. 修复 Git Bash 中文乱码

    2.1 Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置

    解决方法,其实上面已经给出了,就是在 bash.exe 后面加-l, - i 配置,这样激活 Git Bash 就会加载 ~/.bash_profile 的配置

    2.2 Git Bash 不会加载 ~/.bashrc 的配置

    确实是这样,Git Bash 在 Win 端只会 source ~/.bash_profile 而不会激活 ~/.bashrc 的配置。所以如果你和我一样,喜欢在 ~/.bashrc 配置别名,在 ~/.bash_profile 配置环境的话,

    解决方法是那就在 ~/.bash_profile 加一行,source ~/.bashrc 就好啦!

    2.3 Git-Bash 修改前缀 (隐藏用户 @ 主机)

    如果直接打开 Git Bash 终端,你会发现显示的东西很冗余

    有用户 @ 主机名,MINGW64,绝对路径。其中前面两个都是固定的,所以就想要把这个隐藏

    在 Git-Bash 中我们输入以下代码: vi ~/.bash_profile , 然后把以下内容添加到配置文件里面。我这里是隐藏了用户 @ 主机,同时把绝对路径改成了只显示当前文件夹, 需要看全路径的话用 pwd 就显示了。这样不至于截图、被人看到时,太暴露隐私哈哈哈。

    根据需要自行选择配置。

    # Shows Git branch name in prompt.
    +parse_git_branch() {
    +  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \\(.*\\)/ (\\1)/'
    +}
    +# 显示 用户 @ 主机
    +# export PS1="\\u@\\h \\W\\[\\033[32m\\]\\$(parse_git_branch)\\[\\033[00m\\] $ "
    +# 隐藏用户 @ 主机,显示当前文件夹 
    +#export PS1="\\W\\[\\033[32m\\]\\$(parse_git_branch)\\[\\033[00m\\]"
    +
    +# 只显示当前文件夹
    +export PS1="\\[\\e[32;1m\\]\\W $\\[\\e[0m\\]\\[\\033[32m\\]\\$(parse_git_branch)\\[\\033[00m\\] "
    +
    +# 显示全路径
    +#export PS1="\\[\\e[32;1m\\]\\w $\\[\\e[0m\\]\\[\\033[32m\\]\\$(parse_git_branch)\\[\\033[00m\\] "
    +

    粘贴完后,source .bash_profile 的结果

    补充下环境下默认的特殊符号所代表的意义:

    • \\u :当前用户的账号名称
    • \\w :完整的工作目录名称。家目录会以 ~代替
    • \\W :利用 basename 取得工作目录名称,所以只会列出最后一个目录
    • \\H:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是 fc4.linux
    • \\h :仅取主机的第一个名字,如上例,则为 fc4,.linux 则被省略
    • \\d :代表日期,格式为 weekday month date,例如:"Mon Aug1"
    • \\t :显示时间为 24 小时格式,如:HH:MM:SS
    • \\T :显示时间为 12 小时格式
    • \\A :显示时间为 24 小时格式:HH:MM
    • \\v :BASH 的版本信息
    • # :下达的第几个命令
    • $ :提示字符,如果是 root 时,提示符为:# ,普通用户则为:$

    参考:

    `,22),G={href:"https://link.zhihu.com/?target=https%3A//www.cnblogs.com/kevingrace/p/5985970.html",target:"_blank",rel:"noopener noreferrer"},y=i('

    2.4 修复 Git Bash 中文乱码

    Git bash 自身配置:

    • 终端不能显示中文:打开 Git bash,右键打开选项, Options->Text->Locale 改为 zh_CNCharacter set 改为 UTF-8
    • 解决 git status 不能显示中文:终端输入 git config --global core.quotepath false

    Windows Terminal 和 VSCode 中别忘了添加 --login -i 参数

    参考资料:

    ',5),z={href:"https://zhuanlan.zhihu.com/p/166407830",target:"_blank",rel:"noopener noreferrer"},B={href:"https://zhuanlan.zhihu.com/p/133706032",target:"_blank",rel:"noopener noreferrer"},C=n("h3",{id:"解决中文无法显示的问题",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#解决中文无法显示的问题","aria-hidden":"true"},"#"),e(" 解决中文无法显示的问题")],-1),S={href:"https://juejin.cn/post/6844904071535525896",target:"_blank",rel:"noopener noreferrer"},W=i(`

    打开Git安装目录下的 C:\\Git\\etc\\bash.bashrc (具体路径以你安装的为准)文件,在末尾追加一行:

    export LC_ALL=en_US.UTF-8
    +复制代码
    +

    并保存,重启终端就好了。

    3 你可能不知道却非常有用的技巧

    1. 在终端启动软件查看文件
    2. Linux 下常用软件下载
    3. 资源管理器地址妙用,直接在终端打开当前文件夹

    3.1 在终端启动软件查看文件

    • 在终端如何快速查看文件
    • Windows 里有一个很有用的命令 「start」,start . 用资源管理器打开当前目录(或用 explorer .),start 文件名 用默认软件打开这个文件,这样就不用开了终端,还要手动去找这个文件再查看了,工作流得到优化
    • 在终端以 VSCode 打开当前项目
    • 首先需要在环境变量 Path 中添加 VSCode 的 Code.exe 地址,比如我的是 D:\\Program_Files\\Microsoft VS Code\\Code.exe
    • 然后在终端下使用 code ./ 就可以打开当前项目

    参考:

    `,8),j={href:"https://link.zhihu.com/?target=https%3A//blog.csdn.net/u012995964/article/details/85810626",target:"_blank",rel:"noopener noreferrer"},V=n("h3",{id:"_3-2-linux-下常用软件下载",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_3-2-linux-下常用软件下载","aria-hidden":"true"},"#"),e(" 3.2 Linux 下常用软件下载")],-1),P=n("ul",null,[n("li",null,"安装 tree 以树形显示文件结构"),n("li",null,"安装")],-1),T={href:"https://link.zhihu.com/?target=http%3A//gnuwin32.sourceforge.net/packages/tree.htm",target:"_blank",rel:"noopener noreferrer"},A=n("li",null,"下载解压完成后,将 bin 目录下的 tree.exe 复制到 Git Bash 安装路径下的 usr/bin 文件夹下,完成",-1),L=i("
    • 常用命令
    • 基本命令格式:tree [-option] [dir]
    • 显示中文,-N,如果中文名是中文,不加-N 有些电脑上是乱码的
    • 选择展示的层级:-L [n]
    • 只显示文件夹:-d
    • 区分文件夹、普通文件、执行文件:-FC,C 是加上颜色,
    • 起别名:可以起一个别名 alias tree='tree -FCN'
    • 输出目录结构到文件,写文档的时候需要展示项目目录就会用到 tree -L 2 -I '*.js|node_modules|*.md|*.json|*.css|*.ht' > tree.txt
    • 添加 wget 下载工具
    • 安装
    ",1),N={href:"https://link.zhihu.com/?target=https%3A//eternallybored.org/misc/wget/2",target:"_blank",rel:"noopener noreferrer"},$=n("li",null,"移动到 Git Bash 安装路径下的 usr/bin 文件夹下,完成",-1),F=i(`
    • 常用命令
    • 最直接的下载命令:wget [url]
    • 指定文件名 -O
    • 指定目录 -P
    • 下载多个文件 wget -i [url.txt]
    • 断点续传 wget -c -t [n] [url],n 代表尝试的次数,0 代表一直尝试
    • 后台执行:wget -b [url] 可以添加 -b 选项,这时执行该命令的回显信息都会自动存储在 wget.log 文件中
    • 下载一个网站的所有图片、视频、pdf wget -r -A.pdf url

    3.3 资源管理器地址妙用,直接在终端打开当前文件夹

    alt + d 可以直接把光标移动到资源管理器地址栏,对于不同终端

    • cmd: 输入 cmd
    • Windows Terminal:输入 wt
    • Git Bash: 输入 bash
    • VSCode:
    • 方法一:输入 code.cmd .,必须要加.,不然只是打开 VSCode 软件,而不会打开当前文件夹
    • 方法二:新建变量 code,输入 VSCode 地址,然后在地址栏就可以输入 %code%(还是上面那个输入快点,不用按 shift)
    • 方法三:直接右键吧,为啥这么折腾
    • 方法四:utools 快捷命令
    • 为什么我直接输入 code 就是打开一个 sh 脚本呢,我用 start . 打开这个脚本的目录,突然恍然大悟,原来就是因为这个 code 文件影响到了我直接用 code,我看了下脚本,这个应该是用于 wsl 启动的(我随口说的,你可以尝试去掉这个文件,然而也不能通过在地址栏输入 code 打开 VSCode 就是了)

    3.4 添加一些常用别名增加效率

    我的 ~/.bashrc 文件

    # 为了更好的push到github,配置代理
    +export http_proxy=http://127.0.0.1:10809
    +export https_proxy=http://127.0.0.1:10809
    +
    +# 方便cd 进 hexo
    +alias blog='cd /e/blog'
    +# hexo 博客发布,num run是package.json中script list配置的别名
    +alias dev='npm run v'
    +alias publish='npm run p'
    +
    +# 配置tree别名
    +alias tree='tree -FCN'
    +
    `,8);function M(D,E){const s=o("ExternalLinkIcon");return l(),c("div",null,[d,n("blockquote",null,[n("p",null,[e("概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率"),p,e(" 本文语雀地址:"),n("a",u,[e("https://www.yuque.com/achuan-2/blog/eu4rbz"),a(s)]),h,e(" 本文博客地址:"),n("a",b,[e("https://achuan-2.github.io/posts/be43.html"),a(s)]),e(" source: "),n("a",m,[e("https://zhuanlan.zhihu.com/p/418321777"),a(s)])])]),v,g,k,_,n("p",null,[e("Windows 下载地址:"),n("a",f,[e("Git for Windows"),a(s)])]),q,n("p",null,[e("参考官网的文档:"),n("a",w,[e("Integrated Terminal in Visual Studio Code"),a(s)])]),x,n("ul",null,[n("li",null,[n("a",G,[e("linux 系统终端命令提示符设置(PS1)记录 - 散尽浮华 - 博客园 (cnblogs.com)"),a(s)])])]),y,n("ul",null,[n("li",null,[n("a",z,[e("Windows Terminal 修复 Git Bash 中文乱码 && 添加 WT 到右键菜单 - 知乎 (zhihu.com)"),a(s)])]),n("li",null,[n("a",B,[e("git 显示中文和解决中文乱码 - 知乎 (zhihu.com)"),a(s)])])]),C,n("blockquote",null,[n("p",null,[n("a",S,[e("Win10也要愉快地使用Bash - 掘金 (juejin.cn)"),a(s)])])]),W,n("ul",null,[n("li",null,[n("a",j,[e("Windows 小技巧 -- 命令行窗口打开指定目录的资源管理器_Anyers 的专栏-CSDN 博客_命令行打开资源管理器"),a(s)])])]),V,P,n("ol",null,[n("li",null,[e("下载地址:"),n("a",T,[e("Tree for Windows (sourceforge.net)"),a(s)]),e(",下载 Binaries 的 Zip 文件")]),A]),L,n("ol",null,[n("li",null,[e("下载 wget 二进制安装包,地址:"),n("a",N,[e("https://eternallybored.org/misc/wget/2"),a(s)])]),$]),F])}const U=t(r,[["render",M],["__file","index.html.vue"]]);export{U as default}; diff --git a/assets/index.html-1Xf6BIQG.js b/assets/index.html-1Xf6BIQG.js new file mode 100644 index 00000000..d94fabfc --- /dev/null +++ b/assets/index.html-1Xf6BIQG.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-279833aa","path":"/code/linux/install-app-non-root/","title":"Linux 下无 Root 权限编译软件","lang":"zh-CN","frontmatter":{"title":"Linux 下无 Root 权限编译软件","date":"2020-11-21T12:12:10.000Z","updated":"2022-09-16T18:37:40.000Z","permalink":"/code/linux/install-app-non-root/","category":["Install","linux"],"redirectFrom":"/dft-learning/pages/4738ea/","description":"Linux 下无 Root 权限编译软件 参考:linux 非 root 用户安装软件入门 | tlanyan.me . 下为上文的备份。 下面是 Linux 下非 root 用户安装软件的一般流程: 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码; 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz; 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置; 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟); 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中; 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/install-app-non-root/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux 下无 Root 权限编译软件"}],["meta",{"property":"og:description","content":"Linux 下无 Root 权限编译软件 参考:linux 非 root 用户安装软件入门 | tlanyan.me . 下为上文的备份。 下面是 Linux 下非 root 用户安装软件的一般流程: 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码; 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz; 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置; 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟); 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中; 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-21T12:12:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Linux 下无 Root 权限编译软件\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-21T12:12:10.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":6,"words":1799},"filePathRelative":"code/linux/31.linux-install-app-for-nonRoot.md","localizedDate":"2020年11月21日","excerpt":"

    Linux 下无 Root 权限编译软件

    \\n

    参考:linux 非 root 用户安装软件入门 | tlanyan.me .

    \\n

    下为上文的备份。

    \\n
    \\n

    下面是 Linux 下非 root 用户安装软件的一般流程:

    \\n
      \\n
    1. 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码;
    2. \\n
    3. 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz
    4. \\n
    5. 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置;
    6. \\n
    7. 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟);
    8. \\n
    9. 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中;
    10. \\n
    11. 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。
    12. \\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-1ZWZ5KQE.js b/assets/index.html-1ZWZ5KQE.js new file mode 100644 index 00000000..5d7be4a9 --- /dev/null +++ b/assets/index.html-1ZWZ5KQE.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as d,c as n,a as e,b as a,e as i,d as c}from"./app-Mf7X6hWu.js";const h={},s=e("h1",{id:"关于材料计算",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#关于材料计算","aria-hidden":"true"},"#"),a(" 关于材料计算")],-1),l=e("p",null,"不写了,反正写了也看不懂 — — !",-1),_=e("p",null,"嘻",-1),b=e("h2",{id:"关于理论计算",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#关于理论计算","aria-hidden":"true"},"#"),a(" 关于理论计算")],-1),p=e("p",null,"啊这...我也不知道啊...",-1),u={href:"https://www.bilibili.com/video/BV1z7411f7ra",target:"_blank",rel:"noopener noreferrer"},f=e("div",{class:"btv",id:"btv"},[e("iframe",{src:"//player.bilibili.com/player.html?aid=96602788&bvid=BV1z7411f7ra&cid=164912463&page=1",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true"}," ")],-1),m=c('

    第一性原理

    Todo

    密度泛函理论

    Todo

    局域密度近似

    Todo

    自洽场

    Todo

    过渡态理论

    Todo

    Todo

    这理论可太多了

    ',12);function x(k,q){const o=t("ExternalLinkIcon");return d(),n("div",null,[s,l,_,b,p,e("p",null,[a("插播一个我觉得还不错的视频 "),e("a",u,[a("谈谈理论计算如何入门(上) | BV1z7411f7ra"),i(o)]),a(" ,UP是刘锦程博士:")]),f,m])}const V=r(h,[["render",x],["__file","index.html.vue"]]);export{V as default}; diff --git a/assets/index.html-1bHTdLG6.js b/assets/index.html-1bHTdLG6.js new file mode 100644 index 00000000..622516df --- /dev/null +++ b/assets/index.html-1bHTdLG6.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"电子结构",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#电子结构","aria-hidden":"true"},"#"),r(" 电子结构")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-279NygD0.js b/assets/index.html-279NygD0.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-279NygD0.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-2MwUsXrZ.js b/assets/index.html-2MwUsXrZ.js new file mode 100644 index 00000000..0d9977cd --- /dev/null +++ b/assets/index.html-2MwUsXrZ.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as n,a as e,b as o}from"./app-Mf7X6hWu.js";const r={},c=e("h1",{id:"linux",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#linux","aria-hidden":"true"},"#"),o(" Linux")],-1),s=[c];function i(_,d){return a(),n("div",null,s)}const x=t(r,[["render",i],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-2X8BX4oS.js b/assets/index.html-2X8BX4oS.js new file mode 100644 index 00000000..b8501d8e --- /dev/null +++ b/assets/index.html-2X8BX4oS.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-01560935","path":"/timeline/","title":"时间轴","lang":"zh-CN","frontmatter":{"title":"时间轴","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"type","key":"timeline"},"layout":"Timeline","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/timeline/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"时间轴"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"时间轴\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-2fgXUZq7.js b/assets/index.html-2fgXUZq7.js new file mode 100644 index 00000000..8f501f1f --- /dev/null +++ b/assets/index.html-2fgXUZq7.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-f322b4c4","path":"/code/citation-style-language/primer/","title":"CSL 介绍","lang":"zh-CN","frontmatter":{"title":"CSL 介绍","date":"2022-08-01T16:23:04.000Z","updated":"2022-08-05T18:10:49.000Z","description":"CSL 介绍 [!warning] WORK IN PROGRESS 此页面正在施工中。 前言 CSL 是一种基于 XML 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 CSL 规范。 CSL 是什么","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/primer/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"CSL 介绍"}],["meta",{"property":"og:description","content":"CSL 介绍 [!warning] WORK IN PROGRESS 此页面正在施工中。 前言 CSL 是一种基于 XML 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 CSL 规范。 CSL 是什么"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:23:04.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"CSL 介绍\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:23:04.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"前言","slug":"前言","link":"#前言","children":[]},{"level":2,"title":"CSL 是什么","slug":"csl-是什么","link":"#csl-是什么","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.99,"words":296},"filePathRelative":"code/citation-style-language/primer/README.md","localizedDate":"2022年8月2日","excerpt":"

    CSL 介绍

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    前言

    \\n

    CSL 是一种基于 XML 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 CSL 规范

    \\n

    CSL 是什么

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-2jxvlkHq.js b/assets/index.html-2jxvlkHq.js new file mode 100644 index 00000000..ed64aec5 --- /dev/null +++ b/assets/index.html-2jxvlkHq.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-389e5394","path":"/dft-learning/pages/b32235/","title":"VASP 的输出文件","lang":"zh-CN","frontmatter":{"title":"VASP 的输出文件","date":"2020-11-21T20:21:10.000Z","permalink":"/dft-learning/pages/b32235/","category":["VASP"],"updated":"2022-01-16T19:57:00.000Z","description":"VASP 的输出文件 基本的输出文件:OUTCAR、OSZICAR、stdout; OUTCAR todo OSZICAR 收敛速度与当前步的信息。 其他 LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。 官网文档 [Category: Output_Files - vaspwiki](https://www.vasp.at/wiki/index.php/Category: Output_Files)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/b32235/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP 的输出文件"}],["meta",{"property":"og:description","content":"VASP 的输出文件 基本的输出文件:OUTCAR、OSZICAR、stdout; OUTCAR todo OSZICAR 收敛速度与当前步的信息。 其他 LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。 官网文档 [Category: Output_Files - vaspwiki](https://www.vasp.at/wiki/index.php/Category: Output_Files)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-21T20:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"VASP 的输出文件\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-21T20:21:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"OUTCAR","slug":"outcar","link":"#outcar","children":[]},{"level":2,"title":"OSZICAR","slug":"oszicar","link":"#oszicar","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]},{"level":2,"title":"官网文档","slug":"官网文档","link":"#官网文档","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.28,"words":85},"filePathRelative":"dft-learning/05.VASP/01.VASP输入输出文件/05.vasp-output-files.md","localizedDate":"2020年11月22日","excerpt":"

    VASP 的输出文件

    \\n

    基本的输出文件:OUTCAR、OSZICAR、stdout;

    \\n

    OUTCAR

    \\n
    \\n

    todo

    \\n
    \\n

    OSZICAR

    \\n

    收敛速度与当前步的信息。

    \\n

    其他

    \\n

    LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。

    \\n

    官网文档

    \\n

    [Category: Output_Files - vaspwiki](https://www.vasp.at/wiki/index.php/Category: Output_Files)

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-3cwD-Oo0.js b/assets/index.html-3cwD-Oo0.js new file mode 100644 index 00000000..6a12a7c1 --- /dev/null +++ b/assets/index.html-3cwD-Oo0.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-2599bd96","path":"/dft-learning/pages/19e493/","title":"使用 NEB 方法计算反应路径","lang":"zh-CN","frontmatter":{"title":"使用 NEB 方法计算反应路径","date":"2020-11-17T19:28:10.000Z","updated":"2022-11-19T15:50:06.000Z","permalink":"/dft-learning/pages/19e493/","category":["VASP"],"description":"使用 NEB 方法计算反应路径 流程 分别对初态和末态进行结构优化 使用脚本生成中间过程图像 (结构) NEB 计算 处理结果 文件结构 详情 neb 计算的文件结构示意 这张图整挺好,直接拿过来了,这是原地址。 [zjb@op neb]$ tree . ├── ini ***初态常规结构优化*** │ ├── CONTCAR -初态优化后的结构——新的初态 │ ├── INCAR -初态结构优化的输入文件1 │ ├── ini2.vasp - │ ├── KPOINTS -初态结构优化的输入文件2 │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR -初态结构优化的输入文件3 │ ├── POTCAR -初态结构优化的输入文件4 │ ├── stdout │ ├── vasp.pbs ├── fin ***末态常规结构优化*** │ ├── CONTCAR -末态优化后的结构——新的末态 │ ├── fin2.vasp │ ├── INCAR │ ├── KPOINTS │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR │ ├── POTCAR │ ├── stdout │ └── vasp.pbs ├── 00 ***↓↓↓*****中间态*****↓↓↓*** │ ├── OUTCAR -初态结构优化后的OUTCAR ../ini/OUTCAR │ ├── POSCAR -初态结构优化后的CONTCAR ../ini/CONTCAR │ └── POSCAR.xyz ├── 01 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ └── POSCAR.xyz │ └── stdout ├── 02 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ ├── POSCAR.xyz │ └── stdout ├── 03 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ ├── POSCAR.xyz │ └── stdout ├── 04 │ ├── OUTCAR *末态结构优化后的OUTCAR ../fin/OUTCAR │ ├── POSCAR *末态结构优化后的CONTCAR ../fin/CONTCAR │ └── POSCAR.xyz ***↑↑↑*****中间态*****↑↑↑*** ├── INCAR ***neb计算的输入文件等*** ├── KPOINTS ├── movie ├── movie.xyz ├── neb.dat ├── out.log ├── POTCAR ├── stdout ├── vasp.pbs └── vasprun.xml","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/19e493/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"使用 NEB 方法计算反应路径"}],["meta",{"property":"og:description","content":"使用 NEB 方法计算反应路径 流程 分别对初态和末态进行结构优化 使用脚本生成中间过程图像 (结构) NEB 计算 处理结果 文件结构 详情 neb 计算的文件结构示意 这张图整挺好,直接拿过来了,这是原地址。 [zjb@op neb]$ tree . ├── ini ***初态常规结构优化*** │ ├── CONTCAR -初态优化后的结构——新的初态 │ ├── INCAR -初态结构优化的输入文件1 │ ├── ini2.vasp - │ ├── KPOINTS -初态结构优化的输入文件2 │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR -初态结构优化的输入文件3 │ ├── POTCAR -初态结构优化的输入文件4 │ ├── stdout │ ├── vasp.pbs ├── fin ***末态常规结构优化*** │ ├── CONTCAR -末态优化后的结构——新的末态 │ ├── fin2.vasp │ ├── INCAR │ ├── KPOINTS │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR │ ├── POTCAR │ ├── stdout │ └── vasp.pbs ├── 00 ***↓↓↓*****中间态*****↓↓↓*** │ ├── OUTCAR -初态结构优化后的OUTCAR ../ini/OUTCAR │ ├── POSCAR -初态结构优化后的CONTCAR ../ini/CONTCAR │ └── POSCAR.xyz ├── 01 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ └── POSCAR.xyz │ └── stdout ├── 02 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ ├── POSCAR.xyz │ └── stdout ├── 03 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ ├── POSCAR.xyz │ └── stdout ├── 04 │ ├── OUTCAR *末态结构优化后的OUTCAR ../fin/OUTCAR │ ├── POSCAR *末态结构优化后的CONTCAR ../fin/CONTCAR │ └── POSCAR.xyz ***↑↑↑*****中间态*****↑↑↑*** ├── INCAR ***neb计算的输入文件等*** ├── KPOINTS ├── movie ├── movie.xyz ├── neb.dat ├── out.log ├── POTCAR ├── stdout ├── vasp.pbs └── vasprun.xml"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"使用 NEB 方法计算反应路径"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-17T19:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"使用 NEB 方法计算反应路径\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-11-17T19:28:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"流程","slug":"流程","link":"#流程","children":[]},{"level":2,"title":"文件结构","slug":"文件结构","link":"#文件结构","children":[]},{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"Step1. 分别对初态和末态进行常规的结构优化","slug":"step1-分别对初态和末态进行常规的结构优化","link":"#step1-分别对初态和末态进行常规的结构优化","children":[]},{"level":3,"title":"Step2. 使用脚本处理中间过程","slug":"step2-使用脚本处理中间过程","link":"#step2-使用脚本处理中间过程","children":[]},{"level":3,"title":"Step3. NEB 计算","slug":"step3-neb-计算","link":"#step3-neb-计算","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"[Nudged Elastic Band] Scripts","slug":"nudged-elastic-band-scripts","link":"#nudged-elastic-band-scripts","children":[]},{"level":3,"title":"[Nudged Elastic Band] Options","slug":"nudged-elastic-band-options","link":"#nudged-elastic-band-options","children":[]}]},{"level":2,"title":"参考资料","slug":"参考资料","link":"#参考资料","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":6}]},"readingTime":{"minutes":7.82,"words":2345},"filePathRelative":"dft-learning/05.VASP/04.反应路径/01.vasp-neb.md","localizedDate":"2020年11月18日","excerpt":"

    使用 NEB 方法计算反应路径

    \\n

    流程

    \\n
      \\n
    1. 分别对初态和末态进行结构优化
    2. \\n
    3. 使用脚本生成中间过程图像 (结构)
    4. \\n
    5. NEB 计算
    6. \\n
    7. 处理结果
    8. \\n
    \\n

    文件结构

    \\n
    详情\\n
    neb 计算的文件结构示意
    \\n
    \\n

    这张图整挺好,直接拿过来了,这是原地址

    \\n
    \\n
    [zjb@op neb]$ tree\\n.\\n├── ini                ***初态常规结构优化***\\n│   ├── CONTCAR            -初态优化后的结构——新的初态\\n│   ├── INCAR              -初态结构优化的输入文件1\\n│   ├── ini2.vasp          -\\n│   ├── KPOINTS            -初态结构优化的输入文件2\\n│   ├── OSZICAR\\n│   ├── OUTCAR\\n│   ├── out.log\\n│   ├── POSCAR             -初态结构优化的输入文件3\\n│   ├── POTCAR             -初态结构优化的输入文件4\\n│   ├── stdout\\n│   ├── vasp.pbs\\n├── fin                ***末态常规结构优化***\\n│   ├── CONTCAR            -末态优化后的结构——新的末态\\n│   ├── fin2.vasp\\n│   ├── INCAR\\n│   ├── KPOINTS\\n│   ├── OSZICAR\\n│   ├── OUTCAR\\n│   ├── out.log\\n│   ├── POSCAR\\n│   ├── POTCAR\\n│   ├── stdout\\n│   └── vasp.pbs\\n├── 00                 ***↓↓↓*****中间态*****↓↓↓***\\n│   ├── OUTCAR            -初态结构优化后的OUTCAR   ../ini/OUTCAR\\n│   ├── POSCAR            -初态结构优化后的CONTCAR  ../ini/CONTCAR\\n│   └── POSCAR.xyz\\n├── 01\\n│   ├── CONTCAR\\n│   ├── OUTCAR\\n│   ├── POSCAR\\n│   └── POSCAR.xyz\\n│   └── stdout\\n├── 02\\n│   ├── CONTCAR\\n│   ├── OUTCAR\\n│   ├── POSCAR\\n│   ├── POSCAR.xyz\\n│   └── stdout\\n├── 03\\n│   ├── CONTCAR\\n│   ├── OUTCAR\\n│   ├── POSCAR\\n│   ├── POSCAR.xyz\\n│   └── stdout\\n├── 04\\n│   ├── OUTCAR            *末态结构优化后的OUTCAR  ../fin/OUTCAR\\n│   ├── POSCAR            *末态结构优化后的CONTCAR ../fin/CONTCAR\\n│   └── POSCAR.xyz     ***↑↑↑*****中间态*****↑↑↑***\\n\\n├── INCAR              ***neb计算的输入文件等***\\n├── KPOINTS\\n├── movie\\n├── movie.xyz\\n├── neb.dat\\n├── out.log\\n├── POTCAR\\n├── stdout\\n├── vasp.pbs\\n└── vasprun.xml\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-3vrG3pSO.js b/assets/index.html-3vrG3pSO.js new file mode 100644 index 00000000..e91872e8 --- /dev/null +++ b/assets/index.html-3vrG3pSO.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-1dd09e5c","path":"/code/citation-style-language/specification/appendix/","title":"Appendix","lang":"zh-CN","frontmatter":{"title":"Appendix","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/appendix/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Appendix"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Appendix\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-4L31BXeH.js b/assets/index.html-4L31BXeH.js new file mode 100644 index 00000000..dbf4ff88 --- /dev/null +++ b/assets/index.html-4L31BXeH.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-f785aee2","path":"/software/","title":"软件使用","lang":"zh-CN","frontmatter":{"title":"软件使用","date":"2022-09-16T18:49:03.000Z","updated":"2022-09-16T19:02:25.000Z","permalink":"/software/","article":false,"index":false,"order":0,"timeline":false,"description":"软件使用 这里存放一些软件方面的笔记。 目录 自用 Windows Apps 列表 Zoero 手册:https://zotero-cn.github.io/zotero","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"软件使用"}],["meta",{"property":"og:description","content":"软件使用 这里存放一些软件方面的笔记。 目录 自用 Windows Apps 列表 Zoero 手册:https://zotero-cn.github.io/zotero"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T18:49:03.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"软件使用\\",\\"description\\":\\"软件使用 这里存放一些软件方面的笔记。 目录 自用 Windows Apps 列表 Zoero 手册:https://zotero-cn.github.io/zotero\\"}"]]},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":2}]},"readingTime":{"minutes":0.21,"words":62},"filePathRelative":"software/README.md","localizedDate":"2022年9月17日","excerpt":"

    软件使用

    \\n

    这里存放一些软件方面的笔记。

    \\n

    目录

    \\n\\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-4YUEmOgT.js b/assets/index.html-4YUEmOgT.js new file mode 100644 index 00000000..2a9e50ed --- /dev/null +++ b/assets/index.html-4YUEmOgT.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-e90de79a","path":"/dft-learning/pages/bbb6cc/","title":"VASP 计算电荷密度差","lang":"zh-CN","frontmatter":{"title":"VASP 计算电荷密度差","date":"2020-11-28T13:28:10.000Z","permalink":"/dft-learning/pages/bbb6cc/","category":["VASP"],"updated":"2022-11-19T16:34:53.000Z","description":"VASP 计算电荷密度差 文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/bbb6cc/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP 计算电荷密度差"}],["meta",{"property":"og:description","content":"VASP 计算电荷密度差 文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"VASP 计算电荷密度差"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-28T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"VASP 计算电荷密度差\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-11-28T13:28:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"流程","slug":"流程","link":"#流程","children":[]},{"level":2,"title":"目录结构","slug":"目录结构","link":"#目录结构","children":[]},{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"Step1:对 AB 进行结构优化 geo","slug":"step1-对-ab-进行结构优化-geo","link":"#step1-对-ab-进行结构优化-geo","children":[]},{"level":3,"title":"Step2:静电自洽","slug":"step2-静电自洽","link":"#step2-静电自洽","children":[]},{"level":3,"title":"Step3:求差","slug":"step3-求差","link":"#step3-求差","children":[]}]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[{"level":3,"title":"求差的其他方法","slug":"求差的其他方法","link":"#求差的其他方法","children":[]},{"level":3,"title":"为什么 chgdiff.pl 是后减前?","slug":"为什么-chgdiff-pl-是后减前","link":"#为什么-chgdiff-pl-是后减前","children":[]},{"level":3,"title":"chgdiff.pl 后少了原子","slug":"chgdiff-pl-后少了原子","link":"#chgdiff-pl-后少了原子","children":[]}]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":5}]},"readingTime":{"minutes":5.59,"words":1678},"filePathRelative":"dft-learning/05.VASP/03.电子结构/02.vasp-chg-diff.md","localizedDate":"2020年11月28日","excerpt":"

    VASP 计算电荷密度差

    \\n

    文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-4awr8kEm.js b/assets/index.html-4awr8kEm.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-4awr8kEm.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-5FQIohU3.js b/assets/index.html-5FQIohU3.js new file mode 100644 index 00000000..8905bcd7 --- /dev/null +++ b/assets/index.html-5FQIohU3.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-5bc93818","path":"/category/","title":"分类","lang":"zh-CN","frontmatter":{"title":"分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-5Qya19lK.js b/assets/index.html-5Qya19lK.js new file mode 100644 index 00000000..6d24668a --- /dev/null +++ b/assets/index.html-5Qya19lK.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-087aa3e5","path":"/dft-learning/pages/4abf1b/","title":"表面能的计算","lang":"zh-CN","frontmatter":{"title":"表面能的计算","date":"2021-02-21T12:52:30.000Z","category":["VASP","优化"],"permalink":"/dft-learning/pages/4abf1b/","updated":"2022-01-16T19:57:11.000Z","description":"表面能计算 定义 表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/4abf1b/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"表面能的计算"}],["meta",{"property":"og:description","content":"表面能计算 定义 表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-02-21T12:52:30.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"表面能的计算\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-02-21T12:52:30.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"定义","slug":"定义","link":"#定义","children":[]},{"level":2,"title":"怎么算","slug":"怎么算","link":"#怎么算","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":3.65,"words":1096},"filePathRelative":"dft-learning/05.VASP/02.优化/05.vasp-surface-energy.md","localizedDate":"2021年2月21日","excerpt":"

    表面能计算

    \\n

    定义

    \\n

    表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-5bg7tJ2F.js b/assets/index.html-5bg7tJ2F.js new file mode 100644 index 00000000..29f0c1a8 --- /dev/null +++ b/assets/index.html-5bg7tJ2F.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"软件安装",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#软件安装","aria-hidden":"true"},"#"),r(" 软件安装")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-5kSJeijP.js b/assets/index.html-5kSJeijP.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-5kSJeijP.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-5rrp5meq.js b/assets/index.html-5rrp5meq.js new file mode 100644 index 00000000..7c5aa0b1 --- /dev/null +++ b/assets/index.html-5rrp5meq.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"结构优化",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#结构优化","aria-hidden":"true"},"#"),r(" 结构优化")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-64j_S6LF.js b/assets/index.html-64j_S6LF.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-64j_S6LF.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-6Ke33YLi.js b/assets/index.html-6Ke33YLi.js new file mode 100644 index 00000000..a92a0103 --- /dev/null +++ b/assets/index.html-6Ke33YLi.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0d003bb2","path":"/dft-learning/pages/df30ef/","title":"VASP","lang":"zh-CN","frontmatter":{"title":"VASP","date":"2020-12-15T13:28:10.000Z","permalink":"/dft-learning/pages/df30ef/","category":["VASP"],"dir":{"link":true},"updated":"2022-10-13T21:17:48.000Z","description":"VASP VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。 vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。 因此我们需要区分开 VASP 和 VASPKIT。VASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/df30ef/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP"}],["meta",{"property":"og:description","content":"VASP VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。 vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。 因此我们需要区分开 VASP 和 VASPKIT。VASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-12-15T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"VASP\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-12-15T13:28:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":6}]},"readingTime":{"minutes":1.21,"words":363},"filePathRelative":"dft-learning/05.VASP/README.md","localizedDate":"2020年12月15日","excerpt":"

    VASP

    \\n

    VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。

    \\n

    vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。

    \\n

    因此我们需要区分开 VASPVASPKITVASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-6KfMzBnc.js b/assets/index.html-6KfMzBnc.js new file mode 100644 index 00000000..554c4ebe --- /dev/null +++ b/assets/index.html-6KfMzBnc.js @@ -0,0 +1,200 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as l,c as r,a as e,b as n,e as a,d as i}from"./app-Mf7X6hWu.js";const c={},d=i(`

    准备 VASP 的输入文件

    输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。

    该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。


    VASPKIT 生成输入文件的选项

    VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具:

    [zjb@op O2_opt]$ vaspkit
    + 
    +            \\\\\\///         
    +           / _  _ \\       Hey, you must know what you are doing.  
    +         (| (.)(.) |)     Otherwise you might get wrong results!  
    + +-----.OOOo--()--oOOO.------------------------------------------+
    + |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
    + |        Core Developer: Vei WANG (wangvei@icloud.com)          |
    + |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
    + |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
    + +-----.oooO-----------------------------------------------------+
    +        (   )   Oooo.     
    +         \\ (    (   )     
    +          \\_)    ) /      
    +                (_/       
    + ===================== Structural Options ========================
    + 1)  VASP Input Files Generator    2)  Elastic-Properties         
    + 3)  K-Path Generator              4)  Structure Editor           
    + 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
    + 
    + ===================== Electronic Options ========================
    + 11) Density-of-States             21) DFT Band-Structure         
    + 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
    + 26) Fermi-Surface                 28) Band-Structure Unfolding   
    + 
    + =========== Charge & Potential & Wavefunction Options ===========
    + 31) Charge & Spin Density         42) Potential-Related          
    + 51) Wave-Function Analysis  
    + ====================== Misc Utilities ===========================
    + 71) Optical-Properties            72) Molecular-Dynamics Kit 
    + 73) VASP2other Interface          74) USER interface
    + 91) Semiconductor Calculator      92) 2D-Materials Kit       
    +                                                                  
    + 0)  Quit                                                         
    + ------------>>
    +
    +

    选择 1) VASP Input Files Generator

    ------------>>
    +1
    + ==================== VASP Input Files Options ===================
    + 101) Customize INCAR File                                        
    + 102) Generate KPOINTS File for SCF Calculation                   
    + 103) Generate POTCAR File with Default Setting                   
    + 104) Generate POTCAR File with User Specified Potential          
    + 105) Generate POSCAR File from cif (no fractional occupations)   
    + 106) Generate POSCAR File from Material Studio xsd (retain fixes)
    + 107) Reformat POSCAR File in Specified Order of Elements         
    + 108) Successive Procedure to Generate VASP Files and Check       
    + 109) Check All VASP Files                                        
    +                                                                  
    + 0)   Quit                                                        
    + 9)   Back                                                        
    + ------------>>
    +
    +

    上面 101-106 都可以生成输入文件,然后就可以根据需求去选择了。


    POSCAR

    POSCAR 文件可以自己写入,也可以通过 Materials Studio 建模后转换格式,还可以从一些结构网站获取结构。

    方法 1:通过新建 POSCAR 文件并手动写入内容

    vi POSCAR
    +

    方法 2:通过 Materials Studio 建模以生成 POSCAR

    在 MS 中建模完成后,有如下几种方式将其转换为 POSCAR

    2.1. 使用 VASPKIT 的 cif2pos.py

    从 MS 建模完成后导出为 cif 文件:file-exportsave as type : .cif,上传到集群上,使用 vaspkit-1-105) Generate POSCAR File from cif (no fractional occupations)

      ------------>>
    + 105
    +  Please type in the filename of cif->
    + NaCl_import.cif           # 在这里输入了.cif文件的文件名
    + Pleas input the order of element, \`ENTER\` for default!
    + Example: 'NA CL' in this CIF
    +                           #在这里需要输入元素的顺序,通常可以按回车使用默认值
    +   -->> (01) POSCAR has been generated...
    +  +---------------------------------------------------------------+
    +  |                       * ACKNOWLEDGMENTS *                     |
    +  | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    +  | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    +  +---------------------------------------------------------------+
    +  |                          * CITATIONS *                        |
    +  | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    +  | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    +  | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    +  +---------------------------------------------------------------+
    + [zjb@op NaCl]$ 
    + 
    +



     


     













    在第 4 行,会要求你输入 .cif 文件的文件名。在第 7 行,会要求你输入 元素的种类,如果第 6 行提示的正确,可以回车使用默认。

    2.2. 使用 VESTA 转换

    从 MS 建模完成后导出为 cif 文件:file-export-.cif,用 VESTA 打开该 cif 文件,选择 file-export datasave as : xxx.vasp。将 xxx.vasp 文件上传到服务器,将其重命名为 POSCARcp xxx.vasp POSCAR

    2.3. 使用 vaspkit 的 xsd2pos.py

    从 MS 建模完成后导出为 xsd 文件,上传,使用 vaspkit-1)VASP Input Files Generator-106) Generate POSCAR File from Material Studio xsd (retain fixes).

    另外值得一提的是,通过 xsd2pos 可以保留原子的位置限制信息,而上面两种导出为 .cif 的方式会丢失原子固定。

    `,26),p=e("code",null,"POSCAR",-1),u=e("code",null,"cif",-1),v=e("code",null,"105",-1),m=e("code",null,"vesta",-1),b=e("code",null,"POSCAR",-1),h={href:"https://mp.weixin.qq.com/s/F82Hzh4saiOpp4xLFU_HGg",target:"_blank",rel:"noopener noreferrer"},k=e("code",null,"perl",-1),g=e("code",null,"POSCAR",-1),S=e("code",null,"vaspkit",-1),A=e("code",null,"xsd",-1),P=e("code",null,"POSCAR",-1),C=e("code",null,"vaspkit",-1),f=e("code",null,"106",-1),I=e("code",null,"xsd",-1),x=e("code",null,"Fix Fractional Position",-1),R=e("code",null,"Fix Cartesian Position",-1),T={href:"https://tamaswells.github.io/VASPKIT_manual/manual0.73/vaspkit-manual-0.73.html#header-n67",target:"_blank",rel:"noopener noreferrer"},_=e("h3",{id:"方法-3-从结构网站获取",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#方法-3-从结构网站获取","aria-hidden":"true"},"#"),n(" 方法 3:从结构网站获取")],-1),O={href:"https://materialsproject.org/",target:"_blank",rel:"noopener noreferrer"},N=e("code",null,".vasp",-1),F=e("code",null,"POSCAR",-1),G=i(`

    值得一提的是 VASPKIT 官方文档提到,有时候下载到的 .vasp 文件,里面会有制表符与空格的问题,最好通过 109) Check All VASP Files 检查一下,以免计算失败。

    INCAR

    VASPKIT 选择 101,然后选择 INCAR 选项,就生成了 INCAR 文件

     ------------>>
    +101
    + +-------------------------- Warm Tips --------------------------+
    +                You MUST Know What You Are Doing
    +  Some Parameters in INCAR File Neet To Be Set/Adjusted Manually      
    + +---------------------------------------------------------------+
    + ======================== INCAR Options ==========================
    + ST) Static-Calculation            SR) Standard Relaxation        
    + MG) Magnetic Properties           SO) Spin-Orbit Coupling         
    + D3) DFT-D3 no-damping Correction  H6) HSE06 Calculation         
    + PU) DFT+U Calculation             MD) Molecular Dynamics        
    + GW) GW0 Calculation               BS) BSE Calculation  
    + DC) Elastic Constant              EL) ELF Calculation       
    + BD) Bader Charge Analysis         OP) Optical Properties        
    + EC) Static Dielectric Constant    PC) Decomposed Charge Density   
    + FD) Phonon-Finite-Displacement    DT) Phonon-DFPT            
    + NE) Nudged Elastic Band (NEB)     DM) The Dimer Method             
    + FQ) Frequence Calculations        LR) Lattice Relaxation          
    + 
    + 0)   Quit                                                       
    + 9)   Back      
    + ------------>>
    + Input Key-Parameters (STH6D3 means HSE06-D3 Static-Calcualtion)
    +
    +

    根据计算需要,选择相应类型的选项,如结构优化标准弛豫:

    SR
    + INCAR parameters are from user-specified Global.
    + INCAR parameters are from user-specified SR.
    +  -->> (01) Written INCAR file!
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +[zjb@op O2_opt]$ 
    +

    上前 4 行提示可以知道 INCAR 已经生成,由于生成的 INCAR 与我们实际需要的 INCAR 仍有一些差别,所以之后我们打开 INCAR 进行进一步修改,

    Global Parameters
    +ISTART =  1            (Read existing wavefunction; if there)
    +# ISPIN =  2           (Spin polarised DFT)
    +# ICHARG =  11         (Non-self-consistent: GGA/LDA band structures)
    +LREAL  = Auto          (Projection operators: automatic)
    +# ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    +PREC   =  Normal       (Precision level)
    +LWAVE  = .TRUE.        (Write WAVECAR or not;是否写入波函数)
    +LCHARG = .TRUE.        (Write CHGCAR or not)
    +ADDGRID= .TRUE.        (Increase grid; helps GGA convergence)
    +# LVTOT  = .TRUE.      (Write total electrostatic potential into LOCPOT or not)
    +# LVHAR  = .TRUE.      (Write ionic + Hartree electrostatic potential into LOCPOT or not)
    +# NELECT =             (No. of electrons: charged cells; be careful)
    +# LPLANE = .TRUE.      (Real space distribution; supercells)
    +# NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    +# NWRITE = 2           (Medium-level output)
    +# KPAR   = 2           (Divides k-grid into separate groups)
    +# NGX    = 500         (FFT grid mesh density for nice charge/potential plots)
    +# NGY    = 500         (FFT grid mesh density for nice charge/potential plots)
    +# NGZ    = 500         (FFT grid mesh density for nice charge/potential plots)
    +
    +ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +NELM   =  60           (Max electronic SCF steps)
    +NELMIN =  6            (Min electronic SCF steps)
    +EDIFF  =  1E-08        (SCF energy convergence; in eV)
    +# GGA  =  PS           (PBEsol exchange-correlation)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -2E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +
    +~ 
    +~
    +~
    +

    标签和值如何选择可以查 VASP 手册 呢。

    KPOINTS

    vaspkit-1,然后,102) Generate KPOINTS File for SCF Calculation,然后选择需要的撒点方法和精度,

    ------------>>
    +102
    + ======================= K-Mesh Scheme ==========================
    + 1) Monkhorst-Pack Scheme                            
    + 2) Gamma Scheme                                     
    +                                                     
    + 0)   Quit                                             
    + 9)   Back                                             
    + ------------->>
    +1                # 在这里选择方法
    +  -->> (01) Reading Structural Parameters from POSCAR File...
    + +---------------------------------------------------------------+
    + |               Selective Dynamics is Activated!                |
    + +---------------------------------------------------------------+
    + +-------------------------- Warm Tips --------------------------+
    +   * Accuracy Levels: Gamma-Only: 0;              
    +                      Low: 0.06~0.04;             
    +                      Medium: 0.04~0.03;          
    +                      Fine: 0.02-0.01.            
    +   * 0.03-0.04 is Generally Precise Enough!                
    + +---------------------------------------------------------------+
    + Input Kmesh-Resolved Value (in unit of 2*PI/Angstrom): 
    + ------------>>
    +0.04            # 在这里输入精度
    + +-------------------------- Summary ----------------------------+
    + Reciprocal Lattice Vectors (in unit of 1/angstrom):
    +       0.6283185307       0.0000000000       0.0000000000
    +       0.0000000000       0.5235987756       0.0000000000
    +       0.0000000000       0.0000000000       0.4188790205
    + Reciprocal Lattice Constants:   0.6283   0.5236   0.4189
    + Real-Space Lattice Constants:  10.0000  12.0000  15.0000
    + Size of K-Mesh:    1    1    1
    + +---------------------------------------------------------------+
    +  -->> (02) Written KPOINTS File!
    +  -->> (03) Written POTCAR File with the Recommended Potential!
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +

     







     













     





















    通常情况下,生成 KPOINTS 的同时,会根据推荐赝势生成 POTCAR。如果你的没有生成,则进入下一步。

    POTCAR

    vaspkit-1-103) Generate POTCAR File with Default Setting

    当然也可以选择 104) Generate POTCAR File with User Specified Potential 选择自己想要的赝势类型。

    如果没有 VASPKIT,就可以 cat <元素 1 的赝势文件> <元素 2 的赝势文件> >> POTCAR


    到此为止 VASP 运行所需要的四个输入文件就全都准备好了,我们就可以提交这个作业了。

    PBS 脚本 复制到当前目录,然后使用 qsub 命令提交作业。

    qsub -N JobName vasp.pbs
    +
    `,21);function E(V,D){const s=t("ExternalLinkIcon");return l(),r("div",null,[d,e("blockquote",null,[e("p",null,[n("Material Studio 是常用的构建模型和可视化结构的软件,MS 中的结构亦可借助其它工具转换成 "),p,n("。目前常用的做法是在 MS 中导出 "),u,n(" 文件,再通过功能 "),v,n(" 或者 "),m,n(" 转换成 "),b,n("。但是转换颇为麻烦并且会丢失原子的位置限制信息。因此赵焱老师开发了固定原子坐标 perl 小脚本 "),e("a",h,[n("xsd2pos.pl"),a(s)]),n(" ,可以在MS中运行"),k,n("脚本将结构生成"),g,n(",链接里有详细的操作流程,这里不再赘述。"),S,n("开发者也开发了一款类似的后处理脚本,能够将含有位置固定信息的"),A,n("批量转换成·"),P,n(",并将此脚本集成到了"),C,n("的"),f,n("功能中。"),I,n("中可以包含"),x,n("或者"),R,n("两种限制方式。")]),e("p",null,[n("引自 "),e("a",T,[n("VASPKIT 中文手册"),a(s)]),n(" 。")])]),_,e("p",null,[n("从诸如 "),e("a",O,[n("Materials Project"),a(s)]),n(" 等网站获取结构,通常获取到的是"),N,n("文件,将其上传,重命名为"),F,n("即可。")]),G])}const y=o(c,[["render",E],["__file","index.html.vue"]]);export{y as default}; diff --git a/assets/index.html-6XNTIiLr.js b/assets/index.html-6XNTIiLr.js new file mode 100644 index 00000000..d5dada44 --- /dev/null +++ b/assets/index.html-6XNTIiLr.js @@ -0,0 +1,203 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as i,c as p,a as s,b as a,e as m,w as c,d as n}from"./app-Mf7X6hWu.js";const r="/assets/image-02.vasp-chg-diff-20221119172425312-FQuXE-oc.png",o="/assets/image-02.vasp-chg-diff-20221119172425350-NEh4dsTO.png",u={},d=s("h1",{id:"vasp-计算电荷密度差",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#vasp-计算电荷密度差","aria-hidden":"true"},"#"),a(" VASP 计算电荷密度差")],-1),h=s("p",null,[a("文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为"),s("strong",null,"成键后的电荷密度与对应的点的原子电荷密度之差"),a("。通过差分电荷密度的计算和分析,可以清楚地得到在"),s("strong",null,"成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质"),a("。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。")],-1),v=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"ρ"),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("msub",null,[s("mi",null,"B"),s("mrow",null,[s("mi",null,"S"),s("mi",null,"C")])])])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("msub",null,[s("mi",null,"B"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"o"),s("mi",null,"m")])])])]),s("mspace",{width:"2em"}),s("mo",{stretchy:"false"},"("),s("mn",null,"1"),s("mo",{stretchy:"false"},")"),s("mspace",{linebreak:"newline"}),s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"ρ"),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("mi",null,"B")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"A")]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"B")]),s("mspace",{width:"2em"}),s("mo",{stretchy:"false"},"("),s("mn",null,"2"),s("mo",{stretchy:"false"},")"),s("mspace",{linebreak:"newline"}),s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"ρ"),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("mi",null,"B"),s("mi",null,"C")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"A")]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"B")]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"C")]),s("mspace",{width:"2em"}),s("mo",{stretchy:"false"},"("),s("mn",null,"3"),s("mo",{stretchy:"false"},")")]),s("annotation",{encoding:"application/x-tex"}," \\Delta \\rho = \\rho_{AB_{SC}}-\\rho_{AB_{atom}} \\qquad (1)\\\\ \\Delta \\rho = \\rho_{AB}-\\rho_A-\\rho_B \\qquad (2)\\\\ \\Delta \\rho = \\rho_{ABC}-\\rho_{A}-\\rho_{B}-\\rho_{C} \\qquad (3) ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8336em","vertical-align":"-0.2503em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3448em"}},[s("span",{style:{top:"-2.3567em","margin-left":"-0.0502em","margin-right":"0.0714em"}},[s("span",{class:"pstrut",style:{height:"2.5em"}}),s("span",{class:"sizing reset-size3 size1 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"SC")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1433em"}},[s("span")])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2503em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1.0001em","vertical-align":"-0.2501em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2963em"}},[s("span",{style:{top:"-2.357em","margin-left":"-0.0502em","margin-right":"0.0714em"}},[s("span",{class:"pstrut",style:{height:"2.5em"}}),s("span",{class:"sizing reset-size3 size1 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"t"),s("span",{class:"mord mathnormal mtight"},"o"),s("span",{class:"mord mathnormal mtight"},"m")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.143em"}},[s("span")])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2501em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"2em"}}),s("span",{class:"mopen"},"("),s("span",{class:"mord"},"1"),s("span",{class:"mclose"},")")]),s("span",{class:"mspace newline"}),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"A")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"2em"}}),s("span",{class:"mopen"},"("),s("span",{class:"mord"},"2"),s("span",{class:"mclose"},")")]),s("span",{class:"mspace newline"}),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"BC")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"2em"}}),s("span",{class:"mopen"},"("),s("span",{class:"mord"},"3"),s("span",{class:"mclose"},")")])])])])],-1),g=s("p",null,[a("以计算 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"O"),s("mn",null,"2")])]),s("annotation",{encoding:"application/x-tex"},"O_2")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.02778em"}},"O"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0278em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"2")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),a("电荷密度差为例,记录如何获得 O2 的 Difference charge density。")],-1),b=s("h2",{id:"流程",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#流程","aria-hidden":"true"},"#"),a(" 流程")],-1),k=s("p",null,"以 A-B 型为例",-1),y=s("ul",null,[s("li",null,"对 AB 进行结构优化"),s("li",null,[a("分别对 AB、A、B 分别静电自洽(不能结构优化) "),s("ul",null,[s("li",null,"FFT mesh 需要一致"),s("li",null,"LCHARG 需要打开")])]),s("li",null,"求差(chgsun.pl CHGCAR_A CHGCAR_B;chgdiff.pl CHGCAR_AB CHGCAR_sum)")],-1),C=n(`

    目录结构

    详情
    [zjb@op O2_chg_diff]$ tree
    +.
    +├── O2             # 在此目录对O2分子进行结构优化,然后静电自洽
    +│   ├── CHG
    +│   ├── CHGCAR
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── A              # 对其中一个O进行静电自洽
    +│   ├── CHG
    +│   ├── CHGCAR
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── out.log
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── B              # 对另一个O进行静电自洽
    +│   ├── CHG
    +│   ├── CHGCAR
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── REPORT
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── CHGCAR_diff   # 差分电荷密度
    +└── CHGCAR_sum    # 两个单独O加在一起的电荷密度
    +
    +3 directories, 62 files
    +

    步骤

    Step1:对 AB 进行结构优化 geo

    O2 目录中对 O2 进行结构优化

    :::: tabs

    ::: tab POSCAR

    [zjb@op O2]$ cat POSCAR:
    +O2
    +1
    +10 0 0
    +0 10 0
    +0 0 12
    +O
    +2
    +S
    +D
    +0.5 0.5 0.5   F F F
    +0.5 0.5 0.62  F F T
    +

    :::

    ::: tab INCAR

    [zjb@op O2]$ cat INCAR:
    +Global Parameters
    + ISTART =  1            (Read existing wavefunction; if there)
    + ISPIN =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .TRUE.        (Write WAVECAR or not)
    + LCHARG = .TRUE.        (Write CHGCAR or not)
    + ADDGRID= .TRUE.        (Increase grid; helps GGA convergence)
    + NGXF    = 150         (FFT grid mesh density for nice charge/potential plots)
    + NGYF    = 150         (FFT grid mesh density for nice charge/potential plots)
    + NGZF    = 180         (FFT grid mesh density for nice charge/potential plots)
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +NELM   =  60           (Max electronic SCF steps)
    +NELMIN =  4            (Min electronic SCF steps)
    +EDIFF  =  1E-06        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  20          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -2E-02        (Ionic convergence; eV/AA)
    +

    :::

    ::: tab CONTCAR

    [zjb@op O2]$ cat CONTCAR
    +O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     2
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.5000000000000000   F   F   F
    +  0.5000000000000000  0.5000000000000000  0.6028640220057100   F   F   T
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +

    :::

    ::::

    结构优化完成之后将 CONTCAR 作为新的 POSCAR 进行后续运算。

     [zjb@op O2]$ cp COUTCAR POSCAR
    +

    Step2:静电自洽

    提示

    三次静电自洽需要注意:

    • FFT mesh 需要一致
    • LCHARG 需要打开

    对 A-B 进行静电自洽 scf

    将上一步的 INCAR 修改,使其满足静电自洽的运行:

    NSW = 0
    +IBRION = -1
    +

    提交作业进行静电自洽。

    对 A、B 分别静电自洽

    将 A-B 静电自洽用的 INCAR、POSCAR、POTCAR、KPOINTS 复制出来,分别放在 A 和 B 目录中。

    [zjb@op O2]$ cp INCAR POSCAR POTCAR KPOINTS ../A/
    +[zjb@op O2]$ cp INCAR POSCAR POTCAR KPOINTS ../B/
    +

    在 A 目录的 POSCAR 中删除 B 部分对应的点,元素数量改一下,得到 A 部分的 POSCAR,提交作业静电自洽。

    在 B 目录的 POSCAR 中删除 A 部分对应的点,元素数量改一下,得到 B 部分的 POSCAR,提交作业静电自洽。

    [zjb@op O2_chg_diff]$ cat A/POSCAR 
    +O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     1
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.5000000000000000   F   F   F
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +
    +[zjb@op O2_chg_diff]$ cat B/POSCAR 
    +O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     1
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.6028640220057100   F   F   T
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +
    +







     


     













     


     


    Step3:求差

    求差也可以使用 VASPKIT 提供的功能。

    在主菜单选择 31) Charge & Spin Density,之后进入 314) Charge-Density Difference,在下一个界面提示输入 O2/CHGCAR A/CHGCAR B/CHGCAR

    ======================= File Options ============================
    + Input the Names of Charge/Potential Files with Space: 
    + (e.g., to get AB-A-B, type: ~/AB/CHGCAR ./A/CHGCAR ../B/CHGCAR)
    + 
    + ------------>>
    +O2/CHGCAR A/CHGCAR B/CHGCAR
    + 
    +  -->> (01) Reading Structural Parameters from O2/CHGCAR File...
    +  -->> (02) Reading Charge Density From O2/CHGCAR File...
    +  -->> (03) Reading Structural Parameters from A/CHGCAR File...
    +  -->> (04) Reading Charge Density From A/CHGCAR File...
    +  -->> (05) Reading Structural Parameters from B/CHGCAR File...
    +  -->> (06) Reading Charge Density From B/CHGCAR File...
    +  -->> (07) Written CHGDIFF.vasp File!
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +[zjb@op O2_chg_diff]$ ls
    +A  B  CHGCAR_diff  CHGCAR_sum  CHGDIFF.vasp  O2
    +

    输出一个 CHGDIFF.vasp,即为所求,下载,VESTA 打开:

    CHGDIFF.vasp
    CHGDIFF.vasp

    其他

    求差的其他方法

    chgsum.pl

    #Usage
    +$ chgsum.pl <CHGCAR_A> <CHGCAR_B>  # output: CHGCAR_sum
    +
    +# This example
    + [zjb@op O2_chg_diff]$ chgsum.pl A/CHGCAR B/CHGCAR
    +

    作用为:

    `,41),A=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mo",{stretchy:"false"},"("),s("mi",null,"C"),s("mi",null,"H"),s("mi",null,"G"),s("mi",null,"C"),s("mi",null,"A"),s("mi",null,"R"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"m"),s("mo",{stretchy:"false"},")")])]),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"A")]),s("mo",null,"+"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"B")])]),s("annotation",{encoding:"application/x-tex"}," \\rho_{(CHGCAR\\_sum)} = \\rho_{A} + \\rho_B ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8278em","vertical-align":"-0.3972em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3448em"}},[s("span",{style:{top:"-2.5198em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mopen mtight"},"("),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"GC"),s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.00773em"}},"R"),s("span",{class:"mord mtight",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"m"),s("span",{class:"mclose mtight"},")")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3972em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.625em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])])])],-1),f=n(`

    运行后在 O2_chg_diff/ 下生成了一个 CHGCAR_sum 文件。

    chgdiff.pl

    # Usage
    +chgdiff.pl <CHGCAR_sum> <CHGCAR_AB>  # output: CHGCAR_diff
    +
    +# This example
    + [zjb@op O2_chg_diff]$ chgdiff.pl O2/CHGCAR CHGCAR_sum
    +

    注意是后面的减前面的:

    `,4),R=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mo",{stretchy:"false"},"("),s("mi",null,"C"),s("mi",null,"H"),s("mi",null,"G"),s("mi",null,"C"),s("mi",null,"A"),s("mi",null,"R"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"d"),s("mi",null,"i"),s("mi",null,"f"),s("mi",null,"f"),s("mo",{stretchy:"false"},")")])]),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"C"),s("mi",null,"H"),s("mi",null,"G"),s("mi",null,"C"),s("mi",null,"A"),s("mi",null,"R"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"A"),s("mi",null,"B")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"C"),s("mi",null,"H"),s("mi",null,"G"),s("mi",null,"C"),s("mi",null,"A"),s("mi",null,"R"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"m")])])]),s("annotation",{encoding:"application/x-tex"}," \\rho_{(CHGCAR\\_diff)} = \\rho_{CHGCAR\\_AB} - \\rho_{CHGCAR\\_sum} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8278em","vertical-align":"-0.3972em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3448em"}},[s("span",{style:{top:"-2.5198em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mopen mtight"},"("),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"GC"),s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.00773em"}},"R"),s("span",{class:"mord mtight",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal mtight"},"d"),s("span",{class:"mord mathnormal mtight"},"i"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.10764em"}},"ff"),s("span",{class:"mclose mtight"},")")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3972em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.9503em","vertical-align":"-0.367em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"GC"),s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.00773em"}},"R"),s("span",{class:"mord mtight",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.367em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7976em","vertical-align":"-0.367em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"GC"),s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.00773em"}},"R"),s("span",{class:"mord mtight",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"m")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.367em"}},[s("span")])])])])])])])])])],-1),_=s("p",null,[a("执行后在 "),s("code",null,"O2_chg_diff/"),a(" 下生成了一个 "),s("code",null,"CHGCAR_diff"),a(" 文件,即为电荷密度差,因为")],-1),x=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"ρ")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("mi",null,"B")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"A")]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"B")])])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("mi",null,"B")])]),s("mo",null,"−"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"A")]),s("mo",null,"+"),s("msub",null,[s("mi",null,"ρ"),s("mi",null,"B")]),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"A"),s("mi",null,"B")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"ρ"),s("mrow",null,[s("mi",null,"C"),s("mi",null,"H"),s("mi",null,"G"),s("mi",null,"C"),s("mi",null,"A"),s("mi",null,"R"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"m")])])])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} \\Delta \\rho &= \\rho_{AB} - \\rho_A - \\rho_B \\\\ &= \\rho_{AB} - (\\rho_A + \\rho_B) \\\\ &=\\rho_{AB} - \\rho_{CHGCAR\\_sum} \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"4.507em","vertical-align":"-2.0035em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5035em"}},[s("span",{style:{top:"-4.6635em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal"},"ρ")])]),s("span",{style:{top:"-3.1635em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-1.6635em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.0035em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5035em"}},[s("span",{style:{top:"-4.6635em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"A")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.1635em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"A")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-1.6635em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05017em"}},"B")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"ρ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"GC"),s("span",{class:"mord mathnormal mtight"},"A"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.00773em"}},"R"),s("span",{class:"mord mtight",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"m")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.367em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.0035em"}},[s("span")])])])])])])])])])])],-1),G=n('

    显示

    下载 CHGCAR_diff,使用 VESTA 显示:

    O2_chg_diff_VESTA
    O2_chg_diff_VESTA

    为什么 chgdiff.pl 是后减前?

    读取源码:

    #!/usr/bin/env perl
    +#;-*- Perl -*-
    +
    +@args = @ARGV;
    +@args == 2 || die "usage: chgdiff.pl <reference CHGCAR> <CHGCAR2>\\n";
    +
    +open (IN1,$args[0]) || die ("Can't open file $!");
    +open (IN2,$args[1]) || die ("Can't open file $!");
    +open (OUT,">CHGCAR_diff");
    +
    +for ($i=0; $i<5; $i++) {
    +    $line1 = <IN1>;
    +    $line2 = <IN2>;
    +    $header1 .= $line1;
    +}
    +
    +...
    +
    +for ($i=0; $i<$psum1/5; $i++) {
    +    $line1 = <IN1>;
    +    $line1 =~ s/^\\s+//;
    +    $line2 = <IN2>;
    +    $line2 =~ s/^\\s+//;
    +    @line1 = split(/\\s+/,$line1);
    +    @line2 = split(/\\s+/,$line2);
    +    for ($j=0; $j<@line1; $j++) {
    +        $line1[$j] = $line2[$j]-$line1[$j];
    +    }
    +#    printf OUT " %18.11E %18.11E %18.11E %18.11E %18.11E\\n",$line1[0],$line1[1],$line1[2],$line1[3],$line1[4];
    +    printf OUT " %18.11E" x @line1 . "\\n", @line1;
    +}
    +
    +...
    +

    第 5 行:用法:chgdiff.pl <CHGCAR_1> <CHGCAR_2>.

    第 7-15 行:第一个参数 CHGCAR_1 里的每一行记为 line1,第二个参数 CHGCAR_2 里的每一行记为 line2.

    第 27 行,line2-line1,即 CHGCAR_2 - CHGCAR_1,即为后减前。

    chgdiff.pl 后少了原子

    由源码得,chgdiff.pl 保留的是 file1 的原子信息,所以如果 file1 只有部分原子就会缺。

    这个脚本我感觉是 bug,建议把上面第 27 行 line2-line1 改成 line1-line2 一劳永逸。

    `,12);function O(z,H){const l=t("RouterLink");return i(),p("div",null,[d,h,v,g,b,k,y,s("p",null,[a("电荷密度差分操作本可以在之前 "),m(l,{to:"/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/02.vasp-opt.html"},{default:c(()=>[a("O2 结构优化、自洽、非自洽")]),_:1}),a(" 自洽之后进行,但是之前的自洽没有规定 FFT mesh,而电荷密度差分要求了,所以干脆从头算好了。")]),C,A,f,R,_,x,G])}const S=e(u,[["render",O],["__file","index.html.vue"]]);export{S as default}; diff --git a/assets/index.html-6pn7OJe1.js b/assets/index.html-6pn7OJe1.js new file mode 100644 index 00000000..d371558c --- /dev/null +++ b/assets/index.html-6pn7OJe1.js @@ -0,0 +1 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as s,c as u,a as l,b as n,e,w as i}from"./app-Mf7X6hWu.js";const d={},h=l("h1",{id:"计算常用软件",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#计算常用软件","aria-hidden":"true"},"#"),n(" 计算常用软件")],-1),_=l("p",null,[n("本列表中,对于完成课程所必需使用的软件,标注为 "),l("code",null,"(Required)"),n(";可选安装的软件,标注为 "),l("code",null,"(Optional)"),n("。")],-1),c=l("p",null,"对于 Windows 端的程序,部分关键的安装步骤展示在第二节。",-1),p=l("h2",{id:"for-windows",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#for-windows","aria-hidden":"true"},"#"),n(" For Windows")],-1),f=l("li",null,"Materials Studio",-1),m={href:"http://jp-minerals.org/vesta/en/",target:"_blank",rel:"noopener noreferrer"},w={href:"http://jp-minerals.org/vesta/en/download.html",target:"_blank",rel:"noopener noreferrer"},g=l("li",null,"GaussView:高斯 (Optional)",-1),x={href:"https://www.netsarang.com/zh/free-for-home-school/",target:"_blank",rel:"noopener noreferrer"},k=l("li",null,"WindTerm:集成 X11 server,免费。",-1),S=l("li",null,[n("文件传输工具 (Required) "),l("ul",null,[l("li",null,"XFTP"),l("li",null,"WinSCP")])],-1),T={href:"http://www1.udel.edu/topics/connect/sw/xming/",target:"_blank",rel:"noopener noreferrer"},V=l("li",null,"XManager",-1),b={href:"http://wiki.fysik.dtu.dk/ase",target:"_blank",rel:"noopener noreferrer"},v=l("li",null,[n("文本编辑器 (Optional) "),l("ul",null,[l("li",null,"Notepad++"),l("li",null,"VS Code")])],-1),P=l("li",null,[n("Markdown 编辑器(Optional) "),l("ul",null,[l("li",null,"Typora")])],-1),R=l("h2",{id:"for-linux",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#for-linux","aria-hidden":"true"},"#"),n(" For Linux")],-1),A=l("li",null,[l("p",null,"VASP :Vienna Ab-initio Simulation Package, 电子结构计算和量子力学 - 分子动力学模拟软件包,集群已安装")],-1),I=l("li",null,[l("p",null,"VASP with VTST:Vasp TST(transition state theory) Tools,若为川大二代集群,可调用我已经编译的")],-1),q={href:"https://vaspkit.com/index.html",target:"_blank",rel:"noopener noreferrer"},O=l("li",null,[l("p",null,"ase:同 Windows ,需安装在 local 。")],-1),X={href:"http://www.gnuplot.info/",target:"_blank",rel:"noopener noreferrer"},y={href:"https://blog.northword.cn/dft-learning/pages/ea401e/",target:"_blank",rel:"noopener noreferrer"};function z(E,L){const t=r("ExternalLinkIcon"),o=r("RouterLink");return s(),u("div",null,[h,_,c,p,l("ul",null,[l("li",null,[n("建模及可视化软件 (Required) "),l("ul",null,[f,l("li",null,[n("VESTA:"),l("a",m,[n("官网"),e(t)]),n(" / "),l("a",w,[n("下载"),e(t)])]),g])]),l("li",null,[n("SSH 客户端 (Required) "),l("ul",null,[l("li",null,[n("XShell:"),l("a",x,[n("官网找教育版"),e(t)])]),k])]),S,l("li",null,[n("X Server (Required) "),l("ul",null,[l("li",null,[n("Xming:"),l("a",T,[n("下载"),e(t)])]),V])]),l("li",null,[n("开发环境:Python (Required)(含 ase 包) "),l("ul",null,[l("li",null,[n("ASE:"),l("a",b,[n("官网"),e(t)]),n(" / "),e(o,{to:"/dft-learning/02.Install/03.install-ase.html"},{default:i(()=>[n("安装见 windows-ase-install.md")]),_:1})])])]),v,P]),R,l("ul",null,[A,I,l("li",null,[l("p",null,[n("VTST Script:Vasp TST (transition state theory) Tools 脚本,安装参 "),e(o,{to:"/dft-learning/02.Install/22.linux-install-vtstScript.html"},{default:i(()=>[n("linux-install-VTSTScript.md")]),_:1})])]),l("li",null,[l("p",null,[n("VASPKIT:VASP 预 - 后数据处理脚本, "),l("a",q,[n("官网"),e(t)]),n(" , 安装见 "),e(o,{to:"/dft-learning/02.Install/21.linux-install-vaspkit.html"},{default:i(()=>[n("install-vaspkit.md")]),_:1})])]),O,l("li",null,[l("p",null,[n("gunplot (Optional) :命令行的交互式绘图工具,"),l("a",X,[n("官网"),e(t)]),n(" / 学校已安装 / 安装见 "),e(o,{to:"/dft-learning/02.Install/32.linux-install-gnuplot.html"},{default:i(()=>[n("linux-gunplot-install.md")]),_:1})])]),l("li",null,[l("p",null,[n("lrzsz (Optional) 参见 "),l("a",y,[n("linux 安装 lrzsz | 计算模拟学习笔记 (northword.cn)"),e(t)])])])])])}const N=a(d,[["render",z],["__file","index.html.vue"]]);export{N as default}; diff --git a/assets/index.html-7I8BaSii.js b/assets/index.html-7I8BaSii.js new file mode 100644 index 00000000..7517a4b3 --- /dev/null +++ b/assets/index.html-7I8BaSii.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as n,a as o,b as s}from"./app-Mf7X6hWu.js";const a="/assets/image-11.task-model-of-CO-absorption-on-Au-copy-20221119172646057-iH_ndoPx.png",i={},c=o("h1",{id:"作业-co吸附在au上建模",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#作业-co吸附在au上建模","aria-hidden":"true"},"#"),s(" 作业:CO吸附在Au上建模")],-1),d=o("p",null,"任务:建立CO在Au 111 晶面的吸附模型",-1),_=o("p",null,"步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。",-1),l=o("p",null,"结果:",-1),r=o("figure",null,[o("img",{src:a,alt:"Model of CO adsorption on Au",tabindex:"0",loading:"lazy"}),o("figcaption",null,"Model of CO adsorption on Au")],-1),u=[c,d,_,l,r];function p(f,h){return t(),n("div",null,u)}const g=e(i,[["render",p],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-7lNSjMEW.js b/assets/index.html-7lNSjMEW.js new file mode 100644 index 00000000..4e9b4e2a --- /dev/null +++ b/assets/index.html-7lNSjMEW.js @@ -0,0 +1,122 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as m,o as i,c as r,a as s,b as a,e as t,d as l}from"./app-Mf7X6hWu.js";const p={},c=l(`

    频率分析

    Todo.... 频率分析是个啥,理论知识...

    频率分析作用

    1. 确定结构是否稳定;

    2. 看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;

    3. 反应热,反应能垒,吸附能等的零点能矫正;

    4. 确认过渡态(有一个振动的虚频)

    5. 热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

    步骤

    结构优化

    在常规结构优化基础上进行下一步。

    待解决的问题

    乙醇结构优化中,若指定 EDIFF=1E-4(第一次)或 1E-6(第二次),EDIFFG=-2E-2,POTIM 默认(0.015),计算无法收敛(每个离子步都算满了 60 个电子步,19-20 个离子步后报错),提示如下:

    ZBRENT: fatal error in bracketing
    +     please rerun with smaller EDIFF, or copy CONTCAR
    +     to POSCAR and continue
    +

    但(第三次)EDIFF 和 EDIFFG 默认,POTIM=0.05 时可在 7 步收敛(每个离子步仍是 60 电子步)。(此时查 OUTCAR 有 EDIFF=0.1E-3,EDIFFG=0.1E-2)(POTIM 默认 0.5)

    初始结构为 www.chemspider.com 下载,20 20 20 的 cell,K 点 gamma 111。原因待测试。(其余参数 ISMEAR=0,SIGMA=0.01,IBRION=2,NSW=100,未给出均为默认)(测试一下①EDIFF=1E-4,EDIFFG=-2E-2,POTIM=0.05;②EDIFF=0.1E-3,EDIFFG=-0.1E-2,POTIM 默认)

    频率计算

    IBRION = 5       # Use 5 for Freq calculation
    +NSW    = 1
    +NFREE  = 2       # Do not use NFREE=1
    +POTIM  = 0.02
    +EDIFF  = 1E-6
    +
    +# NCORE = 4   # comment this line
    +
    • IBRION 的值改成 5
    • POTIM 用一个更小的值,我们这里用的 0.02,默认值是 0.015
    • NSW 设置成 1,这个可以直接不管,继续采用优化时的 NSW 值,因为你设置成 1, 2, 3, 4, 5, …, 1000 都不会影响计算;但不能不设置(因为默认值是 0,这时算个单点后任务便停止了。)
    • NFREE=2 添加这一个参数,表明原子在某一方向上正反两个方向移动;
    • 此外,EDIFF 也要设置一个严格的值(频率计算时,默认值为 1E-6,足够了!下一节会讲到)

    结果分析

    步数

    `,13),o=s("p",null,[a("当设置了 "),s("code",null,"NFREE=2"),a(" 且所有原子弛豫的时候,频率计算需要 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mn",null,"6"),s("mi",null,"N"),s("mo",null,"+"),s("mn",null,"1")]),s("annotation",{encoding:"application/x-tex"},"6N+1")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7667em","vertical-align":"-0.0833em"}}),s("span",{class:"mord"},"6"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6444em"}}),s("span",{class:"mord"},"1")])])]),a(" 步。N 为体系中的振动的原子数,这是因为:")],-1),h=s("ol",null,[s("li",null,[s("p",null,"第一个离子步是个频率计算前的单点计算。")]),s("li",null,[s("p",null,"N 个原子,每个原子在 x、y、z 三个方向均有一个自由度,共 3N。")]),s("li",null,[s("p",null,[a("设置 "),s("code",null,"NFREE=2"),a(",也就是在每个方向上 "),s("code",null,"+POTIM"),a(" 和 "),s("code",null,"–POTIM"),a(" 都移动并算一下,就有了"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mn",null,"3"),s("mi",null,"N"),s("mo",null,"×"),s("mn",null,"2"),s("mo",null,"="),s("mn",null,"6"),s("mi",null,"N")]),s("annotation",{encoding:"application/x-tex"},"3N \\times 2 = 6N")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7667em","vertical-align":"-0.0833em"}}),s("span",{class:"mord"},"3"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"×"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6444em"}}),s("span",{class:"mord"},"2"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord"},"6"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N")])])]),a("步。")]),s("p",null,[a("官网原文如下,还要查阅 "),s("code",null,"IBRION"),a(" 和 "),s("code",null,"NFREE"),a(" 的相关内容。")])])],-1),d=s("blockquote",null,[s("p",null,"The parameter NFREE determines how many displacements are used for each direction and ion, and POTIM determines the step size. The step size is defaulted to 0.015 ? (starting from VASP.5.1), if too large values are supplied in the input file. Expertise shows that this is a very reasonable compromise.")],-1),u=s("blockquote",null,[s("p",null,"NFREE=2 uses central differences, i.e., each ion is displaced by a small positive and negative displacement, ±POTIM, along each of the cartesian directions.`")],-1),g=s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"C"),s("msub",null,[s("mi",null,"H"),s("mn",null,"3")]),s("mi",null,"C"),s("msub",null,[s("mi",null,"H"),s("mn",null,"2")]),s("mi",null,"O"),s("mi",null,"H")]),s("annotation",{encoding:"application/x-tex"},"CH_3CH_2OH")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0813em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"3")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.08125em"}},"H"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0813em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"2")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal",style:{"margin-right":"0.02778em"}},"O"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.08125em"}},"H")])])],-1),v={href:"https://www.bigbrosci.com/2017/12/15/ex24/",target:"_blank",rel:"noopener noreferrer"},y=l(`

    这一过程在 stdout 里也有较为明显的表示:

       1 F= -.10036430E+02 E0= -.10036285E+02  d E =-.289628E-03
    + Finite differences POTIM= 0.02000 DOF=  27
    + bond charge predicted
    +
    +   2 F= -.78734041E+01 E0= -.78734041E+01  d E =-.373678E-15
    + Finite differences progress:
    +  Degree of freedom:   1/ 27
    +  Displacement:        1/  2
    +  Total:               1/ 54
    + bond charge predicted
    +
    +   3 F= -.67069872E+01 E0= -.67026196E+01  d E =-.873513E-02
    + Finite differences progress:
    +  Degree of freedom:   1/ 27
    +  Displacement:        2/  2
    +  Total:               2/ 54
    + bond charge predicted
    +
    +   4 F= -.67462590E+01 E0= -.67409236E+01  d E =-.106707E-01
    + Finite differences progress:
    +  Degree of freedom:   2/ 27
    +  Displacement:        1/  2
    +  Total:               3/ 54
    + bond charge predicted
    +
    +······
    +
    +  55 F= -.98834544E+01 E0= -.98834523E+01  d E =-.431696E-05
    + Finite differences progress:
    +  Degree of freedom:  27/ 27
    +  Displacement:        2/  2
    +  Total:              54/ 54
    + Finite differences POTIM=  2.000000000000000E-002
    +

    振动频率可视化

    `,3),x={href:"https://www.bigbrosci.com/2017/12/16/ex25/",target:"_blank",rel:"noopener noreferrer"},b=l(`

    OUTCAR 中的信息

     Finite differences progress:
    +  Degree of freedom:  27/ 27
    +  Displacement:        2/  2
    +  Total:              54/ 54
    +
    + SECOND DERIVATIVES (NOT SYMMETRIZED)
    + ------------------------------------
    +               1X          1Y          1Z          2X          2Y          2Z          3X          3Y          3Z          4X          4Y          4Z          5X          5Y          5Z          6X          6Y          6Z          7X          7Y          7Z          8X          8Y          8Z          9X          9Y          9Z
    +  1X    -0.796290   -0.233038    0.000000    1.493917   -0.390431    0.000000   11.997934    0.713060    0.000000   -0.502744   -0.458102   -1.112604   -0.502744   -0.458102    1.112604   -9.852689   -0.544908    0.000000    1.558071   -1.815756    2.790667    1.558071   -1.815756   -2.790667   -4.953526    5.003033    0.000000
    +  1Y     0.375968    0.109966    0.000000   -0.221500   -0.104078    0.000000   -7.444189    0.714797    0.000000    0.061864   -0.018602   -0.070447    0.061864   -0.018602    0.070447    6.078079   -0.495659    0.000000    0.526607   -0.086673    0.245169    0.526607   -0.086673   -0.245169    0.034699   -0.014475    0.000000
    +  1Z     5.808229   -2.434202   -0.224578    9.890712   -0.191510   -0.835513 -196.271299   22.155307   -2.396373    4.894997   -1.437502    1.327563    3.314884   -1.079152   -0.255396  159.821373  -14.859397    2.205595    2.708645   -0.577444   -1.520109    5.153556   -1.595313    1.097139    4.678904    0.019213    0.601672
    +  ······
    +  9Z    -2.239638   -0.224936    0.640338   -2.848485   -0.518046    0.053144   92.115496   -4.125652   -4.274775   -5.253060    0.192219    0.259185   -3.326232   -0.413466   -0.479808  -74.488855    6.180803    1.430131   -0.656228   -1.103483    0.253415   -0.780173    0.700478    3.745246   -2.522825   -0.687916   -1.626877
    +
    + 
    + Eigenvectors and eigenvalues of the dynamical matrix
    + ----------------------------------------------------
    +
    +   1 f  =  201.746767 THz  1267.612322 2PiTHz 6729.547573 cm-1   834.357861 meV
    +             X         Y         Z           dx          dy          dz
    +      8.658517  9.304797  0.000000    -0.012567    0.004216    0.089194
    +      0.120860  9.184513  0.000000    -0.000391    0.000152    0.006966
    +      9.405744 18.133372  0.000000     0.241400   -0.053508   -0.052395
    +     12.979810 18.660074 17.736563    -0.057237    0.039130    0.448592
    +     12.979810 18.660074  2.263437     0.019013    0.039514    0.091267
    +      8.203737 18.242837  0.000000    -0.670436   -0.088927    0.146993
    +     16.776380  8.675669  2.229820     0.035997   -0.046760   -0.002012
    +     16.776380  8.675669 17.770180     0.062323   -0.406063    0.024770
    +     14.098762 10.462995  0.000000    -0.025516    0.172042   -0.171822
    +
    +   2 f  =   47.211040 THz   296.635710 2PiTHz 1574.790721 cm-1   195.249235 meV
    +             X         Y         Z           dx          dy          dz
    +      8.658517  9.304797  0.000000     0.042971    0.024710    0.035150
    +      ······
    +   27 f/i=  203.242065 THz  1277.007557 2PiTHz 6779.425348 cm-1   840.541919 meV
    +             X         Y         Z           dx          dy          dz
    +      8.658517  9.304797  0.000000    -0.002381   -0.002248   -0.090493
    +      ······
    +
    + Finite differences POTIM=  2.000000000000000E-002
    +  LATTYP: Found a simple cubic cell.
    + ALAT       =    20.0000000000
    +

    频率相关的信息会被输出到 OUTCAR 的这两个部分,

    第一部分:二阶导,没啥用

    第二部分:特征值和特征向量,主要看这个

    1 f 行(line20)是四个频率单位的数值。下面几行是每个原子的坐标(X、Y、Z)及其在 x y z 方向上的振动大小(dx、dy、dz),坐标是分数坐标系。

    四个频率的换算:

    `,7),E=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"E"),s("mo",null,"="),s("mi",null,"h"),s("mi",null,"c"),s("mi",{mathvariant:"normal"},"/"),s("mi",null,"λ")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"ν"),s("mo",null,"="),s("mi",null,"c"),s("mi",{mathvariant:"normal"},"/"),s("mi",null,"λ")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mover",{accent:"true"},[s("mi",null,"ν"),s("mo",null,"~")]),s("mo",null,"="),s("mn",null,"1"),s("mi",{mathvariant:"normal"},"/"),s("mi",null,"λ")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"T"),s("mo",null,"="),s("mn",null,"1"),s("mi",{mathvariant:"normal"},"/"),s("mi",null,"ν")])])])])]),s("mspace",{linebreak:"newline"}),s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null,"in which,")])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"E"),s("mo",null,"="),s("mtext",null,"energy "),s("mo",{stretchy:"false"},"("),s("mi",null,"e"),s("mi",null,"V"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"λ"),s("mo",null,"="),s("mtext",null,"wavelength (m)")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mover",{accent:"true"},[s("mi",null,"λ"),s("mo",null,"~")]),s("mtext",null," = wavenumber "),s("mo",{stretchy:"false"},"("),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"T"),s("mo",null,"="),s("mtext",null,"period (s)")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"ν"),s("mo",null,"="),s("mtext",null,"frequency "),s("mo",{stretchy:"false"},"("),s("msup",null,[s("mi",null,"s"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])]),s("mtext",null," "),s("mi",null,"o"),s("mi",null,"r"),s("mtext",null," "),s("mi",null,"H"),s("mi",null,"z"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"h"),s("mo",null,"="),s("mtext",null,"Planck’s constant = "),s("mn",null,"4.135667516"),s("mo",null,"×"),s("mn",null,"1"),s("msup",null,[s("mn",null,"0"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"15")])]),s("mtext",null," "),s("mi",null,"e"),s("mi",null,"V"),s("mo",null,"⋅"),s("mi",null,"s")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"c"),s("mo",null,"="),s("mtext",null,"speed of light = 299792458 m/s")])])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} & E = hc/\\lambda \\\\ & \\nu = c / \\lambda \\\\ & \\tilde{\\nu} = 1 / \\lambda \\\\ & T = 1 / \\nu \\\\ \\end{aligned}\\\\ \\begin{aligned} \\text{in which,} \\\\ & E=\\text{energy}\\space (eV) \\\\ & \\lambda=\\text{wavelength (m)} \\\\ & \\tilde{\\lambda}\\text{ = wavenumber }(m^{−1}) \\\\ & T=\\text{period (s)} \\\\ & \\nu=\\text{frequency }(s^{−1}\\space or\\space Hz) \\\\ & h=\\text{Planck’s constant = } 4.135667516×10^{−15} ~eV \\cdot s \\\\ & c=\\text{speed of light = 299792458 m/s} \\\\ \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"6em","vertical-align":"-2.75em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"3.25em"}},[s("span",{style:{top:"-5.25em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-3.75em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-2.25em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-0.75em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.75em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"3.25em"}},[s("span",{style:{top:"-5.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"h"),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},"/"),s("span",{class:"mord mathnormal"},"λ")])]),s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.06366em"}},"ν"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},"/"),s("span",{class:"mord mathnormal"},"λ")])]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord accent"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.6679em"}},[s("span",{style:{top:"-3em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.06366em"}},"ν")]),s("span",{style:{top:"-3.35em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"accent-body",style:{left:"-0.2222em"}},[s("span",{class:"mord"},"~")])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"1/"),s("span",{class:"mord mathnormal"},"λ")])]),s("span",{style:{top:"-0.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.13889em"}},"T"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"1/"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.06366em"}},"ν")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.75em"}},[s("span")])])])])])])]),s("span",{class:"mspace newline"}),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"12.1395em","vertical-align":"-5.8198em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"6.3198em"}},[s("span",{style:{top:"-8.4798em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord text"},[s("span",{class:"mord"},"in which,")])])]),s("span",{style:{top:"-6.9798em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-5.4798em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-3.8885em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-2.3885em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-0.8643em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"0.6598em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"2.1598em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"5.8198em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"4.8198em"}},[s("span",{style:{top:"-6.9798em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord"},"energy")]),s("span",{class:"mspace"}," "),s("span",{class:"mopen"},"("),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-5.4798em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal"},"λ"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord"},"wavelength (m)")])])]),s("span",{style:{top:"-3.8885em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord accent"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.9313em"}},[s("span",{style:{top:"-3em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord mathnormal"},"λ")]),s("span",{style:{top:"-3.6134em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"accent-body",style:{left:"-0.25em"}},[s("span",{class:"mord"},"~")])])])])])]),s("span",{class:"mord text"},[s("span",{class:"mord"}," = wavenumber ")]),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8641em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.3885em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.13889em"}},"T"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord"},"period (s)")])])]),s("span",{style:{top:"-0.8643em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.06366em"}},"ν"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord"},"frequency ")]),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"s"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8641em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])]),s("span",{class:"mspace"}," "),s("span",{class:"mord mathnormal",style:{"margin-right":"0.02778em"}},"or"),s("span",{class:"mspace"}," "),s("span",{class:"mord mathnormal",style:{"margin-right":"0.04398em"}},"Hz"),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"0.6598em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal"},"h"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord"},"Planck’s constant = ")]),s("span",{class:"mord"},"4.135667516"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"×"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"1"),s("span",{class:"mord"},[s("span",{class:"mord"},"0"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8641em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"15")])])])])])])])]),s("span",{class:"mspace nobreak"}," "),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"⋅"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord mathnormal"},"s")])]),s("span",{style:{top:"2.1598em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord"},"speed of light = 299792458 m/s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"5.8198em"}},[s("span")])])])])])])])])])])],-1),w=s("p",null,[a("此外,"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mn",null,"1"),s("mi",null,"T"),s("mi",null,"H"),s("mi",null,"z"),s("mo",null,"="),s("mn",null,"1012"),s("mi",null,"H"),s("mi",null,"z"),s("mo",{separator:"true"},","),s("mspace",{width:"1em"}),s("mn",null,"1"),s("mi",null,"c"),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])]),s("mo",null,"="),s("mn",null,"100"),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])])]),s("annotation",{encoding:"application/x-tex"},"1 THz = 1012 Hz, \\quad 1 cm^{-1} = 100 m^{-1}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord"},"1"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.13889em"}},"T"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.04398em"}},"Hz"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1.0085em","vertical-align":"-0.1944em"}}),s("span",{class:"mord"},"1012"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.04398em"}},"Hz"),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"1em"}}),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord"},"1"),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8141em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8141em"}}),s("span",{class:"mord"},"100"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8141em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])])])])]),a(" 。")],-1),f={href:"http://halas.rice.edu/conversions",target:"_blank",rel:"noopener noreferrer"},z=l(`

    频率提取:

    [2020223055092@mu02 freq]$ grep cm-1 OUTCAR 
    +   1 f  =  201.746767 THz  1267.612322 2PiTHz 6729.547573 cm-1   834.357861 meV
    +   2 f  =   47.211040 THz   296.635710 2PiTHz 1574.790721 cm-1   195.249235 meV
    +   3 f  =   35.921110 THz   225.698994 2PiTHz 1198.199235 cm-1   148.557825 meV
    +   4 f  =   30.557648 THz   191.999365 2PiTHz 1019.293390 cm-1   126.376319 meV
    +   5 f  =   28.299918 THz   177.813630 2PiTHz  943.983631 cm-1   117.039096 meV
    +   6 f  =   24.737229 THz   155.428593 2PiTHz  825.145113 cm-1   102.304992 meV
    +   7 f  =   20.159900 THz   126.668391 2PiTHz  672.461876 cm-1    83.374677 meV
    +   8 f  =   17.283332 THz   108.594381 2PiTHz  576.509899 cm-1    71.478143 meV
    +   9 f  =   16.416363 THz   103.147049 2PiTHz  547.590902 cm-1    67.892643 meV
    +  10 f  =   12.378931 THz    77.779114 2PiTHz  412.916663 cm-1    51.195160 meV
    +  11 f  =    7.042735 THz    44.250808 2PiTHz  234.920339 cm-1    29.126420 meV
    +  12 f  =    6.004684 THz    37.728545 2PiTHz  200.294706 cm-1    24.833387 meV
    +  13 f  =    3.621816 THz    22.756539 2PiTHz  120.810763 cm-1    14.978631 meV
    +  14 f  =    1.485344 THz     9.332691 2PiTHz   49.545738 cm-1     6.142891 meV
    +  15 f/i=    0.608073 THz     3.820638 2PiTHz   20.283146 cm-1     2.514790 meV
    +  16 f/i=    2.581155 THz    16.217876 2PiTHz   86.098066 cm-1    10.674804 meV
    +  17 f/i=    4.872529 THz    30.615003 2PiTHz  162.530067 cm-1    20.151167 meV
    +  18 f/i=    6.118100 THz    38.441159 2PiTHz  204.077858 cm-1    25.302439 meV
    +  19 f/i=    8.804759 THz    55.321930 2PiTHz  293.695124 cm-1    36.413568 meV
    +  20 f/i=   10.508365 THz    66.026003 2PiTHz  350.521305 cm-1    43.459119 meV
    +  21 f/i=   15.745766 THz    98.933566 2PiTHz  525.222205 cm-1    65.119277 meV
    +  22 f/i=   18.917161 THz   118.860028 2PiTHz  631.008549 cm-1    78.235117 meV
    +  23 f/i=   21.091439 THz   132.521422 2PiTHz  703.534668 cm-1    87.227213 meV
    +  24 f/i=   24.556339 THz   154.292030 2PiTHz  819.111283 cm-1   101.556892 meV
    +  25 f/i=   29.978804 THz   188.362378 2PiTHz  999.985217 cm-1   123.982410 meV
    +  26 f/i=   35.952889 THz   225.898667 2PiTHz 1199.259268 cm-1   148.689252 meV
    +  27 f/i=  203.242065 THz  1277.007557 2PiTHz 6779.425348 cm-1   840.541919 meV
    +
    `,2),k=s("p",null,[a("共 27 个振动模式,最后"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"f"),s("mi",{mathvariant:"normal"},"/"),s("mi",null,"i")]),s("annotation",{encoding:"application/x-tex"},"f/i")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.10764em"}},"f"),s("span",{class:"mord"},"/"),s("span",{class:"mord mathnormal"},"i")])])]),a("指虚频。")],-1),T=s("blockquote",null,[s("p",null,"前面我们提到过,虚频可以判断结构是否稳定。那这里,我们计算出的乙醇分子结构肯定不稳定喽?不一定。"),s("p",null,"因为频率计算和软件的数值积分有关(我也不清楚数值积分怎么进行的);"),s("p",null,[a("计算过程中我们的设置对频率计算影响很大,"),s("code",null,"KPOINTS"),a(", "),s("code",null,"ENCUT"),a(", "),s("code",null,"EDIFF"),a(", "),s("code",null,"POTIM"),a(" 等都会影响计算的精度;综合这些因素,对于分子的振动频率来说(注意:声子谱不适用)一般低于 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mn",null,"100"),s("mi",null,"c"),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])])]),s("annotation",{encoding:"application/x-tex"},"100 cm^{−1}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8141em"}}),s("span",{class:"mord"},"100"),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8141em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])])])])]),a(" 的频率可以忽略。严格点可以降到 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mn",null,"50"),s("mi",null,"c"),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])])]),s("annotation",{encoding:"application/x-tex"},"50 cm^{−1}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8141em"}}),s("span",{class:"mord"},"50"),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8141em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])])])])]),a(",也就是说:如果你在计算中发现有个 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mn",null,"50"),s("mi",null,"c"),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])])]),s("annotation",{encoding:"application/x-tex"},"50 cm^{−1}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8141em"}}),s("span",{class:"mord"},"50"),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8141em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])])])])]),a(" 左右的虚频,完全可以不考虑。")])],-1),_=s("h4",{id:"零点能",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#零点能","aria-hidden":"true"},"#"),a(" 零点能")],-1),P=s("p",null,[a("零点能"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"Z"),s("mi",null,"P"),s("mi",null,"E"),s("mo",null,"="),s("mn",null,"1"),s("mi",{mathvariant:"normal"},"/"),s("mn",null,"2"),s("mi",null,"h"),s("mi",null,"ν")]),s("annotation",{encoding:"application/x-tex"},"ZPE=1/2 h \\nu")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"ZPE"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},"1/2"),s("span",{class:"mord mathnormal"},"h"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.06366em"}},"ν")])])])],-1),M=l(`
    # 所有振动的能量之和 (所有的hv之和,单位meV)
    +grep 'f  =' OUTCAR | awk '{print $10}' | paste -sd+ | bc
    +
    +# 零点能(eV)  将以下两行写脚本(meV转换eV除以1000,然后1/2,等于上式结果除以2000)
    +hv_sum=$(grep"f  =" OUTCAR | awk '{print  $10}'| paste -sd+ | bc)
    +echo "scale =6; $hv_sum/2000" | bc
    +

    零点能校正:

    `,2),S=s("ol",null,[s("li",null,[a("结构优化之后得到分子的能量(OSZICAR 中的"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mn",null,"0")])]),s("annotation",{encoding:"application/x-tex"},"E_0")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),a("): "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mn",null,"0")])]),s("annotation",{encoding:"application/x-tex"},"E_0")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])])]),s("li",null,[a("频率计算后得到分子的零点能: "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"Z"),s("mi",null,"P"),s("mi",null,"E")]),s("annotation",{encoding:"application/x-tex"},"ZPE")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"ZPE")])])])]),s("li",null,[a("零点能校正之后分子的能量为:"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"Z"),s("mi",null,"P"),s("mi",null,"E")])]),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",null,"+"),s("mi",null,"Z"),s("mi",null,"P"),s("mi",null,"E")]),s("annotation",{encoding:"application/x-tex"},"E_{ZPE}=E_0+ZPE")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.05764em"}},"ZPE")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"ZPE")])])])])],-1),H=s("p",null,[s("strong",null,"过渡态和反应热的零点能校正:")],-1),I=s("p",null,"对一个反应:IS --> TS --> FS",-1),F=s("ol",null,[s("li",null,[s("p",null,[a("优化反应物 IS 和产物 FS 的结构,获得能量:"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"IS"),s("mo",{stretchy:"false"},")")]),s("annotation",{encoding:"application/x-tex"},"E_0(\\textrm{IS})")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"IS")]),s("span",{class:"mclose"},")")])])]),a(", "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"FS"),s("mo",{stretchy:"false"},")")]),s("annotation",{encoding:"application/x-tex"},"E_0(\\textrm{FS})")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"FS")]),s("span",{class:"mclose"},")")])])]),a(";")])]),s("li",null,[s("p",null,[a("对反应物和产物进行频率计算,获得各自的零点能:"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mtext",null,"ZPE(IS)"),s("mo",{separator:"true"},","),s("mtext",null,"ZPE(FS)")]),s("annotation",{encoding:"application/x-tex"},"\\textrm{ZPE(IS)}, \\textrm{ZPE(FS)}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(IS)")]),s("span",{class:"mpunct"},","),s("span",{class:"mspace",style:{"margin-right":"0.1667em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(FS)")])])])]),a("。")])]),s("li",null,[s("p",null,[a("搜索过渡态,获得结构和能量 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"TS"),s("mo",{stretchy:"false"},")")]),s("annotation",{encoding:"application/x-tex"},"E_0(\\textrm{TS})")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"TS")]),s("span",{class:"mclose"},")")])])]),a(";")])]),s("li",null,[s("p",null,[a("过渡态频率分析,获得零点能 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mtext",null,"ZPE(TS)")]),s("annotation",{encoding:"application/x-tex"},"\\textrm{ZPE(TS)}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(TS)")])])])]),a("。")])])],-1),Z=s("p",null,[a("不考虑零点能的反应能垒 ("),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mi",null,"a")])]),s("annotation",{encoding:"application/x-tex"},"E_a")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"a")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),a(") 和反应热 ("),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"E")]),s("annotation",{encoding:"application/x-tex"},"\\Delta E")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E")])])]),a("):")],-1),V=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mi",null,"a")]),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"TS"),s("mo",{stretchy:"false"},")"),s("mtext",null,"–"),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"IS"),s("mo",{stretchy:"false"},")"),s("mspace",{linebreak:"newline"}),s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"E"),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"FS"),s("mo",{stretchy:"false"},")"),s("mtext",null,"–"),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"IS"),s("mo",{stretchy:"false"},")")]),s("annotation",{encoding:"application/x-tex"}," E_a = E_0(\\textrm{TS}) – E_0(\\textrm{IS}) \\\\ \\Delta E = E_0(\\textrm{FS}) – E_0(\\textrm{IS}) ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"a")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"TS")]),s("span",{class:"mclose"},")"),s("span",{class:"mord"},"–"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"IS")]),s("span",{class:"mclose"},")")]),s("span",{class:"mspace newline"}),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"FS")]),s("span",{class:"mclose"},")"),s("span",{class:"mord"},"–"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"IS")]),s("span",{class:"mclose"},")")])])])])],-1),N=s("p",null,"考虑零点能校正:",-1),O=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("msubsup",null,[s("mi",null,"E"),s("mi",null,"a"),s("msup",null,[s("mrow"),s("mo",{mathvariant:"normal",lspace:"0em",rspace:"0em"},"′")])])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mtext",null,"ZPE")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"TS"),s("mo",{stretchy:"false"},")"),s("mtext",null,"–"),s("msub",null,[s("mi",null,"E"),s("mtext",null,"ZPE")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"IS"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"TS"),s("mo",{stretchy:"false"},")"),s("mo",null,"+"),s("mtext",null,"ZPE(TS"),s("mo",{stretchy:"false"},")"),s("mtext",null,"–"),s("msub",null,[s("mi",null,"E"),s("mn",null,"0")]),s("mo",{stretchy:"false"},"("),s("mtext",null,"IS"),s("mo",{stretchy:"false"},")"),s("mtext",null,"–ZPE(IS"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mi",null,"a")]),s("mo",null,"+"),s("mtext",null,"ZPE(TS)–ZPE(IS)")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mi",{mathvariant:"normal"},"Δ"),s("msup",null,[s("mi",null,"E"),s("msup",null,[s("mrow"),s("mo",{mathvariant:"normal",lspace:"0em",rspace:"0em"},"′")])])])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mi",{mathvariant:"normal"},"Δ"),s("mi",null,"E"),s("mo",null,"+"),s("mtext",null,"ZPE(FS)–ZPE(IS)")])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} E_{a}^{'} &= E_{\\textrm{ZPE}}(\\textrm{TS}) – E_{\\textrm{ZPE}}(\\textrm{IS}) \\\\ &= E_0(\\textrm{TS}) + \\textrm{ZPE(TS}) – E_0(\\textrm{IS}) – \\textrm{ZPE(IS}) \\\\ &= E_a + \\textrm{ZPE(TS)} – \\textrm{ZPE(IS)}\\\\ \\Delta E^{'} &= \\Delta E + \\textrm{ZPE(FS)} – \\textrm{ZPE(IS)} \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"6.305em","vertical-align":"-2.9025em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"3.4025em"}},[s("span",{style:{top:"-5.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.9925em"}},[s("span",{style:{top:"-2.453em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a")])])]),s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},[s("span"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8278em"}},[s("span",{style:{top:"-2.931em","margin-right":"0.0714em"}},[s("span",{class:"pstrut",style:{height:"2.5em"}}),s("span",{class:"sizing reset-size3 size1 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"′")])])])])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.247em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-0.7575em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"Δ"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.9925em"}},[s("span",{style:{top:"-2.9925em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.5795em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},[s("span"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8278em"}},[s("span",{style:{top:"-2.931em","margin-right":"0.0714em"}},[s("span",{class:"pstrut",style:{height:"2.5em"}}),s("span",{class:"sizing reset-size3 size1 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"′")])])])])])])])])])])])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.9025em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"3.4025em"}},[s("span",{style:{top:"-5.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord text mtight"},[s("span",{class:"mord textrm mtight"},"ZPE")])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"TS")]),s("span",{class:"mclose"},")"),s("span",{class:"mord"},"–"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord text mtight"},[s("span",{class:"mord textrm mtight"},"ZPE")])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"IS")]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-3.91em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"TS")]),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(TS")]),s("span",{class:"mclose"},")"),s("span",{class:"mord"},"–"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mopen"},"("),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"IS")]),s("span",{class:"mclose"},")"),s("span",{class:"mord"},"–"),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(IS")]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.41em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"a")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(TS)")]),s("span",{class:"mord"},"–"),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(IS)")])])]),s("span",{style:{top:"-0.7575em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"Δ"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(FS)")]),s("span",{class:"mord"},"–"),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"ZPE(IS)")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.9025em"}},[s("span")])])])])])])])])])])],-1),D=s("p",null,[s("strong",null,"零点能校正的情况:")],-1),L=s("p",null,"频率计算时放开哪些原子看体系,看关注哪些部分。在过渡态中,IS、FS、TS 固定和放开的要一致。",-1),R=s("h4",{id:"影响频率计算的因素",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#影响频率计算的因素","aria-hidden":"true"},"#"),a(" 影响频率计算的因素")],-1),q={href:"https://www.bigbrosci.com/2017/12/18/ex27/#3-%E5%BD%B1%E5%93%8D%E9%A2%91%E7%8E%87%E8%AE%A1%E7%AE%97%E7%9A%84%E5%9B%A0%E7%B4%A0%E6%B5%8B%E8%AF%95",target:"_blank",rel:"noopener noreferrer"},A=l(`

    EDIFFG,增强收敛标准对虚频并没有什么好的效果。

    ENCUT,对零点能影响很小,增大截断能可以减小虚频,但并不是算频率就要增大截断能。

    PREC,

    POTIM

    POINTS

    备注

    获取虚频

    grep 'f/i'  OUTCAR | awk '{print $1 "\\t " $2 "\\t" $7 "\\t" $8 "\\t " $9 "\\t" $10 "\\t" $11}'
    +

    获取时间

    grep Elapsed */OUTCAR | sort -n
    +

    待解决的问题

    LVTHW 算出来 3 个虚频,我算的 13 个。哪里出了问题

    `,11);function C(Y,B){const n=m("ExternalLinkIcon");return i(),r("div",null,[c,o,h,d,u,s("p",null,[a("例如,乙醇分子"),g,a(",含有 9 个原子,其振动频率计算应有 55 步。 "),s("a",v,[a("Ex24 乙醇分子振动频率计算(二) | LVTHW"),t(n)])]),y,s("p",null,[a("使用 p4vasp 或 jmol。 "),s("a",x,[a("Ex25 乙醇分子振动频率计算(三) | LVTHW"),t(n)])]),b,E,w,s("p",null,[a("还可以用 "),s("a",f,[a("http://halas.rice.edu/conversions"),t(n)]),a(" 在线转换单位。")]),z,k,T,_,P,M,S,H,I,F,Z,V,N,O,D,L,R,s("p",null,[s("a",q,[a("Ex 27 乙醇分子的振动频率计算(五) | LVTHW"),t(n)])]),A])}const U=e(p,[["render",C],["__file","index.html.vue"]]);export{U as default}; diff --git a/assets/index.html-7m4C3hB8.js b/assets/index.html-7m4C3hB8.js new file mode 100644 index 00000000..d51bd458 --- /dev/null +++ b/assets/index.html-7m4C3hB8.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as r,c as s,a as e,b as o,e as c,d as a}from"./app-Mf7X6hWu.js";const i={},l=a('

    VASP

    VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。

    vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。

    因此我们需要区分开 VASPVASPKITVASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。

    ',4),p=e("code",null,"VASP",-1),_={href:"https://www.vasp.at/",target:"_blank",rel:"noopener noreferrer"},h=e("code",null,"VASPKIT",-1),V={href:"https://vaspkit.com/index.html",target:"_blank",rel:"noopener noreferrer"},m=a("

    官网已经详细的列出了 VASPKIT 如何配置安装,如何开始使用。由于课程需要,实际使用与官方文档的描述有一丁点区别,本文档仅对本人使用过程做记录。


    01- 输入输出文件

    02- 结构优化与静电自洽

    03- 电子结构

    • 自洽场理论、能带理论、态密度、电荷密度;
    • 自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;

    04- 反应路径与分子动力学

    • NEB 计算方法与操作实践;
    • 系综理论,控温方法,输入文件准备,计算过程,结果分析。
    ",8);function u(S,f){const t=d("ExternalLinkIcon");return r(),s("div",null,[l,e("p",null,[p,o(" 官网:"),e("a",_,[o("https://www.vasp.at/"),c(t)])]),e("p",null,[h,o(" 官网:"),e("a",V,[o("https://vaspkit.com/index.html"),c(t)])]),m])}const k=n(i,[["render",u],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-8Pfd_AG6.js b/assets/index.html-8Pfd_AG6.js new file mode 100644 index 00000000..ea148900 --- /dev/null +++ b/assets/index.html-8Pfd_AG6.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as a,c as i,a as e,b as n,e as s}from"./app-Mf7X6hWu.js";const l={},c=e("h1",{id:"linux",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#linux","aria-hidden":"true"},"#"),n(" Linux")],-1),d=e("p",null,[n("没啥好写的,不就是个系统,区别于 "),e("code",null,"Windows"),n("、"),e("code",null,"MacOs"),n(" 嘛。")],-1),_=e("h2",{id:"一些非初级非高级玩法",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一些非初级非高级玩法","aria-hidden":"true"},"#"),n(" 一些非初级非高级玩法")],-1),h={href:"https://tlanyan.me/work-with-linux-without-root-permission/",target:"_blank",rel:"noopener noreferrer"};function u(x,f){const o=r("ExternalLinkIcon");return a(),i("div",null,[c,d,_,e("ul",null,[e("li",null,[e("a",h,[n("Linux 为非 ROOT 用户安装应用程序"),s(o)])])])])}const k=t(l,[["render",u],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-8Yu_nBBe.js b/assets/index.html-8Yu_nBBe.js new file mode 100644 index 00000000..f099e4c8 --- /dev/null +++ b/assets/index.html-8Yu_nBBe.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as n,c as l,a as e,b as t,e as r,d as s}from"./app-Mf7X6hWu.js";const d={},c=s('

    Materials Studio

    懒得写了的

    建模

    问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体?

    答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。

    当所建模型包含的原子数目较少时,通过肉眼观察、鼠标点击或框选的方式,就能完成分析目标的选取。

    但是,当所建模型原子数达几千几万时(对于 MD 计算而言,这样的原子数目是很常见的),再采用肉眼观察来选取的方式,不仅低效,而且很容易多选、错选、漏选,最终导致分析结果错误。

    在 MS 中,有以下更快速的原子(团)选取方法:

    1. 鼠标左键单击选中某个 A 原子后,按住 Ctrl 键不放,再左键单击某个 B 原子,此时会同时选中上述两个原子;
    2. 按住 Alt 键不放,鼠标左键双击(注意是双击)某个 A 原子,此时会选中模型中全部的 A 原子;
    3. MS 界面顶部 Edit→Atom Selection 中,可通过以元素种类、化学键数目、电荷数目、力场类型等等,选取模型中全部满足要求的原子,此时结合“Selection mode”中的选项,可进一步添加需要的或筛除不需要的原子;
    4. 以某个原子团为 pattern,通过“Find Patterns”可选择模型中全部的该原子团。举个例子:要选取模型中全部的水分子,首先新建一个 xsd 文档,绘制出一个水分子,命名为 water.xsd,并将此文件保持打开状态,然后将模型置于当前,在 MS 界面顶部 Edit→Find Patterns,将其中的 Pattern document 下拉选择为 water.xsd(如果找不到 water.xsd,是因为 water.xsd 被关闭了,重新打开即可找到),点“Find”即可找到模型中全部的水分子;
    5. 对于用 Layer 命令堆叠得到模型,在 MS 界面顶部 Edit→Edit Sets,可选取任一原始的 layer,这对于用 Layer 命令堆叠得到模型的结合能计算非常有用;
    6. 将上述(1)~(5)进行组合,可实现绝大多数情况的分析目标的选取。
    ',9),h={href:"http://muchong.com/html/201704/11279111.html",target:"_blank",rel:"noopener noreferrer"},p=e("h2",{id:"其他资源",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#其他资源","aria-hidden":"true"},"#"),t(" 其他资源")],-1),u={href:"http://www.cailiaoniu.com/51296.html",target:"_blank",rel:"noopener noreferrer"},_={href:"https://www.bilibili.com/video/BV1b54y1672a?t=899",target:"_blank",rel:"noopener noreferrer"},m=e("div",{class:"btv",id:"btv"},[e("iframe",{src:"//player.bilibili.com/player.html?aid=842972226&bvid=BV1b54y1672a&cid=261004851&page=1",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true"}," ")],-1);function f(b,x){const a=o("ExternalLinkIcon");return n(),l("div",null,[c,e("blockquote",null,[e("p",null,[e("a",h,[t("写给 MS 新手:Materials Studio 软件常见问题与解决方案(2018 年 06 月 10 日更新) - 分子模拟 - 小木虫 - 学术 科研 互动社区 (muchong.com)"),r(a)])])]),p,e("ul",null,[e("li",null,[e("p",null,[e("a",u,[t("界面各部分介绍"),r(a)])])]),e("li",null,[e("p",null,[e("a",_,[t("超详细 Materials Studio 建模(上)| 刘锦程"),r(a)])]),m])])])}const M=i(d,[["render",f],["__file","index.html.vue"]]);export{M as default}; diff --git a/assets/index.html-8i62bqhd.js b/assets/index.html-8i62bqhd.js new file mode 100644 index 00000000..d76a0bef --- /dev/null +++ b/assets/index.html-8i62bqhd.js @@ -0,0 +1,2 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as s,c as h,a as t,b as e,e as d,w as c,d as r}from"./app-Mf7X6hWu.js";const p={},l=r('

    INCAR 中的常用标签

    整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。

    标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔;

    与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.

    几种必要的数据类型(仅是为了方便我理解,这个并不用会):

    类型中文名值域备注
    INT16 位整型-32768~+32767VASP 的 int 类型通常指定了仅有的几种取值
    REAL实型-2^128 ~ 2^128
    BOOL布尔0 或 1VASP 中用 .TURE..FALSE.

    TOC

    Start Parameters

    SYSTEM

    取值:字符串。缺省值:unknown system

    描述:用来备注计算的体系,其值会被写入 OUTCAR 中。

    ISTART

    取值:0 | 1 | 2 | 3

    缺省值:如果 WAVECAR 存在,则为 1,否则为 0

    描述:是否读取 WAVECAR

    ISTARTFunction
    0从头开始
    1从 WAVECAR 读取轨道
    2
    3.

    ISPIN

    取值:1(缺省) | 2

    描述:自旋极化。

    ISPIN = 1 :不自旋

    ISPIN = 2 :自旋

    需要考虑自旋极化一般来说有以下几种:

    1. 单原子的计算,
    2. O2 分子 (基态为三重态)
    3. 自由基相关的计算
    4. 含 Fe,Co, Ni 的体系
    5. 要计算的体系具有磁性:顺磁,铁磁,反铁磁等,要打开自旋极化。
    6. 当关注体系的电子性质时,且自己不知道加或者不加的时候,建议加上。

    MAGMOM 结合,可以研究共线磁性。

    ',24),I={href:"https://www.bigbrosci.com/2017/12/04/ex12/",target:"_blank",rel:"noopener noreferrer"},A=r('

    ICHARG

    取值:0 | 1 | 2 | 4

    缺省:ICHARG=2 if ISTART=0,=0 else

    描述:决定 VASP 如何构造初始电荷密度

    ICHARGFunction
    0从初始波函数计算电荷密度。如果因为无效 WAVECAR 导致 ISTART 重置,则 ICHARG 会被设置为 2。
    1从 CHGCAR 读取电荷密度,使用原子电荷密度的线性组合从旧位置(在 CHGCAR 上)外推到新位置。
    2原子电荷密度叠加
    4
    +10非自洽计算

    I/O Flags

    ParametersDefaultDescribe
    LWAVE.TRUE.是否将波函数写入 WAVECAR
    LCHARG.TRUE.是否将电荷密度写入 CHGCARCHG

    Electronic Relaxation

    ENCUT

    截断能

    • ENCUT 值越大,计算的越精确,花费的时间也就越多;

    • ENCUT 的取值与体系中所有的元素有关;

      • A)体系中含有不同元素的时候,查看这些元素 POTCAR 中的 ENMAX 值,找出最大的那个;
      • B)ENCUT 的最小值为所有元素中 ENMAX 的最大值!
      • C)也就是说,找到最大的 ENMAX(max), ENCUT 值大于等于 ENMAX(max)。
    ',11),u={href:"https://www.bigbrosci.com/2017/12/09/ex17/",target:"_blank",rel:"noopener noreferrer"},f=r('

    EDIFF

    取值:real。缺省值:1E-4

    描述:控制电子步(自洽)的收敛标准。多数情况下 1E-4 足以胜任,没必要采用其他数值。

    GGA

    GGA = 91 | PE | RP | PS | AM

    缺省:POTCAR 中的

    GGA 指定希望使用的广义梯度近似的类型。

    ',7),b={href:"https://www.vasp.at/wiki/wiki/index.php/GGA",target:"_blank",rel:"noopener noreferrer"},S=r('

    Ionic Relaxation

    EDIFFG

    取值:real。缺省值: EDIFF x10

    描述:离子弛豫的收敛标准

    如果为正,表示两个离子步骤之间的总(自由)能变化小于 EDIFFG 时停止弛豫。一般取 0.0001 ~ 0.001 即可。

    如果为负,则原子所受最大力小于 |EDIFFG| 时停止弛豫。一般取值 -0.01 ~ -0.05(-0.01 对于力收敛已经是个很严格的要求了)

    ',6),R={href:"https://www.bigbrosci.com/2017/12/02/ex09/",target:"_blank",rel:"noopener noreferrer"},E=r('

    NSW

    取值:int。缺省值:0

    描述:离子步的最大步数

    IBRION = 0 时,NSW 给出了所有从头开始的 Molecular Dynamics 运行的步骤数,因此必须提供它,否则 VASP 在启动后立即崩溃。

    IBRION != 0 时,在所有最小化算法(准牛顿,共轭梯度和阻尼分子动力学)中,NSW 定义了最大离子步数。

    IBRION

    取值: -1 | 0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 44

    缺省:IBRION = -1 for NSW = -1 or 0 , =0 else

    描述:决定离子如何移动

    IBRIONFunction
    -1静电自洽。此时 NSW 应为 0。
    0分子动力学
    1离子弛豫(RMM-DIIS) 小范围内的稳定结构搜索
    2离子弛豫(共轭梯度算法) 常用
    3离子弛豫(damp 分子动力学)初始结构很差时
    5频率计算。5-8 都是,但常用 5.
    44改进的 dimmer 方法

    IBRION=5 and 6: second derivatives, Hessian matrix and phonon frequencies (finite differences). 对于 IBRION=5 时,所有原子都在三个笛卡尔方向上移动,即使对于中等大小的高对称系统,也需要大量的计算工作。对于 IBRION = 6,仅考虑对称不等价位移,并使用对称性考虑填充其余的 Hessian 矩阵。IBRION=5 支持选择性弛豫,6 不支持。

    IBRION=7 and 8: second derivatives, Hessian matrix and phonon frequencies (perturbation theory).

    ',12),_={href:"https://www.vasp.at/wiki/wiki/index.php/IBRION",target:"_blank",rel:"noopener noreferrer"},x=r(`

    ISIF

    取值:ISIF = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7

    缺省值:0(当 IBRION=0,分子动力学时;否则为 2)

    描述:1 有哪些需要算,2 有哪些自由度可以优化。

    决定是否计算应力张量,以及允许哪些主要自由度改变弛豫和分子动力学。

    ISIFcalculatedegrees-of-freedom
    forcesStress tensorpositionscell shapecell volume
    0yesnoyesnono
    1yestrace onlyyesnono
    2yesyesyesnono
    3yesyesyesyesyes
    4yesyesyesyesno
    5yesyesnoyesno
    6yesyesnoyesyes
    7yesyesnonoyes

    ISYM

    是否考虑对称性。取值:0 | 1 | 2(默认) 0-nonsym 1-usesym 2-fastsym

    POTIM

    time-step(MD),单位 fs;step width scaling (ionic relaxations).

    缺省:if IBRION=0(MD),无缺省,必须用户指定,否则崩溃。

    if IBRION=1,2,3(弛豫),缺省 0.5。所有最小化算法(1 准牛顿,2 共轭梯度和 3 阻尼 damped 分子动力学)中,POTIM 均用作步长的缩放常数。特别是准牛顿算法对此参数的选择很敏感。

    if **IBRION=5(频率),缺省 0.015。**In frozen phonon calculations, POTIM gives the width of the displacement of each ion to calculate the Hessian Matrix.

    VASP.5.1 and newer releases: 如果给的值不合理(过大),会被重置为 0.015 Å.

    IBRION=2 时(这是前提!!),如果初始结构很差,设置较小的 POTIM 可以有效的避免过度矫正。初始结构越好,POTIM 的选择也就越随意。

    ISMEAR

    ISMEAR 这一项,目前需要记住的是:

    1. 不同的值对应的是不同的展宽方法
    2. 对于分子,原子的计算用 0

    下面是 VASP 官网的一些解释,新手暂时看不懂不要紧,把需要记住的这两条死死记住就可以了。

    • 对于半导体和绝缘体体系,ISMEAR 的值取绝对不能大于 0, 一般用 0;
    • 对所有体系,如果想获取更加精确能量的时候用 -5:但使用 -5 的时候,K 点数目小于 3 则程序会罢工;
    • K 点少,半导体或者绝缘体,那么只能用 ISMEAR = 0;
    • 在 DOS 能带计算中,使用 ISMEAR= -5 用于获取精确的信息。
    • 对于金属来说,ISMEAR 的取值一般为 0,1;
    • 保守地说,ISMEAR = 0 (Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子);
    • 如果不知道怎么取 ISMEAR,1)直接用 0;2)测试不同的值对计算的影响。

    SIGMA

    SIGMA 的取值和 ISMEAR 息息相关,也就是和 ISMEAR 这个参数同时出现,设定。下面是一些基本的介绍:

    • 如果用了 ISMEAR = -5; SIGMA 的值可以忽略,也可以不管。(对于所有体系都适用);

    • 对于金属: ISMEAR = 1 或者 0,非金属: ISMEAR= 0 的时候,一般取 SIGMA = 0.10 即可,默认值是 0.20。不放心的话,用 0.05。

    • 对于气体分子,原子体系(也就是你把分子或者原子放到一个 box 里面):死死记住下面组合就可以了, ISMEAR = 0; SIGMA = 0.01。

    • 设置一个较小的 SIGMA 值会使收敛变慢。

    • 半导体和绝缘体:

      1) K 点小于 4 的时候,用 ISMEAR=0, SIGMA 取值小一些;比如 SIGMA=0.05; 此时用 ISMEAR = -5 会出错;

      2)K 点数目大于 4 的时候,可以使用 ISMEAR= -5

    不过很多人都不放心,为了保险想测试一番。标准是: SIGMA 的取值要保证 OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于 1-2 meV。检查的时候可以用这个命令:

    grep 'entropy T'  OUTCAR
    +

    **注意 1:**这里有两个单引号,不要输入的时候漏掉。

    用这个命令,得出的能量除以体系中原子的数目(也就是平均到每个原子上),然后再和 0.001 eV 比较。如果小于,SIGMA 取值 OK,如果大于,再换个小点的数值进行测试。

    **注意 2:**这里的说的 entropy,是因为 ISMEAR 展宽这个计算方法引入的,跟我们物理化学书里面的 entropy 完全是两码事。后面我们会介绍如何通过频率分析计算物理化学里面的 Entropy。

    `,29),y={href:"https://www.bigbrosci.com/2017/10/15/ex1_02_vasp_preparation_input_incar/",target:"_blank",rel:"noopener noreferrer"},m=t("h2",{id:"dft-u",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#dft-u","aria-hidden":"true"},"#"),e(" DFT+U")],-1);function M(g,N){const a=o("ExternalLinkIcon"),i=o("RouterLink");return s(),h("div",null,[l,t("p",null,[t("a",I,[e("Ex12 VASP 中 MAGMOM 的简单设定 | Learn VASP The Hard Way"),d(a)])]),A,t("blockquote",null,[t("p",null,[t("a",u,[e("Ex17 谁偷走的我的机时?(二) | Learn VASP The Hard Way"),d(a)])])]),f,t("p",null,[t("a",b,[e("GGA - VASP Wiki"),d(a)])]),S,t("blockquote",null,[t("p",null,[e("取值范围引自大师兄科研网:"),t("a",R,[e("https://www.bigbrosci.com/2017/12/02/ex09/"),d(a)])])]),E,t("p",null,[e("详细: "),t("a",_,[e("IBRION - VASP Wiki"),d(a)])]),x,t("blockquote",null,[t("p",null,[e("摘抄自大师兄网站:"),t("a",y,[e("https://www.bigbrosci.com/2017/10/15/ex1_02_vasp_preparation_input_incar/"),d(a)])])]),m,t("p",null,[d(i,{to:"/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/04.vasp-DFT-plus-U.html"},{default:c(()=>[e("vasp-DFT-plus-U")]),_:1})])])}const C=n(p,[["render",M],["__file","index.html.vue"]]);export{C as default}; diff --git a/assets/index.html-8kWyFEjE.js b/assets/index.html-8kWyFEjE.js new file mode 100644 index 00000000..09563a2b --- /dev/null +++ b/assets/index.html-8kWyFEjE.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-46bb4806","path":"/software/zotero/","title":"Zotero","lang":"zh-CN","frontmatter":{"title":"Zotero","date":"2022-09-16T21:43:20.000Z","updated":"2022-09-16T21:43:36.000Z","permalink":"/software/zotero/","article":false,"index":false,"order":0,"timeline":false,"description":"Zotero","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/zotero/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Zotero"}],["meta",{"property":"og:description","content":"Zotero"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T21:43:20.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Zotero\\",\\"description\\":\\"Zotero\\"}"]]},"headers":[],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.09,"words":27},"filePathRelative":"software/zotero/README.md","localizedDate":"2022年9月17日","excerpt":"

    Zotero

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-9d7skGWZ.js b/assets/index.html-9d7skGWZ.js new file mode 100644 index 00000000..ec1fe3ac --- /dev/null +++ b/assets/index.html-9d7skGWZ.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3ab30614","path":"/category/others/","title":"Others 分类","lang":"zh-CN","frontmatter":{"title":"Others 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"Others","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/others/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Others 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Others 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-AFHjJm8s.js b/assets/index.html-AFHjJm8s.js new file mode 100644 index 00000000..94377292 --- /dev/null +++ b/assets/index.html-AFHjJm8s.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as i,c as a,a as e,b as n,e as r,w as s}from"./app-Mf7X6hWu.js";const c={},u=e("h1",{id:"linux-基础",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#linux-基础","aria-hidden":"true"},"#"),n(" Linux 基础")],-1),_=e("p",null,"完成计算至少应了解的内容有以下:",-1),d=e("ul",null,[e("li",null,"通过 SSH 客户端登录集群"),e("li",null,"Linux 常用的命令,上笔记命令页最上表格。"),e("li",null,"vim 编辑器使用"),e("li",null,"PBS 作业管理系统的使用")],-1);function x(h,m){const t=o("RouterLink");return i(),a("div",null,[u,e("p",null,[n("Linux 基础应参考 "),r(t,{to:"/code/linux/00.intro.html"},{default:s(()=>[n("Linux 笔记")]),_:1}),n("。")]),_,d])}const L=l(c,[["render",x],["__file","index.html.vue"]]);export{L as default}; diff --git a/assets/index.html-AUQoX8Hz.js b/assets/index.html-AUQoX8Hz.js new file mode 100644 index 00000000..99315b54 --- /dev/null +++ b/assets/index.html-AUQoX8Hz.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-207456c6","path":"/dft-learning/pages/16cc62/","title":"频率分析","lang":"zh-CN","frontmatter":{"title":"频率分析","date":"2021-01-21T14:46:09.000Z","permalink":"/dft-learning/pages/16cc62/","category":["VASP","反应路径"],"updated":"2022-01-16T19:57:30.000Z","description":"频率分析 Todo.... 频率分析是个啥,理论知识... 频率分析作用 确定结构是否稳定; 看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子; 反应热,反应能垒,吸附能等的零点能矫正; 确认过渡态(有一个振动的虚频) 热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/16cc62/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"频率分析"}],["meta",{"property":"og:description","content":"频率分析 Todo.... 频率分析是个啥,理论知识... 频率分析作用 确定结构是否稳定; 看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子; 反应热,反应能垒,吸附能等的零点能矫正; 确认过渡态(有一个振动的虚频) 热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-01-21T14:46:09.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"频率分析\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-01-21T14:46:09.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"频率分析作用","slug":"频率分析作用","link":"#频率分析作用","children":[]},{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"结构优化","slug":"结构优化","link":"#结构优化","children":[]},{"level":3,"title":"频率计算","slug":"频率计算","link":"#频率计算","children":[]},{"level":3,"title":"结果分析","slug":"结果分析","link":"#结果分析","children":[]}]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":8.49,"words":2547},"filePathRelative":"dft-learning/05.VASP/04.反应路径/03.vasp-frequency-analysis.md","localizedDate":"2021年1月21日","excerpt":"

    频率分析

    \\n
    \\n

    Todo.... 频率分析是个啥,理论知识...

    \\n
    \\n

    频率分析作用

    \\n
      \\n
    1. \\n

      确定结构是否稳定;

      \\n
    2. \\n
    3. \\n

      看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;

      \\n
    4. \\n
    5. \\n

      反应热,反应能垒,吸附能等的零点能矫正;

      \\n
    6. \\n
    7. \\n

      确认过渡态(有一个振动的虚频)

      \\n
    8. \\n
    9. \\n

      热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

      \\n
    10. \\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-AsX6-gvs.js b/assets/index.html-AsX6-gvs.js new file mode 100644 index 00000000..84617197 --- /dev/null +++ b/assets/index.html-AsX6-gvs.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c as o,a as s,b as t,e as a}from"./app-Mf7X6hWu.js";const c={},i=s("h1",{id:"csl-中文文档",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#csl-中文文档","aria-hidden":"true"},"#"),t(" CSL 中文文档")],-1),p=s("blockquote",null,[s("p",null,"[!warning] WORK IN PROGRESS 此页面正在施工中。")],-1),m=s("p",null,"CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。",-1),h=s("p",null,[t("Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mtext",null,"LaTeX")]),s("annotation",{encoding:"application/x-tex"},"\\LaTeX")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8988em","vertical-align":"-0.2155em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"L"),s("span",{class:"mspace",style:{"margin-right":"-0.36em"}}),s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.6833em"}},[s("span",{style:{top:"-2.905em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"mord"},[s("span",{class:"mord textrm mtight sizing reset-size6 size3"},"A")])])])])]),s("span",{class:"mspace",style:{"margin-right":"-0.15em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"T"),s("span",{class:"mspace",style:{"margin-right":"-0.1667em"}}),s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.4678em"}},[s("span",{style:{top:"-2.7845em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord textrm"},"E")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2155em"}},[s("span")])])]),s("span",{class:"mspace",style:{"margin-right":"-0.125em"}}),s("span",{class:"mord textrm"},"X")])])])])]),t(" 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mtext",null,"LaTeX")]),s("annotation",{encoding:"application/x-tex"},"\\LaTeX")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8988em","vertical-align":"-0.2155em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"L"),s("span",{class:"mspace",style:{"margin-right":"-0.36em"}}),s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.6833em"}},[s("span",{style:{top:"-2.905em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"mord"},[s("span",{class:"mord textrm mtight sizing reset-size6 size3"},"A")])])])])]),s("span",{class:"mspace",style:{"margin-right":"-0.15em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"T"),s("span",{class:"mspace",style:{"margin-right":"-0.1667em"}}),s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.4678em"}},[s("span",{style:{top:"-2.7845em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord textrm"},"E")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2155em"}},[s("span")])])]),s("span",{class:"mspace",style:{"margin-right":"-0.125em"}}),s("span",{class:"mord textrm"},"X")])])])])]),t(" 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mtext",null,"LaTeX")]),s("annotation",{encoding:"application/x-tex"},"\\LaTeX")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8988em","vertical-align":"-0.2155em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"L"),s("span",{class:"mspace",style:{"margin-right":"-0.36em"}}),s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.6833em"}},[s("span",{style:{top:"-2.905em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"mord"},[s("span",{class:"mord textrm mtight sizing reset-size6 size3"},"A")])])])])]),s("span",{class:"mspace",style:{"margin-right":"-0.15em"}}),s("span",{class:"mord text"},[s("span",{class:"mord textrm"},"T"),s("span",{class:"mspace",style:{"margin-right":"-0.1667em"}}),s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.4678em"}},[s("span",{style:{top:"-2.7845em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord textrm"},"E")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2155em"}},[s("span")])])]),s("span",{class:"mspace",style:{"margin-right":"-0.125em"}}),s("span",{class:"mord textrm"},"X")])])])])]),t(" 同样漂亮的引用和参考文献目录。")],-1),d=s("p",null,"由 CSL 编写的 style 定义了引用和参考文献目录的格式。Zotero 就是通过 style 来生成指定格式的引用和参考文献目录。据统计,现在已经有超过 9000 个 style,覆盖了大多数的常见的 SCI 期刊。在 Zotero 中能很容易检索到对应期刊的 style。但是即使有这么多的 style,仍然有可能有的期刊没有对应的 style。此外,有的 style 年代久远,已经不符合期刊 author guideline 中的要求,因此,我们需要学习 CSL 来定制需要的 style,至少能在已有的 style 上修改来满足期刊的要求。但是遗憾的是,国内 CSL 的资料几乎没有。",-1),g={href:"https://docs.citationstyles.org/en/stable/primer.html",target:"_blank",rel:"noopener noreferrer"},u=s("p",null,"[!TIP] 本站点是对译文的重排版",-1),x={href:"https://github.com/ZMAlt",target:"_blank",rel:"noopener noreferrer"},y={href:"https://csl-chinese.readthedocs.io/en/latest/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/ZMAlt/CSL-Chinese",target:"_blank",rel:"noopener noreferrer"},v={href:"https://github.com/northword",target:"_blank",rel:"noopener noreferrer"},L={href:"https://github.com/zotero-cn/csl-doc-chinese",target:"_blank",rel:"noopener noreferrer"},k=s("blockquote",null,[s("p",null,"[!danger] 译者注 文档中,凡标注 Work in progress 的均为正在施工的页面,无法确保与现有英文文档相一致,无法确保译文修改前后的一致性、准确性,请酌情阅读。")],-1);function b(f,C){const e=n("ExternalLinkIcon");return r(),o("div",null,[i,p,m,h,d,s("p",null,[t("本项目是对 "),s("a",g,[t("CSL 英文文档"),a(e)]),t(" 的翻译。本人能力有限,理解和翻译有误处请大家谅解,同时欢迎 issue 和 pull。")]),s("blockquote",null,[u,s("p",null,[t("翻译者:"),s("a",x,[t("Mao Zhou"),a(e)])]),s("p",null,[t("译文原始站点:"),s("a",y,[t("Welcome to CSL-chinese’s documentation! — CSL-chinese documentation"),a(e)])]),s("p",null,[t("译文原始仓库:"),s("a",_,[t("ZMAlt/CSL-Chinese: CSL Chinese Document (github.com)"),a(e)])]),s("p",null,[t("中文文档重排版:"),s("a",v,[t("Northword"),a(e)])]),s("p",null,[t("中文文档重排版仓库:"),s("a",L,[t("zotero-cn/csl-chinese: CSL 中文文档 (github.com)"),a(e)])])]),k])}const M=l(c,[["render",b],["__file","index.html.vue"]]);export{M as default}; diff --git a/assets/index.html-BZHq4iHB.js b/assets/index.html-BZHq4iHB.js new file mode 100644 index 00000000..85791f94 --- /dev/null +++ b/assets/index.html-BZHq4iHB.js @@ -0,0 +1 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as c,c as d,a as e,b as o,e as r,d as n}from"./app-Mf7X6hWu.js";const l={},s=e("h1",{id:"linux-下无-root-权限编译软件",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#linux-下无-root-权限编译软件","aria-hidden":"true"},"#"),o(" Linux 下无 Root 权限编译软件")],-1),p={href:"https://tlanyan.me/work-with-linux-without-root-permission/",target:"_blank",rel:"noopener noreferrer"},u=n("

    下为上文的备份。


    下面是 Linux 下非 root 用户安装软件的一般流程:

    1. 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码;
    2. 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz
    3. 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置;
    4. 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟);
    5. 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中;
    6. 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。

    ",5),x={href:"https://tlanyan.me/tag/windows/",target:"_blank",rel:"noopener noreferrer"},h={href:"https://tlanyan.me/category/linux/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://tlanyan.me/tag/macos/",target:"_blank",rel:"noopener noreferrer"},m=n("

    Windows 上安装软件相当傻瓜化,下载 exe 后双击运行,点击鼠标一直 next 就完事。安装过程中,小白用户一般不会看引导页面种的内容(估计字都认识,连在一块不知道什么意思),附带安装其他软件或者对系统做了额外改动也毫不知情。当有人(一般是女生)说电脑开机后反应很慢/失去响应,过去一看电脑上瑞星、360、金山毒霸、腾讯安全管家等各种软件都在右下角托盘刷着存在感。对于这种情形,只能表示理解,进入安全模式把不用的软件都卸载掉,电脑基本上就正常了。

    回到 Linux 安装软件,情况稍有不同。首先是软件一般从软件仓库中获取,即现在熟悉的应用市场;再次基本上用命令行安装软件,不是双击安装包(Mac OS 可以这样做)。所以熟悉命令行安装软件,是迈向 Linux 世界基础的一步。幸运的是 linux 上又 apt/yum/dnf 等简单好用的软件包管理工具,能自动解决软件包之间的依赖问题,让用户一行命令就获取到所需软件。例如安装 g++,执行 sudo apt-get install g++sudo yum install -y gcc-c++ 即可。

    然而有些软件是有源代码,因为版权、无人维护等原因不在软件仓库中,apt-get/yum/dnf 的安装方式就行不通,只能从源码编译。这便需要先下载源代码,解压(大多数不能点右键解压),然后按照说明文档 make && make install。不管是从软件仓库,还是手工编译源代码的方式,对有 root 权限的用户问题都不大。倒霉的是没有 root 权限,还不得不安装某些软件才能正常工作的普通账号。这些普通账号需要额外的软件或依赖库时,该如何自救解脱?

    因为无法安装的原因是权限限制,故而有必要先了解一下 Linux 中文件和用户的权限。对任意一个文件(Linux 下一切皆文件,包括目录、CPU 内存等设备),可以使用 ls -l 查看其权限。命令的每行首列输出类似 (d|-)rwxrwxrwx,这就是文件的权限标志。第一个字母是文件类型,d 表示目录,- 表示普通文件,s 套接字,l 链接文件,等等;接下来有 9 列,每 3 列一组,总共 3 组,对应文件属主 (owner)、属主组员 (group) 和其他用户 (other) 对该文件的权限。每组的标志类似 rwx。rwx 是读 (read),写 (write) 和执行 (execute) 三种权限的缩写。如果没有某种权限,对应标志位是 -。例如某个文件 foo.txt,只有属主可读写,其权限标志就是:-rw-------。注意,非 root 用户下,文件夹必须要有执行(x)权限才能进入。

    再看用户的权限。root 用户是 bug,电脑上所有的文件都是它的,权限位设置对其无效。非 root 用户默认 只对家目录有完全的控制权限,对/tmp 目录有读写的权限。/tmp 目录如其名,应该只在其中存放临时性文件,该目录在系统重启时会被清空。/var、/usr、/bin、/opt 等常见文件夹及子目录,几乎所有用户都能访问其中的文件和内容,执行可执行程序,但只有 root 用户和属主有写入的权限

    了解完权限,再看普通账户安装软件困难的原因。大部分软件默认安装路径是 /usr/bin/usr/local/bin,安装时需要将可执行文件复制到这些目录下。普通用户没有目录的写权限,于是提示无权限导致安装失败。切换到 root 模式后,一切又都好使了。根据普通账号的权限,可以得出结论:非 root 用户,(几乎)只能安装软件到家目录下。

    ",6);function f(g,w){const t=i("ExternalLinkIcon");return c(),d("div",null,[s,e("p",null,[e("strong",null,[o("参考:"),e("a",p,[o("linux 非 root 用户安装软件入门 | tlanyan.me"),r(t)]),o(" .")])]),u,e("blockquote",null,[e("p",null,[o("从 "),e("a",x,[o("windows"),r(t)]),o(" 转移到 "),e("a",h,[o("Linux"),r(t)]),o(" 的用户刚开始会有各种不适,因使用习惯水土不服而放弃 Linux 的不在少数。还没有领略到 Linux 的美好就退却,对于这类人只能说可惜。还有部分人在个人电脑上用 Linux,总体感觉还不错;切换到工作时只能使用无特权的普通账户,会遇到“没 root 权限 -> 出现问题 -> 找答案 -> 提示用 root”的死循环,于是感到沮丧和抓狂。本文主要面向对象第二类人,简要介绍没有 root 权限时,安装软件的步骤和操作。")]),e("p",null,[o("许多人都非常熟悉 Windows,毫无疑问 windows 是目前桌面操作系统的王者。随着高富帅和土豪种群的增长,"),e("a",_,[o("Mac OS"),r(t)]),o(" 的份额也逐步提升。无论是 windows 还是 Mac OS,用户接触的都是图形界面(Graphical User Interface,GUI)。转向 Linux 之后,大部分人会优先使用带图形界面的系统作为过渡。比如本人最开始使用 Ubuntu,熟悉后才慢慢转向 CentOS 和 Fedora。许多优秀的 Linux 桌面图形发行版,如 Debian/Ubuntu/Mint,Fedora,OpenSUSE 等,图形界面华美,桌面体验良好,可以给 Windows 用户很好的过渡。这些 Linux 系统基本都开源且可免费使用(支持服务可能要付费),是 Linux 入门级操作系统的首选。")]),m])])}const k=a(l,[["render",f],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-BkcPohES.js b/assets/index.html-BkcPohES.js new file mode 100644 index 00000000..301df145 --- /dev/null +++ b/assets/index.html-BkcPohES.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as a,c as s,a as e,b as t,e as r}from"./app-Mf7X6hWu.js";const c={},l=e("h1",{id:"ase-gui-的用法",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ase-gui-的用法","aria-hidden":"true"},"#"),t(" ASE GUI 的用法")],-1),d=e("p",null,"原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。",-1),h={href:"https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui",target:"_blank",rel:"noopener noreferrer"};function u(_,m){const i=o("ExternalLinkIcon");return a(),s("div",null,[l,d,e("p",null,[t("参考文档:"),e("a",h,[t("https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui"),r(i)])])])}const p=n(c,[["render",u],["__file","index.html.vue"]]);export{p as default}; diff --git a/assets/index.html-BoCFjjn-.js b/assets/index.html-BoCFjjn-.js new file mode 100644 index 00000000..add9e4e9 --- /dev/null +++ b/assets/index.html-BoCFjjn-.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-510100b8","path":"/code/Linux/","title":"Linux","lang":"zh-CN","frontmatter":{"title":"Linux","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-16T18:38:59.000Z","permalink":"/code/Linux/","article":false,"index":false,"order":0,"timeline":false,"description":"Linux","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/Linux/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux"}],["meta",{"property":"og:description","content":"Linux"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Linux\\",\\"description\\":\\"Linux\\"}"]]},"headers":[],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.09,"words":27},"filePathRelative":"code/linux/README.md","localizedDate":"2022年9月13日","excerpt":"

    Linux

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-C8pVrnd8.js b/assets/index.html-C8pVrnd8.js new file mode 100644 index 00000000..1702bcbc --- /dev/null +++ b/assets/index.html-C8pVrnd8.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-7757da05","path":"/dft-learning/pages/6daef6/","title":"建模中的一些小疑惑","lang":"zh-CN","frontmatter":{"title":"建模中的一些小疑惑","date":"2020-12-19T14:15:51.000Z","permalink":"/dft-learning/pages/6daef6/","category":["Materials-Studio"],"updated":"2022-01-16T19:56:37.000Z","description":"一些乱七八糟的为什么 为什么要建立超胞? 避免周期性镜像间的互相影响 考虑多分⼦吸附时的多种构象 如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么? 我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢? (1)掺杂问题 1)建立超胞是为了获得合适的掺杂浓度; 2)清晰地分成置换固溶体或间隙固溶体 (2)表面吸附问题 1)可以模拟不同晶向的吸附密度; 2)要避免吸附的气体分子和镜像分子间有作用; https://www.zhihu.com/question/282248524","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/6daef6/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"建模中的一些小疑惑"}],["meta",{"property":"og:description","content":"一些乱七八糟的为什么 为什么要建立超胞? 避免周期性镜像间的互相影响 考虑多分⼦吸附时的多种构象 如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么? 我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢? (1)掺杂问题 1)建立超胞是为了获得合适的掺杂浓度; 2)清晰地分成置换固溶体或间隙固溶体 (2)表面吸附问题 1)可以模拟不同晶向的吸附密度; 2)要避免吸附的气体分子和镜像分子间有作用; https://www.zhihu.com/question/282248524"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-12-19T14:15:51.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"建模中的一些小疑惑\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-12-19T14:15:51.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"为什么要建立超胞?","slug":"为什么要建立超胞","link":"#为什么要建立超胞","children":[]},{"level":2,"title":"如何选择真空层厚度?","slug":"如何选择真空层厚度","link":"#如何选择真空层厚度","children":[]},{"level":2,"title":"如何确定底部保留几层?","slug":"如何确定底部保留几层","link":"#如何确定底部保留几层","children":[]},{"level":2,"title":"埃 Angstrom","slug":"埃-angstrom","link":"#埃-angstrom","children":[]},{"level":2,"title":"CIF 文件的区别","slug":"cif-文件的区别","link":"#cif-文件的区别","children":[]},{"level":2,"title":"切面用 conventional 还是 primitive ?","slug":"切面用-conventional-还是-primitive","link":"#切面用-conventional-还是-primitive","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":2.48,"words":744},"filePathRelative":"dft-learning/04.Materials-Studio/02.note.md","localizedDate":"2020年12月19日","excerpt":"

    一些乱七八糟的为什么

    \\n

    为什么要建立超胞?

    \\n
      \\n
    1. 避免周期性镜像间的互相影响
    2. \\n
    3. 考虑多分⼦吸附时的多种构象
    4. \\n
    \\n
    \\n

    如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么?

    \\n

    我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢?

    \\n

    (1)掺杂问题

    \\n

    1)建立超胞是为了获得合适的掺杂浓度;

    \\n

    2)清晰地分成置换固溶体或间隙固溶体

    \\n

    (2)表面吸附问题

    \\n

    1)可以模拟不同晶向的吸附密度;

    \\n

    2)要避免吸附的气体分子和镜像分子间有作用;

    \\n

    https://www.zhihu.com/question/282248524

    \\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-CJ-zYQ3x.js b/assets/index.html-CJ-zYQ3x.js new file mode 100644 index 00000000..fa4f8683 --- /dev/null +++ b/assets/index.html-CJ-zYQ3x.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-7175f2e8","path":"/category/%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/","title":"电子结构 分类","lang":"zh-CN","frontmatter":{"title":"电子结构 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"电子结构","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/%E7%94%B5%E5%AD%90%E7%BB%93%E6%9E%84/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"电子结构 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"电子结构 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-CoM9z2GD.js b/assets/index.html-CoM9z2GD.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-CoM9z2GD.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-EvFZVL2w.js b/assets/index.html-EvFZVL2w.js new file mode 100644 index 00000000..de6cc380 --- /dev/null +++ b/assets/index.html-EvFZVL2w.js @@ -0,0 +1 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const s={},c=e("h1",{id:"vasp-输入输出文件",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#vasp-输入输出文件","aria-hidden":"true"},"#"),r(" VASP 输入输出文件")],-1),n=[c];function _(d,i){return t(),o("div",null,n)}const f=a(s,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-F9vPunw3.js b/assets/index.html-F9vPunw3.js new file mode 100644 index 00000000..498db088 --- /dev/null +++ b/assets/index.html-F9vPunw3.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-95f27414","path":"/dft-learning/pages/40eca8/","title":"配置 VTST 的脚本","lang":"zh-CN","frontmatter":{"title":"配置 VTST 的脚本","date":"2020-11-19T17:00:00.000Z","updated":"2022-09-16T17:36:04.000Z","permalink":"/dft-learning/pages/40eca8/","category":["Install"],"description":"配置 VTST 的脚本 下载 cd ~/app wget http://theory.cm.utexas.edu/code/vtstscripts.tgz","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/40eca8/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"配置 VTST 的脚本"}],["meta",{"property":"og:description","content":"配置 VTST 的脚本 下载 cd ~/app wget http://theory.cm.utexas.edu/code/vtstscripts.tgz"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T09:42:44.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-19T17:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T09:42:44.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"配置 VTST 的脚本\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-19T17:00:00.000Z\\",\\"dateModified\\":\\"2022-09-16T09:42:44.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"下载","slug":"下载","link":"#下载","children":[]},{"level":2,"title":"解压缩","slug":"解压缩","link":"#解压缩","children":[]},{"level":2,"title":"加入 bashrc","slug":"加入-bashrc","link":"#加入-bashrc","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1663321364000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":0.26,"words":77},"filePathRelative":"dft-learning/02.Install/22.linux-install-vtstScript.md","localizedDate":"2020年11月20日","excerpt":"

    配置 VTST 的脚本

    \\n

    下载

    \\n
    cd ~/app\\nwget http://theory.cm.utexas.edu/code/vtstscripts.tgz\\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-FSJmlPDA.js b/assets/index.html-FSJmlPDA.js new file mode 100644 index 00000000..08c8136c --- /dev/null +++ b/assets/index.html-FSJmlPDA.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"其他",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#其他","aria-hidden":"true"},"#"),r(" 其他")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-Fu2dNNPA.js b/assets/index.html-Fu2dNNPA.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-Fu2dNNPA.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-G1_hm51z.js b/assets/index.html-G1_hm51z.js new file mode 100644 index 00000000..88a213bf --- /dev/null +++ b/assets/index.html-G1_hm51z.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-6800466b","path":"/tag/ase-python/","title":"标签: ase python","lang":"zh-CN","frontmatter":{"title":"标签: ase python","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"ase python","key":"tag"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/tag/ase-python/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"标签: ase python"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"标签: ase python\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-GEcJO9t1.js b/assets/index.html-GEcJO9t1.js new file mode 100644 index 00000000..2736c9b9 --- /dev/null +++ b/assets/index.html-GEcJO9t1.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as i,c as s,a as e,b as o,e as n,d as a}from"./app-Mf7X6hWu.js";const h="/assets/237288bfbb59c4a86d1d70398576be49-6w9ToJf2.png",d={},c=a('

    不完全不准确不系统的计算模拟入坑记录

    学不会系列之材料计算
    学不会系列之材料计算

    本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。

    课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。

    教学大纲:

    1. 绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。
    2. Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。
    3. Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
    4. VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
    5. 结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。
    6. 电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。
    7. 反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。
    8. 计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础

    同为初学者,水平有限,如有错误还请指出。

    Bug/typo/error reports should be sent to:

    ',10),_=e("a",{href:"mailto:zhangjianbei@stu.scu.edu.cn"},"Zhang' email",-1),p={href:"https://github.com/northword/dft-learning/issues",target:"_blank",rel:"noopener noreferrer"},u=e("hr",null,null,-1),f=e("p",null,[e("strong",null,"Tips:")],-1),g=e("p",null,"移动端,左上角汉堡菜单选择章节;桌面端右上角菜单选择章节,左侧栏查看当前章节大纲。",-1),b=e("p",null,"桌面端食用体验更加~",-1),m=e("p",null,[o("本笔记中,代码块行前有 "),e("code",null,"$"),o(" 的,表示在终端输入的命令,实际不需要输入 "),e("code",null,"$"),o(" 符号。")],-1),k=e("code",null,"<参数>",-1),w=e("code",null,"[参数]",-1),x={href:"https://www.cnblogs.com/uakora/p/11809501.html",target:"_blank",rel:"noopener noreferrer"},y=e("hr",null,null,-1),P={href:"https://www.gitbook.com/",target:"_blank",rel:"noopener noreferrer"},S={href:"https://pages.github.com/",target:"_blank",rel:"noopener noreferrer"},N={href:"https://github.com/northword/computation-simulation",target:"_blank",rel:"noopener noreferrer"},V={href:"https://gitee.com/northword/dft-learning",target:"_blank",rel:"noopener noreferrer"},B=e("p",null,"晋 ICP 备 18010037 号 -1.",-1),E={href:"https://northword.cn",target:"_blank",rel:"noopener noreferrer"},v={href:"http://blog.northword.cn/dft-learning",target:"_blank",rel:"noopener noreferrer"},C={href:"http://northword.gitee.io/dft-learning",target:"_blank",rel:"noopener noreferrer"},T=e("p",null,"菜鸡小张,2020 年。",-1);function A(G,L){const t=l("ExternalLinkIcon");return i(),s("div",null,[c,e("p",null,[_,o(" or reported as an "),e("a",p,[o("issue"),n(t)]),o(" .")]),u,f,g,b,m,e("p",null,[o("本笔记中的命令的语法表示中:"),k,o(" 表示必须参数,"),w,o(" 表示可选参数,可参考 "),e("a",x,[o("命令行语法格式中常用符号的含义"),n(t)]),o("。")]),y,e("blockquote",null,[e("p",null,[o("Powered by "),e("a",P,[o("VuePress"),n(t)]),o(" , Hosted by "),e("a",S,[o("Github Pages"),n(t)]),o(" .")]),e("p",null,[o("Link of This "),e("a",N,[o("repository"),n(t)]),o(" in GitHub.")]),e("p",null,[o("Repository synced by "),e("a",V,[o("Gitee"),n(t)]),o(" .")]),B,e("p",null,[o("©2020 "),e("a",E,[o("Northword"),n(t)]),o(" .")])]),e("p",null,[o("Overseas link: "),e("a",v,[o("Github Pages"),n(t)])]),e("p",null,[o("Mainland link: "),e("a",C,[o("northword.gitee.io/dft-learning"),n(t)])]),T])}const I=r(d,[["render",A],["__file","index.html.vue"]]);export{I as default}; diff --git a/assets/index.html-GP7mUQp3.js b/assets/index.html-GP7mUQp3.js new file mode 100644 index 00000000..de95e2b4 --- /dev/null +++ b/assets/index.html-GP7mUQp3.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-8a8094b0","path":"/dft-learning/pages/904969/","title":"自旋电荷密度","lang":"zh-CN","frontmatter":{"title":"自旋电荷密度","date":"2021-01-13T14:21:10.000Z","category":["VASP","电子结构"],"permalink":"/dft-learning/pages/904969/","updated":"2022-09-12T17:46:53.000Z","description":"自旋电荷密度 本页以 O2 的自选电荷密度为例。 步骤 本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。 在 2-scf/ 文件夹中进行。 有两种方法获得其自旋电荷密度: 方法 1:通过 VTST 脚本 # Usage $ chgsplit.pl <CHGCAR> # This example [zjb@op 2-scf]$ chgsplit.pl CHGCAR Atoms in file: 2 Points in total charge density: 1200000 Points in magnetization density: 1200000","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/904969/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"自旋电荷密度"}],["meta",{"property":"og:description","content":"自旋电荷密度 本页以 O2 的自选电荷密度为例。 步骤 本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。 在 2-scf/ 文件夹中进行。 有两种方法获得其自旋电荷密度: 方法 1:通过 VTST 脚本 # Usage $ chgsplit.pl <CHGCAR> # This example [zjb@op 2-scf]$ chgsplit.pl CHGCAR Atoms in file: 2 Points in total charge density: 1200000 Points in magnetization density: 1200000"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"自旋电荷密度"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-01-13T14:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"自旋电荷密度\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2021-01-13T14:21:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"方法 1:通过 VTST 脚本","slug":"方法-1-通过-vtst-脚本","link":"#方法-1-通过-vtst-脚本","children":[]},{"level":3,"title":"方法 2:通过 VASPKIT","slug":"方法-2-通过-vaspkit","link":"#方法-2-通过-vaspkit","children":[]}]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":5}]},"readingTime":{"minutes":0.83,"words":250},"filePathRelative":"dft-learning/05.VASP/03.电子结构/03.vasp-chg-split.md","localizedDate":"2021年1月13日","excerpt":"

    自旋电荷密度

    \\n

    本页以 O2 的自选电荷密度为例。

    \\n

    步骤

    \\n

    本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。

    \\n

    2-scf/ 文件夹中进行。

    \\n

    有两种方法获得其自旋电荷密度:

    \\n

    方法 1:通过 VTST 脚本

    \\n
    # Usage\\n$ chgsplit.pl <CHGCAR>\\n\\n# This example\\n[zjb@op 2-scf]$ chgsplit.pl CHGCAR\\nAtoms in file: 2\\nPoints in total charge density: 1200000\\nPoints in magnetization density: 1200000\\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-GPnIpFjZ.js b/assets/index.html-GPnIpFjZ.js new file mode 100644 index 00000000..6d65eea4 --- /dev/null +++ b/assets/index.html-GPnIpFjZ.js @@ -0,0 +1,124 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as a,d as e}from"./app-Mf7X6hWu.js";const p={},o=e(`

    然后打开 vaspkit,依次进入 3303

    [zjb@op NaCl]$ cp NaCl.vasp POSCAR
    +[zjb@op NaCl]$ vaspkit
    + 
    +            \\\\\\///         
    +           / _  _ \\       Hey, you must know what you are doing.  
    +         (| (.)(.) |)     Otherwise you might get wrong results!  
    + +-----.OOOo--()--oOOO.------------------------------------------+
    + |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
    + |        Core Developer: Vei WANG (wangvei@icloud.com)          |
    + |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
    + |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
    + +-----.oooO-----------------------------------------------------+
    +        (   )   Oooo.     
    +         \\ (    (   )     
    +          \\_)    ) /      
    +                (_/       
    + ===================== Structural Options ========================
    + 1)  VASP Input Files Generator    2)  Elastic-Properties         
    + 3)  K-Path Generator              4)  Structure Editor           
    + 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
    + 
    + ===================== Electronic Options ========================
    + 11) Density-of-States             21) DFT Band-Structure         
    + 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
    + 26) Fermi-Surface                 28) Band-Structure Unfolding   
    + 
    + =========== Charge & Potential & Wavefunction Options ===========
    + 31) Charge & Spin Density         42) Potential-Related          
    + 51) Wave-Function Analysis  
    + ====================== Misc Utilities ===========================
    + 71) Optical-Properties            72) Molecular-Dynamics Kit 
    + 73) VASP2other Interface          74) USER interface
    + 91) Semiconductor Calculator      92) 2D-Materials Kit       
    +                                                                  
    + 0)  Quit                                                         
    + ------------>>
    +3
    + ===================== K-Path Options ============================
    + 301) 1D Nano Structure
    + 302) 2D Nano Structure (Experimental)
    + 303) 3D bulk structure (Experimental)
    + 304) Phonopy K-Path for 2D Nano Structure (Experimental)
    + 
    + 0) Quit                                              
    + 9) Back                                              
    + ------------>>
    +303
    + +-------------------------- Warm Tips --------------------------+
    +   The suggested K-Path is only for standardized primtive cell.
    +   It is for reference only and you can manually modify K-Path.
    + +---------------------------------------------------------------+
    + +-------------------------- Warm Tips --------------------------+
    +     See An Example in vaspkit/examples/seek_kpath/GaAs_bulk.        
    +   The suggested K-Path is only for standardized primtive cell.
    + This Feature is Experimental & Check Your System using SeeK-Path.       
    + For More details See [www.materialscloud.org/work/tools/seekpath].
    + +---------------------------------------------------------------+
    +  -->> (01) Reading Structural Parameters from POSCAR File...
    + +-------------------------- Summary ----------------------------+
    +                           Prototype: AB
    +           Total Atoms in Input Cell:   8
    +     Lattice Constants in Input Cell:   5.620   5.620   5.620
    +        Lattice Angles in Input Cell:  90.000  90.000  90.000
    +       Total Atoms in Primitive Cell:   2
    + Lattice Constants in Primitive Cell:   3.974   3.974   3.974
    +    Lattice Angles in Primitive Cell:  60.000  60.000  60.000
    +                      Crystal System: Cubic
    +                       Crystal Class: m-3m
    +                     Bravais Lattice: cF
    +            Extended Bravais Lattice: cF2
    +                         Space Group: 225
    +                         Point Group: 32 [ Oh ]
    +                       International: Fm-3m
    +                 Symmetry Operations: 192
    +                    Suggested K-Path: (shown in the next line)
    + [ Gamma-X-U|K-Gamma-L-W-X ]
    + +---------------------------------------------------------------+
    +  -->> (02) Written PRIMCELL.vasp file.
    +  -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference.
    +  -->> (04) Written POTCAR File with the Recommended Potential!
    +  -->> (05) Written KPATH.in File for Band-Structure Calculation.
    + +----------------------------WARNING----------------------------+
    + | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know |
    + |   what you are doing. Otherwise you might get wrong results!  |
    + +---------------------------------------------------------------+
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +[zjb@op NaCl]$ 
    +
    +

    之后这个目录会有如下文件:

    [zjb@op NaCl]$ ll
    +total 400
    +-rw-r--r-- 1 zjb energy    957 Oct 31 21:02 HIGH_SYMMETRY_POINTS
    +-rw-r--r-- 1 zjb energy    860 Oct 31 21:03 KPATH.in
    +-rw-r--r-- 1 zjb energy   4008 Oct 30 16:14 NaCl_import.cif
    +-rw-r--r-- 1 zjb energy    706 Oct 30 16:19 NaCl.vasp
    +-rw-r--r-- 1 zjb energy    706 Oct 31 21:02 POSCAR
    +-rw-r--r-- 1 zjb energy 404221 Oct 31 21:03 POTCAR
    +-rw-r--r-- 1 zjb energy    382 Oct 31 21:02 PRIMCELL.vasp
    +

    这样就生成了 POACARPOTCAR

    [zjb@op NaCl]$ cat POSCAR 
    +NaCl_import
    +1.0
    +        5.6199998856         0.0000000000         0.0000000000
    +        0.0000000000         5.6199998856         0.0000000000
    +        0.0000000000         0.0000000000         5.6199998856
    +   Na   Cl
    +    4    4
    +Direct
    +     0.000000000         0.000000000         0.000000000
    +     0.000000000         0.500000000         0.500000000
    +     0.500000000         0.000000000         0.500000000
    +     0.500000000         0.500000000         0.000000000
    +     0.500000000         0.500000000         0.500000000
    +     0.500000000         0.000000000         0.000000000
    +     0.000000000         0.500000000         0.000000000
    +     0.000000000         0.000000000         0.500000000
    +
    `,7),t=[o];function l(r,c){return s(),a("div",null,t)}const k=n(p,[["render",l],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-GUGYvKH_.js b/assets/index.html-GUGYvKH_.js new file mode 100644 index 00000000..b73ae214 --- /dev/null +++ b/assets/index.html-GUGYvKH_.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-229bd4e8","path":"/category/%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/","title":"分子动力学 分类","lang":"zh-CN","frontmatter":{"title":"分子动力学 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"分子动力学","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/%E5%88%86%E5%AD%90%E5%8A%A8%E5%8A%9B%E5%AD%A6/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"分子动力学 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"分子动力学 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-G_enMliH.js b/assets/index.html-G_enMliH.js new file mode 100644 index 00000000..de3105d3 --- /dev/null +++ b/assets/index.html-G_enMliH.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as i,c as d,a as e,e as o,w as a,b as t}from"./app-Mf7X6hWu.js";const c={},s=e("h1",{id:"文档",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#文档","aria-hidden":"true"},"#"),t(" 文档")],-1),u=e("p",null,"此文件夹放置除科研外的文档。",-1),_=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1);function h(f,m){const n=r("RouterLink");return i(),d("div",null,[s,u,_,e("ul",null,[e("li",null,[o(n,{to:"/dft-learning/"},{default:a(()=>[t("理论计算学习笔记")]),_:1})]),e("li",null,[o(n,{to:"/characterization/"},{default:a(()=>[t("材料表征学习笔记")]),_:1})]),e("li",null,[o(n,{to:"/code/linux/00.intro.html"},{default:a(()=>[t("Linux 学习笔记")]),_:1})]),e("li",null,[o(n,{to:"/code/document-style-guide.html"},{default:a(()=>[t("中文技术文档的写作规范")]),_:1})])])])}const k=l(c,[["render",h],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-Gz3sG_v7.js b/assets/index.html-Gz3sG_v7.js new file mode 100644 index 00000000..93a80cdd --- /dev/null +++ b/assets/index.html-Gz3sG_v7.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-e6ee3948","path":"/dft-learning/pages/391336/","title":"作业:矩形石墨烯建模","lang":"zh-CN","frontmatter":{"title":"作业:矩形石墨烯建模","date":"2020-09-28T12:21:10.000Z","category":["Materials-Studio"],"permalink":"/dft-learning/pages/391336/","updated":"2022-01-16T19:45:35.000Z","description":"作业:矩形石墨烯建模 任务 建立矩形的石墨烯模型 步骤 导入石墨烯结构 import - Structures\\\\ceramics\\\\graphite.msi Make P1 降低对成性 Build -> Symmetry -> Make P1, 删掉一层C原子层 切面 Build -> Surfaces -> Cleave Surface Surface Box - Cleave plane: 001 Surface Mesh - Surface vectors - U: 210 超胞 Build -> Symmetry -> Supercell Supercell range A=3, B=5 (60 C atoms) 真空层 Build -> Crystals -> Build Vacuum Slab Vacuum orientation: C Vacuum thickness: 20 Å 将原子层移动到Z方向中部(只是看起来方便) Display style -> Lattice -> display style -> style -> In cell 修改背景、标尺、晶格的颜色等 Save and Print to PDF","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/391336/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"作业:矩形石墨烯建模"}],["meta",{"property":"og:description","content":"作业:矩形石墨烯建模 任务 建立矩形的石墨烯模型 步骤 导入石墨烯结构 import - Structures\\\\ceramics\\\\graphite.msi Make P1 降低对成性 Build -> Symmetry -> Make P1, 删掉一层C原子层 切面 Build -> Surfaces -> Cleave Surface Surface Box - Cleave plane: 001 Surface Mesh - Surface vectors - U: 210 超胞 Build -> Symmetry -> Supercell Supercell range A=3, B=5 (60 C atoms) 真空层 Build -> Crystals -> Build Vacuum Slab Vacuum orientation: C Vacuum thickness: 20 Å 将原子层移动到Z方向中部(只是看起来方便) Display style -> Lattice -> display style -> style -> In cell 修改背景、标尺、晶格的颜色等 Save and Print to PDF"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"作业:矩形石墨烯建模"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-09-28T12:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"作业:矩形石墨烯建模\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-09-28T12:21:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"任务","slug":"任务","link":"#任务","children":[]},{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[]},{"level":2,"title":"结果","slug":"结果","link":"#结果","children":[]}],"git":{"createdTime":1662968799000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":0.68,"words":203},"filePathRelative":"dft-learning/04.Materials-Studio/12.task-model-of-Rectangular-graphene.md","localizedDate":"2020年9月28日","excerpt":"

    作业:矩形石墨烯建模

    \\n

    任务

    \\n

    建立矩形的石墨烯模型

    \\n

    步骤

    \\n
      \\n
    1. \\n

      导入石墨烯结构

      \\n

      import - Structures\\\\ceramics\\\\graphite.msi

      \\n
    2. \\n
    3. \\n

      Make P1 降低对成性

      \\n

      Build -> Symmetry -> Make P1,

      \\n

      删掉一层C原子层

      \\n
    4. \\n
    5. \\n

      切面

      \\n

      Build -> Surfaces -> Cleave Surface

      \\n

      Surface Box - Cleave plane: 001

      \\n

      Surface Mesh - Surface vectors - U: 210

      \\n
    6. \\n
    7. \\n

      超胞

      \\n

      Build -> Symmetry -> Supercell

      \\n

      Supercell range A=3, B=5 (60 C atoms)

      \\n
    8. \\n
    9. \\n

      真空层

      \\n

      Build -> Crystals -> Build Vacuum Slab

      \\n

      Vacuum orientation: C

      \\n

      Vacuum thickness: 20 Å

      \\n
    10. \\n
    11. \\n

      将原子层移动到Z方向中部(只是看起来方便)

      \\n
    12. \\n
    13. \\n

      Display style -> Lattice -> display style -> style -> In cell

      \\n
    14. \\n
    15. \\n

      修改背景、标尺、晶格的颜色等

      \\n
    16. \\n
    17. \\n

      Save and Print to PDF

      \\n
    18. \\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-HRXm3WnO.js b/assets/index.html-HRXm3WnO.js new file mode 100644 index 00000000..bf1e3e2b --- /dev/null +++ b/assets/index.html-HRXm3WnO.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-2deff341","path":"/dft-learning/pages/69b75c/","title":"VASP 的输入文件","lang":"zh-CN","frontmatter":{"title":"VASP 的输入文件","date":"2020-11-19T13:28:10.000Z","updated":"2022-12-16T15:56:28.000Z","permalink":"/dft-learning/pages/69b75c/","category":["VASP"],"description":"VASP 的输入文件 VASP 运行至少包含四个输入文件:INCAR、POSCAR、POTCATR、KPOINTS。 INCAR INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。 标签的含义可以查 vasp-input-files-INCAR 和 [VASP 手册](https://www.vasp.at/wiki/index.php/Category: INCAR)。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/69b75c/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP 的输入文件"}],["meta",{"property":"og:description","content":"VASP 的输入文件 VASP 运行至少包含四个输入文件:INCAR、POSCAR、POTCATR、KPOINTS。 INCAR INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。 标签的含义可以查 vasp-input-files-INCAR 和 [VASP 手册](https://www.vasp.at/wiki/index.php/Category: INCAR)。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-19T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"VASP 的输入文件\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-19T13:28:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"INCAR","slug":"incar","link":"#incar","children":[]},{"level":2,"title":"POSCAR","slug":"poscar","link":"#poscar","children":[]},{"level":2,"title":"POTCAR","slug":"potcar","link":"#potcar","children":[]},{"level":2,"title":"KPOINTS","slug":"kpoints","link":"#kpoints","children":[]},{"level":2,"title":"STOPCAR","slug":"stopcar","link":"#stopcar","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":6}]},"readingTime":{"minutes":8.58,"words":2574},"filePathRelative":"dft-learning/05.VASP/01.VASP输入输出文件/01.vasp-input-files.md","localizedDate":"2020年11月19日","excerpt":"

    VASP 的输入文件

    \\n

    VASP 运行至少包含四个输入文件:INCARPOSCARPOTCATRKPOINTS

    \\n

    INCAR

    \\n

    INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。

    \\n

    标签的含义可以查 vasp-input-files-INCAR 和 [VASP 手册](https://www.vasp.at/wiki/index.php/Category: INCAR)。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-HeSEfSZT.js b/assets/index.html-HeSEfSZT.js new file mode 100644 index 00000000..ab6d613e --- /dev/null +++ b/assets/index.html-HeSEfSZT.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-9c48d85a","path":"/category/linux/","title":"Linux 分类","lang":"zh-CN","frontmatter":{"title":"Linux 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"Linux","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/linux/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Linux 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-Hg3Zeshb.js b/assets/index.html-Hg3Zeshb.js new file mode 100644 index 00000000..f16d0ffc --- /dev/null +++ b/assets/index.html-Hg3Zeshb.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"材料表征",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#材料表征","aria-hidden":"true"},"#"),r(" 材料表征")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-Hl4JhKud.js b/assets/index.html-Hl4JhKud.js new file mode 100644 index 00000000..fc691e0f --- /dev/null +++ b/assets/index.html-Hl4JhKud.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-145ac574","path":"/blog/","title":"博客","lang":"zh-CN","frontmatter":{"title":"博客","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-16T13:25:04.000Z","permalink":"/blog/","article":false,"index":false,"order":0,"timeline":false,"description":"博客 北辞の窝。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/blog/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"博客"}],["meta",{"property":"og:description","content":"博客 北辞の窝。"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T05:28:03.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T05:28:03.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"博客\\",\\"description\\":\\"博客 北辞の窝。\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663306083000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.11,"words":32},"filePathRelative":"blog/README.md","localizedDate":"2022年9月13日","excerpt":"

    博客

    \\n

    北辞の窝。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-IVTFLvyg.js b/assets/index.html-IVTFLvyg.js new file mode 100644 index 00000000..51c09aef --- /dev/null +++ b/assets/index.html-IVTFLvyg.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-5faa7940","path":"/category/materials-studio/","title":"Materials-Studio 分类","lang":"zh-CN","frontmatter":{"title":"Materials-Studio 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"Materials-Studio","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/materials-studio/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Materials-Studio 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Materials-Studio 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-ImYwWgI6.js b/assets/index.html-ImYwWgI6.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-ImYwWgI6.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-J32BOFch.js b/assets/index.html-J32BOFch.js new file mode 100644 index 00000000..fda1246f --- /dev/null +++ b/assets/index.html-J32BOFch.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-316e1a6a","path":"/dft-learning/vasp/","title":"Vasp","lang":"zh-CN","frontmatter":{"title":"Vasp","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/vasp/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Vasp"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Vasp\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-JrMMdHQN.js b/assets/index.html-JrMMdHQN.js new file mode 100644 index 00000000..bc693b80 --- /dev/null +++ b/assets/index.html-JrMMdHQN.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-326a924f","path":"/characterization/sem/","title":"SEM","lang":"zh-CN","frontmatter":{"title":"SEM","date":"2022-09-14T23:58:16.000Z","permalink":"/characterization/sem/","description":"SEM","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/characterization/sem/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"SEM"}],["meta",{"property":"og:description","content":"SEM"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T05:28:03.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-14T23:58:16.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T05:28:03.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"SEM\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-14T23:58:16.000Z\\",\\"dateModified\\":\\"2022-09-16T05:28:03.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663306083000,"updatedTime":1663306083000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.04,"words":12},"filePathRelative":"characterization/sem.md","localizedDate":"2022年9月15日","excerpt":"

    SEM

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-K766vQ0K.js b/assets/index.html-K766vQ0K.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-K766vQ0K.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-K7S-l-3j.js b/assets/index.html-K7S-l-3j.js new file mode 100644 index 00000000..3b834e6b --- /dev/null +++ b/assets/index.html-K7S-l-3j.js @@ -0,0 +1 @@ +const n=JSON.parse('{"key":"v-48a4ee89","path":"/dft-learning/pages/206ec4/","title":"准备 VASP 的输入文件","lang":"zh-CN","frontmatter":{"title":"准备 VASP 的输入文件","date":"2020-10-31T19:06:00.000Z","permalink":"/dft-learning/pages/206ec4/","category":["VASP"],"updated":"2022-01-16T19:56:57.000Z","description":"准备 VASP 的输入文件 输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。 该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。 VASPKIT 生成输入文件的选项 VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具: [zjb@op O2_opt]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>>","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/206ec4/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"准备 VASP 的输入文件"}],["meta",{"property":"og:description","content":"准备 VASP 的输入文件 输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。 该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。 VASPKIT 生成输入文件的选项 VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具: [zjb@op O2_opt]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>>"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T19:06:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"准备 VASP 的输入文件\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-10-31T19:06:00.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"VASPKIT 生成输入文件的选项","slug":"vaspkit-生成输入文件的选项","link":"#vaspkit-生成输入文件的选项","children":[]},{"level":2,"title":"POSCAR","slug":"poscar","link":"#poscar","children":[{"level":3,"title":"方法 1:通过新建 POSCAR 文件并手动写入内容","slug":"方法-1-通过新建-poscar-文件并手动写入内容","link":"#方法-1-通过新建-poscar-文件并手动写入内容","children":[]},{"level":3,"title":"方法 2:通过 Materials Studio 建模以生成 POSCAR","slug":"方法-2-通过-materials-studio-建模以生成-poscar","link":"#方法-2-通过-materials-studio-建模以生成-poscar","children":[]},{"level":3,"title":"方法 3:从结构网站获取","slug":"方法-3-从结构网站获取","link":"#方法-3-从结构网站获取","children":[]}]},{"level":2,"title":"INCAR","slug":"incar","link":"#incar","children":[]},{"level":2,"title":"KPOINTS","slug":"kpoints","link":"#kpoints","children":[]},{"level":2,"title":"POTCAR","slug":"potcar","link":"#potcar","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":7.04,"words":2112},"filePathRelative":"dft-learning/05.VASP/01.VASP输入输出文件/03.vasp-input-files-gen.md","localizedDate":"2020年11月1日","excerpt":"

    准备 VASP 的输入文件

    \\n

    输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。

    \\n

    该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。

    \\n
    \\n

    VASPKIT 生成输入文件的选项

    \\n

    VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具:

    \\n
    [zjb@op O2_opt]$ vaspkit\\n \\n            \\\\\\\\\\\\///         \\n           / _  _ \\\\       Hey, you must know what you are doing.  \\n         (| (.)(.) |)     Otherwise you might get wrong results!  \\n +-----.OOOo--()--oOOO.------------------------------------------+\\n |             VASPKIT Version: 1.12 (01 Mar. 2020)              |\\n |        Core Developer: Vei WANG (wangvei@icloud.com)          |\\n |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |\\n |    Please send Bugs and Suggestions to vaspkit@gmail.com      |\\n +-----.oooO-----------------------------------------------------+\\n        (   )   Oooo.     \\n         \\\\ (    (   )     \\n          \\\\_)    ) /      \\n                (_/       \\n ===================== Structural Options ========================\\n 1)  VASP Input Files Generator    2)  Elastic-Properties         \\n 3)  K-Path Generator              4)  Structure Editor           \\n 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            \\n \\n ===================== Electronic Options ========================\\n 11) Density-of-States             21) DFT Band-Structure         \\n 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  \\n 26) Fermi-Surface                 28) Band-Structure Unfolding   \\n \\n =========== Charge & Potential & Wavefunction Options ===========\\n 31) Charge & Spin Density         42) Potential-Related          \\n 51) Wave-Function Analysis  \\n ====================== Misc Utilities ===========================\\n 71) Optical-Properties            72) Molecular-Dynamics Kit \\n 73) VASP2other Interface          74) USER interface\\n 91) Semiconductor Calculator      92) 2D-Materials Kit       \\n                                                                  \\n 0)  Quit                                                         \\n ------------>>\\n\\n
    ","autoDesc":true}');export{n as data}; diff --git a/assets/index.html-KEXZyb31.js b/assets/index.html-KEXZyb31.js new file mode 100644 index 00000000..d0831eb5 --- /dev/null +++ b/assets/index.html-KEXZyb31.js @@ -0,0 +1,116 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as d,o as t,c,a as n,b as a,e,d as i}from"./app-Mf7X6hWu.js";const r={},o=i(`

    编译 VASP with VTST

    准备源码

    VASP 源码目录结构

    $ more README
    +           vasp.X.X.X (root directory)
    +                      |
    +   ---------------------------------------
    +  |              |          |             |
    + arch           bin       build          src
    +                                          |
    +                                     ----------
    +                                    |          |
    +                                   lib       CUDA
    +

    说明:

    • vasp.X.X.X:解压缩后的根目录
    • arch:针对不同架构的 Makefile 模板,如里面含有 makefile.include.linux_intel
    • bin:编译后的可执行程序文件
    • build:编译时自动复制 src 目录内源码后执行编译的目录
    • src:源码目录
    • lib:库目录,对应以前的 vasp.lib 目录
    • CUDA:GPU CUDA 代码目录

    VTSTCode

    下载并解压缩 VTSTCode

    `,8),p={href:"http://theory.cm.utexas.edu/vtsttools/download.html",target:"_blank",rel:"noopener noreferrer"},v=i(`

    目录结构:

    [scujh_zjb@scu vtstcode-184]$ tree
    +.
    +├── bbm.F
    +├── bfgs.F
    +├── cg.F
    +├── chain.F
    +├── dimer.F
    +├── dynamic.F
    +├── dynmat.F
    +├── fire.F
    +├── instanton.F
    +├── lanczos.F
    +├── lbfgs.F
    +├── neb.F
    +├── opt.F
    +├── qm.F
    +├── sd.F
    +├── vtstcode5
    +│   ├── bbm.F
    +│   ├── bdr_changes
    +│   ├── bfgs.F
    +│   ├── cg.F
    +│   ├── chain.F
    +│   ├── dimer.F
    +│   ├── dynamic.F
    +│   ├── dynmat.F
    +│   ├── fire.F
    +│   ├── instanton.F
    +│   ├── lanczos.F
    +│   ├── lbfgs.F
    +│   ├── neb.F
    +│   ├── opt.F
    +│   ├── qm.F
    +│   ├── sd.F
    +│   ├── vasp-5.3.2-main.patch
    +│   ├── vasp-5.3.2-mpmd.patch
    +│   ├── vasp-5.4.1-mpmd.patch
    +│   └── vasp-5.4.4-mpmd.patch
    +└── vtstcode6.1
    +├── bbm.F
    +├── bfgs.F
    +├── cg.F
    +├── chain.F
    +├── dimer.F
    +├── dynamic.F
    +├── dynmat.F
    +├── fire.F
    +├── instanton.F
    +├── lanczos.F
    +├── lbfgs.F
    +├── neb.F
    +├── opt.F
    +├── qm.F
    +└── sd.F
    +
    +2 directories, 50 files
    +
    +

    复制 VTSTCode 到 VASP/src

    需要注意的是,应把对应于 VASP 版本的 VTSTCode 复制到 scr 目录,例如 vasp 5.4.4,则应复制 vtstcode5 子文件夹中的内容。

    For vasp.6.2.1 you will need vtstcode 4.1 (revision 182). A version of the vtstcode that will work with vasp.6.1.x - vasp.6.2.0 has been saved in the vtstcode6.1 directory.

    修改 src/main.F

    将(第 3233 行)

    CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
    +     LATT_CUR%A,LATT_CUR%B,IO%IU6)
    +

    修改为

    CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
    +      TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)
    +!     LATT_CUR%A,LATT_CUR%B,IO%IU6)
    +

    如果是 vasp 6.2 及以上,额外修改

    IF (LCHAIN) CALL chain_init( T_INFO, IO)
    +

    CALL chain_init( T_INFO, IO)
    +
    `,14),u={href:"http://theory.cm.utexas.edu/vtsttools/installation.html",target:"_blank",rel:"noopener noreferrer"},m=i(`

    修改编译配置

    修改 src/.objects,在 chain.o 前(第 67 行)添加如下内容:

        bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \\
    +    fire.o lanczos.o neb.o qm.o opt.o \\
    +

    注意:\\ 后不得有空格

    准备编译环境

    检查编译环境

    which icc ifort icpc mpiifort mpirun
    +

    如果正常输出 5 个路径,则编译环境已配置好,可以跳过下一步。如果没有,进入下一步。

    配置编译环境

    一般的,编译 vasp+vtst 的,通常都已经编译了 vasp,那意味着编译环境本身是已经安装好的,可以通过如下重新应用编译环境的变量,具体的路径可以自行在机器上查找,或参考 vasp 的 pbs 文件中提供的路径。

    # source <intel_compiler_dir>/bin/compilervars.sh intel64
    +# source <intel_mkl_dir>/bin/mklvars.sh intel64
    +# source <intel_mpi_dir>/intel64/bin/mpivars.sh intel64
    +

    部分机器使用 module 管理环境变量的,可以通过 module avail 查看所有可用包,找到 intel/xxx 相关的并 module load <name>。 配置完成后,返回上一步检查是否成功。 这里顺便检查一下有无已编译的 fftw 文件:libfftw3_mpi.a

    修改 makefile.include 文件

    arch/makefile.include.linux_intel 做模板进行修改

    cp arch/makefile.include.linux_intel makefile.include
    +

    makefile.include 文件进行如下修改,14 行开始编译器配置改为

    # line 14 编译器配置
    +FC         = mpiifort
    +FCL        = mpiifort -mkl
    +
    +# line 23 数学库配置
    +MKLROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl
    +MKL_PATH   = $(MKLROOT)/lib/intel64
    +BLAS       =
    +LAPACK     =
    +BLACS      =-L$(MKL_PATH) -lmkl_blacs_intelmpi_lp64
    +SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)
    +
    +# line 30 fftw 配置 (其中/opt/fftw 是我编译后安装的目录)
    +OBJECTS    = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \\
    +           /opt/fftw/lib/libfftw3_mpi.a
    +INCS       =-I/opt/fftw/include
    +

    安装

    编译

    make
    +

    添加环境变量

    略。

    错误解决

    如下报错系 vtstcode 版本与 vasp 不一致导致:

    mpiifort -free -names lowercase -assume byterecl -w -O2 -xHOST -I/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include/fftw -c instanton.f90  
    +instanton.F(57): error #6580: Name in only-list does not exist or is not accessible. [RANE]  
    +USE random_seeded, ONLY: RANE  
    +-------------------------------^  
    +instanton.F(208): error #6580: Name in only-list does not exist or is not accessible. [RANE]  
    +USE random_seeded, ONLY: RANE  
    +-------------------------------^  
    +instanton.F(433): error #6404: This name does not have a type, and must have an explicit type. [RANE]  
    +w(i,j,im)=rane()-0.5_q  
    +----------------------------^  
    +compilation aborted for instanton.f90 (code 1)  
    +make[2]: *** [instanton.o] Error 1  
    +make[2]: Leaving directory \`/root/chem/vasp.5.4.4/build/std'  
    +cp: cannot stat ‘vasp’: No such file or directory  
    +make[1]: *** [all] Error 1  
    +make[1]: Leaving directory \`/root/chem/vasp.5.4.4/build/std'  
    +make: *** [std] Error 2
    +
    `,25),b={href:"https://theory.cm.utexas.edu/forum/viewtopic.php?p=20806",target:"_blank",rel:"noopener noreferrer"},h=n("h2",{id:"参考文献",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#参考文献","aria-hidden":"true"},"#"),a(" 参考文献")],-1),k={href:"http://hmli.ustc.edu.cn/doc/app/vasp.5.4.1-vtst.htm",target:"_blank",rel:"noopener noreferrer"};function f(_,g){const s=d("ExternalLinkIcon");return t(),c("div",null,[o,n("p",null,[a("VTSTCode 下载: "),n("a",p,[a("Download — Transition State Tools for VASP (utexas.edu)"),e(s)])]),v,n("p",null,[a("参考: "),n("a",u,[a("Installation — Transition State Tools for VASP (utexas.edu)"),e(s)])]),m,n("p",null,[a("解决方案:假设使用的 vasp 5.4.4,则复制 vtstcode 时,应使用 vtst-xxx/vtstcode5 下的。参见: "),n("a",b,[a("Problem compiling instanton.F - UT theoretical chemistry code forum (utexas.edu)"),e(s)])]),h,n("p",null,[a("安装过程: "),n("a",k,[a("VASP 5.4.1+VTST 编译安装 (ustc.edu.cn)"),e(s)])])])}const T=l(r,[["render",f],["__file","index.html.vue"]]);export{T as default}; diff --git a/assets/index.html-KFqMjBbI.js b/assets/index.html-KFqMjBbI.js new file mode 100644 index 00000000..036707f9 --- /dev/null +++ b/assets/index.html-KFqMjBbI.js @@ -0,0 +1,198 @@ +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as c,c as r,a as n,b as e,e as s,w as o,d as i}from"./app-Mf7X6hWu.js";const p="/assets/3d1bc1797140403edfb7f0011ab71de5-yaXlBe1s.png",u="/assets/ae7712b9ff5bec6c851b0f553e6cca53-4piaT0Op.png",b="/assets/a46d406ebbefc57ea1e957c0a9da12c0-mb93aXEl.png",v="/assets/bc322911f81cb347efa95db579d1c12d-0pH5Tj37.gif",m="/assets/3bba5a4242f7c15534225c20a4c1e35c-T42ENHdB.jpg",h={},g=i('

    使用 NEB 方法计算反应路径

    流程

    1. 分别对初态和末态进行结构优化
    2. 使用脚本生成中间过程图像 (结构)
    3. NEB 计算
    4. 处理结果

    文件结构

    ',4),k={class:"hint-container details"},f=n("summary",null,"详情",-1),T=n("figure",null,[n("img",{src:p,alt:"neb 计算的文件结构示意",tabindex:"0",loading:"lazy"}),n("figcaption",null,"neb 计算的文件结构示意")],-1),x=i(`
    [zjb@op neb]$ tree
    +.
    +├── ini                ***初态常规结构优化***
    +│   ├── CONTCAR            -初态优化后的结构——新的初态
    +│   ├── INCAR              -初态结构优化的输入文件1
    +│   ├── ini2.vasp          -
    +│   ├── KPOINTS            -初态结构优化的输入文件2
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── out.log
    +│   ├── POSCAR             -初态结构优化的输入文件3
    +│   ├── POTCAR             -初态结构优化的输入文件4
    +│   ├── stdout
    +│   ├── vasp.pbs
    +├── fin                ***末态常规结构优化***
    +│   ├── CONTCAR            -末态优化后的结构——新的末态
    +│   ├── fin2.vasp
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── out.log
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── 00                 ***↓↓↓*****中间态*****↓↓↓***
    +│   ├── OUTCAR            -初态结构优化后的OUTCAR   ../ini/OUTCAR
    +│   ├── POSCAR            -初态结构优化后的CONTCAR  ../ini/CONTCAR
    +│   └── POSCAR.xyz
    +├── 01
    +│   ├── CONTCAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   └── POSCAR.xyz
    +│   └── stdout
    +├── 02
    +│   ├── CONTCAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POSCAR.xyz
    +│   └── stdout
    +├── 03
    +│   ├── CONTCAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POSCAR.xyz
    +│   └── stdout
    +├── 04
    +│   ├── OUTCAR            *末态结构优化后的OUTCAR  ../fin/OUTCAR
    +│   ├── POSCAR            *末态结构优化后的CONTCAR ../fin/CONTCAR
    +│   └── POSCAR.xyz     ***↑↑↑*****中间态*****↑↑↑***
    +
    +├── INCAR              ***neb计算的输入文件等***
    +├── KPOINTS
    +├── movie
    +├── movie.xyz
    +├── neb.dat
    +├── out.log
    +├── POTCAR
    +├── stdout
    +├── vasp.pbs
    +└── vasprun.xml
    +
    `,1),O=i(`

    步骤

    Step1. 分别对初态和末态进行常规的结构优化

    上课时的例子是 O 在 N 掺杂的石墨烯上的吸附,其中 INCAR

    详情
    Global Parameters
    +ISTART =  0            (Read existing wavefunction; if there)
    +LREAL  = .FALSE.          (Projection operators: automatic)
    +ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    +PREC   =  Normal       (Precision level)
    +LWAVE  = .FALSE.        (Write WAVECAR or not)
    +LCHARG = .FALSE.        (Write CHGCAR or not)
    +ALGO = Fast
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.1         (Smearing value in eV; metals:0.2)
    +NELM   =  60           (Max electronic SCF steps)
    +NELMIN =  4            (Min electronic SCF steps)
    +EDIFF  =  1E-04        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +ISIF   =  0          (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -1E-01        (Ionic convergence; eV/AA)
    +POTIM = 0.3
    +

    [!warning] 两个 POSCAR 中,元素顺序必须对应,要不然后面测相似度会出问题,会变得很大。(通过 cif2pos 和 xsd2pos 的默认排的顺序不一样哦,已踩坑)

    初态结构优化后 fin/CONTCAR
    初态结构优化后 fin/CONTCAR

    上图:初态结构优化后的

    下图:末态结构优化后的

    末态结构优化后后 ini/CONTCAR
    末态结构优化后后 ini/CONTCAR

    初末态看起来不一样是因为周期性导致的,只是显示的不同而已。

    Step2. 使用脚本处理中间过程

    结构优化后,原初末态的 CONTCAR 就成为了新的初态和末态

    对初末态测相似度以确定插点数量

    # Usage
    +$ dist.pl <初态结构> <末态结构>
    +
    +# This example
    +[zjb@op 3-NEB_O_graphene]$ dist.pl ini/CONTCAR fin/CONTCAR 
    +1.55500097020471
    +

    [!tip] 若返回值<5,通常可以下一步

    插点数量通常是 相似度/0.8.

    插入中间图像

    nebmake.pl 以线性进行插点。

    # Usage
    +$ nebmake.pl <初态结构> <末态结构> <插点数量>
    +
    +# This example
    +[zjb@op 3-NEB_O_graphene]$ nebmake.pl ini/CONTCAR fin/CONTCAR 3   # 3为插点数量,咱这儿把它记为N
    +filetype1: vasp5
    +filetype2: vasp5
    +
    +OK, ALL SETUP HERE
    +FOR LATER ANALYSIS, PUT OUTCARs IN FOLDERS 00 and 04 !!!
    +

    [!warning] 提交任务时,CPU 需要是插点数量 N 的整数倍

    这一步执行后,会生成 N+1 个文件夹,其中 00 是初态,N+1 是末态。同时会把 ini/CONTCAR 复制到 00/POSCAR,把 fin/CONTCAR 复制到 N+1/POSCAR

    根据这一步返回的提示,分别将初末态的 OUTCAR 复制到 00N+1 文件夹,以便于后续分析。

    cp ini/OUTCAR 00/
    +cp fin/OUTCAR 04/
    +

    使用 nebmovie 查看生成的路线是否合理

    nebmovie.pl
    +

    执行后会生成 movie.xyz 文件,ase-gui 文件路径 查看。

    neb-movie-N_grapene_O_0
    neb-movie-N_grapene_O_0

    Step3. NEB 计算

    准备 NEB 计算的输入文件

    POTCARKPOINTS 不用改直接复制过来就好,不用准备 POSCAR,他已经在上一步被放进 00/04/ 中了,

    INCAR 要修改不少东西:

    Global Parameters
    + NPAR   =  6           插点个数N的整数倍
    + 
    +Electronic Relaxation
    + EDIFF  =  1E-05
    +  
    +Ionic Relaxation
    + NSW    =  100         (Max ionic steps)
    + IBRION =  3           (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    + POTIM  =  0            IBRION = 3, POTIM = 0,是VTST识别并启动VTST优化算法的标致
    + ISIF   =  0           (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    + EDIFFG =  -0.2        (Ionic convergence; eV/AA)
    +
    +NEB
    + LCLIMB   =  .FALSE.     爬坡(CI-NEB),由于要用neb而不是cineb,所以关闭。
    + ICHAIN   =  0           开启NEB方法
    + IMAGES   =  3           插点个数
    + IOPT     =  7           VTST的优化算法。1-2适合精收敛,7适合粗收敛
    + MAXMOVE  =  0.1
    + TIMESTEP =  0.05 
    +

    [!note] 发现 MAXMOVE=0.2,TIMESTEP=0.1,EDIFF=1E-04,收敛的更快一些。精度的问题罢辽,可以分两次进行,先粗后细呢。

    `,32),S=n("a",{href:"#nudged-elastic-band-options"},"Nudged Elastic Band Options | VTST Tools",-1),A={href:"http://theory.cm.utexas.edu/vtsttools/optimizers.html",target:"_blank",rel:"noopener noreferrer"},C=i(`

    提交计算

    修改 PBS 脚本文件的核数。数量是插点数量 N 的整数倍。(第 4 行)

    注意 walltime,适当长一些。(第 5 行)

    修改 PBS 脚本,使其调用 VTST 编译的 VASP 进行计算(第 13,27 行)

    [!warning] 需要注意 VTST 编译的时候是使用哪种 mpi(intel mpi OR open mpi)进行并行运行的,如下高亮行 12-13。如果 mpi 选择有误,会出现只算一个点,而其他点不动的情况(反映在 stdout 里是用 6 个核分别把第一个点算了 1 遍,等于把第一个点算了 6 遍),这个问题直到我尝试自己编译 vasp 的时候才发现原因。

    [zjb@op test-vtst-neb]$ cat vasp-vtst.pbs 
    +#!/bin/sh
    +#PBS -N Untitled
    +#PBS -l nodes=1:ppn=6
    +#PBS -l walltime=05:30:00
    +#PBS -j oe
    +#PBS -o ./out.log
    +#PBS -q energy
    +
    +cd \${PBS_O_WORKDIR}
    +source /public/software/profile.d/compiler_intel-composer_xe_2015.2.164.sh
    +# source /public/software/profile.d/mpi_intelmpi-5.0.2.044.sh
    +source /public/software/profile.d/mpi_openmpi-2.0.0-intel.sh
    +echo "============================================="
    +echo "Starting VASP at" \`date\` 
    +echo "---------------------------------------------"
    +echo "VTST VASP"
    +echo "The PBS_O_WORKDIR is" $PBS_O_WORKDIR
    +echo "The PBS_JOBID     is" $PBS_JOBID
    +echo "The PBS_JOBNAME   is" $PBS_JOBNAME
    +echo "The PBS_O_QUEUE   is" $PBS_O_QUEUE
    +echo "The PBS_O_HOST    is" $PBS_O_HOST
    +NP=\`cat $PBS_NODEFILE | wc -l\`
    +echo "The num of PBS_NODEFILE is" $NP
    +echo "The PBS_NODEFILE IS:" 
    +cat $PBS_NODEFILE
    +mpirun -np $NP -machinefile $PBS_NODEFILE /public/software/apps/vasp/5.4.1/vtst-ompi/vasp_std >& stdout
    +echo "---------------------------------------------"
    +echo "End task at " \`date\` 
    +echo "============================================="
    +












     













     



    脚本因机器实际环境不同而需要更改,但大同小异。

    如何确定调用的是 VTST&VASP?

    01~N+1/ 下,grep VTST OUTCAR 应有 VTST 版本号返回。

    [!note] NOTE: NEB 接着算 如果算了一半被 kill 了,要接着算,只需要把 00、01、02 下的 CONTCAR 覆盖 POSCAR,然后再次提交就可。

    检查是否收敛

    # Usage
    +$ nebef.pl
    +
    +# This example
    +[zjb@op test-vtst-neb]$ nebef.pl 
    +   0         0.000000      -224.399900         0.000000 
    +   1         0.148350      -224.208300         0.191600 
    +   2         0.132181      -223.262900         1.137000 
    +   3         0.096709      -222.345700         2.054200 
    +   4         0.000000      -222.517000         1.882900 
    +

    返回结果为 序号最大原子受力能量相对初态的能量.

    当所有插点的最大原子受力都 < |EDIFFG| 时,计算收敛。

    [!tip] 如果发现这一步受力那一列全是 0,可以考虑检查一下是否调用了 VTST 编译的 VASP 进行计算。

    检查切向力

    # Usage
    +$ nebbarrier.pl && cat neb.dat
    +
    +# This example
    +[zjb@op test-vtst-neb]$ nebbarrier.pl && cat neb.dat
    +  0     0.000000     0.000000     0.000000   0
    +  1     0.389947     0.191613    -1.474390   1
    +  2     0.789822     1.137031    -3.591041   2
    +  3     1.212818     2.054245     0.086021   3
    +  4     1.701348     1.882893     0.000000   4
    +

    返回结果为 序号——距离——能量——切向力

    • 该命令没有输出到屏幕的内容,而是生成 neb.dat 文件。
    • 第二列表示距离 (即临近两结构的 dist.pl 的计算结果),
    • 第三列表示能量 (以初态能量为参考值),
    • 第四列为切向力 (forces along the neb) 过渡态附近切向力会正负变号,而且接近 0。(例如 3)

    频率计算

    Todo...

    打包结果

    # Usage
    +$ nebresult.pl
    +
    +# This example
    +[zjb@op test-vtst-neb]$ nebresults.pl 
    +
    +Unziping the OUTCARs ... done
    +Do nebbarrier.pl ; nebspline.pl
    +Do nebef.pl
    +Do nebmovie.pl
    +Do nebjmovie.pl
    +Do nebconverge.pl
    +
    +Forces and Energy:
    +   0         0.000000      -224.399900         0.000000 
    +   1         0.148350      -224.208300         0.191600 
    +   2         0.132181      -223.262900         1.137000 
    +   3         0.096709      -222.345700         2.054200 
    +   4         0.000000      -222.517000         1.882900 
    +
    +Extremum 1 found at image  0.000000 with energy:  0.000000
    +Extremum 2 found at image  0.000330 with energy: -0.000000
    +Extremum 3 found at image  2.985984 with energy:  2.054500
    +

    从输出和源码可以了解到,nebresult.pl 做的事情如下:

    1. 解压缩 OUTCAR.tg

    2. 执行 nebbarrier.pl,该脚本生成 neb.dat,将收敛情况,NEB 方向力,能量,写入

    3. 执行 nebspline.pl,该脚本对 neb.dat 里 能量和距离 的关系进行插值,插值结果写入 spline.dat 文件,所有极值的位置和能量写入 exts.dat,把 MEP 画成 mep.epsmep.eps 是以 dist.pl 距离为横坐标,能量为纵坐标画出的能势垒图,可用矢量图编辑软件打开,我们也可以使用 neb.dat 的数据用 Origin 画图。

    4. 执行 nebef.pl,并将其结果(力和能量)写入 nebef.dat

    5. 执行 nebmovie.pl,该脚本生成结构变化

    6. 执行 nebjmovie.pl

    7. 执行 nebconverge.pl

    8. 还有对各文件夹中的 OUTCAR 打包压缩。 我在源码里注释掉了这一部分。

    9. 屏显 nebef.datexts.dat

      生成的 vaspgr 文件夹内是各个插点结构的收敛图。

    具体见 Nudged Elastic Band Scripts | VTST Tools

    其中 mep.eps 就是这样子:

    neb-N_graphene_O-mep-eps
    neb-N_graphene_O-mep-eps

    其他

    [Nudged Elastic Band] Scripts

    ',30),N={href:"http://theory.cm.utexas.edu/vtsttools/scripts.html#nudged-elastic-band-scripts",target:"_blank",rel:"noopener noreferrer"},_=n("h3",{id:"nudged-elastic-band-options",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#nudged-elastic-band-options","aria-hidden":"true"},"#"),e(" [Nudged Elastic Band] Options")],-1),E={href:"http://theory.cm.utexas.edu/vtsttools/neb.html#nudged-elastic-band-options",target:"_blank",rel:"noopener noreferrer"},R=i('
    VariableDefault ValueTypeDescription
    ICHAIN0 | intIndicates which method to run. NEB (ICHAIN=0) is the default
    IMAGESnoneintNumber of NEB images between the fixed endpoints
    SPRING-5.0floatThe spring constant, in eV/Ang^2 between the images; negative value turns on nudging
    LCLIMB.TRUE.booleanFlag to turn on the climbing image algorithm
    LTANGENTOLD.FALSE.booleanFlag to turn on the old central difference tangent
    LDNEB.FALSE.booleanFlag to turn on modified double nudging
    LNEBCELL.FALSE.booleanFlag to turn on SS-NEB. Used with ISIF=3 and IOPT=3.
    JACOBIAN(Ω/N){1/3}N{1/2}realControls weight of lattice to atomic motion. Ω is volume and N is the number of atoms.

    参考资料

    ',2),I={href:"https://cndaqiang.github.io/2018/12/07/NEB/",target:"_blank",rel:"noopener noreferrer"},P={href:"http://blog.wangruixing.cn/2019/08/19/cineb/",target:"_blank",rel:"noopener noreferrer"},y={href:"http://theory.cm.utexas.edu/vtsttools/scripts.html#nudged-elastic-band-scripts",target:"_blank",rel:"noopener noreferrer"},B={href:"http://theory.cm.utexas.edu/vtsttools/neb.html#nudged-elastic-band-options",target:"_blank",rel:"noopener noreferrer"},q={href:"http://theory.cm.utexas.edu/vtsttools/optimizers.html",target:"_blank",rel:"noopener noreferrer"};function V(F,L){const t=l("RouterLink"),a=l("ExternalLinkIcon");return c(),r("div",null,[g,n("details",k,[f,T,n("blockquote",null,[n("p",null,[e("这张图整挺好,直接拿过来了,"),s(t,{to:"/dft-learning/05.VASP/04.%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/cndaqiang.github.io/2018/12/07/NEB/"},{default:o(()=>[e("这是原地址")]),_:1}),e("。")])]),x]),O,n("p",null,[e("详见 "),S,e(" 和 "),n("a",A,[e("Optimizer input parameters(IOPT) | VTST Tools"),s(a)]),e("。")]),C,n("p",null,[n("a",N,[e("Nudged Elastic Band Scripts | VTST Tools"),s(a)])]),_,n("p",null,[n("a",E,[e("Nudged Elastic Band Options | VTST Tools"),s(a)])]),R,n("ul",null,[n("li",null,[n("a",I,[e("vasp+VTST 进行 NEB 过渡态计算 | cndaqiang"),s(a)])]),n("li",null,[n("a",P,[e("vasp-vtst 计算过渡态--NEB 方法 | 刘锦程"),s(a)])]),n("li",null,[n("a",y,[e("Nudged Elastic Band Scripts | VTST Tools"),s(a)])]),n("li",null,[n("a",B,[e("Nudged Elastic Band Options | VTST Tools"),s(a)])]),n("li",null,[n("a",q,[e("FORCE BASED OPTIMIZERS (IOPT) | VTST Tools"),s(a)])])])])}const M=d(h,[["render",V],["__file","index.html.vue"]]);export{M as default}; diff --git a/assets/index.html-LRdwP14F.js b/assets/index.html-LRdwP14F.js new file mode 100644 index 00000000..0b9825fe --- /dev/null +++ b/assets/index.html-LRdwP14F.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-84d1097c","path":"/category/%E4%BC%98%E5%8C%96/","title":"优化 分类","lang":"zh-CN","frontmatter":{"title":"优化 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"优化","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/%E4%BC%98%E5%8C%96/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"优化 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"优化 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-LRzXIxjE.js b/assets/index.html-LRzXIxjE.js new file mode 100644 index 00000000..d1bb0a53 --- /dev/null +++ b/assets/index.html-LRzXIxjE.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const s={},c=e("h1",{id:"sem",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#sem","aria-hidden":"true"},"#"),r(" SEM")],-1),n=[c];function _(d,i){return a(),o("div",null,n)}const m=t(s,[["render",_],["__file","index.html.vue"]]);export{m as default}; diff --git a/assets/index.html-LyE6bWOo.js b/assets/index.html-LyE6bWOo.js new file mode 100644 index 00000000..72c2d5a1 --- /dev/null +++ b/assets/index.html-LyE6bWOo.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-2715d38a","path":"/dft-learning/pages/vasp-md/","title":"分子动力学","lang":"zh-CN","frontmatter":{"title":"分子动力学","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-16T13:23:05.000Z","permalink":"/dft-learning/pages/vasp-md/","article":false,"index":false,"order":0,"timeline":false,"description":"分子动力学","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-md/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"分子动力学"}],["meta",{"property":"og:description","content":"分子动力学"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T05:28:03.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T05:28:03.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"分子动力学\\",\\"description\\":\\"分子动力学\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663306083000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.12,"words":37},"filePathRelative":"dft-learning/05.VASP/05.分子动力学/README.md","localizedDate":"2022年9月13日","excerpt":"

    分子动力学

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-Ly_6Ly1M.js b/assets/index.html-Ly_6Ly1M.js new file mode 100644 index 00000000..67d3e9d3 --- /dev/null +++ b/assets/index.html-Ly_6Ly1M.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-b72643ac","path":"/code/python/","title":"Python","lang":"zh-CN","frontmatter":{"title":"Python","date":"2022-09-16T21:02:38.000Z","updated":"2022-09-16T21:03:29.000Z","permalink":"/code/python/","article":false,"index":false,"order":0,"timeline":false,"description":"Python 这个文件夹放置在学习/使用 Python 过程中的文档和踩坑。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/python/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Python"}],["meta",{"property":"og:description","content":"Python 这个文件夹放置在学习/使用 Python 过程中的文档和踩坑。"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:04:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T21:02:38.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:04:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Python\\",\\"description\\":\\"Python 这个文件夹放置在学习/使用 Python 过程中的文档和踩坑。\\"}"]]},"headers":[],"git":{"createdTime":1663333456000,"updatedTime":1663333456000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.17,"words":50},"filePathRelative":"code/python/README.md","localizedDate":"2022年9月17日","excerpt":"

    Python

    \\n

    这个文件夹放置在学习/使用 Python 过程中的文档和踩坑。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-MMkkJskN.js b/assets/index.html-MMkkJskN.js new file mode 100644 index 00000000..5680ac1c --- /dev/null +++ b/assets/index.html-MMkkJskN.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-28c0fe97","path":"/dft-learning/pages/66a232/","title":"安装 ASE","lang":"zh-CN","frontmatter":{"title":"安装 ASE","date":"2020-11-17T11:07:00.000Z","updated":"2022-09-16T21:01:56.000Z","permalink":"/dft-learning/pages/66a232/","category":["Install"],"description":"安装 ASE 总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。 Requirements 最新版本的 ase 需要的环境条件 [1]:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/66a232/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"安装 ASE"}],["meta",{"property":"og:description","content":"安装 ASE 总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。 Requirements 最新版本的 ase 需要的环境条件 [1]:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:04:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-17T11:07:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:04:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"安装 ASE\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-17T11:07:00.000Z\\",\\"dateModified\\":\\"2022-09-16T13:04:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Requirements","slug":"requirements","link":"#requirements","children":[]},{"level":2,"title":"Windows","slug":"windows","link":"#windows","children":[{"level":3,"title":"1.安装并配置 Python 环境","slug":"_1-安装并配置-python-环境","link":"#_1-安装并配置-python-环境","children":[]},{"level":3,"title":"2. 安装 ASE","slug":"_2-安装-ase","link":"#_2-安装-ase","children":[]},{"level":3,"title":"3. 检查是否安装正确","slug":"_3-检查是否安装正确","link":"#_3-检查是否安装正确","children":[]},{"level":3,"title":"4. 添加环境变量","slug":"_4-添加环境变量","link":"#_4-添加环境变量","children":[]}]},{"level":2,"title":"Linux","slug":"linux","link":"#linux","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1663333456000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":8}]},"readingTime":{"minutes":2.7,"words":811},"filePathRelative":"dft-learning/02.Install/03.install-ase.md","localizedDate":"2020年11月17日","excerpt":"

    安装 ASE

    \\n

    总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。

    \\n

    Requirements

    \\n

    最新版本的 ase 需要的环境条件 [1]

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-MPo9Y7jD.js b/assets/index.html-MPo9Y7jD.js new file mode 100644 index 00000000..0c487edf --- /dev/null +++ b/assets/index.html-MPo9Y7jD.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-0d8a8100","path":"/code/bash-for-windows/","title":"在 Windows 中使用 Bash shell","lang":"zh-CN","frontmatter":{"title":"在 Windows 中使用 Bash shell","date":"2022-12-12T21:26:33.000Z","permalink":"/code/bash-for-windows","updated":"2022-12-12T21:36:52.000Z","description":"在 Windows 中使用 Bash shell 概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率 本文语雀地址:https://www.yuque.com/achuan-2/blog/eu4rbz 本文博客地址:https://achuan-2.github.io/posts/be43.html source: https://zhuanlan.zhihu.com/p/418321777","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/bash-for-windows/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"在 Windows 中使用 Bash shell"}],["meta",{"property":"og:description","content":"在 Windows 中使用 Bash shell 概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率 本文语雀地址:https://www.yuque.com/achuan-2/blog/eu4rbz 本文博客地址:https://achuan-2.github.io/posts/be43.html source: https://zhuanlan.zhihu.com/p/418321777"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-12-12T21:26:33.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"在 Windows 中使用 Bash shell\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-12-12T21:26:33.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"0 准备工作","slug":"_0-准备工作","link":"#_0-准备工作","children":[]},{"level":2,"title":"1 设置为默认终端","slug":"_1-设置为默认终端","link":"#_1-设置为默认终端","children":[{"level":3,"title":"1.1 Windows Terminal 配置 Git bash 为默认终端","slug":"_1-1-windows-terminal-配置-git-bash-为默认终端","link":"#_1-1-windows-terminal-配置-git-bash-为默认终端","children":[]},{"level":3,"title":"1.2 VSCode 配置 Git bash 为默认终端","slug":"_1-2-vscode-配置-git-bash-为默认终端","link":"#_1-2-vscode-配置-git-bash-为默认终端","children":[]}]},{"level":2,"title":"2 可能出现的配置问题","slug":"_2-可能出现的配置问题","link":"#_2-可能出现的配置问题","children":[{"level":3,"title":"2.1 Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置","slug":"_2-1-windows-terminal-和-vscode-打开-git-bash-发现不会加载配置","link":"#_2-1-windows-terminal-和-vscode-打开-git-bash-发现不会加载配置","children":[]},{"level":3,"title":"2.2 Git Bash 不会加载 ~/.bashrc 的配置","slug":"_2-2-git-bash-不会加载-bashrc-的配置","link":"#_2-2-git-bash-不会加载-bashrc-的配置","children":[]},{"level":3,"title":"2.3 Git-Bash 修改前缀 (隐藏用户 @ 主机)","slug":"_2-3-git-bash-修改前缀-隐藏用户-主机","link":"#_2-3-git-bash-修改前缀-隐藏用户-主机","children":[]},{"level":3,"title":"2.4 修复 Git Bash 中文乱码","slug":"_2-4-修复-git-bash-中文乱码","link":"#_2-4-修复-git-bash-中文乱码","children":[]},{"level":3,"title":"解决中文无法显示的问题","slug":"解决中文无法显示的问题","link":"#解决中文无法显示的问题","children":[]}]},{"level":2,"title":"3 你可能不知道却非常有用的技巧","slug":"_3-你可能不知道却非常有用的技巧","link":"#_3-你可能不知道却非常有用的技巧","children":[{"level":3,"title":"3.1 在终端启动软件查看文件","slug":"_3-1-在终端启动软件查看文件","link":"#_3-1-在终端启动软件查看文件","children":[]},{"level":3,"title":"3.2 Linux 下常用软件下载","slug":"_3-2-linux-下常用软件下载","link":"#_3-2-linux-下常用软件下载","children":[]},{"level":3,"title":"3.3 资源管理器地址妙用,直接在终端打开当前文件夹","slug":"_3-3-资源管理器地址妙用-直接在终端打开当前文件夹","link":"#_3-3-资源管理器地址妙用-直接在终端打开当前文件夹","children":[]},{"level":3,"title":"3.4 添加一些常用别名增加效率","slug":"_3-4-添加一些常用别名增加效率","link":"#_3-4-添加一些常用别名增加效率","children":[]}]}],"git":{"createdTime":1673688417000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":8.27,"words":2482},"filePathRelative":"code/bash-for-windows.md","localizedDate":"2022年12月13日","excerpt":"

    在 Windows 中使用 Bash shell

    \\n
    \\n

    概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率
    \\n本文语雀地址:https://www.yuque.com/achuan-2/blog/eu4rbz
    \\n本文博客地址:https://achuan-2.github.io/posts/be43.html\\nsource: https://zhuanlan.zhihu.com/p/418321777

    \\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-N2d1tSlq.js b/assets/index.html-N2d1tSlq.js new file mode 100644 index 00000000..fa73a604 --- /dev/null +++ b/assets/index.html-N2d1tSlq.js @@ -0,0 +1 @@ +const n=JSON.parse(`{"key":"v-200d9c72","path":"/code/python/pip-error/","title":"pip 报错","lang":"zh-CN","frontmatter":{"title":"pip 报错","date":"2022-09-16T20:24:53.000Z","updated":"2022-09-16T21:10:06.000Z","permalink":"/code/python/pip-error/","description":"pip 报错 找不到指定文件 安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。 课题组一个同学安装 ase 时遇到以下报错, C:\\\\Users\\\\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting ase Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB) Collecting matplotlib>=3.1.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB) Collecting numpy>=1.15.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB) Collecting scipy>=1.1.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [55 lines of output] The Meson build system Version: 0.62.2 Source dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd Build dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build Build type: native build Project name: SciPy Project version: 1.9.1 WARNING: Failed to activate VS environment: Could not find C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\Installer\\\\vswhere.exe ..\\\\..\\\\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']] The following exception(s) were encountered: Running \\"icl \\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"cl /?\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"cc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"gcc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"clang --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"clang-cl /?\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"pgcc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" A full log can be found at C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build\\\\meson-logs\\\\meson-log.txt + meson setup --native-file=C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\\\\Program Files\\\\Python311 C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build Traceback (most recent call last): File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 363, in <module> main() File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 345, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 130, in get_requires_for_build_wheel return hook(config_settings) ^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 923, in get_requires_for_build_wheel with _project(config_settings) as project: File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 902, in _project with Project.with_temp_working_dir( File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 547, in with_temp_working_dir yield cls(source_dir, tmpdir, build_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 463, in __init__ self._configure(reconfigure=bool(build_dir) and not native_file_mismatch) File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 494, in _configure self._meson( File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 477, in _meson return self._proc('meson', *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 472, in _proc subprocess.check_call(list(args)) File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\subprocess.py\\", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\\\\\\\Program Files\\\\\\\\Python311', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-iocfb37s\\\\\\\\build']' returned non-zero exit status 1. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip.","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/python/pip-error/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"pip 报错"}],["meta",{"property":"og:description","content":"pip 报错 找不到指定文件 安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。 课题组一个同学安装 ase 时遇到以下报错, C:\\\\Users\\\\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting ase Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB) Collecting matplotlib>=3.1.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB) Collecting numpy>=1.15.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB) Collecting scipy>=1.1.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [55 lines of output] The Meson build system Version: 0.62.2 Source dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd Build dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build Build type: native build Project name: SciPy Project version: 1.9.1 WARNING: Failed to activate VS environment: Could not find C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\Installer\\\\vswhere.exe ..\\\\..\\\\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']] The following exception(s) were encountered: Running \\"icl \\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"cl /?\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"cc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"gcc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"clang --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"clang-cl /?\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" Running \\"pgcc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\" A full log can be found at C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build\\\\meson-logs\\\\meson-log.txt + meson setup --native-file=C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\\\\Program Files\\\\Python311 C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build Traceback (most recent call last): File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 363, in <module> main() File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 345, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 130, in get_requires_for_build_wheel return hook(config_settings) ^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 923, in get_requires_for_build_wheel with _project(config_settings) as project: File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 902, in _project with Project.with_temp_working_dir( File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 547, in with_temp_working_dir yield cls(source_dir, tmpdir, build_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 463, in __init__ self._configure(reconfigure=bool(build_dir) and not native_file_mismatch) File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 494, in _configure self._meson( File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 477, in _meson return self._proc('meson', *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 472, in _proc subprocess.check_call(list(args)) File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\subprocess.py\\", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\\\\\\\Program Files\\\\\\\\Python311', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-iocfb37s\\\\\\\\build']' returned non-zero exit status 1. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:10:38.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T20:24:53.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:10:38.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"pip 报错\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-16T20:24:53.000Z\\",\\"dateModified\\":\\"2022-09-16T13:10:38.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"找不到指定文件","slug":"找不到指定文件","link":"#找不到指定文件","children":[]}],"git":{"createdTime":1663333456000,"updatedTime":1663333838000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":2}]},"readingTime":{"minutes":6.62,"words":1985},"filePathRelative":"code/python/pip-error.md","localizedDate":"2022年9月17日","excerpt":"

    pip 报错

    \\n

    找不到指定文件

    \\n

    安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。

    \\n

    课题组一个同学安装 ase 时遇到以下报错,

    \\n
    C:\\\\Users\\\\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple\\nDefaulting to user installation because normal site-packages is not writeable\\nLooking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple\\nCollecting ase\\n  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)\\nCollecting matplotlib>=3.1.0\\n  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB)\\nCollecting numpy>=1.15.0\\n  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB)\\nCollecting scipy>=1.1.0\\n  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB)\\n  Installing build dependencies ... done\\n  Getting requirements to build wheel ... error\\n  error: subprocess-exited-with-error\\n\\n  × Getting requirements to build wheel did not run successfully.\\n  │ exit code: 1\\n  ╰─> [55 lines of output]\\n      The Meson build system\\n      Version: 0.62.2\\n      Source dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\n      Build dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build\\n      Build type: native build\\n      Project name: SciPy\\n      Project version: 1.9.1\\n      WARNING: Failed to activate VS environment: Could not find C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\Installer\\\\vswhere.exe\\n\\n      ..\\\\..\\\\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]\\n      The following exception(s) were encountered:\\n      Running \\"icl \\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n      Running \\"cl /?\\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n      Running \\"cc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n      Running \\"gcc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n      Running \\"clang --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n      Running \\"clang-cl /?\\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n      Running \\"pgcc --version\\" gave \\"[WinError 2] 系统找不到指定的文件。\\"\\n\\n      A full log can be found at C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build\\\\meson-logs\\\\meson-log.txt\\n      + meson setup --native-file=C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\\\\Program Files\\\\Python311 C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build\\n      Traceback (most recent call last):\\n        File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 363, in <module>\\n          main()\\n        File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 345, in main\\n          json_out['return_val'] = hook(**hook_input['kwargs'])\\n                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n        File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\", line 130, in get_requires_for_build_wheel\\n          return hook(config_settings)\\n                 ^^^^^^^^^^^^^^^^^^^^^\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 923, in get_requires_for_build_wheel\\n          with _project(config_settings) as project:\\n        File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\", line 137, in __enter__\\n          return next(self.gen)\\n                 ^^^^^^^^^^^^^^\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 902, in _project\\n          with Project.with_temp_working_dir(\\n        File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\", line 137, in __enter__\\n          return next(self.gen)\\n                 ^^^^^^^^^^^^^^\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 547, in with_temp_working_dir\\n          yield cls(source_dir, tmpdir, build_dir)\\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 463, in __init__\\n          self._configure(reconfigure=bool(build_dir) and not native_file_mismatch)\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 494, in _configure\\n          self._meson(\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 477, in _meson\\n          return self._proc('meson', *args)\\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^\\n        File \\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\", line 472, in _proc\\n          subprocess.check_call(list(args))\\n        File \\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\subprocess.py\\", line 413, in check_call\\n          raise CalledProcessError(retcode, cmd)\\n      subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\\\\\\\Program Files\\\\\\\\Python311', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-iocfb37s\\\\\\\\build']' returned non-zero exit status 1.\\n      [end of output]\\n\\n  note: This error originates from a subprocess, and is likely not a problem with pip.\\nerror: subprocess-exited-with-error\\n\\n× Getting requirements to build wheel did not run successfully.\\n│ exit code: 1\\n╰─> See above for output.\\n\\nnote: This error originates from a subprocess, and is likely not a problem with pip.\\n\\n
    ","autoDesc":true}`);export{n as data}; diff --git a/assets/index.html-N8V76_f2.js b/assets/index.html-N8V76_f2.js new file mode 100644 index 00000000..fa69b09a --- /dev/null +++ b/assets/index.html-N8V76_f2.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as c,c as i,a as e,b as t,e as o,w as a}from"./app-Mf7X6hWu.js";const d={},r=e("h1",{id:"csl-介绍",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#csl-介绍","aria-hidden":"true"},"#"),t(" CSL 介绍")],-1),_=e("blockquote",null,[e("p",null,"[!warning] WORK IN PROGRESS 此页面正在施工中。")],-1),u=e("h2",{id:"前言",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#前言","aria-hidden":"true"},"#"),t(" 前言")],-1),h=e("code",null,"CSL",-1),m=e("code",null,"XML",-1),p=e("code",null,"CSL",-1),f=e("h2",{id:"csl-是什么",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#csl-是什么","aria-hidden":"true"},"#"),t(" CSL 是什么")],-1),g=e("p",null,"如果你写过论文的话,你可能在其中引用了别人的论文。参考文献在学术交流中很重要,因为它可以提供引用的来源,并且可以把已经发表的研究联系到一起。但是,手动设置引用格式和参考文献目录非常耗时,而且不同的期刊有自己的引用格式。",-1),y=e("p",null,"参考文献管理软件可以解决上面的问题。像 Zotero、Mendeley、Papers 等软件不仅能帮助你管理参考文献,而且可以自动地生成引用的参考文献目录。为了设置特定的引用格式,这些软件需要能识别的对引用格式的描述,这种描述就是 Citation Style Language(CSL)。",-1);function x(L,C){const n=s("RouterLink");return c(),i("div",null,[r,_,u,e("p",null,[h,t(" 是一种基于 "),m,t(" 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 "),p,t(" 更加技术和详细的描述见 "),o(n,{to:"/code/citation-style-language/specification/"},{default:a(()=>[t("CSL 规范")]),_:1}),t("。")]),f,g,y,e("p",null,[o(n,{to:"/code/citation-style-language/primer/citation-formats.html"},{default:a(()=>[t("citation-formats")]),_:1})]),e("p",null,[o(n,{to:"/code/citation-style-language/primer/the-csl-ecosystem.html"},{default:a(()=>[t("the-csl-ecosystem")]),_:1})]),e("p",null,[o(n,{to:"/code/citation-style-language/primer/understanding-csl-styles.html"},{default:a(()=>[t("understanding csl styles")]),_:1})]),e("p",null,[o(n,{to:"/code/citation-style-language/primer/end.html"},{default:a(()=>[t("end")]),_:1})])])}const k=l(d,[["render",x],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-NUB0R-Ht.js b/assets/index.html-NUB0R-Ht.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-NUB0R-Ht.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-NV3VAo2p.js b/assets/index.html-NV3VAo2p.js new file mode 100644 index 00000000..d2f53f2c --- /dev/null +++ b/assets/index.html-NV3VAo2p.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-b05d858c","path":"/dft-learning/pages/d67596/","title":"结构优化、自洽、非自洽","lang":"zh-CN","frontmatter":{"title":"结构优化、自洽、非自洽","date":"2020-11-21T20:21:10.000Z","permalink":"/dft-learning/pages/d67596/","category":["VASP"],"updated":"2022-11-19T15:39:25.000Z","description":"结构优化、自洽、非自洽 结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。 静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。 非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。 本页对O2O_2O2​进行结构优化、静电自洽、非静电自洽。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/d67596/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"结构优化、自洽、非自洽"}],["meta",{"property":"og:description","content":"结构优化、自洽、非自洽 结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。 静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。 非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。 本页对O2O_2O2​进行结构优化、静电自洽、非静电自洽。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"结构优化、自洽、非自洽"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-21T20:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"结构优化、自洽、非自洽\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-11-21T20:21:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"目录结构","slug":"目录结构","link":"#目录结构","children":[]},{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"结构优化","slug":"结构优化","link":"#结构优化","children":[]},{"level":3,"title":"自洽计算","slug":"自洽计算","link":"#自洽计算","children":[]},{"level":3,"title":"非自洽计算","slug":"非自洽计算","link":"#非自洽计算","children":[]}]},{"level":2,"title":"参考","slug":"参考","link":"#参考","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":3.64,"words":1092},"filePathRelative":"dft-learning/05.VASP/02.优化/02.vasp-opt.md","localizedDate":"2020年11月22日","excerpt":"

    结构优化、自洽、非自洽

    \\n

    结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。

    \\n

    静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。

    \\n

    非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。

    \\n

    本页对O2O_2O2进行结构优化、静电自洽、非静电自洽。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-OAM7wYRK.js b/assets/index.html-OAM7wYRK.js new file mode 100644 index 00000000..926efc01 --- /dev/null +++ b/assets/index.html-OAM7wYRK.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-ee92304c","path":"/dft-learning/pages/35fcd2/","title":"DFT+U","lang":"zh-CN","frontmatter":{"title":"DFT+U","date":"2021-01-30T17:42:04.000Z","permalink":"/dft-learning/pages/35fcd2/","category":["VASP","优化"],"updated":"2022-01-16T19:57:09.000Z","description":"DFT+U Calculation LDAU = .TRUE. (启用 DFT+U) LDATYPE= 2 (+U的类型) LDAUL = 2 -1 (Orbitals for each species) LDAUU = 3.5 0 (U for each species) LDAUJ = 0 0 (J for each species) LMAXMIX= 4 (Mixing cut-off; 4-d, 6-f)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/35fcd2/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"DFT+U"}],["meta",{"property":"og:description","content":"DFT+U Calculation LDAU = .TRUE. (启用 DFT+U) LDATYPE= 2 (+U的类型) LDAUL = 2 -1 (Orbitals for each species) LDAUU = 3.5 0 (U for each species) LDAUJ = 0 0 (J for each species) LMAXMIX= 4 (Mixing cut-off; 4-d, 6-f)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-01-30T17:42:04.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"DFT+U\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-01-30T17:42:04.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.96,"words":288},"filePathRelative":"dft-learning/05.VASP/02.优化/04.vasp-DFT-plus-U.md","localizedDate":"2021年1月31日","excerpt":"
    DFT+U Calculation\\n LDAU   = .TRUE.        (启用 DFT+U)\\n LDATYPE=  2            (+U的类型)\\n LDAUL  =  2 -1         (Orbitals for each species)\\n LDAUU  =  3.5  0       (U for each species)\\n LDAUJ  =  0  0         (J for each species)\\n LMAXMIX=  4            (Mixing cut-off; 4-d, 6-f)\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-OK-LFFc5.js b/assets/index.html-OK-LFFc5.js new file mode 100644 index 00000000..c438a7d3 --- /dev/null +++ b/assets/index.html-OK-LFFc5.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-22c29653","path":"/dft-learning/pages/6424b6/","title":"Windows 平台的部分软件安装","lang":"zh-CN","frontmatter":{"title":"Windows 平台的部分软件安装","date":"2021-09-12T17:23:31.000Z","permalink":"/dft-learning/pages/6424b6/","category":["Install"],"updated":"2022-09-12T20:04:13.000Z","description":"Windows 平台的部分软件安装 由于安装过于简单,故只对部分关键步骤做说明。 Materials Studio 激活 安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \\\\Program Files (x86)\\\\BIOVIA\\\\LicensePack\\\\Licenses image-20210913190855840 然后启动授权管理器: image-20210913190616258","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/6424b6/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Windows 平台的部分软件安装"}],["meta",{"property":"og:description","content":"Windows 平台的部分软件安装 由于安装过于简单,故只对部分关键步骤做说明。 Materials Studio 激活 安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \\\\Program Files (x86)\\\\BIOVIA\\\\LicensePack\\\\Licenses image-20210913190855840 然后启动授权管理器: image-20210913190616258"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"Windows 平台的部分软件安装"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-09-12T17:23:31.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Windows 平台的部分软件安装\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2021-09-12T17:23:31.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Materials Studio 激活","slug":"materials-studio-激活","link":"#materials-studio-激活","children":[]},{"level":2,"title":"Python for Windows","slug":"python-for-windows","link":"#python-for-windows","children":[]},{"level":2,"title":"Xshell 设置 X11 转发","slug":"xshell-设置-x11-转发","link":"#xshell-设置-x11-转发","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":6}]},"readingTime":{"minutes":0.69,"words":207},"filePathRelative":"dft-learning/02.Install/01.windows-apps.md","localizedDate":"2021年9月13日","excerpt":"

    Windows 平台的部分软件安装

    \\n

    由于安装过于简单,故只对部分关键步骤做说明。

    \\n

    Materials Studio 激活

    \\n

    安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \\\\Program Files (x86)\\\\BIOVIA\\\\LicensePack\\\\Licenses

    \\n
    image-20210913190855840
    \\n

    然后启动授权管理器:

    \\n
    image-20210913190616258
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-OwhnMgGW.js b/assets/index.html-OwhnMgGW.js new file mode 100644 index 00000000..56e13288 --- /dev/null +++ b/assets/index.html-OwhnMgGW.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-03c8e5f0","path":"/dft-learning/pages/a33822/","title":"linux 编译 gnuplot","lang":"zh-CN","frontmatter":{"title":"linux 编译 gnuplot","date":"2020-12-15T13:28:10.000Z","permalink":"/dft-learning/pages/a33822/","category":["Install"],"updated":"2022-01-16T19:55:48.000Z","description":"使用默认 GCC 编译 gnuplot 无需,学校已安装。 cd /tmp wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz tar xzvf gnuplot-5.2.5.tar.gz cd gnuplot-5.2.5/ ./configure --prefix=/public/home/zjb/app/gunplot/ make & make install","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/a33822/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"linux 编译 gnuplot"}],["meta",{"property":"og:description","content":"使用默认 GCC 编译 gnuplot 无需,学校已安装。 cd /tmp wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz tar xzvf gnuplot-5.2.5.tar.gz cd gnuplot-5.2.5/ ./configure --prefix=/public/home/zjb/app/gunplot/ make & make install"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-12-15T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"linux 编译 gnuplot\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-12-15T13:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.25,"words":75},"filePathRelative":"dft-learning/02.Install/32.linux-install-gnuplot.md","localizedDate":"2020年12月15日","excerpt":"

    使用默认 GCC 编译 gnuplot

    \\n

    无需,学校已安装。

    \\n
    cd /tmp\\nwget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz\\ntar xzvf gnuplot-5.2.5.tar.gz \\ncd gnuplot-5.2.5/\\n./configure --prefix=/public/home/zjb/app/gunplot/\\nmake & make install\\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-P7041sin.js b/assets/index.html-P7041sin.js new file mode 100644 index 00000000..cd473718 --- /dev/null +++ b/assets/index.html-P7041sin.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"反应路径",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#反应路径","aria-hidden":"true"},"#"),r(" 反应路径")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-PiT7KaNQ.js b/assets/index.html-PiT7KaNQ.js new file mode 100644 index 00000000..d1f158f4 --- /dev/null +++ b/assets/index.html-PiT7KaNQ.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"首页","lang":"zh-CN","frontmatter":{"home":true,"layout":"BlogHome","icon":"home","title":"首页","heroText":"北辞","tagline":"北辞の窝 ✨","actions":[{"text":"博客 💡","link":"/blog/","type":"primary"},{"text":"笔记 🛠","link":"/docs/"}],"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"首页"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:27:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:27:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"首页\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1673688468000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":6}]},"readingTime":{"minutes":0.1,"words":31},"filePathRelative":"README.md","localizedDate":"2022年9月12日","excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-Q19uLxXK.js b/assets/index.html-Q19uLxXK.js new file mode 100644 index 00000000..6e80d79e --- /dev/null +++ b/assets/index.html-Q19uLxXK.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"x射线衍射",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#x射线衍射","aria-hidden":"true"},"#"),r(" X射线衍射")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-Q6-PYyTa.js b/assets/index.html-Q6-PYyTa.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-Q6-PYyTa.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-QCq2KaUt.js b/assets/index.html-QCq2KaUt.js new file mode 100644 index 00000000..698eba87 --- /dev/null +++ b/assets/index.html-QCq2KaUt.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"故障排除",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#故障排除","aria-hidden":"true"},"#"),r(" 故障排除")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-QyQjsQQt.js b/assets/index.html-QyQjsQQt.js new file mode 100644 index 00000000..6199eede --- /dev/null +++ b/assets/index.html-QyQjsQQt.js @@ -0,0 +1,30 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as p,c,a as n,b as e,e as s,w as o,d as l}from"./app-Mf7X6hWu.js";const d={},u=l('

    安装 ASE

    总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。

    Requirements

    最新版本的 ase 需要的环境条件 [1]

    ',4),h={href:"https://www.python.org/",target:"_blank",rel:"noopener noreferrer"},f={href:"https://docs.scipy.org/doc/numpy/reference/",target:"_blank",rel:"noopener noreferrer"},m={href:"https://docs.scipy.org/doc/scipy/reference/",target:"_blank",rel:"noopener noreferrer"},_=n("p",null,"Optional but strongly recommended:",-1),k={href:"https://matplotlib.org/",target:"_blank",rel:"noopener noreferrer"},b={href:"https://docs.python.org/3.7/library/tkinter.html#module-tkinter",target:"_blank",rel:"noopener noreferrer"},g=n("code",null,"tkinter",-1),v={href:"https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html#module-ase.gui",target:"_blank",rel:"noopener noreferrer"},y=n("code",null,"ase.gui",-1),w=n("p",null,"Optional:",-1),x={href:"https://palletsprojects.com/p/flask/",target:"_blank",rel:"noopener noreferrer"},E={href:"https://wiki.fysik.dtu.dk/ase/ase/db/db.html#module-ase.db",target:"_blank",rel:"noopener noreferrer"},P=n("code",null,"ase.db",-1),S={href:"https://pypi.org/project/pytest/",target:"_blank",rel:"noopener noreferrer"},q={href:"https://pypi.org/project/pytest-xdist/",target:"_blank",rel:"noopener noreferrer"},C={href:"https://pypi.org/project/spglib/",target:"_blank",rel:"noopener noreferrer"},A=n("h2",{id:"windows",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#windows","aria-hidden":"true"},"#"),e(" Windows")],-1),B=n("h3",{id:"_1-安装并配置-python-环境",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_1-安装并配置-python-环境","aria-hidden":"true"},"#"),e(" 1.安装并配置 Python 环境")],-1),N=l(`

    2. 安装 ASE

    打开命令行/终端,输入以下命令的任意一个,即可安装 ASE。两行作用一致,但第二行配置了从清华大学镜像源下载安装,因此大陆网络使用第二行更快 [2]

    pip install --upgrade --user ase
    +pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +

    注意,是在命令行直接启动 pip,不是在命令行中运行 Python 后再 pip,否则你会收到如下报错:

    PS C:\\Users\\northword> python
    +Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> pip install ase
    +  File "<stdin>", line 1
    +    pip install ase
    +        ^^^^^^^
    +SyntaxError: invalid syntax
    +>>>
    +

    3. 检查是否安装正确

    PS C:\\Users\\northword> ase --version
    +ase-3.22.1
    +PS C:\\Users\\northword>
    +

    返回以上结果既为正确。

    如不正确,例如如下报错,则请进入下一步添加环境变量。

    PS C:\\Users\\northword> ase
    +ase : 无法将“ase”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
    +,然后再试一次。
    +所在位置 行:1 字符: 1
    ++ ase
    ++ ~~~~
    +    + CategoryInfo          : ObjectNotFound: (ase1:String) [], CommandNotFoundException
    +    + FullyQualifiedErrorId : CommandNotFoundException
    +
    +PS C:\\Users\\northword>
    +

    4. 添加环境变量

    将以下添加到PATH
    +%AppData%\\Roaming\\Python\\Python38\\Scripts
    +

    该变量可能不一样,需要自行确定

    Linux

    需要注意的是,支持 Python2 的 ase 最高版本是 3.17.0 [3]。学校的集群是 python2.7,需要

    pip install --user ase==3.17.0
    +

    该版本要求 numpy-1.9.0,而学校配置的 1.7.1,需要

    pip install --user numpy==1.9.0
    +

    经测试会报错,没找到原因,把 ase 降级到 3.9.1,正常运行。

    pip install --user ase==3.9.1
    +
    `,20),j={href:"https://files.pythonhosted.org/packages/c1/32/c7a102936e877b43a90e3242c95a719c2056fd3184b33767948c16defd22/ase-3.9.1.tar.gz",target:"_blank",rel:"noopener noreferrer"},F=n("code",null,"pip install --user ase-3.9.1/setup.py(绝对路径)",-1),H=n("p",null,[e("与新版本不同,此时必须通过 "),n("code",null,"ase-gui"),e(",而新版本可以 "),n("code",null,"ase gui"),e(",因为旧版本 "),n("code",null,"/home/2020223055092/.local/bin/"),e(" 下没有 "),n("code",null,"ase"),e(".")],-1),I=n("hr",null,null,-1),L=n("hr",{class:"footnotes-sep"},null,-1),U={class:"footnotes"},W={class:"footnotes-list"},M={id:"footnote1",class:"footnote-item"},O={href:"https://wiki.fysik.dtu.dk/ase/install.html#installation-using-pip",target:"_blank",rel:"noopener noreferrer"},R=n("a",{href:"#footnote-ref1",class:"footnote-backref"},"↩︎",-1),V={id:"footnote2",class:"footnote-item"},D=n("a",{href:"#footnote-ref2",class:"footnote-backref"},"↩︎",-1),T={id:"footnote3",class:"footnote-item"},z={href:"https://pypi.org/project/ase/3.17.0/",target:"_blank",rel:"noopener noreferrer"},Q=n("a",{href:"#footnote-ref3",class:"footnote-backref"},"↩︎",-1);function G(J,K){const a=r("ExternalLinkIcon"),t=r("RouterLink");return p(),c("div",null,[u,n("ul",null,[n("li",null,[n("a",h,[e("Python"),s(a)]),e(" 3.6 or newer")]),n("li",null,[n("a",f,[e("NumPy"),s(a)]),e(" 1.11 or newer (base N-dimensional array package)")]),n("li",null,[n("a",m,[e("SciPy"),s(a)]),e(" 0.18 or newer (library for scientific computing)")])]),_,n("ul",null,[n("li",null,[n("a",k,[e("Matplotlib"),s(a)]),e(" 2.0.0 or newer for plotting")]),n("li",null,[n("a",b,[g,s(a)]),e(" for "),n("a",v,[y,s(a)])])]),w,n("ul",null,[n("li",null,[n("a",x,[e("Flask"),s(a)]),e(" for "),n("a",E,[P,s(a)]),e(" web-interface")]),n("li",null,[n("a",S,[e("pytest"),s(a)]),e(" 3.6.1 or newer for running tests")]),n("li",null,[n("a",q,[e("pytest-xdist"),s(a)]),e(" 1.22.1 or newer for running tests in parallel")]),n("li",null,[n("a",C,[e("spglib"),s(a)]),e(" for certain symmetry-related features")])]),A,B,n("p",null,[e("python38 即可,"),s(t,{to:"/dft-learning/02.Install/01.windows-apps.html#Python%20for%20Windows"},{default:o(()=>[e("Python for Windows")]),_:1}),e("。")]),n("p",null,[e("注意版本,不要下载未正式发布的版本,否则可能出现 "),s(t,{to:"/code/python/pip-error.html#%E6%89%BE%E4%B8%8D%E5%88%B0%E6%8C%87%E5%AE%9A%E6%96%87%E4%BB%B6"},{default:o(()=>[e("找不到指定文件")]),_:1}),e(" 报错。")]),N,n("p",null,[e("或:下载:"),n("a",j,[e("https://files.pythonhosted.org/packages/c1/32/c7a102936e877b43a90e3242c95a719c2056fd3184b33767948c16defd22/ase-3.9.1.tar.gz"),s(a)]),e(",上传,解压缩,"),F,e("。")]),H,I,n("p",null,[e("在 Windows 10 20H2 版本上,ASE 可能报错,可能是由于 numpy 与 Windows 20H2 不兼容导致,参考 "),s(t,{to:"/dft-learning/09.Others/03.numpy-in-win20H2.html"},{default:o(()=>[e("03.numpy-in-win20H2")]),_:1}),e("。")]),L,n("section",U,[n("ol",W,[n("li",M,[n("p",null,[n("a",O,[e("https://wiki.fysik.dtu.dk/ase/install.html#installation-using-pip"),s(a)]),e(),R])]),n("li",V,[n("p",null,[e("由于 Python Pip 默认源服务器在境外,速度较慢,故须换为国内镜像源或配置科学上网。第二行安装命令已配置为清华大学镜像源。详细参考 "),s(t,{to:"/code/python/pip-mirrors.html"},{default:o(()=>[e("pip 换源")]),_:1}),e("。 "),D])]),n("li",T,[n("p",null,[n("a",z,[e("https://pypi.org/project/ase/3.17.0/"),s(a)]),e(),Q])])])])])}const Z=i(d,[["render",G],["__file","index.html.vue"]]);export{Z as default}; diff --git a/assets/index.html-RJYdClUd.js b/assets/index.html-RJYdClUd.js new file mode 100644 index 00000000..56fb110c --- /dev/null +++ b/assets/index.html-RJYdClUd.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as n,c as s,a as e,b as r,e as l}from"./app-Mf7X6hWu.js";const d={},i=e("h1",{id:"vasp-运行中的错误",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#vasp-运行中的错误","aria-hidden":"true"},"#"),r(" VASP 运行中的错误")],-1),c=e("h2",{id:"error-edddav-call-to-zhegv-failed-returncode-xx",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#error-edddav-call-to-zhegv-failed-returncode-xx","aria-hidden":"true"},"#"),r(" Error EDDDAV: Call to ZHEGV failed. Returncode = xx")],-1),h=e("p",null,"这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。",-1),u={href:"https://www.vasp.at/forum/viewtopic.php?t=10409#p19031",target:"_blank",rel:"noopener noreferrer"},_=e("h2",{id:"forrtl-severe-174-sigsegv-segmentation-fault-occurred",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#forrtl-severe-174-sigsegv-segmentation-fault-occurred","aria-hidden":"true"},"#"),r(" forrtl: severe (174): SIGSEGV, segmentation fault occurred")],-1),f=e("p",null,[r("分段错误,疑似是系统堆栈限制过小导致,使用 "),e("code",null,"ulimit -s unlimited"),r(" 解决,但这只能解决当前 shell 的 mpirun,不能解决下次登录 shell 运行 mpirun 以及 PBS 调度计算节点的堆栈大小。")],-1),p=e("p",null,[r("参考 "),e("a",{href:"../../03.Linux/PBS#%E8%A7%A3%E9%99%A4%E5%A0%86%E6%A0%88%E5%A4%A7%E5%B0%8F%E9%99%90%E5%88%B6"},"PBS 解除堆栈大小限制"),r(" 解决。")],-1);function x(E,m){const t=a("ExternalLinkIcon");return n(),s("div",null,[i,c,h,e("p",null,[r("参考:"),e("a",u,[r('Re: on solving "Error EDDDAV: Call to ZHEGV failed. Returncode = xx" (vasp.at)'),l(t)])]),_,f,p])}const g=o(d,[["render",x],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-RgTwsCTF.js b/assets/index.html-RgTwsCTF.js new file mode 100644 index 00000000..dc1664c5 --- /dev/null +++ b/assets/index.html-RgTwsCTF.js @@ -0,0 +1,11 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as d,c as l,a as e,b as n,e as i,d as o}from"./app-Mf7X6hWu.js";const c={},t=o(`

    lrzsz 的使用方法

    上传下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此,

    sz:让服务器将选定的文件发送(send)到本地

    rz:让服务器接收 (receive) 在本地选择的文件

    上传(rz)

    方法 1:拖拽

    直接将本地文件拖拽到 Xshell 里,即可将文件上传到当前工作目录。

    方法 2:rz

    $ rz 
    +# 输入\`rz\`回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行\`rz\`命令的目录。
    +

    下载(sz)

    #下载一个文件
    +$ sz filename 
    +
    +#下载多个文件
    +$ sz filename1 filename2
    +
    +#下载dir目录下所有文件,不包含dir下的文件夹
    +$ sz dir/*
    +

    `,12),h={href:"https://www.cnblogs.com/thrillerz/p/4745933.html",target:"_blank",rel:"noopener noreferrer"},u=e("blockquote",null,[e("p",null,"Linux 下和 Windows 之间的文件传输工具 rz/sz(lrz/lsz) 介绍")],-1),z=e("blockquote",null,[e("p",null,"【什么是 rz/sz (lsz/lrz)】")],-1),m=e("blockquote",null,[e("p",null,"rz,sz 是便是 Linux/Unix 同 Windows 进行 ZModem 文件传输的命令行工具。"),e("p",null,"简单说就是,可以很方便地用这两个 sz/rz 工具,实现 Linux 下和 Windows 之间的文件传输 (发送和接收),速度大概为 10KB/s,适合中小文件。rz/sz 通过 Zmodem 协议传输数据。")],-1),p=e("blockquote",null,[e("p",null,"【为什么要用 rz/sz】")],-1),v=e("blockquote",null,[e("p",null,"普 通 Linux 和 Windows 之间的文件共享方法,主要有建立 nfs 实现文件共享,和 tftp 之类的方法,但是都很麻烦,而如果只是小文件(几十 K,几百 K),那么直接用 rz/sz,就显得极其地方便了。大文件的话,还是要考虑上面说得,其他的共享方法了,毕竟,rz/sz 速度只有 10K 左右,传 大文件会累死人的。。。")],-1);function b(_,f){const s=r("ExternalLinkIcon");return d(),l("div",null,[t,e("p",null,[n("为什么用 lrzsz:"),e("a",h,[n("https://www.cnblogs.com/thrillerz/p/4745933.html"),i(s)])]),u,z,m,p,v])}const g=a(c,[["render",b],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-S2vTve9n.js b/assets/index.html-S2vTve9n.js new file mode 100644 index 00000000..3f0154f9 --- /dev/null +++ b/assets/index.html-S2vTve9n.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-bbad892c","path":"/dft-learning/pages/vasp-chg/","title":"电子结构","lang":"zh-CN","frontmatter":{"title":"电子结构","date":"2022-09-12T23:00:13.000Z","updated":"2022-09-14T14:30:32.000Z","permalink":"/dft-learning/pages/vasp-chg/","article":false,"index":false,"timeline":false,"description":"电子结构","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-chg/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"电子结构"}],["meta",{"property":"og:description","content":"电子结构"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-14T15:08:45.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T23:00:13.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-14T15:08:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"电子结构\\",\\"description\\":\\"电子结构\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663168125000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.11,"words":33},"filePathRelative":"dft-learning/05.VASP/03.电子结构/README.md","localizedDate":"2022年9月13日","excerpt":"

    电子结构

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-TUooTaDW.js b/assets/index.html-TUooTaDW.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-TUooTaDW.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-Tm_Yynm1.js b/assets/index.html-Tm_Yynm1.js new file mode 100644 index 00000000..33c97a54 --- /dev/null +++ b/assets/index.html-Tm_Yynm1.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-60f15105","path":"/dft-learning/pages/fce84f/","title":"VASPKIT 的配置","lang":"zh-CN","frontmatter":{"title":"VASPKIT 的配置","date":"2020-11-19T17:00:00.000Z","permalink":"/dft-learning/pages/fce84f/","category":["Install"],"updated":"2022-09-12T17:45:07.000Z","description":"VASPKIT 的配置 推荐视频 VASPKIT 功能介绍,解放你的双手 :","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/fce84f/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASPKIT 的配置"}],["meta",{"property":"og:description","content":"VASPKIT 的配置 推荐视频 VASPKIT 功能介绍,解放你的双手 :"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"VASPKIT 的配置"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-19T17:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"VASPKIT 的配置\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-11-19T17:00:00.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"下载","slug":"下载","link":"#下载","children":[{"level":3,"title":"方式一(Recommend)","slug":"方式一-recommend","link":"#方式一-recommend","children":[]},{"level":3,"title":"方式二","slug":"方式二","link":"#方式二","children":[]}]},{"level":2,"title":"解压缩","slug":"解压缩","link":"#解压缩","children":[]},{"level":2,"title":"配置 VASPKIT 程序的环境变量","slug":"配置-vaspkit-程序的环境变量","link":"#配置-vaspkit-程序的环境变量","children":[]},{"level":2,"title":"将 vaspkit 关键字加入系统环境变量","slug":"将-vaspkit-关键字加入系统环境变量","link":"#将-vaspkit-关键字加入系统环境变量","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":7}]},"readingTime":{"minutes":3.61,"words":1084},"filePathRelative":"dft-learning/02.Install/21.linux-install-vaspkit.md","localizedDate":"2020年11月20日","excerpt":"

    VASPKIT 的配置

    \\n

    推荐视频 VASPKIT 功能介绍,解放你的双手

    \\n
    \\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-TxswOh2B.js b/assets/index.html-TxswOh2B.js new file mode 100644 index 00000000..d47246d2 --- /dev/null +++ b/assets/index.html-TxswOh2B.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-147825fb","path":"/docs/","title":"文档","lang":"zh-CN","frontmatter":{"title":"文档","date":"2022-09-12T17:02:02.000Z","updated":"2022-09-16T18:09:57.000Z","permalink":"/docs/","alias":"文档索引","aliases":["文档"],"article":false,"index":false,"linter-yaml-title-alias":"文档","timeline":false,"description":"文档 此文件夹放置除科研外的文档。 目录 理论计算学习笔记 材料表征学习笔记 Linux 学习笔记 中文技术文档的写作规范","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/docs/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"文档"}],["meta",{"property":"og:description","content":"文档 此文件夹放置除科研外的文档。 目录 理论计算学习笔记 材料表征学习笔记 Linux 学习笔记 中文技术文档的写作规范"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T17:02:02.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"文档\\",\\"description\\":\\"文档 此文件夹放置除科研外的文档。 目录 理论计算学习笔记 材料表征学习笔记 Linux 学习笔记 中文技术文档的写作规范\\"}"]]},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1662974416000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":5}]},"readingTime":{"minutes":0.32,"words":95},"filePathRelative":"docs/README.md","localizedDate":"2022年9月13日","excerpt":"

    文档

    \\n

    此文件夹放置除科研外的文档。

    \\n

    目录

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-UOYOVIea.js b/assets/index.html-UOYOVIea.js new file mode 100644 index 00000000..f1883a23 --- /dev/null +++ b/assets/index.html-UOYOVIea.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-580e7486","path":"/dft-learning/pages/297f6a/","title":"Dimer 方法","lang":"zh-CN","frontmatter":{"title":"Dimer 方法","date":"2021-01-21T14:44:32.000Z","permalink":"/dft-learning/pages/297f6a/","category":["VASP","反应路径"],"updated":"2022-01-16T19:57:29.000Z","description":"Dimer 方法搜索过渡态 Todo","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/297f6a/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Dimer 方法"}],["meta",{"property":"og:description","content":"Dimer 方法搜索过渡态 Todo"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-01-21T14:44:32.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Dimer 方法\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-01-21T14:44:32.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.12,"words":36},"filePathRelative":"dft-learning/05.VASP/04.反应路径/02.vasp-dimer.md","localizedDate":"2021年1月21日","excerpt":"

    Dimer 方法搜索过渡态

    \\n
    \\n

    Todo

    \\n
    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-UffiuZUq.js b/assets/index.html-UffiuZUq.js new file mode 100644 index 00000000..94f7c49d --- /dev/null +++ b/assets/index.html-UffiuZUq.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-264f8f39","path":"/dft-learning/pages/663d74/","title":"晶格常数计算","lang":"zh-CN","frontmatter":{"title":"晶格常数计算","date":"2021-02-09T21:05:56.000Z","permalink":"/dft-learning/pages/663d74/","category":["VASP","优化"],"updated":"2022-01-16T19:57:07.000Z","description":"晶格常数计算 晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3). Birch-Murnaghan 状态方程拟合 todo... Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHW 直接优化晶格常数","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/663d74/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"晶格常数计算"}],["meta",{"property":"og:description","content":"晶格常数计算 晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3). Birch-Murnaghan 状态方程拟合 todo... Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHW 直接优化晶格常数"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-02-09T21:05:56.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"晶格常数计算\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-02-09T21:05:56.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Birch-Murnaghan 状态方程拟合","slug":"birch-murnaghan-状态方程拟合","link":"#birch-murnaghan-状态方程拟合","children":[]},{"level":2,"title":"直接优化晶格常数","slug":"直接优化晶格常数","link":"#直接优化晶格常数","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":1.61,"words":484},"filePathRelative":"dft-learning/05.VASP/02.优化/03.vasp-bulk.md","localizedDate":"2021年2月10日","excerpt":"

    晶格常数计算

    \\n

    晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3).

    \\n

    Birch-Murnaghan 状态方程拟合

    \\n
    \\n

    todo...

    \\n

    Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHW

    \\n
    \\n

    直接优化晶格常数

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-UzbTA_Oa.js b/assets/index.html-UzbTA_Oa.js new file mode 100644 index 00000000..70157af8 --- /dev/null +++ b/assets/index.html-UzbTA_Oa.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as a,a as e,b as c}from"./app-Mf7X6hWu.js";const n={},r=e("h1",{id:"博客",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#博客","aria-hidden":"true"},"#"),c(" 博客")],-1),s=e("p",null,"北辞の窝。",-1),_=[r,s];function d(i,l){return o(),a("div",null,_)}const m=t(n,[["render",d],["__file","index.html.vue"]]);export{m as default}; diff --git a/assets/index.html-V7-_XDhs.js b/assets/index.html-V7-_XDhs.js new file mode 100644 index 00000000..00f598e8 --- /dev/null +++ b/assets/index.html-V7-_XDhs.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as s,a as e,b as a}from"./app-Mf7X6hWu.js";const i={},n=e("h1",{id:"materials-studio-在-windows2004-及以上假死",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#materials-studio-在-windows2004-及以上假死","aria-hidden":"true"},"#"),a(" Materials Studio 在 Windows2004 及以上假死")],-1),r=e("p",null,"一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。",-1),d=[n,r];function c(_,l){return o(),s("div",null,d)}const u=t(i,[["render",c],["__file","index.html.vue"]]);export{u as default}; diff --git a/assets/index.html-VQ3o3DlV.js b/assets/index.html-VQ3o3DlV.js new file mode 100644 index 00000000..e30690e9 --- /dev/null +++ b/assets/index.html-VQ3o3DlV.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as a,c as o,a as d,b as t,e as i,d as s}from"./app-Mf7X6hWu.js";const h="/assets/dcd25a6082e1989975c280213f3e1052-tli5j0BX.png",l={},c=d("h1",{id:"vi-vim-编辑器",tabindex:"-1"},[d("a",{class:"header-anchor",href:"#vi-vim-编辑器","aria-hidden":"true"},"#"),t(" vi / vim 编辑器")],-1),g={href:"https://www.runoob.com/linux/linux-vim.html",target:"_blank",rel:"noopener noreferrer"},p=s('

    三种模式

    img
    img

    基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:

    命令模式

    用户刚刚启动 vi/vim,便进入了命令模式。

    此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。

    若想要编辑文本:启动 Vim,进入了命令模式,按下 i,切换到输入模式。

    命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

    输入模式

    在命令模式下按下 i 就进入了输入模式。

    在输入模式中,可以使用以下按键:

    • 字符按键以及 Shift 组合,输入字符
    • ENTER,回车键,换行
    • BACK SPACE,退格键,删除光标前一个字符
    • DEL,删除键,删除光标后一个字符
    • 方向键,在文本中移动光标
    • HOME/END,移动光标到行首/行尾
    • Page Up/Page Down,上/下翻页
    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC,退出输入模式,切换到命令模式

    底线命令模式

    在命令模式下按下:(英文冒号)就进入了底线命令模式。

    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

    在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序
    • w 保存文件

    按 ESC 键可随时退出底线命令模式。

    命令

    命令模式

    移动光标

    上下左右和 h,j,k,l。可以用 数字+j / 数字 +↓ 移动多行

    命令描述
    [Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down] 按键 (常用)
    [Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
    [Ctrl] + [d]屏幕『向下』移动半页
    [Ctrl] + [u]屏幕『向上』移动半页
    nspace那个 n 表示『数字』,例如 20。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20space 则光标会向后面移动 20 个字符距离。
    0 或功能键 [Home]这是数字『0』:移动到这一行的最前面字符处 (常用)
    $ 或功能键 [End]移动到这一行的最后面字符处 (常用)
    H光标移动到这个屏幕的最上方那一行的第一个字符
    M光标移动到这个屏幕的中央那一行的第一个字符
    L光标移动到这个屏幕的最下方那一行的第一个字符
    G / shift+g移动到这个文件的最后一行(常用)
    nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行 (可配合 : set nu)
    gg移动到这个档案的第一行,相当于 1G 啊!(常用)
    nEntern 为数字。光标向下移动 n 行 (常用)

    删除、复制与贴上

    命令描述
    x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键),X 为向前删除一个字符 (相当于 [backspace] 亦即是退格键) (常用)
    nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符,『10x』。
    dd删除游标所在的那一整行 (常用)
    nddn 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
    d1G删除光标所在到第一行的所有数据
    dG删除光标所在到最后一行的所有数据
    d$删除游标所在处,到该行的最后一个字符
    d0那个是数字的 0,删除游标所在处,到该行的最前面一个字符
    yy复制游标所在的那一行 (常用)
    nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行 (常用)
    y1G复制游标所在行到第一行的所有数据
    yG复制游标所在行到最后一行的所有数据
    y0复制光标所在的那个字符到该行行首的所有数据
    y$复制光标所在的那个字符到该行行尾的所有数据
    p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后,那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
    J将光标所在行与下一行的数据结合成同一行
    c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
    u撤销
    [Ctrl]+r重做
    这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
    .不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了!(常用)

    底线命令

    保存与退出

    搜索替换

    命令描述
    /word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
    ?word向光标之上寻找一个字符串名称为 word 的字符串。
    n重复前一个搜索动作。如 /word 后按 n 则为查找下一个
    N与 n 相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird。
    : n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2!举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)
    :1,$s/word1/word2/g:%s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!(常用)
    :1,$s/word1/word2/gc:%s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)

    第二部分:一般模式切换到编辑模式的可用的按钮说明

    进入输入或取代的编辑模式
    i, I进入输入模式 (Insert mode):i 为『从目前光标所在处输入』,I 为『在目前所在行的第一个非空格符处开始输入』。(常用)
    a, A进入输入模式 (Insert mode):a 为『从目前光标所在的下一个字符处开始输入』,A 为『从光标所在行的最后一个字符处开始输入』。(常用)
    o, O进入输入模式 (Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行;O 为在目前光标所在的上一行处输入新的一行!(常用)
    r, R进入取代模式 (Replace mode):r 只会取代光标所在的那一个字符一次;R 会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
    [Esc]退出编辑模式,回到一般模式中 (常用)
    上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时,一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!

    第三部分:一般模式切换到指令行模式的可用的按钮说明

    指令行的储存、离开等指令
    : w将编辑的数据写入硬盘档案中 (常用)
    : w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入,还是跟你对该档案的档案权限有关啊!
    : q离开 vi (常用)
    : q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
    注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
    : wq储存后离开,若为 : wq! 则为强制储存后离开 (常用)
    ZZ这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于 (保存并退出)
    ZQ不保存,强制退出。效果等同于 : q!
    : w [filename]将编辑的数据储存成另一个档案(类似另存新档)
    : r [filename]在编辑的数据中,读入另一个档案的数据。亦即将『filename』这个档案内容加到游标所在行后面
    : n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
    :! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
    vim 环境的变更
    : set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
    : set nonu与 set nu 相反,为取消行号!
    ',35);function m(b,u){const r=n("ExternalLinkIcon");return a(),o("div",null,[c,d("p",null,[t("vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 "),d("a",g,[t("Linux vi/vim | 菜鸟教程"),i(r)]),t(" 吧。")]),p])}const x=e(l,[["render",m],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-VTWdOFhR.js b/assets/index.html-VTWdOFhR.js new file mode 100644 index 00000000..3c51a2a7 --- /dev/null +++ b/assets/index.html-VTWdOFhR.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-89e8430c","path":"/dft-learning/pages/908cf1/","title":"ASE-usage","lang":"zh-CN","frontmatter":{"title":"ASE-usage","date":"2020-12-15T13:28:10.000Z","permalink":"/dft-learning/pages/908cf1/","category":["Other App"],"updated":"2022-01-16T19:57:43.000Z","description":"ASE GUI 的用法 原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。 参考文档:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/908cf1/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"ASE-usage"}],["meta",{"property":"og:description","content":"ASE GUI 的用法 原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。 参考文档:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-12-15T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"ASE-usage\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-12-15T13:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.25,"words":75},"filePathRelative":"dft-learning/05.VASP/08.其他/02.ASE-usage.md","localizedDate":"2020年12月15日","excerpt":"

    ASE GUI 的用法

    \\n

    原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。

    \\n

    参考文档:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-VWsX53il.js b/assets/index.html-VWsX53il.js new file mode 100644 index 00000000..f129fbe2 --- /dev/null +++ b/assets/index.html-VWsX53il.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as s,a as e,b as t}from"./app-Mf7X6hWu.js";const _={},c=e("h1",{id:"呼呼哈嘿",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#呼呼哈嘿","aria-hidden":"true"},"#"),t(" 呼呼哈嘿")],-1),l=e("p",null,"啊这,我还没写完...",-1),a=e("p",null,"还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~",-1),r=e("hr",null,null,-1),d=e("p",null,[t("本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,"),e("s",null,"面向学术科研"),t(",面向百度编程,可太真实了 233")],-1),i=[c,l,a,r,d];function h(u,f){return o(),s("div",null,i)}const x=n(_,[["render",h],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-WoJuStdU.js b/assets/index.html-WoJuStdU.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-WoJuStdU.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-WvLLCrx1.js b/assets/index.html-WvLLCrx1.js new file mode 100644 index 00000000..3c37577c --- /dev/null +++ b/assets/index.html-WvLLCrx1.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-bba3a0be","path":"/dft-learning/pages/vasp-neb/","title":"反应路径","lang":"zh-CN","frontmatter":{"title":"反应路径","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-14T14:30:58.000Z","permalink":"/dft-learning/pages/vasp-neb/","article":false,"index":false,"timeline":false,"description":"反应路径","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-neb/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"反应路径"}],["meta",{"property":"og:description","content":"反应路径"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-14T15:08:45.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-14T15:08:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"反应路径\\",\\"description\\":\\"反应路径\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663168125000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.11,"words":33},"filePathRelative":"dft-learning/05.VASP/04.反应路径/README.md","localizedDate":"2022年9月13日","excerpt":"

    反应路径

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-XDyrBeaJ.js b/assets/index.html-XDyrBeaJ.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-XDyrBeaJ.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-XjkjwiMq.js b/assets/index.html-XjkjwiMq.js new file mode 100644 index 00000000..bc275959 --- /dev/null +++ b/assets/index.html-XjkjwiMq.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as r,a as e,b as a}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"zotero",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#zotero","aria-hidden":"true"},"#"),a(" Zotero")],-1),s=[n];function _(d,i){return t(),r("div",null,s)}const f=o(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-XrnaE3eW.js b/assets/index.html-XrnaE3eW.js new file mode 100644 index 00000000..d36b4051 --- /dev/null +++ b/assets/index.html-XrnaE3eW.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as t,c as n,a as e,b as a,e as o,d as s}from"./app-Mf7X6hWu.js";const c="/assets/image-06.vasp-adsorption-energy-20221119172411787-GLczK5Wq.png",d={},_=s('

    吸附能的计算

    Todo

    影响因素

    slab 模型在 Z 方向

    • slab 的厚度
    • 真空层厚度

    一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。

    slab 模型在 XY 方向

    • 表面大小:影响覆盖度,计算的工作量。
    • 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。
    • 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等

    初始构型获取

    ',9),h=e("li",null,"查数据库",-1),u=e("li",null,"查文献",-1),p=e("li",null,"自己估算:依据原子半径,两原子成键,键长小于两者之和。下图 😃",-1),m={href:"https://www.bigbrosci.com/2018/10/01/ex54/",target:"_blank",rel:"noopener noreferrer"},b=e("figure",null,[e("img",{src:c,alt:"image-20210223101158708",tabindex:"0",loading:"lazy"}),e("figcaption",null,"image-20210223101158708")],-1),f={href:"https://en.wikipedia.org/wiki/Atomic_radius#Empirically_measured_atomic_radius",target:"_blank",rel:"noopener noreferrer"};function g(x,k){const i=l("ExternalLinkIcon");return t(),n("div",null,[_,e("ol",null,[h,u,p,e("li",null,[a("初算:用一个小模型,简单算一下,得到一个合理的键长。比如 O 吸附在 Cu,直接优化气相中 Cu-O 双原子分子的结构。"),e("a",m,[a("Ex54 简单粗暴地获取初始构型(一)| Learn VASP The Hard Way (bigbrosci.com)"),o(i)])])]),b,e("blockquote",null,[e("p",null,[e("a",f,[a("Empirically measured atomic radius (wikipedia.org)"),o(i)])])])])}const y=r(d,[["render",g],["__file","index.html.vue"]]);export{y as default}; diff --git a/assets/index.html-YdspMJk7.js b/assets/index.html-YdspMJk7.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-YdspMJk7.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-YjL5trWu.js b/assets/index.html-YjL5trWu.js new file mode 100644 index 00000000..6ee3bd55 --- /dev/null +++ b/assets/index.html-YjL5trWu.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3de23628","path":"/dft-learning/pages/b63e81/","title":"态密度分析","lang":"zh-CN","frontmatter":{"title":"态密度分析","date":"2020-11-28T13:28:10.000Z","permalink":"/dft-learning/pages/b63e81/","category":["VASP"],"updated":"2022-09-12T17:47:12.000Z","description":"态密度分析 态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。 在非自洽计算的基础上进行态密度分析。 本页以计算 O2 的态密度为例。 步骤 本页操作在完成 O2 结构优化、自洽、非自洽 之后进行。在 3-nscf 文件夹中继续。 计算完成后用 VTST Script 的脚本 split_dos 分离态密度:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/b63e81/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"态密度分析"}],["meta",{"property":"og:description","content":"态密度分析 态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。 在非自洽计算的基础上进行态密度分析。 本页以计算 O2 的态密度为例。 步骤 本页操作在完成 O2 结构优化、自洽、非自洽 之后进行。在 3-nscf 文件夹中继续。 计算完成后用 VTST Script 的脚本 split_dos 分离态密度:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"态密度分析"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-28T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"态密度分析\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-11-28T13:28:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":5}]},"readingTime":{"minutes":1.07,"words":320},"filePathRelative":"dft-learning/05.VASP/03.电子结构/04.vasp-DOS.md","localizedDate":"2020年11月28日","excerpt":"

    态密度分析

    \\n

    态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。

    \\n

    非自洽计算的基础上进行态密度分析。

    \\n

    本页以计算 O2 的态密度为例。

    \\n

    步骤

    \\n

    本页操作在完成 O2 结构优化、自洽、非自洽 之后进行。在 3-nscf 文件夹中继续。

    \\n

    计算完成后用 VTST Script 的脚本 split_dos 分离态密度:

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-Z7Dyp-BW.js b/assets/index.html-Z7Dyp-BW.js new file mode 100644 index 00000000..35bfff50 --- /dev/null +++ b/assets/index.html-Z7Dyp-BW.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-6f1e0448","path":"/dft-learning/pages/1dfd6d/","title":"on-the-end","lang":"zh-CN","frontmatter":{"title":"on-the-end","date":"2020-11-21T20:21:10.000Z","permalink":"/dft-learning/pages/1dfd6d/","category":["Others"],"updated":"2022-01-16T19:57:52.000Z","description":"呼呼哈嘿 啊这,我还没写完... 还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~ 本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/1dfd6d/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"on-the-end"}],["meta",{"property":"og:description","content":"呼呼哈嘿 啊这,我还没写完... 还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~ 本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-21T20:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"on-the-end\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-21T20:21:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.43,"words":130},"filePathRelative":"dft-learning/09.Others/99.on-the-end.md","localizedDate":"2020年11月22日","excerpt":"

    呼呼哈嘿

    \\n

    啊这,我还没写完...

    \\n

    还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~

    \\n
    \\n

    本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-ZSWR-EEF.js b/assets/index.html-ZSWR-EEF.js new file mode 100644 index 00000000..8267644c --- /dev/null +++ b/assets/index.html-ZSWR-EEF.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-bca6172c","path":"/code/citation-style-language/specification/","title":"CSL 1.0.2 规范","lang":"zh-CN","frontmatter":{"title":"CSL 1.0.2 规范","date":"2022-08-01T16:55:26.000Z","updated":"2022-08-05T18:05:52.000Z","description":"CSL 1.0.2 规范 [!DONE] 此页面于 2022-8-2 已校对完成。 主要作者:Rintze M. Zelle, PhD、 Brenton M. Wiernik、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"CSL 1.0.2 规范"}],["meta",{"property":"og:description","content":"CSL 1.0.2 规范 [!DONE] 此页面于 2022-8-2 已校对完成。 主要作者:Rintze M. Zelle, PhD、 Brenton M. Wiernik、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:55:26.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"CSL 1.0.2 规范\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:55:26.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"介绍","slug":"介绍","link":"#介绍","children":[]},{"level":2,"title":"翻译习惯","slug":"翻译习惯","link":"#翻译习惯","children":[]},{"level":2,"title":"术语","slug":"术语","link":"#术语","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.72,"words":517},"filePathRelative":"code/citation-style-language/specification/README.md","localizedDate":"2022年8月2日","excerpt":"

    CSL 1.0.2 规范

    \\n
    \\n

    [!DONE]\\n此页面于 2022-8-2 已校对完成。

    \\n
    \\n

    主要作者:Rintze M. Zelle, PhD、 Brenton M. Wiernik、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-ZXYwVQ2K.js b/assets/index.html-ZXYwVQ2K.js new file mode 100644 index 00000000..ad0b8aca --- /dev/null +++ b/assets/index.html-ZXYwVQ2K.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-bba2610e","path":"/dft-learning/pages/vasp-opt/","title":"结构优化","lang":"zh-CN","frontmatter":{"title":"结构优化","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-14T14:30:07.000Z","permalink":"/dft-learning/pages/vasp-opt/","article":false,"index":false,"timeline":false,"description":"结构优化","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-opt/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"结构优化"}],["meta",{"property":"og:description","content":"结构优化"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-14T15:08:45.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-14T15:08:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"结构优化\\",\\"description\\":\\"结构优化\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663168125000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.11,"words":33},"filePathRelative":"dft-learning/05.VASP/02.优化/README.md","localizedDate":"2022年9月13日","excerpt":"

    结构优化

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-ZXtGgZrX.js b/assets/index.html-ZXtGgZrX.js new file mode 100644 index 00000000..0c37fe37 --- /dev/null +++ b/assets/index.html-ZXtGgZrX.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as i,d as t}from"./app-Mf7X6hWu.js";const r="/assets/image-12.task-model-of-Rectangular-graphene-20221119172731050-ok3BdR3S.png",l="/assets/image-12.task-model-of-Rectangular-graphene-20221119172731098-ONnZ7TUK.png",p={},n=t('

    作业:矩形石墨烯建模

    任务

    建立矩形的石墨烯模型

    步骤

    1. 导入石墨烯结构

      import - Structures\\ceramics\\graphite.msi

    2. Make P1 降低对成性

      Build -> Symmetry -> Make P1,

      删掉一层C原子层

    3. 切面

      Build -> Surfaces -> Cleave Surface

      Surface Box - Cleave plane: 001

      Surface Mesh - Surface vectors - U: 210

    4. 超胞

      Build -> Symmetry -> Supercell

      Supercell range A=3, B=5 (60 C atoms)

    5. 真空层

      Build -> Crystals -> Build Vacuum Slab

      Vacuum orientation: C

      Vacuum thickness: 20 Å

    6. 将原子层移动到Z方向中部(只是看起来方便)

    7. Display style -> Lattice -> display style -> style -> In cell

    8. 修改背景、标尺、晶格的颜色等

    9. Save and Print to PDF

    结果

    Rectangular graphene
    Rectangular graphene
    Rectangular graphene 2
    Rectangular graphene 2
    ',8),c=[n];function s(o,d){return a(),i("div",null,c)}const h=e(p,[["render",s],["__file","index.html.vue"]]);export{h as default}; diff --git a/assets/index.html-ZjzL1_Oa.js b/assets/index.html-ZjzL1_Oa.js new file mode 100644 index 00000000..895ed3da --- /dev/null +++ b/assets/index.html-ZjzL1_Oa.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-67bc2210","path":"/code/linux/lrzsz/","title":"lrzsz 的使用方法","lang":"zh-CN","frontmatter":{"title":"lrzsz 的使用方法","date":"2020-11-03T14:31:00.000Z","updated":"2022-09-16T18:38:42.000Z","permalink":"/code/linux/lrzsz/","category":["Linux"],"redirectFrom":"/dft-learning/pages/286fdd/","description":"lrzsz 的使用方法 上传 和 下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此, sz:让服务器将选定的文件发送(send)到本地 rz:让服务器接收 (receive) 在本地选择的文件 上传(rz) 方法 1:拖拽","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/lrzsz/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"lrzsz 的使用方法"}],["meta",{"property":"og:description","content":"lrzsz 的使用方法 上传 和 下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此, sz:让服务器将选定的文件发送(send)到本地 rz:让服务器接收 (receive) 在本地选择的文件 上传(rz) 方法 1:拖拽"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-03T14:31:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"lrzsz 的使用方法\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-03T14:31:00.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"上传(rz)","slug":"上传-rz","link":"#上传-rz","children":[{"level":3,"title":"方法 1:拖拽","slug":"方法-1-拖拽","link":"#方法-1-拖拽","children":[]},{"level":3,"title":"方法 2:rz","slug":"方法-2-rz","link":"#方法-2-rz","children":[]}]},{"level":2,"title":"下载(sz)","slug":"下载-sz","link":"#下载-sz","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.65,"words":494},"filePathRelative":"code/linux/17.linux-lrzsz-usage.md","localizedDate":"2020年11月3日","excerpt":"

    lrzsz 的使用方法

    \\n

    上传下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此,

    \\n

    sz:让服务器将选定的文件发送(send)到本地

    \\n

    rz:让服务器接收 (receive) 在本地选择的文件

    \\n

    上传(rz)

    \\n

    方法 1:拖拽

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-_e1pHnuc.js b/assets/index.html-_e1pHnuc.js new file mode 100644 index 00000000..db0da012 --- /dev/null +++ b/assets/index.html-_e1pHnuc.js @@ -0,0 +1,197 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as p,c,a as s,b as a,e,d as t}from"./app-Mf7X6hWu.js";const o={},r=t(`

    PBS

    作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。

    PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。

    PBS 命令

    提交作业

    用以下命令提交作业:

    qsub [options] <control script>
    +

    命令执行后会返回一个作业 ID。如:

    [zjb@op back]$ qsub -N thisIsName vasp.pbs
    +201848.inode202
    +

    作业提交后一般会先排队等待,PBS 系统会根据作业的优先级和可用的计算资源来调度和执行作业。

    其中 -N thisIsName 为选项,它指定了作业的名称。vasp.pbs 为 PBS 脚本,它设定了作业的属性和作业的内容。optionscontrol script 详见 PBS 脚本。

    文档中,命令带有 \`\` 符号的,表示是在 shell 终端输入的命令,实际输入的时候不需要带有这个符号。

    查看任务

    qstat [option] <jobid>
    +

    如:

    [zjb@op back]$ qstat
    +Job ID                    Name             User            Time Use S Queue
    +------------------------- ---------------- --------------- -------- - -----
    +201848.inode202            thisIsName       zjb             00:00:00 C energy         
    +

    其中,S 表示任务的状态,有如下几种状态:

    状态 (S)描述
    B只用于任务向量,表示任务向量已经开始执行
    E任务在运行后退出
    H任务被服务器或用户或者管理员阻塞
    Q任务正在排队中,等待被调度运行
    R任务正在运行
    C任务完成
    S任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源
    T任务被转移到其它执行节点了
    U由于服务器繁忙,任务被挂起
    W任务在等待它所请求的执行时间的到来 (qsub -a)
    X只用于子任务,表示子任务完成

    qstat 的选项

    命令说明
    qstat -q列出所有队列
    qstat -a列出所有作业
    qstat -u user_id列出 user_id 的所有作业
    qstat -r列出所有正在运行的作业
    qstat -f job_id列出作业 job_id 的信息
    qstat -fQ queue列出队列 queue 的信息
    qstat -B列出所有作业状态的汇总
    pbsnodes列出所有节点的详细信息
    pestat列出所有节点的状态

    取消任务

    qdel <jobid>
    +

    停止正在运行的任务

    qsig -s KILL <job ID>
    +

    checkjob

    checkjob <job id>
    +

    注意这儿的 job id 不包括 .inodexxx,比如上述的 201848.inode202 作业,如果使用 checkjob 查询,命令应为 checkjob 201848

    [zjb@op testEnergy]$ checkjob 201848
    +
    +checking job 201848
    +
    +State: Running
    +Creds:  user:zjb  group:energy  account:SugonClus  class:energy  qos:preemptee
    +WallTime: 00:02:03 of 00:30:00
    +SubmitTime: Sat Oct 31 19:45:48
    +  (Time Queued  Total: 00:00:01  Eligible: 00:00:01)
    +
    +StartTime: Sat Oct 31 19:45:49
    +Total Tasks: 4
    +
    +Req[0]  TaskCount: 4  Partition: DEFAULT
    +Network: [NONE]  Memory >= 0  Disk >= 0  Swap >= 0
    +Opsys: [NONE]  Arch: [NONE]  Features: [NONE]
    +Allocated Nodes:
    +[inode53:4]
    +
    +IWD: [NONE]  Executable:  [NONE]
    +Bypass: 0  StartCount: 1
    +PartitionMask: [ALL]
    +Flags:       BACKFILL RESTARTABLE PREEMPTEE
    +Attr:        PREEMPTEE
    +
    +Reservation '201868' (-00:02:04 -> 00:27:56  Duration: 00:30:00)
    +PE:  4.00  StartPriority:  6000
    +

    如果任务无法运行,可以这样查询原因。

    pbsnodes

    查看节点的空闲情况。有 freebusydown 等状态。

    PBS 脚本

    PBS 脚本实际上是一个 linux shell 脚本,在 PBS 脚本中可以用一种特殊形式的注释(#PBS)作为 PBS 指令以设定作业属性。下面是一个 PBS 脚本示例:

    #!/bin/sh
    +#PBS -N Untitled
    +#PBS -l nodes=1:ppn=4
    +#PBS -l walltime=00:10:00
    +#PBS -j oe
    +#PBS -o ./out.log
    +
    +cd \${PBS_O_WORKDIR}
    +source /public/software/profile.d/compiler_intel-composer_xe_2015.2.164.sh
    +source /public/software/profile.d/mpi_intelmpi-5.0.2.044.sh
    +echo "============================================="
    +echo "Starting VASP run at" \`date\` 
    +echo "============================================="
    +echo "# SYSTEM INFO"
    +echo 'The hostname is ' \`hostname\`  
    +grep 'Linux' /etc/issue 
    +grep 'model name' /proc/cpuinfo |cut -d: -f2 |uniq -c
    +grep 'cpu M' /proc/cpuinfo 
    +grep 'MemTotal' /proc/meminfo
    +echo "============================================="
    +echo "# PBS INFO"
    +echo "The PBS_O_WORKDIR is" $PBS_O_WORKDIR
    +echo "The PBS_JOBID is" $PBS_JOBID
    +echo "The PBS_O_QUEUE is" $PBS_O_QUEUE
    +echo "The PBS_O_HOST is" $PBS_O_HOST
    +NP=\`cat $PBS_NODEFILE | wc -l\`
    +echo "The num of PBS_NODEFILE is" $NP
    +echo "The PBS_NODEFILE IS:" 
    +cat $PBS_NODEFILE
    +mpirun -np $NP -machinefile $PBS_NODEFILE /public/software//apps/vasp/5.4.1/intelmpi/vasp_std >& stdout
    +echo "============================================="
    +echo "End task at " \`date\`  
    +echo "============================================="
    +

    PBS 作业属性

    属性取值说明
    -l资源列表设定作业所需资源,以逗号分隔
    -N作业名称设定作业的默认名称
    -o文件路径设定作业的标准输出文件路径
    -e文件路径设定作业的标准错误文件路径
    -joe 或 eooe: 将标准错误文件与标准输出文件合并成标准输出文件。eo: 将标准错误文件和标准输出文件合并成标准错误文件
    -p-1024 到 +1023 之间的整数设定作业优先级,越大优先级越高
    -q队列名称设定作业队列名称

    资源列表

    资源取值说明
    nodes节点资源构型设定作业所需计算节点资源
    walltimehh: mm: ss设定作业所需的最大 wallclock 时间
    cputhh: mm: ss设定作业所需的最大 CPU 时间
    mem正整数,后面可跟 b,kb,mb,gb设定作业所需的最大内存 ncpus 正整数 设定作业所需的 CPU 数目

    指定节点运行:

    有时候某个节点出了问题,但是直接提交仍会被分配到这个节点计算,这时候可以指定一个其他的节点进行提交。

    #PBS -l nodes=c72:ppn=16+c73:ppn=16
    +

    其中,c72c73 是节点名,可以通过 pbsnodes 获取到。

    参考:

    `,43),d={href:"https://novarizark.github.io/2015/01/24/e3-80-90-e5-b7-b2-e8-a7-a3-e5-86-b3-e3-80-91pbs-e/",target:"_blank",rel:"noopener noreferrer"},u=t(`

    PBS 常用环境变量

    环境变量说明
    PBS_ENVIRONMENT批处理作业为 PBS_BATCH,交互式作业为 PBS_INTERACTIVE
    PBS_JOBID PBS系统给作业分配的标识号
    PBS_JOBNAME用户指定的作业名称
    PBS_NODEFILE包含作业所用计算节点的文件名
    PBS_QUEUE作业所执行的队列名称
    PBS_O_HOME执行 qsub 命令的 HOME 环境变量值
    PBS_O_PATH执行 qsub 命令的 PATH 环境变量值
    PBS_O_SHELL执行 qsub 命令的 SHELL 环境变量值
    PBS_O_HOST执行 qsub 命令节点名称
    PBS_O_QUEUE提交的作业的最初队列名称
    PBS_O_WORKDIR执行 qsub 命令所在的绝对路径

    高级配置

    Qmgr 查看所有配置

     qmgr -c "p s"
    +

    example:

    [root@compute-0-11 init.d]# qmgr
    +Max open servers: 49
    +Qmgr: p s
    +#
    +# Create queues and set their attributes.
    +#
    +#
    +# Create and define queue batch
    +#
    +create queue batch
    +set queue batch queue_type = Execution
    +set queue batch acl_host_enable = False
    +set queue batch acl_hosts = compute-0-3.local+compute-0-4.local+compute-0-5.local+compute-0-6.local+compute-0-7.local+compute-0-8.local+compute-0-9.local+compute-0-10.local+compute-0-11.local
    +set queue batch resources_default.walltime = 7200:00:00
    +set queue batch enabled = True
    +set queue batch started = True
    +#
    +# Create and define queue gpu
    +#
    +create queue gpu
    +set queue gpu queue_type = Execution
    +set queue gpu acl_host_enable = False
    +set queue gpu acl_hosts = compute-0-2.local
    +set queue gpu resources_default.walltime = 720:00:00
    +set queue gpu enabled = True
    +set queue gpu started = True
    +#
    +# Set server attributes.
    +#
    +set server scheduling = True
    +set server default_queue = batch
    +set server query_other_jobs = True
    +set server default_chunk.ncpus = 1
    +set server scheduler_iteration = 600
    +set server resv_enable = True
    +set server node_fail_requeue = 310
    +set server max_array_size = 10000
    +set server pbs_license_min = 0
    +set server pbs_license_max = 2147483647
    +set server pbs_license_linger_time = 31536000
    +set server eligible_time_enable = False
    +set server max_concurrent_provision = 5
    +set server max_job_sequence_id = 9999999
    +Qmgr: 
    +

    普通用户查询他人作业

    配置使普通用户可以查看其他用户提交的作业(但不能操作):

    qmgr: set server query_other_jobs = True
    +

    示例:

    [scujh_zjb@scu ~]$ qstat                  # 仅能查看自己的任务,查看不到别人的任务
    +[scujh_zjb@scu ~]$ su
    +Password: 
    +[root@scu /home/scujh_zjb]# qmgr
    +Max open servers: 49
    +Qmgr: set server query_other_jobs = True
    +Qmgr: exit
    +[root@scu /home/scujh_zjb]# exit
    +exit
    +[scujh_zjb@scu ~]$ qstat
    +
    +scu: 
    +                                                            Req'd  Req'd   Elap
    +Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
    +--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
    +19.scu          scudt_du gpu      vasp-test-   1753   1  12    --  720:0 R 69:24
    +190.scu         cdu_lsh  batch    4-CeO2      10325   1  24    --  72:00 R 18:13
    +203.scu         cdu_hg   gpu      8-OHqy       8101   1   8    --  24:00 R 00:40
    +214.scu         cdu_lsh  batch    2CeO2Ni       --    1  24    --  72:00 Q   -- 
    +[scujh_zjb@scu ~]$ 
    +

    参考:

    `,13),m={href:"https://community.openpbs.org/t/pbs-command-to-see-other-users-job-from-user-environment/745",target:"_blank",rel:"noopener noreferrer"},b=t(`

    解除堆栈大小限制

    UPDATE in 2022.11.14:该方法未解决该问题。

    用于解决 [分段错误:forrtl: severe (174): SIGSEGV, segmentation fault occurred](../05. VASP/08.%E5%85%B6%E4%BB%96/error. md #forrtl :%20severe%20 (174):%20SIGSEGV,%20segmentation%20fault%20occurred),为每一个计算节点解除堆栈大小限制。

    在每一个计算节点上,修改 $PBS_EXEC/lib/init.d/limits.pbs_mom(该文件会在运行前被 source)在里面添加 ulimit -s unlimited,然后重启 PBS 服务。

    具体步骤如下:

    ## 依次登录每一个计算节点
    +ssh compute-0-11 
    +
    +## 编辑 limits.pbs_mom 文件
    +cd /opt/pbs/lib/init.d/ && cp limits.pbs_mom limits.pbs_mom.bak && vi limits.pbs_mom
    +
    +## 原文件内容:
    +if [ -f /etc/sgi-release -o -f /etc/sgi-compute-node-release ] ; then
    +    MEMLOCKLIM=\`ulimit -l\`
    +    NOFILESLIM=\`ulimit -n\`
    +    STACKLIM=\`ulimit -s\`
    +    ulimit -l unlimited
    +    ulimit -n 16384
    +    ulimit -s unlimited
    +fi
    +
    +## 修改后内容
    +    MEMLOCKLIM=\`ulimit -l\`
    +    NOFILESLIM=\`ulimit -n\`
    +    STACKLIM=\`ulimit -s\`
    +    ulimit -l unlimited
    +    ulimit -n 16384
    +    ulimit -s unlimited
    +
    +## 重启 pbs
    +systemctl restart pbs && systemctl status pbs  # 或执行 /etc/init.d/pbs restart
    +

    日志备份以便理解:

    [root@scu /home/scujh_zjb/test]# ssh compute-0-11
    +Warning: untrusted X11 forwarding setup failed: xauth key data not generated
    +Last login: Thu Nov 10 03:11:13 2022 from scu
    +Rocks Compute Node
    +Rocks 7.0 (Manzanita)
    +Profile built 21:21 20-Oct-2022
    +
    +Kickstarted 21:27 20-Oct-2022
    +[root@compute-0-11 ~]# cd /opt/pbs/lib/init.d/ 
    +[root@compute-0-11 init.d]# ls
    +limits.pbs_mom         limits.post_services         sgigenvnodelist.awk
    +limits.pbs_mom.compat  limits.post_services.compat  sgiICEvnode.sh
    +[root@compute-0-11 init.d]# cd /opt/pbs/lib/init.d/ && cp limits.pbs_mom limits.pbs_mom.bak && ls
    +limits.pbs_mom      limits.pbs_mom.compat  limits.post_services.compat  sgiICEvnode.sh
    +limits.pbs_mom.bak  limits.post_services   sgigenvnodelist.awk
    +[root@compute-0-11 init.d]# vi limits.pbs_mom
    +[root@compute-0-11 init.d]# systemctl restart pbs && systemctl status pbs
    +● pbs.service - Portable Batch System
    +   Loaded: loaded (/opt/pbs/libexec/pbs_init.d; enabled; vendor preset: disabled)
    +   Active: active (running) since Fri 2022-11-11 02:50:13 EST; 10ms ago
    +     Docs: man:pbs(8)
    +  Process: 39964 ExecStop=/opt/pbs/libexec/pbs_init.d stop (code=exited, status=0/SUCCESS)
    +  Process: 40010 ExecStart=/opt/pbs/libexec/pbs_init.d start (code=exited, status=0/SUCCESS)
    +   Memory: 2.6M
    +   CGroup: /system.slice/pbs.service
    +           └─40074 /opt/pbs/sbin/pbs_mom
    +
    +Nov 11 02:50:12 compute-0-11.local systemd[1]: Starting Portable Batch System...
    +Nov 11 02:50:12 compute-0-11.local pbs_init.d[40010]: Starting PBS
    +Nov 11 02:50:13 compute-0-11.local pbs_init.d[40010]: PBS mom
    +Nov 11 02:50:13 compute-0-11.local systemd[1]: Started Portable Batch System.
    +[root@compute-0-11 init.d]# 
    +

    参考:

    `,9),v={href:"https://community.openpbs.org/t/how-to-set-up-stack-size-to-unlimited-in-pbs-pro/235",target:"_blank",rel:"noopener noreferrer"},k={href:"https://community.openpbs.org/t/increasing-the-open-files-limit-across-all-nodes/1361",target:"_blank",rel:"noopener noreferrer"},h={href:"https://phoenixnap.com/kb/ulimit-linux-command",target:"_blank",rel:"noopener noreferrer"};function g(_,S){const n=l("ExternalLinkIcon");return p(),c("div",null,[r,s("ul",null,[s("li",null,[s("a",d,[a("【已解决】pbs指定作业节点 (novarizark.github.io)"),e(n)])])]),u,s("ul",null,[s("li",null,[s("a",m,[a("PBS command to see other users job from user environment - Users/Site Administrators - OpenPBS"),e(n)])])]),b,s("ul",null,[s("li",null,[s("a",v,[a("How to set up stack-size to unlimited in PBS pro - Users/Site Administrators - OpenPBS"),e(n)])]),s("li",null,[s("a",k,[a("Increasing the open files limit across all nodes - Users/Site Administrators - OpenPBS"),e(n)])]),s("li",null,[s("a",h,[a("How to Use the ulimit Linux Command {With Examples} (phoenixnap.com)"),e(n)])])])])}const P=i(o,[["render",g],["__file","index.html.vue"]]);export{P as default}; diff --git a/assets/index.html-a6fKRQU8.js b/assets/index.html-a6fKRQU8.js new file mode 100644 index 00000000..46e86695 --- /dev/null +++ b/assets/index.html-a6fKRQU8.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-e52c881c","path":"/article/","title":"文章","lang":"zh-CN","frontmatter":{"title":"文章","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"type","key":"article"},"layout":"BlogType","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/article/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"文章"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"文章\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-aWWIh60G.js b/assets/index.html-aWWIh60G.js new file mode 100644 index 00000000..c0c2ca0a --- /dev/null +++ b/assets/index.html-aWWIh60G.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-ba918472","path":"/dft-learning/pages/2e10d2/","title":"Materials Studio","lang":"zh-CN","frontmatter":{"title":"Materials Studio","date":"2020-11-30T13:28:10.000Z","permalink":"/dft-learning/pages/2e10d2/","category":["Materials-Studio"],"updated":"2022-01-16T19:56:29.000Z","description":"Materials Studio 懒得写了的 建模 问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体? 答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/2e10d2/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Materials Studio"}],["meta",{"property":"og:description","content":"Materials Studio 懒得写了的 建模 问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体? 答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-30T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Materials Studio\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-30T13:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"建模","slug":"建模","link":"#建模","children":[]},{"level":2,"title":"其他资源","slug":"其他资源","link":"#其他资源","children":[]}],"git":{"createdTime":1662968256000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":2.64,"words":793},"filePathRelative":"dft-learning/04.Materials-Studio/README.md","localizedDate":"2020年11月30日","excerpt":"

    Materials Studio

    \\n

    懒得写了的

    \\n

    建模

    \\n

    问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体?

    \\n

    答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-agNhuRw0.js b/assets/index.html-agNhuRw0.js new file mode 100644 index 00000000..eec68c40 --- /dev/null +++ b/assets/index.html-agNhuRw0.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-0e400be1","path":"/dft-learning/pages/4f0a58/","title":"INCAR 中的常用标签","lang":"zh-CN","frontmatter":{"title":"INCAR 中的常用标签","date":"2020-11-21T20:21:10.000Z","permalink":"/dft-learning/pages/4f0a58/","category":["VASP"],"updated":"2022-09-12T17:48:23.000Z","headerDepth":1,"description":"INCAR 中的常用标签 整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。 标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔; 与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.; 几种必要的数据类型(仅是为了方便我理解,这个并不用会):","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/4f0a58/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"INCAR 中的常用标签"}],["meta",{"property":"og:description","content":"INCAR 中的常用标签 整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。 标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔; 与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.; 几种必要的数据类型(仅是为了方便我理解,这个并不用会):"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-21T20:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"INCAR 中的常用标签\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-21T20:21:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Start Parameters","slug":"start-parameters","link":"#start-parameters","children":[{"level":3,"title":"SYSTEM","slug":"system","link":"#system","children":[]},{"level":3,"title":"ISTART","slug":"istart","link":"#istart","children":[]},{"level":3,"title":"ISPIN","slug":"ispin","link":"#ispin","children":[]},{"level":3,"title":"ICHARG","slug":"icharg","link":"#icharg","children":[]}]},{"level":2,"title":"I/O Flags","slug":"i-o-flags","link":"#i-o-flags","children":[]},{"level":2,"title":"Electronic Relaxation","slug":"electronic-relaxation","link":"#electronic-relaxation","children":[{"level":3,"title":"ENCUT","slug":"encut","link":"#encut","children":[]},{"level":3,"title":"EDIFF","slug":"ediff","link":"#ediff","children":[]},{"level":3,"title":"GGA","slug":"gga","link":"#gga","children":[]}]},{"level":2,"title":"Ionic Relaxation","slug":"ionic-relaxation","link":"#ionic-relaxation","children":[{"level":3,"title":"EDIFFG","slug":"ediffg","link":"#ediffg","children":[]},{"level":3,"title":"NSW","slug":"nsw","link":"#nsw","children":[]},{"level":3,"title":"IBRION","slug":"ibrion","link":"#ibrion","children":[]},{"level":3,"title":"ISIF","slug":"isif","link":"#isif","children":[]},{"level":3,"title":"ISYM","slug":"isym","link":"#isym","children":[]},{"level":3,"title":"POTIM","slug":"potim","link":"#potim","children":[]}]},{"level":2,"title":"DOS related values","slug":"dos-related-values","link":"#dos-related-values","children":[{"level":3,"title":"ISMEAR","slug":"ismear","link":"#ismear","children":[]},{"level":3,"title":"SIGMA","slug":"sigma","link":"#sigma","children":[]}]},{"level":2,"title":"DFT+U","slug":"dft-u","link":"#dft-u","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":5}]},"readingTime":{"minutes":7.83,"words":2349},"filePathRelative":"dft-learning/05.VASP/01.VASP输入输出文件/02.vasp-input-files-INCAR.md","localizedDate":"2020年11月22日","excerpt":"

    INCAR 中的常用标签

    \\n

    整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。

    \\n

    标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔;

    \\n

    与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.

    \\n

    几种必要的数据类型(仅是为了方便我理解,这个并不用会):

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-bWnBlUw3.js b/assets/index.html-bWnBlUw3.js new file mode 100644 index 00000000..91dd7732 --- /dev/null +++ b/assets/index.html-bWnBlUw3.js @@ -0,0 +1 @@ +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as n,c as i,a,b as e,e as d,d as s}from"./app-Mf7X6hWu.js";const c={},h=s('

    VASP 的输出文件

    基本的输出文件:OUTCAR、OSZICAR、stdout;

    OUTCAR

    todo

    OSZICAR

    收敛速度与当前步的信息。

    其他

    LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。

    官网文档

    ',9),p={href:"https://www.vasp.at/wiki/index.php/Category",target:"_blank",rel:"noopener noreferrer"};function l(_,u){const t=o("ExternalLinkIcon");return n(),i("div",null,[h,a("p",null,[e("[Category: Output_Files - vaspwiki]("),a("a",p,[e("https://www.vasp.at/wiki/index.php/Category"),d(t)]),e(": Output_Files)")])])}const k=r(c,[["render",l],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-bk_D9tT2.js b/assets/index.html-bk_D9tT2.js new file mode 100644 index 00000000..baa9c331 --- /dev/null +++ b/assets/index.html-bk_D9tT2.js @@ -0,0 +1,5 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as p,c as i,a as e,b as n,e as s,d as o}from"./app-Mf7X6hWu.js";const l={},c=e("h1",{id:"pip-换源",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pip-换源","aria-hidden":"true"},"#"),n(" pip 换源")],-1),d=e("h2",{id:"国内源",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#国内源","aria-hidden":"true"},"#"),n(" 国内源")],-1),u={href:"https://so.csdn.net/so/search?q=ubuntu&spm=1001.2101.3001.7020",target:"_blank",rel:"noopener noreferrer"},h={href:"https://pypi.tuna.tsinghua.edu.cn/simple",target:"_blank",rel:"noopener noreferrer"},m={href:"http://mirrors.aliyun.com/pypi/simple/",target:"_blank",rel:"noopener noreferrer"},_={href:"https://pypi.mirrors.ustc.edu.cn/simple/",target:"_blank",rel:"noopener noreferrer"},f={href:"http://pypi.hustunique.com/",target:"_blank",rel:"noopener noreferrer"},k={href:"http://pypi.sdutlinux.org/",target:"_blank",rel:"noopener noreferrer"},b={href:"http://pypi.douban.com/simple/",target:"_blank",rel:"noopener noreferrer"},g={href:"http://npm.taobao.org/mirrors/python/",target:"_blank",rel:"noopener noreferrer"},y=o(`

    临时使用:

    可以在使用 pip 的时候加参数 -i <https://pypi.tuna.tsinghua.edu.cn/simple>

    例如:pip install pyspider -i <https://pypi.tuna.tsinghua.edu.cn/simple>,这样就会从清华这边的镜像去安装 pyspider 库。

    永久修改,一劳永逸:

    Linux 下,修改 ~/.pip/pip.conf

    [global]  
    +index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    +[install]  
    +trusted-host=mirrors.aliyun.com  
    +

    windows 下,直接在用户目录中创建一个 pip 目录,如:C:\\Users\\xx\\pip,新建文件 pip.ini。内容同上。

    `,7);function v(x,N){const t=r("ExternalLinkIcon");return p(),i("div",null,[c,d,e("p",null,[n("新版 "),e("a",u,[n("ubuntu"),s(t)]),n(" 要求使用 https 源,要注意。")]),e("ul",null,[e("li",null,[n("清华:"),e("a",h,[n("https://pypi.tuna.tsinghua.edu.cn/simple"),s(t)])]),e("li",null,[n("阿里云:"),e("a",m,[n("http://mirrors.aliyun.com/pypi/simple/"),s(t)])]),e("li",null,[n("中国科技大学 "),e("a",_,[n("https://pypi.mirrors.ustc.edu.cn/simple/"),s(t)])]),e("li",null,[n("华中理工大学:"),e("a",f,[n("http://pypi.hustunique.com/"),s(t)])]),e("li",null,[n("山东理工大学:"),e("a",k,[n("http://pypi.sdutlinux.org/"),s(t)])]),e("li",null,[n("豆瓣:"),e("a",b,[n("http://pypi.douban.com/simple/"),s(t)])]),e("li",null,[n("淘宝:"),e("a",g,[n("http://npm.taobao.org/mirrors/python/"),s(t)])])]),y])}const B=a(l,[["render",v],["__file","index.html.vue"]]);export{B as default}; diff --git a/assets/index.html-bsO9ILsM.js b/assets/index.html-bsO9ILsM.js new file mode 100644 index 00000000..56ad7edc --- /dev/null +++ b/assets/index.html-bsO9ILsM.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as r,a as e,b as a}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"dimer-方法搜索过渡态",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dimer-方法搜索过渡态","aria-hidden":"true"},"#"),a(" Dimer 方法搜索过渡态")],-1),s=e("blockquote",null,[e("p",null,"Todo")],-1),d=[n,s];function i(_,l){return t(),r("div",null,d)}const f=o(c,[["render",i],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-cP4NO3ju.js b/assets/index.html-cP4NO3ju.js new file mode 100644 index 00000000..0be21bf8 --- /dev/null +++ b/assets/index.html-cP4NO3ju.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-744d024e","path":"/tag/","title":"标签","lang":"zh-CN","frontmatter":{"title":"标签","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","key":"tag"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/tag/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"标签"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"标签\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-cXU7djVD.js b/assets/index.html-cXU7djVD.js new file mode 100644 index 00000000..f2e047b0 --- /dev/null +++ b/assets/index.html-cXU7djVD.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-458c0b5b","path":"/dft-learning/05.VASP/","title":"05. V A S P","lang":"zh-CN","frontmatter":{"title":"05. V A S P","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/05.VASP/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"05. V A S P"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"05. V A S P\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-cogQzq1C.js b/assets/index.html-cogQzq1C.js new file mode 100644 index 00000000..78691774 --- /dev/null +++ b/assets/index.html-cogQzq1C.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as c,c as i,a as e,b as o,e as r}from"./app-Mf7X6hWu.js";const s={},l=e("h1",{id:"office-安装",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#office-安装","aria-hidden":"true"},"#"),o(" Office 安装")],-1),d=e("p",null,"使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。",-1),f=e("p",null,"下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。",-1),_=e("h2",{id:"otp-下载",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#otp-下载","aria-hidden":"true"},"#"),o(" OTP 下载")],-1),h={href:"https://otp.landian.vip/zh-cn/download.html",target:"_blank",rel:"noopener noreferrer"},p=e("p",null,"访问上述链接下载OTP。如果不知道下载哪一个,就无脑选“包含框架(7z自解压缩包)”。",-1);function u(m,x){const n=a("ExternalLinkIcon");return c(),i("div",null,[l,d,f,_,e("p",null,[e("a",h,[o("下载 | Office Tool Plus 官方网站 (landian.vip)"),r(n)])]),p])}const P=t(s,[["render",u],["__file","index.html.vue"]]);export{P as default}; diff --git a/assets/index.html-deE-7P-H.js b/assets/index.html-deE-7P-H.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-deE-7P-H.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-dwwKck5c.js b/assets/index.html-dwwKck5c.js new file mode 100644 index 00000000..2f65d3ad --- /dev/null +++ b/assets/index.html-dwwKck5c.js @@ -0,0 +1 @@ +const n=JSON.parse(`{"key":"v-ec98fe74","path":"/code/linux/bashrc/","title":"19.linux-bashrc-VS-bash_profile","lang":"zh-CN","frontmatter":{"title":"19.linux-bashrc-VS-bash_profile","date":"2020-11-03T14:31:00.000Z","updated":"2022-10-12T21:50:50.000Z","permalink":"/code/linux/bashrc/","category":["Linux"],"redirectFrom":"/dft-learning/pages/98122b/","description":"19.linux-bashrc-VS-bash_profile 环境变量 自定义命令提示符 通过修改 PS1 变量实现: \\\\u 显示当前用户账号 \\\\v BASH的版本信息 \\\\H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound \\\\h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun \\\\W 只显示当前路径最后一个目录 \\\\w 显示当前绝对路径(当前用户目录会以 ~代替) \\\\t 显示时间为24小时格式,如:14:19:34 \\\\T 显示时间为12小时格式,如:02:19:34 \\\\A 显示时间为24小时格式但是不带秒,如:14:19 \\\\d 代表日期,格式为weekday month date,例如:\\"Mon Aug1\\" $PWD 显示当前全路径 # 显示命令行提示符号,一般使用'$'或者'#' sudo echo \\"export PS1='[\\\\u@\\\\h \\\\w]# '\\" >> /etc/profile # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\\\\w","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/bashrc/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"19.linux-bashrc-VS-bash_profile"}],["meta",{"property":"og:description","content":"19.linux-bashrc-VS-bash_profile 环境变量 自定义命令提示符 通过修改 PS1 变量实现: \\\\u 显示当前用户账号 \\\\v BASH的版本信息 \\\\H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound \\\\h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun \\\\W 只显示当前路径最后一个目录 \\\\w 显示当前绝对路径(当前用户目录会以 ~代替) \\\\t 显示时间为24小时格式,如:14:19:34 \\\\T 显示时间为12小时格式,如:02:19:34 \\\\A 显示时间为24小时格式但是不带秒,如:14:19 \\\\d 代表日期,格式为weekday month date,例如:\\"Mon Aug1\\" $PWD 显示当前全路径 # 显示命令行提示符号,一般使用'$'或者'#' sudo echo \\"export PS1='[\\\\u@\\\\h \\\\w]# '\\" >> /etc/profile # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\\\\w"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-10-31T13:51:54.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-03T14:31:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-10-31T13:51:54.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"19.linux-bashrc-VS-bash_profile\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-03T14:31:00.000Z\\",\\"dateModified\\":\\"2022-10-31T13:51:54.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"环境变量","slug":"环境变量","link":"#环境变量","children":[{"level":3,"title":"自定义命令提示符","slug":"自定义命令提示符","link":"#自定义命令提示符","children":[]}]},{"level":2,"title":"linux 中 . bashrc 与 . bash_profile 的区别","slug":"linux-中-bashrc-与-bash-profile-的区别","link":"#linux-中-bashrc-与-bash-profile-的区别","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1667224314000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":2}]},"readingTime":{"minutes":2.67,"words":801},"filePathRelative":"code/linux/19.linux-bashrc-VS-bash_profile.md","localizedDate":"2020年11月3日","excerpt":"

    19.linux-bashrc-VS-bash_profile

    \\n

    环境变量

    \\n

    自定义命令提示符

    \\n

    通过修改 PS1 变量实现:

    \\n
     \\\\u 显示当前用户账号\\n \\\\v BASH的版本信息\\n \\n \\\\H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound\\n \\\\h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun\\n \\n \\\\W 只显示当前路径最后一个目录\\n \\\\w 显示当前绝对路径(当前用户目录会以 ~代替)\\n \\n \\\\t 显示时间为24小时格式,如:14:19:34\\n \\\\T 显示时间为12小时格式,如:02:19:34\\n \\\\A 显示时间为24小时格式但是不带秒,如:14:19\\n \\\\d 代表日期,格式为weekday month date,例如:\\"Mon Aug1\\"\\n \\n $PWD 显示当前全路径\\n # 显示命令行提示符号,一般使用'$'或者'#'\\n sudo echo \\"export PS1='[\\\\u@\\\\h \\\\w]# '\\" >> /etc/profile\\n # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\\\\w\\n
    ","autoDesc":true}`);export{n as data}; diff --git a/assets/index.html-eCEeWA28.js b/assets/index.html-eCEeWA28.js new file mode 100644 index 00000000..1155d88a --- /dev/null +++ b/assets/index.html-eCEeWA28.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3ad9eb9e","path":"/dft-learning/pages/e8ba48/","title":"编译 VASP with VTST","lang":"zh-CN","frontmatter":{"title":"编译 VASP with VTST","date":"2022-02-26T20:34:11.000Z","permalink":"/dft-learning/pages/e8ba48/","category":["Install","安装"],"updated":"2022-02-27T10:45:49.000Z","description":"编译 VASP with VTST 准备源码 VASP 源码目录结构 $ more README vasp.X.X.X (root directory) | --------------------------------------- | | | | arch bin build src | ---------- | | lib CUDA","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/e8ba48/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"编译 VASP with VTST"}],["meta",{"property":"og:description","content":"编译 VASP with VTST 准备源码 VASP 源码目录结构 $ more README vasp.X.X.X (root directory) | --------------------------------------- | | | | arch bin build src | ---------- | | lib CUDA"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-02-26T20:34:11.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"编译 VASP with VTST\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-02-26T20:34:11.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"准备源码","slug":"准备源码","link":"#准备源码","children":[{"level":3,"title":"VASP 源码目录结构","slug":"vasp-源码目录结构","link":"#vasp-源码目录结构","children":[]},{"level":3,"title":"VTSTCode","slug":"vtstcode","link":"#vtstcode","children":[]}]},{"level":2,"title":"准备编译环境","slug":"准备编译环境","link":"#准备编译环境","children":[{"level":3,"title":"检查编译环境","slug":"检查编译环境","link":"#检查编译环境","children":[]},{"level":3,"title":"配置编译环境","slug":"配置编译环境","link":"#配置编译环境","children":[]},{"level":3,"title":"修改 makefile.include 文件","slug":"修改-makefile-include-文件","link":"#修改-makefile-include-文件","children":[]}]},{"level":2,"title":"安装","slug":"安装","link":"#安装","children":[{"level":3,"title":"编译","slug":"编译","link":"#编译","children":[]},{"level":3,"title":"添加环境变量","slug":"添加环境变量","link":"#添加环境变量","children":[]}]},{"level":2,"title":"错误解决","slug":"错误解决","link":"#错误解决","children":[]},{"level":2,"title":"参考文献","slug":"参考文献","link":"#参考文献","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":3.21,"words":962},"filePathRelative":"dft-learning/02.Install/34.linux-install-vtst-vasp.md","localizedDate":"2022年2月27日","excerpt":"

    编译 VASP with VTST

    \\n

    准备源码

    \\n

    VASP 源码目录结构

    \\n
    $ more README\\n           vasp.X.X.X (root directory)\\n                      |\\n   ---------------------------------------\\n  |              |          |             |\\n arch           bin       build          src\\n                                          |\\n                                     ----------\\n                                    |          |\\n                                   lib       CUDA\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-eqgtE2cb.js b/assets/index.html-eqgtE2cb.js new file mode 100644 index 00000000..f50f33b6 --- /dev/null +++ b/assets/index.html-eqgtE2cb.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-dfd7264e","path":"/code/linux/vim/","title":"vi / vim 编辑器","lang":"zh-CN","frontmatter":{"title":"vi / vim 编辑器","date":"2020-10-31T18:00:00.000Z","updated":"2022-09-16T18:11:48.000Z","permalink":"/code/linux/vim/","category":["Linux"],"redirectFrom":"/dft-learning/pages/bd4546/","description":"vi / vim 编辑器 vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程 吧。 三种模式 img 基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/vim/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"vi / vim 编辑器"}],["meta",{"property":"og:description","content":"vi / vim 编辑器 vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程 吧。 三种模式 img 基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"vi / vim 编辑器"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T18:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"vi / vim 编辑器\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-10-31T18:00:00.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"三种模式","slug":"三种模式","link":"#三种模式","children":[{"level":3,"title":"命令模式","slug":"命令模式","link":"#命令模式","children":[]},{"level":3,"title":"输入模式","slug":"输入模式","link":"#输入模式","children":[]},{"level":3,"title":"底线命令模式","slug":"底线命令模式","link":"#底线命令模式","children":[]}]},{"level":2,"title":"命令","slug":"命令","link":"#命令","children":[{"level":3,"title":"命令模式","slug":"命令模式-1","link":"#命令模式-1","children":[]},{"level":3,"title":"底线命令","slug":"底线命令","link":"#底线命令","children":[]},{"level":3,"title":"第二部分:一般模式切换到编辑模式的可用的按钮说明","slug":"第二部分-一般模式切换到编辑模式的可用的按钮说明","link":"#第二部分-一般模式切换到编辑模式的可用的按钮说明","children":[]},{"level":3,"title":"第三部分:一般模式切换到指令行模式的可用的按钮说明","slug":"第三部分-一般模式切换到指令行模式的可用的按钮说明","link":"#第三部分-一般模式切换到指令行模式的可用的按钮说明","children":[]}]}],"git":{"createdTime":1663326935000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":2}]},"readingTime":{"minutes":8.34,"words":2501},"filePathRelative":"code/linux/16.linux-vi.md","localizedDate":"2020年11月1日","excerpt":"

    vi / vim 编辑器

    \\n

    vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程 吧。

    \\n

    三种模式

    \\n
    img
    \\n

    基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-fLzS8F4B.js b/assets/index.html-fLzS8F4B.js new file mode 100644 index 00000000..bd7a079f --- /dev/null +++ b/assets/index.html-fLzS8F4B.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-146a1089","path":"/code/","title":"代码笔记","lang":"zh-CN","frontmatter":{"title":"代码笔记","date":"2022-09-16T18:46:25.000Z","updated":"2022-09-16T18:49:44.000Z","permalink":"/code/","article":false,"index":false,"order":0,"timeline":false,"description":"代码笔记 这里存放一些与代码和编程有关的笔记。 目录 Linux Git Python JavaScript Vue.js PHP 中文技术文档写作规范","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"代码笔记"}],["meta",{"property":"og:description","content":"代码笔记 这里存放一些与代码和编程有关的笔记。 目录 Linux Git Python JavaScript Vue.js PHP 中文技术文档写作规范"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T18:46:25.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"代码笔记\\",\\"description\\":\\"代码笔记 这里存放一些与代码和编程有关的笔记。 目录 Linux Git Python JavaScript Vue.js PHP 中文技术文档写作规范\\"}"]]},"headers":[{"level":2,"title":"目录","slug":"目录","link":"#目录","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.24,"words":72},"filePathRelative":"code/README.md","localizedDate":"2022年9月17日","excerpt":"

    代码笔记

    \\n

    这里存放一些与代码和编程有关的笔记。

    \\n

    目录

    \\n\\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-fNphsioW.js b/assets/index.html-fNphsioW.js new file mode 100644 index 00000000..1e9b90b8 --- /dev/null +++ b/assets/index.html-fNphsioW.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-218ea978","path":"/code/linux/commend/","title":"Linux 常用命令","lang":"zh-CN","frontmatter":{"title":"Linux 常用命令","date":"2020-10-31T18:00:00.000Z","updated":"2022-09-16T18:38:34.000Z","permalink":"/code/linux/commend/","category":["Linux"],"redirectFrom":"/dft-learning/pages/1c41bb/","description":"Linux 常用命令 命令 说明 cd 切换目录 ls 列出文件和目录 ll 同上 mkdir 新建文件夹 cp 复制 mv 移动 rm 删除文件 rmdir 删除目录 pwd 当前目录 cat 查看文件全文 tail 预览文件后几行 tar 压缩/解压缩","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/commend/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux 常用命令"}],["meta",{"property":"og:description","content":"Linux 常用命令 命令 说明 cd 切换目录 ls 列出文件和目录 ll 同上 mkdir 新建文件夹 cp 复制 mv 移动 rm 删除文件 rmdir 删除目录 pwd 当前目录 cat 查看文件全文 tail 预览文件后几行 tar 压缩/解压缩"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T18:00:00.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Linux 常用命令\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-10-31T18:00:00.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"cd:Change Directory","slug":"cd-change-directory","link":"#cd-change-directory","children":[]},{"level":2,"title":"ls 与 ll:list","slug":"ls-与-ll-list","link":"#ls-与-ll-list","children":[]},{"level":2,"title":"mkdir:Make Directory","slug":"mkdir-make-directory","link":"#mkdir-make-directory","children":[]},{"level":2,"title":"cp:Copy","slug":"cp-copy","link":"#cp-copy","children":[]},{"level":2,"title":"mv:Move","slug":"mv-move","link":"#mv-move","children":[]},{"level":2,"title":"rm:Remove","slug":"rm-remove","link":"#rm-remove","children":[]},{"level":2,"title":"rmdir:Remove Directory","slug":"rmdir-remove-directory","link":"#rmdir-remove-directory","children":[]},{"level":2,"title":"pwd:Print Working Directory","slug":"pwd-print-working-directory","link":"#pwd-print-working-directory","children":[]},{"level":2,"title":"cat:concatenate and print files","slug":"cat-concatenate-and-print-files","link":"#cat-concatenate-and-print-files","children":[]},{"level":2,"title":"tar","slug":"tar","link":"#tar","children":[]},{"level":2,"title":"grep","slug":"grep","link":"#grep","children":[]},{"level":2,"title":"chown","slug":"chown","link":"#chown","children":[]},{"level":2,"title":"chmod","slug":"chmod","link":"#chmod","children":[]},{"level":2,"title":"find","slug":"find","link":"#find","children":[]},{"level":2,"title":"ps","slug":"ps","link":"#ps","children":[]},{"level":2,"title":"kill","slug":"kill","link":"#kill","children":[]},{"level":2,"title":"killall","slug":"killall","link":"#killall","children":[]},{"level":2,"title":"file","slug":"file","link":"#file","children":[]},{"level":2,"title":"chgrp","slug":"chgrp","link":"#chgrp","children":[]},{"level":2,"title":"gcc","slug":"gcc","link":"#gcc","children":[]},{"level":2,"title":"time","slug":"time","link":"#time","children":[]}],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":13.43,"words":4028},"filePathRelative":"code/linux/15.linux-command.md","localizedDate":"2020年11月1日","excerpt":"

    Linux 常用命令

    \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
    命令说明
    cd切换目录
    ls列出文件和目录
    ll同上
    mkdir新建文件夹
    cp复制
    mv移动
    rm删除文件
    rmdir删除目录
    pwd当前目录
    cat查看文件全文
    tail预览文件后几行
    tar压缩/解压缩
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-fVW4eUKk.js b/assets/index.html-fVW4eUKk.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-fVW4eUKk.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-feT6lC9f.js b/assets/index.html-feT6lC9f.js new file mode 100644 index 00000000..e716c99f --- /dev/null +++ b/assets/index.html-feT6lC9f.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,a as e,b as r}from"./app-Mf7X6hWu.js";const c={},n=e("h1",{id:"分子动力学",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#分子动力学","aria-hidden":"true"},"#"),r(" 分子动力学")],-1),s=[n];function _(d,i){return a(),o("div",null,s)}const f=t(c,[["render",_],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-g9TD10bH.js b/assets/index.html-g9TD10bH.js new file mode 100644 index 00000000..9b7d1cc9 --- /dev/null +++ b/assets/index.html-g9TD10bH.js @@ -0,0 +1 @@ +const s=JSON.parse('{"key":"v-27805d44","path":"/code/citation-style-language/","title":"CSL 中文文档","lang":"zh-CN","frontmatter":{"title":"CSL 中文文档","date":"2022-08-01T16:23:04.000Z","updated":"2022-09-16T21:50:04.000Z","description":"CSL 中文文档 [!warning] WORK IN PROGRESS 此页面正在施工中。 CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。 Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。LaTeX\\\\LaTeXLATE​X 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 LaTeX\\\\LaTeXLATE​X 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 LaTeX\\\\LaTeXLATE​X 同样漂亮的引用和参考文献目录。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"CSL 中文文档"}],["meta",{"property":"og:description","content":"CSL 中文文档 [!warning] WORK IN PROGRESS 此页面正在施工中。 CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。 Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。LaTeX\\\\LaTeXLATE​X 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 LaTeX\\\\LaTeXLATE​X 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 LaTeX\\\\LaTeXLATE​X 同样漂亮的引用和参考文献目录。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:23:04.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"CSL 中文文档\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:23:04.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.95,"words":585},"filePathRelative":"code/citation-style-language/README.md","localizedDate":"2022年8月2日","excerpt":"

    CSL 中文文档

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。

    \\n

    Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。LaTeX\\\\LaTeXLATEX 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 LaTeX\\\\LaTeXLATEX 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 LaTeX\\\\LaTeXLATEX 同样漂亮的引用和参考文献目录。

    ","autoDesc":true}');export{s as data}; diff --git a/assets/index.html-gMA9GJF5.js b/assets/index.html-gMA9GJF5.js new file mode 100644 index 00000000..665524f8 --- /dev/null +++ b/assets/index.html-gMA9GJF5.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-759eeeca","path":"/characterization/","title":"材料表征","lang":"zh-CN","frontmatter":{"title":"材料表征","date":"2022-09-12T17:02:02.000Z","updated":"2022-09-14T14:14:39.000Z","permalink":"/characterization/","article":false,"index":false,"timeline":false,"description":"材料表征","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/characterization/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"材料表征"}],["meta",{"property":"og:description","content":"材料表征"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-14T15:08:45.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T17:02:02.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-14T15:08:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"材料表征\\",\\"description\\":\\"材料表征\\"}"]]},"headers":[],"git":{"createdTime":1663168125000,"updatedTime":1663168125000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.1,"words":31},"filePathRelative":"characterization/README.md","localizedDate":"2022年9月13日","excerpt":"

    材料表征

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-gg9bzuVT.js b/assets/index.html-gg9bzuVT.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-gg9bzuVT.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-h2vn4fFN.js b/assets/index.html-h2vn4fFN.js new file mode 100644 index 00000000..97a87403 --- /dev/null +++ b/assets/index.html-h2vn4fFN.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-7e76b8f8","path":"/dft-learning/pages/vasp-error/","title":"故障排除","lang":"zh-CN","frontmatter":{"title":"故障排除","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-16T18:41:44.000Z","permalink":"/dft-learning/pages/vasp-error/","article":false,"index":false,"order":0,"timeline":false,"description":"故障排除","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-error/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"故障排除"}],["meta",{"property":"og:description","content":"故障排除"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"故障排除\\",\\"description\\":\\"故障排除\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.12,"words":35},"filePathRelative":"dft-learning/09.Others/README.md","localizedDate":"2022年9月13日","excerpt":"

    故障排除

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-i2ZTRu49.js b/assets/index.html-i2ZTRu49.js new file mode 100644 index 00000000..35f3db60 --- /dev/null +++ b/assets/index.html-i2ZTRu49.js @@ -0,0 +1,17 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as d,c,a as e,b as n,e as s,w as r,d as l}from"./app-Mf7X6hWu.js";const p="/assets/image-03.vasp-chg-split-20221119172440345-SkwFM3wD.png",m="/assets/image-03.vasp-chg-split-20221119172440366-AsYVt0Sc.png",g="/assets/image-03.vasp-chg-split-20221119172440404-xl_8rjts.png",u={},v=e("h1",{id:"自旋电荷密度",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#自旋电荷密度","aria-hidden":"true"},"#"),n(" 自旋电荷密度")],-1),h=e("p",null,"本页以 O2 的自选电荷密度为例。",-1),_=e("h2",{id:"步骤",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#步骤","aria-hidden":"true"},"#"),n(" 步骤")],-1),b=l(`

    2-scf/ 文件夹中进行。

    有两种方法获得其自旋电荷密度:

    方法 1:通过 VTST 脚本

    # Usage
    +$ chgsplit.pl <CHGCAR>
    +
    +# This example
    +[zjb@op 2-scf]$ chgsplit.pl CHGCAR
    +Atoms in file: 2
    +Points in total charge density: 1200000
    +Points in magnetization density: 1200000
    +

    得到 CHGCAR_totCHGCAR_mag 两个文件。下载,在 VTSTA 中查看:

    CHGCAR_mag
    CHGCAR_mag
    CHGCAR_tot
    CHGCAR_tot

    方法 2:通过 VASPKIT

    vaspkit31) Charge & Spin Density312) Spin Density ,生成了 SPIN.vasp,下载,在 VESTA 中查看。

    [zjb@op 5-chg-split]$ vaspkit
    +
    + ------------>>
    +312
    +  -->> (01) Reading Structural Parameters from CHGCAR File...
    +  -->> (02) Reading Charge Density From CHGCAR File...
    +  -->> (03) Reading Spin Density From CHGCAR File...
    +  -->> (04) Written SPIN.vasp File!
    +
    SPIN.vasp
    SPIN.vasp

    参考

    ',12),f={href:"http://muchong.com/t-10821450-1",target:"_blank",rel:"noopener noreferrer"};function k(C,x){const i=a("RouterLink"),t=a("ExternalLinkIcon");return d(),c("div",null,[v,h,_,e("p",null,[n("本页操作在完成 "),s(i,{to:"/dft-learning/05.VASP/02.%E4%BC%98%E5%8C%96/02.vasp-opt.html"},{default:r(()=>[n("O2 结构优化、自洽、非自洽")]),_:1}),n(" 中结构优化、静电自洽后进行。")]),b,e("ul",null,[e("li",null,[e("a",f,[n("如何画自旋电荷密度图 | 小木虫"),s(t)])])])])}const S=o(u,[["render",k],["__file","index.html.vue"]]);export{S as default}; diff --git a/assets/index.html-iCVcKNm9.js b/assets/index.html-iCVcKNm9.js new file mode 100644 index 00000000..09685751 --- /dev/null +++ b/assets/index.html-iCVcKNm9.js @@ -0,0 +1,83 @@ +import{_ as r}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as e,o as p,c,a as s,b as l,e as a,w as t}from"./app-Mf7X6hWu.js";const h={},o=s("h1",{id:"表面能计算",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#表面能计算","aria-hidden":"true"},"#"),l(" 表面能计算")],-1),u=s("h2",{id:"定义",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#定义","aria-hidden":"true"},"#"),l(" 定义")],-1),g=s("p",null,"表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。",-1),d={href:"https://en.wikipedia.org/wiki/Surface_energy",target:"_blank",rel:"noopener noreferrer"},y=s("h2",{id:"怎么算",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#怎么算","aria-hidden":"true"},"#"),l(" 怎么算")],-1),v=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("msup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"="),s("mtext",null,"刚切好的表面的能量"),s("mo",null,"−"),s("mtext",null,"优化后的能量")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("msup",null,[s("mi",null,"σ"),s("mrow",null,[s("mi",null,"u"),s("mi",null,"n"),s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"="),s("mn",null,"1"),s("mi",{mathvariant:"normal"},"/"),s("mn",null,"2"),s("mo",{stretchy:"false"},"("),s("msubsup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"r"),s("mi",null,"f")]),s("mrow",null,[s("mi",null,"u"),s("mi",null,"n"),s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"N"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"o"),s("mi",null,"m"),s("mi",null,"s")])]),s("mo",null,"⋅"),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"b"),s("mi",null,"u"),s("mi",null,"l"),s("mi",null,"k")])]),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"σ"),s("mo",null,"="),s("msup",null,[s("mi",null,"σ"),s("mrow",null,[s("mi",null,"u"),s("mi",null,"n"),s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"+"),s("msup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])])])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} & E^{rel}=\\text{刚切好的表面的能量}-\\text{优化后的能量} \\\\ & \\sigma^{unrel}=1/2(E_{surf}^{unrel}-N_{atoms} \\cdot E_{bulk}) \\\\ & \\sigma = \\sigma^{unrel}+E^{rel} \\\\ \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"4.7004em","vertical-align":"-2.1002em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.6002em"}},[s("span",{style:{top:"-4.6002em"}},[s("span",{class:"pstrut",style:{height:"2.8991em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-3.0411em"}},[s("span",{class:"pstrut",style:{height:"2.8991em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-1.4589em"}},[s("span",{class:"pstrut",style:{height:"2.8991em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.1002em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.6002em"}},[s("span",{style:{top:"-4.7011em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord text"},[s("span",{class:"mord cjk_fallback"},"刚切好的表面的能量")]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord text"},[s("span",{class:"mord cjk_fallback"},"优化后的能量")])])]),s("span",{style:{top:"-3.142em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"n"),s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"1/2"),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-2.453em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"r"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.10764em"}},"f")])])]),s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"n"),s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3831em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2806em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.109em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"t"),s("span",{class:"mord mathnormal mtight"},"o"),s("span",{class:"mord mathnormal mtight"},"m"),s("span",{class:"mord mathnormal mtight"},"s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"⋅"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"b"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03148em"}},"k")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-1.5598em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"n"),s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.1002em"}},[s("span")])])])])])])])])])])],-1),b=s("p",null,[l("其中,"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])])]),s("annotation",{encoding:"application/x-tex"},"E^{rel}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8491em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8491em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])])])])]),l(" is Relaxation energy,是弛豫过程中的能量变化;"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"σ")]),s("annotation",{encoding:"application/x-tex"},"\\sigma")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.4306em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ")])])]),l("表示表面能;"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"r"),s("mi",null,"f")])])]),s("annotation",{encoding:"application/x-tex"},"E_{surf}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.9694em","vertical-align":"-0.2861em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"r"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.10764em"}},"f")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])])]),l("是刚切好的 slab 的能量,可以直接算个单点,也可以取优化过程第一个离子步的能量(如果第一个离子步收敛);"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"N"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"o"),s("mi",null,"m"),s("mi",null,"s")])])]),s("annotation",{encoding:"application/x-tex"},"N_{atoms}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2806em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.109em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"t"),s("span",{class:"mord mathnormal mtight"},"o"),s("span",{class:"mord mathnormal mtight"},"m"),s("span",{class:"mord mathnormal mtight"},"s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),l("是 slab 中的原子数目;"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"b"),s("mi",null,"u"),s("mi",null,"l"),s("mi",null,"k")])])]),s("annotation",{encoding:"application/x-tex"},"E_{bulk}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"b"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03148em"}},"k")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),l("是 bulk 结构中单个原子的能量,注意不是体相的能量而是体相中单个原子的能量,即体相能量除以原子数目。(ISIF=3 结束后 CONTCAR-->POSCAR,做单点计算,得到晶胞能量,除以晶胞中原子数目)。")],-1),E={href:"http://cms.mpi.univie.ac.at/wiki/index.php/Ni_100_surface_relaxation",target:"_blank",rel:"noopener noreferrer"},x=s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"N"),s("mi",null,"i"),s("mtext",null,"("),s("mn",null,"100"),s("mtext",null,")")]),s("annotation",{encoding:"application/x-tex"},"Ni(100)")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.6833em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mord cjk_fallback"},"("),s("span",{class:"mord"},"100"),s("span",{class:"mord cjk_fallback"},")")])])],-1),w=s("p",null,"bulk 单点:",-1),_=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,`general: + SYSTEM = fcc Ni + ISTART = 0 ; ICHARG=2 + ENCUT = 270 + ISMEAR = -5 ; SIGMA = 0.2 + EDIFF = 1E-6 +spin: + ISPIN=2 + MAGMOM = 1 + + LWAVE = .F. + LCHARG = .F. +# NSW默认0,此时IBRION=-1 +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),f=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,`fcc: + 3.53 + 0.5 0.5 0.0 + 0.0 0.5 0.5 + 0.5 0.0 0.5 + 1 +cartesian +0 0 0 +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),k=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,`K-Points + 0 +Monkhorst Pack + 21 21 21 + 0 0 0 +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),z=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,` N E dE d eps ncg rms rms(c) +DAV: 1 0.169112264825E+02 0.16911E+02 -0.34405E+03 15420 0.692E+02 +DAV: 2 -0.607395026631E+01 -0.22985E+02 -0.21701E+02 14616 0.118E+02 +DAV: 3 -0.643924885939E+01 -0.36530E+00 -0.36449E+00 15692 0.166E+01 +DAV: 4 -0.643964768764E+01 -0.39883E-03 -0.39871E-03 15212 0.517E-01 +DAV: 5 -0.643964813795E+01 -0.45031E-06 -0.44967E-06 15664 0.175E-02 0.796E+00 +DAV: 6 -0.579073233687E+01 0.64892E+00 -0.13861E+01 16076 0.445E+01 0.399E+00 +DAV: 7 -0.547347892035E+01 0.31725E+00 -0.23898E+00 16048 0.169E+01 0.825E-01 +DAV: 8 -0.546239997769E+01 0.11079E-01 -0.85528E-03 16728 0.721E-01 0.393E-01 +DAV: 9 -0.545790615830E+01 0.44938E-02 -0.80401E-03 17972 0.643E-01 0.610E-02 +DAV: 10 -0.545786578895E+01 0.40369E-04 -0.34370E-05 14372 0.625E-02 0.327E-02 +DAV: 11 -0.545786783458E+01 -0.20456E-05 -0.92963E-06 15192 0.348E-02 0.163E-02 +DAV: 12 -0.545786323751E+01 0.45971E-05 -0.63291E-06 12236 0.281E-02 0.341E-03 +DAV: 13 -0.545786293739E+01 0.30012E-06 -0.20914E-07 7480 0.342E-03 + 1 F= -.54578629E+01 E0= -.54578629E+01 d E =0.000000E+00 mag= 0.6015 +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),M=s("p",null,[l("得到,"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"b"),s("mi",null,"u"),s("mi",null,"l"),s("mi",null,"k")])]),s("mo",null,"="),s("mo",null,"−"),s("mi",{mathvariant:"normal"},"."),s("mn",null,"5458"),s("mi",{mathvariant:"normal"},"/"),s("mn",null,"1"),s("mo",null,"="),s("mo",null,"−"),s("mn",null,"0.5458")]),s("annotation",{encoding:"application/x-tex"},"E_{bulk}=-.5458/1=-0.5458")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"b"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03148em"}},"k")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),s("span",{class:"mord"},"−"),s("span",{class:"mord"},".5458/1"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7278em","vertical-align":"-0.0833em"}}),s("span",{class:"mord"},"−"),s("span",{class:"mord"},"0.5458")])])]),l("。")],-1),A=s("p",null,"弛豫:",-1),N=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,` general: + SYSTEM = clean Ni(100) surface + ISTART = 0; ICHARG = 2 + ENCUT = 270 + ISMEAR = 2 ; SIGMA = 0.2 + ALGO= Fast + EDIFF = 1E-6 + + spin: + ISPIN=2 + MAGMOM = 5*1 + + dynamic: + NSW = 100 + POTIM = 0.8 + IBRION = 1 +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),V=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,`fcc (100) surface + 3.53 + .50000 .50000 .00000 + -.50000 .50000 .00000 + .00000 .00000 5.00000 + 5 +Selective Dynamics +Kartesisch + .00000 .00000 .00000 F F F + .00000 .50000 .50000 F F F + .00000 .00000 1.00000 F F F + .00000 .50000 1.50000 T T T + .00000 .00000 2.00000 T T T +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),I=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,`K-Points +0 +Monkhorst-Pack +9 9 1 +0 0 0 +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),S=s("div",{class:"language-text line-numbers-mode","data-ext":"text"},[s("pre",{class:"language-text"},[s("code",null,`RMM: 32 -0.255562777489E+02 -0.57706E-06 -0.25172E-08 679 0.107E-03 + 1 F= -.25556278E+02 E0= -.25556483E+02 d E =-.255563E+02 mag= 3.0934 + + 5 F= -.25572232E+02 E0= -.25572307E+02 d E =-.598008E-04 mag= 3.0895 + BRION: g(F)= 0.910E-07 g(S)= 0.000E+00 retain N= 2 mean eig= 3.43 + eig: 5.073 1.778 + reached required accuracy - stopping structural energy minimisation +`)]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),F=s("p",null,[l("弛豫中能量变化从"),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mo",null,"−"),s("mn",null,"25.556"),s("mi",null,"e"),s("mi",null,"V")]),s("annotation",{encoding:"application/x-tex"},"-25.556 eV")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7667em","vertical-align":"-0.0833em"}}),s("span",{class:"mord"},"−"),s("span",{class:"mord"},"25.556"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V")])])]),l(" 到 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mo",null,"−"),s("mn",null,"25.572"),s("mi",null,"e"),s("mi",null,"V")]),s("annotation",{encoding:"application/x-tex"},"-25.572 eV")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7667em","vertical-align":"-0.0833em"}}),s("span",{class:"mord"},"−"),s("span",{class:"mord"},"25.572"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V")])])]),l(","),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("msup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"="),s("mo",null,"−"),s("mn",null,"16"),s("mi",null,"m"),s("mi",null,"e"),s("mi",null,"V")]),s("annotation",{encoding:"application/x-tex"},"E^{rel}=-16meV")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8491em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8491em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7667em","vertical-align":"-0.0833em"}}),s("span",{class:"mord"},"−"),s("span",{class:"mord"},"16"),s("span",{class:"mord mathnormal"},"m"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V")])])]),l(".")],-1),T=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("msup",null,[s("mi",null,"σ"),s("mrow",null,[s("mi",null,"u"),s("mi",null,"n"),s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"1"),s("mi",{mathvariant:"normal"},"/"),s("mn",null,"2"),s("mo",{stretchy:"false"},"("),s("msubsup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"r"),s("mi",null,"f")]),s("mrow",null,[s("mi",null,"u"),s("mi",null,"n"),s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"N"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"o"),s("mi",null,"m"),s("mi",null,"s")])]),s("mo",null,"⋅"),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"b"),s("mi",null,"u"),s("mi",null,"l"),s("mi",null,"k")])]),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"1"),s("mi",{mathvariant:"normal"},"/"),s("mn",null,"2"),s("mo",{stretchy:"false"},"("),s("mo",null,"−"),s("mn",null,"25.556"),s("mo",null,"−"),s("mn",null,"5"),s("mo",null,"×"),s("mo",{stretchy:"false"},"("),s("mo",null,"−"),s("mn",null,"5.458"),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"0.867"),s("mi",null,"e"),s("mi",null,"V")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mi",null,"σ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("msup",null,[s("mi",null,"σ"),s("mrow",null,[s("mi",null,"u"),s("mi",null,"n"),s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"+"),s("msup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])])])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"0.867"),s("mo",null,"−"),s("mn",null,"0.016")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"0.851"),s("mi",null,"e"),s("mi",null,"V")])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} \\sigma^{unrel}&=1/2(E_{surf}^{unrel}-N_{atoms} \\cdot E_{bulk}) \\\\ &=1/2(-25.556-5\\times(-5.458)) \\\\ &=0.867eV \\\\ \\sigma &= \\sigma^{unrel}+E^{rel} \\\\ &= 0.867-0.016\\\\&=0.851eV \\\\ \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"9.1413em","vertical-align":"-4.3207em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"4.8207em"}},[s("span",{style:{top:"-6.9216em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"n"),s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])])])]),s("span",{style:{top:"-5.3984em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-3.8984em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-2.3393em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ")])]),s("span",{style:{top:"-0.8393em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"0.6607em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"4.3207em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"4.8207em"}},[s("span",{style:{top:"-6.9216em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"1/2"),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-2.453em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"r"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.10764em"}},"f")])])]),s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"n"),s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3831em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2806em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.109em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"t"),s("span",{class:"mord mathnormal mtight"},"o"),s("span",{class:"mord mathnormal mtight"},"m"),s("span",{class:"mord mathnormal mtight"},"s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"⋅"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"b"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03148em"}},"k")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-5.3984em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"1/2"),s("span",{class:"mopen"},"("),s("span",{class:"mord"},"−"),s("span",{class:"mord"},"25.556"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"5"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"×"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mopen"},"("),s("span",{class:"mord"},"−"),s("span",{class:"mord"},"5.458"),s("span",{class:"mclose"},"))")])]),s("span",{style:{top:"-3.8984em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"0.867"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V")])]),s("span",{style:{top:"-2.3393em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight"},"n"),s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])])])]),s("span",{style:{top:"-0.8393em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"0.867"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.016")])]),s("span",{style:{top:"0.6607em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"0.851"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.22222em"}},"V")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"4.3207em"}},[s("span")])])])])])])])])])])],-1),L={href:"https://www.nersc.gov/assets/Uploads/VASP-tutorial-SurfaceScience.pdf",target:"_blank",rel:"noopener noreferrer"},R=s("p",null,"上面的是只考虑一个面优化,如果 slab 模型的上下两个面都优化,那么公式应为:",-1),D=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mi",null,"σ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mfrac",null,[s("mn",null,"1"),s("mrow",null,[s("mn",null,"2"),s("mi",null,"A")])]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"r"),s("mi",null,"f")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"N"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"o"),s("mi",null,"m"),s("mi",null,"s")])]),s("mo",null,"×"),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"b"),s("mi",null,"u"),s("mi",null,"l"),s("mi",null,"k")])]),s("mo",null,"+"),s("msup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",{stretchy:"false"},")")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mfrac",null,[s("mn",null,"1"),s("mrow",null,[s("mn",null,"2"),s("mi",null,"A")])]),s("mo",{stretchy:"false"},"("),s("msubsup",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"s"),s("mi",null,"u"),s("mi",null,"r"),s("mi",null,"f")]),s("mrow",null,[s("mi",null,"r"),s("mi",null,"e"),s("mi",null,"l")])]),s("mo",null,"−"),s("msub",null,[s("mi",null,"N"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"o"),s("mi",null,"m"),s("mi",null,"s")])]),s("mo",null,"×"),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"b"),s("mi",null,"u"),s("mi",null,"l"),s("mi",null,"k")])]),s("mo",{stretchy:"false"},")")])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} \\sigma &=\\frac{1}{2A}(E_{surf}-N_{atoms}\\times E_{bulk}+E^{rel}) \\\\ &=\\frac{1}{2A}(E_{surf}^{rel} -N_{atoms}\\times E_{bulk}) \\\\ \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"4.6149em","vertical-align":"-2.0574em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5574em"}},[s("span",{style:{top:"-4.5574em"}},[s("span",{class:"pstrut",style:{height:"3.3214em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"σ")])]),s("span",{style:{top:"-2.25em"}},[s("span",{class:"pstrut",style:{height:"3.3214em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.0574em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5574em"}},[s("span",{style:{top:"-4.5574em"}},[s("span",{class:"pstrut",style:{height:"3.3214em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mopen nulldelimiter"}),s("span",{class:"mfrac"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.3214em"}},[s("span",{style:{top:"-2.314em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"2"),s("span",{class:"mord mathnormal"},"A")])]),s("span",{style:{top:"-3.23em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"frac-line",style:{"border-bottom-width":"0.04em"}})]),s("span",{style:{top:"-3.677em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"1")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.686em"}},[s("span")])])])]),s("span",{class:"mclose nulldelimiter"})]),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"r"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.10764em"}},"f")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2806em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.109em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"t"),s("span",{class:"mord mathnormal mtight"},"o"),s("span",{class:"mord mathnormal mtight"},"m"),s("span",{class:"mord mathnormal mtight"},"s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"×"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"b"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03148em"}},"k")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])])])])])]),s("span",{class:"mclose"},")")])]),s("span",{style:{top:"-2.25em"}},[s("span",{class:"pstrut",style:{height:"3.3214em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mopen nulldelimiter"}),s("span",{class:"mfrac"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.3214em"}},[s("span",{style:{top:"-2.314em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"2"),s("span",{class:"mord mathnormal"},"A")])]),s("span",{style:{top:"-3.23em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"frac-line",style:{"border-bottom-width":"0.04em"}})]),s("span",{style:{top:"-3.677em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"1")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.686em"}},[s("span")])])])]),s("span",{class:"mclose nulldelimiter"})]),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8991em"}},[s("span",{style:{top:"-2.453em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"r"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.10764em"}},"f")])])]),s("span",{style:{top:"-3.113em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"re"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3831em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"−"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.10903em"}},"N"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2806em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.109em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"t"),s("span",{class:"mord mathnormal mtight"},"o"),s("span",{class:"mord mathnormal mtight"},"m"),s("span",{class:"mord mathnormal mtight"},"s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"×"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"b"),s("span",{class:"mord mathnormal mtight"},"u"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03148em"}},"k")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.0574em"}},[s("span")])])])])])])])])])])],-1);function C(P,O){const m=e("ExternalLinkIcon"),n=e("code-block"),i=e("code-group");return p(),c("div",null,[o,u,g,s("blockquote",null,[s("p",null,[s("a",d,[l("Surface energy - Wikipedia"),a(m)])])]),y,v,b,s("p",null,[l("以 "),s("a",E,[l("官网"),x,l("表面弛豫"),a(m)]),l(" 为例,")]),w,a(i,null,{default:t(()=>[a(n,{title:"INCAR"},{default:t(()=>[_]),_:1}),a(n,{title:"POSCAR"},{default:t(()=>[f]),_:1}),a(n,{title:"KPOINTS"},{default:t(()=>[k]),_:1}),a(n,{title:"stdout",active:""},{default:t(()=>[z]),_:1})]),_:1}),M,A,a(i,null,{default:t(()=>[a(n,{title:"INCAR"},{default:t(()=>[N]),_:1}),a(n,{title:"POSCAR"},{default:t(()=>[V]),_:1}),a(n,{title:"KPOINTS"},{default:t(()=>[I]),_:1}),a(n,{title:"stdout",active:""},{default:t(()=>[S]),_:1})]),_:1}),F,T,s("blockquote",null,[s("p",null,[s("a",L,[l("VASP Tutorial: A bit of surface science.pdf (nersc.gov)"),a(m)])])]),R,D])}const K=r(h,[["render",C],["__file","index.html.vue"]]);export{K as default}; diff --git a/assets/index.html-igyzptdK.js b/assets/index.html-igyzptdK.js new file mode 100644 index 00000000..19e169c5 --- /dev/null +++ b/assets/index.html-igyzptdK.js @@ -0,0 +1,27 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as i,c as p,a as s,b as n,e,d as l}from"./app-Mf7X6hWu.js";const c={},r=l(`

    在 Windows 20H2 上运行 ASE 报错

     ase --version
    + ** On entry to DGEBAL parameter number  3 had an illegal value
    + ** On entry to DGEHRD  parameter number  2 had an illegal value
    + ** On entry to DORGHR DORGQR parameter number  2 had an illegal value
    + ** On entry to DHSEQR parameter number  4 had an illegal value
    +Traceback (most recent call last):
    +  File "c:\\users\\northword\\appdata\\local\\programs\\python\\python39\\lib\\runpy.py", line 197, in _run_module_as_main
    +    return _run_code(code, main_globals, None,
    +  File "c:\\users\\northword\\appdata\\local\\programs\\python\\python39\\lib\\runpy.py", line 87, in _run_code
    +    exec(code, run_globals)
    +  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\Scripts\\ase.exe\\__main__.py", line 4, in <module>
    +  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\ase\\__init__.py", line 8, in <module>
    +    import numpy as np
    +  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\__init__.py", line 305, in <module>
    +    _win_os_check()
    +  File "C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\__init__.py", line 302, in _win_os_check
    +    raise RuntimeError(msg.format(__file__)) from None
    +RuntimeError: The current Numpy installation ('C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86
    +

    Python 版本如下

    Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
    +

    Windows 版本如下:

    版本         Windows 10 家庭中文版
    +版本号        20H2
    +安装日期      2020/11/2
    +操作系统版本   19042.610
    +序列号        
    +体验 Windows Feature Experience Pack 120.2212.31.0
    +

    搜索到一个类似问题的,是因为 numpywindows 20H2 的关系(反正总是 Windows 的锅)。

    使用如下将 numpy 降级即可。

    pip install numpy==1.19.3
    +
    `,9),u={href:"https://blog.csdn.net/yangtzech/article/details/109494653",target:"_blank",rel:"noopener noreferrer"},d={href:"https://tinyurl.com/y3dm3h86",target:"_blank",rel:"noopener noreferrer"};function m(v,k){const a=o("ExternalLinkIcon");return i(),p("div",null,[r,s("p",null,[n("引用地址:"),s("a",u,[n("https://blog.csdn.net/yangtzech/article/details/109494653"),e(a)]),n(" 、"),s("a",d,[n("https://tinyurl.com/y3dm3h86"),e(a)])])])}const g=t(c,[["render",m],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-ikW71uS4.js b/assets/index.html-ikW71uS4.js new file mode 100644 index 00000000..4a3b8b5b --- /dev/null +++ b/assets/index.html-ikW71uS4.js @@ -0,0 +1 @@ +const n=JSON.parse(`{"key":"v-5ae1580f","path":"/dft-learning/pages/fa5420/","title":"numpy 在 win2004 及以上报错","lang":"zh-CN","frontmatter":{"title":"numpy 在 win2004 及以上报错","date":"2020-11-13T17:28:10.000Z","permalink":"/dft-learning/pages/fa5420/","category":["Others"],"updated":"2022-01-17T14:49:18.000Z","description":"在 Windows 20H2 上运行 ASE 报错 ase --version ** On entry to DGEBAL parameter number 3 had an illegal value ** On entry to DGEHRD parameter number 2 had an illegal value ** On entry to DORGHR DORGQR parameter number 2 had an illegal value ** On entry to DHSEQR parameter number 4 had an illegal value Traceback (most recent call last): File \\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File \\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\", line 87, in _run_code exec(code, run_globals) File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\Scripts\\\\ase.exe\\\\__main__.py\\", line 4, in <module> File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\ase\\\\__init__.py\\", line 8, in <module> import numpy as np File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\", line 305, in <module> _win_os_check() File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\", line 302, in _win_os_check raise RuntimeError(msg.format(__file__)) from None RuntimeError: The current Numpy installation ('C:\\\\\\\\Users\\\\\\\\Northword\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Python\\\\\\\\Python39\\\\\\\\site-packages\\\\\\\\numpy\\\\\\\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/fa5420/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"numpy 在 win2004 及以上报错"}],["meta",{"property":"og:description","content":"在 Windows 20H2 上运行 ASE 报错 ase --version ** On entry to DGEBAL parameter number 3 had an illegal value ** On entry to DGEHRD parameter number 2 had an illegal value ** On entry to DORGHR DORGQR parameter number 2 had an illegal value ** On entry to DHSEQR parameter number 4 had an illegal value Traceback (most recent call last): File \\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File \\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\", line 87, in _run_code exec(code, run_globals) File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\Scripts\\\\ase.exe\\\\__main__.py\\", line 4, in <module> File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\ase\\\\__init__.py\\", line 8, in <module> import numpy as np File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\", line 305, in <module> _win_os_check() File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\", line 302, in _win_os_check raise RuntimeError(msg.format(__file__)) from None RuntimeError: The current Numpy installation ('C:\\\\\\\\Users\\\\\\\\Northword\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Python\\\\\\\\Python39\\\\\\\\site-packages\\\\\\\\numpy\\\\\\\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-13T17:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"numpy 在 win2004 及以上报错\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-13T17:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":1.18,"words":354},"filePathRelative":"dft-learning/09.Others/03.numpy-in-win20H2.md","localizedDate":"2020年11月14日","excerpt":"

    在 Windows 20H2 上运行 ASE 报错

    \\n
     ase --version\\n ** On entry to DGEBAL parameter number  3 had an illegal value\\n ** On entry to DGEHRD  parameter number  2 had an illegal value\\n ** On entry to DORGHR DORGQR parameter number  2 had an illegal value\\n ** On entry to DHSEQR parameter number  4 had an illegal value\\nTraceback (most recent call last):\\n  File \\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\", line 197, in _run_module_as_main\\n    return _run_code(code, main_globals, None,\\n  File \\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\", line 87, in _run_code\\n    exec(code, run_globals)\\n  File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\Scripts\\\\ase.exe\\\\__main__.py\\", line 4, in <module>\\n  File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\ase\\\\__init__.py\\", line 8, in <module>\\n    import numpy as np\\n  File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\", line 305, in <module>\\n    _win_os_check()\\n  File \\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\", line 302, in _win_os_check\\n    raise RuntimeError(msg.format(__file__)) from None\\nRuntimeError: The current Numpy installation ('C:\\\\\\\\Users\\\\\\\\Northword\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Python\\\\\\\\Python39\\\\\\\\site-packages\\\\\\\\numpy\\\\\\\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86\\n
    ","autoDesc":true}`);export{n as data}; diff --git a/assets/index.html-j3vyzNod.js b/assets/index.html-j3vyzNod.js new file mode 100644 index 00000000..5ddb12b3 --- /dev/null +++ b/assets/index.html-j3vyzNod.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-0e1a9384","path":"/code/linux/","title":"Linux","lang":"zh-CN","frontmatter":{"title":"Linux","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Linux\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-j4BPmuUZ.js b/assets/index.html-j4BPmuUZ.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-j4BPmuUZ.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-j8sOZyRv.js b/assets/index.html-j8sOZyRv.js new file mode 100644 index 00000000..a0348781 --- /dev/null +++ b/assets/index.html-j8sOZyRv.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-398f20bb","path":"/code/python/pip-mirrors/","title":"pip 换源","lang":"zh-CN","frontmatter":{"title":"pip 换源","date":"2022-09-16T20:53:40.000Z","updated":"2022-09-16T21:07:17.000Z","permalink":"/code/python/pip-mirrors/","description":"pip 换源 国内源 新版 ubuntu 要求使用 https 源,要注意。 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/ 淘宝:http://npm.taobao.org/mirrors/python/","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/python/pip-mirrors/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"pip 换源"}],["meta",{"property":"og:description","content":"pip 换源 国内源 新版 ubuntu 要求使用 https 源,要注意。 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/ 淘宝:http://npm.taobao.org/mirrors/python/"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:10:38.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T20:53:40.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:10:38.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"pip 换源\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-16T20:53:40.000Z\\",\\"dateModified\\":\\"2022-09-16T13:10:38.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"国内源","slug":"国内源","link":"#国内源","children":[]},{"level":2,"title":"临时使用:","slug":"临时使用","link":"#临时使用","children":[]},{"level":2,"title":"永久修改,一劳永逸:","slug":"永久修改-一劳永逸","link":"#永久修改-一劳永逸","children":[]}],"git":{"createdTime":1663333456000,"updatedTime":1663333838000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":2}]},"readingTime":{"minutes":0.61,"words":184},"filePathRelative":"code/python/pip-mirrors.md","localizedDate":"2022年9月17日","excerpt":"

    pip 换源

    \\n

    国内源

    \\n

    新版 ubuntu 要求使用 https 源,要注意。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-jwTHJG1P.js b/assets/index.html-jwTHJG1P.js new file mode 100644 index 00000000..5795f40b --- /dev/null +++ b/assets/index.html-jwTHJG1P.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-18ed4b78","path":"/software/office/install/","title":"Office 安装","lang":"zh-CN","frontmatter":{"title":"Office 安装","date":"2022-09-21T17:58:43.000Z","updated":"2022-09-21T18:06:42.000Z","permalink":"/software/office/install/","description":"Office 安装 使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。 下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。 OTP 下载 下载 | Office Tool Plus 官方网站 (landian.vip)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/office/install/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Office 安装"}],["meta",{"property":"og:description","content":"Office 安装 使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。 下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。 OTP 下载 下载 | Office Tool Plus 官方网站 (landian.vip)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-10-04T12:31:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-21T17:58:43.000Z"}],["meta",{"property":"article:modified_time","content":"2022-10-04T12:31:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Office 安装\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-21T17:58:43.000Z\\",\\"dateModified\\":\\"2022-10-04T12:31:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"OTP 下载","slug":"otp-下载","link":"#otp-下载","children":[]}],"git":{"createdTime":1664886676000,"updatedTime":1664886676000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.51,"words":153},"filePathRelative":"software/office/install.md","localizedDate":"2022年9月22日","excerpt":"

    Office 安装

    \\n

    使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。

    \\n

    下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。

    \\n

    OTP 下载

    \\n

    下载 | Office Tool Plus 官方网站 (landian.vip)

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-k2_RklJM.js b/assets/index.html-k2_RklJM.js new file mode 100644 index 00000000..79e28fd9 --- /dev/null +++ b/assets/index.html-k2_RklJM.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o,c as r,a as e,b as s,e as a,d as l}from"./app-Mf7X6hWu.js";const c={},m=e("h1",{id:"一些乱七八糟的为什么",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#一些乱七八糟的为什么","aria-hidden":"true"},"#"),s(" 一些乱七八糟的为什么")],-1),h=e("h2",{id:"为什么要建立超胞",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#为什么要建立超胞","aria-hidden":"true"},"#"),s(" 为什么要建立超胞?")],-1),p=e("ol",null,[e("li",null,"避免周期性镜像间的互相影响"),e("li",null,"考虑多分⼦吸附时的多种构象")],-1),u=e("p",null,"如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么?",-1),d=e("p",null,"我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢?",-1),g=e("p",null,"(1)掺杂问题",-1),_=e("p",null,"1)建立超胞是为了获得合适的掺杂浓度;",-1),y=e("p",null,"2)清晰地分成置换固溶体或间隙固溶体",-1),f=e("p",null,"(2)表面吸附问题",-1),b=e("p",null,"1)可以模拟不同晶向的吸附密度;",-1),v=e("p",null,"2)要避免吸附的气体分子和镜像分子间有作用;",-1),w={href:"https://www.zhihu.com/question/282248524",target:"_blank",rel:"noopener noreferrer"},x=l('

    如何选择真空层厚度?

    todo

    如何确定底部保留几层?

    todo

    埃 Angstrom

    ',5),k=e("p",null,[s("埃格斯特朗。长度单位。 "),e("span",{class:"katex"},[e("span",{class:"katex-mathml"},[e("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[e("semantics",null,[e("mrow",null,[e("mn",null,"1"),e("mover",{accent:"true"},[e("mtext",null,"A"),e("mo",null,"˚")]),e("mo",null,"="),e("mn",null,"1"),e("msup",null,[e("mn",null,"0"),e("mrow",null,[e("mo",null,"−"),e("mn",null,"10")])]),e("mi",null,"m"),e("mo",null,"="),e("mn",null,"0.1"),e("mi",null,"n"),e("mi",null,"m"),e("mo",null,"="),e("mn",null,"1"),e("msup",null,[e("mn",null,"0"),e("mrow",null,[e("mo",null,"−"),e("mn",null,"2")])]),e("mi",null,"p"),e("mi",null,"m")]),e("annotation",{encoding:"application/x-tex"},"1\\text{\\AA} = 10^{-10} m = 0.1 nm = 10^{-2}pm")])])]),e("span",{class:"katex-html","aria-hidden":"true"},[e("span",{class:"base"},[e("span",{class:"strut",style:{height:"0.9468em"}}),e("span",{class:"mord"},"1"),e("span",{class:"mord text"},[e("span",{class:"mord accent"},[e("span",{class:"vlist-t"},[e("span",{class:"vlist-r"},[e("span",{class:"vlist",style:{height:"0.9468em"}},[e("span",{style:{top:"-3em"}},[e("span",{class:"pstrut",style:{height:"3em"}}),e("span",{class:"mord"},"A")]),e("span",{style:{top:"-3.2523em"}},[e("span",{class:"pstrut",style:{height:"3em"}}),e("span",{class:"accent-body",style:{left:"-0.375em"}},[e("span",{class:"mord"},"˚")])])])])])])]),e("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),e("span",{class:"mrel"},"="),e("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),e("span",{class:"base"},[e("span",{class:"strut",style:{height:"0.8141em"}}),e("span",{class:"mord"},"1"),e("span",{class:"mord"},[e("span",{class:"mord"},"0"),e("span",{class:"msupsub"},[e("span",{class:"vlist-t"},[e("span",{class:"vlist-r"},[e("span",{class:"vlist",style:{height:"0.8141em"}},[e("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[e("span",{class:"pstrut",style:{height:"2.7em"}}),e("span",{class:"sizing reset-size6 size3 mtight"},[e("span",{class:"mord mtight"},[e("span",{class:"mord mtight"},"−"),e("span",{class:"mord mtight"},"10")])])])])])])])]),e("span",{class:"mord mathnormal"},"m"),e("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),e("span",{class:"mrel"},"="),e("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),e("span",{class:"base"},[e("span",{class:"strut",style:{height:"0.6444em"}}),e("span",{class:"mord"},"0.1"),e("span",{class:"mord mathnormal"},"nm"),e("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),e("span",{class:"mrel"},"="),e("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),e("span",{class:"base"},[e("span",{class:"strut",style:{height:"1.0085em","vertical-align":"-0.1944em"}}),e("span",{class:"mord"},"1"),e("span",{class:"mord"},[e("span",{class:"mord"},"0"),e("span",{class:"msupsub"},[e("span",{class:"vlist-t"},[e("span",{class:"vlist-r"},[e("span",{class:"vlist",style:{height:"0.8141em"}},[e("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[e("span",{class:"pstrut",style:{height:"2.7em"}}),e("span",{class:"sizing reset-size6 size3 mtight"},[e("span",{class:"mord mtight"},[e("span",{class:"mord mtight"},"−"),e("span",{class:"mord mtight"},"2")])])])])])])])]),e("span",{class:"mord mathnormal"},"p"),e("span",{class:"mord mathnormal"},"m")])])]),s(" 。")],-1),A={href:"https://zh.wikipedia.org/wiki/%E5%9F%83%E6%A0%BC%E6%96%AF%E7%89%B9%E6%9C%97",target:"_blank",rel:"noopener noreferrer"},q=e("p",null,[s("In LaTeX, the command for "),e("em",null,"angstrom"),s(" is "),e("code",null,"{\\AA}"),s(".")],-1),z={href:"https://www.aps.org/meetings/abstract/latex.cfm",target:"_blank",rel:"noopener noreferrer"},C=e("p",null,[s("由于 KaTex 尚不支持 "),e("code",null,"\\AA"),s(" ,可用 "),e("code",null,"\\text{\\AA}"),s(" 进行渲染。")],-1),I=e("h2",{id:"cif-文件的区别",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#cif-文件的区别","aria-hidden":"true"},"#"),s(" CIF 文件的区别")],-1),S=e("p",null,"Materials Project 上提供四种 CIF 文件,他们本质无区别,所有 CIF 都完全相同或有效等效,它们只是同一晶体结构的不同“设置”。因此,使用哪个都不要紧。",-1),E={href:"https://matsci.org/t/cif-file-types-differences/3365",target:"_blank",rel:"noopener noreferrer"},F=l("

    The most important thing is that all the CIFs are either exactly or effectively equivalent, they are just different “settings” of the same crystal structure. So shouldn’t matter too much which you use.

    These are:

    • Computed, the structure direct from our calculations, always in the “P1” setting (i.e. no symmetry is detected)
    • Conventional standard, this is the same as “computed” except now the symmetry is detected and it’s put into a conventional setting – this will be more familiar to most scientists, since textbooks and papers etc. will usually report a crystal in its conventional setting
    • Primitive cell, this is the same as “computed” except now it’s reported in its primitive setting (i.e. with the minimum number of atoms required to define the periodic crystal). It’s often useful to use these primitive cells for further calculations, since they contain fewer atoms, but they can be more difficult to visualize – for example, a crystal with cubic symmetry might not have a primitive cell whose angles are 90º. Introductions to crystallography can go into more detail on this.
    • Symmetrized is the almost the same as “computed”, except atomic positions have been moved to their symmetrically equivalent positions if they’re almost but not quite there – this is important e.g. if due to numerical noise an atom may be close to but not exactly at (0,0, 0) even if we know in reality it’s likely to be exactly at (0,0, 0) in that particular setting.
    ",3),M=e("h2",{id:"切面用-conventional-还是-primitive",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#切面用-conventional-还是-primitive","aria-hidden":"true"},"#"),s(" 切面用 conventional 还是 primitive ?")],-1),B={href:"https://www.bigbrosci.com/2018/08/25/ex42/",target:"_blank",rel:"noopener noreferrer"},P=e("ol",null,[e("li",null,"切 slab 模型不能用 primitive cell 切,而要用 conventional cell 切。有時候兩種切出來會不一樣"),e("li",null,"將 primitive cell 轉換成 conventional cell:利用 Material Studio 的 Build- Symmetry-Find Symmetry 功能,對 primitive cell 的模型“Find Symmetry”,然後“Impose Symmetry”,即可。")],-1),T=e("blockquote",null,[e("p",null,"刘锦程 MS 建模视频:"),e("p",null,"切面必须用 conventional cell ,"),e("p",null,"能带计算必须用 primitive cell ,因为其布里渊区定义正确")],-1);function L(V,N){const t=i("ExternalLinkIcon");return o(),r("div",null,[m,h,p,e("blockquote",null,[u,d,g,_,y,f,b,v,e("p",null,[e("a",w,[s("https://www.zhihu.com/question/282248524"),a(t)])])]),x,k,e("blockquote",null,[e("p",null,[s("WiKiPedia: "),e("a",A,[s("https://zh.wikipedia.org/wiki/埃格斯特朗"),a(t)])])]),q,e("blockquote",null,[e("p",null,[e("a",z,[s("https://www.aps.org/meetings/abstract/latex.cfm"),a(t)])])]),C,I,S,e("blockquote",null,[e("p",null,[e("a",E,[s("CIF file types - differences? - Materials Project - Materials Science Community Discourse (matsci.org)"),a(t)])]),F]),M,e("blockquote",null,[e("p",null,[e("a",B,[s("Ex42 slab 模型 | Learn VASP The Hard Way (bigbrosci.com)"),a(t)]),s(" 评论区:")]),P]),T])}const W=n(c,[["render",L],["__file","index.html.vue"]]);export{W as default}; diff --git a/assets/index.html-k33U_bWh.js b/assets/index.html-k33U_bWh.js new file mode 100644 index 00000000..036ef158 --- /dev/null +++ b/assets/index.html-k33U_bWh.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-6ba6606f","path":"/dft-learning/pages/vasp-others/","title":"其他","lang":"zh-CN","frontmatter":{"title":"其他","date":"2022-09-12T22:46:14.000Z","updated":"2022-09-16T13:23:35.000Z","permalink":"/dft-learning/pages/vasp-others/","article":false,"index":false,"order":0,"timeline":false,"description":"其他","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-others/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"其他"}],["meta",{"property":"og:description","content":"其他"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T05:28:03.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T22:46:14.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T05:28:03.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"其他\\",\\"description\\":\\"其他\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663306083000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.1,"words":31},"filePathRelative":"dft-learning/05.VASP/08.其他/README.md","localizedDate":"2022年9月13日","excerpt":"

    其他

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-k5zuQx8_.js b/assets/index.html-k5zuQx8_.js new file mode 100644 index 00000000..ad1072f8 --- /dev/null +++ b/assets/index.html-k5zuQx8_.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-76165238","path":"/dft-learning/pages/c81f27/","title":"吸附能的计算","lang":"zh-CN","frontmatter":{"title":"吸附能的计算","date":"2021-01-21T19:25:30.000Z","permalink":"/dft-learning/pages/c81f27/","category":["VASP","优化"],"updated":"2022-11-19T17:24:14.000Z","description":"吸附能的计算 Todo 影响因素 slab 模型在 Z 方向 slab 的厚度 真空层厚度 一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。 slab 模型在 XY 方向 表面大小:影响覆盖度,计算的工作量。 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/c81f27/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"吸附能的计算"}],["meta",{"property":"og:description","content":"吸附能的计算 Todo 影响因素 slab 模型在 Z 方向 slab 的厚度 真空层厚度 一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。 slab 模型在 XY 方向 表面大小:影响覆盖度,计算的工作量。 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"吸附能的计算"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-01-21T19:25:30.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"吸附能的计算\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2021-01-21T19:25:30.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"影响因素","slug":"影响因素","link":"#影响因素","children":[]},{"level":2,"title":"初始构型获取","slug":"初始构型获取","link":"#初始构型获取","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":1.11,"words":334},"filePathRelative":"dft-learning/05.VASP/02.优化/06.vasp-adsorption-energy.md","localizedDate":"2021年1月22日","excerpt":"

    吸附能的计算

    \\n
    \\n

    Todo

    \\n
    \\n

    影响因素

    \\n

    slab 模型在 Z 方向

    \\n
      \\n
    • slab 的厚度
    • \\n
    • 真空层厚度
    • \\n
    \\n

    一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。

    \\n

    slab 模型在 XY 方向

    \\n
      \\n
    • 表面大小:影响覆盖度,计算的工作量。
    • \\n
    • 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。
    • \\n
    • 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等
    • \\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-kC55fK8J.js b/assets/index.html-kC55fK8J.js new file mode 100644 index 00000000..9c6d46f3 --- /dev/null +++ b/assets/index.html-kC55fK8J.js @@ -0,0 +1,82 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as d,c as o,a as e,b as n,e as i,w as c,d as a}from"./app-Mf7X6hWu.js";const v="/assets/38fcf9e3590a9cc4f8081b1e6808d4fc-xgcFDEkJ.png",u={},b=e("h1",{id:"vaspkit-的配置",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#vaspkit-的配置","aria-hidden":"true"},"#"),n(" VASPKIT 的配置")],-1),p={href:"https://www.bilibili.com/video/BV17J411i78D",target:"_blank",rel:"noopener noreferrer"},m=e("div",{class:"btv",id:"btv"},[e("iframe",{src:"//player.bilibili.com/player.html?aid=78202388&bvid=BV17J411i78D&cid=133805579&page=1",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true"}," ")],-1),h=a(`

    我们预计将 VASPKIT 安装在 ~/app/ 下,在用户目录下新建一个 app 文件夹并进入:

    cd ~
    +mkdir app
    +cd app
    +

    下载

    你可以将其下载到自己的电脑上后再上传到服务器,也可以直接在服务器上下载。以下两种下载方式二选一即可。

    方式一(Recommend)

    # VASPKIT软件的包
    +$ wget https://nchc.dl.sourceforge.net/project/vaspkit/Binaries/vaspkit.1.2.1.linux.x64.tar.gz
    +# 赝势文件的包 自行下载上传,链接二选一,文件是同一个,包含 PBE 和 PWA 两种赝势,大陆网络推荐 gitee 。
    +# https://github.com/northword/dft-learning/blob/7b46bcb3e2464c4e6ef33415d3bbe491a0a8198f/app/pot.tgz
    +# https://gitee.com/northword/dft-learning/blob/gitbook/app/pot.tgz
    +

    下载成功即如图:执行成功

    方式二

    ',9),E={href:"https://sourceforge.net/projects/vaspkit/files/Binaries/",target:"_blank",rel:"noopener noreferrer"},g=a(`

    下载后使用 FTP 上传到服务器。

    解压缩

    tar -xzvf vaspkit.1.2.1.linux.x64.tar.gz 
    +tar -xzvf pot.tgz
    +rm vaspkit.1.2.1.linux.x64.tar.gz pot.tar vtstscripts.tar
    +# 注意如果用的链接不同,文件名可能不同,自行变通。善用按Tab补全。
    +
    `,3),A=e("code",null,"tar",-1),_=a(`

    配置 VASPKIT 程序的环境变量

    首先配置 VASPKIT 软件的变量。将软件自带的环境变量模板文件复制到用户目录,并编辑

    cp -f how_to_set_environment_variable ~/.vaspkit
    +vi ~/.vaspkit
    +

    打开后如下:

    # cp how_to_set_environment_variable ~/.vaspkit and modify the ~/.vaspkit file based on your settings!
    +VASP5                         .TRUE.                         # .TRUE. or .FALSE.; Set .FALSE. if you are using vasp.4.x
    +LDA_PATH                      ~/POTCAR/LDA                   #  Path of LDA potential.
    +PBE_PATH                      ~/POTCAR/PBE                   #  Path of PBE potential.
    +GGA_PATH                      ~/POTCAR/GGA                   #  Path of PW91 potential.
    +POTCAR_TYPE                    PBE                           #  PBE, PW91 or LDA; Set PBE if you want to make PBE-POTCAR file
    +GW_POTCAR                     .FALSE.                        # .TRUE. or .FALSE.; For example, H_GW, O_GW will be chose when POTCAR_GW = .TRUE.
    +RECOMMENDED_POTCAR            .TRUE.                         # .TRUE. or .FALSE.; The recommended PAW potential will be chose when RECOMMENDED_POTCAR = .TRUE.
    +SET_FERMI_ENERGY_ZERO         .TRUE.                         # .TRUE. or .FALSE.; The Fermi Energy will be set to zero eV when SET_FERMI_ENERGY_ZERO = .TRUE.
    +MINI_INCAR                    .FALSE.                        # .TRUE. or .FALSE.; A simplified INCAR will be written when MINI_INCAR = .TRUE.
    +USER_DEFINED_INCAR            .FALSE.                        # .TRUE. or .FALSE.; whether to use embedded INCAR templates or user defined INCAR templates
    +WRITE_SELECTIVE_DYNAMICS      .FALSE.                        # .TRUE. or .FALSE.; whether the selective dymanics set will be forced to write when SET_SELECTIVE_DYNAMICS_MODE = .FALSE.
    +PYTHON_BIN                     ~/anaconda3/bin/python3       #  Python executable program with its installation path. I recommend you install anaconda package for Python data science
    +PLOT_MATPLOTLIB               .FALSE.                        # .TRUE. or .FALSE.; Set .TRUE. if you want to generate Graphs. (Matplotlib and Numpy packages MUST be embedded in Python)
    +VASPKIT_UTILITIES_PATH        ~/vaspkit/utilities            #  IF ADVANCED_USER is .TRUE., set VASPKIT_UTILITIES_PATH like ~/vaspkit.0.72/utilities in order to use scripts in it.
    +ADVANCED_USER                 .TRUE.                         # .TRUE. or .FALSE.; Please fill in your settings in the block 'USER_DEFINED' if you want vaspkit to integrate your own scripts in the 'UTILITIES' file.
    +SET_INCAR_WRITE_MODE           OVERRIDE                      #  OVERRIDE, APPEND, BACK-UP-OLD,BACK-UP-NEW;  "Customize INCAR File"  whether to override existing INCAR/appending existing INCAR/backup existing INCAR to INCAR.old && write into INCAR/write into INCAR.new
    +PHS_CORRECTION                .FALSE.                        # .TRUE. or .FALSE.; whether to make PHS correction during linear optical calculations. More details on this correction are given in Comput. Mater. Sci. 172 (2020) 109315.
    +
    +# Reset the default values of variables in here
    +SYMPREC                        1E-5                          # Distance tolerance in Cartesian coordinates to find crystal symmetry (default value: 1E-5)
    +EMIN                          -20.0                          # Minimum energy for evaluation of DOS (default value: -20.0 eV)
    +EMAX                           20.0                          # Maximum energy for evaluation of DOS (default value:  20.0 eV)
    +NEDOS                          2001                          # Number of grid points in DOS (default value: 2001)
    +GAMMA_CENTERED                .TRUE.                         # .TRUE. or .FALSE.; (default value: .TRUE.)
    +VACUUM_THICKNESS               15.0                          # The thickness of vacuum to build slab or 2D materials (default value: 10 angstrom)
    +CENTER_SLAB                   .TRUE.                         # Center the slab in the z direction; (default value: .TRUE.)
    +


     
     























    通常需要修改的是 3、4 行,将其修改为你的赝势文件的路径,按照本文档操作下来的,应该修改为:

    LDA_PATH                      ~/app/pot_database/LDA         #  Path of LDA potential.
    +PBE_PATH                      ~/app/pot_database/PBE         #  Path of PBE potential.
    +

    vaspkit 关键字加入系统环境变量

    接下来,要把 vaspkit 这个关键词添加到系统的环境变量里。由于新版本 (version>0.73) 给了方便的配置脚本,我们直接运行,

    bash setup.sh
    +source ~/.bashrc
    +

    其中第一行作用为将 export PATH=[你的 VASPKIT 目录]/bin/:$PATH 添加到了 ~/.bashrc,第二行作用为使环境变量立即生效。

    当然,也可以去 vi ~/.bashrc,将路径添加到 PATH。

    至此,环境变量配置完成,我们可以通过 vaspkit 命令来启动它。

    [zjb@op backup]$ vaspkit
    + 
    +            \\\\\\///         
    +           / _  _ \\       Hey, you must know what you are doing.  
    +         (| (.)(.) |)     Otherwise you might get wrong results!  
    + +-----.OOOo--()--oOOO.------------------------------------------+
    + |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
    + |        Core Developer: Vei WANG (wangvei@icloud.com)          |
    + |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
    + |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
    + +-----.oooO-----------------------------------------------------+
    +        (   )   Oooo.     
    +         \\ (    (   )     
    +          \\_)    ) /      
    +                (_/       
    + ===================== Structural Options ========================
    + 1)  VASP Input Files Generator    2)  Elastic-Properties         
    + 3)  K-Path Generator              4)  Structure Editor           
    + 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
    + 
    + ===================== Electronic Options ========================
    + 11) Density-of-States             21) DFT Band-Structure         
    + 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
    + 26) Fermi-Surface                 28) Band-Structure Unfolding   
    + 
    + =========== Charge & Potential & Wavefunction Options ===========
    + 31) Charge & Spin Density         42) Potential-Related          
    + 51) Wave-Function Analysis  
    + ====================== Misc Utilities ===========================
    + 71) Optical-Properties            72) Molecular-Dynamics Kit 
    + 73) VASP2other Interface          74) USER interface
    + 91) Semiconductor Calculator      92) 2D-Materials Kit       
    +                                                                  
    + 0)  Quit                                                         
    + ------------>>
    +
    +
    `,14);function f(T,R){const s=t("ExternalLinkIcon"),r=t("RouterLink");return d(),o("div",null,[b,e("p",null,[n("推荐视频 "),e("a",p,[n("VASPKIT 功能介绍,解放你的双手"),i(s)]),n(" :")]),m,h,e("p",null,[n("官方下载地址:"),e("a",E,[n("https://sourceforge.net/projects/vaspkit/files/Binaries/"),i(s)])]),g,e("p",null,[A,n(" 命令用法见 "),i(r,{to:"/code/linux/15.linux-command.html#tar"},{default:c(()=>[n("tar")]),_:1}),n("。")]),_])}const k=l(u,[["render",f],["__file","index.html.vue"]]);export{k as default}; diff --git a/assets/index.html-kER87C2T.js b/assets/index.html-kER87C2T.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-kER87C2T.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-l31dhQDe.js b/assets/index.html-l31dhQDe.js new file mode 100644 index 00000000..9b0c364c --- /dev/null +++ b/assets/index.html-l31dhQDe.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-f2c2fcf8","path":"/software/office/","title":"Office","lang":"zh-CN","frontmatter":{"title":"Office","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/office/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Office"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Office\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-l42wifaG.js b/assets/index.html-l42wifaG.js new file mode 100644 index 00000000..00bb3941 --- /dev/null +++ b/assets/index.html-l42wifaG.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-2e924cd2","path":"/category/theory/","title":"Theory 分类","lang":"zh-CN","frontmatter":{"title":"Theory 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"Theory","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/theory/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Theory 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Theory 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-lDCNVhP2.js b/assets/index.html-lDCNVhP2.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-lDCNVhP2.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-lLKJDMl4.js b/assets/index.html-lLKJDMl4.js new file mode 100644 index 00000000..8f31f999 --- /dev/null +++ b/assets/index.html-lLKJDMl4.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-39c6dbde","path":"/dft-learning/vasp/error/","title":"VASP 运行中的错误","lang":"zh-CN","frontmatter":{"title":"VASP 运行中的错误","date":"2022-11-10T18:50:47.000Z","permalink":"/dft-learning/vasp/error/","updated":"2022-11-10T18:59:48.000Z","description":"VASP 运行中的错误 Error EDDDAV: Call to ZHEGV failed. Returncode = xx 这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。 参考:Re: on solving \\"Error EDDDAV: Call to ZHEGV failed. Returncode = xx\\" (vasp.at)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/vasp/error/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP 运行中的错误"}],["meta",{"property":"og:description","content":"VASP 运行中的错误 Error EDDDAV: Call to ZHEGV failed. Returncode = xx 这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。 参考:Re: on solving \\"Error EDDDAV: Call to ZHEGV failed. Returncode = xx\\" (vasp.at)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-11-14T03:12:12.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-11-10T18:50:47.000Z"}],["meta",{"property":"article:modified_time","content":"2022-11-14T03:12:12.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"VASP 运行中的错误\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-11-10T18:50:47.000Z\\",\\"dateModified\\":\\"2022-11-14T03:12:12.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Error EDDDAV: Call to ZHEGV failed. Returncode = xx","slug":"error-edddav-call-to-zhegv-failed-returncode-xx","link":"#error-edddav-call-to-zhegv-failed-returncode-xx","children":[]},{"level":2,"title":"forrtl: severe (174): SIGSEGV, segmentation fault occurred","slug":"forrtl-severe-174-sigsegv-segmentation-fault-occurred","link":"#forrtl-severe-174-sigsegv-segmentation-fault-occurred","children":[]}],"git":{"createdTime":1668395532000,"updatedTime":1668395532000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.88,"words":265},"filePathRelative":"dft-learning/05.VASP/08.其他/error.md","localizedDate":"2022年11月11日","excerpt":"

    VASP 运行中的错误

    \\n

    Error EDDDAV: Call to ZHEGV failed. Returncode = xx

    \\n

    这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。

    \\n

    参考:Re: on solving \\"Error EDDDAV: Call to ZHEGV failed. Returncode = xx\\" (vasp.at)

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-lf5PKNFU.js b/assets/index.html-lf5PKNFU.js new file mode 100644 index 00000000..8fd7084c --- /dev/null +++ b/assets/index.html-lf5PKNFU.js @@ -0,0 +1,10 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as e,d as n}from"./app-Mf7X6hWu.js";const i={},d=n(`

    配置 VTST 的脚本

    下载

    cd ~/app
    +wget http://theory.cm.utexas.edu/code/vtstscripts.tgz
    +

    解压缩

    $ tar -xzvf vtstscripts.tgz 
    +$ rm vtstscripts.tgz
    +$ cd vtstscripts-(按Tab)
    +$ pwd
    +# 将返回值复制
    +

    加入 bashrc

    vi ~/.bashrc
    +# 将上面pwd的返回值加入PATH
    +
    `,7),t=[d];function c(r,l){return s(),e("div",null,t)}const u=a(i,[["render",c],["__file","index.html.vue"]]);export{u as default}; diff --git a/assets/index.html-lhyKpbpk.js b/assets/index.html-lhyKpbpk.js new file mode 100644 index 00000000..4a434577 --- /dev/null +++ b/assets/index.html-lhyKpbpk.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as o,o as s,c as r,a as e,b as t,e as n,d as c}from"./app-Mf7X6hWu.js";const l="/assets/7488b4869aad2b110bfff2effa063dc6-hL3Krz9l.png",d="/assets/1443f8e66c95a78827d048c7d7e89ef5-Lm7uHv68.png",p="/assets/362168238c6600dcac8c0bfeb7738a13-qWH0eWf5.png",h={},f=c('

    Windows 平台的部分软件安装

    由于安装过于简单,故只对部分关键步骤做说明。

    Materials Studio 激活

    安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \\Program Files (x86)\\BIOVIA\\LicensePack\\Licenses

    image-20210913190855840
    image-20210913190855840

    然后启动授权管理器:

    image-20210913190616258
    image-20210913190616258
    image-20210913191736535
    image-20210913191736535

    Python for Windows

    还没写

    话说感觉这玩意没必要写

    打开安装包后勾选上左下角的 添加到系统 PATH 的选项后再进行下一步!

    Xshell 设置 X11 转发

    启动 Xlaunch,display number = 0,next,start no client,next,ok。

    在 xshell 的会话属性,ssh 隧道,x11 转移,x display:localhost:0.0。

    启动 ximg,在 xshell 中搞。

    参考:

    ',17),g={href:"http://blog.sciencenet.cn/blog-950202-1152796.html",target:"_blank",rel:"noopener noreferrer"},m={href:"https://blog.csdn.net/akuoma/article/details/82182913",target:"_blank",rel:"noopener noreferrer"};function _(x,u){const a=o("ExternalLinkIcon");return s(),r("div",null,[f,e("p",null,[e("a",g,[t("http://blog.sciencenet.cn/blog-950202-1152796.html"),n(a)])]),e("p",null,[e("a",m,[t("https://blog.csdn.net/akuoma/article/details/82182913"),n(a)])])])}const w=i(h,[["render",_],["__file","index.html.vue"]]);export{w as default}; diff --git a/assets/index.html-mEZlrX25.js b/assets/index.html-mEZlrX25.js new file mode 100644 index 00000000..f6c23e7e --- /dev/null +++ b/assets/index.html-mEZlrX25.js @@ -0,0 +1,19 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as e,o as i,c as l,a as r,b as a,e as c,w as d,d as t}from"./app-Mf7X6hWu.js";const o={},p=t(`

    为 linux 非 ROOT 用户安装 lrzsz

    lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rzsz 命令进行上传和下载。

    如果拥有 ROOT 权限,可以直接执行下述代码安装:

    yum -y install lrzsz
    +

    而如果没有 ROOT 权限,是无法写入的,就需要我们自行编译。下面是普通用户安装的办法。

    下载并解压

    cd /tmp
    +wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
    +tar -zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20
    +

    配置安装路径

    # 在等号后写入目标安装路径
    +./configure --prefix=/public/home/zjb/app/lrzsz
    +# 路径写自己的
    +

    编译安装

    make && make install
    +

    配置当前用户下的系统命令

    $ cd /public/home/zjb/app/lrzsz
    +$ mkdir bash-command $ cd bash-command
    +$ ln -s /public/home/zjb/app/lrzsz/bin/lrz rz 
    +$ ln -s /public/home/zjb/app/lrzsz/bin/lsz sz
    +# 上面几个路径需要替换成自己的
    +

    配置当前用户的环境变量

    $ cd ~
    +$ vi .bashrc
    +# 在PATH列表中添加如下:路径自己的
    +export PATH="/public/home/zjb/app/lrzsz/bash-command":$PATH
    +$ source .bashrc
    +

    使用方法

    `,16);function u(m,h){const s=e("RouterLink");return i(),l("div",null,[p,r("p",null,[a("见 "),c(s,{to:"/code/linux/17.linux-lrzsz-usage.html"},{default:d(()=>[a("linux-lrzsz-usage")]),_:1})])])}const z=n(o,[["render",u],["__file","index.html.vue"]]);export{z as default}; diff --git a/assets/index.html-mVwIyCLN.js b/assets/index.html-mVwIyCLN.js new file mode 100644 index 00000000..ac02b863 --- /dev/null +++ b/assets/index.html-mVwIyCLN.js @@ -0,0 +1,8 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c as d,d as i}from"./app-Mf7X6hWu.js";const n={},c=i(`
    DFT+U Calculation
    + LDAU   = .TRUE.        (启用 DFT+U)
    + LDATYPE=  2            (+U的类型)
    + LDAUL  =  2 -1         (Orbitals for each species)
    + LDAUU  =  3.5  0       (U for each species)
    + LDAUJ  =  0  0         (J for each species)
    + LMAXMIX=  4            (Mixing cut-off; 4-d, 6-f)
    +

    LADATYPE——描述+U 的类型。取值有:1、2(默认)、4。

    LDAUL 取值描述
    1The rotationally invariant LSDA+U introduced by Liechtenstein et al
    2(默认)Dudarev 简化的。在此方案中,描述库仑和交换相互作用的 U 和 J 项始终以 Ueff = U-J 的形式组合在一起,只有 U-J 有物理意义。
    4todo

    LDAUL——描述在哪个原子轨道上加 U。 -1 不加 U;1 p 轨道; 2 d 轨道 (默认) ; 3f 轨道。

    LDAUU——电子库伦相互作用项( on-site Coulomb interaction)

    LDAUJ——电子交换相互作用项( on-site exchange interaction)

    提示

    LDAUL、LDAUU、LDAUJ 都需要为每个物种设定(有几种元素就有几个数字),顺序应当与 POSCAR/POTCAR 中的一致。

    最终的 U 值 = LDAUU - LDAUUJ

    一般说来+U 的过程要自始至终,也就是从结构优化到计算性质都要考虑 U 的影响

    `,7),o=[c];function a(s,r){return t(),d("div",null,o)}const p=e(n,[["render",a],["__file","index.html.vue"]]);export{p as default}; diff --git a/assets/index.html-mWiFI_Yl.js b/assets/index.html-mWiFI_Yl.js new file mode 100644 index 00000000..2dc65ff2 --- /dev/null +++ b/assets/index.html-mWiFI_Yl.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-f0abf42e","path":"/dft-learning/pages/816847/","title":"linux 编译 py3","lang":"zh-CN","frontmatter":{"title":"linux 编译 py3","date":"2020-11-21T12:12:10.000Z","permalink":"/dft-learning/pages/816847/","category":["Install"],"updated":"2022-01-16T19:55:51.000Z","description":"为学校的 linux 安装 python3 由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。 步骤放在最前面 升级 OPENSSL cd /tmp wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -xvf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib #注意添加no-zlib make && make install","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/816847/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"linux 编译 py3"}],["meta",{"property":"og:description","content":"为学校的 linux 安装 python3 由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。 步骤放在最前面 升级 OPENSSL cd /tmp wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -xvf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib #注意添加no-zlib make && make install"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-21T12:12:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"linux 编译 py3\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-21T12:12:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"步骤放在最前面","slug":"步骤放在最前面","link":"#步骤放在最前面","children":[{"level":3,"title":"升级 OPENSSL","slug":"升级-openssl","link":"#升级-openssl","children":[]},{"level":3,"title":"编译 Python3","slug":"编译-python3","link":"#编译-python3","children":[]}]},{"level":2,"title":"经历","slug":"经历","link":"#经历","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":4.1,"words":1231},"filePathRelative":"dft-learning/02.Install/33.linux-install-python-for-nonRoot.md","localizedDate":"2020年11月21日","excerpt":"

    为学校的 linux 安装 python3

    \\n

    由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。

    \\n

    步骤放在最前面

    \\n

    升级 OPENSSL

    \\n
    cd /tmp\\nwget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz\\ntar -xvf openssl-1.1.1d.tar.gz\\ncd openssl-1.1.1d\\n./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib  #注意添加no-zlib\\nmake && make install\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-mm_FQLj7.js b/assets/index.html-mm_FQLj7.js new file mode 100644 index 00000000..81751bbd --- /dev/null +++ b/assets/index.html-mm_FQLj7.js @@ -0,0 +1,7 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as s,d as e}from"./app-Mf7X6hWu.js";const t={},c=e(`

    使用默认 GCC 编译 gnuplot

    无需,学校已安装。

    cd /tmp
    +wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz
    +tar xzvf gnuplot-5.2.5.tar.gz 
    +cd gnuplot-5.2.5/
    +./configure --prefix=/public/home/zjb/app/gunplot/
    +make & make install
    +

    第五行等号后面是你的目标安装路径

    `,4),l=[c];function i(o,p){return a(),s("div",null,l)}const u=n(t,[["render",i],["__file","index.html.vue"]]);export{u as default}; diff --git a/assets/index.html-nM1gbzHG.js b/assets/index.html-nM1gbzHG.js new file mode 100644 index 00000000..93ed3ad2 --- /dev/null +++ b/assets/index.html-nM1gbzHG.js @@ -0,0 +1 @@ +import{_ as s}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as i,c,a as e,e as n,w as l,b as o}from"./app-Mf7X6hWu.js";const d={},_=e("h1",{id:"软件使用",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#软件使用","aria-hidden":"true"},"#"),o(" 软件使用")],-1),h=e("p",null,"这里存放一些软件方面的笔记。",-1),u=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),o(" 目录")],-1),p={href:"https://zotero-cn.github.io/zotero",target:"_blank",rel:"noopener noreferrer"};function f(m,x){const r=t("RouterLink"),a=t("ExternalLinkIcon");return i(),c("div",null,[_,h,u,e("ul",null,[e("li",null,[n(r,{to:"/software/windows-applications.html"},{default:l(()=>[o("自用 Windows Apps 列表")]),_:1})]),e("li",null,[o("Zoero 手册:"),e("a",p,[o("https://zotero-cn.github.io/zotero"),n(a)])])])])}const w=s(d,[["render",f],["__file","index.html.vue"]]);export{w as default}; diff --git a/assets/index.html-nOH8cULF.js b/assets/index.html-nOH8cULF.js new file mode 100644 index 00000000..718446ab --- /dev/null +++ b/assets/index.html-nOH8cULF.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-326d07e0","path":"/characterization/xrd/","title":"XRD","lang":"zh-CN","frontmatter":{"title":"XRD","date":"2022-09-14T12:38:15.000Z","updated":"2022-09-14T14:00:07.000Z","permalink":"/characterization/xrd/","description":"X射线衍射","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/characterization/xrd/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"XRD"}],["meta",{"property":"og:description","content":"X射线衍射"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-10-04T12:31:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-14T12:38:15.000Z"}],["meta",{"property":"article:modified_time","content":"2022-10-04T12:31:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"XRD\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-14T12:38:15.000Z\\",\\"dateModified\\":\\"2022-10-04T12:31:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1664886676000,"updatedTime":1664886676000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.08,"words":23},"filePathRelative":"characterization/x-ray-diffraction.md","localizedDate":"2022年9月14日","excerpt":"

    X射线衍射

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-nexu0sko.js b/assets/index.html-nexu0sko.js new file mode 100644 index 00000000..73dd297b --- /dev/null +++ b/assets/index.html-nexu0sko.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-25eb367b","path":"/dft-learning/pages/ea401e/","title":"为 linux 非 ROOT 用户安装 lrzsz","lang":"zh-CN","frontmatter":{"title":"为 linux 非 ROOT 用户安装 lrzsz","date":"2022-09-12T17:23:31.000Z","permalink":"/dft-learning/pages/ea401e/","category":["Install"],"updated":"2022-09-12T17:45:41.000Z","description":"为 linux 非 ROOT 用户安装 lrzsz lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rz 和 sz 命令进行上传和下载。 如果拥有 ROOT 权限,可以直接执行下述代码安装: yum -y install lrzsz","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/ea401e/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"为 linux 非 ROOT 用户安装 lrzsz"}],["meta",{"property":"og:description","content":"为 linux 非 ROOT 用户安装 lrzsz lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rz 和 sz 命令进行上传和下载。 如果拥有 ROOT 权限,可以直接执行下述代码安装: yum -y install lrzsz"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T17:23:31.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"为 linux 非 ROOT 用户安装 lrzsz\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-12T17:23:31.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"下载并解压","slug":"下载并解压","link":"#下载并解压","children":[]},{"level":2,"title":"配置安装路径","slug":"配置安装路径","link":"#配置安装路径","children":[]},{"level":2,"title":"编译安装","slug":"编译安装","link":"#编译安装","children":[]},{"level":2,"title":"配置当前用户下的系统命令","slug":"配置当前用户下的系统命令","link":"#配置当前用户下的系统命令","children":[]},{"level":2,"title":"配置当前用户的环境变量","slug":"配置当前用户的环境变量","link":"#配置当前用户的环境变量","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":6}]},"readingTime":{"minutes":0.98,"words":293},"filePathRelative":"dft-learning/02.Install/23.linux-install-lrzsz.md","localizedDate":"2022年9月13日","excerpt":"

    为 linux 非 ROOT 用户安装 lrzsz

    \\n

    lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rzsz 命令进行上传和下载。

    \\n

    如果拥有 ROOT 权限,可以直接执行下述代码安装:

    \\n
    yum -y install lrzsz\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-njsAnNKZ.js b/assets/index.html-njsAnNKZ.js new file mode 100644 index 00000000..40a80542 --- /dev/null +++ b/assets/index.html-njsAnNKZ.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-417c1e62","path":"/dft-learning/pages/5e29d2/","title":"MS 在 win2004 及以上一按鼠标就卡住","lang":"zh-CN","frontmatter":{"title":"MS 在 win2004 及以上一按鼠标就卡住","date":"2020-09-26T13:28:10.000Z","permalink":"/dft-learning/pages/5e29d2/","category":["Others"],"updated":"2022-01-16T19:57:47.000Z","description":"Materials Studio 在 Windows2004 及以上假死 一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/5e29d2/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"MS 在 win2004 及以上一按鼠标就卡住"}],["meta",{"property":"og:description","content":"Materials Studio 在 Windows2004 及以上假死 一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-09-26T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"MS 在 win2004 及以上一按鼠标就卡住\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-09-26T13:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.26,"words":78},"filePathRelative":"dft-learning/09.Others/01.MS-NoResponse-win2004.md","localizedDate":"2020年9月26日","excerpt":"

    Materials Studio 在 Windows2004 及以上假死

    \\n

    一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-nmGgGxSe.js b/assets/index.html-nmGgGxSe.js new file mode 100644 index 00000000..9a9e710e --- /dev/null +++ b/assets/index.html-nmGgGxSe.js @@ -0,0 +1,138 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as c,c as d,a as n,b as s,e,d as l}from"./app-Mf7X6hWu.js";const p="/assets/image-02.vasp-opt-20221119172335103-EzAcl7Hu.png",r={},o=n("h1",{id:"结构优化、自洽、非自洽",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#结构优化、自洽、非自洽","aria-hidden":"true"},"#"),s(" 结构优化、自洽、非自洽")],-1),u=n("p",null,"结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。",-1),v=n("p",null,"静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。",-1),m=n("p",null,"非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。",-1),b=n("p",null,[s("本页对"),n("span",{class:"katex"},[n("span",{class:"katex-mathml"},[n("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[n("semantics",null,[n("mrow",null,[n("msub",null,[n("mi",null,"O"),n("mn",null,"2")])]),n("annotation",{encoding:"application/x-tex"},"O_2")])])]),n("span",{class:"katex-html","aria-hidden":"true"},[n("span",{class:"base"},[n("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),n("span",{class:"mord"},[n("span",{class:"mord mathnormal",style:{"margin-right":"0.02778em"}},"O"),n("span",{class:"msupsub"},[n("span",{class:"vlist-t vlist-t2"},[n("span",{class:"vlist-r"},[n("span",{class:"vlist",style:{height:"0.3011em"}},[n("span",{style:{top:"-2.55em","margin-left":"-0.0278em","margin-right":"0.05em"}},[n("span",{class:"pstrut",style:{height:"2.7em"}}),n("span",{class:"sizing reset-size6 size3 mtight"},[n("span",{class:"mord mtight"},"2")])])]),n("span",{class:"vlist-s"},"​")]),n("span",{class:"vlist-r"},[n("span",{class:"vlist",style:{height:"0.15em"}},[n("span")])])])])])])])]),s("进行结构优化、静电自洽、非静电自洽。")],-1),k=l(`

    目录结构

    .
    +├── 1-geo
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   └── vasp.pbs
    +├── 2-scf
    +│   ├── CHGCAR
    +│   ├── EIGENVAL
    +│   ├── INCAR
    +│   ├── KPOINTS -> ../1-geo/KPOINTS
    +│   ├── POSCAR -> ../1-geo/CONTCAR
    +│   ├── POTCAR -> ../1-geo/POTCAR
    +│   └── vasp.pbs
    +└── 3-nscf
    +    ├── CHGCAR    复制自../2-scf/CHGCAR
    +    ├── INCAR
    +    ├── KPOINTS
    +    ├── POSCAR -> ../2-scf/POSCAR
    +    ├── POTCAR -> ../2-scf/POTCAR
    +    └── vasp.pbs
    +    
    +只列出了输入文件和必要的输出文件。
    +

    步骤

    结构优化

    1-geo 文件夹中对结构进行结构优化。

    O2                                      
    +1     
    +10   0    0
    +0   10    0
    +0    0   12
    +O 
    +2
    +Selective dynamics
    +Direct
    +0.50  0.50  0.50   F   F   F
    +0.50  0.50  0.62   F   F   T
    +
    Global Parameters
    + ISTART =  0            (Read existing wavefunction; if there)
    + ISPIN  =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .FALSE.        (Write WAVECAR or not)
    + LCHARG = .FALSE.        (Write CHGCAR or not)
    + ADDGRID= .TRUE.        (Increase grid; helps GGA convergence)
    + NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    +
    +Electronic Relaxation
    + ISMEAR =  0            (Gaussian smearing; metals:1)
    + SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    + NELM   =  60           (Max electronic SCF steps)
    + NELMIN =  4            (Min electronic SCF steps)
    + EDIFF  =  1E-06        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    + NSW    =  30          (Max electronic SCF steps)
    + IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    + ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    + EDIFFG = -2E-02        (Ionic convergence; eV/AA)
    +
    KPT-Resolved Value to Generate K-Mesh: 0.000
    +0
    +Gamma
    +   1   1   1
    +0.0  0.0  0.0
    +

    KPOINTS 和 POTCAR 使用 vaspkit-103 生成

    提交计算,在 stdout 里看到 reached required accuracy - stopping structural energy minimisation 即为收敛。

    得到的 CONTCAR(优化后的结构)见下,CONTCAR 写入的默认是分数坐标,将其转换为笛卡尔坐标后见 CONTCAR_Caresian。

    O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     2
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.5000000000000000   F   F   F
    +  0.5000000000000000  0.5000000000000000  0.6028684362988320   F   F   T
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +
     O2
    +   1.000
    +   10.0000000000000000    0.0000000000000000    0.0000000000000000
    +    0.0000000000000000   10.0000000000000000    0.0000000000000000
    +    0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +    2
    +Selective Dynamics
    +Cartesian
    +    5.0000000000000000    5.0000000000000000    6.0000000000000000    F  F  F
    +    5.0000000000000000    5.0000000000000000    7.2344212355859838    F  F  T
    +
    `,13),h=n("p",null,[s("计算得到的键长为"),n("span",{class:"katex"},[n("span",{class:"katex-mathml"},[n("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[n("semantics",null,[n("mrow",null,[n("mtext",null,"1.234421235585984 "),n("mover",{accent:"true"},[n("mtext",null,"A"),n("mo",null,"˚")])]),n("annotation",{encoding:"application/x-tex"},"\\text{1.234421235585984 \\AA}")])])]),n("span",{class:"katex-html","aria-hidden":"true"},[n("span",{class:"base"},[n("span",{class:"strut",style:{height:"0.9468em"}}),n("span",{class:"mord text"},[n("span",{class:"mord"},"1.234421235585984 "),n("span",{class:"mord accent"},[n("span",{class:"vlist-t"},[n("span",{class:"vlist-r"},[n("span",{class:"vlist",style:{height:"0.9468em"}},[n("span",{style:{top:"-3em"}},[n("span",{class:"pstrut",style:{height:"3em"}}),n("span",{class:"mord"},"A")]),n("span",{style:{top:"-3.2523em"}},[n("span",{class:"pstrut",style:{height:"3em"}}),n("span",{class:"accent-body",style:{left:"-0.375em"}},[n("span",{class:"mord"},"˚")])])])])])])])])])]),s(",与实验值"),n("span",{class:"katex"},[n("span",{class:"katex-mathml"},[n("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[n("semantics",null,[n("mrow",null,[n("mtext",null,"1.2075"),n("mover",{accent:"true"},[n("mtext",null,"A"),n("mo",null,"˚")])]),n("annotation",{encoding:"application/x-tex"},"\\text{1.2075\\AA}")])])]),n("span",{class:"katex-html","aria-hidden":"true"},[n("span",{class:"base"},[n("span",{class:"strut",style:{height:"0.9468em"}}),n("span",{class:"mord text"},[n("span",{class:"mord"},"1.2075"),n("span",{class:"mord accent"},[n("span",{class:"vlist-t"},[n("span",{class:"vlist-r"},[n("span",{class:"vlist",style:{height:"0.9468em"}},[n("span",{style:{top:"-3em"}},[n("span",{class:"pstrut",style:{height:"3em"}}),n("span",{class:"mord"},"A")]),n("span",{style:{top:"-3.2523em"}},[n("span",{class:"pstrut",style:{height:"3em"}}),n("span",{class:"accent-body",style:{left:"-0.375em"}},[n("span",{class:"mord"},"˚")])])])])])])])])])]),s("相近(误差 2.2%)。")],-1),g=n("p",null,[s("也可以将 CONTCAR 使用 VESTA 查看,键长为 1.23442 "),n("span",{class:"katex"},[n("span",{class:"katex-mathml"},[n("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[n("semantics",null,[n("mrow",null,[n("mover",{accent:"true"},[n("mtext",null,"A"),n("mo",null,"˚")])]),n("annotation",{encoding:"application/x-tex"},"\\text{\\AA}")])])]),n("span",{class:"katex-html","aria-hidden":"true"},[n("span",{class:"base"},[n("span",{class:"strut",style:{height:"0.9468em"}}),n("span",{class:"mord text"},[n("span",{class:"mord accent"},[n("span",{class:"vlist-t"},[n("span",{class:"vlist-r"},[n("span",{class:"vlist",style:{height:"0.9468em"}},[n("span",{style:{top:"-3em"}},[n("span",{class:"pstrut",style:{height:"3em"}}),n("span",{class:"mord"},"A")]),n("span",{style:{top:"-3.2523em"}},[n("span",{class:"pstrut",style:{height:"3em"}}),n("span",{class:"accent-body",style:{left:"-0.375em"}},[n("span",{class:"mord"},"˚")])])])])])])])])])]),s("。")],-1),A=l('
    O2-geo-CONTCAR
    O2-geo-CONTCAR

    自洽计算

    2-scf 文件夹中对已优化的结构进行静电自洽。

    1. 将结构优化得到的结果复制过来(CONTCAR 变为 POSCAR、改 INCAR,POTCAR 和 KPOINTS 不改)
    2. 修改 INCAR 使其符合自洽计算的要求
    3. 提交作业
    [zjb@op 2-scf]$ ln -s ../1-geo/CONTCAR POSCAR
    +[zjb@op 2-scf]$ ln -s ../1-geo/POTCAR .
    +[zjb@op 2-scf]$ ln -s ../1-geo/KPOINTS .
    +[zjb@op 2-scf]$ cp ../1-geo/INCAR .
    +[zjb@op 2-scf]$ cp ../1-geo/vasp.pbs .
    +
    +# 修改INCAR
    + NSW    =  0
    + IBRION =  -1
    + LWAVE  = .TRUE.
    + LCHARG = .TRUE.
    +

    提交计算。

    [zjb@op 2-scf]$ cat EIGENVAL 
    +    2    2    1    2
    +  0.6000000E+03  0.1000000E-08  0.1000000E-08  0.1200000E-08  0.5000000E-15
    +  1.000000000000000E-004
    +  CAR 
    + unknown system                          
    +     12      1     12
    + 
    +  0.0000000E+00  0.0000000E+00  0.0000000E+00  0.1000000E+01
    +    1      -32.479163    -31.253398   1.000000   1.000000
    +    2      -20.620813    -18.824373   1.000000   1.000000
    +    3      -13.381535    -12.454501   1.000000   1.000000
    +    4      -13.228318    -11.385151   1.000000   1.000000
    +    5      -13.228318    -11.385151   1.000000   1.000000
    +    6       -6.915025     -4.642110   1.000000   0.000000
    +    7       -6.915024     -4.642110   1.000000   0.000000
    +    8       -0.315761     -0.201192   0.000000   0.000000
    +    9        0.533238      0.741194   0.000000   0.000000
    +   10        0.791404      0.862512   0.000000   0.000000
    +   11        1.120056      1.246772   0.000000   0.000000
    +   12        1.120056      1.246772   0.000000   0.000000
    +

    非自洽计算

    3-nscf 文件夹中进行非自洽计算。

    1. 将自洽计算的 POSCAR(CONTCAR 也行,因为 scf 不改变结构)、POTCAR、INCAR、KPOINTS、CHGCAR 复制过来。
    2. 修改 INCAR 和 KPOINTS。
    3. 提交计算。
    [zjb@op 3-nscf]$ ln -s ../2-scf/POSCAR ../2-scf/POTCAR .
    +[zjb@op 3-nscf]$ cp ../2-scf/INCAR ../2-scf/KPOINTS ../2-scf/CHGCAR ../2-scf/vasp.pbs .
    +

    INCAR 中修改以下

    改:
    + ISTART =  1            (Read existing wavefunction; if there)
    + ICHARG =  11           (Non-self-consistent: GGA/LDA band structures)
    + ISMEAR =  0            (Gaussian smearing; metals:1)
    + SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +
    +删:
    +# EDIFFG = -2E-02       (Ionic convergence; eV/AA)
    +
    +增:
    +DOS
    + NEDOS  = 6000
    + LORBIT = 11 
    +

    KPOINTS 重新生成,但是这次我没动 K 点(主要是不知道应该改成啥)。

    提交计算。

    参考

    `,16),x={href:"https://blog.csdn.net/kyang_823/article/details/59110848",target:"_blank",rel:"noopener noreferrer"},C={href:"https://cndaqiang.github.io/2018/01/23/vasp-step1/",target:"_blank",rel:"noopener noreferrer"},R={href:"https://blog.csdn.net/flowingsand/article/details/103656692",target:"_blank",rel:"noopener noreferrer"};function f(y,O){const a=t("ExternalLinkIcon");return c(),d("div",null,[o,u,v,m,b,k,h,g,A,n("p",null,[n("a",x,[s("VASP 结构优化、静态自洽、非自洽计算"),e(a)])]),n("p",null,[n("a",C,[s("vasp 计算流程-结构优化"),e(a)])]),n("p",null,[n("a",R,[s("【vasp 笔记】结构优化(结构弛豫)"),e(a)])])])}const S=i(r,[["render",f],["__file","index.html.vue"]]);export{S as default}; diff --git a/assets/index.html-oCsFLaio.js b/assets/index.html-oCsFLaio.js new file mode 100644 index 00000000..b1317f63 --- /dev/null +++ b/assets/index.html-oCsFLaio.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-290994d6","path":"/dft-learning/pages/06c8b9/","title":"计算常用软件","lang":"zh-CN","frontmatter":{"title":"计算常用软件","date":"2020-10-31T13:28:10.000Z","permalink":"/dft-learning/pages/06c8b9/","updated":"2022-09-12T20:05:18.000Z","description":"计算常用软件 本列表中,对于完成课程所必需使用的软件,标注为 (Required);可选安装的软件,标注为 (Optional)。 对于 Windows 端的程序,部分关键的安装步骤展示在第二节。 For Windows 建模及可视化软件 (Required) Materials Studio VESTA:官网 / 下载 GaussView:高斯 (Optional) SSH 客户端 (Required) XShell:官网找教育版 WindTerm:集成 X11 server,免费。 文件传输工具 (Required) XFTP WinSCP X Server (Required) Xming:下载 XManager 开发环境:Python (Required)(含 ase 包) ASE:官网 / 安装见 windows-ase-install.md 文本编辑器 (Optional) Notepad++ VS Code Markdown 编辑器(Optional) Typora","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/06c8b9/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"计算常用软件"}],["meta",{"property":"og:description","content":"计算常用软件 本列表中,对于完成课程所必需使用的软件,标注为 (Required);可选安装的软件,标注为 (Optional)。 对于 Windows 端的程序,部分关键的安装步骤展示在第二节。 For Windows 建模及可视化软件 (Required) Materials Studio VESTA:官网 / 下载 GaussView:高斯 (Optional) SSH 客户端 (Required) XShell:官网找教育版 WindTerm:集成 X11 server,免费。 文件传输工具 (Required) XFTP WinSCP X Server (Required) Xming:下载 XManager 开发环境:Python (Required)(含 ase 包) ASE:官网 / 安装见 windows-ase-install.md 文本编辑器 (Optional) Notepad++ VS Code Markdown 编辑器(Optional) Typora"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-13T04:22:11.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-10-31T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-13T04:22:11.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"计算常用软件\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-10-31T13:28:10.000Z\\",\\"dateModified\\":\\"2022-09-13T04:22:11.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"For Windows","slug":"for-windows","link":"#for-windows","children":[]},{"level":2,"title":"For Linux","slug":"for-linux","link":"#for-linux","children":[]}],"git":{"createdTime":1663042931000,"updatedTime":1663042931000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.19,"words":356},"filePathRelative":"dft-learning/02.Install/00.requirements.md","localizedDate":"2020年10月31日","excerpt":"

    计算常用软件

    \\n

    本列表中,对于完成课程所必需使用的软件,标注为 (Required);可选安装的软件,标注为 (Optional)

    \\n

    对于 Windows 端的程序,部分关键的安装步骤展示在第二节。

    \\n

    For Windows

    \\n
      \\n
    • 建模及可视化软件 (Required)\\n
        \\n
      • Materials Studio
      • \\n
      • VESTA:官网 / 下载
      • \\n
      • GaussView:高斯 (Optional)
      • \\n
      \\n
    • \\n
    • SSH 客户端 (Required)\\n\\n
    • \\n
    • 文件传输工具 (Required)\\n
        \\n
      • XFTP
      • \\n
      • WinSCP
      • \\n
      \\n
    • \\n
    • X Server (Required)\\n
        \\n
      • Xming:下载
      • \\n
      • XManager
      • \\n
      \\n
    • \\n
    • 开发环境:Python (Required)(含 ase 包)\\n\\n
    • \\n
    • 文本编辑器 (Optional)\\n
        \\n
      • Notepad++
      • \\n
      • VS Code
      • \\n
      \\n
    • \\n
    • Markdown 编辑器(Optional)\\n
        \\n
      • Typora
      • \\n
      \\n
    • \\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-oNRx-z03.js b/assets/index.html-oNRx-z03.js new file mode 100644 index 00000000..612ba1a4 --- /dev/null +++ b/assets/index.html-oNRx-z03.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-5f5c14e3","path":"/dft-learning/pages/77a22e/","title":"理论知识","lang":"zh-CN","frontmatter":{"title":"理论知识","date":"2020-11-17T19:28:10.000Z","permalink":"/dft-learning/pages/77a22e/","category":["Theory"],"updated":"2022-01-16T19:55:14.000Z","description":"关于材料计算 不写了,反正写了也看不懂 — — ! 嘻 关于理论计算 啊这...我也不知道啊... 插播一个我觉得还不错的视频 谈谈理论计算如何入门(上) | BV1z7411f7ra ,UP是刘锦程博士:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/77a22e/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"理论知识"}],["meta",{"property":"og:description","content":"关于材料计算 不写了,反正写了也看不懂 — — ! 嘻 关于理论计算 啊这...我也不知道啊... 插播一个我觉得还不错的视频 谈谈理论计算如何入门(上) | BV1z7411f7ra ,UP是刘锦程博士:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-17T19:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"理论知识\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-17T19:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"关于理论计算","slug":"关于理论计算","link":"#关于理论计算","children":[]},{"level":2,"title":"第一性原理","slug":"第一性原理","link":"#第一性原理","children":[]},{"level":2,"title":"密度泛函理论","slug":"密度泛函理论","link":"#密度泛函理论","children":[]},{"level":2,"title":"局域密度近似","slug":"局域密度近似","link":"#局域密度近似","children":[]},{"level":2,"title":"自洽场","slug":"自洽场","link":"#自洽场","children":[]},{"level":2,"title":"过渡态理论","slug":"过渡态理论","link":"#过渡态理论","children":[]},{"level":2,"title":"Todo","slug":"todo","link":"#todo","children":[]}],"git":{"createdTime":1662968256000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.53,"words":158},"filePathRelative":"dft-learning/01.Theory/README.md","localizedDate":"2020年11月18日","excerpt":"

    关于材料计算

    \\n

    不写了,反正写了也看不懂 — — !

    \\n

    \\n

    关于理论计算

    \\n

    啊这...我也不知道啊...

    \\n

    插播一个我觉得还不错的视频 谈谈理论计算如何入门(上) | BV1z7411f7ra ,UP是刘锦程博士:

    \\n
    \\n \\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-oRLXZLbz.js b/assets/index.html-oRLXZLbz.js new file mode 100644 index 00000000..0090ce81 --- /dev/null +++ b/assets/index.html-oRLXZLbz.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-5934b528","path":"/dft-learning/pages/ae5253/","title":"作业:CO吸附在Au上建模","lang":"zh-CN","frontmatter":{"title":"作业:CO吸附在Au上建模","date":"2020-09-28T12:21:10.000Z","category":["Materials-Studio"],"permalink":"/dft-learning/pages/ae5253/","updated":"2022-01-16T19:45:35.000Z","description":"作业:CO吸附在Au上建模 任务:建立CO在Au 111 晶面的吸附模型 步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。 结果: Model of CO adsorption on Au","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/ae5253/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"作业:CO吸附在Au上建模"}],["meta",{"property":"og:description","content":"作业:CO吸附在Au上建模 任务:建立CO在Au 111 晶面的吸附模型 步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。 结果: Model of CO adsorption on Au"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"作业:CO吸附在Au上建模"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-09-28T12:21:10.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"作业:CO吸附在Au上建模\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-09-28T12:21:10.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662968799000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":0.32,"words":95},"filePathRelative":"dft-learning/04.Materials-Studio/11.task-model-of-CO-absorption-on-Au copy.md","localizedDate":"2020年9月28日","excerpt":"

    作业:CO吸附在Au上建模

    \\n

    任务:建立CO在Au 111 晶面的吸附模型

    \\n

    步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。

    \\n

    结果:

    \\n
    Model of CO adsorption on Au
    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-oqVK2nLJ.js b/assets/index.html-oqVK2nLJ.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-oqVK2nLJ.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-pMaLkGBA.js b/assets/index.html-pMaLkGBA.js new file mode 100644 index 00000000..4442acc1 --- /dev/null +++ b/assets/index.html-pMaLkGBA.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o,c as n,a as e,b as a}from"./app-Mf7X6hWu.js";const c={},r=e("h1",{id:"python",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#python","aria-hidden":"true"},"#"),a(" Python")],-1),s=e("p",null,"这个文件夹放置在学习/使用 Python 过程中的文档和踩坑。",-1),_=[r,s];function d(h,i){return o(),n("div",null,_)}const m=t(c,[["render",d],["__file","index.html.vue"]]);export{m as default}; diff --git a/assets/index.html-pgLCj_kZ.js b/assets/index.html-pgLCj_kZ.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-pgLCj_kZ.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-pjns0mnY.js b/assets/index.html-pjns0mnY.js new file mode 100644 index 00000000..d5f1e70d --- /dev/null +++ b/assets/index.html-pjns0mnY.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-7c106e16","path":"/dft-learning/pages/vasp-files/","title":"VASP 输入输出文件","lang":"zh-CN","frontmatter":{"title":"VASP 输入输出文件","date":"2022-09-12T23:00:13.000Z","updated":"2022-09-14T14:28:58.000Z","permalink":"/dft-learning/pages/vasp-files/","article":false,"index":false,"timeline":false,"description":"VASP 输入输出文件","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/vasp-files/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP 输入输出文件"}],["meta",{"property":"og:description","content":"VASP 输入输出文件"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-14T15:08:45.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T23:00:13.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-14T15:08:45.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"VASP 输入输出文件\\",\\"description\\":\\"VASP 输入输出文件\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663168125000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":0.13,"words":39},"filePathRelative":"dft-learning/05.VASP/01.VASP输入输出文件/README.md","localizedDate":"2022年9月13日","excerpt":"

    VASP 输入输出文件

    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-pz5iu5w5.js b/assets/index.html-pz5iu5w5.js new file mode 100644 index 00000000..22847c7b --- /dev/null +++ b/assets/index.html-pz5iu5w5.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as n,c,e as r}from"./app-Mf7X6hWu.js";const a={};function _(s,l){const e=t("AutoCatalog");return n(),c("div",null,[r(e)])}const i=o(a,[["render",_],["__file","index.html.vue"]]);export{i as default}; diff --git a/assets/index.html-qVk9y967.js b/assets/index.html-qVk9y967.js new file mode 100644 index 00000000..bfd64984 --- /dev/null +++ b/assets/index.html-qVk9y967.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-58dac1cf","path":"/category/vasp/","title":"VASP 分类","lang":"zh-CN","frontmatter":{"title":"VASP 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"VASP","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/vasp/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"VASP 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"VASP 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-qf687FXZ.js b/assets/index.html-qf687FXZ.js new file mode 100644 index 00000000..c29f1d4c --- /dev/null +++ b/assets/index.html-qf687FXZ.js @@ -0,0 +1,7 @@ +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as n,c as t,a as e,b as o,e as c,d as i}from"./app-Mf7X6hWu.js";const s={},l=i(`

    Bader 电荷分析

    Todo

    理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。

    步骤

    结构优化

    自洽

    LAECHG =.TRUE.
    +LCHARG = .TRUE.
    +NSW    = 0
    +IBRION = -1 (前面有了NSW = 0, 这个也可以不设置)
    +

    提示

    AECCAR0AECCAR2 是由 LAECHG=.TRUE. 控制输出的。

    Bader

    chgsum.pl AECCAR0 AECCAR2   #output: CHGCAR_sum
    +bader CHGCAR -ref CHGCAR_sum
    +

    生成以下输出文件:ACF.datBCF.datAtomVolumes.dat

    ACF.dat 包含每个原子的坐标,根据 Bader 分区与其相关的电荷,根据 Bader 分区的整体百分比以及到表面的最小距离。如果使用了伪电位,则应将该距离与核心区域的最大截止半径进行比较。

    BCF.dat 包含每个 Bader 最大值的坐标,该体积内的电荷,最近的原子以及到该原子的距离。

    AtomVolumes.dat 包含已分配给每个原子的每个卷的编号。

    数据分析

    Todo

    参考资料

    `,17),h={href:"https://www.cnblogs.com/ljd4you/p/10390512.html",target:"_blank",rel:"noopener noreferrer"};function u(p,m){const a=r("ExternalLinkIcon");return n(),t("div",null,[l,e("ul",null,[e("li",null,[e("a",h,[o("https://www.cnblogs.com/ljd4you/p/10390512.html"),c(a)])])])])}const x=d(s,[["render",u],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-r4KFp5Pr.js b/assets/index.html-r4KFp5Pr.js new file mode 100644 index 00000000..0ce7da09 --- /dev/null +++ b/assets/index.html-r4KFp5Pr.js @@ -0,0 +1 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as t,c}from"./app-Mf7X6hWu.js";const o={};function r(n,_){return t(),c("div")}const f=e(o,[["render",r],["__file","index.html.vue"]]);export{f as default}; diff --git a/assets/index.html-rLpguDHG.js b/assets/index.html-rLpguDHG.js new file mode 100644 index 00000000..9d9f739a --- /dev/null +++ b/assets/index.html-rLpguDHG.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-4022cd1f","path":"/characterization/raman/","title":"Raman","lang":"zh-CN","frontmatter":{"title":"Raman","date":"2022-09-16T14:37:01.000Z","updated":"2022-09-16T14:48:21.000Z","permalink":"/characterization/raman/","description":"Raman 波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm−1cm^{-1}cm−1)。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/characterization/raman/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Raman"}],["meta",{"property":"og:description","content":"Raman 波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm−1cm^{-1}cm−1)。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-16T14:37:01.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Raman\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-16T14:37:01.000Z\\",\\"dateModified\\":\\"2022-09-16T13:53:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.36,"words":108},"filePathRelative":"characterization/raman.md","localizedDate":"2022年9月16日","excerpt":"

    Raman

    \\n

    波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm1cm^{-1}cm1)。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-rPafY0w8.js b/assets/index.html-rPafY0w8.js new file mode 100644 index 00000000..8d7aae40 --- /dev/null +++ b/assets/index.html-rPafY0w8.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-68581533","path":"/category/%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/","title":"反应路径 分类","lang":"zh-CN","frontmatter":{"title":"反应路径 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"反应路径","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/%E5%8F%8D%E5%BA%94%E8%B7%AF%E5%BE%84/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"反应路径 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"反应路径 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-rQc8Nrss.js b/assets/index.html-rQc8Nrss.js new file mode 100644 index 00000000..b7ec2378 --- /dev/null +++ b/assets/index.html-rQc8Nrss.js @@ -0,0 +1,37 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as i,d as a}from"./app-Mf7X6hWu.js";const s={},d=a(`

    分子动力学入门

    课上:八个水分子为例的分子动力学。

    分子动力学

    步骤

    建模

    在 MS 中建立模型,上传,vaspkit-106。

    结构优化

    INCAR 为:

    详情
    [zjb@op geo2]$ cat INCAR 
    +Global Parameters
    + ISTART =  0            (Read existing wavefunction; if there)
    +# ISPIN =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .FALSE.        (Write WAVECAR or not)
    + LCHARG = .FALSE.        (Write CHGCAR or not)
    + NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    + ALGO   = Fast
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +EDIFF  =  1E-04        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +POTIM  =  0.3
    +#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -1E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +
    +

    需要把 walltime 加长,课上演示失败的原因就是到了 walltime。我加到了 01:30:00。

    疑惑:怎样迅速达到收敛?这个硬生生跑完了 100 步...

    分子动力学

    在结构优化基础上,对 INCAR 做如下修改

    Ionic Relaxation
    + NSW    =  100          (Max electronic SCF steps)
    + IBRION =  0            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    + POTIM  =  1
    + SMASS  =  0
    + TEBEG  =  350
    + TEEND  =  350
    +# ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +# EDIFFG = -1E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +

    结果分析

    使用 grep T= stdout 查看数据。使用 grep T= stdout > md-data.txt 将数据保存到 md-data.txt 文件,下载,导入 Origin。

    `,16),r=[d];function l(t,c){return n(),i("div",null,r)}const m=e(s,[["render",l],["__file","index.html.vue"]]);export{m as default}; diff --git a/assets/index.html-s-wMahwO.js b/assets/index.html-s-wMahwO.js new file mode 100644 index 00000000..4cf8711e --- /dev/null +++ b/assets/index.html-s-wMahwO.js @@ -0,0 +1,196 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as s,d as e}from"./app-Mf7X6hWu.js";const l={},i=e(`

    Linux 常用命令

    命令说明
    cd切换目录
    ls列出文件和目录
    ll同上
    mkdir新建文件夹
    cp复制
    mv移动
    rm删除文件
    rmdir删除目录
    pwd当前目录
    cat查看文件全文
    tail预览文件后几行
    tar压缩/解压缩

    cd:Change Directory

    切换当前目录,可以是绝对路径,也可以是相对路径。如:

    cd /root/Docements # 切换到目录/root/Docements
    +cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录  
    +cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录
    +
    命令解释
    cd进入用户主目录
    cd ~进入用户主目录
    cd -返回进入此目录之前所在目录
    cd $OLDPWD同上,但前者会屏显上次的目录,这个不会
    cd ..返回上一级目录
    cd ../..返回上两级目录
    cd !$把上个命令的参数作为 cd 参数使用
    cd /进入根目录
    cd .当前目录

    ls 与 ll:list

    ls:查看文件与目录,参数如下

    -l :列出长数据串,包含文件的属性与权限数据等
    +-a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
    +-d :仅列出目录本身,而不是列出目录的文件数据
    +-h :将文件容量以较易读的方式(GB,kB等)列出来
    +-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
    +

    值得一提的是 -l 参数,它可以用 ll 来简化,如下例:

    [zjb@op app]$ ls
    +get-pip.py  pot_database  python38  Python-3.8.5  scripts  tgz_backup  vaspkit.1.12  vtstscripts-933
    +
    +[zjb@op app]$ ls -l
    +total 1875
    +-rw-r--r--  1 zjb energy 1886796 Oct 18 06:00 get-pip.py
    +drwxr-xr-x  4 zjb energy    4096 Dec  1  2018 pot_database
    +drwxr-xr-x  6 zjb energy    4096 Oct 29 14:59 python38
    +drwxr-xr-x 18 zjb energy    4096 Oct 29 14:57 Python-3.8.5
    +drwxr-xr-x  2 zjb energy    4096 Oct 29 15:11 scripts
    +drwxr-xr-x  2 zjb energy    4096 Oct 31 17:48 tgz_backup
    +drwxr-xr-x  7 zjb energy    4096 Oct  9 16:50 vaspkit.1.12
    +drwxr-xr-x  5 zjb energy    8192 Dec 28  2017 vtstscripts-933
    +
    +[zjb@op app]$ ll
    +total 1875
    +-rw-r--r--  1 zjb energy 1886796 Oct 18 06:00 get-pip.py
    +drwxr-xr-x  4 zjb energy    4096 Dec  1  2018 pot_database
    +drwxr-xr-x  6 zjb energy    4096 Oct 29 14:59 python38
    +drwxr-xr-x 18 zjb energy    4096 Oct 29 14:57 Python-3.8.5
    +drwxr-xr-x  2 zjb energy    4096 Oct 29 15:11 scripts
    +drwxr-xr-x  2 zjb energy    4096 Oct 31 17:48 tgz_backup
    +drwxr-xr-x  7 zjb energy    4096 Oct  9 16:50 vaspkit.1.12
    +drwxr-xr-x  5 zjb energy    8192 Dec 28  2017 vtstscripts-933
    +

    mkdir:Make Directory

    创建文件夹

    mkdir <文件夹名称>
    +

    例 行 9

    [zjb@op ~]$ ll
    +total 21
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +[zjb@op ~]$ mkdir hahahahahahahha
    +[zjb@op ~]$ ll
    +total 25
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:33 hahahahahahahha
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +

    cp:Copy

    复制文件(夹),copy 之意,它还可以把多个文件一次性地复制到一个目录下,它的常用参数如下:

    -a :将文件的特性一起复制
    +-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
    +-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
    +-r :递归持续复制,用于目录的复制行为
    +-u :目标文件与源文件有差异时才会复制
    +

    例如:

    cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2
    +cp file1 file2 file3 dir/ #把文件file1、file2、file3复制到目录dir中
    +

    mv:Move

    该命令用于移动文件、目录或更名,move 之意,它的常用参数如下:

    -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    +-i :若目标文件已经存在,就会询问是否覆盖
    +-u :若目标文件已经存在,且比目标文件新,才会更新
    +

    注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。

    例如:

    mv file1 file2 file3 dir/   # 把文件file1、file2、file3移动到目录dir中
    +mv file1 file2              # 把文件file1重命名为file2
    +

    rm:Remove

    该命令用于删除文件或目录,remove,它的常用参数如下:

    -f :就是force的意思,忽略不存在的文件,不会出现警告消息
    +-i :互动模式,在删除前会询问用户是否操作
    +-r :递归删除,最常用于目录删除,它是一个非常危险的参数
    +
    [zjb@op ~]$ ll
    +total 25
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:33 hahahahahahahha
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +[zjb@op ~]$ rm -r hahahahahahahha/
    +[zjb@op ~]$ ll
    +total 21
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +

    rmdir:Remove Directory

    删除指定目录。要么用 rm -r <dir> 要么用 rmdir <dir>。更建议用 rmdir

    pwd:Print Working Directory

    打印当前工作路径。绝对路径。

    [zjb@op utilities]$ pwd
    +/public/home/zjb/app/vaspkit.1.12/utilities
    +

    cat:concatenate and print files

    该命令用于查看文本文件的内容,后接要查看的文件名。通常可用管道与 more 和 less 一起使用,从而可以一页页地查看数据。

    [zjb@op utilities]$ cat hello.sh 
    +#!/bin/bash
    +echo "I love you"
    +[zjb@op utilities]$ 
    +

    tar

    该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如 gzip 和 bzip 等)进行压缩和解压。它的常用参数如下:

    -c :新建打包文件
    +-t :查看打包文件的内容含有哪些文件名
    +-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
    +-j :通过bzip2的支持进行压缩/解压缩
    +-z :通过gzip的支持进行压缩/解压缩
    +-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
    +-f filename :filename为要处理的文件
    +-C dir :指定压缩/解压缩的目录dir
    +

    通常只需要记住下面三条命令即可:

    压缩:tar -zcvf filename.tar.gz 要被处理的文件或目录名称
    +查询:tar -tvf filename.tar
    +解压:tar -zxvf filename.tar.gz
    +      tar -jxvf xx.tar.bz2
    +

    注:文件名并不定要以后缀 tar.gz 结尾,这里主要是为了说明使用的压缩程序为 gzip。后缀也可是 .tar.tar.bz2

    grep

    该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为

    grep [-acinv] [--color=auto] '查找字符串' filename
    +

    它的常用参数如下:

    -a :将binary文件以text文件的方式查找数据
    +-c :计算找到‘查找字符串’的次数
    +-i :忽略大小写的区别,即把大小写视为相同
    +-v :反向选择,即显示出没有‘查找字符串’内容的那一行
    +
    # 例如:
    +# 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色
    +grep --color=auto 'MANPATH' /etc/man.config
    +# 把ls -l的输出中包含字母file(不区分大小写)的内容输出
    +ls -l | grep -i file
    +

    chown

    该命令用于改变文件的所有者,与 chgrp 命令的使用方法相同,只是修改的文件属性不同,不再详述。

    chmod

    该命令用于改变文件的权限,一般的用法如下:

    chmod [-R] xyz 文件或目录
    +-R:进行递归的持续更改,即连同子目录下的所有文件都会更改
    +

    同时,chmod 还可以使用 u(user)、g(group)、o(other)、a(all)和 +(加入)、-(删除)、=(设置)跟 rwx 搭配来对文件的权限进行更改。

    # 例如:
    +chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x
    +chmod g+w file # 向file的文件权限中加入用户组可写权限
    +

    find

    find 是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:

    find [PATH] [option] [action]
    +
    +# 与时间有关的参数:
    +-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
    +-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
    +-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
    +-newer file : 列出比file还要新的文件名
    +# 例如:
    +find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件
    +
    +# 与用户或用户组名有关的参数:
    +-user name : 列出文件所有者为name的文件
    +-group name : 列出文件所属用户组为name的文件
    +-uid n : 列出文件所有者为用户ID为n的文件
    +-gid n : 列出文件所属用户组为用户组ID为n的文件
    +# 例如:
    +find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件
    +
    +# 与文件权限及名称有关的参数:
    +-name filename :找出文件名为filename的文件
    +-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
    +-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
    +             目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
    +-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
    +-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
    +-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
    +# 例如:
    +find / -name passwd # 查找文件名为passwd的文件
    +find . -perm 0755 # 查找当前目录中文件权限的0755的文件
    +find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte
    +

    ps

    该命令用于将某个时间点的进程运行情况选取下来并输出,process 之意,它的常用参数如下:

    -A :所有的进程均显示出来
    +-a :不与terminal有关的所有进程
    +-u :有效用户的相关进程
    +-x :一般与a参数一起使用,可列出较完整的信息
    +-l :较长,较详细地将PID的信息列出
    +

    其实我们只要记住 ps 一般使用的命令参数搭配即可,它们并不多,如下:

    ps aux # 查看系统所有的进程数据
    +ps ax # 查看不与terminal有关的所有进程
    +ps -lA # 查看系统所有的进程数据
    +ps axjf # 查看连同一部分进程树状态
    +

    kill

    该命令用于向某个工作(%jobnumber)或者是某个 PID(数字)传送一个信号,它通常与 ps 和 jobs 命令一起使用,它的基本语法如下:

    kill -signal PID
    +

    signal 的常用参数如下:

    注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。

    1:SIGHUP,启动被终止的进程
    +2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
    +9:SIGKILL,强制中断一个进程的进行
    +15:SIGTERM,以正常的结束进程方式来终止进程
    +17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
    +

    例如:

    # 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程
    +kill -SIGTERM %1 
    +# 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得
    +kill -SIGHUP PID
    +

    killall

    该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:

    killall [-iIe] [command name]
    +

    它的参数如下:

    -i :交互式的意思,若需要删除时,会询问用户
    +-e :表示后面接的command name要一致,但command name不能超过15个字符
    +-I :命令名称忽略大小写
    +# 例如:
    +killall -SIGHUP syslogd # 重新启动syslogd
    +

    file

    该命令用于判断接在 file 命令后的文件的基本数据,因为在 Linux 下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了,它的用法非常简单,基本语法如下:

    file filename
    +#例如:
    +file ./test
    +

    chgrp

    该命令用于改变文件所属用户组,它的使用非常简单,它的基本用法如下:

    chgrp [-R] dirname/filename
    +-R :进行递归的持续对所有文件和子目录更改
    +# 例如:
    +chgrp users -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users
    +

    gcc

    对于一个用 Linux 开发 C 程序的人来说,这个命令就非常重要了,它用于把 C 语言的源程序文件,编译成可执行程序,由于 g++ 的很多参数跟它非常相似,所以这里只介绍 gcc 的参数,它的常用参数如下:

    -o :output之意,用于指定生成一个可执行文件的文件名
    +-c :用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序
    +-I :增加编译时搜索头文件的路径
    +-L :增加编译时搜索静态连接库的路径
    +-S :把源文件生成汇编代码文件
    +-lm:表示标准库的目录中名为libm.a的函数库
    +-lpthread :连接NPTL实现的线程库
    +-std= :用于指定把使用的C语言的版本
    +
    +# 例如:
    +# 把源文件test.c按照c99标准编译成可执行程序test
    +gcc -o test test.c -lm -std=c99
    +#把源文件test.c转换为相应的汇编程序源文件test.s
    +gcc -S test.c
    +

    time

    该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个 time 即可,例如:

    time ./process
    +time ps aux
    +

    在程序或命令运行结束后,在最后输出了三个时间,它们分别是:

    user:用户 CPU 时间,命令执行完成花费的用户 CPU 时间,即命令在用户态中执行时间总和;

    system:系统 CPU 时间,命令执行完成花费的系统 CPU 时间,即命令在核心态中执行时间总和;

    real:实际时间,从 command 命令行开始执行到运行终止的消逝时间;

    注:用户 CPU 时间和系统 CPU 时间之和为 CPU 时间,即命令占用 CPU 执行的时间总和。实际时间要大于 CPU 时间,因为 Linux 是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。

    `,96),r=[i];function p(t,c){return a(),s("div",null,r)}const m=n(l,[["render",p],["__file","index.html.vue"]]);export{m as default}; diff --git a/assets/index.html-s18gwDEr.js b/assets/index.html-s18gwDEr.js new file mode 100644 index 00000000..d1a9e384 --- /dev/null +++ b/assets/index.html-s18gwDEr.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-1bdaec70","path":"/dft-learning/pages/","title":"Pages","lang":"zh-CN","frontmatter":{"title":"Pages","article":false,"feed":false,"sitemap":false,"description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Pages"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Pages\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":1},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-sI6EOuhl.js b/assets/index.html-sI6EOuhl.js new file mode 100644 index 00000000..874914f7 --- /dev/null +++ b/assets/index.html-sI6EOuhl.js @@ -0,0 +1 @@ +import{_ as t}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as l,c as n,a as s,b as a}from"./app-Mf7X6hWu.js";const e={},m=s("h1",{id:"raman",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#raman","aria-hidden":"true"},"#"),a(" Raman")],-1),c=s("p",null,[a("波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米("),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"c"),s("msup",null,[s("mi",null,"m"),s("mrow",null,[s("mo",null,"−"),s("mn",null,"1")])])]),s("annotation",{encoding:"application/x-tex"},"cm^{-1}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8141em"}}),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"m"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.8141em"}},[s("span",{style:{top:"-3.063em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"−"),s("span",{class:"mord mtight"},"1")])])])])])])])])])])]),a(")。")],-1),i=s("p",null,"1 厘米内的周波数少了,当然是每个周波的长度增加了,即向长波方向移动了(红移)。反之就是蓝移了。",-1),o=s("p",null,"偏移:",-1),r=s("ul",null,[s("li",null,"高波数 -> 蓝移"),s("li",null,"低波数 -> 红移")],-1),h=[m,c,i,o,r];function p(d,u){return l(),n("div",null,h)}const g=t(e,[["render",p],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-sKlVMgw1.js b/assets/index.html-sKlVMgw1.js new file mode 100644 index 00000000..cda5dabd --- /dev/null +++ b/assets/index.html-sKlVMgw1.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as a,c as i,a as t,b as e,e as n,d as o}from"./app-Mf7X6hWu.js";const d={},h=t("h1",{id:"csl-1-0-2-规范",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#csl-1-0-2-规范","aria-hidden":"true"},"#"),e(" CSL 1.0.2 规范")],-1),c=t("blockquote",null,[t("p",null,"[!DONE] 此页面于 2022-8-2 已校对完成。")],-1),_={href:"https://twitter.com/rintzezelle",target:"_blank",rel:"noopener noreferrer"},p={href:"https://twitter.com/bmwiernik",target:"_blank",rel:"noopener noreferrer"},u=t("p",null,"其他贡献者:Julien Gonzalez、Sebastian Karcher、Sylvester Keil、Cormac Relf、Lars Willighagen and other CSL contributors.",-1),f={href:"https://github.com/ZMAlt",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/northword",target:"_blank",rel:"noopener noreferrer"},b={href:"https://creativecommons.org/licenses/by-sa/4.0/",target:"_blank",rel:"noopener noreferrer"},L=t("h2",{id:"介绍",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),e(" 介绍")],-1),m=t("p",null,"CSL(Citation Style Language,引文样式语言) 是一种基于 XML 的格式,用来描述引文、注释和参考文献的格式,他提供了:",-1),S=t("ul",null,[t("li",null,"一种开放的 (开源的) 格式"),t("li",null,"紧凑、稳定的样式"),t("li",null,"对样式要求的广泛支持"),t("li",null,"样式自动本地化"),t("li",null,"对样式发布和更新的基本支持"),t("li",null,"数千种免费提供的样式(CC BY-SA 授权)")],-1),E={href:"https://citationstyles.org/",target:"_blank",rel:"noopener noreferrer"},C=o('

    翻译习惯

    这里将列出一些常用的术语的译文,并不能保证翻译的准确性。为保持准确性,后文的描述中可能会在译文旁标注原文。

    原文译文备注
    locale files/locale本地化文件区域文件
    styles样式
    citation引文
    macro

    术语

    ',4),O={href:"http://tools.ietf.org/html/rfc2119",target:"_blank",rel:"noopener noreferrer"},k=t("p",null,"[!NOTE] 译者注:关于 IETF RFC 2119 协议",-1),N=t("strong",null,"R",-1),T=t("strong",null,"f",-1),M=t("strong",null,"C",-1),D={href:"http://www.ietf.org/",target:"_blank",rel:"noopener noreferrer"},R=o("

    RFC 2119 协议全文:https://www.ietf.org/rfc/rfc2119.txt

    MUST:必须的。通过它描述的对象,是强制要求的。它与 REQUIRED 和 SHALL 含义相同。

    MUST NOT:不允许的。通过它描述的对象也是强制的。与 SHALL NOT 同义。

    SHOULD:在通常情况下,应当这样。但是,特殊情况下除外。与 RECOMMENDED 同义。

    SHOULD NOT:在通常情况下,不是这样。但是,特殊情况下除外。与 NOT RECOMMENDED 同义。

    MAY:可选的描述对象。与 OPTIONAL 同义。

    ",6);function x(A,w){const r=s("ExternalLinkIcon");return a(),i("div",null,[h,c,t("p",null,[e("主要作者:"),t("a",_,[e("Rintze M. Zelle, PhD"),n(r)]),e("、 "),t("a",p,[e("Brenton M. Wiernik"),n(r)]),e("、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier")]),u,t("p",null,[e("译者:"),t("a",f,[e("Mao Zhou"),n(r)]),e("、 "),t("a",g,[e("Northword"),n(r)]),e("。")]),t("p",null,[e("此工作以 "),t("a",b,[e("Creative Commons Attribution-ShareAlike 4.0 International License"),n(r)]),e(" 授权。")]),L,m,S,t("p",null,[e("有关的其他文档,CSL 议程,样式和本地化文件详见 "),t("a",E,[e("CSL 项目主页"),n(r)]),e("。")]),C,t("p",null,[e("关键字 MUST,MUST NOT,REQUIRED,SHALL,SHALL NOT,SHOULD,SHOULD NOT,RECOMMENDED,MAY 和 OPTIONAL 按 "),t("a",O,[e("IETF RFC 2119"),n(r)]),e(" 中的描述解释。")]),t("blockquote",null,[k,t("p",null,[e("RFC ,即 "),N,e("equest "),T,e("or "),M,e("omments,意见征求稿,是由 "),t("a",D,[e("The Internet Engineering Task Force"),n(r)]),e(" 制作的文档,其中许多是各种 Internet 协议的官方标准。")]),R])])}const F=l(d,[["render",x],["__file","index.html.vue"]]);export{F as default}; diff --git a/assets/index.html-t1DefzMn.js b/assets/index.html-t1DefzMn.js new file mode 100644 index 00000000..bb06b4de --- /dev/null +++ b/assets/index.html-t1DefzMn.js @@ -0,0 +1 @@ +const e=JSON.parse(`{"key":"v-76a4ec21","path":"/dft-learning/pages/6e7240/","title":"分子动力学","lang":"zh-CN","frontmatter":{"title":"分子动力学","date":"2020-12-19T14:05:10.000Z","category":["VASP","分子动力学"],"permalink":"/dft-learning/pages/6e7240/","updated":"2022-01-16T19:57:34.000Z","description":"分子动力学入门 课上:八个水分子为例的分子动力学。 分子动力学 步骤 建模 在 MS 中建立模型,上传,vaspkit-106。 结构优化 INCAR 为: 详情 [zjb@op geo2]$ cat INCAR Global Parameters ISTART = 0 (Read existing wavefunction; if there) # ISPIN = 2 (Spin polarised DFT) ICHARG = 2 (Non-self-consistent: GGA/LDA band structures) LREAL = .FALSE. (Projection operators: automatic) ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .FALSE. (Write WAVECAR or not) LCHARG = .FALSE. (Write CHGCAR or not) NPAR = 4 (Max is no. nodes; don't set for hybrids) ALGO = Fast Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) EDIFF = 1E-04 (SCF energy convergence; in eV) Ionic Relaxation NSW = 100 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) POTIM = 0.3 #ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -1E-02 (Ionic convergence; eV/AA) # ISM = 2 (Symmetry: 0=none; 2=GGA; 3=hybrids)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/6e7240/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"分子动力学"}],["meta",{"property":"og:description","content":"分子动力学入门 课上:八个水分子为例的分子动力学。 分子动力学 步骤 建模 在 MS 中建立模型,上传,vaspkit-106。 结构优化 INCAR 为: 详情 [zjb@op geo2]$ cat INCAR Global Parameters ISTART = 0 (Read existing wavefunction; if there) # ISPIN = 2 (Spin polarised DFT) ICHARG = 2 (Non-self-consistent: GGA/LDA band structures) LREAL = .FALSE. (Projection operators: automatic) ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .FALSE. (Write WAVECAR or not) LCHARG = .FALSE. (Write CHGCAR or not) NPAR = 4 (Max is no. nodes; don't set for hybrids) ALGO = Fast Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) EDIFF = 1E-04 (SCF energy convergence; in eV) Ionic Relaxation NSW = 100 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) POTIM = 0.3 #ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -1E-02 (Ionic convergence; eV/AA) # ISM = 2 (Symmetry: 0=none; 2=GGA; 3=hybrids)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-12-19T14:05:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"分子动力学\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-12-19T14:05:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"分子动力学","slug":"分子动力学","link":"#分子动力学","children":[]},{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"建模","slug":"建模","link":"#建模","children":[]},{"level":3,"title":"结构优化","slug":"结构优化","link":"#结构优化","children":[]},{"level":3,"title":"分子动力学","slug":"分子动力学-1","link":"#分子动力学-1","children":[]},{"level":3,"title":"结果分析","slug":"结果分析","link":"#结果分析","children":[]}]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":1.24,"words":372},"filePathRelative":"dft-learning/05.VASP/05.分子动力学/01.vasp-md.md","localizedDate":"2020年12月19日","excerpt":"

    分子动力学入门

    \\n

    课上:八个水分子为例的分子动力学。

    \\n

    分子动力学

    \\n

    步骤

    \\n

    建模

    \\n

    在 MS 中建立模型,上传,vaspkit-106。

    \\n

    结构优化

    \\n

    INCAR 为:

    \\n
    详情\\n
    [zjb@op geo2]$ cat INCAR \\nGlobal Parameters\\n ISTART =  0            (Read existing wavefunction; if there)\\n# ISPIN =  2           (Spin polarised DFT)\\n ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)\\n LREAL  = .FALSE.          (Projection operators: automatic)\\n ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)\\n PREC   =  Normal       (Precision level)\\n LWAVE  = .FALSE.        (Write WAVECAR or not)\\n LCHARG = .FALSE.        (Write CHGCAR or not)\\n NPAR   = 4           (Max is no. nodes; don't set for hybrids)\\n ALGO   = Fast\\n\\nElectronic Relaxation\\nISMEAR =  0            (Gaussian smearing; metals:1)\\nSIGMA  =  0.05         (Smearing value in eV; metals:0.2)\\nEDIFF  =  1E-04        (SCF energy convergence; in eV)\\n\\nIonic Relaxation\\nNSW    =  100          (Max electronic SCF steps)\\nIBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)\\nPOTIM  =  0.3\\n#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)\\nEDIFFG = -1E-02        (Ionic convergence; eV/AA)\\n# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)\\n\\n
    ","autoDesc":true}`);export{e as data}; diff --git a/assets/index.html-tnSEWlBr.js b/assets/index.html-tnSEWlBr.js new file mode 100644 index 00000000..128a06d9 --- /dev/null +++ b/assets/index.html-tnSEWlBr.js @@ -0,0 +1 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o,c as r,a as e,b as s,e as t}from"./app-Mf7X6hWu.js";const c={},i=e("h1",{id:"晶格常数计算",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#晶格常数计算","aria-hidden":"true"},"#"),s(" 晶格常数计算")],-1),h=e("p",null,"晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3).",-1),m=e("h2",{id:"birch-murnaghan-状态方程拟合",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#birch-murnaghan-状态方程拟合","aria-hidden":"true"},"#"),s(" Birch-Murnaghan 状态方程拟合")],-1),u=e("p",null,"todo...",-1),d={href:"https://www.bigbrosci.com/2018/02/04/ex35/",target:"_blank",rel:"noopener noreferrer"},p=e("h2",{id:"直接优化晶格常数",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#直接优化晶格常数","aria-hidden":"true"},"#"),s(" 直接优化晶格常数")],-1),_=e("p",null,[e("code",null,"ISIF=3"),s(",晶胞中原子的坐标,晶胞形状,以及体系都随着优化的过程发生变化。此时(计算是体积发生了变化)"),e("code",null,"ENCUT"),s(" 必须设置,而且要设置高一些,手册建议是"),e("span",{class:"katex"},[e("span",{class:"katex-mathml"},[e("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[e("semantics",null,[e("mrow",null,[e("mn",null,"1.3"),e("mo",null,"×"),e("mi",null,"m"),e("mi",null,"a"),e("mi",null,"x"),e("mo",{stretchy:"false"},"("),e("mtext",null,"ENCUT of each element"),e("mo",{stretchy:"false"},")")]),e("annotation",{encoding:"application/x-tex"},"1.3 \\times max(\\text{ENCUT of each element})")])])]),e("span",{class:"katex-html","aria-hidden":"true"},[e("span",{class:"base"},[e("span",{class:"strut",style:{height:"0.7278em","vertical-align":"-0.0833em"}}),e("span",{class:"mord"},"1.3"),e("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),e("span",{class:"mbin"},"×"),e("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),e("span",{class:"base"},[e("span",{class:"strut",style:{height:"1em","vertical-align":"-0.25em"}}),e("span",{class:"mord mathnormal"},"ma"),e("span",{class:"mord mathnormal"},"x"),e("span",{class:"mopen"},"("),e("span",{class:"mord text"},[e("span",{class:"mord"},"ENCUT of each element")]),e("span",{class:"mclose"},")")])])]),s("。这是为了尽可能消除 Pulay stress(普莱应力)对计算的影响。")],-1),f=e("p",null,"若只进行体积守恒的弛豫,通常可以忽略 Pulay stress,因为 pulay 应力几乎是均匀的。",-1),g=e("p",null,"这一步不得不增大 ENCUT,(但整个计算 ENCUT 轻易是不变的),是这一步例外,一旦计算完晶格常数,可以在这个基础上统一使用其他的 ENCUT。",-1),x=e("p",null,"POTCAR、KPOINTS、POSCAR 与单点计算一致就好。",-1),b={href:"https://cms.mpi.univie.ac.at/vasp/vasp/Volume_vs_energy_volume_relaxations_Pulay_Stress.html",target:"_blank",rel:"noopener noreferrer"},y=e("p",null,[e("em",null,"If you are doing energy-volume calculations or cell shape and volume relaxations you must understand the Pulay stress, and related problems.")],-1),v=e("p",null,'The Pulay stress arises from the fact that the plane wave basis set is not complete with respect to changes of the volume. Thus, unless absolute convergence with respect to the basis set has been achieved - the diagonal components of the stress tensor are incorrect. This error is often called "Pulay stress". The error is almost isotropic (i.e. the same for each diagonal component), and for a finite basis set it tends to decrease volume compared to fully converged calculations (or calculations with a constant energy cutoff).',-1),w=e("p",null,[s("The Pulay stress and related problems affect the behavior of VASP and any plane wave code in several ways: First it evidently affects the stress tensor calculated by VASP, i.e. the diagonal components of the stress tensor are incorrect, "),e("strong",null,"unless the energy cutoff is very large (ENMAX=1.3 * default is usually a safe setting to obtain a reliable stress tensor).")],-1),T={href:"https://www.bigbrosci.com/2018/02/05/ex36/",target:"_blank",rel:"noopener noreferrer"};function E(P,k){const a=l("ExternalLinkIcon");return o(),r("div",null,[i,h,m,e("blockquote",null,[u,e("p",null,[e("a",d,[s("Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHW"),t(a)])])]),p,_,f,g,x,e("blockquote",null,[e("p",null,[e("a",b,[s("Volume vs. energy, volume relaxations, Pulay Stress"),t(a)])]),y,v,w]),e("p",null,[e("a",T,[s("Ex36 晶格参数的确定(直接优化晶格常数)| LVTHW"),t(a)])])])}const V=n(c,[["render",E],["__file","index.html.vue"]]);export{V as default}; diff --git a/assets/index.html-troAe46c.js b/assets/index.html-troAe46c.js new file mode 100644 index 00000000..2706639e --- /dev/null +++ b/assets/index.html-troAe46c.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-154dc4c4","path":"/star/","title":"收藏","lang":"zh-CN","frontmatter":{"title":"收藏","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"type","key":"star"},"layout":"BlogType","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/star/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"收藏"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"收藏\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-ttVvy6py.js b/assets/index.html-ttVvy6py.js new file mode 100644 index 00000000..dbef1f2a --- /dev/null +++ b/assets/index.html-ttVvy6py.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-4b7237e6","path":"/category/%E5%AE%89%E8%A3%85/","title":"安装 分类","lang":"zh-CN","frontmatter":{"title":"安装 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"安装","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/%E5%AE%89%E8%A3%85/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"安装 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"安装 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-tts0Gmwv.js b/assets/index.html-tts0Gmwv.js new file mode 100644 index 00000000..b2473ab1 --- /dev/null +++ b/assets/index.html-tts0Gmwv.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-37263cfa","path":"/dft-learning/pages/linux/","title":"Linux 基础","lang":"zh-CN","frontmatter":{"title":"Linux 基础","date":"2022-09-12T17:04:23.000Z","updated":"2022-09-16T17:40:11.000Z","permalink":"/dft-learning/pages/linux","article":false,"index":true,"timeline":false,"description":"Linux 基础 Linux 基础应参考 Linux 笔记。 完成计算至少应了解的内容有以下: 通过 SSH 客户端登录集群 Linux 常用的命令,上笔记命令页最上表格。 vim 编辑器使用 PBS 作业管理系统的使用","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/linux/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Linux 基础"}],["meta",{"property":"og:description","content":"Linux 基础 Linux 基础应参考 Linux 笔记。 完成计算至少应了解的内容有以下: 通过 SSH 客户端登录集群 Linux 常用的命令,上笔记命令页最上表格。 vim 编辑器使用 PBS 作业管理系统的使用"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-12T17:04:23.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Linux 基础\\",\\"description\\":\\"Linux 基础 Linux 基础应参考 Linux 笔记。 完成计算至少应了解的内容有以下: 通过 SSH 客户端登录集群 Linux 常用的命令,上笔记命令页最上表格。 vim 编辑器使用 PBS 作业管理系统的使用\\"}"]]},"headers":[],"git":{"createdTime":1662968256000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":8}]},"readingTime":{"minutes":0.32,"words":97},"filePathRelative":"dft-learning/03.Linux/README.md","localizedDate":"2022年9月13日","excerpt":"

    Linux 基础

    \\n

    Linux 基础应参考 Linux 笔记

    \\n

    完成计算至少应了解的内容有以下:

    \\n
      \\n
    • 通过 SSH 客户端登录集群
    • \\n
    • Linux 常用的命令,上笔记命令页最上表格。
    • \\n
    • vim 编辑器使用
    • \\n
    • PBS 作业管理系统的使用
    • \\n
    \\n","autoDesc":true}');export{t as data}; diff --git a/assets/index.html-uASuo5Z7.js b/assets/index.html-uASuo5Z7.js new file mode 100644 index 00000000..72fef870 --- /dev/null +++ b/assets/index.html-uASuo5Z7.js @@ -0,0 +1,75 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as t,c as p,a as n,b as s,e as c,d as a}from"./app-Mf7X6hWu.js";const o={},r=a(`

    19.linux-bashrc-VS-bash_profile

    环境变量

    自定义命令提示符

    通过修改 PS1 变量实现:

     \\u 显示当前用户账号
    + \\v BASH的版本信息
    + 
    + \\H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound
    + \\h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun
    + 
    + \\W 只显示当前路径最后一个目录
    + \\w 显示当前绝对路径(当前用户目录会以 ~代替)
    + 
    + \\t 显示时间为24小时格式,如:14:19:34
    + \\T 显示时间为12小时格式,如:02:19:34
    + \\A 显示时间为24小时格式但是不带秒,如:14:19
    + \\d 代表日期,格式为weekday month date,例如:"Mon Aug1"
    + 
    + $PWD 显示当前全路径
    + # 显示命令行提示符号,一般使用'$'或者'#'
    + sudo echo "export PS1='[\\u@\\h \\w]# '" >> /etc/profile
    + # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\\w
    +
    export PS1='[\\u@\\h \\w]\\$ '
    +
    +# 效果
    +[scujh_zjb@scu ~/311]$ pwd
    +/home/scujh_zjb/311
    +[scujh_zjb@scu ~/311]$
    +

    自用备份:

    # .bashrc
    +
    +# Source global definitions
    +if [ -f /etc/bashrc ]; then
    +        . /etc/bashrc
    +fi
    +
    +# Uncomment the following line if you don't like systemctl's auto-paging feature:
    +# export SYSTEMD_PAGER=
    +
    +# User specific aliases and functions
    +
    +## PATH
    +PATH=/opt/apps/vasptool/bin:\${PATH}
    +PATH=/opt/apps/vasptool/vtstscripts-978:\${PATH}
    +PATH=/opt/apps/anaconda3/bin:\${PATH}
    +PATH=/home/scujh_zjb/apps/bin:\${PATH}
    +PATH=/home/scujh_zjb/apps/scripts:\${PATH}
    +export PATH
    +
    +## TimeZone
    +export TZ='Asia/Shanghai'
    +export TIME_STYLE='+%Y-%m-%d %H:%M:%S'   # 时区与时间显示格式本地化
    +
    +## alisa
    +alias ..='cd ..'
    +alias ...='cd ../..'
    +alias cd..='cd ..'
    +alias cppbs='cp ~/vasp_cpu.pbs . && ls --color' 
    +alias qq='qstat -a'
    +
    +alias rm='rm -i'
    +alias cp='cp -i'
    +alias mv='mv -i'
    +alias ll='ls -lh'  # ll 列出的文件大小使用合适的单位表示,默认为 kb
    +cdpwd() {
    +  cd "\${1}";
    +  # pwd;
    +  # echo -e "\\033[36m\`pwd\` \\033[0m";
    +  # echo -e "\\033[47;30m \`pwd\` \\033[0m";
    +  ls --color;
    +}
    +alias cd='cdpwd'
    +
    +alias ls='echo -e "\\033[36m\`pwd\` \\033[0m" && ls --color'
    +#alias vi='vim'
    +
    +alias viewmail='vi /var/spool/mail/scujh_zjb'
    +
    +export PS1='[\\u@\\h \\w]\\$ '
    +

    linux 中 . bashrc 与 . bash_profile 的区别

    `,9),d={href:"https://blog.csdn.net/sch0120/article/details/70256318",target:"_blank",rel:"noopener noreferrer"},u=a("

    由此可见,“profile”系列文件的主要目的在于为“登录 shell”设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。

    顺便提一句,Linux 中“rc”是英文“run command”的缩写,表示文件中存放需要执行的命令。其实这也非常符合逻辑,设置功能就要执行 shopt 命令,而设置别名要执行 alias 命令。与“rc”系列互补,“profile”系列用来设置环境变量,它不会去调用这两个命令,但却经常需要使用 export 语句。不信你可以看一看这两个文件。

    如果你想对 bash 的功能进行设置或者是定义一些别名,推荐你修改 ~/.bashrc 文件,这样无论你以何种方式打开 shell,你的配置都会生效。而如果你要更改一些环境变量,推荐你修改 ~/.bash_profile 文件,因为考虑到 shell 的继承特性,这些更改确实只应该被执行一次(而不是多次)。针对所有用户进行全局设置,推荐你在 /etc/profile.d 目录下添加以 .sh 结尾的文件,而不是去修改全局 startup 文件。

    ",1);function v(m,b){const e=i("ExternalLinkIcon");return t(),p("div",null,[r,n("p",null,[s("具体参考 "),n("a",d,[s("关于“.bash_profile”和“.bashrc”区别的总结 | CSDN"),c(e)]),s("。")]),u])}const g=l(o,[["render",v],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-uZmfIb-W.js b/assets/index.html-uZmfIb-W.js new file mode 100644 index 00000000..622d1bad --- /dev/null +++ b/assets/index.html-uZmfIb-W.js @@ -0,0 +1,132 @@ +import{_ as n}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as s,c as a,d as e}from"./app-Mf7X6hWu.js";const i={},l=e(`

    为学校的 linux 安装 python3

    由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。

    步骤放在最前面

    升级 OPENSSL

    cd /tmp
    +wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    +tar -xvf openssl-1.1.1d.tar.gz
    +cd openssl-1.1.1d
    +./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib  #注意添加no-zlib
    +make && make install
    +

    之后添加环境变量

    $ vi ~/.bashrc
    +# 加入以下内容
    +export PATH="/public/home/zjb/app/openssl-1.1.1d/bin":\${PATH}
    +export PATH="/public/home/zjb/app/openssl-1.1.1d/lib":\${PATH}
    +export LD_LIBRARY_PATH="/public/home/zjb/app/openssl-1.1.1d/lib":\${LD_LIBRARY_PATH}
    +
    +$ source ~/.bashrc
    +

    此时运行 openssl--version 应当显示 1.1.1 版本,如果是,进行下一步。

    [zjb@op ~]$ openssl
    +OpenSSL> version
    +OpenSSL 1.1.1d  10 Sep 2019
    +OpenSSL> exit
    +[zjb@op ~]$ 
    +

    编译 Python3

    cd /tmp
    +wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    +tar -xvf Python-3.8.1.tgz
    +cd Python-3.8.1
    +./configure --prefix=/public/home/zjb/app/python38/
    +

    到这儿截住,去 Python-3.8.1/Moudles 下编辑 Setup 以修改 OPENSSL 的路径:

    vi Moudles/Setup
    +

    查找 SSL,把如下几行取消注释

    SSL=/public/home/zjb/app/openssl-1.1.1d     #改为刚安装的ssl路径
    +_ssl _ssl.c \\
    +       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \\
    +       -L$(SSL)/lib -lssl -lcrypto
    +

    其中第一行替换为自己的 OPENSSL 安装路径,修改后编译:

    $ make && make install
    +
    +# 如果之前有编译过,用make clean清理已编译的文件后再编译
    +

    编译完成后,试一下

    [zjb@op Python-3.8.5]$ python3
    +Python 3.8.5 (default, Nov 20 2020, 23:23:42) 
    +[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> import ssl
    +>>> 
    +

    OK,完成!

    此时 SSL 模块应当是可用的,尝试安装一个

    pip3 install ase
    +
    [zjb@op Python-3.8.5]$ pip3 install ase
    +Collecting ase
    +  Downloading ase-3.20.1-py3-none-any.whl (2.2 MB)
    +     |████████████████████████████████| 2.2 MB 1.4 MB/s 
    +Collecting matplotlib>=2.0.0
    +  Downloading matplotlib-3.3.3-cp38-cp38-manylinux1_x86_64.whl (11.6 MB)
    +     |████████████████████████████████| 11.6 MB 2.3 MB/s 
    +Collecting numpy>=1.11.3
    +  Downloading numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
    +     |████████████████████████████████| 14.5 MB 153 kB/s 
    +Collecting scipy>=0.18.1
    +  Downloading scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl (25.8 MB)
    +     |████████████████████████████████| 25.8 MB 1.5 MB/s 
    +Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3
    +  Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
    +     |████████████████████████████████| 67 kB 1.3 MB/s 
    +Collecting pillow>=6.2.0
    +  Downloading Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
    +     |████████████████████████████████| 2.2 MB 1.9 MB/s 
    +Collecting cycler>=0.10
    +  Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
    +Collecting kiwisolver>=1.0.1
    +  Downloading kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl (1.2 MB)
    +     |████████████████████████████████| 1.2 MB 1.9 MB/s 
    +Collecting python-dateutil>=2.1
    +  Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
    +     |████████████████████████████████| 227 kB 2.0 MB/s 
    +Collecting six
    +  Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
    +Installing collected packages: pyparsing, pillow, six, cycler, numpy, kiwisolver, python-dateutil, matplotlib, scipy, ase
    +Successfully installed ase-3.20.1 cycler-0.10.0 kiwisolver-1.3.1 matplotlib-3.3.3 numpy-1.19.4 pillow-8.0.1 pyparsing-2.4.7 python-dateutil-2.8.1 scipy-1.5.4 six-1.15.0
    +

    正常!


    经历

    最开始按照正常的编译过程去编译安装 Python3,但是过程中发现 SSL 模块无法被编译,刚开始没当回事,结果都好了发现 pip3 没法使用:

    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    +

    因为 ssl 模块不可用,又折回去折腾,发现提示中,是因为机器本身安装的 openssl 版本过低(1.0.1)导致的,

    Python build finished successfully!
    +The necessary bits to build these optional modules were not found:
    +_sqlite3              _ssl                                     
    +To find the necessary bits, look in setup.py in detect_modules() for the module's name.
    +
    +Could not build the ssl module!
    +Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
    +LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381
    +

    考虑升级 openssl 解决一下:

    $ wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    +$ tar -xvf openssl-1.1.1d.tar.gz
    +$ cd openssl-1.1.1d
    +$ ./config --prefix=/public/home/zjb/app/penssl-1.1.1d no-zlib  #注意添加no-zlib
    +$ make && make install
    +
    +$ vi ~/.bashrc
    +export PATH="/public/home/zjb/app/openssl-1.1.1d/bin":\${PATH}
    +

    运行 openssl 发现报错

    error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
    +

    搜了一些资料,发现解决方法多是 sudo 的,mmp 我要是有 root 还费这劲去编译呢???还好在一篇资料里看到一个方案:发现 libssl.so.1.1 存在于 openssl.1.1.d/lib 目录下,于是考虑把这个目录加入环境变量:

    export LD_LIBRARY_PATH=/public/home/zjb/app/openssl-1.1/lib:$LD_LIBRARY_PATH
    +

    这下正常了:

    [zjb@op ~]$ openssl
    +OpenSSL> version
    +OpenSSL 1.1.1d  10 Sep 2019
    +OpenSSL> exit
    +[zjb@op ~]$ 
    +

    接下来就继续编译 Python3:

    cd /tmp
    +wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    +tar -xvf Python-3.8.1.tgz
    +cd Python-3.8.1
    +./configure --prefix=/public/home/zjb/app/python38/
    +make 
    +

    此时编译的仍然提示 Could not build the ssl module! Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().,但是 make install 后是可以用的,也不知道为什么。

    接下来添加环境变量,

    export PATH=/public/home/zjb/app/python38/bin:\${PATH}
    +

    然后...正常了

    [zjb@op Python-3.8.5]$ python3
    +Python 3.8.5 (default, Nov 20 2020, 23:23:42) 
    +[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> import ssl
    +>>> 
    +

    几分钟后发现 ase 虽然安装了,但是不能运行,

    [zjb@op python38]$ ase
    +Traceback (most recent call last):
    +  File "/public/home/zjb/app/ase/bin/ase", line 2, in <module>
    +    from ase.cli.main import main
    +  File "/public/home/zjb/app/ase/ase/__init__.py", line 25, in <module>
    +    from ase.atoms import Atoms
    +  File "/public/home/zjb/app/ase/ase/atoms.py", line 19, in <module>
    +    from ase.constraints import (FixConstraint, FixBondLengths, FixLinearTriatomic,
    +  File "/public/home/zjb/app/ase/ase/constraints.py", line 10, in <module>
    +    from scipy.linalg import expm, logm
    +  File "/public/home/zjb/app/python38/lib/python3.8/site-packages/scipy/__init__.py", line 151, in <module>
    +    from scipy._lib._ccallback import LowLevelCallable
    +  File "/public/home/zjb/app/python38/lib/python3.8/site-packages/scipy/_lib/_ccallback.py", line 1, in <module>
    +    from . import _ccallback_c
    +  File "_ccallback_c.pyx", line 210, in init scipy._lib._ccallback_c
    +  File "/public/home/zjb/app/python38/lib/python3.8/ctypes/__init__.py", line 7, in <module>
    +    from _ctypes import Union, Structure, Array
    +ModuleNotFoundError: No module named '_ctypes'
    +

    因为 python 缺少依赖库 libffi-devel,查资料没发现这玩意怎么自己搞,似乎只能管理员去装,反正网上给出的方法都不行...

    [zjb@op python38]$ yum install -y libffi-devel
    +Loaded plugins: aliases, changelog, kabi, ovl, presto, refresh-packagekit, security, tmprepo, verify, versionlock
    +Loading support for Red Hat kernel ABI
    +ovl: Error while doing RPMdb copy-up:
    +[Errno 13] Permission denied: '/var/lib/rpm/Sigmd5'
    +You need to be root to perform this command.
    +[zjb@op python38]$ 
    +

    此贴终结,失败告终,over!

    `,51),p=[l];function t(o,c){return s(),a("div",null,p)}const u=n(i,[["render",t],["__file","index.html.vue"]]);export{u as default}; diff --git a/assets/index.html-uaDJW5uJ.js b/assets/index.html-uaDJW5uJ.js new file mode 100644 index 00000000..7d71eab3 --- /dev/null +++ b/assets/index.html-uaDJW5uJ.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-15d002d2","path":"/code/linux/openmpi/","title":"Openmpi","lang":"zh-CN","frontmatter":{"title":"Openmpi","date":"2022-10-31T17:39:36.000Z","permalink":"/code/linux/openmpi/","updated":"2022-10-31T18:22:29.000Z","description":"Openmpi 各种乱七八糟的报错 libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4 -------------------------------------------------------------------------- Failed to create a queue pair (QP): Hostname: compute-0-9 Requested max number of outstanding WRs in the SQ: 1 Requested max number of outstanding WRs in the RQ: 2 Requested max number of SGEs in a WR in the SQ: 511 Requested max number of SGEs in a WR in the RQ: 511 Requested max number of data that can be posted inline to the SQ: 0 Error: File exists Check requested attributes. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Open MPI has detected that there are UD-capable Verbs devices on your system, but none of them were able to be setup properly. This may indicate a problem on this system. You job will continue, but Open MPI will ignore the \\"ud\\" oob component in this run. Hostname: compute-0-9 --------------------------------------------------------------------------","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/linux/openmpi/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Openmpi"}],["meta",{"property":"og:description","content":"Openmpi 各种乱七八糟的报错 libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4 -------------------------------------------------------------------------- Failed to create a queue pair (QP): Hostname: compute-0-9 Requested max number of outstanding WRs in the SQ: 1 Requested max number of outstanding WRs in the RQ: 2 Requested max number of SGEs in a WR in the SQ: 511 Requested max number of SGEs in a WR in the RQ: 511 Requested max number of data that can be posted inline to the SQ: 0 Error: File exists Check requested attributes. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Open MPI has detected that there are UD-capable Verbs devices on your system, but none of them were able to be setup properly. This may indicate a problem on this system. You job will continue, but Open MPI will ignore the \\"ud\\" oob component in this run. Hostname: compute-0-9 --------------------------------------------------------------------------"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-10-31T13:51:54.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-10-31T17:39:36.000Z"}],["meta",{"property":"article:modified_time","content":"2022-10-31T13:51:54.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Openmpi\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-10-31T17:39:36.000Z\\",\\"dateModified\\":\\"2022-10-31T13:51:54.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"各种乱七八糟的报错","slug":"各种乱七八糟的报错","link":"#各种乱七八糟的报错","children":[]}],"git":{"createdTime":1667224314000,"updatedTime":1667224314000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.95,"words":284},"filePathRelative":"code/linux/openmpi.md","localizedDate":"2022年11月1日","excerpt":"

    Openmpi

    \\n

    各种乱七八糟的报错

    \\n
    libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4\\n--------------------------------------------------------------------------\\nFailed to create a queue pair (QP):\\n\\nHostname: compute-0-9\\nRequested max number of outstanding WRs in the SQ:                1\\nRequested max number of outstanding WRs in the RQ:                2\\nRequested max number of SGEs in a WR in the SQ:                   511\\nRequested max number of SGEs in a WR in the RQ:                   511\\nRequested max number of data that can be posted inline to the SQ: 0\\nError:    File exists\\n\\nCheck requested attributes.\\n--------------------------------------------------------------------------\\n--------------------------------------------------------------------------\\nOpen MPI has detected that there are UD-capable Verbs devices on your\\nsystem, but none of them were able to be setup properly.  This may\\nindicate a problem on this system.\\n\\nYou job will continue, but Open MPI will ignore the \\"ud\\" oob component\\nin this run.\\n\\nHostname: compute-0-9\\n--------------------------------------------------------------------------\\n
    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-vhDWhlKA.js b/assets/index.html-vhDWhlKA.js new file mode 100644 index 00000000..4b6774ff --- /dev/null +++ b/assets/index.html-vhDWhlKA.js @@ -0,0 +1,246 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o as t,c as e,a as n,b as o,e as c,d as i}from"./app-Mf7X6hWu.js";const l={},u=i(`

    pip 报错

    找不到指定文件

    安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。

    课题组一个同学安装 ase 时遇到以下报错,

    C:\\Users\\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +Defaulting to user installation because normal site-packages is not writeable
    +Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    +Collecting ase
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
    +Collecting matplotlib>=3.1.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB)
    +Collecting numpy>=1.15.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB)
    +Collecting scipy>=1.1.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB)
    +  Installing build dependencies ... done
    +  Getting requirements to build wheel ... error
    +  error: subprocess-exited-with-error
    +
    +  × Getting requirements to build wheel did not run successfully.
    +  │ exit code: 1
    +  ╰─> [55 lines of output]
    +      The Meson build system
    +      Version: 0.62.2
    +      Source dir: C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd
    +      Build dir: C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build
    +      Build type: native build
    +      Project name: SciPy
    +      Project version: 1.9.1
    +      WARNING: Failed to activate VS environment: Could not find C:\\Program Files (x86)\\Microsoft Visual Studio\\Installer\\vswhere.exe
    +
    +      ..\\..\\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]
    +      The following exception(s) were encountered:
    +      Running "icl " gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "cl /?" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "cc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "gcc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "clang --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "clang-cl /?" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "pgcc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +
    +      A full log can be found at C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build\\meson-logs\\meson-log.txt
    +      + meson setup --native-file=C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\\Program Files\\Python311 C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build
    +      Traceback (most recent call last):
    +        File "C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 363, in <module>
    +          main()
    +        File "C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 345, in main
    +          json_out['return_val'] = hook(**hook_input['kwargs'])
    +                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\pep517\\in_process\\_in_process.py", line 130, in get_requires_for_build_wheel
    +          return hook(config_settings)
    +                 ^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 923, in get_requires_for_build_wheel
    +          with _project(config_settings) as project:
    +        File "C:\\Program Files\\Python311\\Lib\\contextlib.py", line 137, in __enter__
    +          return next(self.gen)
    +                 ^^^^^^^^^^^^^^
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 902, in _project
    +          with Project.with_temp_working_dir(
    +        File "C:\\Program Files\\Python311\\Lib\\contextlib.py", line 137, in __enter__
    +          return next(self.gen)
    +                 ^^^^^^^^^^^^^^
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 547, in with_temp_working_dir
    +          yield cls(source_dir, tmpdir, build_dir)
    +                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 463, in __init__
    +          self._configure(reconfigure=bool(build_dir) and not native_file_mismatch)
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 494, in _configure
    +          self._meson(
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 477, in _meson
    +          return self._proc('meson', *args)
    +                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\\Users\\admin\\AppData\\Local\\Temp\\pip-build-env-s4svfkf_\\overlay\\Lib\\site-packages\\mesonpy\\__init__.py", line 472, in _proc
    +          subprocess.check_call(list(args))
    +        File "C:\\Program Files\\Python311\\Lib\\subprocess.py", line 413, in check_call
    +          raise CalledProcessError(retcode, cmd)
    +      subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\\\Program Files\\\\Python311', 'C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build']' returned non-zero exit status 1.
    +      [end of output]
    +
    +  note: This error originates from a subprocess, and is likely not a problem with pip.
    +error: subprocess-exited-with-error
    +
    +× Getting requirements to build wheel did not run successfully.
    +│ exit code: 1
    +╰─> See above for output.
    +
    +note: This error originates from a subprocess, and is likely not a problem with pip.
    +
    +

    注意 10 行,发现是安装 SciPy 时报了错,26、28 行指明是编译的问题,查了资料初步判断是平台不对,下错包了。

    该人环境:Windows 10 x64,Python 3.11 rc2

    结合网上资料,提出以下解决方法。

    在 python 交互命令行中通过以下查询当前机器支持的编译器/平台:

    >>> import pip._internal
    +>>> print(pip._internal.pep425tags.get_supported())
    +

    正常应该可以输出当前机器支持的平台,但如果报错如下,则在终端使用

    python -m pip debug --verbose
    +
    PS C:\\WINDOWS\\system32> python
    +Python 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)] on win32
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> import pip._internal
    +>>> print(pip._internal.pep425tags.get_supported())
    +Traceback (most recent call last):
    +  File "<stdin>", line 1, in <module>
    +AttributeError: module 'pip._internal' has no attribute 'pep425tags'
    +>>> print(pip._internal)
    +<module 'pip._internal' from 'C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_internal\\\\__init__.py'>
    +>>> exit()
    +
    +PS C:\\WINDOWS\\system32> python -m pip debug --verbose
    +WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
    +pip version: pip 22.2.2 from C:\\Program Files\\Python311\\Lib\\site-packages\\pip (python 3.11)
    +sys.version: 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)]
    +sys.executable: C:\\Program Files\\Python311\\python.exe
    +sys.getdefaultencoding: utf-8
    +sys.getfilesystemencoding: utf-8
    +locale.getpreferredencoding: cp936
    +sys.platform: win32
    +sys.implementation:
    +  name: cpython
    +'cert' config value: Not specified
    +REQUESTS_CA_BUNDLE: None
    +CURL_CA_BUNDLE: None
    +pip._vendor.certifi.where(): C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_vendor\\certifi\\cacert.pem
    +pip._vendor.DEBUNDLED: False
    +vendored library versions:
    +  CacheControl==0.12.11
    +  colorama==0.4.5
    +  distlib==0.3.5
    +  distro==1.7.0
    +  msgpack==1.0.4
    +  packaging==21.3
    +  pep517==0.12.0
    +  platformdirs==2.5.2
    +  pyparsing==3.0.9
    +  requests==2.28.1
    +  certifi==2022.06.15
    +  chardet==5.0.0
    +  idna==3.3
    +  urllib3==1.26.10
    +  rich==12.5.1 (Unable to locate actual module version, using vendor.txt specified version)
    +  pygments==2.12.0
    +  typing_extensions==4.3.0 (Unable to locate actual module version, using vendor.txt specified version)
    +  resolvelib==0.8.1
    +  setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
    +  six==1.16.0
    +  tenacity==8.0.1 (Unable to locate actual module version, using vendor.txt specified version)
    +  tomli==2.0.1
    +  webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
    +Compatible tags: 39
    +  cp311-cp311-win_amd64
    +  cp311-abi3-win_amd64
    +  cp311-none-win_amd64
    +  cp310-abi3-win_amd64
    +  cp39-abi3-win_amd64
    +  cp38-abi3-win_amd64
    +  cp37-abi3-win_amd64
    +  cp36-abi3-win_amd64
    +  cp35-abi3-win_amd64
    +  cp34-abi3-win_amd64
    +  cp33-abi3-win_amd64
    +  cp32-abi3-win_amd64
    +  py311-none-win_amd64
    +  py3-none-win_amd64
    +  py310-none-win_amd64
    +  py39-none-win_amd64
    +  py38-none-win_amd64
    +  py37-none-win_amd64
    +  py36-none-win_amd64
    +  py35-none-win_amd64
    +  py34-none-win_amd64
    +  py33-none-win_amd64
    +  py32-none-win_amd64
    +  py31-none-win_amd64
    +  py30-none-win_amd64
    +  cp311-none-any
    +  py311-none-any
    +  py3-none-any
    +  py310-none-any
    +  py39-none-any
    +  py38-none-any
    +  py37-none-any
    +  py36-none-any
    +  py35-none-any
    +  py34-none-any
    +  py33-none-any
    +  py32-none-any
    +  py31-none-any
    +  py30-none-any
    +PS C:\\WINDOWS\\system32>
    +

    后面列出的是允许使用的版本,去 pypi 源站找个可用的下载,然后 pip install <path/to/pkg>,如果可以,就结束。如果报不支持当前平台,或没有找到一样的,则可能是 python 版本太新?

    scipy-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp310-cp310-macosx_12_0_arm64.whl
    +scipy-1.9.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    +scipy-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    +scipy-1.9.1-cp310-cp310-win_amd64.whl
    +scipy-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp38-cp38-macosx_12_0_arm64.whl
    +scipy-1.9.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    +scipy-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    +scipy-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    +scipy-1.9.1-cp38-cp38-win32.whl
    +scipy-1.9.1-cp38-cp38-win_amd64.whl
    +scipy-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp39-cp39-macosx_12_0_arm64.whl
    +scipy-1.9.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    +scipy-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    +scipy-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    +scipy-1.9.1-cp39-cp39-win32.whl
    +scipy-1.9.1-cp39-cp39-win_amd64.whl
    +scipy-1.9.1.tar.gz
    +

    例如本例,Python 3.11 rc2,scipy 没有对应的包,本例中里应当是 scipy-1.9.1-cp311-cp311-win_amd64.whl 的,但没有,下载 scipy-1.9.1-cp310-cp310-win_amd64.whl 则报

    PS C:\\users\\admin\\Downloads> pip install .\\scipy-1.9.1-cp310-cp310-win_amd64.whl
    +ERROR: scipy-1.9.1-cp310-cp310-win_amd64.whl is not a supported wheel on this platform.
    +PS C:\\users\\admin\\Downloads>
    +

    然后,试着卸载了 python 3.11 rc2,安装最新的稳定版 3.10.7,结果果然解决...

    PS C:\\WINDOWS\\system32> pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    +Collecting ase
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
    +Collecting scipy>=1.1.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a9/17/67861cb65190a28e726e5f99f8938756385e8b2257cbae2b13e58594ae27/scipy-1.9.1-cp310-cp310-win_amd64.whl (38.6 MB)
    +     ---------------------------------------- 38.6/38.6 MB 2.0 MB/s eta 0:00:00
    +Collecting matplotlib>=3.1.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/1d/ca/226bf297851690781ac79d8d1cb1af550f5d4926c56ee5035bf3d2027093/matplotlib-3.6.0-cp310-cp310-win_amd64.whl (7.2 MB)
    +     ---------------------------------------- 7.2/7.2 MB 2.1 MB/s eta 0:00:00
    +Collecting numpy>=1.15.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/51/b6/861f5e9d59c1bb6c05467f5ddcba965cb2c4b1fd62f6bf7b4c4632492625/numpy-1.23.3-cp310-cp310-win_amd64.whl (14.6 MB)
    +     ---------------------------------------- 14.6/14.6 MB 2.7 MB/s eta 0:00:00
    +Collecting fonttools>=4.22.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c3/f2/8e1f94318021b162000a8c48f2c460d5efba78fe0e46ef5d236ff3fe8147/fonttools-4.37.2-py3-none-any.whl (959 kB)
    +     ---------------------------------------- 959.8/959.8 kB 1.1 MB/s eta 0:00:00
    +Collecting python-dateutil>=2.7
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
    +     ---------------------------------------- 247.7/247.7 kB 447.2 kB/s eta 0:00:00
    +Collecting pillow>=6.2.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/02/55/67a3c17b9e7d972ed8c246f104da99ca4f3ea42fba566697e479011b84b6/Pillow-9.2.0-cp310-cp310-win_amd64.whl (3.3 MB)
    +     ---------------------------------------- 3.3/3.3 MB 1.6 MB/s eta 0:00:00
    +Collecting pyparsing>=2.2.1
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl (98 kB)
    +Collecting contourpy>=1.0.1
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e2/a1/60afbcfe6bbd801165e3234281dfd515305d40bce4534738ea33b22ef3d4/contourpy-1.0.5-cp310-cp310-win_amd64.whl (164 kB)
    +     ---------------------------------------- 164.1/164.1 kB 5.0 MB/s eta 0:00:00
    +Collecting cycler>=0.10
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl (6.4 kB)
    +Collecting packaging>=20.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl (40 kB)
    +Collecting kiwisolver>=1.0.1
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/68/20/2ce1186ef4edf47281faf58f6dd72a1fcd2be1fc66514bd2d220097bdcd1/kiwisolver-1.4.4-cp310-cp310-win_amd64.whl (55 kB)
    +     ---------------------------------------- 55.3/55.3 kB 726.2 kB/s eta 0:00:00
    +Collecting six>=1.5
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB)
    +Installing collected packages: six, pyparsing, pillow, numpy, kiwisolver, fonttools, cycler, scipy, python-dateutil, packaging, contourpy, matplotlib, ase
    +Successfully installed ase-3.22.1 contourpy-1.0.5 cycler-0.11.0 fonttools-4.37.2 kiwisolver-1.4.4 matplotlib-3.6.0 numpy-1.23.3 packaging-21.3 pillow-9.2.0 pyparsing-3.0.9 python-dateutil-2.8.2 scipy-1.9.1 six-1.16.0
    +PS C:\\WINDOWS\\system32>
    +

    该条报错可参考:

    `,20),r={href:"https://www.cnblogs.com/yahoon/p/16172517.html",target:"_blank",rel:"noopener noreferrer"};function k(d,v){const s=p("ExternalLinkIcon");return t(),e("div",null,[u,n("ul",null,[n("li",null,[n("a",r,[o("Python学习笔记: pip install 常见错误汇总 - yahoon - 博客园 (cnblogs.com)"),c(s)])])])])}const g=a(l,[["render",k],["__file","index.html.vue"]]);export{g as default}; diff --git a/assets/index.html-wJG6jgxw.js b/assets/index.html-wJG6jgxw.js new file mode 100644 index 00000000..5c119b11 --- /dev/null +++ b/assets/index.html-wJG6jgxw.js @@ -0,0 +1,26 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as r,c as d,a as e,b as i,e as s,d as o}from"./app-Mf7X6hWu.js";const l={},c=o(`

    Openmpi

    各种乱七八糟的报错

    libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4
    +--------------------------------------------------------------------------
    +Failed to create a queue pair (QP):
    +
    +Hostname: compute-0-9
    +Requested max number of outstanding WRs in the SQ:                1
    +Requested max number of outstanding WRs in the RQ:                2
    +Requested max number of SGEs in a WR in the SQ:                   511
    +Requested max number of SGEs in a WR in the RQ:                   511
    +Requested max number of data that can be posted inline to the SQ: 0
    +Error:    File exists
    +
    +Check requested attributes.
    +--------------------------------------------------------------------------
    +--------------------------------------------------------------------------
    +Open MPI has detected that there are UD-capable Verbs devices on your
    +system, but none of them were able to be setup properly.  This may
    +indicate a problem on this system.
    +
    +You job will continue, but Open MPI will ignore the "ud" oob component
    +in this run.
    +
    +Hostname: compute-0-9
    +--------------------------------------------------------------------------
    +

    解决:

    Put “oob=tcp” in your default MCA param file
    +

    新建 ~/.openmpi/mca-params.conf,写入 oob=tcp 即可。

    MCA param file:

    • $HOME/.openmpi/mca-params.conf: This is the user-supplied set of values, which has the highest precedence.
    • $prefix/etc/openmpi-mca-params.conf: This is the system-supplied set of values, which has a lower precedence.

    参考:

    `,9),m={href:"http://bbs.keinsci.com/thread-9036-1-1.html",target:"_blank",rel:"noopener noreferrer"},u={href:"https://users.open-mpi.narkive.com/HK7mhAoT/ompi-failed-to-register-memory-openmpi-2-0-2#post2",target:"_blank",rel:"noopener noreferrer"},p={href:"https://www.ibm.com/docs/en/smpi/10.2?topic=environment-setting-mca-parameters",target:"_blank",rel:"noopener noreferrer"};function v(h,b){const n=t("ExternalLinkIcon");return r(),d("div",null,[c,e("ul",null,[e("li",null,[e("a",m,[i("ORCA集群上运行BSUB脚本求助 - 量子化学 (Quantum Chemistry) - 计算化学公社 (keinsci.com)"),s(n)])]),e("li",null,[e("a",u,[i("[OMPI users] Failed to register memory (openmpi 2.0.2) (narkive.com)"),s(n)])]),e("li",null,[e("a",p,[i("Setting MCA parameters - IBM Documentation"),s(n)])])])])}const x=a(l,[["render",v],["__file","index.html.vue"]]);export{x as default}; diff --git a/assets/index.html-wsd3JpXL.js b/assets/index.html-wsd3JpXL.js new file mode 100644 index 00000000..8aafd4d0 --- /dev/null +++ b/assets/index.html-wsd3JpXL.js @@ -0,0 +1 @@ +const n=JSON.parse('{"key":"v-6c38d36e","path":"/dft-learning/pages/9909a6/","title":"K-PATH","lang":"zh-CN","frontmatter":{"title":"K-PATH","autoGroup-1":"其他","date":"2020-11-27T13:28:10.000Z","permalink":"/dft-learning/pages/9909a6/","category":["VASP"],"updated":"2022-01-16T19:57:37.000Z","description":"然后打开 vaspkit,依次进入 3,303。 [zjb@op NaCl]$ cp NaCl.vasp POSCAR [zjb@op NaCl]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>> 3 ===================== K-Path Options ============================ 301) 1D Nano Structure 302) 2D Nano Structure (Experimental) 303) 3D bulk structure (Experimental) 304) Phonopy K-Path for 2D Nano Structure (Experimental) 0) Quit 9) Back ------------>> 303 +-------------------------- Warm Tips --------------------------+ The suggested K-Path is only for standardized primtive cell. It is for reference only and you can manually modify K-Path. +---------------------------------------------------------------+ +-------------------------- Warm Tips --------------------------+ See An Example in vaspkit/examples/seek_kpath/GaAs_bulk. The suggested K-Path is only for standardized primtive cell. This Feature is Experimental & Check Your System using SeeK-Path. For More details See [www.materialscloud.org/work/tools/seekpath]. +---------------------------------------------------------------+ -->> (01) Reading Structural Parameters from POSCAR File... +-------------------------- Summary ----------------------------+ Prototype: AB Total Atoms in Input Cell: 8 Lattice Constants in Input Cell: 5.620 5.620 5.620 Lattice Angles in Input Cell: 90.000 90.000 90.000 Total Atoms in Primitive Cell: 2 Lattice Constants in Primitive Cell: 3.974 3.974 3.974 Lattice Angles in Primitive Cell: 60.000 60.000 60.000 Crystal System: Cubic Crystal Class: m-3m Bravais Lattice: cF Extended Bravais Lattice: cF2 Space Group: 225 Point Group: 32 [ Oh ] International: Fm-3m Symmetry Operations: 192 Suggested K-Path: (shown in the next line) [ Gamma-X-U|K-Gamma-L-W-X ] +---------------------------------------------------------------+ -->> (02) Written PRIMCELL.vasp file. -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference. -->> (04) Written POTCAR File with the Recommended Potential! -->> (05) Written KPATH.in File for Band-Structure Calculation. +----------------------------WARNING----------------------------+ | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know | | what you are doing. Otherwise you might get wrong results! | +---------------------------------------------------------------+ +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ [zjb@op NaCl]$","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/9909a6/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"K-PATH"}],["meta",{"property":"og:description","content":"然后打开 vaspkit,依次进入 3,303。 [zjb@op NaCl]$ cp NaCl.vasp POSCAR [zjb@op NaCl]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>> 3 ===================== K-Path Options ============================ 301) 1D Nano Structure 302) 2D Nano Structure (Experimental) 303) 3D bulk structure (Experimental) 304) Phonopy K-Path for 2D Nano Structure (Experimental) 0) Quit 9) Back ------------>> 303 +-------------------------- Warm Tips --------------------------+ The suggested K-Path is only for standardized primtive cell. It is for reference only and you can manually modify K-Path. +---------------------------------------------------------------+ +-------------------------- Warm Tips --------------------------+ See An Example in vaspkit/examples/seek_kpath/GaAs_bulk. The suggested K-Path is only for standardized primtive cell. This Feature is Experimental & Check Your System using SeeK-Path. For More details See [www.materialscloud.org/work/tools/seekpath]. +---------------------------------------------------------------+ -->> (01) Reading Structural Parameters from POSCAR File... +-------------------------- Summary ----------------------------+ Prototype: AB Total Atoms in Input Cell: 8 Lattice Constants in Input Cell: 5.620 5.620 5.620 Lattice Angles in Input Cell: 90.000 90.000 90.000 Total Atoms in Primitive Cell: 2 Lattice Constants in Primitive Cell: 3.974 3.974 3.974 Lattice Angles in Primitive Cell: 60.000 60.000 60.000 Crystal System: Cubic Crystal Class: m-3m Bravais Lattice: cF Extended Bravais Lattice: cF2 Space Group: 225 Point Group: 32 [ Oh ] International: Fm-3m Symmetry Operations: 192 Suggested K-Path: (shown in the next line) [ Gamma-X-U|K-Gamma-L-W-X ] +---------------------------------------------------------------+ -->> (02) Written PRIMCELL.vasp file. -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference. -->> (04) Written POTCAR File with the Recommended Potential! -->> (05) Written KPATH.in File for Band-Structure Calculation. +----------------------------WARNING----------------------------+ | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know | | what you are doing. Otherwise you might get wrong results! | +---------------------------------------------------------------+ +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ [zjb@op NaCl]$"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-27T13:28:10.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"K-PATH\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-27T13:28:10.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":2.14,"words":641},"filePathRelative":"dft-learning/05.VASP/08.其他/01.K-PATH.md","localizedDate":"2020年11月27日","excerpt":"

    然后打开 vaspkit,依次进入 3303

    \\n
    [zjb@op NaCl]$ cp NaCl.vasp POSCAR\\n[zjb@op NaCl]$ vaspkit\\n \\n            \\\\\\\\\\\\///         \\n           / _  _ \\\\       Hey, you must know what you are doing.  \\n         (| (.)(.) |)     Otherwise you might get wrong results!  \\n +-----.OOOo--()--oOOO.------------------------------------------+\\n |             VASPKIT Version: 1.12 (01 Mar. 2020)              |\\n |        Core Developer: Vei WANG (wangvei@icloud.com)          |\\n |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |\\n |    Please send Bugs and Suggestions to vaspkit@gmail.com      |\\n +-----.oooO-----------------------------------------------------+\\n        (   )   Oooo.     \\n         \\\\ (    (   )     \\n          \\\\_)    ) /      \\n                (_/       \\n ===================== Structural Options ========================\\n 1)  VASP Input Files Generator    2)  Elastic-Properties         \\n 3)  K-Path Generator              4)  Structure Editor           \\n 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            \\n \\n ===================== Electronic Options ========================\\n 11) Density-of-States             21) DFT Band-Structure         \\n 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  \\n 26) Fermi-Surface                 28) Band-Structure Unfolding   \\n \\n =========== Charge & Potential & Wavefunction Options ===========\\n 31) Charge & Spin Density         42) Potential-Related          \\n 51) Wave-Function Analysis  \\n ====================== Misc Utilities ===========================\\n 71) Optical-Properties            72) Molecular-Dynamics Kit \\n 73) VASP2other Interface          74) USER interface\\n 91) Semiconductor Calculator      92) 2D-Materials Kit       \\n                                                                  \\n 0)  Quit                                                         \\n ------------>>\\n3\\n ===================== K-Path Options ============================\\n 301) 1D Nano Structure\\n 302) 2D Nano Structure (Experimental)\\n 303) 3D bulk structure (Experimental)\\n 304) Phonopy K-Path for 2D Nano Structure (Experimental)\\n \\n 0) Quit                                              \\n 9) Back                                              \\n ------------>>\\n303\\n +-------------------------- Warm Tips --------------------------+\\n   The suggested K-Path is only for standardized primtive cell.\\n   It is for reference only and you can manually modify K-Path.\\n +---------------------------------------------------------------+\\n +-------------------------- Warm Tips --------------------------+\\n     See An Example in vaspkit/examples/seek_kpath/GaAs_bulk.        \\n   The suggested K-Path is only for standardized primtive cell.\\n This Feature is Experimental & Check Your System using SeeK-Path.       \\n For More details See [www.materialscloud.org/work/tools/seekpath].\\n +---------------------------------------------------------------+\\n  -->> (01) Reading Structural Parameters from POSCAR File...\\n +-------------------------- Summary ----------------------------+\\n                           Prototype: AB\\n           Total Atoms in Input Cell:   8\\n     Lattice Constants in Input Cell:   5.620   5.620   5.620\\n        Lattice Angles in Input Cell:  90.000  90.000  90.000\\n       Total Atoms in Primitive Cell:   2\\n Lattice Constants in Primitive Cell:   3.974   3.974   3.974\\n    Lattice Angles in Primitive Cell:  60.000  60.000  60.000\\n                      Crystal System: Cubic\\n                       Crystal Class: m-3m\\n                     Bravais Lattice: cF\\n            Extended Bravais Lattice: cF2\\n                         Space Group: 225\\n                         Point Group: 32 [ Oh ]\\n                       International: Fm-3m\\n                 Symmetry Operations: 192\\n                    Suggested K-Path: (shown in the next line)\\n [ Gamma-X-U|K-Gamma-L-W-X ]\\n +---------------------------------------------------------------+\\n  -->> (02) Written PRIMCELL.vasp file.\\n  -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference.\\n  -->> (04) Written POTCAR File with the Recommended Potential!\\n  -->> (05) Written KPATH.in File for Band-Structure Calculation.\\n +----------------------------WARNING----------------------------+\\n | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know |\\n |   what you are doing. Otherwise you might get wrong results!  |\\n +---------------------------------------------------------------+\\n +---------------------------------------------------------------+\\n |                       * ACKNOWLEDGMENTS *                     |\\n | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |\\n | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |\\n +---------------------------------------------------------------+\\n |                          * CITATIONS *                        |\\n | We Would Appreciate if You Cite in Your Research with VASPKIT.|\\n | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |\\n | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |\\n +---------------------------------------------------------------+\\n[zjb@op NaCl]$ \\n\\n
    ","autoDesc":true}');export{n as data}; diff --git a/assets/index.html-wu1WGakg.js b/assets/index.html-wu1WGakg.js new file mode 100644 index 00000000..c0750859 --- /dev/null +++ b/assets/index.html-wu1WGakg.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as a,c,a as e,e as n,w as l,b as t}from"./app-Mf7X6hWu.js";const d={},r=e("h1",{id:"代码笔记",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#代码笔记","aria-hidden":"true"},"#"),t(" 代码笔记")],-1),_=e("p",null,"这里存放一些与代码和编程有关的笔记。",-1),u=e("h2",{id:"目录",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#目录","aria-hidden":"true"},"#"),t(" 目录")],-1),h=e("li",null,"Git",-1),m=e("li",null,"Python",-1),f=e("li",null,"JavaScript",-1),x=e("li",null,"Vue.js",-1),p=e("li",null,"PHP",-1);function k(v,V){const o=s("RouterLink");return a(),c("div",null,[r,_,u,e("ul",null,[e("li",null,[n(o,{to:"/code/linux/00.intro.html"},{default:l(()=>[t("Linux")]),_:1})]),h,m,f,x,p,e("li",null,[n(o,{to:"/code/document-style-guide.html"},{default:l(()=>[t("中文技术文档写作规范")]),_:1})])])])}const L=i(d,[["render",k],["__file","index.html.vue"]]);export{L as default}; diff --git a/assets/index.html-xWdgbTyy.js b/assets/index.html-xWdgbTyy.js new file mode 100644 index 00000000..a977aa75 --- /dev/null +++ b/assets/index.html-xWdgbTyy.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-c8267792","path":"/dft-learning/pages/2a0d7d/","title":"Bader 电荷分析","lang":"zh-CN","frontmatter":{"title":"Bader 电荷分析","date":"2021-01-21T14:48:09.000Z","permalink":"/dft-learning/pages/2a0d7d/","category":["VASP","电子结构"],"updated":"2022-01-16T19:57:24.000Z","description":"Bader 电荷分析 Todo 理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/pages/2a0d7d/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Bader 电荷分析"}],["meta",{"property":"og:description","content":"Bader 电荷分析 Todo 理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T09:20:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-01-21T14:48:09.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T09:20:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Bader 电荷分析\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-01-21T14:48:09.000Z\\",\\"dateModified\\":\\"2022-09-12T09:20:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"步骤","slug":"步骤","link":"#步骤","children":[{"level":3,"title":"结构优化","slug":"结构优化","link":"#结构优化","children":[]},{"level":3,"title":"自洽","slug":"自洽","link":"#自洽","children":[]},{"level":3,"title":"Bader","slug":"bader","link":"#bader","children":[]},{"level":3,"title":"数据分析","slug":"数据分析","link":"#数据分析","children":[]}]},{"level":2,"title":"参考资料","slug":"参考资料","link":"#参考资料","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1662974416000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":1.52,"words":456},"filePathRelative":"dft-learning/05.VASP/03.电子结构/05.vasp-chg-bader.md","localizedDate":"2021年1月21日","excerpt":"

    Bader 电荷分析

    \\n
    \\n

    Todo

    \\n
    \\n

    理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/index.html-yVLcUGJY.js b/assets/index.html-yVLcUGJY.js new file mode 100644 index 00000000..b2814d14 --- /dev/null +++ b/assets/index.html-yVLcUGJY.js @@ -0,0 +1,36 @@ +import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as r,c,a as s,b as l,e as a,w as h,d as e}from"./app-Mf7X6hWu.js";const o={},g=e('

    VASP 的输入文件

    VASP 运行至少包含四个输入文件:INCARPOSCARPOTCATRKPOINTS

    INCAR

    INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。

    ',4),y={href:"https://www.vasp.at/wiki/index.php/Category",target:"_blank",rel:"noopener noreferrer"},u=e(`

    POSCAR

    POSCAR 是个 结构文件,他告诉 VASP 要运行的是什么物质。该文件包含晶格几何形状和离子位置等。

    这是一个 POSCAR 文件的示例:

    O2 molecule           # 注释行
    +10                    # 比例,提供了通用缩放因子(晶格常数)
    +1.0 0.0 0.0           # 3-5行 格矢
    +0.0 1.0 0.0
    +0.0 0.0 1.0
    +O                     # 元素类别(与它们在POTCAR文件中的顺序一致)
    +2                     # 原子数量
    +Selective Dynamic     # 
    +Direct                # 坐标类别:分数/笛卡尔
    +0.5 0.5 0.5    F F F  # 每个原子的三个(X Y Z)坐标。
    +0.5 0.5 0.623  F F T
    +

    第 8 行:该模式允许为每个原子提供额外的标志,以指示在离子弛豫期间是否将允许更改此原子的相应坐标。如果仅缺陷周围的某些壳或表面附近的层应松弛,则此设置很有用。这一行是可选的,如果省略了选择性动力学标签,则第八行将在笛卡尔和直角坐标之间进行切换,如下。

    O2 molecule           # 注释行
    +10                    # 比例,提供了通用缩放因子(晶格常数)
    +1.0 0.0 0.0           # 3-5行 格矢
    +0.0 1.0 0.0
    +0.0 0.0 1.0
    +O                     # 元素类别(与它们在POTCAR文件中的顺序一致)
    +2                     # 原子数量
    +Direct                # 坐标类别:分数/笛卡尔
    +0.5 0.5 0.5           # 每个原子的三个(X Y Z)坐标。
    +0.5 0.5 0.623  
    +

    第 9 行:(如果不启用选择性动力学,则为第 8 行)指定原子位置是在笛卡尔坐标系(cartesian coordinates)中还是在分数坐标(direct (fractional) coordinates)中提供。

    分数坐标是把点阵矢量看成是单位矢量下确定原子位置; 笛卡尔坐标是绝对坐标,是直角坐标系与斜角坐标系的统称,考虑点阵常数的大小。

    Basically, the fractional coordinates show the fraction of each unit cell vector that contributes to the position of that atom。根本上来说,分数坐标给出了每个原子在元胞的相对位置。

    晶格参数:

    `,10),d=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left right left right",columnspacing:"0em 1em 0em 1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"A"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"A"),s("mi",null,"x")]),s("msub",null,[s("mi",null,"A"),s("mi",null,"y")]),s("msub",null,[s("mi",null,"A"),s("mi",null,"z")]),s("mo",{stretchy:"false"},")"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"2.46"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mn",null,"0.00"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mn",null,"0.00")])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"B"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"B"),s("mi",null,"x")]),s("msub",null,[s("mi",null,"B"),s("mi",null,"y")]),s("msub",null,[s("mi",null,"B"),s("mi",null,"z")]),s("mo",{stretchy:"false"},")"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mo",null,"−"),s("mn",null,"1.23"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mn",null,"2.13"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mn",null,"0.00")])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"C"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"C"),s("mi",null,"x")]),s("msub",null,[s("mi",null,"C"),s("mi",null,"y")]),s("msub",null,[s("mi",null,"C"),s("mi",null,"z")]),s("mo",{stretchy:"false"},")")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"0.00"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mn",null,"0.00"),s("mspace",{width:"2em"})])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mn",null,"10.00")])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} &A (A_x A_y A_z)\\qquad & 2.46\\qquad & 0.00\\qquad & 0.00 \\\\ &B (B_x B_y B_z)\\qquad &-1.23\\qquad & 2.13\\qquad & 0.00 \\\\ &C (C_x C_y C_z) & 0.00\\qquad & 0.00\\qquad & 10.00 \\\\ \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"4.5em","vertical-align":"-2em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.5em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-3em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-1.5em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal"},"A"),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mopen"},"("),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mclose"},")")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"1em"}}),s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"2.46"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"−"),s("span",{class:"mord"},"1.23"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0.00"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"0.00"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"2.13"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"0.00"),s("span",{class:"mspace",style:{"margin-right":"2em"}})])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"1em"}}),s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0.00")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0.00")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"10.00")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])])])])])])])])],-1),v=s("p",null,"一个点的分数坐标(a, b, c)=(0.667,0.333,0)",-1),b=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left right left right left right left",columnspacing:"0em 1em 0em 1em 0em 1em 0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"x"),s("mo",null,"="),s("msub",null,[s("mi",null,"A"),s("mi",null,"x")]),s("mi",null,"a"),s("mo",null,"+"),s("msub",null,[s("mi",null,"B"),s("mi",null,"x")]),s("mi",null,"b"),s("mo",null,"+"),s("msub",null,[s("mi",null,"C"),s("mi",null,"x")]),s("mi",null,"c"),s("mo",null,"=")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"2.46"),s("mo",null,"∗"),s("mn",null,"0.667")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"−")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"1.23"),s("mo",null,"∗"),s("mn",null,"0.333")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"+")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"0"),s("mo",null,"∗"),s("mn",null,"0")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"1.23")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"y"),s("mo",null,"="),s("msub",null,[s("mi",null,"A"),s("mi",null,"y")]),s("mi",null,"a"),s("mo",null,"+"),s("msub",null,[s("mi",null,"B"),s("mi",null,"y")]),s("mi",null,"b"),s("mo",null,"+"),s("msub",null,[s("mi",null,"C"),s("mi",null,"y")]),s("mi",null,"c"),s("mo",null,"=")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"0"),s("mo",null,"∗"),s("mn",null,"0.667")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"+")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"2.13"),s("mo",null,"∗"),s("mn",null,"0.333")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"+")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"0"),s("mo",null,"∗"),s("mn",null,"0")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"0.71")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mi",null,"z"),s("mo",null,"="),s("msub",null,[s("mi",null,"A"),s("mi",null,"z")]),s("mi",null,"a"),s("mo",null,"+"),s("msub",null,[s("mi",null,"B"),s("mi",null,"z")]),s("mi",null,"b"),s("mo",null,"+"),s("msub",null,[s("mi",null,"C"),s("mi",null,"z")]),s("mi",null,"c"),s("mo",null,"=")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"0"),s("mo",null,"∗"),s("mn",null,"0.667")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"+")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"0"),s("mo",null,"∗"),s("mn",null,"0.333")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"+")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mn",null,"10"),s("mo",null,"∗"),s("mn",null,"0")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mo",null,"="),s("mn",null,"0")])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} &x = A_xa+B_xb+C_xc = &2.46*0.667&-&1.23*0.333&+&0*0&=1.23 \\\\ &y = A_ya+B_yb+C_yc = &0*0.667&+&2.13*0.333&+&0*0&=0.71 \\\\ &z = A_za+B_zb+C_zc = &0*0.667&+&0*0.333&+&10*0&=0 \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"4.5em","vertical-align":"-2em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.5em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-3em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-1.5em"}},[s("span",{class:"pstrut",style:{height:"2.84em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal"},"x"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"=")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.03588em"}},"y"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"=")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.04398em"}},"z"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"b"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord mathnormal"},"c"),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"=")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"1em"}}),s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"2.46"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.667")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.667")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.667")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"−")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"+")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"+")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"1em"}}),s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"1.23"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.333")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"2.13"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.333")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0.333")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"+")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"+")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},"+")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"1em"}}),s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"0"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},"10"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.5em"}},[s("span",{style:{top:"-4.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"1.23")])]),s("span",{style:{top:"-3.16em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"0.71")])]),s("span",{style:{top:"-1.66em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mord"},"0")])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2em"}},[s("span")])])])])])])])])])])],-1),z=s("p",null,"这个点的笛卡尔坐标(x, y, z)= (1.23,0.71,0)",-1),x=s("p",null,"所以,笛卡尔坐标并不是原子在我们作为参考的直角坐标系中的绝对位置,而是在元胞基矢构成坐标系中,原子的绝对位置,而分数坐标,就是原子在元胞基矢构成坐标系中原子的相对位置。对于一个斜角坐标系,显然原子的相对位置比较好判断,所以,我们一般在 POSCAR 中用到的是其分数坐标,如果需要用到笛卡尔坐标,就用上面的公式转换。",-1),w=s("p",null,"抽象一些,用矩阵表示,对于以下两种坐标系:",-1),_=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mtable",{rowspacing:"0.25em",columnalign:"right left right left",columnspacing:"0em 1em 0em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"system_name")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null," ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"system_name")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"lattice_constant_1")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null," ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"lattice_constant_2")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"y")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"y")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"z")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"z")])])])])])])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null," ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"y")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"y")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"z")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"z")])])])])])])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"elements_type")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null," ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"elements_type")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"atom_number")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null," ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"atom_number")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"Direct")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mtext",null," ")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtext",null,"Cartesion")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"11")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"12")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"13")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"21")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"22")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"23")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"31")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"32")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"33")])])])])])])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow")])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"true"},[s("mrow",null,[s("mrow"),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"11")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"12")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"13")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"21")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"22")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"23")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"31")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"32")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"33")])])])])])])])])])]),s("annotation",{encoding:"application/x-tex"}," \\begin{aligned} & \\text{system\\_name} &\\ & \\text{system\\_name} \\\\ & \\text{lattice\\_constant\\_1} &\\ & \\text{lattice\\_constant\\_2} \\\\ & \\begin{matrix} A_{x} & A_{x} & A_{x} \\\\ B_{x} & B_{y} & B_{y} \\\\ C_{x} & C_{z} & C_{z} \\end{matrix} &\\ & \\begin{matrix} A_{x} & A_{x} & A_{x} \\\\ B_{x} & B_{y} & B_{y} \\\\ C_{x} & C_{z} & C_{z} \\end{matrix}\\\\ & \\text{elements\\_type} &\\ & \\text{elements\\_type} \\\\ & \\text{atom\\_number} &\\ & \\text{atom\\_number} \\\\ & \\text{Direct} &\\ & \\text{Cartesion} \\\\ & \\begin{matrix} X_{11} & X_{12} & X_{13} \\\\ X_{21} & X_{22} & X_{23} \\\\ X_{31} & X_{32} & X_{33} \\end{matrix} & & \\begin{matrix} x_{11} & x_{12} & x_{13} \\\\ x_{21} & x_{22} & x_{23} \\\\ x_{31} & x_{32} & x_{33} \\end{matrix} \\\\ \\end{aligned} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"15.3em","vertical-align":"-7.4em"}}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.9em"}},[s("span",{style:{top:"-11.11em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-9.61em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-6.9em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-2.71em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"-1.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})]),s("span",{style:{top:"1.5em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.4em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.9em"}},[s("span",{style:{top:"-11.11em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"system_name")])])]),s("span",{style:{top:"-9.61em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"lattice_constant_1")])])]),s("span",{style:{top:"-6.9em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])])])]),s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"elements_type")])])]),s("span",{style:{top:"-2.71em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"atom_number")])])]),s("span",{style:{top:"-1.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"Direct")])])]),s("span",{style:{top:"1.5em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"11")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"21")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"31")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"12")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"22")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"32")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"13")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"23")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"33")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.4em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"1em"}}),s("span",{class:"col-align-r"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.9em"}},[s("span",{style:{top:"-11.11em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mspace"}," ")])]),s("span",{style:{top:"-9.61em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mspace"}," ")])]),s("span",{style:{top:"-6.9em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mspace"}," ")])]),s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mspace"}," ")])]),s("span",{style:{top:"-2.71em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mspace"}," ")])]),s("span",{style:{top:"-1.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mspace"}," ")])]),s("span",{style:{top:"1.5em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"})])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.4em"}},[s("span")])])])]),s("span",{class:"col-align-l"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.9em"}},[s("span",{style:{top:"-11.11em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"system_name")])])]),s("span",{style:{top:"-9.61em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"lattice_constant_2")])])]),s("span",{style:{top:"-6.9em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])])])]),s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"elements_type")])])]),s("span",{style:{top:"-2.71em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"atom_number")])])]),s("span",{style:{top:"-1.21em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord text"},[s("span",{class:"mord"},"Cartesion")])])]),s("span",{style:{top:"1.5em"}},[s("span",{class:"pstrut",style:{height:"4.05em"}}),s("span",{class:"mord"},[s("span",{class:"mord"}),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"11")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"21")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"31")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"12")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"22")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"32")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"13")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"23")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"33")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"7.4em"}},[s("span")])])])])])])])])])])],-1),f=s("p",null,"有",-1),A=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("mrow",null,[s("mo",{fence:"true"},"["),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"11")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"12")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"13")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"21")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"22")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"23")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"31")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"32")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"X"),s("mn",null,"33")])])])])]),s("mo",{fence:"true"},"]")]),s("mo",null,"∗"),s("mrow",null,[s("mo",{fence:"true"},"["),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"A"),s("mi",null,"x")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"y")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"B"),s("mi",null,"y")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"x")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"z")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"C"),s("mi",null,"z")])])])])]),s("mo",{fence:"true"},"]")]),s("mo",null,"∗"),s("mi",null,"l"),s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"t"),s("mi",null,"i"),s("mi",null,"c"),s("mi",null,"e"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"c"),s("mi",null,"o"),s("mi",null,"n"),s("mi",null,"t"),s("mi",null,"e"),s("mi",null,"n"),s("mi",null,"t"),s("mi",{mathvariant:"normal"},"_"),s("mn",null,"1"),s("mspace",{linebreak:"newline"}),s("mo",null,"="),s("mrow",null,[s("mo",{fence:"true"},"["),s("mtable",{rowspacing:"0.16em",columnalign:"center center center",columnspacing:"1em"},[s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"11")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"12")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"13")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"21")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"22")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"23")])])])]),s("mtr",null,[s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"31")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"32")])])]),s("mtd",null,[s("mstyle",{scriptlevel:"0",displaystyle:"false"},[s("msub",null,[s("mi",null,"x"),s("mn",null,"33")])])])])]),s("mo",{fence:"true"},"]")]),s("mo",null,"∗"),s("mi",null,"l"),s("mi",null,"a"),s("mi",null,"t"),s("mi",null,"t"),s("mi",null,"i"),s("mi",null,"c"),s("mi",null,"e"),s("mi",{mathvariant:"normal"},"_"),s("mi",null,"c"),s("mi",null,"o"),s("mi",null,"n"),s("mi",null,"t"),s("mi",null,"e"),s("mi",null,"n"),s("mi",null,"t"),s("mi",{mathvariant:"normal"},"_"),s("mn",null,"2")]),s("annotation",{encoding:"application/x-tex"}," \\left[ \\begin{matrix} X_{11} & X_{12} & X_{13} \\\\ X_{21} & X_{22} & X_{23} \\\\ X_{31} & X_{32} & X_{33} \\end{matrix} \\right] * \\left[ \\begin{matrix} A_{x} & A_{x} & A_{x} \\\\ B_{x} & B_{y} & B_{y} \\\\ C_{x} & C_{z} & C_{z} \\end{matrix} \\right] *lattice\\_content\\_1 \\\\ = \\left[ \\begin{matrix} x_{11} & x_{12} & x_{13} \\\\ x_{21} & x_{22} & x_{23} \\\\ x_{31} & x_{32} & x_{33} \\end{matrix} \\right] *lattice\\_content\\_2 ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.6em","vertical-align":"-1.55em"}}),s("span",{class:"minner"},[s("span",{class:"mopen"},[s("span",{class:"delimsizing mult"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.05em"}},[s("span",{class:"pstrut",style:{height:"5.6em"}}),s("span",{style:{width:"0.667em",height:"3.600em"}},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.667em",height:"3.600em",viewBox:"0 0 667 3600"},[s("path",{d:`M403 1759 V84 H666 V0 H319 V1759 v0 v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v0 v1759 h84z`})])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"11")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"21")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"31")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"12")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"22")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"32")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"13")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"23")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07847em"}},"X"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0785em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"33")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])]),s("span",{class:"mclose"},[s("span",{class:"delimsizing mult"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.05em"}},[s("span",{class:"pstrut",style:{height:"5.6em"}}),s("span",{style:{width:"0.667em",height:"3.600em"}},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.667em",height:"3.600em",viewBox:"0 0 667 3600"},[s("path",{d:`M347 1759 V0 H0 V84 H263 V1759 v0 v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v0 v1759 h84z`})])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.6em","vertical-align":"-1.55em"}}),s("span",{class:"minner"},[s("span",{class:"mopen"},[s("span",{class:"delimsizing mult"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.05em"}},[s("span",{class:"pstrut",style:{height:"5.6em"}}),s("span",{style:{width:"0.667em",height:"3.600em"}},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.667em",height:"3.600em",viewBox:"0 0 667 3600"},[s("path",{d:`M403 1759 V84 H666 V0 H319 V1759 v0 v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v0 v1759 h84z`})])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"A"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"x")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05017em"}},"B"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0502em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"y")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2861em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.1514em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0715em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.04398em"}},"z")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])]),s("span",{class:"mclose"},[s("span",{class:"delimsizing mult"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.05em"}},[s("span",{class:"pstrut",style:{height:"5.6em"}}),s("span",{style:{width:"0.667em",height:"3.600em"}},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.667em",height:"3.600em",viewBox:"0 0 667 3600"},[s("path",{d:`M347 1759 V0 H0 V84 H263 V1759 v0 v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v0 v1759 h84z`})])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1.0044em","vertical-align":"-0.31em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mord mathnormal"},"tt"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mord mathnormal"},"ce"),s("span",{class:"mord",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal"},"co"),s("span",{class:"mord mathnormal"},"n"),s("span",{class:"mord mathnormal"},"t"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal"},"n"),s("span",{class:"mord mathnormal"},"t"),s("span",{class:"mord"},"_1")]),s("span",{class:"mspace newline"}),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.3669em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"3.6em","vertical-align":"-1.55em"}}),s("span",{class:"minner"},[s("span",{class:"mopen"},[s("span",{class:"delimsizing mult"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.05em"}},[s("span",{class:"pstrut",style:{height:"5.6em"}}),s("span",{style:{width:"0.667em",height:"3.600em"}},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.667em",height:"3.600em",viewBox:"0 0 667 3600"},[s("path",{d:`M403 1759 V84 H666 V0 H319 V1759 v0 v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v0 v1759 h84z`})])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])]),s("span",{class:"mord"},[s("span",{class:"mtable"},[s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"11")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"21")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"31")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"12")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"22")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"32")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])]),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"arraycolsep",style:{width:"0.5em"}}),s("span",{class:"col-align-c"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.21em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"13")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-3.01em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"23")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])]),s("span",{style:{top:"-1.81em"}},[s("span",{class:"pstrut",style:{height:"3em"}}),s("span",{class:"mord"},[s("span",{class:"mord"},[s("span",{class:"mord mathnormal"},"x"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3011em"}},[s("span",{style:{top:"-2.55em","margin-left":"0em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mtight"},"33")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])]),s("span",{class:"mclose"},[s("span",{class:"delimsizing mult"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"2.05em"}},[s("span",{style:{top:"-4.05em"}},[s("span",{class:"pstrut",style:{height:"5.6em"}}),s("span",{style:{width:"0.667em",height:"3.600em"}},[s("svg",{xmlns:"http://www.w3.org/2000/svg",width:"0.667em",height:"3.600em",viewBox:"0 0 667 3600"},[s("path",{d:`M347 1759 V0 H0 V84 H263 V1759 v0 v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v0 v1759 h84z`})])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"1.55em"}},[s("span")])])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"∗"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"1.0044em","vertical-align":"-0.31em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal"},"a"),s("span",{class:"mord mathnormal"},"tt"),s("span",{class:"mord mathnormal"},"i"),s("span",{class:"mord mathnormal"},"ce"),s("span",{class:"mord",style:{"margin-right":"0.02778em"}},"_"),s("span",{class:"mord mathnormal"},"co"),s("span",{class:"mord mathnormal"},"n"),s("span",{class:"mord mathnormal"},"t"),s("span",{class:"mord mathnormal"},"e"),s("span",{class:"mord mathnormal"},"n"),s("span",{class:"mord mathnormal"},"t"),s("span",{class:"mord"},"_2")])])])])],-1),C=s("p",null,"vaspkit 411-412 可以转换。",-1),k=s("p",null,"参考:",-1),B={href:"http://muchong.com/html/201708/6640507.html",target:"_blank",rel:"noopener noreferrer"},X={href:"https://www.vasp.at/wiki/index.php/POSCAR",target:"_blank",rel:"noopener noreferrer"},P={href:"http://blog.sina.com.cn/s/blog_17589e0920102xhee.html",target:"_blank",rel:"noopener noreferrer"},V={href:"https://zh.wikipedia.org/wiki/%E7%AC%9B%E5%8D%A1%E5%B0%94%E5%9D%90%E6%A0%87%E7%B3%BB",target:"_blank",rel:"noopener noreferrer"},O=e('

    提示

    8 行 9 行均只识别第一个字母。即 VASP 识别的唯一关键字符是 C or c for cartesian modeDor d for direct modeS or s for Select

    POTCAR

    赝势文件。POTCAR 文件包含计算中使用的每个原子种类的赝势。如果物种数量大于一个,则 按照 POSCAR 中原子的顺序 合并每个物种的 POTCAR 文件。

    ',3),S={href:"https://www.bigbrosci.com/2017/10/18/ex1_05_vasp_preparation_input_potcar/",target:"_blank",rel:"noopener noreferrer"},M=s("p",null,"vasp 计算中用到的三种赝势:模守恒赝势,超软赝势,PAW 赝势 (按产生顺序)。",-1),E=s("blockquote",null,[s("p",null,"按方法不同分为 USPP 和 PAW(两种方法都可以相当程度地减少过渡金属或第一行元素的每个原子 所必需的平面波数量)。"),s("p",null,"按交换关联函数不同分为 LDA 和 GGA(又分为 PW91 和 PBE)//求解 K-S 方程时电子之间的交换关联泛函取局域密度泛函 LDA(Rc 处电子结构当成是密度相同的均匀电子气体来算)或 广义梯度泛函 GGA(考虑了密度的梯度变化),但泛函的不同也会引起贋势的不同。")],-1),R=s("p",null,"每种元素往往还会有多种赝势存在。这是因为根据 ENMAX 的大小还可以分为 Ga,Ga_s(soft),Ga_h,或者根据处理半芯态的不同还可以分为 Ga,Ga_sv(s 电子作为半芯态),Ga_pv 的不同。",-1),N={href:"https://blog.csdn.net/kyang_823/article/details/56277201",target:"_blank",rel:"noopener noreferrer"},T=e(`

    KPOINTS

    K 点取样文件。KPOINTS 文件用于指定 Bloch 矢量(k 点),这些矢量将用于在计算中对布里渊区进行采样。

    可以使用几种不同的方法在 KPOINTS 文件中指定 k 点:(1)作为自动生成的(移位的)常规点网格;(2)通过线段的起点和终点;或(3)作为点和权重的明确列表。

    K-POINTS      #  第一行随便写都行,但不能没有
    + 0             # 零,格子自动生成
    +Gamma         #  gamma点centered 
    +1 1 1         #  1*1*1格子
    +0 0 0         #  S1 S2 S3, 一般保持 0 0 0 不变。
    +

    详解:

    • 该 KPOINTS 文件里面,共有 5 行,# 号以及后面的不用输入;
    • 同 INCAR 的注释一样,不要在每一行后面使用 ! 来进行注释,要使用 #,且最好不要写中文。
    • 第一行:可以随便写内容,但不能没有;
    • 第二行:数字 0,不是字母 O,0 在这里表示的是自动生成 K 点。你可能注意到了,0 前面有个空格,不过没关系,对计算不影响,可以删掉,也可以再加一个空格,后面的同样如此。但是避免用 tab 输入,VASP 有时候不识别 tab 键输入的空白部分,导致计算出错;
    • 第三行:VASP 只认第一个字母,大小写均可。在这里 Gamma 和 gamma,Gorge,gorge 效果是一样的,当然这一行也可以直接写字母 G 或者 g。
      • G 表示的是以 gamma 点为中心生成网格。
      • 另外一种是原始的 Monkhorst-Pack 网格,两者的区别是 M 或者 m 在 G 的基础上在三个方向上平移了 1/(2N)个单位。
      • G,也叫 gamma centered Monkhorst-Pack Grid;所以,gamma centered 只是 MP 网格的一种特殊情况。
    • 第四行,在 xyz 三个方向上生成对应数目的 K 点,本例是 111;
      • 对于原子或者分子的计算,K 点取一个 gamma 点就够了(1 1 1),也就是这个 KPOINTS 文件可以用于绝大多数的原子或者分子计算,不用再修改;
      • 但如果你要用 ISMEAR = -5 来计算能量,那么就需要把 1 1 1 改成 2 2 2 或者 3 3 3。
    • 第五行,一般都写成 0 0 0,不用动即可;
    • 按照前面 INCAR 的方式保存文件,名字为 KPOINTS。

    KPOINTS 的建议:

    K 点在 VASP 计算中非常重要,大师兄给的一个建议是:

    • 一直用 gamma centered,也就是第三行保持 G 不变。因为 M 平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出错,尤其是对于六角晶系 hexagonal 的结构,必须用 gamma centered!这一点,vasp 官网说的很明确;其他的建议后续慢慢展开讨论。
    • 如非六角晶系的计算,如果已经设置的 M 算起来了,继续用 M 算就行,没必要改成 G 再重新算一遍;
    • 前面看不懂,没事。记住这一点,本节就圆满完成任务:气体分子,原子计算的时候,使用 gamma 点即可。

    K 点取值:

    1. 通过测试不同 k 点对体系能量的变化
    2. 查找参考文献取值

    此外,不同 K 点之间的数据不能混用。比如计算 CO 在一个 (3x3) Cu(111) 表面上的吸附能:

    `,12),H=s("p",{class:"katex-block"},[s("span",{class:"katex-display"},[s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("semantics",null,[s("mrow",null,[s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"a"),s("mi",null,"d"),s("mi",null,"s")])]),s("mo",null,"="),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"C"),s("mi",null,"O"),s("mo",null,"+"),s("mi",null,"s"),s("mi",null,"l"),s("mi",null,"a"),s("mi",null,"b")])]),s("mtext",null,"–"),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"s"),s("mi",null,"l"),s("mi",null,"a"),s("mi",null,"b")])]),s("mtext",null,"–"),s("msub",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"C"),s("msup",null,[s("mi",null,"O"),s("mrow",null,[s("mi",null,"g"),s("mi",null,"a"),s("mi",null,"s")])])])])]),s("annotation",{encoding:"application/x-tex"}," E_{ads} = E_{CO + slab} – E_{slab} – E_{CO^{gas}} ")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8333em","vertical-align":"-0.15em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"d"),s("span",{class:"mord mathnormal mtight"},"s")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}}),s("span",{class:"mrel"},"="),s("span",{class:"mspace",style:{"margin-right":"0.2778em"}})]),s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.8917em","vertical-align":"-0.2083em"}}),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"CO"),s("span",{class:"mbin mtight"},"+"),s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight"},"ab")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.2083em"}},[s("span")])])])])]),s("span",{class:"mord"},"–"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3361em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight"},"s"),s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal mtight"},"ab")])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])]),s("span",{class:"mord"},"–"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t vlist-t2"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.3283em"}},[s("span",{style:{top:"-2.55em","margin-left":"-0.0576em","margin-right":"0.05em"}},[s("span",{class:"pstrut",style:{height:"2.7em"}}),s("span",{class:"sizing reset-size6 size3 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.07153em"}},"C"),s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.02778em"}},"O"),s("span",{class:"msupsub"},[s("span",{class:"vlist-t"},[s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.5935em"}},[s("span",{style:{top:"-2.786em","margin-right":"0.0714em"}},[s("span",{class:"pstrut",style:{height:"2.5em"}}),s("span",{class:"sizing reset-size3 size1 mtight"},[s("span",{class:"mord mtight"},[s("span",{class:"mord mathnormal mtight",style:{"margin-right":"0.03588em"}},"g"),s("span",{class:"mord mathnormal mtight"},"a"),s("span",{class:"mord mathnormal mtight"},"s")])])])])])])])])])])])]),s("span",{class:"vlist-s"},"​")]),s("span",{class:"vlist-r"},[s("span",{class:"vlist",style:{height:"0.15em"}},[s("span")])])])])])])])])])],-1),I=s("p",null,[l("等号后面的前两项,必须要用同一个 K 点下计算出来的能量,如果 "),s("span",{class:"katex"},[s("span",{class:"katex-mathml"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("semantics",null,[s("mrow",null,[s("mi",null,"E"),s("mrow",null,[s("mi",null,"C"),s("mi",null,"O"),s("mo",null,"+"),s("mi",null,"s"),s("mi",null,"l"),s("mi",null,"a"),s("mi",null,"b")])]),s("annotation",{encoding:"application/x-tex"},"E{CO+slab}")])])]),s("span",{class:"katex-html","aria-hidden":"true"},[s("span",{class:"base"},[s("span",{class:"strut",style:{height:"0.7778em","vertical-align":"-0.0833em"}}),s("span",{class:"mord mathnormal",style:{"margin-right":"0.05764em"}},"E"),s("span",{class:"mord"},[s("span",{class:"mord mathnormal",style:{"margin-right":"0.02778em"}},"CO"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mbin"},"+"),s("span",{class:"mspace",style:{"margin-right":"0.2222em"}}),s("span",{class:"mord mathnormal"},"s"),s("span",{class:"mord mathnormal",style:{"margin-right":"0.01968em"}},"l"),s("span",{class:"mord mathnormal"},"ab")])])])]),l(" 用 "),s("code",null,"5x5x1"),l(" 的 K 点, E(slab) 采用 "),s("code",null,"3x3x1"),l(" 的 K 点能量,得出的结果必然是错的。")],-1),K={href:"https://www.bigbrosci.com/2017/10/16/ex1_03_vasp_preparation_input_kpoints/",target:"_blank",rel:"noopener noreferrer"},q={href:"https://www.bigbrosci.com/2017/12/10/ex18/",target:"_blank",rel:"noopener noreferrer"},G={href:"https://www.vasp.at/wiki/index.php/KPOINTS",target:"_blank",rel:"noopener noreferrer"},L=s("hr",null,null,-1),D={href:"https://www.vasp.at/wiki/index.php/Category",target:"_blank",rel:"noopener noreferrer"},F=e(`

    STOPCAR

    在当前电子步或离子步完成后结束 VASP 运行。

    创建 STOPCAR

    LSTOP = .TRUE.   # 在下一个离子步结束,推荐
    +
    +LABORT = .TRUE.  # 在下一个电子部结束
    +
    `,4);function U(Y,W){const m=n("RouterLink"),t=n("ExternalLinkIcon"),i=n("Mermaid");return r(),c("div",null,[g,s("p",null,[l("标签的含义可以查 "),a(m,{to:"/dft-learning/05.VASP/01.VASP%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%96%87%E4%BB%B6/02.vasp-input-files-INCAR.html"},{default:h(()=>[l("vasp-input-files-INCAR")]),_:1}),l(" 和 [VASP 手册]("),s("a",y,[l("https://www.vasp.at/wiki/index.php/Category"),a(t)]),l(": INCAR)。")]),u,d,v,b,z,x,w,_,f,A,C,s("blockquote",null,[k,s("p",null,[s("a",B,[l("vasp 的 POSCAR 文件中的 Direct 坐标和 Cartesion 坐标的关系 - 小木虫"),a(t)])]),s("p",null,[s("a",X,[l("POSCAR - VaspWiki"),a(t)])]),s("p",null,[s("a",P,[l("POSCAR 关于分数坐标与笛卡尔坐标写法问题 - 郝玲娟 xueer 的新浪博客"),a(t)])]),s("p",null,[s("a",V,[l("笛卡尔坐标系 - 维基百科"),a(t)])])]),O,s("p",null,[l("其他见:"),s("a",S,[l("https://www.bigbrosci.com/2017/10/18/ex1_05_vasp_preparation_input_potcar/"),a(t)])]),M,E,a(i,{id:"mermaid-105",code:"eJxLL0osyFAIceFyjH6xde7Trv06Cs96Op9N2/ls89RYXV07Bafo0OCAgFguRwUQzzk6wDE8losrEVn1k11LnvUuetq6+UXjlKfte59N3RALUpwU7ePiqPB0Y8PT+fOfrm97umvZs82zgfKxXAqJYMOSo93dgQp27n+ys/PZovXICoAgGawmJTog3NIQWSQ1OsDJNZYLACgiUbc="}),R,s("blockquote",null,[s("p",null,[s("a",N,[l("https://blog.csdn.net/kyang_823/article/details/56277201"),a(t)])])]),T,H,I,s("blockquote",null,[s("p",null,[l("K 点部分抄自大师兄网站:"),s("a",K,[l("https://www.bigbrosci.com/2017/10/16/ex1_03_vasp_preparation_input_kpoints/"),a(t)])]),s("p",null,[s("a",q,[l("https://www.bigbrosci.com/2017/12/10/ex18/"),a(t)])])]),s("p",null,[l("手册:"),s("a",G,[l("KPOINTS - Vaspwiki"),a(t)])]),L,s("p",null,[l("还有一些其他的文件:[Category: Input Files - vaspwiki]("),s("a",D,[l("https://www.vasp.at/wiki/index.php/Category"),a(t)]),l(": Input_Files) .")]),F])}const Q=p(o,[["render",U],["__file","index.html.vue"]]);export{Q as default}; diff --git a/assets/index.html-z81c_CD-.js b/assets/index.html-z81c_CD-.js new file mode 100644 index 00000000..4a5606aa --- /dev/null +++ b/assets/index.html-z81c_CD-.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-fadba3e8","path":"/category/install/","title":"Install 分类","lang":"zh-CN","frontmatter":{"title":"Install 分类","dir":{"index":false},"feed":false,"sitemap":false,"blog":{"type":"category","name":"Install","key":"category"},"layout":"BlogCategory","description":"","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/category/install/"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Install 分类"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"article:author","content":"Northword"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Install 分类\\"}"]]},"headers":[],"git":{},"readingTime":{"minutes":0,"words":0},"filePathRelative":null,"excerpt":"","autoDesc":true}');export{t as data}; diff --git a/assets/infoDiagram-a336098b-VevFHQI9.js b/assets/infoDiagram-a336098b-VevFHQI9.js new file mode 100644 index 00000000..ece30176 --- /dev/null +++ b/assets/infoDiagram-a336098b-VevFHQI9.js @@ -0,0 +1,7 @@ +import{l as Y,aJ as D,i as M}from"./mermaid.core-Up0YySao.js";import"./app-Mf7X6hWu.js";var O=function(){var a=function(u,t,e,n){for(e=e||{},n=u.length;n--;e[u[n]]=t);return e},f=[6,9,10],m={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(t,e,n,s,r,i,d){switch(i.length-1,r){case 1:return s;case 4:break;case 6:s.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},a(f,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},a(f,[2,3]),a(f,[2,4]),a(f,[2,5]),a(f,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(e.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=e,n}},parse:function(t){var e=this,n=[0],s=[],r=[null],i=[],d=this.table,P="",v=0,L=0,N=2,T=1,R=i.slice.call(arguments,1),o=Object.create(this.lexer),p={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(p.yy[E]=this.yy[E]);o.setInput(t,p.yy),p.yy.lexer=o,p.yy.parser=this,typeof o.yylloc>"u"&&(o.yylloc={});var I=o.yylloc;i.push(I);var z=o.options&&o.options.ranges;typeof p.yy.parseError=="function"?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function U(){var y;return y=s.pop()||o.lex()||T,typeof y!="number"&&(y instanceof Array&&(s=y,y=s.pop()),y=e.symbols_[y]||y),y}for(var l,g,h,w,_={},b,c,F,S;;){if(g=n[n.length-1],this.defaultActions[g]?h=this.defaultActions[g]:((l===null||typeof l>"u")&&(l=U()),h=d[g]&&d[g][l]),typeof h>"u"||!h.length||!h[0]){var A="";S=[];for(b in d[g])this.terminals_[b]&&b>N&&S.push("'"+this.terminals_[b]+"'");o.showPosition?A="Parse error on line "+(v+1)+`: +`+o.showPosition()+` +Expecting `+S.join(", ")+", got '"+(this.terminals_[l]||l)+"'":A="Parse error on line "+(v+1)+": Unexpected "+(l==T?"end of input":"'"+(this.terminals_[l]||l)+"'"),this.parseError(A,{text:o.match,token:this.terminals_[l]||l,line:o.yylineno,loc:I,expected:S})}if(h[0]instanceof Array&&h.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+l);switch(h[0]){case 1:n.push(l),r.push(o.yytext),i.push(o.yylloc),n.push(h[1]),l=null,L=o.yyleng,P=o.yytext,v=o.yylineno,I=o.yylloc;break;case 2:if(c=this.productions_[h[1]][1],_.$=r[r.length-c],_._$={first_line:i[i.length-(c||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(c||1)].first_column,last_column:i[i.length-1].last_column},z&&(_._$.range=[i[i.length-(c||1)].range[0],i[i.length-1].range[1]]),w=this.performAction.apply(_,[P,L,v,p.yy,h[1],r,i].concat(R)),typeof w<"u")return w;c&&(n=n.slice(0,-1*c*2),r=r.slice(0,-1*c),i=i.slice(0,-1*c)),n.push(this.productions_[h[1]][0]),r.push(_.$),i.push(_._$),F=d[n[n.length-2]][n[n.length-1]],n.push(F);break;case 3:return!0}}return!0}},k=function(){var u={EOF:1,parseError:function(e,n){if(this.yy.parser)this.yy.parser.parseError(e,n);else throw new Error(e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var e=t.match(/(?:\r\n?|\n).*/g);return e?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===s.length?this.yylloc.first_column:0)+s[s.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+` +`+e+"^"},test_match:function(t,e){var n,s,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),s=t[0].match(/(?:\r\n?|\n).*/g),s&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var i in r)this[i]=r[i];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,e,n,s;this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),i=0;ie[0].length)){if(e=n,s=i,this.options.backtrack_lexer){if(t=this.test_match(n,r[i]),t!==!1)return t;if(this._backtrack){e=!1;continue}else return!1}else if(!this.options.flex)break}return e?(t=this.test_match(e,r[s]),t!==!1?t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,n,s,r){switch(s){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return u}();m.lexer=k;function x(){this.yy={}}return x.prototype=m,m.Parser=x,new x}();O.parser=O;const B=O,j={info:!1};let $=j.info;const J=a=>{$=a},V=()=>$,X=()=>{$=j.info},q={clear:X,setInfo:J,getInfo:V},C=(a,f,m)=>{Y.debug(`rendering info diagram +`+a);const k=D(f);M(k,100,400,!0),k.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${m}`)},G={draw:C},Q={parser:B,db:q,renderer:G};export{Q as diagram}; diff --git a/assets/init-Hi12RPRh.js b/assets/init-Hi12RPRh.js new file mode 100644 index 00000000..d44de941 --- /dev/null +++ b/assets/init-Hi12RPRh.js @@ -0,0 +1 @@ +function t(e,a){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(a).domain(e);break}return this}export{t as i}; diff --git a/assets/journeyDiagram-deae3313-BJNTUAGR.js b/assets/journeyDiagram-deae3313-BJNTUAGR.js new file mode 100644 index 00000000..9374ca45 --- /dev/null +++ b/assets/journeyDiagram-deae3313-BJNTUAGR.js @@ -0,0 +1,139 @@ +import{c as I,v as yt,x as ft,s as dt,g as pt,b as gt,a as mt,z as xt,h as W,i as kt}from"./mermaid.core-Up0YySao.js";import{d as _t,f as bt,a as vt,g as it}from"./svgDrawCommon-ad5ef572-uYdJDui6.js";import{a as Q}from"./arc-M4yoLkG1.js";import"./app-Mf7X6hWu.js";import"./path-aUcfwwLI.js";var G=function(){var t=function(p,s,r,a){for(r=r||{},a=p.length;a--;r[p[a]]=s);return r},e=[6,8,10,11,12,14,16,17,18],i=[1,9],l=[1,10],n=[1,11],h=[1,12],c=[1,13],f=[1,14],y={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(s,r,a,u,d,o,w){var k=o.length-1;switch(d){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 13:u.addTask(o[k-1],o[k]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:i,12:l,14:n,16:h,17:c,18:f},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:function(s,r){if(r.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=r,a}},parse:function(s){var r=this,a=[0],u=[],d=[null],o=[],w=this.table,k="",R=0,Z=0,lt=2,J=1,ct=o.slice.call(arguments,1),x=Object.create(this.lexer),S={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&(S.yy[z]=this.yy[z]);x.setInput(s,S.yy),S.yy.lexer=x,S.yy.parser=this,typeof x.yylloc>"u"&&(x.yylloc={});var Y=x.yylloc;o.push(Y);var ht=x.options&&x.options.ranges;typeof S.yy.parseError=="function"?this.parseError=S.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ut(){var T;return T=u.pop()||x.lex()||J,typeof T!="number"&&(T instanceof Array&&(u=T,T=u.pop()),T=r.symbols_[T]||T),T}for(var _,E,b,O,A={},N,$,K,B;;){if(E=a[a.length-1],this.defaultActions[E]?b=this.defaultActions[E]:((_===null||typeof _>"u")&&(_=ut()),b=w[E]&&w[E][_]),typeof b>"u"||!b.length||!b[0]){var q="";B=[];for(N in w[E])this.terminals_[N]&&N>lt&&B.push("'"+this.terminals_[N]+"'");x.showPosition?q="Parse error on line "+(R+1)+`: +`+x.showPosition()+` +Expecting `+B.join(", ")+", got '"+(this.terminals_[_]||_)+"'":q="Parse error on line "+(R+1)+": Unexpected "+(_==J?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(q,{text:x.match,token:this.terminals_[_]||_,line:x.yylineno,loc:Y,expected:B})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(b[0]){case 1:a.push(_),d.push(x.yytext),o.push(x.yylloc),a.push(b[1]),_=null,Z=x.yyleng,k=x.yytext,R=x.yylineno,Y=x.yylloc;break;case 2:if($=this.productions_[b[1]][1],A.$=d[d.length-$],A._$={first_line:o[o.length-($||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-($||1)].first_column,last_column:o[o.length-1].last_column},ht&&(A._$.range=[o[o.length-($||1)].range[0],o[o.length-1].range[1]]),O=this.performAction.apply(A,[k,Z,R,S.yy,b[1],d,o].concat(ct)),typeof O<"u")return O;$&&(a=a.slice(0,-1*$*2),d=d.slice(0,-1*$),o=o.slice(0,-1*$)),a.push(this.productions_[b[1]][0]),d.push(A.$),o.push(A._$),K=w[a[a.length-2]][a[a.length-1]],a.push(K);break;case 3:return!0}}return!0}},m=function(){var p={EOF:1,parseError:function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},setInput:function(s,r){return this.yy=r||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var r=s.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var r=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var u=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var d=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===u.length?this.yylloc.first_column:0)+u[u.length-a.length].length-a[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),r=new Array(s.length+1).join("-");return s+this.upcomingInput()+` +`+r+"^"},test_match:function(s,r){var a,u,d;if(this.options.backtrack_lexer&&(d={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(d.yylloc.range=this.yylloc.range.slice(0))),u=s[0].match(/(?:\r\n?|\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],a=this.performAction.call(this,this.yy,this,r,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var o in d)this[o]=d[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,r,a,u;this._more||(this.yytext="",this.match="");for(var d=this._currentRules(),o=0;or[0].length)){if(r=a,u=o,this.options.backtrack_lexer){if(s=this.test_match(a,d[o]),s!==!1)return s;if(this._backtrack){r=!1;continue}else return!1}else if(!this.options.flex)break}return r?(s=this.test_match(r,d[u]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r||this.lex()},begin:function(r){this.conditionStack.push(r)},popState:function(){var r=this.conditionStack.length-1;return r>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(r){return r=this.conditionStack.length-1-Math.abs(r||0),r>=0?this.conditionStack[r]:"INITIAL"},pushState:function(r){this.begin(r)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(r,a,u,d){switch(u){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return p}();y.lexer=m;function g(){this.yy={}}return g.prototype=y,y.Parser=g,new g}();G.parser=G;const wt=G;let C="";const H=[],V=[],F=[],$t=function(){H.length=0,V.length=0,C="",F.length=0,xt()},Tt=function(t){C=t,H.push(t)},Mt=function(){return H},St=function(){let t=D();const e=100;let i=0;for(;!t&&i{i.people&&t.push(...i.people)}),[...new Set(t)].sort()},Pt=function(t,e){const i=e.substr(1).split(":");let l=0,n=[];i.length===1?(l=Number(i[0]),n=[]):(l=Number(i[0]),n=i[1].split(","));const h=n.map(f=>f.trim()),c={section:C,type:C,people:h,task:t,score:l};F.push(c)},It=function(t){const e={section:C,type:C,description:t,task:t,classes:[]};V.push(e)},D=function(){const t=function(i){return F[i].processed};let e=!0;for(const[i,l]of F.entries())t(i),e=e&&l.processed;return e},At=function(){return Et()},tt={getConfig:()=>I().journey,clear:$t,setDiagramTitle:yt,getDiagramTitle:ft,setAccTitle:dt,getAccTitle:pt,setAccDescription:gt,getAccDescription:mt,addSection:Tt,getSections:Mt,getTasks:St,addTask:Pt,addTaskOrg:It,getActors:At},Ct=t=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${t.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${t.textColor} + } + + .legend { + fill: ${t.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${t.textColor} + } + + .face { + ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${t.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${t.fillType0?`fill: ${t.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${t.fillType0?`fill: ${t.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${t.fillType0?`fill: ${t.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${t.fillType0?`fill: ${t.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${t.fillType0?`fill: ${t.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${t.fillType0?`fill: ${t.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${t.fillType0?`fill: ${t.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${t.fillType0?`fill: ${t.fillType7}`:""}; + } + + .actor-0 { + ${t.actor0?`fill: ${t.actor0}`:""}; + } + .actor-1 { + ${t.actor1?`fill: ${t.actor1}`:""}; + } + .actor-2 { + ${t.actor2?`fill: ${t.actor2}`:""}; + } + .actor-3 { + ${t.actor3?`fill: ${t.actor3}`:""}; + } + .actor-4 { + ${t.actor4?`fill: ${t.actor4}`:""}; + } + .actor-5 { + ${t.actor5?`fill: ${t.actor5}`:""}; + } +`,Vt=Ct,U=function(t,e){return _t(t,e)},Ft=function(t,e){const l=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),n=t.append("g");n.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),n.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function h(y){const m=Q().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);y.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function c(y){const m=Q().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);y.append("path").attr("class","mouth").attr("d",m).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function f(y){y.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return e.score>3?h(n):e.score<3?c(n):f(n),l},rt=function(t,e){const i=t.append("circle");return i.attr("cx",e.cx),i.attr("cy",e.cy),i.attr("class","actor-"+e.pos),i.attr("fill",e.fill),i.attr("stroke",e.stroke),i.attr("r",e.r),i.class!==void 0&&i.attr("class",i.class),e.title!==void 0&&i.append("title").text(e.title),i},at=function(t,e){return bt(t,e)},Lt=function(t,e){function i(n,h,c,f,y){return n+","+h+" "+(n+c)+","+h+" "+(n+c)+","+(h+f-y)+" "+(n+c-y*1.2)+","+(h+f)+" "+n+","+(h+f)}const l=t.append("polygon");l.attr("points",i(e.x,e.y,50,20,7)),l.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,at(t,e)},Rt=function(t,e,i){const l=t.append("g"),n=it();n.x=e.x,n.y=e.y,n.fill=e.fill,n.width=i.width*e.taskCount+i.diagramMarginX*(e.taskCount-1),n.height=i.height,n.class="journey-section section-type-"+e.num,n.rx=3,n.ry=3,U(l,n),ot(i)(e.text,l,n.x,n.y,n.width,n.height,{class:"journey-section section-type-"+e.num},i,e.colour)};let et=-1;const Nt=function(t,e,i){const l=e.x+i.width/2,n=t.append("g");et++;const h=300+5*30;n.append("line").attr("id","task"+et).attr("x1",l).attr("y1",e.y).attr("x2",l).attr("y2",h).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Ft(n,{cx:l,cy:300+(5-e.score)*30,score:e.score});const c=it();c.x=e.x,c.y=e.y,c.fill=e.fill,c.width=i.width,c.height=i.height,c.class="task task-type-"+e.num,c.rx=3,c.ry=3,U(n,c);let f=e.x+14;e.people.forEach(y=>{const m=e.actors[y].color,g={cx:f,cy:e.y,r:7,fill:m,stroke:"#000",title:y,pos:e.actors[y].position};rt(n,g),f+=10}),ot(i)(e.task,n,c.x,c.y,c.width,c.height,{class:"task"},i,e.colour)},Bt=function(t,e){vt(t,e)},ot=function(){function t(n,h,c,f,y,m,g,p){const s=h.append("text").attr("x",c+y/2).attr("y",f+m/2+5).style("font-color",p).style("text-anchor","middle").text(n);l(s,g)}function e(n,h,c,f,y,m,g,p,s){const{taskFontSize:r,taskFontFamily:a}=p,u=n.split(//gi);for(let d=0;d{const n=M[l].color,h={cx:20,cy:i,r:7,fill:n,stroke:"#000",pos:M[l].position};L.drawCircle(t,h);const c={x:40,y:i+7,fill:"#666",text:l,textMargin:e.boxTextMargin|5};L.drawText(t,c),i+=20})}const j=I().journey,P=j.leftMargin,Ot=function(t,e,i,l){const n=I().journey,h=I().securityLevel;let c;h==="sandbox"&&(c=W("#i"+e));const f=h==="sandbox"?W(c.nodes()[0].contentDocument.body):W("body");v.init();const y=f.select("#"+e);L.initGraphics(y);const m=l.db.getTasks(),g=l.db.getDiagramTitle(),p=l.db.getActors();for(const o in M)delete M[o];let s=0;p.forEach(o=>{M[o]={color:n.actorColours[s%n.actorColours.length],position:s},s++}),Yt(y),v.insert(0,0,P,Object.keys(M).length*50),qt(y,m,0);const r=v.getBounds();g&&y.append("text").text(g).attr("x",P).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const a=r.stopy-r.starty+2*n.diagramMarginY,u=P+r.stopx+2*n.diagramMarginX;kt(y,a,u,n.useMaxWidth),y.append("line").attr("x1",P).attr("y1",n.height*4).attr("x2",u-P-4).attr("y2",n.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const d=g?70:0;y.attr("viewBox",`${r.startx} -25 ${u} ${a+d}`),y.attr("preserveAspectRatio","xMinYMin meet"),y.attr("height",a+d+25)},v={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,i,l){t[e]===void 0?t[e]=i:t[e]=l(i,t[e])},updateBounds:function(t,e,i,l){const n=I().journey,h=this;let c=0;function f(y){return function(g){c++;const p=h.sequenceItems.length-c+1;h.updateVal(g,"starty",e-p*n.boxMargin,Math.min),h.updateVal(g,"stopy",l+p*n.boxMargin,Math.max),h.updateVal(v.data,"startx",t-p*n.boxMargin,Math.min),h.updateVal(v.data,"stopx",i+p*n.boxMargin,Math.max),y!=="activation"&&(h.updateVal(g,"startx",t-p*n.boxMargin,Math.min),h.updateVal(g,"stopx",i+p*n.boxMargin,Math.max),h.updateVal(v.data,"starty",e-p*n.boxMargin,Math.min),h.updateVal(v.data,"stopy",l+p*n.boxMargin,Math.max))}}this.sequenceItems.forEach(f())},insert:function(t,e,i,l){const n=Math.min(t,i),h=Math.max(t,i),c=Math.min(e,l),f=Math.max(e,l);this.updateVal(v.data,"startx",n,Math.min),this.updateVal(v.data,"starty",c,Math.min),this.updateVal(v.data,"stopx",h,Math.max),this.updateVal(v.data,"stopy",f,Math.max),this.updateBounds(n,c,h,f)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},X=j.sectionFills,st=j.sectionColours,qt=function(t,e,i){const l=I().journey;let n="";const h=l.height*2+l.diagramMarginY,c=i+h;let f=0,y="#CCC",m="black",g=0;for(const[p,s]of e.entries()){if(n!==s.section){y=X[f%X.length],g=f%X.length,m=st[f%st.length];let a=0;const u=s.section;for(let o=p;o(M[u]&&(a[u]=M[u]),a),{});s.x=p*l.taskMargin+p*l.width+P,s.y=c,s.width=l.diagramMarginX,s.height=l.diagramMarginY,s.colour=m,s.fill=y,s.num=g,s.actors=r,L.drawTask(t,s,l),v.insert(s.x,s.y,s.x+s.width+l.taskMargin,300+5*30)}},nt={setConf:zt,draw:Ot},Zt={parser:wt,db:tt,renderer:nt,styles:Vt,init:t=>{nt.setConf(t.journey),tt.clear()}};export{Zt as diagram}; diff --git a/assets/js/publish.admonition.js b/assets/js/publish.admonition.js new file mode 100644 index 00000000..87d1eb54 --- /dev/null +++ b/assets/js/publish.admonition.js @@ -0,0 +1,295 @@ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else { + var a = factory(); + for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; + } +})(self, function() { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ // The require scope +/******/ var __webpack_require__ = {}; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +__webpack_require__.r(__webpack_exports__); + +function createEl(tag, t, e) { + const i = document.createElement(tag); + "string" == typeof t && + (t = { + cls: t + }); + const r = t || {}, o = r.cls, s = r.text, a = r.attr, l = r.title, c = r.value, u = r.type, h = e ? e : r.parent, p = r.prepend, d = r.href; + return (o && + (Array.isArray(o) + ? (i.className = o.join(" ")) + : (i.className = o)), + s && (i.textContent = s), + a && + Object.keys(a).forEach((t) => { + const n = a[t]; + null !== n && i.setAttribute(t, String(n)); + }), + l && (i.title = l), + c && + (i instanceof HTMLInputElement || + i instanceof HTMLSelectElement || + i instanceof HTMLOptionElement) && + (i.value = c), + /* u && i instanceof HTMLInputElement && (i.type = u), */ + u && i instanceof HTMLStyleElement && i.setAttribute("type", u), + d && + (i instanceof HTMLAnchorElement || i instanceof HTMLLinkElement) && + (i.href = d), + h && (p ? h.insertBefore(i, h.firstChild) : h.appendChild(i)), + i); +} +//@ts-ignore-line +const createDiv = function (o, e) { + return createEl("div", o, e); +}; +Node.prototype.createDiv = function (o, cb) { + return createDiv(o, this); +}; +Node.prototype.createEl = function (tag, o, cb) { + return createEl(tag, o, this); +}; +Element.prototype.addClass = function (...args) { + const e = []; + for (let t = 0; t < args.length; t++) + e[t] = args[t]; + this.addClasses(e); +}; +Element.prototype.addClasses = function (e) { + for (let t = 0; t < e.length; t++) + this.classList.add(e[t]); +}; +function getAdmonitionElement(type, title, icon, color, collapse, id) { + var _a; + let admonition, titleEl, attrs = { + style: `--admonition-color: ${color};` + }; + if (collapse && collapse != "none") { + if (collapse === "open") { + attrs.open = "open"; + } + admonition = createEl("details", { + cls: `admonition admonition-${type} admonition-plugin`, + attr: attrs + }); + titleEl = admonition.createEl("summary", { + cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}` + }); + } + else { + admonition = createDiv({ + cls: `admonition admonition-${type} admonition-plugin`, + attr: attrs + }); + titleEl = admonition.createDiv({ + cls: `admonition-title ${!(title === null || title === void 0 ? void 0 : title.trim().length) ? "no-title" : ""}` + }); + } + if (id) { + admonition.id = id; + } + if (title && title.trim().length) { + /** + * Title structure + * .admonition-title + * .admonition-title-content - Rendered Markdown top-level element (e.g. H1/2/3 etc, p) + * div.admonition-title-icon + * svg + * div.admonition-title-markdown - Container of rendered markdown + * ...rendered markdown children... + */ + //get markdown + const markdownHolder = createDiv(); + //MarkdownRenderer.renderMarkdown(title, markdownHolder, "", null); + //admonition-title-content is first child of rendered markdown + const admonitionTitleContent = + /* markdownHolder?.children[0]?.tagName === "P" + ? createDiv() + : markdownHolder.children[0] ?? */ createDiv(); + //get children of markdown element, then remove them + const markdownElements = Array.from(((_a = markdownHolder.children[0]) === null || _a === void 0 ? void 0 : _a.childNodes) || []); + admonitionTitleContent.innerHTML = ""; + admonitionTitleContent.addClass("admonition-title-content"); + //build icon element + const iconEl = admonitionTitleContent.createDiv("admonition-title-icon"); + if (icon) { + iconEl.innerHTML = icon; + } + //add markdown children back + const admonitionTitleMarkdown = admonitionTitleContent.createDiv("admonition-title-markdown"); + admonitionTitleMarkdown.innerText = title; + /* for (let i = 0; i < markdownElements.length; i++) { + admonitionTitleMarkdown.appendChild(markdownElements[i]); + } */ + titleEl.appendChild(admonitionTitleContent || createDiv()); + } + //add them to title element + if (collapse) { + titleEl.createDiv("collapser").createDiv("handle"); + } + return admonition; +} +function startsWithAny(str, needles) { + for (let i = 0; i < needles.length; i++) { + if (str.startsWith(needles[i])) { + return i; + } + } + return false; +} +function getParametersFromSource(type, src) { + const keywordTokens = ["title:", "collapse:", "icon:", "color:"]; + const keywords = ["title", "collapse", "icon", "color"]; + let lines = src.split("\n"); + let skipLines = 0; + let params = {}; + for (let i = 0; i < lines.length; i++) { + let keywordIndex = startsWithAny(lines[i], keywordTokens); + if (keywordIndex === false) { + break; + } + let foundKeyword = keywords[keywordIndex]; + if (params[foundKeyword] !== undefined) { + break; + } + params[foundKeyword] = lines[i] + .substr(keywordTokens[keywordIndex].length) + .trim(); + ++skipLines; + } + let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, icon, color } = params; + let content = lines.slice(skipLines).join("\n"); + /** + * If the admonition should collapse, but something other than open or closed was provided, set to closed. + */ + if (collapse !== undefined && + collapse !== "none" && + collapse !== "open" && + collapse !== "closed") { + collapse = "closed"; + } + /** + * If the admonition should collapse, but title was blanked, set the default title. + */ + if (title.trim() === "" && collapse !== undefined && collapse !== "none") { + title = type[0].toUpperCase() + type.slice(1).toLowerCase(); + return; + } + return { title, collapse, content, icon, color }; +} +const blockSet = new Set(); +const ADMONITION_ICON_MAP = {"note":{"icon":"","color":"68, 138, 255"},"seealso":{"icon":"","color":"68, 138, 255"},"abstract":{"icon":"","color":"0, 176, 255"},"summary":{"icon":"","color":"0, 176, 255"},"info":{"icon":"","color":"0, 184, 212"},"todo":{"icon":"","color":"0, 184, 212"},"tip":{"icon":"","color":"0, 191, 165"},"hint":{"icon":"","color":"0, 191, 165"},"important":{"icon":"","color":"0, 191, 165"},"success":{"icon":"","color":"0, 200, 83"},"check":{"icon":"","color":"0, 200, 83"},"done":{"icon":"","color":"0, 200, 83"},"question":{"icon":"","color":"100, 221, 23"},"help":{"icon":"","color":"100, 221, 23"},"faq":{"icon":"","color":"100, 221, 23"},"warning":{"icon":"","color":"255, 145, 0"},"caution":{"icon":"","color":"255, 145, 0"},"attention":{"icon":"","color":"255, 145, 0"},"failure":{"icon":"","color":"255, 82, 82"},"fail":{"icon":"","color":"255, 82, 82"},"missing":{"icon":"","color":"255, 82, 82"},"danger":{"icon":"","color":"255, 23, 68"},"error":{"icon":"","color":"255, 23, 68"},"bug":{"icon":"","color":"245, 0, 87"},"example":{"icon":"","color":"124, 77, 255"},"quote":{"icon":"","color":"158, 158, 158"},"cite":{"icon":"","color":"158, 158, 158"}}; +if (document.readyState === "complete") { + postprocess(); + registerToProcess(); +} +else { + window.onload = () => { + postprocess(); + registerToProcess(); + }; +} +function registerToProcess() { + const sizer = document.querySelector(".markdown-preview-sizer"); + const observer = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.type == "childList" && mutation.addedNodes.length) { + mutation.addedNodes.forEach((node) => { + var _a; + if (node && + node instanceof Element && + node.children.length && + ((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === "PRE") { + //postprocess(node); + preObserver.observe(node.firstChild, { + attributes: true, + childList: false, + characterData: false, + subtree: false + }); + } + }); + } + }); + }); + observer.observe(sizer, { + attributes: false, + childList: true, + subtree: false + }); + const preObserver = new MutationObserver((mutations) => { + mutations.forEach((mutation) => { + if (mutation.target instanceof HTMLPreElement && + !blockSet.has(mutation.target) && + mutation.type === "attributes" && + mutation.attributeName === "class" && + Array.from(mutation.target.classList).some((cls) => /language-ad-(\w+)/.test(cls))) { + blockSet.add(mutation.target); + processAdmonitionBlock(mutation.target); + } + }); + }); +} +function processAdmonitionBlock(admonitionBlock) { + const [, type] = admonitionBlock.classList + .toString() + .match(/language-ad-(\w+)/); + if (!type) + return; + if (!(type in ADMONITION_ICON_MAP)) + return; + let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); + let admonition = getAdmonitionElement(type, title, icon, color, collapse); + const contentHolder = admonition.createDiv("admonition-content-holder"); + const admonitionContent = contentHolder.createDiv("admonition-content"); + admonitionContent.innerText = content; + admonitionBlock.replaceWith(admonition); +} +function postprocess() { + //do work + const admonitions = document.querySelectorAll("pre[class*='language-ad']"); + if (!admonitions.length) + return; + for (let admonitionBlock of Array.from(admonitions)) { + blockSet.add(admonitionBlock); + const [, type] = admonitionBlock.classList + .toString() + .match(/language-ad-(\w+)/); + if (!type) + continue; + if (!(type in ADMONITION_ICON_MAP)) + continue; + let { title = type[0].toUpperCase() + type.slice(1).toLowerCase(), collapse, content, icon = ADMONITION_ICON_MAP[type].icon, color = ADMONITION_ICON_MAP[type].color } = getParametersFromSource(type, admonitionBlock.innerText); + let admonition = getAdmonitionElement(type, title, icon, color, collapse); + const contentHolder = admonition.createDiv("admonition-content-holder"); + const admonitionContent = contentHolder.createDiv("admonition-content"); + admonitionContent.innerText = content; + admonitionBlock.replaceWith(admonition); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC5hZG1vbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHVibGlzaC5hZG1vbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sb0JBQW9CLENBQUM7QUFFNUIsU0FBUyxRQUFRLENBQ2IsR0FBTSxFQUNOLENBQTJCLEVBQzNCLENBQWU7SUFFZixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEdBQUc7WUFDRCxHQUFHLEVBQUUsQ0FBQztTQUNULENBQUMsQ0FBQztJQUNQLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQ2IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQ1QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQ1gsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQ1YsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNwQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFDYixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNmLE9BQU8sQ0FDSCxDQUFDO1FBQ0csQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7WUFDRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUM7UUFDTixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO1lBQ0csQ0FBQyxDQUFDLFlBQVksZ0JBQWdCO2dCQUMxQixDQUFDLFlBQVksaUJBQWlCO2dCQUM5QixDQUFDLFlBQVksaUJBQWlCLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNqQix5REFBeUQ7UUFDekQsQ0FBQyxJQUFJLENBQUMsWUFBWSxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztZQUNHLENBQUMsQ0FBQyxZQUFZLGlCQUFpQixJQUFJLENBQUMsWUFBWSxlQUFlLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQ0osQ0FBQztBQUNOLENBQUM7QUFDRCxpQkFBaUI7QUFDakIsTUFBTSxTQUFTLEdBQUcsVUFDZCxDQUEyQixFQUMzQixDQUFlO0lBRWYsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUN2QixDQUEyQixFQUMzQixFQUFpQztJQUVqQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFDdEIsR0FBTSxFQUNOLENBQTJCLEVBQzNCLEVBQTJDO0lBRTNDLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBRUYsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxHQUFHLElBQUk7SUFDMUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO1FBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7UUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUM7QUFFRixTQUFTLG9CQUFvQixDQUN6QixJQUFZLEVBQ1osS0FBYSxFQUNiLElBQVksRUFDWixLQUFhLEVBQ2IsUUFBaUIsRUFDakIsRUFBVzs7SUFFWCxJQUFJLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxHQUFxQztRQUN0QyxLQUFLLEVBQUUsdUJBQXVCLEtBQUssR0FBRztLQUN6QyxDQUFDO0lBQ04sSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRTtRQUNoQyxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDckIsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFDRCxVQUFVLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM3QixHQUFHLEVBQUUseUJBQXlCLElBQUksb0JBQW9CO1lBQ3RELElBQUksRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQ3JDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1NBQ3JFLENBQUMsQ0FBQztLQUNOO1NBQU07UUFDSCxVQUFVLEdBQUcsU0FBUyxDQUFDO1lBQ25CLEdBQUcsRUFBRSx5QkFBeUIsSUFBSSxvQkFBb0I7WUFDdEQsSUFBSSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUMzQixHQUFHLEVBQUUsb0JBQW9CLENBQUMsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtTQUNyRSxDQUFDLENBQUM7S0FDTjtJQUVELElBQUksRUFBRSxFQUFFO1FBQ0osVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDdEI7SUFFRCxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO1FBQzlCOzs7Ozs7OztXQVFHO1FBRUgsY0FBYztRQUNkLE1BQU0sY0FBYyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ25DLG1FQUFtRTtRQUVuRSw4REFBOEQ7UUFFOUQsTUFBTSxzQkFBc0I7UUFDeEI7O3VDQUUrQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWhELG9EQUFvRDtRQUNwRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQy9CLENBQUEsTUFBQSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQywwQ0FBRSxVQUFVLEtBQUksRUFBRSxDQUMvQyxDQUFDO1FBQ0Ysc0JBQXNCLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUN0QyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUU1RCxvQkFBb0I7UUFDcEIsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUMzQyx1QkFBdUIsQ0FDMUIsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ04sTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSx1QkFBdUIsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQzVELDJCQUEyQixDQUM5QixDQUFDO1FBQ0YsdUJBQXVCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMxQzs7WUFFSTtRQUNKLE9BQU8sQ0FBQyxXQUFXLENBQUMsc0JBQXNCLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztLQUM5RDtJQUVELDJCQUEyQjtJQUUzQixJQUFJLFFBQVEsRUFBRTtRQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQ3REO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFpQjtJQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxDQUFDLENBQUM7U0FDWjtLQUNKO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUMsSUFBWSxFQUFFLEdBQVc7SUFDdEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVqRSxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXhELElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRWxCLElBQUksTUFBTSxHQUE0QixFQUFFLENBQUM7SUFFekMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBSSxZQUFZLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUxRCxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUU7WUFDeEIsTUFBTTtTQUNUO1FBRUQsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNwQyxNQUFNO1NBQ1Q7UUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMxQixNQUFNLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQzthQUMxQyxJQUFJLEVBQUUsQ0FBQztRQUNaLEVBQUUsU0FBUyxDQUFDO0tBQ2Y7SUFFRCxJQUFJLEVBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMzRCxRQUFRLEVBQ1IsSUFBSSxFQUNKLEtBQUssRUFDUixHQUFHLE1BQU0sQ0FBQztJQUVYLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWhEOztPQUVHO0lBQ0gsSUFDSSxRQUFRLEtBQUssU0FBUztRQUN0QixRQUFRLEtBQUssTUFBTTtRQUNuQixRQUFRLEtBQUssTUFBTTtRQUNuQixRQUFRLEtBQUssUUFBUSxFQUN2QjtRQUNFLFFBQVEsR0FBRyxRQUFRLENBQUM7S0FDdkI7SUFFRDs7T0FFRztJQUNILElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7UUFDdEUsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVELE9BQU87S0FDVjtJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDckQsQ0FBQztBQU9ELE1BQU0sUUFBUSxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2hELE1BQU0sbUJBQW1CLEdBRXJCLEVBQUUsQ0FBQztBQUNQLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7SUFDcEMsV0FBVyxFQUFFLENBQUM7SUFDZCxpQkFBaUIsRUFBRSxDQUFDO0NBQ3ZCO0tBQU07SUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUNqQixXQUFXLEVBQUUsQ0FBQztRQUNkLGlCQUFpQixFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0NBQ0w7QUFFRCxTQUFTLGlCQUFpQjtJQUN0QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDaEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ2hELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksV0FBVyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUM1RCxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFOztvQkFDakMsSUFDSSxJQUFJO3dCQUNKLElBQUksWUFBWSxPQUFPO3dCQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07d0JBQ3BCLENBQUEsTUFBQSxJQUFJLENBQUMsaUJBQWlCLDBDQUFFLE9BQU8sTUFBSyxLQUFLLEVBQzNDO3dCQUNFLG9CQUFvQjt3QkFDcEIsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFOzRCQUNqQyxVQUFVLEVBQUUsSUFBSTs0QkFDaEIsU0FBUyxFQUFFLEtBQUs7NEJBQ2hCLGFBQWEsRUFBRSxLQUFLOzRCQUNwQixPQUFPLEVBQUUsS0FBSzt5QkFDakIsQ0FBQyxDQUFDO3FCQUNOO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7UUFDcEIsVUFBVSxFQUFFLEtBQUs7UUFDakIsU0FBUyxFQUFFLElBQUk7UUFDZixPQUFPLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQUM7SUFFSCxNQUFNLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7UUFDbkQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzNCLElBQ0ksUUFBUSxDQUFDLE1BQU0sWUFBWSxjQUFjO2dCQUN6QyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZO2dCQUM5QixRQUFRLENBQUMsYUFBYSxLQUFLLE9BQU87Z0JBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUMvQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ2hDLEVBQ0g7Z0JBQ0UsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMzQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxlQUErQjtJQUMzRCxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsU0FBUztTQUNyQyxRQUFRLEVBQUU7U0FDVixLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNoQyxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU87SUFDbEIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLG1CQUFtQixDQUFDO1FBQUUsT0FBTztJQUUzQyxJQUFJLEVBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMzRCxRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFMUUsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7SUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUyxXQUFXO0lBQ2hCLFNBQVM7SUFDVCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQ3pDLDJCQUEyQixDQUM5QixDQUFDO0lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQUUsT0FBTztJQUVoQyxLQUFLLElBQUksZUFBZSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDakQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxlQUFlLENBQUMsU0FBUzthQUNyQyxRQUFRLEVBQUU7YUFDVixLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsSUFBSTtZQUFFLFNBQVM7UUFDcEIsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLG1CQUFtQixDQUFDO1lBQUUsU0FBUztRQUU3QyxJQUFJLEVBQ0EsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMzRCxRQUFRLEVBQ1IsT0FBTyxFQUNQLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQ3JDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQzFDLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxJQUFJLFVBQVUsR0FBRyxvQkFBb0IsQ0FDakMsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osS0FBSyxFQUNMLFFBQVEsQ0FDWCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXhFLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXhFLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFFdEMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUMzQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCIuLi9hc3NldHMvbWFpbi5jc3NcIjtcblxuZnVuY3Rpb24gY3JlYXRlRWw8SyBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG4gICAgdGFnOiBLLFxuICAgIHQ/OiBzdHJpbmcgfCBEb21FbGVtZW50SW5mbyxcbiAgICBlPzogSFRNTEVsZW1lbnRcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgY29uc3QgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICBcInN0cmluZ1wiID09IHR5cGVvZiB0ICYmXG4gICAgICAgICh0ID0ge1xuICAgICAgICAgICAgY2xzOiB0XG4gICAgICAgIH0pO1xuICAgIGNvbnN0IHIgPSB0IHx8IHt9LFxuICAgICAgICBvID0gci5jbHMsXG4gICAgICAgIHMgPSByLnRleHQsXG4gICAgICAgIGEgPSByLmF0dHIsXG4gICAgICAgIGwgPSByLnRpdGxlLFxuICAgICAgICBjID0gci52YWx1ZSxcbiAgICAgICAgdSA9IHIudHlwZSxcbiAgICAgICAgaCA9IGUgPyBlIDogci5wYXJlbnQsXG4gICAgICAgIHAgPSByLnByZXBlbmQsXG4gICAgICAgIGQgPSByLmhyZWY7XG4gICAgcmV0dXJuIChcbiAgICAgICAgbyAmJlxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkobylcbiAgICAgICAgICAgICAgICA/IChpLmNsYXNzTmFtZSA9IG8uam9pbihcIiBcIikpXG4gICAgICAgICAgICAgICAgOiAoaS5jbGFzc05hbWUgPSBvKSksXG4gICAgICAgIHMgJiYgKGkudGV4dENvbnRlbnQgPSBzKSxcbiAgICAgICAgYSAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoYSkuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBhW3RdO1xuICAgICAgICAgICAgICAgIG51bGwgIT09IG4gJiYgaS5zZXRBdHRyaWJ1dGUodCwgU3RyaW5nKG4pKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICBsICYmIChpLnRpdGxlID0gbCksXG4gICAgICAgIGMgJiZcbiAgICAgICAgICAgIChpIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGkgaW5zdGFuY2VvZiBIVE1MT3B0aW9uRWxlbWVudCkgJiZcbiAgICAgICAgICAgIChpLnZhbHVlID0gYyksXG4gICAgICAgIC8qIHUgJiYgaSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgKGkudHlwZSA9IHUpLCAqL1xuICAgICAgICB1ICYmIGkgaW5zdGFuY2VvZiBIVE1MU3R5bGVFbGVtZW50ICYmIGkuc2V0QXR0cmlidXRlKFwidHlwZVwiLCB1KSxcbiAgICAgICAgZCAmJlxuICAgICAgICAgICAgKGkgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCB8fCBpIGluc3RhbmNlb2YgSFRNTExpbmtFbGVtZW50KSAmJlxuICAgICAgICAgICAgKGkuaHJlZiA9IGQpLFxuICAgICAgICBoICYmIChwID8gaC5pbnNlcnRCZWZvcmUoaSwgaC5maXJzdENoaWxkKSA6IGguYXBwZW5kQ2hpbGQoaSkpLFxuICAgICAgICBpXG4gICAgKTtcbn1cbi8vQHRzLWlnbm9yZS1saW5lXG5jb25zdCBjcmVhdGVEaXYgPSBmdW5jdGlvbiAoXG4gICAgbz86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxuICAgIGU/OiBIVE1MRWxlbWVudFxuKTogSFRNTERpdkVsZW1lbnQge1xuICAgIHJldHVybiBjcmVhdGVFbChcImRpdlwiLCBvLCBlKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLmNyZWF0ZURpdiA9IGZ1bmN0aW9uIChcbiAgICBvPzogc3RyaW5nIHwgRG9tRWxlbWVudEluZm8sXG4gICAgY2I/OiAoZWw6IEhUTUxEaXZFbGVtZW50KSA9PiB2b2lkXG4pOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgcmV0dXJuIGNyZWF0ZURpdihvLCB0aGlzKTtcbn07XG5Ob2RlLnByb3RvdHlwZS5jcmVhdGVFbCA9IGZ1bmN0aW9uIDxLIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcbiAgICB0YWc6IEssXG4gICAgbz86IHN0cmluZyB8IERvbUVsZW1lbnRJbmZvLFxuICAgIGNiPzogKGVsOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbS10pID0+IHZvaWRcbik6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtLXSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKHRhZywgbywgdGhpcyk7XG59O1xuXG5FbGVtZW50LnByb3RvdHlwZS5hZGRDbGFzcyA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgZSA9IFtdO1xuICAgIGZvciAobGV0IHQgPSAwOyB0IDwgYXJncy5sZW5ndGg7IHQrKykgZVt0XSA9IGFyZ3NbdF07XG4gICAgdGhpcy5hZGRDbGFzc2VzKGUpO1xufTtcblxuRWxlbWVudC5wcm90b3R5cGUuYWRkQ2xhc3NlcyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgZm9yIChsZXQgdCA9IDA7IHQgPCBlLmxlbmd0aDsgdCsrKSB0aGlzLmNsYXNzTGlzdC5hZGQoZVt0XSk7XG59O1xuXG5mdW5jdGlvbiBnZXRBZG1vbml0aW9uRWxlbWVudChcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBpY29uOiBzdHJpbmcsXG4gICAgY29sb3I6IHN0cmluZyxcbiAgICBjb2xsYXBzZT86IHN0cmluZyxcbiAgICBpZD86IHN0cmluZ1xuKTogSFRNTEVsZW1lbnQge1xuICAgIGxldCBhZG1vbml0aW9uLFxuICAgICAgICB0aXRsZUVsLFxuICAgICAgICBhdHRyczogeyBzdHlsZTogc3RyaW5nOyBvcGVuPzogc3RyaW5nIH0gPSB7XG4gICAgICAgICAgICBzdHlsZTogYC0tYWRtb25pdGlvbi1jb2xvcjogJHtjb2xvcn07YFxuICAgICAgICB9O1xuICAgIGlmIChjb2xsYXBzZSAmJiBjb2xsYXBzZSAhPSBcIm5vbmVcIikge1xuICAgICAgICBpZiAoY29sbGFwc2UgPT09IFwib3BlblwiKSB7XG4gICAgICAgICAgICBhdHRycy5vcGVuID0gXCJvcGVuXCI7XG4gICAgICAgIH1cbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZUVsKFwiZGV0YWlsc1wiLCB7XG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uIGFkbW9uaXRpb24tJHt0eXBlfSBhZG1vbml0aW9uLXBsdWdpbmAsXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGl0bGVFbCA9IGFkbW9uaXRpb24uY3JlYXRlRWwoXCJzdW1tYXJ5XCIsIHtcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYWRtb25pdGlvbiA9IGNyZWF0ZURpdih7XG4gICAgICAgICAgICBjbHM6IGBhZG1vbml0aW9uIGFkbW9uaXRpb24tJHt0eXBlfSBhZG1vbml0aW9uLXBsdWdpbmAsXG4gICAgICAgICAgICBhdHRyOiBhdHRyc1xuICAgICAgICB9KTtcbiAgICAgICAgdGl0bGVFbCA9IGFkbW9uaXRpb24uY3JlYXRlRGl2KHtcbiAgICAgICAgICAgIGNsczogYGFkbW9uaXRpb24tdGl0bGUgJHshdGl0bGU/LnRyaW0oKS5sZW5ndGggPyBcIm5vLXRpdGxlXCIgOiBcIlwifWBcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlkKSB7XG4gICAgICAgIGFkbW9uaXRpb24uaWQgPSBpZDtcbiAgICB9XG5cbiAgICBpZiAodGl0bGUgJiYgdGl0bGUudHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGl0bGUgc3RydWN0dXJlXG4gICAgICAgICAqIDxkaXZ8c3VtbWFyeT4uYWRtb25pdGlvbi10aXRsZVxuICAgICAgICAgKiAgICAgIDxlbGVtZW50Pi5hZG1vbml0aW9uLXRpdGxlLWNvbnRlbnQgLSBSZW5kZXJlZCBNYXJrZG93biB0b3AtbGV2ZWwgZWxlbWVudCAoZS5nLiBIMS8yLzMgZXRjLCBwKVxuICAgICAgICAgKiAgICAgICAgICBkaXYuYWRtb25pdGlvbi10aXRsZS1pY29uXG4gICAgICAgICAqICAgICAgICAgICAgICBzdmdcbiAgICAgICAgICogICAgICAgICAgZGl2LmFkbW9uaXRpb24tdGl0bGUtbWFya2Rvd24gLSBDb250YWluZXIgb2YgcmVuZGVyZWQgbWFya2Rvd25cbiAgICAgICAgICogICAgICAgICAgICAgIC4uLnJlbmRlcmVkIG1hcmtkb3duIGNoaWxkcmVuLi4uXG4gICAgICAgICAqL1xuXG4gICAgICAgIC8vZ2V0IG1hcmtkb3duXG4gICAgICAgIGNvbnN0IG1hcmtkb3duSG9sZGVyID0gY3JlYXRlRGl2KCk7XG4gICAgICAgIC8vTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bih0aXRsZSwgbWFya2Rvd25Ib2xkZXIsIFwiXCIsIG51bGwpO1xuXG4gICAgICAgIC8vYWRtb25pdGlvbi10aXRsZS1jb250ZW50IGlzIGZpcnN0IGNoaWxkIG9mIHJlbmRlcmVkIG1hcmtkb3duXG5cbiAgICAgICAgY29uc3QgYWRtb25pdGlvblRpdGxlQ29udGVudCA9XG4gICAgICAgICAgICAvKiBtYXJrZG93bkhvbGRlcj8uY2hpbGRyZW5bMF0/LnRhZ05hbWUgPT09IFwiUFwiXG4gICAgICAgID8gY3JlYXRlRGl2KClcbiAgICAgICAgOiBtYXJrZG93bkhvbGRlci5jaGlsZHJlblswXSA/PyAgKi8gY3JlYXRlRGl2KCk7XG5cbiAgICAgICAgLy9nZXQgY2hpbGRyZW4gb2YgbWFya2Rvd24gZWxlbWVudCwgdGhlbiByZW1vdmUgdGhlbVxuICAgICAgICBjb25zdCBtYXJrZG93bkVsZW1lbnRzID0gQXJyYXkuZnJvbShcbiAgICAgICAgICAgIG1hcmtkb3duSG9sZGVyLmNoaWxkcmVuWzBdPy5jaGlsZE5vZGVzIHx8IFtdXG4gICAgICAgICk7XG4gICAgICAgIGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuaW5uZXJIVE1MID0gXCJcIjtcbiAgICAgICAgYWRtb25pdGlvblRpdGxlQ29udGVudC5hZGRDbGFzcyhcImFkbW9uaXRpb24tdGl0bGUtY29udGVudFwiKTtcblxuICAgICAgICAvL2J1aWxkIGljb24gZWxlbWVudFxuICAgICAgICBjb25zdCBpY29uRWwgPSBhZG1vbml0aW9uVGl0bGVDb250ZW50LmNyZWF0ZURpdihcbiAgICAgICAgICAgIFwiYWRtb25pdGlvbi10aXRsZS1pY29uXCJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIGljb25FbC5pbm5lckhUTUwgPSBpY29uO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9hZGQgbWFya2Rvd24gY2hpbGRyZW4gYmFja1xuICAgICAgICBjb25zdCBhZG1vbml0aW9uVGl0bGVNYXJrZG93biA9IGFkbW9uaXRpb25UaXRsZUNvbnRlbnQuY3JlYXRlRGl2KFxuICAgICAgICAgICAgXCJhZG1vbml0aW9uLXRpdGxlLW1hcmtkb3duXCJcbiAgICAgICAgKTtcbiAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uaW5uZXJUZXh0ID0gdGl0bGU7XG4gICAgICAgIC8qIGZvciAobGV0IGkgPSAwOyBpIDwgbWFya2Rvd25FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYWRtb25pdGlvblRpdGxlTWFya2Rvd24uYXBwZW5kQ2hpbGQobWFya2Rvd25FbGVtZW50c1tpXSk7XG4gICAgICAgIH0gKi9cbiAgICAgICAgdGl0bGVFbC5hcHBlbmRDaGlsZChhZG1vbml0aW9uVGl0bGVDb250ZW50IHx8IGNyZWF0ZURpdigpKTtcbiAgICB9XG5cbiAgICAvL2FkZCB0aGVtIHRvIHRpdGxlIGVsZW1lbnRcblxuICAgIGlmIChjb2xsYXBzZSkge1xuICAgICAgICB0aXRsZUVsLmNyZWF0ZURpdihcImNvbGxhcHNlclwiKS5jcmVhdGVEaXYoXCJoYW5kbGVcIik7XG4gICAgfVxuICAgIHJldHVybiBhZG1vbml0aW9uO1xufVxuZnVuY3Rpb24gc3RhcnRzV2l0aEFueShzdHI6IHN0cmluZywgbmVlZGxlczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lZWRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHN0ci5zdGFydHNXaXRoKG5lZWRsZXNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZTogc3RyaW5nLCBzcmM6IHN0cmluZykge1xuICAgIGNvbnN0IGtleXdvcmRUb2tlbnMgPSBbXCJ0aXRsZTpcIiwgXCJjb2xsYXBzZTpcIiwgXCJpY29uOlwiLCBcImNvbG9yOlwiXTtcblxuICAgIGNvbnN0IGtleXdvcmRzID0gW1widGl0bGVcIiwgXCJjb2xsYXBzZVwiLCBcImljb25cIiwgXCJjb2xvclwiXTtcblxuICAgIGxldCBsaW5lcyA9IHNyYy5zcGxpdChcIlxcblwiKTtcblxuICAgIGxldCBza2lwTGluZXMgPSAwO1xuXG4gICAgbGV0IHBhcmFtczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGtleXdvcmRJbmRleCA9IHN0YXJ0c1dpdGhBbnkobGluZXNbaV0sIGtleXdvcmRUb2tlbnMpO1xuXG4gICAgICAgIGlmIChrZXl3b3JkSW5kZXggPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmb3VuZEtleXdvcmQgPSBrZXl3b3Jkc1trZXl3b3JkSW5kZXhdO1xuXG4gICAgICAgIGlmIChwYXJhbXNbZm91bmRLZXl3b3JkXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBhcmFtc1tmb3VuZEtleXdvcmRdID0gbGluZXNbaV1cbiAgICAgICAgICAgIC5zdWJzdHIoa2V5d29yZFRva2Vuc1trZXl3b3JkSW5kZXhdLmxlbmd0aClcbiAgICAgICAgICAgIC50cmltKCk7XG4gICAgICAgICsrc2tpcExpbmVzO1xuICAgIH1cblxuICAgIGxldCB7XG4gICAgICAgIHRpdGxlID0gdHlwZVswXS50b1VwcGVyQ2FzZSgpICsgdHlwZS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBjb2xsYXBzZSxcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3JcbiAgICB9ID0gcGFyYW1zO1xuXG4gICAgbGV0IGNvbnRlbnQgPSBsaW5lcy5zbGljZShza2lwTGluZXMpLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgYWRtb25pdGlvbiBzaG91bGQgY29sbGFwc2UsIGJ1dCBzb21ldGhpbmcgb3RoZXIgdGhhbiBvcGVuIG9yIGNsb3NlZCB3YXMgcHJvdmlkZWQsIHNldCB0byBjbG9zZWQuXG4gICAgICovXG4gICAgaWYgKFxuICAgICAgICBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGNvbGxhcHNlICE9PSBcIm5vbmVcIiAmJlxuICAgICAgICBjb2xsYXBzZSAhPT0gXCJvcGVuXCIgJiZcbiAgICAgICAgY29sbGFwc2UgIT09IFwiY2xvc2VkXCJcbiAgICApIHtcbiAgICAgICAgY29sbGFwc2UgPSBcImNsb3NlZFwiO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHRoZSBhZG1vbml0aW9uIHNob3VsZCBjb2xsYXBzZSwgYnV0IHRpdGxlIHdhcyBibGFua2VkLCBzZXQgdGhlIGRlZmF1bHQgdGl0bGUuXG4gICAgICovXG4gICAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gXCJcIiAmJiBjb2xsYXBzZSAhPT0gdW5kZWZpbmVkICYmIGNvbGxhcHNlICE9PSBcIm5vbmVcIikge1xuICAgICAgICB0aXRsZSA9IHR5cGVbMF0udG9VcHBlckNhc2UoKSArIHR5cGUuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB7IHRpdGxlLCBjb2xsYXBzZSwgY29udGVudCwgaWNvbiwgY29sb3IgfTtcbn1cblxuaW50ZXJmYWNlIEFkbW9uaXRpb25QdWJsaXNoRGVmaW5pdGlvbiB7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGNvbG9yOiBzdHJpbmc7XG59XG5cbmNvbnN0IGJsb2NrU2V0OiBTZXQ8SFRNTFByZUVsZW1lbnQ+ID0gbmV3IFNldCgpO1xuY29uc3QgQURNT05JVElPTl9JQ09OX01BUDoge1xuICAgIFthZG1vbml0aW9uVHlwZTogc3RyaW5nXTogQWRtb25pdGlvblB1Ymxpc2hEZWZpbml0aW9uO1xufSA9IHt9O1xuaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgIHBvc3Rwcm9jZXNzKCk7XG4gICAgcmVnaXN0ZXJUb1Byb2Nlc3MoKTtcbn0gZWxzZSB7XG4gICAgd2luZG93Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgcG9zdHByb2Nlc3MoKTtcbiAgICAgICAgcmVnaXN0ZXJUb1Byb2Nlc3MoKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiByZWdpc3RlclRvUHJvY2VzcygpIHtcbiAgICBjb25zdCBzaXplciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubWFya2Rvd24tcHJldmlldy1zaXplclwiKTtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcbiAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PSBcImNoaWxkTGlzdFwiICYmIG11dGF0aW9uLmFkZGVkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbXV0YXRpb24uYWRkZWROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkcmVuLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5maXJzdEVsZW1lbnRDaGlsZD8udGFnTmFtZSA9PT0gXCJQUkVcIlxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9zdHByb2Nlc3Mobm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVPYnNlcnZlci5vYnNlcnZlKG5vZGUuZmlyc3RDaGlsZCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRMaXN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShzaXplciwge1xuICAgICAgICBhdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICBzdWJ0cmVlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgY29uc3QgcHJlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG4gICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG11dGF0aW9uLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxQcmVFbGVtZW50ICYmXG4gICAgICAgICAgICAgICAgIWJsb2NrU2V0LmhhcyhtdXRhdGlvbi50YXJnZXQpICYmXG4gICAgICAgICAgICAgICAgbXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiZcbiAgICAgICAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSBcImNsYXNzXCIgJiZcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKG11dGF0aW9uLnRhcmdldC5jbGFzc0xpc3QpLnNvbWUoKGNscykgPT5cbiAgICAgICAgICAgICAgICAgICAgL2xhbmd1YWdlLWFkLShcXHcrKS8udGVzdChjbHMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgYmxvY2tTZXQuYWRkKG11dGF0aW9uLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhtdXRhdGlvbi50YXJnZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0FkbW9uaXRpb25CbG9jayhhZG1vbml0aW9uQmxvY2s6IEhUTUxQcmVFbGVtZW50KSB7XG4gICAgY29uc3QgWywgdHlwZV0gPSBhZG1vbml0aW9uQmxvY2suY2xhc3NMaXN0XG4gICAgICAgIC50b1N0cmluZygpXG4gICAgICAgIC5tYXRjaCgvbGFuZ3VhZ2UtYWQtKFxcdyspLyk7XG4gICAgaWYgKCF0eXBlKSByZXR1cm47XG4gICAgaWYgKCEodHlwZSBpbiBBRE1PTklUSU9OX0lDT05fTUFQKSkgcmV0dXJuO1xuXG4gICAgbGV0IHtcbiAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIGNvbGxhcHNlLFxuICAgICAgICBjb250ZW50LFxuICAgICAgICBpY29uID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5pY29uLFxuICAgICAgICBjb2xvciA9IEFETU9OSVRJT05fSUNPTl9NQVBbdHlwZV0uY29sb3JcbiAgICB9ID0gZ2V0UGFyYW1ldGVyc0Zyb21Tb3VyY2UodHlwZSwgYWRtb25pdGlvbkJsb2NrLmlubmVyVGV4dCk7XG5cbiAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KHR5cGUsIHRpdGxlLCBpY29uLCBjb2xvciwgY29sbGFwc2UpO1xuXG4gICAgY29uc3QgY29udGVudEhvbGRlciA9IGFkbW9uaXRpb24uY3JlYXRlRGl2KFwiYWRtb25pdGlvbi1jb250ZW50LWhvbGRlclwiKTtcblxuICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XG5cbiAgICBhZG1vbml0aW9uQ29udGVudC5pbm5lclRleHQgPSBjb250ZW50O1xuXG4gICAgYWRtb25pdGlvbkJsb2NrLnJlcGxhY2VXaXRoKGFkbW9uaXRpb24pO1xufVxuXG5mdW5jdGlvbiBwb3N0cHJvY2VzcygpIHtcbiAgICAvL2RvIHdvcmtcbiAgICBjb25zdCBhZG1vbml0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTFByZUVsZW1lbnQ+KFxuICAgICAgICBcInByZVtjbGFzcyo9J2xhbmd1YWdlLWFkJ11cIlxuICAgICk7XG5cbiAgICBpZiAoIWFkbW9uaXRpb25zLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQgYWRtb25pdGlvbkJsb2NrIG9mIEFycmF5LmZyb20oYWRtb25pdGlvbnMpKSB7XG4gICAgICAgIGJsb2NrU2V0LmFkZChhZG1vbml0aW9uQmxvY2spO1xuICAgICAgICBjb25zdCBbLCB0eXBlXSA9IGFkbW9uaXRpb25CbG9jay5jbGFzc0xpc3RcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAubWF0Y2goL2xhbmd1YWdlLWFkLShcXHcrKS8pO1xuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoISh0eXBlIGluIEFETU9OSVRJT05fSUNPTl9NQVApKSBjb250aW51ZTtcblxuICAgICAgICBsZXQge1xuICAgICAgICAgICAgdGl0bGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBjb2xsYXBzZSxcbiAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgICBpY29uID0gQURNT05JVElPTl9JQ09OX01BUFt0eXBlXS5pY29uLFxuICAgICAgICAgICAgY29sb3IgPSBBRE1PTklUSU9OX0lDT05fTUFQW3R5cGVdLmNvbG9yXG4gICAgICAgIH0gPSBnZXRQYXJhbWV0ZXJzRnJvbVNvdXJjZSh0eXBlLCBhZG1vbml0aW9uQmxvY2suaW5uZXJUZXh0KTtcblxuICAgICAgICBsZXQgYWRtb25pdGlvbiA9IGdldEFkbW9uaXRpb25FbGVtZW50KFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIGNvbG9yLFxuICAgICAgICAgICAgY29sbGFwc2VcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBjb250ZW50SG9sZGVyID0gYWRtb25pdGlvbi5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnQtaG9sZGVyXCIpO1xuXG4gICAgICAgIGNvbnN0IGFkbW9uaXRpb25Db250ZW50ID0gY29udGVudEhvbGRlci5jcmVhdGVEaXYoXCJhZG1vbml0aW9uLWNvbnRlbnRcIik7XG5cbiAgICAgICAgYWRtb25pdGlvbkNvbnRlbnQuaW5uZXJUZXh0ID0gY29udGVudDtcblxuICAgICAgICBhZG1vbml0aW9uQmxvY2sucmVwbGFjZVdpdGgoYWRtb25pdGlvbik7XG4gICAgfVxufVxuIl19 +/******/ return __webpack_exports__; +/******/ })() +; +}); \ No newline at end of file diff --git a/assets/layout-bNXk8SHo.js b/assets/layout-bNXk8SHo.js new file mode 100644 index 00000000..73880ac4 --- /dev/null +++ b/assets/layout-bNXk8SHo.js @@ -0,0 +1 @@ +import{A as H,B as fr,S as O,C as x,D as F,E as fn,F as dr,G as cr,H as hr,I as Te,J as lr,K as vr,L as dn,M as X,N as gr,O as Le,P as pr,Q as q,R as an,T as Cn,U as br,V as Ln,W as wr,X as mr,Y as U,Z as In,_ as _r,$ as Ae,a0 as Kn,a1 as Er,a2 as yr,a3 as Ne,a4 as V,a5 as Oe,a6 as xr,a7 as Pn,a8 as on,a9 as Tr,aa as bn,ab as Lr,ac as B,ad as Xn,ae as Vn,af as An}from"./mermaid.core-Up0YySao.js";var Ar="[object Symbol]";function $(n){return typeof n=="symbol"||H(n)&&fr(n)==Ar}function R(n,e){for(var r=-1,t=n==null?0:n.length,i=Array(t);++r-1}function T(n){return fn(n)?dr(n):cr(n)}var qr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wr=/^\w*$/;function $n(n,e){if(x(n))return!1;var r=typeof n;return r=="number"||r=="symbol"||r=="boolean"||n==null||$(n)?!0:Wr.test(n)||!qr.test(n)||e!=null&&n in Object(e)}var jr=500;function Kr(n){var e=hr(n,function(t){return r.size===jr&&r.clear(),t}),r=e.cache;return e}var Xr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Vr=/\\(\\)?/g,Zr=Kr(function(n){var e=[];return n.charCodeAt(0)===46&&e.push(""),n.replace(Xr,function(r,t,i,a){e.push(i?a.replace(Vr,"$1"):t||r)}),e});const Jr=Zr;function $e(n){return n==null?"":Ce(n)}function cn(n,e){return x(n)?n:$n(n,e)?[n]:Jr($e(n))}var Qr=1/0;function Z(n){if(typeof n=="string"||$(n))return n;var e=n+"";return e=="0"&&1/n==-Qr?"-0":e}function hn(n,e){e=cn(e,n);for(var r=0,t=e.length;n!=null&&r0&&r(s)?e>1?ln(s,e-1,r,t,i):Sn(i,s):t||(i[i.length]=s)}return i}function G(n){var e=n==null?0:n.length;return e?ln(n,1):[]}function et(n){return lr(vr(n,void 0,G),n+"")}function rt(n,e,r,t){var i=-1,a=n==null?0:n.length;for(t&&a&&(r=n[++i]);++is))return!1;var f=a.get(n),d=a.get(e);if(f&&d)return f==e&&d==n;var h=-1,l=!0,g=r&Oi?new W:void 0;for(a.set(n,e),a.set(e,n);++h2?e[2]:void 0;for(i&&on(e[0],e[1],i)&&(t=1);++r-1?i[a?e[o]:o]:void 0}}var wa=Math.max;function ma(n,e,r){var t=n==null?0:n.length;if(!t)return-1;var i=r==null?0:Gr(r);return i<0&&(i=wa(t+i,0)),Pe(n,C(e),i)}var _a=ba(ma);const kn=_a;function Ke(n,e){var r=-1,t=fn(n)?Array(n.length):[];return vn(n,function(i,a,o){t[++r]=e(i,a,o)}),t}function E(n,e){var r=x(n)?R:Ke;return r(n,C(e))}function Ea(n,e){return n==null?n:Oe(n,Gn(e),X)}function ya(n,e){return n&&Dn(n,Gn(e))}function xa(n,e){return n>e}var Ta=Object.prototype,La=Ta.hasOwnProperty;function Aa(n,e){return n!=null&&La.call(n,e)}function b(n,e){return n!=null&&qe(n,e,Aa)}function Na(n,e){return R(e,function(r){return n[r]})}function N(n){return n==null?[]:Na(n,T(n))}function y(n){return n===void 0}function Xe(n,e){return ne||a&&o&&u&&!s&&!f||t&&o&&u||!r&&u||!i)return 1;if(!t&&!a&&!f&&n=s)return u;var f=r[t];return u*(f=="desc"?-1:1)}}return n.index-e.index}function Sa(n,e,r){e.length?e=R(e,function(a){return x(a)?function(o){return hn(o,a.length===1?a[0]:a)}:a}):e=[V];var t=-1;e=R(e,Cn(C));var i=Ke(n,function(a,o,s){var u=R(e,function(f){return f(a)});return{criteria:u,index:++t,value:a}});return Ia(i,function(a,o){return $a(a,o,r)})}function Ma(n,e){return Ca(n,e,function(r,t){return We(n,t)})}var Ra=et(function(n,e){return n==null?{}:Ma(n,e)});const un=Ra;var Fa=Math.ceil,Da=Math.max;function Ga(n,e,r,t){for(var i=-1,a=Da(Fa((e-n)/(r||1)),0),o=Array(a);a--;)o[t?a:++i]=n,n+=r;return o}function ka(n){return function(e,r,t){return t&&typeof t!="number"&&on(e,r,t)&&(r=t=void 0),e=rn(e),r===void 0?(r=e,e=0):r=rn(r),t=t===void 0?e1&&on(n,e[0],e[1])?e=[]:r>2&&on(e[0],e[1],e[2])&&(e=[e[0]]),Sa(n,ln(e,1),[])});const Q=Ua;var Ha=1/0,qa=bn&&1/Rn(new bn([,-0]))[1]==Ha?function(n){return new bn(n)}:kr;const Wa=qa;var ja=200;function Ka(n,e,r){var t=-1,i=Hr,a=n.length,o=!0,s=[],u=s;if(r)o=!1,i=ga;else if(a>=ja){var f=e?null:Wa(n);if(f)return Rn(f);o=!1,i=Be,u=new W}else u=e?[]:s;n:for(;++t1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return b(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=P,this._children[e]={},this._children[P][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return b(this._nodes,e)}removeNode(e){var r=this;if(b(this._nodes,e)){var t=function(i){r.removeEdge(r._edgeObjs[i])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],c(this.children(e),function(i){r.setParent(i)}),delete this._children[e]),c(T(this._in[e]),t),delete this._in[e],delete this._preds[e],c(T(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(y(r))r=P;else{r+="";for(var t=r;!y(t);t=this.parent(t))if(t===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==P)return r}}children(e){if(y(e)&&(e=P),this._isCompound){var r=this._children[e];if(r)return T(r)}else{if(e===P)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return T(r)}successors(e){var r=this._sucs[e];if(r)return T(r)}neighbors(e){var r=this.predecessors(e);if(r)return Va(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var t=this;c(this._nodes,function(o,s){e(s)&&r.setNode(s,o)}),c(this._edgeObjs,function(o){r.hasNode(o.v)&&r.hasNode(o.w)&&r.setEdge(o,t.edge(o))});var i={};function a(o){var s=t.parent(o);return s===void 0||r.hasNode(s)?(i[o]=s,s):s in i?i[s]:a(s)}return this._isCompound&&c(r.nodes(),function(o){r.setParent(o,a(o))}),r}setDefaultEdgeLabel(e){return Xn(e)||(e=B(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return N(this._edgeObjs)}setPath(e,r){var t=this,i=arguments;return J(e,function(a,o){return i.length>1?t.setEdge(a,o,r):t.setEdge(a,o),o}),this}setEdge(){var e,r,t,i,a=!1,o=arguments[0];typeof o=="object"&&o!==null&&"v"in o?(e=o.v,r=o.w,t=o.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=o,r=arguments[1],t=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,y(t)||(t=""+t);var s=Y(this._isDirected,e,r,t);if(b(this._edgeLabels,s))return a&&(this._edgeLabels[s]=i),this;if(!y(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[s]=a?i:this._defaultEdgeLabelFn(e,r,t);var u=no(this._isDirected,e,r,t);return e=u.v,r=u.w,Object.freeze(u),this._edgeObjs[s]=u,he(this._preds[r],e),he(this._sucs[e],r),this._in[r][s]=u,this._out[e][s]=u,this._edgeCount++,this}edge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t);return this._edgeLabels[i]}hasEdge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t);return b(this._edgeLabels,i)}removeEdge(e,r,t){var i=arguments.length===1?mn(this._isDirected,arguments[0]):Y(this._isDirected,e,r,t),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],le(this._preds[r],e),le(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var t=this._in[e];if(t){var i=N(t);return r?A(i,function(a){return a.v===r}):i}}outEdges(e,r){var t=this._out[e];if(t){var i=N(t);return r?A(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var t=this.inEdges(e,r);if(t)return t.concat(this.outEdges(e,r))}}L.prototype._nodeCount=0;L.prototype._edgeCount=0;function he(n,e){n[e]?n[e]++:n[e]=1}function le(n,e){--n[e]||delete n[e]}function Y(n,e,r,t){var i=""+e,a=""+r;if(!n&&i>a){var o=i;i=a,a=o}return i+ce+a+ce+(y(t)?za:t)}function no(n,e,r,t){var i=""+e,a=""+r;if(!n&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return t&&(s.name=t),s}function mn(n,e){return Y(n,e.v,e.w,e.name)}class eo{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return ve(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&ve(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,t=r._prev;t!==r;)e.push(JSON.stringify(t,ro)),t=t._prev;return"["+e.join(", ")+"]"}}function ve(n){n._prev._next=n._next,n._next._prev=n._prev,delete n._next,delete n._prev}function ro(n,e){if(n!=="_next"&&n!=="_prev")return e}var to=B(1);function io(n,e){if(n.nodeCount()<=1)return[];var r=oo(n,e||to),t=ao(r.graph,r.buckets,r.zeroIdx);return G(E(t,function(i){return n.outEdges(i.v,i.w)}))}function ao(n,e,r){for(var t=[],i=e[e.length-1],a=e[0],o;n.nodeCount();){for(;o=a.dequeue();)_n(n,e,r,o);for(;o=i.dequeue();)_n(n,e,r,o);if(n.nodeCount()){for(var s=e.length-2;s>0;--s)if(o=e[s].dequeue(),o){t=t.concat(_n(n,e,r,o,!0));break}}}return t}function _n(n,e,r,t,i){var a=i?[]:void 0;return c(n.inEdges(t.v),function(o){var s=n.edge(o),u=n.node(o.v);i&&a.push({v:o.v,w:o.w}),u.out-=s,On(e,r,u)}),c(n.outEdges(t.v),function(o){var s=n.edge(o),u=o.w,f=n.node(u);f.in-=s,On(e,r,f)}),n.removeNode(t.v),a}function oo(n,e){var r=new L,t=0,i=0;c(n.nodes(),function(s){r.setNode(s,{v:s,in:0,out:0})}),c(n.edges(),function(s){var u=r.edge(s.v,s.w)||0,f=e(s),d=u+f;r.setEdge(s.v,s.w,d),i=Math.max(i,r.node(s.v).out+=f),t=Math.max(t,r.node(s.w).in+=f)});var a=D(i+t+3).map(function(){return new eo}),o=t+1;return c(r.nodes(),function(s){On(a,o,r.node(s))}),{graph:r,buckets:a,zeroIdx:o}}function On(n,e,r){r.out?r.in?n[r.out-r.in+e].enqueue(r):n[n.length-1].enqueue(r):n[0].enqueue(r)}function so(n){var e=n.graph().acyclicer==="greedy"?io(n,r(n)):uo(n);c(e,function(t){var i=n.edge(t);n.removeEdge(t),i.forwardName=t.name,i.reversed=!0,n.setEdge(t.w,t.v,i,Un("rev"))});function r(t){return function(i){return t.edge(i).weight}}}function uo(n){var e=[],r={},t={};function i(a){b(t,a)||(t[a]=!0,r[a]=!0,c(n.outEdges(a),function(o){b(r,o.w)?e.push(o):i(o.w)}),delete r[a])}return c(n.nodes(),i),e}function fo(n){c(n.edges(),function(e){var r=n.edge(e);if(r.reversed){n.removeEdge(e);var t=r.forwardName;delete r.reversed,delete r.forwardName,n.setEdge(e.w,e.v,r,t)}})}function k(n,e,r,t){var i;do i=Un(t);while(n.hasNode(i));return r.dummy=e,n.setNode(i,r),i}function co(n){var e=new L().setGraph(n.graph());return c(n.nodes(),function(r){e.setNode(r,n.node(r))}),c(n.edges(),function(r){var t=e.edge(r.v,r.w)||{weight:0,minlen:1},i=n.edge(r);e.setEdge(r.v,r.w,{weight:t.weight+i.weight,minlen:Math.max(t.minlen,i.minlen)})}),e}function Ve(n){var e=new L({multigraph:n.isMultigraph()}).setGraph(n.graph());return c(n.nodes(),function(r){n.children(r).length||e.setNode(r,n.node(r))}),c(n.edges(),function(r){e.setEdge(r,n.edge(r))}),e}function ge(n,e){var r=n.x,t=n.y,i=e.x-r,a=e.y-t,o=n.width/2,s=n.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u,f;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),u=s*i/a,f=s):(i<0&&(o=-o),u=o,f=o*a/i),{x:r+u,y:t+f}}function pn(n){var e=E(D(Ze(n)+1),function(){return[]});return c(n.nodes(),function(r){var t=n.node(r),i=t.rank;y(i)||(e[i][t.order]=r)}),e}function ho(n){var e=j(E(n.nodes(),function(r){return n.node(r).rank}));c(n.nodes(),function(r){var t=n.node(r);b(t,"rank")&&(t.rank-=e)})}function lo(n){var e=j(E(n.nodes(),function(a){return n.node(a).rank})),r=[];c(n.nodes(),function(a){var o=n.node(a).rank-e;r[o]||(r[o]=[]),r[o].push(a)});var t=0,i=n.graph().nodeRankFactor;c(r,function(a,o){y(a)&&o%i!==0?--t:t&&c(a,function(s){n.node(s).rank+=t})})}function pe(n,e,r,t){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=t),k(n,"border",i,e)}function Ze(n){return S(E(n.nodes(),function(e){var r=n.node(e).rank;if(!y(r))return r}))}function vo(n,e){var r={lhs:[],rhs:[]};return c(n,function(t){e(t)?r.lhs.push(t):r.rhs.push(t)}),r}function go(n,e){var r=de();try{return e()}finally{console.log(n+" time: "+(de()-r)+"ms")}}function po(n,e){return e()}function bo(n){function e(r){var t=n.children(r),i=n.node(r);if(t.length&&c(t,e),b(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,o=i.maxRank+1;ao.lim&&(s=o,u=!0);var f=A(e.edges(),function(d){return u===me(n,n.node(d.v),s)&&u!==me(n,n.node(d.w),s)});return Yn(f,function(d){return K(e,d)})}function ar(n,e,r,t){var i=r.v,a=r.w;n.removeEdge(i,a),n.setEdge(t.v,t.w,{}),Wn(n),qn(n,e),$o(n,e)}function $o(n,e){var r=kn(n.nodes(),function(i){return!e.node(i).parent}),t=Io(n,r);t=t.slice(1),c(t,function(i){var a=n.node(i).parent,o=e.edge(i,a),s=!1;o||(o=e.edge(a,i),s=!0),e.node(i).rank=e.node(a).rank+(s?o.minlen:-o.minlen)})}function So(n,e,r){return n.hasEdge(e,r)}function me(n,e,r){return r.low<=e.lim&&e.lim<=r.lim}function Mo(n){switch(n.graph().ranker){case"network-simplex":_e(n);break;case"tight-tree":Fo(n);break;case"longest-path":Ro(n);break;default:_e(n)}}var Ro=Hn;function Fo(n){Hn(n),Qe(n)}function _e(n){M(n)}function Do(n){var e=k(n,"root",{},"_root"),r=Go(n),t=S(N(r))-1,i=2*t+1;n.graph().nestingRoot=e,c(n.edges(),function(o){n.edge(o).minlen*=i});var a=ko(n)+1;c(n.children(),function(o){or(n,e,i,a,t,r,o)}),n.graph().nodeRankFactor=i}function or(n,e,r,t,i,a,o){var s=n.children(o);if(!s.length){o!==e&&n.setEdge(e,o,{weight:0,minlen:r});return}var u=pe(n,"_bt"),f=pe(n,"_bb"),d=n.node(o);n.setParent(u,o),d.borderTop=u,n.setParent(f,o),d.borderBottom=f,c(s,function(h){or(n,e,r,t,i,a,h);var l=n.node(h),g=l.borderTop?l.borderTop:h,v=l.borderBottom?l.borderBottom:h,p=l.borderTop?t:2*t,m=g!==v?1:i-a[o]+1;n.setEdge(u,g,{weight:p,minlen:m,nestingEdge:!0}),n.setEdge(v,f,{weight:p,minlen:m,nestingEdge:!0})}),n.parent(o)||n.setEdge(e,u,{weight:0,minlen:i+a[o]})}function Go(n){var e={};function r(t,i){var a=n.children(t);a&&a.length&&c(a,function(o){r(o,i+1)}),e[t]=i}return c(n.children(),function(t){r(t,1)}),e}function ko(n){return J(n.edges(),function(e,r){return e+n.edge(r).weight},0)}function Bo(n){var e=n.graph();n.removeNode(e.nestingRoot),delete e.nestingRoot,c(n.edges(),function(r){var t=n.edge(r);t.nestingEdge&&n.removeEdge(r)})}function Yo(n,e,r){var t={},i;c(r,function(a){for(var o=n.parent(a),s,u;o;){if(s=n.parent(o),s?(u=t[s],t[s]=o):(u=i,i=o),u&&u!==o){e.setEdge(u,o);return}o=s}})}function Uo(n,e,r){var t=Ho(n),i=new L({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(a){return n.node(a)});return c(n.nodes(),function(a){var o=n.node(a),s=n.parent(a);(o.rank===e||o.minRank<=e&&e<=o.maxRank)&&(i.setNode(a),i.setParent(a,s||t),c(n[r](a),function(u){var f=u.v===a?u.w:u.v,d=i.edge(f,a),h=y(d)?0:d.weight;i.setEdge(f,a,{weight:n.edge(u).weight+h})}),b(o,"minRank")&&i.setNode(a,{borderLeft:o.borderLeft[e],borderRight:o.borderRight[e]}))}),i}function Ho(n){for(var e;n.hasNode(e=Un("_root")););return e}function qo(n,e){for(var r=0,t=1;t0;)d%2&&(h+=s[d+1]),d=d-1>>1,s[d]+=f.weight;u+=f.weight*h})),u}function jo(n){var e={},r=A(n.nodes(),function(s){return!n.children(s).length}),t=S(E(r,function(s){return n.node(s).rank})),i=E(D(t+1),function(){return[]});function a(s){if(!b(e,s)){e[s]=!0;var u=n.node(s);i[u.rank].push(s),c(n.successors(s),a)}}var o=Q(r,function(s){return n.node(s).rank});return c(o,a),i}function Ko(n,e){return E(e,function(r){var t=n.inEdges(r);if(t.length){var i=J(t,function(a,o){var s=n.edge(o),u=n.node(o.v);return{sum:a.sum+s.weight*u.order,weight:a.weight+s.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}function Xo(n,e){var r={};c(n,function(i,a){var o=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};y(i.barycenter)||(o.barycenter=i.barycenter,o.weight=i.weight)}),c(e.edges(),function(i){var a=r[i.v],o=r[i.w];!y(a)&&!y(o)&&(o.indegree++,a.out.push(r[i.w]))});var t=A(r,function(i){return!i.indegree});return Vo(t)}function Vo(n){var e=[];function r(a){return function(o){o.merged||(y(o.barycenter)||y(a.barycenter)||o.barycenter>=a.barycenter)&&Zo(a,o)}}function t(a){return function(o){o.in.push(a),--o.indegree===0&&n.push(o)}}for(;n.length;){var i=n.pop();e.push(i),c(i.in.reverse(),r(i)),c(i.out,t(i))}return E(A(e,function(a){return!a.merged}),function(a){return un(a,["vs","i","barycenter","weight"])})}function Zo(n,e){var r=0,t=0;n.weight&&(r+=n.barycenter*n.weight,t+=n.weight),e.weight&&(r+=e.barycenter*e.weight,t+=e.weight),n.vs=e.vs.concat(n.vs),n.barycenter=r/t,n.weight=t,n.i=Math.min(e.i,n.i),e.merged=!0}function Jo(n,e){var r=vo(n,function(d){return b(d,"barycenter")}),t=r.lhs,i=Q(r.rhs,function(d){return-d.i}),a=[],o=0,s=0,u=0;t.sort(Qo(!!e)),u=Ee(a,i,u),c(t,function(d){u+=d.vs.length,a.push(d.vs),o+=d.barycenter*d.weight,s+=d.weight,u=Ee(a,i,u)});var f={vs:G(a)};return s&&(f.barycenter=o/s,f.weight=s),f}function Ee(n,e,r){for(var t;e.length&&(t=sn(e)).i<=r;)e.pop(),n.push(t.vs),r++;return r}function Qo(n){return function(e,r){return e.barycenterr.barycenter?1:n?r.i-e.i:e.i-r.i}}function sr(n,e,r,t){var i=n.children(e),a=n.node(e),o=a?a.borderLeft:void 0,s=a?a.borderRight:void 0,u={};o&&(i=A(i,function(v){return v!==o&&v!==s}));var f=Ko(n,i);c(f,function(v){if(n.children(v.v).length){var p=sr(n,v.v,r,t);u[v.v]=p,b(p,"barycenter")&&ns(v,p)}});var d=Xo(f,r);zo(d,u);var h=Jo(d,t);if(o&&(h.vs=G([o,h.vs,s]),n.predecessors(o).length)){var l=n.node(n.predecessors(o)[0]),g=n.node(n.predecessors(s)[0]);b(h,"barycenter")||(h.barycenter=0,h.weight=0),h.barycenter=(h.barycenter*h.weight+l.order+g.order)/(h.weight+2),h.weight+=2}return h}function zo(n,e){c(n,function(r){r.vs=G(r.vs.map(function(t){return e[t]?e[t].vs:t}))})}function ns(n,e){y(n.barycenter)?(n.barycenter=e.barycenter,n.weight=e.weight):(n.barycenter=(n.barycenter*n.weight+e.barycenter*e.weight)/(n.weight+e.weight),n.weight+=e.weight)}function es(n){var e=Ze(n),r=ye(n,D(1,e+1),"inEdges"),t=ye(n,D(e-1,-1,-1),"outEdges"),i=jo(n);xe(n,i);for(var a=Number.POSITIVE_INFINITY,o,s=0,u=0;u<4;++s,++u){rs(s%2?r:t,s%4>=2),i=pn(n);var f=qo(n,i);fo||s>e[u].lim));for(f=u,u=t;(u=n.parent(u))!==f;)a.push(u);return{path:i.concat(a.reverse()),lca:f}}function as(n){var e={},r=0;function t(i){var a=r;c(n.children(i),t),e[i]={low:a,lim:r++}}return c(n.children(),t),e}function os(n,e){var r={};function t(i,a){var o=0,s=0,u=i.length,f=sn(a);return c(a,function(d,h){var l=us(n,d),g=l?n.node(l).order:u;(l||d===f)&&(c(a.slice(s,h+1),function(v){c(n.predecessors(v),function(p){var m=n.node(p),_=m.order;(_f)&&ur(r,l,d)})})}function i(a,o){var s=-1,u,f=0;return c(o,function(d,h){if(n.node(d).dummy==="border"){var l=n.predecessors(d);l.length&&(u=n.node(l[0]).order,t(o,f,h,s,u),f=h,s=u)}t(o,f,o.length,u,a.length)}),o}return J(e,i),r}function us(n,e){if(n.node(e).dummy)return kn(n.predecessors(e),function(r){return n.node(r).dummy})}function ur(n,e,r){if(e>r){var t=e;e=r,r=t}var i=n[e];i||(n[e]=i={}),i[r]=!0}function fs(n,e,r){if(e>r){var t=e;e=r,r=t}return b(n[e],r)}function ds(n,e,r,t){var i={},a={},o={};return c(e,function(s){c(s,function(u,f){i[u]=u,a[u]=u,o[u]=f})}),c(e,function(s){var u=-1;c(s,function(f){var d=t(f);if(d.length){d=Q(d,function(p){return o[p]});for(var h=(d.length-1)/2,l=Math.floor(h),g=Math.ceil(h);l<=g;++l){var v=d[l];a[f]===f&&ut?1:n>=t?0:NaN}function hn(n,t){return n==null||t==null?NaN:tn?1:t>=n?0:NaN}function _(n){let t,e,r;n.length!==2?(t=$,e=(u,c)=>$(n(u),c),r=(u,c)=>n(u)-c):(t=n===$||n===hn?n:mn,e=n,r=n);function i(u,c,o=0,l=u.length){if(o>>1;e(u[h],c)<0?o=h+1:l=h}while(o>>1;e(u[h],c)<=0?o=h+1:l=h}while(oo&&r(u[h-1],c)>-r(u[h],c)?h-1:h}return{left:i,center:a,right:f}}function mn(){return 0}function sn(n){return n===null?NaN:+n}const ln=_($),dn=ln.right;_(sn).center;const gn=dn,yn=Math.sqrt(50),Mn=Math.sqrt(10),pn=Math.sqrt(2);function E(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),f=r/Math.pow(10,i),a=f>=yn?10:f>=Mn?5:f>=pn?2:1;let u,c,o;return i<0?(o=Math.pow(10,-i)/a,u=Math.round(n*o),c=Math.round(t*o),u/ot&&--c,o=-o):(o=Math.pow(10,i)*a,u=Math.round(n/o),c=Math.round(t/o),u*ot&&--c),c0))return[];if(n===t)return[n];const r=t=i))return[];const u=f-i+1,c=new Array(u);if(r)if(a<0)for(let o=0;o=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function R(n,t){if((e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"))<0)return null;var e,r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function v(n){return n=R(Math.abs(n)),n?n[1]:NaN}function Pn(n,t){return function(e,r){for(var i=e.length,f=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),f.push(e.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return f.reverse().join(t)}}function zn(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var Fn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function D(n){if(!(t=Fn.exec(n)))throw new Error("invalid format: "+n);var t;return new G({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}D.prototype=G.prototype;function G(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}G.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function $n(n){n:for(var t=n.length,e=1,r=-1,i;e0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var nn;function En(n,t){var e=R(n,t);if(!e)return n+"";var r=e[0],i=e[1],f=i-(nn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return f===a?r:f>a?r+new Array(f-a+1).join("0"):f>0?r.slice(0,f)+"."+r.slice(f):"0."+new Array(1-f).join("0")+R(n,Math.max(0,t+f-1))[0]}function Y(n,t){var e=R(n,t);if(!e)return n+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const Z={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:jn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Y(n*100,t),r:Y,s:En,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function J(n){return n}var K=Array.prototype.map,Q=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Rn(n){var t=n.grouping===void 0||n.thousands===void 0?J:Pn(K.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",f=n.numerals===void 0?J:zn(K.call(n.numerals,String)),a=n.percent===void 0?"%":n.percent+"",u=n.minus===void 0?"−":n.minus+"",c=n.nan===void 0?"NaN":n.nan+"";function o(h){h=D(h);var s=h.fill,p=h.align,y=h.sign,S=h.symbol,k=h.zero,b=h.width,I=h.comma,w=h.precision,B=h.trim,d=h.type;d==="n"?(I=!0,d="g"):Z[d]||(w===void 0&&(w=12),B=!0,d="g"),(k||s==="0"&&p==="=")&&(k=!0,s="0",p="=");var en=S==="$"?e:S==="#"&&/[boxX]/.test(d)?"0"+d.toLowerCase():"",on=S==="$"?r:/[%p]/.test(d)?a:"",O=Z[d],an=/[defgprs%]/.test(d);w=w===void 0?6:/[gprs]/.test(d)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function V(m){var N=en,g=on,x,X,j;if(d==="c")g=O(m)+g,m="";else{m=+m;var P=m<0||1/m<0;if(m=isNaN(m)?c:O(Math.abs(m),w),B&&(m=$n(m)),P&&+m==0&&y!=="+"&&(P=!1),N=(P?y==="("?y:u:y==="-"||y==="("?"":y)+N,g=(d==="s"?Q[8+nn/3]:"")+g+(P&&y==="("?")":""),an){for(x=-1,X=m.length;++xj||j>57){g=(j===46?i+m.slice(x+1):m.slice(x))+g,m=m.slice(0,x);break}}}I&&!k&&(m=t(m,1/0));var z=N.length+m.length+g.length,M=z>1)+N+m+g+M.slice(z);break;default:m=M+N+m+g;break}return f(m)}return V.toString=function(){return h+""},V}function l(h,s){var p=o((h=D(h),h.type="f",h)),y=Math.max(-8,Math.min(8,Math.floor(v(s)/3)))*3,S=Math.pow(10,-y),k=Q[8+y/3];return function(b){return p(S*b)+k}}return{format:o,formatPrefix:l}}var F,tn,rn;Dn({thousands:",",grouping:[3],currency:["$",""]});function Dn(n){return F=Rn(n),tn=F.format,rn=F.formatPrefix,F}function In(n){return Math.max(0,-v(Math.abs(n)))}function Tn(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(v(t)/3)))*3-v(Math.abs(n)))}function Ln(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,v(t)-v(n))+1}function qn(n){return function(){return n}}function Cn(n){return+n}var W=[0,1];function A(n){return n}function q(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:qn(isNaN(t)?NaN:.5)}function Gn(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function Bn(n,t,e){var r=n[0],i=n[1],f=t[0],a=t[1];return i2?On:Bn,c=o=null,h}function h(s){return s==null||isNaN(s=+s)?f:(c||(c=u(n.map(r),t,e)))(r(a(s)))}return h.invert=function(s){return a(i((o||(o=u(t,n.map(r),T)))(s)))},h.domain=function(s){return arguments.length?(n=Array.from(s,Cn),l()):n.slice()},h.range=function(s){return arguments.length?(t=Array.from(s),l()):t.slice()},h.rangeRound=function(s){return t=Array.from(s),e=bn,l()},h.clamp=function(s){return arguments.length?(a=s?!0:A,l()):a!==A},h.interpolate=function(s){return arguments.length?(e=s,l()):e},h.unknown=function(s){return arguments.length?(f=s,h):f},function(s,p){return r=s,i=p,l()}}function Hn(){return Xn()(A,A)}function Un(n,t,e,r){var i=Nn(n,t,e),f;switch(r=D(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(f=Tn(i,a))&&(r.precision=f),rn(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(f=Ln(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=f-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(f=In(i))&&(r.precision=f-(r.type==="%")*2);break}}return tn(r)}function Yn(n){var t=n.domain;return n.ticks=function(e){var r=t();return wn(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return Un(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,f=r.length-1,a=r[i],u=r[f],c,o,l=10;for(u0;){if(o=L(a,u,e),o===c)return r[i]=a,r[f]=u,t(r);if(o>0)a=Math.floor(a/o)*o,u=Math.ceil(u/o)*o;else if(o<0)a=Math.ceil(a*o)/o,u=Math.floor(u*o)/o;else break;c=o}return n},n}function Zn(){var n=Hn();return n.copy=function(){return Vn(n,Zn())},cn.apply(n,arguments),Yn(n)}export{Vn as a,_ as b,Hn as c,Zn as l,Nn as t}; diff --git a/assets/locale-files-strucure.html-K2z5MQ7m.js b/assets/locale-files-strucure.html-K2z5MQ7m.js new file mode 100644 index 00000000..fa095b83 --- /dev/null +++ b/assets/locale-files-strucure.html-K2z5MQ7m.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-08a9b111","path":"/code/citation-style-language/specification/locale-files-strucure.html","title":"本地化文件的结构","lang":"zh-CN","frontmatter":{"title":"本地化文件的结构","date":"2022-08-01T16:55:26.000Z","updated":"2022-08-03T10:25:19.000Z","description":"本地化文件的结构 [!warning] WORK IN PROGRESS 此页面正在施工中。 尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。 每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名(\\"xx-XX\\" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 \\"1.0\\")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:terms、cs:date、cs:style-options 子元素。下面是一个 本地化文件的部分示例:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/locale-files-strucure.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"本地化文件的结构"}],["meta",{"property":"og:description","content":"本地化文件的结构 [!warning] WORK IN PROGRESS 此页面正在施工中。 尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。 每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名(\\"xx-XX\\" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 \\"1.0\\")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:terms、cs:date、cs:style-options 子元素。下面是一个 本地化文件的部分示例:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:55:26.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"本地化文件的结构\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:55:26.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Info","slug":"info","link":"#info","children":[]},{"level":2,"title":"Terms(术语)","slug":"terms-术语","link":"#terms-术语","children":[{"level":3,"title":"序数后缀","slug":"序数后缀","link":"#序数后缀","children":[]},{"level":3,"title":"性别特定序数","slug":"性别特定序数","link":"#性别特定序数","children":[]}]},{"level":2,"title":"本地化日期格式","slug":"本地化日期格式","link":"#本地化日期格式","children":[]},{"level":2,"title":"本地化选项","slug":"本地化选项","link":"#本地化选项","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":7.27,"words":2181},"filePathRelative":"code/citation-style-language/specification/locale-files-strucure.md","localizedDate":"2022年8月2日","excerpt":"

    本地化文件的结构

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。

    \\n

    每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名(\\"xx-XX\\" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 \\"1.0\\")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:termscs:datecs:style-options 子元素。下面是一个 本地化文件的部分示例:

    ","autoDesc":true}');export{e as data}; diff --git a/assets/locale-files-strucure.html-UmiIrXTl.js b/assets/locale-files-strucure.html-UmiIrXTl.js new file mode 100644 index 00000000..d1be4292 --- /dev/null +++ b/assets/locale-files-strucure.html-UmiIrXTl.js @@ -0,0 +1,44 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o as c,c as u,a as n,b as a,e as t,d as o}from"./app-Mf7X6hWu.js";const l={},i=o(`

    本地化文件的结构

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。

    每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名("xx-XX" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 "1.0")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:termscs:datecs:style-options 子元素。下面是一个 本地化文件的部分示例:

    <?xml version="1.0" encoding="UTF-8"?>
    +<locale xml:lang="en-US" version="1.0" xmlns="http://purl.org/net/xbiblio/csl">
    +  <style-options punctuation-in-quote="true"/>
    +  <date form="text">
    +    <date-part name="month" suffix=" "/>
    +    <date-part name="day" suffix=", "/>
    +    <date-part name="year"/>
    +  </date>
    +  <date form="numeric">
    +    <date-part name="year"/>
    +    <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
    +    <date-part name="day" prefix="-" range-delimiter="/"/>
    +  </date>
    +  <terms>
    +    <term name="no date">n.d.</term>
    +    <term name="et-al">et al.</term>
    +    <term name="page">
    +      <single>page</single>
    +      <multiple>pages</multiple>
    +    </term>
    +    <term name="page" form="short">
    +      <single>p.</single>
    +      <multiple>pp.</multiple>
    +    </term>
    +  </terms>
    +</locale>
    +

    Info

    cs:info 元素用来给出本地化文件的元数据。它含有以下子元素:

    cs:translator(可选)

    cs:translator 用来致谢翻译者,并且能使用多次。在这个元素中。子元素 cs:name 必须出现一次,cs:uri 则是可选的。这些子元素应该分别包括翻译者的名字,地址和 URI。(与样式中类似)

    cs:rights(可选)

    `,10),d=n("code",null,"cs:rights",-1),r=n("code",null,"license",-1),k=n("code",null,"license",-1),q=n("code",null,"xml:lang",-1),m={href:"http://books.xmlschemata.org/relaxng/ch19-77191.html",target:"_blank",rel:"noopener noreferrer"},g=o(`

    cs:updates(可选)

    cs:updated 元素的内容必须是一个 时间戳 来指定本地化文件最后一次更新的时间。

    Terms(术语)

    术语是本地化的字符串,比如通过使用 "and" 术语,"Doe and Smith" 在语言环境从英语到德语的转换中会自动变为 "Doe und Smith"。术语用 cs:term 元素定义,是 cs:terms 元素的子元素。每个 cs:term 元素必须携带一个 name 属性,其属性值可以设置为 [附录II 术语](#附录II 术语) 列表中的值。

    术语可以直接在 cs:term 的内容中定义,或者,在某些情况下,比如在需要单数和复数的情况下可以分别在子元素 cs:singlecs:multiple 中定义, (例如:"page""pages")。

    术语必须使用 cs:term 元素来定义,并在其中使用 form 属性来设置特定格式,form 可以设置的值为:

    • "long" - (默认值), e.g. "editor" and "editors" for the "editor" term

    • "short" - e.g. "ed." and "eds." for the term "editor"

    • "verb" - e.g. "edited by" for the term "editor"

    • "verb-short" - e.g. "ed." for the term "editor"

    • "symbol" - e.g. "§" and "§§" for the term "section"

    如果一个样式使用了一个没有定义的格式,则会会退到其他形式,比如 "werb-short" 会回退到 "verb""symbol" 会回退到 "short""verb""short" 都会回退到 "long"。如果没有可以用的语言环境或者 form 格式,改术语的渲染结果就会显示为空字符串。

    cs:term 元素可以使用 matchgendergender-form 属性来设置数字变量渲染为序数(比如,first2nd)。具体见下面的 序数后缀特定序数

    术语内容不应该包括 Latex 以及 HTML 等标记。上标可以使用 Unicode 上标字符。

    序数后缀

    数字变量可以使用 cs:number 元素以 "ordinal" 格式(即序数格式)渲染,比如:2nd。序数的后缀则是使用术语来定义的。

    "ordinal" 术语定义了默认的序数后缀格式,但这些默认的后缀可以被下面的术语对某些数字进行覆盖:

    • "ordinal-00""ordinal-09" - 默认地,当术语名称的最后一位数字与要渲染的数字的最后一个数字相同时,将使用在这个范围内的对应的术语。比如:"ordinal-00" 能够匹配数字 0 、10、20 等等。通过设置属性 match"last-two-difits"(默认值为 "last-digit"),匹配范围将为变为两位,例如:0、100、200 等。当 match 术语设置为 "whole-number" 时,只有术语与要渲染的数字相同时,才会实现匹配。
    • "ordinal-10""ordinal-99"- 默认地,当要渲染的数字的最后两位和术语中相同时,使用这个范围的术语。当 match 属性设置为 "whole-number" 时(默认为 "last-two-digits"),只有术语与要渲染的数字相同时,才会实现匹配。

    当渲染的数据对上面的两组都匹配时(比如:13 可以同时匹配 "ordinal-03""ordinal-13"),则使用 "ordinal-10""ordinal-99"

    序数术语在 CSL 1.0.1 和 CSL 1.0 中表现时不同的。当样式和本地化文件中都没有定义 "ordinal" 术语,但是定义了 "ordinal-00""ordinal-04",原始的 CSL 1.0 的方案被使用,"ordinal-01" 用于以 1 结尾的数字(以 11 结尾的数字除外)," ordinal-02" 用于以 2 结尾的数字(以 12 结尾的数字除外),"ordinal -03" 表示以 3 结尾(那些以 13 结尾的除外),"ordinal-04" 表示所有其他数字。

    性别特定序数

    一些语言使用特定的有别于性别的序数。例如,如果目标名词是男性,英语中的 "1st" 和 "first" 在法语中就翻译为 "1er" 和 "premier",如果目标名词是女性,就翻译为 "1re" 和 "première"。

    女性和男性在术语使用上的不同可以使用性别格式 gender-form 的属性来设置(分别设置为 femininemasculine),详情见 Ordinals序数(没有性别的术语表示中性)。这里涉及到两类目标名词:a) 数字变量 附带的术语,b) 月份术语(见 Months/月)。在术语设置为 "long"(默认),并且在 gender 属性被设置时(设置为 "feminine""masculine"),这些名词即使用相应的性别变体。当数字变量以序数 "ordinal" 或者 long-ordinal 形式时,将使用相同性别的序数词,如果没定义女性或男性变体,则使用中性变体。当 "day" 日期部分以序数 "ordinal" 形式呈现时,序数性别和月的术语匹配。

    下面给出 1re éd."1st ed.")、"1er janvier""January 1st")和 "3e édition""3rd edition")的示例:

    <?xml version="1.0" encoding="UTF-8"?>
    +<locale xml:lang="fr-FR">
    +  <terms>
    +    <term name="edition" gender="feminine">
    +      <single>édition</single>
    +      <multiple>éditions</multiple>
    +    </term>
    +    <term name="edition" form="short">éd.</term>
    +    <term name="month-01" gender="masculine">janvier</term>
    +    <term name="ordinal">e</term>
    +    <term name="ordinal-01" gender-form="feminine" match="whole-number">re</term>
    +    <term name="ordinal-01" gender-form="masculine" match="whole-number">er</term>
    +  </terms>
    +</locale>
    +

    本地化日期格式

    cs:date 元素中,本地化数据格式有两种格式:一种是 "numeric"(例:12-15-2005),另外一种是 "text"(例:December 15,2005)。格式在 cs:date 元素中,使用 form 属性来设置。

    `,23),v=n("code",null,"cs:date-part",-1),h={href:"https://docs.citationstyles.org/en/stable/specification.html#date-part",target:"_blank",rel:"noopener noreferrer"},b=n("code",null,"cs:date-part",-1),f=n("code",null,"name",-1),_=n("code",null,'"day"',-1),x=n("code",null,'"month"',-1),E=n("code",null,'"year"',-1),y=n("code",null,"cs:date",-1),B=n("code",null,"cs:date-part",-1),L={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},S={href:"https://docs.citationstyles.org/en/stable/specification.html#text-case",target:"_blank",rel:"noopener noreferrer"},I=n("code",null,"cs:date",-1),F=n("code",null,"delimiter",-1),w=n("code",null,"cs:date-part",-1),C=n("code",null,"cs:date-part",-1),A=o(`

    :定义本地化日期格式时,不允许在 cs:date 上使用词缀。此限制适用于将特定于语言环境的词缀(在 cs:date-part 元素上设置)与任何特定于样式的词缀(在调用 cs:date 元素上设置)分开,例如括号:

    <macro name="issued">
    + <date variable="issued" form="numeric" prefix="(" suffix=")"/>
    +</macro>
    +

    本地化选项

    `,3),R=n("code",null,"limit-day-ordinals-to-day-1",-1),U=n("code",null,"punctuation-in-quote",-1),D={href:"https://docs.citationstyles.org/en/stable/specification.html#locale-options",target:"_blank",rel:"noopener noreferrer"},N=n("code",null,"cs:style-options",-1);function O(T,V){const s=p("ExternalLinkIcon");return c(),u("div",null,[i,n("p",null,[a("​ 可能出现一次。"),d,a(" 的内容用来指定本地化文件发布版本的 license。该元素可能会携带 "),r,a(" 属性来指定 "),k,a(" 的 URI,"),q,a(" 属性则用来指定元素内容的语言(值必须是 "),n("a",m,[a("xsd:language locale code"),t(s)]),a(")。")]),g,n("p",null,[a("日期格式使用 "),v,a(" 子元素来构建(见 "),n("a",h,[a("Date-part"),t(s)]),a(")。当 "),b,a(" 的 "),f,a(" 属性设置为 "),_,a("、"),x,a("、或 "),E,a(" 时,反应了日期显示的顺序为日、月河年。日期可以使用 "),y,a(" 和 "),B,a(" 元素中的 "),n("a",L,[a("formatting"),t(s)]),a(" 和 "),n("a",S,[a("text-case"),t(s)]),a(" 属性设置。"),I,a(" 元素中的 "),F,a(" 属性用来设置 "),w,a(" 中不同部分的间隔,并且词缀也可以应用于 "),C,a(" 元素。(译注:这里的词缀指的是前后的括号等等。)")]),A,n("p",null,[a("本地化选项有两个,"),R,a(" 和 "),U,a(" (见 "),n("a",D,[a("Locale Options"),t(s)]),a(")。这些全局选项(同时影响引文和参考文献条目)在 "),N,a(" 中被设置为可选属性。")])])}const j=e(l,[["render",O],["__file","locale-files-strucure.html.vue"]]);export{j as default}; diff --git a/assets/mermaid.core-Up0YySao.js b/assets/mermaid.core-Up0YySao.js new file mode 100644 index 00000000..c9e7658e --- /dev/null +++ b/assets/mermaid.core-Up0YySao.js @@ -0,0 +1,92 @@ +import{_ as J}from"./app-Mf7X6hWu.js";function uh(t){for(var e=[],i=1;i=v?M:""+Array(v+1-B.length).join(y)+M},H={s:q,z:function(M){var v=-M.utcOffset(),y=Math.abs(v),B=Math.floor(y/60),x=y%60;return(v<=0?"+":"-")+q(B,2,"0")+":"+q(x,2,"0")},m:function M(v,y){if(v.date()1)return M(D[0])}else{var I=v.name;X[I]=v,x=I}return!B&&x&&(Y=x),x||!B&&Y},j=function(M,v){if(Xt(M))return M.clone();var y=typeof v=="object"?v:{};return y.date=M,y.args=arguments,new vt(y)},z=H;z.l=Kt,z.i=Xt,z.w=function(M,v){return j(M,{locale:v.$L,utc:v.$u,x:v.$x,$offset:v.$offset})};var vt=function(){function M(y){this.$L=Kt(y.locale,null,!0),this.parse(y),this.$x=this.$x||y.x||{},this[W]=!0}var v=M.prototype;return v.parse=function(y){this.$d=function(B){var x=B.date,b=B.utc;if(x===null)return new Date(NaN);if(z.u(x))return new Date;if(x instanceof Date)return new Date(x);if(typeof x=="string"&&!/Z$/i.test(x)){var D=x.match(S);if(D){var I=D[2]-1||0,G=(D[7]||"0").substring(0,3);return b?new Date(Date.UTC(D[1],I,D[3]||1,D[4]||0,D[5]||0,D[6]||0,G)):new Date(D[1],I,D[3]||1,D[4]||0,D[5]||0,D[6]||0,G)}}return new Date(x)}(y),this.init()},v.init=function(){var y=this.$d;this.$y=y.getFullYear(),this.$M=y.getMonth(),this.$D=y.getDate(),this.$W=y.getDay(),this.$H=y.getHours(),this.$m=y.getMinutes(),this.$s=y.getSeconds(),this.$ms=y.getMilliseconds()},v.$utils=function(){return z},v.isValid=function(){return this.$d.toString()!==k},v.isSame=function(y,B){var x=j(y);return this.startOf(B)<=x&&x<=this.endOf(B)},v.isAfter=function(y,B){return j(y)-1}function l(u){var f=u.replace(n,"");return f.replace(i,function(c,d){return String.fromCharCode(d)})}function h(u){if(!u)return t.BLANK_URL;var f=l(u).replace(r,"").replace(n,"").trim();if(!f)return t.BLANK_URL;if(a(f))return f;var c=f.match(o);if(!c)return f;var d=c[0];return e.test(d)?t.BLANK_URL:f}t.sanitizeUrl=h})(Is);var mh={value:()=>{}};function Ds(){for(var t=0,e=arguments.length,i={},r;t=0&&(r=i.slice(n+1),i=i.slice(0,n)),i&&!e.hasOwnProperty(i))throw new Error("unknown type: "+i);return{type:i,name:r}})}Oi.prototype=Ds.prototype={constructor:Oi,on:function(t,e){var i=this._,r=_h(t+"",i),n,o=-1,s=r.length;if(arguments.length<2){for(;++o0)for(var i=new Array(n),r=0,n,o;r=0&&(e=t.slice(0,i))!=="xmlns"&&(t=t.slice(i+1)),vo.hasOwnProperty(e)?{space:vo[e],local:t}:t}function Ch(t){return function(){var e=this.ownerDocument,i=this.namespaceURI;return i===tn&&e.documentElement.namespaceURI===tn?e.createElement(t):e.createElementNS(i,t)}}function xh(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Ns(t){var e=fr(t);return(e.local?xh:Ch)(e)}function bh(){}function vn(t){return t==null?bh:function(){return this.querySelector(t)}}function Th(t){typeof t!="function"&&(t=vn(t));for(var e=this._groups,i=e.length,r=new Array(i),n=0;n=q&&(q=T+1);!(Y=S[q])&&++q<_;);H._next=Y||null}}return s=new yt(s,r),s._enter=a,s._exit=l,s}function Wh(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Hh(){return new yt(this._exit||this._groups.map(zs),this._parents)}function jh(t,e,i){var r=this.enter(),n=this,o=this.exit();return typeof t=="function"?(r=t(r),r&&(r=r.selection())):r=r.append(t+""),e!=null&&(n=e(n),n&&(n=n.selection())),i==null?o.remove():i(o),r&&n?r.merge(n).order():n}function Uh(t){for(var e=t.selection?t.selection():t,i=this._groups,r=e._groups,n=i.length,o=r.length,s=Math.min(n,o),a=new Array(n),l=0;l=0;)(s=r[n])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function Vh(t){t||(t=Gh);function e(f,c){return f&&c?t(f.__data__,c.__data__):!f-!c}for(var i=this._groups,r=i.length,n=new Array(r),o=0;oe?1:t>=e?0:NaN}function Xh(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Kh(){return Array.from(this)}function Zh(){for(var t=this._groups,e=0,i=t.length;e1?this.each((e==null?lc:typeof e=="function"?cc:hc)(t,e,i??"")):Le(this.node(),t)}function Le(t,e){return t.style.getPropertyValue(e)||Ws(t).getComputedStyle(t,null).getPropertyValue(e)}function fc(t){return function(){delete this[t]}}function dc(t,e){return function(){this[t]=e}}function pc(t,e){return function(){var i=e.apply(this,arguments);i==null?delete this[t]:this[t]=i}}function gc(t,e){return arguments.length>1?this.each((e==null?fc:typeof e=="function"?pc:dc)(t,e)):this.node()[t]}function Hs(t){return t.trim().split(/^|\s+/)}function kn(t){return t.classList||new js(t)}function js(t){this._node=t,this._names=Hs(t.getAttribute("class")||"")}js.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Us(t,e){for(var i=kn(t),r=-1,n=e.length;++r=0&&(i=e.slice(r+1),e=e.slice(0,r)),{type:e,name:i}})}function Hc(t){return function(){var e=this.__on;if(e){for(var i=0,r=-1,n=e.length,o;i>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):i===8?Ti(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):i===4?Ti(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Jc.exec(t))?new gt(e[1],e[2],e[3],1):(e=Qc.exec(t))?new gt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=tu.exec(t))?Ti(e[1],e[2],e[3],e[4]):(e=eu.exec(t))?Ti(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=iu.exec(t))?Lo(e[1],e[2]/100,e[3]/100,1):(e=ru.exec(t))?Lo(e[1],e[2]/100,e[3]/100,e[4]):ko.hasOwnProperty(t)?Bo(ko[t]):t==="transparent"?new gt(NaN,NaN,NaN,0):null}function Bo(t){return new gt(t>>16&255,t>>8&255,t&255,1)}function Ti(t,e,i,r){return r<=0&&(t=e=i=NaN),new gt(t,e,i,r)}function su(t){return t instanceof di||(t=ni(t)),t?(t=t.rgb(),new gt(t.r,t.g,t.b,t.opacity)):new gt}function en(t,e,i,r){return arguments.length===1?su(t):new gt(t,e,i,r??1)}function gt(t,e,i,r){this.r=+t,this.g=+e,this.b=+i,this.opacity=+r}Sn(gt,en,Xs(di,{brighter(t){return t=t==null?ji:Math.pow(ji,t),new gt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ii:Math.pow(ii,t),new gt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new gt(ue(this.r),ue(this.g),ue(this.b),Ui(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ao,formatHex:Ao,formatHex8:au,formatRgb:Fo,toString:Fo}));function Ao(){return`#${ce(this.r)}${ce(this.g)}${ce(this.b)}`}function au(){return`#${ce(this.r)}${ce(this.g)}${ce(this.b)}${ce((isNaN(this.opacity)?1:this.opacity)*255)}`}function Fo(){const t=Ui(this.opacity);return`${t===1?"rgb(":"rgba("}${ue(this.r)}, ${ue(this.g)}, ${ue(this.b)}${t===1?")":`, ${t})`}`}function Ui(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function ue(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ce(t){return t=ue(t),(t<16?"0":"")+t.toString(16)}function Lo(t,e,i,r){return r<=0?t=e=i=NaN:i<=0||i>=1?t=e=NaN:e<=0&&(t=NaN),new St(t,e,i,r)}function Ks(t){if(t instanceof St)return new St(t.h,t.s,t.l,t.opacity);if(t instanceof di||(t=ni(t)),!t)return new St;if(t instanceof St)return t;t=t.rgb();var e=t.r/255,i=t.g/255,r=t.b/255,n=Math.min(e,i,r),o=Math.max(e,i,r),s=NaN,a=o-n,l=(o+n)/2;return a?(e===o?s=(i-r)/a+(i0&&l<1?0:s,new St(s,a,l,t.opacity)}function lu(t,e,i,r){return arguments.length===1?Ks(t):new St(t,e,i,r??1)}function St(t,e,i,r){this.h=+t,this.s=+e,this.l=+i,this.opacity=+r}Sn(St,lu,Xs(di,{brighter(t){return t=t==null?ji:Math.pow(ji,t),new St(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ii:Math.pow(ii,t),new St(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,i=this.l,r=i+(i<.5?i:1-i)*e,n=2*i-r;return new gt(Rr(t>=240?t-240:t+120,n,r),Rr(t,n,r),Rr(t<120?t+240:t-120,n,r),this.opacity)},clamp(){return new St(Eo(this.h),vi(this.s),vi(this.l),Ui(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ui(this.opacity);return`${t===1?"hsl(":"hsla("}${Eo(this.h)}, ${vi(this.s)*100}%, ${vi(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Eo(t){return t=(t||0)%360,t<0?t+360:t}function vi(t){return Math.max(0,Math.min(1,t||0))}function Rr(t,e,i){return(t<60?e+(i-e)*t/60:t<180?i:t<240?e+(i-e)*(240-t)/60:e)*255}const wn=t=>()=>t;function Zs(t,e){return function(i){return t+i*e}}function hu(t,e,i){return t=Math.pow(t,i),e=Math.pow(e,i)-t,i=1/i,function(r){return Math.pow(t+r*e,i)}}function Kb(t,e){var i=e-t;return i?Zs(t,i>180||i<-180?i-360*Math.round(i/360):i):wn(isNaN(t)?e:t)}function cu(t){return(t=+t)==1?Js:function(e,i){return i-e?hu(e,i,t):wn(isNaN(e)?i:e)}}function Js(t,e){var i=e-t;return i?Zs(t,i):wn(isNaN(t)?e:t)}const Oo=function t(e){var i=cu(e);function r(n,o){var s=i((n=en(n)).r,(o=en(o)).r),a=i(n.g,o.g),l=i(n.b,o.b),h=Js(n.opacity,o.opacity);return function(u){return n.r=s(u),n.g=a(u),n.b=l(u),n.opacity=h(u),n+""}}return r.gamma=t,r}(1);function ee(t,e){return t=+t,e=+e,function(i){return t*(1-i)+e*i}}var rn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Pr=new RegExp(rn.source,"g");function uu(t){return function(){return t}}function fu(t){return function(e){return t(e)+""}}function du(t,e){var i=rn.lastIndex=Pr.lastIndex=0,r,n,o,s=-1,a=[],l=[];for(t=t+"",e=e+"";(r=rn.exec(t))&&(n=Pr.exec(e));)(o=n.index)>i&&(o=e.slice(i,o),a[s]?a[s]+=o:a[++s]=o),(r=r[0])===(n=n[0])?a[s]?a[s]+=n:a[++s]=n:(a[++s]=null,l.push({i:s,x:ee(r,n)})),i=Pr.lastIndex;return i180?u+=360:u-h>180&&(h+=360),c.push({i:f.push(n(f)+"rotate(",null,r)-2,x:ee(h,u)})):u&&f.push(n(f)+"rotate("+u+r)}function a(h,u,f,c){h!==u?c.push({i:f.push(n(f)+"skewX(",null,r)-2,x:ee(h,u)}):u&&f.push(n(f)+"skewX("+u+r)}function l(h,u,f,c,d,_){if(h!==f||u!==c){var k=d.push(n(d)+"scale(",null,",",null,")");_.push({i:k-4,x:ee(h,f)},{i:k-2,x:ee(u,c)})}else(f!==1||c!==1)&&d.push(n(d)+"scale("+f+","+c+")")}return function(h,u){var f=[],c=[];return h=t(h),u=t(u),o(h.translateX,h.translateY,u.translateX,u.translateY,f,c),s(h.rotate,u.rotate,f,c),a(h.skewX,u.skewX,f,c),l(h.scaleX,h.scaleY,u.scaleX,u.scaleY,f,c),h=u=null,function(d){for(var _=-1,k=c.length,S;++_=0&&t._call.call(void 0,e),t=t._next;--Ee}function $o(){pe=(Vi=oi.now())+dr,Ee=Ve=0;try{Cu()}finally{Ee=0,bu(),pe=0}}function xu(){var t=oi.now(),e=t-Vi;e>ea&&(dr-=e,Vi=t)}function bu(){for(var t,e=Yi,i,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(i=e._next,e._next=null,e=t?t._next=i:Yi=i);Ge=t,on(r)}function on(t){if(!Ee){Ve&&(Ve=clearTimeout(Ve));var e=t-pe;e>24?(t<1/0&&(Ve=setTimeout($o,t-oi.now()-dr)),We&&(We=clearInterval(We))):(We||(Vi=oi.now(),We=setInterval(xu,ea)),Ee=1,ia($o))}}function Io(t,e,i){var r=new Gi;return e=e==null?0:+e,r.restart(n=>{r.stop(),t(n+e)},e,i),r}var Tu=Ds("start","end","cancel","interrupt"),vu=[],na=0,Do=1,sn=2,Mi=3,No=4,an=5,$i=6;function pr(t,e,i,r,n,o){var s=t.__transition;if(!s)t.__transition={};else if(i in s)return;ku(t,i,{name:e,index:r,group:n,on:Tu,tween:vu,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:na})}function An(t,e){var i=Ft(t,e);if(i.state>na)throw new Error("too late; already scheduled");return i}function It(t,e){var i=Ft(t,e);if(i.state>Mi)throw new Error("too late; already running");return i}function Ft(t,e){var i=t.__transition;if(!i||!(i=i[e]))throw new Error("transition not found");return i}function ku(t,e,i){var r=t.__transition,n;r[e]=i,i.timer=ra(o,0,i.time);function o(h){i.state=Do,i.timer.restart(s,i.delay,i.time),i.delay<=h&&s(h-i.delay)}function s(h){var u,f,c,d;if(i.state!==Do)return l();for(u in r)if(d=r[u],d.name===i.name){if(d.state===Mi)return Io(s);d.state===No?(d.state=$i,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[u]):+usn&&r.state=0&&(e=e.slice(0,i)),!e||e==="start"})}function ef(t,e,i){var r,n,o=tf(e)?An:It;return function(){var s=o(this,t),a=s.on;a!==r&&(n=(r=a).copy()).on(e,i),s.on=n}}function rf(t,e){var i=this._id;return arguments.length<2?Ft(this.node(),i).on.on(t):this.each(ef(i,t,e))}function nf(t){return function(){var e=this.parentNode;for(var i in this.__transition)if(+i!==t)return;e&&e.removeChild(this)}}function of(){return this.on("end.remove",nf(this._id))}function sf(t){var e=this._name,i=this._id;typeof t!="function"&&(t=vn(t));for(var r=this._groups,n=r.length,o=new Array(n),s=0;s1?0:t<-1?Ln:Math.acos(t)}function s1(t){return t>=1?Po:t<=-1?-Po:Math.asin(t)}function la(t){this._context=t}la.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}};function Ef(t){return new la(t)}class ha{constructor(e,i){this._context=e,this._x=i}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,i){switch(e=+e,i=+i,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,i):this._context.moveTo(e,i);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,i,e,i):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+i)/2,e,this._y0,e,i);break}}this._x0=e,this._y0=i}}function Of(t){return new ha(t,!0)}function Mf(t){return new ha(t,!1)}function re(){}function Xi(t,e,i){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+i)/6)}function gr(t){this._context=t}gr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Xi(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Xi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function $f(t){return new gr(t)}function ca(t){this._context=t}ca.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Xi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function If(t){return new ca(t)}function ua(t){this._context=t}ua.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var i=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(i,r):this._context.moveTo(i,r);break;case 3:this._point=4;default:Xi(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};function Df(t){return new ua(t)}function fa(t,e){this._basis=new gr(t),this._beta=e}fa.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,i=t.length-1;if(i>0)for(var r=t[0],n=e[0],o=t[i]-r,s=e[i]-n,a=-1,l;++a<=i;)l=a/i,this._basis.point(this._beta*t[a]+(1-this._beta)*(r+l*o),this._beta*e[a]+(1-this._beta)*(n+l*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const Nf=function t(e){function i(r){return e===1?new gr(r):new fa(r,e)}return i.beta=function(r){return t(+r)},i}(.85);function Ki(t,e,i){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-i),t._x2,t._y2)}function En(t,e){this._context=t,this._k=(1-e)/6}En.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ki(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Ki(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Rf=function t(e){function i(r){return new En(r,e)}return i.tension=function(r){return t(+r)},i}(0);function On(t,e){this._context=t,this._k=(1-e)/6}On.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Ki(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Pf=function t(e){function i(r){return new On(r,e)}return i.tension=function(r){return t(+r)},i}(0);function Mn(t,e){this._context=t,this._k=(1-e)/6}Mn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ki(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const qf=function t(e){function i(r){return new Mn(r,e)}return i.tension=function(r){return t(+r)},i}(0);function $n(t,e,i){var r=t._x1,n=t._y1,o=t._x2,s=t._y2;if(t._l01_a>Ro){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Ro){var h=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,u=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*h+t._x1*t._l23_2a-e*t._l12_2a)/u,s=(s*h+t._y1*t._l23_2a-i*t._l12_2a)/u}t._context.bezierCurveTo(r,n,o,s,t._x2,t._y2)}function da(t,e){this._context=t,this._alpha=e}da.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:$n(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const zf=function t(e){function i(r){return e?new da(r,e):new En(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function pa(t,e){this._context=t,this._alpha=e}pa.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:$n(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Wf=function t(e){function i(r){return e?new pa(r,e):new On(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function ga(t,e){this._context=t,this._alpha=e}ga.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var i=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:$n(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Hf=function t(e){function i(r){return e?new ga(r,e):new Mn(r,0)}return i.alpha=function(r){return t(+r)},i}(.5);function ma(t){this._context=t}ma.prototype={areaStart:re,areaEnd:re,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};function jf(t){return new ma(t)}function qo(t){return t<0?-1:1}function zo(t,e,i){var r=t._x1-t._x0,n=e-t._x1,o=(t._y1-t._y0)/(r||n<0&&-0),s=(i-t._y1)/(n||r<0&&-0),a=(o*n+s*r)/(r+n);return(qo(o)+qo(s))*Math.min(Math.abs(o),Math.abs(s),.5*Math.abs(a))||0}function Wo(t,e){var i=t._x1-t._x0;return i?(3*(t._y1-t._y0)/i-e)/2:e}function qr(t,e,i){var r=t._x0,n=t._y0,o=t._x1,s=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,n+a*e,o-a,s-a*i,o,s)}function Zi(t){this._context=t}Zi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:qr(this,this._t0,Wo(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var i=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,qr(this,Wo(this,i=zo(this,t,e)),i);break;default:qr(this,this._t0,i=zo(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=i}}};function _a(t){this._context=new ya(t)}(_a.prototype=Object.create(Zi.prototype)).point=function(t,e){Zi.prototype.point.call(this,e,t)};function ya(t){this._context=t}ya.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,i,r,n,o){this._context.bezierCurveTo(e,t,r,i,o,n)}};function Uf(t){return new Zi(t)}function Yf(t){return new _a(t)}function Ca(t){this._context=t}Ca.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,i=t.length;if(i)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),i===2)this._context.lineTo(t[1],e[1]);else for(var r=Ho(t),n=Ho(e),o=0,s=1;s=0;--e)n[e]=(s[e]-n[e+1])/o[e];for(o[i-1]=(t[i]+n[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var i=this._x*(1-this._t)+t*this._t;this._context.lineTo(i,this._y),this._context.lineTo(i,e)}break}}this._x=t,this._y=e}};function Gf(t){return new mr(t,.5)}function Xf(t){return new mr(t,0)}function Kf(t){return new mr(t,1)}function Xe(t,e,i){this.k=t,this.x=e,this.y=i}Xe.prototype={constructor:Xe,scale:function(t){return t===1?this:new Xe(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Xe(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};Xe.prototype;/*! @license DOMPurify 3.0.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.6/LICENSE */const{entries:xa,setPrototypeOf:jo,isFrozen:Zf,getPrototypeOf:Jf,getOwnPropertyDescriptor:ba}=Object;let{freeze:ut,seal:Bt,create:Ta}=Object,{apply:ln,construct:hn}=typeof Reflect<"u"&&Reflect;ut||(ut=function(e){return e});Bt||(Bt=function(e){return e});ln||(ln=function(e,i,r){return e.apply(i,r)});hn||(hn=function(e,i){return new e(...i)});const Si=bt(Array.prototype.forEach),Uo=bt(Array.prototype.pop),He=bt(Array.prototype.push),Ii=bt(String.prototype.toLowerCase),zr=bt(String.prototype.toString),Qf=bt(String.prototype.match),je=bt(String.prototype.replace),td=bt(String.prototype.indexOf),ed=bt(String.prototype.trim),_t=bt(RegExp.prototype.test),Ue=id(TypeError);function bt(t){return function(e){for(var i=arguments.length,r=new Array(i>1?i-1:0),n=1;n2&&arguments[2]!==void 0?arguments[2]:Ii;jo&&jo(t,null);let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){const o=i(n);o!==n&&(Zf(e)||(e[r]=o),n=o)}t[n]=!0}return t}function Se(t){const e=Ta(null);for(const[i,r]of xa(t))ba(t,i)!==void 0&&(e[i]=r);return e}function wi(t,e){for(;t!==null;){const r=ba(t,e);if(r){if(r.get)return bt(r.get);if(typeof r.value=="function")return bt(r.value)}t=Jf(t)}function i(r){return console.warn("fallback value for",r),null}return i}const Yo=ut(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),Wr=ut(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Hr=ut(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),rd=ut(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),jr=ut(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),nd=ut(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Vo=ut(["#text"]),Go=ut(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","xmlns","slot"]),Ur=ut(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Xo=ut(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Bi=ut(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),od=Bt(/\{\{[\w\W]*|[\w\W]*\}\}/gm),sd=Bt(/<%[\w\W]*|[\w\W]*%>/gm),ad=Bt(/\${[\w\W]*}/gm),ld=Bt(/^data-[\-\w.\u00B7-\uFFFF]/),hd=Bt(/^aria-[\-\w]+$/),va=Bt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),cd=Bt(/^(?:\w+script|data):/i),ud=Bt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ka=Bt(/^html$/i);var Ko=Object.freeze({__proto__:null,MUSTACHE_EXPR:od,ERB_EXPR:sd,TMPLIT_EXPR:ad,DATA_ATTR:ld,ARIA_ATTR:hd,IS_ALLOWED_URI:va,IS_SCRIPT_OR_DATA:cd,ATTR_WHITESPACE:ud,DOCTYPE_NAME:ka});const fd=function(){return typeof window>"u"?null:window},dd=function(e,i){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const n="data-tt-policy-suffix";i&&i.hasAttribute(n)&&(r=i.getAttribute(n));const o="dompurify"+(r?"#"+r:"");try{return e.createPolicy(o,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+o+" could not be created."),null}};function Sa(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:fd();const e=A=>Sa(A);if(e.version="3.0.6",e.removed=[],!t||!t.document||t.document.nodeType!==9)return e.isSupported=!1,e;let{document:i}=t;const r=i,n=r.currentScript,{DocumentFragment:o,HTMLTemplateElement:s,Node:a,Element:l,NodeFilter:h,NamedNodeMap:u=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:f,DOMParser:c,trustedTypes:d}=t,_=l.prototype,k=wi(_,"cloneNode"),S=wi(_,"nextSibling"),P=wi(_,"childNodes"),T=wi(_,"parentNode");if(typeof s=="function"){const A=i.createElement("template");A.content&&A.content.ownerDocument&&(i=A.content.ownerDocument)}let q,H="";const{implementation:Y,createNodeIterator:X,createDocumentFragment:W,getElementsByTagName:Xt}=i,{importNode:Kt}=r;let j={};e.isSupported=typeof xa=="function"&&typeof T=="function"&&Y&&Y.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:z,ERB_EXPR:vt,TMPLIT_EXPR:Zt,DATA_ATTR:M,ARIA_ATTR:v,IS_SCRIPT_OR_DATA:y,ATTR_WHITESPACE:B}=Ko;let{IS_ALLOWED_URI:x}=Ko,b=null;const D=R({},[...Yo,...Wr,...Hr,...jr,...Vo]);let I=null;const G=R({},[...Go,...Ur,...Xo,...Bi]);let N=Object.seal(Ta(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),K=null,it=null,Nt=!0,kt=!0,Jt=!1,Lt=!0,Z=!1,rt=!1,Rt=!1,Qt=!1,xe=!1,_i=!1,yi=!1,ro=!0,no=!1;const ih="user-content-";let Er=!0,qe=!1,be={},Te=null;const oo=R({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let so=null;const ao=R({},["audio","video","img","source","image","track"]);let Or=null;const lo=R({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Ci="http://www.w3.org/1998/Math/MathML",xi="http://www.w3.org/2000/svg",Pt="http://www.w3.org/1999/xhtml";let ve=Pt,Mr=!1,$r=null;const rh=R({},[Ci,xi,Pt],zr);let se=null;const nh=["application/xhtml+xml","text/html"],oh="text/html";let et=null,ke=null;const sh=i.createElement("form"),ho=function(p){return p instanceof RegExp||p instanceof Function},Ir=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ke&&ke===p)){if((!p||typeof p!="object")&&(p={}),p=Se(p),se=nh.indexOf(p.PARSER_MEDIA_TYPE)===-1?se=oh:se=p.PARSER_MEDIA_TYPE,et=se==="application/xhtml+xml"?zr:Ii,b="ALLOWED_TAGS"in p?R({},p.ALLOWED_TAGS,et):D,I="ALLOWED_ATTR"in p?R({},p.ALLOWED_ATTR,et):G,$r="ALLOWED_NAMESPACES"in p?R({},p.ALLOWED_NAMESPACES,zr):rh,Or="ADD_URI_SAFE_ATTR"in p?R(Se(lo),p.ADD_URI_SAFE_ATTR,et):lo,so="ADD_DATA_URI_TAGS"in p?R(Se(ao),p.ADD_DATA_URI_TAGS,et):ao,Te="FORBID_CONTENTS"in p?R({},p.FORBID_CONTENTS,et):oo,K="FORBID_TAGS"in p?R({},p.FORBID_TAGS,et):{},it="FORBID_ATTR"in p?R({},p.FORBID_ATTR,et):{},be="USE_PROFILES"in p?p.USE_PROFILES:!1,Nt=p.ALLOW_ARIA_ATTR!==!1,kt=p.ALLOW_DATA_ATTR!==!1,Jt=p.ALLOW_UNKNOWN_PROTOCOLS||!1,Lt=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Z=p.SAFE_FOR_TEMPLATES||!1,rt=p.WHOLE_DOCUMENT||!1,xe=p.RETURN_DOM||!1,_i=p.RETURN_DOM_FRAGMENT||!1,yi=p.RETURN_TRUSTED_TYPE||!1,Qt=p.FORCE_BODY||!1,ro=p.SANITIZE_DOM!==!1,no=p.SANITIZE_NAMED_PROPS||!1,Er=p.KEEP_CONTENT!==!1,qe=p.IN_PLACE||!1,x=p.ALLOWED_URI_REGEXP||va,ve=p.NAMESPACE||Pt,N=p.CUSTOM_ELEMENT_HANDLING||{},p.CUSTOM_ELEMENT_HANDLING&&ho(p.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(N.tagNameCheck=p.CUSTOM_ELEMENT_HANDLING.tagNameCheck),p.CUSTOM_ELEMENT_HANDLING&&ho(p.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(N.attributeNameCheck=p.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),p.CUSTOM_ELEMENT_HANDLING&&typeof p.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(N.allowCustomizedBuiltInElements=p.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Z&&(kt=!1),_i&&(xe=!0),be&&(b=R({},[...Vo]),I=[],be.html===!0&&(R(b,Yo),R(I,Go)),be.svg===!0&&(R(b,Wr),R(I,Ur),R(I,Bi)),be.svgFilters===!0&&(R(b,Hr),R(I,Ur),R(I,Bi)),be.mathMl===!0&&(R(b,jr),R(I,Xo),R(I,Bi))),p.ADD_TAGS&&(b===D&&(b=Se(b)),R(b,p.ADD_TAGS,et)),p.ADD_ATTR&&(I===G&&(I=Se(I)),R(I,p.ADD_ATTR,et)),p.ADD_URI_SAFE_ATTR&&R(Or,p.ADD_URI_SAFE_ATTR,et),p.FORBID_CONTENTS&&(Te===oo&&(Te=Se(Te)),R(Te,p.FORBID_CONTENTS,et)),Er&&(b["#text"]=!0),rt&&R(b,["html","head","body"]),b.table&&(R(b,["tbody"]),delete K.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ue('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ue('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');q=p.TRUSTED_TYPES_POLICY,H=q.createHTML("")}else q===void 0&&(q=dd(d,n)),q!==null&&typeof H=="string"&&(H=q.createHTML(""));ut&&ut(p),ke=p}},co=R({},["mi","mo","mn","ms","mtext"]),uo=R({},["foreignobject","desc","title","annotation-xml"]),ah=R({},["title","style","font","a","script"]),bi=R({},Wr);R(bi,Hr),R(bi,rd);const Dr=R({},jr);R(Dr,nd);const lh=function(p){let m=T(p);(!m||!m.tagName)&&(m={namespaceURI:ve,tagName:"template"});const w=Ii(p.tagName),U=Ii(m.tagName);return $r[p.namespaceURI]?p.namespaceURI===xi?m.namespaceURI===Pt?w==="svg":m.namespaceURI===Ci?w==="svg"&&(U==="annotation-xml"||co[U]):!!bi[w]:p.namespaceURI===Ci?m.namespaceURI===Pt?w==="math":m.namespaceURI===xi?w==="math"&&uo[U]:!!Dr[w]:p.namespaceURI===Pt?m.namespaceURI===xi&&!uo[U]||m.namespaceURI===Ci&&!co[U]?!1:!Dr[w]&&(ah[w]||!bi[w]):!!(se==="application/xhtml+xml"&&$r[p.namespaceURI]):!1},ae=function(p){He(e.removed,{element:p});try{p.parentNode.removeChild(p)}catch{p.remove()}},Nr=function(p,m){try{He(e.removed,{attribute:m.getAttributeNode(p),from:m})}catch{He(e.removed,{attribute:null,from:m})}if(m.removeAttribute(p),p==="is"&&!I[p])if(xe||_i)try{ae(m)}catch{}else try{m.setAttribute(p,"")}catch{}},fo=function(p){let m=null,w=null;if(Qt)p=""+p;else{const ot=Qf(p,/^[\r\n\t ]+/);w=ot&&ot[0]}se==="application/xhtml+xml"&&ve===Pt&&(p=''+p+"");const U=q?q.createHTML(p):p;if(ve===Pt)try{m=new c().parseFromString(U,se)}catch{}if(!m||!m.documentElement){m=Y.createDocument(ve,"template",null);try{m.documentElement.innerHTML=Mr?H:U}catch{}}const nt=m.body||m.documentElement;return p&&w&&nt.insertBefore(i.createTextNode(w),nt.childNodes[0]||null),ve===Pt?Xt.call(m,rt?"html":"body")[0]:rt?m.documentElement:nt},po=function(p){return X.call(p.ownerDocument||p,p,h.SHOW_ELEMENT|h.SHOW_COMMENT|h.SHOW_TEXT,null)},hh=function(p){return p instanceof f&&(typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||!(p.attributes instanceof u)||typeof p.removeAttribute!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function")},go=function(p){return typeof a=="function"&&p instanceof a},qt=function(p,m,w){j[p]&&Si(j[p],U=>{U.call(e,m,w,ke)})},mo=function(p){let m=null;if(qt("beforeSanitizeElements",p,null),hh(p))return ae(p),!0;const w=et(p.nodeName);if(qt("uponSanitizeElement",p,{tagName:w,allowedTags:b}),p.hasChildNodes()&&!go(p.firstElementChild)&&_t(/<[/\w]/g,p.innerHTML)&&_t(/<[/\w]/g,p.textContent))return ae(p),!0;if(!b[w]||K[w]){if(!K[w]&&yo(w)&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,w)||N.tagNameCheck instanceof Function&&N.tagNameCheck(w)))return!1;if(Er&&!Te[w]){const U=T(p)||p.parentNode,nt=P(p)||p.childNodes;if(nt&&U){const ot=nt.length;for(let ft=ot-1;ft>=0;--ft)U.insertBefore(k(nt[ft],!0),S(p))}}return ae(p),!0}return p instanceof l&&!lh(p)||(w==="noscript"||w==="noembed"||w==="noframes")&&_t(/<\/no(script|embed|frames)/i,p.innerHTML)?(ae(p),!0):(Z&&p.nodeType===3&&(m=p.textContent,Si([z,vt,Zt],U=>{m=je(m,U," ")}),p.textContent!==m&&(He(e.removed,{element:p.cloneNode()}),p.textContent=m)),qt("afterSanitizeElements",p,null),!1)},_o=function(p,m,w){if(ro&&(m==="id"||m==="name")&&(w in i||w in sh))return!1;if(!(kt&&!it[m]&&_t(M,m))){if(!(Nt&&_t(v,m))){if(!I[m]||it[m]){if(!(yo(p)&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,p)||N.tagNameCheck instanceof Function&&N.tagNameCheck(p))&&(N.attributeNameCheck instanceof RegExp&&_t(N.attributeNameCheck,m)||N.attributeNameCheck instanceof Function&&N.attributeNameCheck(m))||m==="is"&&N.allowCustomizedBuiltInElements&&(N.tagNameCheck instanceof RegExp&&_t(N.tagNameCheck,w)||N.tagNameCheck instanceof Function&&N.tagNameCheck(w))))return!1}else if(!Or[m]){if(!_t(x,je(w,B,""))){if(!((m==="src"||m==="xlink:href"||m==="href")&&p!=="script"&&td(w,"data:")===0&&so[p])){if(!(Jt&&!_t(y,je(w,B,"")))){if(w)return!1}}}}}}return!0},yo=function(p){return p.indexOf("-")>0},Co=function(p){qt("beforeSanitizeAttributes",p,null);const{attributes:m}=p;if(!m)return;const w={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:I};let U=m.length;for(;U--;){const nt=m[U],{name:ot,namespaceURI:ft,value:le}=nt,ze=et(ot);let dt=ot==="value"?le:ed(le);if(w.attrName=ze,w.attrValue=dt,w.keepAttr=!0,w.forceKeepAttr=void 0,qt("uponSanitizeAttribute",p,w),dt=w.attrValue,w.forceKeepAttr||(Nr(ot,p),!w.keepAttr))continue;if(!Lt&&_t(/\/>/i,dt)){Nr(ot,p);continue}Z&&Si([z,vt,Zt],bo=>{dt=je(dt,bo," ")});const xo=et(p.nodeName);if(_o(xo,ze,dt)){if(no&&(ze==="id"||ze==="name")&&(Nr(ot,p),dt=ih+dt),q&&typeof d=="object"&&typeof d.getAttributeType=="function"&&!ft)switch(d.getAttributeType(xo,ze)){case"TrustedHTML":{dt=q.createHTML(dt);break}case"TrustedScriptURL":{dt=q.createScriptURL(dt);break}}try{ft?p.setAttributeNS(ft,ot,dt):p.setAttribute(ot,dt),Uo(e.removed)}catch{}}}qt("afterSanitizeAttributes",p,null)},ch=function A(p){let m=null;const w=po(p);for(qt("beforeSanitizeShadowDOM",p,null);m=w.nextNode();)qt("uponSanitizeShadowNode",m,null),!mo(m)&&(m.content instanceof o&&A(m.content),Co(m));qt("afterSanitizeShadowDOM",p,null)};return e.sanitize=function(A){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},m=null,w=null,U=null,nt=null;if(Mr=!A,Mr&&(A=""),typeof A!="string"&&!go(A))if(typeof A.toString=="function"){if(A=A.toString(),typeof A!="string")throw Ue("dirty is not a string, aborting")}else throw Ue("toString is not a function");if(!e.isSupported)return A;if(Rt||Ir(p),e.removed=[],typeof A=="string"&&(qe=!1),qe){if(A.nodeName){const le=et(A.nodeName);if(!b[le]||K[le])throw Ue("root node is forbidden and cannot be sanitized in-place")}}else if(A instanceof a)m=fo(""),w=m.ownerDocument.importNode(A,!0),w.nodeType===1&&w.nodeName==="BODY"||w.nodeName==="HTML"?m=w:m.appendChild(w);else{if(!xe&&!Z&&!rt&&A.indexOf("<")===-1)return q&&yi?q.createHTML(A):A;if(m=fo(A),!m)return xe?null:yi?H:""}m&&Qt&&ae(m.firstChild);const ot=po(qe?A:m);for(;U=ot.nextNode();)mo(U)||(U.content instanceof o&&ch(U.content),Co(U));if(qe)return A;if(xe){if(_i)for(nt=W.call(m.ownerDocument);m.firstChild;)nt.appendChild(m.firstChild);else nt=m;return(I.shadowroot||I.shadowrootmode)&&(nt=Kt.call(r,nt,!0)),nt}let ft=rt?m.outerHTML:m.innerHTML;return rt&&b["!doctype"]&&m.ownerDocument&&m.ownerDocument.doctype&&m.ownerDocument.doctype.name&&_t(ka,m.ownerDocument.doctype.name)&&(ft=" +`+ft),Z&&Si([z,vt,Zt],le=>{ft=je(ft,le," ")}),q&&yi?q.createHTML(ft):ft},e.setConfig=function(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ir(A),Rt=!0},e.clearConfig=function(){ke=null,Rt=!1},e.isValidAttribute=function(A,p,m){ke||Ir({});const w=et(A),U=et(p);return _o(w,U,m)},e.addHook=function(A,p){typeof p=="function"&&(j[A]=j[A]||[],He(j[A],p))},e.removeHook=function(A){if(j[A])return Uo(j[A])},e.removeHooks=function(A){j[A]&&(j[A]=[])},e.removeAllHooks=function(){j={}},e}var Ji=Sa();const Di={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,i)=>(i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(e-t)*6*i:i<1/2?e:i<2/3?t+(e-t)*(2/3-i)*6:t),hsl2rgb:({h:t,s:e,l:i},r)=>{if(!e)return i*2.55;t/=360,e/=100,i/=100;const n=i<.5?i*(1+e):i+e-i*e,o=2*i-n;switch(r){case"r":return Di.hue2rgb(o,n,t+1/3)*255;case"g":return Di.hue2rgb(o,n,t)*255;case"b":return Di.hue2rgb(o,n,t-1/3)*255}},rgb2hsl:({r:t,g:e,b:i},r)=>{t/=255,e/=255,i/=255;const n=Math.max(t,e,i),o=Math.min(t,e,i),s=(n+o)/2;if(r==="l")return s*100;if(n===o)return 0;const a=n-o,l=s>.5?a/(2-n-o):a/(n+o);if(r==="s")return l*100;switch(n){case t:return((e-i)/a+(ee>i?Math.min(e,Math.max(i,t)):Math.min(i,Math.max(e,t)),round:t=>Math.round(t*1e10)/1e10},md=gd,_d={dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}},yd=_d,Cd={channel:pd,lang:md,unit:yd},$=Cd,te={};for(let t=0;t<=255;t++)te[t]=$.unit.dec2hex(t);const st={ALL:0,RGB:1,HSL:2};class xd{constructor(){this.type=st.ALL}get(){return this.type}set(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e}reset(){this.type=st.ALL}is(e){return this.type===e}}const bd=xd;class Td{constructor(e,i){this.color=i,this.changed=!1,this.data=e,this.type=new bd}set(e,i){return this.color=i,this.changed=!1,this.data=e,this.type.type=st.ALL,this}_ensureHSL(){const e=this.data,{h:i,s:r,l:n}=e;i===void 0&&(e.h=$.channel.rgb2hsl(e,"h")),r===void 0&&(e.s=$.channel.rgb2hsl(e,"s")),n===void 0&&(e.l=$.channel.rgb2hsl(e,"l"))}_ensureRGB(){const e=this.data,{r:i,g:r,b:n}=e;i===void 0&&(e.r=$.channel.hsl2rgb(e,"r")),r===void 0&&(e.g=$.channel.hsl2rgb(e,"g")),n===void 0&&(e.b=$.channel.hsl2rgb(e,"b"))}get r(){const e=this.data,i=e.r;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),$.channel.hsl2rgb(e,"r"))}get g(){const e=this.data,i=e.g;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),$.channel.hsl2rgb(e,"g"))}get b(){const e=this.data,i=e.b;return!this.type.is(st.HSL)&&i!==void 0?i:(this._ensureHSL(),$.channel.hsl2rgb(e,"b"))}get h(){const e=this.data,i=e.h;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),$.channel.rgb2hsl(e,"h"))}get s(){const e=this.data,i=e.s;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),$.channel.rgb2hsl(e,"s"))}get l(){const e=this.data,i=e.l;return!this.type.is(st.RGB)&&i!==void 0?i:(this._ensureRGB(),$.channel.rgb2hsl(e,"l"))}get a(){return this.data.a}set r(e){this.type.set(st.RGB),this.changed=!0,this.data.r=e}set g(e){this.type.set(st.RGB),this.changed=!0,this.data.g=e}set b(e){this.type.set(st.RGB),this.changed=!0,this.data.b=e}set h(e){this.type.set(st.HSL),this.changed=!0,this.data.h=e}set s(e){this.type.set(st.HSL),this.changed=!0,this.data.s=e}set l(e){this.type.set(st.HSL),this.changed=!0,this.data.l=e}set a(e){this.changed=!0,this.data.a=e}}const vd=Td,kd=new vd({r:0,g:0,b:0,a:0},"transparent"),_r=kd,wa={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(t.charCodeAt(0)!==35)return;const e=t.match(wa.re);if(!e)return;const i=e[1],r=parseInt(i,16),n=i.length,o=n%4===0,s=n>4,a=s?1:17,l=s?8:4,h=o?0:-1,u=s?255:15;return _r.set({r:(r>>l*(h+3)&u)*a,g:(r>>l*(h+2)&u)*a,b:(r>>l*(h+1)&u)*a,a:o?(r&u)*a/255:1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`#${te[Math.round(e)]}${te[Math.round(i)]}${te[Math.round(r)]}${te[Math.round(n*255)]}`:`#${te[Math.round(e)]}${te[Math.round(i)]}${te[Math.round(r)]}`}},Ke=wa,Ni={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(Ni.hueRe);if(e){const[,i,r]=e;switch(r){case"grad":return $.channel.clamp.h(parseFloat(i)*.9);case"rad":return $.channel.clamp.h(parseFloat(i)*180/Math.PI);case"turn":return $.channel.clamp.h(parseFloat(i)*360)}}return $.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(e!==104&&e!==72)return;const i=t.match(Ni.re);if(!i)return;const[,r,n,o,s,a]=i;return _r.set({h:Ni._hue2deg(r),s:$.channel.clamp.s(parseFloat(n)),l:$.channel.clamp.l(parseFloat(o)),a:s?$.channel.clamp.a(a?parseFloat(s)/100:parseFloat(s)):1},t)},stringify:t=>{const{h:e,s:i,l:r,a:n}=t;return n<1?`hsla(${$.lang.round(e)}, ${$.lang.round(i)}%, ${$.lang.round(r)}%, ${n})`:`hsl(${$.lang.round(e)}, ${$.lang.round(i)}%, ${$.lang.round(r)}%)`}},Ai=Ni,Ri={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=Ri.colors[t];if(e)return Ke.parse(e)},stringify:t=>{const e=Ke.stringify(t);for(const i in Ri.colors)if(Ri.colors[i]===e)return i}},Zo=Ri,Ba={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(e!==114&&e!==82)return;const i=t.match(Ba.re);if(!i)return;const[,r,n,o,s,a,l,h,u]=i;return _r.set({r:$.channel.clamp.r(n?parseFloat(r)*2.55:parseFloat(r)),g:$.channel.clamp.g(s?parseFloat(o)*2.55:parseFloat(o)),b:$.channel.clamp.b(l?parseFloat(a)*2.55:parseFloat(a)),a:h?$.channel.clamp.a(u?parseFloat(h)/100:parseFloat(h)):1},t)},stringify:t=>{const{r:e,g:i,b:r,a:n}=t;return n<1?`rgba(${$.lang.round(e)}, ${$.lang.round(i)}, ${$.lang.round(r)}, ${$.lang.round(n)})`:`rgb(${$.lang.round(e)}, ${$.lang.round(i)}, ${$.lang.round(r)})`}},Fi=Ba,Sd={format:{keyword:Zo,hex:Ke,rgb:Fi,rgba:Fi,hsl:Ai,hsla:Ai},parse:t=>{if(typeof t!="string")return t;const e=Ke.parse(t)||Fi.parse(t)||Ai.parse(t)||Zo.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(st.HSL)||t.data.r===void 0?Ai.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?Fi.stringify(t):Ke.stringify(t)},Mt=Sd,wd=(t,e)=>{const i=Mt.parse(t);for(const r in e)i[r]=$.channel.clamp[r](e[r]);return Mt.stringify(i)},Aa=wd,Bd=(t,e,i=0,r=1)=>{if(typeof t!="number")return Aa(t,{a:e});const n=_r.set({r:$.channel.clamp.r(t),g:$.channel.clamp.g(e),b:$.channel.clamp.b(i),a:$.channel.clamp.a(r)});return Mt.stringify(n)},Ze=Bd,Ad=t=>{const{r:e,g:i,b:r}=Mt.parse(t),n=.2126*$.channel.toLinear(e)+.7152*$.channel.toLinear(i)+.0722*$.channel.toLinear(r);return $.lang.round(n)},Fd=Ad,Ld=t=>Fd(t)>=.5,Ed=Ld,Od=t=>!Ed(t),pi=Od,Md=(t,e,i)=>{const r=Mt.parse(t),n=r[e],o=$.channel.clamp[e](n+i);return n!==o&&(r[e]=o),Mt.stringify(r)},Fa=Md,$d=(t,e)=>Fa(t,"l",e),F=$d,Id=(t,e)=>Fa(t,"l",-e),O=Id,Dd=(t,e)=>{const i=Mt.parse(t),r={};for(const n in e)e[n]&&(r[n]=i[n]+e[n]);return Aa(t,r)},g=Dd,Nd=(t,e,i=50)=>{const{r,g:n,b:o,a:s}=Mt.parse(t),{r:a,g:l,b:h,a:u}=Mt.parse(e),f=i/100,c=f*2-1,d=s-u,k=((c*d===-1?c:(c+d)/(1+c*d))+1)/2,S=1-k,P=r*k+a*S,T=n*k+l*S,q=o*k+h*S,H=s*f+u*(1-f);return Ze(P,T,q,H)},Rd=Nd,Pd=(t,e=100)=>{const i=Mt.parse(t);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,Rd(i,t,e)},C=Pd;var qd=typeof global=="object"&&global&&global.Object===Object&&global;const La=qd;var zd=typeof self=="object"&&self&&self.Object===Object&&self,Wd=La||zd||Function("return this")();const Dt=Wd;var Hd=Dt.Symbol;const Qi=Hd;var Ea=Object.prototype,jd=Ea.hasOwnProperty,Ud=Ea.toString,Ye=Qi?Qi.toStringTag:void 0;function Yd(t){var e=jd.call(t,Ye),i=t[Ye];try{t[Ye]=void 0;var r=!0}catch{}var n=Ud.call(t);return r&&(e?t[Ye]=i:delete t[Ye]),n}var Vd=Object.prototype,Gd=Vd.toString;function Xd(t){return Gd.call(t)}var Kd="[object Null]",Zd="[object Undefined]",Jo=Qi?Qi.toStringTag:void 0;function Ne(t){return t==null?t===void 0?Zd:Kd:Jo&&Jo in Object(t)?Yd(t):Xd(t)}function _e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var Jd="[object AsyncFunction]",Qd="[object Function]",tp="[object GeneratorFunction]",ep="[object Proxy]";function In(t){if(!_e(t))return!1;var e=Ne(t);return e==Qd||e==tp||e==Jd||e==ep}var ip=Dt["__core-js_shared__"];const Yr=ip;var Qo=function(){var t=/[^.]+$/.exec(Yr&&Yr.keys&&Yr.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function rp(t){return!!Qo&&Qo in t}var np=Function.prototype,op=np.toString;function ye(t){if(t!=null){try{return op.call(t)}catch{}try{return t+""}catch{}}return""}var sp=/[\\^$.*+?()[\]{}|]/g,ap=/^\[object .+?Constructor\]$/,lp=Function.prototype,hp=Object.prototype,cp=lp.toString,up=hp.hasOwnProperty,fp=RegExp("^"+cp.call(up).replace(sp,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function dp(t){if(!_e(t)||rp(t))return!1;var e=In(t)?fp:ap;return e.test(ye(t))}function pp(t,e){return t==null?void 0:t[e]}function Ce(t,e){var i=pp(t,e);return dp(i)?i:void 0}var gp=Ce(Object,"create");const si=gp;function mp(){this.__data__=si?si(null):{},this.size=0}function _p(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var yp="__lodash_hash_undefined__",Cp=Object.prototype,xp=Cp.hasOwnProperty;function bp(t){var e=this.__data__;if(si){var i=e[t];return i===yp?void 0:i}return xp.call(e,t)?e[t]:void 0}var Tp=Object.prototype,vp=Tp.hasOwnProperty;function kp(t){var e=this.__data__;return si?e[t]!==void 0:vp.call(e,t)}var Sp="__lodash_hash_undefined__";function wp(t,e){var i=this.__data__;return this.size+=this.has(t)?0:1,i[t]=si&&e===void 0?Sp:e,this}function ge(t){var e=-1,i=t==null?0:t.length;for(this.clear();++e-1}function Mp(t,e){var i=this.__data__,r=Cr(i,t);return r<0?(++this.size,i.push([t,e])):i[r][1]=e,this}function Gt(t){var e=-1,i=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t<=pg}function Tr(t){return t!=null&&Da(t.length)&&!In(t)}function gg(t){return mi(t)&&Tr(t)}function mg(){return!1}var Na=typeof exports=="object"&&exports&&!exports.nodeType&&exports,ss=Na&&typeof module=="object"&&module&&!module.nodeType&&module,_g=ss&&ss.exports===Na,as=_g?Dt.Buffer:void 0,yg=as?as.isBuffer:void 0,Cg=yg||mg;const Nn=Cg;var xg="[object Object]",bg=Function.prototype,Tg=Object.prototype,Ra=bg.toString,vg=Tg.hasOwnProperty,kg=Ra.call(Object);function Sg(t){if(!mi(t)||Ne(t)!=xg)return!1;var e=$a(t);if(e===null)return!0;var i=vg.call(e,"constructor")&&e.constructor;return typeof i=="function"&&i instanceof i&&Ra.call(i)==kg}var wg="[object Arguments]",Bg="[object Array]",Ag="[object Boolean]",Fg="[object Date]",Lg="[object Error]",Eg="[object Function]",Og="[object Map]",Mg="[object Number]",$g="[object Object]",Ig="[object RegExp]",Dg="[object Set]",Ng="[object String]",Rg="[object WeakMap]",Pg="[object ArrayBuffer]",qg="[object DataView]",zg="[object Float32Array]",Wg="[object Float64Array]",Hg="[object Int8Array]",jg="[object Int16Array]",Ug="[object Int32Array]",Yg="[object Uint8Array]",Vg="[object Uint8ClampedArray]",Gg="[object Uint16Array]",Xg="[object Uint32Array]",V={};V[zg]=V[Wg]=V[Hg]=V[jg]=V[Ug]=V[Yg]=V[Vg]=V[Gg]=V[Xg]=!0;V[wg]=V[Bg]=V[Pg]=V[Ag]=V[qg]=V[Fg]=V[Lg]=V[Eg]=V[Og]=V[Mg]=V[$g]=V[Ig]=V[Dg]=V[Ng]=V[Rg]=!1;function Kg(t){return mi(t)&&Da(t.length)&&!!V[Ne(t)]}function Zg(t){return function(e){return t(e)}}var Pa=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Je=Pa&&typeof module=="object"&&module&&!module.nodeType&&module,Jg=Je&&Je.exports===Pa,Vr=Jg&&La.process,Qg=function(){try{var t=Je&&Je.require&&Je.require("util").types;return t||Vr&&Vr.binding&&Vr.binding("util")}catch{}}();const ls=Qg;var hs=ls&&ls.isTypedArray,tm=hs?Zg(hs):Kg;const Rn=tm;function un(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var em=Object.prototype,im=em.hasOwnProperty;function rm(t,e,i){var r=t[e];(!(im.call(t,e)&&yr(r,i))||i===void 0&&!(e in t))&&Dn(t,e,i)}function nm(t,e,i,r){var n=!i;i||(i={});for(var o=-1,s=e.length;++o-1&&t%1==0&&t0){if(++e>=Tm)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var wm=Sm(bm);const Bm=wm;function Am(t,e){return Bm(ym(t,e,Ha),t+"")}function Fm(t,e,i){if(!_e(i))return!1;var r=typeof e;return(r=="number"?Tr(i)&&qa(e,i.length):r=="string"&&e in i)?yr(i[e],t):!1}function Lm(t){return Am(function(e,i){var r=-1,n=i.length,o=n>1?i[n-1]:void 0,s=n>2?i[2]:void 0;for(o=t.length>3&&typeof o=="function"?(n--,o):void 0,s&&Fm(i[0],i[1],s)&&(o=n<3?void 0:o,n=1),e=Object(e);++r0?li(Pe,--Tt):0,Oe--,Q===10&&(Oe=1,vr--),Q}function wt(){return Q=Tt2||fn(Q)>3?"":" "}function jm(t,e){for(;--e&&wt()&&!(Q<48||Q>102||Q>57&&Q<65||Q>70&&Q<97););return kr(t,qi()+(e<6&&fe()==32&&wt()==32))}function dn(t){for(;wt();)switch(Q){case t:return Tt;case 34:case 39:t!==34&&t!==39&&dn(Q);break;case 40:t===41&&dn(t);break;case 92:wt();break}return Tt}function Um(t,e){for(;wt()&&t+Q!==57;)if(t+Q===84&&fe()===47)break;return"/*"+kr(e,Tt-1)+"*"+Pn(t===47?t:wt())}function Ym(t){for(;!fn(fe());)wt();return kr(t,Tt)}function Vm(t){return Wm(zi("",null,null,null,[""],t=zm(t),0,[0],t))}function zi(t,e,i,r,n,o,s,a,l){for(var h=0,u=0,f=s,c=0,d=0,_=0,k=1,S=1,P=1,T=0,q="",H=n,Y=o,X=r,W=q;S;)switch(_=T,T=wt()){case 40:if(_!=108&&li(W,f-1)==58){Nm(W+=Pi(Gr(T),"&","&\f"),"&\f")!=-1&&(P=-1);break}case 34:case 39:case 91:W+=Gr(T);break;case 9:case 10:case 13:case 32:W+=Hm(_);break;case 92:W+=jm(qi()-1,7);continue;case 47:switch(fe()){case 42:case 47:Li(Gm(Um(wt(),qi()),e,i,l),l);break;default:W+="/"}break;case 123*k:a[h++]=jt(W)*P;case 125*k:case 59:case 0:switch(T){case 0:case 125:S=0;case 59+u:P==-1&&(W=Pi(W,/\f/g,"")),d>0&&jt(W)-f&&Li(d>32?fs(W+";",r,i,f-1,l):fs(Pi(W," ","")+";",r,i,f-2,l),l);break;case 59:W+=";";default:if(Li(X=us(W,e,i,h,u,n,a,q,H=[],Y=[],f,o),o),T===123)if(u===0)zi(W,e,X,X,H,o,f,a,Y);else switch(c===99&&li(W,3)===110?100:c){case 100:case 108:case 109:case 115:zi(t,X,X,r&&Li(us(t,X,X,0,0,n,a,q,n,H=[],f,Y),Y),n,Y,f,a,r?H:Y);break;default:zi(W,X,X,X,[""],Y,0,a,Y)}}h=u=d=0,k=P=1,q=W="",f=s;break;case 58:f=1+jt(W),d=_;default:if(k<1){if(T==123)--k;else if(T==125&&k++==0&&qm()==125)continue}switch(W+=Pn(T),T*k){case 38:P=u>0?1:(W+="\f",-1);break;case 44:a[h++]=(jt(W)-1)*P,P=1;break;case 64:fe()===45&&(W+=Gr(wt())),c=fe(),u=f=jt(q=W+=Ym(qi())),T++;break;case 45:_===45&&jt(W)==2&&(k=0)}}return o}function us(t,e,i,r,n,o,s,a,l,h,u,f){for(var c=n-1,d=n===0?o:[""],_=Rm(d),k=0,S=0,P=0;k0?d[T]+" "+q:Pi(q,/&\f/g,d[T])))&&(l[P++]=H);return qn(t,e,i,n===0?Ua:a,l,h,u,f)}function Gm(t,e,i,r){return qn(t,e,i,ja,Pn(Pm()),hi(t,2,-2),0,r)}function fs(t,e,i,r,n){return qn(t,e,i,Ya,hi(t,0,r),hi(t,r+1,-1),r,n)}function pn(t,e){for(var i="",r=0;r{},debug:(...t)=>{},info:(...t)=>{},warn:(...t)=>{},error:(...t)=>{},fatal:(...t)=>{}},zn=function(t="fatal"){let e=Wt.fatal;typeof t=="string"?(t=t.toLowerCase(),t in Wt&&(e=Wt[t])):typeof t=="number"&&(e=t),E.trace=()=>{},E.debug=()=>{},E.info=()=>{},E.warn=()=>{},E.error=()=>{},E.fatal=()=>{},e<=Wt.fatal&&(E.fatal=console.error?console.error.bind(console,Ct("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Ct("FATAL"))),e<=Wt.error&&(E.error=console.error?console.error.bind(console,Ct("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Ct("ERROR"))),e<=Wt.warn&&(E.warn=console.warn?console.warn.bind(console,Ct("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Ct("WARN"))),e<=Wt.info&&(E.info=console.info?console.info.bind(console,Ct("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Ct("INFO"))),e<=Wt.debug&&(E.debug=console.debug?console.debug.bind(console,Ct("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Ct("DEBUG"))),e<=Wt.trace&&(E.trace=console.debug?console.debug.bind(console,Ct("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Ct("TRACE")))},Ct=t=>`%c${gh().format("ss.SSS")} : ${t} : `,Sr=//gi,m0=t=>t?Ka(t).replace(/\\n/g,"#br#").split("#br#"):[""],Xa=t=>Ji.sanitize(t),ys=(t,e)=>{var i;if(((i=e.flowchart)==null?void 0:i.htmlLabels)!==!1){const r=e.securityLevel;r==="antiscript"||r==="strict"?t=Xa(t):r!=="loose"&&(t=Ka(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=x0(t))}return t},ci=(t,e)=>t&&(e.dompurifyConfig?t=Ji.sanitize(ys(t,e),e.dompurifyConfig).toString():t=Ji.sanitize(ys(t,e),{FORBID_TAGS:["style"]}).toString(),t),_0=(t,e)=>typeof t=="string"?ci(t,e):t.flat().map(i=>ci(i,e)),y0=t=>Sr.test(t),C0=t=>t.split(Sr),x0=t=>t.replace(/#br#/g,"
    "),Ka=t=>t.replace(Sr,"#br#"),b0=t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},Za=t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),T0=function(...t){const e=t.filter(i=>!isNaN(i));return Math.max(...e)},v0=function(...t){const e=t.filter(i=>!isNaN(i));return Math.min(...e)},a1=function(t){const e=t.split(/(,)/),i=[];for(let r=0;r0&&r+1Math.max(0,t.split(e).length-1),k0=(t,e)=>{const i=Cn(t,"~"),r=Cn(e,"~");return i===1&&r===1},S0=t=>{const e=Cn(t,"~");let i=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),i=!0);const r=[...t];let n=r.indexOf("~"),o=r.lastIndexOf("~");for(;n!==-1&&o!==-1&&n!==o;)r[n]="<",r[o]=">",n=r.indexOf("~"),o=r.lastIndexOf("~");return i&&r.unshift("~"),r.join("")},Wn={getRows:m0,sanitizeText:ci,sanitizeTextOrArray:_0,hasBreaks:y0,splitBreaks:C0,lineBreakRegex:Sr,removeScript:Xa,getUrl:b0,evaluate:Za,getMax:T0,getMin:v0},ct=(t,e)=>e?g(t,{s:-40,l:10}):g(t,{s:-40,l:-10}),wr="#ffffff",Br="#f2f2f2";let w0=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||g(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||g(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||ct(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||ct(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||C(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||C(this.tertiaryColor),this.lineColor=this.lineColor||C(this.background),this.arrowheadColor=this.arrowheadColor||C(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?O(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||O(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||C(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||F(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.darkMode)for(let d=0;d{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const B0=t=>{const e=new w0;return e.calculate(t),e};let A0=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=F(this.primaryColor,16),this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=C(this.background),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=F(C("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=Ze(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=O("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=O(this.sectionBkgColor,10),this.taskBorderColor=Ze(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ze(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.secondBkg=F(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=F(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=F(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=g(this.primaryColor,{h:64}),this.fillType3=g(this.secondaryColor,{h:64}),this.fillType4=g(this.primaryColor,{h:-64}),this.fillType5=g(this.secondaryColor,{h:-64}),this.fillType6=g(this.primaryColor,{h:128}),this.fillType7=g(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330});for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const F0=t=>{const e=new A0;return e.calculate(t),e};let L0=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=g(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=Ze(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||O(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||O(this.tertiaryColor,40);for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const E0=t=>{const e=new L0;return e.calculate(t),e};let O0=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=F("#cde498",10),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.primaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.actorBorder=O(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||g(this.primaryColor,{h:30}),this.cScale4=this.cScale4||g(this.primaryColor,{h:60}),this.cScale5=this.cScale5||g(this.primaryColor,{h:90}),this.cScale6=this.cScale6||g(this.primaryColor,{h:120}),this.cScale7=this.cScale7||g(this.primaryColor,{h:150}),this.cScale8=this.cScale8||g(this.primaryColor,{h:210}),this.cScale9=this.cScale9||g(this.primaryColor,{h:270}),this.cScale10=this.cScale10||g(this.primaryColor,{h:300}),this.cScale11=this.cScale11||g(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||O(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||O(this.tertiaryColor,40);for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}};const M0=t=>{const e=new O0;return e.calculate(t),e};class $0{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=F(this.contrast,55),this.background="#ffffff",this.tertiaryColor=g(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.primaryColor,this.darkMode),this.secondaryBorderColor=ct(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=ct(this.tertiaryColor,this.darkMode),this.primaryTextColor=C(this.primaryColor),this.secondaryTextColor=C(this.secondaryColor),this.tertiaryTextColor=C(this.tertiaryColor),this.lineColor=C(this.background),this.textColor=C(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var e,i,r,n,o,s,a,l,h,u,f;this.secondBkg=F(this.contrast,55),this.border2=this.contrast,this.actorBorder=F(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let c=0;c{this[r]=e[r]}),this.updateColors(),i.forEach(r=>{this[r]=e[r]})}}const I0=t=>{const e=new $0;return e.calculate(t),e},Yt={base:{getThemeVariables:B0},dark:{getThemeVariables:F0},default:{getThemeVariables:E0},forest:{getThemeVariables:M0},neutral:{getThemeVariables:I0}},Ht={flowchart:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},theme:"default",maxTextSize:5e4,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,fontSize:16},Ja={...Ht,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:Yt.default.getThemeVariables(),sequence:{...Ht.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Ht.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Ht.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Ht.pie,useWidth:984},xyChart:{...Ht.xyChart,useWidth:void 0},requirement:{...Ht.requirement,useWidth:void 0},gitGraph:{...Ht.gitGraph,useMaxWidth:!1},sankey:{...Ht.sankey,useMaxWidth:!1}},Qa=(t,e="")=>Object.keys(t).reduce((i,r)=>Array.isArray(t[r])?i:typeof t[r]=="object"&&t[r]!==null?[...i,e+r,...Qa(t[r],"")]:[...i,e+r],[]),D0=new Set(Qa(Ja,"")),N0=Ja,rr=t=>{if(E.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>rr(e));return}for(const e of Object.keys(t)){if(E.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!D0.has(e)||t[e]==null){E.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){E.debug("sanitizing object",e),rr(t[e]);continue}const i=["themeCSS","fontFamily","altFontFamily"];for(const r of i)e.includes(r)&&(E.debug("sanitizing css option",e),t[e]=R0(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const i=t.themeVariables[e];i!=null&&i.match&&!i.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}E.debug("After sanitization",t)}},R0=t=>{let e=0,i=0;for(const r of t){if(e{for(const{id:e,detector:i,loader:r}of t)rl(e,i,r)},rl=(t,e,i)=>{Me[t]?E.error(`Detector with key ${t} already exists`):Me[t]={detector:e,loader:i},E.debug(`Detector with key ${t} added${i?" with loader":""}`)},q0=t=>Me[t].loader,xn=(t,e,{depth:i=2,clobber:r=!1}={})=>{const n={depth:i,clobber:r};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(o=>xn(t,o,n)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(o=>{t.includes(o)||t.push(o)}),t):t===void 0||i<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(o=>{typeof e[o]=="object"&&(t[o]===void 0||typeof t[o]=="object")?(t[o]===void 0&&(t[o]=Array.isArray(e[o])?[]:{}),t[o]=xn(t[o],e[o],{depth:i-1,clobber:r})):(r||typeof t[o]!="object"&&typeof e[o]!="object")&&(t[o]=e[o])}),t)},at=xn,z0="​",W0={curveBasis:$f,curveBasisClosed:If,curveBasisOpen:Df,curveBumpX:Of,curveBumpY:Mf,curveBundle:Nf,curveCardinalClosed:Pf,curveCardinalOpen:qf,curveCardinal:Rf,curveCatmullRomClosed:Wf,curveCatmullRomOpen:Hf,curveCatmullRom:zf,curveLinear:Ef,curveLinearClosed:jf,curveMonotoneX:Uf,curveMonotoneY:Yf,curveNatural:Vf,curveStep:Gf,curveStepAfter:Kf,curveStepBefore:Xf},H0=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,j0=function(t,e){const i=nl(t,/(?:init\b)|(?:initialize\b)/);let r={};if(Array.isArray(i)){const s=i.map(a=>a.args);rr(s),r=at(r,[...s])}else r=i.args;if(!r)return;let n=Ar(t,e);const o="config";return r[o]!==void 0&&(n==="flowchart-v2"&&(n="flowchart"),r[n]=r[o],delete r[o]),r},nl=function(t,e=null){try{const i=new RegExp(`[%]{2}(?![{]${H0.source})(?=[}][%]{2}).* +`,"ig");t=t.trim().replace(i,"").replace(/'/gm,'"'),E.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let r;const n=[];for(;(r=Qe.exec(t))!==null;)if(r.index===Qe.lastIndex&&Qe.lastIndex++,r&&!e||e&&r[1]&&r[1].match(e)||e&&r[2]&&r[2].match(e)){const o=r[1]?r[1]:r[2],s=r[3]?r[3].trim():r[4]?JSON.parse(r[4].trim()):null;n.push({type:o,args:s})}return n.length===0?{type:t,args:null}:n.length===1?n[0]:n}catch(i){return E.error(`ERROR: ${i.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},U0=function(t){return t.replace(Qe,"")},Y0=function(t,e){for(const[i,r]of e.entries())if(r.match(t))return i;return-1};function V0(t,e){if(!t)return e;const i=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return W0[i]??e}function G0(t,e){const i=t.trim();if(i)return e.securityLevel!=="loose"?Is.sanitizeUrl(i):i}const X0=(t,...e)=>{const i=t.split("."),r=i.length-1,n=i[r];let o=window;for(let s=0;s{i+=ol(n,e),e=n});const r=i/2;return Hn(t,r)}function Z0(t){return t.length===1?t[0]:K0(t)}const Cs=(t,e=2)=>{const i=Math.pow(10,e);return Math.round(t*i)/i},Hn=(t,e)=>{let i,r=e;for(const n of t){if(i){const o=ol(n,i);if(o=1)return{x:n.x,y:n.y};if(s>0&&s<1)return{x:Cs((1-s)*i.x+s*n.x,5),y:Cs((1-s)*i.y+s*n.y,5)}}}i=n}throw new Error("Could not find a suitable point for the given distance")},J0=(t,e,i)=>{E.info(`our points ${JSON.stringify(e)}`),e[0]!==i&&(e=e.reverse());const n=Hn(e,25),o=t?10:5,s=Math.atan2(e[0].y-n.y,e[0].x-n.x),a={x:0,y:0};return a.x=Math.sin(s)*o+(e[0].x+n.x)/2,a.y=-Math.cos(s)*o+(e[0].y+n.y)/2,a};function Q0(t,e,i){const r=structuredClone(i);E.info("our points",r),e!=="start_left"&&e!=="start_right"&&r.reverse();const n=25+t,o=Hn(r,n),s=10+t*.5,a=Math.atan2(r[0].y-o.y,r[0].x-o.x),l={x:0,y:0};return e==="start_left"?(l.x=Math.sin(a+Math.PI)*s+(r[0].x+o.x)/2,l.y=-Math.cos(a+Math.PI)*s+(r[0].y+o.y)/2):e==="end_right"?(l.x=Math.sin(a-Math.PI)*s+(r[0].x+o.x)/2-5,l.y=-Math.cos(a-Math.PI)*s+(r[0].y+o.y)/2-5):e==="end_left"?(l.x=Math.sin(a)*s+(r[0].x+o.x)/2-5,l.y=-Math.cos(a)*s+(r[0].y+o.y)/2-5):(l.x=Math.sin(a)*s+(r[0].x+o.x)/2,l.y=-Math.cos(a)*s+(r[0].y+o.y)/2),l}function t_(t){let e="",i="";for(const r of t)r!==void 0&&(r.startsWith("color:")||r.startsWith("text-align:")?i=i+r+";":e=e+r+";");return{style:e,labelStyle:i}}let xs=0;const e_=()=>(xs++,"id-"+Math.random().toString(36).substr(2,12)+"-"+xs);function i_(t){let e="";const i="0123456789abcdef",r=i.length;for(let n=0;ni_(t.length),n_=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},o_=function(t,e){const i=e.text.replace(Wn.lineBreakRegex," "),[,r]=Un(e.fontSize),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.style("text-anchor",e.anchor),n.style("font-family",e.fontFamily),n.style("font-size",r),n.style("font-weight",e.fontWeight),n.attr("fill",e.fill),e.class!==void 0&&n.attr("class",e.class);const o=n.append("tspan");return o.attr("x",e.x+e.textMargin*2),o.attr("fill",e.fill),o.text(i),n},s_=gi((t,e,i)=>{if(!t||(i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},i),Wn.lineBreakRegex.test(t)))return t;const r=t.split(" "),n=[];let o="";return r.forEach((s,a)=>{const l=nr(`${s} `,i),h=nr(o,i);if(l>e){const{hyphenatedStrings:c,remainingWord:d}=a_(s,e,"-",i);n.push(o,...c),o=d}else h+l>=e?(n.push(o),o=s):o=[o,s].filter(Boolean).join(" ");a+1===r.length&&n.push(o)}),n.filter(s=>s!=="").join(i.joinWith)},(t,e,i)=>`${t}${e}${i.fontSize}${i.fontWeight}${i.fontFamily}${i.joinWith}`),a_=gi((t,e,i="-",r)=>{r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},r);const n=[...t],o=[];let s="";return n.forEach((a,l)=>{const h=`${s}${a}`;if(nr(h,r)>=e){const f=l+1,c=n.length===f,d=`${h}${i}`;o.push(c?h:d),s=""}else s=h}),{hyphenatedStrings:o,remainingWord:s}},(t,e,i="-",r)=>`${t}${e}${i}${r.fontSize}${r.fontWeight}${r.fontFamily}`);function l_(t,e){return jn(t,e).height}function nr(t,e){return jn(t,e).width}const jn=gi((t,e)=>{const{fontSize:i=12,fontFamily:r="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};const[,o]=Un(i),s=["sans-serif",r],a=t.split(Wn.lineBreakRegex),l=[],h=xt("body");if(!h.remove)return{width:0,height:0,lineHeight:0};const u=h.append("svg");for(const c of s){let d=0;const _={width:0,height:0,lineHeight:0};for(const k of a){const S=n_();S.text=k||z0;const P=o_(u,S).style("font-size",o).style("font-weight",n).style("font-family",c),T=(P._groups||P)[0][0].getBBox();if(T.width===0&&T.height===0)throw new Error("svg element not in render tree");_.width=Math.round(Math.max(_.width,T.width)),d=Math.round(T.height),_.height+=d,_.lineHeight=Math.round(Math.max(_.lineHeight,d))}l.push(_)}u.remove();const f=isNaN(l[1].height)||isNaN(l[1].width)||isNaN(l[1].lineHeight)||l[0].height>l[1].height&&l[0].width>l[1].width&&l[0].lineHeight>l[1].lineHeight?0:1;return l[f]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`);class h_{constructor(e=!1,i){this.count=0,this.count=i?i.length:0,this.next=e?()=>this.count++:()=>Date.now()}}let Ei;const c_=function(t){return Ei=Ei||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),Ei.innerHTML=t,unescape(Ei.textContent)};function sl(t){return"str"in t}const u_=(t,e,i,r)=>{var n;if(!r)return;const o=(n=t.node())==null?void 0:n.getBBox();o&&t.append("text").text(r).attr("x",o.x+o.width/2).attr("y",-i).attr("class",e)},Un=t=>{if(typeof t=="number")return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]};function al(t,e){return Om({},t,e)}const ti={assignWithDepth:at,wrapLabel:s_,calculateTextHeight:l_,calculateTextWidth:nr,calculateTextDimensions:jn,cleanAndMerge:al,detectInit:j0,detectDirective:nl,isSubstringInArray:Y0,interpolateToCurve:V0,calcLabelPosition:Z0,calcCardinalityPosition:J0,calcTerminalLabelPosition:Q0,formatUrl:G0,getStylesFromArray:t_,generateId:e_,random:r_,runFunc:X0,entityDecode:c_,insertTitle:u_,parseFontSize:Un,InitIDGenerator:h_},bs="10.6.1",$e=Object.freeze(N0);let pt=at({},$e),ll,Ie=[],ei=at({},$e);const Fr=(t,e)=>{let i=at({},t),r={};for(const n of e)ul(n),r=at(r,n);if(i=at(i,r),r.theme&&r.theme in Yt){const n=at({},ll),o=at(n.themeVariables||{},r.themeVariables);i.theme&&i.theme in Yt&&(i.themeVariables=Yt[i.theme].getThemeVariables(o))}return ei=i,fl(ei),ei},f_=t=>(pt=at({},$e),pt=at(pt,t),t.theme&&Yt[t.theme]&&(pt.themeVariables=Yt[t.theme].getThemeVariables(t.themeVariables)),Fr(pt,Ie),pt),d_=t=>{ll=at({},t)},p_=t=>(pt=at(pt,t),Fr(pt,Ie),pt),hl=()=>at({},pt),cl=t=>(fl(t),at(ei,t),$t()),$t=()=>at({},ei),ul=t=>{t&&(["secure",...pt.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(E.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&ul(t[e])}))},g_=t=>{rr(t),t.fontFamily&&(!t.themeVariables||!t.themeVariables.fontFamily)&&(t.themeVariables={fontFamily:t.fontFamily}),Ie.push(t),Fr(pt,Ie)},or=(t=pt)=>{Ie=[],Fr(t,Ie)},m_={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},Ts={},__=t=>{Ts[t]||(E.warn(m_[t]),Ts[t]=!0)},fl=t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&__("LAZY_LOAD_DEPRECATED")},dl="c4",y_=t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),C_=async()=>{const{diagram:t}=await J(()=>import("./c4Diagram-817c8e44-29Yrr6MH.js"),__vite__mapDeps([0,1,2]));return{id:dl,diagram:t}},x_={id:dl,detector:y_,loader:C_},b_=x_,pl="flowchart",T_=(t,e)=>{var i,r;return((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="dagre-wrapper"||((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)},v_=async()=>{const{diagram:t}=await J(()=>import("./flowDiagram-61eb444c-2NEM-51B.js"),__vite__mapDeps([3,4,5,6,7,8,9,10,11,12,2]));return{id:pl,diagram:t}},k_={id:pl,detector:T_,loader:v_},S_=k_,gl="flowchart-v2",w_=(t,e)=>{var i,r,n;return((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="dagre-d3"||((r=e==null?void 0:e.flowchart)==null?void 0:r.defaultRenderer)==="elk"?!1:/^\s*graph/.test(t)&&((n=e==null?void 0:e.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)},B_=async()=>{const{diagram:t}=await J(()=>import("./flowDiagram-v2-2f8f667a-UhW5F7df.js"),__vite__mapDeps([13,4,6,5,7,8,9,10,11,12,2]));return{id:gl,diagram:t}},A_={id:gl,detector:w_,loader:B_},F_=A_,ml="er",L_=t=>/^\s*erDiagram/.test(t),E_=async()=>{const{diagram:t}=await J(()=>import("./erDiagram-9cfc3649-3ZBYicXe.js"),__vite__mapDeps([14,5,10,11,12,2]));return{id:ml,diagram:t}},O_={id:ml,detector:L_,loader:E_},M_=O_,_l="gitGraph",$_=t=>/^\s*gitGraph/.test(t),I_=async()=>{const{diagram:t}=await J(()=>import("./gitGraphDiagram-6b463803-RA0QPUu6.js"),__vite__mapDeps([15,2]));return{id:_l,diagram:t}},D_={id:_l,detector:$_,loader:I_},N_=D_,yl="gantt",R_=t=>/^\s*gantt/.test(t),P_=async()=>{const{diagram:t}=await J(()=>import("./ganttDiagram-db6931fb-mbEUIYH7.js"),__vite__mapDeps([16,17,18,2]));return{id:yl,diagram:t}},q_={id:yl,detector:R_,loader:P_},z_=q_,Cl="info",W_=t=>/^\s*info/.test(t),H_=async()=>{const{diagram:t}=await J(()=>import("./infoDiagram-a336098b-VevFHQI9.js"),__vite__mapDeps([19,2]));return{id:Cl,diagram:t}},j_={id:Cl,detector:W_,loader:H_},xl="pie",U_=t=>/^\s*pie/.test(t),Y_=async()=>{const{diagram:t}=await J(()=>import("./pieDiagram-a5166659-2XSen1e3.js"),__vite__mapDeps([20,21,12,22,18,11,2]));return{id:xl,diagram:t}},V_={id:xl,detector:U_,loader:Y_},bl="quadrantChart",G_=t=>/^\s*quadrantChart/.test(t),X_=async()=>{const{diagram:t}=await J(()=>import("./quadrantDiagram-6c355bbc-xTobTGzq.js"),__vite__mapDeps([23,17,18,2]));return{id:bl,diagram:t}},K_={id:bl,detector:G_,loader:X_},Z_=K_,Tl="xychart",J_=t=>/^\s*xychart-beta/.test(t),Q_=async()=>{const{diagram:t}=await J(()=>import("./xychartDiagram-f746c04c--eu2k7RD.js"),__vite__mapDeps([24,9,18,22,17,10,11,12,2]));return{id:Tl,diagram:t}},ty={id:Tl,detector:J_,loader:Q_},ey=ty,vl="requirement",iy=t=>/^\s*requirement(Diagram)?/.test(t),ry=async()=>{const{diagram:t}=await J(()=>import("./requirementDiagram-4038b16c-mGjwDA8r.js"),__vite__mapDeps([25,5,10,11,12,2]));return{id:vl,diagram:t}},ny={id:vl,detector:iy,loader:ry},oy=ny,kl="sequence",sy=t=>/^\s*sequenceDiagram/.test(t),ay=async()=>{const{diagram:t}=await J(()=>import("./sequenceDiagram-465a088a-GfS2Rm3U.js"),__vite__mapDeps([26,1,2]));return{id:kl,diagram:t}},ly={id:kl,detector:sy,loader:ay},hy=ly,Sl="class",cy=(t,e)=>{var i;return((i=e==null?void 0:e.class)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t)},uy=async()=>{const{diagram:t}=await J(()=>import("./classDiagram-48ab76fb-jXeM6zOd.js"),__vite__mapDeps([27,28,5,10,11,12,2]));return{id:Sl,diagram:t}},fy={id:Sl,detector:cy,loader:uy},dy=fy,wl="classDiagram",py=(t,e)=>{var i;return/^\s*classDiagram/.test(t)&&((i=e==null?void 0:e.class)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t)},gy=async()=>{const{diagram:t}=await J(()=>import("./classDiagram-v2-8ecb0bfc-rRpGDOX7.js"),__vite__mapDeps([29,28,5,7,8,9,10,11,12,2]));return{id:wl,diagram:t}},my={id:wl,detector:py,loader:gy},_y=my,Bl="state",yy=(t,e)=>{var i;return((i=e==null?void 0:e.state)==null?void 0:i.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t)},Cy=async()=>{const{diagram:t}=await J(()=>import("./stateDiagram-b620d43f-jx860Lys.js"),__vite__mapDeps([30,31,5,10,11,12,2]));return{id:Bl,diagram:t}},xy={id:Bl,detector:yy,loader:Cy},by=xy,Al="stateDiagram",Ty=(t,e)=>{var i;return!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&((i=e==null?void 0:e.state)==null?void 0:i.defaultRenderer)==="dagre-wrapper")},vy=async()=>{const{diagram:t}=await J(()=>import("./stateDiagram-v2-2671c3d1-zzr1Lxf7.js"),__vite__mapDeps([32,31,5,7,8,9,10,11,12,2]));return{id:Al,diagram:t}},ky={id:Al,detector:Ty,loader:vy},Sy=ky,Fl="journey",wy=t=>/^\s*journey/.test(t),By=async()=>{const{diagram:t}=await J(()=>import("./journeyDiagram-deae3313-BJNTUAGR.js"),__vite__mapDeps([33,1,21,12,2]));return{id:Fl,diagram:t}},Ay={id:Fl,detector:wy,loader:By},Fy=Ay,Ly=function(t,e){for(let i of e)t.attr(i[0],i[1])},Ey=function(t,e,i){let r=new Map;return i?(r.set("width","100%"),r.set("style",`max-width: ${e}px;`)):(r.set("height",t),r.set("width",e)),r},Ll=function(t,e,i,r){const n=Ey(e,i,r);Ly(t,n)},Oy=function(t,e,i,r){const n=e.node().getBBox(),o=n.width,s=n.height;E.info(`SVG bounds: ${o}x${s}`,n);let a=0,l=0;E.info(`Graph bounds: ${a}x${l}`,t),a=o+i*2,l=s+i*2,E.info(`Calculated bounds: ${a}x${l}`),Ll(e,l,a,r);const h=`${n.x-i} ${n.y-i} ${n.width+2*i} ${n.height+2*i}`;e.attr("viewBox",h)},Wi={},My=(t,e,i)=>{let r="";return t in Wi&&Wi[t]?r=Wi[t](i):E.warn(`No theme found for ${t}`),` & { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + fill: ${i.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${i.errorBkgColor}; + } + & .error-text { + fill: ${i.errorTextColor}; + stroke: ${i.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + } + & .marker.cross { + stroke: ${i.lineColor}; + } + + & svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + ${r} + + ${e} +`},$y=(t,e)=>{e!==void 0&&(Wi[t]=e)},Iy=My;let Yn="",Vn="",Gn="";const Xn=t=>ci(t,$t()),Dy=()=>{Yn="",Gn="",Vn=""},Ny=t=>{Yn=Xn(t).replace(/^\s+/g,"")},Ry=()=>Yn,Py=t=>{Gn=Xn(t).replace(/\n\s+/g,` +`)},qy=()=>Gn,zy=t=>{Vn=Xn(t)},Wy=()=>Vn,Hy=Object.freeze(Object.defineProperty({__proto__:null,clear:Dy,getAccDescription:qy,getAccTitle:Ry,getDiagramTitle:Wy,setAccDescription:Py,setAccTitle:Ny,setDiagramTitle:zy},Symbol.toStringTag,{value:"Module"})),jy=E,Uy=zn,Kn=$t,f1=cl,d1=$e,Yy=t=>ci(t,Kn()),Vy=Oy,Gy=()=>Hy,sr={},ar=(t,e,i)=>{var r;if(sr[t])throw new Error(`Diagram ${t} already registered.`);sr[t]=e,i&&rl(t,i),$y(t,e.styles),(r=e.injectUtils)==null||r.call(e,jy,Uy,Kn,Yy,Vy,Gy(),()=>{})},Zn=t=>{if(t in sr)return sr[t];throw new Xy(t)};class Xy extends Error{constructor(e){super(`Diagram ${e} not found.`)}}const Ky=t=>{var e;const{securityLevel:i}=Kn();let r=xt("body");if(i==="sandbox"){const s=((e=xt(`#i${t}`).node())==null?void 0:e.contentDocument)??document;r=xt(s.body)}return r.select(`#${t}`)},Zy=(t,e,i)=>{E.debug(`renering svg for syntax error +`);const r=Ky(e);r.attr("viewBox","0 0 2412 512"),Ll(r,100,512,!0);const n=r.append("g");n.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),n.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),n.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),n.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),n.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),n.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),n.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),n.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${i}`)},El={draw:Zy},Jy=El,Qy={db:{},renderer:El,parser:{parser:{yy:{}},parse:()=>{}}},tC=Qy,Ol="flowchart-elk",eC=(t,e)=>{var i;return!!(/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&((i=e==null?void 0:e.flowchart)==null?void 0:i.defaultRenderer)==="elk")},iC=async()=>{const{diagram:t}=await J(()=>import("./flowchart-elk-definition-e097735e-YWVs5gv6.js"),__vite__mapDeps([34,4,8,9,10,11,12,2]));return{id:Ol,diagram:t}},rC={id:Ol,detector:eC,loader:iC},nC=rC,Ml="timeline",oC=t=>/^\s*timeline/.test(t),sC=async()=>{const{diagram:t}=await J(()=>import("./timeline-definition-732a2638-yn6rf3PF.js"),__vite__mapDeps([35,21,12,2]));return{id:Ml,diagram:t}},aC={id:Ml,detector:oC,loader:sC},lC=aC,$l="mindmap",hC=t=>/^\s*mindmap/.test(t),cC=async()=>{const{diagram:t}=await J(()=>import("./mindmap-definition-617cf8dd-MC_O53Pu.js"),__vite__mapDeps([36,9,2]));return{id:$l,diagram:t}},uC={id:$l,detector:hC,loader:cC},fC=uC,Il="sankey",dC=t=>/^\s*sankey-beta/.test(t),pC=async()=>{const{diagram:t}=await J(()=>import("./sankeyDiagram-6db3d513-cSwmFunR.js"),__vite__mapDeps([37,22,18,2]));return{id:Il,diagram:t}},gC={id:Il,detector:dC,loader:pC},mC=gC;let vs=!1;const Jn=()=>{vs||(vs=!0,ar("error",tC,t=>t.toLowerCase().trim()==="error"),ar("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},t=>t.toLowerCase().trimStart().startsWith("---")),il(b_,_y,dy,M_,z_,j_,V_,oy,hy,nC,F_,S_,fC,lC,N_,Sy,by,Fy,Z_,mC,ey))};class Dl{constructor(e,i={}){this.text=e,this.metadata=i,this.type="graph",this.text+=` +`;const r=$t();try{this.type=Ar(e,r)}catch(o){this.type="error",this.detectError=o}const n=Zn(this.type);E.debug("Type "+this.type),this.db=n.db,this.renderer=n.renderer,this.parser=n.parser,this.parser.parser.yy=this.db,this.init=n.init,this.parse()}parse(){var e,i,r,n,o;if(this.detectError)throw this.detectError;(i=(e=this.db).clear)==null||i.call(e);const s=$t();(r=this.init)==null||r.call(this,s),this.metadata.title&&((o=(n=this.db).setDiagramTitle)==null||o.call(n,this.metadata.title)),this.parser.parse(this.text)}async render(e,i){await this.renderer.draw(this.text,e,i,this)}getParser(){return this.parser}getType(){return this.type}}const Qn=async(t,e={})=>{const i=Ar(t,$t());try{Zn(i)}catch{const n=q0(i);if(!n)throw new el(`Diagram ${i} not found.`);const{id:o,diagram:s}=await n();ar(o,s)}return new Dl(t,e)};let bn=[];const p1=t=>{bn.push(t)},_C=()=>{bn.forEach(t=>{t()}),bn=[]},yC="graphics-document document";function CC(t,e){t.attr("role",yC),e!==""&&t.attr("aria-roledescription",e)}function xC(t,e,i,r){if(t.insert!==void 0){if(i){const n=`chart-desc-${r}`;t.attr("aria-describedby",n),t.insert("desc",":first-child").attr("id",n).text(i)}if(e){const n=`chart-title-${r}`;t.attr("aria-labelledby",n),t.insert("title",":first-child").attr("id",n).text(e)}}}const bC=t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function Nl(t){return typeof t>"u"||t===null}function TC(t){return typeof t=="object"&&t!==null}function vC(t){return Array.isArray(t)?t:Nl(t)?[]:[t]}function kC(t,e){var i,r,n,o;if(e)for(o=Object.keys(e),i=0,r=o.length;ia&&(o=" ... ",e=r-a+o.length),i-r>a&&(s=" ...",i=r+a-s.length),{str:o+t.slice(e,i).replace(/\t/g,"→")+s,pos:r-e+o.length}}function Zr(t,e){return ht.repeat(" ",e-t.length)+t}function MC(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var i=/\r?\n|\r|\0/g,r=[0],n=[],o,s=-1;o=i.exec(t.buffer);)n.push(o.index),r.push(o.index+o[0].length),t.position<=o.index&&s<0&&(s=r.length-2);s<0&&(s=r.length-1);var a="",l,h,u=Math.min(t.line+e.linesAfter,n.length).toString().length,f=e.maxLength-(e.indent+u+3);for(l=1;l<=e.linesBefore&&!(s-l<0);l++)h=Kr(t.buffer,r[s-l],n[s-l],t.position-(r[s]-r[s-l]),f),a=ht.repeat(" ",e.indent)+Zr((t.line-l+1).toString(),u)+" | "+h.str+` +`+a;for(h=Kr(t.buffer,r[s],n[s],t.position,f),a+=ht.repeat(" ",e.indent)+Zr((t.line+1).toString(),u)+" | "+h.str+` +`,a+=ht.repeat("-",e.indent+u+3+h.pos)+`^ +`,l=1;l<=e.linesAfter&&!(s+l>=n.length);l++)h=Kr(t.buffer,r[s+l],n[s+l],t.position-(r[s]-r[s+l]),f),a+=ht.repeat(" ",e.indent)+Zr((t.line+l+1).toString(),u)+" | "+h.str+` +`;return a.replace(/\n$/,"")}var $C=MC,IC=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],DC=["scalar","sequence","mapping"];function NC(t){var e={};return t!==null&&Object.keys(t).forEach(function(i){t[i].forEach(function(r){e[String(r)]=i})}),e}function RC(t,e){if(e=e||{},Object.keys(e).forEach(function(i){if(IC.indexOf(i)===-1)throw new Ut('Unknown option "'+i+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(i){return i},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=NC(e.styleAliases||null),DC.indexOf(this.kind)===-1)throw new Ut('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}var lt=RC;function ks(t,e){var i=[];return t[e].forEach(function(r){var n=i.length;i.forEach(function(o,s){o.tag===r.tag&&o.kind===r.kind&&o.multi===r.multi&&(n=s)}),i[n]=r}),i}function PC(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,i;function r(n){n.multi?(t.multi[n.kind].push(n),t.multi.fallback.push(n)):t[n.kind][n.tag]=t.fallback[n.tag]=n}for(e=0,i=arguments.length;e=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),sx=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function ax(t){return!(t===null||!sx.test(t)||t[t.length-1]==="_")}function lx(t){var e,i;return e=t.replace(/_/g,"").toLowerCase(),i=e[0]==="-"?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?i===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:i*parseFloat(e,10)}var hx=/^[-+]?[0-9]+e/;function cx(t,e){var i;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(ht.isNegativeZero(t))return"-0.0";return i=t.toString(10),hx.test(i)?i.replace("e",".e"):i}function ux(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||ht.isNegativeZero(t))}var fx=new lt("tag:yaml.org,2002:float",{kind:"scalar",resolve:ax,construct:lx,predicate:ux,represent:cx,defaultStyle:"lowercase"}),Pl=jC.extend({implicit:[GC,JC,ox,fx]}),dx=Pl,ql=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),zl=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function px(t){return t===null?!1:ql.exec(t)!==null||zl.exec(t)!==null}function gx(t){var e,i,r,n,o,s,a,l=0,h=null,u,f,c;if(e=ql.exec(t),e===null&&(e=zl.exec(t)),e===null)throw new Error("Date resolve error");if(i=+e[1],r=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(i,r,n));if(o=+e[4],s=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],f=+(e[11]||0),h=(u*60+f)*6e4,e[9]==="-"&&(h=-h)),c=new Date(Date.UTC(i,r,n,o,s,a,l)),h&&c.setTime(c.getTime()-h),c}function mx(t){return t.toISOString()}var _x=new lt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:px,construct:gx,instanceOf:Date,represent:mx});function yx(t){return t==="<<"||t===null}var Cx=new lt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:yx}),to=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function xx(t){if(t===null)return!1;var e,i,r=0,n=t.length,o=to;for(i=0;i64)){if(e<0)return!1;r+=6}return r%8===0}function bx(t){var e,i,r=t.replace(/[\r\n=]/g,""),n=r.length,o=to,s=0,a=[];for(e=0;e>16&255),a.push(s>>8&255),a.push(s&255)),s=s<<6|o.indexOf(r.charAt(e));return i=n%4*6,i===0?(a.push(s>>16&255),a.push(s>>8&255),a.push(s&255)):i===18?(a.push(s>>10&255),a.push(s>>2&255)):i===12&&a.push(s>>4&255),new Uint8Array(a)}function Tx(t){var e="",i=0,r,n,o=t.length,s=to;for(r=0;r>18&63],e+=s[i>>12&63],e+=s[i>>6&63],e+=s[i&63]),i=(i<<8)+t[r];return n=o%3,n===0?(e+=s[i>>18&63],e+=s[i>>12&63],e+=s[i>>6&63],e+=s[i&63]):n===2?(e+=s[i>>10&63],e+=s[i>>4&63],e+=s[i<<2&63],e+=s[64]):n===1&&(e+=s[i>>2&63],e+=s[i<<4&63],e+=s[64],e+=s[64]),e}function vx(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}var kx=new lt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:xx,construct:bx,predicate:vx,represent:Tx}),Sx=Object.prototype.hasOwnProperty,wx=Object.prototype.toString;function Bx(t){if(t===null)return!0;var e=[],i,r,n,o,s,a=t;for(i=0,r=a.length;i>10)+55296,(t-65536&1023)+56320)}var Yl=new Array(256),Vl=new Array(256);for(var we=0;we<256;we++)Yl[we]=Bs(we)?1:0,Vl[we]=Bs(we);function Vx(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Rx,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Gl(t,e){var i={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return i.snippet=$C(i),new Ut(e,i)}function L(t,e){throw Gl(t,e)}function cr(t,e){t.onWarning&&t.onWarning.call(null,Gl(t,e))}var As={YAML:function(e,i,r){var n,o,s;e.version!==null&&L(e,"duplication of %YAML directive"),r.length!==1&&L(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(r[0]),n===null&&L(e,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),s=parseInt(n[2],10),o!==1&&L(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&cr(e,"unsupported YAML version of the document")},TAG:function(e,i,r){var n,o;r.length!==2&&L(e,"TAG directive accepts exactly two arguments"),n=r[0],o=r[1],jl.test(n)||L(e,"ill-formed tag handle (first argument) of the TAG directive"),ne.call(e.tagMap,n)&&L(e,'there is a previously declared suffix for "'+n+'" tag handle'),Ul.test(o)||L(e,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch{L(e,"tag prefix is malformed: "+o)}e.tagMap[n]=o}};function ie(t,e,i,r){var n,o,s,a;if(e1&&(t.result+=ht.repeat(` +`,e-1))}function Gx(t,e,i){var r,n,o,s,a,l,h,u,f=t.kind,c=t.result,d;if(d=t.input.charCodeAt(t.position),mt(d)||Be(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96||(d===63||d===45)&&(n=t.input.charCodeAt(t.position+1),mt(n)||i&&Be(n)))return!1;for(t.kind="scalar",t.result="",o=s=t.position,a=!1;d!==0;){if(d===58){if(n=t.input.charCodeAt(t.position+1),mt(n)||i&&Be(n))break}else if(d===35){if(r=t.input.charCodeAt(t.position-1),mt(r))break}else{if(t.position===t.lineStart&&Lr(t)||i&&Be(d))break;if(Ot(d))if(l=t.line,h=t.lineStart,u=t.lineIndent,tt(t,!1,-1),t.lineIndent>=e){a=!0,d=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=l,t.lineStart=h,t.lineIndent=u;break}}a&&(ie(t,o,s,!1),io(t,t.line-l),o=s=t.position,a=!1),de(d)||(s=t.position+1),d=t.input.charCodeAt(++t.position)}return ie(t,o,s,!1),t.result?!0:(t.kind=f,t.result=c,!1)}function Xx(t,e){var i,r,n;if(i=t.input.charCodeAt(t.position),i!==39)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(i=t.input.charCodeAt(t.position))!==0;)if(i===39)if(ie(t,r,t.position,!0),i=t.input.charCodeAt(++t.position),i===39)r=t.position,t.position++,n=t.position;else return!0;else Ot(i)?(ie(t,r,n,!0),io(t,tt(t,!1,e)),r=n=t.position):t.position===t.lineStart&&Lr(t)?L(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);L(t,"unexpected end of the stream within a single quoted scalar")}function Kx(t,e){var i,r,n,o,s,a;if(a=t.input.charCodeAt(t.position),a!==34)return!1;for(t.kind="scalar",t.result="",t.position++,i=r=t.position;(a=t.input.charCodeAt(t.position))!==0;){if(a===34)return ie(t,i,t.position,!0),t.position++,!0;if(a===92){if(ie(t,i,t.position,!0),a=t.input.charCodeAt(++t.position),Ot(a))tt(t,!1,e);else if(a<256&&Yl[a])t.result+=Vl[a],t.position++;else if((s=jx(a))>0){for(n=s,o=0;n>0;n--)a=t.input.charCodeAt(++t.position),(s=Hx(a))>=0?o=(o<<4)+s:L(t,"expected hexadecimal character");t.result+=Yx(o),t.position++}else L(t,"unknown escape sequence");i=r=t.position}else Ot(a)?(ie(t,i,r,!0),io(t,tt(t,!1,e)),i=r=t.position):t.position===t.lineStart&&Lr(t)?L(t,"unexpected end of the document within a double quoted scalar"):(t.position++,r=t.position)}L(t,"unexpected end of the stream within a double quoted scalar")}function Zx(t,e){var i=!0,r,n,o,s=t.tag,a,l=t.anchor,h,u,f,c,d,_=Object.create(null),k,S,P,T;if(T=t.input.charCodeAt(t.position),T===91)u=93,d=!1,a=[];else if(T===123)u=125,d=!0,a={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=a),T=t.input.charCodeAt(++t.position);T!==0;){if(tt(t,!0,e),T=t.input.charCodeAt(t.position),T===u)return t.position++,t.tag=s,t.anchor=l,t.kind=d?"mapping":"sequence",t.result=a,!0;i?T===44&&L(t,"expected the node content, but found ','"):L(t,"missed comma between flow collection entries"),S=k=P=null,f=c=!1,T===63&&(h=t.input.charCodeAt(t.position+1),mt(h)&&(f=c=!0,t.position++,tt(t,!0,e))),r=t.line,n=t.lineStart,o=t.position,De(t,e,lr,!1,!0),S=t.tag,k=t.result,tt(t,!0,e),T=t.input.charCodeAt(t.position),(c||t.line===r)&&T===58&&(f=!0,T=t.input.charCodeAt(++t.position),tt(t,!0,e),De(t,e,lr,!1,!0),P=t.result),d?Ae(t,a,_,S,k,P,r,n,o):f?a.push(Ae(t,null,_,S,k,P,r,n,o)):a.push(k),tt(t,!0,e),T=t.input.charCodeAt(t.position),T===44?(i=!0,T=t.input.charCodeAt(++t.position)):i=!1}L(t,"unexpected end of the stream within a flow collection")}function Jx(t,e){var i,r,n=Jr,o=!1,s=!1,a=e,l=0,h=!1,u,f;if(f=t.input.charCodeAt(t.position),f===124)r=!1;else if(f===62)r=!0;else return!1;for(t.kind="scalar",t.result="";f!==0;)if(f=t.input.charCodeAt(++t.position),f===43||f===45)Jr===n?n=f===43?Ss:Px:L(t,"repeat of a chomping mode identifier");else if((u=Ux(f))>=0)u===0?L(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?L(t,"repeat of an indentation width identifier"):(a=e+u-1,s=!0);else break;if(de(f)){do f=t.input.charCodeAt(++t.position);while(de(f));if(f===35)do f=t.input.charCodeAt(++t.position);while(!Ot(f)&&f!==0)}for(;f!==0;){for(eo(t),t.lineIndent=0,f=t.input.charCodeAt(t.position);(!s||t.lineIndenta&&(a=t.lineIndent),Ot(f)){l++;continue}if(t.lineIndente)&&l!==0)L(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(S&&(s=t.line,a=t.lineStart,l=t.position),De(t,e,hr,!0,n)&&(S?_=t.result:k=t.result),S||(Ae(t,f,c,d,_,k,s,a,l),d=_=k=null),tt(t,!0,-1),T=t.input.charCodeAt(t.position)),(t.line===o||t.lineIndent>e)&&T!==0)L(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),f=0,c=t.implicitTypes.length;f"),t.result!==null&&_.kind!==t.kind&&L(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+_.kind+'", not "'+t.kind+'"'),_.resolve(t.result,t.tag)?(t.result=_.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):L(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||u}function rb(t){var e=t.position,i,r,n,o=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(tt(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(o=!0,s=t.input.charCodeAt(++t.position),i=t.position;s!==0&&!mt(s);)s=t.input.charCodeAt(++t.position);for(r=t.input.slice(i,t.position),n=[],r.length<1&&L(t,"directive name must not be less than one character in length");s!==0;){for(;de(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!Ot(s));break}if(Ot(s))break;for(i=t.position;s!==0&&!mt(s);)s=t.input.charCodeAt(++t.position);n.push(t.input.slice(i,t.position))}s!==0&&eo(t),ne.call(As,r)?As[r](t,r,n):cr(t,'unknown document directive "'+r+'"')}if(tt(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,tt(t,!0,-1)):o&&L(t,"directives end mark is expected"),De(t,t.lineIndent-1,hr,!1,!0),tt(t,!0,-1),t.checkLineBreaks&&zx.test(t.input.slice(e,t.position))&&cr(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Lr(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,tt(t,!0,-1));return}if(t.position"u"&&(i=e,e=null);var r=Xl(t,i);if(typeof e!="function")return r;for(var n=0,o=r.length;nt.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(e,i,r)=>"<"+i+r.replace(/="([^"]*)"/g,"='$1'")+">"),db=t=>{const{text:e,metadata:i}=ub(t),{displayMode:r,title:n,config:o={}}=i;return r&&(o.gantt||(o.gantt={}),o.gantt.displayMode=r),{title:n,config:o,text:e}},pb=t=>{const e=ti.detectInit(t)??{},i=ti.detectDirective(t,"wrap");return Array.isArray(i)?e.wrap=i.some(({type:r})=>{}):(i==null?void 0:i.type)==="wrap"&&(e.wrap=!0),{text:U0(t),directive:e}};function gb(t){const e=fb(t),i=db(e),r=pb(i.text),n=al(i.config,r.directive);return t=bC(r.text),{code:t,title:i.title,config:n}}const mb=5e4,_b="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",yb="sandbox",Cb="loose",xb="http://www.w3.org/2000/svg",bb="http://www.w3.org/1999/xlink",Tb="http://www.w3.org/1999/xhtml",vb="100%",kb="100%",Sb="border:0;margin:0;",wb="margin:0",Bb="allow-top-navigation-by-user-activation allow-popups",Ab='The "iframe" tag is not supported by your browser.',Fb=["foreignobject"],Lb=["dominant-baseline"];function Kl(t){const e=gb(t);return or(),g_(e.config??{}),e}async function Eb(t,e){Jn(),t=Kl(t).code;try{await Qn(t)}catch(i){if(e!=null&&e.suppressErrors)return!1;throw i}return!0}const Ob=function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(i){return i.substring(0,i.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(i){return i.substring(0,i.length-1)}),e=e.replace(/#\w+;/g,function(i){const r=i.substring(1,i.length-1);return/^\+?\d+$/.test(r)?"fl°°"+r+"¶ß":"fl°"+r+"¶ß"}),e},Mb=function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},Es=(t,e,i=[])=>` +.${t} ${e} { ${i.join(" !important; ")} !important; }`,$b=(t,e={})=>{var i;let r="";if(t.themeCSS!==void 0&&(r+=` +${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` +:root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` +:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),!Xr(e)){const a=t.htmlLabels||((i=t.flowchart)==null?void 0:i.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const l in e){const h=e[l];Xr(h.styles)||a.forEach(u=>{r+=Es(h.id,u,h.styles)}),Xr(h.textStyles)||(r+=Es(h.id,"tspan",h.textStyles))}}return r},Ib=(t,e,i,r)=>{const n=$b(t,i),o=Iy(e,n,t.themeVariables);return pn(Vm(`${r}{${o}}`),Xm)},Db=(t="",e,i)=>{let r=t;return!i&&!e&&(r=r.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),r=Mb(r),r=r.replace(/
    /g,"
    "),r},Nb=(t="",e)=>{var i,r;const n=(r=(i=e==null?void 0:e.viewBox)==null?void 0:i.baseVal)!=null&&r.height?e.viewBox.baseVal.height+"px":kb,o=btoa(''+t+"");return``},Os=(t,e,i,r,n)=>{const o=t.append("div");o.attr("id",i),r&&o.attr("style",r);const s=o.append("svg").attr("id",e).attr("width","100%").attr("xmlns",xb);return n&&s.attr("xmlns:xlink",n),s.append("g"),t};function Ms(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const Rb=(t,e,i,r)=>{var n,o,s;(n=t.getElementById(e))==null||n.remove(),(o=t.getElementById(i))==null||o.remove(),(s=t.getElementById(r))==null||s.remove()},Pb=async function(t,e,i){var r,n,o,s,a,l;Jn();const h=Kl(e);e=h.code;const u=$t();E.debug(u),e.length>((u==null?void 0:u.maxTextSize)??mb)&&(e=_b);const f="#"+t,c="i"+t,d="#"+c,_="d"+t,k="#"+_;let S=xt("body");const P=u.securityLevel===yb,T=u.securityLevel===Cb,q=u.fontFamily;if(i!==void 0){if(i&&(i.innerHTML=""),P){const b=Ms(xt(i),c);S=xt(b.nodes()[0].contentDocument.body),S.node().style.margin=0}else S=xt(i);Os(S,t,_,`font-family: ${q}`,bb)}else{if(Rb(document,t,_,c),P){const b=Ms(xt("body"),c);S=xt(b.nodes()[0].contentDocument.body),S.node().style.margin=0}else S=xt("body");Os(S,t,_)}e=Ob(e);let H,Y;try{H=await Qn(e,{title:h.title})}catch(b){H=new Dl("error"),Y=b}const X=S.select(k).node(),W=H.type,Xt=X.firstChild,Kt=Xt.firstChild,j=(n=(r=H.renderer).getClasses)==null?void 0:n.call(r,e,H),z=Ib(u,W,j,f),vt=document.createElement("style");vt.innerHTML=z,Xt.insertBefore(vt,Kt);try{await H.renderer.draw(e,t,bs,H)}catch(b){throw Jy.draw(e,t,bs),b}const Zt=S.select(`${k} svg`),M=(s=(o=H.db).getAccTitle)==null?void 0:s.call(o),v=(l=(a=H.db).getAccDescription)==null?void 0:l.call(a);zb(W,Zt,M,v),S.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",Tb);let y=S.select(k).node().innerHTML;if(E.debug("config.arrowMarkerAbsolute",u.arrowMarkerAbsolute),y=Db(y,P,Za(u.arrowMarkerAbsolute)),P){const b=S.select(k+" svg").node();y=Nb(y,b)}else T||(y=Ji.sanitize(y,{ADD_TAGS:Fb,ADD_ATTR:Lb}));if(_C(),Y)throw Y;const x=xt(P?d:k).node();return x&&"remove"in x&&x.remove(),{svg:y,bindFunctions:H.db.bindFunctions}};function qb(t={}){var e;t!=null&&t.fontFamily&&!((e=t.themeVariables)!=null&&e.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),d_(t),t!=null&&t.theme&&t.theme in Yt?t.themeVariables=Yt[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=Yt.default.getThemeVariables(t.themeVariables));const i=typeof t=="object"?f_(t):hl();zn(i.logLevel),Jn()}function zb(t,e,i,r){CC(e,t),xC(e,i,r,e.attr("id"))}const me=Object.freeze({render:Pb,parse:Eb,getDiagramFromText:Qn,initialize:qb,getConfig:$t,setConfig:cl,getSiteConfig:hl,updateSiteConfig:p_,reset:()=>{or()},globalReset:()=>{or($e)},defaultConfig:$e});zn($t().logLevel);or($t());const Wb=async()=>{E.debug("Loading registered diagrams");const e=(await Promise.allSettled(Object.entries(Me).map(async([i,{detector:r,loader:n}])=>{if(n)try{Zn(i)}catch{try{const{diagram:s,id:a}=await n();ar(a,s,r)}catch(s){throw E.error(`Failed to load external diagram with key ${i}. Removing from detectors.`),delete Me[i],s}}}))).filter(i=>i.status==="rejected");if(e.length>0){E.error(`Failed to load ${e.length} external diagrams`);for(const i of e)E.error(i);throw new Error(`Failed to load ${e.length} external diagrams`)}},Hb=(t,e,i)=>{E.warn(t),sl(t)?(i&&i(t.str,t.hash),e.push({...t,message:t.str,error:t})):(i&&i(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},Zl=async function(t={querySelector:".mermaid"}){try{await jb(t)}catch(e){if(sl(e)&&E.error(e.str),At.parseError&&At.parseError(e),!t.suppressErrors)throw E.error("Use the suppressErrors option to suppress these errors"),e}},jb=async function({postRenderCallback:t,querySelector:e,nodes:i}={querySelector:".mermaid"}){const r=me.getConfig();E.debug(`${t?"":"No "}Callback function found`);let n;if(i)n=i;else if(e)n=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");E.debug(`Found ${n.length} diagrams`),(r==null?void 0:r.startOnLoad)!==void 0&&(E.debug("Start On Load: "+(r==null?void 0:r.startOnLoad)),me.updateSiteConfig({startOnLoad:r==null?void 0:r.startOnLoad}));const o=new ti.InitIDGenerator(r.deterministicIds,r.deterministicIDSeed);let s;const a=[];for(const l of Array.from(n)){E.info("Rendering diagram: "+l.id);/*! Check if previously processed */if(l.getAttribute("data-processed"))continue;l.setAttribute("data-processed","true");const h=`mermaid-${o.next()}`;s=l.innerHTML,s=uh(ti.entityDecode(s)).trim().replace(//gi,"
    ");const u=ti.detectInit(s);u&&E.debug("Detected early reinit: ",u);try{const{svg:f,bindFunctions:c}=await eh(h,s,l);l.innerHTML=f,t&&await t(h),c&&c(l)}catch(f){Hb(f,a,At.parseError)}}if(a.length>0)throw a[0]},Jl=function(t){me.initialize(t)},Ub=async function(t,e,i){E.warn("mermaid.init is deprecated. Please use run instead."),t&&Jl(t);const r={postRenderCallback:i,querySelector:".mermaid"};typeof e=="string"?r.querySelector=e:e&&(e instanceof HTMLElement?r.nodes=[e]:r.nodes=e),await Zl(r)},Yb=async(t,{lazyLoad:e=!0}={})=>{il(...t),e===!1&&await Wb()},Ql=function(){if(At.startOnLoad){const{startOnLoad:t}=me.getConfig();t&&At.run().catch(e=>E.error("Mermaid failed to initialize",e))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",Ql,!1)}const Vb=function(t){At.parseError=t},ur=[];let Qr=!1;const th=async()=>{if(!Qr){for(Qr=!0;ur.length>0;){const t=ur.shift();if(t)try{await t()}catch(e){E.error("Error executing queue",e)}}Qr=!1}},Gb=async(t,e)=>new Promise((i,r)=>{const n=()=>new Promise((o,s)=>{me.parse(t,e).then(a=>{o(a),i(a)},a=>{var l;E.error("Error parsing",a),(l=At.parseError)==null||l.call(At,a),s(a),r(a)})});ur.push(n),th().catch(r)}),eh=(t,e,i)=>new Promise((r,n)=>{const o=()=>new Promise((s,a)=>{me.render(t,e,i).then(l=>{s(l),r(l)},l=>{var h;E.error("Error parsing",l),(h=At.parseError)==null||h.call(At,l),a(l),n(l)})});ur.push(o),th().catch(n)}),At={startOnLoad:!0,mermaidAPI:me,parse:Gb,render:eh,init:Ub,run:Zl,registerExternalDiagrams:Yb,initialize:Jl,parseError:void 0,contentLoaded:Ql,setParseErrorHandler:Vb,detectType:Ar},g1=Object.freeze(Object.defineProperty({__proto__:null,default:At},Symbol.toStringTag,{value:"Module"}));export{yr as $,mi as A,Ne as B,ir as C,_e as D,Tr as E,cm as F,t0 as G,gi as H,er as I,Bm as J,ym as K,nm as L,za as M,$a as N,eg as O,ig as P,u0 as Q,ls as R,Qi as S,Zg as T,rg as U,Nn as V,Qp as W,lg as X,Re as Y,rm as Z,oe as _,qy as a,$t as a$,rs as a0,Rn as a1,Da as a2,qa as a3,Ha as a4,Zp as a5,Dt as a6,Am as a7,Fm as a8,Dn as a9,Kb as aA,fh as aB,dh as aC,gh as aD,wn as aE,ee as aF,ni as aG,Oo as aH,du as aI,Ky as aJ,n1 as aK,N0 as aL,al as aM,Un as aN,Ln as aO,Qb as aP,i1 as aQ,Po as aR,Ro as aS,r1 as aT,e1 as aU,Zb as aV,Jb as aW,s1 as aX,o1 as aY,t1 as aZ,E0 as a_,_n as aa,gg as ab,Cm as ac,In as ad,Xr as ae,Om as af,yt as ag,Gs as ah,vh as ai,$ as aj,Mt as ak,Sg as al,Ze as am,Mb as an,$f as ao,uh as ap,f1 as aq,a1 as ar,Vy as as,r_ as at,Sn as au,Xs as av,gt as aw,di as ax,su as ay,Js as az,Py as b,p1 as b0,z0 as b1,e_ as b2,Hy as b3,pi as b4,F as b5,O as b6,g1 as b7,Kn as c,ci as d,at as e,nr as f,Ry as g,xt as h,Ll as i,Wn as j,l_ as k,E as l,Is as m,Sr as n,Ef as o,t_ as p,Za as q,V0 as r,Ny as s,Oy as t,d1 as u,zy as v,s_ as w,Wy as x,ti as y,Dy as z}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = ["assets/c4Diagram-817c8e44-29Yrr6MH.js","assets/svgDrawCommon-ad5ef572-uYdJDui6.js","assets/app-Mf7X6hWu.js","assets/flowDiagram-61eb444c-2NEM-51B.js","assets/flowDb-170db09d-WyyBGkz_.js","assets/layout-bNXk8SHo.js","assets/styles-b966c4ae-SO_n7QzH.js","assets/index-67a42d7d-Sclb7lyu.js","assets/edges-80f1ebb6-Okp3_yLQ.js","assets/createText-aebacdfe-sWKH4swq.js","assets/line-rSV082x4.js","assets/array-Nw74a44z.js","assets/path-aUcfwwLI.js","assets/flowDiagram-v2-2f8f667a-UhW5F7df.js","assets/erDiagram-9cfc3649-3ZBYicXe.js","assets/gitGraphDiagram-6b463803-RA0QPUu6.js","assets/ganttDiagram-db6931fb-mbEUIYH7.js","assets/linear-sLp5W0Cq.js","assets/init-Hi12RPRh.js","assets/infoDiagram-a336098b-VevFHQI9.js","assets/pieDiagram-a5166659-2XSen1e3.js","assets/arc-M4yoLkG1.js","assets/ordinal-wXG5obU4.js","assets/quadrantDiagram-6c355bbc-xTobTGzq.js","assets/xychartDiagram-f746c04c--eu2k7RD.js","assets/requirementDiagram-4038b16c-mGjwDA8r.js","assets/sequenceDiagram-465a088a-GfS2Rm3U.js","assets/classDiagram-48ab76fb-jXeM6zOd.js","assets/styles-4ba6ed67-R_EEqhPc.js","assets/classDiagram-v2-8ecb0bfc-rRpGDOX7.js","assets/stateDiagram-b620d43f-jx860Lys.js","assets/styles-bbc3fe3b-RFckTJF_.js","assets/stateDiagram-v2-2671c3d1-zzr1Lxf7.js","assets/journeyDiagram-deae3313-BJNTUAGR.js","assets/flowchart-elk-definition-e097735e-YWVs5gv6.js","assets/timeline-definition-732a2638-yn6rf3PF.js","assets/mindmap-definition-617cf8dd-MC_O53Pu.js","assets/sankeyDiagram-6db3d513-cSwmFunR.js"] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} \ No newline at end of file diff --git a/assets/mindmap-definition-617cf8dd-MC_O53Pu.js b/assets/mindmap-definition-617cf8dd-MC_O53Pu.js new file mode 100644 index 00000000..6dc8887a --- /dev/null +++ b/assets/mindmap-definition-617cf8dd-MC_O53Pu.js @@ -0,0 +1,109 @@ +import{aB as Da,aC as _u,d as Ep,c as sn,l as qr,h as ti,t as wp,b4 as xp,b5 as Tp,b6 as Cp}from"./mermaid.core-Up0YySao.js";import{c as Dp}from"./createText-aebacdfe-sWKH4swq.js";import"./app-Mf7X6hWu.js";var Uu={exports:{}};(function(pe,le){(function(ee,ce){pe.exports=ce()})(Da,function(){function ee(t){"@babel/helpers - typeof";return ee=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ee(t)}function ce(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function H(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,a=new Array(e);r"u"?null:window,$=D?D.navigator:null;D&&D.document;var _=ee(""),Q=ee({}),ne=ee(function(){}),oe=typeof HTMLElement>"u"?"undefined":ee(HTMLElement),J=function(e){return e&&e.instanceString&&Y(e.instanceString)?e.instanceString():null},j=function(e){return e!=null&&ee(e)==_},Y=function(e){return e!=null&&ee(e)===ne},te=function(e){return!de(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},L=function(e){return e!=null&&ee(e)===Q&&!te(e)&&e.constructor===Object},V=function(e){return e!=null&&ee(e)===Q},I=function(e){return e!=null&&ee(e)===ee(1)&&!isNaN(e)},W=function(e){return I(e)&&Math.floor(e)===e},fe=function(e){if(oe!=="undefined")return e!=null&&e instanceof HTMLElement},de=function(e){return Ae(e)||Ne(e)},Ae=function(e){return J(e)==="collection"&&e._private.single},Ne=function(e){return J(e)==="collection"&&!e._private.single},_e=function(e){return J(e)==="core"},tt=function(e){return J(e)==="stylesheet"},vt=function(e){return J(e)==="event"},Pe=function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},Ve=function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},Xe=function(e){return L(e)&&I(e.x1)&&I(e.x2)&&I(e.y1)&&I(e.y2)},rt=function(e){return V(e)&&Y(e.then)},ft=function(){return $&&$.userAgent.match(/msie|trident|edge/i)},at=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var i=[],s=0;sr?1:0},ju=function(e,r){return-1*ji(e,r)},Ue=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(y-=1),y<1/6?v+(p-v)*6*y:y<1/2?p:y<2/3?v+(p-v)*(2/3-y)*6:v}var h=new RegExp("^"+un+"$").exec(e);if(h){if(a=parseInt(h[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(h[2]),n<0||n>100||(n=n/100,i=parseFloat(h[3]),i<0||i>100)||(i=i/100,s=h[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)o=l=u=Math.round(i*255);else{var c=i<.5?i*(1+n):i+n-i*n,d=2*i-c;o=Math.round(255*f(d,c,a+1/3)),l=Math.round(255*f(d,c,a)),u=Math.round(255*f(d,c,a-1/3))}r=[o,l,u,s]}return r},rl=function(e){var r,a=new RegExp("^"+dr+"$").exec(e);if(a){r=[];for(var n=[],i=1;i<=3;i++){var s=a[i];if(s[s.length-1]==="%"&&(n[i]=!0),s=parseFloat(s),n[i]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var o=n[1]||n[2]||n[3],l=n[1]&&n[2]&&n[3];if(o&&!l)return;var u=a[4];if(u!==void 0){if(u=parseFloat(u),u<0||u>1)return;r.push(u)}}return r},al=function(e){return il[e.toLowerCase()]},nl=function(e){return(te(e)?e:null)||al(e)||el(e)||rl(e)||tl(e)},il={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},es=function(e){for(var r=e.map,a=e.keys,n=a.length,i=0;i=e||x<0||h&&R>=i}function g(){var A=ri();if(y(A))return m(A);o=setTimeout(g,p(A))}function m(A){return o=void 0,c&&a?d(A):(a=n=void 0,s)}function b(){o!==void 0&&clearTimeout(o),u=0,a=l=n=o=void 0}function E(){return o===void 0?s:m(ri())}function N(){var A=ri(),x=y(A);if(a=arguments,n=this,l=A,x){if(o===void 0)return v(l);if(h)return clearTimeout(o),o=setTimeout(g,e),d(l)}return o===void 0&&(o=setTimeout(g,e)),s}return N.cancel=b,N.flush=E,N}var fn=Ul,ai=D?D.performance:null,os=ai&&ai.now?function(){return ai.now()}:function(){return Date.now()},Yl=function(){if(D){if(D.requestAnimationFrame)return function(t){D.requestAnimationFrame(t)};if(D.mozRequestAnimationFrame)return function(t){D.mozRequestAnimationFrame(t)};if(D.webkitRequestAnimationFrame)return function(t){D.webkitRequestAnimationFrame(t)};if(D.msRequestAnimationFrame)return function(t){D.msRequestAnimationFrame(t)}}return function(t){t&&setTimeout(function(){t(os())},1e3/60)}}(),hn=function(e){return Yl(e)},gr=os,Jr=9261,us=65599,Na=5381,ls=function(e){for(var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jr,a=r,n;n=e.next(),!n.done;)a=a*us+n.value|0;return a},Ma=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Jr;return r*us+e|0},Ia=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Na;return(r<<5)+r+e|0},Hl=function(e,r){return e*2097152+r},wr=function(e){return e[0]*2097152+e[1]},cn=function(e,r){return[Ma(e[0],r[0]),Ia(e[1],r[1])]},Xl=function(e,r){var a={value:0,done:!1},n=0,i=e.length,s={next:function(){return n=0&&!(e[n]===r&&(e.splice(n,1),a));n--);},si=function(e){e.splice(0,e.length)},jl=function(e,r){for(var a=0;a"u"?"undefined":ee(Set))!==tf?Set:rf,dn=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!_e(e)){Tt("An element must have a core reference and parameters set");return}var n=r.group;if(n==null&&(r.data&&r.data.source!=null&&r.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){Tt("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?n==="edges":!!r.pannable,active:!1,classes:new jr,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(i.position.x==null&&(i.position.x=0),i.position.y==null&&(i.position.y=0),r.renderedPosition){var s=r.renderedPosition,o=e.pan(),l=e.zoom();i.position={x:(s.x-o.x)/l,y:(s.y-o.y)/l}}var u=[];te(r.classes)?u=r.classes:j(r.classes)&&(u=r.classes.split(/\s+/));for(var f=0,h=u.length;fm?1:0},f=function(g,m,b,E,N){var A;if(b==null&&(b=0),N==null&&(N=a),b<0)throw new Error("lo must be non-negative");for(E==null&&(E=g.length);bB;0<=B?C++:C--)R.push(C);return R}).apply(this).reverse(),x=[],E=0,N=A.length;Ez;0<=z?++R:--R)M.push(s(g,b));return M},p=function(g,m,b,E){var N,A,x;for(E==null&&(E=a),N=g[b];b>m;){if(x=b-1>>1,A=g[x],E(N,A)<0){g[b]=A,b=x;continue}break}return g[b]=N},y=function(g,m,b){var E,N,A,x,R;for(b==null&&(b=a),N=g.length,R=m,A=g[m],E=2*m+1;E0;){var A=m.pop(),x=y(A),R=A.id();if(c[R]=x,x!==1/0)for(var C=A.neighborhood().intersect(v),B=0;B0)for(ie.unshift(Z);h[ge];){var se=h[ge];ie.unshift(se.edge),ie.unshift(se.node),ue=se.node,ge=ue.id()}return o.spawn(ie)}}}},of={kruskal:function(e){e=e||function(b){return 1};for(var r=this.byGroup(),a=r.nodes,n=r.edges,i=a.length,s=new Array(i),o=a,l=function(E){for(var N=0;N0;){if(N(),x++,E===f){for(var R=[],C=i,B=f,z=g[B];R.unshift(C),z!=null&&R.unshift(z),C=y[B],C!=null;)B=C.id(),z=g[B];return{found:!0,distance:h[E],path:this.spawn(R),steps:x}}d[E]=!0;for(var M=b._private.edges,X=0;Xz&&(v[B]=z,m[B]=C,b[B]=N),!i){var M=C*f+R;!i&&v[M]>z&&(v[M]=z,m[M]=R,b[M]=N)}}}for(var X=0;X1&&arguments[1]!==void 0?arguments[1]:s,je=b(ke),Ze=[],Ye=je;;){if(Ye==null)return r.spawn();var ct=m(Ye),De=ct.edge,k=ct.pred;if(Ze.unshift(Ye[0]),Ye.same(ze)&&Ze.length>0)break;De!=null&&Ze.unshift(De),Ye=k}return l.spawn(Ze)},A=0;A=0;f--){var h=u[f],c=h[1],d=h[2];(r[c]===o&&r[d]===l||r[c]===l&&r[d]===o)&&u.splice(f,1)}for(var v=0;vn;){var i=Math.floor(Math.random()*r.length);r=gf(i,e,r),a--}return r},pf={kargerStein:function(){var e=this,r=this.byGroup(),a=r.nodes,n=r.edges;n.unmergeBy(function(ie){return ie.isLoop()});var i=a.length,s=n.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),l=Math.floor(i/df);if(i<2){Tt("At least 2 nodes are required for Karger-Stein algorithm");return}for(var u=[],f=0;f1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=r;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(r,a):(a0&&e.splice(0,r));for(var o=0,l=e.length-1;l>=0;l--){var u=e[l];s?isFinite(u)||(e[l]=-1/0,o++):e.splice(l,1)}i&&e.sort(function(c,d){return c-d});var f=e.length,h=Math.floor(f/2);return f%2!==0?e[h+1+o]:(e[h-1+o]+e[h+o])/2},xf=function(e){return Math.PI*e/180},pn=function(e,r){return Math.atan2(r,e)-Math.PI/2},ui=Math.log2||function(t){return Math.log(t)/Math.log(2)},bs=function(e){return e>0?1:e<0?-1:0},Br=function(e,r){return Math.sqrt(Fr(e,r))},Fr=function(e,r){var a=r.x-e.x,n=r.y-e.y;return a*a+n*n},Tf=function(e){for(var r=e.length,a=0,n=0;n=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},Df=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},Sf=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},Lf=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},Af=function(e,r,a){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1},yn=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},li=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,s;if(r.length===1)a=n=i=s=r[0];else if(r.length===2)a=i=r[0],s=n=r[1];else if(r.length===4){var o=w(r,4);a=o[0],n=o[1],i=o[2],s=o[3]}return e.x1-=s,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},Es=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},fi=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},ra=function(e,r,a){return e.x1<=r&&r<=e.x2&&e.y1<=a&&a<=e.y2},Of=function(e,r){return ra(e,r.x,r.y)},ws=function(e,r){return ra(e,r.x1,r.y1)&&ra(e,r.x2,r.y2)},xs=function(e,r,a,n,i,s,o){var l=za(i,s),u=i/2,f=s/2,h;{var c=a-u+l-o,d=n-f-o,v=a+u-l+o,p=d;if(h=Cr(e,r,a,n,c,d,v,p,!1),h.length>0)return h}{var y=a+u+o,g=n-f+l-o,m=y,b=n+f-l+o;if(h=Cr(e,r,a,n,y,g,m,b,!1),h.length>0)return h}{var E=a-u+l-o,N=n+f+o,A=a+u-l+o,x=N;if(h=Cr(e,r,a,n,E,N,A,x,!1),h.length>0)return h}{var R=a-u-o,C=n-f+l-o,B=R,z=n+f-l+o;if(h=Cr(e,r,a,n,R,C,B,z,!1),h.length>0)return h}var M;{var X=a-u+l,F=n-f+l;if(M=Ba(e,r,a,n,X,F,l+o),M.length>0&&M[0]<=X&&M[1]<=F)return[M[0],M[1]]}{var re=a+u-l,q=n-f+l;if(M=Ba(e,r,a,n,re,q,l+o),M.length>0&&M[0]>=re&&M[1]<=q)return[M[0],M[1]]}{var Z=a+u-l,ie=n+f-l;if(M=Ba(e,r,a,n,Z,ie,l+o),M.length>0&&M[0]>=Z&&M[1]>=ie)return[M[0],M[1]]}{var ue=a-u+l,ge=n+f-l;if(M=Ba(e,r,a,n,ue,ge,l+o),M.length>0&&M[0]<=ue&&M[1]>=ge)return[M[0],M[1]]}return[]},Nf=function(e,r,a,n,i,s,o){var l=o,u=Math.min(a,i),f=Math.max(a,i),h=Math.min(n,s),c=Math.max(n,s);return u-l<=e&&e<=f+l&&h-l<=r&&r<=c+l},Mf=function(e,r,a,n,i,s,o,l,u){var f={x1:Math.min(a,o,i)-u,x2:Math.max(a,o,i)+u,y1:Math.min(n,l,s)-u,y2:Math.max(n,l,s)+u};return!(ef.x2||rf.y2)},If=function(e,r,a,n){a-=n;var i=r*r-4*e*a;if(i<0)return[];var s=Math.sqrt(i),o=2*e,l=(-r+s)/o,u=(-r-s)/o;return[l,u]},Rf=function(e,r,a,n,i){var s=1e-5;e===0&&(e=s),r/=e,a/=e,n/=e;var o,l,u,f,h,c,d,v;if(l=(3*a-r*r)/9,u=-(27*n)+r*(9*a-2*(r*r)),u/=54,o=l*l*l+u*u,i[1]=0,d=r/3,o>0){h=u+Math.sqrt(o),h=h<0?-Math.pow(-h,1/3):Math.pow(h,1/3),c=u-Math.sqrt(o),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-d+h+c,d+=(h+c)/2,i[4]=i[2]=-d,d=Math.sqrt(3)*(-c+h)/2,i[3]=d,i[5]=-d;return}if(i[5]=i[3]=0,o===0){v=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3),i[0]=-d+2*v,i[4]=i[2]=-(v+d);return}l=-l,f=l*l*l,f=Math.acos(u/Math.sqrt(f)),v=2*Math.sqrt(l),i[0]=-d+v*Math.cos(f/3),i[2]=-d+v*Math.cos((f+2*Math.PI)/3),i[4]=-d+v*Math.cos((f+4*Math.PI)/3)},kf=function(e,r,a,n,i,s,o,l){var u=1*a*a-4*a*i+2*a*o+4*i*i-4*i*o+o*o+n*n-4*n*s+2*n*l+4*s*s-4*s*l+l*l,f=1*9*a*i-3*a*a-3*a*o-6*i*i+3*i*o+9*n*s-3*n*n-3*n*l-6*s*s+3*s*l,h=1*3*a*a-6*a*i+a*o-a*e+2*i*i+2*i*e-o*e+3*n*n-6*n*s+n*l-n*r+2*s*s+2*s*r-l*r,c=1*a*i-a*a+a*e-i*e+n*s-n*n+n*r-s*r,d=[];Rf(u,f,h,c,d);for(var v=1e-7,p=[],y=0;y<6;y+=2)Math.abs(d[y+1])=0&&d[y]<=1&&p.push(d[y]);p.push(1),p.push(0);for(var g=-1,m,b,E,N=0;N=0?Eu?(e-i)*(e-i)+(r-s)*(r-s):f-c},Ht=function(e,r,a){for(var n,i,s,o,l,u=0,f=0;f=e&&e>=s||n<=e&&e<=s)l=(e-n)/(s-n)*(o-i)+i,l>r&&u++;else continue;return u%2!==0},pr=function(e,r,a,n,i,s,o,l,u){var f=new Array(a.length),h;l[0]!=null?(h=Math.atan(l[1]/l[0]),l[0]<0?h=h+Math.PI/2:h=-h-Math.PI/2):h=l;for(var c=Math.cos(-h),d=Math.sin(-h),v=0;v0){var y=Cs(f,-u);p=Ts(y)}else p=f;return Ht(e,r,p)},Bf=function(e,r,a,n,i,s,o){for(var l=new Array(a.length),u=s/2,f=o/2,h=vi(s,o),c=h*h,d=0;d=0&&y<=1&&m.push(y),g>=0&&g<=1&&m.push(g),m.length===0)return[];var b=m[0]*l[0]+e,E=m[0]*l[1]+r;if(m.length>1){if(m[0]==m[1])return[b,E];var N=m[1]*l[0]+e,A=m[1]*l[1]+r;return[b,E,N,A]}else return[b,E]},hi=function(e,r,a){return r<=e&&e<=a||a<=e&&e<=r?e:e<=r&&r<=a||a<=r&&r<=e?r:a},Cr=function(e,r,a,n,i,s,o,l,u){var f=e-i,h=a-e,c=o-i,d=r-s,v=n-r,p=l-s,y=c*d-p*f,g=h*d-v*f,m=p*h-c*v;if(m!==0){var b=y/m,E=g/m,N=.001,A=0-N,x=1+N;return A<=b&&b<=x&&A<=E&&E<=x?[e+b*h,r+b*v]:u?[e+b*h,r+b*v]:[]}else return y===0||g===0?hi(e,a,o)===o?[o,l]:hi(e,a,i)===i?[i,s]:hi(i,o,a)===a?[a,n]:[]:[]},Fa=function(e,r,a,n,i,s,o,l){var u=[],f,h=new Array(a.length),c=!0;s==null&&(c=!1);var d;if(c){for(var v=0;v0){var p=Cs(h,-l);d=Ts(p)}else d=h}else d=a;for(var y,g,m,b,E=0;E2){for(var q=[u[0],u[1]],Z=Math.pow(q[0]-e,2)+Math.pow(q[1]-r,2),ie=1;ief&&(f=E)},get:function(b){return u[b]}},c=0;c0?q=re.edgesTo(F)[0]:q=F.edgesTo(re)[0];var Z=n(q);F=F.id(),R[F]>R[M]+Z&&(R[F]=R[M]+Z,C.nodes.indexOf(F)<0?C.push(F):C.updateItem(F),x[F]=0,A[F]=[]),R[F]==R[M]+Z&&(x[F]=x[F]+x[M],A[F].push(M))}else for(var ie=0;ie0;){for(var ve=N.pop(),ye=0;ye0&&o.push(a[l]);o.length!==0&&i.push(n.collection(o))}return i},Jf=function(e,r){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:th,o=n,l,u,f=0;f=2?Ga(e,r,a,0,Rs,rh):Ga(e,r,a,0,Is)},squaredEuclidean:function(e,r,a){return Ga(e,r,a,0,Rs)},manhattan:function(e,r,a){return Ga(e,r,a,0,Is)},max:function(e,r,a){return Ga(e,r,a,-1/0,ah)}};ia["squared-euclidean"]=ia.squaredEuclidean,ia.squaredeuclidean=ia.squaredEuclidean;function bn(t,e,r,a,n,i){var s;return Y(t)?s=t:s=ia[t]||ia.euclidean,e===0&&Y(t)?s(n,i):s(e,r,a,n,i)}var nh=At({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),pi=function(e){return nh(e)},En=function(e,r,a,n,i){var s=i!=="kMedoids",o=s?function(h){return a[h]}:function(h){return n[h](a)},l=function(c){return n[c](r)},u=a,f=r;return bn(e,n.length,o,l,u,f)},yi=function(e,r,a){for(var n=a.length,i=new Array(n),s=new Array(n),o=new Array(r),l=null,u=0;ua)return!1}return!0},oh=function(e,r,a){for(var n=0;no&&(o=r[u][f],l=f);i[l].push(e[u])}for(var h=0;h=i.threshold||i.mode==="dendrogram"&&e.length===1)return!1;var v=r[s],p=r[n[s]],y;i.mode==="dendrogram"?y={left:v,right:p,key:v.key}:y={value:v.value.concat(p.value),key:v.key},e[v.index]=y,e.splice(p.index,1),r[v.key]=y;for(var g=0;ga[p.key][m.key]&&(l=a[p.key][m.key])):i.linkage==="max"?(l=a[v.key][m.key],a[v.key][m.key]0&&n.push(i);return n},$s=function(e,r,a){for(var n=[],i=0;io&&(s=u,o=r[i*e+u])}s>0&&n.push(s)}for(var f=0;fu&&(l=f,u=h)}a[i]=s[l]}return n=$s(e,r,a),n},_s=function(e){for(var r=this.cy(),a=this.nodes(),n=wh(e),i={},s=0;s=z?(M=z,z=F,X=re):F>M&&(M=F);for(var q=0;q0?1:0;x[C%n.minIterations*o+ve]=ye,se+=ye}if(se>0&&(C>=n.minIterations-1||C==n.maxIterations-1)){for(var Te=0,be=0;be1||A>1)&&(o=!0),h[b]=[],m.outgoers().forEach(function(R){R.isEdge()&&h[b].push(R.id())})}else c[b]=[void 0,m.target().id()]}):s.forEach(function(m){var b=m.id();if(m.isNode()){var E=m.degree(!0);E%2&&(l?u?o=!0:u=b:l=b),h[b]=[],m.connectedEdges().forEach(function(N){return h[b].push(N.id())})}else c[b]=[m.source().id(),m.target().id()]});var d={found:!1,trail:void 0};if(o)return d;if(u&&l)if(i){if(f&&u!=f)return d;f=u}else{if(f&&u!=f&&l!=f)return d;f||(f=u)}else f||(f=s[0].id());var v=function(b){for(var E=b,N=[b],A,x,R;h[E].length;)A=h[E].shift(),x=c[A][0],R=c[A][1],E!=R?(h[R]=h[R].filter(function(C){return C!=A}),E=R):!i&&E!=x&&(h[x]=h[x].filter(function(C){return C!=A}),E=x),N.unshift(A),N.unshift(E);return N},p=[],y=[];for(y=v(f);y.length!=1;)h[y[0]].length==0?(p.unshift(s.getElementById(y.shift())),p.unshift(s.getElementById(y.shift()))):y=v(y.shift()).concat(y);p.unshift(s.getElementById(y.shift()));for(var g in h)if(h[g].length)return d;return d.found=!0,d.trail=this.spawn(p,!0),d}},xn=function(){var e=this,r={},a=0,n=0,i=[],s=[],o={},l=function(c,d){for(var v=s.length-1,p=[],y=e.spawn();s[v].x!=c||s[v].y!=d;)p.push(s.pop().edge),v--;p.push(s.pop().edge),p.forEach(function(g){var m=g.connectedNodes().intersection(e);y.merge(g),m.forEach(function(b){var E=b.id(),N=b.connectedEdges().intersection(e);y.merge(b),r[E].cutVertex?y.merge(N.filter(function(A){return A.isLoop()})):y.merge(N)})}),i.push(y)},u=function h(c,d,v){c===v&&(n+=1),r[d]={id:a,low:a++,cutVertex:!1};var p=e.getElementById(d).connectedEdges().intersection(e);if(p.size()===0)i.push(e.spawn(e.getElementById(d)));else{var y,g,m,b;p.forEach(function(E){y=E.source().id(),g=E.target().id(),m=y===d?g:y,m!==v&&(b=E.id(),o[b]||(o[b]=!0,s.push({x:d,y:m,edge:E})),m in r?r[d].low=Math.min(r[d].low,r[m].id):(h(c,m,d),r[d].low=Math.min(r[d].low,r[m].low),r[d].id<=r[m].low&&(r[d].cutVertex=!0,l(d,m))))})}};e.forEach(function(h){if(h.isNode()){var c=h.id();c in r||(n=0,u(c,c),r[c].cutVertex=n>1)}});var f=Object.keys(r).filter(function(h){return r[h].cutVertex}).map(function(h){return e.getElementById(h)});return{cut:e.spawn(f),components:i}},Oh={hopcroftTarjanBiconnected:xn,htbc:xn,htb:xn,hopcroftTarjanBiconnectedComponents:xn},Tn=function(){var e=this,r={},a=0,n=[],i=[],s=e.spawn(e),o=function l(u){i.push(u),r[u]={index:a,low:a++,explored:!1};var f=e.getElementById(u).connectedEdges().intersection(e);if(f.forEach(function(p){var y=p.target().id();y!==u&&(y in r||l(y),r[y].explored||(r[u].low=Math.min(r[u].low,r[y].low)))}),r[u].index===r[u].low){for(var h=e.spawn();;){var c=i.pop();if(h.merge(e.getElementById(c)),r[c].low=r[u].index,r[c].explored=!0,c===u)break}var d=h.edgesWith(h),v=h.merge(d);n.push(v),s=s.difference(v)}};return e.forEach(function(l){if(l.isNode()){var u=l.id();u in r||o(u)}}),{cut:s,components:n}},Nh={tarjanStronglyConnected:Tn,tsc:Tn,tscc:Tn,tarjanStronglyConnectedComponents:Tn},Us={};[Ra,sf,of,lf,hf,vf,pf,$f,aa,na,gi,eh,vh,bh,Sh,Ah,Oh,Nh].forEach(function(t){Ue(Us,t)});/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/var Ys=0,Hs=1,Xs=2,yr=function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=Ys,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};yr.prototype={fulfill:function(e){return Ws(this,Hs,"fulfillValue",e)},reject:function(e){return Ws(this,Xs,"rejectReason",e)},then:function(e,r){var a=this,n=new yr;return a.onFulfilled.push(Zs(e,n,"fulfill")),a.onRejected.push(Zs(r,n,"reject")),qs(a),n.proxy}};var Ws=function(e,r,a,n){return e.state===Ys&&(e.state=r,e[a]=n,qs(e)),e},qs=function(e){e.state===Hs?Ks(e,"onFulfilled",e.fulfillValue):e.state===Xs&&Ks(e,"onRejected",e.rejectReason)},Ks=function(e,r,a){if(e[r].length!==0){var n=e[r];e[r]=[];var i=function(){for(var o=0;o0}},clearQueue:function(){return function(){var r=this,a=r.length!==void 0,n=a?r:[r],i=this._private.cy||this;if(!i.styleEnabled())return this;for(var s=0;s-1}var Fc=Bc;function zc(t,e){var r=this.__data__,a=Dn(r,t);return a<0?(++this.size,r.push([t,e])):r[a][1]=e,this}var Gc=zc;function ua(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0&&this.spawn(n).updateStyle().emit("class"),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){te(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=r===void 0,i=[],s=0,o=a.length;s0&&this.spawn(i).updateStyle().emit("class"),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var a=this;if(r==null)r=250;else if(r===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},r),a}};Ln.className=Ln.classNames=Ln.classes;var nt={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:dt,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};nt.variable="(?:[\\w-.]|(?:\\\\"+nt.metaChar+"))+",nt.className="(?:[\\w-]|(?:\\\\"+nt.metaChar+"))+",nt.value=nt.string+"|"+nt.number,nt.id=nt.variable,function(){var t,e,r;for(t=nt.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(nt.comparatorOp+="|\\!"+e)}();var pt=function(){return{checks:[]}},Be={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},Ti=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return ju(t.selector,e.selector)}),Uv=function(){for(var t={},e,r=0;r0&&f.edgeCount>0)return ut("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(f.edgeCount>1)return ut("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;f.edgeCount===1&&ut("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Kv=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(f){return f??""},r=function(f){return j(f)?'"'+f+'"':e(f)},a=function(f){return" "+f+" "},n=function(f,h){var c=f.type,d=f.value;switch(c){case Be.GROUP:{var v=e(d);return v.substring(0,v.length-1)}case Be.DATA_COMPARE:{var p=f.field,y=f.operator;return"["+p+a(e(y))+r(d)+"]"}case Be.DATA_BOOL:{var g=f.operator,m=f.field;return"["+e(g)+m+"]"}case Be.DATA_EXIST:{var b=f.field;return"["+b+"]"}case Be.META_COMPARE:{var E=f.operator,N=f.field;return"[["+N+a(e(E))+r(d)+"]]"}case Be.STATE:return d;case Be.ID:return"#"+d;case Be.CLASS:return"."+d;case Be.PARENT:case Be.CHILD:return i(f.parent,h)+a(">")+i(f.child,h);case Be.ANCESTOR:case Be.DESCENDANT:return i(f.ancestor,h)+" "+i(f.descendant,h);case Be.COMPOUND_SPLIT:{var A=i(f.left,h),x=i(f.subject,h),R=i(f.right,h);return A+(A.length>0?" ":"")+x+R}case Be.TRUE:return""}},i=function(f,h){return f.checks.reduce(function(c,d,v){return c+(h===f&&v===0?"$":"")+n(d,h)},"")},s="",o=0;o1&&o=0&&(r=r.replace("!",""),h=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),f=!0),(i||o||f)&&(l=!i&&!s?"":""+e,u=""+a),f&&(e=l=l.toLowerCase(),a=u=u.toLowerCase()),r){case"*=":n=l.indexOf(u)>=0;break;case"$=":n=l.indexOf(u,l.length-u.length)>=0;break;case"^=":n=l.indexOf(u)===0;break;case"=":n=e===a;break;case">":c=!0,n=e>a;break;case">=":c=!0,n=e>=a;break;case"<":c=!0,n=e0;){var f=n.shift();e(f),i.add(f.id()),o&&a(n,i,f)}return t}function fo(t,e,r){if(r.isParent())for(var a=r._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return Si(this,t,e,fo)};function ho(t,e,r){if(r.isChild()){var a=r._private.parent;e.has(a.id())||t.push(a)}}ha.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Si(this,t,e,ho)};function ad(t,e,r){ho(t,e,r),fo(t,e,r)}ha.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return Si(this,t,e,ad)},ha.ancestors=ha.parents;var $a,co;$a=co={data:ht.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:ht.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:ht.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:ht.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:ht.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:ht.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}},$a.attr=$a.data,$a.removeAttr=$a.removeData;var nd=co,An={};function Li(t){return function(e){var r=this;if(e===void 0&&(e=!0),r.length!==0)if(r.isNode()&&!r.removed()){for(var a=0,n=r[0],i=n._private.edges,s=0;se}),minIndegree:ca("indegree",function(t,e){return te}),minOutdegree:ca("outdegree",function(t,e){return te})}),Ue(An,{totalDegree:function(e){for(var r=0,a=this.nodes(),n=0;n0,c=h;h&&(f=f[0]);var d=c?f.position():{x:0,y:0};r!==void 0?u.position(e,r+d[e]):i!==void 0&&u.position({x:i.x+d.x,y:i.y+d.y})}else{var v=a.position(),p=o?a.parent():null,y=p&&p.length>0,g=y;y&&(p=p[0]);var m=g?p.position():{x:0,y:0};return i={x:v.x-m.x,y:v.y-m.y},e===void 0?i:i[e]}else if(!s)return;return this}},rr.modelPosition=rr.point=rr.position,rr.modelPositions=rr.points=rr.positions,rr.renderedPoint=rr.renderedPosition,rr.relativePoint=rr.relativePosition;var id=vo,va,Or;va=Or={},Or.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),a=r.zoom(),n=r.pan(),i=e.x1*a+n.x,s=e.x2*a+n.x,o=e.y1*a+n.y,l=e.y2*a+n.y;return{x1:i,x2:s,y1:o,y2:l,w:s-i,h:l-o}},Or.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var a=r._private;a.compoundBoundsClean=!1,a.bbCache=null,t||r.emitAndNotify("bounds")}}),this)},Or.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var o=s._private,l=s.children(),u=s.pstyle("compound-sizing-wrt-labels").value==="include",f={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},h=l.boundingBox({includeLabels:u,includeOverlays:!1,useCache:!1}),c=o.position;(h.w===0||h.h===0)&&(h={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},h.x1=c.x-h.w/2,h.x2=c.x+h.w/2,h.y1=c.y-h.h/2,h.y2=c.y+h.h/2);function d(C,B,z){var M=0,X=0,F=B+z;return C>0&&F>0&&(M=B/F*C,X=z/F*C),{biasDiff:M,biasComplementDiff:X}}function v(C,B,z,M){if(z.units==="%")switch(M){case"width":return C>0?z.pfValue*C:0;case"height":return B>0?z.pfValue*B:0;case"average":return C>0&&B>0?z.pfValue*(C+B)/2:0;case"min":return C>0&&B>0?C>B?z.pfValue*B:z.pfValue*C:0;case"max":return C>0&&B>0?C>B?z.pfValue*C:z.pfValue*B:0;default:return 0}else return z.units==="px"?z.pfValue:0}var p=f.width.left.value;f.width.left.units==="px"&&f.width.val>0&&(p=p*100/f.width.val);var y=f.width.right.value;f.width.right.units==="px"&&f.width.val>0&&(y=y*100/f.width.val);var g=f.height.top.value;f.height.top.units==="px"&&f.height.val>0&&(g=g*100/f.height.val);var m=f.height.bottom.value;f.height.bottom.units==="px"&&f.height.val>0&&(m=m*100/f.height.val);var b=d(f.width.val-h.w,p,y),E=b.biasDiff,N=b.biasComplementDiff,A=d(f.height.val-h.h,g,m),x=A.biasDiff,R=A.biasComplementDiff;o.autoPadding=v(h.w,h.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(h.w,f.width.val),c.x=(-E+h.x1+h.x2+N)/2,o.autoHeight=Math.max(h.h,f.height.val),c.y=(-x+h.y1+h.y2+R)/2}for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Vr=function(e,r){return r==null?e:ar(e,r.x1,r.y1,r.x2,r.y2)},_a=function(e,r,a){return tr(e,r,a)},On=function(e,r,a){if(!r.cy().headless()){var n=r._private,i=n.rstyle,s=i.arrowWidth/2,o=r.pstyle(a+"-arrow-shape").value,l,u;if(o!=="none"){a==="source"?(l=i.srcX,u=i.srcY):a==="target"?(l=i.tgtX,u=i.tgtY):(l=i.midX,u=i.midY);var f=n.arrowBounds=n.arrowBounds||{},h=f[a]=f[a]||{};h.x1=l-s,h.y1=u-s,h.x2=l+s,h.y2=u+s,h.w=h.x2-h.x1,h.h=h.y2-h.y1,yn(h,1),ar(e,h.x1,h.y1,h.x2,h.y2)}}},Ai=function(e,r,a){if(!r.cy().headless()){var n;a?n=a+"-":n="";var i=r._private,s=i.rstyle,o=r.pstyle(n+"label").strValue;if(o){var l=r.pstyle("text-halign"),u=r.pstyle("text-valign"),f=_a(s,"labelWidth",a),h=_a(s,"labelHeight",a),c=_a(s,"labelX",a),d=_a(s,"labelY",a),v=r.pstyle(n+"text-margin-x").pfValue,p=r.pstyle(n+"text-margin-y").pfValue,y=r.isEdge(),g=r.pstyle(n+"text-rotation"),m=r.pstyle("text-outline-width").pfValue,b=r.pstyle("text-border-width").pfValue,E=b/2,N=r.pstyle("text-background-padding").pfValue,A=2,x=h,R=f,C=R/2,B=x/2,z,M,X,F;if(y)z=c-C,M=c+C,X=d-B,F=d+B;else{switch(l.value){case"left":z=c-R,M=c;break;case"center":z=c-C,M=c+C;break;case"right":z=c,M=c+R;break}switch(u.value){case"top":X=d-x,F=d;break;case"center":X=d-B,F=d+B;break;case"bottom":X=d,F=d+x;break}}z+=v-Math.max(m,E)-N-A,M+=v+Math.max(m,E)+N+A,X+=p-Math.max(m,E)-N-A,F+=p+Math.max(m,E)+N+A;var re=a||"main",q=i.labelBounds,Z=q[re]=q[re]||{};Z.x1=z,Z.y1=X,Z.x2=M,Z.y2=F,Z.w=M-z,Z.h=F-X;var ie=y&&g.strValue==="autorotate",ue=g.pfValue!=null&&g.pfValue!==0;if(ie||ue){var ge=ie?_a(i.rstyle,"labelAngle",a):g.pfValue,se=Math.cos(ge),ve=Math.sin(ge),ye=(z+M)/2,Te=(X+F)/2;if(!y){switch(l.value){case"left":ye=M;break;case"right":ye=z;break}switch(u.value){case"top":Te=F;break;case"bottom":Te=X;break}}var be=function(We,Re){return We=We-ye,Re=Re-Te,{x:We*se-Re*ve+ye,y:We*ve+Re*se+Te}},me=be(z,X),ae=be(z,F),xe=be(M,X),Ce=be(M,F);z=Math.min(me.x,ae.x,xe.x,Ce.x),M=Math.max(me.x,ae.x,xe.x,Ce.x),X=Math.min(me.y,ae.y,xe.y,Ce.y),F=Math.max(me.y,ae.y,xe.y,Ce.y)}var Oe=re+"Rot",Me=q[Oe]=q[Oe]||{};Me.x1=z,Me.y1=X,Me.x2=M,Me.y2=F,Me.w=M-z,Me.h=F-X,ar(e,z,X,M,F),ar(i.labelBounds.all,z,X,M,F)}return e}},sd=function(e,r){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),s=Yt(),o=e._private,l=e.isNode(),u=e.isEdge(),f,h,c,d,v,p,y=o.rstyle,g=l&&n?e.pstyle("bounds-expansion").pfValue:[0],m=function(Ge){return Ge.pstyle("display").value!=="none"},b=!n||m(e)&&(!u||m(e.source())&&m(e.target()));if(b){var E=0,N=0;n&&r.includeOverlays&&(E=e.pstyle("overlay-opacity").value,E!==0&&(N=e.pstyle("overlay-padding").value));var A=0,x=0;n&&r.includeUnderlays&&(A=e.pstyle("underlay-opacity").value,A!==0&&(x=e.pstyle("underlay-padding").value));var R=Math.max(N,x),C=0,B=0;if(n&&(C=e.pstyle("width").pfValue,B=C/2),l&&r.includeNodes){var z=e.position();v=z.x,p=z.y;var M=e.outerWidth(),X=M/2,F=e.outerHeight(),re=F/2;f=v-X,h=v+X,c=p-re,d=p+re,ar(s,f,c,h,d)}else if(u&&r.includeEdges)if(n&&!i){var q=e.pstyle("curve-style").strValue;if(f=Math.min(y.srcX,y.midX,y.tgtX),h=Math.max(y.srcX,y.midX,y.tgtX),c=Math.min(y.srcY,y.midY,y.tgtY),d=Math.max(y.srcY,y.midY,y.tgtY),f-=B,h+=B,c-=B,d+=B,ar(s,f,c,h,d),q==="haystack"){var Z=y.haystackPts;if(Z&&Z.length===2){if(f=Z[0].x,c=Z[0].y,h=Z[1].x,d=Z[1].y,f>h){var ie=f;f=h,h=ie}if(c>d){var ue=c;c=d,d=ue}ar(s,f-B,c-B,h+B,d+B)}}else if(q==="bezier"||q==="unbundled-bezier"||q==="segments"||q==="taxi"){var ge;switch(q){case"bezier":case"unbundled-bezier":ge=y.bezierPts;break;case"segments":case"taxi":ge=y.linePts;break}if(ge!=null)for(var se=0;seh){var ae=f;f=h,h=ae}if(c>d){var xe=c;c=d,d=xe}f-=B,h+=B,c-=B,d+=B,ar(s,f,c,h,d)}if(n&&r.includeEdges&&u&&(On(s,e,"mid-source"),On(s,e,"mid-target"),On(s,e,"source"),On(s,e,"target")),n){var Ce=e.pstyle("ghost").value==="yes";if(Ce){var Oe=e.pstyle("ghost-offset-x").pfValue,Me=e.pstyle("ghost-offset-y").pfValue;ar(s,s.x1+Oe,s.y1+Me,s.x2+Oe,s.y2+Me)}}var He=o.bodyBounds=o.bodyBounds||{};Es(He,s),li(He,g),yn(He,1),n&&(f=s.x1,h=s.x2,c=s.y1,d=s.y2,ar(s,f-R,c-R,h+R,d+R));var We=o.overlayBounds=o.overlayBounds||{};Es(We,s),li(We,g),yn(We,1);var Re=o.labelBounds=o.labelBounds||{};Re.all!=null?Sf(Re.all):Re.all=Yt(),n&&r.includeLabels&&(r.includeMainLabels&&Ai(s,e,null),u&&(r.includeSourceLabels&&Ai(s,e,"source"),r.includeTargetLabels&&Ai(s,e,"target")))}return s.x1=Qt(s.x1),s.y1=Qt(s.y1),s.x2=Qt(s.x2),s.y2=Qt(s.y2),s.w=Qt(s.x2-s.x1),s.h=Qt(s.y2-s.y1),s.w>0&&s.h>0&&b&&(li(s,g),yn(s,1)),s},yo=function(e){var r=0,a=function(s){return(s?1:0)<0&&arguments[0]!==void 0?arguments[0]:wd,e=arguments.length>1?arguments[1]:void 0,r=0;r=0;o--)s(o);return this},Nr.removeAllListeners=function(){return this.removeListener("*")},Nr.emit=Nr.trigger=function(t,e,r){var a=this.listeners,n=a.length;return this.emitting++,te(e)||(e=[e]),xd(this,function(i,s){r!=null&&(a=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],n=a.length);for(var o=function(f){var h=a[f];if(h.type===s.type&&(!h.namespace||h.namespace===s.namespace||h.namespace===Ed)&&i.eventMatches(i.context,h,s)){var c=[s];e!=null&&jl(c,e),i.beforeEmit(i.context,h,s),h.conf&&h.conf.one&&(i.listeners=i.listeners.filter(function(p){return p!==h}));var d=i.callbackContext(i.context,h,s),v=h.callback.apply(d,c);i.afterEmit(i.context,h,s),v===!1&&(s.stopPropagation(),s.preventDefault())}},l=0;l1&&!s){var o=this.length-1,l=this[o],u=l._private.data.id;this[o]=void 0,this[e]=l,i.set(u,{ele:l,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,a=e._private.data.id,n=r.map,i=n.get(a);if(!i)return this;var s=i.index;return this.unmergeAt(s),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&j(e)){var a=e;e=r.mutableElements().filter(a)}for(var n=0;n=0;r--){var a=this[r];e(a)&&this.unmergeAt(r)}return this},map:function(e,r){for(var a=[],n=this,i=0;ia&&(a=l,n=o)}return{value:a,ele:n}},min:function(e,r){for(var a=1/0,n,i=this,s=0;s=0&&i"u"?"undefined":ee(Symbol))!=e&&ee(Symbol.iterator)!=e;r&&(Rn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,s=this.length;return T({next:function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){this.cleanStyle();var i=a._private.style[e];return i??(r?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var a=r.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=this[0];if(a)return r.style().getRenderedStyle(a,e)},style:function(e,r){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(L(e)){var s=e;i.applyBypass(this,s,n),this.emitAndNotify("style")}else if(j(e))if(r===void 0){var o=this[0];return o?i.getStylePropertyValue(o,e):void 0}else i.applyBypass(this,e,r,n),this.emitAndNotify("style");else if(e===void 0){var l=this[0];return l?i.getRawStyle(l):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var a=!1,n=r.style(),i=this;if(e===void 0)for(var s=0;s0&&e.push(f[0]),e.push(o[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Bt.neighbourhood=Bt.neighborhood,Bt.closedNeighbourhood=Bt.closedNeighborhood,Bt.openNeighbourhood=Bt.openNeighborhood,Ue(Bt,{source:Zt(function(e){var r=this[0],a;return r&&(a=r._private.source||r.cy().collection()),a&&e?a.filter(e):a},"source"),target:Zt(function(e){var r=this[0],a;return r&&(a=r._private.target||r.cy().collection()),a&&e?a.filter(e):a},"target"),sources:zo({attr:"source"}),targets:zo({attr:"target"})});function zo(t){return function(r){for(var a=[],n=0;n0);return s},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Bt.componentsOf=Bt.components;var Nt=function(e,r){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){Tt("A collection must have a reference to the core");return}var i=new lr,s=!1;if(!r)r=[];else if(r.length>0&&L(r[0])&&!Ae(r[0])){s=!0;for(var o=[],l=new jr,u=0,f=r.length;u0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=r.cy(),n=a._private,i=[],s=[],o,l=0,u=r.length;l0){for(var ue=o.length===r.length?r:new Nt(a,o),ge=0;ge0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,a=[],n={},i=r._private.cy;function s(F){for(var re=F._private.edges,q=0;q0&&(t?z.emitAndNotify("remove"):e&&z.emit("remove"));for(var M=0;M0?M=F:z=F;while(Math.abs(X)>s&&++re=i?m(B,re):q===0?re:E(B,z,z+u)}var A=!1;function x(){A=!0,(t!==e||r!==a)&&b()}var R=function(z){return A||x(),t===e&&r===a?z:z===0?0:z===1?1:y(N(z),e,a)};R.getControlPoints=function(){return[{x:t,y:e},{x:r,y:a}]};var C="generateBezier("+[t,e,r,a]+")";return R.toString=function(){return C},R}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var Rd=function(){function t(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var s={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:s.v,dv:t(s)}}function r(a,n){var i={dx:a.v,dv:t(a)},s=e(a,n*.5,i),o=e(a,n*.5,s),l=e(a,n,o),u=1/6*(i.dx+2*(s.dx+o.dx)+l.dx),f=1/6*(i.dv+2*(s.dv+o.dv)+l.dv);return a.x=a.x+u*n,a.v=a.v+f*n,a}return function a(n,i,s){var o={x:-1,v:0,tension:null,friction:null},l=[0],u=0,f=1/1e4,h=16/1e3,c,d,v;for(n=parseFloat(n)||500,i=parseFloat(i)||20,s=s||null,o.tension=n,o.friction=i,c=s!==null,c?(u=a(n,i),d=u/s*h):d=h;v=r(v||o,d),l.push(1+v.x),u+=16,Math.abs(v.x)>f&&Math.abs(v.v)>f;);return c?function(p){return l[p*(l.length-1)|0]}:u}}(),Et=function(e,r,a,n){var i=Id(e,r,a,n);return function(s,o,l){return s+(o-s)*i(l)}},Fn={linear:function(e,r,a){return e+(r-e)*a},ease:Et(.25,.1,.25,1),"ease-in":Et(.42,0,1,1),"ease-out":Et(0,0,.58,1),"ease-in-out":Et(.42,0,.58,1),"ease-in-sine":Et(.47,0,.745,.715),"ease-out-sine":Et(.39,.575,.565,1),"ease-in-out-sine":Et(.445,.05,.55,.95),"ease-in-quad":Et(.55,.085,.68,.53),"ease-out-quad":Et(.25,.46,.45,.94),"ease-in-out-quad":Et(.455,.03,.515,.955),"ease-in-cubic":Et(.55,.055,.675,.19),"ease-out-cubic":Et(.215,.61,.355,1),"ease-in-out-cubic":Et(.645,.045,.355,1),"ease-in-quart":Et(.895,.03,.685,.22),"ease-out-quart":Et(.165,.84,.44,1),"ease-in-out-quart":Et(.77,0,.175,1),"ease-in-quint":Et(.755,.05,.855,.06),"ease-out-quint":Et(.23,1,.32,1),"ease-in-out-quint":Et(.86,0,.07,1),"ease-in-expo":Et(.95,.05,.795,.035),"ease-out-expo":Et(.19,1,.22,1),"ease-in-out-expo":Et(1,0,0,1),"ease-in-circ":Et(.6,.04,.98,.335),"ease-out-circ":Et(.075,.82,.165,1),"ease-in-out-circ":Et(.785,.135,.15,.86),spring:function(e,r,a){if(a===0)return Fn.linear;var n=Rd(e,r,a);return function(i,s,o){return i+(s-i)*n(o)}},"cubic-bezier":Et};function $o(t,e,r,a,n){if(a===1||e===r)return r;var i=n(e,r,a);return t==null||((t.roundValue||t.color)&&(i=Math.round(i)),t.min!==void 0&&(i=Math.max(i,t.min)),t.max!==void 0&&(i=Math.min(i,t.max))),i}function _o(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function pa(t,e,r,a,n){var i=n!=null?n.type:null;r<0?r=0:r>1&&(r=1);var s=_o(t,n),o=_o(e,n);if(I(s)&&I(o))return $o(i,s,o,r,a);if(te(s)&&te(o)){for(var l=[],u=0;u0?(d==="spring"&&v.push(s.duration),s.easingImpl=Fn[d].apply(null,v)):s.easingImpl=Fn[d]}var p=s.easingImpl,y;if(s.duration===0?y=1:y=(r-l)/s.duration,s.applying&&(y=s.progress),y<0?y=0:y>1&&(y=1),s.delay==null){var g=s.startPosition,m=s.position;if(m&&n&&!t.locked()){var b={};Wa(g.x,m.x)&&(b.x=pa(g.x,m.x,y,p)),Wa(g.y,m.y)&&(b.y=pa(g.y,m.y,y,p)),t.position(b)}var E=s.startPan,N=s.pan,A=i.pan,x=N!=null&&a;x&&(Wa(E.x,N.x)&&(A.x=pa(E.x,N.x,y,p)),Wa(E.y,N.y)&&(A.y=pa(E.y,N.y,y,p)),t.emit("pan"));var R=s.startZoom,C=s.zoom,B=C!=null&&a;B&&(Wa(R,C)&&(i.zoom=Pa(i.minZoom,pa(R,C,y,p),i.maxZoom)),t.emit("zoom")),(x||B)&&t.emit("viewport");var z=s.style;if(z&&z.length>0&&n){for(var M=0;M=0;x--){var R=A[x];R()}A.splice(0,A.length)},m=d.length-1;m>=0;m--){var b=d[m],E=b._private;if(E.stopped){d.splice(m,1),E.hooked=!1,E.playing=!1,E.started=!1,g(E.frames);continue}!E.playing&&!E.applying||(E.playing&&E.applying&&(E.applying=!1),E.started||Pd(f,b,t),kd(f,b,t,h),E.applying&&(E.applying=!1),g(E.frames),E.step!=null&&E.step(t),b.completed()&&(d.splice(m,1),E.hooked=!1,E.playing=!1,E.started=!1,g(E.completes)),p=!0)}return!h&&d.length===0&&v.length===0&&a.push(f),p}for(var i=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(a),e.emit("step")}var Bd={animate:ht.animate(),animation:ht.animation(),animated:ht.animated(),clearQueue:ht.clearQueue(),delay:ht.delay(),delayAnimation:ht.delayAnimation(),stop:ht.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&hn(function(i){Uo(i,e),r()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,s){Uo(s,e)},a.beforeRenderPriorities.animations):r()}},Fd={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,a){var n=r.qualifier;return n!=null?e!==a.target&&Ae(a.target)&&n.matches(a.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,a){return r.qualifier!=null?a.target:e}},zn=function(e){return j(e)?new Sr(e):e},Yo={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Mn(Fd,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,a){return this.emitter().on(e,zn(r),a),this},removeListener:function(e,r,a){return this.emitter().removeListener(e,zn(r),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,a){return this.emitter().one(e,zn(r),a),this},once:function(e,r,a){return this.emitter().one(e,zn(r),a),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};ht.eventAliasesOn(Yo);var Mi={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)}};Mi.jpeg=Mi.jpg;var Gn={layout:function(e){var r=this;if(e==null){Tt("Layout options must be specified to make a layout");return}if(e.name==null){Tt("A `name` must be specified to make a layout");return}var a=e.name,n=r.extension("layout",a);if(n==null){Tt("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;j(e.eles)?i=r.$(e.eles):i=e.eles!=null?e.eles:r.$();var s=new n(Ue({},e,{cy:r,eles:i}));return s}};Gn.createLayout=Gn.makeLayout=Gn.layout;var zd={notify:function(e,r){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();r!=null&&n.merge(r);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?r.notify(a):r.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};Ii.invalidateDimensions=Ii.resize;var Vn={collection:function(e,r){return j(e)?this.$(e):de(e)?e.collection():te(e)?(r||(r={}),new Nt(this,e,r.unique,r.removed)):new Nt(this)},nodes:function(e){var r=this.$(function(a){return a.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(a){return a.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};Vn.elements=Vn.filter=Vn.$;var Ft={},qa="t",Vd="f";Ft.apply=function(t){for(var e=this,r=e._private,a=r.cy,n=a.collection(),i=0;i0;if(c||h&&d){var v=void 0;c&&d||c?v=u.properties:d&&(v=u.mappedProperties);for(var p=0;p1&&(E=1),o.color){var A=a.valueMin[0],x=a.valueMax[0],R=a.valueMin[1],C=a.valueMax[1],B=a.valueMin[2],z=a.valueMax[2],M=a.valueMin[3]==null?1:a.valueMin[3],X=a.valueMax[3]==null?1:a.valueMax[3],F=[Math.round(A+(x-A)*E),Math.round(R+(C-R)*E),Math.round(B+(z-B)*E),Math.round(M+(X-M)*E)];i={bypass:a.bypass,name:a.name,value:F,strValue:"rgb("+F[0]+", "+F[1]+", "+F[2]+")"}}else if(o.number){var re=a.valueMin+(a.valueMax-a.valueMin)*E;i=this.parse(a.name,re,a.bypass,c)}else return!1;if(!i)return p(),!1;i.mapping=a,a=i;break}case s.data:{for(var q=a.field.split("."),Z=h.data,ie=0;ie0&&i>0){for(var o={},l=!1,u=0;u0?t.delayAnimation(s).play().promise().then(b):b()}).then(function(){return t.animation({style:o,duration:i,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(t,n),t.emitAndNotify("style"),a.transitioning=!1)},Ft.checkTrigger=function(t,e,r,a,n,i){var s=this.properties[e],o=n(s);o!=null&&o(r,a)&&i(s)},Ft.checkZOrderTrigger=function(t,e,r,a){var n=this;this.checkTrigger(t,e,r,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify("zorder",t)})},Ft.checkBoundsTrigger=function(t,e,r,a){this.checkTrigger(t,e,r,a,function(n){return n.triggersBounds},function(n){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),n.triggersBoundsOfParallelBeziers&&(e==="curve-style"&&(r==="bezier"||a==="bezier")||e==="display"&&(r==="none"||a==="none"))&&t.parallelEdges().forEach(function(i){i.isBundledBezier()&&i.dirtyBoundingBoxCache()})})},Ft.checkTriggers=function(t,e,r,a){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,a),this.checkBoundsTrigger(t,e,r,a)};var Ka={};Ka.applyBypass=function(t,e,r,a){var n=this,i=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var o=0;on.length?a=a.substr(n.length):a=""}function l(){i.length>s.length?i=i.substr(s.length):i=""}for(;;){var u=a.match(/^\s*$/);if(u)break;var f=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!f){ut("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}n=f[0];var h=f[1];if(h!=="core"){var c=new Sr(h);if(c.invalid){ut("Skipping parsing of block: Invalid selector found in string stylesheet: "+h),o();continue}}var d=f[2],v=!1;i=d;for(var p=[];;){var y=i.match(/^\s*$/);if(y)break;var g=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){ut("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+d),v=!0;break}s=g[0];var m=g[1],b=g[2],E=e.properties[m];if(!E){ut("Skipping property: Invalid property name in: "+s),l();continue}var N=r.parse(m,b);if(!N){ut("Skipping property: Invalid property definition in: "+s),l();continue}p.push({name:m,val:b}),l()}if(v){o();break}r.selector(h);for(var A=0;A=7&&e[0]==="d"&&(f=new RegExp(o.data.regex).exec(e))){if(r)return!1;var c=o.data;return{name:t,value:f,strValue:""+e,mapped:c,field:f[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(h=new RegExp(o.mapData.regex).exec(e))){if(r||u.multiple)return!1;var d=o.mapData;if(!(u.color||u.number))return!1;var v=this.parse(t,h[4]);if(!v||v.mapped)return!1;var p=this.parse(t,h[5]);if(!p||p.mapped)return!1;if(v.pfValue===p.pfValue||v.strValue===p.strValue)return ut("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+v.strValue+"`"),this.parse(t,v.strValue);if(u.color){var y=v.value,g=p.value,m=y[0]===g[0]&&y[1]===g[1]&&y[2]===g[2]&&(y[3]===g[3]||(y[3]==null||y[3]===1)&&(g[3]==null||g[3]===1));if(m)return!1}return{name:t,value:h,strValue:""+e,mapped:d,field:h[1],fieldMin:parseFloat(h[2]),fieldMax:parseFloat(h[3]),valueMin:v.value,valueMax:p.value,bypass:r}}}if(u.multiple&&a!=="multiple"){var b;if(l?b=e.split(/\s+/):te(e)?b=e:b=[e],u.evenMultiple&&b.length%2!==0)return null;for(var E=[],N=[],A=[],x="",R=!1,C=0;C0?" ":"")+B.strValue}return u.validate&&!u.validate(E,N)?null:u.singleEnum&&R?E.length===1&&j(E[0])?{name:t,value:E[0],strValue:E[0],bypass:r}:null:{name:t,value:E,pfValue:A,strValue:x,bypass:r,units:N}}var z=function(){for(var Ce=0;Ceu.max||u.strictMax&&e===u.max))return null;var q={name:t,value:e,strValue:""+e+(M||""),units:M,bypass:r};return u.unitless||M!=="px"&&M!=="em"?q.pfValue=e:q.pfValue=M==="px"||!M?e:this.getEmSizeInPixels()*e,(M==="ms"||M==="s")&&(q.pfValue=M==="ms"?e:1e3*e),(M==="deg"||M==="rad")&&(q.pfValue=M==="rad"?e:xf(e)),M==="%"&&(q.pfValue=e/100),q}else if(u.propList){var Z=[],ie=""+e;if(ie!=="none"){for(var ue=ie.split(/\s*,\s*|\s+/),ge=0;ge0&&o>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){l=Math.min((s-2*r)/a.w,(o-2*r)/a.h),l=l>this._private.maxZoom?this._private.maxZoom:l,l=l=a.minZoom&&(a.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,a=r.pan,n=r.zoom,i,s,o=!1;if(r.zoomingEnabled||(o=!0),I(e)?s=e:L(e)&&(s=e.level,e.position!=null?i=gn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!r.panningEnabled&&(o=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=l,i.push("zoom"))}if(n&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var u=e.pan;I(u.x)&&(r.pan.x=u.x,o=!1),I(u.y)&&(r.pan.y=u.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(j(e)){var a=e;e=this.mutableElements().filter(a)}else de(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var o={x:(i-r*(n.x1+n.x2))/2,y:(s-r*(n.y1+n.y2))/2};return o}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,a=this;return e.sizeCache=e.sizeCache||(r?function(){var n=a.window().getComputedStyle(r),i=function(o){return parseFloat(n.getPropertyValue(o))};return{width:r.clientWidth-i("padding-left")-i("padding-right"),height:r.clientHeight-i("padding-top")-i("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,a=this.renderedExtent(),n={x1:(a.x1-e.x)/r,x2:(a.x2-e.x)/r,y1:(a.y1-e.y)/r,y2:(a.y2-e.y)/r};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};$r.centre=$r.center,$r.autolockNodes=$r.autolock,$r.autoungrabifyNodes=$r.autoungrabify;var Za={data:ht.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:ht.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:ht.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:ht.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Za.attr=Za.data,Za.removeAttr=Za.removeData;var Qa=function(e){var r=this;e=Ue({},e);var a=e.container;a&&!fe(a)&&fe(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=r;var s=D!==void 0&&a!==void 0&&!e.headless,o=e;o.layout=Ue({name:s?"grid":"null"},o.layout),o.renderer=Ue({name:s?"canvas":"null"},o.renderer);var l=function(v,p,y){return p!==void 0?p:y!==void 0?y:v},u=this._private={container:a,ready:!1,options:o,elements:new Nt(this),listeners:[],aniEles:new Nt(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:l(!0,o.zoomingEnabled),userZoomingEnabled:l(!0,o.userZoomingEnabled),panningEnabled:l(!0,o.panningEnabled),userPanningEnabled:l(!0,o.userPanningEnabled),boxSelectionEnabled:l(!0,o.boxSelectionEnabled),autolock:l(!1,o.autolock,o.autolockNodes),autoungrabify:l(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:l(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:I(o.zoom)?o.zoom:1,pan:{x:L(o.pan)&&I(o.pan.x)?o.pan.x:0,y:L(o.pan)&&I(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:l(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var f=function(v,p){var y=v.some(rt);if(y)return sa.all(v).then(p);p(v)};u.styleEnabled&&r.setStyle([]);var h=Ue({},o,o.renderer);r.initRenderer(h);var c=function(v,p,y){r.notifications(!1);var g=r.mutableElements();g.length>0&&g.remove(),v!=null&&(L(v)||te(v))&&r.add(v),r.one("layoutready",function(b){r.notifications(!0),r.emit(b),r.one("load",p),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",y),r.emit("done")});var m=Ue({},r._private.options.layout);m.eles=r.elements(),r.layout(m).run()};f([o.style,o.elements],function(d){var v=d[0],p=d[1];u.styleEnabled&&r.style().append(v),c(p,function(){r.startAnimationLoop(),u.ready=!0,Y(o.ready)&&r.on("ready",o.ready);for(var y=0;y0,l=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),u;if(de(e.roots))u=e.roots;else if(te(e.roots)){for(var f=[],h=0;h0;){var re=F(),q=B(re,M);if(q)re.outgoers().filter(function(Re){return Re.isNode()&&a.has(Re)}).forEach(X);else if(q===null){ut("Detected double maximal shift for node `"+re.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}C();var Z=0;if(e.avoidOverlap)for(var ie=0;ie0&&g[0].length<=3?Ye/2:0),k=2*Math.PI/g[Fe].length*ke;return Fe===0&&g[0].length===1&&(De=1),{x:Me.x+De*Math.cos(k),y:Me.y+De*Math.sin(k)}}else{var ct={x:Me.x+(ke+1-(ze+1)/2)*je,y:(Fe+1)*Ze};return ct}};return a.nodes().layoutPositions(this,e,We),this};var Hd={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Wo(t){this.options=Ue({},Hd,t)}Wo.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));for(var s=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep,u=l/Math.max(1,i.length-1),f,h=0,c=0;c1&&e.avoidOverlap){h*=1.75;var g=Math.cos(u)-Math.cos(0),m=Math.sin(u)-Math.sin(0),b=Math.sqrt(h*h/(g*g+m*m));f=Math.max(b,f)}var E=function(A,x){var R=e.startAngle+x*u*(n?1:-1),C=f*Math.cos(R),B=f*Math.sin(R),z={x:o.x+C,y:o.y+B};return z};return a.nodes().layoutPositions(this,e,E),this};var Xd={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function qo(t){this.options=Ue({},Xd,t)}qo.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=t.cy,n=e.eles,i=n.nodes().not(":parent"),s=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=[],u=0,f=0;f0){var N=Math.abs(m[0].value-E.value);N>=y&&(m=[],g.push(m))}m.push(E)}var A=u+e.minNodeSpacing;if(!e.avoidOverlap){var x=g.length>0&&g[0].length>1,R=Math.min(s.w,s.h)/2-A,C=R/(g.length+x?1:0);A=Math.min(A,C)}for(var B=0,z=0;z1&&e.avoidOverlap){var re=Math.cos(F)-Math.cos(0),q=Math.sin(F)-Math.sin(0),Z=Math.sqrt(A*A/(re*re+q*q));B=Math.max(Z,B)}M.r=B,B+=A}if(e.equidistant){for(var ie=0,ue=0,ge=0;ge=t.numIter||(eg(a,t),a.temperature=a.temperature*t.coolingFactor,a.temperature=t.animationThreshold&&i(),hn(h)}};f()}else{for(;u;)u=s(l),l++;Qo(a,t),o()}return this},Yn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Yn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var qd=function(e,r,a){for(var n=a.eles.edges(),i=a.eles.nodes(),s=Yt(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},l=a.eles.components(),u={},f=0;f0){o.graphSet.push(R);for(var f=0;fn.count?0:n.graph},Zd=function t(e,r,a,n){var i=n.graphSet[a];if(-10)var h=n.nodeOverlap*f,c=Math.sqrt(o*o+l*l),d=h*o/c,v=h*l/c;else var p=Hn(e,o,l),y=Hn(r,-1*o,-1*l),g=y.x-p.x,m=y.y-p.y,b=g*g+m*m,c=Math.sqrt(b),h=(e.nodeRepulsion+r.nodeRepulsion)/b,d=h*g/c,v=h*m/c;e.isLocked||(e.offsetX-=d,e.offsetY-=v),r.isLocked||(r.offsetX+=d,r.offsetY+=v)}},ag=function(e,r,a,n){if(a>0)var i=e.maxX-r.minX;else var i=r.maxX-e.minX;if(n>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return i>=0&&s>=0?Math.sqrt(i*i+s*s):0},Hn=function(e,r,a){var n=e.positionX,i=e.positionY,s=e.height||1,o=e.width||1,l=a/r,u=s/o,f={};return r===0&&0a?(f.x=n,f.y=i+s/2,f):0r&&-1*u<=l&&l<=u?(f.x=n-o/2,f.y=i-o*a/2/r,f):0=u)?(f.x=n+s*r/2/a,f.y=i+s/2,f):(0>a&&(l<=-1*u||l>=u)&&(f.x=n-s*r/2/a,f.y=i-s/2),f)},ng=function(e,r){for(var a=0;aa){var y=r.gravity*d/p,g=r.gravity*v/p;c.offsetX+=y,c.offsetY+=g}}}}},sg=function(e,r){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var s=a[n++],o=e.idToIndex[s],l=e.layoutNodes[o],u=l.children;if(0a)var i={x:a*e/n,y:a*r/n};else var i={x:e,y:r};return i},lg=function t(e,r){var a=e.parentId;if(a!=null){var n=r.layoutNodes[r.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopg&&(v+=y+r.componentSpacing,d=0,p=0,y=0)}}},fg={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};function Jo(t){this.options=Ue({},fg,t)}Jo.prototype.run=function(){var t=this.options,e=t,r=t.cy,a=e.eles,n=a.nodes().not(":parent");e.sort&&(n=n.sort(e.sort));var i=Yt(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(ye){return{x:i.x1,y:i.y1}});else{var s=n.size(),o=Math.sqrt(s*i.h/i.w),l=Math.round(o),u=Math.round(i.w/i.h*o),f=function(Te){if(Te==null)return Math.min(l,u);var be=Math.min(l,u);be==l?l=Te:u=Te},h=function(Te){if(Te==null)return Math.max(l,u);var be=Math.max(l,u);be==l?l=Te:u=Te},c=e.rows,d=e.cols!=null?e.cols:e.columns;if(c!=null&&d!=null)l=c,u=d;else if(c!=null&&d==null)l=c,u=Math.ceil(s/l);else if(c==null&&d!=null)u=d,l=Math.ceil(s/u);else if(u*l>s){var v=f(),p=h();(v-1)*p>=s?f(v-1):(p-1)*v>=s&&h(p-1)}else for(;u*l=s?h(g+1):f(y+1)}var m=i.w/u,b=i.h/l;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var E=0;E=u&&(re=0,F++)},Z={},ie=0;ie(re=Pf(t,e,q[Z],q[Z+1],q[Z+2],q[Z+3])))return y(x,re),!0}else if(C.edgeType==="bezier"||C.edgeType==="multibezier"||C.edgeType==="self"||C.edgeType==="compound"){for(var q=C.allpts,Z=0;Z+5(re=kf(t,e,q[Z],q[Z+1],q[Z+2],q[Z+3],q[Z+4],q[Z+5])))return y(x,re),!0}for(var ie=ie||R.source,ue=ue||R.target,ge=n.getArrowWidth(B,z),se=[{name:"source",x:C.arrowStartX,y:C.arrowStartY,angle:C.srcArrowAngle},{name:"target",x:C.arrowEndX,y:C.arrowEndY,angle:C.tgtArrowAngle},{name:"mid-source",x:C.midX,y:C.midY,angle:C.midsrcArrowAngle},{name:"mid-target",x:C.midX,y:C.midY,angle:C.midtgtArrowAngle}],Z=0;Z0&&(g(ie),g(ue))}function b(x,R,C){return tr(x,R,C)}function E(x,R){var C=x._private,B=c,z;R?z=R+"-":z="",x.boundingBox();var M=C.labelBounds[R||"main"],X=x.pstyle(z+"label").value,F=x.pstyle("text-events").strValue==="yes";if(!(!F||!X)){var re=b(C.rscratch,"labelX",R),q=b(C.rscratch,"labelY",R),Z=b(C.rscratch,"labelAngle",R),ie=x.pstyle(z+"text-margin-x").pfValue,ue=x.pstyle(z+"text-margin-y").pfValue,ge=M.x1-B-ie,se=M.x2+B-ie,ve=M.y1-B-ue,ye=M.y2+B-ue;if(Z){var Te=Math.cos(Z),be=Math.sin(Z),me=function(We,Re){return We=We-re,Re=Re-q,{x:We*Te-Re*be+re,y:We*be+Re*Te+q}},ae=me(ge,ve),xe=me(ge,ye),Ce=me(se,ve),Oe=me(se,ye),Me=[ae.x+ie,ae.y+ue,Ce.x+ie,Ce.y+ue,Oe.x+ie,Oe.y+ue,xe.x+ie,xe.y+ue];if(Ht(t,e,Me))return y(x),!0}else if(ra(M,t,e))return y(x),!0}}for(var N=s.length-1;N>=0;N--){var A=s[N];A.isNode()?g(A)||E(A):m(A)||E(A)||E(A,"source")||E(A,"target")}return o},_r.getAllInBox=function(t,e,r,a){var n=this.getCachedZSortedEles().interactive,i=[],s=Math.min(t,r),o=Math.max(t,r),l=Math.min(e,a),u=Math.max(e,a);t=s,r=o,e=l,a=u;for(var f=Yt({x1:t,y1:e,x2:r,y2:a}),h=0;h0?Math.max(Le-$e,0):Math.min(Le+$e,0)},X=M(B,R),F=M(z,C),re=!1;m===u?g=Math.abs(X)>Math.abs(F)?n:a:m===l||m===o?(g=a,re=!0):(m===i||m===s)&&(g=n,re=!0);var q=g===a,Z=q?F:X,ie=q?z:B,ue=bs(ie),ge=!1;!(re&&(E||A))&&(m===o&&ie<0||m===l&&ie>0||m===i&&ie>0||m===s&&ie<0)&&(ue*=-1,Z=ue*Math.abs(Z),ge=!0);var se;if(E){var ve=N<0?1+N:N;se=ve*Z}else{var ye=N<0?Z:0;se=ye+N*ue}var Te=function(Le){return Math.abs(Le)=Math.abs(Z)},be=Te(se),me=Te(Math.abs(Z)-Math.abs(se)),ae=be||me;if(ae&&!ge)if(q){var xe=Math.abs(ie)<=c/2,Ce=Math.abs(B)<=d/2;if(xe){var Oe=(f.x1+f.x2)/2,Me=f.y1,He=f.y2;r.segpts=[Oe,Me,Oe,He]}else if(Ce){var We=(f.y1+f.y2)/2,Re=f.x1,Ie=f.x2;r.segpts=[Re,We,Ie,We]}else r.segpts=[f.x1,f.y2]}else{var Ge=Math.abs(ie)<=h/2,Fe=Math.abs(z)<=v/2;if(Ge){var ke=(f.y1+f.y2)/2,ze=f.x1,je=f.x2;r.segpts=[ze,ke,je,ke]}else if(Fe){var Ze=(f.x1+f.x2)/2,Ye=f.y1,ct=f.y2;r.segpts=[Ze,Ye,Ze,ct]}else r.segpts=[f.x2,f.y1]}else if(q){var De=f.y1+se+(y?c/2*ue:0),k=f.x1,he=f.x2;r.segpts=[k,De,he,De]}else{var Se=f.x1+se+(y?h/2*ue:0),Ee=f.y1,we=f.y2;r.segpts=[Se,Ee,Se,we]}},Vt.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var a=e.srcPos,n=e.tgtPos,i=e.srcW,s=e.srcH,o=e.tgtW,l=e.tgtH,u=e.srcShape,f=e.tgtShape,h=!I(r.startX)||!I(r.startY),c=!I(r.arrowStartX)||!I(r.arrowStartY),d=!I(r.endX)||!I(r.endY),v=!I(r.arrowEndX)||!I(r.arrowEndY),p=3,y=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,g=p*y,m=Br({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),b=mF.poolIndex()){var re=X;X=F,F=re}var q=C.srcPos=X.position(),Z=C.tgtPos=F.position(),ie=C.srcW=X.outerWidth(),ue=C.srcH=X.outerHeight(),ge=C.tgtW=F.outerWidth(),se=C.tgtH=F.outerHeight(),ve=C.srcShape=r.nodeShapes[e.getNodeShape(X)],ye=C.tgtShape=r.nodeShapes[e.getNodeShape(F)];C.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var Te=0;Te0){var xe=i,Ce=Fr(xe,ea(r)),Oe=Fr(xe,ea(ae)),Me=Ce;if(Oe2){var He=Fr(xe,{x:ae[2],y:ae[3]});He0){var k=s,he=Fr(k,ea(r)),Se=Fr(k,ea(De)),Ee=he;if(Se2){var we=Fr(k,{x:De[2],y:De[3]});we=v||x){y={cp:E,segment:A};break}}if(y)break}var R=y.cp,C=y.segment,B=(v-g)/C.length,z=C.t1-C.t0,M=d?C.t0+z*B:C.t1-z*B;M=Pa(0,M,1),e=ta(R.p0,R.p1,R.p2,M),c=pg(R.p0,R.p1,R.p2,M);break}case"straight":case"segments":case"haystack":{for(var X=0,F,re,q,Z,ie=a.allpts.length,ue=0;ue+3=v));ue+=2);var ge=v-re,se=ge/F;se=Pa(0,se,1),e=Cf(q,Z,se),c=su(q,Z);break}}s("labelX",h,e.x),s("labelY",h,e.y),s("labelAutoAngle",h,c)}};u("source"),u("target"),this.applyLabelDimensions(t)}},hr.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))},hr.applyPrefixedLabelDimensions=function(t,e){var r=t._private,a=this.getLabelText(t,e),n=this.calculateLabelDimensions(t,a),i=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,o=tr(r.rscratch,"labelWrapCachedLines",e)||[],l=s!=="wrap"?1:Math.max(o.length,1),u=n.height/l,f=u*i,h=n.width,c=n.height+(l-1)*(i-1)*u;Tr(r.rstyle,"labelWidth",e,h),Tr(r.rscratch,"labelWidth",e,h),Tr(r.rstyle,"labelHeight",e,c),Tr(r.rscratch,"labelHeight",e,c),Tr(r.rscratch,"labelLineHeight",e,f)},hr.getLabelText=function(t,e){var r=t._private,a=e?e+"-":"",n=t.pstyle(a+"label").strValue,i=t.pstyle("text-transform").value,s=function(ge,se){return se?(Tr(r.rscratch,ge,e,se),se):tr(r.rscratch,ge,e)};if(!n)return"";i=="none"||(i=="uppercase"?n=n.toUpperCase():i=="lowercase"&&(n=n.toLowerCase()));var o=t.pstyle("text-wrap").value;if(o==="wrap"){var l=s("labelKey");if(l!=null&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var u="​",f=n.split(` +`),h=t.pstyle("text-max-width").pfValue,c=t.pstyle("text-overflow-wrap").value,d=c==="anywhere",v=[],p=/[\s\u200b]+/,y=d?"":" ",g=0;gh){for(var A=m.split(p),x="",R=0;RX)break;F+=n[Z],Z===n.length-1&&(q=!0)}return q||(F+=re),F}return n},hr.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e},hr.calculateLabelDimensions=function(t,e){var r=this,a=Pr(e,t._private.labelDimsKey),n=r.labelDimCache||(r.labelDimCache=[]),i=n[a];if(i!=null)return i;var s=0,o=t.pstyle("font-style").strValue,l=t.pstyle("font-size").pfValue,u=t.pstyle("font-family").strValue,f=t.pstyle("font-weight").strValue,h=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!h){h=this.labelCalcCanvas=document.createElement("canvas"),c=this.labelCalcCanvasContext=h.getContext("2d");var d=h.style;d.position="absolute",d.left="-9999px",d.top="-9999px",d.zIndex="-1",d.visibility="hidden",d.pointerEvents="none"}c.font="".concat(o," ").concat(f," ").concat(l,"px ").concat(u);for(var v=0,p=0,y=e.split(` +`),g=0;g1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),o)for(var l=0;l=t.desktopTapThreshold2}var Er=n(k);Rt&&(t.hoverData.tapholdCancelled=!0);var Rr=function(){var vr=t.hoverData.dragDelta=t.hoverData.dragDelta||[];vr.length===0?(vr.push(Je[0]),vr.push(Je[1])):(vr[0]+=Je[0],vr[1]+=Je[1])};Se=!0,a(Qe,["mousemove","vmousemove","tapdrag"],k,{x:Le[0],y:Le[1]});var Ta=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||Ee.emit({originalEvent:k,type:"boxstart",position:{x:Le[0],y:Le[1]}}),gt[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(t.hoverData.which===3){if(Rt){var Xr={originalEvent:k,type:"cxtdrag",position:{x:Le[0],y:Le[1]}};Ke?Ke.emit(Xr):Ee.emit(Xr),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||Qe!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:k,type:"cxtdragout",position:{x:Le[0],y:Le[1]}}),t.hoverData.cxtOver=Qe,Qe&&Qe.emit({originalEvent:k,type:"cxtdragover",position:{x:Le[0],y:Le[1]}}))}}else if(t.hoverData.dragging){if(Se=!0,Ee.panningEnabled()&&Ee.userPanningEnabled()){var Ca;if(t.hoverData.justStartedPan){var Jn=t.hoverData.mdownPos;Ca={x:(Le[0]-Jn[0])*we,y:(Le[1]-Jn[1])*we},t.hoverData.justStartedPan=!1}else Ca={x:Je[0]*we,y:Je[1]*we};Ee.panBy(Ca),Ee.emit("dragpan"),t.hoverData.dragged=!0}Le=t.projectIntoViewport(k.clientX,k.clientY)}else if(gt[4]==1&&(Ke==null||Ke.pannable())){if(Rt){if(!t.hoverData.dragging&&Ee.boxSelectionEnabled()&&(Er||!Ee.panningEnabled()||!Ee.userPanningEnabled()))Ta();else if(!t.hoverData.selecting&&Ee.panningEnabled()&&Ee.userPanningEnabled()){var Wr=i(Ke,t.hoverData.downs);Wr&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,gt[4]=0,t.data.bgActivePosistion=ea($e),t.redrawHint("select",!0),t.redraw())}Ke&&Ke.pannable()&&Ke.active()&&Ke.unactivate()}}else{if(Ke&&Ke.pannable()&&Ke.active()&&Ke.unactivate(),(!Ke||!Ke.grabbed())&&Qe!=lt&&(lt&&a(lt,["mouseout","tapdragout"],k,{x:Le[0],y:Le[1]}),Qe&&a(Qe,["mouseover","tapdragover"],k,{x:Le[0],y:Le[1]}),t.hoverData.last=Qe),Ke)if(Rt){if(Ee.boxSelectionEnabled()&&Er)Ke&&Ke.grabbed()&&(y(Dt),Ke.emit("freeon"),Dt.emit("free"),t.dragData.didDrag&&(Ke.emit("dragfreeon"),Dt.emit("dragfree"))),Ta();else if(Ke&&Ke.grabbed()&&t.nodeIsDraggable(Ke)){var Xt=!t.dragData.didDrag;Xt&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||v(Dt,{inDragLayer:!0});var $t={x:0,y:0};if(I(Je[0])&&I(Je[1])&&($t.x+=Je[0],$t.y+=Je[1],Xt)){var Wt=t.hoverData.dragDelta;Wt&&I(Wt[0])&&I(Wt[1])&&($t.x+=Wt[0],$t.y+=Wt[1])}t.hoverData.draggingEles=!0,Dt.silentShift($t).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else Rr();Se=!0}if(gt[2]=Le[0],gt[3]=Le[1],Se)return k.stopPropagation&&k.stopPropagation(),k.preventDefault&&k.preventDefault(),!1}},!1);var B,z,M;t.registerBinding(e,"mouseup",function(k){var he=t.hoverData.capture;if(he){t.hoverData.capture=!1;var Se=t.cy,Ee=t.projectIntoViewport(k.clientX,k.clientY),we=t.selection,qe=t.findNearestElement(Ee[0],Ee[1],!0,!1),Le=t.dragData.possibleDragElements,$e=t.hoverData.down,ot=n(k);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,$e&&$e.unactivate(),t.hoverData.which===3){var gt={originalEvent:k,type:"cxttapend",position:{x:Ee[0],y:Ee[1]}};if($e?$e.emit(gt):Se.emit(gt),!t.hoverData.cxtDragged){var Qe={originalEvent:k,type:"cxttap",position:{x:Ee[0],y:Ee[1]}};$e?$e.emit(Qe):Se.emit(Qe)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(a(qe,["mouseup","tapend","vmouseup"],k,{x:Ee[0],y:Ee[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(a($e,["click","tap","vclick"],k,{x:Ee[0],y:Ee[1]}),z=!1,k.timeStamp-M<=Se.multiClickDebounceTime()?(B&&clearTimeout(B),z=!0,M=null,a($e,["dblclick","dbltap","vdblclick"],k,{x:Ee[0],y:Ee[1]})):(B=setTimeout(function(){z||a($e,["oneclick","onetap","voneclick"],k,{x:Ee[0],y:Ee[1]})},Se.multiClickDebounceTime()),M=k.timeStamp)),$e==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!n(k)&&(Se.$(r).unselect(["tapunselect"]),Le.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=Le=Se.collection()),qe==$e&&!t.dragData.didDrag&&!t.hoverData.selecting&&qe!=null&&qe._private.selectable&&(t.hoverData.dragging||(Se.selectionType()==="additive"||ot?qe.selected()?qe.unselect(["tapunselect"]):qe.select(["tapselect"]):ot||(Se.$(r).unmerge(qe).unselect(["tapunselect"]),qe.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var lt=Se.collection(t.getAllInBox(we[0],we[1],we[2],we[3]));t.redrawHint("select",!0),lt.length>0&&t.redrawHint("eles",!0),Se.emit({type:"boxend",originalEvent:k,position:{x:Ee[0],y:Ee[1]}});var Ke=function(Rt){return Rt.selectable()&&!Rt.selected()};Se.selectionType()==="additive"||ot||Se.$(r).unmerge(lt).unselect(),lt.emit("box").stdFilter(Ke).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!we[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Je=$e&&$e.grabbed();y(Le),Je&&($e.emit("freeon"),Le.emit("free"),t.dragData.didDrag&&($e.emit("dragfreeon"),Le.emit("dragfree")))}}we[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null}},!1);var X=function(k){if(!t.scrollingPage){var he=t.cy,Se=he.zoom(),Ee=he.pan(),we=t.projectIntoViewport(k.clientX,k.clientY),qe=[we[0]*Se+Ee.x,we[1]*Se+Ee.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||R()){k.preventDefault();return}if(he.panningEnabled()&&he.userPanningEnabled()&&he.zoomingEnabled()&&he.userZoomingEnabled()){k.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var Le;k.deltaY!=null?Le=k.deltaY/-250:k.wheelDeltaY!=null?Le=k.wheelDeltaY/1e3:Le=k.wheelDelta/1e3,Le=Le*t.wheelSensitivity;var $e=k.deltaMode===1;$e&&(Le*=33);var ot=he.zoom()*Math.pow(10,Le);k.type==="gesturechange"&&(ot=t.gestureStartZoom*k.scale),he.zoom({level:ot,renderedPosition:{x:qe[0],y:qe[1]}}),he.emit(k.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",X,!0),t.registerBinding(e,"scroll",function(k){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"gesturestart",function(k){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||k.preventDefault()},!0),t.registerBinding(t.container,"gesturechange",function(De){t.hasTouchStarted||X(De)},!0),t.registerBinding(t.container,"mouseout",function(k){var he=t.projectIntoViewport(k.clientX,k.clientY);t.cy.emit({originalEvent:k,type:"mouseout",position:{x:he[0],y:he[1]}})},!1),t.registerBinding(t.container,"mouseover",function(k){var he=t.projectIntoViewport(k.clientX,k.clientY);t.cy.emit({originalEvent:k,type:"mouseover",position:{x:he[0],y:he[1]}})},!1);var F,re,q,Z,ie,ue,ge,se,ve,ye,Te,be,me,ae=function(k,he,Se,Ee){return Math.sqrt((Se-k)*(Se-k)+(Ee-he)*(Ee-he))},xe=function(k,he,Se,Ee){return(Se-k)*(Se-k)+(Ee-he)*(Ee-he)},Ce;t.registerBinding(t.container,"touchstart",Ce=function(k){if(t.hasTouchStarted=!0,!!C(k)){m(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var he=t.cy,Se=t.touchData.now,Ee=t.touchData.earlier;if(k.touches[0]){var we=t.projectIntoViewport(k.touches[0].clientX,k.touches[0].clientY);Se[0]=we[0],Se[1]=we[1]}if(k.touches[1]){var we=t.projectIntoViewport(k.touches[1].clientX,k.touches[1].clientY);Se[2]=we[0],Se[3]=we[1]}if(k.touches[2]){var we=t.projectIntoViewport(k.touches[2].clientX,k.touches[2].clientY);Se[4]=we[0],Se[5]=we[1]}if(k.touches[1]){t.touchData.singleTouchMoved=!0,y(t.dragData.touchDragEles);var qe=t.findContainerClientCoords();ve=qe[0],ye=qe[1],Te=qe[2],be=qe[3],F=k.touches[0].clientX-ve,re=k.touches[0].clientY-ye,q=k.touches[1].clientX-ve,Z=k.touches[1].clientY-ye,me=0<=F&&F<=Te&&0<=q&&q<=Te&&0<=re&&re<=be&&0<=Z&&Z<=be;var Le=he.pan(),$e=he.zoom();ie=ae(F,re,q,Z),ue=xe(F,re,q,Z),ge=[(F+q)/2,(re+Z)/2],se=[(ge[0]-Le.x)/$e,(ge[1]-Le.y)/$e];var ot=200,gt=ot*ot;if(ue=1){for(var ir=t.touchData.startPosition=[null,null,null,null,null,null],kt=0;kt=t.touchTapThreshold2}if(he&&t.touchData.cxt){k.preventDefault();var ir=k.touches[0].clientX-ve,kt=k.touches[0].clientY-ye,Jt=k.touches[1].clientX-ve,Ut=k.touches[1].clientY-ye,Er=xe(ir,kt,Jt,Ut),Rr=Er/ue,Ta=150,Xr=Ta*Ta,Ca=1.5,Jn=Ca*Ca;if(Rr>=Jn||Er>=Xr){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Wr={originalEvent:k,type:"cxttapend",position:{x:we[0],y:we[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(Wr),t.touchData.start=null):Ee.emit(Wr)}}if(he&&t.touchData.cxt){var Wr={originalEvent:k,type:"cxtdrag",position:{x:we[0],y:we[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(Wr):Ee.emit(Wr),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var Xt=t.findNearestElement(we[0],we[1],!0,!0);(!t.touchData.cxtOver||Xt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:k,type:"cxtdragout",position:{x:we[0],y:we[1]}}),t.touchData.cxtOver=Xt,Xt&&Xt.emit({originalEvent:k,type:"cxtdragover",position:{x:we[0],y:we[1]}}))}else if(he&&k.touches[2]&&Ee.boxSelectionEnabled())k.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||Ee.emit({originalEvent:k,type:"boxstart",position:{x:we[0],y:we[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,Se[4]=1,!Se||Se.length===0||Se[0]===void 0?(Se[0]=(we[0]+we[2]+we[4])/3,Se[1]=(we[1]+we[3]+we[5])/3,Se[2]=(we[0]+we[2]+we[4])/3+1,Se[3]=(we[1]+we[3]+we[5])/3+1):(Se[2]=(we[0]+we[2]+we[4])/3,Se[3]=(we[1]+we[3]+we[5])/3),t.redrawHint("select",!0),t.redraw();else if(he&&k.touches[1]&&!t.touchData.didSelect&&Ee.zoomingEnabled()&&Ee.panningEnabled()&&Ee.userZoomingEnabled()&&Ee.userPanningEnabled()){k.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var $t=t.dragData.touchDragEles;if($t){t.redrawHint("drag",!0);for(var Wt=0;Wt<$t.length;Wt++){var jn=$t[Wt]._private;jn.grabbed=!1,jn.rscratch.inDragLayer=!1}}var vr=t.touchData.start,ir=k.touches[0].clientX-ve,kt=k.touches[0].clientY-ye,Jt=k.touches[1].clientX-ve,Ut=k.touches[1].clientY-ye,Bu=ae(ir,kt,Jt,Ut),hp=Bu/ie;if(me){var cp=ir-F,vp=kt-re,dp=Jt-q,gp=Ut-Z,pp=(cp+dp)/2,yp=(vp+gp)/2,an=Ee.zoom(),Xi=an*hp,ei=Ee.pan(),Fu=se[0]*an+ei.x,zu=se[1]*an+ei.y,mp={x:-Xi/an*(Fu-ei.x-pp)+Fu,y:-Xi/an*(zu-ei.y-yp)+zu};if(vr&&vr.active()){var $t=t.dragData.touchDragEles;y($t),t.redrawHint("drag",!0),t.redrawHint("eles",!0),vr.unactivate().emit("freeon"),$t.emit("free"),t.dragData.didDrag&&(vr.emit("dragfreeon"),$t.emit("dragfree"))}Ee.viewport({zoom:Xi,pan:mp,cancelOnFailedZoom:!0}),Ee.emit("pinchzoom"),ie=Bu,F=ir,re=kt,q=Jt,Z=Ut,t.pinching=!0}if(k.touches[0]){var $e=t.projectIntoViewport(k.touches[0].clientX,k.touches[0].clientY);we[0]=$e[0],we[1]=$e[1]}if(k.touches[1]){var $e=t.projectIntoViewport(k.touches[1].clientX,k.touches[1].clientY);we[2]=$e[0],we[3]=$e[1]}if(k.touches[2]){var $e=t.projectIntoViewport(k.touches[2].clientX,k.touches[2].clientY);we[4]=$e[0],we[5]=$e[1]}}else if(k.touches[0]&&!t.touchData.didSelect){var sr=t.touchData.start,Wi=t.touchData.last,Xt;if(!t.hoverData.draggingEles&&!t.swipePanning&&(Xt=t.findNearestElement(we[0],we[1],!0,!0)),he&&sr!=null&&k.preventDefault(),he&&sr!=null&&t.nodeIsDraggable(sr))if(gt){var $t=t.dragData.touchDragEles,Gu=!t.dragData.didDrag;Gu&&v($t,{inDragLayer:!0}),t.dragData.didDrag=!0;var nn={x:0,y:0};if(I(Qe[0])&&I(Qe[1])&&(nn.x+=Qe[0],nn.y+=Qe[1],Gu)){t.redrawHint("eles",!0);var or=t.touchData.dragDelta;or&&I(or[0])&&I(or[1])&&(nn.x+=or[0],nn.y+=or[1])}t.hoverData.draggingEles=!0,$t.silentShift(nn).emit("position drag"),t.redrawHint("drag",!0),t.touchData.startPosition[0]==qe[0]&&t.touchData.startPosition[1]==qe[1]&&t.redrawHint("eles",!0),t.redraw()}else{var or=t.touchData.dragDelta=t.touchData.dragDelta||[];or.length===0?(or.push(Qe[0]),or.push(Qe[1])):(or[0]+=Qe[0],or[1]+=Qe[1])}if(a(sr||Xt,["touchmove","tapdrag","vmousemove"],k,{x:we[0],y:we[1]}),(!sr||!sr.grabbed())&&Xt!=Wi&&(Wi&&Wi.emit({originalEvent:k,type:"tapdragout",position:{x:we[0],y:we[1]}}),Xt&&Xt.emit({originalEvent:k,type:"tapdragover",position:{x:we[0],y:we[1]}})),t.touchData.last=Xt,he)for(var Wt=0;Wt0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1);var Me;t.registerBinding(e,"touchcancel",Me=function(k){var he=t.touchData.start;t.touchData.capture=!1,he&&he.unactivate()});var He,We,Re,Ie;if(t.registerBinding(e,"touchend",He=function(k){var he=t.touchData.start,Se=t.touchData.capture;if(Se)k.touches.length===0&&(t.touchData.capture=!1),k.preventDefault();else return;var Ee=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var we=t.cy,qe=we.zoom(),Le=t.touchData.now,$e=t.touchData.earlier;if(k.touches[0]){var ot=t.projectIntoViewport(k.touches[0].clientX,k.touches[0].clientY);Le[0]=ot[0],Le[1]=ot[1]}if(k.touches[1]){var ot=t.projectIntoViewport(k.touches[1].clientX,k.touches[1].clientY);Le[2]=ot[0],Le[3]=ot[1]}if(k.touches[2]){var ot=t.projectIntoViewport(k.touches[2].clientX,k.touches[2].clientY);Le[4]=ot[0],Le[5]=ot[1]}he&&he.unactivate();var gt;if(t.touchData.cxt){if(gt={originalEvent:k,type:"cxttapend",position:{x:Le[0],y:Le[1]}},he?he.emit(gt):we.emit(gt),!t.touchData.cxtDragged){var Qe={originalEvent:k,type:"cxttap",position:{x:Le[0],y:Le[1]}};he?he.emit(Qe):we.emit(Qe)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!k.touches[2]&&we.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var lt=we.collection(t.getAllInBox(Ee[0],Ee[1],Ee[2],Ee[3]));Ee[0]=void 0,Ee[1]=void 0,Ee[2]=void 0,Ee[3]=void 0,Ee[4]=0,t.redrawHint("select",!0),we.emit({type:"boxend",originalEvent:k,position:{x:Le[0],y:Le[1]}});var Ke=function(Xr){return Xr.selectable()&&!Xr.selected()};lt.emit("box").stdFilter(Ke).select().emit("boxselect"),lt.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(he!=null&&he.unactivate(),k.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!k.touches[1]){if(!k.touches[0]){if(!k.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Je=t.dragData.touchDragEles;if(he!=null){var Dt=he._private.grabbed;y(Je),t.redrawHint("drag",!0),t.redrawHint("eles",!0),Dt&&(he.emit("freeon"),Je.emit("free"),t.dragData.didDrag&&(he.emit("dragfreeon"),Je.emit("dragfree"))),a(he,["touchend","tapend","vmouseup","tapdragout"],k,{x:Le[0],y:Le[1]}),he.unactivate(),t.touchData.start=null}else{var Rt=t.findNearestElement(Le[0],Le[1],!0,!0);a(Rt,["touchend","tapend","vmouseup","tapdragout"],k,{x:Le[0],y:Le[1]})}var nr=t.touchData.startPosition[0]-Le[0],ir=nr*nr,kt=t.touchData.startPosition[1]-Le[1],Jt=kt*kt,Ut=ir+Jt,Er=Ut*qe*qe;t.touchData.singleTouchMoved||(he||we.$(":selected").unselect(["tapunselect"]),a(he,["tap","vclick"],k,{x:Le[0],y:Le[1]}),We=!1,k.timeStamp-Ie<=we.multiClickDebounceTime()?(Re&&clearTimeout(Re),We=!0,Ie=null,a(he,["dbltap","vdblclick"],k,{x:Le[0],y:Le[1]})):(Re=setTimeout(function(){We||a(he,["onetap","voneclick"],k,{x:Le[0],y:Le[1]})},we.multiClickDebounceTime()),Ie=k.timeStamp)),he!=null&&!t.dragData.didDrag&&he._private.selectable&&Er"u"){var Ge=[],Fe=function(k){return{clientX:k.clientX,clientY:k.clientY,force:1,identifier:k.pointerId,pageX:k.pageX,pageY:k.pageY,radiusX:k.width/2,radiusY:k.height/2,screenX:k.screenX,screenY:k.screenY,target:k.target}},ke=function(k){return{event:k,touch:Fe(k)}},ze=function(k){Ge.push(ke(k))},je=function(k){for(var he=0;he0)return se[0]}return null},d=Object.keys(h),v=0;v0?c:xs(i,s,e,r,a,n,o)},checkPoint:function(e,r,a,n,i,s,o){var l=za(n,i),u=2*l;if(pr(e,r,this.points,s,o,n,i-u,[0,-1],a)||pr(e,r,this.points,s,o,n-u,i,[0,-1],a))return!0;var f=n/2+2*a,h=i/2+2*a,c=[s-f,o-h,s-f,o,s+f,o,s+f,o-h];return!!(Ht(e,r,c)||zr(e,r,u,u,s+n/2-l,o+i/2-l,a)||zr(e,r,u,u,s-n/2+l,o+i/2-l,a))}}},mr.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",_t(3,0)),this.generateRoundPolygon("round-triangle",_t(3,0)),this.generatePolygon("rectangle",_t(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",_t(5,0)),this.generateRoundPolygon("round-pentagon",_t(5,0)),this.generatePolygon("hexagon",_t(6,0)),this.generateRoundPolygon("round-hexagon",_t(6,0)),this.generatePolygon("heptagon",_t(7,0)),this.generateRoundPolygon("round-heptagon",_t(7,0)),this.generatePolygon("octagon",_t(8,0)),this.generateRoundPolygon("round-octagon",_t(8,0));var a=new Array(20);{var n=ci(5,0),i=ci(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var o=0;o=e.deqFastCost*E)break}else if(u){if(m>=e.deqCost*d||m>=e.deqAvgCost*c)break}else if(b>=e.deqNoDrawCost*Gi)break;var N=e.deq(a,y,p);if(N.length>0)for(var A=0;A0&&(e.onDeqd(a,v),!u&&e.shouldRedraw(a,v,y,p)&&i())},o=e.priority||ii;n.beforeRender(s,o(a))}}}},mg=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:vn;ce(this,t),this.idsByKey=new lr,this.keyForId=new lr,this.cachesByLvl=new lr,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return O(t,[{key:"getIdsFor",value:function(r){r==null&&Tt("Can not get id list for null key");var a=this.idsByKey,n=this.idsByKey.get(r);return n||(n=new jr,a.set(r,n)),n}},{key:"addIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).add(a)}},{key:"deleteIdForKey",value:function(r,a){r!=null&&this.getIdsFor(r).delete(a)}},{key:"getNumberOfIdsForKey",value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:"updateKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:"deleteKeyMappingFor",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:"keyHasChangedFor",value:function(r){var a=r.id(),n=this.keyForId.get(a),i=this.getKey(r);return n!==i}},{key:"isInvalid",value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:"getCachesAt",value:function(r){var a=this.cachesByLvl,n=this.lvls,i=a.get(r);return i||(i=new lr,a.set(r,i),n.push(r)),i}},{key:"getCache",value:function(r,a){return this.getCachesAt(a).get(r)}},{key:"get",value:function(r,a){var n=this.getKey(r),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(r),i}},{key:"getForCachedKey",value:function(r,a){var n=this.keyForId.get(r.id()),i=this.getCache(n,a);return i}},{key:"hasCache",value:function(r,a){return this.getCachesAt(a).has(r)}},{key:"has",value:function(r,a){var n=this.getKey(r);return this.hasCache(n,a)}},{key:"setCache",value:function(r,a,n){n.key=r,this.getCachesAt(a).set(r,n)}},{key:"set",value:function(r,a,n){var i=this.getKey(r);this.setCache(i,a,n),this.updateKeyMappingFor(r)}},{key:"deleteCache",value:function(r,a){this.getCachesAt(a).delete(r)}},{key:"delete",value:function(r,a){var n=this.getKey(r);this.deleteCache(n,a)}},{key:"invalidateKey",value:function(r){var a=this;this.lvls.forEach(function(n){return a.deleteCache(r,n)})}},{key:"invalidate",value:function(r){var a=r.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(r);var i=this.doesEleInvalidateKey(r);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}]),t}(),gu=25,Kn=50,Zn=-4,Vi=3,bg=7.99,Eg=8,wg=1024,xg=1024,Tg=1024,Cg=.2,Dg=.8,Sg=10,Lg=.15,Ag=.1,Og=.9,Ng=.9,Mg=100,Ig=1,Ea={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Rg=At({getKey:null,doesEleInvalidateKey:vn,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:cs,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),en=function(e,r){var a=this;a.renderer=e,a.onDequeues=[];var n=Rg(r);Ue(a,n),a.lookup=new mg(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()},St=en.prototype;St.reasons=Ea,St.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]},St.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},a=r[t]=r[t]||[];return a},St.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new ka(function(r,a){return a.reqs-r.reqs});return e},St.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e},St.getElement=function(t,e,r,a,n){var i=this,s=this.renderer,o=s.cy.zoom(),l=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!i.allowEdgeTxrCaching&&t.isEdge()||!i.allowParentTxrCaching&&t.isParent())return null;if(a==null&&(a=Math.ceil(ui(o*r))),a=bg||a>Vi)return null;var u=Math.pow(2,a),f=e.h*u,h=e.w*u,c=s.eleTextBiggerThanMin(t,u);if(!this.isVisible(t,c))return null;var d=l.get(t,a);if(d&&d.invalidated&&(d.invalidated=!1,d.texture.invalidatedWidth-=d.width),d)return d;var v;if(f<=gu?v=gu:f<=Kn?v=Kn:v=Math.ceil(f/Kn)*Kn,f>Tg||h>xg)return null;var p=i.getTextureQueue(v),y=p[p.length-2],g=function(){return i.recycleTexture(v,h)||i.addTexture(v,h)};y||(y=p[p.length-1]),y||(y=g()),y.width-y.usedWidtha;z--)C=i.getElement(t,e,r,z,Ea.downscale);B()}else return i.queueElement(t,A.level-1),A;else{var M;if(!b&&!E&&!N)for(var X=a-1;X>=Zn;X--){var F=l.get(t,X);if(F){M=F;break}}if(m(M))return i.queueElement(t,a),M;y.context.translate(y.usedWidth,0),y.context.scale(u,u),this.drawElement(y.context,t,e,c,!1),y.context.scale(1/u,1/u),y.context.translate(-y.usedWidth,0)}return d={x:y.usedWidth,texture:y,level:a,scale:u,width:h,height:f,scaledLabelShown:c},y.usedWidth+=Math.ceil(h+Eg),y.eleCaches.push(d),l.set(t,a,d),i.checkTextureFullness(y),d},St.invalidateElements=function(t){for(var e=0;e=Cg*t.width&&this.retireTexture(t)},St.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>Dg&&t.fullnessChecks>=Sg?xr(r,t):t.fullnessChecks++},St.retireTexture=function(t){var e=this,r=t.height,a=e.getTextureQueue(r),n=this.lookup;xr(a,t),t.retired=!0;for(var i=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,si(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),xr(n,s),a.push(s),s}},St.queueElement=function(t,e){var r=this,a=r.getElementQueue(),n=r.getElementKeyToQueue(),i=this.getKey(t),s=n[i];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,a.updateItem(s);else{var o={eles:t.spawn().merge(t),level:e,reqs:1,key:i};a.push(o),n[i]=o}},St.dequeue=function(t){for(var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,s=0;s0;s++){var o=r.pop(),l=o.key,u=o.eles[0],f=i.hasCache(u,o.level);if(a[l]=null,f)continue;n.push(o);var h=e.getBoundingBox(u);e.getElement(u,h,t,o.level,Ea.dequeue)}return n},St.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(t),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=ni,r.updateItem(i),r.pop(),a[n]=null):i.eles.unmerge(t))},St.onDequeue=function(t){this.onDequeues.push(t)},St.offDequeue=function(t){xr(this.onDequeues,t)},St.setupDequeueing=du.setupDequeueing({deqRedrawThreshold:Mg,deqCost:Lg,deqAvgCost:Ag,deqNoDrawCost:Og,deqFastCost:Ng,deq:function(e,r,a){return e.dequeue(r,a)},onDeqd:function(e,r){for(var a=0;a=Pg||r>Qn)return null}a.validateLayersElesOrdering(r,t);var l=a.layersByLevel,u=Math.pow(2,r),f=l[r]=l[r]||[],h,c=a.levelIsComplete(r,t),d,v=function(){var B=function(re){if(a.validateLayersElesOrdering(re,t),a.levelIsComplete(re,t))return d=l[re],!0},z=function(re){if(!d)for(var q=r+re;tn<=q&&q<=Qn&&!B(q);q+=re);};z(1),z(-1);for(var M=f.length-1;M>=0;M--){var X=f[M];X.invalid&&xr(f,X)}};if(!c)v();else return f;var p=function(){if(!h){h=Yt();for(var B=0;BUg)return null;var X=a.makeLayer(h,r);if(z!=null){var F=f.indexOf(z)+1;f.splice(F,0,X)}else(B.insert===void 0||B.insert)&&f.unshift(X);return X};if(a.skipping&&!o)return null;for(var g=null,m=t.length/kg,b=!o,E=0;E=m||!ws(g.bb,N.boundingBox()))&&(g=y({insert:!0,after:g}),!g))return null;d||b?a.queueLayer(g,N):a.drawEleInLayer(g,N,r,e),g.eles.push(N),x[r]=g}return d||(b?null:f)},It.getEleLevelForLayerLevel=function(t,e){return t},It.drawEleInLayer=function(t,e,r,a){var n=this,i=this.renderer,s=t.context,o=e.boundingBox();o.w===0||o.h===0||!e.visible()||(r=n.getEleLevelForLayerLevel(r,a),i.setImgSmoothing(s,!1),i.drawCachedElement(s,e,null,null,r,Yg),i.setImgSmoothing(s,!0))},It.levelIsComplete=function(t,e){var r=this,a=r.layersByLevel[t];if(!a||a.length===0)return!1;for(var n=0,i=0;i0||s.invalid)return!1;n+=s.eles.length}return n===e.length},It.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var a=0;a0){e=!0;break}}return e},It.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=gr(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,function(a,n,i){e.invalidateLayer(a)}))},It.invalidateLayer=function(t){if(this.lastInvalidationTime=gr(),!t.invalid){var e=t.level,r=t.eles,a=this.layersByLevel[e];xr(a,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var n=0;n3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o=e._private.rscratch;if(!(i&&!e.visible())&&!(o.badLine||o.allpts==null||isNaN(o.allpts[0]))){var l;r&&(l=r,t.translate(-l.x1,-l.y1));var u=i?e.pstyle("opacity").value:1,f=i?e.pstyle("line-opacity").value:1,h=e.pstyle("curve-style").value,c=e.pstyle("line-style").value,d=e.pstyle("width").pfValue,v=e.pstyle("line-cap").value,p=u*f,y=u*f,g=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:p;h==="straight-triangle"?(s.eleStrokeStyle(t,e,M),s.drawEdgeTrianglePath(e,t,o.allpts)):(t.lineWidth=d,t.lineCap=v,s.eleStrokeStyle(t,e,M),s.drawEdgePath(e,t,o.allpts,c),t.lineCap="butt")},m=function(){n&&s.drawEdgeOverlay(t,e)},b=function(){n&&s.drawEdgeUnderlay(t,e)},E=function(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:y;s.drawArrowheads(t,e,M)},N=function(){s.drawElementText(t,e,null,a)};t.lineJoin="round";var A=e.pstyle("ghost").value==="yes";if(A){var x=e.pstyle("ghost-offset-x").pfValue,R=e.pstyle("ghost-offset-y").pfValue,C=e.pstyle("ghost-opacity").value,B=p*C;t.translate(x,R),g(B),E(B),t.translate(-x,-R)}b(),g(),E(),m(),N(),r&&t.translate(l.x1,l.y1)}};var xu=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a){if(a.visible()){var n=a.pstyle("".concat(e,"-opacity")).value;if(n!==0){var i=this,s=i.usePaths(),o=a._private.rscratch,l=a.pstyle("".concat(e,"-padding")).pfValue,u=2*l,f=a.pstyle("".concat(e,"-color")).value;r.lineWidth=u,o.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",i.colorStrokeStyle(r,f[0],f[1],f[2],n),i.drawEdgePath(a,r,o.allpts,"solid")}}}};br.drawEdgeOverlay=xu("overlay"),br.drawEdgeUnderlay=xu("underlay"),br.drawEdgePath=function(t,e,r,a){var n=t._private.rscratch,i=e,s,o=!1,l=this.usePaths(),u=t.pstyle("line-dash-pattern").pfValue,f=t.pstyle("line-dash-offset").pfValue;if(l){var h=r.join("$"),c=n.pathCacheKey&&n.pathCacheKey===h;c?(s=e=n.pathCache,o=!0):(s=e=new Path2D,n.pathCacheKey=h,n.pathCache=s)}if(i.setLineDash)switch(a){case"dotted":i.setLineDash([1,1]);break;case"dashed":i.setLineDash(u),i.lineDashOffset=f;break;case"solid":i.setLineDash([]);break}if(!o&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var d=2;d+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(a==null){if(i&&!s.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var o=e.pstyle("label");if(!o||!o.value)return;var l=s.getLabelJustification(e);t.textAlign=l,t.textBaseline="bottom"}else{var u=e.element()._private.rscratch.badLine,f=e.pstyle("label"),h=e.pstyle("source-label"),c=e.pstyle("target-label");if(u||(!f||!f.value)&&(!h||!h.value)&&(!c||!c.value))return;t.textAlign="center",t.textBaseline="bottom"}var d=!r,v;r&&(v=r,t.translate(-v.x1,-v.y1)),n==null?(s.drawText(t,e,null,d,i),e.isEdge()&&(s.drawText(t,e,"source",d,i),s.drawText(t,e,"target",d,i))):s.drawText(t,e,n,d,i),r&&t.translate(v.x1,v.y1)},Ur.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle("font-style").strValue,n=e.pstyle("font-size").pfValue+"px",i=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,o=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,l=e.pstyle("text-outline-opacity").value*o,u=e.pstyle("color").value,f=e.pstyle("text-outline-color").value;t.font=a+" "+s+" "+n+" "+i,t.lineJoin="round",this.colorFillStyle(t,u[0],u[1],u[2],o),this.colorStrokeStyle(t,f[0],f[1],f[2],l)};function tp(t,e,r,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5;t.beginPath(),t.moveTo(e+i,r),t.lineTo(e+a-i,r),t.quadraticCurveTo(e+a,r,e+a,r+i),t.lineTo(e+a,r+n-i),t.quadraticCurveTo(e+a,r+n,e+a-i,r+n),t.lineTo(e+i,r+n),t.quadraticCurveTo(e,r+n,e,r+n-i),t.lineTo(e,r+i),t.quadraticCurveTo(e,r,e+i,r),t.closePath(),t.fill()}Ur.getTextAngle=function(t,e){var r,a=t._private,n=a.rscratch,i=e?e+"-":"",s=t.pstyle(i+"text-rotation"),o=tr(n,"labelAngle",e);return s.strValue==="autorotate"?r=t.isEdge()?o:0:s.strValue==="none"?r=0:r=s.pfValue,r},Ur.drawText=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=e._private,s=i.rscratch,o=n?e.effectiveOpacity():1;if(!(n&&(o===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var l=tr(s,"labelX",r),u=tr(s,"labelY",r),f,h,c=this.getLabelText(e,r);if(c!=null&&c!==""&&!isNaN(l)&&!isNaN(u)){this.setupTextStyle(t,e,n);var d=r?r+"-":"",v=tr(s,"labelWidth",r),p=tr(s,"labelHeight",r),y=e.pstyle(d+"text-margin-x").pfValue,g=e.pstyle(d+"text-margin-y").pfValue,m=e.isEdge(),b=e.pstyle("text-halign").value,E=e.pstyle("text-valign").value;m&&(b="center",E="center"),l+=y,u+=g;var N;switch(a?N=this.getTextAngle(e,r):N=0,N!==0&&(f=l,h=u,t.translate(f,h),t.rotate(N),l=0,u=0),E){case"top":break;case"center":u+=p/2;break;case"bottom":u+=p;break}var A=e.pstyle("text-background-opacity").value,x=e.pstyle("text-border-opacity").value,R=e.pstyle("text-border-width").pfValue,C=e.pstyle("text-background-padding").pfValue;if(A>0||R>0&&x>0){var B=l-C;switch(b){case"left":B-=v;break;case"center":B-=v/2;break}var z=u-p-C,M=v+2*C,X=p+2*C;if(A>0){var F=t.fillStyle,re=e.pstyle("text-background-color").value;t.fillStyle="rgba("+re[0]+","+re[1]+","+re[2]+","+A*o+")";var q=e.pstyle("text-background-shape").strValue;q.indexOf("round")===0?tp(t,B,z,M,X,2):t.fillRect(B,z,M,X),t.fillStyle=F}if(R>0&&x>0){var Z=t.strokeStyle,ie=t.lineWidth,ue=e.pstyle("text-border-color").value,ge=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+ue[0]+","+ue[1]+","+ue[2]+","+x*o+")",t.lineWidth=R,t.setLineDash)switch(ge){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=R/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(t.strokeRect(B,z,M,X),ge==="double"){var se=R/2;t.strokeRect(B+se,z+se,M-se*2,X-se*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=ie,t.strokeStyle=Z}}var ve=2*e.pstyle("text-outline-width").pfValue;if(ve>0&&(t.lineWidth=ve),e.pstyle("text-wrap").value==="wrap"){var ye=tr(s,"labelWrapCachedLines",r),Te=tr(s,"labelLineHeight",r),be=v/2,me=this.getLabelJustification(e);switch(me==="auto"||(b==="left"?me==="left"?l+=-v:me==="center"&&(l+=-be):b==="center"?me==="left"?l+=-be:me==="right"&&(l+=be):b==="right"&&(me==="center"?l+=be:me==="right"&&(l+=v))),E){case"top":u-=(ye.length-1)*Te;break;case"center":case"bottom":u-=(ye.length-1)*Te;break}for(var ae=0;ae0&&t.strokeText(ye[ae],l,u),t.fillText(ye[ae],l,u),u+=Te}else ve>0&&t.strokeText(c,l,u),t.fillText(c,l,u);N!==0&&(t.rotate(-N),t.translate(-f,-h))}}};var wa={};wa.drawNode=function(t,e,r){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o,l,u=e._private,f=u.rscratch,h=e.position();if(!(!I(h.x)||!I(h.y))&&!(i&&!e.visible())){var c=i?e.effectiveOpacity():1,d=s.usePaths(),v,p=!1,y=e.padding();o=e.width()+2*y,l=e.height()+2*y;var g;r&&(g=r,t.translate(-g.x1,-g.y1));for(var m=e.pstyle("background-image"),b=m.value,E=new Array(b.length),N=new Array(b.length),A=0,x=0;x0&&arguments[0]!==void 0?arguments[0]:X;s.eleFillStyle(t,e,ke)},ie=function(){var ke=arguments.length>0&&arguments[0]!==void 0?arguments[0]:q;s.colorStrokeStyle(t,F[0],F[1],F[2],ke)},ue=e.pstyle("shape").strValue,ge=e.pstyle("shape-polygon-points").pfValue;if(d){t.translate(h.x,h.y);var se=s.nodePathCache=s.nodePathCache||[],ve=fs(ue==="polygon"?ue+","+ge.join(","):ue,""+l,""+o),ye=se[ve];ye!=null?(v=ye,p=!0,f.pathCache=v):(v=new Path2D,se[ve]=f.pathCache=v)}var Te=function(){if(!p){var ke=h;d&&(ke={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(v||t,ke.x,ke.y,o,l)}d?t.fill(v):t.fill()},be=function(){for(var ke=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,ze=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,je=u.backgrounding,Ze=0,Ye=0;Ye0&&arguments[0]!==void 0?arguments[0]:!1,ze=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;s.hasPie(e)&&(s.drawPie(t,e,ze),ke&&(d||s.nodeShapes[s.getNodeShape(e)].draw(t,h.x,h.y,o,l)))},ae=function(){var ke=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,ze=(z>0?z:-z)*ke,je=z>0?0:255;z!==0&&(s.colorFillStyle(t,je,je,je,ze),d?t.fill(v):t.fill())},xe=function(){if(M>0){if(t.lineWidth=M,t.lineCap="butt",t.setLineDash)switch(re){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}if(d?t.stroke(v):t.stroke(),re==="double"){t.lineWidth=M/3;var ke=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",d?t.stroke(v):t.stroke(),t.globalCompositeOperation=ke}t.setLineDash&&t.setLineDash([])}},Ce=function(){n&&s.drawNodeOverlay(t,e,h,o,l)},Oe=function(){n&&s.drawNodeUnderlay(t,e,h,o,l)},Me=function(){s.drawElementText(t,e,null,a)},He=e.pstyle("ghost").value==="yes";if(He){var We=e.pstyle("ghost-offset-x").pfValue,Re=e.pstyle("ghost-offset-y").pfValue,Ie=e.pstyle("ghost-opacity").value,Ge=Ie*c;t.translate(We,Re),Z(Ie*X),Te(),be(Ge,!0),ie(Ie*q),xe(),me(z!==0||M!==0),be(Ge,!1),ae(Ge),t.translate(-We,-Re)}d&&t.translate(-h.x,-h.y),Oe(),d&&t.translate(h.x,h.y),Z(),Te(),be(c,!0),ie(),xe(),me(z!==0||M!==0),be(c,!1),ae(),d&&t.translate(-h.x,-h.y),Me(),Ce(),r&&t.translate(g.x1,g.y1)}};var Tu=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,a,n,i,s){var o=this;if(a.visible()){var l=a.pstyle("".concat(e,"-padding")).pfValue,u=a.pstyle("".concat(e,"-opacity")).value,f=a.pstyle("".concat(e,"-color")).value,h=a.pstyle("".concat(e,"-shape")).value;if(u>0){if(n=n||a.position(),i==null||s==null){var c=a.padding();i=a.width()+2*c,s=a.height()+2*c}o.colorFillStyle(r,f[0],f[1],f[2],u),o.nodeShapes[h].draw(r,n.x,n.y,i+l*2,s+l*2),r.fill()}}}};wa.drawNodeOverlay=Tu("overlay"),wa.drawNodeUnderlay=Tu("underlay"),wa.hasPie=function(t){return t=t[0],t._private.hasPie},wa.drawPie=function(t,e,r,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle("pie-size"),s=a.x,o=a.y,l=e.width(),u=e.height(),f=Math.min(l,u)/2,h=0,c=this.usePaths();c&&(s=0,o=0),i.units==="%"?f=f*i.pfValue:i.pfValue!==void 0&&(f=i.pfValue/2);for(var d=1;d<=n.pieBackgroundN;d++){var v=e.pstyle("pie-"+d+"-background-size").value,p=e.pstyle("pie-"+d+"-background-color").value,y=e.pstyle("pie-"+d+"-background-opacity").value*r,g=v/100;g+h>1&&(g=1-h);var m=1.5*Math.PI+2*Math.PI*h,b=2*Math.PI*g,E=m+b;v===0||h>=1||h+g>1||(t.beginPath(),t.moveTo(s,o),t.arc(s,o,f,m,E),t.closePath(),this.colorFillStyle(t,p[0],p[1],p[2],y),t.fill(),h+=g)}};var Kt={},rp=100;Kt.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/e},Kt.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,a,n=0;ns.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!h&&(f[s.NODE]=!0,f[s.SELECT_BOX]=!0);var m=l.style(),b=l.zoom(),E=n!==void 0?n:b,N=l.pan(),A={x:N.x,y:N.y},x={zoom:b,pan:{x:N.x,y:N.y}},R=s.prevViewport,C=R===void 0||x.zoom!==R.zoom||x.pan.x!==R.pan.x||x.pan.y!==R.pan.y;!C&&!(p&&!v)&&(s.motionBlurPxRatio=1),i&&(A=i),E*=o,A.x*=o,A.y*=o;var B=s.getCachedZSortedEles();function z(Re,Ie,Ge,Fe,ke){var ze=Re.globalCompositeOperation;Re.globalCompositeOperation="destination-out",s.colorFillStyle(Re,255,255,255,s.motionBlurTransparency),Re.fillRect(Ie,Ge,Fe,ke),Re.globalCompositeOperation=ze}function M(Re,Ie){var Ge,Fe,ke,ze;!s.clearingMotionBlur&&(Re===u.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]||Re===u.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG])?(Ge={x:N.x*d,y:N.y*d},Fe=b*d,ke=s.canvasWidth*d,ze=s.canvasHeight*d):(Ge=A,Fe=E,ke=s.canvasWidth,ze=s.canvasHeight),Re.setTransform(1,0,0,1,0,0),Ie==="motionBlur"?z(Re,0,0,ke,ze):!e&&(Ie===void 0||Ie)&&Re.clearRect(0,0,ke,ze),r||(Re.translate(Ge.x,Ge.y),Re.scale(Fe,Fe)),i&&Re.translate(i.x,i.y),n&&Re.scale(n,n)}if(h||(s.textureDrawLastFrame=!1),h){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=l.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var X=s.data.bufferContexts[s.TEXTURE_BUFFER];X.setTransform(1,0,0,1,0,0),X.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:X,drawOnlyNodeLayer:!0,forcedPxRatio:o*s.textureMult});var x=s.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:s.canvasWidth,height:s.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}f[s.DRAG]=!1,f[s.NODE]=!1;var F=u.contexts[s.NODE],re=s.textureCache.texture,x=s.textureCache.viewport;F.setTransform(1,0,0,1,0,0),c?z(F,0,0,x.width,x.height):F.clearRect(0,0,x.width,x.height);var q=m.core("outside-texture-bg-color").value,Z=m.core("outside-texture-bg-opacity").value;s.colorFillStyle(F,q[0],q[1],q[2],Z),F.fillRect(0,0,x.width,x.height);var b=l.zoom();M(F,!1),F.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o),F.drawImage(re,x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o)}else s.textureOnViewport&&!e&&(s.textureCache=null);var ie=l.extent(),ue=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),ge=s.hideEdgesOnViewport&&ue,se=[];if(se[s.NODE]=!f[s.NODE]&&c&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,se[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),se[s.DRAG]=!f[s.DRAG]&&c&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,se[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),f[s.NODE]||r||a||se[s.NODE]){var ve=c&&!se[s.NODE]&&d!==1,F=e||(ve?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:u.contexts[s.NODE]),ye=c&&!ve?"motionBlur":void 0;M(F,ye),ge?s.drawCachedNodes(F,B.nondrag,o,ie):s.drawLayeredElements(F,B.nondrag,o,ie),s.debug&&s.drawDebugPoints(F,B.nondrag),!r&&!c&&(f[s.NODE]=!1)}if(!a&&(f[s.DRAG]||r||se[s.DRAG])){var ve=c&&!se[s.DRAG]&&d!==1,F=e||(ve?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:u.contexts[s.DRAG]);M(F,c&&!ve?"motionBlur":void 0),ge?s.drawCachedNodes(F,B.drag,o,ie):s.drawCachedElements(F,B.drag,o,ie),s.debug&&s.drawDebugPoints(F,B.drag),!r&&!c&&(f[s.DRAG]=!1)}if(s.showFps||!a&&f[s.SELECT_BOX]&&!r){var F=e||u.contexts[s.SELECT_BOX];if(M(F),s.selection[4]==1&&(s.hoverData.selecting||s.touchData.selecting)){var b=s.cy.zoom(),Te=m.core("selection-box-border-width").value/b;F.lineWidth=Te,F.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",F.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),Te>0&&(F.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",F.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(u.bgActivePosistion&&!s.hoverData.selecting){var b=s.cy.zoom(),be=u.bgActivePosistion;F.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",F.beginPath(),F.arc(be.x,be.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),F.fill()}var me=s.lastRedrawTime;if(s.showFps&&me){me=Math.round(me);var ae=Math.round(1e3/me);F.setTransform(1,0,0,1,0,0),F.fillStyle="rgba(255, 0, 0, 0.75)",F.strokeStyle="rgba(255, 0, 0, 0.75)",F.lineWidth=1,F.fillText("1 frame = "+me+" ms = "+ae+" fps",0,20);var xe=60;F.strokeRect(0,30,250,20),F.fillRect(0,30,250*Math.min(ae/xe,1),20)}r||(f[s.SELECT_BOX]=!1)}if(c&&d!==1){var Ce=u.contexts[s.NODE],Oe=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],Me=u.contexts[s.DRAG],He=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],We=function(Ie,Ge,Fe){Ie.setTransform(1,0,0,1,0,0),Fe||!g?Ie.clearRect(0,0,s.canvasWidth,s.canvasHeight):z(Ie,0,0,s.canvasWidth,s.canvasHeight);var ke=d;Ie.drawImage(Ge,0,0,s.canvasWidth*ke,s.canvasHeight*ke,0,0,s.canvasWidth,s.canvasHeight)};(f[s.NODE]||se[s.NODE])&&(We(Ce,Oe,se[s.NODE]),f[s.NODE]=!1),(f[s.DRAG]||se[s.DRAG])&&(We(Me,He,se[s.DRAG]),f[s.DRAG]=!1)}s.prevViewport=x,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),c&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!h,s.mbFrames=0,f[s.NODE]=!0,f[s.DRAG]=!0,s.redraw()},rp)),e||l.emit("render")};var Ir={};Ir.drawPolygonPath=function(t,e,r,a,n,i){var s=a/2,o=n/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*i[0],r+o*i[1]);for(var l=1;l0&&s>0){d.clearRect(0,0,i,s),d.globalCompositeOperation="source-over";var v=this.getCachedZSortedEles();if(t.full)d.translate(-a.x1*u,-a.y1*u),d.scale(u,u),this.drawElements(d,v),d.scale(1/u,1/u),d.translate(a.x1*u,a.y1*u);else{var p=e.pan(),y={x:p.x*u,y:p.y*u};u*=e.zoom(),d.translate(y.x,y.y),d.scale(u,u),this.drawElements(d,v),d.scale(1/u,1/u),d.translate(-y.x,-y.y)}t.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=t.bg,d.rect(0,0,i,s),d.fill())}return c};function ap(t,e){for(var r=atob(t),a=new ArrayBuffer(r.length),n=new Uint8Array(a),i=0;i"u"?"undefined":ee(OffscreenCanvas))!=="undefined"?r=new OffscreenCanvas(t,e):(r=document.createElement("canvas"),r.width=t,r.height=e),r},[bu,cr,br,_i,Ur,wa,Kt,Ir,rn,Ou].forEach(function(t){Ue(st,t)});var sp=[{name:"null",impl:tu},{name:"base",impl:vu},{name:"canvas",impl:np}],op=[{type:"layout",extensions:dg},{type:"renderer",extensions:sp}],Mu={},Iu={};function Ru(t,e,r){var a=r,n=function(R){ut("Can not register `"+e+"` for `"+t+"` since `"+R+"` already exists in the prototype and can not be overridden")};if(t==="core"){if(Qa.prototype[e])return n(e);Qa.prototype[e]=r}else if(t==="collection"){if(Nt.prototype[e])return n(e);Nt.prototype[e]=r}else if(t==="layout"){for(var i=function(R){this.options=R,r.call(this,R),L(this._private)||(this._private={}),this._private.cy=R.cy,this._private.listeners=[],this.createEmitter()},s=i.prototype=Object.create(r.prototype),o=[],l=0;l$&&(this.rect.x-=(this.labelWidth-$)/2,this.setWidth(this.labelWidth)),this.labelHeight>_&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-_)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-_),this.setHeight(this.labelHeight))}}},P.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==T.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},P.prototype.transform=function(D){var $=this.rect.x;$>S.WORLD_BOUNDARY?$=S.WORLD_BOUNDARY:$<-S.WORLD_BOUNDARY&&($=-S.WORLD_BOUNDARY);var _=this.rect.y;_>S.WORLD_BOUNDARY?_=S.WORLD_BOUNDARY:_<-S.WORLD_BOUNDARY&&(_=-S.WORLD_BOUNDARY);var Q=new U($,_),ne=D.inverseTransformPoint(Q);this.setLocation(ne.x,ne.y)},P.prototype.getLeft=function(){return this.rect.x},P.prototype.getRight=function(){return this.rect.x+this.rect.width},P.prototype.getTop=function(){return this.rect.y},P.prototype.getBottom=function(){return this.rect.y+this.rect.height},P.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},ee.exports=P},function(ee,ce,H){function O(T,w){T==null&&w==null?(this.x=0,this.y=0):(this.x=T,this.y=w)}O.prototype.getX=function(){return this.x},O.prototype.getY=function(){return this.y},O.prototype.setX=function(T){this.x=T},O.prototype.setY=function(T){this.y=T},O.prototype.getDifference=function(T){return new DimensionD(this.x-T.x,this.y-T.y)},O.prototype.getCopy=function(){return new O(this.x,this.y)},O.prototype.translate=function(T){return this.x+=T.width,this.y+=T.height,this},ee.exports=O},function(ee,ce,H){var O=H(2),T=H(10),w=H(0),S=H(6),G=H(3),U=H(1),P=H(13),K=H(12),D=H(11);function $(Q,ne,oe){O.call(this,oe),this.estimatedSize=T.MIN_VALUE,this.margin=w.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=Q,ne!=null&&ne instanceof S?this.graphManager=ne:ne!=null&&ne instanceof Layout&&(this.graphManager=ne.graphManager)}$.prototype=Object.create(O.prototype);for(var _ in O)$[_]=O[_];$.prototype.getNodes=function(){return this.nodes},$.prototype.getEdges=function(){return this.edges},$.prototype.getGraphManager=function(){return this.graphManager},$.prototype.getParent=function(){return this.parent},$.prototype.getLeft=function(){return this.left},$.prototype.getRight=function(){return this.right},$.prototype.getTop=function(){return this.top},$.prototype.getBottom=function(){return this.bottom},$.prototype.isConnected=function(){return this.isConnected},$.prototype.add=function(Q,ne,oe){if(ne==null&&oe==null){var J=Q;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(J)>-1)throw"Node already in graph!";return J.owner=this,this.getNodes().push(J),J}else{var j=Q;if(!(this.getNodes().indexOf(ne)>-1&&this.getNodes().indexOf(oe)>-1))throw"Source or target not in graph!";if(!(ne.owner==oe.owner&&ne.owner==this))throw"Both owners must be this graph!";return ne.owner!=oe.owner?null:(j.source=ne,j.target=oe,j.isInterGraph=!1,this.getEdges().push(j),ne.edges.push(j),oe!=ne&&oe.edges.push(j),j)}},$.prototype.remove=function(Q){var ne=Q;if(Q instanceof G){if(ne==null)throw"Node is null!";if(!(ne.owner!=null&&ne.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var oe=ne.edges.slice(),J,j=oe.length,Y=0;Y-1&&V>-1))throw"Source and/or target doesn't know this edge!";J.source.edges.splice(L,1),J.target!=J.source&&J.target.edges.splice(V,1);var te=J.source.owner.getEdges().indexOf(J);if(te==-1)throw"Not in owner's edge list!";J.source.owner.getEdges().splice(te,1)}},$.prototype.updateLeftTop=function(){for(var Q=T.MAX_VALUE,ne=T.MAX_VALUE,oe,J,j,Y=this.getNodes(),te=Y.length,L=0;Loe&&(Q=oe),ne>J&&(ne=J)}return Q==T.MAX_VALUE?null:(Y[0].getParent().paddingLeft!=null?j=Y[0].getParent().paddingLeft:j=this.margin,this.left=ne-j,this.top=Q-j,new K(this.left,this.top))},$.prototype.updateBounds=function(Q){for(var ne=T.MAX_VALUE,oe=-T.MAX_VALUE,J=T.MAX_VALUE,j=-T.MAX_VALUE,Y,te,L,V,I,W=this.nodes,fe=W.length,de=0;deY&&(ne=Y),oeL&&(J=L),jY&&(ne=Y),oeL&&(J=L),j=this.nodes.length){var fe=0;oe.forEach(function(de){de.owner==Q&&fe++}),fe==this.nodes.length&&(this.isConnected=!0)}},ee.exports=$},function(ee,ce,H){var O,T=H(1);function w(S){O=H(5),this.layout=S,this.graphs=[],this.edges=[]}w.prototype.addRoot=function(){var S=this.layout.newGraph(),G=this.layout.newNode(null),U=this.add(S,G);return this.setRootGraph(U),this.rootGraph},w.prototype.add=function(S,G,U,P,K){if(U==null&&P==null&&K==null){if(S==null)throw"Graph is null!";if(G==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(G.child!=null)throw"Already has a child!";return S.parent=G,G.child=S,S}else{K=U,P=G,U=S;var D=P.getOwner(),$=K.getOwner();if(!(D!=null&&D.getGraphManager()==this))throw"Source not in this graph mgr!";if(!($!=null&&$.getGraphManager()==this))throw"Target not in this graph mgr!";if(D==$)return U.isInterGraph=!1,D.add(U,P,K);if(U.isInterGraph=!0,U.source=P,U.target=K,this.edges.indexOf(U)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(U),!(U.source!=null&&U.target!=null))throw"Edge source and/or target is null!";if(!(U.source.edges.indexOf(U)==-1&&U.target.edges.indexOf(U)==-1))throw"Edge already in source and/or target incidency list!";return U.source.edges.push(U),U.target.edges.push(U),U}},w.prototype.remove=function(S){if(S instanceof O){var G=S;if(G.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(G==this.rootGraph||G.parent!=null&&G.parent.graphManager==this))throw"Invalid parent node!";var U=[];U=U.concat(G.getEdges());for(var P,K=U.length,D=0;D=S.getRight()?G[0]+=Math.min(S.getX()-w.getX(),w.getRight()-S.getRight()):S.getX()<=w.getX()&&S.getRight()>=w.getRight()&&(G[0]+=Math.min(w.getX()-S.getX(),S.getRight()-w.getRight())),w.getY()<=S.getY()&&w.getBottom()>=S.getBottom()?G[1]+=Math.min(S.getY()-w.getY(),w.getBottom()-S.getBottom()):S.getY()<=w.getY()&&S.getBottom()>=w.getBottom()&&(G[1]+=Math.min(w.getY()-S.getY(),S.getBottom()-w.getBottom()));var K=Math.abs((S.getCenterY()-w.getCenterY())/(S.getCenterX()-w.getCenterX()));S.getCenterY()===w.getCenterY()&&S.getCenterX()===w.getCenterX()&&(K=1);var D=K*G[0],$=G[1]/K;G[0]<$?$=G[0]:D=G[1],G[0]=-1*P[0]*($/2+U),G[1]=-1*P[1]*(D/2+U)},T.decideDirectionsForOverlappingNodes=function(w,S,G){w.getCenterX()D)return G[0]=U,G[1]=_,G[2]=K,G[3]=W,!1;if(PK)return G[0]=$,G[1]=P,G[2]=V,G[3]=D,!1;if(UK?(G[0]=ne,G[1]=oe,Ne=!0):(G[0]=Q,G[1]=_,Ne=!0):tt===Pe&&(U>K?(G[0]=$,G[1]=_,Ne=!0):(G[0]=J,G[1]=oe,Ne=!0)),-vt===Pe?K>U?(G[2]=I,G[3]=W,_e=!0):(G[2]=V,G[3]=L,_e=!0):vt===Pe&&(K>U?(G[2]=te,G[3]=L,_e=!0):(G[2]=fe,G[3]=W,_e=!0)),Ne&&_e)return!1;if(U>K?P>D?(Ve=this.getCardinalDirection(tt,Pe,4),Xe=this.getCardinalDirection(vt,Pe,2)):(Ve=this.getCardinalDirection(-tt,Pe,3),Xe=this.getCardinalDirection(-vt,Pe,1)):P>D?(Ve=this.getCardinalDirection(-tt,Pe,1),Xe=this.getCardinalDirection(-vt,Pe,3)):(Ve=this.getCardinalDirection(tt,Pe,2),Xe=this.getCardinalDirection(vt,Pe,4)),!Ne)switch(Ve){case 1:ft=_,rt=U+-Y/Pe,G[0]=rt,G[1]=ft;break;case 2:rt=J,ft=P+j*Pe,G[0]=rt,G[1]=ft;break;case 3:ft=oe,rt=U+Y/Pe,G[0]=rt,G[1]=ft;break;case 4:rt=ne,ft=P+-j*Pe,G[0]=rt,G[1]=ft;break}if(!_e)switch(Xe){case 1:et=L,at=K+-Ae/Pe,G[2]=at,G[3]=et;break;case 2:at=fe,et=D+de*Pe,G[2]=at,G[3]=et;break;case 3:et=W,at=K+Ae/Pe,G[2]=at,G[3]=et;break;case 4:at=I,et=D+-de*Pe,G[2]=at,G[3]=et;break}}return!1},T.getCardinalDirection=function(w,S,G){return w>S?G:1+G%4},T.getIntersection=function(w,S,G,U){if(U==null)return this.getIntersection2(w,S,G);var P=w.x,K=w.y,D=S.x,$=S.y,_=G.x,Q=G.y,ne=U.x,oe=U.y,J=void 0,j=void 0,Y=void 0,te=void 0,L=void 0,V=void 0,I=void 0,W=void 0,fe=void 0;return Y=$-K,L=P-D,I=D*K-P*$,te=oe-Q,V=_-ne,W=ne*Q-_*oe,fe=Y*V-te*L,fe===0?null:(J=(L*W-V*I)/fe,j=(te*I-Y*W)/fe,new O(J,j))},T.angleOfVector=function(w,S,G,U){var P=void 0;return w!==G?(P=Math.atan((U-S)/(G-w)),G0?1:T<0?-1:0},O.floor=function(T){return T<0?Math.ceil(T):Math.floor(T)},O.ceil=function(T){return T<0?Math.floor(T):Math.ceil(T)},ee.exports=O},function(ee,ce,H){function O(){}O.MAX_VALUE=2147483647,O.MIN_VALUE=-2147483648,ee.exports=O},function(ee,ce,H){var O=function(){function P(K,D){for(var $=0;$"u"?"undefined":O(w);return w==null||S!="object"&&S!="function"},ee.exports=T},function(ee,ce,H){function O(_){if(Array.isArray(_)){for(var Q=0,ne=Array(_.length);Q<_.length;Q++)ne[Q]=_[Q];return ne}else return Array.from(_)}var T=H(0),w=H(6),S=H(3),G=H(1),U=H(5),P=H(4),K=H(17),D=H(27);function $(_){D.call(this),this.layoutQuality=T.QUALITY,this.createBendsAsNeeded=T.DEFAULT_CREATE_BENDS_AS_NEEDED,this.incremental=T.DEFAULT_INCREMENTAL,this.animationOnLayout=T.DEFAULT_ANIMATION_ON_LAYOUT,this.animationDuringLayout=T.DEFAULT_ANIMATION_DURING_LAYOUT,this.animationPeriod=T.DEFAULT_ANIMATION_PERIOD,this.uniformLeafNodeSizes=T.DEFAULT_UNIFORM_LEAF_NODE_SIZES,this.edgeToDummyNodes=new Map,this.graphManager=new w(this),this.isLayoutFinished=!1,this.isSubLayout=!1,this.isRemoteUse=!1,_!=null&&(this.isRemoteUse=_)}$.RANDOM_SEED=1,$.prototype=Object.create(D.prototype),$.prototype.getGraphManager=function(){return this.graphManager},$.prototype.getAllNodes=function(){return this.graphManager.getAllNodes()},$.prototype.getAllEdges=function(){return this.graphManager.getAllEdges()},$.prototype.getAllNodesToApplyGravitation=function(){return this.graphManager.getAllNodesToApplyGravitation()},$.prototype.newGraphManager=function(){var _=new w(this);return this.graphManager=_,_},$.prototype.newGraph=function(_){return new U(null,this.graphManager,_)},$.prototype.newNode=function(_){return new S(this.graphManager,_)},$.prototype.newEdge=function(_){return new G(null,null,_)},$.prototype.checkLayoutSuccess=function(){return this.graphManager.getRoot()==null||this.graphManager.getRoot().getNodes().length==0||this.graphManager.includesInvalidEdge()},$.prototype.runLayout=function(){this.isLayoutFinished=!1,this.tilingPreLayout&&this.tilingPreLayout(),this.initParameters();var _;return this.checkLayoutSuccess()?_=!1:_=this.layout(),T.ANIMATE==="during"?!1:(_&&(this.isSubLayout||this.doPostLayout()),this.tilingPostLayout&&this.tilingPostLayout(),this.isLayoutFinished=!0,_)},$.prototype.doPostLayout=function(){this.incremental||this.transform(),this.update()},$.prototype.update2=function(){if(this.createBendsAsNeeded&&(this.createBendpointsFromDummyNodes(),this.graphManager.resetAllEdges()),!this.isRemoteUse){for(var _=this.graphManager.getAllEdges(),Q=0;Q<_.length;Q++)_[Q];for(var ne=this.graphManager.getRoot().getNodes(),Q=0;Q0&&Q;){for(Y.push(L[0]);Y.length>0&&Q;){var V=Y[0];Y.splice(0,1),j.add(V);for(var I=V.getEdges(),J=0;J-1&&L.splice(Ae,1)}j=new Set,te=new Map}}return _},$.prototype.createDummyNodesForBendpoints=function(_){for(var Q=[],ne=_.source,oe=this.graphManager.calcLowestCommonAncestor(_.source,_.target),J=0;J<_.bendpoints.length;J++){var j=this.newNode(null);j.setRect(new Point(0,0),new Dimension(1,1)),oe.add(j);var Y=this.newEdge(null);this.graphManager.add(Y,ne,j),Q.add(j),ne=j}var Y=this.newEdge(null);return this.graphManager.add(Y,ne,_.target),this.edgeToDummyNodes.set(_,Q),_.isInterGraph()?this.graphManager.remove(_):oe.remove(_),Q},$.prototype.createBendpointsFromDummyNodes=function(){var _=[];_=_.concat(this.graphManager.getAllEdges()),_=[].concat(O(this.edgeToDummyNodes.keys())).concat(_);for(var Q=0;Q<_.length;Q++){var ne=_[Q];if(ne.bendpoints.length>0){for(var oe=this.edgeToDummyNodes.get(ne),J=0;J=0&&Q.splice(W,1);var fe=te.getNeighborsList();fe.forEach(function(Ne){if(ne.indexOf(Ne)<0){var _e=oe.get(Ne),tt=_e-1;tt==1&&V.push(Ne),oe.set(Ne,tt)}})}ne=ne.concat(V),(Q.length==1||Q.length==2)&&(J=!0,j=Q[0])}return j},$.prototype.setGraphManager=function(_){this.graphManager=_},ee.exports=$},function(ee,ce,H){function O(){}O.seed=1,O.x=0,O.nextDouble=function(){return O.x=Math.sin(O.seed++)*1e4,O.x-Math.floor(O.x)},ee.exports=O},function(ee,ce,H){var O=H(4);function T(w,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}T.prototype.getWorldOrgX=function(){return this.lworldOrgX},T.prototype.setWorldOrgX=function(w){this.lworldOrgX=w},T.prototype.getWorldOrgY=function(){return this.lworldOrgY},T.prototype.setWorldOrgY=function(w){this.lworldOrgY=w},T.prototype.getWorldExtX=function(){return this.lworldExtX},T.prototype.setWorldExtX=function(w){this.lworldExtX=w},T.prototype.getWorldExtY=function(){return this.lworldExtY},T.prototype.setWorldExtY=function(w){this.lworldExtY=w},T.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},T.prototype.setDeviceOrgX=function(w){this.ldeviceOrgX=w},T.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},T.prototype.setDeviceOrgY=function(w){this.ldeviceOrgY=w},T.prototype.getDeviceExtX=function(){return this.ldeviceExtX},T.prototype.setDeviceExtX=function(w){this.ldeviceExtX=w},T.prototype.getDeviceExtY=function(){return this.ldeviceExtY},T.prototype.setDeviceExtY=function(w){this.ldeviceExtY=w},T.prototype.transformX=function(w){var S=0,G=this.lworldExtX;return G!=0&&(S=this.ldeviceOrgX+(w-this.lworldOrgX)*this.ldeviceExtX/G),S},T.prototype.transformY=function(w){var S=0,G=this.lworldExtY;return G!=0&&(S=this.ldeviceOrgY+(w-this.lworldOrgY)*this.ldeviceExtY/G),S},T.prototype.inverseTransformX=function(w){var S=0,G=this.ldeviceExtX;return G!=0&&(S=this.lworldOrgX+(w-this.ldeviceOrgX)*this.lworldExtX/G),S},T.prototype.inverseTransformY=function(w){var S=0,G=this.ldeviceExtY;return G!=0&&(S=this.lworldOrgY+(w-this.ldeviceOrgY)*this.lworldExtY/G),S},T.prototype.inverseTransformPoint=function(w){var S=new O(this.inverseTransformX(w.x),this.inverseTransformY(w.y));return S},ee.exports=T},function(ee,ce,H){function O(D){if(Array.isArray(D)){for(var $=0,_=Array(D.length);$w.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*w.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(D-w.ADAPTATION_LOWER_NODE_LIMIT)/(w.ADAPTATION_UPPER_NODE_LIMIT-w.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-w.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=w.MAX_NODE_DISPLACEMENT_INCREMENTAL):(D>w.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(w.COOLING_ADAPTATION_FACTOR,1-(D-w.ADAPTATION_LOWER_NODE_LIMIT)/(w.ADAPTATION_UPPER_NODE_LIMIT-w.ADAPTATION_LOWER_NODE_LIMIT)*(1-w.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=w.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},P.prototype.calcSpringForces=function(){for(var D=this.getAllEdges(),$,_=0;_0&&arguments[0]!==void 0?arguments[0]:!0,$=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,_,Q,ne,oe,J=this.getAllNodes(),j;if(this.useFRGridVariant)for(this.totalIterations%w.GRID_CALCULATION_CHECK_PERIOD==1&&D&&this.updateGrid(),j=new Set,_=0;_Y||j>Y)&&(D.gravitationForceX=-this.gravityConstant*ne,D.gravitationForceY=-this.gravityConstant*oe)):(Y=$.getEstimatedSize()*this.compoundGravityRangeFactor,(J>Y||j>Y)&&(D.gravitationForceX=-this.gravityConstant*ne*this.compoundGravityConstant,D.gravitationForceY=-this.gravityConstant*oe*this.compoundGravityConstant))},P.prototype.isConverged=function(){var D,$=!1;return this.totalIterations>this.maxIterations/3&&($=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),D=this.totalDisplacement=J.length||Y>=J[0].length)){for(var te=0;teP}}]),G}();ee.exports=S},function(ee,ce,H){var O=function(){function S(G,U){for(var P=0;P2&&arguments[2]!==void 0?arguments[2]:1,K=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,D=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;T(this,S),this.sequence1=G,this.sequence2=U,this.match_score=P,this.mismatch_penalty=K,this.gap_penalty=D,this.iMax=G.length+1,this.jMax=U.length+1,this.grid=new Array(this.iMax);for(var $=0;$=0;G--){var U=this.listeners[G];U.event===w&&U.callback===S&&this.listeners.splice(G,1)}},T.emit=function(w,S){for(var G=0;GU.coolingFactor*U.maxNodeDisplacement&&(this.displacementX=U.coolingFactor*U.maxNodeDisplacement*w.sign(this.displacementX)),Math.abs(this.displacementY)>U.coolingFactor*U.maxNodeDisplacement&&(this.displacementY=U.coolingFactor*U.maxNodeDisplacement*w.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),U.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(U,P){for(var K=this.getChild().getNodes(),D,$=0;$0)this.positionNodesRadially(L);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var V=new Set(this.getAllNodes()),I=this.nodesWithGravity.filter(function(W){return V.has(W)});this.graphManager.setAllNodesToApplyGravitation(I),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},Y.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%K.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var L=new Set(this.getAllNodes()),V=this.nodesWithGravity.filter(function(fe){return L.has(fe)});this.graphManager.setAllNodesToApplyGravitation(V),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=K.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=K.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var I=!this.isTreeGrowing&&!this.isGrowthFinished,W=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(I,W),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},Y.prototype.getPositionsData=function(){for(var L=this.graphManager.getAllNodes(),V={},I=0;I1){var Ne;for(Ne=0;NeW&&(W=Math.floor(Ae.y)),de=Math.floor(Ae.x+P.DEFAULT_COMPONENT_SEPERATION)}this.transform(new _(D.WORLD_CENTER_X-Ae.x/2,D.WORLD_CENTER_Y-Ae.y/2))},Y.radialLayout=function(L,V,I){var W=Math.max(this.maxDiagonalInTree(L),P.DEFAULT_RADIAL_SEPARATION);Y.branchRadialLayout(V,null,0,359,0,W);var fe=J.calculateBounds(L),de=new j;de.setDeviceOrgX(fe.getMinX()),de.setDeviceOrgY(fe.getMinY()),de.setWorldOrgX(I.x),de.setWorldOrgY(I.y);for(var Ae=0;Ae1;){var et=at[0];at.splice(0,1);var yt=Pe.indexOf(et);yt>=0&&Pe.splice(yt,1),rt--,Ve--}V!=null?ft=(Pe.indexOf(at[0])+1)%rt:ft=0;for(var wt=Math.abs(W-I)/Ve,Pt=ft;Xe!=Ve;Pt=++Pt%rt){var dt=Pe[Pt].getOtherEnd(L);if(dt!=V){var dr=(I+Xe*wt)%360,qt=(dr+wt)%360;Y.branchRadialLayout(dt,L,dr,qt,fe+de,de),Xe++}}},Y.maxDiagonalInTree=function(L){for(var V=ne.MIN_VALUE,I=0;IV&&(V=fe)}return V},Y.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},Y.prototype.groupZeroDegreeMembers=function(){var L=this,V={};this.memberGroups={},this.idToDummyNode={};for(var I=[],W=this.graphManager.getAllNodes(),fe=0;fe"u"&&(V[Ne]=[]),V[Ne]=V[Ne].concat(de)}Object.keys(V).forEach(function(_e){if(V[_e].length>1){var tt="DummyCompound_"+_e;L.memberGroups[tt]=V[_e];var vt=V[_e][0].getParent(),Pe=new G(L.graphManager);Pe.id=tt,Pe.paddingLeft=vt.paddingLeft||0,Pe.paddingRight=vt.paddingRight||0,Pe.paddingBottom=vt.paddingBottom||0,Pe.paddingTop=vt.paddingTop||0,L.idToDummyNode[tt]=Pe;var Ve=L.getGraphManager().add(L.newGraph(),Pe),Xe=vt.getChild();Xe.add(Pe);for(var rt=0;rt=0;L--){var V=this.compoundOrder[L],I=V.id,W=V.paddingLeft,fe=V.paddingTop;this.adjustLocations(this.tiledMemberPack[I],V.rect.x,V.rect.y,W,fe)}},Y.prototype.repopulateZeroDegreeMembers=function(){var L=this,V=this.tiledZeroDegreePack;Object.keys(V).forEach(function(I){var W=L.idToDummyNode[I],fe=W.paddingLeft,de=W.paddingTop;L.adjustLocations(V[I],W.rect.x,W.rect.y,fe,de)})},Y.prototype.getToBeTiled=function(L){var V=L.id;if(this.toBeTiled[V]!=null)return this.toBeTiled[V];var I=L.getChild();if(I==null)return this.toBeTiled[V]=!1,!1;for(var W=I.getNodes(),fe=0;fe0)return this.toBeTiled[V]=!1,!1;if(de.getChild()==null){this.toBeTiled[de.id]=!1;continue}if(!this.getToBeTiled(de))return this.toBeTiled[V]=!1,!1}return this.toBeTiled[V]=!0,!0},Y.prototype.getNodeDegree=function(L){L.id;for(var V=L.getEdges(),I=0,W=0;W_e&&(_e=vt.rect.height)}I+=_e+L.verticalPadding}},Y.prototype.tileCompoundMembers=function(L,V){var I=this;this.tiledMemberPack=[],Object.keys(L).forEach(function(W){var fe=V[W];I.tiledMemberPack[W]=I.tileNodes(L[W],fe.paddingLeft+fe.paddingRight),fe.rect.width=I.tiledMemberPack[W].width,fe.rect.height=I.tiledMemberPack[W].height})},Y.prototype.tileNodes=function(L,V){var I=P.TILING_PADDING_VERTICAL,W=P.TILING_PADDING_HORIZONTAL,fe={rows:[],rowWidth:[],rowHeight:[],width:0,height:V,verticalPadding:I,horizontalPadding:W};L.sort(function(Ne,_e){return Ne.rect.width*Ne.rect.height>_e.rect.width*_e.rect.height?-1:Ne.rect.width*Ne.rect.height<_e.rect.width*_e.rect.height?1:0});for(var de=0;de0&&(Ae+=L.horizontalPadding),L.rowWidth[I]=Ae,L.width0&&(Ne+=L.verticalPadding);var _e=0;Ne>L.rowHeight[I]&&(_e=L.rowHeight[I],L.rowHeight[I]=Ne,_e=L.rowHeight[I]-_e),L.height+=_e,L.rows[I].push(V)},Y.prototype.getShortestRowIndex=function(L){for(var V=-1,I=Number.MAX_VALUE,W=0;WI&&(V=W,I=L.rowWidth[W]);return V},Y.prototype.canAddHorizontal=function(L,V,I){var W=this.getShortestRowIndex(L);if(W<0)return!0;var fe=L.rowWidth[W];if(fe+L.horizontalPadding+V<=L.width)return!0;var de=0;L.rowHeight[W]0&&(de=I+L.verticalPadding-L.rowHeight[W]);var Ae;L.width-fe>=V+L.horizontalPadding?Ae=(L.height+de)/(fe+V+L.horizontalPadding):Ae=(L.height+de)/L.width,de=I+L.verticalPadding;var Ne;return L.widthde&&V!=I){W.splice(-1,1),L.rows[I].push(fe),L.rowWidth[V]=L.rowWidth[V]-de,L.rowWidth[I]=L.rowWidth[I]+de,L.width=L.rowWidth[instance.getLongestRowIndex(L)];for(var Ae=Number.MIN_VALUE,Ne=0;NeAe&&(Ae=W[Ne].height);V>0&&(Ae+=L.verticalPadding);var _e=L.rowHeight[V]+L.rowHeight[I];L.rowHeight[V]=Ae,L.rowHeight[I]0)for(var Xe=fe;Xe<=de;Xe++)Ve[0]+=this.grid[Xe][Ae-1].length+this.grid[Xe][Ae].length-1;if(de0)for(var Xe=Ae;Xe<=Ne;Xe++)Ve[3]+=this.grid[fe-1][Xe].length+this.grid[fe][Xe].length-1;for(var rt=ne.MAX_VALUE,ft,at,et=0;et0){var Ne;Ne=j.getGraphManager().add(j.newGraph(),I),this.processChildrenList(Ne,V,j)}}},_.prototype.stop=function(){return this.stopped=!0,this};var ne=function(J){J("layout","cose-bilkent",_)};typeof cytoscape<"u"&&ne(cytoscape),ce.exports=ne}])})})(Hu);var Op=Hu.exports;const Np=_u(Op);var Zi=function(){var pe=function(j,Y,te,L){for(te=te||{},L=j.length;L--;te[j[L]]=Y);return te},le=[1,4],ee=[1,13],ce=[1,12],H=[1,15],O=[1,16],T=[1,20],w=[1,19],S=[6,7,8],G=[1,26],U=[1,24],P=[1,25],K=[6,7,11],D=[1,6,13,15,16,19,22],$=[1,33],_=[1,34],Q=[1,6,7,11,13,15,16,19,22],ne={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(Y,te,L,V,I,W,fe){var de=W.length-1;switch(I){case 6:case 7:return V;case 8:V.getLogger().trace("Stop NL ");break;case 9:V.getLogger().trace("Stop EOF ");break;case 11:V.getLogger().trace("Stop NL2 ");break;case 12:V.getLogger().trace("Stop EOF2 ");break;case 15:V.getLogger().info("Node: ",W[de].id),V.addNode(W[de-1].length,W[de].id,W[de].descr,W[de].type);break;case 16:V.getLogger().trace("Icon: ",W[de]),V.decorateNode({icon:W[de]});break;case 17:case 21:V.decorateNode({class:W[de]});break;case 18:V.getLogger().trace("SPACELIST");break;case 19:V.getLogger().trace("Node: ",W[de].id),V.addNode(0,W[de].id,W[de].descr,W[de].type);break;case 20:V.decorateNode({icon:W[de]});break;case 25:V.getLogger().trace("node found ..",W[de-2]),this.$={id:W[de-1],descr:W[de-1],type:V.getType(W[de-2],W[de])};break;case 26:this.$={id:W[de],descr:W[de],type:V.nodeType.DEFAULT};break;case 27:V.getLogger().trace("node found ..",W[de-3]),this.$={id:W[de-3],descr:W[de-1],type:V.getType(W[de-2],W[de])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:le},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:le},{6:ee,7:[1,10],9:9,12:11,13:ce,14:14,15:H,16:O,17:17,18:18,19:T,22:w},pe(S,[2,3]),{1:[2,2]},pe(S,[2,4]),pe(S,[2,5]),{1:[2,6],6:ee,12:21,13:ce,14:14,15:H,16:O,17:17,18:18,19:T,22:w},{6:ee,9:22,12:11,13:ce,14:14,15:H,16:O,17:17,18:18,19:T,22:w},{6:G,7:U,10:23,11:P},pe(K,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:T,22:w}),pe(K,[2,18]),pe(K,[2,19]),pe(K,[2,20]),pe(K,[2,21]),pe(K,[2,23]),pe(K,[2,24]),pe(K,[2,26],{19:[1,30]}),{20:[1,31]},{6:G,7:U,10:32,11:P},{1:[2,7],6:ee,12:21,13:ce,14:14,15:H,16:O,17:17,18:18,19:T,22:w},pe(D,[2,14],{7:$,11:_}),pe(Q,[2,8]),pe(Q,[2,9]),pe(Q,[2,10]),pe(K,[2,15]),pe(K,[2,16]),pe(K,[2,17]),{20:[1,35]},{21:[1,36]},pe(D,[2,13],{7:$,11:_}),pe(Q,[2,11]),pe(Q,[2,12]),{21:[1,37]},pe(K,[2,25]),pe(K,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(Y,te){if(te.recoverable)this.trace(Y);else{var L=new Error(Y);throw L.hash=te,L}},parse:function(Y){var te=this,L=[0],V=[],I=[null],W=[],fe=this.table,de="",Ae=0,Ne=0,_e=2,tt=1,vt=W.slice.call(arguments,1),Pe=Object.create(this.lexer),Ve={yy:{}};for(var Xe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Xe)&&(Ve.yy[Xe]=this.yy[Xe]);Pe.setInput(Y,Ve.yy),Ve.yy.lexer=Pe,Ve.yy.parser=this,typeof Pe.yylloc>"u"&&(Pe.yylloc={});var rt=Pe.yylloc;W.push(rt);var ft=Pe.options&&Pe.options.ranges;typeof Ve.yy.parseError=="function"?this.parseError=Ve.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function at(){var er;return er=V.pop()||Pe.lex()||tt,typeof er!="number"&&(er instanceof Array&&(V=er,er=V.pop()),er=te.symbols_[er]||er),er}for(var et,yt,wt,Pt,dt={},dr,qt,un,Zr;;){if(yt=L[L.length-1],this.defaultActions[yt]?wt=this.defaultActions[yt]:((et===null||typeof et>"u")&&(et=at()),wt=fe[yt]&&fe[yt][et]),typeof wt>"u"||!wt.length||!wt[0]){var Sa="";Zr=[];for(dr in fe[yt])this.terminals_[dr]&&dr>_e&&Zr.push("'"+this.terminals_[dr]+"'");Pe.showPosition?Sa="Parse error on line "+(Ae+1)+`: +`+Pe.showPosition()+` +Expecting `+Zr.join(", ")+", got '"+(this.terminals_[et]||et)+"'":Sa="Parse error on line "+(Ae+1)+": Unexpected "+(et==tt?"end of input":"'"+(this.terminals_[et]||et)+"'"),this.parseError(Sa,{text:Pe.match,token:this.terminals_[et]||et,line:Pe.yylineno,loc:rt,expected:Zr})}if(wt[0]instanceof Array&&wt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+et);switch(wt[0]){case 1:L.push(et),I.push(Pe.yytext),W.push(Pe.yylloc),L.push(wt[1]),et=null,Ne=Pe.yyleng,de=Pe.yytext,Ae=Pe.yylineno,rt=Pe.yylloc;break;case 2:if(qt=this.productions_[wt[1]][1],dt.$=I[I.length-qt],dt._$={first_line:W[W.length-(qt||1)].first_line,last_line:W[W.length-1].last_line,first_column:W[W.length-(qt||1)].first_column,last_column:W[W.length-1].last_column},ft&&(dt._$.range=[W[W.length-(qt||1)].range[0],W[W.length-1].range[1]]),Pt=this.performAction.apply(dt,[de,Ne,Ae,Ve.yy,wt[1],I,W].concat(vt)),typeof Pt<"u")return Pt;qt&&(L=L.slice(0,-1*qt*2),I=I.slice(0,-1*qt),W=W.slice(0,-1*qt)),L.push(this.productions_[wt[1]][0]),I.push(dt.$),W.push(dt._$),un=fe[L[L.length-2]][L[L.length-1]],L.push(un);break;case 3:return!0}}return!0}},oe=function(){var j={EOF:1,parseError:function(te,L){if(this.yy.parser)this.yy.parser.parseError(te,L);else throw new Error(te)},setInput:function(Y,te){return this.yy=te||this.yy||{},this._input=Y,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Y=this._input[0];this.yytext+=Y,this.yyleng++,this.offset++,this.match+=Y,this.matched+=Y;var te=Y.match(/(?:\r\n?|\n).*/g);return te?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Y},unput:function(Y){var te=Y.length,L=Y.split(/(?:\r\n?|\n)/g);this._input=Y+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-te),this.offset-=te;var V=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),L.length-1&&(this.yylineno-=L.length-1);var I=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:L?(L.length===V.length?this.yylloc.first_column:0)+V[V.length-L.length].length-L[0].length:this.yylloc.first_column-te},this.options.ranges&&(this.yylloc.range=[I[0],I[0]+this.yyleng-te]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Y){this.unput(this.match.slice(Y))},pastInput:function(){var Y=this.matched.substr(0,this.matched.length-this.match.length);return(Y.length>20?"...":"")+Y.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Y=this.match;return Y.length<20&&(Y+=this._input.substr(0,20-Y.length)),(Y.substr(0,20)+(Y.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Y=this.pastInput(),te=new Array(Y.length+1).join("-");return Y+this.upcomingInput()+` +`+te+"^"},test_match:function(Y,te){var L,V,I;if(this.options.backtrack_lexer&&(I={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(I.yylloc.range=this.yylloc.range.slice(0))),V=Y[0].match(/(?:\r\n?|\n).*/g),V&&(this.yylineno+=V.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:V?V[V.length-1].length-V[V.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Y[0].length},this.yytext+=Y[0],this.match+=Y[0],this.matches=Y,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Y[0].length),this.matched+=Y[0],L=this.performAction.call(this,this.yy,this,te,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),L)return L;if(this._backtrack){for(var W in I)this[W]=I[W];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Y,te,L,V;this._more||(this.yytext="",this.match="");for(var I=this._currentRules(),W=0;Wte[0].length)){if(te=L,V=W,this.options.backtrack_lexer){if(Y=this.test_match(L,I[W]),Y!==!1)return Y;if(this._backtrack){te=!1;continue}else return!1}else if(!this.options.flex)break}return te?(Y=this.test_match(te,I[V]),Y!==!1?Y:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var te=this.next();return te||this.lex()},begin:function(te){this.conditionStack.push(te)},popState:function(){var te=this.conditionStack.length-1;return te>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(te){return te=this.conditionStack.length-1-Math.abs(te||0),te>=0?this.conditionStack[te]:"INITIAL"},pushState:function(te){this.begin(te)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(te,L,V,I){switch(V){case 0:return te.getLogger().trace("Found comment",L.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:te.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return te.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:te.getLogger().trace("end icon"),this.popState();break;case 10:return te.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return te.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return te.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return te.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:te.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return te.getLogger().trace("description:",L.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),te.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),te.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),te.getLogger().trace("node end ...",L.yytext),"NODE_DEND";case 30:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),te.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),te.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),te.getLogger().trace("node end (("),"NODE_DEND";case 35:return te.getLogger().trace("Long description:",L.yytext),20;case 36:return te.getLogger().trace("Long description:",L.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return j}();ne.lexer=oe;function J(){this.yy={}}return J.prototype=ne,ne.Parser=J,new J}();Zi.parser=Zi;const Mp=Zi,on=pe=>Ep(pe,sn());let jt=[],Xu=0,Qi={};const Ip=()=>{jt=[],Xu=0,Qi={}},Rp=function(pe){for(let le=jt.length-1;le>=0;le--)if(jt[le].leveljt.length>0?jt[0]:null,Pp=(pe,le,ee,ce)=>{qr.info("addNode",pe,le,ee,ce);const H=sn(),O={id:Xu++,nodeId:on(le),level:pe,descr:on(ee),type:ce,children:[],width:sn().mindmap.maxNodeWidth};switch(O.type){case mt.ROUNDED_RECT:O.padding=2*H.mindmap.padding;break;case mt.RECT:O.padding=2*H.mindmap.padding;break;case mt.HEXAGON:O.padding=2*H.mindmap.padding;break;default:O.padding=H.mindmap.padding}const T=Rp(pe);if(T)T.children.push(O),jt.push(O);else if(jt.length===0)jt.push(O);else{let w=new Error('There can be only one root. No parent could be found for ("'+O.descr+'")');throw w.hash={text:"branch "+name,token:"branch "+name,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+name+'"']},w}},mt={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Bp=(pe,le)=>{switch(qr.debug("In get type",pe,le),pe){case"[":return mt.RECT;case"(":return le===")"?mt.ROUNDED_RECT:mt.CLOUD;case"((":return mt.CIRCLE;case")":return mt.CLOUD;case"))":return mt.BANG;case"{{":return mt.HEXAGON;default:return mt.DEFAULT}},Wu=(pe,le)=>{Qi[pe]=le},Fp=pe=>{const le=jt[jt.length-1];pe&&pe.icon&&(le.icon=on(pe.icon)),pe&&pe.class&&(le.class=on(pe.class))},Kr=pe=>{switch(pe){case mt.DEFAULT:return"no-border";case mt.RECT:return"rect";case mt.ROUNDED_RECT:return"rounded-rect";case mt.CIRCLE:return"circle";case mt.CLOUD:return"cloud";case mt.BANG:return"bang";case mt.HEXAGON:return"hexgon";default:return"no-border"}};let qu;const zp=pe=>{qu=pe},Gp=()=>qr,Vp=pe=>jt[pe],Ji=pe=>Qi[pe],$p=Object.freeze(Object.defineProperty({__proto__:null,addNode:Pp,clear:Ip,decorateNode:Fp,getElementById:Ji,getLogger:Gp,getMindmap:kp,getNodeById:Vp,getType:Bp,nodeType:mt,get parseError(){return qu},sanitizeText:on,setElementForId:Wu,setErrorHandler:zp,type2Str:Kr},Symbol.toStringTag,{value:"Module"})),Ku=12,_p=function(pe,le,ee){pe.append("path").attr("id","node-"+le.id).attr("class","node-bkg node-"+Kr(le.type)).attr("d",`M0 ${le.height-5} v${-le.height+2*5} q0,-5 5,-5 h${le.width-2*5} q5,0 5,5 v${le.height-5} H0 Z`),pe.append("line").attr("class","node-line-"+ee).attr("x1",0).attr("y1",le.height).attr("x2",le.width).attr("y2",le.height)},Up=function(pe,le){pe.append("rect").attr("id","node-"+le.id).attr("class","node-bkg node-"+Kr(le.type)).attr("height",le.height).attr("width",le.width)},Yp=function(pe,le){const ee=le.width,ce=le.height,H=.15*ee,O=.25*ee,T=.35*ee,w=.2*ee;pe.append("path").attr("id","node-"+le.id).attr("class","node-bkg node-"+Kr(le.type)).attr("d",`M0 0 a${H},${H} 0 0,1 ${ee*.25},${-1*ee*.1} + a${T},${T} 1 0,1 ${ee*.4},${-1*ee*.1} + a${O},${O} 1 0,1 ${ee*.35},${1*ee*.2} + + a${H},${H} 1 0,1 ${ee*.15},${1*ce*.35} + a${w},${w} 1 0,1 ${-1*ee*.15},${1*ce*.65} + + a${O},${H} 1 0,1 ${-1*ee*.25},${ee*.15} + a${T},${T} 1 0,1 ${-1*ee*.5},0 + a${H},${H} 1 0,1 ${-1*ee*.25},${-1*ee*.15} + + a${H},${H} 1 0,1 ${-1*ee*.1},${-1*ce*.35} + a${w},${w} 1 0,1 ${ee*.1},${-1*ce*.65} + + H0 V0 Z`)},Hp=function(pe,le){const ee=le.width,ce=le.height,H=.15*ee;pe.append("path").attr("id","node-"+le.id).attr("class","node-bkg node-"+Kr(le.type)).attr("d",`M0 0 a${H},${H} 1 0,0 ${ee*.25},${-1*ce*.1} + a${H},${H} 1 0,0 ${ee*.25},0 + a${H},${H} 1 0,0 ${ee*.25},0 + a${H},${H} 1 0,0 ${ee*.25},${1*ce*.1} + + a${H},${H} 1 0,0 ${ee*.15},${1*ce*.33} + a${H*.8},${H*.8} 1 0,0 0,${1*ce*.34} + a${H},${H} 1 0,0 ${-1*ee*.15},${1*ce*.33} + + a${H},${H} 1 0,0 ${-1*ee*.25},${ce*.15} + a${H},${H} 1 0,0 ${-1*ee*.25},0 + a${H},${H} 1 0,0 ${-1*ee*.25},0 + a${H},${H} 1 0,0 ${-1*ee*.25},${-1*ce*.15} + + a${H},${H} 1 0,0 ${-1*ee*.1},${-1*ce*.33} + a${H*.8},${H*.8} 1 0,0 0,${-1*ce*.34} + a${H},${H} 1 0,0 ${ee*.1},${-1*ce*.33} + + H0 V0 Z`)},Xp=function(pe,le){pe.append("circle").attr("id","node-"+le.id).attr("class","node-bkg node-"+Kr(le.type)).attr("r",le.width/2)};function Wp(pe,le,ee,ce,H){return pe.insert("polygon",":first-child").attr("points",ce.map(function(O){return O.x+","+O.y}).join(" ")).attr("transform","translate("+(H.width-le)/2+", "+ee+")")}const qp=function(pe,le){const ee=le.height,H=ee/4,O=le.width-le.padding+2*H,T=[{x:H,y:0},{x:O-H,y:0},{x:O,y:-ee/2},{x:O-H,y:-ee},{x:H,y:-ee},{x:0,y:-ee/2}];Wp(pe,O,ee,T,le)},Kp=function(pe,le){pe.append("rect").attr("id","node-"+le.id).attr("class","node-bkg node-"+Kr(le.type)).attr("height",le.height).attr("rx",le.padding).attr("ry",le.padding).attr("width",le.width)},Zp=function(pe,le,ee,ce){const H=ce.htmlLabels,O=ee%(Ku-1),T=pe.append("g");le.section=O;let w="section-"+O;O<0&&(w+=" section-root"),T.attr("class",(le.class?le.class+" ":"")+"mindmap-node "+w);const S=T.append("g"),G=T.append("g"),U=le.descr.replace(/()/g,` +`);Dp(G,U,{useHtmlLabels:H,width:le.width,classes:"mindmap-node-label"}),H||G.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const P=G.node().getBBox(),K=ce.fontSize.replace?ce.fontSize.replace("px",""):ce.fontSize;if(le.height=P.height+K*1.1*.5+le.padding,le.width=P.width+2*le.padding,le.icon)if(le.type===mt.CIRCLE)le.height+=50,le.width+=50,T.append("foreignObject").attr("height","50px").attr("width",le.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+O+" "+le.icon),G.attr("transform","translate("+le.width/2+", "+(le.height/2-1.5*le.padding)+")");else{le.width+=50;const D=le.height;le.height=Math.max(D,60);const $=Math.abs(le.height-D);T.append("foreignObject").attr("width","60px").attr("height",le.height).attr("style","text-align: center;margin-top:"+$/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+O+" "+le.icon),G.attr("transform","translate("+(25+le.width/2)+", "+($/2+le.padding/2)+")")}else if(H){const D=(le.width-P.width)/2,$=(le.height-P.height)/2;G.attr("transform","translate("+D+", "+$+")")}else{const D=le.width/2,$=le.padding/2;G.attr("transform","translate("+D+", "+$+")")}switch(le.type){case mt.DEFAULT:_p(S,le,O);break;case mt.ROUNDED_RECT:Kp(S,le);break;case mt.RECT:Up(S,le);break;case mt.CIRCLE:S.attr("transform","translate("+le.width/2+", "+ +le.height/2+")"),Xp(S,le);break;case mt.CLOUD:Yp(S,le);break;case mt.BANG:Hp(S,le);break;case mt.HEXAGON:qp(S,le);break}return Wu(le.id,T),le.height},Qp=function(le,ee,ce,H,O){const T=O%(Ku-1),w=ce.x+ce.width/2,S=ce.y+ce.height/2,G=ee.x+ee.width/2,U=ee.y+ee.height/2,P=G>w?w+Math.abs(w-G)/2:w-Math.abs(w-G)/2,K=U>S?S+Math.abs(S-U)/2:S-Math.abs(S-U)/2,D=G>w?Math.abs(w-P)/2+w:-Math.abs(w-P)/2+w,$=U>S?Math.abs(S-K)/2+S:-Math.abs(S-K)/2+S;le.append("path").attr("d",ce.direction==="TB"||ce.direction==="BT"?`M${w},${S} Q${w},${$} ${P},${K} T${G},${U}`:`M${w},${S} Q${D},${S} ${P},${K} T${G},${U}`).attr("class","edge section-edge-"+T+" edge-depth-"+H)},Jp=function(pe){const le=Ji(pe.id),ee=pe.x||0,ce=pe.y||0;le.attr("transform","translate("+ee+","+ce+")")},Zu={drawNode:Zp,positionNode:Jp,drawEdge:Qp};Yu.use(Np);function Qu(pe,le,ee,ce){Zu.drawNode(pe,le,ee,ce),le.children&&le.children.forEach((H,O)=>{Qu(pe,H,ee<0?O:ee,ce)})}function jp(pe,le){le.edges().map((ee,ce)=>{const H=ee.data();if(ee[0]._private.bodyBounds){const O=ee[0]._private.rscratch;qr.trace("Edge: ",ce,H),pe.insert("path").attr("d",`M ${O.startX},${O.startY} L ${O.midX},${O.midY} L${O.endX},${O.endY} `).attr("class","edge section-edge-"+H.section+" edge-depth-"+H.depth)}})}function Ju(pe,le,ee,ce){le.add({group:"nodes",data:{id:pe.id,labelText:pe.descr,height:pe.height,width:pe.width,level:ce,nodeId:pe.id,padding:pe.padding,type:pe.type},position:{x:pe.x,y:pe.y}}),pe.children&&pe.children.forEach(H=>{Ju(H,le,ee,ce+1),le.add({group:"edges",data:{id:`${pe.id}_${H.id}`,source:pe.id,target:H.id,depth:ce,section:H.section}})})}function ey(pe,le){return new Promise(ee=>{const ce=ti("body").append("div").attr("id","cy").attr("style","display:none"),H=Yu({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});ce.remove(),Ju(pe,H,le,0),H.nodes().forEach(function(O){O.layoutDimensions=()=>{const T=O.data();return{w:T.width,h:T.height}}}),H.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),H.ready(O=>{qr.info("Ready",O),ee(H)})})}function ty(pe){pe.nodes().map((le,ee)=>{const ce=le.data();ce.x=le.position().x,ce.y=le.position().y,Zu.positionNode(ce);const H=Ji(ce.nodeId);qr.info("Id:",ee,"Position: (",le.position().x,", ",le.position().y,")",ce),H.attr("transform",`translate(${le.position().x-ce.width/2}, ${le.position().y-ce.height/2})`),H.attr("attr",`apa-${ee})`)})}const ry=async(pe,le,ee,ce)=>{const H=sn();H.htmlLabels=!1,qr.debug(`Rendering mindmap diagram +`+pe,ce.parser);const O=sn().securityLevel;let T;O==="sandbox"&&(T=ti("#i"+le));const S=(O==="sandbox"?ti(T.nodes()[0].contentDocument.body):ti("body")).select("#"+le);S.append("g");const G=ce.db.getMindmap(),U=S.append("g");U.attr("class","mindmap-edges");const P=S.append("g");P.attr("class","mindmap-nodes"),Qu(P,G,-1,H);const K=await ey(G,H);jp(U,K),ty(K),wp(void 0,S,H.mindmap.padding,H.mindmap.useMaxWidth)},ay={draw:ry},ny=pe=>{let le="";for(let ee=0;ee` + .edge { + stroke-width: 3; + } + ${ny(pe)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${pe.git0}; + } + .section-root text { + fill: ${pe.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`,sy=iy,fy={db:$p,renderer:ay,parser:Mp,styles:sy};export{fy as diagram}; diff --git a/assets/namespacing.html-cpUH7-8V.js b/assets/namespacing.html-cpUH7-8V.js new file mode 100644 index 00000000..d66e0b07 --- /dev/null +++ b/assets/namespacing.html-cpUH7-8V.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-45111e2a","path":"/code/citation-style-language/specification/namespacing.html","title":"命名空间","lang":"zh-CN","frontmatter":{"title":"命名空间","date":"2022-08-02T21:00:28.000Z","updated":"2022-08-03T10:22:50.000Z","description":"命名空间 [!Done] Namespacing CSL XML 命名空间 URI 是 http://purl.org/net/xbiblio/csl。 在本规范中,当提及 CSL 元素时,命名空间前缀为 cs: ,但对于根元素 cs:style 或 cs:locale 的默认命名空间声明(用 xmlns 属性设置),通常省略 cs:。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/namespacing.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"命名空间"}],["meta",{"property":"og:description","content":"命名空间 [!Done] Namespacing CSL XML 命名空间 URI 是 http://purl.org/net/xbiblio/csl。 在本规范中,当提及 CSL 元素时,命名空间前缀为 cs: ,但对于根元素 cs:style 或 cs:locale 的默认命名空间声明(用 xmlns 属性设置),通常省略 cs:。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-02T21:00:28.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"命名空间\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-02T21:00:28.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.29,"words":86},"filePathRelative":"code/citation-style-language/specification/namespacing.md","localizedDate":"2022年8月3日","excerpt":"

    命名空间

    \\n
    \\n

    [!Done] Namespacing

    \\n
    \\n

    CSL XML 命名空间 URI 是 http://purl.org/net/xbiblio/csl

    \\n

    在本规范中,当提及 CSL 元素时,命名空间前缀为 cs: ,但对于根元素 cs:stylecs:locale 的默认命名空间声明(用 xmlns 属性设置),通常省略 cs:

    ","autoDesc":true}');export{t as data}; diff --git a/assets/namespacing.html-xT4LQWix.js b/assets/namespacing.html-xT4LQWix.js new file mode 100644 index 00000000..1f421521 --- /dev/null +++ b/assets/namespacing.html-xT4LQWix.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as c,c as r,a as e,b as n,e as s}from"./app-Mf7X6hWu.js";const a={},i=e("h1",{id:"命名空间",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#命名空间","aria-hidden":"true"},"#"),n(" 命名空间")],-1),_=e("blockquote",null,[e("p",null,"[!Done] Namespacing")],-1),d={href:"http://purl.org/net/xbiblio/csl",target:"_blank",rel:"noopener noreferrer"},p=e("p",null,[n("在本规范中,当提及 CSL 元素时,命名空间前缀为 "),e("code",null,"cs:"),n(" ,但对于根元素 "),e("code",null,"cs:style"),n(" 或 "),e("code",null,"cs:locale"),n(" 的默认命名空间声明(用 "),e("code",null,"xmlns"),n(" 属性设置),通常省略 "),e("code",null,"cs:"),n("。")],-1);function u(h,m){const o=t("ExternalLinkIcon");return c(),r("div",null,[i,_,e("p",null,[n("CSL XML 命名空间 URI 是 "),e("a",d,[n("http://purl.org/net/xbiblio/csl"),s(o)]),n("。")]),p])}const b=l(a,[["render",u],["__file","namespacing.html.vue"]]);export{b as default}; diff --git a/assets/ordinal-wXG5obU4.js b/assets/ordinal-wXG5obU4.js new file mode 100644 index 00000000..f02fd3b5 --- /dev/null +++ b/assets/ordinal-wXG5obU4.js @@ -0,0 +1 @@ +import{i as a}from"./init-Hi12RPRh.js";class o extends Map{constructor(n,t=g){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),n!=null)for(const[r,s]of n)this.set(r,s)}get(n){return super.get(c(this,n))}has(n){return super.has(c(this,n))}set(n,t){return super.set(l(this,n),t)}delete(n){return super.delete(p(this,n))}}function c({_intern:e,_key:n},t){const r=n(t);return e.has(r)?e.get(r):t}function l({_intern:e,_key:n},t){const r=n(t);return e.has(r)?e.get(r):(e.set(r,t),t)}function p({_intern:e,_key:n},t){const r=n(t);return e.has(r)&&(t=e.get(r),e.delete(r)),t}function g(e){return e!==null&&typeof e=="object"?e.valueOf():e}const f=Symbol("implicit");function h(){var e=new o,n=[],t=[],r=f;function s(u){let i=e.get(u);if(i===void 0){if(r!==f)return r;e.set(u,i=n.push(u)-1)}return t[i%t.length]}return s.domain=function(u){if(!arguments.length)return n.slice();n=[],e=new o;for(const i of u)e.has(i)||e.set(i,n.push(i)-1);return s},s.range=function(u){return arguments.length?(t=Array.from(u),s):t.slice()},s.unknown=function(u){return arguments.length?(r=u,s):r},s.copy=function(){return h(n,t).unknown(r)},a.apply(s,arguments),s}export{h as o}; diff --git a/assets/path-aUcfwwLI.js b/assets/path-aUcfwwLI.js new file mode 100644 index 00000000..f55758f4 --- /dev/null +++ b/assets/path-aUcfwwLI.js @@ -0,0 +1 @@ +const c=Math.PI,x=2*c,u=1e-6,m=x-u;function E(e){this._+=e[0];for(let t=1,h=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return E;const h=10**t;return function(i){this._+=i[0];for(let s=1,n=i.length;su)if(!(Math.abs(o*p-l*_)>u)||!n)this._append`L${this._x1=t},${this._y1=h}`;else{let d=i-$,f=s-r,y=p*p+l*l,T=d*d+f*f,g=Math.sqrt(y),v=Math.sqrt(a),w=n*Math.tan((c-Math.acos((y+a-T)/(2*g*v)))/2),M=w/v,b=w/g;Math.abs(M-1)>u&&this._append`L${t+M*_},${h+M*o}`,this._append`A${n},${n},0,0,${+(o*d>_*f)},${this._x1=t+b*p},${this._y1=h+b*l}`}}arc(t,h,i,s,n,$){if(t=+t,h=+h,i=+i,$=!!$,i<0)throw new Error(`negative radius: ${i}`);let r=i*Math.cos(s),p=i*Math.sin(s),l=t+r,_=h+p,o=1^$,a=$?s-n:n-s;this._x1===null?this._append`M${l},${_}`:(Math.abs(this._x1-l)>u||Math.abs(this._y1-_)>u)&&this._append`L${l},${_}`,i&&(a<0&&(a=a%x+x),a>m?this._append`A${i},${i},0,1,${o},${t-r},${h-p}A${i},${i},0,1,${o},${this._x1=l},${this._y1=_}`:a>u&&this._append`A${i},${i},0,${+(a>=c)},${o},${this._x1=t+i*Math.cos(n)},${this._y1=h+i*Math.sin(n)}`)}rect(t,h,i,s){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+h}h${i=+i}v${+s}h${-i}Z`}toString(){return this._}}function P(e){return function(){return e}}function q(e){let t=3;return e.digits=function(h){if(!arguments.length)return t;if(h==null)t=null;else{const i=Math.floor(h);if(!(i>=0))throw new RangeError(`invalid digits: ${h}`);t=i}return e},()=>new L(t)}export{P as c,q as w}; diff --git a/assets/photoswipe.esm-mC0Qcr12.js b/assets/photoswipe.esm-mC0Qcr12.js new file mode 100644 index 00000000..c38a7fa4 --- /dev/null +++ b/assets/photoswipe.esm-mC0Qcr12.js @@ -0,0 +1,4 @@ +/*! + * PhotoSwipe 5.4.2 - https://photoswipe.com + * (c) 2023 Dmytro Semenov + */function f(r,t,i){const e=document.createElement(t);return r&&(e.className=r),i&&i.appendChild(e),e}function p(r,t){return r.x=t.x,r.y=t.y,t.id!==void 0&&(r.id=t.id),r}function M(r){r.x=Math.round(r.x),r.y=Math.round(r.y)}function A(r,t){const i=Math.abs(r.x-t.x),e=Math.abs(r.y-t.y);return Math.sqrt(i*i+e*e)}function x(r,t){return r.x===t.x&&r.y===t.y}function I(r,t,i){return Math.min(Math.max(r,t),i)}function b(r,t,i){let e=`translate3d(${r}px,${t||0}px,0)`;return i!==void 0&&(e+=` scale3d(${i},${i},1)`),e}function y(r,t,i,e){r.style.transform=b(t,i,e)}const $="cubic-bezier(.4,0,.22,1)";function R(r,t,i,e){r.style.transition=t?`${t} ${i}ms ${e||$}`:"none"}function L(r,t,i){r.style.width=typeof t=="number"?`${t}px`:t,r.style.height=typeof i=="number"?`${i}px`:i}function U(r){R(r)}function q(r){return"decode"in r?r.decode().catch(()=>{}):r.complete?Promise.resolve(r):new Promise((t,i)=>{r.onload=()=>t(r),r.onerror=i})}const _={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function G(r){return"button"in r&&r.button===1||r.ctrlKey||r.metaKey||r.altKey||r.shiftKey}function K(r,t,i=document){let e=[];if(r instanceof Element)e=[r];else if(r instanceof NodeList||Array.isArray(r))e=Array.from(r);else{const s=typeof r=="string"?r:t;s&&(e=Array.from(i.querySelectorAll(s)))}return e}function C(){return!!(navigator.vendor&&navigator.vendor.match(/apple/i))}let F=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{F=!0}}))}catch{}class X{constructor(){this._pool=[]}add(t,i,e,s){this._toggleListener(t,i,e,s)}remove(t,i,e,s){this._toggleListener(t,i,e,s,!0)}removeAll(){this._pool.forEach(t=>{this._toggleListener(t.target,t.type,t.listener,t.passive,!0,!0)}),this._pool=[]}_toggleListener(t,i,e,s,n,o){if(!t)return;const a=n?"removeEventListener":"addEventListener";i.split(" ").forEach(l=>{if(l){o||(n?this._pool=this._pool.filter(d=>d.type!==l||d.listener!==e||d.target!==t):this._pool.push({target:t,type:l,listener:e,passive:s}));const c=F?{passive:s||!1}:!1;t[a](l,e,c)}})}}function B(r,t){if(r.getViewportSizeFn){const i=r.getViewportSizeFn(r,t);if(i)return i}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function S(r,t,i,e,s){let n=0;if(t.paddingFn)n=t.paddingFn(i,e,s)[r];else if(t.padding)n=t.padding[r];else{const o="padding"+r[0].toUpperCase()+r.slice(1);t[o]&&(n=t[o])}return Number(n)||0}function N(r,t,i,e){return{x:t.x-S("left",r,t,i,e)-S("right",r,t,i,e),y:t.y-S("top",r,t,i,e)-S("bottom",r,t,i,e)}}class Y{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this._updateAxis("x"),this._updateAxis("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}_updateAxis(t){const{pswp:i}=this.slide,e=this.slide[t==="x"?"width":"height"]*this.currZoomLevel,n=S(t==="x"?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),o=this.slide.panAreaSize[t];this.center[t]=Math.round((o-e)/2)+n,this.max[t]=e>o?Math.round(o-e)+n:this.center[t],this.min[t]=e>o?n:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return I(i,this.max[t],this.min[t])}}const T=4e3;class k{constructor(t,i,e,s){this.pswp=s,this.options=t,this.itemData=i,this.index=e,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,e){const s={x:t,y:i};this.elementSize=s,this.panAreaSize=e;const n=e.x/s.x,o=e.y/s.y;this.fit=Math.min(1,no?n:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const i=t+"ZoomLevel",e=this.options[i];if(e)return typeof e=="function"?e(this):e==="fill"?this.fill:e==="fit"?this.fit:Number(e)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,this.fit*3),this.elementSize&&t*this.elementSize.x>T&&(t=T/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,this.fit*4)}}class j{constructor(t,i,e){this.data=t,this.index=i,this.pswp=e,this.isActive=i===e.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!e.opener.isOpen,this.zoomLevels=new k(e.options,t,i,e),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:i}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=f("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new Y(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this,i=!0;this.heavyAppended||!t.opener.isOpen||t.mainScroll.isShifted()||!this.isActive&&!i||this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this}))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel===this.zoomLevels.initial||!this.isActive?(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize()):(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y))}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const e=Math.round(this.width*i)||this.pswp.viewportSize.x,s=Math.round(this.height*i)||this.pswp.viewportSize.y;!this.sizeChanged(e,s)&&!t||this.content.setDisplayedSize(e,s)}sizeChanged(t,i){return t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight?(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0):!1}getPlaceholderElement(){var t;return(t=this.content.placeholder)===null||t===void 0?void 0:t.element}zoomTo(t,i,e,s){const{pswp:n}=this;if(!this.isZoomable()||n.mainScroll.isShifted())return;n.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:e}),n.animations.stopAllPan();const o=this.currZoomLevel;s||(t=I(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,o),this.pan.y=this.calculateZoomToPanOffset("y",i,o),M(this.pan);const a=()=>{this._setResolution(t),this.applyCurrentZoomPan()};e?n.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:e,easing:n.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,e){if(this.bounds.max[t]-this.bounds.min[t]===0)return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),e||(e=this.zoomLevels.initial);const n=this.currZoomLevel/e;return this.bounds.correctPan(t,(this.pan[t]-i[t])*n+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return!!this.width&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return!!this.width&&this.content.isZoomable()}applyCurrentZoomPan(){this._applyZoomTransform(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),p(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}_applyZoomTransform(t,i,e){e/=this.currentResolution||this.zoomLevels.initial,y(this.container,t,i,e)}calculateSize(){const{pswp:t}=this;p(this.panAreaSize,N(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return b(this.pan.x,this.pan.y,t)}_setResolution(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}const Q=.35,J=.6,z=.4,E=.5;function tt(r,t){return r*t/(1-t)}class it{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&p(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:e}=this.gestures,{currSlide:s}=this.pswp;if(e==="y"&&this.pswp.options.closeOnVerticalDrag&&s&&s.currZoomLevel<=s.zoomLevels.fit&&!this.gestures.isMultitouch){const n=s.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:n}).defaultPrevented){this._setPanWithFriction("y",n,J);const o=1-Math.abs(this._getVerticalDragRatio(s.pan.y));this.pswp.applyBgOpacity(o),s.applyCurrentZoomPan()}}else this._panOrMoveMainScroll("x")||(this._panOrMoveMainScroll("y"),s&&(M(s.pan),s.applyCurrentZoomPan()))}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:e}=this.pswp;let s=0;if(this.pswp.animations.stopAll(),i.isShifted()){const o=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-E&&o<0||t.x<.1&&o<-.5?(s=1,t.x=Math.min(t.x,0)):(t.x>E&&o>0||t.x>-.1&&o>.5)&&(s=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(s,!0,t.x)}e&&e.currZoomLevel>e.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this._finishPanGestureForAxis("x"),this._finishPanGestureForAxis("y"))}_finishPanGestureForAxis(t){const{velocity:i}=this.gestures,{currSlide:e}=this.pswp;if(!e)return;const{pan:s,bounds:n}=e,o=s[t],a=this.pswp.bgOpacity<1&&t==="y",h=.995,l=o+tt(i[t],h);if(a){const v=this._getVerticalDragRatio(o),w=this._getVerticalDragRatio(l);if(v<0&&w<-z||v>0&&w>z){this.pswp.close();return}}const c=n.correctPan(t,l);if(o===c)return;const d=c===l?1:.82,u=this.pswp.bgOpacity,m=c-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:c,velocity:i[t],dampingRatio:d,onUpdate:v=>{if(a&&this.pswp.bgOpacity<1){const w=1-(c-v)/m;this.pswp.applyBgOpacity(I(u+(1-u)*w,0,1))}s[t]=Math.floor(v),e.applyCurrentZoomPan()}})}_panOrMoveMainScroll(t){const{p1:i,dragAxis:e,prevP1:s,isMultitouch:n}=this.gestures,{currSlide:o,mainScroll:a}=this.pswp,h=i[t]-s[t],l=a.x+h;if(!h||!o)return!1;if(t==="x"&&!o.isPannable()&&!n)return a.moveTo(l,!0),!0;const{bounds:c}=o,d=o.pan[t]+h;if(this.pswp.options.allowPanToNext&&e==="x"&&t==="x"&&!n){const u=a.getCurrSlideX(),m=a.x-u,v=h>0,w=!v;if(d>c.min[t]&&v){if(c.min[t]<=this.startPan[t])return a.moveTo(l,!0),!0;this._setPanWithFriction(t,d)}else if(d0)return a.moveTo(Math.max(l,u),!0),!0;if(m<0)return a.moveTo(Math.min(l,u),!0),!0}else this._setPanWithFriction(t,d)}else t==="y"?!a.isShifted()&&c.min.y!==c.max.y&&this._setPanWithFriction(t,d):this._setPanWithFriction(t,d);return!1}_getVerticalDragRatio(t){var i,e;return(t-((i=(e=this.pswp.currSlide)===null||e===void 0?void 0:e.bounds.center.y)!==null&&i!==void 0?i:0))/(this.pswp.viewportSize.y/3)}_setPanWithFriction(t,i,e){const{currSlide:s}=this.pswp;if(!s)return;const{pan:n,bounds:o}=s;if(o.correctPan(t,i)!==i||e){const h=Math.round(i-n[t]);n[t]+=h*(e||Q)}else n[t]=i}}const et=.05,st=.15;function O(r,t,i){return r.x=(t.x+i.x)/2,r.y=(t.y+i.y)/2,r}class nt{constructor(t){this.gestures=t,this._startPan={x:0,y:0},this._startZoomPoint={x:0,y:0},this._zoomPoint={x:0,y:0},this._wasOverFitZoomLevel=!1,this._startZoomLevel=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this._startZoomLevel=t.currZoomLevel,p(this._startPan,t.pan)),this.gestures.pswp.animations.stopAllPan(),this._wasOverFitZoomLevel=!1}change(){const{p1:t,startP1:i,p2:e,startP2:s,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const a=o.zoomLevels.min,h=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;O(this._startZoomPoint,i,s),O(this._zoomPoint,t,e);let l=1/A(i,s)*A(t,e)*this._startZoomLevel;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this._wasOverFitZoomLevel=!0),lh&&(l=h+(l-h)*et);o.pan.x=this._calculatePanForZoomLevel("x",l),o.pan.y=this._calculatePanForZoomLevel("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevele.zoomLevels.max?n=e.zoomLevels.max:(o=!1,n=s);const a=i.bgOpacity,h=i.bgOpacity<1,l=p({x:0,y:0},e.pan);let c=p({x:0,y:0},l);t&&(this._zoomPoint.x=0,this._zoomPoint.y=0,this._startZoomPoint.x=0,this._startZoomPoint.y=0,this._startZoomLevel=s,p(this._startPan,l)),o&&(c={x:this._calculatePanForZoomLevel("x",n),y:this._calculatePanForZoomLevel("y",n)}),e.setZoomLevel(n),c={x:e.bounds.correctPan("x",c.x),y:e.bounds.correctPan("y",c.y)},e.setZoomLevel(s);const d=!x(c,l);if(!d&&!o&&!h){e._setResolution(n),e.applyCurrentZoomPan();return}i.animations.stopAllPan(),i.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:u=>{if(u/=1e3,d||o){if(d&&(e.pan.x=l.x+(c.x-l.x)*u,e.pan.y=l.y+(c.y-l.y)*u),o){const m=s+(n-s)*u;e.setZoomLevel(m)}e.applyCurrentZoomPan()}h&&i.bgOpacity<1&&i.applyBgOpacity(I(a+(1-a)*u,0,1))},onComplete:()=>{e._setResolution(n),e.applyCurrentZoomPan()}})}}function Z(r){return!!r.target.closest(".pswp__container")}class ot{constructor(t){this.gestures=t}click(t,i){const e=i.target.classList,s=e.contains("pswp__img"),n=e.contains("pswp__item")||e.contains("pswp__zoom-wrap");s?this._doClickOrTapAction("imageClick",t,i):n&&this._doClickOrTapAction("bgClick",t,i)}tap(t,i){Z(i)&&this._doClickOrTapAction("tap",t,i)}doubleTap(t,i){Z(i)&&this._doClickOrTapAction("doubleTap",t,i)}_doClickOrTapAction(t,i,e){var s;const{pswp:n}=this.gestures,{currSlide:o}=n,a=t+"Action",h=n.options[a];if(!n.dispatch(a,{point:i,originalEvent:e}).defaultPrevented){if(typeof h=="function"){h.call(n,i,e);return}switch(h){case"close":case"next":n[h]();break;case"zoom":o==null||o.toggleZoom(i);break;case"zoom-or-close":o!=null&&o.isZoomable()&&o.zoomLevels.secondary!==o.zoomLevels.initial?o.toggleZoom(i):n.options.clickToCloseNonZoomable&&n.close();break;case"toggle-controls":(s=this.gestures.pswp.element)===null||s===void 0||s.classList.toggle("pswp--ui-visible");break}}}}const rt=10,at=300,ht=25;class lt{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this._lastStartP1={x:0,y:0},this._intervalP1={x:0,y:0},this._numActivePoints=0,this._ongoingPointers=[],this._touchEventEnabled="ontouchstart"in window,this._pointerEventEnabled=!!window.PointerEvent,this.supportsTouch=this._touchEventEnabled||this._pointerEventEnabled&&navigator.maxTouchPoints>1,this._numActivePoints=0,this._intervalTime=0,this._velocityCalculated=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this._tapTimer=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new it(this),this.zoomLevels=new nt(this),this.tapHandler=new ot(this),t.on("bindEvents",()=>{t.events.add(t.scrollWrap,"click",this._onClick.bind(this)),this._pointerEventEnabled?this._bindEvents("pointer","down","up","cancel"):this._touchEventEnabled?(this._bindEvents("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this._bindEvents("mouse","down","up")})}_bindEvents(t,i,e,s){const{pswp:n}=this,{events:o}=n,a=s?t+s:"";o.add(n.scrollWrap,t+i,this.onPointerDown.bind(this)),o.add(window,t+"move",this.onPointerMove.bind(this)),o.add(window,t+e,this.onPointerUp.bind(this)),a&&o.add(n.scrollWrap,a,this.onPointerUp.bind(this))}onPointerDown(t){const i=t.type==="mousedown"||t.pointerType==="mouse";if(i&&t.button>0)return;const{pswp:e}=this;if(!e.opener.isOpen){t.preventDefault();return}e.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(i&&(e.mouseDetected(),this._preventPointerEventBehaviour(t,"down")),e.animations.stopAll(),this._updatePoints(t,"down"),this._numActivePoints===1&&(this.dragAxis=null,p(this.startP1,this.p1)),this._numActivePoints>1?(this._clearTapTimer(),this.isMultitouch=!0):this.isMultitouch=!1)}onPointerMove(t){this._preventPointerEventBehaviour(t,"move"),this._numActivePoints&&(this._updatePoints(t,"move"),!this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===1&&!this.isDragging?(this.dragAxis||this._calculateDragDirection(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this._clearTapTimer(),this._updateStartPoints(),this._intervalTime=Date.now(),this._velocityCalculated=!1,p(this._intervalP1,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this._rafStopLoop(),this._rafRenderLoop())):this._numActivePoints>1&&!this.isZooming&&(this._finishDrag(),this.isZooming=!0,this._updateStartPoints(),this.zoomLevels.start(),this._rafStopLoop(),this._rafRenderLoop())))}_finishDrag(){this.isDragging&&(this.isDragging=!1,this._velocityCalculated||this._updateVelocity(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this._numActivePoints&&(this._updatePoints(t,"up"),!this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===0&&(this._rafStopLoop(),this.isDragging?this._finishDrag():!this.isZooming&&!this.isMultitouch&&this._finishTap(t)),this._numActivePoints<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),this._numActivePoints===1&&(this.dragAxis=null,this._updateStartPoints()))))}_rafRenderLoop(){(this.isDragging||this.isZooming)&&(this._updateVelocity(),this.isDragging?x(this.p1,this.prevP1)||this.drag.change():(!x(this.p1,this.prevP1)||!x(this.p2,this.prevP2))&&this.zoomLevels.change(),this._updatePrevPoints(),this.raf=requestAnimationFrame(this._rafRenderLoop.bind(this)))}_updateVelocity(t){const i=Date.now(),e=i-this._intervalTime;e<50&&!t||(this.velocity.x=this._getVelocity("x",e),this.velocity.y=this._getVelocity("y",e),this._intervalTime=i,p(this._intervalP1,this.p1),this._velocityCalculated=!0)}_finishTap(t){const{mainScroll:i}=this.pswp;if(i.isShifted()){i.moveIndexBy(0,!0);return}if(t.type.indexOf("cancel")>0)return;if(t.type==="mouseup"||t.pointerType==="mouse"){this.tapHandler.click(this.startP1,t);return}const e=this.pswp.options.doubleTapAction?at:0;this._tapTimer?(this._clearTapTimer(),A(this._lastStartP1,this.startP1){this.tapHandler.tap(this.startP1,t),this._clearTapTimer()},e))}_clearTapTimer(){this._tapTimer&&(clearTimeout(this._tapTimer),this._tapTimer=null)}_getVelocity(t,i){const e=this.p1[t]-this._intervalP1[t];return Math.abs(e)>1&&i>5?e/i:0}_rafStopLoop(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}_preventPointerEventBehaviour(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}_updatePoints(t,i){if(this._pointerEventEnabled){const e=t,s=this._ongoingPointers.findIndex(n=>n.id===e.pointerId);i==="up"&&s>-1?this._ongoingPointers.splice(s,1):i==="down"&&s===-1?this._ongoingPointers.push(this._convertEventPosToPoint(e,{x:0,y:0})):s>-1&&this._convertEventPosToPoint(e,this._ongoingPointers[s]),this._numActivePoints=this._ongoingPointers.length,this._numActivePoints>0&&p(this.p1,this._ongoingPointers[0]),this._numActivePoints>1&&p(this.p2,this._ongoingPointers[1])}else{const e=t;this._numActivePoints=0,e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(this._convertEventPosToPoint(e.touches[0],this.p1),this._numActivePoints++,e.touches.length>1&&(this._convertEventPosToPoint(e.touches[1],this.p2),this._numActivePoints++)):(this._convertEventPosToPoint(t,this.p1),i==="up"?this._numActivePoints=0:this._numActivePoints++)}}_updatePrevPoints(){p(this.prevP1,this.p1),p(this.prevP2,this.p2)}_updateStartPoints(){p(this.startP1,this.p1),p(this.startP2,this.p2),this._updatePrevPoints()}_calculateDragDirection(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(t!==0){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=rt&&(this.dragAxis=i)}}}_convertEventPosToPoint(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:t.identifier!==void 0&&(i.id=t.identifier),i}_onClick(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}const ct=.35;class dt{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this._currPositionIndex=0,this._prevPositionIndex=0,this._containerShiftIndex=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,e=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),s=e!==this.slideWidth;s&&(this.slideWidth=e,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach((n,o)=>{s&&y(n.el,(o+this._containerShiftIndex)*this.slideWidth),t&&n.slide&&n.slide.resize()})}resetPosition(){this._currPositionIndex=0,this._prevPositionIndex=0,this.slideWidth=0,this._containerShiftIndex=-1}appendHolders(){this.itemHolders=[];for(let t=0;t<3;t++){const i=f("pswp__item","div",this.pswp.container);i.setAttribute("role","group"),i.setAttribute("aria-roledescription","slide"),i.setAttribute("aria-hidden","true"),i.style.display=t===1?"block":"none",this.itemHolders.push({el:i})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,e){const{pswp:s}=this;let n=s.potentialIndex+t;const o=s.getNumItems();if(s.canLoop()){n=s.getLoopedIndex(n);const h=(t+o)%o;h<=o/2?t=h:t=h-o}else n<0?n=0:n>=o&&(n=o-1),t=n-s.potentialIndex;s.potentialIndex=n,this._currPositionIndex-=t,s.animations.stopMainScroll();const a=this.getCurrSlideX();if(!i)this.moveTo(a),this.updateCurrItem();else{s.animations.startSpring({isMainScroll:!0,start:this.x,end:a,velocity:e||0,naturalFrequency:30,dampingRatio:1,onUpdate:l=>{this.moveTo(l)},onComplete:()=>{this.updateCurrItem(),s.appendHeavy()}});let h=s.potentialIndex-s.currIndex;if(s.canLoop()){const l=(h+o)%o;l<=o/2?h=l:h=l-o}Math.abs(h)>1&&this.updateCurrItem()}return!!t}getCurrSlideX(){return this.slideWidth*this._currPositionIndex}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,e=this._prevPositionIndex-this._currPositionIndex;if(!e)return;this._prevPositionIndex=this._currPositionIndex,i.currIndex=i.potentialIndex;let s=Math.abs(e),n;s>=3&&(this._containerShiftIndex+=e+(e>0?-3:3),s=3);for(let o=0;o0?(n=this.itemHolders.shift(),n&&(this.itemHolders[2]=n,this._containerShiftIndex++,y(n.el,(this._containerShiftIndex+2)*this.slideWidth),i.setContent(n,i.currIndex-s+o+2))):(n=this.itemHolders.pop(),n&&(this.itemHolders.unshift(n),this._containerShiftIndex--,y(n.el,this._containerShiftIndex*this.slideWidth),i.setContent(n,i.currIndex+s-o-2)));Math.abs(this._containerShiftIndex)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach((o,a)=>{o.slide&&o.slide.setIsActive(a===1)}),i.currSlide=(t=this.itemHolders[1])===null||t===void 0?void 0:t.slide,i.contentLoader.updateLazy(e),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let e=(this.slideWidth*this._currPositionIndex-t)/this.slideWidth;e+=this.pswp.currIndex;const s=Math.round(t-this.x);(e<0&&s>0||e>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+s*ct)}this.x=t,this.pswp.container&&y(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:i??!1})}}const pt={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},g=(r,t)=>t?r:pt[r];class ut{constructor(t){this.pswp=t,this._wasFocused=!1,t.on("bindEvents",()=>{t.options.trapFocus&&(t.options.initialPointerPos||this._focusRoot(),t.events.add(document,"focusin",this._onFocusIn.bind(this))),t.events.add(document,"keydown",this._onKeyDown.bind(this))});const i=document.activeElement;t.on("destroy",()=>{t.options.returnFocus&&i&&this._wasFocused&&i.focus()})}_focusRoot(){!this._wasFocused&&this.pswp.element&&(this.pswp.element.focus(),this._wasFocused=!0)}_onKeyDown(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented||G(t))return;let e,s,n=!1;const o="key"in t;switch(o?t.key:t.keyCode){case g("Escape",o):i.options.escKey&&(e="close");break;case g("z",o):e="toggleZoom";break;case g("ArrowLeft",o):s="x";break;case g("ArrowUp",o):s="y";break;case g("ArrowRight",o):s="x",n=!0;break;case g("ArrowDown",o):n=!0,s="y";break;case g("Tab",o):this._focusRoot();break}if(s){t.preventDefault();const{currSlide:a}=i;i.options.arrowKeys&&s==="x"&&i.getNumItems()>1?e=n?"next":"prev":a&&a.currZoomLevel>a.zoomLevels.fit&&(a.pan[s]+=n?-80:80,a.panTo(a.pan.x,a.pan.y))}e&&(t.preventDefault(),i[e]())}_onFocusIn(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const mt="cubic-bezier(.4,0,.22,1)";class ft{constructor(t){var i;this.props=t;const{target:e,onComplete:s,transform:n,onFinish:o=()=>{},duration:a=333,easing:h=mt}=t;this.onFinish=o;const l=n?"transform":"opacity",c=(i=t[l])!==null&&i!==void 0?i:"";this._target=e,this._onComplete=s,this._finished=!1,this._onTransitionEnd=this._onTransitionEnd.bind(this),this._helperTimeout=setTimeout(()=>{R(e,l,a,h),this._helperTimeout=setTimeout(()=>{e.addEventListener("transitionend",this._onTransitionEnd,!1),e.addEventListener("transitioncancel",this._onTransitionEnd,!1),this._helperTimeout=setTimeout(()=>{this._finalizeAnimation()},a+500),e.style[l]=c},30)},0)}_onTransitionEnd(t){t.target===this._target&&this._finalizeAnimation()}_finalizeAnimation(){this._finished||(this._finished=!0,this.onFinish(),this._onComplete&&this._onComplete())}destroy(){this._helperTimeout&&clearTimeout(this._helperTimeout),U(this._target),this._target.removeEventListener("transitionend",this._onTransitionEnd,!1),this._target.removeEventListener("transitioncancel",this._onTransitionEnd,!1),this._finished||this._finalizeAnimation()}}const _t=12,vt=.75;class gt{constructor(t,i,e){this.velocity=t*1e3,this._dampingRatio=i||vt,this._naturalFrequency=e||_t,this._dampedFrequency=this._naturalFrequency,this._dampingRatio<1&&(this._dampedFrequency*=Math.sqrt(1-this._dampingRatio*this._dampingRatio))}easeFrame(t,i){let e=0,s;i/=1e3;const n=Math.E**(-this._dampingRatio*this._naturalFrequency*i);if(this._dampingRatio===1)s=this.velocity+this._naturalFrequency*t,e=(t+s*i)*n,this.velocity=e*-this._naturalFrequency+s*n;else if(this._dampingRatio<1){s=1/this._dampedFrequency*(this._dampingRatio*this._naturalFrequency*t+this.velocity);const o=Math.cos(this._dampedFrequency*i),a=Math.sin(this._dampedFrequency*i);e=n*(t*o+s*a),this.velocity=e*-this._naturalFrequency*this._dampingRatio+n*(-this._dampedFrequency*t*a+this._dampedFrequency*s*o)}return e}}class yt{constructor(t){this.props=t,this._raf=0;const{start:i,end:e,velocity:s,onUpdate:n,onComplete:o,onFinish:a=()=>{},dampingRatio:h,naturalFrequency:l}=t;this.onFinish=a;const c=new gt(s,h,l);let d=Date.now(),u=i-e;const m=()=>{this._raf&&(u=c.easeFrame(u,Date.now()-d),Math.abs(u)<1&&Math.abs(c.velocity)<50?(n(e),o&&o(),this.onFinish()):(d=Date.now(),n(u+e),this._raf=requestAnimationFrame(m)))};this._raf=requestAnimationFrame(m)}destroy(){this._raf>=0&&cancelAnimationFrame(this._raf),this._raf=0}}class wt{constructor(){this.activeAnimations=[]}startSpring(t){this._start(t,!0)}startTransition(t){this._start(t)}_start(t,i){const e=i?new yt(t):new ft(t);return this.activeAnimations.push(e),e.onFinish=()=>this.stop(e),e}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach(t=>{t.destroy()}),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isPan?(t.destroy(),!1):!0)}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isMainScroll?(t.destroy(),!1):!0)}isPanRunning(){return this.activeAnimations.some(t=>t.props.isPan)}}class Pt{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this._onWheel.bind(this))}_onWheel(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:e,deltaY:s}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let n=-s;t.deltaMode===1?n*=.05:n*=t.deltaMode?1:.002,n=2**n;const o=i.currZoomLevel*n;i.zoomTo(o,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(t.deltaMode===1&&(e*=18,s*=18),i.panTo(i.pan.x-e,i.pan.y-s))}}function St(r){if(typeof r=="string")return r;if(!r||!r.isCustomSVG)return"";const t=r;let i='",i}class xt{constructor(t,i){var e;const s=i.name||i.className;let n=i.html;if(t.options[s]===!1)return;typeof t.options[s+"SVG"]=="string"&&(n=t.options[s+"SVG"]),t.dispatch("uiElementCreate",{data:i});let o="";i.isButton?(o+="pswp__button ",o+=i.className||`pswp__button--${i.name}`):o+=i.className||`pswp__${i.name}`;let a=i.isButton?i.tagName||"button":i.tagName||"div";a=a.toLowerCase();const h=f(o,a);if(i.isButton){a==="button"&&(h.type="button");let{title:d}=i;const{ariaLabel:u}=i;typeof t.options[s+"Title"]=="string"&&(d=t.options[s+"Title"]),d&&(h.title=d);const m=u||d;m&&h.setAttribute("aria-label",m)}h.innerHTML=St(n),i.onInit&&i.onInit(h,t),i.onClick&&(h.onclick=d=>{typeof i.onClick=="string"?t[i.onClick]():typeof i.onClick=="function"&&i.onClick(d,h,t)});const l=i.appendTo||"bar";let c=t.element;l==="bar"?(t.topBar||(t.topBar=f("pswp__top-bar pswp__hide-on-close","div",t.scrollWrap)),c=t.topBar):(h.classList.add("pswp__hide-on-close"),l==="wrapper"&&(c=t.scrollWrap)),(e=c)===null||e===void 0||e.appendChild(t.applyFilters("uiElement",h,i))}}function H(r,t,i){r.classList.add("pswp__button--arrow"),r.setAttribute("aria-controls","pswp__items"),t.on("change",()=>{t.options.loop||(i?r.disabled=!(t.currIndex0))})}const bt={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:H},It={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(r,t)=>{H(r,t,!0)}},At={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-close"},onClick:"close"},Lt={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},Ct={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-loading"},onInit:(r,t)=>{let i,e=null;const s=(a,h)=>{r.classList.toggle("pswp__preloader--"+a,h)},n=a=>{i!==a&&(i=a,s("active",a))},o=()=>{var a;if(!((a=t.currSlide)!==null&&a!==void 0&&a.content.isLoading())){n(!1),e&&(clearTimeout(e),e=null);return}e||(e=setTimeout(()=>{var h;n(!!(!((h=t.currSlide)===null||h===void 0)&&h.content.isLoading())),e=null},t.options.preloaderDelay))};t.on("change",o),t.on("loadComplete",a=>{t.currSlide===a.slide&&o()}),t.ui&&(t.ui.updatePreloaderVisibility=o)}},Tt={name:"counter",order:5,onInit:(r,t)=>{t.on("change",()=>{r.innerText=t.currIndex+1+t.options.indexIndicatorSep+t.getNumItems()})}};function D(r,t){r.classList.toggle("pswp--zoomed-in",t)}class zt{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this._lastUpdatedZoomLevel=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[At,bt,It,Lt,Ct,Tt],t.dispatch("uiRegister"),this.uiElementsData.sort((i,e)=>(i.order||0)-(e.order||0)),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach(i=>{this.registerElement(i)}),t.on("change",()=>{var i;(i=t.element)===null||i===void 0||i.classList.toggle("pswp--one-slide",t.getNumItems()===1)}),t.on("zoomPanUpdate",()=>this._onZoomPanUpdate())}registerElement(t){this.isRegistered?this.items.push(new xt(this.pswp,t)):this.uiElementsData.push(t)}_onZoomPanUpdate(){const{template:t,currSlide:i,options:e}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:s}=i;if(this.pswp.opener.isOpen||(s=i.zoomLevels.initial),s===this._lastUpdatedZoomLevel)return;this._lastUpdatedZoomLevel=s;const n=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(n)<.01||!i.isZoomable()){D(t,!1),t.classList.remove("pswp--zoom-allowed");return}t.classList.add("pswp--zoom-allowed");const o=s===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial;D(t,o<=s),(e.imageClickAction==="zoom"||e.imageClickAction==="zoom-or-close")&&t.classList.add("pswp--click-to-zoom")}}function Et(r){const t=r.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width}}function Ot(r,t,i){const e=r.getBoundingClientRect(),s=e.width/t,n=e.height/i,o=s>n?s:n,a=(e.width-t*o)/2,h=(e.height-i*o)/2,l={x:e.left+a,y:e.top+h,w:t*o};return l.innerRect={w:e.width,h:e.height,x:a,y:h},l}function Zt(r,t,i){const e=i.dispatch("thumbBounds",{index:r,itemData:t,instance:i});if(e.thumbBounds)return e.thumbBounds;const{element:s}=t;let n,o;if(s&&i.options.thumbSelector!==!1){const a=i.options.thumbSelector||"img";o=s.matches(a)?s:s.querySelector(a)}return o=i.applyFilters("thumbEl",o,t,r),o&&(t.thumbCropped?n=Ot(o,t.width||t.w||0,t.height||t.h||0):n=Et(o)),i.applyFilters("thumbBounds",n,t,r)}class Dt{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class Mt{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,i,e=100){var s,n,o;this._filters[t]||(this._filters[t]=[]),(s=this._filters[t])===null||s===void 0||s.push({fn:i,priority:e}),(n=this._filters[t])===null||n===void 0||n.sort((a,h)=>a.priority-h.priority),(o=this.pswp)===null||o===void 0||o.addFilter(t,i,e)}removeFilter(t,i){this._filters[t]&&(this._filters[t]=this._filters[t].filter(e=>e.fn!==i)),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var e;return(e=this._filters[t])===null||e===void 0||e.forEach(s=>{i[0]=s.fn.apply(this,i)}),i[0]}on(t,i){var e,s;this._listeners[t]||(this._listeners[t]=[]),(e=this._listeners[t])===null||e===void 0||e.push(i),(s=this.pswp)===null||s===void 0||s.on(t,i)}off(t,i){var e;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(s=>i!==s)),(e=this.pswp)===null||e===void 0||e.off(t,i)}dispatch(t,i){var e;if(this.pswp)return this.pswp.dispatch(t,i);const s=new Dt(t,i);return(e=this._listeners[t])===null||e===void 0||e.forEach(n=>{n.call(this,s)}),s}}class Rt{constructor(t,i){if(this.element=f("pswp__img pswp__img--placeholder",t?"img":"div",i),t){const e=this.element;e.decoding="async",e.alt="",e.src=t,e.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&(this.element.tagName==="IMG"?(L(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=b(0,0,t/250)):L(this.element,t,i))}destroy(){var t;(t=this.element)!==null&&t!==void 0&&t.parentNode&&this.element.remove(),this.element=null}}class Ft{constructor(t,i,e){this.instance=i,this.data=t,this.index=e,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=_.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout(()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)},1e3)}load(t,i){if(this.slide&&this.usePlaceholder())if(this.placeholder){const e=this.placeholder.element;e&&!e.parentElement&&this.slide.container.prepend(e)}else{const e=this.instance.applyFilters("placeholderSrc",this.data.msrc&&this.slide.isFirstSlide?this.data.msrc:!1,this);this.placeholder=new Rt(e,this.slide.container)}this.element&&!i||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=f("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=f("pswp__content","div"),this.element.innerHTML=this.data.html||""),i&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,e;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=(i=this.data.src)!==null&&i!==void 0?i:"",s.alt=(e=this.data.alt)!==null&&e!==void 0?e:"",this.state=_.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=_.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder())}onError(){this.state=_.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===_.LOADING,this)}isError(){return this.state===_.ERROR}isImageContent(){return this.type==="image"}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(L(this.element,t,i),this.isImageContent()&&!this.isError()))){const e=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,e?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==_.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,i;let e=f("pswp__error-msg","div");e.innerText=(t=(i=this.instance.options)===null||i===void 0?void 0:i.errorMsg)!==null&&t!==void 0?t:"",e=this.instance.applyFilters("contentErrorElement",e,this),this.element=f("pswp__content pswp__error-msg-container","div"),this.element.appendChild(e),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===_.ERROR){this.displayError();return}if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||C())?(this.isDecoding=!0,this.element.decode().catch(()=>{}).finally(()=>{this.isDecoding=!1,this.appendImage()})):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!C()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder()))}}const Bt=5;function W(r,t,i){const e=t.createContentFromData(r,i);let s;const{options:n}=t;if(n){s=new k(n,r,-1);let o;t.pswp?o=t.pswp.viewportSize:o=B(n,t);const a=N(n,o,r,i);s.update(e.width,e.height,a)}return e.lazyLoad(),s&&e.setDisplayedSize(Math.ceil(e.width*s.initial),Math.ceil(e.height*s.initial)),e}function Nt(r,t){const i=t.getItemData(r);if(!t.dispatch("lazyLoadSlide",{index:r,itemData:i}).defaultPrevented)return W(i,t,r)}class kt{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,Bt),this._cachedItems=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:e}=i.options,s=t===void 0?!0:t>=0;let n;for(n=0;n<=e[1];n++)this.loadSlideByIndex(i.currIndex+(s?n:-n));for(n=1;n<=e[0];n++)this.loadSlideByIndex(i.currIndex+(s?-n:n))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let e=this.getContentByIndex(i);e||(e=Nt(i,this.pswp),e&&this.addToCache(e))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this._cachedItems.push(t),this._cachedItems.length>this.limit){const i=this._cachedItems.findIndex(e=>!e.isAttached&&!e.hasSlide);i!==-1&&this._cachedItems.splice(i,1)[0].destroy()}}removeByIndex(t){const i=this._cachedItems.findIndex(e=>e.index===t);i!==-1&&this._cachedItems.splice(i,1)}getContentByIndex(t){return this._cachedItems.find(i=>i.index===t)}destroy(){this._cachedItems.forEach(t=>t.destroy()),this._cachedItems=[]}}class Ht extends Mt{getNumItems(){var t;let i=0;const e=(t=this.options)===null||t===void 0?void 0:t.dataSource;e&&"length"in e?i=e.length:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),e.items&&(i=e.items.length));const s=this.dispatch("numItems",{dataSource:e,numItems:i});return this.applyFilters("numItems",s.numItems,e)}createContentFromData(t,i){return new Ft(t,this,i)}getItemData(t){var i;const e=(i=this.options)===null||i===void 0?void 0:i.dataSource;let s={};Array.isArray(e)?s=e[t]:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),s=e.items[t]);let n=s;n instanceof Element&&(n=this._domElementToItemData(n));const o=this.dispatch("itemData",{itemData:n||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var i,e;return(i=this.options)!==null&&i!==void 0&&i.children||(e=this.options)!==null&&e!==void 0&&e.childSelector?K(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const i={element:t},e=t.tagName==="A"?t:t.querySelector("a");if(e){i.src=e.dataset.pswpSrc||e.href,e.dataset.pswpSrcset&&(i.srcset=e.dataset.pswpSrcset),i.width=e.dataset.pswpWidth?parseInt(e.dataset.pswpWidth,10):0,i.height=e.dataset.pswpHeight?parseInt(e.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,e.dataset.pswpType&&(i.type=e.dataset.pswpType);const n=t.querySelector("img");if(n){var s;i.msrc=n.currentSrc||n.src,i.alt=(s=n.getAttribute("alt"))!==null&&s!==void 0?s:""}(e.dataset.pswpCropped||e.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,e)}lazyLoadData(t,i){return W(t,this,i)}}const P=.003;class Wt{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this._duration=void 0,this._useAnimation=!1,this._croppedZoom=!1,this._animateRootOpacity=!1,this._animateBgOpacity=!1,this._placeholder=void 0,this._opacityElement=void 0,this._cropContainer1=void 0,this._cropContainer2=void 0,this._thumbBounds=void 0,this._prepareOpen=this._prepareOpen.bind(this),t.on("firstZoomPan",this._prepareOpen)}open(){this._prepareOpen(),this._start()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this._duration=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps(),setTimeout(()=>{this._start()},this._croppedZoom?30:0)}_prepareOpen(){if(this.pswp.off("firstZoomPan",this._prepareOpen),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this._duration=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps()}}_applyStartProps(){const{pswp:t}=this,i=this.pswp.currSlide,{options:e}=t;if(e.showHideAnimationType==="fade"?(e.showHideOpacity=!0,this._thumbBounds=void 0):e.showHideAnimationType==="none"?(e.showHideOpacity=!1,this._duration=0,this._thumbBounds=void 0):this.isOpening&&t._initialThumbBounds?this._thumbBounds=t._initialThumbBounds:this._thumbBounds=this.pswp.getThumbBounds(),this._placeholder=i==null?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this._useAnimation=!!(this._duration&&this._duration>50),this._animateZoom=!!this._thumbBounds&&(i==null?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),!this._animateZoom)this._animateRootOpacity=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan());else{var s;this._animateRootOpacity=(s=e.showHideOpacity)!==null&&s!==void 0?s:!1}if(this._animateBgOpacity=!this._animateRootOpacity&&this.pswp.options.bgOpacity>P,this._opacityElement=this._animateRootOpacity?t.element:t.bg,!this._useAnimation){this._duration=0,this._animateZoom=!1,this._animateBgOpacity=!1,this._animateRootOpacity=!0,this.isOpening&&(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1));return}if(this._animateZoom&&this._thumbBounds&&this._thumbBounds.innerRect){var n;this._croppedZoom=!0,this._cropContainer1=this.pswp.container,this._cropContainer2=(n=this.pswp.currSlide)===null||n===void 0?void 0:n.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")}else this._croppedZoom=!1;this.isOpening?(this._animateRootOpacity?(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)):(this._animateBgOpacity&&t.bg&&(t.bg.style.opacity=String(P)),t.element&&(t.element.style.opacity="1")),this._animateZoom&&(this._setClosedStateZoomPan(),this._placeholder&&(this._placeholder.style.willChange="transform",this._placeholder.style.opacity=String(P)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this._croppedZoom&&t.mainScroll.x!==0&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}_start(){this.isOpening&&this._useAnimation&&this._placeholder&&this._placeholder.tagName==="IMG"?new Promise(t=>{let i=!1,e=!0;q(this._placeholder).finally(()=>{i=!0,e||t(!0)}),setTimeout(()=>{e=!1,i&&t(!0)},50),setTimeout(t,250)}).finally(()=>this._initiate()):this._initiate()}_initiate(){var t,i;(t=this.pswp.element)===null||t===void 0||t.style.setProperty("--pswp-transition-duration",this._duration+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),(i=this.pswp.element)===null||i===void 0||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this._placeholder&&(this._placeholder.style.opacity="1"),this._animateToOpenState()):this.isClosing&&this._animateToClosedState(),this._useAnimation||this._onAnimationComplete()}_onAnimationComplete(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this._animateZoom&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),(i=t.currSlide)===null||i===void 0||i.applyCurrentZoomPan()}}_animateToOpenState(){const{pswp:t}=this;this._animateZoom&&(this._croppedZoom&&this._cropContainer1&&this._cropContainer2&&(this._animateTo(this._cropContainer1,"transform","translate3d(0,0,0)"),this._animateTo(this._cropContainer2,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this._animateTo(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this._animateBgOpacity&&t.bg&&this._animateTo(t.bg,"opacity",String(t.options.bgOpacity)),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","1")}_animateToClosedState(){const{pswp:t}=this;this._animateZoom&&this._setClosedStateZoomPan(!0),this._animateBgOpacity&&t.bgOpacity>.01&&t.bg&&this._animateTo(t.bg,"opacity","0"),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","0")}_setClosedStateZoomPan(t){if(!this._thumbBounds)return;const{pswp:i}=this,{innerRect:e}=this._thumbBounds,{currSlide:s,viewportSize:n}=i;if(this._croppedZoom&&e&&this._cropContainer1&&this._cropContainer2){const o=-n.x+(this._thumbBounds.x-e.x)+e.w,a=-n.y+(this._thumbBounds.y-e.y)+e.h,h=n.x-e.w,l=n.y-e.h;t?(this._animateTo(this._cropContainer1,"transform",b(o,a)),this._animateTo(this._cropContainer2,"transform",b(h,l))):(y(this._cropContainer1,o,a),y(this._cropContainer2,h,l))}s&&(p(s.pan,e||this._thumbBounds),s.currZoomLevel=this._thumbBounds.w/s.width,t?this._animateTo(s.container,"transform",s.getCurrentTransform()):s.applyCurrentZoomPan())}_animateTo(t,i,e){if(!this._duration){t.style[i]=e;return}const{animations:s}=this.pswp,n={duration:this._duration,easing:this.pswp.options.easing,onComplete:()=>{s.activeAnimations.length||this._onAnimationComplete()},target:t};n[i]=e,s.startTransition(n)}}const Vt={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};class $t extends Ht{constructor(t){super(),this.options=this._prepareOptions(t||{}),this.offset={x:0,y:0},this._prevViewportSize={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this._initialItemData={},this._initialThumbBounds=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new X,this.animations=new wt,this.mainScroll=new dt(this),this.gestures=new lt(this),this.opener=new Wt(this),this.keyboard=new ut(this),this.contentLoader=new kt(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this._createMainStructure();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new Pt(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this._initialItemData=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this._initialItemData,slide:void 0}),this._initialThumbBounds=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",()=>{const{itemHolders:i}=this.mainScroll;i[0]&&(i[0].el.style.display="block",this.setContent(i[0],this.currIndex-1)),i[2]&&(i[2].el.style.display="block",this.setContent(i[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this._handlePageResize.bind(this)),this.events.add(window,"scroll",this._updatePageScrollOffset.bind(this)),this.dispatch("bindEvents")}),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),I(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach(t=>{var i;(i=t.slide)===null||i===void 0||i.appendHeavy()})}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;(i=this.currSlide)===null||i===void 0||i.zoomTo(...t)}toggleZoom(){var t;(t=this.currSlide)===null||t===void 0||t.toggleZoom()}close(){!this.opener.isOpen||this.isDestroying||(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying){this.options.showHideAnimationType="none",this.close();return}this.dispatch("destroy"),this._listeners={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),(t=this.element)===null||t===void 0||t.remove(),this.mainScroll.itemHolders.forEach(i=>{var e;(e=i.slide)===null||e===void 0||e.destroy()}),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach((i,e)=>{var s,n;let o=((s=(n=this.currSlide)===null||n===void 0?void 0:n.index)!==null&&s!==void 0?s:0)-1+e;if(this.canLoop()&&(o=this.getLoopedIndex(o)),o===t&&(this.setContent(i,t,!0),e===1)){var a;this.currSlide=i.slide,(a=i.slide)===null||a===void 0||a.setIsActive(!0)}}),this.dispatch("change")}setContent(t,i,e){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!e)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const s=this.getItemData(i);t.slide=new j(s,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const i=B(this.options,this);!t&&x(i,this._prevViewportSize)||(p(this._prevViewportSize,i),this.dispatch("beforeResize"),p(this.viewportSize,this._prevViewportSize),this._updatePageScrollOffset(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){if(!this.hasMouse){var t;this.hasMouse=!0,(t=this.element)===null||t===void 0||t.classList.add("pswp--has_mouse")}}_handlePageResize(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout(()=>{this.updateSize()},500)}_updatePageScrollOffset(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}_createMainStructure(){this.element=f("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=f("pswp__bg","div",this.element),this.scrollWrap=f("pswp__scroll-wrap","section",this.element),this.container=f("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new zt(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return Zt(this.currIndex,this.currSlide?this.currSlide.data:this._initialItemData,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}_prepareOptions(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...Vt,...t}}}export{$t as default}; diff --git a/assets/pieDiagram-a5166659-2XSen1e3.js b/assets/pieDiagram-a5166659-2XSen1e3.js new file mode 100644 index 00000000..51db671a --- /dev/null +++ b/assets/pieDiagram-a5166659-2XSen1e3.js @@ -0,0 +1,35 @@ +import{aK as q,aL as at,v as lt,x as ot,s as ct,g as ht,b as ut,a as yt,z as ft,d as pt,c as et,l as it,aM as gt,aJ as dt,i as mt,aN as _t}from"./mermaid.core-Up0YySao.js";import{a as tt}from"./arc-M4yoLkG1.js";import{o as vt}from"./ordinal-wXG5obU4.js";import{a as xt}from"./array-Nw74a44z.js";import{c as z}from"./path-aUcfwwLI.js";import"./app-Mf7X6hWu.js";import"./init-Hi12RPRh.js";function kt(e,u){return ue?1:u>=e?0:NaN}function bt(e){return e}function St(){var e=bt,u=kt,$=null,f=z(0),b=z(q),w=z(0);function c(r){var l,g=(r=xt(r)).length,S,A,O=0,m=new Array(g),k=new Array(g),_=+f.apply(this,arguments),h=Math.min(q,Math.max(-q,b.apply(this,arguments)-_)),T,I=Math.min(Math.abs(h)/g,w.apply(this,arguments)),p=I*(h<0?-1:1),t;for(l=0;l0&&(O+=t);for(u!=null?m.sort(function(i,n){return u(k[i],k[n])}):$!=null&&m.sort(function(i,n){return $(r[i],r[n])}),l=0,A=O?(h-g*p)/O:0;l0?t*A:0)+p,k[S]={data:r[S],index:l,value:t,startAngle:_,endAngle:T,padAngle:I};return k}return c.value=function(r){return arguments.length?(e=typeof r=="function"?r:z(+r),c):e},c.sortValues=function(r){return arguments.length?(u=r,$=null,c):u},c.sort=function(r){return arguments.length?($=r,u=null,c):$},c.startAngle=function(r){return arguments.length?(f=typeof r=="function"?r:z(+r),c):f},c.endAngle=function(r){return arguments.length?(b=typeof r=="function"?r:z(+r),c):b},c.padAngle=function(r){return arguments.length?(w=typeof r=="function"?r:z(+r),c):w},c}var H=function(){var e=function(p,t,i,n){for(i=i||{},n=p.length;n--;i[p[n]]=t);return i},u=[1,3],$=[1,4],f=[1,5],b=[1,6],w=[1,10,12,14,16,18,19,20,21,22],c=[2,4],r=[1,5,10,12,14,16,18,19,20,21,22],l=[20,21,22],g=[2,7],S=[1,12],A=[1,13],O=[1,14],m=[1,15],k=[1,16],_=[1,17],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(t,i,n,a,o,s,P){var v=s.length-1;switch(o){case 3:a.setShowData(!0);break;case 6:this.$=s[v-1];break;case 8:a.addSection(s[v-1],a.cleanupValue(s[v]));break;case 9:this.$=s[v].trim(),a.setDiagramTitle(this.$);break;case 10:this.$=s[v].trim(),a.setAccTitle(this.$);break;case 11:case 12:this.$=s[v].trim(),a.setAccDescription(this.$);break;case 13:a.addSection(s[v].substr(8)),this.$=s[v].substr(8);break}},table:[{3:1,4:2,5:u,20:$,21:f,22:b},{1:[3]},{3:7,4:2,5:u,20:$,21:f,22:b},e(w,c,{6:8,7:[1,9]}),e(r,[2,14]),e(r,[2,15]),e(r,[2,16]),{1:[2,1]},e(l,g,{8:10,9:11,1:[2,2],10:S,12:A,14:O,16:m,18:k,19:_}),e(w,c,{6:18}),e(w,[2,5]),{4:19,20:$,21:f,22:b},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},e(l,[2,12]),e(l,[2,13]),e(l,g,{8:10,9:11,1:[2,3],10:S,12:A,14:O,16:m,18:k,19:_}),e(w,[2,6]),e(l,[2,8]),e(l,[2,9]),e(l,[2,10]),e(l,[2,11])],defaultActions:{7:[2,1]},parseError:function(t,i){if(i.recoverable)this.trace(t);else{var n=new Error(t);throw n.hash=i,n}},parse:function(t){var i=this,n=[0],a=[],o=[null],s=[],P=this.table,v="",d=0,V=0,F=2,M=1,B=s.slice.call(arguments,1),y=Object.create(this.lexer),N={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(N.yy[Y]=this.yy[Y]);y.setInput(t,N.yy),N.yy.lexer=y,N.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var J=y.yylloc;s.push(J);var st=y.options&&y.options.ranges;typeof N.yy.parseError=="function"?this.parseError=N.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function rt(){var C;return C=a.pop()||y.lex()||M,typeof C!="number"&&(C instanceof Array&&(a=C,C=a.pop()),C=i.symbols_[C]||C),C}for(var x,L,E,K,R={},j,D,X,W;;){if(L=n[n.length-1],this.defaultActions[L]?E=this.defaultActions[L]:((x===null||typeof x>"u")&&(x=rt()),E=P[L]&&P[L][x]),typeof E>"u"||!E.length||!E[0]){var Z="";W=[];for(j in P[L])this.terminals_[j]&&j>F&&W.push("'"+this.terminals_[j]+"'");y.showPosition?Z="Parse error on line "+(d+1)+`: +`+y.showPosition()+` +Expecting `+W.join(", ")+", got '"+(this.terminals_[x]||x)+"'":Z="Parse error on line "+(d+1)+": Unexpected "+(x==M?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(Z,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:J,expected:W})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+x);switch(E[0]){case 1:n.push(x),o.push(y.yytext),s.push(y.yylloc),n.push(E[1]),x=null,V=y.yyleng,v=y.yytext,d=y.yylineno,J=y.yylloc;break;case 2:if(D=this.productions_[E[1]][1],R.$=o[o.length-D],R._$={first_line:s[s.length-(D||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(D||1)].first_column,last_column:s[s.length-1].last_column},st&&(R._$.range=[s[s.length-(D||1)].range[0],s[s.length-1].range[1]]),K=this.performAction.apply(R,[v,V,d,N.yy,E[1],o,s].concat(B)),typeof K<"u")return K;D&&(n=n.slice(0,-1*D*2),o=o.slice(0,-1*D),s=s.slice(0,-1*D)),n.push(this.productions_[E[1]][0]),o.push(R.$),s.push(R._$),X=P[n[n.length-2]][n[n.length-1]],n.push(X);break;case 3:return!0}}return!0}},T=function(){var p={EOF:1,parseError:function(i,n){if(this.yy.parser)this.yy.parser.parseError(i,n);else throw new Error(i)},setInput:function(t,i){return this.yy=i||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t;var i=t.match(/(?:\r\n?|\n).*/g);return i?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var i=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var o=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===a.length?this.yylloc.first_column:0)+a[a.length-n.length].length-n[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[o[0],o[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+` +`+i+"^"},test_match:function(t,i){var n,a,o;if(this.options.backtrack_lexer&&(o={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(o.yylloc.range=this.yylloc.range.slice(0))),a=t[0].match(/(?:\r\n?|\n).*/g),a&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var s in o)this[s]=o[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,i,n,a;this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),s=0;si[0].length)){if(i=n,a=s,this.options.backtrack_lexer){if(t=this.test_match(n,o[s]),t!==!1)return t;if(this._backtrack){i=!1;continue}else return!1}else if(!this.options.flex)break}return i?(t=this.test_match(i,o[a]),t!==!1?t:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var i=this.next();return i||this.lex()},begin:function(i){this.conditionStack.push(i)},popState:function(){var i=this.conditionStack.length-1;return i>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(i){return i=this.conditionStack.length-1-Math.abs(i||0),i>=0?this.conditionStack[i]:"INITIAL"},pushState:function(i){this.begin(i)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(i,n,a,o){switch(a){case 0:break;case 1:break;case 2:return 20;case 3:break;case 4:break;case 5:return this.begin("title"),12;case 6:return this.popState(),"title_value";case 7:return this.begin("acc_title"),14;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),16;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 15:this.popState();break;case 16:return"txt";case 17:return 5;case 18:return 7;case 19:return"value";case 20:return 22}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[6],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,7,9,11,14,17,18,19,20],inclusive:!0}}};return p}();h.lexer=T;function I(){this.yy={}}return I.prototype=h,h.Parser=I,new I}();H.parser=H;const Et=H,nt=at.pie,G={sections:{},showData:!1,config:nt};let U=G.sections,Q=G.showData;const $t=structuredClone(nt),wt=()=>structuredClone($t),At=()=>{U=structuredClone(G.sections),Q=G.showData,ft()},Tt=(e,u)=>{e=pt(e,et()),U[e]===void 0&&(U[e]=u,it.debug(`added new section: ${e}, with value: ${u}`))},It=()=>U,Dt=e=>(e.substring(0,1)===":"&&(e=e.substring(1).trim()),Number(e.trim())),Ct=e=>{Q=e},Ot=()=>Q,Pt={getConfig:wt,clear:At,setDiagramTitle:lt,getDiagramTitle:ot,setAccTitle:ct,getAccTitle:ht,setAccDescription:ut,getAccDescription:yt,addSection:Tt,getSections:It,cleanupValue:Dt,setShowData:Ct,getShowData:Ot},Vt=e=>` + .pieCircle{ + stroke: ${e.pieStrokeColor}; + stroke-width : ${e.pieStrokeWidth}; + opacity : ${e.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${e.pieOuterStrokeColor}; + stroke-width: ${e.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${e.pieTitleTextSize}; + fill: ${e.pieTitleTextColor}; + font-family: ${e.fontFamily}; + } + .slice { + font-family: ${e.fontFamily}; + fill: ${e.pieSectionTextColor}; + font-size:${e.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${e.pieLegendTextColor}; + font-family: ${e.fontFamily}; + font-size: ${e.pieLegendTextSize}; + } +`,Nt=Vt,Lt=e=>{const u=Object.entries(e).map(f=>({label:f[0],value:f[1]})).sort((f,b)=>b.value-f.value);return St().value(f=>f.value)(u)},zt=(e,u,$,f)=>{var b,w;it.debug(`rendering pie chart +`+e);const c=f.db,r=et(),l=gt(c.getConfig(),r.pie),g=450,S=((w=(b=document.getElementById(u))==null?void 0:b.parentElement)==null?void 0:w.offsetWidth)??l.useWidth,A=dt(u);A.attr("viewBox",`0 0 ${S} ${g}`),mt(A,g,S,l.useMaxWidth);const O=40,m=18,k=4,_=A.append("g");_.attr("transform","translate("+S/2+","+g/2+")");const{themeVariables:h}=r;let[T]=_t(h.pieOuterStrokeWidth);T??(T=2);const I=l.textPosition,p=Math.min(S,g)/2-O,t=tt().innerRadius(0).outerRadius(p),i=tt().innerRadius(p*I).outerRadius(p*I);_.append("circle").attr("cx",0).attr("cy",0).attr("r",p+T/2).attr("class","pieOuterCircle");const n=c.getSections(),a=Lt(n),o=[h.pie1,h.pie2,h.pie3,h.pie4,h.pie5,h.pie6,h.pie7,h.pie8,h.pie9,h.pie10,h.pie11,h.pie12],s=vt(o);_.selectAll("mySlices").data(a).enter().append("path").attr("d",t).attr("fill",d=>s(d.data.label)).attr("class","pieCircle");let P=0;Object.keys(n).forEach(d=>{P+=n[d]}),_.selectAll("mySlices").data(a).enter().append("text").text(d=>(d.data.value/P*100).toFixed(0)+"%").attr("transform",d=>"translate("+i.centroid(d)+")").style("text-anchor","middle").attr("class","slice"),_.append("text").text(c.getDiagramTitle()).attr("x",0).attr("y",-(g-50)/2).attr("class","pieTitleText");const v=_.selectAll(".legend").data(s.domain()).enter().append("g").attr("class","legend").attr("transform",(d,V)=>{const F=m+k,M=F*s.domain().length/2,B=12*m,y=V*F-M;return"translate("+B+","+y+")"});v.append("rect").attr("width",m).attr("height",m).style("fill",s).style("stroke",s),v.data(a).append("text").attr("x",m+k).attr("y",m-k).text(d=>{const{label:V,value:F}=d.data;return c.getShowData()?`${V} [${F}]`:V})},Ft={draw:zt},Yt={parser:Et,db:Pt,renderer:Ft,styles:Nt};export{Yt as diagram}; diff --git a/assets/plugin-vue_export-helper-x3n3nnut.js b/assets/plugin-vue_export-helper-x3n3nnut.js new file mode 100644 index 00000000..718edd33 --- /dev/null +++ b/assets/plugin-vue_export-helper-x3n3nnut.js @@ -0,0 +1 @@ +const s=(t,r)=>{const o=t.__vccOpts||t;for(const[c,e]of r)o[c]=e;return o};export{s as _}; diff --git a/assets/poscar-convert.html-5GM4hFuL.js b/assets/poscar-convert.html-5GM4hFuL.js new file mode 100644 index 00000000..c022646a --- /dev/null +++ b/assets/poscar-convert.html-5GM4hFuL.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-14e0ef58","path":"/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/poscar-convert.html","title":"POSCAR 与其他格式互转","lang":"zh-CN","frontmatter":{"title":"POSCAR 与其他格式互转","date":"2022-09-29T18:17:17.000Z","updated":"2022-09-30T08:44:47.000Z","source":"https://blog.csdn.net/qq_40481843/article/details/124885774","tag":["ase python"],"description":"POSCAR 与其他格式互转 将 POSCAR 转换为 xsd 格式文件 该方法依赖 ASE。 ASE 的 ase.io.read() 与 ase.io.write() ase.io.read() 与 ase.io.write(),文档见 File input and output — ASE documentation (dtu.dk)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/dft-learning/05.VASP/08.%E5%85%B6%E4%BB%96/poscar-convert.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"POSCAR 与其他格式互转"}],["meta",{"property":"og:description","content":"POSCAR 与其他格式互转 将 POSCAR 转换为 xsd 格式文件 该方法依赖 ASE。 ASE 的 ase.io.read() 与 ase.io.write() ase.io.read() 与 ase.io.write(),文档见 File input and output — ASE documentation (dtu.dk)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-10-04T12:31:16.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:tag","content":"ase python"}],["meta",{"property":"article:published_time","content":"2022-09-29T18:17:17.000Z"}],["meta",{"property":"article:modified_time","content":"2022-10-04T12:31:16.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"POSCAR 与其他格式互转\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-09-29T18:17:17.000Z\\",\\"dateModified\\":\\"2022-10-04T12:31:16.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"将 POSCAR 转换为 xsd 格式文件","slug":"将-poscar-转换为-xsd-格式文件","link":"#将-poscar-转换为-xsd-格式文件","children":[{"level":3,"title":"ASE 的 ase.io.read() 与 ase.io.write()","slug":"ase-的-ase-io-read-与-ase-io-write","link":"#ase-的-ase-io-read-与-ase-io-write","children":[]},{"level":3,"title":"ase.io.read()","slug":"ase-io-read","link":"#ase-io-read","children":[]},{"level":3,"title":"ase.io.write()","slug":"ase-io-write","link":"#ase-io-write","children":[]},{"level":3,"title":"单份 poscar 文件转换为 xsd 文件","slug":"单份-poscar-文件转换为-xsd-文件","link":"#单份-poscar-文件转换为-xsd-文件","children":[]},{"level":3,"title":"将多份 poscar 文件转换为 xsd 文件","slug":"将多份-poscar-文件转换为-xsd-文件","link":"#将多份-poscar-文件转换为-xsd-文件","children":[]}]}],"git":{"createdTime":1664886676000,"updatedTime":1664886676000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":2.24,"words":673},"filePathRelative":"dft-learning/05.VASP/08.其他/poscar-convert.md","localizedDate":"2022年9月30日","excerpt":"

    POSCAR 与其他格式互转

    \\n

    将 POSCAR 转换为 xsd 格式文件

    \\n

    该方法依赖 ASE。

    \\n

    ASE 的 ase.io.read()ase.io.write()

    \\n

    ase.io.read()ase.io.write(),文档见 File input and output — ASE documentation (dtu.dk)

    ","autoDesc":true}');export{e as data}; diff --git a/assets/poscar-convert.html-8aC_BtqK.js b/assets/poscar-convert.html-8aC_BtqK.js new file mode 100644 index 00000000..11e4a73f --- /dev/null +++ b/assets/poscar-convert.html-8aC_BtqK.js @@ -0,0 +1,19 @@ +import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as e,o,c,a as n,b as s,e as i,d as a}from"./app-Mf7X6hWu.js";const l={},u=a('

    POSCAR 与其他格式互转

    将 POSCAR 转换为 xsd 格式文件

    该方法依赖 ASE。

    ASE 的 ase.io.read()ase.io.write()

    ',4),r=n("code",null,"ase.io.read()",-1),d=n("code",null,"ase.io.write()",-1),k={href:"https://wiki.fysik.dtu.dk/ase/ase/io/io.html",target:"_blank",rel:"noopener noreferrer"},m=a(`

    ase.io.read()

    【功能为:Read Atoms object(s) from file

    官方关于 ase.io.read() 的使用为:

    ase.io.read(filename: Union[str, pathlib.PurePath, IO], index: Optional[Any] = None, format: Optional[str] = None, parallel: bool = True, do_not_split_by_at_sign: bool = False, **kwargs)
    +

    一般我们只需要提供 文件名称及其类型 就行,比如:

    ase.io.read(filename, format=files_format)
    +

    如,我需要读取文件‘POSCAR’,文件类型为‘vasp’,则函数调用时应为:

    ase.io.read('POSCAR, format='vasp')
    +

    ase.io.write()

    【功能为:Write Atoms object(s) to file

    官方关于 ase.io.write() 的使用为:

    ase.io.write(filename: Union[str, pathlib.PurePath, IO], images: Union[ase.atoms.Atoms, Sequence[ase.atoms.Atoms]], format: Optional[str] = None, parallel: bool = True, append: bool = False, **kwargs: dict)
    +

    其使用与 ase.io.read() 的相类似,不同地是 需要指定需要写入文件的 atoms objects,其实就是原子信息,输入的类型可以是 Atoms object or list of Atoms objects。由 ase.io.read() 函数可以知道,一份有关原子信息的文件其实就是 atoms object。所以:

    ase.io.write(‘test.xsd’, atoms object,format='xsd')
    +

    这里 test. xsd 是希望得到的文件格式的文件名 + 后缀名,POSCAR 是指读取的文件,format='xsd' 是指信息写入文件的文件类型。

    所以 ase 转换文件格式的原理 是:

    • 先读取文件中的所有信息,转为 atoms object
    • 再将 atoms object 写入其他格式的文件中

    单份 poscar 文件转换为 xsd 文件

    比如,由 VASP 得到一份 POSCAR 文件,这里实现将其文件格式转换为 xsd 格式的文件,文件名为 test。

    代码思路就是 (调用 ase.io 模块):

    • 使用 read() 函数读取文件信息,暂存为 atoms object
    • 接着使用 write() 函数将该 atoms object 写入文件
    from ase.io import read,write
    +poscar_file=read('POSCAR',format='vasp')
    +xsd_file=write('test.xsd',poscar_file,format='xsd')
    +

    注意:文件名需要带有文件格式后缀

    将多份 poscar 文件转换为 xsd 文件

    结合 for 循环遍历文件输入\\输出 atoms object,即可实现批量操作。

    def poscar_to_xsd(file_PATH):
    +#file_PATH为储存所有待转换格式的文件的文件夹路径
    +    tqdm=os.listdir(file_PATH)#文件夹中的文件列表
    +    for i in range(0,len(tqdm)):#逐次遍历文件夹下的文件
    +        inputfile = os.path.join(file_PATH,tqdm[i])#对应文件夹下的某份文件
    +        outputfile=inputfile+'.xsd'#定义转换格式后的文件名字
    +        poscar_file=read(inputfile,format='vasp')#读入文件
    +        xsd_file=write(outputfile,poscar_file,format='xsd')#将读入的文件写入其他格式的文件
    +#调用该函数
    +poscar_to_xsd("C-N-2-defect-1652750340")
    +
    在这里插入图片描述
    在这里插入图片描述
    `,27);function b(h,v){const t=e("ExternalLinkIcon");return o(),c("div",null,[u,n("p",null,[r,s(" 与 "),d,s(",文档见 "),n("a",k,[s("File input and output — ASE documentation (dtu.dk)"),i(t)])]),m])}const _=p(l,[["render",b],["__file","poscar-convert.html.vue"]]);export{_ as default}; diff --git a/assets/quadrantDiagram-6c355bbc-xTobTGzq.js b/assets/quadrantDiagram-6c355bbc-xTobTGzq.js new file mode 100644 index 00000000..5866a19e --- /dev/null +++ b/assets/quadrantDiagram-6c355bbc-xTobTGzq.js @@ -0,0 +1,7 @@ +import{a_ as vt,c as yt,aL as D,l as ot,s as Lt,g as Ct,v as zt,x as bt,a as Et,b as Dt,z as It,h as gt,i as Bt,d as wt}from"./mermaid.core-Up0YySao.js";import{l as mt}from"./linear-sLp5W0Cq.js";import"./app-Mf7X6hWu.js";import"./init-Hi12RPRh.js";var pt=function(){var e=function(K,n,r,l){for(r=r||{},l=K.length;l--;r[K[l]]=n);return r},s=[1,3],h=[1,4],x=[1,5],f=[1,6],d=[1,7],c=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],g=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],i=[32,33,34],y=[2,7],p=[1,13],B=[1,17],N=[1,18],V=[1,19],I=[1,20],b=[1,21],M=[1,22],X=[1,23],C=[1,24],it=[1,25],at=[1,26],nt=[1,27],U=[1,30],Q=[1,31],T=[1,32],m=[1,33],_=[1,34],t=[1,35],A=[1,36],S=[1,37],k=[1,38],F=[1,39],P=[1,40],v=[1,41],L=[1,42],O=[1,57],Y=[1,58],z=[5,22,26,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,QUADRANT:6,document:7,line:8,statement:9,axisDetails:10,quadrantDetails:11,points:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,text:21,point_start:22,point_x:23,point_y:24,"X-AXIS":25,"AXIS-TEXT-DELIMITER":26,"Y-AXIS":27,QUADRANT_1:28,QUADRANT_2:29,QUADRANT_3:30,QUADRANT_4:31,NEWLINE:32,SEMI:33,EOF:34,alphaNumToken:35,textNoTagsToken:36,STR:37,MD_STR:38,alphaNum:39,PUNCTUATION:40,AMP:41,NUM:42,ALPHA:43,COMMA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,UNDERSCORE:50,MINUS:51,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",6:"QUADRANT",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",22:"point_start",23:"point_x",24:"point_y",25:"X-AXIS",26:"AXIS-TEXT-DELIMITER",27:"Y-AXIS",28:"QUADRANT_1",29:"QUADRANT_2",30:"QUADRANT_3",31:"QUADRANT_4",32:"NEWLINE",33:"SEMI",34:"EOF",37:"STR",38:"MD_STR",40:"PUNCTUATION",41:"AMP",42:"NUM",43:"ALPHA",44:"COMMA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"UNDERSCORE",51:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,1],[9,1],[9,1],[9,2],[9,2],[9,2],[9,1],[9,1],[12,4],[10,4],[10,3],[10,2],[10,4],[10,3],[10,2],[11,2],[11,2],[11,2],[11,2],[4,1],[4,1],[4,1],[21,1],[21,2],[21,1],[21,1],[39,1],[39,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[36,1],[36,1],[36,1]],performAction:function(n,r,l,o,q,a,et){var u=a.length-1;switch(q){case 12:this.$=a[u].trim(),o.setDiagramTitle(this.$);break;case 13:this.$=a[u].trim(),o.setAccTitle(this.$);break;case 14:case 15:this.$=a[u].trim(),o.setAccDescription(this.$);break;case 16:o.addSection(a[u].substr(8)),this.$=a[u].substr(8);break;case 17:o.addPoint(a[u-3],a[u-1],a[u]);break;case 18:o.setXAxisLeftText(a[u-2]),o.setXAxisRightText(a[u]);break;case 19:a[u-1].text+=" ⟶ ",o.setXAxisLeftText(a[u-1]);break;case 20:o.setXAxisLeftText(a[u]);break;case 21:o.setYAxisBottomText(a[u-2]),o.setYAxisTopText(a[u]);break;case 22:a[u-1].text+=" ⟶ ",o.setYAxisBottomText(a[u-1]);break;case 23:o.setYAxisBottomText(a[u]);break;case 24:o.setQuadrant1Text(a[u]);break;case 25:o.setQuadrant2Text(a[u]);break;case 26:o.setQuadrant3Text(a[u]);break;case 27:o.setQuadrant4Text(a[u]);break;case 31:this.$={text:a[u],type:"text"};break;case 32:this.$={text:a[u-1].text+""+a[u],type:a[u-1].type};break;case 33:this.$={text:a[u],type:"text"};break;case 34:this.$={text:a[u],type:"markdown"};break;case 35:this.$=a[u];break;case 36:this.$=a[u-1]+""+a[u];break}},table:[{3:1,4:2,5:s,6:h,32:x,33:f,34:d},{1:[3]},{3:8,4:2,5:s,6:h,32:x,33:f,34:d},{3:9,4:2,5:s,6:h,32:x,33:f,34:d},e(c,[2,4],{7:10}),e(g,[2,28]),e(g,[2,29]),e(g,[2,30]),{1:[2,1]},{1:[2,2]},e(i,y,{8:11,9:12,10:14,11:15,12:16,21:28,35:29,1:[2,3],5:p,13:B,15:N,17:V,19:I,20:b,25:M,27:X,28:C,29:it,30:at,31:nt,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(c,[2,5]),{4:43,32:x,33:f,34:d},e(i,y,{10:14,11:15,12:16,21:28,35:29,9:44,5:p,13:B,15:N,17:V,19:I,20:b,25:M,27:X,28:C,29:it,30:at,31:nt,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(i,[2,9]),e(i,[2,10]),e(i,[2,11]),{14:[1,45]},{16:[1,46]},{18:[1,47]},e(i,[2,15]),e(i,[2,16]),{21:48,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:49,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:50,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:51,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:52,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{21:53,35:29,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L},{5:O,22:[1,54],35:56,36:55,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y},e(z,[2,31]),e(z,[2,33]),e(z,[2,34]),e(z,[2,37]),e(z,[2,38]),e(z,[2,39]),e(z,[2,40]),e(z,[2,41]),e(z,[2,42]),e(z,[2,43]),e(z,[2,44]),e(z,[2,45]),e(z,[2,46]),e(z,[2,47]),e(c,[2,6]),e(i,[2,8]),e(i,[2,12]),e(i,[2,13]),e(i,[2,14]),e(i,[2,20],{36:55,35:56,5:O,26:[1,59],40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,23],{36:55,35:56,5:O,26:[1,60],40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,24],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,25],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,26],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,27],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),{23:[1,61]},e(z,[2,32]),e(z,[2,48]),e(z,[2,49]),e(z,[2,50]),e(i,[2,19],{35:29,21:62,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),e(i,[2,22],{35:29,21:63,37:U,38:Q,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L}),{24:[1,64]},e(i,[2,18],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,21],{36:55,35:56,5:O,40:T,41:m,42:_,43:t,44:A,45:S,46:k,47:F,48:P,49:v,50:L,51:Y}),e(i,[2,17])],defaultActions:{8:[2,1],9:[2,2]},parseError:function(n,r){if(r.recoverable)this.trace(n);else{var l=new Error(n);throw l.hash=r,l}},parse:function(n){var r=this,l=[0],o=[],q=[null],a=[],et=this.table,u="",st=0,qt=0,St=2,Tt=1,kt=a.slice.call(arguments,1),E=Object.create(this.lexer),Z={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Z.yy[dt]=this.yy[dt]);E.setInput(n,Z.yy),Z.yy.lexer=E,Z.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var ut=E.yylloc;a.push(ut);var Ft=E.options&&E.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pt(){var j;return j=o.pop()||E.lex()||Tt,typeof j!="number"&&(j instanceof Array&&(o=j,j=o.pop()),j=r.symbols_[j]||j),j}for(var W,J,H,xt,tt={},rt,$,_t,lt;;){if(J=l[l.length-1],this.defaultActions[J]?H=this.defaultActions[J]:((W===null||typeof W>"u")&&(W=Pt()),H=et[J]&&et[J][W]),typeof H>"u"||!H.length||!H[0]){var ft="";lt=[];for(rt in et[J])this.terminals_[rt]&&rt>St&<.push("'"+this.terminals_[rt]+"'");E.showPosition?ft="Parse error on line "+(st+1)+`: +`+E.showPosition()+` +Expecting `+lt.join(", ")+", got '"+(this.terminals_[W]||W)+"'":ft="Parse error on line "+(st+1)+": Unexpected "+(W==Tt?"end of input":"'"+(this.terminals_[W]||W)+"'"),this.parseError(ft,{text:E.match,token:this.terminals_[W]||W,line:E.yylineno,loc:ut,expected:lt})}if(H[0]instanceof Array&&H.length>1)throw new Error("Parse Error: multiple actions possible at state: "+J+", token: "+W);switch(H[0]){case 1:l.push(W),q.push(E.yytext),a.push(E.yylloc),l.push(H[1]),W=null,qt=E.yyleng,u=E.yytext,st=E.yylineno,ut=E.yylloc;break;case 2:if($=this.productions_[H[1]][1],tt.$=q[q.length-$],tt._$={first_line:a[a.length-($||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-($||1)].first_column,last_column:a[a.length-1].last_column},Ft&&(tt._$.range=[a[a.length-($||1)].range[0],a[a.length-1].range[1]]),xt=this.performAction.apply(tt,[u,qt,st,Z.yy,H[1],q,a].concat(kt)),typeof xt<"u")return xt;$&&(l=l.slice(0,-1*$*2),q=q.slice(0,-1*$),a=a.slice(0,-1*$)),l.push(this.productions_[H[1]][0]),q.push(tt.$),a.push(tt._$),_t=et[l[l.length-2]][l[l.length-1]],l.push(_t);break;case 3:return!0}}return!0}},At=function(){var K={EOF:1,parseError:function(r,l){if(this.yy.parser)this.yy.parser.parseError(r,l);else throw new Error(r)},setInput:function(n,r){return this.yy=r||this.yy||{},this._input=n,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var n=this._input[0];this.yytext+=n,this.yyleng++,this.offset++,this.match+=n,this.matched+=n;var r=n.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),n},unput:function(n){var r=n.length,l=n.split(/(?:\r\n?|\n)/g);this._input=n+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),l.length-1&&(this.yylineno-=l.length-1);var q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:l?(l.length===o.length?this.yylloc.first_column:0)+o[o.length-l.length].length-l[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[q[0],q[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(n){this.unput(this.match.slice(n))},pastInput:function(){var n=this.matched.substr(0,this.matched.length-this.match.length);return(n.length>20?"...":"")+n.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var n=this.match;return n.length<20&&(n+=this._input.substr(0,20-n.length)),(n.substr(0,20)+(n.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var n=this.pastInput(),r=new Array(n.length+1).join("-");return n+this.upcomingInput()+` +`+r+"^"},test_match:function(n,r){var l,o,q;if(this.options.backtrack_lexer&&(q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(q.yylloc.range=this.yylloc.range.slice(0))),o=n[0].match(/(?:\r\n?|\n).*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-o[o.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+n[0].length},this.yytext+=n[0],this.match+=n[0],this.matches=n,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(n[0].length),this.matched+=n[0],l=this.performAction.call(this,this.yy,this,r,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var a in q)this[a]=q[a];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var n,r,l,o;this._more||(this.yytext="",this.match="");for(var q=this._currentRules(),a=0;ar[0].length)){if(r=l,o=a,this.options.backtrack_lexer){if(n=this.test_match(l,q[a]),n!==!1)return n;if(this._backtrack){r=!1;continue}else return!1}else if(!this.options.flex)break}return r?(n=this.test_match(r,q[o]),n!==!1?n:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r||this.lex()},begin:function(r){this.conditionStack.push(r)},popState:function(){var r=this.conditionStack.length-1;return r>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(r){return r=this.conditionStack.length-1-Math.abs(r||0),r>=0?this.conditionStack[r]:"INITIAL"},pushState:function(r){this.begin(r)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(r,l,o,q){switch(o){case 0:break;case 1:break;case 2:return 32;case 3:break;case 4:return this.begin("title"),13;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),15;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),17;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 25;case 14:return 27;case 15:return 26;case 16:return 28;case 17:return 29;case 18:return 30;case 19:return 31;case 20:this.begin("md_string");break;case 21:return"MD_STR";case 22:this.popState();break;case 23:this.begin("string");break;case 24:this.popState();break;case 25:return"STR";case 26:return this.begin("point_start"),22;case 27:return this.begin("point_x"),23;case 28:this.popState();break;case 29:this.popState(),this.begin("point_y");break;case 30:return this.popState(),24;case 31:return 6;case 32:return 43;case 33:return"COLON";case 34:return 45;case 35:return 44;case 36:return 46;case 37:return 46;case 38:return 47;case 39:return 49;case 40:return 50;case 41:return 48;case 42:return 41;case 43:return 51;case 44:return 42;case 45:return 5;case 46:return 33;case 47:return 40;case 48:return 34}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[30],inclusive:!1},point_x:{rules:[29],inclusive:!1},point_start:{rules:[27,28],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[21,22],inclusive:!1},string:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,23,26,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return K}();ht.lexer=At;function ct(){this.yy={}}return ct.prototype=ht,ht.Parser=ct,new ct}();pt.parser=pt;const Rt=pt,R=vt();class Vt{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var s,h,x,f,d,c,g,i,y,p,B,N,V,I,b,M,X,C;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:((s=D.quadrantChart)==null?void 0:s.chartWidth)||500,chartWidth:((h=D.quadrantChart)==null?void 0:h.chartHeight)||500,titlePadding:((x=D.quadrantChart)==null?void 0:x.titlePadding)||10,titleFontSize:((f=D.quadrantChart)==null?void 0:f.titleFontSize)||20,quadrantPadding:((d=D.quadrantChart)==null?void 0:d.quadrantPadding)||5,xAxisLabelPadding:((c=D.quadrantChart)==null?void 0:c.xAxisLabelPadding)||5,yAxisLabelPadding:((g=D.quadrantChart)==null?void 0:g.yAxisLabelPadding)||5,xAxisLabelFontSize:((i=D.quadrantChart)==null?void 0:i.xAxisLabelFontSize)||16,yAxisLabelFontSize:((y=D.quadrantChart)==null?void 0:y.yAxisLabelFontSize)||16,quadrantLabelFontSize:((p=D.quadrantChart)==null?void 0:p.quadrantLabelFontSize)||16,quadrantTextTopPadding:((B=D.quadrantChart)==null?void 0:B.quadrantTextTopPadding)||5,pointTextPadding:((N=D.quadrantChart)==null?void 0:N.pointTextPadding)||5,pointLabelFontSize:((V=D.quadrantChart)==null?void 0:V.pointLabelFontSize)||12,pointRadius:((I=D.quadrantChart)==null?void 0:I.pointRadius)||5,xAxisPosition:((b=D.quadrantChart)==null?void 0:b.xAxisPosition)||"top",yAxisPosition:((M=D.quadrantChart)==null?void 0:M.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:((X=D.quadrantChart)==null?void 0:X.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:((C=D.quadrantChart)==null?void 0:C.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:R.quadrant1Fill,quadrant2Fill:R.quadrant2Fill,quadrant3Fill:R.quadrant3Fill,quadrant4Fill:R.quadrant4Fill,quadrant1TextFill:R.quadrant1TextFill,quadrant2TextFill:R.quadrant2TextFill,quadrant3TextFill:R.quadrant3TextFill,quadrant4TextFill:R.quadrant4TextFill,quadrantPointFill:R.quadrantPointFill,quadrantPointTextFill:R.quadrantPointTextFill,quadrantXAxisTextFill:R.quadrantXAxisTextFill,quadrantYAxisTextFill:R.quadrantYAxisTextFill,quadrantTitleFill:R.quadrantTitleFill,quadrantInternalBorderStrokeFill:R.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:R.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),ot.info("clear called")}setData(s){this.data={...this.data,...s}}addPoints(s){this.data.points=[...s,...this.data.points]}setConfig(s){ot.trace("setConfig called with: ",s),this.config={...this.config,...s}}setThemeConfig(s){ot.trace("setThemeConfig called with: ",s),this.themeConfig={...this.themeConfig,...s}}calculateSpace(s,h,x,f){const d=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,c={top:s==="top"&&h?d:0,bottom:s==="bottom"&&h?d:0},g=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,i={left:this.config.yAxisPosition==="left"&&x?g:0,right:this.config.yAxisPosition==="right"&&x?g:0},y=this.config.titleFontSize+this.config.titlePadding*2,p={top:f?y:0},B=this.config.quadrantPadding+i.left,N=this.config.quadrantPadding+c.top+p.top,V=this.config.chartWidth-this.config.quadrantPadding*2-i.left-i.right,I=this.config.chartHeight-this.config.quadrantPadding*2-c.top-c.bottom-p.top,b=V/2,M=I/2;return{xAxisSpace:c,yAxisSpace:i,titleSpace:p,quadrantSpace:{quadrantLeft:B,quadrantTop:N,quadrantWidth:V,quadrantHalfWidth:b,quadrantHeight:I,quadrantHalfHeight:M}}}getAxisLabels(s,h,x,f){const{quadrantSpace:d,titleSpace:c}=f,{quadrantHalfHeight:g,quadrantHeight:i,quadrantLeft:y,quadrantHalfWidth:p,quadrantTop:B,quadrantWidth:N}=d,V=!!this.data.xAxisRightText,I=!!this.data.yAxisTopText,b=[];return this.data.xAxisLeftText&&h&&b.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:y+(V?p/2:0),y:s==="top"?this.config.xAxisLabelPadding+c.top:this.config.xAxisLabelPadding+B+i+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:V?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&h&&b.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:y+p+(V?p/2:0),y:s==="top"?this.config.xAxisLabelPadding+c.top:this.config.xAxisLabelPadding+B+i+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:V?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&x&&b.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+y+N+this.config.quadrantPadding,y:B+i-(I?g/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:I?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&x&&b.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+y+N+this.config.quadrantPadding,y:B+g-(I?g/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:I?"center":"left",horizontalPos:"top",rotation:-90}),b}getQuadrants(s){const{quadrantSpace:h}=s,{quadrantHalfHeight:x,quadrantLeft:f,quadrantHalfWidth:d,quadrantTop:c}=h,g=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:f+d,y:c,width:d,height:x,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:f,y:c,width:d,height:x,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:f,y:c+x,width:d,height:x,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:f+d,y:c+x,width:d,height:x,fill:this.themeConfig.quadrant4Fill}];for(const i of g)i.text.x=i.x+i.width/2,this.data.points.length===0?(i.text.y=i.y+i.height/2,i.text.horizontalPos="middle"):(i.text.y=i.y+this.config.quadrantTextTopPadding,i.text.horizontalPos="top");return g}getQuadrantPoints(s){const{quadrantSpace:h}=s,{quadrantHeight:x,quadrantLeft:f,quadrantTop:d,quadrantWidth:c}=h,g=mt().domain([0,1]).range([f,c+f]),i=mt().domain([0,1]).range([x+d,d]);return this.data.points.map(p=>({x:g(p.x),y:i(p.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:p.text,fill:this.themeConfig.quadrantPointTextFill,x:g(p.x),y:i(p.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}}))}getBorders(s){const h=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:x}=s,{quadrantHalfHeight:f,quadrantHeight:d,quadrantLeft:c,quadrantHalfWidth:g,quadrantTop:i,quadrantWidth:y}=x;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:c-h,y1:i,x2:c+y+h,y2:i},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:c+y,y1:i+h,x2:c+y,y2:i+d-h},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:c-h,y1:i+d,x2:c+y+h,y2:i+d},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:c,y1:i+h,x2:c,y2:i+d-h},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:c+g,y1:i+h,x2:c+g,y2:i+d-h},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:c+h,y1:i+f,x2:c+y-h,y2:i+f}]}getTitle(s){if(s)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const s=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),h=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),x=this.config.showTitle&&!!this.data.titleText,f=this.data.points.length>0?"bottom":this.config.xAxisPosition,d=this.calculateSpace(f,s,h,x);return{points:this.getQuadrantPoints(d),quadrants:this.getQuadrants(d),axisLabels:this.getAxisLabels(f,s,h,d),borderLines:this.getBorders(d),title:this.getTitle(x)}}}const Wt=yt();function G(e){return wt(e.trim(),Wt)}const w=new Vt;function Nt(e){w.setData({quadrant1Text:G(e.text)})}function Ut(e){w.setData({quadrant2Text:G(e.text)})}function Qt(e){w.setData({quadrant3Text:G(e.text)})}function Ht(e){w.setData({quadrant4Text:G(e.text)})}function Mt(e){w.setData({xAxisLeftText:G(e.text)})}function Xt(e){w.setData({xAxisRightText:G(e.text)})}function Ot(e){w.setData({yAxisTopText:G(e.text)})}function Yt(e){w.setData({yAxisBottomText:G(e.text)})}function $t(e,s,h){w.addPoints([{x:s,y:h,text:G(e.text)}])}function jt(e){w.setConfig({chartWidth:e})}function Gt(e){w.setConfig({chartHeight:e})}function Kt(){const e=yt(),{themeVariables:s,quadrantChart:h}=e;return h&&w.setConfig(h),w.setThemeConfig({quadrant1Fill:s.quadrant1Fill,quadrant2Fill:s.quadrant2Fill,quadrant3Fill:s.quadrant3Fill,quadrant4Fill:s.quadrant4Fill,quadrant1TextFill:s.quadrant1TextFill,quadrant2TextFill:s.quadrant2TextFill,quadrant3TextFill:s.quadrant3TextFill,quadrant4TextFill:s.quadrant4TextFill,quadrantPointFill:s.quadrantPointFill,quadrantPointTextFill:s.quadrantPointTextFill,quadrantXAxisTextFill:s.quadrantXAxisTextFill,quadrantYAxisTextFill:s.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:s.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:s.quadrantInternalBorderStrokeFill,quadrantTitleFill:s.quadrantTitleFill}),w.setData({titleText:bt()}),w.build()}const Zt=function(){w.clear(),It()},Jt={setWidth:jt,setHeight:Gt,setQuadrant1Text:Nt,setQuadrant2Text:Ut,setQuadrant3Text:Qt,setQuadrant4Text:Ht,setXAxisLeftText:Mt,setXAxisRightText:Xt,setYAxisTopText:Ot,setYAxisBottomText:Yt,addPoint:$t,getQuadrantData:Kt,clear:Zt,setAccTitle:Lt,getAccTitle:Ct,setDiagramTitle:zt,getDiagramTitle:bt,getAccDescription:Et,setAccDescription:Dt},te=(e,s,h,x)=>{var f,d,c;function g(t){return t==="top"?"hanging":"middle"}function i(t){return t==="left"?"start":"middle"}function y(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}const p=yt();ot.debug(`Rendering quadrant chart +`+e);const B=p.securityLevel;let N;B==="sandbox"&&(N=gt("#i"+s));const I=(B==="sandbox"?gt(N.nodes()[0].contentDocument.body):gt("body")).select(`[id="${s}"]`),b=I.append("g").attr("class","main"),M=((f=p.quadrantChart)==null?void 0:f.chartWidth)||500,X=((d=p.quadrantChart)==null?void 0:d.chartHeight)||500;Bt(I,X,M,((c=p.quadrantChart)==null?void 0:c.useMaxWidth)||!0),I.attr("viewBox","0 0 "+M+" "+X),x.db.setHeight(X),x.db.setWidth(M);const C=x.db.getQuadrantData(),it=b.append("g").attr("class","quadrants"),at=b.append("g").attr("class","border"),nt=b.append("g").attr("class","data-points"),U=b.append("g").attr("class","labels"),Q=b.append("g").attr("class","title");C.title&&Q.append("text").attr("x",0).attr("y",0).attr("fill",C.title.fill).attr("font-size",C.title.fontSize).attr("dominant-baseline",g(C.title.horizontalPos)).attr("text-anchor",i(C.title.verticalPos)).attr("transform",y(C.title)).text(C.title.text),C.borderLines&&at.selectAll("line").data(C.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);const T=it.selectAll("g.quadrant").data(C.quadrants).enter().append("g").attr("class","quadrant");T.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),T.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>g(t.text.horizontalPos)).attr("text-anchor",t=>i(t.text.verticalPos)).attr("transform",t=>y(t.text)).text(t=>t.text.text),U.selectAll("g.label").data(C.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>g(t.horizontalPos)).attr("text-anchor",t=>i(t.verticalPos)).attr("transform",t=>y(t));const _=nt.selectAll("g.data-point").data(C.points).enter().append("g").attr("class","data-point");_.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill),_.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>g(t.text.horizontalPos)).attr("text-anchor",t=>i(t.text.verticalPos)).attr("transform",t=>y(t.text))},ee={draw:te},re={parser:Rt,db:Jt,renderer:ee,styles:()=>""};export{re as diagram}; diff --git a/assets/rendering-elements.html-T-xwdnoK.js b/assets/rendering-elements.html-T-xwdnoK.js new file mode 100644 index 00000000..efe0d0ce --- /dev/null +++ b/assets/rendering-elements.html-T-xwdnoK.js @@ -0,0 +1,82 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as c,o as p,c as u,a as t,b as a,e as s,d as e}from"./app-Mf7X6hWu.js";const l={},i=e(`

    渲染元素

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。

    Layout

    cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixesformattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 "(1,2)" 类型的引文可以使用下面的代码实现:

    <citation>
    +  <layout prefix="(" suffix=")" delimiter=", ">
    +    <text variable="citation-number"/>
    +  </layout>
    +</citation>
    +

    Text

    cs:text 渲染元素用来输出文字。其必须携带下面的属性来确定什么部分需要渲染:

    • variable- 渲染一个变量的文本内容。属性值必须是 标准变量。可以与 form 属性一起选择变量的 "long"(默认)或 "short" 形式(例如:设置题目,完整题目或者简写)。如果选择了 "short" 形式,但是却没法获得,就使用 "long" 形式来渲染。
    • macro - 渲染宏的文字输出。属性值必须和 cs:macro 元素的 name 属性的值相匹配。
    • term - 渲染术语。属性必须是 [附录II 术语](#附录II 术语) 中的术语列表中的一个。通过设置复数属性 plura l 来这只其使用单数还是复数形式,其中 "true" 为默认,表示使用复数形式,设置为 "false" 表示使用单数形式。 使用 form 属性可以设置术语的形式,其值可以为 "long" (默认)、"short""verb""verb-short" 或者 "symbol" (见 术语).
    • value - 渲染属性值自己。

    一个 cs:text 的渲染 title 变量的例子:

    <text variable="title"/>
    +
    `,11),d=t("code",null,"cs:text",-1),r={href:"https://docs.citationstyles.org/en/stable/specification.html#affixes",target:"_blank",rel:"noopener noreferrer"},q={href:"https://docs.citationstyles.org/en/stable/specification.html#display",target:"_blank",rel:"noopener noreferrer"},k={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},m={href:"https://docs.citationstyles.org/en/stable/specification.html#quotes",target:"_blank",rel:"noopener noreferrer"},g={href:"https://docs.citationstyles.org/en/stable/specification.html#strip-periods",target:"_blank",rel:"noopener noreferrer"},h={href:"https://docs.citationstyles.org/en/stable/specification.html#text-case",target:"_blank",rel:"noopener noreferrer"},v=e('

    Date

    cs:date 渲染元素输出必须从 日期变量 列表中的选择。日期可以以本地化或者非本地化格式呈现。

    本地化的日期格式 通过可选的 form 属性来选择,其值必须设置为 "numeric"(完全的数字格式 ,例如:12-15-2005)或者 "text"(非数字的月份格式,例如: December 15, 2005)。本地化日期格式可以通过两种方式进行自定义。第一种:date-parts 属性可以用来设置不同的日期组成部分。其值可以设置为:

    • "year-month-day" - 默认值,渲染年,月,日
    • "year-month" - 渲染年月
    • "year" - 只渲染年

    第二种,cs:date 可以含有一个或者多个 cs:date-part 子元素(见 Date-part)。在这些子元素中可以设置属性来覆盖之前的本地化设置(例如:要获得所有语言环境的缩写月份,可以将月份的 cs:date-part 元素的 form 属性设置为 "short")。这些 cs:date-part 子元素不影响各个日期部分渲染的顺序和以及其是否渲染。cs:date-part 元素中不能使用词缀 Affixes.

    没有属性 form 的情况下,cs:date 则描述了一个自带的非本地化的日期格式。其日期格式使用 cs:date-part 子元素来构建。在使用 name 属性并设置为 daymonthyear 时,这些元素的顺序反应了其显示顺序。日期可以在 cs:date-part 元素中使用 formatting 属性以及多个 cs:date-part 的属性来格式化(见 Date-part)。cs:date 中的 delimiter 属性可以用来设置 cs:date-part 元素不同日期部分的分隔符,此外,词缀 可以用在 cs:date-part elements。

    ',6),f=t("code",null,"cs:date",-1),b={href:"https://docs.citationstyles.org/en/stable/specification.html#affixes",target:"_blank",rel:"noopener noreferrer"},_={href:"https://docs.citationstyles.org/en/stable/specification.html#display",target:"_blank",rel:"noopener noreferrer"},x={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},E={href:"https://docs.citationstyles.org/en/stable/specification.html#text-case",target:"_blank",rel:"noopener noreferrer"},y=e('

    Date-part

    cs:date-part 元素用来控制日期的各个部分怎么渲染。除了其父元素 cs:date 调用了本地化日期格式,这些子元素同样可以决定哪些部分出现以及各部分的渲染顺序。cs:date-part 元素描述了 name 属性选择的日期部分,其 name 值可以是:

    "day"

    ​ 对于 "day" 来说,cs:date-part 可能会携带 form 属性,值可以设置为:

    • "numeric" - (默认),例如,每个月第一天显示为 1

    • "numeric-leading-zeros" - 不够的位数用 0 补齐,例如,01

    • "ordinal" - 使用序数形式,例如,1st

      有的语言种,比如法语,只在月份的第一天使用 "oridinal" 也就是序数形式("1er janvier","2 janvier","3 janvier" 等)。这种输出可以通过 "oridinal" 以及 limit-day-oridinals-to-day-1 属性来设置 (see 本地化选项)。

    "month"

    ​ 对于 "month" 来说,cs:date-part 可能会携带 strip-periodsform 属性。在 locale files 中,月份缩写应该后面要加点(例如: "Jan.", "Feb.")。点可以设置 strip-periods"true" 去掉。form 属性可以设置为:

    • "long" - 默认,例如:January
    • "short" - 例如:Jan.
    • "numeric" - 例如:1
    • "numeric-leading-zeros" - 例如:01

    "year"

    ​ 对 "year" 来说,cs:date-part 可能会携带 form 属性,值可以设置为:

    • "long" - 默认,例如:2020
    • "short" - 例如:20
    ',11),D=t("code",null,"cs:date-part",-1),A={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},B={href:"https://docs.citationstyles.org/en/stable/specification.html#text-case",target:"_blank",rel:"noopener noreferrer"},C=t("code",null,"range-delimiter",-1),J=t("code",null,"cs:date",-1),F=t("code",null,"cs:date-part",-1),I=e(`

    Date Ranges

    默认的日期范围中的分隔符是短线(en-dash),比如:May–July 2008。可以在 cs:date-part 元素中通过 range-delimiter 属性来设置常用的分隔符。当日期范围被渲染的时候,范围分隔符从 cs:date-part 元素中提取,并且匹配两个日期差别中最大的部分("year","month",或 "day")。如下面的例子,将会渲染出类似 "1-4 May 2008", "May–July 2008""May 2008/June 2009" 的日期范围。

    <style>
    +  <citation>
    +    <layout>
    +      <date variable="issued">
    +        <date-part name="day" suffix=" " range-delimiter="-"/>
    +        <date-part name="month" suffix=" "/>
    +        <date-part name="year" range-delimiter="/"/>
    +      </date>
    +    </layout>
    +  </citation>
    +</style>
    +

    AD and BC

    "ad" 一词(Anno Domini)自动附加到小于四位数的正年份(例如,"79" 变为 "79AD")。"bc" 一词(Before Christ)自动附加到负年份(例如,"-2500" 变为 "2500BC")。

    Seasons

    如果日期中包含了季节而不是月份,日期术语 ("season-01""season-04", 分别代表春夏秋冬) 将取代月份术语。比如,下面将会被渲染为 "May 2008""Winter 2009"

    <style>
    +  <citation>
    +    <layout>
    +      <date variable="issued">
    +        <date-part name="month" suffix=" "/>
    +        <date-part name="year"/>
    +      </date>
    +    </layout>
    +  </citation>
    +</style>
    +

    Approximate Dates

    近似日期,在 is-uncertain-date 属性设置为 "true" 时即渲染(见 choose)。例如:下面的例子讲渲染出 2005(正常日期)和 ca.2003(近似日期)的结果。

    <style>
    +  <citation>
    +    <layout>
    +      <choose>
    +        <if is-uncertain-date="issued">
    +          <text term="circa" form="short" suffix=" "/> # circa 是大约的意思
    +        </if>
    +      </choose>
    +      <date variable="issued">
    +        <date-part name="year"/>
    +      </date>
    +    </layout>
    +  </citation>
    +</style>
    +

    Number

    cs:number 渲染元素输出 variable 属性选择的数字变量。数字变量标准变量 的子集。

    `,13),S=t("code",null,"cs:number",-1),w=t("code",null,"is-numeric",-1),L={href:"https://docs.citationstyles.org/en/stable/specification.html#choose",target:"_blank",rel:"noopener noreferrer"},T=e('

    在提取的过程中,用连字符分隔的数字将去掉中间的空格("2 - 4" 变为 "2-4")。用逗号分隔的数字在逗号后会添加一个空格,并删掉其余的空格 ("2,3" 和 "2 , 3" 变为 "2, 3")。当数字使用 & 分隔时,在前后各添加一个空格 ("2&3" 变为 "2 & 3")。

    提取的数字可以通过 form 属性行进格式化,其值可以设置为:

    • "numeric" - 默认,例如: "1", "2", "3"
    • "ordinal" - 序数数字,例如: "1st", "2nd", "3rd"。序数后缀可以使用术语定义 (见 序数后缀.
    • "long-ordinal" - 长序数,例如: "first", "second", "third"。畅序数使用术语 "long-ordinal-01" 到 "long-ordinal-10" 定义, 用来在数字 1 到 10 使用。对于其他的数字,长序数渲染的结果讲和序数相同.
    • "roman" - 罗马数字,例如:"i", "ii", "iii"

    带有前缀或者后缀的数字不能使用罗马数字进行排序或者渲染(例如:"2E" 仍然时 "2E")。没有词缀的数字可以被分别转换("2, 3" 可以转换为 "2nd, 3rd", "second, third" 或者 "ii, iii")。

    ',4),W=t("code",null,"cs:number",-1),N={href:"https://docs.citationstyles.org/en/stable/specification.html#affixes",target:"_blank",rel:"noopener noreferrer"},z={href:"https://docs.citationstyles.org/en/stable/specification.html#display",target:"_blank",rel:"noopener noreferrer"},V={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},R={href:"https://docs.citationstyles.org/en/stable/specification.html#text-case",target:"_blank",rel:"noopener noreferrer"},G=e(`

    Names

    cs:names 元素用来输出一个或多个 名字变量(或名称变量)的内容(通过必选属性 variable 来选择),每个 names 元素可以包含一个或者多个名称变量(例如:"author" 名称变量会携带引用项中所有的作者名称)。如果选择了多个变量,每个变量将会按顺序单独渲染,但当选择中包括编辑和翻译("editor""translator")不适用。当包含的内容中有两个名字变量相同时,则只渲染一个。另外,如果 cs:names 元素中包含 cs:label 元素,"editortranslator" 将用来代替 "editor""translator"(例如:Doe(editor & tranlator))。cs:names 元素中的 delimiter 属性可以用来分割不同的名字变量(例如:Doe, Smith (editors); Johnson (translator) 中间使用了分号隔开)。

    <names variable="editor translator" delimiter="; ">
    +  <label prefix=" (" suffix=")"/>
    +</names>
    +
    `,3),M=t("code",null,"cs:names",-1),O=t("code",null,"cs:name",-1),j=t("code",null,"cs:et-al",-1),K=t("code",null,"cs:substitute",-1),P=t("code",null,"cs:label",-1),H=t("code",null,"cs:names",-1),U={href:"https://docs.citationstyles.org/en/stable/specification.html#affixes",target:"_blank",rel:"noopener noreferrer"},Z={href:"https://docs.citationstyles.org/en/stable/specification.html#display",target:"_blank",rel:"noopener noreferrer"},Q={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},X=e(`

    Name

    cs:name 元素的一个可选的子元素 cs:names 可以用来描述单个 names 的格式,以及名称变量中不同 names 的分隔。cs:name 可能携带下面的属性:

    and

    ​ 在名称变量中用来设置倒数第二个名字和倒数第一个名字的分隔符。可选的值为 "text"("Doe, Johnson and Smith") 或者 "symbol"(eg: "Doe, Johnson & Smith")。

    delimiter

    ​ 在名称变量中设置字符串来分隔名称。默认的是 ","(e.g. "Doe, Smith")。

    delimiter-precedes-et-al

    ​ 确定在使用 et-al 缩写的情况下,在截断的姓名列表和 et-al 术语之间何时使用分隔符或者空格。该属性可选的值有:

    • "contextual" - (default), 在作者列表中有 2 个及以上的人时使用
      • 1 name: "J. Doe et al."
      • 2 names: "J. Doe, S. Smith, et al." 两个人,则在最后一个人名和 et-al 间使用 , 分隔
    • "after-inverted-name" - 在 name-as-sort-order 属性使当前的名字发生了颠倒时使用。例如:当 name-as-sort-order 属性设置为 "first" 时,第一个名字的前后部分 Doe 和 J 发生了反转,因此在第一个名字后面使用了分隔符 ,
      • "Doe, J., et al."
      • "Doe, J., S. Smith et al."
    • "always" - 不论几个名字或者怎样的设置,总是使用
      • 1 name: "J. Doe, et al."
      • 2 names: "J. Doe, S. Smith, et al."
    • "never" - 禁止使用分隔符,不论几个名字。
      • 1 name: "J. Doe et al."
      • 2 names: "J. Doe, S. Smith et al."

    delimiter-precedes-last

    在名字列表中确定何时使用分隔符来分割最后一个作者和倒数第二个作者。如果 and 没有被设置,则不论 delimiter-precedes-last 属性的值,名字分隔符总是使用。

    • "contextual" - 默认,当名字列表中的名字有 3 个或以上时使用。下面在使用 3 个名字时,在 and 前使用了分隔符 ,
      • 2 个名字: "J. Doe and T. Williams"
      • 3 个名字: "J. Doe, S. Smith, and T. Williams"
    • "after-inverted-name" - 在 name-as-sort-order 属性使当前的名字发生了颠倒时使用。例如:当 name-as-sort-order 属性设置为 "first" 时,仅在第一个名字后使用了分隔符 ,
      • "Doe, J., and T. Williams"
      • "Doe, J., S. Smith and T. Williams"
    • "always" - 分隔符一直使用。
      • 2 names: "J. Doe, and T. Williams"
      • 3 names: "J. Doe, S. Smith, and T. Williams"
    • "never" - 禁用分隔符
      • 2 names: "J. Doe and T. Williams"
      • 3 names: "J. Doe, S. Smith and T. Williams"

    et-al-min/et-al-use-first

    通过设置这两个属性,可是使用 et-al 对名字列表进行缩写。如果名字变量中的名字的数目超过了 et-al-min 属性设置的值,则达到 et-al-use-first 设置的名称数量后,渲染的名字列表将被截断。"et-al"(或者 "and others")术语用来添加到截断列表的后面(见 et-al)。默认地,当名字列表被截断到单个名字,则名字和 "et-al" 术语之间使用空格进行隔开(例如:Doe et al.)。当一个名字列表被截断到两个或者三个名字,则使用分隔符(例如:Doe, Smith, et al.)。这些行为可以使用 delimiter-precedes-et-al 属性来设置。

    et-al-subsequent-min/st-al-subsequent-use-first

    如果使用了这两个属性,则属性的值分别替换 et-al-minet-al-use-first 的值以便后续引用。

    et-al-use-last

    当该属性设置为 "true" 时,(默认为 "false"),则使用下面的格式:截断的名称列表,分隔符,省略号,名称列表最后一个名字。这个属性只能在名称列表有多余两个的名称时使用。例:

    A. Goffeau, B. G. Barrell, H. Bussey, R. W. Davis, B. Dujon, H.
    +Feldmann, … S. G. Oliver
    +

    下面讨论的属性将只会影响单个人的名字,这里先给出名字的组成部分。单个人的名字必须含有 "family" 部分,还可以含有 "given","suffix","non-dropping-particle",和 "dropping particle" 等部分。下面对这些部分分别进行解释:

    • "family" - 姓氏,必须去掉 particle(译注:暂译为粒子)和后缀
    • "given" - 全名 "John Edward" 或者 J. E.
    • "suffix" - 名字后缀,比如:外国人常用的 Jr 或者罗马数字(经常翻译为 xx 世,比如伊丽莎白二世) "Jr." in "John Smith Jr." 或者 "III" in "Bill Gates III"
    • "non-dropping-particle" - 不可删除(省略)的粒子。当只显示姓氏的时候,不能省略 ("de" in the Dutch surname "de Koning") ,但是可能会在姓氏中分别对待,比如在排序的时候
    • "dropping-particle" - 可删除的粒子。当只显示姓氏的是欧,可以省略 ("van" in "Ludwig van Beethoven", which becomes "Beethoven")

    下面的属性将会影响单个人的名称的渲染:

    form

    指定是否显示名字的所有部分(默认为 "long"),或者只显示姓氏和不可省略粒子(值为 "short")。除这两种情况外,还可以设置为 "count",返回使用 cs:names 元素渲染的部分的总数(考虑 et-al 缩写和编辑/翻译等折叠的影响)。

    initialize

    当该属性设置为 "false 时(默认的结果为 "true"),并且 "initialize-with" 属性被设置时,全名将不使用缩写。但是,如果在全名中有单独的大写字母的时候,仍然会添加 \`\`"initialize-with"的值。例如:当initialize设置为"false",并且 initialize-with设置为"."\` 时,James T kirk 将会变为 James T. Kirk。

    initialize-with

    当该实行被设置时,全名将会使用缩写。该属性将会在每个首字母后添加属性值,比如:上述的名字会变为 J.J. Doe。对于合成的全名,例如:Jean-luc,可以使用全局的带有连字符的 initialize-with-hyphen 属性来设置其缩写形式(见 人名中的连字符)。

    name-as-sort-order

    指定名字的显示顺序为:姓,然后是名,例如:John Doe 变为 Doe,John。该属性值可以设置为:

    • "first" - 属性只影响名字变量中的第一个名字
    • "all" - 属性将会影响所有的名字

    注意:即使 name-as-sort-order 改变了名字内部的顺序,最终显示的顺序不一定与包含粒子和后缀的名字的相同(见 名字内部顺序)。name-as-sort-order 只影响以拉丁字母或者西里尔字母书写的名字。其他字母书写的名字(比如,亚洲的大部分名字)总是将全名中的姓显示在前面。

    sort-separator

    设置名字的不同部分由于 name-as-sort-order 属性导致的内部位置变换后的分隔符。默认值为 ","(Doe, John)。和 name-as-sort-order 属性相同,该属性只适用于拉丁字母和西里尔字母的名字。

    cs:name 元素也可以携带 词缀格式化

    名字内部顺序

    名字内部各部分的顺序取决于 cs:name 元素中 formname-as-sort-order 属性和 cs:style 元素中的 demote-non-droping-particle 属性的设置。名称各部分的显示和排序的属性通常是不同的。下面将对名字顺序进行简单的介绍:

    拉丁/西里尔名字的显示顺序


    条件:form 属性设置为 "long"

    顺序:1. 名 2. 可省略粒子 3. 不可省略粒子 4. 姓 5. 后缀

    示例:Jean de La Fontaine III


    条件:form 属性设置为 "long"name-as-sort-order 属性激活,demote-non-dropping-particle 属性设置为 "never" 或者 "sort-only"

    顺序:1. 不可省略粒子 2. 姓 3. 名 4. 可省略粒子 5. 后缀

    示例:La Fontaine, Jean de, III


    条件:form 属性设置为 "long"name-as-sort-order 属性激活,demote-non-dropping-particle 属性设置为 "display-and-sort"

    顺序:1. 姓 2. 名 3. 可省略粒子 4. 不可省略粒子 5. 后缀

    示例:Fontaine, Jean de La III


    条件:form 属性设置为 "short"

    顺序:1. 不可省略粒子 2. 姓

    示例:La Fontaine


    拉丁/西里尔名字的排序顺序


    条件:demote-non-dropping-particle 属性设置为 "never"

    顺序:1. 不可省略粒子 + 姓 2. 可省略粒子 3. 名 4. 后缀

    示例:La Fontaine de Jean III


    条件:demote-non-dropping-particle 属性设置为 "sort-only" 或者 "display-and-sort"

    顺序:1. 姓 2. 可省略粒子 + 不可省略粒子 3. 名 4. 后缀

    示例:Fontaine de La Jean III


    非拉丁和非西里尔名字的显示和排序顺序


    条件:form 属性设置为 "long"

    顺序:1. 姓 2. 名

    示例:张三 或者 Zhang San


    条件:form 属性设置为 "short"

    顺序:1. 姓

    示例:张 或者 Zhang


    名字格式化

    cs:name 元素可能会携带一个或者两个 cs:name-part 子元素来对名字的小部分进行特定的格式化。cs:name-part 必须携带 name 属性,设置为 "given" 或者 "family"

    如果设置为 "given"cs:name-part 元素的 格式化文字大小写 属性会影响 "given""dropping-particle" 部分。词缀 出现在 "given" 左右,将该部分扩起来。

    如果设置为 "family"cs:name-part 元素的 格式化文字大小写 属性会影响 "given""non-dropping-particle" 部分。词缀 出现在 "family" 左右,将该部分扩起来。

    "suffix" 部分不受 name-part 部分格式限制。cs:name-part 元素不影响 name-part 渲染的顺序。下面的代码,将产生类似 Jane DOE 的效果:

    <names variable="author">
    +  <name>
    +    <name-part name="family" text-case="uppercase"/>
    +  </name>
    +</names>
    +

    Et-al

    Et-al 缩写通过 et-al-... 属性来控制(见 Name),同时也可以使用可选的 cs:et-al 元素设置,cs:et-al 元素必须放在 cs:name 元素后。term 属性可以被设置为 "et-al"(默认)或者 "and others"格式化 属性可以用来设置 et-al 的格式,下面是 "et-al" 术语的一个例子:

    <names variable="author">
    +  <et-al term="and others" font-style="italic"/>
    +</names>
    +

    Substitute

    可选的 cs:substitute 元素,是 cs:names 的子元素,且必须是最后一个子元素,在父元素 cs:names 中指定的 名称变量 为空时添加替换。替换必须放在 cs:substitute 元素中,并且必须包含一个或者多个渲染元素(除 cs:layout)。cs:names 的简洁版本没有子元素,继承了 cs:names 元素中在 cs:namecs:et-al 子元素的属性值。如果 cs:substitute 元素包含了多个子元素,第一个非空的元素用于替换。替换变量在输出的其余部分被抑制,以防止重复。下面的例子中:"author" 名称变量为空时,就被 "editor" 名称变量替换,在没有 editor 时,则使用 "title" 宏替换。

    <macro name="author">
    +  <names variable="author">
    +    <substitute>
    +      <names variable="editor"/>
    +      <text macro="title"/>
    +    </substitute>
    +  </names>
    +</macro>
    +

    Label in cs:names

    cs:label 元素是可选的(见 Label),而且必须位于 cs:namecs:et-al 元素后,在 cs:substitute 元素前。当 cs:label 作为 cs:names 元素的子元素时,cs:label 不能携带 variable 属性,而是使用父元素 cs:names 中的变量。第二个区别是:form 属性可以设置为 "verb" 或者 "verb-short",其所有允许的值为:

    • "long" - (默认), 例如, "editor" 术语渲染为 "editor" 和 "editors"
    • "short" - 例如,"editor" 术语渲染为 "ed." 和 "eds"
    • "verb" - 例如,"editor" 术语渲染为 "edited by"
    • "verb-short" - 例如,"editor" 术语渲染为 "ed."
    • "symbol" - 例如,"section" 术语渲染为 "§" 和 "§§"

    Label

    cs:label 渲染元素输出与所选变量匹配的术语,该属性必须设置为 "locator"、"page" 或数字变量之一。只有当选择的变量是非空的时候,术语才会渲染。例如:

    <group delimiter=" ">
    +  <label variable="page"/>
    +  <text variable="page"/>
    +</group>
    +

    可以生成 "page 3" 或者 "pages 5-7"cs:label 可能会携带下面的属性:

    form

    ​ 选择术语的形式,可以设置为下面的值:

    • "long" - (默认), 例如: "page" 术语渲染为 "page"/"pages"
    • "short" - 例如: "page" 术语渲染为 "p."/"pp."
    • "symbol" - 例如: "section" 术语渲染为 "§"/"§§"

    plural

    ​ 设置术语的复数形式,可以使用下面的值:

    • "contextual" - (默认),复数形式的渲染和具体的内容相匹配。当内容中包含多个数字时,使用复数形式。如下面的渲染结果:"page 1","pages 1-3","volume 2","volumes 2 & 4"。或者在使用 number-of-pagesnumber-of-volumes 时,数字大于 1,例如: ("1 volume" 和 "3 volumes"。
    • "always" - 总是使用复数形式,不管具体的内容如何。例如:"pages 1" 和 "pages 1-3"
    • "never" - 禁止使用复数形式,不管具体内容: "page 1" 和 "page 1-3"
    `,101),Y=t("code",null,"cs:label",-1),$={href:"https://docs.citationstyles.org/en/stable/specification.html#affixes",target:"_blank",rel:"noopener noreferrer"},aa={href:"https://docs.citationstyles.org/en/stable/specification.html#formatting",target:"_blank",rel:"noopener noreferrer"},ta={href:"https://docs.citationstyles.org/en/stable/specification.html#text-case",target:"_blank",rel:"noopener noreferrer"},na={href:"https://docs.citationstyles.org/en/stable/specification.html#strip-periods",target:"_blank",rel:"noopener noreferrer"},sa=e(`

    Group

    cs:group 元素必须包含一个或者多个渲染元素(除了 cs:layout)。cs:group 可以携带 delimiter 属性来分隔子元素以及 affixesdisplayformatting 属性。cs:group 隐含的条件,当以下情况出现时,cs:group 和它的子元素将会被抑制:a) 在 cs:group 中至少一个渲染元素调用了变量(直接地或者通过宏调用),b) 所有被调用得变量都为空。

    <layout>
    +  <group delimiter=" ">
    +    <text term="retrieved"/>
    +    <text term="from"/>
    +    <text variable="URL"/>
    +  </group>
    +</layout>
    +

    上述代码可以生成 "retrieved from http://dx.doi.org/10.1128/AEM.02591-07" 类似得结果,但是当 URL 为空的时候,不生成结果。

    Choose

    cs:choose 元素允许有条件的渲染元素。下面的例子的意思为:在 "issud" 日期变量存在的情况下,就实施渲染,如果不存在,就给出 "no date" 术语:

    <choose>
    +  <if variable="issued">
    +    <date variable="issued" form="numeric"/>
    +  </if>
    +  <else>
    +    <text term="no date"/>
    +  </else>
    +</choose>
    +

    cs:choose 元素中必须还有 cs:if 子元素,后面还可以有一个或者多个 cs:else-if 子元素以及一个可选的用来结尾的 cs:else 元素。cs:ifcs:else-if 元素可能回包含任意个除 cs:layout 的渲染元素。由于空的 cs:else 元素是多余的,所以 cs:else 元素必须至少包含一个渲染元素。cs:ifcs:else-if 元素必须含有一个或多个判断条件,这些条件可以使用下买的属性设置:

    disambiguate

    ​ 当改属性设置为 "true"(唯一允许的值) 的时候,在元素内容消除了两个相同的引用时渲染。当所有其他消除歧义的方法都不能识别唯一的目标时,才进行消除歧义的尝试。

    is-numeric

    ​ 测试给定的变量([附录 IV 变量](#附录IV 变量))是不是包含数字部分。如果内容仅由数字构成,则识别为数字。数字可以带有前缀、后缀("D2","2b","L2d")、并且可能被逗号,连字符或 & 分隔("2, 3","2-4","2 & 4")。 例如, "2nd" 被识别为 "true" ,但 "second" 和 "2nd edition" 被识别为 "false".

    is-uncertain-date

    ​ 判断给定的 日期变量 是不是包含 [近似日期](#Approximate Dates)。

    locator

    ​ 判断位置是不是和给定的位置符合。这里的位置主要是在一个文档中的位置,比如,题目,第几段。使用 "sub-verbo" 判断是不是 "sub-verbo" 类型

    position

    ​ 判断引用的位置湿否和给定的位置匹配。当在 cs:bibliography 中调用时,position 的结果为 "false"。位置可以使用下面的选项测试:

    `,18),ea=e("
  • "first": 第一个引用项的位置

  • "ibid"/"ibid-with-locator"/"subsequent": 引用先前引用的项目的引用,Such cites may also have the "ibid" or "ibid-with-locator" position when:

    1. the current cite immediately follows on another cite, within the same citation, that references the same item

    or

    1. the current cite is the first cite in the citation, and the previous citation consists of a single cite referencing the same item

    If either requirement is met, the presence of locators determines which position is assigned:

    • Preceding cite does not have a locator: if the current cite has a locator, the position of the current cite is "ibid-with-locator". Otherwise the position is "ibid".
    • Preceding cite does have a locator: if the current cite has the same locator, the position of the current cite is "ibid". If the locator differs the position is "ibid-with-locator". If the current cite lacks a locator its only position is "subsequent".
  • ",2),oa=t("code",null,"near-note-distance",-1),ca={href:"https://docs.citationstyles.org/en/stable/specification.html#note-distance",target:"_blank",rel:"noopener noreferrer"},pa=e("

    Whenever position="ibid-with-locator" tests true, position="ibid" also tests true. And whenever position="ibid" or position="near-note" test true, position="subsequent" also tests true.

    type

    ​ 测试项目是不是和给定的类型匹配([附录 III 类型](#附录 III 类型))。这里的类型指条目的类型,例如,书,期刊文献,学位论文。

    variable

    ​ 测试给定变量([附录 IV 变量](#附录IV 变量))的默认的形式 (long) 是不是为空。


    除了 disambiguate 外,所有的条件都允许有多个测试值,多个测试值使用空格分隔("book thesis")。

    cs:if 元素和 cs:else-if 元素可能会携带 match 属性用来控制判断的逻辑,match 可设置的值为:

    • "all" - 默认,仅当所有给定测试值都为 true 的时候结果才为 true
    • "any" - 当任意一个值为 true 的时候,结果就为 true
    • "none" - 当没有值测试为 true 的时候,结果为 true
    ",9);function ua(la,ia){const n=c("ExternalLinkIcon");return p(),u("div",null,[i,t("p",null,[d,a(" 可能会携带 "),t("a",r,[a("affixes"),s(n)]),a(","),t("a",q,[a("display"),s(n)]),a(","),t("a",k,[a("formatting"),s(n)]),a(","),t("a",m,[a("quotes"),s(n)]),a(","),t("a",g,[a("strip-periods"),s(n)]),a(" 和 "),t("a",h,[a("text-case"),s(n)]),a(" 属性。")]),v,t("p",null,[a("本地化的日期或者是非本地化的日期,, "),f,a(" 都可能携带 "),t("a",b,[a("affixes"),s(n)]),a(","),t("a",_,[a("display"),s(n)]),a(","),t("a",x,[a("formatting"),s(n)]),a(" 和 "),t("a",E,[a("text-case"),s(n)]),a(" 属性。")]),y,t("p",null,[D,a(" 也可能携带 "),t("a",A,[a("formatting"),s(n)]),a(","),t("a",B,[a("text-case"),s(n)]),a(" 和 "),C,a(" 属性。除在 "),J,a(" 元素中使用,其他情况下,"),F,a(" 是可以使用词缀的。")]),I,t("p",null,[a("使用 "),S,a(" 元素来渲染数字变量时,如果只包含数字内容 (使用 "),w,a(" 属性设置,见 "),t("a",L,[a("Choose"),s(n)]),a("),数字就被提取出来并渲染。变量内容包含非数字内容时,变量内容将呈现为原样。")]),T,t("p",null,[W,a(" 元素可能会携带 "),t("a",N,[a("affixes"),s(n)]),a(","),t("a",z,[a("display"),s(n)]),a(","),t("a",V,[a("formatting"),s(n)]),a(" 和 "),t("a",R,[a("text-case"),s(n)]),a(" 属性。")]),G,t("p",null,[M,a(" 有四个子元素:"),O,a(","),j,a(","),K,a(" 和 "),P,a("。 "),H,a(" 元素可能会携带 "),t("a",U,[a("affixes"),s(n)]),a(", "),t("a",Z,[a("display"),s(n)]),a(" 和 "),t("a",Q,[a("formatting"),s(n)]),a(" 属性。")]),X,t("p",null,[Y,a(" 也可能会携带 "),t("a",$,[a("affixes"),s(n)]),a(", "),t("a",aa,[a("formatting"),s(n)]),a(", "),t("a",ta,[a("text-case"),s(n)]),a(" 和 "),t("a",na,[a("strip-periods"),s(n)]),a(" 属性。")]),sa,t("ul",null,[ea,t("li",null,[t("p",null,[a('"near-note": position of a cite following another cite referencing the same item. Both cites have to be located in foot or endnotes, and the distance between both cites may not exceed the maximum distance (measured in number of foot or endnotes) set with the '),oa,a(" option (see "),t("a",ca,[a("Note Distance"),s(n)]),a(").")])])]),pa])}const qa=o(l,[["render",ua],["__file","rendering-elements.html.vue"]]);export{qa as default}; diff --git a/assets/rendering-elements.html-UYLPk0R9.js b/assets/rendering-elements.html-UYLPk0R9.js new file mode 100644 index 00000000..50c6537c --- /dev/null +++ b/assets/rendering-elements.html-UYLPk0R9.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-cd2badd2","path":"/code/citation-style-language/specification/rendering-elements.html","title":"渲染元素","lang":"zh-CN","frontmatter":{"title":"渲染元素","date":"2022-08-01T13:25:44.000Z","updated":"2022-08-03T10:18:21.000Z","description":"渲染元素 [!warning] WORK IN PROGRESS 此页面正在施工中。 渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。 Layout cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixes 和 formattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 \\"(1,2)\\" 类型的引文可以使用下面的代码实现:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/rendering-elements.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"渲染元素"}],["meta",{"property":"og:description","content":"渲染元素 [!warning] WORK IN PROGRESS 此页面正在施工中。 渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。 Layout cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixes 和 formattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 \\"(1,2)\\" 类型的引文可以使用下面的代码实现:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T13:25:44.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"渲染元素\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T13:25:44.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Layout","slug":"layout","link":"#layout","children":[]},{"level":2,"title":"Text","slug":"text","link":"#text","children":[]},{"level":2,"title":"Date","slug":"date","link":"#date","children":[{"level":3,"title":"Date-part","slug":"date-part","link":"#date-part","children":[]},{"level":3,"title":"Date Ranges","slug":"date-ranges","link":"#date-ranges","children":[]},{"level":3,"title":"AD and BC","slug":"ad-and-bc","link":"#ad-and-bc","children":[]},{"level":3,"title":"Seasons","slug":"seasons","link":"#seasons","children":[]},{"level":3,"title":"Approximate Dates","slug":"approximate-dates","link":"#approximate-dates","children":[]}]},{"level":2,"title":"Number","slug":"number","link":"#number","children":[]},{"level":2,"title":"Names","slug":"names","link":"#names","children":[{"level":3,"title":"Name","slug":"name","link":"#name","children":[]},{"level":3,"title":"名字内部顺序","slug":"名字内部顺序","link":"#名字内部顺序","children":[]},{"level":3,"title":"名字格式化","slug":"名字格式化","link":"#名字格式化","children":[]},{"level":3,"title":"Et-al","slug":"et-al","link":"#et-al","children":[]},{"level":3,"title":"Substitute","slug":"substitute","link":"#substitute","children":[]},{"level":3,"title":"Label in cs:names","slug":"label-in-cs-names","link":"#label-in-cs-names","children":[]}]},{"level":2,"title":"Label","slug":"label","link":"#label","children":[]},{"level":2,"title":"Group","slug":"group","link":"#group","children":[]},{"level":2,"title":"Choose","slug":"choose","link":"#choose","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":22.59,"words":6778},"filePathRelative":"code/citation-style-language/specification/rendering-elements.md","localizedDate":"2022年8月1日","excerpt":"

    渲染元素

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。

    \\n

    Layout

    \\n

    cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixesformattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 \\"(1,2)\\" 类型的引文可以使用下面的代码实现:

    ","autoDesc":true}');export{e as data}; diff --git a/assets/requirementDiagram-4038b16c-mGjwDA8r.js b/assets/requirementDiagram-4038b16c-mGjwDA8r.js new file mode 100644 index 00000000..a83ada3d --- /dev/null +++ b/assets/requirementDiagram-4038b16c-mGjwDA8r.js @@ -0,0 +1,52 @@ +import{c as Te,s as Ce,g as Fe,b as Me,a as De,l as Ne,z as Pe,h as oe,i as Ye,j as ke}from"./mermaid.core-Up0YySao.js";import{G as Ue,l as Be}from"./layout-bNXk8SHo.js";import{l as Qe}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";var ce=function(){var e=function(V,i,r,a){for(r=r||{},a=V.length;a--;r[V[a]]=i);return r},t=[1,3],l=[1,4],c=[1,5],u=[1,6],d=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],p=[1,18],h=[2,7],o=[1,22],g=[1,23],R=[1,24],A=[1,25],T=[1,26],N=[1,27],v=[1,20],k=[1,28],x=[1,29],F=[62,63],de=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],pe=[1,47],fe=[1,48],ye=[1,49],_e=[1,50],ge=[1,51],Ee=[1,52],Re=[1,53],O=[53,54],M=[1,64],D=[1,60],P=[1,61],Y=[1,62],U=[1,63],B=[1,65],z=[1,69],j=[1,70],X=[1,67],J=[1,68],m=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],ie={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:function(i,r,a,n,f,s,W){var _=s.length-1;switch(f){case 4:this.$=s[_].trim(),n.setAccTitle(this.$);break;case 5:case 6:this.$=s[_].trim(),n.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:n.addRequirement(s[_-3],s[_-4]);break;case 14:n.setNewReqId(s[_-2]);break;case 15:n.setNewReqText(s[_-2]);break;case 16:n.setNewReqRisk(s[_-2]);break;case 17:n.setNewReqVerifyMethod(s[_-2]);break;case 20:this.$=n.RequirementType.REQUIREMENT;break;case 21:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=n.RiskLevel.LOW_RISK;break;case 27:this.$=n.RiskLevel.MED_RISK;break;case 28:this.$=n.RiskLevel.HIGH_RISK;break;case 29:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=n.VerifyType.VERIFY_TEST;break;case 33:n.addElement(s[_-3]);break;case 34:n.setNewElementType(s[_-2]);break;case 35:n.setNewElementDocRef(s[_-2]);break;case 38:n.addRelationship(s[_-2],s[_],s[_-4]);break;case 39:n.addRelationship(s[_-2],s[_-4],s[_]);break;case 40:this.$=n.Relationships.CONTAINS;break;case 41:this.$=n.Relationships.COPIES;break;case 42:this.$=n.Relationships.DERIVES;break;case 43:this.$=n.Relationships.SATISFIES;break;case 44:this.$=n.Relationships.VERIFIES;break;case 45:this.$=n.Relationships.REFINES;break;case 46:this.$=n.Relationships.TRACES;break}},table:[{3:1,4:2,6:t,9:l,11:c,13:u},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:l,11:c,13:u},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(d,[2,6]),{3:12,4:2,6:t,9:l,11:c,13:u},{1:[2,2]},{4:17,5:p,7:13,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},e(d,[2,4]),e(d,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:p,7:31,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:32,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:33,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:34,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{4:17,5:p,7:35,8:h,9:l,11:c,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:A,35:T,36:N,44:v,62:k,63:x},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},e(F,[2,20]),e(F,[2,21]),e(F,[2,22]),e(F,[2,23]),e(F,[2,24]),e(F,[2,25]),e(de,[2,49]),e(de,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:pe,56:fe,57:ye,58:_e,59:ge,60:Ee,61:Re},{52:54,55:pe,56:fe,57:ye,58:_e,59:ge,60:Ee,61:Re},{5:[1,55]},{5:[1,56]},{53:[1,57]},e(O,[2,40]),e(O,[2,41]),e(O,[2,42]),e(O,[2,43]),e(O,[2,44]),e(O,[2,45]),e(O,[2,46]),{54:[1,58]},{5:M,20:59,21:D,24:P,26:Y,28:U,30:B},{5:z,30:j,46:66,47:X,49:J},{23:71,62:k,63:x},{23:72,62:k,63:x},e(m,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:M,20:77,21:D,24:P,26:Y,28:U,30:B},e(m,[2,19]),e(m,[2,33]),{22:[1,78]},{22:[1,79]},{5:z,30:j,46:80,47:X,49:J},e(m,[2,37]),e(m,[2,38]),e(m,[2,39]),{23:81,62:k,63:x},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},e(m,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},e(m,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:M,20:106,21:D,24:P,26:Y,28:U,30:B},{5:M,20:107,21:D,24:P,26:Y,28:U,30:B},{5:M,20:108,21:D,24:P,26:Y,28:U,30:B},{5:M,20:109,21:D,24:P,26:Y,28:U,30:B},{5:z,30:j,46:110,47:X,49:J},{5:z,30:j,46:111,47:X,49:J},e(m,[2,14]),e(m,[2,15]),e(m,[2,16]),e(m,[2,17]),e(m,[2,34]),e(m,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:function(i,r){if(r.recoverable)this.trace(i);else{var a=new Error(i);throw a.hash=r,a}},parse:function(i){var r=this,a=[0],n=[],f=[null],s=[],W=this.table,_="",Z=0,me=0,Ve=2,Ie=1,qe=s.slice.call(arguments,1),E=Object.create(this.lexer),L={yy:{}};for(var re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,re)&&(L.yy[re]=this.yy[re]);E.setInput(i,L.yy),L.yy.lexer=E,L.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var se=E.yylloc;s.push(se);var Oe=E.options&&E.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Le(){var $;return $=n.pop()||E.lex()||Ie,typeof $!="number"&&($ instanceof Array&&(n=$,$=n.pop()),$=r.symbols_[$]||$),$}for(var I,C,S,ae,Q={},ee,w,be,te;;){if(C=a[a.length-1],this.defaultActions[C]?S=this.defaultActions[C]:((I===null||typeof I>"u")&&(I=Le()),S=W[C]&&W[C][I]),typeof S>"u"||!S.length||!S[0]){var le="";te=[];for(ee in W[C])this.terminals_[ee]&&ee>Ve&&te.push("'"+this.terminals_[ee]+"'");E.showPosition?le="Parse error on line "+(Z+1)+`: +`+E.showPosition()+` +Expecting `+te.join(", ")+", got '"+(this.terminals_[I]||I)+"'":le="Parse error on line "+(Z+1)+": Unexpected "+(I==Ie?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(le,{text:E.match,token:this.terminals_[I]||I,line:E.yylineno,loc:se,expected:te})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+I);switch(S[0]){case 1:a.push(I),f.push(E.yytext),s.push(E.yylloc),a.push(S[1]),I=null,me=E.yyleng,_=E.yytext,Z=E.yylineno,se=E.yylloc;break;case 2:if(w=this.productions_[S[1]][1],Q.$=f[f.length-w],Q._$={first_line:s[s.length-(w||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(w||1)].first_column,last_column:s[s.length-1].last_column},Oe&&(Q._$.range=[s[s.length-(w||1)].range[0],s[s.length-1].range[1]]),ae=this.performAction.apply(Q,[_,me,Z,L.yy,S[1],f,s].concat(qe)),typeof ae<"u")return ae;w&&(a=a.slice(0,-1*w*2),f=f.slice(0,-1*w),s=s.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),f.push(Q.$),s.push(Q._$),be=W[a[a.length-2]][a[a.length-1]],a.push(be);break;case 3:return!0}}return!0}},$e=function(){var V={EOF:1,parseError:function(r,a){if(this.yy.parser)this.yy.parser.parseError(r,a);else throw new Error(r)},setInput:function(i,r){return this.yy=r||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var r=i.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},unput:function(i){var r=i.length,a=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),a.length-1&&(this.yylineno-=a.length-1);var f=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(i){this.unput(this.match.slice(i))},pastInput:function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var i=this.pastInput(),r=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+r+"^"},test_match:function(i,r){var a,n,f;if(this.options.backtrack_lexer&&(f={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(f.yylloc.range=this.yylloc.range.slice(0))),n=i[0].match(/(?:\r\n?|\n).*/g),n&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(i[0].length),this.matched+=i[0],a=this.performAction.call(this,this.yy,this,r,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var s in f)this[s]=f[s];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,r,a,n;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),s=0;sr[0].length)){if(r=a,n=s,this.options.backtrack_lexer){if(i=this.test_match(a,f[s]),i!==!1)return i;if(this._backtrack){r=!1;continue}else return!1}else if(!this.options.flex)break}return r?(i=this.test_match(r,f[n]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r||this.lex()},begin:function(r){this.conditionStack.push(r)},popState:function(){var r=this.conditionStack.length-1;return r>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(r){return r=this.conditionStack.length-1-Math.abs(r||0),r>=0?this.conditionStack[r]:"INITIAL"},pushState:function(r){this.begin(r)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(r,a,n,f){switch(n){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return a.yytext=a.yytext.trim(),62}},rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,50],inclusive:!0}}};return V}();ie.lexer=$e;function ne(){this.yy={}}return ne.prototype=ie,ie.Parser=ne,new ne}();ce.parser=ce;const He=ce;let ue=[],b={},K={},q={},G={};const We={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},Ke={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},Ge={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},ze={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},je=(e,t)=>(K[e]===void 0&&(K[e]={name:e,type:t,id:b.id,text:b.text,risk:b.risk,verifyMethod:b.verifyMethod}),b={},K[e]),Xe=()=>K,Je=e=>{b!==void 0&&(b.id=e)},Ze=e=>{b!==void 0&&(b.text=e)},et=e=>{b!==void 0&&(b.risk=e)},tt=e=>{b!==void 0&&(b.verifyMethod=e)},it=e=>(G[e]===void 0&&(G[e]={name:e,type:q.type,docRef:q.docRef},Ne.info("Added new requirement: ",e)),q={},G[e]),nt=()=>G,rt=e=>{q!==void 0&&(q.type=e)},st=e=>{q!==void 0&&(q.docRef=e)},at=(e,t,l)=>{ue.push({type:e,src:t,dst:l})},lt=()=>ue,ot=()=>{ue=[],b={},K={},q={},G={},Pe()},ct={RequirementType:We,RiskLevel:Ke,VerifyType:Ge,Relationships:ze,getConfig:()=>Te().req,addRequirement:je,getRequirements:Xe,setNewReqId:Je,setNewReqText:Ze,setNewReqRisk:et,setNewReqVerifyMethod:tt,setAccTitle:Ce,getAccTitle:Fe,setAccDescription:Me,getAccDescription:De,addElement:it,getElements:nt,setNewElementType:rt,setNewElementDocRef:st,addRelationship:at,getRelationships:lt,clear:ot},ht=e=>` + + marker { + fill: ${e.relationColor}; + stroke: ${e.relationColor}; + } + + marker.cross { + stroke: ${e.lineColor}; + } + + svg { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + } + + .reqBox { + fill: ${e.requirementBackground}; + fill-opacity: 1.0; + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${e.requirementTextColor}; + } + .reqLabelBox { + fill: ${e.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + .relationshipLine { + stroke: ${e.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${e.relationLabelColor}; + } + +`,ut=ht,he={CONTAINS:"contains",ARROW:"arrow"},dt=(e,t)=>{let l=e.append("defs").append("marker").attr("id",he.CONTAINS+"_line_ending").attr("refX",0).attr("refY",t.line_height/2).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("g");l.append("circle").attr("cx",t.line_height/2).attr("cy",t.line_height/2).attr("r",t.line_height/2).attr("fill","none"),l.append("line").attr("x1",0).attr("x2",t.line_height).attr("y1",t.line_height/2).attr("y2",t.line_height/2).attr("stroke-width",1),l.append("line").attr("y1",0).attr("y2",t.line_height).attr("x1",t.line_height/2).attr("x2",t.line_height/2).attr("stroke-width",1),e.append("defs").append("marker").attr("id",he.ARROW+"_line_ending").attr("refX",t.line_height).attr("refY",.5*t.line_height).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${t.line_height},${t.line_height/2} + M${t.line_height},${t.line_height/2} + L0,${t.line_height}`).attr("stroke-width",1)},xe={ReqMarkers:he,insertLineEndings:dt};let y={},Se=0;const Ae=(e,t)=>e.insert("rect","#"+t).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",y.rect_min_width+"px").attr("height",y.rect_min_height+"px"),ve=(e,t,l)=>{let c=y.rect_min_width/2,u=e.append("text").attr("class","req reqLabel reqTitle").attr("id",t).attr("x",c).attr("y",y.rect_padding).attr("dominant-baseline","hanging"),d=0;l.forEach(g=>{d==0?u.append("tspan").attr("text-anchor","middle").attr("x",y.rect_min_width/2).attr("dy",0).text(g):u.append("tspan").attr("text-anchor","middle").attr("x",y.rect_min_width/2).attr("dy",y.line_height*.75).text(g),d++});let p=1.5*y.rect_padding,h=d*y.line_height*.75,o=p+h;return e.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",y.rect_min_width).attr("y1",o).attr("y2",o),{titleNode:u,y:o}},we=(e,t,l,c)=>{let u=e.append("text").attr("class","req reqLabel").attr("id",t).attr("x",y.rect_padding).attr("y",c).attr("dominant-baseline","hanging"),d=0;const p=30;let h=[];return l.forEach(o=>{let g=o.length;for(;g>p&&d<3;){let R=o.substring(0,p);o=o.substring(p,o.length),g=o.length,h[h.length]=R,d++}if(d==3){let R=h[h.length-1];h[h.length-1]=R.substring(0,R.length-4)+"..."}else h[h.length]=o;d=0}),h.forEach(o=>{u.append("tspan").attr("x",y.rect_padding).attr("dy",y.line_height).text(o)}),u},pt=(e,t,l,c)=>{const u=t.node().getTotalLength(),d=t.node().getPointAtLength(u*.5),p="rel"+Se;Se++;const o=e.append("text").attr("class","req relationshipLabel").attr("id",p).attr("x",d.x).attr("y",d.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(c).node().getBBox();e.insert("rect","#"+p).attr("class","req reqLabelBox").attr("x",d.x-o.width/2).attr("y",d.y-o.height/2).attr("width",o.width).attr("height",o.height).attr("fill","white").attr("fill-opacity","85%")},ft=function(e,t,l,c,u){const d=l.edge(H(t.src),H(t.dst)),p=Qe().x(function(o){return o.x}).y(function(o){return o.y}),h=e.insert("path","#"+c).attr("class","er relationshipLine").attr("d",p(d.points)).attr("fill","none");t.type==u.db.Relationships.CONTAINS?h.attr("marker-start","url("+ke.getUrl(y.arrowMarkerAbsolute)+"#"+t.type+"_line_ending)"):(h.attr("stroke-dasharray","10,7"),h.attr("marker-end","url("+ke.getUrl(y.arrowMarkerAbsolute)+"#"+xe.ReqMarkers.ARROW+"_line_ending)")),pt(e,h,y,`<<${t.type}>>`)},yt=(e,t,l)=>{Object.keys(e).forEach(c=>{let u=e[c];c=H(c),Ne.info("Added new requirement: ",c);const d=l.append("g").attr("id",c),p="req-"+c,h=Ae(d,p);let o=ve(d,c+"_title",[`<<${u.type}>>`,`${u.name}`]);we(d,c+"_body",[`Id: ${u.id}`,`Text: ${u.text}`,`Risk: ${u.risk}`,`Verification: ${u.verifyMethod}`],o.y);const g=h.node().getBBox();t.setNode(c,{width:g.width,height:g.height,shape:"rect",id:c})})},_t=(e,t,l)=>{Object.keys(e).forEach(c=>{let u=e[c];const d=H(c),p=l.append("g").attr("id",d),h="element-"+d,o=Ae(p,h);let g=ve(p,h+"_title",["<>",`${c}`]);we(p,h+"_body",[`Type: ${u.type||"Not Specified"}`,`Doc Ref: ${u.docRef||"None"}`],g.y);const R=o.node().getBBox();t.setNode(d,{width:R.width,height:R.height,shape:"rect",id:d})})},gt=(e,t)=>(e.forEach(function(l){let c=H(l.src),u=H(l.dst);t.setEdge(c,u,{relationship:l})}),e),Et=function(e,t){t.nodes().forEach(function(l){l!==void 0&&t.node(l)!==void 0&&(e.select("#"+l),e.select("#"+l).attr("transform","translate("+(t.node(l).x-t.node(l).width/2)+","+(t.node(l).y-t.node(l).height/2)+" )"))})},H=e=>e.replace(/\s/g,"").replace(/\./g,"_"),Rt=(e,t,l,c)=>{y=Te().requirement;const u=y.securityLevel;let d;u==="sandbox"&&(d=oe("#i"+t));const h=(u==="sandbox"?oe(d.nodes()[0].contentDocument.body):oe("body")).select(`[id='${t}']`);xe.insertLineEndings(h,y);const o=new Ue({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:y.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let g=c.db.getRequirements(),R=c.db.getElements(),A=c.db.getRelationships();yt(g,o,h),_t(R,o,h),gt(A,o),Be(o),Et(h,o),A.forEach(function(x){ft(h,x,o,t,c)});const T=y.rect_padding,N=h.node().getBBox(),v=N.width+T*2,k=N.height+T*2;Ye(h,k,v,y.useMaxWidth),h.attr("viewBox",`${N.x-T} ${N.y-T} ${v} ${k}`)},mt={draw:Rt},xt={parser:He,db:ct,renderer:mt,styles:ut};export{xt as diagram}; diff --git a/assets/sankeyDiagram-6db3d513-cSwmFunR.js b/assets/sankeyDiagram-6db3d513-cSwmFunR.js new file mode 100644 index 00000000..e2ca3b2c --- /dev/null +++ b/assets/sankeyDiagram-6db3d513-cSwmFunR.js @@ -0,0 +1,8 @@ +import{c as rt,g as mt,s as _t,a as kt,b as xt,x as vt,v as bt,z as wt,j as St,u as Lt,h as Y,i as Et}from"./mermaid.core-Up0YySao.js";import{o as At}from"./ordinal-wXG5obU4.js";import"./app-Mf7X6hWu.js";import"./init-Hi12RPRh.js";function Tt(t){for(var n=t.length/6|0,i=new Array(n),l=0;l=l)&&(i=l);else{let l=-1;for(let u of t)(u=n(u,++l,t))!=null&&(i=u)&&(i=u)}return i}function yt(t,n){let i;if(n===void 0)for(const l of t)l!=null&&(i>l||i===void 0&&l>=l)&&(i=l);else{let l=-1;for(let u of t)(u=n(u,++l,t))!=null&&(i>u||i===void 0&&u>=u)&&(i=u)}return i}function Z(t,n){let i=0;if(n===void 0)for(let l of t)(l=+l)&&(i+=l);else{let l=-1;for(let u of t)(u=+n(u,++l,t))&&(i+=u)}return i}function Nt(t){return t.target.depth}function Pt(t){return t.depth}function Ct(t,n){return n-1-t.height}function dt(t,n){return t.sourceLinks.length?t.depth:n-1}function It(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?yt(t.sourceLinks,Nt)-1:0}function G(t){return function(){return t}}function lt(t,n){return H(t.source,n.source)||t.index-n.index}function at(t,n){return H(t.target,n.target)||t.index-n.index}function H(t,n){return t.y0-n.y0}function J(t){return t.value}function Ot(t){return t.index}function $t(t){return t.nodes}function zt(t){return t.links}function ct(t,n){const i=t.get(n);if(!i)throw new Error("missing: "+n);return i}function ut({nodes:t}){for(const n of t){let i=n.y0,l=i;for(const u of n.sourceLinks)u.y0=i+u.width/2,i+=u.width;for(const u of n.targetLinks)u.y1=l+u.width/2,l+=u.width}}function jt(){let t=0,n=0,i=1,l=1,u=24,k=8,g,m=Ot,s=dt,o,c,p=$t,b=zt,y=6;function x(){const e={nodes:p.apply(null,arguments),links:b.apply(null,arguments)};return E(e),L(e),A(e),N(e),S(e),ut(e),e}x.update=function(e){return ut(e),e},x.nodeId=function(e){return arguments.length?(m=typeof e=="function"?e:G(e),x):m},x.nodeAlign=function(e){return arguments.length?(s=typeof e=="function"?e:G(e),x):s},x.nodeSort=function(e){return arguments.length?(o=e,x):o},x.nodeWidth=function(e){return arguments.length?(u=+e,x):u},x.nodePadding=function(e){return arguments.length?(k=g=+e,x):k},x.nodes=function(e){return arguments.length?(p=typeof e=="function"?e:G(e),x):p},x.links=function(e){return arguments.length?(b=typeof e=="function"?e:G(e),x):b},x.linkSort=function(e){return arguments.length?(c=e,x):c},x.size=function(e){return arguments.length?(t=n=0,i=+e[0],l=+e[1],x):[i-t,l-n]},x.extent=function(e){return arguments.length?(t=+e[0][0],i=+e[1][0],n=+e[0][1],l=+e[1][1],x):[[t,n],[i,l]]},x.iterations=function(e){return arguments.length?(y=+e,x):y};function E({nodes:e,links:f}){for(const[h,r]of e.entries())r.index=h,r.sourceLinks=[],r.targetLinks=[];const a=new Map(e.map((h,r)=>[m(h,r,e),h]));for(const[h,r]of f.entries()){r.index=h;let{source:_,target:v}=r;typeof _!="object"&&(_=r.source=ct(a,_)),typeof v!="object"&&(v=r.target=ct(a,v)),_.sourceLinks.push(r),v.targetLinks.push(r)}if(c!=null)for(const{sourceLinks:h,targetLinks:r}of e)h.sort(c),r.sort(c)}function L({nodes:e}){for(const f of e)f.value=f.fixedValue===void 0?Math.max(Z(f.sourceLinks,J),Z(f.targetLinks,J)):f.fixedValue}function A({nodes:e}){const f=e.length;let a=new Set(e),h=new Set,r=0;for(;a.size;){for(const _ of a){_.depth=r;for(const{target:v}of _.sourceLinks)h.add(v)}if(++r>f)throw new Error("circular link");a=h,h=new Set}}function N({nodes:e}){const f=e.length;let a=new Set(e),h=new Set,r=0;for(;a.size;){for(const _ of a){_.height=r;for(const{source:v}of _.targetLinks)h.add(v)}if(++r>f)throw new Error("circular link");a=h,h=new Set}}function P({nodes:e}){const f=ot(e,r=>r.depth)+1,a=(i-t-u)/(f-1),h=new Array(f);for(const r of e){const _=Math.max(0,Math.min(f-1,Math.floor(s.call(null,r,f))));r.layer=_,r.x0=t+_*a,r.x1=r.x0+u,h[_]?h[_].push(r):h[_]=[r]}if(o)for(const r of h)r.sort(o);return h}function z(e){const f=yt(e,a=>(l-n-(a.length-1)*g)/Z(a,J));for(const a of e){let h=n;for(const r of a){r.y0=h,r.y1=h+r.value*f,h=r.y1+g;for(const _ of r.sourceLinks)_.width=_.value*f}h=(l-h+g)/(a.length+1);for(let r=0;ra.length)-1)),z(f);for(let a=0;a0))continue;let V=(U/j-v.y0)*f;v.y0+=V,v.y1+=V,w(v)}o===void 0&&_.sort(H),C(_,a)}}function $(e,f,a){for(let h=e.length,r=h-2;r>=0;--r){const _=e[r];for(const v of _){let U=0,j=0;for(const{target:F,value:K}of v.sourceLinks){let W=K*(F.layer-v.layer);U+=R(v,F)*W,j+=W}if(!(j>0))continue;let V=(U/j-v.y0)*f;v.y0+=V,v.y1+=V,w(v)}o===void 0&&_.sort(H),C(_,a)}}function C(e,f){const a=e.length>>1,h=e[a];d(e,h.y0-g,a-1,f),I(e,h.y1+g,a+1,f),d(e,l,e.length-1,f),I(e,n,0,f)}function I(e,f,a,h){for(;a1e-6&&(r.y0+=_,r.y1+=_),f=r.y1+g}}function d(e,f,a,h){for(;a>=0;--a){const r=e[a],_=(r.y1-f)*h;_>1e-6&&(r.y0-=_,r.y1-=_),f=r.y0-g}}function w({sourceLinks:e,targetLinks:f}){if(c===void 0){for(const{source:{sourceLinks:a}}of f)a.sort(at);for(const{target:{targetLinks:a}}of e)a.sort(lt)}}function O(e){if(c===void 0)for(const{sourceLinks:f,targetLinks:a}of e)f.sort(at),a.sort(lt)}function T(e,f){let a=e.y0-(e.sourceLinks.length-1)*g/2;for(const{target:h,width:r}of e.sourceLinks){if(h===f)break;a+=r+g}for(const{source:h,width:r}of f.targetLinks){if(h===e)break;a-=r}return a}function R(e,f){let a=f.y0-(f.targetLinks.length-1)*g/2;for(const{source:h,width:r}of f.targetLinks){if(h===e)break;a+=r+g}for(const{target:h,width:r}of e.sourceLinks){if(h===f)break;a-=r}return a}return x}var tt=Math.PI,et=2*tt,D=1e-6,Dt=et-D;function nt(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function gt(){return new nt}nt.prototype=gt.prototype={constructor:nt,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,i,l){this._+="Q"+ +t+","+ +n+","+(this._x1=+i)+","+(this._y1=+l)},bezierCurveTo:function(t,n,i,l,u,k){this._+="C"+ +t+","+ +n+","+ +i+","+ +l+","+(this._x1=+u)+","+(this._y1=+k)},arcTo:function(t,n,i,l,u){t=+t,n=+n,i=+i,l=+l,u=+u;var k=this._x1,g=this._y1,m=i-t,s=l-n,o=k-t,c=g-n,p=o*o+c*c;if(u<0)throw new Error("negative radius: "+u);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(p>D)if(!(Math.abs(c*m-s*o)>D)||!u)this._+="L"+(this._x1=t)+","+(this._y1=n);else{var b=i-k,y=l-g,x=m*m+s*s,E=b*b+y*y,L=Math.sqrt(x),A=Math.sqrt(p),N=u*Math.tan((tt-Math.acos((x+p-E)/(2*L*A)))/2),P=N/A,z=N/L;Math.abs(P-1)>D&&(this._+="L"+(t+P*o)+","+(n+P*c)),this._+="A"+u+","+u+",0,0,"+ +(c*b>o*y)+","+(this._x1=t+z*m)+","+(this._y1=n+z*s)}},arc:function(t,n,i,l,u,k){t=+t,n=+n,i=+i,k=!!k;var g=i*Math.cos(l),m=i*Math.sin(l),s=t+g,o=n+m,c=1^k,p=k?l-u:u-l;if(i<0)throw new Error("negative radius: "+i);this._x1===null?this._+="M"+s+","+o:(Math.abs(this._x1-s)>D||Math.abs(this._y1-o)>D)&&(this._+="L"+s+","+o),i&&(p<0&&(p=p%et+et),p>Dt?this._+="A"+i+","+i+",0,1,"+c+","+(t-g)+","+(n-m)+"A"+i+","+i+",0,1,"+c+","+(this._x1=s)+","+(this._y1=o):p>D&&(this._+="A"+i+","+i+",0,"+ +(p>=tt)+","+c+","+(this._x1=t+i*Math.cos(u))+","+(this._y1=n+i*Math.sin(u))))},rect:function(t,n,i,l){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +i+"v"+ +l+"h"+-i+"Z"},toString:function(){return this._}};function ht(t){return function(){return t}}function Bt(t){return t[0]}function Rt(t){return t[1]}var Ut=Array.prototype.slice;function Vt(t){return t.source}function Ft(t){return t.target}function Wt(t){var n=Vt,i=Ft,l=Bt,u=Rt,k=null;function g(){var m,s=Ut.call(arguments),o=n.apply(this,s),c=i.apply(this,s);if(k||(k=m=gt()),t(k,+l.apply(this,(s[0]=o,s)),+u.apply(this,s),+l.apply(this,(s[0]=c,s)),+u.apply(this,s)),m)return k=null,m+""||null}return g.source=function(m){return arguments.length?(n=m,g):n},g.target=function(m){return arguments.length?(i=m,g):i},g.x=function(m){return arguments.length?(l=typeof m=="function"?m:ht(+m),g):l},g.y=function(m){return arguments.length?(u=typeof m=="function"?m:ht(+m),g):u},g.context=function(m){return arguments.length?(k=m??null,g):k},g}function Yt(t,n,i,l,u){t.moveTo(n,i),t.bezierCurveTo(n=(n+l)/2,i,n,u,l,u)}function Gt(){return Wt(Yt)}function Ht(t){return[t.source.x1,t.y0]}function Xt(t){return[t.target.x0,t.y1]}function qt(){return Gt().source(Ht).target(Xt)}var it=function(){var t=function(m,s,o,c){for(o=o||{},c=m.length;c--;o[m[c]]=s);return o},n=[1,9],i=[1,10],l=[1,5,10,12],u={trace:function(){},yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:function(s,o,c,p,b,y,x){var E=y.length-1;switch(b){case 7:const L=p.findOrCreateNode(y[E-4].trim().replaceAll('""','"')),A=p.findOrCreateNode(y[E-2].trim().replaceAll('""','"')),N=parseFloat(y[E].trim());p.addLink(L,A,N);break;case 8:case 9:case 11:this.$=y[E];break;case 10:this.$=y[E-1];break}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:i},{1:[2,6],7:11,10:[1,12]},t(i,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(l,[2,8]),t(l,[2,9]),{19:[1,16]},t(l,[2,11]),{1:[2,1]},{1:[2,5]},t(i,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:i},{15:18,16:7,17:8,18:n,20:i},{18:[1,19]},t(i,[2,3]),{12:[1,20]},t(l,[2,10]),{15:21,16:7,17:8,18:n,20:i},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(s,o){if(o.recoverable)this.trace(s);else{var c=new Error(s);throw c.hash=o,c}},parse:function(s){var o=this,c=[0],p=[],b=[null],y=[],x=this.table,E="",L=0,A=0,N=2,P=1,z=y.slice.call(arguments,1),S=Object.create(this.lexer),M={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(M.yy[$]=this.yy[$]);S.setInput(s,M.yy),M.yy.lexer=S,M.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var C=S.yylloc;y.push(C);var I=S.options&&S.options.ranges;typeof M.yy.parseError=="function"?this.parseError=M.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function d(){var v;return v=p.pop()||S.lex()||P,typeof v!="number"&&(v instanceof Array&&(p=v,v=p.pop()),v=o.symbols_[v]||v),v}for(var w,O,T,R,e={},f,a,h,r;;){if(O=c[c.length-1],this.defaultActions[O]?T=this.defaultActions[O]:((w===null||typeof w>"u")&&(w=d()),T=x[O]&&x[O][w]),typeof T>"u"||!T.length||!T[0]){var _="";r=[];for(f in x[O])this.terminals_[f]&&f>N&&r.push("'"+this.terminals_[f]+"'");S.showPosition?_="Parse error on line "+(L+1)+`: +`+S.showPosition()+` +Expecting `+r.join(", ")+", got '"+(this.terminals_[w]||w)+"'":_="Parse error on line "+(L+1)+": Unexpected "+(w==P?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(_,{text:S.match,token:this.terminals_[w]||w,line:S.yylineno,loc:C,expected:r})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+w);switch(T[0]){case 1:c.push(w),b.push(S.yytext),y.push(S.yylloc),c.push(T[1]),w=null,A=S.yyleng,E=S.yytext,L=S.yylineno,C=S.yylloc;break;case 2:if(a=this.productions_[T[1]][1],e.$=b[b.length-a],e._$={first_line:y[y.length-(a||1)].first_line,last_line:y[y.length-1].last_line,first_column:y[y.length-(a||1)].first_column,last_column:y[y.length-1].last_column},I&&(e._$.range=[y[y.length-(a||1)].range[0],y[y.length-1].range[1]]),R=this.performAction.apply(e,[E,A,L,M.yy,T[1],b,y].concat(z)),typeof R<"u")return R;a&&(c=c.slice(0,-1*a*2),b=b.slice(0,-1*a),y=y.slice(0,-1*a)),c.push(this.productions_[T[1]][0]),b.push(e.$),y.push(e._$),h=x[c[c.length-2]][c[c.length-1]],c.push(h);break;case 3:return!0}}return!0}},k=function(){var m={EOF:1,parseError:function(o,c){if(this.yy.parser)this.yy.parser.parseError(o,c);else throw new Error(o)},setInput:function(s,o){return this.yy=o||this.yy||{},this._input=s,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var o=s.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},unput:function(s){var o=s.length,c=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var p=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===p.length?this.yylloc.first_column:0)+p[p.length-c.length].length-c[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(s){this.unput(this.match.slice(s))},pastInput:function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var s=this.pastInput(),o=new Array(s.length+1).join("-");return s+this.upcomingInput()+` +`+o+"^"},test_match:function(s,o){var c,p,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),p=s[0].match(/(?:\r\n?|\n).*/g),p&&(this.yylineno+=p.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:p?p[p.length-1].length-p[p.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(s[0].length),this.matched+=s[0],c=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var y in b)this[y]=b[y];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,o,c,p;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),y=0;yo[0].length)){if(o=c,p=y,this.options.backtrack_lexer){if(s=this.test_match(c,b[y]),s!==!1)return s;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(s=this.test_match(o,b[p]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return o||this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},pushState:function(o){this.begin(o)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(o,c,p,b){switch(p){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return m}();u.lexer=k;function g(){this.yy={}}return g.prototype=u,u.Parser=g,new g}();it.parser=it;const X=it;let q=[],Q=[],B={};const Qt=()=>{q=[],Q=[],B={},wt()};class Kt{constructor(n,i,l=0){this.source=n,this.target=i,this.value=l}}const Zt=(t,n,i)=>{q.push(new Kt(t,n,i))};class Jt{constructor(n){this.ID=n}}const te=t=>(t=St.sanitizeText(t,rt()),B[t]||(B[t]=new Jt(t),Q.push(B[t])),B[t]),ee=()=>Q,ne=()=>q,ie=()=>({nodes:Q.map(t=>({id:t.ID})),links:q.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),se={nodesMap:B,getConfig:()=>rt().sankey,getNodes:ee,getLinks:ne,getGraph:ie,addLink:Zt,findOrCreateNode:te,getAccTitle:mt,setAccTitle:_t,getAccDescription:kt,setAccDescription:xt,getDiagramTitle:vt,setDiagramTitle:bt,clear:Qt},pt=class st{static next(n){return new st(n+ ++st.count)}constructor(n){this.id=n,this.href=`#${n}`}toString(){return"url("+this.href+")"}};pt.count=0;let ft=pt;const re={left:Pt,right:Ct,center:It,justify:dt},oe=function(t,n,i,l){const{securityLevel:u,sankey:k}=rt(),g=Lt.sankey;let m;u==="sandbox"&&(m=Y("#i"+n));const s=u==="sandbox"?Y(m.nodes()[0].contentDocument.body):Y("body"),o=u==="sandbox"?s.select(`[id="${n}"]`):Y(`[id="${n}"]`),c=(k==null?void 0:k.width)??g.width,p=(k==null?void 0:k.height)??g.width,b=(k==null?void 0:k.useMaxWidth)??g.useMaxWidth,y=(k==null?void 0:k.nodeAlignment)??g.nodeAlignment,x=(k==null?void 0:k.prefix)??g.prefix,E=(k==null?void 0:k.suffix)??g.suffix,L=(k==null?void 0:k.showValues)??g.showValues;Et(o,p,c,b);const A=l.db.getGraph(),N=re[y],P=10;jt().nodeId(d=>d.id).nodeWidth(P).nodePadding(10+(L?15:0)).nodeAlign(N).extent([[0,0],[c,p]])(A);const S=At(Mt);o.append("g").attr("class","nodes").selectAll(".node").data(A.nodes).join("g").attr("class","node").attr("id",d=>(d.uid=ft.next("node-")).id).attr("transform",function(d){return"translate("+d.x0+","+d.y0+")"}).attr("x",d=>d.x0).attr("y",d=>d.y0).append("rect").attr("height",d=>d.y1-d.y0).attr("width",d=>d.x1-d.x0).attr("fill",d=>S(d.id));const M=({id:d,value:w})=>L?`${d} +${x}${Math.round(w*100)/100}${E}`:d;o.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(A.nodes).join("text").attr("x",d=>d.x0(d.y1+d.y0)/2).attr("dy",`${L?"0":"0.35"}em`).attr("text-anchor",d=>d.x0(w.uid=ft.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",w=>w.source.x1).attr("x2",w=>w.target.x0);d.append("stop").attr("offset","0%").attr("stop-color",w=>S(w.source.id)),d.append("stop").attr("offset","100%").attr("stop-color",w=>S(w.target.id))}let I;switch(C){case"gradient":I=d=>d.uid;break;case"source":I=d=>S(d.source.id);break;case"target":I=d=>S(d.target.id);break;default:I=C}$.append("path").attr("d",qt()).attr("stroke",I).attr("stroke-width",d=>Math.max(1,d.width))},le={draw:oe},ae=t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),ce=X.parse.bind(X);X.parse=t=>ce(ae(t));const de={parser:X,db:se,renderer:le};export{de as diagram}; diff --git a/assets/sequenceDiagram-465a088a-GfS2Rm3U.js b/assets/sequenceDiagram-465a088a-GfS2Rm3U.js new file mode 100644 index 00000000..e392766f --- /dev/null +++ b/assets/sequenceDiagram-465a088a-GfS2Rm3U.js @@ -0,0 +1,122 @@ +import{g as ke,x as Le,v as Ie,c as dt,s as ae,b as Ae,a as Ne,z as Se,l as U,d as Mt,j as w,e as Me,h as St,i as Re,y as O,m as re,aN as oe,b0 as De,b1 as Ve}from"./mermaid.core-Up0YySao.js";import{d as Ce,a as Oe,g as Rt,b as Be,c as Ye,e as Gt}from"./svgDrawCommon-ad5ef572-uYdJDui6.js";import"./app-Mf7X6hWu.js";var qt=function(){var t=function(ht,m,_,k){for(_=_||{},k=ht.length;k--;_[ht[k]]=m);return _},e=[1,2],o=[1,3],i=[1,4],s=[2,4],n=[1,9],c=[1,11],h=[1,13],p=[1,14],a=[1,16],x=[1,17],E=[1,18],u=[1,24],g=[1,25],b=[1,26],P=[1,27],I=[1,28],R=[1,29],N=[1,30],F=[1,31],S=[1,32],tt=[1,33],W=[1,34],K=[1,35],Z=[1,36],q=[1,37],Y=[1,38],C=[1,39],G=[1,41],z=[1,42],X=[1,43],Q=[1,44],j=[1,45],y=[1,46],v=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],L=[4,5,16,50,52,53],pt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],et=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],A=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],$t=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],lt=[68,69,70],nt=[1,120],Ct={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,DOTTED_ARROW:74,SOLID_CROSS:75,DOTTED_CROSS:76,SOLID_POINT:77,DOTTED_POINT:78,TXT:79,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"DOTTED_ARROW",75:"SOLID_CROSS",76:"DOTTED_CROSS",77:"SOLID_POINT",78:"DOTTED_POINT",79:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:function(m,_,k,T,M,l,vt){var d=l.length-1;switch(M){case 3:return T.apply(l[d]),l[d];case 4:case 9:this.$=[];break;case 5:case 10:l[d-1].push(l[d]),this.$=l[d-1];break;case 6:case 7:case 11:case 12:this.$=l[d];break;case 8:case 13:this.$=[];break;case 15:l[d].type="createParticipant",this.$=l[d];break;case 16:l[d-1].unshift({type:"boxStart",boxData:T.parseBoxData(l[d-2])}),l[d-1].push({type:"boxEnd",boxText:l[d-2]}),this.$=l[d-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(l[d-2]),sequenceIndexStep:Number(l[d-1]),sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(l[d-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:T.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:T.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:T.LINETYPE.ACTIVE_START,actor:l[d-1]};break;case 23:this.$={type:"activeEnd",signalType:T.LINETYPE.ACTIVE_END,actor:l[d-1]};break;case 29:T.setDiagramTitle(l[d].substring(6)),this.$=l[d].substring(6);break;case 30:T.setDiagramTitle(l[d].substring(7)),this.$=l[d].substring(7);break;case 31:this.$=l[d].trim(),T.setAccTitle(this.$);break;case 32:case 33:this.$=l[d].trim(),T.setAccDescription(this.$);break;case 34:l[d-1].unshift({type:"loopStart",loopText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.LOOP_START}),l[d-1].push({type:"loopEnd",loopText:l[d-2],signalType:T.LINETYPE.LOOP_END}),this.$=l[d-1];break;case 35:l[d-1].unshift({type:"rectStart",color:T.parseMessage(l[d-2]),signalType:T.LINETYPE.RECT_START}),l[d-1].push({type:"rectEnd",color:T.parseMessage(l[d-2]),signalType:T.LINETYPE.RECT_END}),this.$=l[d-1];break;case 36:l[d-1].unshift({type:"optStart",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.OPT_START}),l[d-1].push({type:"optEnd",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.OPT_END}),this.$=l[d-1];break;case 37:l[d-1].unshift({type:"altStart",altText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.ALT_START}),l[d-1].push({type:"altEnd",signalType:T.LINETYPE.ALT_END}),this.$=l[d-1];break;case 38:l[d-1].unshift({type:"parStart",parText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.PAR_START}),l[d-1].push({type:"parEnd",signalType:T.LINETYPE.PAR_END}),this.$=l[d-1];break;case 39:l[d-1].unshift({type:"parStart",parText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.PAR_OVER_START}),l[d-1].push({type:"parEnd",signalType:T.LINETYPE.PAR_END}),this.$=l[d-1];break;case 40:l[d-1].unshift({type:"criticalStart",criticalText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.CRITICAL_START}),l[d-1].push({type:"criticalEnd",signalType:T.LINETYPE.CRITICAL_END}),this.$=l[d-1];break;case 41:l[d-1].unshift({type:"breakStart",breakText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.BREAK_START}),l[d-1].push({type:"breakEnd",optText:T.parseMessage(l[d-2]),signalType:T.LINETYPE.BREAK_END}),this.$=l[d-1];break;case 43:this.$=l[d-3].concat([{type:"option",optionText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.CRITICAL_OPTION},l[d]]);break;case 45:this.$=l[d-3].concat([{type:"and",parText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.PAR_AND},l[d]]);break;case 47:this.$=l[d-3].concat([{type:"else",altText:T.parseMessage(l[d-1]),signalType:T.LINETYPE.ALT_ELSE},l[d]]);break;case 48:l[d-3].draw="participant",l[d-3].type="addParticipant",l[d-3].description=T.parseMessage(l[d-1]),this.$=l[d-3];break;case 49:l[d-1].draw="participant",l[d-1].type="addParticipant",this.$=l[d-1];break;case 50:l[d-3].draw="actor",l[d-3].type="addParticipant",l[d-3].description=T.parseMessage(l[d-1]),this.$=l[d-3];break;case 51:l[d-1].draw="actor",l[d-1].type="addParticipant",this.$=l[d-1];break;case 52:l[d-1].type="destroyParticipant",this.$=l[d-1];break;case 53:this.$=[l[d-1],{type:"addNote",placement:l[d-2],actor:l[d-1].actor,text:l[d]}];break;case 54:l[d-2]=[].concat(l[d-1],l[d-1]).slice(0,2),l[d-2][0]=l[d-2][0].actor,l[d-2][1]=l[d-2][1].actor,this.$=[l[d-1],{type:"addNote",placement:T.PLACEMENT.OVER,actor:l[d-2].slice(0,2),text:l[d]}];break;case 55:this.$=[l[d-1],{type:"addLinks",actor:l[d-1].actor,text:l[d]}];break;case 56:this.$=[l[d-1],{type:"addALink",actor:l[d-1].actor,text:l[d]}];break;case 57:this.$=[l[d-1],{type:"addProperties",actor:l[d-1].actor,text:l[d]}];break;case 58:this.$=[l[d-1],{type:"addDetails",actor:l[d-1].actor,text:l[d]}];break;case 61:this.$=[l[d-2],l[d]];break;case 62:this.$=l[d];break;case 63:this.$=T.PLACEMENT.LEFTOF;break;case 64:this.$=T.PLACEMENT.RIGHTOF;break;case 65:this.$=[l[d-4],l[d-1],{type:"addMessage",from:l[d-4].actor,to:l[d-1].actor,signalType:l[d-3],msg:l[d],activate:!0},{type:"activeStart",signalType:T.LINETYPE.ACTIVE_START,actor:l[d-1]}];break;case 66:this.$=[l[d-4],l[d-1],{type:"addMessage",from:l[d-4].actor,to:l[d-1].actor,signalType:l[d-3],msg:l[d]},{type:"activeEnd",signalType:T.LINETYPE.ACTIVE_END,actor:l[d-4]}];break;case 67:this.$=[l[d-3],l[d-1],{type:"addMessage",from:l[d-3].actor,to:l[d-1].actor,signalType:l[d-2],msg:l[d]}];break;case 68:this.$={type:"addParticipant",actor:l[d]};break;case 69:this.$=T.LINETYPE.SOLID_OPEN;break;case 70:this.$=T.LINETYPE.DOTTED_OPEN;break;case 71:this.$=T.LINETYPE.SOLID;break;case 72:this.$=T.LINETYPE.DOTTED;break;case 73:this.$=T.LINETYPE.SOLID_CROSS;break;case 74:this.$=T.LINETYPE.DOTTED_CROSS;break;case 75:this.$=T.LINETYPE.SOLID_POINT;break;case 76:this.$=T.LINETYPE.DOTTED_POINT;break;case 77:this.$=T.parseMessage(l[d].trim().substring(1));break}},table:[{3:1,4:e,5:o,6:i},{1:[3]},{3:5,4:e,5:o,6:i},{3:6,4:e,5:o,6:i},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:n,5:c,8:8,9:10,12:12,13:h,14:p,17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},t(v,[2,5]),{9:47,12:12,13:h,14:p,17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},t(v,[2,7]),t(v,[2,8]),t(v,[2,14]),{12:48,50:q,52:Y,53:C},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:y},{22:55,70:y},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(v,[2,29]),t(v,[2,30]),{32:[1,61]},{34:[1,62]},t(v,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:y},{22:72,70:y},{22:73,70:y},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82]},{55:83,57:[1,84],65:[1,85],66:[1,86]},{22:87,70:y},{22:88,70:y},{22:89,70:y},{22:90,70:y},t([5,51,64,71,72,73,74,75,76,77,78,79],[2,68]),t(v,[2,6]),t(v,[2,15]),t(L,[2,9],{10:91}),t(v,[2,17]),{5:[1,93],19:[1,92]},{5:[1,94]},t(v,[2,21]),{5:[1,95]},{5:[1,96]},t(v,[2,24]),t(v,[2,25]),t(v,[2,26]),t(v,[2,27]),t(v,[2,28]),t(v,[2,31]),t(v,[2,32]),t(pt,s,{7:97}),t(pt,s,{7:98}),t(pt,s,{7:99}),t(et,s,{40:100,7:101}),t(A,s,{42:102,7:103}),t(A,s,{7:103,42:104}),t($t,s,{45:105,7:106}),t(pt,s,{7:107}),{5:[1,109],51:[1,108]},{5:[1,111],51:[1,110]},{5:[1,112]},{22:115,68:[1,113],69:[1,114],70:y},t(lt,[2,69]),t(lt,[2,70]),t(lt,[2,71]),t(lt,[2,72]),t(lt,[2,73]),t(lt,[2,74]),t(lt,[2,75]),t(lt,[2,76]),{22:116,70:y},{22:118,58:117,70:y},{70:[2,63]},{70:[2,64]},{56:119,79:nt},{56:121,79:nt},{56:122,79:nt},{56:123,79:nt},{4:[1,126],5:[1,128],11:125,12:127,16:[1,124],50:q,52:Y,53:C},{5:[1,129]},t(v,[2,19]),t(v,[2,20]),t(v,[2,22]),t(v,[2,23]),{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,130],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,131],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,132],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,133]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,46],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,49:[1,134],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,135]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,44],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,48:[1,136],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{16:[1,137]},{16:[1,138]},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,42],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,47:[1,139],50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{4:n,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,140],17:15,18:a,21:x,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:u,30:g,31:b,33:P,35:I,36:R,37:N,38:F,39:S,41:tt,43:W,44:K,46:Z,50:q,52:Y,53:C,54:G,59:z,60:X,61:Q,62:j,70:y},{15:[1,141]},t(v,[2,49]),{15:[1,142]},t(v,[2,51]),t(v,[2,52]),{22:143,70:y},{22:144,70:y},{56:145,79:nt},{56:146,79:nt},{56:147,79:nt},{64:[1,148],79:[2,62]},{5:[2,55]},{5:[2,77]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(v,[2,16]),t(L,[2,10]),{12:149,50:q,52:Y,53:C},t(L,[2,12]),t(L,[2,13]),t(v,[2,18]),t(v,[2,34]),t(v,[2,35]),t(v,[2,36]),t(v,[2,37]),{15:[1,150]},t(v,[2,38]),{15:[1,151]},t(v,[2,39]),t(v,[2,40]),{15:[1,152]},t(v,[2,41]),{5:[1,153]},{5:[1,154]},{56:155,79:nt},{56:156,79:nt},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:157,70:y},t(L,[2,11]),t(et,s,{7:101,40:158}),t(A,s,{7:103,42:159}),t($t,s,{7:106,45:160}),t(v,[2,48]),t(v,[2,50]),{5:[2,65]},{5:[2,66]},{79:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],85:[2,63],86:[2,64],119:[2,55],120:[2,77],121:[2,56],122:[2,57],123:[2,58],145:[2,67],146:[2,53],147:[2,54],155:[2,65],156:[2,66],157:[2,61],158:[2,47],159:[2,45],160:[2,43]},parseError:function(m,_){if(_.recoverable)this.trace(m);else{var k=new Error(m);throw k.hash=_,k}},parse:function(m){var _=this,k=[0],T=[],M=[null],l=[],vt=this.table,d="",It=0,te=0,we=2,ee=1,ve=l.slice.call(arguments,1),B=Object.create(this.lexer),ut={yy:{}};for(var Bt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Bt)&&(ut.yy[Bt]=this.yy[Bt]);B.setInput(m,ut.yy),ut.yy.lexer=B,ut.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var Yt=B.yylloc;l.push(Yt);var _e=B.options&&B.options.ranges;typeof ut.yy.parseError=="function"?this.parseError=ut.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pe(){var rt;return rt=T.pop()||B.lex()||ee,typeof rt!="number"&&(rt instanceof Array&&(T=rt,rt=T.pop()),rt=_.symbols_[rt]||rt),rt}for(var H,ft,$,Ft,yt={},At,at,ie,Nt;;){if(ft=k[k.length-1],this.defaultActions[ft]?$=this.defaultActions[ft]:((H===null||typeof H>"u")&&(H=Pe()),$=vt[ft]&&vt[ft][H]),typeof $>"u"||!$.length||!$[0]){var Wt="";Nt=[];for(At in vt[ft])this.terminals_[At]&&At>we&&Nt.push("'"+this.terminals_[At]+"'");B.showPosition?Wt="Parse error on line "+(It+1)+`: +`+B.showPosition()+` +Expecting `+Nt.join(", ")+", got '"+(this.terminals_[H]||H)+"'":Wt="Parse error on line "+(It+1)+": Unexpected "+(H==ee?"end of input":"'"+(this.terminals_[H]||H)+"'"),this.parseError(Wt,{text:B.match,token:this.terminals_[H]||H,line:B.yylineno,loc:Yt,expected:Nt})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ft+", token: "+H);switch($[0]){case 1:k.push(H),M.push(B.yytext),l.push(B.yylloc),k.push($[1]),H=null,te=B.yyleng,d=B.yytext,It=B.yylineno,Yt=B.yylloc;break;case 2:if(at=this.productions_[$[1]][1],yt.$=M[M.length-at],yt._$={first_line:l[l.length-(at||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(at||1)].first_column,last_column:l[l.length-1].last_column},_e&&(yt._$.range=[l[l.length-(at||1)].range[0],l[l.length-1].range[1]]),Ft=this.performAction.apply(yt,[d,te,It,ut.yy,$[1],M,l].concat(ve)),typeof Ft<"u")return Ft;at&&(k=k.slice(0,-1*at*2),M=M.slice(0,-1*at),l=l.slice(0,-1*at)),k.push(this.productions_[$[1]][0]),M.push(yt.$),l.push(yt._$),ie=vt[k[k.length-2]][k[k.length-1]],k.push(ie);break;case 3:return!0}}return!0}},me=function(){var ht={EOF:1,parseError:function(_,k){if(this.yy.parser)this.yy.parser.parseError(_,k);else throw new Error(_)},setInput:function(m,_){return this.yy=_||this.yy||{},this._input=m,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var m=this._input[0];this.yytext+=m,this.yyleng++,this.offset++,this.match+=m,this.matched+=m;var _=m.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),m},unput:function(m){var _=m.length,k=m.split(/(?:\r\n?|\n)/g);this._input=m+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var T=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),k.length-1&&(this.yylineno-=k.length-1);var M=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:k?(k.length===T.length?this.yylloc.first_column:0)+T[T.length-k.length].length-k[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[M[0],M[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(m){this.unput(this.match.slice(m))},pastInput:function(){var m=this.matched.substr(0,this.matched.length-this.match.length);return(m.length>20?"...":"")+m.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var m=this.match;return m.length<20&&(m+=this._input.substr(0,20-m.length)),(m.substr(0,20)+(m.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var m=this.pastInput(),_=new Array(m.length+1).join("-");return m+this.upcomingInput()+` +`+_+"^"},test_match:function(m,_){var k,T,M;if(this.options.backtrack_lexer&&(M={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(M.yylloc.range=this.yylloc.range.slice(0))),T=m[0].match(/(?:\r\n?|\n).*/g),T&&(this.yylineno+=T.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:T?T[T.length-1].length-T[T.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+m[0].length},this.yytext+=m[0],this.match+=m[0],this.matches=m,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(m[0].length),this.matched+=m[0],k=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),k)return k;if(this._backtrack){for(var l in M)this[l]=M[l];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var m,_,k,T;this._more||(this.yytext="",this.match="");for(var M=this._currentRules(),l=0;l_[0].length)){if(_=k,T=l,this.options.backtrack_lexer){if(m=this.test_match(k,M[l]),m!==!1)return m;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(m=this.test_match(_,M[T]),m!==!1?m:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var _=this.next();return _||this.lex()},begin:function(_){this.conditionStack.push(_)},popState:function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},pushState:function(_){this.begin(_)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(_,k,T,M){switch(T){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;case 8:return this.begin("ID"),50;case 9:return this.begin("ID"),52;case 10:return 13;case 11:return this.begin("ID"),53;case 12:return k.yytext=k.yytext.trim(),this.begin("ALIAS"),70;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),36;case 16:return this.begin("LINE"),37;case 17:return this.begin("LINE"),38;case 18:return this.begin("LINE"),39;case 19:return this.begin("LINE"),49;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),43;case 22:return this.begin("LINE"),48;case 23:return this.begin("LINE"),44;case 24:return this.begin("LINE"),47;case 25:return this.begin("LINE"),46;case 26:return this.popState(),15;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;case 37:return this.begin("ID"),23;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;case 41:return this.popState(),"acc_title_value";case 42:return this.begin("acc_descr"),33;case 43:return this.popState(),"acc_descr_value";case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return k.yytext=k.yytext.trim(),70;case 53:return 73;case 54:return 74;case 55:return 71;case 56:return 72;case 57:return 75;case 58:return 76;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 68;case 63:return 69;case 64:return 5;case 65:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],inclusive:!0}}};return ht}();Ct.lexer=me;function Ot(){this.yy={}}return Ot.prototype=Ct,Ct.Parser=Ot,new Ot}();qt.parser=qt;const Fe=qt;let _t,ct={},Xt={},Jt={},mt=[],J=[],Dt=!1,zt,ot,Pt,Et;const We=function(t){mt.push({name:t.text,wrap:t.wrap===void 0&&xt()||!!t.wrap,fill:t.color,actorKeys:[]}),ot=mt.slice(-1)[0]},Ht=function(t,e,o,i){let s=ot;const n=ct[t];if(n){if(ot&&n.box&&ot!==n.box)throw new Error("A same participant should only be defined in one Box: "+n.name+" can't be in '"+n.box.name+"' and in '"+ot.name+"' at the same time.");if(s=n.box?n.box:ot,n.box=s,n&&e===n.name&&o==null)return}(o==null||o.text==null)&&(o={text:e,wrap:null,type:i}),(i==null||o.text==null)&&(o={text:e,wrap:null,type:i}),ct[t]={box:s,name:e,description:o.text,wrap:o.wrap===void 0&&xt()||!!o.wrap,prevActor:_t,links:{},properties:{},actorCnt:null,rectData:null,type:i||"participant"},_t&&ct[_t]&&(ct[_t].nextActor=t),ot&&ot.actorKeys.push(t),_t=t},qe=t=>{let e,o=0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},c}return J.push({from:t,to:e,message:o.text,wrap:o.wrap===void 0&&xt()||!!o.wrap,type:i,activate:s}),!0},He=function(){return mt.length>0},Ue=function(){return mt.some(t=>t.name)},Ke=function(){return J},Ge=function(){return mt},Xe=function(){return ct},Je=function(){return Xt},Ze=function(){return Jt},Lt=function(t){return ct[t]},Qe=function(){return Object.keys(ct)},je=function(){Dt=!0},$e=function(){Dt=!1},t0=()=>Dt,e0=function(t){zt=t},xt=()=>zt!==void 0?zt:dt().sequence.wrap,i0=function(){ct={},Xt={},Jt={},mt=[],J=[],Dt=!1,Se()},s0=function(t){const e=t.trim(),o={text:e.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:e.match(/^:?wrap:/)!==null?!0:e.match(/^:?nowrap:/)!==null?!1:void 0};return U.debug("parseMessage:",o),o},n0=function(t){const e=t.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let o=e!=null&&e[1]?e[1].trim():"transparent",i=e!=null&&e[2]?e[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",o)||(o="transparent",i=t.trim());else{const n=new Option().style;n.color=o,n.color!==o&&(o="transparent",i=t.trim())}return{color:o,text:i!==void 0?Mt(i.replace(/^:?(?:no)?wrap:/,""),dt()):void 0,wrap:i!==void 0?i.match(/^:?wrap:/)!==null?!0:i.match(/^:?nowrap:/)!==null?!1:void 0:void 0}},kt={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},a0={FILLED:0,OPEN:1},r0={LEFTOF:0,RIGHTOF:1,OVER:2},ce=function(t,e,o){o.text,o.wrap===void 0&&xt()||o.wrap;const i=[].concat(t,t);J.push({from:i[0],to:i[1],message:o.text,wrap:o.wrap===void 0&&xt()||!!o.wrap,type:kt.NOTE,placement:e})},le=function(t,e){const o=Lt(t);try{let i=Mt(e.text,dt());i=i.replace(/&/g,"&"),i=i.replace(/=/g,"=");const s=JSON.parse(i);Zt(o,s)}catch(i){U.error("error while parsing actor link text",i)}},o0=function(t,e){const o=Lt(t);try{const c={};let h=Mt(e.text,dt());var i=h.indexOf("@");h=h.replace(/&/g,"&"),h=h.replace(/=/g,"=");var s=h.slice(0,i-1).trim(),n=h.slice(i+1).trim();c[s]=n,Zt(o,c)}catch(c){U.error("error while parsing actor link text",c)}};function Zt(t,e){if(t.links==null)t.links=e;else for(let o in e)t.links[o]=e[o]}const he=function(t,e){const o=Lt(t);try{let i=Mt(e.text,dt());const s=JSON.parse(i);de(o,s)}catch(i){U.error("error while parsing actor properties text",i)}};function de(t,e){if(t.properties==null)t.properties=e;else for(let o in e)t.properties[o]=e[o]}function c0(){ot=void 0}const pe=function(t,e){const o=Lt(t),i=document.getElementById(e.text);try{const s=i.innerHTML,n=JSON.parse(s);n.properties&&de(o,n.properties),n.links&&Zt(o,n.links)}catch(s){U.error("error while parsing actor details text",s)}},l0=function(t,e){if(t!==void 0&&t.properties!==void 0)return t.properties[e]},ue=function(t){if(Array.isArray(t))t.forEach(function(e){ue(e)});else switch(t.type){case"sequenceIndex":J.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":Ht(t.actor,t.actor,t.description,t.draw);break;case"createParticipant":if(ct[t.actor])throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");Pt=t.actor,Ht(t.actor,t.actor,t.description,t.draw),Xt[t.actor]=J.length;break;case"destroyParticipant":Et=t.actor,Jt[t.actor]=J.length;break;case"activeStart":D(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":D(t.actor,void 0,void 0,t.signalType);break;case"addNote":ce(t.actor,t.placement,t.text);break;case"addLinks":le(t.actor,t.text);break;case"addALink":o0(t.actor,t.text);break;case"addProperties":he(t.actor,t.text);break;case"addDetails":pe(t.actor,t.text);break;case"addMessage":if(Pt){if(t.to!==Pt)throw new Error("The created participant "+Pt+" does not have an associated creating message after its declaration. Please check the sequence diagram.");Pt=void 0}else if(Et){if(t.to!==Et&&t.from!==Et)throw new Error("The destroyed participant "+Et+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");Et=void 0}D(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":We(t.boxData);break;case"boxEnd":c0();break;case"loopStart":D(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":D(void 0,void 0,void 0,t.signalType);break;case"rectStart":D(void 0,void 0,t.color,t.signalType);break;case"rectEnd":D(void 0,void 0,void 0,t.signalType);break;case"optStart":D(void 0,void 0,t.optText,t.signalType);break;case"optEnd":D(void 0,void 0,void 0,t.signalType);break;case"altStart":D(void 0,void 0,t.altText,t.signalType);break;case"else":D(void 0,void 0,t.altText,t.signalType);break;case"altEnd":D(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":ae(t.text);break;case"parStart":D(void 0,void 0,t.parText,t.signalType);break;case"and":D(void 0,void 0,t.parText,t.signalType);break;case"parEnd":D(void 0,void 0,void 0,t.signalType);break;case"criticalStart":D(void 0,void 0,t.criticalText,t.signalType);break;case"option":D(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":D(void 0,void 0,void 0,t.signalType);break;case"breakStart":D(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":D(void 0,void 0,void 0,t.signalType);break}},se={addActor:Ht,addMessage:ze,addSignal:D,addLinks:le,addDetails:pe,addProperties:he,autoWrap:xt,setWrap:e0,enableSequenceNumbers:je,disableSequenceNumbers:$e,showSequenceNumbers:t0,getMessages:Ke,getActors:Xe,getCreatedActors:Je,getDestroyedActors:Ze,getActor:Lt,getActorKeys:Qe,getActorProperty:l0,getAccTitle:ke,getBoxes:Ge,getDiagramTitle:Le,setDiagramTitle:Ie,getConfig:()=>dt().sequence,clear:i0,parseMessage:s0,parseBoxData:n0,LINETYPE:kt,ARROWTYPE:a0,PLACEMENT:r0,addNote:ce,setAccTitle:ae,apply:ue,setAccDescription:Ae,getAccDescription:Ne,hasAtLeastOneBox:He,hasAtLeastOneBoxWithTitle:Ue},h0=t=>`.actor { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + + text.actor > tspan { + fill: ${t.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${t.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${t.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${t.signalColor}; + } + + #arrowhead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .sequenceNumber { + fill: ${t.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${t.signalColor}; + } + + #crosshead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .messageText { + fill: ${t.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${t.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${t.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${t.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation1 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation2 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${t.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + .actor-man circle, line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + stroke-width: 2px; + } +`,d0=h0,gt=18*2,Qt=function(t,e){return Ce(t,e)},fe=(t,e)=>{De(()=>{const o=document.querySelectorAll(t);o.length!==0&&(o[0].addEventListener("mouseover",function(){g0("actor"+e+"_popup")}),o[0].addEventListener("mouseout",function(){x0("actor"+e+"_popup")}))})},p0=function(t,e,o,i,s){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};const n=e.links,c=e.actorCnt,h=e.rectData;var p="none";s&&(p="block !important");const a=t.append("g");a.attr("id","actor"+c+"_popup"),a.attr("class","actorPopupMenu"),a.attr("display",p),fe("#actor"+c+"_popup",c);var x="";h.class!==void 0&&(x=" "+h.class);let E=h.width>o?h.width:o;const u=a.append("rect");if(u.attr("class","actorPopupMenuPanel"+x),u.attr("x",h.x),u.attr("y",h.height),u.attr("fill",h.fill),u.attr("stroke",h.stroke),u.attr("width",E),u.attr("height",h.height),u.attr("rx",h.rx),u.attr("ry",h.ry),n!=null){var g=20;for(let I in n){var b=a.append("a"),P=re.sanitizeUrl(n[I]);b.attr("xlink:href",P),b.attr("target","_blank"),M0(i)(I,b,h.x+10,h.height+g,E,20,{class:"actor"},i),g+=30}}return u.attr("height",g),{height:h.height+g,width:E}},u0=function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'block'; }"},f0=function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = 'none'; }"},g0=function(t){var e=document.getElementById(t);e!=null&&(e.style.display="block")},x0=function(t){var e=document.getElementById(t);e!=null&&(e.style.display="none")},wt=function(t,e){let o=0,i=0;const s=e.text.split(w.lineBreakRegex),[n,c]=oe(e.fontSize);let h=[],p=0,a=()=>e.y;if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":a=()=>Math.round(e.y+e.textMargin);break;case"middle":case"center":a=()=>Math.round(e.y+(o+i+e.textMargin)/2);break;case"bottom":case"end":a=()=>Math.round(e.y+(o+i+2*e.textMargin)-e.textMargin);break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle";break}for(let[x,E]of s.entries()){e.textMargin!==void 0&&e.textMargin===0&&n!==void 0&&(p=x*n);const u=t.append("text");u.attr("x",e.x),u.attr("y",a()),e.anchor!==void 0&&u.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&u.style("font-family",e.fontFamily),c!==void 0&&u.style("font-size",c),e.fontWeight!==void 0&&u.style("font-weight",e.fontWeight),e.fill!==void 0&&u.attr("fill",e.fill),e.class!==void 0&&u.attr("class",e.class),e.dy!==void 0?u.attr("dy",e.dy):p!==0&&u.attr("dy",p);const g=E||Ve;if(e.tspan){const b=u.append("tspan");b.attr("x",e.x),e.fill!==void 0&&b.attr("fill",e.fill),b.text(g)}else u.text(g);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(i+=(u._groups||u)[0][0].getBBox().height,o=i),h.push(u)}return h},ge=function(t,e){function o(s,n,c,h,p){return s+","+n+" "+(s+c)+","+n+" "+(s+c)+","+(n+h-p)+" "+(s+c-p*1.2)+","+(n+h)+" "+s+","+(n+h)}const i=t.append("polygon");return i.attr("points",o(e.x,e.y,e.width,e.height,7)),i.attr("class","labelBox"),e.y=e.y+e.height/2,wt(t,e),i};let it=-1;const xe=(t,e,o,i)=>{t.select&&o.forEach(s=>{const n=e[s],c=t.select("#actor"+n.actorCnt);!i.mirrorActors&&n.stopy?c.attr("y2",n.stopy+n.height/2):i.mirrorActors&&c.attr("y2",n.stopy)})},T0=function(t,e,o,i){const s=i?e.stopy:e.starty,n=e.x+e.width/2,c=s+5,h=t.append("g").lower();var p=h;i||(it++,p.append("line").attr("id","actor"+it).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),p=h.append("g"),e.actorCnt=it,e.links!=null&&(p.attr("id","root-"+it),fe("#root-"+it,it)));const a=Rt();var x="actor";e.properties!=null&&e.properties.class?x=e.properties.class:a.fill="#eaeaea",a.x=e.x,a.y=s,a.width=e.width,a.height=e.height,a.class=x,a.rx=3,a.ry=3;const E=Qt(p,a);if(e.rectData=a,e.properties!=null&&e.properties.icon){const g=e.properties.icon.trim();g.charAt(0)==="@"?Be(p,a.x+a.width-20,a.y+10,g.substr(1)):Ye(p,a.x+a.width-20,a.y+10,g)}jt(o)(e.description,p,a.x,a.y,a.width,a.height,{class:"actor"},o);let u=e.height;if(E.node){const g=E.node().getBBox();e.height=g.height,u=g.height}return u},y0=function(t,e,o,i){const s=i?e.stopy:e.starty,n=e.x+e.width/2,c=s+80;t.lower(),i||(it++,t.append("line").attr("id","actor"+it).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),e.actorCnt=it);const h=t.append("g");h.attr("class","actor-man");const p=Rt();p.x=e.x,p.y=s,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor",p.rx=3,p.ry=3,h.append("line").attr("id","actor-man-torso"+it).attr("x1",n).attr("y1",s+25).attr("x2",n).attr("y2",s+45),h.append("line").attr("id","actor-man-arms"+it).attr("x1",n-gt/2).attr("y1",s+33).attr("x2",n+gt/2).attr("y2",s+33),h.append("line").attr("x1",n-gt/2).attr("y1",s+60).attr("x2",n).attr("y2",s+45),h.append("line").attr("x1",n).attr("y1",s+45).attr("x2",n+gt/2-2).attr("y2",s+60);const a=h.append("circle");a.attr("cx",e.x+e.width/2),a.attr("cy",s+10),a.attr("r",15),a.attr("width",e.width),a.attr("height",e.height);const x=h.node().getBBox();return e.height=x.height,jt(o)(e.description,h,p.x,p.y+35,p.width,p.height,{class:"actor"},o),e.height},E0=function(t,e,o,i){switch(e.type){case"actor":return y0(t,e,o,i);case"participant":return T0(t,e,o,i)}},b0=function(t,e,o){const s=t.append("g");Te(s,e),e.name&&jt(o)(e.name,s,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},o),s.lower()},m0=function(t){return t.append("g")},w0=function(t,e,o,i,s){const n=Rt(),c=e.anchored;n.x=e.startx,n.y=e.starty,n.class="activation"+s%3,n.width=e.stopx-e.startx,n.height=o-e.starty,Qt(c,n)},v0=function(t,e,o,i){const{boxMargin:s,boxTextMargin:n,labelBoxHeight:c,labelBoxWidth:h,messageFontFamily:p,messageFontSize:a,messageFontWeight:x}=i,E=t.append("g"),u=function(P,I,R,N){return E.append("line").attr("x1",P).attr("y1",I).attr("x2",R).attr("y2",N).attr("class","loopLine")};u(e.startx,e.starty,e.stopx,e.starty),u(e.stopx,e.starty,e.stopx,e.stopy),u(e.startx,e.stopy,e.stopx,e.stopy),u(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(P){u(e.startx,P.y,e.stopx,P.y).style("stroke-dasharray","3, 3")});let g=Gt();g.text=o,g.x=e.startx,g.y=e.starty,g.fontFamily=p,g.fontSize=a,g.fontWeight=x,g.anchor="middle",g.valign="middle",g.tspan=!1,g.width=h||50,g.height=c||20,g.textMargin=n,g.class="labelText",ge(E,g),g=ye(),g.text=e.title,g.x=e.startx+h/2+(e.stopx-e.startx)/2,g.y=e.starty+s+n,g.anchor="middle",g.valign="middle",g.textMargin=n,g.class="loopText",g.fontFamily=p,g.fontSize=a,g.fontWeight=x,g.wrap=!0;let b=wt(E,g);return e.sectionTitles!==void 0&&e.sectionTitles.forEach(function(P,I){if(P.message){g.text=P.message,g.x=e.startx+(e.stopx-e.startx)/2,g.y=e.sections[I].y+s+n,g.class="loopText",g.anchor="middle",g.valign="middle",g.tspan=!1,g.fontFamily=p,g.fontSize=a,g.fontWeight=x,g.wrap=e.wrap,b=wt(E,g);let R=Math.round(b.map(N=>(N._groups||N)[0][0].getBBox().height).reduce((N,F)=>N+F));e.sections[I].height+=R-(s+n)}}),e.height=Math.round(e.stopy-e.starty),E},Te=function(t,e){Oe(t,e)},_0=function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},P0=function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},k0=function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},L0=function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},I0=function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},A0=function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},N0=function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},ye=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},S0=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},jt=function(){function t(s,n,c,h,p,a,x){const E=n.append("text").attr("x",c+p/2).attr("y",h+a/2+5).style("text-anchor","middle").text(s);i(E,x)}function e(s,n,c,h,p,a,x,E){const{actorFontSize:u,actorFontFamily:g,actorFontWeight:b}=E,[P,I]=oe(u),R=s.split(w.lineBreakRegex);for(let N=0;Nt.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(t){this.boxes.push(t)},addActor:function(t){this.actors.push(t)},addLoop:function(t){this.loops.push(t)},addMessage:function(t){this.messages.push(t)},addNote:function(t){this.notes.push(t)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,be(dt())},updateVal:function(t,e,o,i){t[e]===void 0?t[e]=o:t[e]=i(o,t[e])},updateBounds:function(t,e,o,i){const s=this;let n=0;function c(h){return function(a){n++;const x=s.sequenceItems.length-n+1;s.updateVal(a,"starty",e-x*r.boxMargin,Math.min),s.updateVal(a,"stopy",i+x*r.boxMargin,Math.max),s.updateVal(f.data,"startx",t-x*r.boxMargin,Math.min),s.updateVal(f.data,"stopx",o+x*r.boxMargin,Math.max),h!=="activation"&&(s.updateVal(a,"startx",t-x*r.boxMargin,Math.min),s.updateVal(a,"stopx",o+x*r.boxMargin,Math.max),s.updateVal(f.data,"starty",e-x*r.boxMargin,Math.min),s.updateVal(f.data,"stopy",i+x*r.boxMargin,Math.max))}}this.sequenceItems.forEach(c()),this.activations.forEach(c("activation"))},insert:function(t,e,o,i){const s=w.getMin(t,o),n=w.getMax(t,o),c=w.getMin(e,i),h=w.getMax(e,i);this.updateVal(f.data,"startx",s,Math.min),this.updateVal(f.data,"starty",c,Math.min),this.updateVal(f.data,"stopx",n,Math.max),this.updateVal(f.data,"stopy",h,Math.max),this.updateBounds(s,c,n,h)},newActivation:function(t,e,o){const i=o[t.from.actor],s=Vt(t.from.actor).length||0,n=i.x+i.width/2+(s-1)*r.activationWidth/2;this.activations.push({startx:n,starty:this.verticalPos+2,stopx:n+r.activationWidth,stopy:void 0,actor:t.from.actor,anchored:V.anchorElement(e)})},endActivation:function(t){const e=this.activations.map(function(o){return o.actor}).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},createLoop:function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},newLoop:function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:f.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=w.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},R0=function(t,e){f.bumpVerticalPos(r.boxMargin),e.height=r.boxMargin,e.starty=f.getVerticalPos();const o=Rt();o.x=e.startx,o.y=e.starty,o.width=e.width||r.width,o.class="note";const i=t.append("g"),s=V.drawRect(i,o),n=Gt();n.x=e.startx,n.y=e.starty,n.width=o.width,n.dy="1em",n.text=e.message,n.class="noteText",n.fontFamily=r.noteFontFamily,n.fontSize=r.noteFontSize,n.fontWeight=r.noteFontWeight,n.anchor=r.noteAlign,n.textMargin=r.noteMargin,n.valign="center";const c=wt(i,n),h=Math.round(c.map(p=>(p._groups||p)[0][0].getBBox().height).reduce((p,a)=>p+a));s.attr("height",h+2*r.noteMargin),e.height+=h+2*r.noteMargin,f.bumpVerticalPos(h+2*r.noteMargin),e.stopy=e.starty+h+2*r.noteMargin,e.stopx=e.startx+o.width,f.insert(e.startx,e.starty,e.stopx,e.stopy),f.models.addNote(e)},Tt=t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),bt=t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),Ut=t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight});function D0(t,e){f.bumpVerticalPos(10);const{startx:o,stopx:i,message:s}=e,n=w.splitBreaks(s).length,c=O.calculateTextDimensions(s,Tt(r)),h=c.height/n;e.height+=h,f.bumpVerticalPos(h);let p,a=c.height-10;const x=c.width;if(o===i){p=f.getVerticalPos()+a,r.rightAngles||(a+=r.boxMargin,p=f.getVerticalPos()+a),a+=30;const E=w.getMax(x/2,r.width/2);f.insert(o-E,f.getVerticalPos()-10+a,i+E,f.getVerticalPos()+30+a)}else a+=r.boxMargin,p=f.getVerticalPos()+a,f.insert(o,p-10,i,p);return f.bumpVerticalPos(a),e.height+=a,e.stopy=e.starty+e.height,f.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),p}const V0=function(t,e,o,i){const{startx:s,stopx:n,starty:c,message:h,type:p,sequenceIndex:a,sequenceVisible:x}=e,E=O.calculateTextDimensions(h,Tt(r)),u=Gt();u.x=s,u.y=c+10,u.width=n-s,u.class="messageText",u.dy="1em",u.text=h,u.fontFamily=r.messageFontFamily,u.fontSize=r.messageFontSize,u.fontWeight=r.messageFontWeight,u.anchor=r.messageAlign,u.valign="center",u.textMargin=r.wrapPadding,u.tspan=!1,wt(t,u);const g=E.width;let b;s===n?r.rightAngles?b=t.append("path").attr("d",`M ${s},${o} H ${s+w.getMax(r.width/2,g/2)} V ${o+25} H ${s}`):b=t.append("path").attr("d","M "+s+","+o+" C "+(s+60)+","+(o-10)+" "+(s+60)+","+(o+30)+" "+s+","+(o+20)):(b=t.append("line"),b.attr("x1",s),b.attr("y1",o),b.attr("x2",n),b.attr("y2",o)),p===i.db.LINETYPE.DOTTED||p===i.db.LINETYPE.DOTTED_CROSS||p===i.db.LINETYPE.DOTTED_POINT||p===i.db.LINETYPE.DOTTED_OPEN?(b.style("stroke-dasharray","3, 3"),b.attr("class","messageLine1")):b.attr("class","messageLine0");let P="";r.arrowMarkerAbsolute&&(P=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,P=P.replace(/\(/g,"\\("),P=P.replace(/\)/g,"\\)")),b.attr("stroke-width",2),b.attr("stroke","none"),b.style("fill","none"),(p===i.db.LINETYPE.SOLID||p===i.db.LINETYPE.DOTTED)&&b.attr("marker-end","url("+P+"#arrowhead)"),(p===i.db.LINETYPE.SOLID_POINT||p===i.db.LINETYPE.DOTTED_POINT)&&b.attr("marker-end","url("+P+"#filled-head)"),(p===i.db.LINETYPE.SOLID_CROSS||p===i.db.LINETYPE.DOTTED_CROSS)&&b.attr("marker-end","url("+P+"#crosshead)"),(x||r.showSequenceNumbers)&&(b.attr("marker-start","url("+P+"#sequencenumber)"),t.append("text").attr("x",s).attr("y",o+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(a))},C0=function(t,e,o,i,s,n,c){let h=0,p=0,a,x=0;for(const E of i){const u=e[E],g=u.box;a&&a!=g&&(c||f.models.addBox(a),p+=r.boxMargin+a.margin),g&&g!=a&&(c||(g.x=h+p,g.y=s),p+=g.margin),u.width=u.width||r.width,u.height=w.getMax(u.height||r.height,r.height),u.margin=u.margin||r.actorMargin,x=w.getMax(x,u.height),o[u.name]&&(p+=u.width/2),u.x=h+p,u.starty=f.getVerticalPos(),f.insert(u.x,s,u.x+u.width,u.height),h+=u.width+p,u.box&&(u.box.width=h+g.margin-u.box.x),p=u.margin,a=u.box,f.models.addActor(u)}a&&!c&&f.models.addBox(a),f.bumpVerticalPos(x)},Kt=function(t,e,o,i){if(i){let s=0;f.bumpVerticalPos(r.boxMargin*2);for(const n of o){const c=e[n];c.stopy||(c.stopy=f.getVerticalPos());const h=V.drawActor(t,c,r,!0);s=w.getMax(s,h)}f.bumpVerticalPos(s+r.boxMargin)}else for(const s of o){const n=e[s];V.drawActor(t,n,r,!1)}},Ee=function(t,e,o,i){let s=0,n=0;for(const c of o){const h=e[c],p=F0(h),a=V.drawPopup(t,h,p,r,r.forceMenus,i);a.height>s&&(s=a.height),a.width+h.x>n&&(n=a.width+h.x)}return{maxHeight:s,maxWidth:n}},be=function(t){Me(r,t),t.fontFamily&&(r.actorFontFamily=r.noteFontFamily=r.messageFontFamily=t.fontFamily),t.fontSize&&(r.actorFontSize=r.noteFontSize=r.messageFontSize=t.fontSize),t.fontWeight&&(r.actorFontWeight=r.noteFontWeight=r.messageFontWeight=t.fontWeight)},Vt=function(t){return f.activations.filter(function(e){return e.actor===t})},ne=function(t,e){const o=e[t],i=Vt(t),s=i.reduce(function(c,h){return w.getMin(c,h.startx)},o.x+o.width/2-1),n=i.reduce(function(c,h){return w.getMax(c,h.stopx)},o.x+o.width/2+1);return[s,n]};function st(t,e,o,i,s){f.bumpVerticalPos(o);let n=i;if(e.id&&e.message&&t[e.id]){const c=t[e.id].width,h=Tt(r);e.message=O.wrapLabel(`[${e.message}]`,c-2*r.wrapPadding,h),e.width=c,e.wrap=!0;const p=O.calculateTextDimensions(e.message,h),a=w.getMax(p.height,r.labelBoxHeight);n=i+a,U.debug(`${a} - ${e.message}`)}s(e),f.bumpVerticalPos(n)}function O0(t,e,o,i,s,n,c){function h(a,x){a.x{y.add(v.from),y.add(v.to)}),b=b.filter(v=>y.has(v))}C0(a,x,E,b,0,P,!1);const S=H0(P,x,F,i);V.insertArrowHead(a),V.insertArrowCrossHead(a),V.insertArrowFilledHead(a),V.insertSequenceNumber(a);function tt(y,v){const L=f.endActivation(y);L.starty+18>v&&(L.starty=v-6,v+=12),V.drawActivation(a,L,v,r,Vt(y.from.actor).length),f.insert(L.startx,v-10,L.stopx,v)}let W=1,K=1;const Z=[],q=[];P.forEach(function(y,v){let L,pt,et;switch(y.type){case i.db.LINETYPE.NOTE:f.resetVerticalPos(),pt=y.noteModel,R0(a,pt);break;case i.db.LINETYPE.ACTIVE_START:f.newActivation(y,a,x);break;case i.db.LINETYPE.ACTIVE_END:tt(y,f.getVerticalPos());break;case i.db.LINETYPE.LOOP_START:st(S,y,r.boxMargin,r.boxMargin+r.boxTextMargin,A=>f.newLoop(A));break;case i.db.LINETYPE.LOOP_END:L=f.endLoop(),V.drawLoop(a,L,"loop",r),f.bumpVerticalPos(L.stopy-f.getVerticalPos()),f.models.addLoop(L);break;case i.db.LINETYPE.RECT_START:st(S,y,r.boxMargin,r.boxMargin,A=>f.newLoop(void 0,A.message));break;case i.db.LINETYPE.RECT_END:L=f.endLoop(),q.push(L),f.models.addLoop(L),f.bumpVerticalPos(L.stopy-f.getVerticalPos());break;case i.db.LINETYPE.OPT_START:st(S,y,r.boxMargin,r.boxMargin+r.boxTextMargin,A=>f.newLoop(A));break;case i.db.LINETYPE.OPT_END:L=f.endLoop(),V.drawLoop(a,L,"opt",r),f.bumpVerticalPos(L.stopy-f.getVerticalPos()),f.models.addLoop(L);break;case i.db.LINETYPE.ALT_START:st(S,y,r.boxMargin,r.boxMargin+r.boxTextMargin,A=>f.newLoop(A));break;case i.db.LINETYPE.ALT_ELSE:st(S,y,r.boxMargin+r.boxTextMargin,r.boxMargin,A=>f.addSectionToLoop(A));break;case i.db.LINETYPE.ALT_END:L=f.endLoop(),V.drawLoop(a,L,"alt",r),f.bumpVerticalPos(L.stopy-f.getVerticalPos()),f.models.addLoop(L);break;case i.db.LINETYPE.PAR_START:case i.db.LINETYPE.PAR_OVER_START:st(S,y,r.boxMargin,r.boxMargin+r.boxTextMargin,A=>f.newLoop(A)),f.saveVerticalPos();break;case i.db.LINETYPE.PAR_AND:st(S,y,r.boxMargin+r.boxTextMargin,r.boxMargin,A=>f.addSectionToLoop(A));break;case i.db.LINETYPE.PAR_END:L=f.endLoop(),V.drawLoop(a,L,"par",r),f.bumpVerticalPos(L.stopy-f.getVerticalPos()),f.models.addLoop(L);break;case i.db.LINETYPE.AUTONUMBER:W=y.message.start||W,K=y.message.step||K,y.message.visible?i.db.enableSequenceNumbers():i.db.disableSequenceNumbers();break;case i.db.LINETYPE.CRITICAL_START:st(S,y,r.boxMargin,r.boxMargin+r.boxTextMargin,A=>f.newLoop(A));break;case i.db.LINETYPE.CRITICAL_OPTION:st(S,y,r.boxMargin+r.boxTextMargin,r.boxMargin,A=>f.addSectionToLoop(A));break;case i.db.LINETYPE.CRITICAL_END:L=f.endLoop(),V.drawLoop(a,L,"critical",r),f.bumpVerticalPos(L.stopy-f.getVerticalPos()),f.models.addLoop(L);break;case i.db.LINETYPE.BREAK_START:st(S,y,r.boxMargin,r.boxMargin+r.boxTextMargin,A=>f.newLoop(A));break;case i.db.LINETYPE.BREAK_END:L=f.endLoop(),V.drawLoop(a,L,"break",r),f.bumpVerticalPos(L.stopy-f.getVerticalPos()),f.models.addLoop(L);break;default:try{et=y.msgModel,et.starty=f.getVerticalPos(),et.sequenceIndex=W,et.sequenceVisible=i.db.showSequenceNumbers();const A=D0(a,et);O0(y,et,A,v,x,E,u),Z.push({messageModel:et,lineStartY:A}),f.models.addMessage(et)}catch(A){U.error("error while drawing message",A)}}[i.db.LINETYPE.SOLID_OPEN,i.db.LINETYPE.DOTTED_OPEN,i.db.LINETYPE.SOLID,i.db.LINETYPE.DOTTED,i.db.LINETYPE.SOLID_CROSS,i.db.LINETYPE.DOTTED_CROSS,i.db.LINETYPE.SOLID_POINT,i.db.LINETYPE.DOTTED_POINT].includes(y.type)&&(W=W+K)}),U.debug("createdActors",E),U.debug("destroyedActors",u),Kt(a,x,b,!1),Z.forEach(y=>V0(a,y.messageModel,y.lineStartY,i)),r.mirrorActors&&Kt(a,x,b,!0),q.forEach(y=>V.drawBackgroundRect(a,y)),xe(a,x,b,r),f.models.boxes.forEach(function(y){y.height=f.getVerticalPos()-y.y,f.insert(y.x,y.y,y.x+y.width,y.height),y.startx=y.x,y.starty=y.y,y.stopx=y.startx+y.width,y.stopy=y.starty+y.height,y.stroke="rgb(0,0,0, 0.5)",V.drawBox(a,y,r)}),R&&f.bumpVerticalPos(r.boxMargin);const Y=Ee(a,x,b,p),{bounds:C}=f.getBounds();let G=C.stopy-C.starty;G{const c=t[n];c.wrap&&(c.description=O.wrapLabel(c.description,r.width-2*r.wrapPadding,Ut(r)));const h=O.calculateTextDimensions(c.description,Ut(r));c.width=c.wrap?r.width:w.getMax(r.width,h.width+2*r.wrapPadding),c.height=c.wrap?w.getMax(h.height,r.height):r.height,i=w.getMax(i,c.height)});for(const n in e){const c=t[n];if(!c)continue;const h=t[c.nextActor];if(!h){const E=e[n]+r.actorMargin-c.width/2;c.margin=w.getMax(E,r.actorMargin);continue}const a=e[n]+r.actorMargin-c.width/2-h.width/2;c.margin=w.getMax(a,r.actorMargin)}let s=0;return o.forEach(n=>{const c=Tt(r);let h=n.actorKeys.reduce((x,E)=>x+=t[E].width+(t[E].margin||0),0);h-=2*r.boxTextMargin,n.wrap&&(n.name=O.wrapLabel(n.name,h-2*r.wrapPadding,c));const p=O.calculateTextDimensions(n.name,c);s=w.getMax(p.height,s);const a=w.getMax(h,p.width+2*r.wrapPadding);if(n.margin=r.boxTextMargin,hn.textMaxHeight=s),w.getMax(i,r.height)}const q0=function(t,e,o){const i=e[t.from].x,s=e[t.to].x,n=t.wrap&&t.message;let c=O.calculateTextDimensions(n?O.wrapLabel(t.message,r.width,bt(r)):t.message,bt(r));const h={width:n?r.width:w.getMax(r.width,c.width+2*r.noteMargin),height:0,startx:e[t.from].x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===o.db.PLACEMENT.RIGHTOF?(h.width=n?w.getMax(r.width,c.width):w.getMax(e[t.from].width/2+e[t.to].width/2,c.width+2*r.noteMargin),h.startx=i+(e[t.from].width+r.actorMargin)/2):t.placement===o.db.PLACEMENT.LEFTOF?(h.width=n?w.getMax(r.width,c.width+2*r.noteMargin):w.getMax(e[t.from].width/2+e[t.to].width/2,c.width+2*r.noteMargin),h.startx=i-h.width+(e[t.from].width-r.actorMargin)/2):t.to===t.from?(c=O.calculateTextDimensions(n?O.wrapLabel(t.message,w.getMax(r.width,e[t.from].width),bt(r)):t.message,bt(r)),h.width=n?w.getMax(r.width,e[t.from].width):w.getMax(e[t.from].width,r.width,c.width+2*r.noteMargin),h.startx=i+(e[t.from].width-h.width)/2):(h.width=Math.abs(i+e[t.from].width/2-(s+e[t.to].width/2))+r.actorMargin,h.startx=i2,E=P=>h?-P:P;t.from===t.to?a=p:(t.activate&&!x&&(a+=E(r.activationWidth/2-1)),[o.db.LINETYPE.SOLID_OPEN,o.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(a+=E(3)));const u=[i,s,n,c],g=Math.abs(p-a);t.wrap&&t.message&&(t.message=O.wrapLabel(t.message,w.getMax(g+2*r.wrapPadding,r.width),Tt(r)));const b=O.calculateTextDimensions(t.message,Tt(r));return{width:w.getMax(t.wrap?0:b.width+2*r.wrapPadding,g+2*r.wrapPadding,r.width),height:0,startx:p,stopx:a,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,u),toBounds:Math.max.apply(null,u)}},H0=function(t,e,o,i){const s={},n=[];let c,h,p;return t.forEach(function(a){switch(a.id=O.random({length:10}),a.type){case i.db.LINETYPE.LOOP_START:case i.db.LINETYPE.ALT_START:case i.db.LINETYPE.OPT_START:case i.db.LINETYPE.PAR_START:case i.db.LINETYPE.PAR_OVER_START:case i.db.LINETYPE.CRITICAL_START:case i.db.LINETYPE.BREAK_START:n.push({id:a.id,msg:a.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case i.db.LINETYPE.ALT_ELSE:case i.db.LINETYPE.PAR_AND:case i.db.LINETYPE.CRITICAL_OPTION:a.message&&(c=n.pop(),s[c.id]=c,s[a.id]=c,n.push(c));break;case i.db.LINETYPE.LOOP_END:case i.db.LINETYPE.ALT_END:case i.db.LINETYPE.OPT_END:case i.db.LINETYPE.PAR_END:case i.db.LINETYPE.CRITICAL_END:case i.db.LINETYPE.BREAK_END:c=n.pop(),s[c.id]=c;break;case i.db.LINETYPE.ACTIVE_START:{const E=e[a.from?a.from.actor:a.to.actor],u=Vt(a.from?a.from.actor:a.to.actor).length,g=E.x+E.width/2+(u-1)*r.activationWidth/2,b={startx:g,stopx:g+r.activationWidth,actor:a.from.actor,enabled:!0};f.activations.push(b)}break;case i.db.LINETYPE.ACTIVE_END:{const E=f.activations.map(u=>u.actor).lastIndexOf(a.from.actor);delete f.activations.splice(E,1)[0]}break}a.placement!==void 0?(h=q0(a,e,i),a.noteModel=h,n.forEach(E=>{c=E,c.from=w.getMin(c.from,h.startx),c.to=w.getMax(c.to,h.startx+h.width),c.width=w.getMax(c.width,Math.abs(c.from-c.to))-r.labelBoxWidth})):(p=z0(a,e,i),a.msgModel=p,p.startx&&p.stopx&&n.length>0&&n.forEach(E=>{if(c=E,p.startx===p.stopx){const u=e[a.from],g=e[a.to];c.from=w.getMin(u.x-p.width/2,u.x-u.width/2,c.from),c.to=w.getMax(g.x+p.width/2,g.x+u.width/2,c.to),c.width=w.getMax(c.width,Math.abs(c.to-c.from))-r.labelBoxWidth}else c.from=w.getMin(p.startx,c.from),c.to=w.getMax(p.stopx,c.to),c.width=w.getMax(c.width,p.width)-r.labelBoxWidth}))}),f.activations=[],U.debug("Loop type widths:",s),s},U0={bounds:f,drawActors:Kt,drawActorsPopup:Ee,setConf:be,draw:B0},J0={parser:Fe,db:se,renderer:U0,styles:d0,init:({wrap:t})=>{se.setWrap(t)}};export{J0 as diagram}; diff --git a/assets/stateDiagram-b620d43f-jx860Lys.js b/assets/stateDiagram-b620d43f-jx860Lys.js new file mode 100644 index 00000000..a9d9cd12 --- /dev/null +++ b/assets/stateDiagram-b620d43f-jx860Lys.js @@ -0,0 +1 @@ +import{p as P,d as N,s as W}from"./styles-bbc3fe3b-RFckTJF_.js";import{c as t,h as H,l as b,i as R,j as T,ao as v,y as U}from"./mermaid.core-Up0YySao.js";import{G as C,l as F}from"./layout-bNXk8SHo.js";import{l as $}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const O=e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),X=e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),J=(e,i)=>{const o=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),c=o.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c.width+2*t().state.padding).attr("height",c.height+2*t().state.padding).attr("rx",t().state.radius),o},Y=(e,i)=>{const o=function(l,m,w){const E=l.append("tspan").attr("x",2*t().state.padding).text(m);w||E.attr("dy",t().state.textHeight)},s=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.descriptions[0]).node().getBBox(),g=s.height,p=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description");let a=!0,r=!0;i.descriptions.forEach(function(l){a||(o(p,l,r),r=!1),a=!1});const y=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),x=p.node().getBBox(),d=Math.max(x.width,s.width);return y.attr("x2",d+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",d+2*t().state.padding).attr("height",x.height+g+2*t().state.padding).attr("rx",t().state.radius),e},I=(e,i,o)=>{const c=t().state.padding,s=2*t().state.padding,g=e.node().getBBox(),p=g.width,a=g.x,r=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),x=r.node().getBBox().width+s;let d=Math.max(x,p);d===p&&(d=d+s);let l;const m=e.node().getBBox();i.doc,l=a-c,x>p&&(l=(p-d)/2+c),Math.abs(a-m.x)p&&(l=a-(x-p)/2);const w=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",l).attr("y",w).attr("class",o?"alt-composit":"composit").attr("width",d).attr("height",m.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),r.attr("x",l+c),x<=p&&r.attr("x",a+(d-s)/2-x/2+c),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",d).attr("height",m.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},_=e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),q=(e,i)=>{let o=t().state.forkWidth,c=t().state.forkHeight;if(i.parentId){let s=o;o=c,c=s}return e.append("rect").style("stroke","black").style("fill","black").attr("width",o).attr("height",c).attr("x",t().state.padding).attr("y",t().state.padding)},Z=(e,i,o,c)=>{let s=0;const g=c.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let p=e.replace(/\r\n/g,"
    ");p=p.replace(/\n/g,"
    ");const a=p.split(T.lineBreakRegex);let r=1.25*t().state.noteMargin;for(const y of a){const x=y.trim();if(x.length>0){const d=g.append("tspan");if(d.text(x),r===0){const l=d.node().getBBox();r+=l.height}s+=r,d.attr("x",i+t().state.noteMargin),d.attr("y",o+s+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:s}},j=(e,i)=>{i.attr("class","state-note");const o=i.append("rect").attr("x",0).attr("y",t().state.padding),c=i.append("g"),{textWidth:s,textHeight:g}=Z(e,0,0,c);return o.attr("height",g+2*t().state.noteMargin),o.attr("width",s+t().state.noteMargin*2),o},L=function(e,i){const o=i.id,c={id:o,label:i.id,width:0,height:0},s=e.append("g").attr("id",o).attr("class","stateGroup");i.type==="start"&&O(s),i.type==="end"&&_(s),(i.type==="fork"||i.type==="join")&&q(s,i),i.type==="note"&&j(i.note.text,s),i.type==="divider"&&X(s),i.type==="default"&&i.descriptions.length===0&&J(s,i),i.type==="default"&&i.descriptions.length>0&&Y(s,i);const g=s.node().getBBox();return c.width=g.width+2*t().state.padding,c.height=g.height+2*t().state.padding,c};let G=0;const K=function(e,i,o){const c=function(r){switch(r){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}};i.points=i.points.filter(r=>!Number.isNaN(r.y));const s=i.points,g=$().x(function(r){return r.x}).y(function(r){return r.y}).curve(v),p=e.append("path").attr("d",g(s)).attr("id","edge"+G).attr("class","transition");let a="";if(t().state.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),p.attr("marker-end","url("+a+"#"+c(N.relationType.DEPENDENCY)+"End)"),o.title!==void 0){const r=e.append("g").attr("class","stateLabel"),{x:y,y:x}=U.calcLabelPosition(i.points),d=T.getRows(o.title);let l=0;const m=[];let w=0,E=0;for(let u=0;u<=d.length;u++){const h=r.append("text").attr("text-anchor","middle").text(d[u]).attr("x",y).attr("y",x+l),f=h.node().getBBox();w=Math.max(w,f.width),E=Math.min(E,f.x),b.info(f.x,y,x+l),l===0&&(l=h.node().getBBox().height,b.info("Title height",l,x)),m.push(h)}let k=l*d.length;if(d.length>1){const u=(d.length-1)*l*.5;m.forEach((h,f)=>h.attr("y",x+f*l-u)),k=l*d.length}const n=r.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",y-w/2-t().state.padding/2).attr("y",x-k/2-t().state.padding/2-3.5).attr("width",w+t().state.padding).attr("height",k+t().state.padding),b.info(n)}G++};let B;const z={},Q=function(){},V=function(e){e.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},D=function(e,i,o,c){B=t().state;const s=t().securityLevel;let g;s==="sandbox"&&(g=H("#i"+i));const p=s==="sandbox"?H(g.nodes()[0].contentDocument.body):H("body"),a=s==="sandbox"?g.nodes()[0].contentDocument:document;b.debug("Rendering diagram "+e);const r=p.select(`[id='${i}']`);V(r);const y=c.db.getRootDoc();A(y,r,void 0,!1,p,a,c);const x=B.padding,d=r.node().getBBox(),l=d.width+x*2,m=d.height+x*2,w=l*1.75;R(r,m,w,B.useMaxWidth),r.attr("viewBox",`${d.x-B.padding} ${d.y-B.padding} `+l+" "+m)},tt=e=>e?e.length*B.fontSizeFactor:1,A=(e,i,o,c,s,g,p)=>{const a=new C({compound:!0,multigraph:!0});let r,y=!0;for(r=0;r{const f=h.parentElement;let S=0,M=0;f&&(f.parentElement&&(S=f.parentElement.getBBox().width),M=parseInt(f.getAttribute("data-x-shift"),10),Number.isNaN(M)&&(M=0)),h.setAttribute("x1",0-M+8),h.setAttribute("x2",S-M-8)})):b.debug("No Node "+n+": "+JSON.stringify(a.node(n)))});let E=w.getBBox();a.edges().forEach(function(n){n!==void 0&&a.edge(n)!==void 0&&(b.debug("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(a.edge(n))),K(i,a.edge(n),a.edge(n).relation))}),E=w.getBBox();const k={id:o||"root",label:o||"root",width:0,height:0};return k.width=E.width+2*B.padding,k.height=E.height+2*B.padding,b.debug("Doc rendered",k,a),k},et={setConf:Q,draw:D},ct={parser:P,db:N,renderer:et,styles:W,init:e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,N.clear()}};export{ct as diagram}; diff --git a/assets/stateDiagram-v2-2671c3d1-zzr1Lxf7.js b/assets/stateDiagram-v2-2671c3d1-zzr1Lxf7.js new file mode 100644 index 00000000..9a078b32 --- /dev/null +++ b/assets/stateDiagram-v2-2671c3d1-zzr1Lxf7.js @@ -0,0 +1 @@ +import{p as J,d as B,s as Q,D as H,a as X,S as Z,b as F,c as I}from"./styles-bbc3fe3b-RFckTJF_.js";import{G as tt}from"./layout-bNXk8SHo.js";import{l as E,c as g,h as x,y as et,i as ot,j as w}from"./mermaid.core-Up0YySao.js";import{r as st}from"./index-67a42d7d-Sclb7lyu.js";import"./app-Mf7X6hWu.js";import"./edges-80f1ebb6-Okp3_yLQ.js";import"./createText-aebacdfe-sWKH4swq.js";import"./line-rSV082x4.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";const h="rect",C="rectWithTitle",nt="start",ct="end",it="divider",rt="roundedWithTitle",lt="note",at="noteGroup",_="statediagram",dt="state",Et=`${_}-${dt}`,U="transition",St="note",Tt="note-edge",pt=`${U} ${Tt}`,_t=`${_}-${St}`,ut="cluster",Dt=`${_}-${ut}`,bt="cluster-alt",ft=`${_}-${bt}`,V="parent",Y="note",At="state",N="----",ht=`${N}${Y}`,M=`${N}${V}`,W="fill:none",z="fill: #333",m="c",j="text",q="normal";let y={},d=0;const yt=function(t){const n=Object.keys(t);for(const e of n)t[e]},gt=function(t,n){return n.db.extract(n.db.getRootDocV2()),n.db.getClasses()};function $t(t){return t==null?"":t.classes?t.classes.join(" "):""}function R(t="",n=0,e="",c=N){const i=e!==null&&e.length>0?`${c}${e}`:"";return`${At}-${t}${i}-${n}`}const A=(t,n,e,c,i,r)=>{const o=e.id,u=$t(c[o]);if(o!=="root"){let T=h;e.start===!0&&(T=nt),e.start===!1&&(T=ct),e.type!==H&&(T=e.type),y[o]||(y[o]={id:o,shape:T,description:w.sanitizeText(o,g()),classes:`${u} ${Et}`});const s=y[o];e.description&&(Array.isArray(s.description)?(s.shape=C,s.description.push(e.description)):s.description.length>0?(s.shape=C,s.description===o?s.description=[e.description]:s.description=[s.description,e.description]):(s.shape=h,s.description=e.description),s.description=w.sanitizeTextOrArray(s.description,g())),s.description.length===1&&s.shape===C&&(s.shape=h),!s.type&&e.doc&&(E.info("Setting cluster for ",o,G(e)),s.type="group",s.dir=G(e),s.shape=e.type===X?it:rt,s.classes=s.classes+" "+Dt+" "+(r?ft:""));const p={labelStyle:"",shape:s.shape,labelText:s.description,classes:s.classes,style:"",id:o,dir:s.dir,domId:R(o,d),type:s.type,padding:15};if(p.centerLabel=!0,e.note){const l={labelStyle:"",shape:lt,labelText:e.note.text,classes:_t,style:"",id:o+ht+"-"+d,domId:R(o,d,Y),type:s.type,padding:15},a={labelStyle:"",shape:at,labelText:e.note.text,classes:s.classes,style:"",id:o+M,domId:R(o,d,V),type:"group",padding:0};d++;const D=o+M;t.setNode(D,a),t.setNode(l.id,l),t.setNode(o,p),t.setParent(o,D),t.setParent(l.id,D);let S=o,b=l.id;e.note.position==="left of"&&(S=l.id,b=o),t.setEdge(S,b,{arrowhead:"none",arrowType:"",style:W,labelStyle:"",classes:pt,arrowheadStyle:z,labelpos:m,labelType:j,thickness:q})}else t.setNode(o,p)}n&&n.id!=="root"&&(E.trace("Setting node ",o," to be child of its parent ",n.id),t.setParent(o,n.id)),e.doc&&(E.trace("Adding nodes children "),xt(t,e,e.doc,c,i,!r))},xt=(t,n,e,c,i,r)=>{E.trace("items",e),e.forEach(o=>{switch(o.stmt){case F:A(t,n,o,c,i,r);break;case H:A(t,n,o,c,i,r);break;case Z:{A(t,n,o.state1,c,i,r),A(t,n,o.state2,c,i,r);const u={id:"edge"+d,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:W,labelStyle:"",label:w.sanitizeText(o.description,g()),arrowheadStyle:z,labelpos:m,labelType:j,thickness:q,classes:U};t.setEdge(o.state1.id,o.state2.id,u,d),d++}break}})},G=(t,n=I)=>{let e=n;if(t.doc)for(let c=0;c{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,B.clear()}};export{Ht as diagram}; diff --git a/assets/style-8QqqaCJM.css b/assets/style-8QqqaCJM.css new file mode 100644 index 00000000..17a0cabe --- /dev/null +++ b/assets/style-8QqqaCJM.css @@ -0,0 +1 @@ +html[data-theme=dark]{--text-color: #9e9e9e;--bg-color: #0d1117;--bg-color-secondary: #161b22;--bg-color-tertiary: #21262c;--border-color: #30363d;--box-shadow: #282a32;--card-shadow: rgba(0, 0, 0, .3);--black: #fff;--dark-grey: #999;--light-grey: #666;--white: #000;--grey3: #bbb;--grey12: #333;--grey14: #111;--bg-color-light: #161b22;--bg-color-back: #0d1117;--bg-color-float: #161b22;--bg-color-blur: rgba(13, 17, 23, .9);--bg-color-float-blur: rgba(22, 27, 34, .9);--text-color-light: #a8a8a8;--text-color-lighter: #b1b1b1;--text-color-bright: #c5c5c5;--border-color-light: #2e333a;--border-color-dark: #394048}:root{--theme-color: #5c92d1;--text-color: #2c3e50;--bg-color: #fff;--bg-color-secondary: #f8f8f8;--bg-color-tertiary: #efeef4;--border-color: #eaecef;--box-shadow: #f0f1f2;--card-shadow: rgba(0, 0, 0, .15);--black: #000;--dark-grey: #666;--light-grey: #999;--white: #fff;--grey3: #333;--grey12: #bbb;--grey14: #eee;--navbar-height: 3.75rem;--navbar-horizontal-padding: 1.5rem;--navbar-vertical-padding: .7rem;--navbar-mobile-height: 3.25rem;--navbar-mobile-horizontal-padding: 1rem;--navbar-mobile-vertical-padding: .5rem;--sidebar-width: 18rem;--sidebar-mobile-width: 16rem;--content-width: 780px;--home-page-width: 1160px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-heading: Georgia Pro, Crimson, Georgia, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", STHeiti, "Microsoft YaHei", SimSun, sans-serif;--font-family-mono: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--line-numbers-width: 2.5rem;--color-transition: .3s ease;--transform-transition: .3s ease;--vp-bg: var(--bg-color);--vp-bgl: var(--bg-color-light);--vp-bglt: var(--bg-color-tertiary);--vp-c: var(--text-color);--vp-cl: var(--text-color-light);--vp-clt: var(--text-color-lighter);--vp-brc: var(--border-color);--vp-brcd: var(--border-color-dark);--vp-tc: var(--theme-color);--vp-tcl: var(--theme-color-light);--vp-ct: var(--color-transition);--vp-tt: var(--transform-transition);--bg-color-light: #fff;--bg-color-back: #f8f8f8;--bg-color-float: #fff;--bg-color-blur: rgba(255, 255, 255, .9);--bg-color-float-blur: rgba(255, 255, 255, .9);--text-color-light: #3a5169;--text-color-lighter: #476582;--text-color-bright: #6a8bad;--border-color-light: #eceef1;--border-color-dark: #cfd4db;--theme-color-dark: #4582ca;--theme-color-light: #6c9dd6;--theme-color-mask: rgba(92, 146, 209, .15)}:root{--badge-tip-color: #42b983;--badge-warning-color: #f4cd00;--badge-danger-color: #f55;--badge-info-color: #0295ff;--badge-note-color: #666}.vp-badge{display:inline-block;vertical-align:center;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-tc);color:var(--white);font-size:14px;line-height:18px;transition:background var(--vp-ct),color var(--vp-ct)}.vp-badge+.vp-badge{margin-inline-start:5px}h1 .vp-badge,h2 .vp-badge,h3 .vp-badge,h4 .vp-badge,h5 .vp-badge,h6 .vp-badge{vertical-align:top}.vp-badge.tip{background:var(--badge-tip-color)}.vp-badge.warning{background:var(--badge-warning-color)}.vp-badge.danger{background:var(--badge-danger-color)}.vp-badge.info{background:var(--badge-info-color)}.vp-badge.note{background:var(--badge-note-color)}.font-icon{display:inline-block}.theme-hope-content .font-icon{vertical-align:middle}:root{--balloon-border-radius: 2px;--balloon-color: rgba(16, 16, 16, .95);--balloon-text-color: #fff;--balloon-font-size: 12px;--balloon-move: 4px}button[aria-label][data-balloon-pos]{overflow:visible}[aria-label][data-balloon-pos]{position:relative;cursor:pointer}[aria-label][data-balloon-pos]:after{opacity:0;pointer-events:none;transition:all .18s ease-out .18s;text-indent:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-weight:400;font-style:normal;text-shadow:none;font-size:var(--balloon-font-size);background:var(--balloon-color);border-radius:2px;color:var(--balloon-text-color);border-radius:var(--balloon-border-radius);content:attr(aria-label);padding:.5em 1em;position:absolute;white-space:nowrap;z-index:10}[aria-label][data-balloon-pos]:before{width:0;height:0;border:5px solid transparent;border-top-color:var(--balloon-color);opacity:0;pointer-events:none;transition:all .18s ease-out .18s;content:"";position:absolute;z-index:10}[aria-label][data-balloon-pos]:hover:before,[aria-label][data-balloon-pos]:hover:after,[aria-label][data-balloon-pos][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-visible]:after,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after{opacity:1;pointer-events:none}[aria-label][data-balloon-pos].font-awesome:after{font-family:FontAwesome,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}[aria-label][data-balloon-pos][data-balloon-break]:after{white-space:pre}[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after{white-space:pre-line;word-break:break-word}[aria-label][data-balloon-pos][data-balloon-blunt]:before,[aria-label][data-balloon-pos][data-balloon-blunt]:after{transition:none}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before{transform:translate(-50%)}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after{left:0}[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before{left:5px}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after{right:0}[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before{right:5px}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before{transform:translate(0)}[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{bottom:100%;transform-origin:top;transform:translateY(var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=up]:after{margin-bottom:10px}[aria-label][data-balloon-pos][data-balloon-pos=up]:before,[aria-label][data-balloon-pos][data-balloon-pos=up]:after{left:50%;transform:translate(-50%,var(--balloon-move))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{top:100%;transform:translateY(calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos^=down]:after{margin-top:10px}[aria-label][data-balloon-pos][data-balloon-pos^=down]:before{width:0;height:0;border:5px solid transparent;border-bottom-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=down]:after,[aria-label][data-balloon-pos][data-balloon-pos=down]:before{left:50%;transform:translate(-50%,calc(var(--balloon-move) * -1))}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before{transform:translateY(-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after,[aria-label][data-balloon-pos][data-balloon-pos=left]:before{right:100%;top:50%;transform:translate(var(--balloon-move),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=left]:after{margin-right:10px}[aria-label][data-balloon-pos][data-balloon-pos=left]:before{width:0;height:0;border:5px solid transparent;border-left-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after,[aria-label][data-balloon-pos][data-balloon-pos=right]:before{left:100%;top:50%;transform:translate(calc(var(--balloon-move) * -1),-50%)}[aria-label][data-balloon-pos][data-balloon-pos=right]:after{margin-left:10px}[aria-label][data-balloon-pos][data-balloon-pos=right]:before{width:0;height:0;border:5px solid transparent;border-right-color:var(--balloon-color)}[aria-label][data-balloon-pos][data-balloon-length]:after{white-space:normal}[aria-label][data-balloon-pos][data-balloon-length=small]:after{width:80px}[aria-label][data-balloon-pos][data-balloon-length=medium]:after{width:150px}[aria-label][data-balloon-pos][data-balloon-length=large]:after{width:260px}[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:380px}@media screen and (max-width: 768px){[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after{width:90vw}}[aria-label][data-balloon-pos][data-balloon-length=fit]:after{width:100%}.vp-back-to-top-button{border-width:0;background:transparent;cursor:pointer;position:fixed!important;bottom:64px;inset-inline-end:1rem;z-index:100;width:48px;height:48px;padding:8px;border-radius:50%;background:var(--vp-bg);color:var(--vp-tc);box-shadow:2px 2px 10px 4px var(--card-shadow);transition:background var(--vp-ct),color var(--vp-ct),box-shadow var(--vp-ct)}@media (max-width: 719px){.vp-back-to-top-button{width:36px;height:36px}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--vp-tcl)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:100%;border-radius:50%;fill:currentcolor}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}@media (max-width: 719px){.vp-scroll-progress{width:40px;height:40px}}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;fill:none;stroke:var(--vp-tc);transform:rotate(-90deg);transform-origin:50% 50%;r:22;stroke-dasharray:0% 314.1593%;stroke-width:3px}@media (max-width: 719px){.vp-scroll-progress circle{r:18}}.fade-enter-active,.fade-leave-active{transition:opacity var(--vp-ct)}.fade-enter-from,.fade-leave-to{opacity:0}@media screen{.sr-only{position:absolute;overflow:hidden;clip:rect 0,0,0,0;width:1px;height:1px;margin:-1px;padding:0;border:0}}@media print{.sr-only{display:none}}.vp-catalog-wrapper{margin-top:8px;margin-bottom:8px}.vp-catalog-wrapper.index ol{padding-inline-start:0}.vp-catalog-wrapper.index li{list-style-type:none}.vp-catalog-wrapper.index .vp-catalogs{padding-inline-start:0}.vp-catalog-wrapper.index .vp-catalog{list-style-type:none}.vp-catalog-wrapper.index .vp-catalog-title:before{content:"§" counter(catalog-item,upper-roman) " "}.vp-catalog-wrapper.index .vp-child-catalogs{counter-reset:child-catalog}.vp-catalog-wrapper.index .vp-child-catalog{counter-increment:child-catalog}.vp-catalog-wrapper.index .vp-child-catalog .vp-catalog-title:before{content:counter(catalog-item) "." counter(child-catalog) " "}.vp-catalog-wrapper.index .vp-sub-catalogs{padding-inline-start:.5rem}.vp-catalogs{margin:0;counter-reset:catalog-item}.vp-catalogs.deep{padding-inline-start:0}.vp-catalogs.deep .vp-catalog{list-style-type:none}.vp-catalogs .font-icon{vertical-align:baseline;margin-inline-end:.25rem}.vp-catalog{counter-increment:catalog-item}.vp-catalog-main-title{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));margin-bottom:.5rem;padding-top:var(--navbar-height, 3.6rem);font-weight:500;font-size:1.75rem}.vp-catalog-main-title:first-child{margin-bottom:.5rem!important}.vp-catalog-main-title:only-child{margin-bottom:0!important}.vp-catalog-child-title.has-children{margin-top:calc(.5rem - var(--navbar-height, 3.6rem));margin-bottom:.5rem;padding-top:var(--navbar-height, 3.6rem);border-bottom:1px solid var(--vp-brc);font-weight:500;font-size:1.3rem;transition:border-color var(--vp-ct)}.vp-catalog-child-title.has-children:first-child{margin-bottom:.5rem!important}.vp-catalog-child-title.has-children:only-child{margin-bottom:0!important}.vp-catalog-sub-title{font-weight:500;font-size:1.1rem}.vp-catalog-sub-title:only-child{margin-bottom:0!important}.vp-catalog-title{color:inherit;text-decoration:none}.vp-catalog-title:hover{color:var(--vp-tc)}.vp-child-catalogs{margin:0}.vp-child-catalog{list-style-type:disc}.vp-sub-catalogs{counter-reset:sub-catalog}.vp-sub-catalog{counter-increment:sub-catalog}.vp-sub-catalog .vp-link:before{content:counter(catalog-item) "." counter(child-catalog) "." counter(sub-catalog) " "}.vp-sub-catalogs-wrapper{display:flex;flex-wrap:wrap}.vp-sub-catalog-link{display:inline-block;margin:4px 8px;padding:4px 8px;border-radius:6px;background-color:var(--vp-bgl);line-height:1.5;overflow-wrap:break-word;transition:background-color var(--vp-ct),color var(--vp-ct)}.vp-sub-catalog-link:hover{background-color:var(--vp-tcl);color:var(--vp-bg);text-decoration:none!important}.vp-empty-catalog{font-size:1.25rem;text-align:center}:root{--external-link-icon-color: #aaa}.external-link-icon{position:relative;display:inline-block;color:var(--external-link-icon-color);vertical-align:middle;top:-1px}@media print{.external-link-icon{display:none}}.external-link-icon-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}:root{--nprogress-color: #29d;--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{background:var(--nprogress-color);position:fixed;z-index:var(--nprogress-z-index);top:0;left:0;width:100%;height:2px}:root{--copy-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--copied-icon: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}div[class*=language-]>button.copy-code-button{border-width:0;background:transparent;position:absolute;outline:none;cursor:pointer}@media print{div[class*=language-]>button.copy-code-button{display:none}}div[class*=language-]>button.copy-code-button .copy-icon{background:currentcolor;-webkit-mask-image:var(--copy-icon);mask-image:var(--copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:1em;mask-size:1em}div[class*=language-]>button.copy-code-button:not(.fancy){border-width:0;background:transparent;cursor:pointer;position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-radius:.5rem;opacity:0;transition:opacity .4s}div[class*=language-]>button.copy-code-button:not(.fancy):hover,div[class*=language-]>button.copy-code-button:not(.fancy).copied{background:var(--code-hl-bg-color, rgba(0, 0, 0, .66))}div[class*=language-]>button.copy-code-button:not(.fancy):focus,div[class*=language-]>button.copy-code-button:not(.fancy).copied{opacity:1}div[class*=language-]>button.copy-code-button:not(.fancy).copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--code-hl-bg-color, rgba(0, 0, 0, .66));color:var(--code-ln-color, #9e9e9e);font-weight:500;line-height:1.25rem;white-space:nowrap}div[class*=language-]>button.copy-code-button:not(.fancy) .copy-icon{width:1.25rem;height:1.25rem;padding:.625rem;color:var(--code-ln-color, #9e9e9e);font-size:1.25rem}div[class*=language-]>button.copy-code-button.fancy{right:-14px;bottom:-14px;z-index:5;width:2rem;height:2rem;padding:7px 8px;border-radius:50%;background:#339af0;color:#fff}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy{right:0;bottom:0;width:28px;height:28px;border-radius:50% 10% 0}}div[class*=language-]>button.copy-code-button.fancy:hover{background:#228be6}div[class*=language-]>button.copy-code-button.fancy .copy-icon{width:100%;height:100%;color:#fff;font-size:1.25rem}@media (max-width: 419px){div[class*=language-]>button.copy-code-button.fancy .copy-icon{position:relative;top:2px;left:2px}}div[class*=language-]>button.copy-code-button.copied .copy-icon{-webkit-mask-image:var(--copied-icon);mask-image:var(--copied-icon)}div[class*=language-]:hover:before{display:none}div[class*=language-]:hover>button.copy-code-button:not(.fancy){opacity:1}:root{--important-title-color: #230555;--important-bg-color: #f4eefe;--important-border-color: #a371f7;--important-code-bg-color: rgb(163 113 247 / 10%);--info-title-color: #193c47;--info-bg-color: #eef9fd;--info-border-color: #4cb3d4;--info-code-bg-color: rgb(76 179 212 / 10%);--note-title-color: #474748;--note-bg-color: #fdfdfe;--note-border-color: #ccc;--note-code-bg-color: rgb(212 213 216 / 20%);--tip-title-color: #003100;--tip-bg-color: #e6f6e6;--tip-border-color: #009400;--tip-code-bg-color: rgb(0 148 0 / 15%);--warning-title-color: #4d3800;--warning-bg-color: #fff8e6;--warning-border-color: #e6a700;--warning-code-bg-color: rgb(230 167 0 / 15%);--caution-title-color: #4b1113;--caution-bg-color: #ffebec;--caution-border-color: #e13238;--caution-code-bg-color: rgb(225 50 56 / 15%);--detail-bg-color: #eee;--detail-text-color: inherit;--detail-code-bg-color: rgb(127 127 127 / 15%)}html[data-theme=dark]{--important-title-color: #f4eefe;--important-bg-color: #230555;--info-title-color: #eef9fd;--info-bg-color: #193c47;--note-title-color: #fdfdfe;--note-bg-color: #474748;--tip-title-color: #e6f6e6;--tip-bg-color: #003100;--warning-title-color: #fff8e6;--warning-bg-color: #4d3800;--caution-title-color: #ffebec;--caution-bg-color: #4b1113;--detail-bg-color: #333;--detail-text-color: #a8a8a8}.hint-container{position:relative;transition:background var(--vp-ct),border-color var(--vp-ct),color var(--vp-ct)}@media print{.hint-container{page-break-inside:avoid}}.hint-container .hint-container-title{position:relative;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin:1rem 0;padding:.25rem 1rem;border-inline-start-width:.3rem;border-inline-start-style:solid;border-radius:.5rem;color:inherit}@media (max-width: 419px){.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-inline:-.75rem}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75rem}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;top:calc(50% - .6125em);inset-inline-start:0;width:1.25em;height:1.25em;background-position:left;background-repeat:no-repeat}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-tc)}.hint-container.important{border-color:var(--important-border-color);background:var(--important-bg-color)}.hint-container.important>.hint-container-title{color:var(--important-title-color)}.hint-container.important>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z' fill='%23a371f7'/%3E%3C/svg%3E")}.hint-container.important code{background:var(--important-code-bg-color)}.hint-container.info{border-color:var(--info-border-color);background:var(--info-bg-color)}.hint-container.info>.hint-container-title{color:var(--info-title-color)}.hint-container.info>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%234cb3d4'/%3E%3C/svg%3E")}.hint-container.info code{background:var(--info-code-bg-color)}.hint-container.note{border-color:var(--note-border-color);background:var(--note-bg-color)}.hint-container.note>.hint-container-title{color:var(--note-title-color)}.hint-container.note>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%23ccc'/%3E%3C/svg%3E")}.hint-container.note code{background:var(--note-code-bg-color)}.hint-container.tip{border-color:var(--tip-border-color);background:var(--tip-bg-color)}.hint-container.tip>.hint-container-title{color:var(--tip-title-color)}.hint-container.tip>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23009400' d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E")}.hint-container.tip code{background:var(--tip-code-bg-color)}.hint-container.warning{border-color:var(--warning-border-color);background:var(--warning-bg-color)}.hint-container.warning>.hint-container-title{color:var(--warning-title-color)}.hint-container.warning>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z' fill='%23e6a700'/%3E%3C/svg%3E")}.hint-container.warning code{background:var(--warning-code-bg-color)}.hint-container.caution{border-color:var(--caution-border-color);background:var(--caution-bg-color)}.hint-container.caution>.hint-container-title{color:var(--caution-title-color)}.hint-container.caution>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E")}.hint-container.caution code{background:var(--caution-code-bg-color)}.hint-container.details{position:relative;display:block;margin:1rem 0;padding:1.5rem;border-radius:.5rem;background:var(--detail-bg-color);color:var(--detail-text-color);transition:background var(--vp-tt),color var(--vp-tt)}@media (max-width: 419px){.hint-container.details{margin-inline:-.75rem}}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-tc)}.hint-container.details code{background:var(--detail-code-bg-color)}.hint-container.details summary{position:relative;margin:-1.5rem;padding-block:1.5rem;padding-inline:4rem 1.5rem;list-style:none;cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:transparent;font-size:0}.hint-container.details summary:before,.hint-container.details summary:after{content:" ";position:absolute;top:calc(50% - .75rem);inset-inline-start:1.5rem;width:1.5rem;height:1.5rem}.hint-container.details summary:before{border-radius:50%;background:#ccc;transition:background var(--vp-ct),transform var(--vp-tt)}html[data-theme=dark] .hint-container.details summary:before{background:#555}.hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:transform var(--vp-tt);transform:rotate(90deg)}html[data-theme=dark] .hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:after{transform:rotate(180deg)}.theme-hope-content figure{position:relative;display:flex;flex-direction:column;width:auto;margin:1rem auto;text-align:center;transition:transform var(--vp-tt)}.theme-hope-content figure img{overflow:hidden;margin:0 auto;border-radius:8px}.theme-hope-content figure img[tabindex]:hover,.theme-hope-content figure img[tabindex]:focus{box-shadow:2px 2px 10px 0 var(--card-shadow)}@media print{.theme-hope-content figure>a[href^="http://"]:after,.theme-hope-content figure>a[href^="https://"]:after{content:""}}.theme-hope-content figure>a .external-link-icon{display:none}.theme-hope-content figure figcaption{display:inline-block;margin:6px auto;font-size:.8rem}.footnote-item{margin-top:calc(0rem - var(--navbar-height, 3.6rem));padding-top:calc(var(--navbar-height, 3.6rem) + .5rem)}.footnote-item>p{margin-bottom:0}.footnote-ref{position:relative}.footnote-anchor{position:absolute;top:calc(-.5rem - var(--navbar-height, 3.6rem))}.mermaid-preview .node rect,.mermaid-preview .clusters rect,.mermaid-preview rect.note,.mermaid-preview .actor,.mermaid-wrapper .node rect,.mermaid-wrapper .clusters rect,.mermaid-wrapper rect.note,.mermaid-wrapper .actor{rx:8;ry:8}.mermaid-wrapper{position:relative;overflow-x:auto;padding:.6em .4em;text-align:center;transition:all 1s}@media (max-width: 419px){.mermaid-wrapper{margin:0 -1.5rem;padding:.6em 0}}.mermaid-loading{color:var(--vp-tc)}@media print{.mermaid-content{page-break-inside:avoid}}.mermaid-actions{text-align:end}@media print{.mermaid-actions{display:none}}.mermaid-preview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:800;display:flex;align-items:center;justify-content:center;background-color:#fffc}html[data-theme=dark] .mermaid-preview{background-color:#000c}.mermaid-preview svg{max-width:100%;max-height:100%}.preview-button,.download-button{border-width:0;background:transparent;cursor:pointer;width:2rem;height:2rem;padding:.25rem;color:var(--dark-grey)}@media (max-width: 719px){.preview-button,.download-button{width:1.5rem;height:1.5rem}}.preview-button:hover,.download-button:hover{color:var(--vp-tc)}.preview-button svg,.download-button svg{width:100%;height:100%}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-UIXRTGNW.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-zJvWDgGp.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-0YIAJWTb.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-6vyEfazt.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-RIlxi71x.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-AE18XbF9.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-4uo0fsfh.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-k0QPq0y-.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-MF_e1AYw.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-i-oP291Y.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-bAz-dThZ.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-XZxETTVq.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-k2IhepQP.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-8XXOHEfX.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-gf8Lq3rE.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-sffOiHVw.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-CZtwCMuf.woff) format("woff"),url(/assets/KaTeX_Main-Bold-MGqDlVzd.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-8QydwDku.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-EqUi0SPe.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-88TzJhul.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-DVgO3ulm.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-TCzgZvdR.woff) format("woff"),url(/assets/KaTeX_Main-Italic-N1npxqDf.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-dtjb4qKe.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-6_eCWgYQ.woff) format("woff"),url(/assets/KaTeX_Main-Regular-MqWbzbVV.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-mZ7zbAmZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-ImPtsMme.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-d10o37uD.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-LedwBEzP.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-wNP_z16f.woff) format("woff"),url(/assets/KaTeX_Math-Italic-H5Tq_9FA.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-9bFEtBg9.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-2yISjogg.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-hTHqZ76u.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-tx9FahgZ.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-Azdo-3Wm.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-GGIydc0p.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-wwQp5Se8.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-kun6lKiW.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-TaO4USHJ.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-98CFnxev.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular--ckFYqpa.woff) format("woff"),url(/assets/KaTeX_Script-Regular-uSZBlqPg.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-Jgg_JgPA.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-tfebZ-uE.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-27J7nvyK.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-8uHcfdJu.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-KA9bXP1N.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-e4ClFoQr.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-k6uTKqBB.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-4KV7NJM_.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-5eZcWcVX.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-RfuIJGSk.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-1hQb9ONy.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-juq-IZ9c.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-tMUvZjwd.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-9yG-_x36.ttf) format("truetype")}.katex{text-rendering:auto;font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.9"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.katex{font-size:1.05em;direction:ltr}.katex-display{overflow:auto hidden;-webkit-overflow-scrolling:touch;padding-top:.2em;padding-bottom:.2em}.katex-display::-webkit-scrollbar{height:3px}.katex-display .katex{font-size:1.21em}.katex-error{color:red}/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}.photo-swipe-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.photo-swipe-bullets-indicator{position:absolute;bottom:30px;left:50%;display:flex;flex-direction:row;align-items:center;transform:translate(-50%)}.photo-swipe-bullet{width:12px;height:6px;margin:0 5px;border-radius:3px;background:#fff;transition:width var(--vp-tt),color var(--vp-ct)}.photo-swipe-bullet.active{width:30px;background:var(--vp-tc)}@keyframes message-move-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes message-move-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}#message-container{position:fixed;inset:calc(var(--navbar-height, 3.6rem) + 1rem) 0 auto;z-index:75;text-align:center}#message-container .message{display:inline-block;padding:8px 10px;border-radius:3px;background:var(--vp-bg);color:var(--vp-c);box-shadow:0 0 10px 0 var(--box-shadow, #f0f1f2);font-size:14px}#message-container .message.move-in{animation:message-move-in .3s ease-in-out}#message-container .message.move-out{animation:message-move-out .3s ease-in-out;animation-fill-mode:forwards}#message-container .message svg{position:relative;bottom:-.125em;margin-inline-end:5px}.vp-article-wrapper{position:relative;box-sizing:border-box;width:100%;margin:0 auto 1.25rem;text-align:start;overflow-wrap:break-word}@media (max-width: 959px){.vp-article-wrapper{margin:0 auto 1rem}}.vp-article-wrapper:last-child{margin-bottom:0}.vp-article-item{display:block;padding:.75rem 1.25rem;border-radius:.4rem;background:var(--bg-color-float);color:inherit;box-shadow:0 1px 3px 1px var(--card-shadow);transition:background var(--color-transition),box-shadow var(--color-transition)}@media (max-width: 959px){.vp-article-item{padding:.75rem 1rem}}@media (max-width: 419px){.vp-article-item{border-radius:0}}.vp-article-item:hover{box-shadow:0 2px 6px 2px var(--card-shadow)}.vp-article-item .sticky-icon{position:absolute;top:0;inset-inline-end:0;width:1.5rem;height:1.5rem;color:var(--theme-color)}.vp-article-item .page-info>span{display:flex;flex-shrink:0;align-items:center;margin-inline-end:.5em;line-height:1.8}.vp-article-item .page-info>span:after{--balloon-font-size: 8px;padding:.3em .6em!important}.vp-article-hr{margin-block:.375em .375em}.vp-article-title{position:relative;display:inline-block;color:var(--text-color);font-size:1.25rem;font-family:var(--font-family-heading);line-height:1.6;cursor:pointer}.vp-article-title:after{content:"";position:absolute;inset:auto 0 0;height:2px;background:var(--theme-color);visibility:hidden;transition:transform .3s ease-in-out;transform:scaleX(0)}.vp-article-title:hover{cursor:pointer}.vp-article-title:hover:after{visibility:visible;transform:scaleX(1)}.vp-article-title a{color:inherit;font-weight:600}.vp-article-title .lock-icon,.vp-article-title .slides-icon{position:relative;bottom:-.125em;display:inline-block;vertical-align:baseline;width:1em;height:1em;margin-inline-end:.25em;color:var(--theme-color)}.vp-article-title>span{word-break:break-word}.vp-article-cover{width:calc(100% + 2.5rem);margin:-.75rem -1.25rem .75rem;border-top-left-radius:.4rem;border-top-right-radius:.4rem}@media (max-width: 959px){.vp-article-cover{width:calc(100% + 2rem);margin:-.75rem -1rem .75rem}}@media (max-width: 419px){.vp-article-cover{border-radius:0}}.vp-article-excerpt{overflow:hidden;line-height:1.6;cursor:default}@media (max-width: 959px){.vp-article-excerpt{font-size:15px}}@media (max-width: 419px){.vp-article-excerpt{font-size:14px}}.vp-article-excerpt h1{display:none}.vp-article-excerpt h2{font-size:1.4em}.vp-article-excerpt h3{font-size:1.2em}.vp-article-excerpt h1,.vp-article-excerpt h2,.vp-article-excerpt h3,.vp-article-excerpt h4,.vp-article-excerpt h5,.vp-article-excerpt h6{margin-top:.5em;margin-bottom:.5em}.vp-article-excerpt h1+p{margin-top:.5em}.vp-article-excerpt p:first-child{margin-top:.5em}.vp-article-excerpt p:last-child{margin-bottom:.5em}.vp-article-excerpt div[class*=language-]{overflow:auto hidden}.vp-article-excerpt div[class*=language-] pre{margin:.85rem 0;line-height:1.375}.vp-article-excerpt div[class*=language-] pre code{padding:0;background:transparent}.vp-article-excerpt div[class*=language-].line-numbers-mode .line-numbers{padding:.85rem 0}.vp-article-excerpt .code-demo-wrapper,.vp-article-excerpt .external-link-icon,.vp-article-excerpt .footnote-anchor{display:none}.vp-article-excerpt section.footnotes{display:none}.vp-article-excerpt img{max-width:100%}.vp-article-excerpt figure{display:flex;flex-direction:column;width:auto;margin:1rem auto;text-align:center;transition:transform var(--transform-transition)}.vp-article-excerpt figure img{overflow:hidden;margin:0 auto;border-radius:8px}.vp-article-excerpt figure figcaption{display:inline-block;margin:6px auto;font-size:.8rem}.vp-article-excerpt figure figcaption:only-child{display:none}.vp-article-list{margin-top:calc(-.5rem - var(--navbar-height));padding-top:calc(var(--navbar-height) + .5rem);text-align:center}.vp-article-list:first-child{margin-top:calc(0rem - var(--navbar-height))}.vp-article-list .empty{max-width:560px;margin:0 auto;text-align:center}.vp-article-type-wrapper{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;padding-inline-start:0;list-style:none;font-weight:600;font-size:18px}@media (max-width: 419px){.vp-article-type-wrapper{font-size:16px}}.vp-article-type{position:relative;vertical-align:middle;margin:.3em .8em;line-height:1.2;cursor:pointer}.vp-article-type:after{content:" ";position:absolute;inset:auto 50% -6px;height:2px;border-radius:1px;background:var(--theme-color);visibility:hidden;transition:inset .2s ease-in-out}.vp-article-type a{display:inline-block;color:inherit;transition:all .3s ease-in-out}.vp-article-type.active{position:relative}.vp-article-type.active a{color:var(--theme-color);transform:scale(1.1)}.vp-article-type:hover:after,.vp-article-type.active:after{inset:auto calc(50% - 8px) -6px;visibility:visible}.vp-blog-hero{position:relative;display:flex;flex-direction:column;justify-content:center;height:450px;margin-bottom:1rem;color:#eee;font-family:var(--font-family-heading)}@media (max-width: 719px){.vp-blog-hero{height:350px}}@media (max-width: 419px){.vp-blog-hero{margin:0 0 1rem}}.vp-blog-hero.no-bg{color:var(--text-color)}.vp-blog-hero>:not(.vp-blog-mask){position:relative;z-index:2}.vp-blog-hero .slide-down-button{border-width:0;background:transparent;cursor:pointer;position:absolute;bottom:0;left:calc(50vw - 30px);display:none;width:60px;height:60px;padding:10px}.vp-blog-hero .slide-down-button .icon{width:30px;margin:-15px 0;animation-name:bounce-down;animation-duration:1.5s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate}.vp-blog-hero .slide-down-button .icon:first-child{color:#ffffff26}.vp-blog-hero .slide-down-button .icon:nth-child(2){color:#ffffff80}.vp-blog-hero.fullscreen{height:calc(100vh - var(--navbar-height))!important}.vp-blog-hero.fullscreen .vp-blog-mask{background-position-y:top!important}.vp-blog-hero.fullscreen .slide-down-button{display:block}.vp-blog-mask{position:absolute;top:0;right:0;bottom:0;left:0}.vp-blog-mask:after{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block;background:var(--light-grey);opacity:.2}.vp-blog-mask.light{display:block}html[data-theme=dark] .vp-blog-mask.light,.vp-blog-mask.dark{display:none}html[data-theme=dark] .vp-blog-mask.dark{display:block}.vp-blog-hero-title{margin:.5rem auto;font-weight:700;font-size:2rem}@media (min-width: 1440px){.vp-blog-hero-title{font-size:2.25rem}}@media (max-width: 719px){.vp-blog-hero-title{font-size:1.75rem}}.vp-blog-hero-image{display:block;max-width:100%;max-height:15rem;margin:1.5rem auto}@media (max-width: 719px){.vp-blog-hero-image{max-height:12rem}}.vp-blog-hero-image.light{display:block}html[data-theme=dark] .vp-blog-hero-image.light,.vp-blog-hero-image.dark{display:none}html[data-theme=dark] .vp-blog-hero-image.dark{display:block}.vp-blog-hero-image+.vp-blog-hero-title{margin:0 auto}.vp-blog-hero-description{margin:1.2rem auto 0;font-size:1.5rem}@media (max-width: 719px){.vp-blog-hero-description{font-size:1.25rem}}@keyframes bounce-down{0%{transform:translateY(-5px)}to{transform:translateY(5px)}}.vp-blogger-info{padding:.5rem;font-family:var(--font-family-heading);overflow-wrap:break-word}.vp-page .vp-blogger-info{background:var(--bg-color-float);transition:background var(--color-transition)}.vp-sidebar .vp-blogger-info.mobile{display:none}@media (max-width: 719px){.vp-sidebar .vp-blogger-info.mobile{display:block}}.vp-sidebar .vp-blogger-info.mobile+hr{display:none}@media (max-width: 719px){.vp-sidebar .vp-blogger-info.mobile+hr{display:block;margin-top:1rem}}.vp-blogger{padding:.5rem;text-align:center}.vp-blogger-avatar{width:8rem;height:8rem;margin:0 auto}.vp-blogger-avatar.round{border-radius:50%}.vp-blogger-name{margin:1rem auto;font-size:22px}.vp-blogger-description{margin:1rem auto;font-size:14px}.vp-blog-counts{display:flex;width:80%;margin:0 auto 1rem}.vp-blog-count{display:block;width:25%;color:inherit;font-size:13px;text-align:center;cursor:pointer;transition:color var(--color-transition)}.vp-blog-count:hover{color:var(--theme-color)}.vp-blog-count .count{position:relative;margin-bottom:.5rem;font-weight:600;font-size:20px}.vp-category-list{position:relative;z-index:2;padding-inline-start:0;list-style:none;font-size:14px}.vp-category{display:inline-block;vertical-align:middle;overflow:hidden;margin:.3rem .6rem .8rem;padding:.4rem .8rem;border-radius:.25rem;color:var(--dark-grey);box-shadow:0 1px 4px 0 var(--card-shadow);word-break:break-word;cursor:pointer;transition:background var(--color-transition),color var(--color-transition)}@media (max-width: 419px){.vp-category{font-size:.9rem}}.vp-category a{color:inherit}.vp-category .count{display:inline-block;min-width:1rem;height:1.2rem;margin-inline-start:.2em;padding:0 .1rem;border-radius:.6rem;color:var(--white);font-size:.7rem;line-height:1.2rem;text-align:center}.vp-category0{background:#fde5e7;color:#ba111f}html[data-theme=dark] .vp-category0{background:#340509;color:#ec2f3e}.vp-category0:hover{background:#f9bec3}html[data-theme=dark] .vp-category0:hover{background:#53080e}.vp-category0.active{background:#cf1322;color:#fff}html[data-theme=dark] .vp-category0.active{background:#a60f1b;color:var(--bg-color)}.vp-category0.active .count{background:var(--bg-color);color:#cf1322}.vp-category0 .count{background:#cf1322}.vp-category1{background:#ffeee8;color:#f54205}html[data-theme=dark] .vp-category1{background:#441201;color:#fb7649}.vp-category1:hover{background:#fed4c6}html[data-theme=dark] .vp-category1:hover{background:#6d1d02}.vp-category1.active{background:#fa541c;color:#fff}html[data-theme=dark] .vp-category1.active{background:#da3a05;color:var(--bg-color)}.vp-category1.active .count{background:var(--bg-color);color:#fa541c}.vp-category1 .count{background:#fa541c}.vp-category2{background:#fef5e7;color:#e08e0b}html[data-theme=dark] .vp-category2{background:#3e2703;color:#f5b041}.vp-category2:hover{background:#fce6c4}html[data-theme=dark] .vp-category2:hover{background:#633f05}.vp-category2.active{background:#f39c12;color:#fff}html[data-theme=dark] .vp-category2.active{background:#c77e0a;color:var(--bg-color)}.vp-category2.active .count{background:var(--bg-color);color:#f39c12}.vp-category2 .count{background:#f39c12}.vp-category3{background:#eafaf1;color:#29b866}html[data-theme=dark] .vp-category3{background:#0c331c;color:#55d98d}.vp-category3:hover{background:#caf3db}html[data-theme=dark] .vp-category3:hover{background:#12522d}.vp-category3.active{background:#2ecc71;color:#fff}html[data-theme=dark] .vp-category3.active{background:#25a35a;color:var(--bg-color)}.vp-category3.active .count{background:var(--bg-color);color:#2ecc71}.vp-category3 .count{background:#2ecc71}.vp-category4{background:#e6f9ee;color:#219552}html[data-theme=dark] .vp-category4{background:#092917;color:#36d278}.vp-category4:hover{background:#c0f1d5}html[data-theme=dark] .vp-category4:hover{background:#0f4224}.vp-category4.active{background:#25a55b;color:#fff}html[data-theme=dark] .vp-category4.active{background:#1e8449;color:var(--bg-color)}.vp-category4.active .count{background:var(--bg-color);color:#25a55b}.vp-category4 .count{background:#25a55b}.vp-category5{background:#e1fcfc;color:#0e9595}html[data-theme=dark] .vp-category5{background:#042929;color:#16e1e1}.vp-category5:hover{background:#b4f8f8}html[data-theme=dark] .vp-category5:hover{background:#064242}.vp-category5.active{background:#10a5a5;color:#fff}html[data-theme=dark] .vp-category5.active{background:#0d8484;color:var(--bg-color)}.vp-category5.active .count{background:var(--bg-color);color:#10a5a5}.vp-category5 .count{background:#10a5a5}.vp-category6{background:#e4f0fe;color:#0862c3}html[data-theme=dark] .vp-category6{background:#021b36;color:#2589f6}.vp-category6:hover{background:#bbdafc}html[data-theme=dark] .vp-category6:hover{background:#042c57}.vp-category6.active{background:#096dd9;color:#fff}html[data-theme=dark] .vp-category6.active{background:#0757ae;color:var(--bg-color)}.vp-category6.active .count{background:var(--bg-color);color:#096dd9}.vp-category6 .count{background:#096dd9}.vp-category7{background:#f7f1fd;color:#9851e4}html[data-theme=dark] .vp-category7{background:#2a0b4b;color:#bb8ced}.vp-category7:hover{background:#eadbfa}html[data-theme=dark] .vp-category7:hover{background:#431277}.vp-category7.active{background:#aa6fe9;color:#fff}html[data-theme=dark] .vp-category7.active{background:#8733e0;color:var(--bg-color)}.vp-category7.active .count{background:var(--bg-color);color:#aa6fe9}.vp-category7 .count{background:#aa6fe9}.vp-category8{background:#fdeaf5;color:#e81689}html[data-theme=dark] .vp-category8{background:#400626;color:#ef59ab}.vp-category8:hover{background:#facbe5}html[data-theme=dark] .vp-category8:hover{background:#670a3d}.vp-category8.active{background:#eb2f96;color:#fff}html[data-theme=dark] .vp-category8.active{background:#ce147a;color:var(--bg-color)}.vp-category8.active .count{background:var(--bg-color);color:#eb2f96}.vp-category8 .count{background:#eb2f96}html[data-theme=dark] .empty-icon g.people{opacity:.8}html[data-theme=dark] .empty-icon g:not(.people){filter:invert(80%)}.vp-page.vp-blog .vp-blog-home{flex:1;width:0;max-width:780px}.vp-page.vp-blog .theme-hope-content:empty{padding:0}.vp-blog-infos{margin:8px auto;padding:8px 16px}.vp-page .vp-blog-infos{border-radius:6px;background:var(--bg-color-float);box-shadow:0 1px 3px 1px var(--card-shadow);transition:background var(--color-transition),box-shadow var(--color-transition)}.vp-page .vp-blog-infos:hover{box-shadow:0 2px 6px 2px var(--card-shadow)}.vp-blog-infos .timeline-list-wrapper .content{max-height:60vh}.vp-blog-type-switcher{display:flex;justify-content:center;margin-bottom:8px}.vp-blog-type-button{border-width:0;background:transparent;cursor:pointer;width:44px;height:44px;margin:0 8px;padding:4px;color:var(--grey3);transition:color var(--color-transition)}.vp-blog-type-button:focus{outline:none}.vp-blog-type-button .icon-wrapper{width:20px;height:20px;padding:8px;border-radius:50%;background:rgba(127,127,127,.15);transition:background var(--color-transition)}html[data-theme=dark] .vp-blog-type-button .icon-wrapper{background:rgba(255,255,255,.15)}.vp-blog-type-button .icon-wrapper:hover{cursor:pointer}.vp-blog-type-button .icon-wrapper.active{background:var(--theme-color-light)}html[data-theme=dark] .vp-blog-type-button .icon-wrapper.active{background:var(--theme-color-dark)}.vp-blog-type-button .icon{width:100%;height:100%}.vp-sidebar.hide-icon .vp-blog-type-button .icon{display:block!important}.vp-star-article-wrapper,.vp-category-wrapper,.vp-tag-wrapper{padding:8px 0}.vp-star-article-wrapper .title,.vp-category-wrapper .title,.vp-tag-wrapper .title{cursor:pointer}.vp-star-article-wrapper .title .icon,.vp-category-wrapper .title .icon,.vp-tag-wrapper .title .icon{position:relative;bottom:-.125rem;width:16px;height:16px;margin:0 6px}.vp-star-article-wrapper .title .num,.vp-category-wrapper .title .num,.vp-tag-wrapper .title .num{position:relative;margin:0 2px;font-size:22px;font-family:var(--font-family-heading)}.vp-star-articles{overflow-y:auto;max-height:80vh;margin:8px auto;line-height:1.5}.vp-star-article{padding:12px 8px 4px;border-bottom:1px dashed var(--grey);transition:border-color var(--color-transition),color var(--color-transition)}.vp-star-article a{color:inherit}.vp-star-article:hover{cursor:pointer}.vp-star-article:hover a{color:var(--theme-color)}.vp-category-wrapper .category-list-wrapper,.vp-tag-wrapper .tag-list-wrapper{overflow-y:auto;max-height:80vh;margin:8px auto}.vp-sidebar .vp-blog-info-wrapper .vp-blogger-info{display:none}.vp-page .vp-blog-info-wrapper{position:sticky;top:calc(var(--navbar-height) + .75rem);flex:0 0 300px;box-sizing:border-box;width:300px;height:auto;margin-top:.75rem;margin-bottom:.75rem;margin-inline-start:1rem;transition:all .3s}@media (max-width: 719px){.vp-page .vp-blog-info-wrapper{display:none}}.vp-page .vp-blog-info-wrapper .vp-blogger-info{margin-bottom:16px;padding:8px 0;border-radius:8px;box-shadow:0 1px 3px 1px var(--card-shadow)}.vp-page .vp-blog-info-wrapper .vp-blogger-info:hover{box-shadow:0 2px 6px 2px var(--card-shadow)}.theme-container .vp-page.vp-blog{display:flex;flex-direction:column;justify-content:space-between;box-sizing:border-box;padding-top:var(--navbar-height);padding-bottom:2rem;background:var(--bg-color-back);transition:background var(--color-transition)}@media (min-width: 1440px){.theme-container.has-toc .vp-page.vp-blog{padding-inline-end:0}}.blog-page-wrapper{display:flex;align-items:flex-start;justify-content:center;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2rem}@media (max-width: 959px){.blog-page-wrapper{padding:0 1rem}}@media (max-width: 419px){.blog-page-wrapper{padding:0}}.vp-blog-main{flex:1;width:0;max-width:780px}.vp-pagination{margin:1.25rem 0 .75rem;font-weight:600;font-size:15px;line-height:2}.vp-pagination-list{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vp-pagination-number{display:flex;align-items:stretch;overflow:hidden;height:30px;margin:0 .5rem;border:1px solid var(--border-color);border-radius:.25rem}.vp-pagination-number div{position:relative;padding:0 .5rem;background:var(--bg-color);color:var(--theme-color);cursor:pointer}.vp-pagination-number div:before{content:" ";position:absolute;top:0;bottom:0;inset-inline-start:0;width:1px;background:var(--border-color)}.vp-pagination-number div:first-child:before{background:transparent}.vp-pagination-number div:hover{color:var(--theme-color-light)}.vp-pagination-number div.active{background:var(--theme-color);color:var(--white)}.vp-pagination-number div.active:before{background:var(--theme-color)}.vp-pagination-number div.active+div:before{background:var(--theme-color)}.vp-pagination-number div.prev,.vp-pagination-number div.next{font-size:13px;line-height:30px}.vp-pagination-number div.active,.vp-pagination-number div.ellipsis{cursor:default}.vp-pagination-nav{display:flex;align-items:center;justify-content:center;margin:.5rem}.vp-pagination-nav input{width:3.5rem;margin:6px 5px;border:1px solid var(--border-color);border-radius:.25em;background:var(--bg-color);color:var(--text-color);outline:none;line-height:2;text-align:center}.vp-pagination-button{overflow:hidden;padding:0 .75em;border:1px solid var(--border-color);border-radius:.25em;background:var(--bg-color);color:var(--theme-color);outline:none;font-weight:600;font-size:15px;line-height:2;cursor:pointer}.vp-pagination-button:hover{color:var(--theme-color-light)}.vp-project-panel{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:stretch;place-content:stretch flex-start;margin-bottom:12px}.vp-project-panel:empty{margin-bottom:0}.vp-project-card{position:relative;width:calc(33% - 40px);margin:6px 8px;padding:12px;border-radius:8px;background:var(--bg-color-float);transition:background var(--color-transition),transform var(--transform-transition)}@media (max-width: 959px){.vp-project-card{width:calc(50% - 40px)}}@media (min-width: 1440px){.vp-project-card{width:calc(25% - 40px)}}.vp-project-card:hover{cursor:pointer;transform:scale(.98)}.vp-project-card .icon{position:relative;z-index:2;float:right;width:20px;height:20px}html[dir=rtl] .vp-project-card .icon{float:left}.vp-project-card.project0{background:#fde5e7}.vp-project-card.project0:hover{background:#f9bec3}html[data-theme=dark] .vp-project-card.project0{background:#340509}html[data-theme=dark] .vp-project-card.project0:hover{background:#53080e}.vp-project-card.project1{background:#ffeee8}.vp-project-card.project1:hover{background:#fed4c6}html[data-theme=dark] .vp-project-card.project1{background:#441201}html[data-theme=dark] .vp-project-card.project1:hover{background:#6d1d02}.vp-project-card.project2{background:#fef5e7}.vp-project-card.project2:hover{background:#fce6c4}html[data-theme=dark] .vp-project-card.project2{background:#3e2703}html[data-theme=dark] .vp-project-card.project2:hover{background:#633f05}.vp-project-card.project3{background:#eafaf1}.vp-project-card.project3:hover{background:#caf3db}html[data-theme=dark] .vp-project-card.project3{background:#0c331c}html[data-theme=dark] .vp-project-card.project3:hover{background:#12522d}.vp-project-card.project4{background:#e6f9ee}.vp-project-card.project4:hover{background:#c0f1d5}html[data-theme=dark] .vp-project-card.project4{background:#092917}html[data-theme=dark] .vp-project-card.project4:hover{background:#0f4224}.vp-project-card.project5{background:#e1fcfc}.vp-project-card.project5:hover{background:#b4f8f8}html[data-theme=dark] .vp-project-card.project5{background:#042929}html[data-theme=dark] .vp-project-card.project5:hover{background:#064242}.vp-project-card.project6{background:#e4f0fe}.vp-project-card.project6:hover{background:#bbdafc}html[data-theme=dark] .vp-project-card.project6{background:#021b36}html[data-theme=dark] .vp-project-card.project6:hover{background:#042c57}.vp-project-card.project7{background:#f7f1fd}.vp-project-card.project7:hover{background:#eadbfa}html[data-theme=dark] .vp-project-card.project7{background:#2a0b4b}html[data-theme=dark] .vp-project-card.project7:hover{background:#431277}.vp-project-card.project8{background:#fdeaf5}.vp-project-card.project8:hover{background:#facbe5}html[data-theme=dark] .vp-project-card.project8{background:#400626}html[data-theme=dark] .vp-project-card.project8:hover{background:#670a3d}.vp-project-name{position:relative;z-index:2;color:var(--grey3);font-weight:500;font-size:16px;transition:color var(--color-transition)}.vp-project-desc{position:relative;z-index:2;margin:6px 0;color:var(--dark-grey);font-size:13px}.vp-project-image{position:relative;z-index:2;float:right;width:40px;height:40px}html[dir=rtl] .vp-project-image{float:left}.vp-social-medias{display:flex;flex-wrap:wrap;justify-content:center;margin:8px auto}.vp-social-media{width:26px;height:26px;margin:4px;transition:transform .18s ease-out .18s;transform:scale(1)}.vp-social-media:hover{cursor:pointer;transform:scale(1.2)}.vp-social-media:after{--balloon-font-size: 8px;padding:.3em .6em}.vp-social-media .icon{width:100%;height:100%}.tag-list-wrapper{position:relative;z-index:2;display:flex;flex-wrap:wrap;justify-content:flex-start;padding-inline-start:0;list-style:none}.tag-list-wrapper a{color:inherit}.tag-list-wrapper .tag{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;min-width:24px;margin:4px 6px;padding:3px 8px;border-radius:8px;color:var(--white);box-shadow:0 1px 6px 0 var(--box-shadow);font-size:12px;text-align:center;word-break:break-word;cursor:pointer;transition:background var(--color-transition),box-shadow var(--color-transition),transform var(--color-transition)}.tag-list-wrapper .tag:hover{cursor:pointer}.tag-list-wrapper .tag.active{transform:scale(1.1)}.tag-list-wrapper .tag-num{margin-inline-start:.5em}.tag-list-wrapper .tag0{background:#e91526}.tag-list-wrapper .tag0:hover,.tag-list-wrapper .tag0.active,html[data-theme=dark] .tag-list-wrapper .tag0{background:#c51220}html[data-theme=dark] .tag-list-wrapper .tag0:hover,html[data-theme=dark] .tag-list-wrapper .tag0.active{background:#e91526}.tag-list-wrapper .tag1{background:#fb6533}.tag-list-wrapper .tag1:hover,.tag-list-wrapper .tag1.active,html[data-theme=dark] .tag-list-wrapper .tag1{background:#fa4a0e}html[data-theme=dark] .tag-list-wrapper .tag1:hover,html[data-theme=dark] .tag-list-wrapper .tag1.active{background:#fb6533}.tag-list-wrapper .tag2{background:#f4a62a}.tag-list-wrapper .tag2:hover,.tag-list-wrapper .tag2.active,html[data-theme=dark] .tag-list-wrapper .tag2{background:#ec950c}html[data-theme=dark] .tag-list-wrapper .tag2:hover,html[data-theme=dark] .tag-list-wrapper .tag2.active{background:#f4a62a}.tag-list-wrapper .tag3{background:#40d47f}.tag-list-wrapper .tag3:hover,.tag-list-wrapper .tag3.active,html[data-theme=dark] .tag-list-wrapper .tag3{background:#2cc26b}html[data-theme=dark] .tag-list-wrapper .tag3:hover,html[data-theme=dark] .tag-list-wrapper .tag3.active{background:#40d47f}.tag-list-wrapper .tag4{background:#2bbe69}.tag-list-wrapper .tag4:hover,.tag-list-wrapper .tag4.active,html[data-theme=dark] .tag-list-wrapper .tag4{background:#239d56}html[data-theme=dark] .tag-list-wrapper .tag4:hover,html[data-theme=dark] .tag-list-wrapper .tag4.active{background:#2bbe69}.tag-list-wrapper .tag5{background:#13c3c3}.tag-list-wrapper .tag5:hover,.tag-list-wrapper .tag5.active,html[data-theme=dark] .tag-list-wrapper .tag5{background:#0f9d9d}html[data-theme=dark] .tag-list-wrapper .tag5:hover,html[data-theme=dark] .tag-list-wrapper .tag5.active{background:#13c3c3}.tag-list-wrapper .tag6{background:#0a7bf4}.tag-list-wrapper .tag6:hover,.tag-list-wrapper .tag6.active,html[data-theme=dark] .tag-list-wrapper .tag6{background:#0968ce}html[data-theme=dark] .tag-list-wrapper .tag6:hover,html[data-theme=dark] .tag-list-wrapper .tag6.active{background:#0a7bf4}.tag-list-wrapper .tag7{background:#b37deb}.tag-list-wrapper .tag7:hover,.tag-list-wrapper .tag7.active,html[data-theme=dark] .tag-list-wrapper .tag7{background:#a160e7}html[data-theme=dark] .tag-list-wrapper .tag7:hover,html[data-theme=dark] .tag-list-wrapper .tag7.active{background:#b37deb}.tag-list-wrapper .tag8{background:#ed44a1}.tag-list-wrapper .tag8:hover,.tag-list-wrapper .tag8.active,html[data-theme=dark] .tag-list-wrapper .tag8{background:#ea2290}html[data-theme=dark] .tag-list-wrapper .tag8:hover,html[data-theme=dark] .tag-list-wrapper .tag8.active{background:#ed44a1}.timeline-wrapper{--dot-color: #fff;--dot-bar-color: #eaecef;--dot-border-color: #ddd;max-width:740px;margin:0 auto;padding:40px 0}@media (max-width: 719px){.timeline-wrapper{margin:0 1.2rem}}html[data-theme=dark] .timeline-wrapper{--dot-color: #444;--dot-bar-color: #333;--dot-border-color: #555}.timeline-wrapper #toc{inset-inline:unset 0;min-width:0}.timeline-wrapper .toc-wrapper{position:relative;z-index:10}.timeline-wrapper .timeline-content{position:relative;box-sizing:border-box;padding-inline-start:76px;list-style:none}.timeline-wrapper .timeline-content:after{content:" ";position:absolute;top:14px;inset-inline-start:64px;z-index:-1;width:4px;height:calc(100% - 38px);margin-inline-end:-2px;background:var(--dot-bar-color);transition:background var(--color-transition)}.timeline-wrapper .motto{position:relative;color:var(--text-color);font-size:18px;transition:color var(--color-transition)}@media (min-width: 1280px){.timeline-wrapper .motto{font-size:20px}}.timeline-wrapper .motto:before{content:" ";position:absolute;top:50%;z-index:2;margin-top:-6px;margin-inline-start:-6px;border:2px solid var(--dot-border-color);border-radius:50%;background:var(--dot-color);transition:background var(--color-transition),border-color var(--color-transition);inset-inline-start:-10px;width:8px;height:8px}.timeline-wrapper .timeline-year-title{margin-top:calc(3rem - var(--navbar-height));margin-bottom:.5rem;padding-top:var(--navbar-height);color:var(--text-color);font-weight:700;font-size:26px;font-family:var(--font-family-heading);transition:color var(--color-transition)}.timeline-wrapper .timeline-year-title span{position:relative}.timeline-wrapper .timeline-year-title span:before{content:" ";position:absolute;top:50%;z-index:2;margin-top:-6px;margin-inline-start:-6px;border:2px solid var(--dot-border-color);border-radius:50%;background:var(--dot-color);transition:background var(--color-transition),border-color var(--color-transition);inset-inline-start:-10px;width:8px;height:8px}.timeline-wrapper .timeline-year-wrapper{padding-inline-start:0!important}.timeline-wrapper .timeline-date{position:absolute;inset-inline-end:calc(100% + 24px);width:50px;font-size:14px;line-height:30px;text-align:end}.timeline-wrapper .timeline-date:before{content:" ";position:absolute;top:50%;z-index:2;margin-top:-6px;margin-inline-start:-6px;border:2px solid var(--dot-border-color);border-radius:50%;background:var(--dot-color);transition:background var(--color-transition),border-color var(--color-transition);inset-inline-end:-19px;width:6px;height:6px}.timeline-wrapper .timeline-title{position:relative;display:block;color:inherit;font-size:16px;line-height:30px;transition:color var(--color-transition),font-size var(--transform-transition)}.timeline-wrapper .timeline-item{position:relative;z-index:3;display:flex;padding:30px 0 10px;border-bottom:1px dashed var(--border-color);list-style:none;transition:border-color var(--color-transition)}.timeline-wrapper .timeline-item:hover{cursor:pointer}.timeline-wrapper .timeline-item:hover .timeline-date{font-size:16px;transition:border-color var(--color-transition),color var(--color-transition),font-size var(--transform-transition)}.timeline-wrapper .timeline-item:hover .timeline-date:before{border-color:var(--theme-color);background:var(--bg-color-secondary)}.timeline-wrapper .timeline-item:hover .timeline-title{color:var(--theme-color);font-size:18px}.timeline-list-wrapper{--dot-color: #fff;--dot-bar-color: #eaecef;--dot-border-color: #ddd;padding:8px 0}html[data-theme=dark] .timeline-list-wrapper{--dot-color: #444;--dot-bar-color: #333;--dot-border-color: #555}.timeline-list-wrapper .timeline-list-title{cursor:pointer}.timeline-list-wrapper .timeline-list-title .icon{position:relative;bottom:-.125rem;width:16px;height:16px;margin:0 6px}.timeline-list-wrapper .timeline-list-title .num{position:relative;margin:0 2px;font-size:22px}.timeline-list-wrapper .timeline-content{overflow-y:auto;max-height:80vh}.timeline-list-wrapper .timeline-content::-webkit-scrollbar-track-piece{background:transparent}.timeline-list-wrapper .timeline-list{position:relative;box-sizing:border-box;margin:0 8px;list-style:none}.timeline-list-wrapper .timeline-list:after{content:" ";position:absolute;top:14px;inset-inline-start:0;z-index:-1;width:4px;height:calc(100% - 14px);margin-inline-start:-2px;background:var(--dot-bar-color);transition:background var(--color-transition)}.timeline-list-wrapper .timeline-year{position:relative;margin:20px 0 0;color:var(--text-color);font-weight:700;font-size:20px}.timeline-list-wrapper .timeline-year:before{content:" ";position:absolute;z-index:2;border:1px solid var(--dot-border-color);border-radius:50%;background:var(--dot-color);transition:background var(--color-transition),border-color var(--color-transition);top:50%;inset-inline-start:-20px;width:8px;height:8px;margin-top:-4px;margin-inline-start:-4px}.timeline-list-wrapper .timeline-year-wrapper{padding-inline-start:0!important}.timeline-list-wrapper .timeline-date{display:inline-block;vertical-align:bottom;width:36px;font-size:12px;line-height:32px;transition:color var(--color-transition)}.timeline-list-wrapper .timeline-date:before{content:" ";position:absolute;z-index:2;border:1px solid var(--dot-border-color);border-radius:50%;background:var(--dot-color);transition:background var(--color-transition),border-color var(--color-transition);top:24px;inset-inline-start:-19px;width:6px;height:6px;margin-inline-start:-4px}.timeline-list-wrapper .timeline-title{color:inherit;font-size:14px;line-height:32px;cursor:pointer;transition:color var(--color-transition)}.timeline-list-wrapper .timeline-item{position:relative;display:flex;padding:12px 0 4px;border-bottom:1px dashed var(--border-color);list-style:none;transition:border-color var(--color-transition)}.timeline-list-wrapper .timeline-item:hover .timeline-date{color:var(--theme-color)}.timeline-list-wrapper .timeline-item:hover .timeline-date:before{border-color:var(--dot-color);background:var(--theme-color)}.timeline-list-wrapper .timeline-item:hover .timeline-title{color:var(--theme-color)}:root{--navbar-bg-color: var(--bg-color-float-blur);--sidebar-bg-color: var(--bg-color-blur)}html[data-theme=dark]{--navbar-bg-color: var(--bg-color-blur);--sidebar-bg-color: var(--bg-color-blur)}#app{--code-hl-bg-color: var(--code-highlight-line-color);--code-ln-color: var(--code-line-color);--code-ln-wrapper-width: var(--line-numbers-width);--code-tabs-nav-text-color: var(--code-color);--code-tabs-nav-bg-color: var(--code-border-color);--code-tabs-nav-hover-color: var(--code-highlight-line-color);--sidebar-space: var(--sidebar-width)}@media (max-width: 959px){#app{--navbar-height: var(--navbar-mobile-height);--navbar-vertical-padding: var(--navbar-mobile-vertical-padding);--navbar-horizontal-padding: var(--navbar-mobile-horizontal-padding);--sidebar-width: var(--sidebar-mobile-width)}}@media (min-width: 1440px){#app{--sidebar-space: clamp( var(--sidebar-width), max(0px, calc((100vw - var(--content-width)) / 2 - 2rem)), 100vw )}}.DocSearch-Button,.DocSearch{--docsearch-primary-color: var(--vp-tc);--docsearch-text-color: var(--vp-c);--docsearch-highlight-color: var(--vp-tc);--docsearch-muted-color: var(--light-grey);--docsearch-container-background: rgb(9 10 17 / 80%);--docsearch-modal-background: var(--bg-color-float);--docsearch-searchbox-background: var(--bg-color-secondary);--docsearch-searchbox-focus-background: var(--vp-bg);--docsearch-searchbox-shadow: inset 0 0 0 2px var(--vp-tc);--docsearch-hit-color: var(--vp-cl);--docsearch-hit-active-color: var(--vp-bg);--docsearch-hit-background: var(--vp-bg);--docsearch-hit-shadow: 0 1px 3px 0 var(--border-color);--docsearch-footer-background: var(--vp-bg)}html[data-theme=dark] .DocSearch-Button,html[data-theme=dark] .DocSearch{--docsearch-logo-color: var(--vp-c);--docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309;--docsearch-key-shadow: inset 0 -2px 0 0 #282d55, inset 0 0 1px 1px #51577d, 0 2px 2px 0 rgb(3 4 9 / 30%);--docsearch-key-gradient: linear-gradient(-225deg, #444950, #1c1e21);--docsearch-footer-shadow: inset 0 1px 0 0 rgb(73 76 106 / 50%), 0 -4px 8px 0 rgb(0 0 0 / 20%)}#nprogress{--nprogress-color: var(--vp-tc)}.search-box{--search-bg-color: var(--vp-bg);--search-accent-color: var(--vp-tc);--search-text-color: var(--vp-c);--search-border-color: var(--border-color);--search-item-text-color: var(--vp-clt);--search-item-focus-bg-color: var(--bg-color-secondary)}.external-link-icon{--external-link-icon-color: var(--light-grey)}html,body{margin:0;padding:0;background:#fff}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}@media print{html{font-size:12pt}}body{min-height:100vh;color:#2c3e50}a{color:#3eaf7c;font-weight:500;text-decoration:none;overflow-wrap:break-word}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid #eee;border-radius:.25em;box-shadow:1px 1px 4px #00000026;line-height:1;letter-spacing:-.1em;text-align:center}code{margin:0;padding:.2rem .4rem;border-radius:5px;background:rgba(127,127,127,.12);font-size:.85em;overflow-wrap:break-word}table code{padding:.1rem .4rem}p a code{color:#3eaf7c;font-weight:400}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.25;overflow-wrap:break-word}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid #eaecef;font-size:1.65rem}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}a.header-anchor{float:left;margin-top:.125em;margin-inline-start:-.87em;padding-inline-end:.23em;font-size:.85em;opacity:0;transition:opacity .2s}@media print{a.header-anchor{display:none!important}}a.header-anchor:hover{text-decoration:none}a.header-anchor:focus-visible{opacity:1}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid #ddd;color:#666;font-size:1rem;overflow-wrap:break-word}blockquote>p{margin:0}hr{border:0;border-top:1px solid #eaecef}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tr:nth-child(2n){background:#f6f8fa}th,td{padding:.6em 1em;border:1px solid #dfe2e5}pre{direction:ltr}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a[href^="http://"]:after,a[href^="https://"]:after{content:" (" attr(href) ") "}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@font-face{font-weight:400;font-style:normal;font-family:Crimson;src:url(data:font/truetype;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTYr5mwEAAAyMAAAAHEdERUYAKQATAAAMbAAAAB5PUy8yVsJ0MgAAAVgAAABgY21hcBiKDzgAAAHcAAABWGdhc3D//wADAAAMZAAAAAhnbHlmr+DBdQAAA1AAAAdsaGVhZBZwt+8AAADcAAAANmhoZWEFawEuAAABFAAAACRobXR4BksA9gAAAbgAAAAibG9jYQlsC24AAAM0AAAAHG1heHAAEQBZAAABOAAAACBuYW1lLaFDVAAACrwAAAFrcG9zdAC1AHoAAAwoAAAAPAABAAAAAQAAqBd2H18PPPUACwQAAAAAANqqufwAAAAA2qq5/AAb/9wB4QMeAAAACAACAAAAAAAAAAEAAAMs/ywAXAH9AAAAAAHhAAEAAAAAAAAAAAAAAAAAAAAEAAEAAAANAFkAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAH1AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAIABgMAAAAAAAAAAAABEAAAAAAAAAAAAAAAUGZFZADAADAAOQMs/ywAXAMsANQAAAABAAAAAAMYAAAAAAAgAAEBpwAfAAAAAAFVAAAB/QAfAH0ALQA+ABsAPgAyACgAPgAxAAAAAAADAAAAAwAAABwAAQAAAAAAUgADAAEAAAAcAAQANgAAAAQABAABAAAAOf//AAAAL///AAAAAQAEAAAAAAADAAQABQAGAAcACAAJAAoACwAMAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwQFBgcICQoLDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAJgAmAGIAwAEeAZIBzgJAApYC2gNiA7YAAQAf/9wBhwMeABIAAAEGBwYHATAXFjM2NzY3ASYnJjcBgxwLCgH+zgMECxIKCgIBLgEDAwMDHhQFBgP85wMEAQgJBgMOAwMDEwAAAAIAH//9Ad0CkAAQACEAABMWFxYXNjc2NzQnJicGBwYHNyY3NjcWFxYXFAcGByYnJjcfATo6amo7OQE5OmxrOjkBXQIlJEE5IyIBIyJEOSQjAgFOkV5eBAReXoqJXl4EBF5eggJ0UlEDA09Qe3xVVgMDU1OEAAAAAAEAff/9AYACkQA+AAA3FAcGBwYHBiMGFQYXNjc2MzIXFhc2JzQnIicmJyY1JjURNjc2MSYnJicjBgcGBwYVFBUUFxYXNjc2NzIXFhXkAQEEBRgYDAMBBB4ZGhweGxofBAEDDBgZBQQBAQMEAQIDBAIFNTZCAgMDBA0XFw0LBQV3GBMVDAgEBAUKCgUCAQICAQIFCgoFBAQIDBUTGAGnLxkbBAYFAQIZGh4BAgECBQUEAwUHBwEICRYAAAAAAQAtAAAB0QKRADoAADcGFxYXITY3NjcmJyYjIgcGBwYHBisBNjc2NzY3NjUmJyYnBgcGBxQXFhc2NzY3FhcWFxYHBgcGBwYHLgEEAwMBYwURERADBwYFBAMDAg8VEx/LJkBAOhsQDwIxMkxSMjIHCAYGCSYmPTIfHwEBCgoeLkJBQg8EBQQCETAwKQICAgEBBCgUEylJSUYhJicsRDIzAgY1NRoEBQYBEyEhAwEjIjYlJCQtQlBQSAAAAAABAD7/+wG+ApEASgAANwYXFhcWFxYzNjc2NyYnJic2NzY3JicmIwYHBgcUFxYXNjc2NxYXFhcGBwYHBgcUFRQXNjc2NxYXFhcGBwYnIicmJyYnJiciBwYXPwEIBwUaHB0VZU5NBAMvLi8eIB4DAywsKzwrKxgEAwUIHR4wLRscAQMvLz8BAQYKEhEQNSYmAgImJSsWExQPCw0NFREMDQE7DgsLBQwFBgE8PWpMKSoGECQkMkAiIQIdHyUHBwcBCRscAwEbGSpCIyUOAgMCAwwIAwUEAQEoKD9XJSQBBQYODg8PAQ0NFQAAAgAb//oB4QKTACIAJQAANxQXFhchFRQXFjMyNzYjNTM2NzY1NCcmJyMRNCcmIwYHBgcBExEbAgMFASEJCRIdCAkBRgIBAQUEBTwFAwgHCQkG/vjmxgUGBgOwBQIBAwKzAgQDCBAMDQEBlAYGBgEICQf+cwEs/tQAAQA+//sBvgKTAEoAADcGFxYXFhcWMzY3NjcmJyYnIgcGBzY3NjczMjc2NzY3NjU0JyYnBgcGByMGBwYHFBcWMzY3NjMWFxYHBgcGJyInJicmJyYnIgcGFz8BCAcFGhwdFWVOTQQBMjJbFx8gFwoJCQlWKB0dFQ4JCAQDBQMdHSKXCREQEgMCBA4bGhNYJyUBAiYlKxYTFA8LDQ0VEQwNATsOCwsFDAUGATw9akU2NwMFBggrMC8uAgICExcZBgQCAgMBAwQBMVNUWAUFBAYFBAMxMTNZIyQBBQYODg8PAQ0NFQAAAgAy//oBzQKXACAAMwAANxQXFhc2NzY3NicmJyIHBgc2NzY3NCcmJwYHBgcGBwYXNyY3Njc2FxYXFgcGBwYHJicmNzM1NV5aOTsCAioqahoiIRsnWFhFAwIHQ0tMOTAZGQFbBAQaGxkXRB8fAQEfIDE9Hh4E511FRwQDPT1ZPEJBBQwLF4Y9PRMGCwwBEiwsPDZFRkkTHyAbCAcBAjAwREYsLQEFREVQAAAAAAEAKP/7AdUCiwApAAATFhcWMzI3Njc2NzYzIQYHBgcWFxYzMjcBNjc2NzQnJiMiBwYjIQYHBgcoAwYHAwYDAwELEBEdAQUJYWJXAQ8PDgcDAQ4LCQgBAQEEBhUVFv7JBgsNDAH6DQMCAQEFKRITFMjHjQcFBgMCPxYSEwoEAgMBAhkrKiAAAAADAD7/9wG/ApIAKABBAFgAADcGFxYXNjc2NyYnJicmJzQ3Njc2NyYnJiMGBwYHFhcWFxYVFAcGBwYHNyY3Njc2MzIzMhcyFxYXFhcGBwYHIicmNxMmNzY3FhcWFRQHBgcGByIjIicmJyY3PwE1M1ZQODgDAykpMQIBAyYlJQMCMC9HRjExAgIiIiMCAiMvLwNTBBQTKgEBAQECAQIBEjU1CAEdHjMrISICGAMYGSYvGxoTEx8CAQIBBAMfJCQBoU8tLQECMjFPOC4uGwIBAgEWJiU7SCYoAjEwQzopKhMBAgECEykpQAQsIiEbAQEBBywsQjUeHQEiI0QBZSMhIAECJiYvKh8gFAEBAhAfIEYAAAIAMf/6AcsClwAgADMAABMGFxYXMjc2NwYHBgcUFxYXNjc2NzY3NjUmJyYnBgcGBzcmNzY3FhcWFRQHBgcGJyYnJjc0AyopahoiIRsoV1hFAwIHQ0tMODEZGQE2NF5ZOjoBWgMfHzE9Hh4EGhoaF0QeHwUBy0dBQgUMCxeFPj0SBwsLAREsLD01RkVPV0dFBQQ8PU8UPCwtAQVFRUklIRsHCAECMDBPAAAADACWAAEAAAAAAAEABwAQAAEAAAAAAAIABwAoAAEAAAAAAAMABwBAAAEAAAAAAAQABwBYAAEAAAAAAAUAHgCeAAEAAAAAAAYABwDNAAMAAQQJAAEADgAAAAMAAQQJAAIADgAYAAMAAQQJAAMADgAwAAMAAQQJAAQADgBIAAMAAQQJAAUAPABgAAMAAQQJAAYADgC9AEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAFYAZQByAHMAaQBvAG4AIAAxAC4AMAA7ACAARgBvAG4AdABFAGQAaQB0AG8AcgAgACgAdgAxAC4AMAApAABWZXJzaW9uIDEuMDsgRm9udEVkaXRvciAodjEuMCkAAEMAcgBpAG0AcwBvAG4AAENyaW1zb24AAAACAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAABAAIAEwAUABUAFgAXABgAGQAaABsAHAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQADAAwAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2qq5/AAAAADaqrn8) format("truetype")}html,body{background:var(--bg-color);transition:background var(--color-transition)}:root{color-scheme:light}html[data-theme=dark]{color-scheme:dark}body{color:var(--text-color);font-family:var(--font-family)}@media (min-width: 1440px){body{font-size:17px}}a{color:var(--theme-color)}kbd{border-color:var(--border-color-dark);background:var(--bg-color-secondary);font-family:var(--font-family-mono)}code{font-family:var(--font-family-mono);transition:background var(--color-transition),color var(--color-transition)}html[data-theme=dark] code{background:#333}p a code{color:var(--theme-color)}blockquote{border-color:#eee;color:#666;transition:border-color var(--color-transition),color var(--color-transition)}html[data-theme=dark] blockquote{border-color:#333}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading)}@media (max-width: 419px){h1{font-size:1.9rem}}h2{border-color:var(--border-color);transition:border-bottom-color var(--color-transition)}hr{border-color:var(--border-color);transition:border-top-color var(--color-transition)}tr:nth-child(2n){background:var(--bg-color-secondary)}th,td{border-color:var(--border-color-dark)}@media print{@page{--text-color: #000 !important;--bg-color: #fff !important}div[class*=language-]{position:relative!important}}.theme-hope-content:not(.custom)>*:first-child{margin-top:0}.vp-breadcrumb{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;position:relative;z-index:2;padding-top:1rem;font-size:15px}@media (max-width: 959px){.vp-breadcrumb{padding-inline:1.5rem}}@media print{.vp-breadcrumb{max-width:unset}}@media (max-width: 959px){.vp-breadcrumb{font-size:14px}}@media (max-width: 419px){.vp-breadcrumb{padding-top:.5rem;font-size:12.8px}}@media print{.vp-breadcrumb{display:none}}.vp-breadcrumb .icon{margin-inline-end:.25em;font-size:1em}.vp-breadcrumb img.icon{vertical-align:-.125em;height:1em}.vp-breadcrumb a{display:inline-block;padding:0 .5em}.vp-breadcrumb a:before{position:relative;bottom:.125rem;margin-inline-end:.25em}.vp-breadcrumb a:hover{color:var(--theme-color)}.vp-breadcrumb ol{margin:0;padding-inline-start:0;list-style:none}.vp-breadcrumb li{display:inline-block;line-height:1.5}.vp-breadcrumb li:first-child a{padding-inline-start:0}.vp-breadcrumb li:last-child a{padding-inline-end:0}.vp-breadcrumb li.is-active a{color:var(--light-grey);cursor:default;pointer-events:none}.vp-breadcrumb li+li:before{content:"/";color:var(--light-grey)}.toggle-sidebar-wrapper{position:fixed;top:var(--navbar-height);bottom:0;inset-inline-start:var(--sidebar-space);z-index:100;display:flex;align-items:center;justify-content:center;font-size:2rem;transition:inset-inline-start var(--transform-transition)}@media (max-width: 719px){.toggle-sidebar-wrapper{display:none}}@media (min-width: 1440px){.toggle-sidebar-wrapper{display:none}}.toggle-sidebar-wrapper:hover{background:rgba(127,127,127,.05);cursor:pointer}.toggle-sidebar-wrapper .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html[data-theme=dark] .toggle-sidebar-wrapper .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.toggle-sidebar-wrapper .arrow.down{transform:rotate(180deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.down{transform:rotate(-180deg)}.toggle-sidebar-wrapper .arrow.end{transform:rotate(90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.end,.toggle-sidebar-wrapper .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .toggle-sidebar-wrapper .arrow.start{transform:rotate(90deg)}.theme-container{display:flex;flex-direction:column;justify-content:space-between;min-height:100vh}.theme-container .vp-page{padding-top:var(--navbar-height);padding-inline-start:calc(var(--sidebar-space) + 2rem)}@media (max-width: 719px){.theme-container .vp-page{padding-inline:0}}@media (min-width: 1440px){.theme-container .vp-page{padding-inline-end:calc(100vw - var(--content-width) - var(--sidebar-space) - 6rem)}}.theme-container .vp-sidebar{top:var(--navbar-height)}.theme-container.no-navbar .vp-page{padding-top:0}.theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.theme-container.no-navbar .vp-sidebar{top:0}}@media (max-width: 719px){.theme-container.hide-navbar .vp-sidebar{top:0}}.theme-container.sidebar-collapsed .vp-page{padding-inline-start:0}.theme-container.sidebar-collapsed .vp-sidebar{box-shadow:none;transform:translate(-100%)}html[dir=rtl] .theme-container.sidebar-collapsed .vp-sidebar{transform:translate(100%)}.theme-container.sidebar-collapsed .toggle-sidebar-wrapper{inset-inline-start:0}.theme-container.no-sidebar .vp-page{padding-inline:0}@media (min-width: 1440px){.theme-container.no-sidebar.has-toc .vp-page{padding-inline-end:16rem}}.theme-container.no-sidebar .vp-toggle-sidebar-button,.theme-container.no-sidebar .toggle-sidebar-wrapper,.theme-container.no-sidebar .vp-sidebar{display:none}.theme-container.sidebar-open .vp-sidebar{box-shadow:2px 0 8px var(--card-shadow);transform:translate(0)}.fade-slide-y-enter-active{transition:all .3s ease!important}.fade-slide-y-leave-active{transition:all .3s cubic-bezier(1,.5,.8,1)!important}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-feature-wrapper{position:relative}.vp-feature-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-feature-bg.light{display:inline-block}.vp-feature-bg.dark,html[data-theme=dark] .vp-feature-bg.light{display:none}html[data-theme=dark] .vp-feature-bg.dark{display:inline-block}.vp-feature{position:relative;z-index:1;margin:0 auto;padding:1.5rem 1rem;color:var(--text-color-lighter);text-align:center}.vp-feature-bg+.vp-feature{color:#222}html[data-theme=dark] .vp-feature-bg+.vp-feature{color:#eee}.vp-feature-bg+.vp-feature .icon{color:inherit}.vp-feature-image{height:10rem;margin:0 auto}@media (max-width: 959px){.vp-feature-image{height:8rem}}.vp-feature-image.light{display:inline-block}.vp-feature-image.dark,html[data-theme=dark] .vp-feature-image.light{display:none}html[data-theme=dark] .vp-feature-image.dark{display:inline-block}.vp-feature-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family);text-align:center}@media (max-width: 959px){.vp-feature-header{font-size:2.5rem}}@media (max-width: 719px){.vp-feature-header{font-size:2.25rem}}@media (max-width: 419px){.vp-feature-header{font-size:2rem}}.vp-feature-description{font-size:1.125rem}.vp-features{z-index:1;display:flex;flex-wrap:wrap;align-items:stretch;place-content:stretch center;margin:1rem 0;text-align:start}@media print{.vp-features{display:block}}.vp-features:first-child{border-top:1px solid var(--border-color);transition:border-color var(--color-transition)}.vp-feature-item{position:relative;display:block;flex-basis:calc(33% - 3rem);margin:.5rem;padding:1rem;border-radius:.5rem;color:inherit;transition:background var(--color-transition),box-shadow var(--color-transition),transform var(--transform-transition)}@media (min-width: 1440px){.vp-feature-item{flex-basis:calc(25% - 3rem)}}@media (max-width: 959px){.vp-feature-item{flex-basis:calc(50% - 3rem)}}@media (max-width: 719px){.vp-feature-item{flex-basis:100%;font-size:.95rem}}@media (max-width: 419px){.vp-feature-item{margin:.5rem 0;font-size:.9rem}}.vp-feature-item.link{cursor:pointer}@media print{.vp-feature-item.link{text-decoration:none}}.vp-feature-item .icon{display:inline-block;height:1.1em;margin-inline-end:.5rem;color:var(--theme-color);font-weight:400;font-size:1.1em}.vp-feature-item:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transform:translate(-2px,-2px);transform:scale(1.05)}.vp-feature-bg+.vp-feature .vp-feature-item:hover{background-color:transparent}.vp-feature-item:only-child{flex-basis:100%}.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:calc(50% - 3rem)}@media (max-width: 719px){.vp-feature-item:first-child:nth-last-child(2),.vp-feature-item:nth-child(2):last-child{flex-basis:100%}}.vp-feature-title{margin:.25rem 0 .5rem;font-weight:700;font-size:1.3rem;font-family:var(--font-family)}@media (max-width: 419px){.vp-feature-title{font-size:1.2rem}}.vp-feature-details{margin:0;line-height:1.4}.vp-footer-wrapper{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-evenly;padding-block:.75rem;padding-inline:calc(var(--sidebar-space) + 2rem) 2rem;border-top:1px solid var(--border-color);background:var(--bg-color);color:var(--dark-grey);text-align:center;transition:border-top-color var(--color-transition),background var(--color-transition),padding var(--transform-transition)}@media (max-width: 719px){.vp-footer-wrapper{padding-inline-start:2rem}}@media (min-width: 1440px){.vp-footer-wrapper{z-index:50;padding-inline-start:2rem}}@media print{.vp-footer-wrapper{margin:0!important;padding:0!important}}@media (max-width: 419px){.vp-footer-wrapper{display:block}}.no-sidebar .vp-footer-wrapper,.sidebar-collapsed .vp-footer-wrapper{padding-inline-start:2rem}.vp-footer{margin:.5rem 1rem;font-size:14px}@media print{.vp-footer{display:none}}.vp-copyright{margin:6px 0;font-size:13px}.vp-page:not(.not-found)+.vp-footer-wrapper{margin-top:-2rem}.vp-hero-info-wrapper{position:relative;display:flex;align-items:center;justify-content:center;margin-inline:auto}.vp-hero-info-wrapper.fullscreen{height:calc(100vh - var(--navbar-height))!important}.vp-hero-info{z-index:1;width:100%;padding-inline:2.5rem}@media (max-width: 959px){.vp-hero-info{padding-inline:1.5rem}}@media (min-width: 959px){.vp-hero-info{display:flex;align-items:center;justify-content:space-evenly}}.vp-hero-mask{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-position:50%;background-size:cover}.vp-hero-mask:after{content:" ";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:block}.vp-hero-mask.light{display:block}html[data-theme=dark] .vp-hero-mask.light,.vp-hero-mask.dark{display:none}html[data-theme=dark] .vp-hero-mask.dark{display:block}.vp-hero-infos{z-index:1;margin:0 .5rem}.vp-hero-image{display:block;max-width:100%;max-height:18rem;margin:1rem}@media (max-width: 959px){.vp-hero-image{margin:2rem auto}}@media (max-width: 719px){.vp-hero-image{max-height:16rem;margin:1.5rem auto}}@media (max-width: 419px){.vp-hero-image{max-height:14rem}}.vp-hero-image.light{display:block}html[data-theme=dark] .vp-hero-image.light,.vp-hero-image.dark{display:none}html[data-theme=dark] .vp-hero-image.dark{display:block}#main-title{margin:.5rem 0;background:linear-gradient(120deg,var(--theme-color-light),var(--theme-color) 30%,#9b5cd1 100%);-webkit-background-clip:text;background-clip:text;font-weight:700;font-size:3.6rem;font-family:var(--font-family);line-height:1.5;-webkit-text-fill-color:transparent}@media (max-width: 719px){#main-title{margin:0}}@media (max-width: 959px){#main-title{font-size:2.5rem;text-align:center}}@media (max-width: 719px){#main-title{font-size:2.25rem;text-align:center}}@media (max-width: 419px){#main-title{margin:0 auto;font-size:2rem}}#main-description,.vp-hero-actions{margin:1.8rem 0}@media (max-width: 719px){#main-description,.vp-hero-actions{margin:1.5rem 0}}@media (max-width: 959px){#main-description,.vp-hero-actions{margin:1.5rem auto;text-align:center}}@media (max-width: 419px){#main-description,.vp-hero-actions{margin:1.2rem 0}}#main-description{max-width:35rem;color:var(--text-color-light);font-weight:500;font-size:1.6rem;line-height:1.3}@media (max-width: 719px){#main-description{font-size:1.4rem}}@media (max-width: 419px){#main-description{font-size:1.2rem}}.vp-hero-action{display:inline-block;overflow:hidden;min-width:4rem;margin:.5rem;padding:.5em 1.5rem;border-radius:2rem;background:var(--bg-color-secondary);color:var(--text-color);font-size:1.2rem;text-align:center;transition:color var(--color-transition),color var(--color-transition),transform var(--transform-transition)}@media (max-width: 719px){.vp-hero-action{padding:.5rem 1rem;font-size:1.1rem}}@media (max-width: 419px){.vp-hero-action{font-size:1rem}}@media print{.vp-hero-action{text-decoration:none}}.vp-hero-action:hover{background:var(--bg-color-tertiary)}.vp-hero-action.primary{border-color:var(--theme-color);background:var(--theme-color);color:var(--white)}.vp-hero-action.primary:hover{border-color:var(--theme-color-light);background:var(--theme-color-light)}.vp-project-home:not(.pure) .vp-hero-action:active{transform:scale(.96)}.vp-hero-action .icon{margin-inline-end:.25em}.vp-highlight-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.vp-highlight-wrapper:nth-child(2n) .vp-highlight{flex-direction:row-reverse}.vp-highlight{z-index:1;display:flex;flex:1;align-items:center;justify-content:flex-end;max-width:var(--home-page-width);margin:0 auto;padding:1.5rem 2.5rem;color:#222}@media (max-width: 719px){.vp-highlight{display:block;padding-inline:1.5rem;text-align:center}}html[data-theme=dark] .vp-highlight{color:#eee}.vp-highlight-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-attachment:fixed;background-position:50%;background-size:cover}.vp-highlight-bg.light{display:inline-block}.vp-highlight-bg.dark,html[data-theme=dark] .vp-highlight-bg.light{display:none}html[data-theme=dark] .vp-highlight-bg.dark{display:inline-block}.vp-highlight-image{width:12rem;margin:2rem 4rem}@media (max-width: 959px){.vp-highlight-image{width:10rem}}@media (max-width: 719px){.vp-highlight-image{width:8rem;margin:0 auto}}.vp-highlight-image.light{display:inline-block}.vp-highlight-image.dark,html[data-theme=dark] .vp-highlight-image.light{display:none}html[data-theme=dark] .vp-highlight-image.dark{display:inline-block}.vp-highlight-info-wrapper{display:flex;flex:1;justify-content:center;padding:2rem}@media (max-width: 719px){.vp-highlight-info-wrapper{padding:1rem 0}}.vp-highlight-info-wrapper:only-child{flex:1 0 100%}.vp-highlight-info{text-align:start}.vp-highlight-header{margin-bottom:1.5rem;border-bottom:none;font-size:3rem;font-family:var(--font-family)}@media (max-width: 959px){.vp-highlight-header{font-size:2.5rem}}@media (max-width: 719px){.vp-highlight-header{font-size:2.25rem;text-align:center}}@media (max-width: 419px){.vp-highlight-header{font-size:2rem}}.vp-highlight-description{font-size:1.125rem}.vp-highlights{margin-inline-start:-1.25em;padding-inline-start:0}.vp-highlight-item-wrapper{padding:.5em .5em .5em 1.75em;border-radius:.5rem;list-style:none}.vp-highlight-item-wrapper.link{cursor:pointer}.vp-highlight-item-wrapper:hover{background-color:var(--bg-color-secondary);box-shadow:0 2px 12px 0 var(--card-shadow);transition:transform var(--transform-transition);transform:translate(-2px,-2px)}.vp-highlight-bg+.vp-highlight .vp-highlight-item-wrapper:hover{background-color:transparent}.vp-highlight-item-wrapper::marker{font-weight:700}.vp-highlight-item{display:list-item;color:inherit;list-style:initial}@media print{.vp-highlight-item{text-decoration:none}}.vp-highlight-title{margin:0;font-weight:600;font-size:1.125rem;font-family:var(--font-family)}.vp-highlight-title .icon{margin-inline-end:.25em;font-size:1em}.vp-highlight-title img.icon{vertical-align:-.125em;height:1em}.vp-highlight-details{margin:.5rem 0 0}.vp-project-home{--content-width: var(--home-page-width);display:block;flex:1;padding-top:var(--navbar-height)}@media screen{.vp-project-home .vp-hero-info-wrapper:not(.fullscreen) .vp-hero-info{max-width:var(--home-page-width)}}@media screen{.vp-project-home .vp-feature{max-width:var(--home-page-width)}}.vp-project-home .theme-hope-content{padding-bottom:1.5rem!important}.vp-project-home .theme-hope-content:empty{padding:0!important}.not-found-hint{padding:2rem}.not-found-hint .error-code{margin:0;font-weight:700;font-size:4rem;line-height:4rem}.not-found-hint .error-title{font-weight:700}.not-found-hint .error-hint{margin:0;padding:12px 0;font-weight:600;font-size:20px;line-height:20px;letter-spacing:2px}.vp-page.not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:100vw;max-width:var(--home-page-width);margin:0 auto;padding:calc(var(--navbar-height) + 1rem) 1rem 1rem!important;text-align:center}.vp-page.not-found .action-button{display:inline-block;box-sizing:border-box;margin:.25rem;padding:.75rem 1rem;border-width:0;border-bottom:1px solid var(--theme-color-dark);border-radius:3rem;background:var(--theme-color);color:var(--white);outline:none;font-size:1rem;transition:background .1s ease}.vp-page.not-found .action-button:hover{background:var(--theme-color-light);cursor:pointer}.vp-page-nav{display:flex;flex-wrap:wrap;min-height:2rem;margin-top:0;padding-block:.5rem;padding-inline:2rem;border-top:1px solid var(--border-color);transition:border-top var(--color-transition)}@media (max-width: 959px){.vp-page-nav{padding-inline:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .nav-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--border-color);border-radius:.25rem}.vp-page-nav .nav-link:hover{background:var(--bg-color-secondary)}.vp-page-nav .nav-link .hint{color:var(--light-grey);font-size:.875rem;line-height:2}.vp-page-nav .nav-link .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:.75rem}html[data-theme=dark] .vp-page-nav .nav-link .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-page-nav .nav-link .arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.down{transform:rotate(-180deg)}.vp-page-nav .nav-link .arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.end,.vp-page-nav .nav-link .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-page-nav .nav-link .arrow.start{transform:rotate(90deg)}.vp-page-nav .prev{text-align:start}.vp-page-nav .prev .icon{margin-inline-end:.25em;font-size:1em}.vp-page-nav .prev img.icon{vertical-align:-.125em;height:1em}.vp-page-nav .next{text-align:end}.vp-page-nav .next .icon{margin-inline-start:.25em;font-size:1em}.vp-page-nav .next img.icon{vertical-align:-.125em;height:1em}.vp-page-title{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;position:relative;z-index:1;padding-top:1rem;padding-bottom:0}@media (max-width: 959px){.vp-page-title{padding-inline:1.5rem}}@media print{.vp-page-title{max-width:unset}}@media print{.vp-page-title{padding-inline:0!important}}@media (max-width: 959px){.vp-page-title{padding-top:.5rem}}.vp-page-title h1{margin-top:calc(0px - var(--navbar-height))!important;margin-bottom:1rem;padding-top:var(--navbar-height)!important;font-size:2.2rem}@media (max-width: 959px){.vp-page-title h1{margin-bottom:.5rem}}.vp-page-title h1 .icon{margin-inline-end:.25em;color:var(--theme-color);font-size:.9em}.vp-page-title h1 img.icon{vertical-align:-.125em;height:1em}.theme-hope-content:not(.custom){padding-top:0!important}.theme-hope-content:not(.custom) h1:first-child,.theme-hope-content:not(.custom) h2:first-child,.theme-hope-content:not(.custom) h3:first-child,.theme-hope-content:not(.custom) h4:first-child,.theme-hope-content:not(.custom) h5:first-child,.theme-hope-content:not(.custom) h6:first-child{margin-top:calc(.5rem - var(--navbar-height))!important;padding-top:var(--navbar-height)!important}.theme-hope-content:not(.custom)>h1:first-child{display:none}.vp-page{display:block;flex-grow:1;padding-bottom:2rem;transition:padding var(--transform-transition)}@media print{.vp-page{min-height:auto!important;margin:0!important;padding:0!important}}.page-cover{-o-object-fit:cover;object-fit:cover;width:calc(100% + 2rem);max-height:25vh;margin-inline-start:-2rem}@media (max-width: 719px){.page-cover{width:100%;margin:0;border-radius:0}}@media (min-width: 1440px){.page-cover{width:calc(100% - 2rem);margin:0 1rem;border-radius:.5rem}}.page-cover .sidebar-collapsed{width:100%;margin-inline-start:0}.vp-skip-link{top:.25rem;inset-inline-start:.25rem;z-index:999;padding:.65rem 1.5rem;border-radius:.5rem;background:var(--bg-color);color:var(--theme-color);box-shadow:var(--card-shadow);font-weight:700;font-size:.9em;text-decoration:none}@media print{.vp-skip-link{display:none}}.vp-skip-link:focus{clip:auto;width:auto;height:auto;-webkit-clip-path:none;clip-path:none}.theme-hope-content pre{overflow:auto;margin:.85rem 0;padding:1rem;border-radius:6px;line-height:1.375}.theme-hope-content pre code{padding:0;border-radius:0;background:transparent!important;color:var(--code-color);font-family:var(--font-family-mono);text-align:left;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-webkit-hyphens:none;hyphens:none;transition:color var(--color-transition);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}@media print{.theme-hope-content pre code{white-space:pre-wrap}}.theme-hope-content .line-number{font-family:var(--font-family-mono)}div[class*=language-]{position:relative;border-radius:6px;background:var(--code-bg-color);font-size:16px;transition:background var(--color-transition)}@media (max-width: 419px){.theme-hope-content>div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}div[class*=language-]:before{content:attr(data-ext);position:absolute;top:0;right:1em;z-index:3;color:var(--code-line-color);font-size:.75rem;transition:color var(--color-transition)}div[class*=language-] pre{position:relative;z-index:1;scrollbar-gutter:stable}div[class*=language-] .highlight-lines{position:absolute;top:0;bottom:0;left:0;width:100%;padding:1rem 0;line-height:1.375;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-] .highlight-line{background:var(--code-highlight-line-color);transition:background var(--color-transition)}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;bottom:0;left:0;z-index:2;width:var(--line-numbers-width);border-right:1px solid var(--code-highlight-line-color);border-radius:6px 0 0 6px;transition:border-color var(--color-transition)}@media (max-width: 419px){div[class*=language-].line-numbers-mode:after{border-radius:0}}@media print{div[class*=language-].line-numbers-mode:after{display:none}}div[class*=language-].line-numbers-mode .highlight-line{position:relative}div[class*=language-].line-numbers-mode .highlight-line:before{content:" ";position:absolute;top:0;left:0;z-index:3;display:block;width:var(--line-numbers-width);height:100%}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--line-numbers-width);padding-left:.5rem}@media print{div[class*=language-].line-numbers-mode pre{margin-left:0;padding-left:1rem}}div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;bottom:0;left:0;display:flex;flex-direction:column;width:var(--line-numbers-width);padding:1rem 0;color:var(--code-line-color);counter-reset:line-number;text-align:center;transition:color var(--color-transition)}@media print{div[class*=language-].line-numbers-mode .line-numbers{display:none}}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:4;display:flex;flex:1;align-items:center;justify-content:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);display:block;font-size:.8em;line-height:1;counter-increment:line-number}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}html[data-theme=light] #app{--code-color: #383a42;--code-line-color: rgba(56, 58, 66, .67);--code-bg-color: #ecf4fa;--code-border-color: #c3def3;--code-highlight-line-color: #d8e9f6}html[data-theme=light] code[class*=language-],html[data-theme=light] pre[class*=language-]{-moz-tab-size:2;-o-tab-size:2;tab-size:2}html[data-theme=light] code[class*=language-]::-moz-selection,html[data-theme=light] code[class*=language-] ::-moz-selection,html[data-theme=light] pre[class*=language-]::-moz-selection,html[data-theme=light] pre[class*=language-] ::-moz-selection{background:#e5e5e6;color:inherit}html[data-theme=light] code[class*=language-]::selection,html[data-theme=light] code[class*=language-] ::selection,html[data-theme=light] pre[class*=language-]::selection,html[data-theme=light] pre[class*=language-] ::selection{background:#e5e5e6;color:inherit}html[data-theme=light] .token.comment,html[data-theme=light] .token.prolog,html[data-theme=light] .token.cdata{color:#a0a1a7}html[data-theme=light] .token.doctype,html[data-theme=light] .token.punctuation,html[data-theme=light] .token.entity{color:#383a42}html[data-theme=light] .token.attr-name,html[data-theme=light] .token.class-name,html[data-theme=light] .token.boolean,html[data-theme=light] .token.constant,html[data-theme=light] .token.number,html[data-theme=light] .token.atrule{color:#b76b01}html[data-theme=light] .token.keyword{color:#a626a4}html[data-theme=light] .token.property,html[data-theme=light] .token.tag,html[data-theme=light] .token.symbol,html[data-theme=light] .token.deleted,html[data-theme=light] .token.important{color:#e45649}html[data-theme=light] .token.selector,html[data-theme=light] .token.string,html[data-theme=light] .token.char,html[data-theme=light] .token.builtin,html[data-theme=light] .token.inserted,html[data-theme=light] .token.regex,html[data-theme=light] .token.attr-value,html[data-theme=light] .token.attr-value>.token.punctuation{color:#50a14f}html[data-theme=light] .token.variable,html[data-theme=light] .token.operator,html[data-theme=light] .token.function{color:#4078f2}html[data-theme=light] .token.url{color:#0184bc}html[data-theme=light] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=light] .token.special-attr>.token.attr-value>.token.value.css{color:#383a42}html[data-theme=light] .language-css .token.selector{color:#e45649}html[data-theme=light] .language-css .token.property{color:#383a42}html[data-theme=light] .language-css .token.function,html[data-theme=light] .language-css .token.url>.token.function{color:#0184bc}html[data-theme=light] .language-css .token.url>.token.string.url{color:#50a14f}html[data-theme=light] .language-css .token.important,html[data-theme=light] .language-css .token.atrule .token.rule,html[data-theme=light] .language-javascript .token.operator{color:#a626a4}html[data-theme=light] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#ca1243}html[data-theme=light] .language-json .token.operator{color:#383a42}html[data-theme=light] .language-json .token.null.keyword{color:#b76b01}html[data-theme=light] .language-markdown .token.url,html[data-theme=light] .language-markdown .token.url>.token.operator,html[data-theme=light] .language-markdown .token.url-reference.url>.token.string{color:#383a42}html[data-theme=light] .language-markdown .token.url>.token.content{color:#4078f2}html[data-theme=light] .language-markdown .token.url>.token.url,html[data-theme=light] .language-markdown .token.url-reference.url{color:#0184bc}html[data-theme=light] .language-markdown .token.blockquote.punctuation,html[data-theme=light] .language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}html[data-theme=light] .language-markdown .token.code-snippet{color:#50a14f}html[data-theme=light] .language-markdown .token.bold .token.content{color:#b76b01}html[data-theme=light] .language-markdown .token.italic .token.content{color:#a626a4}html[data-theme=light] .language-markdown .token.strike .token.content,html[data-theme=light] .language-markdown .token.strike .token.punctuation,html[data-theme=light] .language-markdown .token.list.punctuation,html[data-theme=light] .language-markdown .token.title.important>.token.punctuation{color:#e45649}html[data-theme=light] .token.bold{font-weight:700}html[data-theme=light] .token.comment,html[data-theme=light] .token.italic{font-style:italic}html[data-theme=light] .token.entity{cursor:help}html[data-theme=light] .token.namespace{opacity:.8}html[data-theme=dark] #app{--code-color: #abb2bf;--code-line-color: rgba(171, 178, 191, .67);--code-bg-color: #282c34;--code-border-color: #343e51;--code-highlight-line-color: #2f3542}html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:0 1px rgba(0,0,0,.3);-moz-tab-size:2;-o-tab-size:2;tab-size:2}@media print{html[data-theme=dark] code[class*=language-],html[data-theme=dark] pre[class*=language-]{text-shadow:none}}html[data-theme=dark] code[class*=language-]::-moz-selection,html[data-theme=dark] code[class*=language-] ::-moz-selection,html[data-theme=dark] pre[class*=language-]::-moz-selection,html[data-theme=dark] pre[class*=language-] ::-moz-selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] code[class*=language-]::selection,html[data-theme=dark] code[class*=language-] ::selection,html[data-theme=dark] pre[class*=language-]::selection,html[data-theme=dark] pre[class*=language-] ::selection{background:#3e4451;color:inherit;text-shadow:none}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.prolog,html[data-theme=dark] .token.cdata{color:#5c6370}html[data-theme=dark] .token.doctype,html[data-theme=dark] .token.punctuation,html[data-theme=dark] .token.entity{color:#abb2bf}html[data-theme=dark] .token.attr-name,html[data-theme=dark] .token.class-name,html[data-theme=dark] .token.boolean,html[data-theme=dark] .token.constant,html[data-theme=dark] .token.number,html[data-theme=dark] .token.atrule{color:#d19a66}html[data-theme=dark] .token.keyword{color:#c678dd}html[data-theme=dark] .token.property,html[data-theme=dark] .token.tag,html[data-theme=dark] .token.symbol,html[data-theme=dark] .token.deleted,html[data-theme=dark] .token.important{color:#e06c75}html[data-theme=dark] .token.selector,html[data-theme=dark] .token.string,html[data-theme=dark] .token.char,html[data-theme=dark] .token.builtin,html[data-theme=dark] .token.inserted,html[data-theme=dark] .token.regex,html[data-theme=dark] .token.attr-value,html[data-theme=dark] .token.attr-value>.token.punctuation{color:#98c379}html[data-theme=dark] .token.variable,html[data-theme=dark] .token.operator,html[data-theme=dark] .token.function{color:#61afef}html[data-theme=dark] .token.url{color:#56b6c2}html[data-theme=dark] .token.attr-value>.token.punctuation.attr-equals,html[data-theme=dark] .token.special-attr>.token.attr-value>.token.value.css{color:#abb2bf}html[data-theme=dark] .language-css .token.selector{color:#e06c75}html[data-theme=dark] .language-css .token.property{color:#abb2bf}html[data-theme=dark] .language-css .token.function,html[data-theme=dark] .language-css .token.url>.token.function{color:#56b6c2}html[data-theme=dark] .language-css .token.url>.token.string.url{color:#98c379}html[data-theme=dark] .language-css .token.important,html[data-theme=dark] .language-css .token.atrule .token.rule,html[data-theme=dark] .language-javascript .token.operator{color:#c678dd}html[data-theme=dark] .language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#be5046}html[data-theme=dark] .language-json .token.operator{color:#abb2bf}html[data-theme=dark] .language-json .token.null.keyword{color:#d19a66}html[data-theme=dark] .language-markdown .token.url,html[data-theme=dark] .language-markdown .token.url>.token.operator,html[data-theme=dark] .language-markdown .token.url-reference.url>.token.string{color:#abb2bf}html[data-theme=dark] .language-markdown .token.url>.token.content{color:#61afef}html[data-theme=dark] .language-markdown .token.url>.token.url,html[data-theme=dark] .language-markdown .token.url-reference.url{color:#56b6c2}html[data-theme=dark] .language-markdown .token.blockquote.punctuation,html[data-theme=dark] .language-markdown .token.hr.punctuation{color:#5c6370;font-style:italic}html[data-theme=dark] .language-markdown .token.code-snippet{color:#98c379}html[data-theme=dark] .language-markdown .token.bold .token.content{color:#d19a66}html[data-theme=dark] .language-markdown .token.italic .token.content{color:#c678dd}html[data-theme=dark] .language-markdown .token.strike .token.content,html[data-theme=dark] .language-markdown .token.strike .token.punctuation,html[data-theme=dark] .language-markdown .token.list.punctuation,html[data-theme=dark] .language-markdown .token.title.important>.token.punctuation{color:#e06c75}html[data-theme=dark] .token.bold{font-weight:700}html[data-theme=dark] .token.comment,html[data-theme=dark] .token.italic{font-style:italic}html[data-theme=dark] .token.entity{cursor:help}html[data-theme=dark] .token.namespace{opacity:.8}.sr-only{position:absolute;overflow:hidden;clip:rect(0,0,0,0);width:1px;height:1px;margin:-1px;padding:0;border-width:0;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media print{.theme-hope-content{margin:0!important;padding-inline:0!important}}.theme-hope-content.custom{margin:0;padding:0}.theme-hope-content:not(.custom){max-width:var(--content-width, 740px);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.theme-hope-content:not(.custom){padding:1.5rem}}@media (max-width: 419px){.theme-hope-content:not(.custom){padding:1rem 1.5rem}}@media print{.theme-hope-content:not(.custom){max-width:unset}}.theme-hope-content:not(.custom)>h1,.theme-hope-content:not(.custom)>h2,.theme-hope-content:not(.custom)>h3,.theme-hope-content:not(.custom)>h4,.theme-hope-content:not(.custom)>h5,.theme-hope-content:not(.custom)>h6{margin-top:calc(.5rem - var(--navbar-height));margin-bottom:.5rem;padding-top:calc(1rem + var(--navbar-height));outline:none}.theme-container.no-navbar .theme-hope-content:not(.custom)>h1,.theme-container.no-navbar .theme-hope-content:not(.custom)>h2,.theme-container.no-navbar .theme-hope-content:not(.custom)>h3,.theme-container.no-navbar .theme-hope-content:not(.custom)>h4,.theme-container.no-navbar .theme-hope-content:not(.custom)>h5,.theme-container.no-navbar .theme-hope-content:not(.custom)>h6{margin-top:1.5rem;padding-top:0}.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:justify;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}@media (max-width: 419px){.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}@media print{.theme-hope-content:not(.custom)>p,.theme-hope-content:not(.custom)>ul p,.theme-hope-content:not(.custom)>ol p{text-align:start}}.theme-hope-content a:hover{text-decoration:underline}.theme-hope-content img{max-width:100%}@media (min-width: 1280px){.chart-wrapper::-webkit-scrollbar,.flowchart-wrapper::-webkit-scrollbar,.mermaid-wrapper::-webkit-scrollbar{width:8px;height:8px}.chart-wrapper::-webkit-scrollbar-track-piece,.flowchart-wrapper::-webkit-scrollbar-track-piece,.mermaid-wrapper::-webkit-scrollbar-track-piece{border-radius:8px;background:rgba(0,0,0,.1)}}html[dir=rtl] a.header-anchor{float:right}#docsearch-container{min-width:145.7px!important}@media (max-width: 959px){#docsearch-container{min-width:36px!important}}.DocSearch.DocSearch-Button{margin-left:0}@media (max-width: 959px){.DocSearch.DocSearch-Button{min-width:36px!important}}.DocSearch .DocSearch-Button-Placeholder{display:inline-block;padding:4px 12px 4px 6px;font-size:14px}@media (max-width: 719px){.DocSearch .DocSearch-Button-Placeholder{display:none}}.DocSearch .DocSearch-Search-Icon{width:1.25em;height:1.25em}@media (max-width: 959px){.DocSearch .DocSearch-Button-Keys{display:none}}.DocSearch .DocSearch-Button-Key{background:var(--bg-color);box-shadow:none}:root{scrollbar-width:thin}@media (prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track-piece{border-radius:6px;background:rgba(0,0,0,.1)}::-webkit-scrollbar-thumb{border-radius:6px;background:var(--theme-color)}::-webkit-scrollbar-thumb:active{background:var(--theme-color-light)}@media (max-width: 719px){.hide-in-mobile{display:none!important}}@media (max-width: 959px){.hide-in-pad{display:none!important}}.page-author-item{display:inline-block;margin:0 4px;font-weight:400;overflow-wrap:break-word}.page-category-info{flex-wrap:wrap}.page-category-item{display:inline-block;margin:.125em .25em;padding:0 .25em;border-radius:.25em;background:var(--bg-color-secondary);color:var(--text-color-light);font-weight:700;font-size:.75rem;line-height:2;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-category-item{padding:0;font-weight:400}.page-category-item:after{content:", "}.page-category-item:last-of-type:after{content:""}}.page-category-item.clickable>span:hover{color:var(--theme-color);cursor:pointer}.page-category-item.category0{background:#fde5e7;color:#ec2f3e}html[data-theme=dark] .page-category-item.category0{background:#340509;color:#ba111f}.page-category-item.category0:hover{background:#f9bec3}html[data-theme=dark] .page-category-item.category0:hover{background:#53080e}.page-category-item.category1{background:#ffeee8;color:#fb7649}html[data-theme=dark] .page-category-item.category1{background:#441201;color:#f54205}.page-category-item.category1:hover{background:#fed4c6}html[data-theme=dark] .page-category-item.category1:hover{background:#6d1d02}.page-category-item.category2{background:#fef5e7;color:#f5b041}html[data-theme=dark] .page-category-item.category2{background:#3e2703;color:#e08e0b}.page-category-item.category2:hover{background:#fce6c4}html[data-theme=dark] .page-category-item.category2:hover{background:#633f05}.page-category-item.category3{background:#eafaf1;color:#55d98d}html[data-theme=dark] .page-category-item.category3{background:#0c331c;color:#29b866}.page-category-item.category3:hover{background:#caf3db}html[data-theme=dark] .page-category-item.category3:hover{background:#12522d}.page-category-item.category4{background:#e6f9ee;color:#36d278}html[data-theme=dark] .page-category-item.category4{background:#092917;color:#219552}.page-category-item.category4:hover{background:#c0f1d5}html[data-theme=dark] .page-category-item.category4:hover{background:#0f4224}.page-category-item.category5{background:#e1fcfc;color:#16e1e1}html[data-theme=dark] .page-category-item.category5{background:#042929;color:#0e9595}.page-category-item.category5:hover{background:#b4f8f8}html[data-theme=dark] .page-category-item.category5:hover{background:#064242}.page-category-item.category6{background:#e4f0fe;color:#2589f6}html[data-theme=dark] .page-category-item.category6{background:#021b36;color:#0862c3}.page-category-item.category6:hover{background:#bbdafc}html[data-theme=dark] .page-category-item.category6:hover{background:#042c57}.page-category-item.category7{background:#f7f1fd;color:#bb8ced}html[data-theme=dark] .page-category-item.category7{background:#2a0b4b;color:#9851e4}.page-category-item.category7:hover{background:#eadbfa}html[data-theme=dark] .page-category-item.category7:hover{background:#431277}.page-category-item.category8{background:#fdeaf5;color:#ef59ab}html[data-theme=dark] .page-category-item.category8{background:#400626;color:#e81689}.page-category-item.category8:hover{background:#facbe5}html[data-theme=dark] .page-category-item.category8:hover{background:#670a3d}.page-original-info{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;padding:0 .5em;border:.5px solid var(--dark-grey);border-radius:.75em;background:var(--bg-color);font-size:.75em;line-height:1.5!important}.page-info{display:flex;flex-wrap:wrap;align-items:center;place-content:stretch flex-start;color:var(--dark-grey);font-size:14px}@media print{.page-info{display:flex!important}}.page-info>span{display:flex;align-items:center;max-width:100%;margin-inline-end:.5em;line-height:2}@media (min-width: 1440px){.page-info>span{font-size:1.1em}}@media (max-width: 419px){.page-info>span{margin-inline-end:.3em;font-size:.875em}}@media print{.page-info>span{display:flex!important}}.page-info .icon{position:relative;display:inline-block;vertical-align:middle;width:1em;height:1em;margin-inline-end:.25em}.page-info a{color:inherit}.page-info a:hover,.page-info a:active{color:var(--theme-color)}.page-meta{max-width:var(--content-width, 740px);margin-inline:auto;padding-inline:2.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto;padding-top:.75rem;padding-bottom:.75rem}@media (max-width: 959px){.page-meta{padding-inline:1.5rem}}@media print{.page-meta{max-width:unset}}@media print{.page-meta{margin:0!important;padding-inline:0!important}}@media (max-width: 719px){.page-meta{display:block}}.page-meta .meta-item{flex-grow:1}.page-meta .meta-item .label{font-weight:500}.page-meta .meta-item .label:not(a){color:var(--text-color-lighter)}.page-meta .meta-item .info{color:var(--dark-grey);font-weight:400}.page-meta .git-info{text-align:end}.page-meta .edit-link{margin-top:.25rem;margin-bottom:.25rem;margin-inline-end:.5rem;font-size:14px}@media print{.page-meta .edit-link{display:none}}.page-meta .edit-link .icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-inline-end:.25em}.page-meta .update-time,.page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.page-meta .update-time,.page-meta .contributors{font-size:13px;text-align:start}}.print-button{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;border-radius:.25em;color:inherit;font-size:1rem;transform:translateY(.25rem)}@media print{.print-button{display:none}}.page-tag-info{flex-wrap:wrap}.page-tag-item{position:relative;display:inline-block;vertical-align:middle;overflow:hidden;min-width:1.5rem;margin:.125rem;padding:.125rem .25rem .125rem .625rem;background:var(--bg-color-secondary);background:linear-gradient(135deg,transparent .75em,var(--bg-color-secondary) 0) top,linear-gradient(45deg,transparent .75em,var(--bg-color-secondary) 0) bottom;background-size:100% 52%!important;background-repeat:no-repeat!important;color:var(--text-color-light);font-weight:700;font-size:.625rem;line-height:1.5;text-align:center;transition:background var(--color-transition),color var(--color-transition)}@media print{.page-tag-item{padding:0;font-weight:400}.page-tag-item:after{content:", "}.page-tag-item:last-of-type:after{content:""}}.page-tag-item.clickable:hover{cursor:pointer}.page-tag-item.tag0{background:#fde5e7;background:linear-gradient(135deg,transparent .75em,#fde5e7 0) top,linear-gradient(45deg,transparent .75em,#fde5e7 0) bottom;color:#ec2f3e}html[data-theme=dark] .page-tag-item.tag0{background:#340509;background:linear-gradient(135deg,transparent .75em,#340509 0) top,linear-gradient(45deg,transparent .75em,#340509 0) bottom;color:#ba111f}.page-tag-item.tag0.clickable:hover{background:#f9bec3;background:linear-gradient(135deg,transparent .75em,#f9bec3 0) top,linear-gradient(45deg,transparent .75em,#f9bec3 0) bottom}html[data-theme=dark] .page-tag-item.tag0.clickable:hover{background:#53080e;background:linear-gradient(135deg,transparent .75em,#53080e 0) top,linear-gradient(45deg,transparent .75em,#53080e 0) bottom}.page-tag-item.tag1{background:#ffeee8;background:linear-gradient(135deg,transparent .75em,#ffeee8 0) top,linear-gradient(45deg,transparent .75em,#ffeee8 0) bottom;color:#fb7649}html[data-theme=dark] .page-tag-item.tag1{background:#441201;background:linear-gradient(135deg,transparent .75em,#441201 0) top,linear-gradient(45deg,transparent .75em,#441201 0) bottom;color:#f54205}.page-tag-item.tag1.clickable:hover{background:#fed4c6;background:linear-gradient(135deg,transparent .75em,#fed4c6 0) top,linear-gradient(45deg,transparent .75em,#fed4c6 0) bottom}html[data-theme=dark] .page-tag-item.tag1.clickable:hover{background:#6d1d02;background:linear-gradient(135deg,transparent .75em,#6d1d02 0) top,linear-gradient(45deg,transparent .75em,#6d1d02 0) bottom}.page-tag-item.tag2{background:#fef5e7;background:linear-gradient(135deg,transparent .75em,#fef5e7 0) top,linear-gradient(45deg,transparent .75em,#fef5e7 0) bottom;color:#f5b041}html[data-theme=dark] .page-tag-item.tag2{background:#3e2703;background:linear-gradient(135deg,transparent .75em,#3e2703 0) top,linear-gradient(45deg,transparent .75em,#3e2703 0) bottom;color:#e08e0b}.page-tag-item.tag2.clickable:hover{background:#fce6c4;background:linear-gradient(135deg,transparent .75em,#fce6c4 0) top,linear-gradient(45deg,transparent .75em,#fce6c4 0) bottom}html[data-theme=dark] .page-tag-item.tag2.clickable:hover{background:#633f05;background:linear-gradient(135deg,transparent .75em,#633f05 0) top,linear-gradient(45deg,transparent .75em,#633f05 0) bottom}.page-tag-item.tag3{background:#eafaf1;background:linear-gradient(135deg,transparent .75em,#eafaf1 0) top,linear-gradient(45deg,transparent .75em,#eafaf1 0) bottom;color:#55d98d}html[data-theme=dark] .page-tag-item.tag3{background:#0c331c;background:linear-gradient(135deg,transparent .75em,#0c331c 0) top,linear-gradient(45deg,transparent .75em,#0c331c 0) bottom;color:#29b866}.page-tag-item.tag3.clickable:hover{background:#caf3db;background:linear-gradient(135deg,transparent .75em,#caf3db 0) top,linear-gradient(45deg,transparent .75em,#caf3db 0) bottom}html[data-theme=dark] .page-tag-item.tag3.clickable:hover{background:#12522d;background:linear-gradient(135deg,transparent .75em,#12522d 0) top,linear-gradient(45deg,transparent .75em,#12522d 0) bottom}.page-tag-item.tag4{background:#e6f9ee;background:linear-gradient(135deg,transparent .75em,#e6f9ee 0) top,linear-gradient(45deg,transparent .75em,#e6f9ee 0) bottom;color:#36d278}html[data-theme=dark] .page-tag-item.tag4{background:#092917;background:linear-gradient(135deg,transparent .75em,#092917 0) top,linear-gradient(45deg,transparent .75em,#092917 0) bottom;color:#219552}.page-tag-item.tag4.clickable:hover{background:#c0f1d5;background:linear-gradient(135deg,transparent .75em,#c0f1d5 0) top,linear-gradient(45deg,transparent .75em,#c0f1d5 0) bottom}html[data-theme=dark] .page-tag-item.tag4.clickable:hover{background:#0f4224;background:linear-gradient(135deg,transparent .75em,#0f4224 0) top,linear-gradient(45deg,transparent .75em,#0f4224 0) bottom}.page-tag-item.tag5{background:#e1fcfc;background:linear-gradient(135deg,transparent .75em,#e1fcfc 0) top,linear-gradient(45deg,transparent .75em,#e1fcfc 0) bottom;color:#16e1e1}html[data-theme=dark] .page-tag-item.tag5{background:#042929;background:linear-gradient(135deg,transparent .75em,#042929 0) top,linear-gradient(45deg,transparent .75em,#042929 0) bottom;color:#0e9595}.page-tag-item.tag5.clickable:hover{background:#b4f8f8;background:linear-gradient(135deg,transparent .75em,#b4f8f8 0) top,linear-gradient(45deg,transparent .75em,#b4f8f8 0) bottom}html[data-theme=dark] .page-tag-item.tag5.clickable:hover{background:#064242;background:linear-gradient(135deg,transparent .75em,#064242 0) top,linear-gradient(45deg,transparent .75em,#064242 0) bottom}.page-tag-item.tag6{background:#e4f0fe;background:linear-gradient(135deg,transparent .75em,#e4f0fe 0) top,linear-gradient(45deg,transparent .75em,#e4f0fe 0) bottom;color:#2589f6}html[data-theme=dark] .page-tag-item.tag6{background:#021b36;background:linear-gradient(135deg,transparent .75em,#021b36 0) top,linear-gradient(45deg,transparent .75em,#021b36 0) bottom;color:#0862c3}.page-tag-item.tag6.clickable:hover{background:#bbdafc;background:linear-gradient(135deg,transparent .75em,#bbdafc 0) top,linear-gradient(45deg,transparent .75em,#bbdafc 0) bottom}html[data-theme=dark] .page-tag-item.tag6.clickable:hover{background:#042c57;background:linear-gradient(135deg,transparent .75em,#042c57 0) top,linear-gradient(45deg,transparent .75em,#042c57 0) bottom}.page-tag-item.tag7{background:#f7f1fd;background:linear-gradient(135deg,transparent .75em,#f7f1fd 0) top,linear-gradient(45deg,transparent .75em,#f7f1fd 0) bottom;color:#bb8ced}html[data-theme=dark] .page-tag-item.tag7{background:#2a0b4b;background:linear-gradient(135deg,transparent .75em,#2a0b4b 0) top,linear-gradient(45deg,transparent .75em,#2a0b4b 0) bottom;color:#9851e4}.page-tag-item.tag7.clickable:hover{background:#eadbfa;background:linear-gradient(135deg,transparent .75em,#eadbfa 0) top,linear-gradient(45deg,transparent .75em,#eadbfa 0) bottom}html[data-theme=dark] .page-tag-item.tag7.clickable:hover{background:#431277;background:linear-gradient(135deg,transparent .75em,#431277 0) top,linear-gradient(45deg,transparent .75em,#431277 0) bottom}.page-tag-item.tag8{background:#fdeaf5;background:linear-gradient(135deg,transparent .75em,#fdeaf5 0) top,linear-gradient(45deg,transparent .75em,#fdeaf5 0) bottom;color:#ef59ab}html[data-theme=dark] .page-tag-item.tag8{background:#400626;background:linear-gradient(135deg,transparent .75em,#400626 0) top,linear-gradient(45deg,transparent .75em,#400626 0) bottom;color:#e81689}.page-tag-item.tag8.clickable:hover{background:#facbe5;background:linear-gradient(135deg,transparent .75em,#facbe5 0) top,linear-gradient(45deg,transparent .75em,#facbe5 0) bottom}html[data-theme=dark] .page-tag-item.tag8.clickable:hover{background:#670a3d;background:linear-gradient(135deg,transparent .75em,#670a3d 0) top,linear-gradient(45deg,transparent .75em,#670a3d 0) bottom}.toc-place-holder{margin-inline:auto;padding-inline:2.5rem;position:sticky;top:calc(var(--navbar-height) + 2rem);z-index:99;max-width:var(--content-width, 740px)}@media (max-width: 959px){.toc-place-holder{padding-inline:1.5rem}}@media print{.toc-place-holder{max-width:unset}}.toc-place-holder+.theme-hope-content:not(.custom){padding-top:0}#toc{position:absolute;inset-inline-start:calc(100% + 1rem);display:none;min-width:10rem;max-width:15rem}@media (min-width: 1440px){.has-toc #toc{display:block}}@media print{#toc{display:none!important}}#toc .toc-header{margin-bottom:.75rem;margin-inline-start:.5rem;font-weight:600;font-size:.875rem}#toc .toc-wrapper{position:relative;overflow:hidden auto;max-height:75vh;margin:0 .5rem;padding-inline-start:8px;text-overflow:ellipsis;white-space:nowrap;scroll-behavior:smooth}#toc .toc-wrapper::-webkit-scrollbar-track-piece{background:transparent}#toc .toc-wrapper::-webkit-scrollbar{width:3px}#toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#ddd}html[data-theme=dark] #toc .toc-wrapper::-webkit-scrollbar-thumb:vertical{background:#333}#toc .toc-wrapper:before{content:" ";position:absolute;top:0;bottom:0;inset-inline-start:0;z-index:-1;width:2px;background:var(--border-color)}#toc .toc-list{position:relative;margin:0;padding:0}#toc .toc-marker{content:" ";position:absolute;top:0;inset-inline-start:-8px;z-index:2;width:2px;height:1.7rem;background:var(--theme-color);transition:top var(--vp-tt)}#toc .toc-link{position:relative;display:block;overflow:hidden;max-width:100%;color:var(--light-grey);line-height:inherit;text-overflow:ellipsis;white-space:nowrap}#toc .toc-link.level2{padding-inline-start:0px;font-size:14px}#toc .toc-link.level3{padding-inline-start:8px;font-size:13px}#toc .toc-link.level4{padding-inline-start:16px;font-size:12px}#toc .toc-link.level5{padding-inline-start:24px;font-size:11px}#toc .toc-link.level6{padding-inline-start:32px;font-size:10px}#toc .toc-item{position:relative;box-sizing:border-box;height:1.7rem;padding:0 .5rem;list-style:none;line-height:1.7rem}#toc .toc-item:hover>.toc-link{color:var(--theme-color)}#toc .toc-item.active>.toc-link{color:var(--theme-color);font-weight:700}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper:not(:hover) .arrow{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title{border-width:0;background:transparent;cursor:pointer;padding:0 .25rem;color:var(--dark-grey);font-weight:500;font-size:inherit;font-family:inherit;line-height:inherit;cursor:inherit}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .icon{margin-inline-end:.25em;font-size:1em}.dropdown-wrapper .dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:1.2em}html[data-theme=dark] .dropdown-wrapper .dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.down{transform:rotate(-180deg)}.dropdown-wrapper .dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.end,.dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .dropdown-wrapper .dropdown-title .arrow.start{transform:rotate(90deg)}.dropdown-wrapper ul{margin:0;padding:0;list-style-type:none}.dropdown-wrapper .nav-dropdown{position:absolute;top:100%;inset-inline-end:0;overflow-y:auto;box-sizing:border-box;min-width:6rem;max-height:calc(100vh - var(--navbar-height));margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.5rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.9)}.dropdown-wrapper:hover .nav-dropdown,.dropdown-wrapper.open .nav-dropdown{z-index:2;opacity:1;visibility:visible;transform:none}.dropdown-wrapper .nav-link{position:relative;display:block;margin-bottom:0;border-bottom:none;color:var(--dark-grey);font-weight:400;font-size:.875rem;line-height:1.7rem;transition:color var(--color-transition)}.dropdown-wrapper .nav-link:hover,.dropdown-wrapper .nav-link.active{color:var(--theme-color)}.dropdown-wrapper .dropdown-subtitle{margin:0;padding:.5rem .25rem 0;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.dropdown-wrapper .dropdown-subitem-wrapper{padding:0 0 .25rem}.dropdown-wrapper .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .dropdown-item:last-child .dropdown-subtitle{padding-top:0}.dropdown-wrapper .dropdown-item:last-child .dropdown-subitem-wrapper{padding-bottom:0}.nav-screen-dropdown-title{border-width:0;background:transparent;position:relative;display:flex;align-items:center;width:100%;padding:0;color:var(--dark-grey);font-size:inherit;font-family:inherit;text-align:start;cursor:pointer}.nav-screen-dropdown-title:hover,.nav-screen-dropdown-title.active{color:var(--text-color)}.nav-screen-dropdown-title .title{flex:1}.nav-screen-dropdown-title .arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}html[data-theme=dark] .nav-screen-dropdown-title .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.nav-screen-dropdown-title .arrow.down{transform:rotate(180deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.down{transform:rotate(-180deg)}.nav-screen-dropdown-title .arrow.end{transform:rotate(90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.end,.nav-screen-dropdown-title .arrow.start{transform:rotate(-90deg)}html[dir=rtl] .nav-screen-dropdown-title .arrow.start{transform:rotate(90deg)}.nav-screen-dropdown{overflow:hidden;margin:.5rem 0 0;padding:0;list-style:none;transition:transform .1s ease-out;transform:scaleY(1);transform-origin:top}.nav-screen-dropdown.hide{height:0;margin:0;transform:scaleY(0)}.nav-screen-dropdown .nav-link{position:relative;display:block;padding-inline-start:.5rem;font-weight:400;line-height:2}.nav-screen-dropdown .nav-link:hover,.nav-screen-dropdown .nav-link.active{color:var(--theme-color)}.nav-screen-dropdown .nav-link .icon{font-size:1em}.nav-screen-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.nav-screen-dropdown .dropdown-subtitle{margin:0;padding-inline-start:.25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;text-transform:uppercase;transition:color var(--color-transition)}.nav-screen-dropdown .dropdown-subtitle .nav-link{padding:0}.nav-screen-dropdown .dropdown-subitem-wrapper{margin:0;padding:0;list-style:none}.nav-screen-dropdown .dropdown-subitem{padding-inline-start:.5rem;font-size:.9em}.nav-screen-links{display:none;padding-bottom:.75rem}@media (max-width: 719px){.nav-screen-links{display:block}}.nav-screen-links .navbar-links-item{position:relative;display:block;padding:12px 4px 11px 0;border-bottom:1px solid var(--border-color);font-size:16px;line-height:1.5rem;transition:border-bottom-color var(--color-transition)}.nav-screen-links .nav-link{display:inline-block;width:100%;color:var(--dark-grey);font-weight:400}.nav-screen-links .nav-link:hover{color:var(--text-color)}.nav-screen-links .nav-link.active{color:var(--theme-color)}.vp-nav-screen-container{max-width:320px;margin:0 auto;padding:2rem 0 4rem}#nav-screen{position:fixed;inset:var(--navbar-height) 0 0 0;z-index:150;display:none;overflow-y:auto;padding:0 2rem;background:var(--bg-color);transition:background .5s}@media (max-width: 719px){#nav-screen{display:block}}#nav-screen.fade-enter-active,#nav-screen.fade-leave-active{transition:opacity .25s}#nav-screen.fade-enter-active .vp-nav-screen-container,#nav-screen.fade-leave-active .vp-nav-screen-container{transition:transform .25s ease}#nav-screen.fade-enter-from,#nav-screen.fade-leave-to{opacity:0}#nav-screen.fade-enter-from .vp-nav-screen-container,#nav-screen.fade-leave-to .vp-nav-screen-container{transform:translateY(-8px)}#nav-screen .icon{margin-inline-end:.25em;font-size:1em}#nav-screen img.icon{vertical-align:-.125em;height:1em}.vp-outlook-wrapper{display:flex;justify-content:space-around}.vp-nav-logo{vertical-align:top;height:var(--navbar-line-height);margin-inline-end:.8rem}.vp-nav-logo.light{display:inline-block}.vp-nav-logo.dark,html[data-theme=dark] .vp-nav-logo.light{display:none}html[data-theme=dark] .vp-nav-logo.dark{display:inline-block}.vp-site-name{position:relative;color:var(--text-color);font-size:1.25rem}@media (max-width: 719px){.vp-site-name{overflow:hidden;width:calc(100vw - 9.4rem);text-overflow:ellipsis;white-space:nowrap}}.vp-brand:hover .vp-site-name{color:var(--theme-color)}.vp-navbar .vp-nav-links{display:flex;align-items:center;font-size:.875rem}.vp-navbar .nav-item{position:relative;margin:0 .25rem;line-height:2rem}.vp-navbar .nav-item:first-child{margin-inline-start:0}.vp-navbar .nav-item:last-child{margin-inline-end:0}.vp-navbar .nav-item>.nav-link{color:var(--dark-grey)}.vp-navbar .nav-item>.nav-link:after{content:" ";position:absolute;inset:auto 50% 0;height:2px;border-radius:1px;background:var(--theme-color-light);visibility:hidden;transition:inset .2s ease-in-out}.vp-navbar .nav-item>.nav-link.active{color:var(--theme-color)}.vp-navbar .nav-item>.nav-link:hover:after,.vp-navbar .nav-item>.nav-link.active:after{inset:auto 0 0;visibility:visible}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - var(--navbar-vertical-padding) * 2 );position:fixed;inset:0 0 auto;z-index:175;display:flex;align-items:center;justify-content:space-between;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-vertical-padding) var(--navbar-horizontal-padding);background:var(--navbar-bg-color);box-shadow:0 2px 8px var(--card-shadow);line-height:var(--navbar-line-height);white-space:nowrap;transition:transform ease-in-out .3s,background var(--color-transition),box-shadow var(--color-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px)}@media print{.vp-navbar{display:none}}.hide-navbar .vp-navbar.auto-hide{transform:translateY(-100%)}.vp-navbar .nav-link{padding:0 .25rem;color:var(--dark-grey)}.vp-navbar .nav-link.active{color:var(--theme-color)}.vp-navbar .nav-link .icon{margin-inline-end:.25em;font-size:1em}.vp-navbar .nav-link img.icon{vertical-align:-.125em;height:1em}.vp-navbar.hide-icon .vp-nav-links .icon{display:none!important}.vp-navbar-start,.vp-navbar-end,.vp-navbar-center{display:flex;flex:1;align-items:center}.vp-navbar-start>*,.vp-navbar-end>*,.vp-navbar-center>*{position:relative;margin:0 .25rem!important}.vp-navbar-start>*:first-child,.vp-navbar-end>*:first-child,.vp-navbar-center>*:first-child{margin-inline-start:0!important}.vp-navbar-start>*:last-child,.vp-navbar-end>*:last-child,.vp-navbar-center>*:last-child{margin-inline-end:0!important}.vp-navbar-start{justify-content:start}.vp-navbar-center{justify-content:center}.vp-navbar-end{justify-content:end}.vp-navbar .vp-repo{margin:0!important}.vp-navbar .vp-repo-link{display:inline-block;margin:auto;padding:6px;color:var(--dark-grey);line-height:1}.vp-navbar .vp-repo-link:hover,.vp-navbar .vp-repo-link:active{color:var(--theme-color)}.vp-toggle-navbar-button{border-width:0;background:transparent;cursor:pointer;position:relative;display:none;align-items:center;justify-content:center;padding:6px}@media screen and (max-width: 719px){.vp-toggle-navbar-button{display:flex}}.vp-toggle-navbar-button>span{position:relative;overflow:hidden;width:16px;height:14px}.vp-toggle-navbar-button .vp-top,.vp-toggle-navbar-button .vp-middle,.vp-toggle-navbar-button .vp-bottom{position:absolute;width:16px;height:2px;background:var(--dark-grey);transition:top .25s,background .5s,transform .25s}.vp-toggle-navbar-button .vp-top{top:0;left:0;transform:translate(0)}.vp-toggle-navbar-button .vp-middle{top:6px;left:0;transform:translate(8px)}.vp-toggle-navbar-button .vp-bottom{top:12px;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-top{top:0;left:0;transform:translate(4px)}.vp-toggle-navbar-button:hover .vp-middle{top:6;left:0;transform:translate(0)}.vp-toggle-navbar-button:hover .vp-bottom{top:12px;left:0;transform:translate(8px)}.vp-toggle-navbar-button.is-active .vp-top{top:6px;transform:translate(0) rotate(225deg)}.vp-toggle-navbar-button.is-active .vp-middle{top:6px;transform:translate(16px)}.vp-toggle-navbar-button.is-active .vp-bottom{top:6px;transform:translate(0) rotate(135deg)}.vp-toggle-navbar-button.is-active:hover .vp-top,.vp-toggle-navbar-button.is-active:hover .vp-middle,.vp-toggle-navbar-button.is-active:hover .vp-bottom{background:var(--theme-color);transition:top .25s,background .25s,transform .25s}.vp-toggle-sidebar-button{border-width:0;background:transparent;cursor:pointer;display:none;vertical-align:middle;box-sizing:content-box;width:1rem;height:1rem;padding:.5rem;font:unset;transition:transform .2s ease-in-out}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block;padding-inline-end:var(--navbar-mobile-horizontal-padding)}}.vp-toggle-sidebar-button:before,.vp-toggle-sidebar-button:after,.vp-toggle-sidebar-button .icon{display:block;width:100%;height:2px;border-radius:.05em;background:var(--dark-grey);transition:transform .2s ease-in-out}.vp-toggle-sidebar-button:before{content:" ";margin-top:.125em}.sidebar-open .vp-toggle-sidebar-button:before{transform:translateY(.34rem) rotate(135deg)}.vp-toggle-sidebar-button:after{content:" ";margin-bottom:.125em}.sidebar-open .vp-toggle-sidebar-button:after{transform:translateY(-.34rem) rotate(-135deg)}.vp-toggle-sidebar-button .icon{margin:.2em 0}.sidebar-open .vp-toggle-sidebar-button .icon{transform:scale(0)}.appearance-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#appearance-switch{border-width:0;background:transparent;vertical-align:middle;padding:6px;color:var(--dark-grey);cursor:pointer;transition:color var(--color-transition)}#appearance-switch:hover{color:var(--theme-color)}#appearance-switch .icon{width:1.25rem;height:1.25rem}.outlook-button{border-width:0;background:transparent;cursor:pointer;position:relative;padding:.375rem;color:var(--dark-grey)}.outlook-button .icon{vertical-align:middle;width:1.25rem;height:1.25rem}.outlook-dropdown{position:absolute;top:100%;inset-inline-end:0;overflow-y:auto;box-sizing:border-box;min-width:100px;margin:0;padding:.5rem .75rem;border:1px solid var(--grey14);border-radius:.25rem;background:var(--bg-color);box-shadow:2px 2px 10px var(--card-shadow);text-align:start;white-space:nowrap;opacity:0;visibility:hidden;transition:all .18s ease-out;transform:scale(.8)}.outlook-dropdown>*:not(:last-child){padding-bottom:.5rem;border-bottom:1px solid var(--grey14)}.outlook-button:hover .outlook-dropdown,.outlook-button.open .outlook-dropdown{z-index:2;opacity:1;visibility:visible;transform:scale(1)}.theme-color-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}#theme-color-picker{display:flex;margin:0;padding:0;list-style-type:none;font-size:14px}#theme-color-picker li span{display:inline-block;vertical-align:middle;width:15px;height:15px;margin:0 2px;border-radius:2px}#theme-color-picker li span.theme-color,#theme-color-picker li span.theme-color html[data-theme=dark]{background:#5c92d1}@media print{.full-screen-wrapper{display:none}}.full-screen-title{display:block;margin:0;padding:0 .25rem;color:var(--light-grey);font-weight:600;font-size:.75rem;line-height:2;transition:color var(--color-transition)}.full-screen,.cancel-full-screen{border-width:0;background:transparent;vertical-align:middle;padding:.375rem;color:var(--dark-grey);cursor:pointer}.full-screen:hover,.cancel-full-screen:hover{color:var(--theme-color)}.full-screen .icon,.cancel-full-screen .icon{width:1.25rem;height:1.25rem}.enter-fullscreen-icon:hover,.cancel-fullscreen-icon{color:var(--theme-color)}.cancel-fullscreen-icon:hover{color:var(--dark-grey)}.vp-sidebar-heading{display:flex;align-items:center;overflow:hidden;box-sizing:border-box;width:calc(100% - 1rem);margin:0;margin-inline:.5rem;padding:.25rem .5rem;border-width:0;border-radius:.375rem;background:transparent;color:var(--text-color);font-size:1.1em;line-height:1.5;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color .15s ease;transform:rotate(0)}.vp-sidebar-heading.open{color:inherit}.vp-sidebar-heading.clickable:hover{background:var(--bg-color-secondary)}.vp-sidebar-heading.clickable.exact{border-inline-start-color:var(--theme-color);color:var(--theme-color)}.vp-sidebar-heading.clickable.exact a{color:inherit}.vp-sidebar-heading .vp-sidebar-title{flex:1}.vp-sidebar-heading .vp-arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s;font-size:1.5em}html[data-theme=dark] .vp-sidebar-heading .vp-arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.vp-sidebar-heading .vp-arrow.down{transform:rotate(180deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.down{transform:rotate(-180deg)}.vp-sidebar-heading .vp-arrow.end{transform:rotate(90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.end,.vp-sidebar-heading .vp-arrow.start{transform:rotate(-90deg)}html[dir=rtl] .vp-sidebar-heading .vp-arrow.start{transform:rotate(90deg)}button.vp-sidebar-heading{outline:none;font-weight:inherit;font-family:inherit;line-height:inherit;text-align:start;cursor:pointer}.vp-sidebar-link{display:inline-block;box-sizing:border-box;width:calc(100% - 1rem);margin-inline:.5rem;padding:.25rem .5rem;border-radius:.375rem;color:var(--text-color);font-weight:400;font-size:1em;line-height:1.5}.vp-sidebar-link:hover{background:var(--bg-color-secondary)}.vp-sidebar-link.active{background:var(--theme-color-mask);color:var(--theme-color);font-weight:500}.vp-sidebar-link.active .icon{color:var(--theme-color)}.vp-sidebar-sub-headers .vp-sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-inline-start:none}.vp-sidebar-sub-headers .vp-sidebar-link.active{background:transparent;font-weight:500}.vp-sidebar-group:not(.collapsible) .vp-sidebar-heading:not(.clickable){color:inherit;cursor:auto}.vp-sidebar-group .vp-sidebar-group{padding-inline-start:.75rem}.vp-sidebar-group .vp-sidebar-group .vp-sidebar-heading{font-size:1em}.vp-sidebar-group .vp-sidebar-link{padding-inline-start:1.25rem}.vp-sidebar-links,.vp-sidebar-links ul{margin:0;padding:0}.vp-sidebar-links ul.vp-sidebar-sub-headers{padding-inline-start:.75rem;font-size:.95em}@media (min-width: 1440px){.has-toc .vp-sidebar-links ul.vp-sidebar-sub-headers{display:none}}.vp-sidebar-links li{list-style-type:none}.vp-sidebar>.vp-sidebar-links{padding:1.5rem 0}@media (max-width: 719px){.vp-sidebar>.vp-sidebar-links{padding:1rem 0}}.vp-sidebar>.vp-sidebar-links>li>.vp-sidebar-link{font-size:1.1em}.vp-sidebar>.vp-sidebar-links>li:not(:first-child){margin-top:.5rem}.vp-sidebar{position:fixed;top:0;bottom:0;inset-inline-start:0;z-index:1;overflow-y:auto;width:var(--sidebar-width);margin:0;padding-inline-start:calc(var(--sidebar-space) - var(--sidebar-width));background:var(--sidebar-bg-color);box-shadow:2px 0 8px var(--card-shadow);font-size:.94rem;transition:background var(--color-transition),box-shadow var(--color-transition),padding var(--transform-transition),transform var(--transform-transition);-webkit-backdrop-filter:saturate(150%) blur(12px);backdrop-filter:saturate(150%) blur(12px);scrollbar-color:var(--theme-color) var(--border-color);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{font-size:.86em}}@media (max-width: 719px){.vp-sidebar{z-index:125;box-shadow:none;transform:translate(-100%)}html[dir=rtl] .vp-sidebar{transform:translate(100%)}}@media (min-width: 1440px){.vp-sidebar{padding-bottom:3rem;box-shadow:none;font-size:1rem}}@media print{.vp-sidebar{display:none}}.vp-sidebar a{display:inline-block;color:var(--text-color);font-weight:400}.vp-sidebar .icon{margin-inline-end:.25em;font-size:1em}.vp-sidebar img.icon{vertical-align:-.125em;height:1em}.vp-sidebar.hide-icon .icon{display:none!important}.vp-sidebar-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;background:rgba(0,0,0,.15)}.vp-sidebar-mask.fade-enter-active,.vp-sidebar-mask.fade-leave-active{transition:opacity .25s}.vp-sidebar-mask.fade-enter-from,.vp-sidebar-mask.fade-leave-to{opacity:0}.btv{position:relative;width:100%;height:0px;padding-bottom:75%}.btv iframe{position:absolute;width:100%;height:100%;left:0;top:0}.theme-vdoing-content h1,.theme-vdoing-content h2,.theme-vdoing-content h3,.theme-vdoing-content h4,.theme-vdoing-content h5{margin-top:2rem!important;padding-top:0rem!important;margin-bottom:1rem!important}.theme-vdoing-content h3{margin:1.6em auto 1.2em;font-size:1.35rem;line-height:1.43}.theme-vdoing-content h3:before{content:"";height:2rem;width:6px;display:inline-block;vertical-align:middle;background-color:var(--textLightenColor);margin-bottom:.18em;margin-right:8px}.theme-vdoing-content h4:before{border-radius:50%;background-color:var(--textLightenColor);content:"";width:6px;display:inline-block;height:6px;vertical-align:middle;margin-bottom:.18em;margin-right:8px}.theme-vdoing-content h4{font-size:1.25rem}.theme-vdoing-content h5{font-size:16px}.theme-vdoing-content h5:before{background-color:var(--textLightenColor);content:"";width:6px;display:inline-block;height:2px;vertical-align:middle;margin-bottom:.18em;margin-right:8px}.theme-vdoing-wrapper{box-shadow:none!important}@media (min-width: 719px){::-webkit-scrollbar{width:6px!important;height:12px!important}}.search-pro-button{border-width:0;background:transparent;display:inline-flex;align-items:center;box-sizing:content-box;height:1.25rem;margin-inline:1rem 0;margin-top:0;margin-bottom:0;padding:.5rem;border:0;border:1px solid var(--vp-bgl);border-radius:1rem;background:var(--vp-bgl);color:var(--vp-c);font-weight:500;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}@media print{.search-pro-button{display:none}}@media (max-width: 959px){.search-pro-button{border-radius:50%}}.search-pro-button:hover{border:1px solid var(--vp-tc);background-color:var(--vp-bglt);color:var(--vp-clt)}.search-pro-button .search-icon{width:1.25rem;height:1.25rem}.search-pro-placeholder{margin-inline:.25rem;font-size:1rem}@media (max-width: 959px){.search-pro-placeholder{display:none}}.search-pro-key-hints{font-size:.75rem}@media (max-width: 959px){.search-pro-key-hints{display:none}}.search-pro-key{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25rem;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);line-height:1;letter-spacing:-.1em;transition:background var(--vp-ct),color var(--vp-ct),border var(--vp-ct) box-shadow var(--vp-ct)}@keyframes search-pro-fade-in{0%{opacity:.2}to{opacity:1}}.search-pro-modal-wrapper{position:fixed;top:0;right:0;bottom:0;left:0;z-index:997;display:flex;align-items:center;justify-content:center;overflow:auto;cursor:default}.search-pro-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:998;animation:.25s search-pro-fade-in;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.search-pro-modal{position:absolute;z-index:999;display:flex;flex-direction:column;width:calc(100% - 6rem);max-width:50em;border-radius:10px;background:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);transition:background var(--vp-ct);animation:.15s pwa-opened}@media (max-width: 1280px){.search-pro-modal{animation:.25s pwa-mobile}}@media (max-width: 719px){.search-pro-modal{width:100vw;max-width:unset;height:100vh}}.search-pro-box{display:flex;margin:1rem}.search-pro-box form{position:relative;display:flex;flex:1}.search-pro-box label{position:absolute;top:calc(50% - .75rem);inset-inline-start:.5rem;color:var(--vp-tc)}.search-pro-box label .search-icon{width:1.5rem;height:1.5rem}.search-pro-clear-button{border-width:0;background:transparent;cursor:pointer;position:absolute;top:calc(50% - 10px);inset-inline-end:.75rem;padding:0;color:var(--vp-tc)}.search-pro-clear-button:hover{border-radius:50%;background-color:#0000001a}.search-pro-close-button{border-width:0;background:transparent;cursor:pointer;display:none;margin-inline:.5rem -.5rem;padding:.5rem;color:var(--grey3);font-size:1rem}@media (max-width: 719px){.search-pro-close-button{display:block}}.search-pro-input{flex:1;width:0;margin:0;padding-block:.25rem;padding-inline:2.5rem 2rem;border:0;border:2px solid var(--vp-tc);border-radius:8px;background:var(--vp-bg);color:var(--vp-c);outline:none;font-size:1.25rem;line-height:2.5;-webkit-appearance:none;-moz-appearance:none;appearance:none}.search-pro-input::-webkit-search-cancel-button{display:none}.search-pro-suggestions{position:absolute;inset:calc(100% + 4px) 0 auto;z-index:20;overflow:visible;overflow-y:auto;max-height:50vh;margin:0;padding:0;border-radius:.5rem;background-color:var(--vp-bg);box-shadow:2px 2px 10px 0 var(--card-shadow);list-style:none;line-height:1.5}.search-pro-suggestion{padding:.25rem 1rem;border-top:1px solid var(--vp-brc);cursor:pointer}.search-pro-suggestion:first-child{border-top:none}.search-pro-suggestion.active,.search-pro-suggestion:hover{background-color:var(--vp-bglt)}.search-pro-auto-complete{display:none;float:right;margin:0 .5rem;padding:4px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow);font-size:12px;line-height:1}.search-pro-suggestion.active .search-pro-auto-complete{display:block}.search-pro-result-wrapper{flex-grow:1;overflow-y:auto;min-height:40vh;max-height:calc(80vh - 10rem);padding:0 1rem}@media (max-width: 719px){.search-pro-result-wrapper{min-height:unset;max-height:unset}}.search-pro-result-wrapper.loading,.search-pro-result-wrapper.empty{display:flex;align-items:center;justify-content:center;padding:1.5rem;font-weight:600;font-size:22px;text-align:center}.search-pro-hints{margin-top:1rem;padding:.75rem .5rem;box-shadow:0 -1px 4px 0 var(--card-shadow);line-height:1}.search-pro-hint{display:inline-flex;align-items:center;margin:0 .5rem}.search-pro-hint kbd{margin:0 .5rem;padding:2px;border:1px solid var(--vp-brc);border-radius:4px;box-shadow:1px 1px 4px 0 var(--card-shadow)}.search-pro-hint kbd+kbd{margin-inline-start:-.25rem}.search-pro-hint svg{display:block;width:15px;height:15px}.search-pro-result-wrapper{scrollbar-color:var(--vp-tc) var(--vp-brc);scrollbar-width:thin}@media (max-width: 419px){.search-pro-result-wrapper{font-size:14px}}.search-pro-result-wrapper::-webkit-scrollbar{width:6px;height:6px}.search-pro-result-wrapper::-webkit-scrollbar-track-piece{border-radius:6px;background:rgba(0,0,0,.1)}.search-pro-result-wrapper::-webkit-scrollbar-thumb{border-radius:6px;background:var(--vp-tc)}.search-pro-result-wrapper::-webkit-scrollbar-thumb:active{background:var(--vp-tcl)}.search-pro-result-wrapper mark{border-radius:.25em;line-height:1}.search-pro-result-list{margin:0;padding:0}.search-pro-result-list-item{display:block;list-style:none}.search-pro-result-title{position:sticky;top:-2px;z-index:10;margin:-4px;margin-bottom:.25rem;padding:4px;background:var(--vp-bg);color:var(--vp-tc);font-weight:600;font-size:.85em;line-height:2rem;text-indent:.5em}.search-pro-result-item.active .search-pro-result-title{color:var(--vp-tc)}.search-pro-result-type{display:block;width:1rem;height:1rem;margin-inline-start:-.5rem;padding:.5rem;color:var(--vp-tc)}.search-pro-remove-icon{border-width:0;background:transparent;cursor:pointer;box-sizing:content-box;height:1.5rem;padding:0;border-radius:50%;color:var(--vp-tc);font-size:1rem}.search-pro-remove-icon svg{width:1.5rem;height:1.5rem}.search-pro-remove-icon:hover{background:rgba(128,128,128,.3)}.search-pro-result-content{display:flex;flex-grow:1;flex-direction:column;align-items:stretch;justify-content:center;line-height:1.5}.search-pro-result-content .content-header{margin-bottom:.25rem;border-bottom:1px solid var(--vp-brcd);font-size:.9em}.search-pro-result-item{display:flex;align-items:center;margin:.5rem 0;padding:.5rem .75rem;border-radius:.25rem;background:var(--vp-bgl);color:inherit;box-shadow:0 1px 3px 0 var(--card-shadow);font-weight:400;white-space:pre-wrap;word-wrap:break-word}.search-pro-result-item strong{color:var(--vp-tc)}.search-pro-result-item:hover,.search-pro-result-item.active{background-color:var(--vp-tcl);color:var(--white);cursor:pointer}.search-pro-result-item:hover .search-pro-result-type,.search-pro-result-item:hover .search-pro-remove-icon,.search-pro-result-item:hover strong,.search-pro-result-item.active .search-pro-result-type,.search-pro-result-item.active .search-pro-remove-icon,.search-pro-result-item.active strong{color:var(--white)} diff --git a/assets/style-behavior.html-wXLDL7qS.js b/assets/style-behavior.html-wXLDL7qS.js new file mode 100644 index 00000000..32261293 --- /dev/null +++ b/assets/style-behavior.html-wXLDL7qS.js @@ -0,0 +1,112 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as n,d as t}from"./app-Mf7X6hWu.js";const s={},o=t(`

    样式的行为

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    选项

    样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:stylecs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。

    引文选项

    消除歧义

    当一个引用对应多个参考文献条目的时候会产生歧义。下面有四种方法用来消除歧义:

    1. 显示更多作者姓名
    2. 扩展姓名(添加缩写或者完整的名)
    3. 添加年份后缀
    4. cs:choosedisambiguate 属性为 true 的时候,实行渲染

    方法 2 也可以在全局名称歧义消除异己整个文档中有歧义的地方。

    消除歧义的方法在下面属性被设置的时候,将会被激活,并且按上述列表中的方法进行尝试:

    disambiguate-add-names 步骤 1

    ​ 如果设置为 "true"(默认为 false),使用 et-al 缩写锁代替的名字列表会逐个的加入到渲染列表中,知道添加的名字可以消除引用歧义为止。

    disambiguate-add-givenname 步骤 2

    ​ 如果设置为 "true"(默认为 false),产生歧义的名字将被扩展。名字扩展可以使用 givenname-disambiguation-rule 设置。下面是一个例子。

    含有歧义的引用消除歧义的引用
    (Simpson 2005; Simpson 2005)(H. Simpson 2005; B. Simpson 2005)
    (Doe 1950; Doe 1950)(John Doe 1950; Jane Doe 1950)

    如果不能通过扩展名字来实现消除歧义,当 disambiguate-add-names 属性设置为 "true", the names still hidden as a result of et-al abbreviation after the disambiguation attempt of disambiguate-add-names are added one by one to all members of a set of ambiguous cites, until no more cites in the set can be disambiguated by adding expanded names.

    givenname-disambiguation-rule

    用来指定 a) 名字扩展的目的是不是仅限于消除歧义,还是对消除歧义的名字有其他的目的 (只有在后面的情况中,有歧义的名字才会在明确的引用中扩展,例如:从 (Doe 1950; Doe 2000) 扩展到 (Jane Doe 1950; John Doe 2000)) b) 名称扩展是针对全部还是针对每个引用的名字 c) 扩展名字的方法。

    扩展单个名字

    ​ 扩展单个名字的步骤是:

    1. 如果 initialize-with 被设置并且 initialize 的值为默认的 true: (a) 可以通过 "long" 而不是 "short" 的形式来渲染首字母 (e.g. Doe 变为 J. Doe) (b) 如果 initialize 设置为 "flase",完整的姓名被渲染,而不是首字母(J. Doe 变为 John Doe)
    2. 如果 initialize-with 没有被设置,使用 "long" 格式渲染完整的姓名(Doe 变为 John Doe)

    消除歧义法则

    givenname-disambiguation-rule 属性可设置的值为:

    ​ "all-name"

    ​ 名字扩展具有消除名字歧义和消除引用歧义的双重目的。在渲染的有歧义的名称中,所有的有歧义的或者没有歧义的名字都将被消除歧义。

    ​ "all-names-with-initials"

    ​ 和 "all-name" 一样,但是名称的扩展仅限于缩写。当 initialize-with 没被设置或者 initialize 被设置为 "false" 时,不会进行消除歧义的尝试。

    ​ "primary-name"

    ​ 和 "all-name" 一样,但是消除歧义仅限于每个引用的第一个名字。

    ​ "primary-name-with-initials"

    ​ 和 "all-names-with-initials" 一样,但是消除歧义仅限于每个引用的第一个名字。

    ​ "by-cite"

    ​ 默认,和 "all-name" 一样,但是名称扩展的目的仅限于消除引用的歧义,只有有歧义的名字在有歧义的引用中才会被影响,并且在引用的第一个名字消除歧义后就停止消除歧义。

    disambiguate-add-year-suffix 步骤 3

    如果设置为 "true"(默认为 "false"),字母序的年后缀将会被添加到有歧义的名字上("Doe 2007, Doe 2007" 变为 "Doe 2007a, Doe 2007b")。当字母序到达 "z",后,就会启用两个字母("z", "aa", "ab", …, "az", "ba" 等等)。


    如果应用上述的歧义消除方法后仍然存在歧义,则尝试通过 disambiguate 条件来渲染不同的引用 [步骤 4] (见 choose)。

    引用分组

    通过引用分组,可以将相同名称的文本引用放在一起,比如:(Doe 1999; Smith 2002; Doe 2006; Doe et al. 2007) 将会变为 (Doe 1999; Doe 2006; Smith 2002; Doe et al. 2007)。引用分组在引用排序和消除歧义后执行。分组后的引用保持其相对顺序,并移到第一个改组中引用出现的第一个位置。

    引用分组可以在 cs:citation 元素中通过设置 cite-group-delimiter 属性或者 collapse 属性(见 [cite collapsing](#cite collapsing))激活。

    cite-group-delimiter

    激活引用分组并为引用组中的引用指定分隔符,默认为 ","。例如,当 cs:citation 元素中的 cs:layout 中的 delimiter 设置为 ";" 时,collapse 设置为 "year"cite-group-delimiter 设置为 ",",将生成类似 "(Doe 1999,2001; Jones 2000)" 的引用。

    cite collapsing/引用折叠

    author 或者 author-date 类型的引用格式中的引用分组和数字格式中的引用范围可以通过 collapse 属性来折叠。折叠引用组中分隔符可以是使用 year-suffix-delimiterafter-collapse-delimiter 属性来设置:

    collapse

    激活引用分组和折叠。允许的值为:

    • "citation-number" - 当使用数字样式的时候,折叠引用数字的范围(通过 "citation-number" 变量来渲染) ,例如:"[1, 2, 3, 5]" 变为 "[1–3, 5]"。只有升序的引用才可以折叠,比如: "[3, 2, 1]" 将不会折叠。
    • "year" - 通过压缩相同的名字来折叠引用分组,例如: "(Doe 2000, Doe 2001)" 变为 "(Doe 2000, 2001)"。
    • "year-suffix" - 对名字相同的折叠项,折叠相同的年份,例如: "(Doe 2000a, 2000b)" 变为 "(Doe 2000a, b)"。
    • "year-suffix-ranged" - 对名字相同的折叠项,折叠年份范围,例如: "(Doe 2000a, b, c, e)" 变为 "(Doe 2000a–c,e)"。

    disambiguate-add-year-suffix 设置为 "false" 时,或者引用中包含位置(例如:“(Doe 2000a-c, 2000d, p. 5, 2000e,f)”,"Doe 2000d" 有一个页码位置),"year-suffix" 和 "year-suffix-ranged" 回退到 "year"。

    year-suffix-delimiter

    ​ 设置年份后缀的分隔符。默认在 cs:citation 元素的 cs:layout 中设置。例如:当 collapse 设置为 "year-suffix"cs:citation 中的 cs:layoutdelimiter 元素设置为 ";",并且 year-suffix-delimiter 设置为 "," 时,渲染结果将类似于 "(Doe 1999a,b; Jones 2000)"。

    after-collapse-delimiter

    ​ 设置折叠后的引用组要使用的分隔符。默认在 cs:citation 元素的 cs:layout 中设置。例如:当 collapse 设置为 "year"cs:citation 中的 cs:layoutdelimiter 元素设置为 ",",并且 after-collapse-delimiter 设置为 ";" 时,渲染结果将类似于 "(Doe 1999, 2001; Jones 2000, Brown 2001)"。

    标注距离

    near-note-distance

    当有一个预先的标注时,"near-note" 位置是我引用被判断为真,这种预先的标注可以为 a) 指向同一个项目 b) 当前注视以前的脚注或尾注。(译注:不知道讲了什么)

    参考文献目录选项

    空白

    hanging-indent

    ​ 如果设置为 "true"(默认为 "false"),参考文献列表将采用悬挂缩进渲染。

    second-field-align

    ​ 如果该属性被设置,则书目条目的后续行沿第二字段对齐。 使用 "flush" 时,第一个字段与边距齐平。 对于 "margin",第一个字段放在 margin 中,随后的行与 margin 对齐。例如,当第一个字段设置为 <text variable="citation-number" suffix=". "/>

    9.  Adams, D. (2002). The Ultimate Hitchhiker's Guide to the
    +    Galaxy (1st ed.).
    +10. Asimov, I. (1951). Foundation.
    +

    line-spacing

    ​ 指定垂直方向的行距。默认值为 "1",即单倍行距。可以被设置为任意正整数,用来表示对应倍数的行距。

    entry-spacing

    ​ 指定不同条目垂直方向的距离,默认值为 "1",即一倍距离,可以被设置为任意正整数,用来表示对应倍数的距离。

    参考文献分组

    subsequent-author-substitute

    ​ 如果该属性被设置,则此属性将用上一条条目中的名称替换参考文献条目中的名字。具体的代替方案取决于 subsequent-author-substitute-rule 属性的值。替换仅限于 cs:names 元素中渲染的第一个名字。

    subsequent-author-substitute-rule

    ​ 用来指定 subsequent-author-substitute 的结果怎么替换。允许的值为:

    • "complete-all" - 默认值,当名字变量中的所有渲染的名字和上一个参考文献条目相同时,subsequent-author-substitute 属性的值将代替整个名字列表(包括标点和术语,比如 et-al 和 and 等术语),但 cs:names 元素中设置的后缀将不会被代替。
    • "complete-each" - 和 "complete-all" 一样,需要完整的匹配,但是 subsequent-author-substitute 属性的值将会代替所有被渲染的名字。
    • "partial-each" - 当有一个或者多个名字变量中的渲染名字和上一个条目中相同时,使用 subsequent-author-substitute 属性代替对应的值。匹配从第一个名字开始,直到不匹配的名字为止。
    • "partial-first" - 和 "partial-each" 相同,但是替换仅限于第一个名字。

    对下面的例子:

    Doe. 1999.
    +Doe. 2000.
    +Doe, Johnson & Williams. 2001.
    +Doe & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +Doe, Stevens & Miller. 2004.
    +Doe, Williams et al. 2005.
    +Doe, Williams et al. 2006.
    +

    subsequent-author-substitute 设置为 "-",并且 subsequent-author-substitute-rule 设置为 "complete-all",渲染结果将变为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +Doe & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---. 2004.
    +Doe, Williams et al. 2005.
    +---. 2005.
    +

    subsequent-author-substitute-rule 设置为 "complete-each" 时,渲染的结果为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +Doe & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---, --- & ---. 2004.
    +Doe, Williams et al. 2005.
    +---, --- et al. 2006.
    +

    subsequent-author-substitute-rule 设置为 "partial-each" 时,渲染的结果为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +--- & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---, --- & ---. 2004.
    +Doe, Williams et al. 2005.
    +---, --- et al. 2005.
    +

    subsequent-author-substitute-rule 设置为 "partial-first" 时,渲染的结果为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +--- & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---, Stevens & Miller. 2004.
    +Doe, Williams et al. 2005.
    +---, Williams et al. 2005.
    +

    全局选项

    人名中的连字符

    initialize-with-hyphen

    ​ 该属性用来制定合成名字中间是不是使用连字符。例如,"Jean-Luc" 是一个合成名字,如果该属性设置为 "true"(默认),渲染结果为 "J.-L.",如果设置为 "false",渲染结果为 "J.L."

    页码范围

    page-range-format

    ​ 用来设置页码范围的格式,是不是使用简写来压缩。其可选的值有:"chicago" ("321–28"), "expanded" ( "321–328"), "minimal" ("321–8"), 或者 " minimal-two" ("321–28")。每一组值前面表示可选的属性值,后面是渲染结果的例子。也可见 [附录V 页码范围格式](#附录V 页码范围格式)。使用 page-range-delimiter 属性可以用来设置页面范围分割的符号,该属性在 CSL 1.0.1 中引入,默认是一个破折号。如果改属性没有设置,就默认使用破折号。

    Name Particles

    ​ 西方人的名字中经常包括一个或者多个小部分,例如,"de" 在荷兰人的名字中 "W. de Koning"。在仅显示姓氏时,这些小部分可以分为必须保留和可删除(或译为不可省略和可省略)两种类型:这两种类型分别称为 non-dropping 部分和 dropping 部分。一个单个的名字可以同时包括这两种类型(不能删除的类型始终位于可删除类型的后面)。例如,"W. de Koning" 和法国名字 "Jean de la Fontaine" 可以被解构为:

    {
    +    "author": [
    +        {
    +            "given": "W.",
    +            "non-dropping-particle": "de",
    +            "family": "Koning"
    +        },
    +        {
    +            "given": "Jean",
    +            "dropping-particle": "de",
    +            "non-dropping-particle": "La",
    +            "family": "Fontaine"
    +        }
    +    ]
    +}
    +

    在仅显示姓氏的时候,只保留不能删除的部分,"De koning""La Fontaine"

    在名字倒写的情况下,即姓氏在名字之前,在姓氏后面始终添加 dropping particle,但是 non-dropping 部分可以前置(例如,"de Koning, W.")或者后置(Koning, W. de)。在名字倒写,不可省略粒子前置时,可以使用下面的方式对名字进行排序:排序 A:将不可省略粒子和姓一起保留作为主排序键值的一部分;排序 B:通过将不可省略粒子和姓分开,并使其成为二级排序键值,并加入可省略粒子(如果有):

    Sort order A: 不可省略粒子不降级

    • 主排序键值 "La Fontaine"
    • 次排序键值 "de"
    • 第三排序键值: "Jean"

    Sort order B: 不可省略粒子降级

    • 主排序键值 "Fontaine"
    • 次排序键值 "de La"
    • 第三排序键值 "Jean"

    对不可省略粒子的设置可以使用 demote-non-dropping-particle 选项:

    demote-non-dropping-particle

    ​ 用来设置在倒写的名字中不可省略粒子的显示和排序方式(例如 Koning W. de)。可设置的值为:

    • "never": 不可省略粒子被作为姓中的一部分对待,并附加可省略粒子("de Koning, W." "La Fontaine, Jean de")。不可省略粒子作为主排序键值的一部分 (排序 A,例如. "de Koning, W." 将出现在首字母 "D" 的区域).
    • "sort-only": 显示的方式和 "never" 相同,但是不可省略粒子降级作为二级排序键值。(排序 B, "de Koning, W." 出现在首字母 "K" 的区域).
    • "display-and-sort" (默认),可省略粒子和不可省略粒子在最后( "Koning, W. de" 和 "Fontaine, Jean de La")。对名字排序,所有的粒子都是二级排序键值的一部分。(排序 B,"Koning, W. de" 出现在首字母 "K" 的区域).

    某些名字中包含的粒子禁止被降级。在这些情况中,粒子将和姓合并到一起,比如,对于法国名字 Charles de Gaulle

    {
    +    "author": [
    +        {
    +            "family": "de Gaulle",
    +            "given": "Charles"
    +        }
    +    ]
    +}
    +

    可继承的名称选项

    cs:namescs:name 元素的属性也可以在 cs:stylecs:citationcs:bibliography 元素中设置。这样就不需要每次在 cs:namescs:name 出现的时候赋值。

    ​ 可以在 cs:name 元素中继承的属性有 and, delimiter-precedes-et-al, delimiter-precedes-last, et-al-min, et-al-use-first, et-al-use-last, et-al-subsequent-min, et-al-subsequent-use-first, initialize, initialize-with, name-as-sort-ordersort-separatorname-form 属性和 name-delimiter 属性对英语 cs:name 元素中的 formdelimiter 属性。同样地,names-delimiter 属性对应 cs:names 元素中的 delimiter 属性。

    ​ 当一个可继承的名称属性在 cs:stylecs:citationcs:bibliography 中设置时,其值将作用于改元素包含的所有的 cs:names 元素。如果一个属性在多个可继承的层次设置,最底层的值发挥作用。

    局部选项

    limit-day-ordinals-to-day-1

    ​ 日期格式在 cs:datecs:date-part 元素中定义。默认地,当 cs:date-part 元素中的 name 设置为 "day"form 属性设置为 "ordinal" 时,所有的天(1 到 31)将会以序数形式渲染,例如:"January 1st","January 2nd" 等等。通过将 limit-day-ordinals-to-day-1 属性设置为 "true"(默认值为 "false"),序数格式将仅限于每个月的第一天,其他的天将不使用序数格式。这在某些语言中出现,比如法语,"1er janvier","2 janvier","3 janvier"。

    punctuation-in-quote

    ​ 当 cs:text 元素渲染时,如果 quotes 属性设置为 "true"(见 格式化),并且在输出后有逗号或者句号,punctuation-in-quote 属性可以控制标点放在括号的内还是外,"false" 为外(默认),"true" 为内。

    排序 ***

    cs:citationcs:bibliography 元素可以在 cs:layout 元素之前携带一个 cs:sort 子元素,来实现对引文或者参考文献条目的排序。在缺失 cs:sort 元素时,引文和文献条目将会使用他们在文章中出现的顺序来排序。

    cs:sort 元素必须包含一个或者多个 cs:key 子元素,可以在该元素中设置变量([附录 IV 变量](#附录 IV 变量))或者宏名来实现排序。对于每个 cs:key 元素,排序的顺序可以通过设置 sort 属性来设置为升序("ascending",默认)或者降序("descending")。属性 names-min,names-use-first,names-use-last 可以用来覆盖 et-al-min/et-al-subsequent-min, et-al-use-first/et-al-subsequent-use-firstet-al-use-last 属性的值,并且可以通过 cs:key 影响所有的名字.

    ​ 排序的键值是按顺序求值的,也就是说:首先,使用第一个排序键值对所有的项目进行排序。然后使用第二个键值对第一个键值排序后的结果进行排序,直到所有的键值都完成排序为止。如果键值为空,就放到最后。

    ​ 这里给出一个例子:其中首先引用 "author" 宏进行排序,并且使用 et al. 来对较长的作者序列进行代替。然后,使用 "issued" 变量来进行第二次排序,使用降序:

    <citation>
    +  <sort>
    +    <key macro="author" names-min="3" names-use-first="3"/>
    +    <key variable="issued" sort="descending"/>
    +  </sort>
    +  <layout>
    +    <!-- rendering elements -->
    +  </layout>
    +</citation>
    +

    ​ 变量或者宏的排序键值可以与 "normal" 渲染的输出不同,具体要依赖下面的细节:

    排序变量

    cs:key 元素通过 variable 变量属性调用变量的排序键值。名称变量、日期变量和数字变量除外:

    名称: 名字变量 通过变量属性被调用,例如 <key variable="author"/>,当 form 属性设置为 "long"name-as-sort-order 属性设置为 "all",返回名字列表字符串。

    日期日期变量 通过 variable 属性被调用,返回 YYYYMMDD 格式。使用 0 代替缺失的日期部分,例如:December 2000 渲染为 20001200。因此,简略的日期在升序排列的时候更加靠前,例如:2000, May 2000, May 1st 2000。负数的年份(即公元前)将被反向排序,比如:100BC, 50BC, 50AD, 100AD。排序过程中,季节将被忽略,因为南北半球的季节顺序不同。在日期范围中,开始的日期用于主要排序,结束日期用于次要排序,例如:2000–2001, 2000–2005, 2002–2003, 2002–2009。在具有相同的开始日期时,日期范围将放在单独的日期后,例如:2000, 2000–2002。

    数字数字变量 通过 variable 属性来调用,返回整数(form 设置为 "numeric")如果原始的变量值仅由非数字文本组成,则将该值作为文本字符串返回。

    排序宏

    ​ 变量排序的键值是由字符串值组成,没有富文本标记。通过宏属性中的键值 cs:key 来调用。下面为一些特殊情况。

    ​ 对于名字排序,使用相同的宏而不是直接使用名字变量来渲染和排序有 4 个好处。第一,可以使用替换,例如:可以使用 "editor" 变量代替空的 "author" 变量。第二,可以使用 et-al 缩写,在宏里使用 et-al-min/et-al-subsequent-min, et-al-use-first/et-al-subsequent-use-firstet-al-use-last 可选属性,或者覆盖 cs:key 元素中的 names-min, names-use-firstnames-use-last 。当 et-al 缩写出现的时候,"et-al""and others" 术语不会包括在排序键值中。第三,名字可以只使用姓来排序,即使用宏,其中的 cs:nameform 属性设置为 "short"。最后,通过调用宏,将 cs:name 中的 form 属性设置为 "count",可以按姓名列表中姓名的数目进行排序。至于使用 variable 属性对姓名进行排序,将 cs:name 中的 name-as-sort-order 属性设置为 "all",返回值为排序后的名称列表。

    ​ 在宏中带有 cs:number数字变量 的和日期变量的渲染方法和通过变量的调用相同。唯一的区别是:如果通过 variable 属性调用日期变量,将返回完整的日期。相反地,宏调用则只返回原本要渲染的日期部分。例如:

    范围分隔符

    ​ "citation-number" 和 "year-suffix" 变量的折叠范围以短划线分隔,例如 "(1-3,5)" 和 "(Doe 2000a-c,e)"。

    ​ "locator" 变量总是使用一个短划线代替任意的连字符。 对 "page" 变量来说,只有 cs:style 中的 page-ran ge-format 属性被设置时,替换才会执行(见 页码范围)。

    格式化

    ​ 下面的属性可以在 cs:date, cs:date-part, cs:et-al, cs:group, cs:label, cs:layout, cs:name, cs:name-part, cs:names, cs:numbercs:text 中设置:

    font-style

    用来设置字体,可能的值为:

    • "normal" 默认
    • "italic" 设置文字的斜体
    • "oblique" 设置没有斜体的文字倾斜

    font-variant

    Allows for the use of small capitals, 值可以设置为:

    • "normal" 默认
    • "small-caps"

    font-weight

    设置字宽,值可以为:

    • "normal" 默认
    • "bold"
    • "light"

    text-decoration

    设置下划线,值可以为:

    • "none" 默认
    • "underline"

    vertical-align

    设置垂直对齐,值可以为:

    • "baseline" 默认
    • "sup" 上标
    • "sub" 下标

    词缀

    ​ 前缀属性 prefix 和后缀属性 suffix 可以在 cs:date(使用 cs:date 定义本地化格式除外),cs:date-partcs:date 调用本地化格式除外)、cs:groupcs:labelcs:layoutcs:namecs:namescs:number 以及 cs:text 中设置。属性值用来在输出的前面或者后面添加东西,但是只有输出的时候才会渲染。除在 cs:layout 中设置外,词缀将出现在同一个元素的 格式化引用strip-periodstext-case 的影响范围的外面,也就是这些属性的设置对前缀和后缀没有影响。作为一种解决方法,在父元素 cs:group 中设置上述属性,会产生影响。

    分隔符\\delimiter

    delimiter 属性可以在 cs:date(用来分隔日期的各部分,如年和月;在 cs:date 调用本地化格日期格式时,分隔符将被禁用)、cs:name(分隔名字变量中不同的名字列表)、cs:name(分隔名字列表中的名字)、cs:group 以及 cs;layout(分隔子元素的输出)中设置分隔符。

    显示\\display

    display 属性可用于将各个参考文献条目构成一个或者多个文本块。如果使用该属性,所有的渲染元素都在该属性的控制下。(译注:是用来设置对齐效果的)属性可能的值为:

    • "block" - 两边对其
    • "left-margin" - 左对齐。
    • "right-inline" - 右对齐
    • "indent" - 缩进。

    A. 除使用 second-field-align 外,使用 "left-margin""roght-inline" 可以实现相同的渲染效果。这种操作方式潜在的好处是,可以在最终的输出中进一步控制块的格式,例如,在 HTML 的 CSS 或者 word 的样式中。

    <bibliography>
    +  <layout>
    +    <text display="left-margin" variable="citation-number"
    +        prefix="[" suffix="]"/>
    +    <group display="right-inline">
    +      <!-- rendering elements -->
    +    </group>
    +  </layout>
    +</bibliography>
    +

    B. 每个作者的出版物列表。当 subsequent-author-substitute 设置为空字符串时,具有相同作者的条目的作者名字只渲染一次。

    <bibliography subsequent-author-substitute="">
    +  <sort>
    +    <key variable="author"/>
    +    <key variable="issued"/>
    +  </sort>
    +  <layout>
    +    <group display="block">
    +      <names variable="author"/>
    +    </group>
    +    <group display="left-margin">
    +      <date variable="issued">
    +        <date-part name="year" />
    +      </date>
    +    </group>
    +    <group display="right-inline">
    +      <text variable="title"/>
    +    </group>
    +  </layout>
    +</bibliography>
    +

    渲染结果将类似下面:

    Author1
    year-publication1title-publication1
    year-publication2title-publication2
    Author2
    year-publication3title-publication3
    year-publication4title-publication4

    C. 带有注释的条目,注释显示在参下方的缩进块中。

    <bibliography>
    +  <layout>
    +    <group display="block">
    +      <!-- rendering elements -->
    +    </group>
    +    <text display="indent" variable="abstract" />
    +  </layout>
    +</bibliography>
    +

    引用\\quotes

    quotes 属性可以在 cs:text 中设置。当设置为 "true" 时(默认为 "false"),渲染文本将会被包含在引用中。本地化的 punctuation-in-quote 选项控制用来连接的逗号或者句号是出现在引号的内部还是外部(默认外部),见 [Locale options](#Locale options)。

    Strip-periods

    strip-periods 属性可以在 cs:label 或者 cd:text 中设置,此外,当 name 被设置为 "month" 时,也可以在 cs:date-part 中设置。当该属性被设置为 true 的时候(默认的是 "false"),所有文本中的句号(英文中为点)将会被删除。

    文字大小写

    text-case 属性可以在 cs:date,cs:date-part,cs:label,cs:name-part,cs:numbercs:text 中设置,可设置的值为:

    • "lowercase": 使用小写字母渲染文本
    • "uppercase": 使用大写字母渲染文本
    • "capitalize-first": 如果第一个词是小写的,将首字母设置为大写
    • "capitalize-all": 将每个小写词的首字母设置为大写
    • "sentence": renders text in sentence case(以句子的格式设置?)
    • "title": renders text in title case(以标题的格式来设置?)

    句子大小写转换

    句子大小写转换 (在 "Text-case" 中设置为 "sentence"),

    1. 对于大写字符串,字符串的第一个字符保持为大写。其它字母表示为小写
    2. 对于大小写混合的字符串,如果单词是小写,第一个单词的首字符大写,其它所有单词的大小写保持不变。

    CSL 处理器不能识别专有名词。因此,可以将句子大小写的字符转缺的转换为标题大小写,反之亦然。因此,通常最好在句子大小写的情况下存储注入标题之类的字符串,并且仅在样式需要其它大小写的情况下菜使用文本大小写。

    标题大小写转换

    标题大小写转换 (在 "Text-case" 中设置为 "title") 对英语来说:

    1. 对大写的字符串,每个单词的第一个字母保持大写,其它的字母保持小写。
    2. 对于小写或者是混合的字符串,每个小写字符串的首字母大写。大写的字符串或者是混合的字符串保持原样。

    两种情况下,stop words 必须是小写的,除非他们是第一个或者对后一个单词,或者跟在冒号后面。stop words 包括:"a", "an", "and", "as", "at", "but", "by", "down", "for", "from", "in", "into", "nor", "of", "on", "onto", "or", "over", "so", "the", "till", "to", "up", "via", "with", "yet".

    非英语项目

    ​ 由于许多语言不使用标题大小写,标题大小写转换 (在 "Text-case" 中设置为 "title") 仅影响英语项目。

    ​ 如果 cs:style 中的 default-locale 属性没有设置,或者设置为 en 开头的单词,则假定为英语环境。如果某项的元数据包含一个语言字段,而且该字段不是以 "en" 开头的,才被视为是非英语环境。

    ​ 同样的,default-locale 被这是为除 en 开头的字段,就假定为非英语。如果项目是以 en 开头的字段,就被视为是英语。

    `,184),c=[o];function u(d,i){return e(),n("div",null,c)}const r=a(s,[["render",u],["__file","style-behavior.html.vue"]]);export{r as default}; diff --git a/assets/style-behavior.html-ynDfOS7W.js b/assets/style-behavior.html-ynDfOS7W.js new file mode 100644 index 00000000..e8409ead --- /dev/null +++ b/assets/style-behavior.html-ynDfOS7W.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-39b473fe","path":"/code/citation-style-language/specification/style-behavior.html","title":"样式的行为","lang":"zh-CN","frontmatter":{"title":"样式的行为","date":"2022-08-01T16:55:26.000Z","updated":"2022-08-05T18:06:47.000Z","description":"样式的行为 [!warning] WORK IN PROGRESS 此页面正在施工中。 选项 样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:style 和 cs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/style-behavior.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"样式的行为"}],["meta",{"property":"og:description","content":"样式的行为 [!warning] WORK IN PROGRESS 此页面正在施工中。 选项 样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:style 和 cs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:55:26.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"样式的行为\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:55:26.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"选项","slug":"选项","link":"#选项","children":[{"level":3,"title":"引文选项","slug":"引文选项","link":"#引文选项","children":[]},{"level":3,"title":"参考文献目录选项","slug":"参考文献目录选项","link":"#参考文献目录选项","children":[]},{"level":3,"title":"全局选项","slug":"全局选项","link":"#全局选项","children":[]},{"level":3,"title":"可继承的名称选项","slug":"可继承的名称选项","link":"#可继承的名称选项","children":[]},{"level":3,"title":"局部选项","slug":"局部选项","link":"#局部选项","children":[]}]},{"level":2,"title":"排序 ***","slug":"排序","link":"#排序","children":[{"level":3,"title":"排序变量","slug":"排序变量","link":"#排序变量","children":[]},{"level":3,"title":"排序宏","slug":"排序宏","link":"#排序宏","children":[]}]},{"level":2,"title":"范围分隔符","slug":"范围分隔符","link":"#范围分隔符","children":[]},{"level":2,"title":"格式化","slug":"格式化","link":"#格式化","children":[]},{"level":2,"title":"词缀","slug":"词缀","link":"#词缀","children":[]},{"level":2,"title":"分隔符\\\\delimiter","slug":"分隔符-delimiter","link":"#分隔符-delimiter","children":[]},{"level":2,"title":"显示\\\\display","slug":"显示-display","link":"#显示-display","children":[]},{"level":2,"title":"引用\\\\quotes","slug":"引用-quotes","link":"#引用-quotes","children":[]},{"level":2,"title":"Strip-periods","slug":"strip-periods","link":"#strip-periods","children":[]},{"level":2,"title":"文字大小写","slug":"文字大小写","link":"#文字大小写","children":[{"level":3,"title":"句子大小写转换","slug":"句子大小写转换","link":"#句子大小写转换","children":[]},{"level":3,"title":"标题大小写转换","slug":"标题大小写转换","link":"#标题大小写转换","children":[]}]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":22.38,"words":6713},"filePathRelative":"code/citation-style-language/specification/style-behavior.md","localizedDate":"2022年8月2日","excerpt":"

    样式的行为

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    选项

    \\n

    样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:stylecs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/styles-4ba6ed67-R_EEqhPc.js b/assets/styles-4ba6ed67-R_EEqhPc.js new file mode 100644 index 00000000..03aa12ce --- /dev/null +++ b/assets/styles-4ba6ed67-R_EEqhPc.js @@ -0,0 +1,159 @@ +import{s as Xe,g as We,a as qe,b as He,c as F,v as Je,x as Ze,j as v,z as $e,l as et,y as Pe,h as U,d as tt,ar as ye}from"./mermaid.core-Up0YySao.js";var De=function(){var e=function(L,u,a,o){for(a=a||{},o=L.length;o--;a[L[o]]=u);return a},n=[1,16],r=[1,17],h=[1,18],l=[1,37],A=[1,38],g=[1,24],D=[1,22],B=[1,23],_=[1,29],ne=[1,30],ue=[1,31],re=[1,32],ae=[1,33],le=[1,34],ce=[1,25],oe=[1,26],he=[1,27],Ae=[1,28],d=[1,42],E=[1,39],C=[1,40],m=[1,41],k=[1,43],pe=[1,9],c=[1,8,9],Y=[1,54],K=[1,55],j=[1,56],Q=[1,57],X=[1,58],fe=[1,59],de=[1,60],W=[1,8,9,38],Ne=[1,71],V=[1,8,9,12,13,21,36,38,41,58,59,60,61,62,63,64,69,71],q=[1,8,9,12,13,19,21,36,38,41,45,58,59,60,61,62,63,64,69,71,84,86,87,88,89],H=[13,84,86,87,88,89],M=[13,63,64,84,86,87,88,89],ve=[13,58,59,60,61,62,84,86,87,88,89],Ee=[1,90],Ce=[1,8,9,36,38,41],J=[1,8,9,21],me={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,cssClassStatement:27,noteStatement:28,direction:29,acc_title:30,acc_title_value:31,acc_descr:32,acc_descr_value:33,acc_descr_multiline_value:34,namespaceIdentifier:35,STRUCT_START:36,classStatements:37,STRUCT_STOP:38,NAMESPACE:39,classIdentifier:40,STYLE_SEPARATOR:41,members:42,CLASS:43,ANNOTATION_START:44,ANNOTATION_END:45,MEMBER:46,SEPARATOR:47,relation:48,NOTE_FOR:49,noteText:50,NOTE:51,direction_tb:52,direction_bt:53,direction_rl:54,direction_lr:55,relationType:56,lineType:57,AGGREGATION:58,EXTENSION:59,COMPOSITION:60,DEPENDENCY:61,LOLLIPOP:62,LINE:63,DOTTED_LINE:64,CALLBACK:65,LINK:66,LINK_TARGET:67,CLICK:68,CALLBACK_NAME:69,CALLBACK_ARGS:70,HREF:71,CSSCLASS:72,commentToken:73,textToken:74,graphCodeTokens:75,textNoTagsToken:76,TAGSTART:77,TAGEND:78,"==":79,"--":80,PCT:81,DEFAULT:82,SPACE:83,MINUS:84,keywords:85,UNICODE_TEXT:86,NUM:87,ALPHA:88,BQUOTE_STR:89,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",30:"acc_title",31:"acc_title_value",32:"acc_descr",33:"acc_descr_value",34:"acc_descr_multiline_value",36:"STRUCT_START",38:"STRUCT_STOP",39:"NAMESPACE",41:"STYLE_SEPARATOR",43:"CLASS",44:"ANNOTATION_START",45:"ANNOTATION_END",46:"MEMBER",47:"SEPARATOR",49:"NOTE_FOR",51:"NOTE",52:"direction_tb",53:"direction_bt",54:"direction_rl",55:"direction_lr",58:"AGGREGATION",59:"EXTENSION",60:"COMPOSITION",61:"DEPENDENCY",62:"LOLLIPOP",63:"LINE",64:"DOTTED_LINE",65:"CALLBACK",66:"LINK",67:"LINK_TARGET",68:"CLICK",69:"CALLBACK_NAME",70:"CALLBACK_ARGS",71:"HREF",72:"CSSCLASS",75:"graphCodeTokens",77:"TAGSTART",78:"TAGEND",79:"==",80:"--",81:"PCT",82:"DEFAULT",83:"SPACE",84:"MINUS",85:"keywords",86:"UNICODE_TEXT",87:"NUM",88:"ALPHA",89:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[35,2],[37,1],[37,2],[37,3],[23,1],[23,3],[23,4],[23,6],[40,2],[40,3],[25,4],[42,1],[42,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[28,3],[28,2],[29,1],[29,1],[29,1],[29,1],[48,3],[48,2],[48,2],[48,1],[56,1],[56,1],[56,1],[56,1],[56,1],[57,1],[57,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[73,1],[73,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[76,1],[76,1],[76,1],[76,1],[16,1],[16,1],[16,1],[16,1],[18,1],[50,1]],performAction:function(u,a,o,i,p,t,G){var s=t.length-1;switch(p){case 8:this.$=t[s-1];break;case 9:case 11:case 12:this.$=t[s];break;case 10:case 13:this.$=t[s-1]+t[s];break;case 14:case 15:this.$=t[s-1]+"~"+t[s]+"~";break;case 16:i.addRelation(t[s]);break;case 17:t[s-1].title=i.cleanupLabel(t[s]),i.addRelation(t[s-1]);break;case 26:this.$=t[s].trim(),i.setAccTitle(this.$);break;case 27:case 28:this.$=t[s].trim(),i.setAccDescription(this.$);break;case 29:i.addClassesToNamespace(t[s-3],t[s-1]);break;case 30:i.addClassesToNamespace(t[s-4],t[s-1]);break;case 31:this.$=t[s],i.addNamespace(t[s]);break;case 32:this.$=[t[s]];break;case 33:this.$=[t[s-1]];break;case 34:t[s].unshift(t[s-2]),this.$=t[s];break;case 36:i.setCssClass(t[s-2],t[s]);break;case 37:i.addMembers(t[s-3],t[s-1]);break;case 38:i.setCssClass(t[s-5],t[s-3]),i.addMembers(t[s-5],t[s-1]);break;case 39:this.$=t[s],i.addClass(t[s]);break;case 40:this.$=t[s-1],i.addClass(t[s-1]),i.setClassLabel(t[s-1],t[s]);break;case 41:i.addAnnotation(t[s],t[s-2]);break;case 42:this.$=[t[s]];break;case 43:t[s].push(t[s-1]),this.$=t[s];break;case 44:break;case 45:i.addMember(t[s-1],i.cleanupLabel(t[s]));break;case 46:break;case 47:break;case 48:this.$={id1:t[s-2],id2:t[s],relation:t[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 49:this.$={id1:t[s-3],id2:t[s],relation:t[s-1],relationTitle1:t[s-2],relationTitle2:"none"};break;case 50:this.$={id1:t[s-3],id2:t[s],relation:t[s-2],relationTitle1:"none",relationTitle2:t[s-1]};break;case 51:this.$={id1:t[s-4],id2:t[s],relation:t[s-2],relationTitle1:t[s-3],relationTitle2:t[s-1]};break;case 52:i.addNote(t[s],t[s-1]);break;case 53:i.addNote(t[s]);break;case 54:i.setDirection("TB");break;case 55:i.setDirection("BT");break;case 56:i.setDirection("RL");break;case 57:i.setDirection("LR");break;case 58:this.$={type1:t[s-2],type2:t[s],lineType:t[s-1]};break;case 59:this.$={type1:"none",type2:t[s],lineType:t[s-1]};break;case 60:this.$={type1:t[s-1],type2:"none",lineType:t[s]};break;case 61:this.$={type1:"none",type2:"none",lineType:t[s]};break;case 62:this.$=i.relationType.AGGREGATION;break;case 63:this.$=i.relationType.EXTENSION;break;case 64:this.$=i.relationType.COMPOSITION;break;case 65:this.$=i.relationType.DEPENDENCY;break;case 66:this.$=i.relationType.LOLLIPOP;break;case 67:this.$=i.lineType.LINE;break;case 68:this.$=i.lineType.DOTTED_LINE;break;case 69:case 75:this.$=t[s-2],i.setClickEvent(t[s-1],t[s]);break;case 70:case 76:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 71:this.$=t[s-2],i.setLink(t[s-1],t[s]);break;case 72:this.$=t[s-3],i.setLink(t[s-2],t[s-1],t[s]);break;case 73:this.$=t[s-3],i.setLink(t[s-2],t[s-1]),i.setTooltip(t[s-2],t[s]);break;case 74:this.$=t[s-4],i.setLink(t[s-3],t[s-2],t[s]),i.setTooltip(t[s-3],t[s-1]);break;case 77:this.$=t[s-3],i.setClickEvent(t[s-2],t[s-1],t[s]);break;case 78:this.$=t[s-4],i.setClickEvent(t[s-3],t[s-2],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 79:this.$=t[s-3],i.setLink(t[s-2],t[s]);break;case 80:this.$=t[s-4],i.setLink(t[s-3],t[s-1],t[s]);break;case 81:this.$=t[s-4],i.setLink(t[s-3],t[s-1]),i.setTooltip(t[s-3],t[s]);break;case 82:this.$=t[s-5],i.setLink(t[s-4],t[s-2],t[s]),i.setTooltip(t[s-4],t[s-1]);break;case 83:i.setCssClass(t[s-1],t[s]);break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(pe,[2,5],{8:[1,44]}),{8:[1,45]},e(c,[2,16],{21:[1,46]}),e(c,[2,18]),e(c,[2,19]),e(c,[2,20]),e(c,[2,21]),e(c,[2,22]),e(c,[2,23]),e(c,[2,24]),e(c,[2,25]),{31:[1,47]},{33:[1,48]},e(c,[2,28]),e(c,[2,44],{48:49,56:52,57:53,13:[1,50],21:[1,51],58:Y,59:K,60:j,61:Q,62:X,63:fe,64:de}),{36:[1,61]},e(W,[2,35],{36:[1,63],41:[1,62]}),e(c,[2,46]),e(c,[2,47]),{16:64,84:d,86:E,87:C,88:m},{16:35,17:65,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:66,18:36,84:d,86:E,87:C,88:m,89:k},{16:35,17:67,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,68]},{16:35,17:69,18:36,84:d,86:E,87:C,88:m,89:k},{13:Ne,50:70},e(c,[2,54]),e(c,[2,55]),e(c,[2,56]),e(c,[2,57]),e(V,[2,11],{16:35,18:36,17:72,19:[1,73],84:d,86:E,87:C,88:m,89:k}),e(V,[2,12],{19:[1,74]}),{15:75,16:76,84:d,86:E,87:C,88:m},{16:35,17:77,18:36,84:d,86:E,87:C,88:m,89:k},e(q,[2,97]),e(q,[2,98]),e(q,[2,99]),e(q,[2,100]),e([1,8,9,12,13,19,21,36,38,41,58,59,60,61,62,63,64,69,71],[2,101]),e(pe,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,17:19,35:20,40:21,16:35,18:36,5:78,30:n,32:r,34:h,39:l,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k}),{5:79,10:5,16:35,17:19,18:36,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:n,32:r,34:h,35:20,39:l,40:21,43:A,44:g,46:D,47:B,49:_,51:ne,52:ue,53:re,54:ae,55:le,65:ce,66:oe,68:he,72:Ae,84:d,86:E,87:C,88:m,89:k},e(c,[2,17]),e(c,[2,26]),e(c,[2,27]),{13:[1,81],16:35,17:80,18:36,84:d,86:E,87:C,88:m,89:k},{48:82,56:52,57:53,58:Y,59:K,60:j,61:Q,62:X,63:fe,64:de},e(c,[2,45]),{57:83,63:fe,64:de},e(H,[2,61],{56:84,58:Y,59:K,60:j,61:Q,62:X}),e(M,[2,62]),e(M,[2,63]),e(M,[2,64]),e(M,[2,65]),e(M,[2,66]),e(ve,[2,67]),e(ve,[2,68]),{8:[1,86],23:87,37:85,40:21,43:A},{16:88,84:d,86:E,87:C,88:m},{42:89,46:Ee},{45:[1,91]},{13:[1,92]},{13:[1,93]},{69:[1,94],71:[1,95]},{16:96,84:d,86:E,87:C,88:m},{13:Ne,50:97},e(c,[2,53]),e(c,[2,102]),e(V,[2,13]),e(V,[2,14]),e(V,[2,15]),{36:[2,31]},{15:98,16:76,36:[2,9],84:d,86:E,87:C,88:m},e(Ce,[2,39],{11:99,12:[1,100]}),e(pe,[2,7]),{9:[1,101]},e(J,[2,48]),{16:35,17:102,18:36,84:d,86:E,87:C,88:m,89:k},{13:[1,104],16:35,17:103,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,60],{56:105,58:Y,59:K,60:j,61:Q,62:X}),e(H,[2,59]),{38:[1,106]},{23:87,37:107,40:21,43:A},{8:[1,108],38:[2,32]},e(W,[2,36],{36:[1,109]}),{38:[1,110]},{38:[2,42],42:111,46:Ee},{16:35,17:112,18:36,84:d,86:E,87:C,88:m,89:k},e(c,[2,69],{13:[1,113]}),e(c,[2,71],{13:[1,115],67:[1,114]}),e(c,[2,75],{13:[1,116],70:[1,117]}),{13:[1,118]},e(c,[2,83]),e(c,[2,52]),{36:[2,10]},e(Ce,[2,40]),{13:[1,119]},{1:[2,4]},e(J,[2,50]),e(J,[2,49]),{16:35,17:120,18:36,84:d,86:E,87:C,88:m,89:k},e(H,[2,58]),e(c,[2,29]),{38:[1,121]},{23:87,37:122,38:[2,33],40:21,43:A},{42:123,46:Ee},e(W,[2,37]),{38:[2,43]},e(c,[2,41]),e(c,[2,70]),e(c,[2,72]),e(c,[2,73],{67:[1,124]}),e(c,[2,76]),e(c,[2,77],{13:[1,125]}),e(c,[2,79],{13:[1,127],67:[1,126]}),{14:[1,128]},e(J,[2,51]),e(c,[2,30]),{38:[2,34]},{38:[1,129]},e(c,[2,74]),e(c,[2,78]),e(c,[2,80]),e(c,[2,81],{67:[1,130]}),e(Ce,[2,8]),e(W,[2,38]),e(c,[2,82])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],75:[2,31],98:[2,10],101:[2,4],111:[2,43],122:[2,34]},parseError:function(u,a){if(a.recoverable)this.trace(u);else{var o=new Error(u);throw o.hash=a,o}},parse:function(u){var a=this,o=[0],i=[],p=[null],t=[],G=this.table,s="",Z=0,Le=0,Ye=2,xe=1,Ke=t.slice.call(arguments,1),b=Object.create(this.lexer),I={yy:{}};for(var ge in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ge)&&(I.yy[ge]=this.yy[ge]);b.setInput(u,I.yy),I.yy.lexer=b,I.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var ke=b.yylloc;t.push(ke);var je=b.options&&b.options.ranges;typeof I.yy.parseError=="function"?this.parseError=I.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Qe(){var N;return N=i.pop()||b.lex()||xe,typeof N!="number"&&(N instanceof Array&&(i=N,N=i.pop()),N=a.symbols_[N]||N),N}for(var T,O,y,Te,w={},$,S,Ie,ee;;){if(O=o[o.length-1],this.defaultActions[O]?y=this.defaultActions[O]:((T===null||typeof T>"u")&&(T=Qe()),y=G[O]&&G[O][T]),typeof y>"u"||!y.length||!y[0]){var Fe="";ee=[];for($ in G[O])this.terminals_[$]&&$>Ye&&ee.push("'"+this.terminals_[$]+"'");b.showPosition?Fe="Parse error on line "+(Z+1)+`: +`+b.showPosition()+` +Expecting `+ee.join(", ")+", got '"+(this.terminals_[T]||T)+"'":Fe="Parse error on line "+(Z+1)+": Unexpected "+(T==xe?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(Fe,{text:b.match,token:this.terminals_[T]||T,line:b.yylineno,loc:ke,expected:ee})}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+T);switch(y[0]){case 1:o.push(T),p.push(b.yytext),t.push(b.yylloc),o.push(y[1]),T=null,Le=b.yyleng,s=b.yytext,Z=b.yylineno,ke=b.yylloc;break;case 2:if(S=this.productions_[y[1]][1],w.$=p[p.length-S],w._$={first_line:t[t.length-(S||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(S||1)].first_column,last_column:t[t.length-1].last_column},je&&(w._$.range=[t[t.length-(S||1)].range[0],t[t.length-1].range[1]]),Te=this.performAction.apply(w,[s,Le,Z,I.yy,y[1],p,t].concat(Ke)),typeof Te<"u")return Te;S&&(o=o.slice(0,-1*S*2),p=p.slice(0,-1*S),t=t.slice(0,-1*S)),o.push(this.productions_[y[1]][0]),p.push(w.$),t.push(w._$),Ie=G[o[o.length-2]][o[o.length-1]],o.push(Ie);break;case 3:return!0}}return!0}},ze=function(){var L={EOF:1,parseError:function(a,o){if(this.yy.parser)this.yy.parser.parseError(a,o);else throw new Error(a)},setInput:function(u,a){return this.yy=a||this.yy||{},this._input=u,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var a=u.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},unput:function(u){var a=u.length,o=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),o.length-1&&(this.yylineno-=o.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:o?(o.length===i.length?this.yylloc.first_column:0)+i[i.length-o.length].length-o[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(u){this.unput(this.match.slice(u))},pastInput:function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var u=this.pastInput(),a=new Array(u.length+1).join("-");return u+this.upcomingInput()+` +`+a+"^"},test_match:function(u,a){var o,i,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),i=u[0].match(/(?:\r\n?|\n).*/g),i&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],o=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o)return o;if(this._backtrack){for(var t in p)this[t]=p[t];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,a,o,i;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),t=0;ta[0].length)){if(a=o,i=t,this.options.backtrack_lexer){if(u=this.test_match(o,p[t]),u!==!1)return u;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(u=this.test_match(a,p[i]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return a||this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},pushState:function(a){this.begin(a)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(a,o,i,p){switch(i){case 0:return 52;case 1:return 53;case 2:return 54;case 3:return 55;case 4:break;case 5:break;case 6:return this.begin("acc_title"),30;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),32;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 69;case 22:this.popState();break;case 23:return 70;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return this.begin("namespace"),39;case 28:return this.popState(),8;case 29:break;case 30:return this.begin("namespace-body"),36;case 31:return this.popState(),38;case 32:return"EOF_IN_STRUCT";case 33:return 8;case 34:break;case 35:return"EDGE_STATE";case 36:return this.begin("class"),43;case 37:return this.popState(),8;case 38:break;case 39:return this.popState(),this.popState(),38;case 40:return this.begin("class-body"),36;case 41:return this.popState(),38;case 42:return"EOF_IN_STRUCT";case 43:return"EDGE_STATE";case 44:return"OPEN_IN_STRUCT";case 45:break;case 46:return"MEMBER";case 47:return 72;case 48:return 65;case 49:return 66;case 50:return 68;case 51:return 49;case 52:return 51;case 53:return 44;case 54:return 45;case 55:return 71;case 56:this.popState();break;case 57:return"GENERICTYPE";case 58:this.begin("generic");break;case 59:this.popState();break;case 60:return"BQUOTE_STR";case 61:this.begin("bqstring");break;case 62:return 67;case 63:return 67;case 64:return 67;case 65:return 67;case 66:return 59;case 67:return 59;case 68:return 61;case 69:return 61;case 70:return 60;case 71:return 58;case 72:return 62;case 73:return 63;case 74:return 64;case 75:return 21;case 76:return 41;case 77:return 84;case 78:return"DOT";case 79:return"PLUS";case 80:return 81;case 81:return"EQUALS";case 82:return"EQUALS";case 83:return 88;case 84:return 12;case 85:return 14;case 86:return"PUNCTUATION";case 87:return 87;case 88:return 86;case 89:return 83;case 90:return 9}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,31,32,33,34,35,36,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},namespace:{rules:[26,27,28,29,30,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},"class-body":{rules:[26,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},class:{rules:[26,37,38,39,40,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},acc_descr:{rules:[9,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},acc_title:{rules:[7,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},callback_args:{rules:[22,23,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},callback_name:{rules:[19,20,21,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},href:{rules:[26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},struct:{rules:[26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},generic:{rules:[26,47,48,49,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},bqstring:{rules:[26,47,48,49,50,51,52,53,54,55,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},string:{rules:[24,25,26,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,36,47,48,49,50,51,52,53,54,55,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],inclusive:!0}}};return L}();me.lexer=ze;function be(){this.yy={}}return be.prototype=me,me.Parser=be,new be}();De.parser=De;const Nt=De,Oe=["#","+","~","-",""];class Re{constructor(n,r){this.memberType=r,this.visibility="",this.classifier="";const h=tt(n,F());this.parseMember(h)}getDisplayDetails(){let n=this.visibility+ye(this.id);this.memberType==="method"&&(n+=`(${ye(this.parameters.trim())})`,this.returnType&&(n+=" : "+ye(this.returnType))),n=n.trim();const r=this.parseClassifier();return{displayText:n,cssStyle:r}}parseMember(n){let r="";if(this.memberType==="method"){const h=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/,l=n.match(h);if(l){const A=l[1]?l[1].trim():"";if(Oe.includes(A)&&(this.visibility=A),this.id=l[2].trim(),this.parameters=l[3]?l[3].trim():"",r=l[4]?l[4].trim():"",this.returnType=l[5]?l[5].trim():"",r===""){const g=this.returnType.substring(this.returnType.length-1);g.match(/[$*]/)&&(r=g,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const h=n.length,l=n.substring(0,1),A=n.substring(h-1);Oe.includes(l)&&(this.visibility=l),A.match(/[*?]/)&&(r=A),this.id=n.substring(this.visibility===""?0:1,r===""?h:h-1)}this.classifier=r}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}const ie="classId-";let _e=[],f={},te=[],we=0,x={},Be=0,z=[];const R=e=>v.sanitizeText(e,F()),P=function(e){const n=v.sanitizeText(e,F());let r="",h=n;if(n.indexOf("~")>0){const l=n.split("~");h=R(l[0]),r=R(l[1])}return{className:h,type:r}},st=function(e,n){const r=v.sanitizeText(e,F());n&&(n=R(n));const{className:h}=P(r);f[h].label=n},se=function(e){const n=v.sanitizeText(e,F()),{className:r,type:h}=P(n);if(Object.hasOwn(f,r))return;const l=v.sanitizeText(r,F());f[l]={id:l,type:h,label:l,cssClasses:[],methods:[],members:[],annotations:[],domId:ie+l+"-"+we},we++},Ve=function(e){const n=v.sanitizeText(e,F());if(n in f)return f[n].domId;throw new Error("Class not found: "+n)},it=function(){_e=[],f={},te=[],z=[],z.push(Ge),x={},Be=0,$e()},nt=function(e){return f[e]},ut=function(){return f},rt=function(){return _e},at=function(){return te},lt=function(e){et.debug("Adding relation: "+JSON.stringify(e)),se(e.id1),se(e.id2),e.id1=P(e.id1).className,e.id2=P(e.id2).className,e.relationTitle1=v.sanitizeText(e.relationTitle1.trim(),F()),e.relationTitle2=v.sanitizeText(e.relationTitle2.trim(),F()),_e.push(e)},ct=function(e,n){const r=P(e).className;f[r].annotations.push(n)},Me=function(e,n){se(e);const r=P(e).className,h=f[r];if(typeof n=="string"){const l=n.trim();l.startsWith("<<")&&l.endsWith(">>")?h.annotations.push(R(l.substring(2,l.length-2))):l.indexOf(")")>0?h.methods.push(new Re(l,"method")):l&&h.members.push(new Re(l,"attribute"))}},ot=function(e,n){Array.isArray(n)&&(n.reverse(),n.forEach(r=>Me(e,r)))},ht=function(e,n){const r={id:`note${te.length}`,class:n,text:e};te.push(r)},At=function(e){return e.startsWith(":")&&(e=e.substring(1)),R(e.trim())},Se=function(e,n){e.split(",").forEach(function(r){let h=r;r[0].match(/\d/)&&(h=ie+h),f[h]!==void 0&&f[h].cssClasses.push(n)})},pt=function(e,n){e.split(",").forEach(function(r){n!==void 0&&(f[r].tooltip=R(n))})},ft=function(e,n){return n?x[n].classes[e].tooltip:f[e].tooltip},dt=function(e,n,r){const h=F();e.split(",").forEach(function(l){let A=l;l[0].match(/\d/)&&(A=ie+A),f[A]!==void 0&&(f[A].link=Pe.formatUrl(n,h),h.securityLevel==="sandbox"?f[A].linkTarget="_top":typeof r=="string"?f[A].linkTarget=R(r):f[A].linkTarget="_blank")}),Se(e,"clickable")},Et=function(e,n,r){e.split(",").forEach(function(h){Ct(h,n,r),f[h].haveCallback=!0}),Se(e,"clickable")},Ct=function(e,n,r){const h=v.sanitizeText(e,F());if(F().securityLevel!=="loose"||n===void 0)return;const A=h;if(f[A]!==void 0){const g=Ve(A);let D=[];if(typeof r=="string"){D=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let B=0;B")),l.classed("hover",!0)}).on("mouseout",function(){n.transition().duration(500).style("opacity",0),U(this).classed("hover",!1)})};z.push(Ge);let Ue="TB";const kt=()=>Ue,Tt=e=>{Ue=e},Ft=function(e){x[e]===void 0&&(x[e]={id:e,classes:{},children:{},domId:ie+e+"-"+Be},Be++)},yt=function(e){return x[e]},Dt=function(){return x},Bt=function(e,n){x[e]!==void 0&&n.map(r=>{f[r].parent=e,x[e].classes[r]=f[r]})},vt={setAccTitle:Xe,getAccTitle:We,getAccDescription:qe,setAccDescription:He,getConfig:()=>F().class,addClass:se,bindFunctions:mt,clear:it,getClass:nt,getClasses:ut,getNotes:at,addAnnotation:ct,addNote:ht,getRelations:rt,addRelation:lt,getDirection:kt,setDirection:Tt,addMember:Me,addMembers:ot,cleanupLabel:At,lineType:bt,relationType:gt,setClickEvent:Et,setCssClass:Se,setLink:dt,getTooltip:ft,setTooltip:pt,lookUpDomId:Ve,setDiagramTitle:Je,getDiagramTitle:Ze,setClassLabel:st,addNamespace:Ft,addClassesToNamespace:Bt,getNamespace:yt,getNamespaces:Dt},_t=e=>`g.classGroup text { + fill: ${e.nodeBorder||e.classText}; + stroke: none; + font-family: ${e.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${e.classText}; +} +.edgeLabel .label rect { + fill: ${e.mainBkg}; +} +.label text { + fill: ${e.classText}; +} +.edgeLabel .label span { + background: ${e.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.classGroup line { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${e.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${e.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} +`,Lt=_t;export{vt as d,Nt as p,Lt as s}; diff --git a/assets/styles-b966c4ae-SO_n7QzH.js b/assets/styles-b966c4ae-SO_n7QzH.js new file mode 100644 index 00000000..9da0b0bf --- /dev/null +++ b/assets/styles-b966c4ae-SO_n7QzH.js @@ -0,0 +1,110 @@ +import{G as V}from"./layout-bNXk8SHo.js";import{ag as D,ah as M,ai as R,aj as j,ak as F,al as U,ad as H,p as N,l as y,q as W,c as C,j as G,r as $,o as E,h as _,y as X,t as J,am as K}from"./mermaid.core-Up0YySao.js";import{r as Q}from"./index-67a42d7d-Sclb7lyu.js";function Y(e){return typeof e=="string"?new D([document.querySelectorAll(e)],[document.documentElement]):new D([R(e)],M)}const Z=(e,r)=>j.lang.round(F.parse(e)[r]),O=Z;function be(e,r){return!!e.children(r).length}function fe(e){return L(e.v)+":"+L(e.w)+":"+L(e.name)}var ee=/:/g;function L(e){return e?String(e).replace(ee,"\\:"):""}function te(e,r){r&&e.attr("style",r)}function ue(e,r,c){r&&e.attr("class",r).attr("class",c+" "+e.attr("class"))}function we(e,r){var c=r.graph();if(U(c)){var a=c.transition;if(H(a))return a(e)}return e}function le(e,r){var c=e.append("foreignObject").attr("width","100000"),a=c.append("xhtml:div");a.attr("xmlns","http://www.w3.org/1999/xhtml");var i=r.label;switch(typeof i){case"function":a.insert(i);break;case"object":a.insert(function(){return i});break;default:a.html(i)}te(a,r.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap");var d=a.node().getBoundingClientRect();return c.attr("width",d.width).attr("height",d.height),c}const z={},re=function(e){const r=Object.keys(e);for(const c of r)z[c]=e[c]},q=function(e,r,c,a,i,d){const u=a.select(`[id="${c}"]`);Object.keys(e).forEach(function(p){const l=e[p];let g="default";l.classes.length>0&&(g=l.classes.join(" ")),g=g+" flowchart-label";const w=N(l.styles);let t=l.text!==void 0?l.text:l.id,s;if(y.info("vertex",l,l.labelType),l.labelType==="markdown")y.info("vertex",l,l.labelType);else if(W(C().flowchart.htmlLabels)){const m={label:t.replace(/fa[blrs]?:fa-[\w-]+/g,k=>``)};s=le(u,m).node(),s.parentNode.removeChild(s)}else{const m=i.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("style",w.labelStyle.replace("color:","fill:"));const k=t.split(G.lineBreakRegex);for(const T of k){const v=i.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=T,m.appendChild(v)}s=m}let b=0,o="";switch(l.type){case"round":b=5,o="rect";break;case"square":o="rect";break;case"diamond":o="question";break;case"hexagon":o="hexagon";break;case"odd":o="rect_left_inv_arrow";break;case"lean_right":o="lean_right";break;case"lean_left":o="lean_left";break;case"trapezoid":o="trapezoid";break;case"inv_trapezoid":o="inv_trapezoid";break;case"odd_right":o="rect_left_inv_arrow";break;case"circle":o="circle";break;case"ellipse":o="ellipse";break;case"stadium":o="stadium";break;case"subroutine":o="subroutine";break;case"cylinder":o="cylinder";break;case"group":o="rect";break;case"doublecircle":o="doublecircle";break;default:o="rect"}r.setNode(l.id,{labelStyle:w.labelStyle,shape:o,labelText:t,labelType:l.labelType,rx:b,ry:b,class:g,style:w.style,id:l.id,link:l.link,linkTarget:l.linkTarget,tooltip:d.db.getTooltip(l.id)||"",domId:d.db.lookUpDomId(l.id),haveCallback:l.haveCallback,width:l.type==="group"?500:void 0,dir:l.dir,type:l.type,props:l.props,padding:C().flowchart.padding}),y.info("setNode",{labelStyle:w.labelStyle,labelType:l.labelType,shape:o,labelText:t,rx:b,ry:b,class:g,style:w.style,id:l.id,domId:d.db.lookUpDomId(l.id),width:l.type==="group"?500:void 0,type:l.type,dir:l.dir,props:l.props,padding:C().flowchart.padding})})},P=function(e,r,c){y.info("abc78 edges = ",e);let a=0,i={},d,u;if(e.defaultStyle!==void 0){const n=N(e.defaultStyle);d=n.style,u=n.labelStyle}e.forEach(function(n){a++;const p="L-"+n.start+"-"+n.end;i[p]===void 0?(i[p]=0,y.info("abc78 new entry",p,i[p])):(i[p]++,y.info("abc78 new entry",p,i[p]));let l=p+"-"+i[p];y.info("abc78 new link id to be used is",p,l,i[p]);const g="LS-"+n.start,w="LE-"+n.end,t={style:"",labelStyle:""};switch(t.minlen=n.length||1,n.type==="arrow_open"?t.arrowhead="none":t.arrowhead="normal",t.arrowTypeStart="arrow_open",t.arrowTypeEnd="arrow_open",n.type){case"double_arrow_cross":t.arrowTypeStart="arrow_cross";case"arrow_cross":t.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":t.arrowTypeStart="arrow_point";case"arrow_point":t.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":t.arrowTypeStart="arrow_circle";case"arrow_circle":t.arrowTypeEnd="arrow_circle";break}let s="",b="";switch(n.stroke){case"normal":s="fill:none;",d!==void 0&&(s=d),u!==void 0&&(b=u),t.thickness="normal",t.pattern="solid";break;case"dotted":t.thickness="normal",t.pattern="dotted",t.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":t.thickness="thick",t.pattern="solid",t.style="stroke-width: 3.5px;fill:none;";break;case"invisible":t.thickness="invisible",t.pattern="solid",t.style="stroke-width: 0;fill:none;";break}if(n.style!==void 0){const o=N(n.style);s=o.style,b=o.labelStyle}t.style=t.style+=s,t.labelStyle=t.labelStyle+=b,n.interpolate!==void 0?t.curve=$(n.interpolate,E):e.defaultInterpolate!==void 0?t.curve=$(e.defaultInterpolate,E):t.curve=$(z.curve,E),n.text===void 0?n.style!==void 0&&(t.arrowheadStyle="fill: #333"):(t.arrowheadStyle="fill: #333",t.labelpos="c"),t.labelType=n.labelType,t.label=n.text.replace(G.lineBreakRegex,` +`),n.style===void 0&&(t.style=t.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),t.labelStyle=t.labelStyle.replace("color:","fill:"),t.id=l,t.classes="flowchart-link "+g+" "+w,r.setEdge(n.start,n.end,t,a)})},ae=function(e,r){return r.db.getClasses()},oe=async function(e,r,c,a){y.info("Drawing flowchart");let i=a.db.getDirection();i===void 0&&(i="TD");const{securityLevel:d,flowchart:u}=C(),n=u.nodeSpacing||50,p=u.rankSpacing||50;let l;d==="sandbox"&&(l=_("#i"+r));const g=d==="sandbox"?_(l.nodes()[0].contentDocument.body):_("body"),w=d==="sandbox"?l.nodes()[0].contentDocument:document,t=new V({multigraph:!0,compound:!0}).setGraph({rankdir:i,nodesep:n,ranksep:p,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let s;const b=a.db.getSubGraphs();y.info("Subgraphs - ",b);for(let f=b.length-1;f>=0;f--)s=b[f],y.info("Subgraph - ",s),a.db.addVertex(s.id,{text:s.title,type:s.labelType},"group",void 0,s.classes,s.dir);const o=a.db.getVertices(),m=a.db.getEdges();y.info("Edges",m);let k=0;for(k=b.length-1;k>=0;k--){s=b[k],Y("cluster").append("text");for(let f=0;f{const c=O,a=c(e,"r"),i=c(e,"g"),d=c(e,"b");return K(a,i,d,r)},se=e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${ne(e.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`,ye=se;export{te as a,le as b,we as c,ue as d,fe as e,he as f,ye as g,be as i,Y as s}; diff --git a/assets/styles-bbc3fe3b-RFckTJF_.js b/assets/styles-bbc3fe3b-RFckTJF_.js new file mode 100644 index 00000000..86453b7a --- /dev/null +++ b/assets/styles-bbc3fe3b-RFckTJF_.js @@ -0,0 +1,207 @@ +import{c as Y,g as Ut,s as zt,a as Mt,b as Ht,v as Xt,x as Kt,l as D,j as ot,z as Wt,b2 as Jt}from"./mermaid.core-Up0YySao.js";var gt=function(){var t=function(C,r,n,i){for(n=n||{},i=C.length;i--;n[C[i]]=r);return n},s=[1,2],a=[1,3],h=[1,4],f=[2,4],d=[1,9],y=[1,11],k=[1,15],u=[1,16],E=[1,17],T=[1,18],R=[1,30],G=[1,19],j=[1,20],U=[1,21],z=[1,22],M=[1,23],H=[1,25],X=[1,26],K=[1,27],W=[1,28],J=[1,29],q=[1,32],Q=[1,33],Z=[1,34],tt=[1,35],w=[1,31],c=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],et=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Dt=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],ht={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"-->",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(r,n,i,o,p,e,$){var l=e.length-1;switch(p){case 3:return o.setRootDoc(e[l]),e[l];case 4:this.$=[];break;case 5:e[l]!="nl"&&(e[l-1].push(e[l]),this.$=e[l-1]);break;case 6:case 7:this.$=e[l];break;case 8:this.$="nl";break;case 11:this.$=e[l];break;case 12:const B=e[l-1];B.description=o.trimColon(e[l]),this.$=B;break;case 13:this.$={stmt:"relation",state1:e[l-2],state2:e[l]};break;case 14:const ft=o.trimColon(e[l]);this.$={stmt:"relation",state1:e[l-3],state2:e[l-1],description:ft};break;case 18:this.$={stmt:"state",id:e[l-3],type:"default",description:"",doc:e[l-1]};break;case 19:var v=e[l],O=e[l-2].trim();if(e[l].match(":")){var st=e[l].split(":");v=st[0],O=[O,st[1]]}this.$={stmt:"state",id:v,type:"default",description:O};break;case 20:this.$={stmt:"state",id:e[l-3],type:"default",description:e[l-5],doc:e[l-1]};break;case 21:this.$={stmt:"state",id:e[l],type:"fork"};break;case 22:this.$={stmt:"state",id:e[l],type:"join"};break;case 23:this.$={stmt:"state",id:e[l],type:"choice"};break;case 24:this.$={stmt:"state",id:o.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:e[l-1].trim(),note:{position:e[l-2].trim(),text:e[l].trim()}};break;case 28:this.$=e[l].trim(),o.setAccTitle(this.$);break;case 29:case 30:this.$=e[l].trim(),o.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:e[l-1].trim(),classes:e[l].trim()};break;case 33:this.$={stmt:"applyClass",id:e[l-1].trim(),styleClass:e[l].trim()};break;case 34:o.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:o.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:o.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:o.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:e[l].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:e[l-2].trim(),classes:[e[l].trim()],type:"default",description:""};break}},table:[{3:1,4:s,5:a,6:h},{1:[3]},{3:5,4:s,5:a,6:h},{3:6,4:s,5:a,6:h},t([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],f,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,5]),{9:36,10:12,11:13,12:14,15:k,16:u,18:E,21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,7]),t(c,[2,8]),t(c,[2,9]),t(c,[2,10]),t(c,[2,11],{13:[1,37],14:[1,38]}),t(c,[2,15]),{17:[1,39]},t(c,[2,17],{19:[1,40]}),{22:[1,41]},t(c,[2,21]),t(c,[2,22]),t(c,[2,23]),t(c,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},t(c,[2,27]),{33:[1,46]},{35:[1,47]},t(c,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},t(et,[2,40],{51:[1,51]}),t(et,[2,41],{51:[1,52]}),t(c,[2,34]),t(c,[2,35]),t(c,[2,36]),t(c,[2,37]),t(c,[2,6]),t(c,[2,12]),{12:53,23:R,50:w},t(c,[2,16]),t(Dt,f,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},t(c,[2,28]),t(c,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},t(c,[2,13],{13:[1,63]}),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,20:[1,64],21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},t(c,[2,31]),t(c,[2,32]),t(c,[2,33]),t(et,[2,42]),t(et,[2,43]),t(c,[2,14]),t(c,[2,18]),t(Dt,f,{7:68}),t(c,[2,25]),t(c,[2,26]),{4:d,5:y,8:8,9:10,10:12,11:13,12:14,15:k,16:u,18:E,20:[1,69],21:T,23:R,24:G,25:j,26:U,27:z,28:M,31:24,32:H,34:X,36:K,37:W,41:J,44:q,45:Q,46:Z,47:tt,50:w},t(c,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(r,n){if(n.recoverable)this.trace(r);else{var i=new Error(r);throw i.hash=n,i}},parse:function(r){var n=this,i=[0],o=[],p=[null],e=[],$=this.table,l="",v=0,O=0,st=2,B=1,ft=e.slice.call(arguments,1),S=Object.create(this.lexer),A={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(A.yy[dt]=this.yy[dt]);S.setInput(r,A.yy),A.yy.lexer=S,A.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var yt=S.yylloc;e.push(yt);var Gt=S.options&&S.options.ranges;typeof A.yy.parseError=="function"?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function jt(){var x;return x=o.pop()||S.lex()||B,typeof x!="number"&&(x instanceof Array&&(o=x,x=o.pop()),x=n.symbols_[x]||x),x}for(var _,L,m,pt,N={},it,b,Ct,rt;;){if(L=i[i.length-1],this.defaultActions[L]?m=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=jt()),m=$[L]&&$[L][_]),typeof m>"u"||!m.length||!m[0]){var St="";rt=[];for(it in $[L])this.terminals_[it]&&it>st&&rt.push("'"+this.terminals_[it]+"'");S.showPosition?St="Parse error on line "+(v+1)+`: +`+S.showPosition()+` +Expecting `+rt.join(", ")+", got '"+(this.terminals_[_]||_)+"'":St="Parse error on line "+(v+1)+": Unexpected "+(_==B?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(St,{text:S.match,token:this.terminals_[_]||_,line:S.yylineno,loc:yt,expected:rt})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+_);switch(m[0]){case 1:i.push(_),p.push(S.yytext),e.push(S.yylloc),i.push(m[1]),_=null,O=S.yyleng,l=S.yytext,v=S.yylineno,yt=S.yylloc;break;case 2:if(b=this.productions_[m[1]][1],N.$=p[p.length-b],N._$={first_line:e[e.length-(b||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(b||1)].first_column,last_column:e[e.length-1].last_column},Gt&&(N._$.range=[e[e.length-(b||1)].range[0],e[e.length-1].range[1]]),pt=this.performAction.apply(N,[l,O,v,A.yy,m[1],p,e].concat(ft)),typeof pt<"u")return pt;b&&(i=i.slice(0,-1*b*2),p=p.slice(0,-1*b),e=e.slice(0,-1*b)),i.push(this.productions_[m[1]][0]),p.push(N.$),e.push(N._$),Ct=$[i[i.length-2]][i[i.length-1]],i.push(Ct);break;case 3:return!0}}return!0}},Yt=function(){var C={EOF:1,parseError:function(n,i){if(this.yy.parser)this.yy.parser.parseError(n,i);else throw new Error(n)},setInput:function(r,n){return this.yy=n||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var n=r.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var n=r.length,i=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var p=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===o.length?this.yylloc.first_column:0)+o[o.length-i.length].length-i[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[p[0],p[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),n=new Array(r.length+1).join("-");return r+this.upcomingInput()+` +`+n+"^"},test_match:function(r,n){var i,o,p;if(this.options.backtrack_lexer&&(p={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(p.yylloc.range=this.yylloc.range.slice(0))),o=r[0].match(/(?:\r\n?|\n).*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-o[o.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(r[0].length),this.matched+=r[0],i=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var e in p)this[e]=p[e];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,n,i,o;this._more||(this.yytext="",this.match="");for(var p=this._currentRules(),e=0;en[0].length)){if(n=i,o=e,this.options.backtrack_lexer){if(r=this.test_match(i,p[e]),r!==!1)return r;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(r=this.test_match(n,p[o]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var n=this.next();return n||this.lex()},begin:function(n){this.conditionStack.push(n)},popState:function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},pushState:function(n){this.begin(n)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(n,i,o,p){switch(o){case 0:return 40;case 1:return 44;case 2:return 45;case 3:return 46;case 4:return 47;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),16;case 13:return 17;case 14:this.popState();break;case 15:return this.begin("acc_title"),32;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),34;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),37;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),38;case 25:return this.popState(),39;case 26:return this.pushState("CLASS"),41;case 27:return this.popState(),this.pushState("CLASS_STYLE"),42;case 28:return this.popState(),43;case 29:return this.pushState("SCALE"),16;case 30:return 17;case 31:this.popState();break;case 32:this.pushState("STATE");break;case 33:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),24;case 34:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),25;case 35:return this.popState(),i.yytext=i.yytext.slice(0,-10).trim(),26;case 36:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),24;case 37:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),25;case 38:return this.popState(),i.yytext=i.yytext.slice(0,-10).trim(),26;case 39:return 44;case 40:return 45;case 41:return 46;case 42:return 47;case 43:this.pushState("STATE_STRING");break;case 44:return this.pushState("STATE_ID"),"AS";case 45:return this.popState(),"ID";case 46:this.popState();break;case 47:return"STATE_DESCR";case 48:return 18;case 49:this.popState();break;case 50:return this.popState(),this.pushState("struct"),19;case 51:break;case 52:return this.popState(),20;case 53:break;case 54:return this.begin("NOTE"),28;case 55:return this.popState(),this.pushState("NOTE_ID"),52;case 56:return this.popState(),this.pushState("NOTE_ID"),53;case 57:this.popState(),this.pushState("FLOATING_NOTE");break;case 58:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 59:break;case 60:return"NOTE_TEXT";case 61:return this.popState(),"ID";case 62:return this.popState(),this.pushState("NOTE_TEXT"),23;case 63:return this.popState(),i.yytext=i.yytext.substr(2).trim(),30;case 64:return this.popState(),i.yytext=i.yytext.slice(0,-8).trim(),30;case 65:return 6;case 66:return 6;case 67:return 15;case 68:return 50;case 69:return 23;case 70:return i.yytext=i.yytext.trim(),13;case 71:return 14;case 72:return 27;case 73:return 51;case 74:return 5;case 75:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,32,39,40,41,42,51,52,53,54,68,69,70,71,72],inclusive:!1},FLOATING_NOTE_ID:{rules:[61],inclusive:!1},FLOATING_NOTE:{rules:[58,59,60],inclusive:!1},NOTE_TEXT:{rules:[63,64],inclusive:!1},NOTE_ID:{rules:[62],inclusive:!1},NOTE:{rules:[55,56,57],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,30,31],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[45],inclusive:!1},STATE_STRING:{rules:[46,47],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,33,34,35,36,37,38,43,44,48,49,50],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,50,54,65,66,67,68,69,70,71,73,74,75],inclusive:!0}}};return C}();ht.lexer=Yt;function ut(){this.yy={}}return ut.prototype=ht,ht.Parser=ut,new ut}();gt.parser=gt;const De=gt,qt="LR",Ce="TB",_t="state",It="relation",Qt="classDef",Zt="applyClass",Et="default",te="divider",bt="[*]",Ot="start",Nt=bt,Rt="end",vt="color",At="fill",ee="bgFill",se=",";function wt(){return{}}let $t=qt,lt=[],P=wt();const Bt=()=>({relations:[],states:{},documents:{}});let ct={root:Bt()},g=ct.root,F=0,Lt=0;const ie={LINE:0,DOTTED_LINE:1},re={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},nt=t=>JSON.parse(JSON.stringify(t)),ne=t=>{D.info("Setting root doc",t),lt=t},ae=()=>lt,at=(t,s,a)=>{if(s.stmt===It)at(t,s.state1,!0),at(t,s.state2,!1);else if(s.stmt===_t&&(s.id==="[*]"?(s.id=a?t.id+"_start":t.id+"_end",s.start=a):s.id=s.id.trim()),s.doc){const h=[];let f=[],d;for(d=0;d0&&f.length>0){const y={stmt:_t,id:Jt(),type:"divider",doc:nt(f)};h.push(nt(y)),s.doc=h}s.doc.forEach(y=>at(s,y,!0))}},le=()=>(at({id:"root"},{id:"root",doc:lt},!0),{id:"root",doc:lt}),ce=t=>{let s;t.doc?s=t.doc:s=t,D.info(s),Pt(!0),D.info("Extract",s),s.forEach(a=>{switch(a.stmt){case _t:I(a.id.trim(),a.type,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles);break;case It:Ft(a.state1,a.state2,a.description);break;case Qt:Vt(a.id.trim(),a.classes);break;case Zt:xt(a.id.trim(),a.styleClass);break}})},I=function(t,s=Et,a=null,h=null,f=null,d=null,y=null,k=null){const u=t==null?void 0:t.trim();g.states[u]===void 0?(D.info("Adding state ",u,h),g.states[u]={id:u,descriptions:[],type:s,doc:a,note:f,classes:[],styles:[],textStyles:[]}):(g.states[u].doc||(g.states[u].doc=a),g.states[u].type||(g.states[u].type=s)),h&&(D.info("Setting state description",u,h),typeof h=="string"&&kt(u,h.trim()),typeof h=="object"&&h.forEach(E=>kt(u,E.trim()))),f&&(g.states[u].note=f,g.states[u].note.text=ot.sanitizeText(g.states[u].note.text,Y())),d&&(D.info("Setting state classes",u,d),(typeof d=="string"?[d]:d).forEach(T=>xt(u,T.trim()))),y&&(D.info("Setting state styles",u,y),(typeof y=="string"?[y]:y).forEach(T=>_e(u,T.trim()))),k&&(D.info("Setting state styles",u,y),(typeof k=="string"?[k]:k).forEach(T=>me(u,T.trim())))},Pt=function(t){ct={root:Bt()},g=ct.root,F=0,P=wt(),t||Wt()},V=function(t){return g.states[t]},oe=function(){return g.states},he=function(){D.info("Documents = ",ct)},ue=function(){return g.relations};function mt(t=""){let s=t;return t===bt&&(F++,s=`${Ot}${F}`),s}function Tt(t="",s=Et){return t===bt?Ot:s}function fe(t=""){let s=t;return t===Nt&&(F++,s=`${Rt}${F}`),s}function de(t="",s=Et){return t===Nt?Rt:s}function ye(t,s,a){let h=mt(t.id.trim()),f=Tt(t.id.trim(),t.type),d=mt(s.id.trim()),y=Tt(s.id.trim(),s.type);I(h,f,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),I(d,y,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles),g.relations.push({id1:h,id2:d,relationTitle:ot.sanitizeText(a,Y())})}const Ft=function(t,s,a){if(typeof t=="object")ye(t,s,a);else{const h=mt(t.trim()),f=Tt(t),d=fe(s.trim()),y=de(s);I(h,f),I(d,y),g.relations.push({id1:h,id2:d,title:ot.sanitizeText(a,Y())})}},kt=function(t,s){const a=g.states[t],h=s.startsWith(":")?s.replace(":","").trim():s;a.descriptions.push(ot.sanitizeText(h,Y()))},pe=function(t){return t.substring(0,1)===":"?t.substr(2).trim():t.trim()},Se=()=>(Lt++,"divider-id-"+Lt),Vt=function(t,s=""){P[t]===void 0&&(P[t]={id:t,styles:[],textStyles:[]});const a=P[t];s!=null&&s.split(se).forEach(h=>{const f=h.replace(/([^;]*);/,"$1").trim();if(h.match(vt)){const y=f.replace(At,ee).replace(vt,At);a.textStyles.push(y)}a.styles.push(f)})},ge=function(){return P},xt=function(t,s){t.split(",").forEach(function(a){let h=V(a);if(h===void 0){const f=a.trim();I(f),h=V(f)}h.classes.push(s)})},_e=function(t,s){const a=V(t);a!==void 0&&a.textStyles.push(s)},me=function(t,s){const a=V(t);a!==void 0&&a.textStyles.push(s)},Te=()=>$t,ke=t=>{$t=t},Ee=t=>t&&t[0]===":"?t.substr(1).trim():t.trim(),ve={getConfig:()=>Y().state,addState:I,clear:Pt,getState:V,getStates:oe,getRelations:ue,getClasses:ge,getDirection:Te,addRelation:Ft,getDividerId:Se,setDirection:ke,cleanupLabel:pe,lineType:ie,relationType:re,logDocuments:he,getRootDoc:ae,setRootDoc:ne,getRootDocV2:le,extract:ce,trimColon:Ee,getAccTitle:Ut,setAccTitle:zt,getAccDescription:Mt,setAccDescription:Ht,addStyleClass:Vt,setCssClass:xt,addDescription:kt,setDiagramTitle:Xt,getDiagramTitle:Kt},be=t=>` +defs #statediagram-barbEnd { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor||t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor||t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground||t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg||t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder||t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground||t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`,Ae=be;export{Et as D,It as S,te as a,_t as b,Ce as c,ve as d,De as p,Ae as s}; diff --git a/assets/styles-structure.html-BjOMYMO1.js b/assets/styles-structure.html-BjOMYMO1.js new file mode 100644 index 00000000..b8825507 --- /dev/null +++ b/assets/styles-structure.html-BjOMYMO1.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-bc476d32","path":"/code/citation-style-language/specification/styles-structure.html","title":"样式的结构","lang":"zh-CN","frontmatter":{"title":"样式的结构","date":"2022-08-01T16:55:26.000Z","updated":"2022-08-05T18:03:05.000Z","description":"样式的结构 [!warning] WORK IN PROGRESS 此页面正在施工中。 根元素 cs:style 样式的根元素是 cs:style。在 独立样式 中,根元素有以下几种属性:","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/styles-structure.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"样式的结构"}],["meta",{"property":"og:description","content":"样式的结构 [!warning] WORK IN PROGRESS 此页面正在施工中。 根元素 cs:style 样式的根元素是 cs:style。在 独立样式 中,根元素有以下几种属性:"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:55:26.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"样式的结构\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:55:26.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"根元素 cs:style","slug":"根元素-cs-style","link":"#根元素-cs-style","children":[]},{"level":2,"title":"cs:style 的子元素","slug":"cs-style-的子元素","link":"#cs-style-的子元素","children":[{"level":3,"title":"Info","slug":"info","link":"#info","children":[]},{"level":3,"title":"Citation","slug":"citation","link":"#citation","children":[]},{"level":3,"title":"Bioliography","slug":"bioliography","link":"#bioliography","children":[]},{"level":3,"title":"Macro","slug":"macro","link":"#macro","children":[]},{"level":3,"title":"Locale","slug":"locale","link":"#locale","children":[]}]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":8.58,"words":2573},"filePathRelative":"code/citation-style-language/specification/styles-structure.md","localizedDate":"2022年8月2日","excerpt":"

    样式的结构

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    根元素 cs:style

    \\n

    样式的根元素是 cs:style。在 独立样式 中,根元素有以下几种属性:

    ","autoDesc":true}');export{t as data}; diff --git a/assets/styles-structure.html-xcDsd5F5.js b/assets/styles-structure.html-xcDsd5F5.js new file mode 100644 index 00000000..8026d3cc --- /dev/null +++ b/assets/styles-structure.html-xcDsd5F5.js @@ -0,0 +1,94 @@ +import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as l,o as i,c as u,a,b as n,e as s,w as e,d as o}from"./app-Mf7X6hWu.js";const d={},r=a("h1",{id:"样式的结构",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#样式的结构","aria-hidden":"true"},"#"),n(" 样式的结构")],-1),k=a("blockquote",null,[a("p",null,"[!warning] WORK IN PROGRESS 此页面正在施工中。")],-1),g=a("h2",{id:"根元素-cs-style",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#根元素-cs-style","aria-hidden":"true"},"#"),n(" 根元素 "),a("code",null,"cs:style")],-1),h=a("code",null,"cs:style",-1),m=a("p",null,[a("code",null,"class")],-1),v=a("em",null,"none",-1),_=a("code",null,"in-text",-1),b=a("code",null,"note",-1),f=a("pre",null,[a("code",null,`!!! NOTE "译者注" + in-text 表示引文在文字中,note 表示引文不在文字中,可能是脚注等。 +`)],-1),q=a("p",null,[a("code",null,"default-locale")],-1),x=a("em",null,"none",-1),E={href:"http://books.xmlschemata.org/relaxng/ch19-77191.html",target:"_blank",rel:"noopener noreferrer"},y=a("pre",null,[a("code",null,`!!! TIP "译者注:常用 local_code" + + zh-CN:中文(中国) + + zh-hk:中文(台湾) + + zh:中文 + + en-US: + + 可以参阅 [Language Strings | Microsoft Docs](https://docs.microsoft.com/zh-cn/windows/win32/wmformat/language-strings) +`)],-1),B=a("p",null,[a("code",null,"version")],-1),A=a("p",null,[n(": 🏳️ Default: "),a("em",null,"none"),n(" · ⚠ Required — 样式的 CSL 版本。对于 CSL 1.0 兼容样式,必须是 "),a("code",null,"1.0"),n("。")],-1),C=a("code",null,"cs:style",-1),D=a("code",null,"version",-1),S=a("code",null,"default-locale",-1),R=a("code",null,"cs:style",-1),F=o(`
    <?xml version="1.0" encoding="UTF-8"?>
    +<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" class="in-text" default-locale="fr-FR"/>
    +

    cs:style 的子元素

    `,2),L=a("code",null,"cs:style",-1),I=o("

    cs:info

    : 🏳️ Default: none · ⚠ Required · ⚠ 必须为第一个子元素 — 描述样式的元数据 :样式名称(style name)、样式 ID(ID)、样式作者(authors)。

    cs:citation

    : 🏳️ Default: none · ⚠ Required — 用来描述 in-text 引文或者 notes 引文的具体格式。

    cs:bibliography

    : 🏳️ Default: none · Optional — 可能会出现一次。描述参考文献列表的格式。

    cs:macro

    : 🏳️ Default: none · Optional — 可能出现多次。宏可以将格式指示重复使用,使样式更加的紧凑和易维护。

    cs:locale

    : 🏳️ Default: none · Optional — 可能出现多次。用于指定或者覆盖当前的本地化数据。

    ",10),w=a("code",null,"cs:style",-1),T=a("code",null,"cs:info",-1),U=a("h3",{id:"info",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#info","aria-hidden":"true"},"#"),n(" Info")],-1),O=a("code",null,"cs:info",-1),N={href:"http://tools.ietf.org/html/rfc4287",target:"_blank",rel:"noopener noreferrer"},z=a("code",null,"cs:info",-1),X=o(`

    cs:authorcs:contributor

    : 🏳️ Default: none · Optional — cs:authorcs:contributor 分别用来致谢样式的作者和贡献者,可能被使用多次。

     \`cs:name\`
    +
    + :    🏳️ Default: _none_ ·  ⚠ Required — 作者或贡献者的姓名。
    +
    + \`cs:email\` 和 \`cs:uri\` 
    +
    + :    🏳️ Default: _none_ ·  Optional — 作者或者贡献者邮箱和 URI。
    +

    cs:category

    : 🏳️ Default: none · Optional — 样式可能被分类到一个或者多个类别,cs:category 可能被使用一次,用来描述 in-text 引文怎么渲染。使用 citation-format 属性设置其为以下几种情形:

    - "author-date" - 例如 "… (Doe, 1999)"
    +
    +- "author" - 例如 "… (Doe)"
    +
    +- "numeric" - 例如 "… [1]"
    +
    +- "label" - 例如 "… [doe99]"
    +
    +- "note" - 因为在边注或者脚注出现。
    +

    cs:categroy 也可能在携带 field 属性时多次使用,用来对学科进行分类(见 [附录I 学科分类](附录I 学科分类))。

    cs:id

    : 🏳️ Default: none · ⚠ Required — 必须出现一次。该元素应该包含一个 URI 以建立样式的 ID,对于公开可用的样式,需要一个稳定、唯一的并可以引用的 URI。

    cs:issn/cs:essn/cs:issnl

    `,10),P=a("em",null,"none",-1),V=a("code",null,"cs:issn",-1),G=a("code",null,"cs:eissn",-1),M=a("code",null,"cs:issnl",-1),W={href:"http://www.issn.org/2-22637-What-is-an-ISSN-L.php",target:"_blank",rel:"noopener noreferrer"},H=o('

    : 🏳️ Default: none · Optional — 可以使用多次。cs:link 必须携带两个属性 hrefrel

    `href`\n:    ⚠ Required — 用来设置 URI (通常情况下为 URL)\n\n`rel`\n:    ⚠ Required — 表明 URI 与当前样式的关系,它的值有:\n\n    - `self` - 该 URI 值为样式本身的 URI\n    - `template` - 该 URI 是用来编写该样式的模板的 URI\n    - `documentation` - 该 URI 是该样式的文档\n

    cs:published

    ',4),K=a("em",null,"none",-1),j=a("code",null,"cs:published",-1),J={href:"http://books.xmlschemata.org/relaxng/ch19-77049.html",target:"_blank",rel:"noopener noreferrer"},Q=o('

    cs:rights

    : 🏳️ Default: none · Optional — cs:rights 表明了该 CSL 的 license,可能会携带 license 属性。

    cs:summary

    : 🏳️ Default: none · Optional — 给出该 CSL 的简单描述。

    cs:title

    : 🏳️ Default: none · ⚠ Required — 其内容应该是该 CSL 展示给使用者的名字。

    cs:title-short

    : 🏳️ Default: none · Optional — 是上述名字的缩写,比如 APA

    cs:updated

    ',9),Y=a("em",null,"none",-1),Z={href:"http://books.xmlschemata.org/relaxng/ch19-77049.html",target:"_blank",rel:"noopener noreferrer"},$=a("code",null,"cs:link",-1),nn=a("code",null,"cs:rights",-1),an=a("code",null,"cs:summary",-1),sn=a("code",null,"cs:title",-1),tn=a("code",null,"cs:title-short",-1),en=a("code",null,"xml:lang",-1),on={href:"http://books.xmlschemata.org/relaxng/ch19-77191.html",target:"_blank",rel:"noopener noreferrer"},cn=a("code",null,"cs:link",-1),ln=o(`

    在从属格式中,当 cs:link 中的 href 为其父格式的 URI 时,rel 属性必须设置为 "independent-parent"。此外,从属格式的 ref 不能设置为 template,这在独立格式中才能使用。

    下面是一个独立样式 cs:info 的例子:

    <info>
    +  <title>Style Title</title>
    +  <id>http://www.zotero.org/styles/style-title</id>
    +  <link href="http://www.zotero.org/styles/style-title" rel="self"/>
    +  <author>
    +    <name>Author Name</name>
    +    <email>name@domain.com</email>
    +    <uri>http://www.domain.com/name</uri>
    +  </author>
    +  <category citation-format="author-date"/>
    +  <category field="zoology"/>
    +  <updated>2008-10-29T21:01:24+00:00</updated>
    +  <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work
    +  is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported
    +  License</rights>
    +</info>
    +

    Citation

    `,4),pn=a("code",null,"cs:citation",-1),un=a("code",null,'"author",例: [Doe]',-1),dn=a("code",null,'"author-date",例: [Doe 1999]',-1),rn=a("code",null,'"label",例: [doe99]',-1),kn=a("code",null,'"author",例: [Doe]',-1),gn=a("code",null,'"number",例:[1]',-1),hn=a("code",null,"cs:layout",-1),mn=a("code",null,"cs:layout",-1),vn=a("code",null,"cs:sort",-1),_n=a("a",{href:"%E6%8E%92%E5%BA%8F"},"排序",-1),bn=a("code",null,"cs:style",-1),fn=a("code",null,"cs:citation",-1),qn=o(`
    <citation>
    +  <sort>
    +    <key variable="citation-number"/>
    +  </sort>
    +  <layout>
    +    <text variable="citation-number"/>
    +  </layout>
    +</citation>
    +

    对 CSL 处理器开发者的一个建议

    在 note 格式中,引文通常是一个句子。因此,当注释前面没有内容时,引文的首字母最好大写。在其他情况,引文应该是用原样打印。

    Bioliography

    cs:bioliography 元素描述了参考文献条目的格式。同 cs:citation 相同,其子元素 cs:layout 用来描述每个条目的格式,cs:sort 元素用来描述条目的排序。此外,cs:bibliography 可能携带任意的 参考文献目录选项可继承名称选项 中的属性。下面是一个 cs:bioliography 的例子:

    <bibliography>
    +  <sort>
    +    <key macro="author"/>
    +  </sort>
    +  <layout>
    +    <group delimiter=". ">
    +      <text macro="author"/>
    +      <text variable="title"/>
    +    </group>
    +  </layout>
    +</bibliography>
    +

    Macro

    宏,使用 cs:macro 元素定义,包含了格式的指令。宏可以在其他宏,cs:layout 元素 (cs:citationcs:bioliography 中),cs:key 元素 (cs:sort 元素) 中通过 cs:text 调用。宏在文件中位置的通常建议是:放在 cs:locale 元素后以及 cs:citation 元素前。

    宏通过 cs:macro 元素的属性 name 的值来调用。cs:macro 必须包含一个或者多个 渲染元素

    使用宏可以提高样式的可读性,紧凑性以及可维护性。通过过宏调用来保持 cs:citation 元素和 cs:bioliography 元素的内容紧凑通常是推荐的做法。为了在其他样式中方便的重复使用,宏名字建议使用通用的名字。

    下面是一个实例:引文中包括项目题目,并当条目为 "book" 时,设置字体为 italic

    <style>
    +  <macro name="title">
    +    <choose>
    +      <if type="book">
    +        <text variable="title" font-style="italic"/>
    +      </if>
    +      <else>
    +        <text variable="title"/>
    +      </else>
    +    </choose>
    +  </macro>
    +  <citation>
    +    <layout>
    +      <text macro="title"/>
    +    </layout>
    +  </citation>
    +</style>
    +

    Locale

    来自 "locales-xx-XX.xml"locale file 的本地化数据可以通过 cs:locale 元素来重定义或者补充定义。cs:locale 元素应该放在 cs:info 元素后。

    `,14),xn=a("code",null,"cs:locale",-1),En=a("code",null,"xml:lang",-1),yn={href:"http://books.xmlschemata.org/relaxng/ch19-77191.html",target:"_blank",rel:"noopener noreferrer"},Bn=o(`

    对于 cs:locale 元素的详细使用,另见 术语本地化日期格式本地化选项

    下面是一个 cs:locale 元素的例子:

    <style>
    +  <locale xml:lang="en">
    +    <terms>
    +      <term name="editortranslator" form="short">
    +        <single>ed. &amp; trans.</single>
    +        <multiple>eds. &amp; trans.</multiple>
    +      </term>
    +    </terms>
    +  </locale>
    +</style>
    +

    Locale Fallback

    本地化文件为语言方言提供了本地化数据;可选的 cs:locale 元素的 xml:lang 属性设置为一种语言 (例如, "en" 代表英语 ) 或者方言 (例如, "en-US" 代表美式英语 ) ,xml:lang 属性也可能缺失。Localr fallback 是一种在上述的属性设置中检索来确定本地化单元的机制。这些本地化单元包括日期格式,本地化选项或者术语的特定形式。

    对于同一种语言的方言,一种被称为初级方言,其他都是二级方言。下面展示了部分语言的初级方言和二级方言:

    初级方言二级方言
    de-DEde-AT, de-CH
    en-USen-GB
    pt-PTpt-BR
    zh-CNzh-TW

    这里用一个例子来描述 Locale fallback。如果要选择 "de-AT"(Austrian German) 作为使用环境,本地化单元可以来自下面的源(优先级逐渐降低):

    A. 样式文件中的 cs:locale 元素

    • xml:lang 设置为方言 "de-AT"
    • xml:lang 设置为 "de"
    • xml:lang 不设置

    B. Locale files/本地化文件

    • xml:lang 设置为方言 "de-AT"
    • xml:lang 设置为对应的初级方言 "de-DE" (standard german)
    • xml:lang 设置为 "en-US"

    也就是说,如果要使用 "de-AT" 语言,首先在 Locale files 中寻找 "de" 对应的 locales-de-XX.xml 文件,即 "locales-de-AT.xml""locales-de-DE.xml",由于要设置的语言环境是方言 "de-AT",所以选择 de-AT 对应的 locale file locales-de-AT.xml。接下来,如果 csl 文件中包含 cs:locale 元素,将会覆盖 locales-de-AT.xml 文件的设置。

    `,13);function An(Cn,Dn){const t=l("RouterLink"),c=l("ExternalLinkIcon");return i(),u("div",null,[r,k,g,a("p",null,[n("样式的根元素是 "),h,n("。在 "),s(t,{to:"/code/citation-style-language/specification/file-types.html#%E7%8B%AC%E7%AB%8B%E6%A0%B7%E5%BC%8F"},{default:e(()=>[n("独立样式")]),_:1}),n(" 中,根元素有以下几种属性:")]),m,a("p",null,[n(": 🏳️ Default: "),v,n(" — 决定样式的 "),s(t,{to:"/code/citation-style-language/primer/citation-formats.html#%E5%BC%95%E6%96%87%E6%A0%BC%E5%BC%8F"},{default:e(()=>[n("引文格式")]),_:1}),n(" 是 in-text 类型(值 "),_,n(") 或者 note 类型(值 "),b,n(")。")]),f,q,a("p",null,[n(": 🏳️ Default: "),x,n(" · Optional — 为本地化设值默认的 locale。值必须是 "),a("a",E,[n("locale code"),s(c)]),n("。")]),y,B,A,a("p",null,[n("此外,"),C,n(" 可能携带任意的 "),s(t,{to:"/code/citation-style-language/specification/style-behavior.html#%E5%85%A8%E5%B1%80%E9%80%89%E9%A1%B9"},{default:e(()=>[n("全局选项")]),_:1}),n(" 和 "),s(t,{to:"/code/citation-style-language/specification/style-behavior.html#%E5%8F%AF%E7%BB%A7%E6%89%BF%E7%9A%84%E5%90%8D%E7%A7%B0%E9%80%89%E9%A1%B9"},{default:e(()=>[n("可继承的名称选项")]),_:1}),n(" 。")]),a("p",null,[n("在这些属性中,"),s(t,{to:"/code/citation-style-language/specification/file-types.html#%E4%BB%8E%E5%B1%9E%E6%A0%B7%E5%BC%8F"},{default:e(()=>[n("从属样式")]),_:1}),n(" 中,只有 "),D,n(" 是必须的, "),S,n(" 属性可以设置用来代替的默认的本地化文件 。其他的属性是可以忽略的。")]),a("p",null,[n("下面是一个 "),s(t,{to:"/code/citation-style-language/specification/file-types.html#%E7%8B%AC%E7%AB%8B%E6%A0%B7%E5%BC%8F"},{default:e(()=>[n("独立样式")]),_:1}),n(" 的 "),R,n(" 示例,第一行是 XML 声明:")]),F,a("p",null,[n("在 "),s(t,{to:"/code/citation-style-language/specification/file-types.html#%E7%8B%AC%E7%AB%8B%E6%A0%B7%E5%BC%8F"},{default:e(()=>[n("独立样式")]),_:1}),n(" 中,"),L,n(" 有以下子元素:")]),I,a("p",null,[n("在 "),s(t,{to:"/code/citation-style-language/specification/file-types.html#%E4%BB%8E%E5%B1%9E%E6%A0%B7%E5%BC%8F"},{default:e(()=>[n("从属样式")]),_:1}),n(" 中,"),w,n(" 只有 "),T,n(" 一个子元素。")]),U,a("p",null,[O,n(" 包含了样式的元数据。其结构基于 "),a("a",N,[n("Atom Syndication Format"),s(c)]),n("。在独立样式中,"),z,n(" 有下面的几个子元素:")]),X,a("p",null,[n(": 🏳️ Default: "),P,n(" · Optional — "),V,n(" 元素可以多次使用,用来表示该 CSL 对应的期刊的 ISSN 。 "),G,n(" 和 "),M,n(" 可以分别用来表示 eISSN 和 "),a("a",W,[n("ISSN-L"),s(c)]),n(" 。")]),H,a("p",null,[n(": 🏳️ Default: "),K,n(" · Optional — "),j,n(" 必须是一个 "),a("a",J,[n("时间戳"),s(c)]),n(",用来表明样式创建的时间或者可获得的时间。")]),Q,a("p",null,[n(": 🏳️ Default: "),Y,n(" · — 内容是一个 "),a("a",Z,[n("时间戳"),s(c)]),n(",用来表示该 CSL 的最后更新时间。")]),a("p",null,[$,n(","),nn,n(","),an,n(", "),sn,n(" 和 "),tn,n(" 元素可以携带 "),en,n(" 属性用来表示元素内容的语言(值必须是 "),a("a",on,[n("xsd:language locale code"),s(c)]),n(" 中的一个)。对于 "),cn,n(",该属性可以用来表示链接目标的语言。")]),ln,a("p",null,[pn,n(" 元素描述了引文的格式,其中引文可以是一条或者多条。引文的格式可能是 in-text citations(即文字中的引文)和 notes(注记)。in-text citations 包括 ("),un,n(","),dn,n(","),rn,n(","),kn,n(" 或者 "),gn,n(" ) 。这要求 "),hn,n(" 子元素来描述什么样的数据,以及怎么被引用(见 "),s(t,{to:"/code/citation-style-language/specification/rendering-elements.html#Layout"},{default:e(()=>[n("Layout")]),_:1}),n(" )。在 "),mn,n(" 之前可能会有 "),vn,n(" 元素,用来描述引文的排序(见 "),_n,n(")。此外,"),bn,n(" 可能携带任意的 "),s(t,{to:"/code/citation-style-language/specification/style-behavior.html#%E5%BC%95%E6%96%87%E9%80%89%E9%A1%B9"},{default:e(()=>[n("引文选项")]),_:1}),n(" 和 "),s(t,{to:"/code/citation-style-language/specification/style-behavior.html#%E5%8F%AF%E7%BB%A7%E6%89%BF%E7%9A%84%E5%90%8D%E7%A7%B0%E9%80%89%E9%A1%B9"},{default:e(()=>[n("可继承的名称选项")]),_:1}),n(" 中的属性。下面是一个 "),fn,n(" 的例子:")]),qn,a("p",null,[xn,n(" 元素的 "),En,n(" 属性是可选的,必须设置为 "),a("a",yn,[n("xsd:language locale code"),s(c)]),n(" 中的一种,用来确定使用的语言环境(或方言,见 [locale fallback](locale fallback))。")]),Bn])}const Fn=p(d,[["render",An],["__file","styles-structure.html.vue"]]);export{Fn as default}; diff --git a/assets/svgDrawCommon-ad5ef572-uYdJDui6.js b/assets/svgDrawCommon-ad5ef572-uYdJDui6.js new file mode 100644 index 00000000..4bf5bb6d --- /dev/null +++ b/assets/svgDrawCommon-ad5ef572-uYdJDui6.js @@ -0,0 +1 @@ +import{n as o,m as i}from"./mermaid.core-Up0YySao.js";const c=(s,t)=>{const r=s.append("rect");if(r.attr("x",t.x),r.attr("y",t.y),r.attr("fill",t.fill),r.attr("stroke",t.stroke),r.attr("width",t.width),r.attr("height",t.height),t.rx!==void 0&&r.attr("rx",t.rx),t.ry!==void 0&&r.attr("ry",t.ry),t.attrs!==void 0)for(const e in t.attrs)r.attr(e,t.attrs[e]);return t.class!==void 0&&r.attr("class",t.class),r},x=(s,t)=>{const r={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};c(s,r).lower()},d=(s,t)=>{const r=t.text.replace(o," "),e=s.append("text");e.attr("x",t.x),e.attr("y",t.y),e.attr("class","legend"),e.style("text-anchor",t.anchor),t.class!==void 0&&e.attr("class",t.class);const n=e.append("tspan");return n.attr("x",t.x+t.textMargin*2),n.text(r),e},h=(s,t,r,e)=>{const n=s.append("image");n.attr("x",t),n.attr("y",r);const a=i.sanitizeUrl(e);n.attr("xlink:href",a)},y=(s,t,r,e)=>{const n=s.append("use");n.attr("x",t),n.attr("y",r);const a=i.sanitizeUrl(e);n.attr("xlink:href",`#${a}`)},g=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),p=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0});export{x as a,y as b,h as c,c as d,p as e,d as f,g}; diff --git a/assets/the-csl-ecosystem.html-ADI1t1tr.js b/assets/the-csl-ecosystem.html-ADI1t1tr.js new file mode 100644 index 00000000..ce631079 --- /dev/null +++ b/assets/the-csl-ecosystem.html-ADI1t1tr.js @@ -0,0 +1 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as n,c as l,a as e,b as o,e as t,d as c}from"./app-Mf7X6hWu.js";const i={},s=c('

    CSL 生态

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。

    独立格式和从属格式

    CSL 的一切都是围绕 style 的,但是并不是所有的 style 都是相似的。主要包括两种格式:独立格式 (independent styles) 和从属格式 (dependent styles)

    独立格式有 2 种功能,首先,需要先定义一种引用格式。具体格式是什么样的,是 author-date 格式还是 note 格式? 引用的顺序是按字母排序还是按日期排序?参考文献条目中是不是包含 DOI?使用什么标点符号以及使用大写还是小写?文献发表年限在文献题目前还是后?等等,这些都是引用格式定义的。第二个功能是:CSL 必须是能自我解释的,可以称之为格式的元数据。元数据中可以包括该 CSL 对应的期刊标题,以及该期刊的联接,该 CSL 的创建者等。

    从属格式则仅包括格式的元数据,没有对引用格式的定义。从属格式必须指定它的参考格式 (父格式),从属格式的引用将使用它的父格式的引用格式。

    当多个格式使用相同的引用格式时,从属格式非常有用。以一个出版社旗下的不同期刊为例,如果每个期刊都使用独立格式,则每个 CSL 都要完整的对引用格式的描述,即使他们的引用格式都是相同的。这样就导致 CSL 太庞大,冗余太多。这种情况下,从属格式就比较适合。例如,"Nature""Nature Biotechnology""Nature Chemistry" 都使用同样的引用格式。因此,只需要创建一个 "Nature" 的独立格式,将 "Nature Biotechnology""Nature Chemistry" 格式都定义为 "Nature" 格式的从属格式。这样,如果 "Nature" 的出版社想改变引用格式,只需要改变 "Nature" 期刊格式的 CSL 就可以,不需要改变它的从属格式对应的 CSL

    Locale 文件

    事实上,大多数独立格式并不是完全独立的。

    以下面的条目为例:

    ',12),p={href:"https://www.google.com/patents/US5960411",target:"_blank",rel:"noopener noreferrer"},h=c("

    你可以使用一种独立的 CSL 格式来描述这个条目,在格式种编码就可以实现。例如,在最后的链接前加上 "Retrieved from",或者使用 "YYYY, Month DD" 作为日期的格式。但是这样的一种 CSL,只能在美式英语中使用,如果使用德语写作,就必须修改样式中对应的翻译和日期格式。

    幸运的是,独立格式可以依据 CSL locale files(以下也翻译为 本地化文件 ) 来实现通用项的翻译,日期格式和语法的转换。例如:我们可以重写 CSL 格式使用 "retrieved""from" 项,并使用本地化的日期格式。如果我们将 CSL 样式 (同格式) 的使用环境设置为美式英语,该样式将从 US English locale file 检索和翻译对应的项,并生成上述引用。如果将英语换为德语,就会使用德语对应的 locale file,生成的引用如下:

    ",2),u={href:"https://www.google.com/patents/US5960411",target:"_blank",rel:"noopener noreferrer"},S=c('

    因此,使用 CSL locale files ,可以编写与语言无关的 CSL 样式。如上面展示的,这样的格式可以轻易的在不同的语言中转换。但是语言是很复杂的,CSL automatic localization 并不能支持所有的语言特色。但是,语言无关的样式仍然是有意义的,如果你要自己修改 CSL 样式来适应自己选择的语言环境,参考这些语言无关的样式将更容易实现。

    Locale file 还有一个好处,那就是,我们只需要为每种语言定义一次通用的翻译,日期格式和语法。这样可以保证样式紧凑,并使 locale file 更容易维护。由于给定语言的引用格式并不是一直和 locale file 中定义的转换格式一致,因此,我们也可以自己选择性的重写任何在 locale file 中定义的项目。下面独立格式解析中的 locale 元素就是为实现这一功能设置的。

    Item Metadata

    接下来就是引用中需要的参考文献条目的细节:条目元数据。

    例如:一篇期刊文章可能需要作者的名字,发表的年份,文章题目,期刊名称,卷和期,出现的页码范围以及 DOI(数字文献唯一标识),所有这些信息都有助于读者识别和查找这篇文章。

    参考文献管理软件可以轻松的创建文献的这些细节信息。但是,很多参考文献管理软件都有自己的格式来存储这些元素据,大多数都支持通用的 bibliographic exchange formats,比如 BixTexRISciteproc-jsCSL 处理器引入了一种基于 JSON 的格式,用于以 citeproc-js 可以理解的方式来存储元数据。其他的一些 CSL 处理器后来采用了这种 “CSL JSON” 格式(也称为 “citeproc JSON”)。

    译者注:这里讲的似乎有些繁琐。总的来说,是我们需要每篇文章的作者,题目,发表期刊等信息来生成对应的条目。文献管理软件可以很方便的提供这些信息。至于其内部存储的方式,使用的时候并不需要关心,类似 Zotero 的文献管理软件会自动使用这些信息和 CSL 生成引用信息。

    引用细节

    对于给定的引用格式,引文和条目的展示不仅取决于被引用项的元数据,还取决于这些项被引用的上下文。我们将这类特定于上下文的信息称为引用细节。

    例如:引用时对条目的排序会影响他们在参考文献中的位置(在下面独立格式的 citationbibliography 章节中提到)。

    CSL 处理器

    有了 CSL 样式,locale file,元数据和引用细节,我们现在需要一个软件来解析这些信息,并以正确的格式生成引用和参考文献条目。用来完成这些功能的软件就是 CSL 处理器。

    大多数的参考文献管理软件使用的是免费开源的 CSL 处理器,比如:citeproc-js

    ',13);function m(f,C){const d=r("ExternalLinkIcon");return n(),l("div",null,[s,e("blockquote",null,[e("p",null,[o("Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (1999, September 28). Method and system for placing a purchase order via a communications network. Retrieved from "),e("a",p,[o("https://www.google.com/patents/US5960411"),t(d)])])]),h,e("blockquote",null,[e("p",null,[o("Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (28. September 1999). Method and system for placing a purchase order via a communications network. Abgerufen von "),e("a",u,[o("https://www.google.com/patents/US5960411"),t(d)])])]),S])}const q=a(i,[["render",m],["__file","the-csl-ecosystem.html.vue"]]);export{q as default}; diff --git a/assets/the-csl-ecosystem.html-B_4fMBJP.js b/assets/the-csl-ecosystem.html-B_4fMBJP.js new file mode 100644 index 00000000..f834bb8b --- /dev/null +++ b/assets/the-csl-ecosystem.html-B_4fMBJP.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-74acd478","path":"/code/citation-style-language/primer/the-csl-ecosystem.html","title":"CSL 生态","lang":"zh-CN","frontmatter":{"title":"CSL 生态","date":"2022-08-01T17:33:11.000Z","updated":"2022-08-05T18:11:56.000Z","description":"CSL 生态 [!warning] WORK IN PROGRESS 此页面正在施工中。 要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/primer/the-csl-ecosystem.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"CSL 生态"}],["meta",{"property":"og:description","content":"CSL 生态 [!warning] WORK IN PROGRESS 此页面正在施工中。 要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T17:33:11.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"CSL 生态\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T17:33:11.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"独立格式和从属格式","slug":"独立格式和从属格式","link":"#独立格式和从属格式","children":[]},{"level":2,"title":"Locale 文件","slug":"locale-文件","link":"#locale-文件","children":[]},{"level":2,"title":"Item Metadata","slug":"item-metadata","link":"#item-metadata","children":[]},{"level":2,"title":"引用细节","slug":"引用细节","link":"#引用细节","children":[]},{"level":2,"title":"CSL 处理器","slug":"csl-处理器","link":"#csl-处理器","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":5.94,"words":1783},"filePathRelative":"code/citation-style-language/primer/the-csl-ecosystem.md","localizedDate":"2022年8月2日","excerpt":"

    CSL 生态

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/timeline-definition-732a2638-yn6rf3PF.js b/assets/timeline-definition-732a2638-yn6rf3PF.js new file mode 100644 index 00000000..0b60e134 --- /dev/null +++ b/assets/timeline-definition-732a2638-yn6rf3PF.js @@ -0,0 +1,61 @@ +import{b3 as ft,z as gt,c as mt,l as E,h as G,t as xt,b4 as bt,b5 as _t,b6 as kt}from"./mermaid.core-Up0YySao.js";import{a as D}from"./arc-M4yoLkG1.js";import"./app-Mf7X6hWu.js";import"./path-aUcfwwLI.js";var K=function(){var n=function(g,i,r,c){for(r=r||{},c=g.length;c--;r[g[c]]=i);return r},t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],a=[1,10],s=[1,11],h=[1,12],l=[1,13],p=[1,16],y=[1,17],f={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:function(i,r,c,d,u,o,$){var x=o.length-1;switch(u){case 1:return o[x-1];case 2:this.$=[];break;case 3:o[x-1].push(o[x]),this.$=o[x-1];break;case 4:case 5:this.$=o[x];break;case 6:case 7:this.$=[];break;case 8:d.getCommonDb().setDiagramTitle(o[x].substr(6)),this.$=o[x].substr(6);break;case 9:this.$=o[x].trim(),d.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[x].trim(),d.getCommonDb().setAccDescription(this.$);break;case 12:d.addSection(o[x].substr(8)),this.$=o[x].substr(8);break;case 15:d.addTask(o[x],0,""),this.$=o[x];break;case 16:d.addEvent(o[x].substr(2)),this.$=o[x];break}},table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:a,14:s,16:h,17:l,18:14,19:15,20:p,21:y},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:a,14:s,16:h,17:l,18:14,19:15,20:p,21:y},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:function(i,r){if(r.recoverable)this.trace(i);else{var c=new Error(i);throw c.hash=r,c}},parse:function(i){var r=this,c=[0],d=[],u=[null],o=[],$=this.table,x="",T=0,W=0,C=2,A=1,B=o.slice.call(arguments,1),k=Object.create(this.lexer),w={yy:{}};for(var v in this.yy)Object.prototype.hasOwnProperty.call(this.yy,v)&&(w.yy[v]=this.yy[v]);k.setInput(i,w.yy),w.yy.lexer=k,w.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var I=k.yylloc;o.push(I);var P=k.options&&k.options.ranges;typeof w.yy.parseError=="function"?this.parseError=w.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function z(){var M;return M=d.pop()||k.lex()||A,typeof M!="number"&&(M instanceof Array&&(d=M,M=d.pop()),M=r.symbols_[M]||M),M}for(var _,L,S,Z,R={},O,N,Y,j;;){if(L=c[c.length-1],this.defaultActions[L]?S=this.defaultActions[L]:((_===null||typeof _>"u")&&(_=z()),S=$[L]&&$[L][_]),typeof S>"u"||!S.length||!S[0]){var J="";j=[];for(O in $[L])this.terminals_[O]&&O>C&&j.push("'"+this.terminals_[O]+"'");k.showPosition?J="Parse error on line "+(T+1)+`: +`+k.showPosition()+` +Expecting `+j.join(", ")+", got '"+(this.terminals_[_]||_)+"'":J="Parse error on line "+(T+1)+": Unexpected "+(_==A?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(J,{text:k.match,token:this.terminals_[_]||_,line:k.yylineno,loc:I,expected:j})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+L+", token: "+_);switch(S[0]){case 1:c.push(_),u.push(k.yytext),o.push(k.yylloc),c.push(S[1]),_=null,W=k.yyleng,x=k.yytext,T=k.yylineno,I=k.yylloc;break;case 2:if(N=this.productions_[S[1]][1],R.$=u[u.length-N],R._$={first_line:o[o.length-(N||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(N||1)].first_column,last_column:o[o.length-1].last_column},P&&(R._$.range=[o[o.length-(N||1)].range[0],o[o.length-1].range[1]]),Z=this.performAction.apply(R,[x,W,T,w.yy,S[1],u,o].concat(B)),typeof Z<"u")return Z;N&&(c=c.slice(0,-1*N*2),u=u.slice(0,-1*N),o=o.slice(0,-1*N)),c.push(this.productions_[S[1]][0]),u.push(R.$),o.push(R._$),Y=$[c[c.length-2]][c[c.length-1]],c.push(Y);break;case 3:return!0}}return!0}},b=function(){var g={EOF:1,parseError:function(r,c){if(this.yy.parser)this.yy.parser.parseError(r,c);else throw new Error(r)},setInput:function(i,r){return this.yy=r||this.yy||{},this._input=i,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var r=i.match(/(?:\r\n?|\n).*/g);return r?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},unput:function(i){var r=i.length,c=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-r),this.offset-=r;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var u=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-r},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-r]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(i){this.unput(this.match.slice(i))},pastInput:function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var i=this.pastInput(),r=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+r+"^"},test_match:function(i,r){var c,d,u;if(this.options.backtrack_lexer&&(u={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(u.yylloc.range=this.yylloc.range.slice(0))),d=i[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(i[0].length),this.matched+=i[0],c=this.performAction.call(this,this.yy,this,r,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),c)return c;if(this._backtrack){for(var o in u)this[o]=u[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,r,c,d;this._more||(this.yytext="",this.match="");for(var u=this._currentRules(),o=0;or[0].length)){if(r=c,d=o,this.options.backtrack_lexer){if(i=this.test_match(c,u[o]),i!==!1)return i;if(this._backtrack){r=!1;continue}else return!1}else if(!this.options.flex)break}return r?(i=this.test_match(r,u[d]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var r=this.next();return r||this.lex()},begin:function(r){this.conditionStack.push(r)},popState:function(){var r=this.conditionStack.length-1;return r>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(r){return r=this.conditionStack.length-1-Math.abs(r||0),r>=0?this.conditionStack[r]:"INITIAL"},pushState:function(r){this.begin(r)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(r,c,d,u){switch(d){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return g}();f.lexer=b;function m(){this.yy={}}return m.prototype=f,f.Parser=m,new m}();K.parser=K;const vt=K;let F="",st=0;const Q=[],q=[],V=[],it=()=>ft,rt=function(){Q.length=0,q.length=0,F="",V.length=0,gt()},at=function(n){F=n,Q.push(n)},lt=function(){return Q},ot=function(){let n=tt();const t=100;let e=0;for(;!n&&ee.id===st-1).events.push(n)},dt=function(n){const t={section:F,type:F,description:n,task:n,classes:[]};q.push(t)},tt=function(){const n=function(e){return V[e].processed};let t=!0;for(const[e,a]of V.entries())n(e),t=t&&a.processed;return t},wt={clear:rt,getCommonDb:it,addSection:at,getSections:lt,getTasks:ot,addTask:ct,addTaskOrg:dt,addEvent:ht},St=Object.freeze(Object.defineProperty({__proto__:null,addEvent:ht,addSection:at,addTask:ct,addTaskOrg:dt,clear:rt,default:wt,getCommonDb:it,getSections:lt,getTasks:ot},Symbol.toStringTag,{value:"Module"})),Et=12,U=function(n,t){const e=n.append("rect");return e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),e.attr("rx",t.rx),e.attr("ry",t.ry),t.class!==void 0&&e.attr("class",t.class),e},Tt=function(n,t){const a=n.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),s=n.append("g");s.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function h(y){const f=D().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);y.append("path").attr("class","mouth").attr("d",f).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}function l(y){const f=D().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);y.append("path").attr("class","mouth").attr("d",f).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}function p(y){y.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return t.score>3?h(s):t.score<3?l(s):p(s),a},It=function(n,t){const e=n.append("circle");return e.attr("cx",t.cx),e.attr("cy",t.cy),e.attr("class","actor-"+t.pos),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("r",t.r),e.class!==void 0&&e.attr("class",e.class),t.title!==void 0&&e.append("title").text(t.title),e},ut=function(n,t){const e=t.text.replace(//gi," "),a=n.append("text");a.attr("x",t.x),a.attr("y",t.y),a.attr("class","legend"),a.style("text-anchor",t.anchor),t.class!==void 0&&a.attr("class",t.class);const s=a.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),a},$t=function(n,t){function e(s,h,l,p,y){return s+","+h+" "+(s+l)+","+h+" "+(s+l)+","+(h+p-y)+" "+(s+l-y*1.2)+","+(h+p)+" "+s+","+(h+p)}const a=n.append("polygon");a.attr("points",e(t.x,t.y,50,20,7)),a.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,ut(n,t)},Nt=function(n,t,e){const a=n.append("g"),s=X();s.x=t.x,s.y=t.y,s.fill=t.fill,s.width=e.width,s.height=e.height,s.class="journey-section section-type-"+t.num,s.rx=3,s.ry=3,U(a,s),pt(e)(t.text,a,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+t.num},e,t.colour)};let et=-1;const Mt=function(n,t,e){const a=t.x+e.width/2,s=n.append("g");et++;const h=300+5*30;s.append("line").attr("id","task"+et).attr("x1",a).attr("y1",t.y).attr("x2",a).attr("y2",h).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Tt(s,{cx:a,cy:300+(5-t.score)*30,score:t.score});const l=X();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=e.width,l.height=e.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,U(s,l),t.x+14,pt(e)(t.task,s,l.x,l.y,l.width,l.height,{class:"task"},e,t.colour)},Lt=function(n,t){U(n,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},At=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},X=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},pt=function(){function n(s,h,l,p,y,f,b,m){const g=h.append("text").attr("x",l+y/2).attr("y",p+f/2+5).style("font-color",m).style("text-anchor","middle").text(s);a(g,b)}function t(s,h,l,p,y,f,b,m,g){const{taskFontSize:i,taskFontFamily:r}=m,c=s.split(//gi);for(let d=0;d)/).reverse(),s,h=[],l=1.1,p=e.attr("y"),y=parseFloat(e.attr("dy")),f=e.text(null).append("tspan").attr("x",0).attr("y",p).attr("dy",y+"em");for(let b=0;bt||s==="
    ")&&(h.pop(),f.text(h.join(" ").trim()),s==="
    "?h=[""]:h=[s],f=e.append("tspan").attr("x",0).attr("y",p).attr("dy",l+"em").text(s))})}const Ht=function(n,t,e,a){const s=e%Et-1,h=n.append("g");t.section=s,h.attr("class",(t.class?t.class+" ":"")+"timeline-node "+("section-"+s));const l=h.append("g"),p=h.append("g"),f=p.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(yt,t.width).node().getBBox(),b=a.fontSize&&a.fontSize.replace?a.fontSize.replace("px",""):a.fontSize;return t.height=f.height+b*1.1*.5+t.padding,t.height=Math.max(t.height,t.maxHeight),t.width=t.width+2*t.padding,p.attr("transform","translate("+t.width/2+", "+t.padding/2+")"),zt(l,t,s),t},Ct=function(n,t,e){const a=n.append("g"),h=a.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(yt,t.width).node().getBBox(),l=e.fontSize&&e.fontSize.replace?e.fontSize.replace("px",""):e.fontSize;return a.remove(),h.height+l*1.1*.5+t.padding},zt=function(n,t,e){n.append("path").attr("id","node-"+t.id).attr("class","node-bkg node-"+t.type).attr("d",`M0 ${t.height-5} v${-t.height+2*5} q0,-5 5,-5 h${t.width-2*5} q5,0 5,5 v${t.height-5} H0 Z`),n.append("line").attr("class","node-line-"+e).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},H={drawRect:U,drawCircle:It,drawSection:Nt,drawText:ut,drawLabel:$t,drawTask:Mt,drawBackgroundRect:Lt,getTextObj:At,getNoteRect:X,initGraphics:Pt,drawNode:Ht,getVirtualNodeHeight:Ct},Rt=function(n,t,e,a){var s,h;const l=mt(),p=l.leftMargin??50;E.debug("timeline",a.db);const y=l.securityLevel;let f;y==="sandbox"&&(f=G("#i"+t));const m=(y==="sandbox"?G(f.nodes()[0].contentDocument.body):G("body")).select("#"+t);m.append("g");const g=a.db.getTasks(),i=a.db.getCommonDb().getDiagramTitle();E.debug("task",g),H.initGraphics(m);const r=a.db.getSections();E.debug("sections",r);let c=0,d=0,u=0,o=0,$=50+p,x=50;o=50;let T=0,W=!0;r.forEach(function(w){const v={number:T,descr:w,section:T,width:150,padding:20,maxHeight:c},I=H.getVirtualNodeHeight(m,v,l);E.debug("sectionHeight before draw",I),c=Math.max(c,I+20)});let C=0,A=0;E.debug("tasks.length",g.length);for(const[w,v]of g.entries()){const I={number:w,descr:v,section:v.section,width:150,padding:20,maxHeight:d},P=H.getVirtualNodeHeight(m,I,l);E.debug("taskHeight before draw",P),d=Math.max(d,P+20),C=Math.max(C,v.events.length);let z=0;for(let _=0;_0?r.forEach(w=>{const v=g.filter(_=>_.section===w),I={number:T,descr:w,section:T,width:200*Math.max(v.length,1)-50,padding:20,maxHeight:c};E.debug("sectionNode",I);const P=m.append("g"),z=H.drawNode(P,I,T,l);E.debug("sectionNode output",z),P.attr("transform",`translate(${$}, ${o})`),x+=c+50,v.length>0&&nt(m,v,T,$,x,d,l,C,A,c,!1),$+=200*Math.max(v.length,1),x=o,T++}):(W=!1,nt(m,g,T,$,x,d,l,C,A,c,!0));const B=m.node().getBBox();E.debug("bounds",B),i&&m.append("text").text(i).attr("x",B.width/2-p).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),u=W?c+d+150:d+100,m.append("g").attr("class","lineWrapper").append("line").attr("x1",p).attr("y1",u).attr("x2",B.width+3*p).attr("y2",u).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),xt(void 0,m,((s=l.timeline)==null?void 0:s.padding)??50,((h=l.timeline)==null?void 0:h.useMaxWidth)??!1)},nt=function(n,t,e,a,s,h,l,p,y,f,b){var m;for(const g of t){const i={descr:g.task,section:e,number:e,width:150,padding:20,maxHeight:h};E.debug("taskNode",i);const r=n.append("g").attr("class","taskWrapper"),d=H.drawNode(r,i,e,l).height;if(E.debug("taskHeight after draw",d),r.attr("transform",`translate(${a}, ${s})`),h=Math.max(h,d),g.events){const u=n.append("g").attr("class","lineWrapper");let o=h;s+=100,o=o+Ft(n,g.events,e,a,s,l),s-=100,u.append("line").attr("x1",a+190/2).attr("y1",s+h).attr("x2",a+190/2).attr("y2",s+h+(b?h:f)+y+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}a=a+200,b&&!((m=l.timeline)!=null&&m.disableMulticolor)&&e++}s=s-10},Ft=function(n,t,e,a,s,h){let l=0;const p=s;s=s+100;for(const y of t){const f={descr:y,section:e,number:e,width:150,padding:20,maxHeight:50};E.debug("eventNode",f);const b=n.append("g").attr("class","eventWrapper"),g=H.drawNode(b,f,e,h).height;l=l+g,b.attr("transform",`translate(${a}, ${s})`),s=s+10+g}return s=p,l},Vt={setConf:()=>{},draw:Rt},Wt=n=>{let t="";for(let e=0;e` + .edge { + stroke-width: 3; + } + ${Wt(n)} + .section-root rect, .section-root path, .section-root circle { + fill: ${n.git0}; + } + .section-root text { + fill: ${n.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`,Ot=Bt,Zt={db:St,renderer:Vt,parser:vt,styles:Ot};export{Zt as diagram}; diff --git a/assets/translating-locale-files.html-LQ_T7ROC.js b/assets/translating-locale-files.html-LQ_T7ROC.js new file mode 100644 index 00000000..61484996 --- /dev/null +++ b/assets/translating-locale-files.html-LQ_T7ROC.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3e8b5a96","path":"/code/citation-style-language/translating-locale-files.html","title":"Locale File","lang":"zh-CN","frontmatter":{"title":"Locale File","date":"2022-08-02T16:02:13.000Z","updated":"2022-08-03T10:17:57.000Z","description":"Locale File [!warning] WORK IN PROGRESS 此页面正在施工中。 前言 ​\\t这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。 ​\\t用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:\\"British Psychological Society\\" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/translating-locale-files.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Locale File"}],["meta",{"property":"og:description","content":"Locale File [!warning] WORK IN PROGRESS 此页面正在施工中。 前言 ​\\t这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。 ​\\t用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:\\"British Psychological Society\\" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-02T16:02:13.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Locale File\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-02T16:02:13.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"前言","slug":"前言","link":"#前言","children":[]},{"level":2,"title":"开始","slug":"开始","link":"#开始","children":[]},{"level":2,"title":"转换 Locale Files","slug":"转换-locale-files","link":"#转换-locale-files","children":[]},{"level":2,"title":"","slug":"","link":"#","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.74,"words":523},"filePathRelative":"code/citation-style-language/translating-locale-files.md","localizedDate":"2022年8月3日","excerpt":"

    Locale File

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    前言

    \\n

    ​\\t这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。

    \\n

    ​\\t用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:\\"British Psychological Society\\" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/translating-locale-files.html-fyhQn8Fi.js b/assets/translating-locale-files.html-fyhQn8Fi.js new file mode 100644 index 00000000..b4668ff6 --- /dev/null +++ b/assets/translating-locale-files.html-fyhQn8Fi.js @@ -0,0 +1 @@ +import{_ as l}from"./plugin-vue_export-helper-x3n3nnut.js";import{r,o as i,c,a,b as e,e as t,d as n}from"./app-Mf7X6hWu.js";const s={},h=n('

    Locale File

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    前言

    ​ 这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。

    ​ 用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:"British Psychological Society" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。

    ​ 所有的 CSL 样式,都依赖于 locale file,这些本地化文件中包含了本地化数据,用来指定引文和参考文献目录中的术语,日期格式和语法规则怎么本地化。在单独的本地化文件保存这些数据,而不是在 CSL 样式文件中(尽管 CSL 样式文件中可以使用 cs:locale 元素对本地化文件中的设置进行覆盖),有很多好处:1. 本地化更加容易维护;2. 样式文件更加的紧凑; 3. 样式可以是语言无关的。

    ​ 下面,我们将描述本地化文件的结构,给出如何转换所有部分的指示,并且解释如何提交这些转换。如果想获得更多的有关本地化的信息,可以查看 CSL规范

    开始

    ',8),d={href:"https://github.com/citation-style-language/locales/",target:"_blank",rel:"noopener noreferrer"},_={href:"http://people.w3.org/rishida/utils/subtags/",target:"_blank",rel:"noopener noreferrer"},f={href:"https://github.com/citation-style-language/locales/wiki",target:"_blank",rel:"noopener noreferrer"},p=a("h2",{id:"转换-locale-files",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#转换-locale-files","aria-hidden":"true"},"#"),e(" 转换 Locale Files")],-1),u=a("h2",{id:"",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#","aria-hidden":"true"},"#")],-1);function g(b,x){const o=r("ExternalLinkIcon");return i(),c("div",null,[h,a("p",null,[e("​ CSL 本地化文件在 Github 的仓库地址为"),a("a",d,[e("https://github.com/citation-style-language/locales/"),t(o)]),e("。")]),a("p",null,[e('​ 每个本地化文件都包含一种对应语言的本地化数据。本地化文件的名字为 "locales-xx-XX.xml",这里的 "xx-XX" 是 '),a("a",_,[e("BCP 47 langues code 语言代码"),t(o)]),e(" 中的一种。这个 "),a("a",f,[e("github wiki仓库"),t(o)]),e(" 列出了本地化 code,对应的语言和该仓库中储存的所有语言环境的软换状态(是否完成,或在制作中)。")]),p,u])}const S=l(s,[["render",g],["__file","translating-locale-files.html.vue"]]);export{S as default}; diff --git a/assets/understanding-csl-styles.html-Yx2tBXtg.js b/assets/understanding-csl-styles.html-Yx2tBXtg.js new file mode 100644 index 00000000..31135d2c --- /dev/null +++ b/assets/understanding-csl-styles.html-Yx2tBXtg.js @@ -0,0 +1,213 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,d as t}from"./app-Mf7X6hWu.js";const p={},e=t(`

    理解 CSL 格式

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。

    从属格式解析

    下面是一个 CSL 从属格式文件:

    <?xml version="1.0" encoding="utf-8"?>
    +<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" default-locale="en-US">
    +  <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm -->
    +  <info>
    +    <title>Applied and Environmental Microbiology</title>
    +    <id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id>
    +    <link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/>
    +    <link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/>
    +    <link href="http://aem.asm.org/" rel="documentation"/>
    +    <category citation-format="numeric"/>
    +    <category field="biology"/>
    +    <issn>0099-2240</issn>
    +    <eissn>1098-5336</eissn>
    +    <updated>2014-04-30T03:45:36+00:00</updated>
    +    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +  </info>
    +</style>
    +

    XML基础.md 文件中的描述:一行给出了 xml 的声明。根元素为 style,其中包含了一个子元素 infoinfo 元素中又包含了很多元素,其中很多元素都有内容和属性。xmlns、versiondefaults-locale 都是元素 style 的属性,分别指定了??、版本和使用的语言,这里为美国英语。

    大多数从属格式都是电子表格自动生成的,下面的注释也给出了指向电子表格的联接。

     <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm -->
    +

    元素 info 里包含了大多数 style 的元数据,比如:

    style 的题目(也是期刊的题目):

    <title>Applied and Environmental Microbiology</title>
    +

    样式的 ID,是文献管理软件用来区分不同 style 的标志:

    <id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id>
    +

    style 自己的链接。该链接指向了网上的副本。

    <link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/>
    +

    从属格式需要指定它的父格式,父格式为独立格式。这里的父格式为 American Society for Microbiology

    <link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/>
    +

    为了更好的维护格式,因此需要指定格式的文档链接。这里文档的链接转到了期刊的主页。

    <link href="http://aem.asm.org/" rel="documentation"/>
    +

    为了便于分类,还可以在 category 元素中设置它的属性。这里分别设置了引用格式为 numeric,领域为 biology

    <category citation-format="numeric"/>
    +<category field="biology"/>
    +

    当期刊创建格式的时候,可以在 issn 元素和 eissn 元素中保存其打印标准国际连续出版物号 (ISSN) 和其电子版本 (ESSIN)

    <issn>0099-2240</issn>
    +<eissn>1098-5336</eissn>
    +

    updated 元素保存了最后一次更新的时间戳:

    <updated>2014-04-30T03:45:36+00:00</updated>
    +

    rights 元素中保存了该 CSL 格式的证书:

    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +

    独立格式解析

    下面是一个独立格式的实例,实例中定义了引用格式,所以要比从属格式要大一些。这里的示例只是一个简化的例子,实际的格式比这个还要大很多。但这个简化的例子仍然是完整有效的。

    <?xml version="1.0" encoding="utf-8"?>
    +<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
    +  <info>
    +    <title>Example Style</title>
    +    <id>http://www.zotero.org/styles/example</id>
    +    <link href="http://www.zotero.org/styles/example" rel="self"/>
    +    <link href="http://www.zotero.org/styles/apa" rel="template"/>
    +    <link href="http://www.example.com/style-guide/" rel="documentation"/>
    +    <author>
    +      <name>John Doe</name>
    +      <email>JohnDoe@example.com</email>
    +    </author>
    +    <contributor>
    +      <name>Jane Doe</name>
    +    </contributor>
    +    <contributor>
    +      <name>Bill Johnson</name>
    +    </contributor>
    +    <category citation-format="author-date"/>
    +    <category field="science">
    +    <updated>2014-10-15T18:17:09+00:00</updated>
    +    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +  </info>
    +  <locale xml:lang="en">
    +    <terms>
    +      <term name="no date">without date</term>
    +    </terms>
    +  </locale>
    +  <macro name="author">
    +    <names variable="author">
    +      <name initialize-with="."/>
    +    </names>
    +  </macro>
    +  <macro name="issued-year">
    +    <choose>
    +      <if variable="issued">
    +        <date variable="issued">
    +          <date-part name="year"/>
    +        </date>
    +      </if>
    +      <else>
    +        <text term="no date"/>
    +      </else>
    +    </choose>
    +  </macro>
    +  <citation et-al-min="3" et-al-use-first="1">
    +    <sort>
    +      <key macro="author"/>
    +      <key macro="issued-year"/>
    +    </sort>
    +    <layout prefix="(" suffix=")" delimiter="; ">
    +      <group delimiter=", ">
    +        <text macro="author"/>
    +        <text macro="issued-year"/>
    +      </group>
    +    </layout>
    +  </citation>
    +  <bibliography>
    +    <sort>
    +      <key macro="author"/>
    +      <key macro="issued-year"/>
    +      <key variable="title"/>
    +    </sort>
    +    <layout suffix="." delimiter=", ">
    +      <group delimiter=". ">
    +        <text macro="author"/>
    +        <text macro="issued-year"/>
    +        <text variable="title"/>
    +        <text variable="container-title"/>
    +      </group>
    +      <group>
    +        <text variable="volume"/>
    +        <text variable="issue" prefix="(" suffix=")"/>
    +      </group>
    +      <text variable="page"/>
    +    </layout>
    +  </bibliography>
    +</style>
    +

    结构

    首先看一下根元素 style 的子元素。

    <?xml version="1.0" encoding="utf-8"?>
    +<style>
    +  <info/>
    +  <locale/>
    +  <macro/>
    +  <macro/>
    +  <citation/>
    +  <bibliography/>
    +</style>
    +

    相比于从属格式只有 info 一个子元素,独立格式的根元素有除了 info· 以外,还有 locale 、 macro 、citation、bibliography 四个子元素。

    这些子元素的作用分别是:

    • info 该元素在独立格式中的作用和从属格式中相同,都是用来保存基本的格式元数据。

    • locale 该元素可以用来从 locale file 中重写 locale data

    • macro 用来存储 CSL 代码,这些代码可能应用在 citation 、bibliography 或者其他的 macro 元素中。

    • citation 定义文中引用的格式。

    • bibliography 定义参考文献目录的格式。

    以下从 style 根元素开始分析。

    根元素/style 元素

    <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
    +  ...
    +</style>
    +

    在从属格式中我们已经了解了 xmlnsversion 属性,class 是新的属性,用来告诉 CSL processor(CSL 处理器) 使用的引用格式是什么。

    info 元素

    独立格式的元数据通常比从属格式的元数据更加全面:

    <info>
    +  <title>Example Style</title>
    +  <id>http://www.zotero.org/styles/example</id>
    +  <link href="http://www.zotero.org/styles/example" rel="self"/>
    +  <link href="http://www.zotero.org/styles/apa" rel="template"/>
    +  <link href="http://www.example.com/style-guide/" rel="documentation"/>
    +  <author>
    +    <name>John Doe</name>
    +    <email>JohnDoe@example.com</email>
    +  </author>
    +  <contributor>
    +    <name>Jane Doe</name>
    +  </contributor>
    +  <contributor>
    +    <name>Bill Johnson</name>
    +  </contributor>
    +  <category citation-format="author-date"/>
    +  <category field="science">
    +  <updated>2014-10-15T18:17:09+00:00</updated>
    +  <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +</info>
    +

    title、style ID、"self" link、categories、time stamp、license 和从属格式作用都是相同的,但有些许差别。首先,独立格式不依赖父格式,通常是提供一个 template(模板) 链接,表明当前的独立格式是以模板格式链接创建的(这样写的原因是,通常情况下,凭空写一个 CSL 比较困难,但是借助一个模板改写则容易的多)。这里的模板是 APA style。此外,info 还倾向于给定一个或者多个 document 链接,用来指向引文格式的在线描述。

    为了致谢 CSL 格式的创建者,他们的名字和联系方式也可以添加到格式文件中。在当前的例子中,有一个作者和两个贡献者。作者通常完成了创建格式的大部分工作,贡献者一般只提供了一些小的改进。

    citation 元素和 macro 元素

    接下来分析 macroscitation 元素。citation 元素用来描述引用的格式。

    <macro name="author">
    +  <names variable="author">
    +    <name initialize-with="."/>
    +  </names>
    +</macro>
    +<macro name="issued-year">
    +  <choose>
    +    <if variable="issued">
    +      <date variable="issued">
    +        <date-part name="year"/>
    +      </date>
    +    </if>
    +    <else>
    +      <text term="no date"/>
    +    </else>
    +  </choose>
    +</macro>
    +<citation et-al-min="3" et-al-use-first="1">
    +  <sort>
    +    <key macro="author"/>
    +    <key macro="issued-year"/>
    +  </sort>
    +  <layout prefix="(" suffix=")" delimiter="; ">
    +    <group delimiter=", ">
    +      <text macro="author"/>
    +      <text macro="issued-year"/>
    +    </group>
    +  </layout>
    +</citation>
    +

    上面的代码可以生成类似 “(A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999)” 这样的格式。为了理解这种引用格式在 CSL 中式如何编码的,要先分析 citation 元素中的 layout 元素。layout 元素中的 prefixsuffixdelimiter 属性分别定义了前缀(这里为 (),后缀(这里为 ))以及条目分隔符(这里为 ;)。也就是说整个条目要放在圆括号中,条目之间以 ; 分隔。每个条目的格式在 layout 元素的内容中定义。其内容中的 group 元素包括了 authorissue-year macros,并且以 , 分隔。

    macro 元素是一种辅助元素,在其他元素或者其他 macro 元素中使用。通过其名字也可以看出,其与其他语言中的 __ 宏 __ 类似,这里暂不翻译。每个 macro 都含有 name 属性。

    **注:**以下为了方便描述,将对应的 macro 元素直接以 name 指代,例:nameauthormacro 元素直接称为 author 元素。

    \`\`author元素的name 的属性指定了名称,variable 属性保存了具体的作者值,initialize-with表明作者值为首字母缩写,每个首字母后面为.\`。

    issued-year 元素以分支语句开始,分支语句以 choose 元素定义,其中包含 ifelse 元素。如果参考文献有日期,则保存在 issued 变量中,如果 issued-year 元素被引用,日期的年份将被印出,否则就印出 no date

    layout 元素中的 group 元素的 author 用来印出在 author 元素中存储的值,issued-year 则用来印出 issued-year 元素储存的值。

    为什么不直接把 macro 中的内容放在 citation 元素中呢?使用 macro 有什么好处呢?在上面的例子中,macro 的使用简化了 citation 元素的结构。此外,上述的两个 macro 总共被调用了 4 次(两次在 citation 元素中,两次在 bibliography 元素中),如果不使用 macro,必须多次重复这些代码。因此 macro 的使用提供了更紧凑的样式。

    再看 citation 元素,其中含有两个属性 et-al-minet-al-use-first。这里的值分别为 3、1,表示作者大于等于 3 个的时候,使用印出第一个作者,后面跟 et al 术语。

    citation 元素中还包括了 sort 元素,其中包括了两个 key 元素,用来表明引用的排列顺序。第一个 key 元素中引用了 author 宏,第二个宏引用了 issued-year 宏,表明,先按作者作者字母排序,然后按文献发表年份排序。

    bibliography 元素

    citation 元素定义了引用的格式,bibliography 定义了参考文献条目的格式。

    <macro name="author">
    +  <names variable="author">
    +    <name initialize-with="."/>
    +  </names>
    +</macro>
    +<macro name="issued-year">
    +  <choose>
    +    <if variable="issued">
    +      <date variable="issued">
    +        <date-part name="year"/>
    +      </date>
    +    </if>
    +    <else>
    +      <text term="no date"/>
    +    </else>
    +  </choose>
    +</macro>
    +...
    +<bibliography>
    +  <sort>
    +    <key macro="author"/>
    +    <key macro="issued-year"/>
    +    <key variable="title"/>
    +  </sort>
    +  <layout suffix="." delimiter=", ">
    +    <group delimiter=". ">
    +      <text macro="author"/>
    +      <text macro="issued-year"/>
    +      <text variable="title"/>
    +      <text variable="container-title"/>
    +    </group>
    +    <group>
    +      <text variable="volume"/>
    +      <text variable="issue" prefix="(" suffix=")"/>
    +    </group>
    +    <text variable="page"/>
    +  </layout>
    +</bibliography>
    +

    上述的例子中的 bibliography 实际上只适用于一种类型:期刊文章。它生成的条目的格式是:

    A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. W. Wallace, J. Snow. 1999. Winter is coming. Journal of Climate Dynamics, 6(9), 97—102.

    我们怎么定义这种格式呢?首先,bibliography 元素的结构和 citation 元素很相似,不同的是,这里的 layout 元素用来定义参考文献条目的格式。除了给出 authorissued-year,参考文献条目还需要给出每个条目的 titlecontainer-title(对期刊文章来说,就是期刊的名称)、volumeissuepage。这里 layout 元素使用属性 suffixdelimiter 分别指定了 group 的后缀为 .,以及 group 之间的分隔符为 ,

    citation 元素相同,bibliography 也包括了一个 sort 元素,用来对参考文献条目进行排序。这里的三个 key 分别为 authorissued-yeartitle

    locale 元素

    最后介绍的是 loacle 元素。正如上面写道的,CSL locale file 允许 CSL 样式快速转换为不同的语言。但是,有时需要覆盖默认翻译。

    <locale xml:lang="en">
    +  <terms>
    +    <term name="no date">without date</term>
    +  </terms>
    +</locale>
    +

    对 US English 来说,"no date" 项的内容就是 "no date"。但是在我们的例子中,我们想使用 "without date" 去替换它。为了重写默认的翻译,我们可以使用类似上面的 locale 元素。对一个没有日期的条目来说,这种重写会导致引用变为像 (D. Williams, without date) 这样的格式。

    localexml:lang 属性被设置为 en,这告诉 CSL 样式当样式被用于英语写作的时候,重写 "no date"。如果我们在德语写作的时候使用该 CSL,该样式将会依据 German locale file 印出德语的翻译 (ohne Datum)

    `,70),o=[e];function c(l,u){return n(),s("div",null,o)}const d=a(p,[["render",c],["__file","understanding-csl-styles.html.vue"]]);export{d as default}; diff --git a/assets/understanding-csl-styles.html-flUdYhT8.js b/assets/understanding-csl-styles.html-flUdYhT8.js new file mode 100644 index 00000000..01302b8f --- /dev/null +++ b/assets/understanding-csl-styles.html-flUdYhT8.js @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-1989b542","path":"/code/citation-style-language/primer/understanding-csl-styles.html","title":"理解 CSL 格式","lang":"zh-CN","frontmatter":{"title":"理解 CSL 格式","date":"2022-08-01T17:33:11.000Z","updated":"2022-08-03T10:18:48.000Z","description":"理解 CSL 格式 [!warning] WORK IN PROGRESS 此页面正在施工中。 到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/primer/understanding-csl-styles.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"理解 CSL 格式"}],["meta",{"property":"og:description","content":"理解 CSL 格式 [!warning] WORK IN PROGRESS 此页面正在施工中。 到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T17:33:11.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"理解 CSL 格式\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T17:33:11.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"从属格式解析","slug":"从属格式解析","link":"#从属格式解析","children":[]},{"level":2,"title":"独立格式解析","slug":"独立格式解析","link":"#独立格式解析","children":[{"level":3,"title":"结构","slug":"结构","link":"#结构","children":[]},{"level":3,"title":"根元素/style 元素","slug":"根元素-style-元素","link":"#根元素-style-元素","children":[]},{"level":3,"title":"info 元素","slug":"info-元素","link":"#info-元素","children":[]},{"level":3,"title":"citation 元素和 macro 元素","slug":"citation-元素和-macro-元素","link":"#citation-元素和-macro-元素","children":[]},{"level":3,"title":"bibliography 元素","slug":"bibliography-元素","link":"#bibliography-元素","children":[]},{"level":3,"title":"locale 元素","slug":"locale-元素","link":"#locale-元素","children":[]}]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":10.12,"words":3036},"filePathRelative":"code/citation-style-language/primer/understanding-csl-styles.md","localizedDate":"2022年8月2日","excerpt":"

    理解 CSL 格式

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。

    ","autoDesc":true}');export{e as data}; diff --git a/assets/whitespace-handling.html-S9Tb2ct-.js b/assets/whitespace-handling.html-S9Tb2ct-.js new file mode 100644 index 00000000..6b053100 --- /dev/null +++ b/assets/whitespace-handling.html-S9Tb2ct-.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-587333a4","path":"/code/citation-style-language/specification/whitespace-handling.html","title":"空格处理","lang":"zh-CN","frontmatter":{"title":"空格处理","date":"2022-08-02T16:02:13.000Z","updated":"2022-08-03T10:26:47.000Z","description":"空格处理 [!question] Whitespace Handling 翻译有一些疑惑,请参阅原文,欢迎提出改善意见。 CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output: CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/whitespace-handling.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"空格处理"}],["meta",{"property":"og:description","content":"空格处理 [!question] Whitespace Handling 翻译有一些疑惑,请参阅原文,欢迎提出改善意见。 CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output: CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-02T16:02:13.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"空格处理\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-02T16:02:13.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.45,"words":135},"filePathRelative":"code/citation-style-language/specification/whitespace-handling.md","localizedDate":"2022年8月3日","excerpt":"

    空格处理

    \\n
    \\n

    [!question] Whitespace Handling\\n翻译有一些疑惑,请参阅原文,欢迎提出改善意见。

    \\n
    \\n

    CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output:

    \\n

    CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/whitespace-handling.html-YLKviumy.js b/assets/whitespace-handling.html-YLKviumy.js new file mode 100644 index 00000000..80fa541a --- /dev/null +++ b/assets/whitespace-handling.html-YLKviumy.js @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as e,c as t,d as l}from"./app-Mf7X6hWu.js";const a={},r=l('

    空格处理

    [!question] Whitespace Handling 翻译有一些疑惑,请参阅原文,欢迎提出改善意见。

    CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output:

    CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。

    • after-collapse-delimiter
    • cite-group-delimiter
    • delimiter
    • initialize-with
    • name-delimiter
    • names-delimiter
    • prefix
    • range-delimiter
    • sort-separator
    • suffix
    • year-suffix-delimiter
    • value
    ',5),o=[r];function s(n,c){return e(),t("div",null,o)}const p=i(a,[["render",s],["__file","whitespace-handling.html.vue"]]);export{p as default}; diff --git a/assets/windows-applications.html-t6vJq-Ls.js b/assets/windows-applications.html-t6vJq-Ls.js new file mode 100644 index 00000000..f588ab5f --- /dev/null +++ b/assets/windows-applications.html-t6vJq-Ls.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-37da871d","path":"/software/windows-applications.html","title":"Windows 的自我修养","lang":"zh-CN","frontmatter":{"title":"Windows 的自我修养","date":"2022-07-26T19:08:44.000Z","updated":"2022-09-16T19:05:46.000Z","description":"Windows 的自我修养 Windows Applications windows 必备应用列表是个人重装电脑后会安装的应用。 文档类 名称 需要安装 配置文件 备注 [MS Office] ✔ 通过 office tool plus 安装 福昕 PDF 编辑器企业版 ✔ 福昕 9.6.0 CAJViewer ✔ CAJViewer7.3 Notepad3 Notepad3 配置说明","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/windows-applications.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"Windows 的自我修养"}],["meta",{"property":"og:description","content":"Windows 的自我修养 Windows Applications windows 必备应用列表是个人重装电脑后会安装的应用。 文档类 名称 需要安装 配置文件 备注 [MS Office] ✔ 通过 office tool plus 安装 福昕 PDF 编辑器企业版 ✔ 福昕 9.6.0 CAJViewer ✔ CAJViewer7.3 Notepad3 Notepad3 配置说明"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T11:15:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-07-26T19:08:44.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T11:15:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"Windows 的自我修养\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-07-26T19:08:44.000Z\\",\\"dateModified\\":\\"2022-09-16T11:15:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"Windows Applications","slug":"windows-applications","link":"#windows-applications","children":[{"level":3,"title":"文档类","slug":"文档类","link":"#文档类","children":[]},{"level":3,"title":"通讯类","slug":"通讯类","link":"#通讯类","children":[]},{"level":3,"title":"浏览器类","slug":"浏览器类","link":"#浏览器类","children":[]},{"level":3,"title":"工具类","slug":"工具类","link":"#工具类","children":[]},{"level":3,"title":"工作类","slug":"工作类","link":"#工作类","children":[]},{"level":3,"title":"编程类","slug":"编程类","link":"#编程类","children":[]},{"level":3,"title":"实用工具类","slug":"实用工具类","link":"#实用工具类","children":[]}]}],"git":{"createdTime":1663326935000,"updatedTime":1663326935000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":2.83,"words":850},"filePathRelative":"software/windows-applications.md","localizedDate":"2022年7月27日","excerpt":"

    Windows 的自我修养

    \\n

    Windows Applications

    \\n

    windows 必备应用列表是个人重装电脑后会安装的应用。

    \\n

    文档类

    \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
    名称需要安装配置文件备注
    [MS Office]通过 office tool plus 安装
    福昕 PDF 编辑器企业版福昕 9.6.0
    CAJViewerCAJViewer7.3
    Notepad3Notepad3 配置说明
    ","autoDesc":true}');export{t as data}; diff --git a/assets/windows-applications.html-w3qnV1IQ.js b/assets/windows-applications.html-w3qnV1IQ.js new file mode 100644 index 00000000..24066fbe --- /dev/null +++ b/assets/windows-applications.html-w3qnV1IQ.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as s,o as r,c as i,a as t,b as e,e as l,d}from"./app-Mf7X6hWu.js";const c={},_=d('

    Windows 的自我修养

    Windows Applications

    windows 必备应用列表是个人重装电脑后会安装的应用。

    文档类

    ',4),a=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注")])],-1),h=t("td",{style:{"text-align":"center"}},"[MS Office]",-1),g=t("td",{style:{"text-align":"center"}},"✔",-1),u=t("td",{style:{"text-align":"center"}},null,-1),y={style:{"text-align":"center"}},x={href:"https://otp.landian.vip/",target:"_blank",rel:"noopener noreferrer"},p={style:{"text-align":"center"}},f={href:"https://www.foxitsoftware.cn/pdf-editor/",target:"_blank",rel:"noopener noreferrer"},b=t("td",{style:{"text-align":"center"}},"✔",-1),m=t("td",{style:{"text-align":"center"}},null,-1),w=t("td",{style:{"text-align":"center"}},"福昕 9.6.0",-1),k={style:{"text-align":"center"}},j={href:"http://cajviewer.cnki.net/download.html",target:"_blank",rel:"noopener noreferrer"},A=t("td",{style:{"text-align":"center"}},"✔",-1),v=t("td",{style:{"text-align":"center"}},null,-1),L=t("td",{style:{"text-align":"center"}},"CAJViewer7.3",-1),N={style:{"text-align":"center"}},P={href:"https://www.rizonesoft.com/downloads/notepad3/",target:"_blank",rel:"noopener noreferrer"},S=t("td",{style:{"text-align":"center"}},null,-1),C={style:{"text-align":"center"}},E={href:"https://github.yixuju.cn/Application-Lists/#/config?id=notepad3",target:"_blank",rel:"noopener noreferrer"},T=t("td",{style:{"text-align":"center"}},null,-1),V=t("h3",{id:"通讯类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#通讯类","aria-hidden":"true"},"#"),e(" 通讯类")],-1),O=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注")])],-1),z={style:{"text-align":"center"}},F={href:"https://telegram.org/apps",target:"_blank",rel:"noopener noreferrer"},M=t("td",{style:{"text-align":"center"}},"✔",-1),D=t("td",{style:{"text-align":"center"}},"账号同步",-1),W=t("td",{style:{"text-align":"center"}},null,-1),q={style:{"text-align":"center"}},B={href:"https://tim.qq.com/",target:"_blank",rel:"noopener noreferrer"},I=t("td",{style:{"text-align":"center"}},"✔",-1),X=t("td",{style:{"text-align":"center"}},"账号同步",-1),J=t("td",{style:{"text-align":"center"}},null,-1),G={style:{"text-align":"center"}},Z={href:"https://weixin.qq.com/",target:"_blank",rel:"noopener noreferrer"},H=t("td",{style:{"text-align":"center"}},"✔",-1),K=t("td",{style:{"text-align":"center"}},"账号同步",-1),R=t("td",{style:{"text-align":"center"}},null,-1),Q=t("h3",{id:"浏览器类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#浏览器类","aria-hidden":"true"},"#"),e(" 浏览器类")],-1),U=t("h4",{id:"浏览器相关类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#浏览器相关类","aria-hidden":"true"},"#"),e(" 浏览器相关类")],-1),Y=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注")])],-1),$={style:{"text-align":"center"}},tt={href:"https://www.microsoft.com/en-us/edge/business/download",target:"_blank",rel:"noopener noreferrer"},et=t("td",{style:{"text-align":"center"}},"✔",-1),nt=t("td",{style:{"text-align":"center"}},"账号同步",-1),lt=t("td",{style:{"text-align":"center"}},null,-1),ot=t("p",null,[t("strong",null,"注意: 此处插件可以通过浏览器账号同步设置。")],-1),st=t("h4",{id:"插件",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#插件","aria-hidden":"true"},"#"),e(" 插件")],-1),rt=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置说明"),t("th",{style:{"text-align":"center"}},"备注")])],-1),it={style:{"text-align":"center"}},dt={href:"https://github.com/inu1255/soulsign-chrome",target:"_blank",rel:"noopener noreferrer"},ct=t("td",{style:{"text-align":"center"}},"✔",-1),_t={style:{"text-align":"center"}},at={href:"https://soulsign.inu1255.cn/?uid=1176",target:"_blank",rel:"noopener noreferrer"},ht={style:{"text-align":"center"}},gt={href:"https://soulsign.inu1255.cn/",target:"_blank",rel:"noopener noreferrer"},ut={style:{"text-align":"center"}},yt={href:"https://chrome.google.com/webstore/detail/onetab-plustab-manage-pro/lepdjbhbkpfenckechpdfohdmkhogojf",target:"_blank",rel:"noopener noreferrer"},xt=t("td",{style:{"text-align":"center"}},"✔",-1),pt=t("td",{style:{"text-align":"center"}},null,-1),ft=t("td",{style:{"text-align":"center"}},null,-1),bt={style:{"text-align":"center"}},mt={href:"https://saladict.crimx.com/",target:"_blank",rel:"noopener noreferrer"},wt=t("td",{style:{"text-align":"center"}},"✔",-1),kt={style:{"text-align":"center"}},jt={href:"https://github.yixuju.cn/Application-Lists/#/config?id=saladictjson",target:"_blank",rel:"noopener noreferrer"},At=t("td",{style:{"text-align":"center"}},null,-1),vt={style:{"text-align":"center"}},Lt={href:"https://www.tampermonkey.net/?ext=dhdg&browser=chrome",target:"_blank",rel:"noopener noreferrer"},Nt=t("td",{style:{"text-align":"center"}},"✔",-1),Pt={style:{"text-align":"center"}},St={href:"https://github.yixuju.cn/Application-Lists/#/config?id=tampermonkeyzip",target:"_blank",rel:"noopener noreferrer"},Ct=t("td",{style:{"text-align":"center"}},null,-1),Et={style:{"text-align":"center"}},Tt={href:"https://github.com/ineo6/git-master",target:"_blank",rel:"noopener noreferrer"},Vt=t("td",{style:{"text-align":"center"}},"✔",-1),Ot=t("td",{style:{"text-align":"center"}},null,-1),zt=t("td",{style:{"text-align":"center"}},null,-1),Ft={style:{"text-align":"center"}},Mt={href:"http://ksria.com/simpread/",target:"_blank",rel:"noopener noreferrer"},Dt=t("td",{style:{"text-align":"center"}},"✔",-1),Wt=t("td",{style:{"text-align":"center"}},"云同步",-1),qt=t("td",{style:{"text-align":"center"}},null,-1),Bt={style:{"text-align":"center"}},It={href:"https://microsoftedge.microsoft.com/addons/detail/%E7%AE%80%E7%A0%81/dpgjdomgklccodklkokapnaehbocnmfo",target:"_blank",rel:"noopener noreferrer"},Xt=t("td",{style:{"text-align":"center"}},"✔",-1),Jt=t("td",{style:{"text-align":"center"}},null,-1),Gt=t("td",{style:{"text-align":"center"}},null,-1),Zt={style:{"text-align":"center"}},Ht={href:"https://www.infinitynewtab.com/",target:"_blank",rel:"noopener noreferrer"},Kt=t("td",{style:{"text-align":"center"}},"✔",-1),Rt=t("td",{style:{"text-align":"center"}},"账号同步",-1),Qt=t("td",{style:{"text-align":"center"}},null,-1),Ut={style:{"text-align":"center"}},Yt={href:"https://s.xmcp.ml/pakkujs/",target:"_blank",rel:"noopener noreferrer"},$t=t("td",{style:{"text-align":"center"}},"✔",-1),te={style:{"text-align":"center"}},ee={href:"https://github.yixuju.cn/Application-Lists/#/config?id=pakkujson",target:"_blank",rel:"noopener noreferrer"},ne=t("td",{style:{"text-align":"center"}},null,-1),le={style:{"text-align":"center"}},oe={href:"https://add0n.com/stylus.html",target:"_blank",rel:"noopener noreferrer"},se=t("td",{style:{"text-align":"center"}},"✔",-1),re={style:{"text-align":"center"}},ie={href:"https://github.yixuju.cn/Application-Lists/#/config?id=stylusjson",target:"_blank",rel:"noopener noreferrer"},de=t("td",{style:{"text-align":"center"}},null,-1),ce={style:{"text-align":"center"}},_e={href:"https://www.adtchrome.com/",target:"_blank",rel:"noopener noreferrer"},ae=t("td",{style:{"text-align":"center"}},"✔",-1),he=t("td",{style:{"text-align":"center"}},null,-1),ge=t("td",{style:{"text-align":"center"}},null,-1),ue={style:{"text-align":"center"}},ye={href:"https://github.com/efforg/https-everywhere",target:"_blank",rel:"noopener noreferrer"},xe=t("td",{style:{"text-align":"center"}},"✔",-1),pe=t("td",{style:{"text-align":"center"}},null,-1),fe=t("td",{style:{"text-align":"center"}},null,-1),be={style:{"text-align":"center"}},me={href:"https://languagetool.org/",target:"_blank",rel:"noopener noreferrer"},we=t("td",{style:{"text-align":"center"}},"✔",-1),ke=t("td",{style:{"text-align":"center"}},null,-1),je=t("td",{style:{"text-align":"center"}},null,-1),Ae={style:{"text-align":"center"}},ve={href:"https://app.grammarly.com/",target:"_blank",rel:"noopener noreferrer"},Le=t("td",{style:{"text-align":"center"}},"✔",-1),Ne=t("td",{style:{"text-align":"center"}},null,-1),Pe=t("td",{style:{"text-align":"center"}},null,-1),Se={style:{"text-align":"center"}},Ce={href:"https://github.com/gildas-lormeau/SingleFile",target:"_blank",rel:"noopener noreferrer"},Ee=t("td",{style:{"text-align":"center"}},"✔",-1),Te=t("td",{style:{"text-align":"center"}},null,-1),Ve=t("td",{style:{"text-align":"center"}},null,-1),Oe=t("h3",{id:"工具类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#工具类","aria-hidden":"true"},"#"),e(" 工具类")],-1),ze=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注"),t("th"),t("th"),t("th"),t("th"),t("th")])],-1),Fe={style:{"text-align":"center"}},Me={href:"https://zh.snipaste.com/",target:"_blank",rel:"noopener noreferrer"},De=t("td",{style:{"text-align":"center"}},"✔",-1),We={style:{"text-align":"center"}},qe={href:"https://github.yixuju.cn/Application-Lists/#/config?id=snipasteini",target:"_blank",rel:"noopener noreferrer"},Be=t("td",{style:{"text-align":"center"}},null,-1),Ie=t("td",null,null,-1),Xe=t("td",null,null,-1),Je=t("td",null,null,-1),Ge=t("td",null,null,-1),Ze=t("td",null,null,-1),He={style:{"text-align":"center"}},Ke={href:"https://tianruoocr.cn/",target:"_blank",rel:"noopener noreferrer"},Re=t("td",{style:{"text-align":"center"}},"✔",-1),Qe=t("td",{style:{"text-align":"center"}},"账号同步",-1),Ue=t("td",{style:{"text-align":"center"}},null,-1),Ye=t("td",null,null,-1),$e=t("td",null,null,-1),tn=t("td",null,null,-1),en=t("td",null,null,-1),nn=t("td",null,null,-1),ln={style:{"text-align":"center"}},on={href:"https://github.com/Fndroid/clash_for_windows_pkg",target:"_blank",rel:"noopener noreferrer"},sn=t("td",{style:{"text-align":"center"}},"✔",-1),rn={style:{"text-align":"center"}},dn={href:"https://github.yixuju.cn/Application-Lists/#/config?id=clashforwindows",target:"_blank",rel:"noopener noreferrer"},cn=t("td",{style:{"text-align":"center"}},null,-1),_n=t("td",null,null,-1),an=t("td",null,null,-1),hn=t("td",null,null,-1),gn=t("td",null,null,-1),un=t("td",null,null,-1),yn={style:{"text-align":"center"}},xn={href:"https://pan.baidu.com/download",target:"_blank",rel:"noopener noreferrer"},pn=t("td",{style:{"text-align":"center"}},"✔",-1),fn=t("td",{style:{"text-align":"center"}},"账号同步",-1),bn=t("td",{style:{"text-align":"center"}},null,-1),mn=t("td",null,null,-1),wn=t("td",null,null,-1),kn=t("td",null,null,-1),jn=t("td",null,null,-1),An=t("td",null,null,-1),vn={style:{"text-align":"center"}},Ln={href:"https://github.com/peazip/PeaZip",target:"_blank",rel:"noopener noreferrer"},Nn=t("td",{style:{"text-align":"center"}},"✔",-1),Pn=t("td",{style:{"text-align":"center"}},null,-1),Sn=t("td",{style:{"text-align":"center"}},null,-1),Cn=t("td",null,null,-1),En=t("td",null,null,-1),Tn=t("td",null,null,-1),Vn=t("td",null,null,-1),On=t("td",null,null,-1),zn=t("h3",{id:"工作类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#工作类","aria-hidden":"true"},"#"),e(" 工作类")],-1),Fn=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注")])],-1),Mn={style:{"text-align":"center"}},Dn={href:"https://www.originlab.com/index.aspx?%20go=DOWNLOADS/OriginEvaluation",target:"_blank",rel:"noopener noreferrer"},Wn=t("td",{style:{"text-align":"center"}},"✔",-1),qn=t("td",{style:{"text-align":"center"}},null,-1),Bn=t("td",{style:{"text-align":"center"}},"OriginPro9.0",-1),In=t("h3",{id:"编程类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#编程类","aria-hidden":"true"},"#"),e(" 编程类")],-1),Xn=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注")])],-1),Jn={style:{"text-align":"center"}},Gn={href:"https://www.putty.org/",target:"_blank",rel:"noopener noreferrer"},Zn=t("td",{style:{"text-align":"center"}},null,-1),Hn=t("td",{style:{"text-align":"center"}},null,-1),Kn=t("td",{style:{"text-align":"center"}},null,-1),Rn={style:{"text-align":"center"}},Qn={href:"https://www.microsoft.com/zh-cn/p/windows-terminal/9n0dx20hk701",target:"_blank",rel:"noopener noreferrer"},Un=t("td",{style:{"text-align":"center"}},"✔",-1),Yn=t("td",{style:{"text-align":"center"}},null,-1),$n=t("td",{style:{"text-align":"center"}},null,-1),tl={style:{"text-align":"center"}},el={href:"https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html",target:"_blank",rel:"noopener noreferrer"},nl=t("td",{style:{"text-align":"center"}},"✔",-1),ll=t("td",{style:{"text-align":"center"}},null,-1),ol=t("td",{style:{"text-align":"center"}},"VMWPro15.0",-1),sl={style:{"text-align":"center"}},rl={href:"https://code.visualstudio.com/Download",target:"_blank",rel:"noopener noreferrer"},il=t("td",{style:{"text-align":"center"}},"✔",-1),dl=t("td",{style:{"text-align":"center"}},"账号同步",-1),cl=t("td",{style:{"text-align":"center"}},null,-1),_l={style:{"text-align":"center"}},al={href:"https://ww2.mathworks.cn/downloads/web_downloads/",target:"_blank",rel:"noopener noreferrer"},hl=t("td",{style:{"text-align":"center"}},"✔",-1),gl=t("td",{style:{"text-align":"center"}},null,-1),ul=t("td",{style:{"text-align":"center"}},null,-1),yl={style:{"text-align":"center"}},xl={href:"https://git-scm.com/download/win",target:"_blank",rel:"noopener noreferrer"},pl=t("td",{style:{"text-align":"center"}},"✔",-1),fl=t("td",{style:{"text-align":"center"}},null,-1),bl=t("td",{style:{"text-align":"center"}},null,-1),ml={style:{"text-align":"center"}},wl={href:"https://www.oracle.com/java/technologies/javase-downloads.html",target:"_blank",rel:"noopener noreferrer"},kl=t("td",{style:{"text-align":"center"}},"✔",-1),jl=t("td",{style:{"text-align":"center"}},null,-1),Al=t("td",{style:{"text-align":"center"}},null,-1),vl={style:{"text-align":"center"}},Ll={href:"https://nodejs.org/zh-cn/",target:"_blank",rel:"noopener noreferrer"},Nl=t("td",{style:{"text-align":"center"}},"✔",-1),Pl=t("td",{style:{"text-align":"center"}},null,-1),Sl=t("td",{style:{"text-align":"center"}},null,-1),Cl={style:{"text-align":"center"}},El={href:"https://www.python.org/downloads/windows/",target:"_blank",rel:"noopener noreferrer"},Tl=t("td",{style:{"text-align":"center"}},"✔",-1),Vl=t("td",{style:{"text-align":"center"}},null,-1),Ol=t("td",{style:{"text-align":"center"}},null,-1),zl={style:{"text-align":"center"}},Fl={href:"https://github.com/2dust/v2rayN/releases",target:"_blank",rel:"noopener noreferrer"},Ml=t("td",{style:{"text-align":"center"}},null,-1),Dl={style:{"text-align":"center"}},Wl={href:"https://github.yixuju.cn/Application-Lists/#/config?id=v2rayntxt",target:"_blank",rel:"noopener noreferrer"},ql=t("td",{style:{"text-align":"center"}},null,-1),Bl={style:{"text-align":"center"}},Il={href:"https://www.voidtools.com/zh-cn/",target:"_blank",rel:"noopener noreferrer"},Xl=t("td",{style:{"text-align":"center"}},null,-1),Jl=t("td",{style:{"text-align":"center"}},null,-1),Gl=t("td",{style:{"text-align":"center"}},null,-1),Zl=t("h3",{id:"实用工具类",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#实用工具类","aria-hidden":"true"},"#"),e(" 实用工具类")],-1),Hl=t("thead",null,[t("tr",null,[t("th",{style:{"text-align":"center"}},"名称"),t("th",{style:{"text-align":"center"}},"需要安装"),t("th",{style:{"text-align":"center"}},"配置文件"),t("th",{style:{"text-align":"center"}},"备注")])],-1),Kl={style:{"text-align":"center"}},Rl={href:"http://www.softwareok.com/?Download=NewFileTime",target:"_blank",rel:"noopener noreferrer"},Ql=t("td",{style:{"text-align":"center"}},null,-1),Ul=t("td",{style:{"text-align":"center"}},null,-1),Yl=t("td",{style:{"text-align":"center"}},null,-1),$l={style:{"text-align":"center"}},to={href:"https://github.com/yi-Xu-0100/Application-Lists/tree/master/Configuration#cmd_initbat",target:"_blank",rel:"noopener noreferrer"},eo=t("td",{style:{"text-align":"center"}},null,-1),no={style:{"text-align":"center"}},lo={href:"https://github.com/yi-Xu-0100/Application-Lists/tree/master/Configuration#cmd_initbat",target:"_blank",rel:"noopener noreferrer"},oo=t("td",{style:{"text-align":"center"}},null,-1),so={style:{"text-align":"center"}},ro={href:"https://github.com/yi-Xu-0100/Application-Lists/tree/master/Configuration##microsoftpowershell_profileps1",target:"_blank",rel:"noopener noreferrer"},io=t("td",{style:{"text-align":"center"}},null,-1),co={style:{"text-align":"center"}},_o={href:"https://github.com/yi-Xu-0100/Application-Lists/tree/master/Configuration##microsoftpowershell_profileps1",target:"_blank",rel:"noopener noreferrer"},ao=t("td",{style:{"text-align":"center"}},null,-1),ho={style:{"text-align":"center"}},go={href:"https://geekuninstaller.com/download",target:"_blank",rel:"noopener noreferrer"},uo=t("td",{style:{"text-align":"center"}},null,-1),yo=t("td",{style:{"text-align":"center"}},null,-1),xo=t("td",{style:{"text-align":"center"}},null,-1),po={style:{"text-align":"center"}},fo={href:"https://github.com/henrypp/memreduct",target:"_blank",rel:"noopener noreferrer"},bo=t("td",{style:{"text-align":"center"}},"✔",-1),mo={style:{"text-align":"center"}},wo={href:"https://github.yixuju.cn/Application-Lists/#/config?id=memreductini",target:"_blank",rel:"noopener noreferrer"},ko=t("td",{style:{"text-align":"center"}},null,-1);function jo(Ao,vo){const n=s("ExternalLinkIcon");return r(),i("div",null,[_,t("table",null,[a,t("tbody",null,[t("tr",null,[h,g,u,t("td",y,[t("a",x,[e("通过 office tool plus 安装"),l(n)])])]),t("tr",null,[t("td",p,[t("a",f,[e("福昕 PDF 编辑器企业版"),l(n)])]),b,m,w]),t("tr",null,[t("td",k,[t("a",j,[e("CAJViewer"),l(n)])]),A,v,L]),t("tr",null,[t("td",N,[t("a",P,[e("Notepad3"),l(n)])]),S,t("td",C,[t("a",E,[e("Notepad3 配置说明"),l(n)])]),T])])]),V,t("table",null,[O,t("tbody",null,[t("tr",null,[t("td",z,[t("a",F,[e("telegram"),l(n)])]),M,D,W]),t("tr",null,[t("td",q,[t("a",B,[e("TIM"),l(n)])]),I,X,J]),t("tr",null,[t("td",G,[t("a",Z,[e("微信"),l(n)])]),H,K,R])])]),Q,U,t("table",null,[Y,t("tbody",null,[t("tr",null,[t("td",$,[t("a",tt,[e("Edge-dev"),l(n)])]),et,nt,lt])])]),ot,st,t("table",null,[rt,t("tbody",null,[t("tr",null,[t("td",it,[t("a",dt,[e("soulsign-chrome"),l(n)])]),ct,t("td",_t,[t("a",at,[e("个人开发脚本安装地址"),l(n)])]),t("td",ht,[t("a",gt,[e("公共脚本发布平台"),l(n)])])]),t("tr",null,[t("td",ut,[t("a",yt,[e("OneTab Plus: 标签效率管理扩展"),l(n)])]),xt,pt,ft]),t("tr",null,[t("td",bt,[t("a",mt,[e("沙拉查词"),l(n)])]),wt,t("td",kt,[t("a",jt,[e("沙拉查词配置说明"),l(n)])]),At]),t("tr",null,[t("td",vt,[t("a",Lt,[e("Tampermonkey BETA"),l(n)])]),Nt,t("td",Pt,[t("a",St,[e("tampermonkey 配置说明"),l(n)])]),Ct]),t("tr",null,[t("td",Et,[t("a",Tt,[e("GitMaster"),l(n)])]),Vt,Ot,zt]),t("tr",null,[t("td",Ft,[t("a",Mt,[e("简悦"),l(n)])]),Dt,Wt,qt]),t("tr",null,[t("td",Bt,[t("a",It,[e("简码"),l(n)])]),Xt,Jt,Gt]),t("tr",null,[t("td",Zt,[t("a",Ht,[e("Infinity 新标签页 (Pro)"),l(n)])]),Kt,Rt,Qt]),t("tr",null,[t("td",Ut,[t("a",Yt,[e("pakku 哔哩哔哩弹幕过滤器"),l(n)])]),$t,t("td",te,[t("a",ee,[e("pakku 配置说明"),l(n)])]),ne]),t("tr",null,[t("td",le,[t("a",oe,[e("Stylus"),l(n)])]),se,t("td",re,[t("a",ie,[e("Stylus 配置说明"),l(n)])]),de]),t("tr",null,[t("td",ce,[t("a",_e,[e("广告终结者"),l(n)])]),ae,he,ge]),t("tr",null,[t("td",ue,[t("a",ye,[e("HTTPS Everywhere"),l(n)])]),xe,pe,fe]),t("tr",null,[t("td",be,[t("a",me,[e("languagetool"),l(n)])]),we,ke,je]),t("tr",null,[t("td",Ae,[t("a",ve,[e("grammarly"),l(n)])]),Le,Ne,Pe]),t("tr",null,[t("td",Se,[t("a",Ce,[e("SingleFile"),l(n)])]),Ee,Te,Ve])])]),Oe,t("table",null,[ze,t("tbody",null,[t("tr",null,[t("td",Fe,[t("a",Me,[e("Snipaste"),l(n)])]),De,t("td",We,[t("a",qe,[e("Snipaste 配置说明"),l(n)])]),Be,Ie,Xe,Je,Ge,Ze]),t("tr",null,[t("td",He,[t("a",Ke,[e("天若 OCR 文字识别"),l(n)])]),Re,Qe,Ue,Ye,$e,tn,en,nn]),t("tr",null,[t("td",ln,[t("a",on,[e("clash_for_windows_pkg"),l(n)])]),sn,t("td",rn,[t("a",dn,[e("ClashForWindows 配置说明"),l(n)])]),cn,_n,an,hn,gn,un]),t("tr",null,[t("td",yn,[t("a",xn,[e("百度网盘"),l(n)])]),pn,fn,bn,mn,wn,kn,jn,An]),t("tr",null,[t("td",vn,[t("a",Ln,[e("peaZip"),l(n)])]),Nn,Pn,Sn,Cn,En,Tn,Vn,On])])]),zn,t("table",null,[Fn,t("tbody",null,[t("tr",null,[t("td",Mn,[t("a",Dn,[e("Origin Pro"),l(n)])]),Wn,qn,Bn])])]),In,t("table",null,[Xn,t("tbody",null,[t("tr",null,[t("td",Jn,[t("a",Gn,[e("Putty"),l(n)])]),Zn,Hn,Kn]),t("tr",null,[t("td",Rn,[t("a",Qn,[e("Terminal"),l(n)])]),Un,Yn,$n]),t("tr",null,[t("td",tl,[t("a",el,[e("VMWPro"),l(n)])]),nl,ll,ol]),t("tr",null,[t("td",sl,[t("a",rl,[e("Visual Studio Code"),l(n)])]),il,dl,cl]),t("tr",null,[t("td",_l,[t("a",al,[e("matlab"),l(n)])]),hl,gl,ul]),t("tr",null,[t("td",yl,[t("a",xl,[e("Git"),l(n)])]),pl,fl,bl]),t("tr",null,[t("td",ml,[t("a",wl,[e("JDK"),l(n)])]),kl,jl,Al]),t("tr",null,[t("td",vl,[t("a",Ll,[e("Node.js"),l(n)])]),Nl,Pl,Sl]),t("tr",null,[t("td",Cl,[t("a",El,[e("Python"),l(n)])]),Tl,Vl,Ol]),t("tr",null,[t("td",zl,[t("a",Fl,[e("v2rayN"),l(n)])]),Ml,t("td",Dl,[t("a",Wl,[e("v2rayN 配置说明"),l(n)])]),ql]),t("tr",null,[t("td",Bl,[t("a",Il,[e("everything"),l(n)])]),Xl,Jl,Gl])])]),Zl,t("table",null,[Hl,t("tbody",null,[t("tr",null,[t("td",Kl,[t("a",Rl,[e("NewFileTime"),l(n)])]),Ql,Ul,Yl]),t("tr",null,[t("td",$l,[t("a",to,[e("cmd_init.bat"),l(n)])]),eo,t("td",no,[t("a",lo,[e("cmd_init.bat 配置说明"),l(n)])]),oo]),t("tr",null,[t("td",so,[t("a",ro,[e("Microsoft.PowerShell_profile.ps1"),l(n)])]),io,t("td",co,[t("a",_o,[e("Microsoft.PowerShell_profile.ps1 配置说明"),l(n)])]),ao]),t("tr",null,[t("td",ho,[t("a",go,[e("geekuninstaller"),l(n)])]),uo,yo,xo]),t("tr",null,[t("td",po,[t("a",fo,[e("memreduct"),l(n)])]),bo,t("td",mo,[t("a",wo,[e("memreduct 配置说明"),l(n)])]),ko])])])])}const Po=o(c,[["render",jo],["__file","windows-applications.html.vue"]]);export{Po as default}; diff --git a/assets/x-ray-absorption.html-LwWoQjRV.js b/assets/x-ray-absorption.html-LwWoQjRV.js new file mode 100644 index 00000000..f2c46278 --- /dev/null +++ b/assets/x-ray-absorption.html-LwWoQjRV.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-1aa77d92","path":"/characterization/x-ray-absorption.html","title":"X 射线吸收谱","lang":"zh-CN","frontmatter":{"title":"X 射线吸收谱","date":"2022-09-18T16:44:52.000Z","updated":"2022-10-31T21:45:54.000Z","description":"X 射线吸收谱 download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com) 撰文:LY & CWX   编辑:DJ 前言: 随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/characterization/x-ray-absorption.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"X 射线吸收谱"}],["meta",{"property":"og:description","content":"X 射线吸收谱 download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com) 撰文:LY & CWX   编辑:DJ 前言: 随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"X 射线吸收谱"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-09-18T16:44:52.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"X 射线吸收谱\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2022-09-18T16:44:52.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1664886676000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":5.99,"words":1796},"filePathRelative":"characterization/x-ray-absorption.md","localizedDate":"2022年9月19日","excerpt":"

    X 射线吸收谱

    \\n

    download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)

    \\n

    撰文:LY & CWX   编辑:DJ

    \\n

    前言:

    \\n

    随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。

    ","autoDesc":true}');export{t as data}; diff --git a/assets/x-ray-absorption.html-humqFyJ6.js b/assets/x-ray-absorption.html-humqFyJ6.js new file mode 100644 index 00000000..0dec1b67 --- /dev/null +++ b/assets/x-ray-absorption.html-humqFyJ6.js @@ -0,0 +1 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as n,o as s,c as i,a as r,b as t,e as p,d as a}from"./app-Mf7X6hWu.js";const g="/assets/923667c21e609865c98457cb3961f2e300d1d96c.jpg@942w_728h_progressive-OJgrEUAA.webp",c="/assets/b0412406c9e7fad50e32085f1067e476ddbe7165.jpg@942w_495h_progressive-NXSX3YIS.webp",l="/assets/f0e3a3ee689a10f1fa1db2a25481ad7bc5abbb13.jpg@942w_594h_progressive-dRSMhlpr.webp",f="/assets/6e949785968ebd84aea5c65ba3ede31b3e54ab98.png@942w_326h_progressive-jBbhm6Mi.webp",d="data:image/webp;base64,UklGRkQCAABXRUJQVlA4IDgCAADwCwCdASpcAB0APo02mEelIqKhMrJOYKARiWkAE5Vrjv7y+2Dzc+MGj387v/W8rn0j7BX6uf8jgACdcTvulmvk9QCY6gDz4FOGyllGa14OdLGkIhOMysRD8blQPp3Aqv1uifjqJ8i/gAD+/fl/vQUJotdpL7L9HBWs15iYVa0QpOP4x/32y2bNvoYv/mnyJtYIMYPGfm/kTfSMcgAjCCVnc989yD0JWvJ0c9oKd+QEiUQu3SOuoV9R93M+paua3EsSRsFg2czYTBmfavAbR0f5hSws0cHSFtKNnmPc6xLSF2Vc75TOtYEBp8zYMuiQSjr9c8qLiSJ7ZwlU+qr/pjddRFKtbCL9EN/415P8i7yMpI4ugrBRH56wPpM5gZsSOj3YZQUZHyZcZajwBBBeBETfr3BZMnxDdn/maFyr9RKtGOeoCn3Cyp/jziMp+j+vM8Tv+vXrhOXmpOsPec8Vw1ZDI0/7FdBQgdqL2m/gV6TNzphMpTJPb6cJybkhcFQot4snxvnMmMATpG/rrh0rmt/TR9838MG/Ui6q2vKzwcf9puMbOCfVNSLImiVyohQZz1oa5ejqQ8vy99bbwcQkl95YYZgLb5N0tHKwpGqma/pX4Rrei3t7E6wKUEsmPhSe/sAJF+CMHQEAMJWJAPQOvrrpl+CU6FE8jb8SzcGjTjncbSGh6f/zQgbczCJtFBGOzsmk82d/B4rikTOnYxz6M3U/iN0cU1fvXvZe/fQpNK/XGCfgAe1ZAAAA",X="data:image/webp;base64,UklGRuICAABXRUJQVlA4INYCAABwDQCdASpAAC4APpE6mUgloyKhMBVaqLASCWkADPDaYdlFkK3yv/F+xjLXHn/6r/g+Yz5+/43uDfyT+if7r1lfYz+wHsRfrs2sSBwXqdmQF5/3PuOpwlm1zVz4o3bze5WtXpgoOrNajgVSOjXCeZUxkXyGQAD+/XaPr8sbgqaOkEDAcvv9wauMuf6zGLdkUGdWwPlrrN6hYy8L/M9qvDkl0vRf3b3R749+naR0lFJd85rTq3IL3XkX+wrMGw+KrzQFiC5Z9tG1rZt88lQv7B3jRTBUA2JZeaRNhVzKIbHgGsgdSKaT44mjmPz2v52ZczEwKjKryNFthTuHgbKI0MyIeKy13AbTXUkTDxIa4t6fFEzg/eqQw1lUUMh+j9Lr4v8F+5v2OHLB7ZwbE2b2f6DlpOjr5645HXbTJ/plTNHqZJjwVJWanogOiUoc5X9AQm6CnV/oIQ48OnI3LitS413WPG3cYmTjvUW2EWRtPkIKR8lndST8/s0hHDGqZzFjAuRHcgrQ3i0C5tW5B2nkeJeOIJj7Yj1fpMu7Ak3NOlfy8sNUBvrZGtDqpP0Hbab+we+P2V17PDIjyQZ3xjKZpwbKjP1PKrADNF7dMgmJtrv/82X1aFdvfppMj6LgOT5G61ytt8wvhPDpwHgDYA3+5LNsE2v9/Q36xQZuQerLfgYbl9hQJvuxt0D0hHI7668QtO2stLvxrL1j4COec0Dcn5vaxeW5kMJDKlP30n18RWjBy15B+ZJcJEM2exTr7Sf0yqJ6cXDsgeWZURk2fOaxyCQFt3skIfnloLLtrkHP0XeWle058MvdPmtn2FgKNk2FveryZ5u/4NbCzCOavXzCf5DCYckh3LTBymcx5as2UFq3XZA41SpuQgusTLo54oV6iRW/xu90UFc/a+2Qvce4kNNOdRHtdf7dDwnzZy66oUu9f79GQ+kZyO0GZRu0My6zZjpZG5AAAAA=",A="/assets/2aab2e764c29483336dc4ed86549e710582a9c6a.png@942w_1047h_progressive-lPzVj8vk.webp",b="/assets/fb82fb8edec5b3cc583777287d507f80d74d5e39.jpg@942w_638h_progressive-cQU3tAMD.webp",u={},m=r("h1",{id:"x-射线吸收谱",tabindex:"-1"},[r("a",{class:"header-anchor",href:"#x-射线吸收谱","aria-hidden":"true"},"#"),t(" X 射线吸收谱")],-1),S={href:"https://www.bilibili.com/read/cv6701754",target:"_blank",rel:"noopener noreferrer"},v=a('

    撰文:LY & CWX   编辑:DJ

    前言:

    随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。

    目前,在大陆布局的同步辐射光源装置主要有 北京同步辐射装置(BSRF,第一代光源)、中国科学技术大学里的 合肥国家同步辐射国家实验室(NSRL,第二代光源)、以及 上海光源(SSRF,第三代光源),对国内众多基础科学的研究发挥了重要支撑作用。

    而上海光源二期工程的开展,规划中的北京先进光源(高能光源)以及各能量段的自由电子激光(FEL)装置(包括极紫外区 - 大连、软 X 射线区 - 上海、硬 X- 射线区 - 地点待定,FEL 被认为是第四代光源)的建设极有可能在未来数年内建成也必将极大的推动国内 X 射线吸收谱的发展掀起新一轮 XAS 应用高潮,为前沿基础科学、高技术研究提供不可或缺的手段。(高能同步辐射光源、硬 X 射线自由电子激光装置已列入 2017 年发布的《国家重大科技基础设施建设“十三五”规划》,属于优先布局的十个重大科技基础设施建设项目。)

    图 1. 同步辐射装置的发展(图片来源:Science, 2011, 334, 1234-1239.)

    一直以来,XAFS 都是基于同步辐射的各种表征手段中应用范围最广泛的技术之一。小编将分几期内容来跟大家简单介绍一些 XAS 以及同步辐射的基本知识,希望对大家看文献与做研究有所帮助。今天是第一期,我们先给大家一个初步的吸收谱的印象。

    A.  什么是****X 射线?

    图 2.波长与能量的关系

    X 射线又称伦琴射线,是一种波长介于紫外线与γ射线之间的电磁波,波长约为 0.01~10nm,其能量范围为 100 eV-100 keV。X 射线根据其能量高低可以分为 硬****X 射线和软 X 射线。能量为 1-10 keV,波长为 0.2-0.1 nm 以下的称之为硬 X 射线,波长大于 0.1 nm 则称之为软 X 射线(X- 射线的软硬之分并没有严格界限)。

    硬****X 射线能量高,穿透能力强,波长与原子半径相当,基于硬 X 射线的表征方法(如衍射、散射、吸收等)已被广泛应用于物质原子结构分析中。而软 X 射线,能量较低,对样品辐射损伤相对较小(但容易被空气或水吸收而发生衰减),在电子结构分析、物质成像研究中发挥着重要作用。

    图 3.X- 射线和物质的相互作用(图片来源:BSRF 的 XAS 讲习班)

    B.    什么是****X 射线吸收光谱(XAS)?什么是吸收边?

    当 X 射线穿过样品时,由于样品对 X 射线的吸收,光的强度会发生衰减,这种衰减与样品的组成及结构密切相关。X 射线吸收光谱就是利用 X 射线入射前后信号变化来分析材料元素组成,电子态及微观结构等信息的光谱学手段。XAS 方法通常具有元素分辨性,几乎对所有原子都具有相应性,对固体(晶体或非晶)、液体、气体等各类样品都可以进行相关测试

    以透射模式为例,大家可以简单类比成我们熟悉的紫外可见吸收光谱。

    图 4. 物质对 X 射线的吸收

    入射光 I 与出射光 I0 的强度遵从朗伯比尔定律:

    吸收系数μ 表征 X 射线被样品吸收的概率,μ与样品的密度(ρ),元素的原子序数(Z)有关,而 t 为样品厚度。而最为重要的是,μ对 X 射线能量(E)也是敏感的:

    思考:为什么 XAS 要采用同步辐射光源? 什么是吸收边?

    当 X 射线能量等于被照射样品某内层电子的电离能时,会发生共振吸收,使电子电离为光电子,而 X 射线吸收系数发生突变,这种突跃称之为吸收边(Edge)。原子中不同主量子数的电子的吸收边相距颇远,按主量子数命名为 K、L……吸收边等。注意:每一种元素都有其特征的吸收边系,因此 XAS 可以用于元素的定性分析。此外,吸收边的位置与元素的价态相关,氧化价增加,吸收边会向高能侧移动(一般化学价 +1,吸收边移动 2-3 eV),因此同种元素,化合价不同也识可以分辨出来。

    图 5.能级与吸收边

    普通化学知识补充:原子外层电子根据排布轨道的不同,不同主量子数对应的轨道依为:主量子数(n)1 2 3 4 5 6 7 电子层符号   K L M N O P Q

    C.    什么是****X 射线吸收精细结构(X-ray Absorption Fine Structure)?

    人们发现,X 射线吸收光谱在吸收边附近及其高能量端存在一些分立的峰或波状起伏,称为精细结构。如下图所示:

    图 6.XANES 和 EXAFS 的划分

    精细结构从吸收边前至高能延伸段约 1000eV, 根据其形成机制(多重散射与单次散射)的不同,可以分为 XANES 和 EXAFS(两者并无严格界限):

    • XANES (X 射线吸收近边结构,X-ray Absorption Near Edge Structure),对于软线 XAS 谱而言通常也被称作 NEXAFS(Near-Edge X-ray Absorption Fine Structure)

      • 范围:吸收边前 - 吸收边后 50eV,
      • 特点: 振荡剧烈(吸收信号清晰,易于测量);谱采集时间短,适合于时间分辨实验;对价态、未占据电子态和电荷转移等化学信息敏感;对温度依懒性很弱,可用于高温原位化学实验;具有简单的“指纹效应”,可快速鉴别元素的化学种类。
    • EXAFS (扩展 X 射线吸收精细结构谱, Extend X-ray Absorption Fine Structure )

      • 范围:吸收边后 50eV - 1000eV,
      • 特点: 可以得到中心原子与配位原子的键长、配位数、无序度等信息。不过,EXAFS 对立体结构并不敏感。
    ',35);function _(w,y){const e=n("ExternalLinkIcon");return s(),i("div",null,[m,r("p",null,[t("download form "),r("a",S,[t("精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)"),p(e)])]),v])}const h=o(u,[["render",_],["__file","x-ray-absorption.html.vue"]]);export{h as default}; diff --git a/assets/xml-basic.html-WnoXAZbo.js b/assets/xml-basic.html-WnoXAZbo.js new file mode 100644 index 00000000..2a50a17b --- /dev/null +++ b/assets/xml-basic.html-WnoXAZbo.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-75033482","path":"/code/citation-style-language/xml-basic.html","title":"XML 基础","lang":"zh-CN","frontmatter":{"title":"XML 基础","date":"2022-08-01T16:23:04.000Z","updated":"2022-08-03T10:17:53.000Z","description":"XML 基础 [!warning] WORK IN PROGRESS 此页面正在施工中。 CSL 基于 XML(eXtensible Markup Language)。XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。 <?xml version=\\"1.0\\" encoding=\\"utf-8\\" standalone=\\"yes\\" ?> # 文档声明 <!-- 这是一个注释 -->\\t\\t# 注释 <hello>\\t# 根元素,文档的第一个元素,有且仅有一个 # 子元素 # 属性 # 元素文本 </hello>","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/xml-basic.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"XML 基础"}],["meta",{"property":"og:description","content":"XML 基础 [!warning] WORK IN PROGRESS 此页面正在施工中。 CSL 基于 XML(eXtensible Markup Language)。XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。 <?xml version=\\"1.0\\" encoding=\\"utf-8\\" standalone=\\"yes\\" ?> # 文档声明 <!-- 这是一个注释 -->\\t\\t# 注释 <hello>\\t# 根元素,文档的第一个元素,有且仅有一个 # 子元素 # 属性 # 元素文本 </hello>"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T16:23:04.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"XML 基础\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T16:23:04.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"元素","slug":"元素","link":"#元素","children":[]},{"level":2,"title":"属性","slug":"属性","link":"#属性","children":[]},{"level":2,"title":"预定义实体表","slug":"预定义实体表","link":"#预定义实体表","children":[]}],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":2.42,"words":725},"filePathRelative":"code/citation-style-language/xml-basic.md","localizedDate":"2022年8月2日","excerpt":"

    XML 基础

    \\n
    \\n

    [!warning] WORK IN PROGRESS\\n此页面正在施工中。

    \\n
    \\n

    CSL 基于 XML(eXtensible Markup Language)XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。

    \\n
    <?xml version=\\"1.0\\" encoding=\\"utf-8\\" standalone=\\"yes\\" ?>  # 文档声明\\n\\n<!-- 这是一个注释 -->\\t\\t# 注释\\n\\n<hello>\\t# 根元素,文档的第一个元素,有且仅有一个\\n    # 子元素\\n    # 属性\\n    # 元素文本\\n</hello>\\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/xml-basic.html-_M3j6rQd.js b/assets/xml-basic.html-_M3j6rQd.js new file mode 100644 index 00000000..0bdd7561 --- /dev/null +++ b/assets/xml-basic.html-_M3j6rQd.js @@ -0,0 +1,47 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as p,o,c as l,a,b as n,e as c,d as s}from"./app-Mf7X6hWu.js";const i={},u=s(`

    XML 基础

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    CSL 基于 XML(eXtensible Markup Language)XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。

    <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  # 文档声明
    +
    +<!-- 这是一个注释 -->		# 注释
    +
    +<hello>	# 根元素,文档的第一个元素,有且仅有一个
    +    # 子元素
    +    # 属性
    +    # 元素文本
    +</hello>
    +

    上面的代码时一个简单的 XML 结构。为了方便说明使用了 #符号作为注释符号,#并不是真正的注释符号,XML的注释格式为文档中的第二行所示的形式。

    第一行为声明,或者称为序言,总是在文档的最前面。包括了XML 的版本、编码信息以及是否依赖外部文档等。这一行代码会告诉解析器或浏览器这个文件应该按照 XML 规则进行解析。

    第二行为 XML 文档的注释。格式为 <!-- 注释-->

    剩下的代码为 XML 文件的根元素,根元素也是元素,根元素是文档的第一个元素,有且仅有一个。

    元素

    元素由开始标签,元素内容和结束标签构成。其中可以包含属性、元素和注释。根元素包含了其他所有元素。

    <title>内容</title>
    +

    title 为元素名。

    元素有 4 种形式。

    1. 空元素
    +<RAM> </RAM>  或者 <RAM/>
    +
    +2. 带有属性的空元素
    +<RAM width="100"/>  或者 <RAM width="100"> <RAM/>
    +
    +3. 带有内容的元素
    +<Price>21000</Price>
    +    
    +4. 带有内容和属性的元素
    +<Price MoneyKind="RMB">21000</Price>  # MoneyKind 为属性  21000为元素值
    +或者是
    +<NotebookComputer>
    +Style =" LX2000"
    +CPU =" PIII600"
    +RAM ="128M "
    +</NotebookComputer>
    +
    +

    所有的元素都包含在根元素中,为根元素的子元素,子元素还还可以包含子元素。

    属性

    属性是对元素及其内容的描述,用 = 隔开。属性必须包含在一对单引号或者双引号之间。

    <Movie ID="09001">   # 其中的 id 就是属性  后面的值就是属性值
    +<title>非诚勿扰</title>	 # 子元素
    +<price>70</price>
    +</Movie>
    +
    +# 空元素的属性
    +<Rectangle Width="100" Height="80"/>
    +
    +# 属性的另外一种形式
    +<NotebookComputer>
    +Style =" LX2000"
    +CPU =" PIII600"
    +RAM ="128M "
    +</NotebookComputer>
    +

    每个元素中,一个属性最多出现一次,一个属性只能有一个值。

    `,19),d=a("code",null,"XML",-1),r={href:"https://zh.wikipedia.org/wiki/CSS",target:"_blank",rel:"noopener noreferrer"},k=s(`

    预定义实体表

    xml 文件中某些符号无法正常表达,比如 < 或者 >,不处理的话会导致混乱。

    所定义的实体所代表的字符
    &lt;<
    &gt;>\`\`
    &quot;"
    &apos;'
    &amp;&
    <Para1>John asked &quot;What&apos;s your name?&quot;</Para1>
    +
    +中间的结果:
    +John asked "What's your name? "
    +
    `,4);function v(m,g){const t=p("ExternalLinkIcon");return o(),l("div",null,[u,a("p",null,[n("如果属性有多个值,这需要采取 "),d,n(" 协议以外的方式来表示,如采用逗号或分号间隔,对于 "),a("a",r,[n("CSS"),c(t)]),n(" 类或标识符的名字可用空格来分隔。")]),k])}const q=e(i,[["render",v],["__file","xml-basic.html.vue"]]);export{q as default}; diff --git a/assets/xml-declaration.html-3Y0z2m7m.js b/assets/xml-declaration.html-3Y0z2m7m.js new file mode 100644 index 00000000..32e6a9d9 --- /dev/null +++ b/assets/xml-declaration.html-3Y0z2m7m.js @@ -0,0 +1,2 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as o,d as t}from"./app-Mf7X6hWu.js";const n={},l=t(`

    XML 声明

    [!Done] XML Declaration

    每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是:

    <?xml version="1.0" encoding="UTF-8"?>
    +
    `,4),c=[l];function r(s,i){return a(),o("div",null,c)}const u=e(n,[["render",r],["__file","xml-declaration.html.vue"]]);export{u as default}; diff --git a/assets/xml-declaration.html-fnVpOMPE.js b/assets/xml-declaration.html-fnVpOMPE.js new file mode 100644 index 00000000..1cc1e82a --- /dev/null +++ b/assets/xml-declaration.html-fnVpOMPE.js @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-1f0249ff","path":"/code/citation-style-language/specification/xml-declaration.html","title":"XML 声明","lang":"zh-CN","frontmatter":{"title":"XML 声明","date":"2022-08-01T17:33:11.000Z","updated":"2022-08-03T10:23:35.000Z","description":"XML 声明 [!Done] XML Declaration 每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是: <?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/code/citation-style-language/specification/xml-declaration.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"XML 声明"}],["meta",{"property":"og:description","content":"XML 声明 [!Done] XML Declaration 每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是: <?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:52:48.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-08-01T17:33:11.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:52:48.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"XML 声明\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-08-01T17:33:11.000Z\\",\\"dateModified\\":\\"2022-09-16T13:52:48.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336368000,"updatedTime":1663336368000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.25,"words":75},"filePathRelative":"code/citation-style-language/specification/xml-declaration.md","localizedDate":"2022年8月2日","excerpt":"

    XML 声明

    \\n
    \\n

    [!Done] XML Declaration

    \\n
    \\n

    每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是:

    \\n
    <?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>\\n
    ","autoDesc":true}');export{t as data}; diff --git a/assets/xychartDiagram-f746c04c--eu2k7RD.js b/assets/xychartDiagram-f746c04c--eu2k7RD.js new file mode 100644 index 00000000..01099569 --- /dev/null +++ b/assets/xychartDiagram-f746c04c--eu2k7RD.js @@ -0,0 +1,7 @@ +import{a_ as zt,a$ as ot,aM as wt,aL as Ft,s as Nt,g as Xt,v as Yt,x as St,a as Ht,b as $t,z as Ut,l as _t,aJ as qt,i as jt,d as Gt}from"./mermaid.core-Up0YySao.js";import{a as Qt}from"./createText-aebacdfe-sWKH4swq.js";import{i as Kt}from"./init-Hi12RPRh.js";import{o as Jt}from"./ordinal-wXG5obU4.js";import{l as ft}from"./linear-sLp5W0Cq.js";import{l as pt}from"./line-rSV082x4.js";import"./app-Mf7X6hWu.js";import"./array-Nw74a44z.js";import"./path-aUcfwwLI.js";function Zt(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s"u"&&(k.yylloc={});var tt=k.yylloc;a.push(tt);var Wt=k.options&&k.options.ranges;typeof B.yy.parseError=="function"?this.parseError=B.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var I;return I=g.pop()||k.lex()||xt,typeof I!="number"&&(I instanceof Array&&(g=I,I=g.pop()),I=l.symbols_[I]||I),I}for(var D,W,E,it,O={},q,M,dt,j;;){if(W=u[u.length-1],this.defaultActions[W]?E=this.defaultActions[W]:((D===null||typeof D>"u")&&(D=Ot()),E=F[W]&&F[W][D]),typeof E>"u"||!E.length||!E[0]){var et="";j=[];for(q in F[W])this.terminals_[q]&&q>Vt&&j.push("'"+this.terminals_[q]+"'");k.showPosition?et="Parse error on line "+(U+1)+`: +`+k.showPosition()+` +Expecting `+j.join(", ")+", got '"+(this.terminals_[D]||D)+"'":et="Parse error on line "+(U+1)+": Unexpected "+(D==xt?"end of input":"'"+(this.terminals_[D]||D)+"'"),this.parseError(et,{text:k.match,token:this.terminals_[D]||D,line:k.yylineno,loc:tt,expected:j})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+W+", token: "+D);switch(E[0]){case 1:u.push(D),b.push(k.yytext),a.push(k.yylloc),u.push(E[1]),D=null,gt=k.yyleng,x=k.yytext,U=k.yylineno,tt=k.yylloc;break;case 2:if(M=this.productions_[E[1]][1],O.$=b[b.length-M],O._$={first_line:a[a.length-(M||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(M||1)].first_column,last_column:a[a.length-1].last_column},Wt&&(O._$.range=[a[a.length-(M||1)].range[0],a[a.length-1].range[1]]),it=this.performAction.apply(O,[x,gt,U,B.yy,E[1],b,a].concat(Bt)),typeof it<"u")return it;M&&(u=u.slice(0,-1*M*2),b=b.slice(0,-1*M),a=a.slice(0,-1*M)),u.push(this.productions_[E[1]][0]),b.push(O.$),a.push(O._$),dt=F[u[u.length-2]][u[u.length-1]],u.push(dt);break;case 3:return!0}}return!0}},It=function(){var V={EOF:1,parseError:function(l,u){if(this.yy.parser)this.yy.parser.parseError(l,u);else throw new Error(l)},setInput:function(r,l){return this.yy=l||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var l=r.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},unput:function(r){var l=r.length,u=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var g=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),u.length-1&&(this.yylineno-=u.length-1);var b=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:u?(u.length===g.length?this.yylloc.first_column:0)+g[g.length-u.length].length-u[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[b[0],b[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(r){this.unput(this.match.slice(r))},pastInput:function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var r=this.pastInput(),l=new Array(r.length+1).join("-");return r+this.upcomingInput()+` +`+l+"^"},test_match:function(r,l){var u,g,b;if(this.options.backtrack_lexer&&(b={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(b.yylloc.range=this.yylloc.range.slice(0))),g=r[0].match(/(?:\r\n?|\n).*/g),g&&(this.yylineno+=g.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:g?g[g.length-1].length-g[g.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(r[0].length),this.matched+=r[0],u=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),u)return u;if(this._backtrack){for(var a in b)this[a]=b[a];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,l,u,g;this._more||(this.yytext="",this.match="");for(var b=this._currentRules(),a=0;al[0].length)){if(l=u,g=a,this.options.backtrack_lexer){if(r=this.test_match(u,b[a]),r!==!1)return r;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(r=this.test_match(l,b[g]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var l=this.next();return l||this.lex()},begin:function(l){this.conditionStack.push(l)},popState:function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},pushState:function(l){this.begin(l)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(l,u,g,b){switch(g){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return V}();K.lexer=It;function J(){this.yy={}}return J.prototype=K,K.Parser=J,new J}();nt.parser=nt;const ti=nt;function mt(e){return e.type==="bar"}function Ct(e){return e.type==="band"}function N(e){return e.type==="linear"}class kt{constructor(t){this.parentGroup=t}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((o,c)=>Math.max(c.length,o),0)*i,height:i};const s={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const o of t){const c=Qt(n,1,o),f=c?c.width:o.length*i,d=c?c.height:i;s.width=Math.max(s.width,f),s.height=Math.max(s.height,d)}return n.remove(),s}}const yt=.7,bt=.2;class Rt{constructor(t,i,s,n){this.axisConfig=t,this.title=i,this.textDimensionCalculator=s,this.axisThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){yt*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(yt*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const s=this.getLabelDimension(),n=bt*t.width;this.outerPadding=Math.min(s.width/2,n);const o=s.height+this.axisConfig.labelPadding*2;this.labelTextHeight=s.height,o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const s=this.getLabelDimension(),n=bt*t.height;this.outerPadding=Math.min(s.height/2,n);const o=s.width+this.axisConfig.labelPadding*2;o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(i),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${i},${this.getScaleValue(s)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(s)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${this.getScaleValue(s)},${i} L ${this.getScaleValue(s)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(s=>({path:`M ${this.getScaleValue(s)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(s)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}class ii extends Rt{constructor(t,i,s,n,o){super(t,n,o,i),this.categories=s,this.scale=st().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=st().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),_t.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)||this.getRange()[0]}}class ei extends Rt{constructor(t,i,s,n,o){super(t,n,o,i),this.domain=s,this.scale=ft().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=ft().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}}function At(e,t,i,s){const n=new kt(s);return Ct(e)?new ii(t,i,e.categories,e.title,n):new ei(t,i,[e.min,e.max],e.title,n)}class si{constructor(t,i,s,n){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=s,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),s=Math.max(i.width,t.width),n=i.height+2*this.chartConfig.titlePadding;return i.width<=s&&i.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=s,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}}function ni(e,t,i,s){const n=new kt(s);return new si(n,e,t,i)}class ai{constructor(t,i,s,n,o){this.plotData=t,this.xAxis=i,this.yAxis=s,this.orientation=n,this.plotIndex=o}getDrawableElement(){const t=this.plotData.data.map(s=>[this.xAxis.getScaleValue(s[0]),this.yAxis.getScaleValue(s[1])]);let i;return this.orientation==="horizontal"?i=pt().y(s=>s[0]).x(s=>s[1])(t):i=pt().x(s=>s[0]).y(s=>s[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}class oi{constructor(t,i,s,n,o,c){this.barData=t,this.boundingRect=i,this.xAxis=s,this.yAxis=n,this.orientation=o,this.plotIndex=c}getDrawableElement(){const t=this.barData.data.map(o=>[this.xAxis.getScaleValue(o[0]),this.yAxis.getScaleValue(o[1])]),i=.05,s=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-i),n=s/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:this.boundingRect.x,y:o[0]-n,height:s,width:o[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:o[0]-n,y:o[1],width:s,height:this.boundingRect.y+this.boundingRect.height-o[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}class ri{constructor(t,i,s){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0}}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");const t=[];for(const[i,s]of this.chartData.plots.entries())switch(s.type){case"line":{const n=new ai(s,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break;case"bar":{const n=new oi(s,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break}return t}}function hi(e,t,i){return new ri(e,t,i)}class li{constructor(t,i,s,n){this.chartConfig=t,this.chartData=i,this.componentStore={title:ni(t,i,s,n),plot:hi(t,i,s),xAxis:At(i.xAxis,t.xAxis,{titleColor:s.xAxisTitleColor,labelColor:s.xAxisLabelColor,tickColor:s.xAxisTickColor,axisLineColor:s.xAxisLineColor},n),yAxis:At(i.yAxis,t.yAxis,{titleColor:s.yAxisTitleColor,labelColor:s.yAxisLabelColor,tickColor:s.yAxisTickColor,axisLineColor:s.yAxisLineColor},n)}}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),c=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),f=this.componentStore.plot.calculateSpace({width:o,height:c});t-=f.width,i-=f.height,f=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),n=f.height,i-=f.height,this.componentStore.xAxis.setAxisPosition("bottom"),f=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=f.height,this.componentStore.yAxis.setAxisPosition("left"),f=this.componentStore.yAxis.calculateSpace({width:t,height:i}),s=f.width,t-=f.width,t>0&&(o+=t,t=0),i>0&&(c+=i,i=0),this.componentStore.plot.calculateSpace({width:o,height:c}),this.componentStore.plot.setBoundingBoxXY({x:s,y:n}),this.componentStore.xAxis.setRange([s,s+o]),this.componentStore.xAxis.setBoundingBoxXY({x:s,y:n+c}),this.componentStore.yAxis.setRange([n,n+c]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(d=>mt(d))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizonatalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=0,c=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),f=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),d=this.componentStore.plot.calculateSpace({width:c,height:f});t-=d.width,i-=d.height,d=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=d.height,i-=d.height,this.componentStore.xAxis.setAxisPosition("left"),d=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=d.width,n=d.width,this.componentStore.yAxis.setAxisPosition("top"),d=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=d.height,o=s+d.height,t>0&&(c+=t,t=0),i>0&&(f+=i,i=0),this.componentStore.plot.calculateSpace({width:c,height:f}),this.componentStore.plot.setBoundingBoxXY({x:n,y:o}),this.componentStore.yAxis.setRange([n,n+c]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:s}),this.componentStore.xAxis.setRange([o,o+f]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:o}),this.chartData.plots.some(R=>mt(R))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizonatalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}}class ci{static build(t,i,s,n){return new li(t,i,s,n).getDrawableElement()}}let X=0,Tt,Y=Lt(),H=Dt(),y=Pt(),at=H.plotColorPalette.split(",").map(e=>e.trim()),G=!1,rt=!1;function Dt(){const e=zt(),t=ot();return wt(e.xyChart,t.themeVariables.xyChart)}function Lt(){const e=ot();return wt(Ft.xyChart,e.xyChart)}function Pt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function ht(e){const t=ot();return Gt(e.trim(),t)}function ui(e){Tt=e}function gi(e){e==="horizontal"?Y.chartOrientation="horizontal":Y.chartOrientation="vertical"}function xi(e){y.xAxis.title=ht(e.text)}function vt(e,t){y.xAxis={type:"linear",title:y.xAxis.title,min:e,max:t},G=!0}function di(e){y.xAxis={type:"band",title:y.xAxis.title,categories:e.map(t=>ht(t.text))},G=!0}function fi(e){y.yAxis.title=ht(e.text)}function pi(e,t){y.yAxis={type:"linear",title:y.yAxis.title,min:e,max:t},rt=!0}function mi(e){const t=Math.min(...e),i=Math.max(...e),s=N(y.yAxis)?y.yAxis.min:1/0,n=N(y.yAxis)?y.yAxis.max:-1/0;y.yAxis={type:"linear",title:y.yAxis.title,min:Math.min(s,t),max:Math.max(n,i)}}function Et(e){let t=[];if(e.length===0)return t;if(!G){const i=N(y.xAxis)?y.xAxis.min:1/0,s=N(y.xAxis)?y.xAxis.max:-1/0;vt(Math.min(i,1),Math.max(s,e.length))}if(rt||mi(e),Ct(y.xAxis)&&(t=y.xAxis.categories.map((i,s)=>[i,e[s]])),N(y.xAxis)){const i=y.xAxis.min,s=y.xAxis.max,n=(s-i+1)/e.length,o=[];for(let c=i;c<=s;c+=n)o.push(`${c}`);t=o.map((c,f)=>[c,e[f]])}return t}function Mt(e){return at[e===0?0:e%at.length]}function yi(e,t){const i=Et(t);y.plots.push({type:"line",strokeFill:Mt(X),strokeWidth:2,data:i}),X++}function bi(e,t){const i=Et(t);y.plots.push({type:"bar",fill:Mt(X),data:i}),X++}function Ai(){if(y.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return y.title=St(),ci.build(Y,y,H,Tt)}function wi(){return H}function Si(){return Y}const _i=function(){Ut(),X=0,Y=Lt(),y=Pt(),H=Dt(),at=H.plotColorPalette.split(",").map(e=>e.trim()),G=!1,rt=!1},Ci={getDrawableElem:Ai,clear:_i,setAccTitle:Nt,getAccTitle:Xt,setDiagramTitle:Yt,getDiagramTitle:St,getAccDescription:Ht,setAccDescription:$t,setOrientation:gi,setXAxisTitle:xi,setXAxisRangeData:vt,setXAxisBand:di,setYAxisTitle:fi,setYAxisRangeData:pi,setLineData:yi,setBarData:bi,setTmpSVGG:ui,getChartThemeConfig:wi,getChartConfig:Si},ki=(e,t,i,s)=>{const n=s.db,o=n.getChartThemeConfig(),c=n.getChartConfig();function f(p){return p==="top"?"text-before-edge":"middle"}function d(p){return p==="left"?"start":p==="right"?"end":"middle"}function R(p){return`translate(${p.x}, ${p.y}) rotate(${p.rotation||0})`}_t.debug(`Rendering xychart chart +`+e);const C=qt(t),A=C.append("g").attr("class","main"),m=A.append("rect").attr("width",c.width).attr("height",c.height).attr("class","background");jt(C,c.height,c.width,!0),C.attr("viewBox",`0 0 ${c.width} ${c.height}`),m.attr("fill",o.backgroundColor),n.setTmpSVGG(C.append("g").attr("class","mermaid-tmp-group"));const T=n.getDrawableElem(),S={};function L(p){let _=A,h="";for(const[P]of p.entries()){let z=A;P>0&&S[h]&&(z=S[h]),h+=p[P],_=S[h],_||(_=S[h]=z.append("g").attr("class",p[P]))}return _}for(const p of T){if(p.data.length===0)continue;const _=L(p.groupTexts);switch(p.type){case"rect":_.selectAll("rect").data(p.data).enter().append("rect").attr("x",h=>h.x).attr("y",h=>h.y).attr("width",h=>h.width).attr("height",h=>h.height).attr("fill",h=>h.fill).attr("stroke",h=>h.strokeFill).attr("stroke-width",h=>h.strokeWidth);break;case"text":_.selectAll("text").data(p.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",h=>h.fill).attr("font-size",h=>h.fontSize).attr("dominant-baseline",h=>f(h.verticalPos)).attr("text-anchor",h=>d(h.horizontalPos)).attr("transform",h=>R(h)).text(h=>h.text);break;case"path":_.selectAll("path").data(p.data).enter().append("path").attr("d",h=>h.path).attr("fill",h=>h.fill?h.fill:"none").attr("stroke",h=>h.strokeFill).attr("stroke-width",h=>h.strokeWidth);break}}},Ri={draw:ki},Bi={parser:ti,db:Ci,renderer:Ri};export{Bi as diagram}; diff --git "a/assets/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html-MxCZ759H.js" "b/assets/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html-MxCZ759H.js" new file mode 100644 index 00000000..66564b95 --- /dev/null +++ "b/assets/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html-MxCZ759H.js" @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-633fb764","path":"/blog/%E4%B8%80%E5%8F%B0%E6%96%B0%E7%94%B5%E8%84%91%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB.html","title":"配置策划与记录","lang":"zh-CN","frontmatter":{"date":"2020-11-07T13:39:20.000Z","updated":"2022-01-16T19:45:35.000Z","description":"配置策划与记录 设置 计划的目录划分 C:\\\\ Program Files / x86 ProgramData Windows Users D:\\\\ Northword Documents Downloads Music Pictures Videos OneDrive Working Assets Program Files Tools Games Backups Fav / library / Other Assets Temporary","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/blog/%E4%B8%80%E5%8F%B0%E6%96%B0%E7%94%B5%E8%84%91%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"配置策划与记录"}],["meta",{"property":"og:description","content":"配置策划与记录 设置 计划的目录划分 C:\\\\ Program Files / x86 ProgramData Windows Users D:\\\\ Northword Documents Downloads Music Pictures Videos OneDrive Working Assets Program Files Tools Games Backups Fav / library / Other Assets Temporary"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-12T06:18:28.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-07T13:39:20.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-12T06:18:28.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"配置策划与记录\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-07T13:39:20.000Z\\",\\"dateModified\\":\\"2022-09-12T06:18:28.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"设置","slug":"设置","link":"#设置","children":[{"level":3,"title":"计划的目录划分","slug":"计划的目录划分","link":"#计划的目录划分","children":[]},{"level":3,"title":"目录相关的","slug":"目录相关的","link":"#目录相关的","children":[]}]},{"level":2,"title":"软件","slug":"软件","link":"#软件","children":[{"level":3,"title":"应用商店","slug":"应用商店","link":"#应用商店","children":[]},{"level":3,"title":"C:\\\\program files 常用软件和非专业软件","slug":"c-program-files-常用软件和非专业软件","link":"#c-program-files-常用软件和非专业软件","children":[]},{"level":3,"title":"D:\\\\program files 专业软件和大型的软件","slug":"d-program-files-专业软件和大型的软件","link":"#d-program-files-专业软件和大型的软件","children":[]},{"level":3,"title":"D:\\\\Tools 小工具和便携式软件","slug":"d-tools-小工具和便携式软件","link":"#d-tools-小工具和便携式软件","children":[]},{"level":3,"title":"其他","slug":"其他","link":"#其他","children":[]}]}],"git":{"createdTime":1662963508000,"updatedTime":1662963508000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.01,"words":302},"filePathRelative":"blog/一台新电脑的自我修养.md","localizedDate":"2020年11月7日","excerpt":"

    配置策划与记录

    \\n

    设置

    \\n

    计划的目录划分

    \\n
      \\n
    • C:\\\\\\n
        \\n
      • Program Files / x86
      • \\n
      • ProgramData
      • \\n
      • Windows
      • \\n
      • Users
      • \\n
      \\n
    • \\n
    • D:\\\\\\n
        \\n
      • Northword
      • \\n
      • Documents
      • \\n
      • Downloads
      • \\n
      • Music
      • \\n
      • Pictures
      • \\n
      • Videos
      • \\n
      • OneDrive
      • \\n
      • Working Assets
      • \\n
      • Program Files
      • \\n
      • Tools
      • \\n
      • Games
      • \\n
      • Backups
      • \\n
      • Fav / library / Other Assets
      • \\n
      • Temporary
      • \\n
      \\n
    • \\n
    ","autoDesc":true}');export{e as data}; diff --git "a/assets/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html-Wj6uz103.js" "b/assets/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html-Wj6uz103.js" new file mode 100644 index 00000000..fc7068d0 --- /dev/null +++ "b/assets/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html-Wj6uz103.js" @@ -0,0 +1 @@ +import{_ as i}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as l,c as e,d as a}from"./app-Mf7X6hWu.js";const r={},o=a('

    配置策划与记录

    设置

    计划的目录划分

    • C:\\
      • Program Files / x86
      • ProgramData
      • Windows
      • Users
    • D:\\
      • Northword
      • Documents
      • Downloads
      • Music
      • Pictures
      • Videos
      • OneDrive
      • Working Assets
      • Program Files
      • Tools
      • Games
      • Backups
      • Fav / library / Other Assets
      • Temporary

    目录相关的

    • 显示隐藏文件夹、扩展名
    • 更改用户文件夹文档音乐等的路径
    • 配置Onedrive至D:/OneDrive
    • 创建库文件夹
      • Work Lib
        • D:\\OneDrive\\Postgraduate
        • D:\\OneDrive\\WorkFiles
        • D:\\Working Assets
      • FileRecv Lib
        • D:\\Downloads
        • D:\\Documents\\Tencent Files\\910687889\\FileRecv
        • D:\\Documents\\Virtual Machines\\Shared folder
        • D:\\Documents\\WeChat Files\\northword\\Files

    软件

    默认分区两个,暂定一个系统与软件盘(100 G),一个数据盘(375 G)。

    应用商店

    • [x] SniPaste
    • [ ] ModernFlyouts
    • [ ] EarTrumpet
    • [ ] Eyepetizer
    • [ ] Picture Share
    • [ ] PPT模板大全
    • [ ] Windows Terminal
    • [x] 便笺
    • [ ] 有道词典

    C:\\program files 常用软件和非专业软件

    • [x] 火绒
    • [x] Bandizip / 7-zip
    • [ ] PotPlayer
    • [ ] Firefox
    • [x] QTTabBar
    • [ ] EasyConnet
    • [ ] GitHub Desktop
    • [ ] Node.js
    • [ ] PyCharm
    • [ ] Python
    • [ ] TIM
    • [ ] 微信
    • [ ] 百度网盘
    • [ ] 智能互联
    • [ ] 看图王
    • [ ]

    D:\\program files 专业软件和大型的软件

    • [ ] Adobe | PS、PR、AE、AU、AI、Acrobat、AME
    • [ ] AutoCAD
    • [ ] Materials Studio
    • [ ] CAJView
    • [ ] EndNote
    • [ ] SPSS
    • [ ] Origin
    • [ ] iMazing
    • [ ] MathType
    • [ ] MATLAB
    • [ ]
    • [ ] VMware
    • [ ] Xshell / XFTP / XManager

    D:\\Tools 小工具和便携式软件

    • [ ] Typora
    • [ ] Anydesk / Todesk
    • [ ] Bandicam
    • [ ] Clash
    • [ ] Jellyfin
    • [ ] Listary
    • [ ] Everything
    • [ ] 小丸
    • [ ] keepass
    • [ ] npp
    • [ ] MICloud

    其他

    • spacedesk
    • 方方格子
    • Islide
    ',18),d=[o];function s(c,n){return l(),e("div",null,d)}const u=i(r,[["render",s],["__file","一台新电脑的自我修养.html.vue"]]);export{u as default}; diff --git "a/assets/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html-Otmo_uC5.js" "b/assets/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html-Otmo_uC5.js" new file mode 100644 index 00000000..6aba9001 --- /dev/null +++ "b/assets/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html-Otmo_uC5.js" @@ -0,0 +1 @@ +const e=JSON.parse('{"key":"v-3c7a5793","path":"/software/%E4%BD%BF%E7%94%A8Pavadan%E5%92%8CMentoHUST%E8%BF%9B%E8%A1%8C%E9%94%90%E6%8D%B7%E8%AE%A4%E8%AF%81.html","title":"","lang":"zh-CN","frontmatter":{"date":"2020-11-07T13:39:31.000Z","updated":"2022-01-16T19:52:42.000Z","description":"1. 红米 AC2100 刷入 Pavadan 固件 目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。 Download Link Hiboy: 2. MentoHUST 的配置 在 WebUI 配置 路径:拓展功能 - 配置拓展环境 - 锐捷认证 启用 MentoHUST 用户名:学号 密码:校园网上网密码,默认密码为身份证后六位 组播地址:0(标准) DHCP 方式:2(认证后) 是否后台运行:2(是,保留输出) 客户端版本号:4.96 其余均保持默认","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/%E4%BD%BF%E7%94%A8Pavadan%E5%92%8CMentoHUST%E8%BF%9B%E8%A1%8C%E9%94%90%E6%8D%B7%E8%AE%A4%E8%AF%81.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:description","content":"1. 红米 AC2100 刷入 Pavadan 固件 目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。 Download Link Hiboy: 2. MentoHUST 的配置 在 WebUI 配置 路径:拓展功能 - 配置拓展环境 - 锐捷认证 启用 MentoHUST 用户名:学号 密码:校园网上网密码,默认密码为身份证后六位 组播地址:0(标准) DHCP 方式:2(认证后) 是否后台运行:2(是,保留输出) 客户端版本号:4.96 其余均保持默认"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-07T13:39:31.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2020-11-07T13:39:31.000Z\\",\\"dateModified\\":\\"2022-09-16T13:53:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"1. 红米 AC2100 刷入 Pavadan 固件","slug":"_1-红米-ac2100-刷入-pavadan-固件","link":"#_1-红米-ac2100-刷入-pavadan-固件","children":[{"level":3,"title":"Download Link","slug":"download-link","link":"#download-link","children":[]}]},{"level":2,"title":"2. MentoHUST 的配置","slug":"_2-mentohust-的配置","link":"#_2-mentohust-的配置","children":[{"level":3,"title":"在 WebUI 配置","slug":"在-webui-配置","link":"#在-webui-配置","children":[]},{"level":3,"title":"帮助命令","slug":"帮助命令","link":"#帮助命令","children":[]}]},{"level":2,"title":"在 Pavadan 中设置定时任务(可选)","slug":"在-pavadan-中设置定时任务-可选","link":"#在-pavadan-中设置定时任务-可选","children":[{"level":3,"title":"在 WAN 上行/下行启动后执行","slug":"在-wan-上行-下行启动后执行","link":"#在-wan-上行-下行启动后执行","children":[]},{"level":3,"title":"自定义 Crontab 定时任务配置","slug":"自定义-crontab-定时任务配置","link":"#自定义-crontab-定时任务配置","children":[]}]}],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":2.5,"words":750},"filePathRelative":"software/使用Pavadan和MentoHUST进行锐捷认证.md","localizedDate":"2020年11月7日","excerpt":"

    1. 红米 AC2100 刷入 Pavadan 固件

    \\n

    目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。

    \\n

    Download Link

    \\n
      \\n
    • Hiboy:
    • \\n
    \\n

    2. MentoHUST 的配置

    \\n

    在 WebUI 配置

    \\n

    路径:拓展功能 - 配置拓展环境 - 锐捷认证

    \\n
      \\n
    • 启用 MentoHUST
    • \\n
    • 用户名:学号
    • \\n
    • 密码:校园网上网密码,默认密码为身份证后六位
    • \\n
    • 组播地址:0(标准)
    • \\n
    • DHCP 方式:2(认证后)
    • \\n
    • 是否后台运行:2(是,保留输出)
    • \\n
    • 客户端版本号:4.96
    • \\n
    • 其余均保持默认
    • \\n
    ","autoDesc":true}');export{e as data}; diff --git "a/assets/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html-kBFfCnyy.js" "b/assets/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html-kBFfCnyy.js" new file mode 100644 index 00000000..07f03909 --- /dev/null +++ "b/assets/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html-kBFfCnyy.js" @@ -0,0 +1,57 @@ +import{_ as a}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as n,c as s,d as e}from"./app-Mf7X6hWu.js";const t={},p=e(`

    1. 红米 AC2100 刷入 Pavadan 固件

    目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。

    • Hiboy:

    2. MentoHUST 的配置

    在 WebUI 配置

    路径:拓展功能 - 配置拓展环境 - 锐捷认证

    • 启用 MentoHUST
    • 用户名:学号
    • 密码:校园网上网密码,默认密码为身份证后六位
    • 组播地址:0(标准)
    • DHCP 方式:2(认证后)
    • 是否后台运行:2(是,保留输出)
    • 客户端版本号:4.96
    • 其余均保持默认

    帮助命令

    mentohust -h
    +
    欢迎使用MentoHUST    版本: 0.3.1
    +Copyright (C) 2009-2010 HustMoon Studio
    +人到华中大,有甜亦有辣。明德厚学地,求是创新家。
    +Bug report to http://code.google.com/p/mentohust/issues/list
    +
    +用法:    mentohust [-选项][参数]
    +选项:    -h 显示本帮助信息
    +    -k -k(退出程序) 其他(重启程序)
    +    -w 保存参数到配置文件
    +    -u 用户名
    +    -p 密码
    +    -n 网卡名
    +    -i IP[默认本机IP]
    +    -m 子网掩码[默认本机掩码]
    +    -g 网关[默认0.0.0.0]
    +    -s DNS[默认0.0.0.0]
    +    -o Ping主机[默认0.0.0.0,表示关闭该功能]
    +    -t 认证超时()[默认8]
    +    -e 心跳间隔()[默认30]
    +    -r 失败等待()[默认15]
    +    -l 允许失败次数[0表示无限制,默认8]
    +    -a 组播地址: 0(标准) 1(锐捷) 2(赛尔) [默认0]
    +    -d DHCP方式: 0(不使用) 1(二次认证) 2(认证后) 3(认证前) [默认0]
    +    -b 是否后台运行: 0() 1(是,关闭输出) 2(是,保留输出) 3(是,输出到文件) [默认0]
    +    -v 客户端版本号[默认0.00表示兼容xrgsu]
    +    -f 自定义数据文件[默认不使用]
    +    -c DHCP脚本[默认dhclient]
    +    -q 显示SuConfig.dat的内容(如-q/path/SuConfig.dat)
    +    -S 接入服务选择:0(默认) 1(有线1x上网服务,例如华农拨办公账号时需要)
    +例如:    mentohust -uusername -ppassword -neth0 -i192.168.0.1 -m255.255.255.0 -g0.0.0.0 -s0.0.0.0 -o0.0.0.0 -t8 -e30 -r15 -a0 -d1 -b0 -v4.10 -fdefault.mpf -cdhclient
    +注意:使用时请确保是以root权限运行!
    +

    在 Pavadan 中设置定时任务(可选)

    路径:高级设置 - 自定义设置 - 脚本

    在 WAN 上行/下行启动后执行

    #!/bin/sh
    +
    +### Custom user script
    +### Called after internal WAN up/down action
    +### $1 - WAN action (up/down)
    +### $2 - WAN interface name (e.g. eth3 or ppp0)
    +### $3 - WAN IPv4 address
    +logger  "运行后 WAN 状态:" "WAN 状态:【$1】, WAN 接口:【$2】, WAN IP:【$3】"
    +
    +if [ $1 == "up" ] ; then
    +    sleep 30
    +    /etc/storage/crontabs_script.sh up &
    +#else
    +#    echo "检测到WAN:【$1】 "
    +#    echo "请尝试重启mentohust或重启路由器"
    +#    echo "正在尝试重启mentohust"
    +#    mentohust -k -k
    +fi
    +

    自定义 Crontab 定时任务配置

    可选定时开关 WAN 口,将命令前的 # 移除即可启用命令

    或去 高级设置 - 系统管理 - 服务 - 计划任务 中加入

    # 凌晨2点定时关网:
    +0 2 * * * stop_wan #删除开头的#启动命令
    +
    +# 早上8点定时开网(重启wan口):
    +0 8 * * * restart_wan #删除开头的#启动命令
    +
    +
    `,19),i=[p];function l(c,o){return n(),s("div",null,i)}const d=a(t,[["render",l],["__file","使用Pavadan和MentoHUST进行锐捷认证.html.vue"]]);export{d as default}; diff --git "a/assets/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html-T7lkRiov.js" "b/assets/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html-T7lkRiov.js" new file mode 100644 index 00000000..fead7709 --- /dev/null +++ "b/assets/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html-T7lkRiov.js" @@ -0,0 +1,45 @@ +import{_ as e}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as t,o as l,c as i,a,b as p,e as c,d as s}from"./app-Mf7X6hWu.js";const o="/assets/--iemq2ucq.png",r="/assets/64206bdbbad90a9ab4ba1aa3889a2e05-Zmmhpxdl.png",d={},u=s('

    内网穿透折腾记录

    通过 frp

    配置参考

    ',3),v={href:"https://gofrp.org/docs/reference/",target:"_blank",rel:"noopener noreferrer"},m=s(`

    frps.ini

    [common]
    +bind_port = 7000
    +token = 通讯密码
    +subdomin_host = frp.northword.cn
    +log_file = ./frps.log
    +log_level       = info
    +log_max_days    = 5
    +

    frpc.ini

    [common]
    +server_addr = frp.northword.cn
    +server_port = 7000
    +log_file = /home/scujh_zjb/apps/frp/frpc.log
    +log_level = info
    +log_max_days = 3
    +token = 通讯密码
    +
    +[HPC-Inelt]
    +type = tcp
    +local_ip = 127.0.0.1
    +local_port = 22
    +remote_port = 6001
    +

    linux 端 systemctl 配置

    frp 包中提供了 systemctl 的配置文件模板,服务端和客户端各两个,带 @ 的可以传参以启动多个实例。将模板复制到 systemctl 服务配置路径:/lib/systemd/system/

    [Unit]
    +Description=Frp Client Service
    +After=network.target
    +
    +[Service]
    +Type=simple
    +Restart=on-failure
    +RestartSec=5s
    +ExecStart=/home/scujh_zjb/apps/frp/frpc -c /home/scujh_zjb/apps/frp/frpc.ini
    +ExecReload=/home/scujh_zjb/apps/frp/frpc reload -c /home/scujh_zjb/apps/frp/frpc.ini
    +LimitNOFILE=1048576
    +
    +[Install]
    +WantedBy=multi-user.target
    +

    初次配置后需要重载服务,之后启动无须此步:

    systemctl daemon-reload
    +

    然后启动服务::

    #启动 
    +sudo systemctl start frpc 
    +#关闭 
    +sudo systemctl stop frpc 
    +#重启 
    +sudo systemctl restart frpc 
    +#查看状态 
    +sudo systemctl status frpc
    +

    启用开机自启:

    sudo systemctl enable frpc
    +

    启动成功示意:

    ',16);function k(b,f){const n=t("ExternalLinkIcon");return l(),i("div",null,[u,a("p",null,[a("a",v,[p("参考 | frp (gofrp.org)"),c(n)])]),m])}const _=e(d,[["render",k],["__file","内网穿透折腾记录.html.vue"]]);export{_ as default}; diff --git "a/assets/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html-jAjmy4Tm.js" "b/assets/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html-jAjmy4Tm.js" new file mode 100644 index 00000000..45b09582 --- /dev/null +++ "b/assets/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html-jAjmy4Tm.js" @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-724feff4","path":"/software/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E6%8A%98%E8%85%BE%E8%AE%B0%E5%BD%95.html","title":"内网穿透折腾记录","lang":"zh-CN","frontmatter":{"title":"内网穿透折腾记录","date":"2022-01-18T21:58:29.000Z","updated":"2022-11-09T19:48:00.000Z","description":"内网穿透折腾记录 通过 frp 配置参考 参考 | frp (gofrp.org) frps.ini [common] bind_port = 7000 token = 通讯密码 subdomin_host = frp.northword.cn log_file = ./frps.log log_level = info log_max_days = 5","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F%E6%8A%98%E8%85%BE%E8%AE%B0%E5%BD%95.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"内网穿透折腾记录"}],["meta",{"property":"og:description","content":"内网穿透折腾记录 通过 frp 配置参考 参考 | frp (gofrp.org) frps.ini [common] bind_port = 7000 token = 通讯密码 subdomin_host = frp.northword.cn log_file = ./frps.log log_level = info log_max_days = 5"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"内网穿透折腾记录"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-01-18T21:58:29.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"内网穿透折腾记录\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2022-01-18T21:58:29.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"通过 frp","slug":"通过-frp","link":"#通过-frp","children":[{"level":3,"title":"配置参考","slug":"配置参考","link":"#配置参考","children":[]},{"level":3,"title":"linux 端 systemctl 配置","slug":"linux-端-systemctl-配置","link":"#linux-端-systemctl-配置","children":[]}]}],"git":{"createdTime":1663336415000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":4}]},"readingTime":{"minutes":0.85,"words":254},"filePathRelative":"software/内网穿透折腾记录.md","localizedDate":"2022年1月19日","excerpt":"

    内网穿透折腾记录

    \\n

    通过 frp

    \\n

    配置参考

    \\n

    参考 | frp (gofrp.org)

    \\n

    frps.ini

    \\n
    [common]\\nbind_port = 7000\\ntoken = 通讯密码\\nsubdomin_host = frp.northword.cn\\nlog_file = ./frps.log\\nlog_level       = info\\nlog_max_days    = 5\\n
    ","autoDesc":true}');export{t as data}; diff --git "a/assets/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html-C0wF6MG9.js" "b/assets/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html-C0wF6MG9.js" new file mode 100644 index 00000000..6ffd7f87 --- /dev/null +++ "b/assets/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html-C0wF6MG9.js" @@ -0,0 +1,33 @@ +import{_ as o}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as i,o as c,c as l,a as s,b as n,e as t,d as e}from"./app-Mf7X6hWu.js";const p={},u=e('

    开启代理后校园网认证无法跳转

    连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。

    但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。

    由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。

    解决方法蛮多,比如:

    • 关闭 clash 的开机自启 / system proxy 。
    • 需要认证时关闭 system proxy 。
    • 记下认证页面的真实地址直接访问。
    • 策略组 微软 选择直链。
    • 在 rule 里添加关键词匹配规则使 msftconnecttest 被 direct 。
    ',6),r={href:"https://docs.cfw.lbyczf.com/contents/bypass.html#%E8%AE%BE%E7%BD%AE%E6%96%B9%E5%BC%8F",target:"_blank",rel:"noopener noreferrer"},d=e(`
    bypass:
    +  - "*msftconnecttest.com"
    +  - "*c-msedge.net"
    +  - "edge.microsoft.com"
    +  - localhost
    +  - 127.*
    +  - 10.*
    +  - 172.16.*
    +  - 172.17.*
    +  - 172.18.*
    +  - 172.19.*
    +  - 172.20.*
    +  - 172.21.*
    +  - 172.22.*
    +  - 172.23.*
    +  - 172.24.*
    +  - 172.25.*
    +  - 172.26.*
    +  - 172.27.*
    +  - 172.28.*
    +  - 172.29.*
    +  - 172.30.*
    +  - 172.31.*
    +  - 192.168.*
    +  - <local>
    +

    终于是实现效果了,也没啥大问题。

    `,2),m=s("code",null,"pip install",-1),k=s("code",null,"npm install",-1),v=s("code",null,"SSL 错误 ",-1),_={href:"https://github.com/Fndroid/clash_for_windows_pkg/issues/1568",target:"_blank",rel:"noopener noreferrer"},h=s("code",null,"PAC mode",-1),b=e(`
    function FindProxyForURL(url, host) {
    +  if (isPlainHostName(host) || dnsDomainIs(host, ".msftconnecttest.com")) {
    +    return "DIRECT";
    +  } else {
    +  return "PROXY 127.0.0.1:%mixed-port%; SOCKS5 127.0.0.1:%mixed-port%; DIRECT;"
    +  }
    +}
    +
    `,1),f={href:"https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_PAC_file#isplainhostname",target:"_blank",rel:"noopener noreferrer"},g={href:"https://docs.cfw.lbyczf.com/contents/parser.html",target:"_blank",rel:"noopener noreferrer"},y={href:"https://github.com/Fndroid/clash_for_windows_pkg/discussions/1532",target:"_blank",rel:"noopener noreferrer"};function w(C,x){const a=i("ExternalLinkIcon");return c(),l("div",null,[u,s("p",null,[n("上述方法治标不治本,添加 rule 虽然是个不错的方法(事实上这可能是多数人首先想到的方法),但是如果你用的是机场的订阅,那换个订阅/升级订阅后自己加的规则就没了。查阅 CFW 文档后发现了 "),s("a",r,[n("绕过系统代理 | Clash for Windows "),t(a)]),n(" :")]),d,s("p",null,[n("但后来有一天我发现在命令提示符里进行 "),m,n(" 以及 "),k,n(" 的时候提示 "),v,n(",换源已无法解决,于是找到了 issue : "),s("a",_,[n("下载文件遇到 SSL 错误 · Issue #1568 · Fndroid/clash_for_windows_pkg (github.com)"),t(a)]),n(" 后被建议使用"),h,n(",于是有了 PAC 版本的 Bypass :")]),b,s("p",null,[n("PAC 概念及其写法可参考: "),s("a",f,[n("代理自动配置文件(PAC)文件 - HTTP | MDN (mozilla.org)"),t(a)])]),s("p",null,[n("另发现了配置文件预处理,或许也可以用:更新某个订阅后 CFW 自动对该配置文件追加规则。参考 "),s("a",g,[n("配置文件预处理 | Clash for Windows"),t(a)]),n(" 。")]),s("p",null,[n("Clash 的几种模式介绍: "),s("a",y,[n("一个困扰已久的问题 · Discussion #1532 · Fndroid/clash_for_windows_pkg (github.com)"),t(a)])])])}const E=o(p,[["render",w],["__file","开启代理后msftconnecttest无法跳转.html.vue"]]);export{E as default}; diff --git "a/assets/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html-ZpuWw8p5.js" "b/assets/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html-ZpuWw8p5.js" new file mode 100644 index 00000000..75e932f8 --- /dev/null +++ "b/assets/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html-ZpuWw8p5.js" @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-3ba57220","path":"/software/%E5%BC%80%E5%90%AF%E4%BB%A3%E7%90%86%E5%90%8Emsftconnecttest%E6%97%A0%E6%B3%95%E8%B7%B3%E8%BD%AC.html","title":"开启代理后 msftconnecttest.com 无法跳转","lang":"zh-CN","frontmatter":{"title":"开启代理后 msftconnecttest.com 无法跳转","date":"2021-03-06T20:20:20.000Z","updated":"2022-01-16T19:52:53.000Z","description":"开启代理后校园网认证无法跳转 连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。 但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。 由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/%E5%BC%80%E5%90%AF%E4%BB%A3%E7%90%86%E5%90%8Emsftconnecttest%E6%97%A0%E6%B3%95%E8%B7%B3%E8%BD%AC.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"开启代理后 msftconnecttest.com 无法跳转"}],["meta",{"property":"og:description","content":"开启代理后校园网认证无法跳转 连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。 但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。 由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2021-03-06T20:20:20.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"开启代理后 msftconnecttest.com 无法跳转\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2021-03-06T20:20:20.000Z\\",\\"dateModified\\":\\"2022-09-16T13:53:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":1.95,"words":584},"filePathRelative":"software/开启代理后msftconnecttest无法跳转.md","localizedDate":"2021年3月7日","excerpt":"

    开启代理后校园网认证无法跳转

    \\n

    连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。

    \\n

    但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。

    \\n

    由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。

    ","autoDesc":true}');export{t as data}; diff --git "a/assets/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html-OZKw3mU-.js" "b/assets/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html-OZKw3mU-.js" new file mode 100644 index 00000000..3a744381 --- /dev/null +++ "b/assets/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html-OZKw3mU-.js" @@ -0,0 +1 @@ +const t=JSON.parse(`{"key":"v-462cf0b5","path":"/software/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%8A%98%E8%85%BE.html","title":"云服务器的折腾记录","lang":"zh-CN","frontmatter":{"title":"云服务器的折腾记录","date":"2022-01-21T17:21:56.000Z","updated":"2022-09-12T17:43:40.000Z","description":"云服务器的折腾记录 工具 Aria2c Aria2 Frps Docker 其他 效率 网速监控 raboof/nethogs: Linux 'net top' tool (github.com)","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/software/%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%8A%98%E8%85%BE.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"云服务器的折腾记录"}],["meta",{"property":"og:description","content":"云服务器的折腾记录 工具 Aria2c Aria2 Frps Docker 其他 效率 网速监控 raboof/nethogs: Linux 'net top' tool (github.com)"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2022-09-16T13:53:35.000Z"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2022-01-21T17:21:56.000Z"}],["meta",{"property":"article:modified_time","content":"2022-09-16T13:53:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"云服务器的折腾记录\\",\\"image\\":[\\"\\"],\\"datePublished\\":\\"2022-01-21T17:21:56.000Z\\",\\"dateModified\\":\\"2022-09-16T13:53:35.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"工具","slug":"工具","link":"#工具","children":[{"level":3,"title":"Aria2c","slug":"aria2c","link":"#aria2c","children":[]},{"level":3,"title":"Frps","slug":"frps","link":"#frps","children":[]},{"level":3,"title":"Docker","slug":"docker","link":"#docker","children":[]},{"level":3,"title":"其他","slug":"其他","link":"#其他","children":[]}]},{"level":2,"title":"效率","slug":"效率","link":"#效率","children":[{"level":3,"title":"网速监控","slug":"网速监控","link":"#网速监控","children":[]}]}],"git":{"createdTime":1663336415000,"updatedTime":1663336415000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":1}]},"readingTime":{"minutes":0.19,"words":56},"filePathRelative":"software/服务器的折腾.md","localizedDate":"2022年1月22日","excerpt":"

    云服务器的折腾记录

    \\n

    工具

    \\n

    Aria2c

    \\n

    Aria2

    \\n

    Frps

    \\n

    Docker

    \\n

    其他

    \\n

    效率

    \\n

    网速监控

    \\n

    raboof/nethogs: Linux 'net top' tool (github.com)

    ","autoDesc":true}`);export{t as data}; diff --git "a/assets/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html-VIwo8NQM.js" "b/assets/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html-VIwo8NQM.js" new file mode 100644 index 00000000..239a75e1 --- /dev/null +++ "b/assets/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html-VIwo8NQM.js" @@ -0,0 +1 @@ +import{_ as d}from"./plugin-vue_export-helper-x3n3nnut.js";import{r as a,o as i,c,a as e,e as r,w as s,b as t,d as n}from"./app-Mf7X6hWu.js";const _={},l=n('

    云服务器的折腾记录

    工具

    Aria2c

    ',3),f=n('

    Frps

    Docker

    其他

    效率

    网速监控

    ',5),u={href:"https://github.com/raboof/nethogs",target:"_blank",rel:"noopener noreferrer"};function p(x,b){const o=a("RouterLink"),h=a("ExternalLinkIcon");return i(),c("div",null,[l,e("p",null,[r(o,{to:"/software/Aria2.html"},{default:s(()=>[t("Aria2")]),_:1})]),f,e("p",null,[e("a",u,[t("raboof/nethogs: Linux 'net top' tool (github.com)"),r(h)])])])}const g=d(_,[["render",p],["__file","服务器的折腾.html.vue"]]);export{g as default}; diff --git "a/assets/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html-BCMIQNjX.js" "b/assets/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html-BCMIQNjX.js" new file mode 100644 index 00000000..0c44bb28 --- /dev/null +++ "b/assets/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html-BCMIQNjX.js" @@ -0,0 +1 @@ +import{_ as p}from"./plugin-vue_export-helper-x3n3nnut.js";import{o as a,c as i,d as e}from"./app-Mf7X6hWu.js";const t="/assets/47044b1f5eb9ee600f264340cab0c78a-gsqIgbGN.png",r="/assets/5405ed5c731ff42d37e6ec8a014fa6a6-u2q13gqj.png",o="/assets/beb6ba9b2e39f3f30d43a319fd0249a5-UKeP4-v4.png",l={},n=e('

    考研的一些总结

    引言

    20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。

    谈一谈这一年踩过的坑与心得。

    就按照考试顺序吧。

    政治

    考研政治其实跟好肖秀荣就够了,我先列一下我的:

    基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。

    • 肖秀荣知识点精讲精练
    • 肖秀荣 1000 题
    • 徐涛的强化班视频

    **强化,9—11 月中旬。**主要是强化选择题。做 1000 题,至少至少两遍。做的时候记得按照线索归纳总结。这段时间肖秀荣知识点摘要和腿姐的背诵手册应该就发货了,参照着做选择题。如果有余力,背肖秀荣的考点预测。考研政治拉分就在选择上,尤其是多选,腿姐后面有个选择题技巧班,可以听。

    同时强烈建议能有一个 iPad,那样可以找到 1000 题电子版二刷三刷很方便,不仅是政治 1000 题,很多书都有电子版,那些并不会常看的,直接就在 pad 上浏览了。

    需要的话可以整理一个用乱七八糟的小方法提高效率的文档。

    • 腿姐考研政治真题(电子版)
    • 肖秀荣知识点摘要和腿姐背诵手册结合看
    • 肖秀荣考点预测

    **冲刺,11 月中旬—12 月考前一天。**11 月中旬发肖八,12 月中上旬发肖四。分析题把肖四背过,完完全全的背过,就足够了。(年年都有说肖秀荣没压住,今年不压了之类的,年年都是真香),分析题有个 bili UP 叫“空卡空卡空空卡”,会总结一些口诀辅助记忆,可以关注一下。小白考研的东西,怎么说呢,那就是分了下段,我看用的人不少,不过我习惯拿着答案了。还有个研木易木子,比较注重逻辑,就这三个结合着看吧。之后再搞一些其他的卷子做做选择就好。还要注意一点,不要贪多,到那时候肯定是卷子满天飞,谁谁都给你搞模拟题,谁谁都出压题课,技巧班的,记得抓住一个人的背好就够了,千万别被带歪了,重点是要记住,而不是看了课。

    注意:肖四肖八上的每一个选择题都要记住,肖四的每个分析题都要背了。

    • 肖秀荣八套卷
    • 肖秀荣最后四套卷
    • 腿姐四套卷
    • 腿姐的选择题技巧班

    这时候你们应该买好了政治资料了,要不然涨价涨的可是快了。当然双十一也可以。

    买的时候找好店铺,尤其是肖四,要不然别人都背了一页了,你的还没发回来。

    数学

    讲道理我数学可不好,我只瞎说。

    课本,1 月—3 月,基础不好的才有这一步,基础好的直接跳过,时间弹性调整。大三下开学前应该是要把高数上搞完的,下册其实无所谓。代数过不过课本也没啥,有余力看一看还是好的。我当时大三下开学时也并没有过完课本,只把高数上过到了不定积分,然后后面就随意看了看,没有很认真(这样是不对的)。

    image-20200520164428979
    image-20200520164428979

    **基础,3 月—6 月中旬,**这段时间就上基础班呗,然后做做习题集,边看边做题,比如 660、1000、1800,做一本就好。暑假前最好能完整上完基础班,或是跟视频课,或是看全书自学,总之高数+代数基础班知识点要完成。

    至于跟那个老师,这玩意看人,张宇、汤家凤、李永乐团队几个老师都听一听,觉得哪个适合自己跟哪个。高数就不说了,我是真没意见。至于代数,就老老实实跟李永乐吧,线代王不是吹出来的。李永乐基础班讲义是《复习全书 基础篇 第二篇》,注意是基础篇,不是数二版,这俩差别还是蛮大的,基础班是给寒假提前开始学数学的人准备的,内容相对少、简单,数二版是给自学的人准备的。没必要买这本书,找找电子版打印一下就好,没几页。强化班用的《线性代数辅导讲义》。个人觉得,基础阶段就把讲义做会,660 上线代做一做,强化阶段讲义上题就不少,做会他,再折回去看看 660。

    **强化,6 月中旬—9 月,**这段时间暑假嘛,所谓强化班就把知识点串起来了,习题也更难一些。19 年张宇的体系强化班讲义是闭关修炼,6 月 19 号发到的。也临近期末,就先折腾期末考试吧,但是别折腾几天考试把知识点忘完了就行。

    9 月前,结束强化课和习题集。习题集应该两边以上吧,一遍记不住哇。

    **真题,9 月中旬—11 月下旬,**看个人情况决定要做几年真题,16、18 好像比较难,甚至空过去都可以,做这两年的着实打击人,当然,数学好的就忽略这句话。按年份按篇章都可以,看人。我是 9.11 开始的第一道真题。真题买张宇真题大全解就好,感觉这本的质量比较高(排版和解析方法)。

    **模拟题,11 月下旬—12 月,**要是真题做的慢,这一步都会被直接略掉[/捂脸],张宇八套卷四套卷难难的,反正我是没做几份模拟题,压根没想拿高分,过线就行— —。李林四套卷是蛮简单的其实,不过冲着押题去找李林还是算辽。

    英语

    首先要评估自己的英语情况,觉得基础不太行,比如会说出“you is a pig”的人,那还是趁早去打基础的好。

    把英语分为词汇、长难句、阅读、翻译、作文五个阶段。

    词汇,某乎和一些考研老师一直宣称要把单词背几遍几遍云云,其实真能背完的还真不多,我就只背了 2k 左右,并且我没有用词汇书,就用墨墨直接背。墨墨会把你不会的单词疯狂出现,一直记不住的甚至一个多月天天出现,想不记住都有些难。背单词这个因人而异,用了墨墨后,我是第一次觉得我真的记住了单词,大概我适合这种方式,所以就一直用下来了。也有人习惯用单词书,一遍一遍快速过。总之尽可能把单词背完,最少最少最少也要把高中频单词记住!开始真题后,真题上的单词必须必须必须记住!

    有几个墨墨使用上的小提示:

    • 多设备同步学习需要再 A 设备备份后,再在 B 设备还原,才能同步学习记录。
    • 墨墨收费,但是能确保没天都打卡的话,其实打卡送的额度是够用的。不够就买嘛,50 块 4400 个单词。不太建议用破解版。
    • 你可以创建自己的词库,这对做真题时很有用,做一份题,把生词加入自己的词库,把这些单词加入学习计划,确保能记住。

    长难句和语法,基础不好的可以跟新东方田静,讲解很基础了(甚至我觉得有点简单都没看完[/捂脸]),配套书是《句句真研》。基础好的可以直接上阅读。英二甚至可以不学语法,当然最终以自己实际情况决定。

    真题,首推张剑黄皮书,讲解很细致很全,看了看黄皮书的答案解析,再回去看看四六级(我当时报的考虫)以及以前学英语的答案,简直就是** — —。

    阅读,可以跟唐迟,但是建议找旧版本视频,比如 18 年的还可以接受。反正我觉得 20 的不好,方法就是那些,变化也不大,最终还是得看自己练习。20 年的直播课经常拖堂,拖堂又不是讲的东西多了,大多是他讲的慢或者讲其他的搞的,一拖半小时的,完了还美名对学生负责,无偿加课时。——喵喵喵?没有能力控制自己的讲解节奏,导致课时安排出错,学生后续计划被推迟,难道不是作为一个老师的失败么?怎么还光荣起来了?? 不过之前的课在新东方录的非直播课还可以。另,不要做模拟题,至少考前一个月内你得用真题适应风格。

    翻译,新东方唐静。其实我觉得对于英二,这一块没哈必要看哈,有点...简单?英一倒是可以看看,这老师挺实在的。

    新题型,英二没必要看,过于简单,看的话唐迟有一节课,随意看看就行,英二新题型错一个都是罪过。英一的不太容易,但是我不知道怎么办。

    作文,我是背作文的支持者。我相信有输入才有输出。王江涛作文那些背一背,他基础阶段给 20 篇,强化阶段给 20 篇,不用全背,他要求背 20 篇,我觉得 10 篇左右就可(主要是我记不住了/哭),重点是要背熟,绝对的熟,能随口说出来组织出来一句话的那种,就像以前背课文第一句话那种的熟练程度。然后默写,很流利不用停笔想还能无错误的那种程度。他有几节课?可以看看,对了解作文结构、改模板还有些帮助。之后再找模板(对的,还是得要模板),不过是自己改模板了,我去年用的见山英二模板,但是几乎完全替换了首段和部分中间段落。(模板考前一个月完成就足够)。考前那段时间会有好多所谓押题预测,完全不需要理会,压住就扯淡,自己在公众号上发个百八十篇的,还只压住了个话题,那 tm 谁不会,我都能自称考研英语名师。

    有人说背作文没用,说根本写不出来,还不如记模板。——背的作文质量太差,或背的不熟。

    还有说都背王江涛的,全是重复的。——这随意咯,反正背的人看起来不少,这能写出来的却并不多。

    完形填空,这道题很多人都没时间做的。我推荐新东方易熙人。说实在的,好多老师吹的什么高频词红花词绿叶词虚词高频 balabala 的,基本没用,几十年考研英语他也就能给你挑出来那么几个特例,往那儿一摆,学生一看,“哇!好厉害!”,等他真的自己做的时候就憨了。说到底还是得实打实的搞他。易熙人也搞那一套,不过并不强调,也就随口一提。起码我后期跟的几篇完形填空真题讲解质量还不错。

    这些老师大多都有基础课和强化课,其实讲的内容差不了多少,自己感觉一两个视频看需不需要听就好。反正,所有的科目都是:少看视频多做题。

    阅读和完形,第一次做大概都会错很多,无所谓,按部就班学就好,千万别慌,一慌就到处换老师[/捂脸]

    专业课

    第一遍不要只看,要背!

    第一遍不要只看,要背!

    第一遍不要只看,要背!

    你会发现不背只看,看一遍再回头看以及全忘完了[/捂脸]

    暑假期间应该开始专业课学习。

    其他

    千万别忽视政治和英语,虽然有人说英语决定能不能上,数学决定能上的上限,但是我这次却是政治和英语提了不少分才勉强有机会。

    找学校千万别只看最低录取线,至少看到中间去。

    确定了目标就努力努力努力,不要害怕,不要放弃,管他能不能考上?学就 vans 了。

    整个考研期间,你 可能 会经历数次心态崩溃,我们这一届好几个女生都学着学着就崩溃了,这很正常,调整过来继续学就好,如果,你有崩溃的时候,只需要明白,这是正常现象,坚持学下去就好。我们年级崩溃过好几次的几位,浙大、厦大、中海洋,都录取了。

    淘宝有 A4 大小的线环网格笔记本,我 jio 得还挺好用。image-20200520195827330

    草稿纸可以直接淘宝买 A4 纸,十块左右一沓,一年都用不完。

    打印大量且不着急可以直接淘宝,便宜得多。

    临近考试可以买答题纸模拟,淘宝就有,一般情况下,数学英语各十张足够了。政治和专业课答题纸都是空白的,要是写不齐,可以用打格尺。

    做笔记要贴的话纸胶带是个不错的选择。

    英语字体可以练练。

    学的时候就认真学,一下手机都不要碰!

    一定选好学校,有时候,考得好不如选的好。考研是场信息不对称的考试,有时候信息比你的努力更重要。

    及时回顾已经学过的,要不然忘完了。


    ',63),s=[n];function d(c,h){return a(),i("div",null,s)}const f=p(l,[["render",d],["__file","考研的相关总结.html.vue"]]);export{f as default}; diff --git "a/assets/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html-MtB-obDb.js" "b/assets/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html-MtB-obDb.js" new file mode 100644 index 00000000..67bd1ec7 --- /dev/null +++ "b/assets/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html-MtB-obDb.js" @@ -0,0 +1 @@ +const t=JSON.parse('{"key":"v-1985bd92","path":"/blog/%E8%80%83%E7%A0%94%E7%9A%84%E7%9B%B8%E5%85%B3%E6%80%BB%E7%BB%93.html","title":"考研的一些总结","lang":"zh-CN","frontmatter":{"date":"2020-11-07T13:39:46.000Z","updated":"2022-01-16T19:52:55.000Z","description":"考研的一些总结 引言 20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。 谈一谈这一年踩过的坑与心得。 就按照考试顺序吧。 政治 考研政治其实跟好肖秀荣就够了,我先列一下我的: 基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。","head":[["script",{"type":"text/javascript"},"var _hmt = _hmt || []"],["script",{"src":"https://hm.baidu.com/hm.js?5574297d56b065f5137cf3654e3de360"}],["script",{"src":"https://hm.baidu.com/hm.js?92a8f6d9fbb75efa90964afcd42be758"}],["meta",{"property":"og:url","content":"https://northword.cn/blog/%E8%80%83%E7%A0%94%E7%9A%84%E7%9B%B8%E5%85%B3%E6%80%BB%E7%BB%93.html"}],["meta",{"property":"og:site_name","content":"北辞"}],["meta",{"property":"og:title","content":"考研的一些总结"}],["meta",{"property":"og:description","content":"考研的一些总结 引言 20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。 谈一谈这一年踩过的坑与心得。 就按照考试顺序吧。 政治 考研政治其实跟好肖秀荣就够了,我先列一下我的: 基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。"}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://northword.cn/"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2023-01-14T09:26:57.000Z"}],["meta",{"name":"twitter:card","content":"summary_large_image"}],["meta",{"name":"twitter:image:alt","content":"考研的一些总结"}],["meta",{"property":"article:author","content":"Northword"}],["meta",{"property":"article:published_time","content":"2020-11-07T13:39:46.000Z"}],["meta",{"property":"article:modified_time","content":"2023-01-14T09:26:57.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"考研的一些总结\\",\\"image\\":[\\"https://northword.cn/\\"],\\"datePublished\\":\\"2020-11-07T13:39:46.000Z\\",\\"dateModified\\":\\"2023-01-14T09:26:57.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"Northword\\",\\"url\\":\\"https://northword.cn\\"}]}"]]},"headers":[{"level":2,"title":"引言","slug":"引言","link":"#引言","children":[]},{"level":2,"title":"政治","slug":"政治","link":"#政治","children":[]},{"level":2,"title":"数学","slug":"数学","link":"#数学","children":[]},{"level":2,"title":"英语","slug":"英语","link":"#英语","children":[]},{"level":2,"title":"专业课","slug":"专业课","link":"#专业课","children":[]},{"level":2,"title":"其他","slug":"其他","link":"#其他","children":[]}],"git":{"createdTime":1662963508000,"updatedTime":1673688417000,"contributors":[{"name":"Northword","email":"northword@outlook.com","commits":3}]},"readingTime":{"minutes":12.01,"words":3604},"filePathRelative":"blog/考研的相关总结.md","localizedDate":"2020年11月7日","excerpt":"

    考研的一些总结

    \\n

    引言

    \\n

    20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。

    \\n

    谈一谈这一年踩过的坑与心得。

    \\n

    就按照考试顺序吧。

    \\n

    政治

    \\n

    考研政治其实跟好肖秀荣就够了,我先列一下我的:

    \\n

    基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。

    ","autoDesc":true}');export{t as data}; diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 00000000..27592e67 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 博客 | 北辞 + + + + + + + + + diff --git "a/blog/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html" "b/blog/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html" new file mode 100644 index 00000000..f392a50c --- /dev/null +++ "b/blog/\344\270\200\345\217\260\346\226\260\347\224\265\350\204\221\347\232\204\350\207\252\346\210\221\344\277\256\345\205\273.html" @@ -0,0 +1,40 @@ + + + + + + + + + + 配置策划与记录 | 北辞 + + + + + +
    跳至主要內容

    配置策划与记录

    Northword大约 1 分钟

    配置策划与记录

    设置

    计划的目录划分

    • C:\
      • Program Files / x86
      • ProgramData
      • Windows
      • Users
    • D:\
      • Northword
      • Documents
      • Downloads
      • Music
      • Pictures
      • Videos
      • OneDrive
      • Working Assets
      • Program Files
      • Tools
      • Games
      • Backups
      • Fav / library / Other Assets
      • Temporary

    目录相关的

    • 显示隐藏文件夹、扩展名
    • 更改用户文件夹文档音乐等的路径
    • 配置Onedrive至D:/OneDrive
    • 创建库文件夹
      • Work Lib
        • D:\OneDrive\Postgraduate
        • D:\OneDrive\WorkFiles
        • D:\Working Assets
      • FileRecv Lib
        • D:\Downloads
        • D:\Documents\Tencent Files\910687889\FileRecv
        • D:\Documents\Virtual Machines\Shared folder
        • D:\Documents\WeChat Files\northword\Files

    软件

    默认分区两个,暂定一个系统与软件盘(100 G),一个数据盘(375 G)。

    应用商店

    • [x] SniPaste
    • [ ] ModernFlyouts
    • [ ] EarTrumpet
    • [ ] Eyepetizer
    • [ ] Picture Share
    • [ ] PPT模板大全
    • [ ] Windows Terminal
    • [x] 便笺
    • [ ] 有道词典

    C:\program files 常用软件和非专业软件

    • [x] 火绒
    • [x] Bandizip / 7-zip
    • [ ] PotPlayer
    • [ ] Firefox
    • [x] QTTabBar
    • [ ] EasyConnet
    • [ ] GitHub Desktop
    • [ ] Node.js
    • [ ] PyCharm
    • [ ] Python
    • [ ] TIM
    • [ ] 微信
    • [ ] 百度网盘
    • [ ] 智能互联
    • [ ] 看图王
    • [ ]

    D:\program files 专业软件和大型的软件

    • [ ] Adobe | PS、PR、AE、AU、AI、Acrobat、AME
    • [ ] AutoCAD
    • [ ] Materials Studio
    • [ ] CAJView
    • [ ] EndNote
    • [ ] SPSS
    • [ ] Origin
    • [ ] iMazing
    • [ ] MathType
    • [ ] MATLAB
    • [ ]
    • [ ] VMware
    • [ ] Xshell / XFTP / XManager

    D:\Tools 小工具和便携式软件

    • [ ] Typora
    • [ ] Anydesk / Todesk
    • [ ] Bandicam
    • [ ] Clash
    • [ ] Jellyfin
    • [ ] Listary
    • [ ] Everything
    • [ ] 小丸
    • [ ] keepass
    • [ ] npp
    • [ ] MICloud

    其他

    • spacedesk
    • 方方格子
    • Islide
    + + + diff --git "a/blog/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html" "b/blog/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html" new file mode 100644 index 00000000..8f845502 --- /dev/null +++ "b/blog/\350\200\203\347\240\224\347\232\204\347\233\270\345\205\263\346\200\273\347\273\223.html" @@ -0,0 +1,40 @@ + + + + + + + + + + 考研的一些总结 | 北辞 + + + + + +
    跳至主要內容

    考研的一些总结

    Northword大约 12 分钟

    考研的一些总结

    引言

    20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。

    谈一谈这一年踩过的坑与心得。

    就按照考试顺序吧。

    政治

    考研政治其实跟好肖秀荣就够了,我先列一下我的:

    基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。

    • 肖秀荣知识点精讲精练
    • 肖秀荣 1000 题
    • 徐涛的强化班视频

    **强化,9—11 月中旬。**主要是强化选择题。做 1000 题,至少至少两遍。做的时候记得按照线索归纳总结。这段时间肖秀荣知识点摘要和腿姐的背诵手册应该就发货了,参照着做选择题。如果有余力,背肖秀荣的考点预测。考研政治拉分就在选择上,尤其是多选,腿姐后面有个选择题技巧班,可以听。

    同时强烈建议能有一个 iPad,那样可以找到 1000 题电子版二刷三刷很方便,不仅是政治 1000 题,很多书都有电子版,那些并不会常看的,直接就在 pad 上浏览了。

    需要的话可以整理一个用乱七八糟的小方法提高效率的文档。

    • 腿姐考研政治真题(电子版)
    • 肖秀荣知识点摘要和腿姐背诵手册结合看
    • 肖秀荣考点预测

    **冲刺,11 月中旬—12 月考前一天。**11 月中旬发肖八,12 月中上旬发肖四。分析题把肖四背过,完完全全的背过,就足够了。(年年都有说肖秀荣没压住,今年不压了之类的,年年都是真香),分析题有个 bili UP 叫“空卡空卡空空卡”,会总结一些口诀辅助记忆,可以关注一下。小白考研的东西,怎么说呢,那就是分了下段,我看用的人不少,不过我习惯拿着答案了。还有个研木易木子,比较注重逻辑,就这三个结合着看吧。之后再搞一些其他的卷子做做选择就好。还要注意一点,不要贪多,到那时候肯定是卷子满天飞,谁谁都给你搞模拟题,谁谁都出压题课,技巧班的,记得抓住一个人的背好就够了,千万别被带歪了,重点是要记住,而不是看了课。

    注意:肖四肖八上的每一个选择题都要记住,肖四的每个分析题都要背了。

    • 肖秀荣八套卷
    • 肖秀荣最后四套卷
    • 腿姐四套卷
    • 腿姐的选择题技巧班

    这时候你们应该买好了政治资料了,要不然涨价涨的可是快了。当然双十一也可以。

    买的时候找好店铺,尤其是肖四,要不然别人都背了一页了,你的还没发回来。

    数学

    讲道理我数学可不好,我只瞎说。

    课本,1 月—3 月,基础不好的才有这一步,基础好的直接跳过,时间弹性调整。大三下开学前应该是要把高数上搞完的,下册其实无所谓。代数过不过课本也没啥,有余力看一看还是好的。我当时大三下开学时也并没有过完课本,只把高数上过到了不定积分,然后后面就随意看了看,没有很认真(这样是不对的)。

    image-20200520164428979
    image-20200520164428979

    **基础,3 月—6 月中旬,**这段时间就上基础班呗,然后做做习题集,边看边做题,比如 660、1000、1800,做一本就好。暑假前最好能完整上完基础班,或是跟视频课,或是看全书自学,总之高数+代数基础班知识点要完成。

    至于跟那个老师,这玩意看人,张宇、汤家凤、李永乐团队几个老师都听一听,觉得哪个适合自己跟哪个。高数就不说了,我是真没意见。至于代数,就老老实实跟李永乐吧,线代王不是吹出来的。李永乐基础班讲义是《复习全书 基础篇 第二篇》,注意是基础篇,不是数二版,这俩差别还是蛮大的,基础班是给寒假提前开始学数学的人准备的,内容相对少、简单,数二版是给自学的人准备的。没必要买这本书,找找电子版打印一下就好,没几页。强化班用的《线性代数辅导讲义》。个人觉得,基础阶段就把讲义做会,660 上线代做一做,强化阶段讲义上题就不少,做会他,再折回去看看 660。

    **强化,6 月中旬—9 月,**这段时间暑假嘛,所谓强化班就把知识点串起来了,习题也更难一些。19 年张宇的体系强化班讲义是闭关修炼,6 月 19 号发到的。也临近期末,就先折腾期末考试吧,但是别折腾几天考试把知识点忘完了就行。

    9 月前,结束强化课和习题集。习题集应该两边以上吧,一遍记不住哇。

    **真题,9 月中旬—11 月下旬,**看个人情况决定要做几年真题,16、18 好像比较难,甚至空过去都可以,做这两年的着实打击人,当然,数学好的就忽略这句话。按年份按篇章都可以,看人。我是 9.11 开始的第一道真题。真题买张宇真题大全解就好,感觉这本的质量比较高(排版和解析方法)。

    **模拟题,11 月下旬—12 月,**要是真题做的慢,这一步都会被直接略掉[/捂脸],张宇八套卷四套卷难难的,反正我是没做几份模拟题,压根没想拿高分,过线就行— —。李林四套卷是蛮简单的其实,不过冲着押题去找李林还是算辽。

    英语

    首先要评估自己的英语情况,觉得基础不太行,比如会说出“you is a pig”的人,那还是趁早去打基础的好。

    把英语分为词汇、长难句、阅读、翻译、作文五个阶段。

    词汇,某乎和一些考研老师一直宣称要把单词背几遍几遍云云,其实真能背完的还真不多,我就只背了 2k 左右,并且我没有用词汇书,就用墨墨直接背。墨墨会把你不会的单词疯狂出现,一直记不住的甚至一个多月天天出现,想不记住都有些难。背单词这个因人而异,用了墨墨后,我是第一次觉得我真的记住了单词,大概我适合这种方式,所以就一直用下来了。也有人习惯用单词书,一遍一遍快速过。总之尽可能把单词背完,最少最少最少也要把高中频单词记住!开始真题后,真题上的单词必须必须必须记住!

    有几个墨墨使用上的小提示:

    • 多设备同步学习需要再 A 设备备份后,再在 B 设备还原,才能同步学习记录。
    • 墨墨收费,但是能确保没天都打卡的话,其实打卡送的额度是够用的。不够就买嘛,50 块 4400 个单词。不太建议用破解版。
    • 你可以创建自己的词库,这对做真题时很有用,做一份题,把生词加入自己的词库,把这些单词加入学习计划,确保能记住。

    长难句和语法,基础不好的可以跟新东方田静,讲解很基础了(甚至我觉得有点简单都没看完[/捂脸]),配套书是《句句真研》。基础好的可以直接上阅读。英二甚至可以不学语法,当然最终以自己实际情况决定。

    真题,首推张剑黄皮书,讲解很细致很全,看了看黄皮书的答案解析,再回去看看四六级(我当时报的考虫)以及以前学英语的答案,简直就是** — —。

    阅读,可以跟唐迟,但是建议找旧版本视频,比如 18 年的还可以接受。反正我觉得 20 的不好,方法就是那些,变化也不大,最终还是得看自己练习。20 年的直播课经常拖堂,拖堂又不是讲的东西多了,大多是他讲的慢或者讲其他的搞的,一拖半小时的,完了还美名对学生负责,无偿加课时。——喵喵喵?没有能力控制自己的讲解节奏,导致课时安排出错,学生后续计划被推迟,难道不是作为一个老师的失败么?怎么还光荣起来了?? 不过之前的课在新东方录的非直播课还可以。另,不要做模拟题,至少考前一个月内你得用真题适应风格。

    翻译,新东方唐静。其实我觉得对于英二,这一块没哈必要看哈,有点...简单?英一倒是可以看看,这老师挺实在的。

    新题型,英二没必要看,过于简单,看的话唐迟有一节课,随意看看就行,英二新题型错一个都是罪过。英一的不太容易,但是我不知道怎么办。

    作文,我是背作文的支持者。我相信有输入才有输出。王江涛作文那些背一背,他基础阶段给 20 篇,强化阶段给 20 篇,不用全背,他要求背 20 篇,我觉得 10 篇左右就可(主要是我记不住了/哭),重点是要背熟,绝对的熟,能随口说出来组织出来一句话的那种,就像以前背课文第一句话那种的熟练程度。然后默写,很流利不用停笔想还能无错误的那种程度。他有几节课?可以看看,对了解作文结构、改模板还有些帮助。之后再找模板(对的,还是得要模板),不过是自己改模板了,我去年用的见山英二模板,但是几乎完全替换了首段和部分中间段落。(模板考前一个月完成就足够)。考前那段时间会有好多所谓押题预测,完全不需要理会,压住就扯淡,自己在公众号上发个百八十篇的,还只压住了个话题,那 tm 谁不会,我都能自称考研英语名师。

    有人说背作文没用,说根本写不出来,还不如记模板。——背的作文质量太差,或背的不熟。

    还有说都背王江涛的,全是重复的。——这随意咯,反正背的人看起来不少,这能写出来的却并不多。

    完形填空,这道题很多人都没时间做的。我推荐新东方易熙人。说实在的,好多老师吹的什么高频词红花词绿叶词虚词高频 balabala 的,基本没用,几十年考研英语他也就能给你挑出来那么几个特例,往那儿一摆,学生一看,“哇!好厉害!”,等他真的自己做的时候就憨了。说到底还是得实打实的搞他。易熙人也搞那一套,不过并不强调,也就随口一提。起码我后期跟的几篇完形填空真题讲解质量还不错。

    这些老师大多都有基础课和强化课,其实讲的内容差不了多少,自己感觉一两个视频看需不需要听就好。反正,所有的科目都是:少看视频多做题。

    阅读和完形,第一次做大概都会错很多,无所谓,按部就班学就好,千万别慌,一慌就到处换老师[/捂脸]

    专业课

    第一遍不要只看,要背!

    第一遍不要只看,要背!

    第一遍不要只看,要背!

    你会发现不背只看,看一遍再回头看以及全忘完了[/捂脸]

    暑假期间应该开始专业课学习。

    其他

    千万别忽视政治和英语,虽然有人说英语决定能不能上,数学决定能上的上限,但是我这次却是政治和英语提了不少分才勉强有机会。

    找学校千万别只看最低录取线,至少看到中间去。

    确定了目标就努力努力努力,不要害怕,不要放弃,管他能不能考上?学就 vans 了。

    整个考研期间,你 可能 会经历数次心态崩溃,我们这一届好几个女生都学着学着就崩溃了,这很正常,调整过来继续学就好,如果,你有崩溃的时候,只需要明白,这是正常现象,坚持学下去就好。我们年级崩溃过好几次的几位,浙大、厦大、中海洋,都录取了。

    淘宝有 A4 大小的线环网格笔记本,我 jio 得还挺好用。image-20200520195827330

    草稿纸可以直接淘宝买 A4 纸,十块左右一沓,一年都用不完。

    打印大量且不着急可以直接淘宝,便宜得多。

    临近考试可以买答题纸模拟,淘宝就有,一般情况下,数学英语各十张足够了。政治和专业课答题纸都是空白的,要是写不齐,可以用打格尺。

    做笔记要贴的话纸胶带是个不错的选择。

    英语字体可以练练。

    学的时候就认真学,一下手机都不要碰!

    一定选好学校,有时候,考得好不如选的好。考研是场信息不对称的考试,有时候信息比你的努力更重要。

    及时回顾已经学过的,要不然忘完了。


    + + + diff --git a/category/index.html b/category/index.html new file mode 100644 index 00000000..191939ea --- /dev/null +++ b/category/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 分类 | 北辞 + + + + + + + + + diff --git a/category/install/index.html b/category/install/index.html new file mode 100644 index 00000000..6f29716d --- /dev/null +++ b/category/install/index.html @@ -0,0 +1,103 @@ + + + + + + + + + + Install 分类 | 北辞 + + + + + +
    跳至主要內容
    为 linux 非 ROOT 用户安装 lrzsz

    为 linux 非 ROOT 用户安装 lrzsz

    +

    lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rzsz 命令进行上传和下载。

    +

    如果拥有 ROOT 权限,可以直接执行下述代码安装:

    +
    yum -y install lrzsz
    +

    Northword小于 1 分钟Install
    编译 VASP with VTST

    编译 VASP with VTST

    +

    准备源码

    +

    VASP 源码目录结构

    +
    $ more README
    +           vasp.X.X.X (root directory)
    +                      |
    +   ---------------------------------------
    +  |              |          |             |
    + arch           bin       build          src
    +                                          |
    +                                     ----------
    +                                    |          |
    +                                   lib       CUDA
    +

    Northword大约 3 分钟Install安装
    Windows 平台的部分软件安装

    Windows 平台的部分软件安装

    +

    由于安装过于简单,故只对部分关键步骤做说明。

    +

    Materials Studio 激活

    +

    安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \Program Files (x86)\BIOVIA\LicensePack\Licenses

    +
    image-20210913190855840
    +

    然后启动授权管理器:

    +
    image-20210913190616258

    Northword小于 1 分钟Install
    linux 编译 gnuplot

    使用默认 GCC 编译 gnuplot

    +

    无需,学校已安装。

    +
    cd /tmp
    +wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz
    +tar xzvf gnuplot-5.2.5.tar.gz 
    +cd gnuplot-5.2.5/
    +./configure --prefix=/public/home/zjb/app/gunplot/
    +make & make install
    +

    Northword小于 1 分钟Install
    Linux 下无 Root 权限编译软件

    Linux 下无 Root 权限编译软件

    +

    参考:linux 非 root 用户安装软件入门 | tlanyan.me .

    +

    下为上文的备份。

    +
    +

    下面是 Linux 下非 root 用户安装软件的一般流程:

    +
      +
    1. 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码;
    2. +
    3. 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz
    4. +
    5. 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置;
    6. +
    7. 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟);
    8. +
    9. 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中;
    10. +
    11. 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。
    12. +

    Northword大约 6 分钟Installlinux
    linux 编译 py3

    为学校的 linux 安装 python3

    +

    由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。

    +

    步骤放在最前面

    +

    升级 OPENSSL

    +
    cd /tmp
    +wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    +tar -xvf openssl-1.1.1d.tar.gz
    +cd openssl-1.1.1d
    +./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib  #注意添加no-zlib
    +make && make install
    +

    Northword大约 4 分钟Install
    配置 VTST 的脚本

    配置 VTST 的脚本

    +

    下载

    +
    cd ~/app
    +wget http://theory.cm.utexas.edu/code/vtstscripts.tgz
    +

    Northword小于 1 分钟Install
    安装 ASE

    安装 ASE

    +

    总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。

    +

    Requirements

    +

    最新版本的 ase 需要的环境条件 [1]


    Northword大约 3 分钟Install
    + + + diff --git a/category/linux/index.html b/category/linux/index.html new file mode 100644 index 00000000..46a68fd5 --- /dev/null +++ b/category/linux/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + Linux 分类 | 北辞 + + + + + +
    跳至主要內容
    lrzsz 的使用方法

    lrzsz 的使用方法

    +

    上传下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此,

    +

    sz:让服务器将选定的文件发送(send)到本地

    +

    rz:让服务器接收 (receive) 在本地选择的文件

    +

    上传(rz)

    +

    方法 1:拖拽


    Northword大约 2 分钟Linux
    19.linux-bashrc-VS-bash_profile

    19.linux-bashrc-VS-bash_profile

    +

    环境变量

    +

    自定义命令提示符

    +

    通过修改 PS1 变量实现:

    +
     \u 显示当前用户账号
    + \v BASH的版本信息
    + 
    + \H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound
    + \h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun
    + 
    + \W 只显示当前路径最后一个目录
    + \w 显示当前绝对路径(当前用户目录会以 ~代替)
    + 
    + \t 显示时间为24小时格式,如:14:19:34
    + \T 显示时间为12小时格式,如:02:19:34
    + \A 显示时间为24小时格式但是不带秒,如:14:19
    + \d 代表日期,格式为weekday month date,例如:"Mon Aug1"
    + 
    + $PWD 显示当前全路径
    + # 显示命令行提示符号,一般使用'$'或者'#'
    + sudo echo "export PS1='[\u@\h \w]# '" >> /etc/profile
    + # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\w
    +

    Northword大约 3 分钟Linux
    Linux 常用命令

    Linux 常用命令

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    命令说明
    cd切换目录
    ls列出文件和目录
    ll同上
    mkdir新建文件夹
    cp复制
    mv移动
    rm删除文件
    rmdir删除目录
    pwd当前目录
    cat查看文件全文
    tail预览文件后几行
    tar压缩/解压缩

    Northword大约 13 分钟Linux
    vi / vim 编辑器

    vi / vim 编辑器

    +

    vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程 吧。

    +

    三种模式

    +
    img
    +

    基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:


    Northword大约 8 分钟Linux
    PBS

    PBS

    +

    作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。

    +

    PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。

    +

    PBS 命令

    +

    提交作业

    +

    用以下命令提交作业:

    +
    qsub [options] <control script>
    +

    Northword大约 8 分钟Linux
    + + + diff --git a/category/materials-studio/index.html b/category/materials-studio/index.html new file mode 100644 index 00000000..05463e25 --- /dev/null +++ b/category/materials-studio/index.html @@ -0,0 +1,108 @@ + + + + + + + + + + Materials-Studio 分类 | 北辞 + + + + + +
    跳至主要內容
    建模中的一些小疑惑

    一些乱七八糟的为什么

    +

    为什么要建立超胞?

    +
      +
    1. 避免周期性镜像间的互相影响
    2. +
    3. 考虑多分⼦吸附时的多种构象
    4. +
    +
    +

    如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么?

    +

    我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢?

    +

    (1)掺杂问题

    +

    1)建立超胞是为了获得合适的掺杂浓度;

    +

    2)清晰地分成置换固溶体或间隙固溶体

    +

    (2)表面吸附问题

    +

    1)可以模拟不同晶向的吸附密度;

    +

    2)要避免吸附的气体分子和镜像分子间有作用;

    +

    https://www.zhihu.com/question/282248524

    +

    Northword大约 2 分钟Materials-Studio
    Materials Studio

    Materials Studio

    +

    懒得写了的

    +

    建模

    +

    问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体?

    +

    答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。


    Northword大约 3 分钟Materials-Studio
    作业:CO吸附在Au上建模

    作业:CO吸附在Au上建模

    +

    任务:建立CO在Au 111 晶面的吸附模型

    +

    步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。

    +

    结果:

    +
    Model of CO adsorption on Au
    +

    Northword小于 1 分钟Materials-Studio
    作业:矩形石墨烯建模

    作业:矩形石墨烯建模

    +

    任务

    +

    建立矩形的石墨烯模型

    +

    步骤

    +
      +
    1. +

      导入石墨烯结构

      +

      import - Structures\ceramics\graphite.msi

      +
    2. +
    3. +

      Make P1 降低对成性

      +

      Build -> Symmetry -> Make P1,

      +

      删掉一层C原子层

      +
    4. +
    5. +

      切面

      +

      Build -> Surfaces -> Cleave Surface

      +

      Surface Box - Cleave plane: 001

      +

      Surface Mesh - Surface vectors - U: 210

      +
    6. +
    7. +

      超胞

      +

      Build -> Symmetry -> Supercell

      +

      Supercell range A=3, B=5 (60 C atoms)

      +
    8. +
    9. +

      真空层

      +

      Build -> Crystals -> Build Vacuum Slab

      +

      Vacuum orientation: C

      +

      Vacuum thickness: 20 Å

      +
    10. +
    11. +

      将原子层移动到Z方向中部(只是看起来方便)

      +
    12. +
    13. +

      Display style -> Lattice -> display style -> style -> In cell

      +
    14. +
    15. +

      修改背景、标尺、晶格的颜色等

      +
    16. +
    17. +

      Save and Print to PDF

      +
    18. +

    Northword小于 1 分钟Materials-Studio
    + + + diff --git a/category/other-app/index.html b/category/other-app/index.html new file mode 100644 index 00000000..c5c14e5d --- /dev/null +++ b/category/other-app/index.html @@ -0,0 +1,42 @@ + + + + + + + + + + Other App 分类 | 北辞 + + + + + + + + + diff --git a/category/others/index.html b/category/others/index.html new file mode 100644 index 00000000..a23b61e9 --- /dev/null +++ b/category/others/index.html @@ -0,0 +1,66 @@ + + + + + + + + + + Others 分类 | 北辞 + + + + + +
    跳至主要內容
    on-the-end

    呼呼哈嘿

    +

    啊这,我还没写完...

    +

    还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~

    +
    +

    本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233

    +

    Northword小于 1 分钟Others
    numpy 在 win2004 及以上报错

    在 Windows 20H2 上运行 ASE 报错

    +
     ase --version
    + ** On entry to DGEBAL parameter number  3 had an illegal value
    + ** On entry to DGEHRD  parameter number  2 had an illegal value
    + ** On entry to DORGHR DORGQR parameter number  2 had an illegal value
    + ** On entry to DHSEQR parameter number  4 had an illegal value
    +Traceback (most recent call last):
    +  File "c:\users\northword\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    +    return _run_code(code, main_globals, None,
    +  File "c:\users\northword\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    +    exec(code, run_globals)
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\Scripts\ase.exe\__main__.py", line 4, in <module>
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\site-packages\ase\__init__.py", line 8, in <module>
    +    import numpy as np
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\site-packages\numpy\__init__.py", line 305, in <module>
    +    _win_os_check()
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\site-packages\numpy\__init__.py", line 302, in _win_os_check
    +    raise RuntimeError(msg.format(__file__)) from None
    +RuntimeError: The current Numpy installation ('C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86
    +

    Northword大约 1 分钟Others
    + + + diff --git a/category/theory/index.html b/category/theory/index.html new file mode 100644 index 00000000..c617b586 --- /dev/null +++ b/category/theory/index.html @@ -0,0 +1,48 @@ + + + + + + + + + + Theory 分类 | 北辞 + + + + + +
    跳至主要內容
    + + + diff --git a/category/vasp/index.html b/category/vasp/index.html new file mode 100644 index 00000000..904ef0b1 --- /dev/null +++ b/category/vasp/index.html @@ -0,0 +1,154 @@ + + + + + + + + + + VASP 分类 | 北辞 + + + + + +
    跳至主要內容
    表面能的计算

    表面能计算

    +

    定义

    +

    表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。


    Northword大约 4 分钟VASP优化
    DFT+U
    DFT+U Calculation
    + LDAU   = .TRUE.        (启用 DFT+U)
    + LDATYPE=  2            (+U的类型)
    + LDAUL  =  2 -1         (Orbitals for each species)
    + LDAUU  =  3.5  0       (U for each species)
    + LDAUJ  =  0  0         (J for each species)
    + LMAXMIX=  4            (Mixing cut-off; 4-d, 6-f)
    +

    Northword小于 1 分钟VASP优化
    吸附能的计算

    吸附能的计算

    +
    +

    Todo

    +
    +

    影响因素

    +

    slab 模型在 Z 方向

    +
      +
    • slab 的厚度
    • +
    • 真空层厚度
    • +
    +

    一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。

    +

    slab 模型在 XY 方向

    +
      +
    • 表面大小:影响覆盖度,计算的工作量。
    • +
    • 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。
    • +
    • 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等
    • +

    Northword大约 1 分钟VASP优化
    Bader 电荷分析

    Bader 电荷分析

    +
    +

    Todo

    +
    +

    理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。


    Northword大约 2 分钟VASP电子结构
    频率分析

    频率分析

    +
    +

    Todo.... 频率分析是个啥,理论知识...

    +
    +

    频率分析作用

    +
      +
    1. +

      确定结构是否稳定;

      +
    2. +
    3. +

      看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;

      +
    4. +
    5. +

      反应热,反应能垒,吸附能等的零点能矫正;

      +
    6. +
    7. +

      确认过渡态(有一个振动的虚频)

      +
    8. +
    9. +

      热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

      +
    10. +

    Northword大约 8 分钟VASP反应路径
    自旋电荷密度

    自旋电荷密度

    +

    本页以 O2 的自选电荷密度为例。

    +

    步骤

    +

    本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。

    +

    2-scf/ 文件夹中进行。

    +

    有两种方法获得其自旋电荷密度:

    +

    方法 1:通过 VTST 脚本

    +
    # Usage
    +$ chgsplit.pl <CHGCAR>
    +
    +# This example
    +[zjb@op 2-scf]$ chgsplit.pl CHGCAR
    +Atoms in file: 2
    +Points in total charge density: 1200000
    +Points in magnetization density: 1200000
    +

    Northword小于 1 分钟VASP电子结构
    分子动力学

    分子动力学入门

    +

    课上:八个水分子为例的分子动力学。

    +

    分子动力学

    +

    步骤

    +

    建模

    +

    在 MS 中建立模型,上传,vaspkit-106。

    +

    结构优化

    +

    INCAR 为:

    +
    详情 +
    [zjb@op geo2]$ cat INCAR 
    +Global Parameters
    + ISTART =  0            (Read existing wavefunction; if there)
    +# ISPIN =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .FALSE.        (Write WAVECAR or not)
    + LCHARG = .FALSE.        (Write CHGCAR or not)
    + NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    + ALGO   = Fast
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +EDIFF  =  1E-04        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +POTIM  =  0.3
    +#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -1E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +
    +

    Northword大约 1 分钟VASP分子动力学
    VASP

    VASP

    +

    VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。

    +

    vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。

    +

    因此我们需要区分开 VASPVASPKITVASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。


    Northword大约 1 分钟VASP
    + + + diff --git "a/category/\344\274\230\345\214\226/index.html" "b/category/\344\274\230\345\214\226/index.html" new file mode 100644 index 00000000..caa72145 --- /dev/null +++ "b/category/\344\274\230\345\214\226/index.html" @@ -0,0 +1,72 @@ + + + + + + + + + + 优化 分类 | 北辞 + + + + + +
    跳至主要內容
    表面能的计算

    表面能计算

    +

    定义

    +

    表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。


    Northword大约 4 分钟VASP优化
    DFT+U
    DFT+U Calculation
    + LDAU   = .TRUE.        (启用 DFT+U)
    + LDATYPE=  2            (+U的类型)
    + LDAUL  =  2 -1         (Orbitals for each species)
    + LDAUU  =  3.5  0       (U for each species)
    + LDAUJ  =  0  0         (J for each species)
    + LMAXMIX=  4            (Mixing cut-off; 4-d, 6-f)
    +

    Northword小于 1 分钟VASP优化
    吸附能的计算

    吸附能的计算

    +
    +

    Todo

    +
    +

    影响因素

    +

    slab 模型在 Z 方向

    +
      +
    • slab 的厚度
    • +
    • 真空层厚度
    • +
    +

    一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。

    +

    slab 模型在 XY 方向

    +
      +
    • 表面大小:影响覆盖度,计算的工作量。
    • +
    • 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。
    • +
    • 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等
    • +

    Northword大约 1 分钟VASP优化
    + + + diff --git "a/category/\345\210\206\345\255\220\345\212\250\345\212\233\345\255\246/index.html" "b/category/\345\210\206\345\255\220\345\212\250\345\212\233\345\255\246/index.html" new file mode 100644 index 00000000..c8905faf --- /dev/null +++ "b/category/\345\210\206\345\255\220\345\212\250\345\212\233\345\255\246/index.html" @@ -0,0 +1,75 @@ + + + + + + + + + + 分子动力学 分类 | 北辞 + + + + + +
    跳至主要內容
    分子动力学

    分子动力学入门

    +

    课上:八个水分子为例的分子动力学。

    +

    分子动力学

    +

    步骤

    +

    建模

    +

    在 MS 中建立模型,上传,vaspkit-106。

    +

    结构优化

    +

    INCAR 为:

    +
    详情 +
    [zjb@op geo2]$ cat INCAR 
    +Global Parameters
    + ISTART =  0            (Read existing wavefunction; if there)
    +# ISPIN =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .FALSE.        (Write WAVECAR or not)
    + LCHARG = .FALSE.        (Write CHGCAR or not)
    + NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    + ALGO   = Fast
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +EDIFF  =  1E-04        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +POTIM  =  0.3
    +#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -1E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +
    +

    Northword大约 1 分钟VASP分子动力学
    + + + diff --git "a/category/\345\217\215\345\272\224\350\267\257\345\276\204/index.html" "b/category/\345\217\215\345\272\224\350\267\257\345\276\204/index.html" new file mode 100644 index 00000000..e62b4423 --- /dev/null +++ "b/category/\345\217\215\345\272\224\350\267\257\345\276\204/index.html" @@ -0,0 +1,65 @@ + + + + + + + + + + 反应路径 分类 | 北辞 + + + + + +
    跳至主要內容
    频率分析

    频率分析

    +
    +

    Todo.... 频率分析是个啥,理论知识...

    +
    +

    频率分析作用

    +
      +
    1. +

      确定结构是否稳定;

      +
    2. +
    3. +

      看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;

      +
    4. +
    5. +

      反应热,反应能垒,吸附能等的零点能矫正;

      +
    6. +
    7. +

      确认过渡态(有一个振动的虚频)

      +
    8. +
    9. +

      热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

      +
    10. +

    Northword大约 8 分钟VASP反应路径
    + + + diff --git "a/category/\345\256\211\350\243\205/index.html" "b/category/\345\256\211\350\243\205/index.html" new file mode 100644 index 00000000..d40f40cd --- /dev/null +++ "b/category/\345\256\211\350\243\205/index.html" @@ -0,0 +1,53 @@ + + + + + + + + + + 安装 分类 | 北辞 + + + + + +
    跳至主要內容
    编译 VASP with VTST

    编译 VASP with VTST

    +

    准备源码

    +

    VASP 源码目录结构

    +
    $ more README
    +           vasp.X.X.X (root directory)
    +                      |
    +   ---------------------------------------
    +  |              |          |             |
    + arch           bin       build          src
    +                                          |
    +                                     ----------
    +                                    |          |
    +                                   lib       CUDA
    +

    Northword大约 3 分钟Install安装
    + + + diff --git "a/category/\347\224\265\345\255\220\347\273\223\346\236\204/index.html" "b/category/\347\224\265\345\255\220\347\273\223\346\236\204/index.html" new file mode 100644 index 00000000..288f3fab --- /dev/null +++ "b/category/\347\224\265\345\255\220\347\273\223\346\236\204/index.html" @@ -0,0 +1,59 @@ + + + + + + + + + + 电子结构 分类 | 北辞 + + + + + +
    跳至主要內容
    Bader 电荷分析

    Bader 电荷分析

    +
    +

    Todo

    +
    +

    理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。


    Northword大约 2 分钟VASP电子结构
    自旋电荷密度

    自旋电荷密度

    +

    本页以 O2 的自选电荷密度为例。

    +

    步骤

    +

    本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。

    +

    2-scf/ 文件夹中进行。

    +

    有两种方法获得其自旋电荷密度:

    +

    方法 1:通过 VTST 脚本

    +
    # Usage
    +$ chgsplit.pl <CHGCAR>
    +
    +# This example
    +[zjb@op 2-scf]$ chgsplit.pl CHGCAR
    +Atoms in file: 2
    +Points in total charge density: 1200000
    +Points in magnetization density: 1200000
    +

    Northword小于 1 分钟VASP电子结构
    + + + diff --git a/characterization/index.html b/characterization/index.html new file mode 100644 index 00000000..049a00fd --- /dev/null +++ b/characterization/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 材料表征 | 北辞 + + + + + + + + + diff --git a/characterization/raman/index.html b/characterization/raman/index.html new file mode 100644 index 00000000..8c3bb099 --- /dev/null +++ b/characterization/raman/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Raman | 北辞 + + + + + +
    跳至主要內容

    Raman

    Northword小于 1 分钟

    Raman

    波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm1cm^{-1})。

    1 厘米内的周波数少了,当然是每个周波的长度增加了,即向长波方向移动了(红移)。反之就是蓝移了。

    偏移:

    • 高波数 -> 蓝移
    • 低波数 -> 红移
    + + + diff --git a/characterization/sem/index.html b/characterization/sem/index.html new file mode 100644 index 00000000..e0a950fa --- /dev/null +++ b/characterization/sem/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + SEM | 北辞 + + + + + + + + + diff --git a/characterization/x-ray-absorption.html b/characterization/x-ray-absorption.html new file mode 100644 index 00000000..2f31fd88 --- /dev/null +++ b/characterization/x-ray-absorption.html @@ -0,0 +1,40 @@ + + + + + + + + + + X 射线吸收谱 | 北辞 + + + + + +
    跳至主要內容

    X 射线吸收谱

    Northword大约 6 分钟

    X 射线吸收谱

    download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)open in new window

    撰文:LY & CWX   编辑:DJ

    前言:

    随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。

    目前,在大陆布局的同步辐射光源装置主要有 北京同步辐射装置(BSRF,第一代光源)、中国科学技术大学里的 合肥国家同步辐射国家实验室(NSRL,第二代光源)、以及 上海光源(SSRF,第三代光源),对国内众多基础科学的研究发挥了重要支撑作用。

    而上海光源二期工程的开展,规划中的北京先进光源(高能光源)以及各能量段的自由电子激光(FEL)装置(包括极紫外区 - 大连、软 X 射线区 - 上海、硬 X- 射线区 - 地点待定,FEL 被认为是第四代光源)的建设极有可能在未来数年内建成也必将极大的推动国内 X 射线吸收谱的发展掀起新一轮 XAS 应用高潮,为前沿基础科学、高技术研究提供不可或缺的手段。(高能同步辐射光源、硬 X 射线自由电子激光装置已列入 2017 年发布的《国家重大科技基础设施建设“十三五”规划》,属于优先布局的十个重大科技基础设施建设项目。)

    图 1. 同步辐射装置的发展(图片来源:Science, 2011, 334, 1234-1239.)

    一直以来,XAFS 都是基于同步辐射的各种表征手段中应用范围最广泛的技术之一。小编将分几期内容来跟大家简单介绍一些 XAS 以及同步辐射的基本知识,希望对大家看文献与做研究有所帮助。今天是第一期,我们先给大家一个初步的吸收谱的印象。

    A.  什么是****X 射线?

    图 2.波长与能量的关系

    X 射线又称伦琴射线,是一种波长介于紫外线与γ射线之间的电磁波,波长约为 0.01~10nm,其能量范围为 100 eV-100 keV。X 射线根据其能量高低可以分为 硬****X 射线和软 X 射线。能量为 1-10 keV,波长为 0.2-0.1 nm 以下的称之为硬 X 射线,波长大于 0.1 nm 则称之为软 X 射线(X- 射线的软硬之分并没有严格界限)。

    硬****X 射线能量高,穿透能力强,波长与原子半径相当,基于硬 X 射线的表征方法(如衍射、散射、吸收等)已被广泛应用于物质原子结构分析中。而软 X 射线,能量较低,对样品辐射损伤相对较小(但容易被空气或水吸收而发生衰减),在电子结构分析、物质成像研究中发挥着重要作用。

    图 3.X- 射线和物质的相互作用(图片来源:BSRF 的 XAS 讲习班)

    B.    什么是****X 射线吸收光谱(XAS)?什么是吸收边?

    当 X 射线穿过样品时,由于样品对 X 射线的吸收,光的强度会发生衰减,这种衰减与样品的组成及结构密切相关。X 射线吸收光谱就是利用 X 射线入射前后信号变化来分析材料元素组成,电子态及微观结构等信息的光谱学手段。XAS 方法通常具有元素分辨性,几乎对所有原子都具有相应性,对固体(晶体或非晶)、液体、气体等各类样品都可以进行相关测试

    以透射模式为例,大家可以简单类比成我们熟悉的紫外可见吸收光谱。

    图 4. 物质对 X 射线的吸收

    入射光 I 与出射光 I0 的强度遵从朗伯比尔定律:

    吸收系数μ 表征 X 射线被样品吸收的概率,μ与样品的密度(ρ),元素的原子序数(Z)有关,而 t 为样品厚度。而最为重要的是,μ对 X 射线能量(E)也是敏感的:

    思考:为什么 XAS 要采用同步辐射光源? 什么是吸收边?

    当 X 射线能量等于被照射样品某内层电子的电离能时,会发生共振吸收,使电子电离为光电子,而 X 射线吸收系数发生突变,这种突跃称之为吸收边(Edge)。原子中不同主量子数的电子的吸收边相距颇远,按主量子数命名为 K、L……吸收边等。注意:每一种元素都有其特征的吸收边系,因此 XAS 可以用于元素的定性分析。此外,吸收边的位置与元素的价态相关,氧化价增加,吸收边会向高能侧移动(一般化学价 +1,吸收边移动 2-3 eV),因此同种元素,化合价不同也识可以分辨出来。

    图 5.能级与吸收边

    普通化学知识补充:原子外层电子根据排布轨道的不同,不同主量子数对应的轨道依为:主量子数(n)1 2 3 4 5 6 7 电子层符号   K L M N O P Q

    C.    什么是****X 射线吸收精细结构(X-ray Absorption Fine Structure)?

    人们发现,X 射线吸收光谱在吸收边附近及其高能量端存在一些分立的峰或波状起伏,称为精细结构。如下图所示:

    图 6.XANES 和 EXAFS 的划分

    精细结构从吸收边前至高能延伸段约 1000eV, 根据其形成机制(多重散射与单次散射)的不同,可以分为 XANES 和 EXAFS(两者并无严格界限):

    • XANES (X 射线吸收近边结构,X-ray Absorption Near Edge Structure),对于软线 XAS 谱而言通常也被称作 NEXAFS(Near-Edge X-ray Absorption Fine Structure)

      • 范围:吸收边前 - 吸收边后 50eV,
      • 特点: 振荡剧烈(吸收信号清晰,易于测量);谱采集时间短,适合于时间分辨实验;对价态、未占据电子态和电荷转移等化学信息敏感;对温度依懒性很弱,可用于高温原位化学实验;具有简单的“指纹效应”,可快速鉴别元素的化学种类。
    • EXAFS (扩展 X 射线吸收精细结构谱, Extend X-ray Absorption Fine Structure )

      • 范围:吸收边后 50eV - 1000eV,
      • 特点: 可以得到中心原子与配位原子的键长、配位数、无序度等信息。不过,EXAFS 对立体结构并不敏感。
    + + + diff --git a/characterization/xrd/index.html b/characterization/xrd/index.html new file mode 100644 index 00000000..99041d14 --- /dev/null +++ b/characterization/xrd/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + XRD | 北辞 + + + + + + + + + diff --git a/code/Linux/index.html b/code/Linux/index.html new file mode 100644 index 00000000..99dacd17 --- /dev/null +++ b/code/Linux/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Linux | 北辞 + + + + + + + + + diff --git a/code/bash-for-windows/index.html b/code/bash-for-windows/index.html new file mode 100644 index 00000000..cb9d34ef --- /dev/null +++ b/code/bash-for-windows/index.html @@ -0,0 +1,110 @@ + + + + + + + + + + 在 Windows 中使用 Bash shell | 北辞 + + + + + +
    跳至主要內容

    在 Windows 中使用 Bash shell

    Northword大约 8 分钟

    在 Windows 中使用 Bash shell

    概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率
    本文语雀地址:https://www.yuque.com/achuan-2/blog/eu4rbzopen in new window
    本文博客地址:https://achuan-2.github.io/posts/be43.htmlopen in new window source: https://zhuanlan.zhihu.com/p/418321777open in new window

    前排介绍

    • Git bash 是什么?
    • Git Bash 源自 MinGW, 是一个用于开发原生 Window 应用的开发环境, 提供了针对 WIn32 应用的 GCC、GNU binutils 等工具.
    • 为什么要用 Git Bash?
    • Windows 下的 Powershell 并不好用,或者说我并不知道如何使用。既然相较之下,更熟悉 Linux 命令行,就干脆把 Git Bash 当作默认终端了。Git Bash 自带 Vim,还集成了许多 Linux 命令,对我来说更加顺手

    0 准备工作

    Windows 下载地址:Git for Windowsopen in new window

    安装教程随便网上找一篇就好了,不多说

    1 设置为默认终端

    1. Windows Terminal 配置 Git bash 为默认终端
    2. VSCode 配置 Git bash 为默认终端

    1.1 Windows Terminal 配置 Git bash 为默认终端

    现在 Windows Terminal 有了图形界面,直接选择就好

    具体 json 文件配置

    "defaultProfile": "{c891c3d2-b798-4857-83c0-89bf2ea34021}",
    +    "profiles": 
    +    {
    +        "defaults": 
    +        {
    +            ...
    +        },
    +        "list": 
    +        [
    +            {
    +                "commandline": "D:\\Environment\\Git\\bin\\bash.exe --login -i",
    +                "guid": "{c891c3d2-b798-4857-83c0-89bf2ea34021}",
    +                "name": "Git Bash",
    +                "icon": "D:\\Program_Files\\Git\\mingw64\\share\\git\\git-for-windows.ico"
    +            },
    +

    其中 "commandline": "D:\\Environment\\Git\\bin\\bash.exe --login -i",

    之所以加了--login -i 后面见 「2 可能出现的问题」

    1.2 VSCode 配置 Git bash 为默认终端

    前排提示:我最初在网上搜索,发现之前许多教程里的 json 变量 “terminal.integrated.shell.windows” 已经过时了,现在是需要配置 profiles。

    参考官网的文档:Integrated Terminal in Visual Studio Codeopen in new window

    Ctrl+,打开设置,搜索 shell:windows,在 settings.json 的最后添加下面的配置

    自行修改 Git Bash 和 Powershell exe 的路径

    "terminal.integrated.automationShell.windows": "D:\\Environment\\Git\\bin\\bash.exe",
    +  "terminal.integrated.profiles.windows": {
    +    "PowerShell": {
    +      "path": "C:\\Program Files\\PowerShell\\7-preview\\pwsh.exe",
    +      "icon": "terminal-powershell",
    +      "args": [
    +        "-NoLogo" //不显示 powershell 开头的输出
    +//不加载Powershell的配置和美化
    +//,"-NoProfile" 
    +      ]
    +    },
    +    "Command Prompt": {
    +      "path": [
    +        "${env:windir}\\Sysnative\\cmd.exe",
    +        "${env:windir}\\System32\\cmd.exe"
    +      ],
    +      "args": [],
    +      "icon": "terminal-cmd"
    +    },
    +    "Bash": {
    +      "path": [
    +        "D:\\Environment\\Git\\bin\\bash.exe" //Git bash路径
    +      ],
    +      "icon": "terminal-bash",
    +      "args": ["-i","-l"] // 激活Git在外部的配置
    +        }
    +  },
    +

    2 可能出现的配置问题

    1. Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置
    2. Git Bash 不会加载 ~/.bashrc 的配置
    3. Git-Bash 修改前缀 (隐藏用户 @ 主机)
    4. 修复 Git Bash 中文乱码

    2.1 Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置

    解决方法,其实上面已经给出了,就是在 bash.exe 后面加-l, - i 配置,这样激活 Git Bash 就会加载 ~/.bash_profile 的配置

    2.2 Git Bash 不会加载 ~/.bashrc 的配置

    确实是这样,Git Bash 在 Win 端只会 source ~/.bash_profile 而不会激活 ~/.bashrc 的配置。所以如果你和我一样,喜欢在 ~/.bashrc 配置别名,在 ~/.bash_profile 配置环境的话,

    解决方法是那就在 ~/.bash_profile 加一行,source ~/.bashrc 就好啦!

    2.3 Git-Bash 修改前缀 (隐藏用户 @ 主机)

    如果直接打开 Git Bash 终端,你会发现显示的东西很冗余

    有用户 @ 主机名,MINGW64,绝对路径。其中前面两个都是固定的,所以就想要把这个隐藏

    在 Git-Bash 中我们输入以下代码: vi ~/.bash_profile , 然后把以下内容添加到配置文件里面。我这里是隐藏了用户 @ 主机,同时把绝对路径改成了只显示当前文件夹, 需要看全路径的话用 pwd 就显示了。这样不至于截图、被人看到时,太暴露隐私哈哈哈。

    根据需要自行选择配置。

    # Shows Git branch name in prompt.
    +parse_git_branch() {
    +  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
    +}
    +# 显示 用户 @ 主机
    +# export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
    +# 隐藏用户 @ 主机,显示当前文件夹 
    +#export PS1="\W\[\033[32m\]\$(parse_git_branch)\[\033[00m\]"
    +
    +# 只显示当前文件夹
    +export PS1="\[\e[32;1m\]\W $\[\e[0m\]\[\033[32m\]\$(parse_git_branch)\[\033[00m\] "
    +
    +# 显示全路径
    +#export PS1="\[\e[32;1m\]\w $\[\e[0m\]\[\033[32m\]\$(parse_git_branch)\[\033[00m\] "
    +

    粘贴完后,source .bash_profile 的结果

    补充下环境下默认的特殊符号所代表的意义:

    • \u :当前用户的账号名称
    • \w :完整的工作目录名称。家目录会以 ~代替
    • \W :利用 basename 取得工作目录名称,所以只会列出最后一个目录
    • \H:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是 fc4.linux
    • \h :仅取主机的第一个名字,如上例,则为 fc4,.linux 则被省略
    • \d :代表日期,格式为 weekday month date,例如:"Mon Aug1"
    • \t :显示时间为 24 小时格式,如:HH:MM:SS
    • \T :显示时间为 12 小时格式
    • \A :显示时间为 24 小时格式:HH:MM
    • \v :BASH 的版本信息
    • # :下达的第几个命令
    • $ :提示字符,如果是 root 时,提示符为:# ,普通用户则为:$

    参考:

    2.4 修复 Git Bash 中文乱码

    Git bash 自身配置:

    • 终端不能显示中文:打开 Git bash,右键打开选项, Options->Text->Locale 改为 zh_CNCharacter set 改为 UTF-8
    • 解决 git status 不能显示中文:终端输入 git config --global core.quotepath false

    Windows Terminal 和 VSCode 中别忘了添加 --login -i 参数

    参考资料:

    解决中文无法显示的问题

    Win10也要愉快地使用Bash - 掘金 (juejin.cn)open in new window

    打开Git安装目录下的 C:\Git\etc\bash.bashrc (具体路径以你安装的为准)文件,在末尾追加一行:

    export LC_ALL=en_US.UTF-8
    +复制代码
    +

    并保存,重启终端就好了。

    3 你可能不知道却非常有用的技巧

    1. 在终端启动软件查看文件
    2. Linux 下常用软件下载
    3. 资源管理器地址妙用,直接在终端打开当前文件夹

    3.1 在终端启动软件查看文件

    • 在终端如何快速查看文件
    • Windows 里有一个很有用的命令 「start」,start . 用资源管理器打开当前目录(或用 explorer .),start 文件名 用默认软件打开这个文件,这样就不用开了终端,还要手动去找这个文件再查看了,工作流得到优化
    • 在终端以 VSCode 打开当前项目
    • 首先需要在环境变量 Path 中添加 VSCode 的 Code.exe 地址,比如我的是 D:\Program_Files\Microsoft VS Code\Code.exe
    • 然后在终端下使用 code ./ 就可以打开当前项目

    参考:

    3.2 Linux 下常用软件下载

    • 安装 tree 以树形显示文件结构
    • 安装
    1. 下载地址:Tree for Windows (sourceforge.net)open in new window,下载 Binaries 的 Zip 文件
    2. 下载解压完成后,将 bin 目录下的 tree.exe 复制到 Git Bash 安装路径下的 usr/bin 文件夹下,完成
    • 常用命令
    • 基本命令格式:tree [-option] [dir]
    • 显示中文,-N,如果中文名是中文,不加-N 有些电脑上是乱码的
    • 选择展示的层级:-L [n]
    • 只显示文件夹:-d
    • 区分文件夹、普通文件、执行文件:-FC,C 是加上颜色,
    • 起别名:可以起一个别名 alias tree='tree -FCN'
    • 输出目录结构到文件,写文档的时候需要展示项目目录就会用到 tree -L 2 -I '*.js|node_modules|*.md|*.json|*.css|*.ht' > tree.txt
    • 添加 wget 下载工具
    • 安装
    1. 下载 wget 二进制安装包,地址:https://eternallybored.org/misc/wget/2open in new window
    2. 移动到 Git Bash 安装路径下的 usr/bin 文件夹下,完成
    • 常用命令
    • 最直接的下载命令:wget [url]
    • 指定文件名 -O
    • 指定目录 -P
    • 下载多个文件 wget -i [url.txt]
    • 断点续传 wget -c -t [n] [url],n 代表尝试的次数,0 代表一直尝试
    • 后台执行:wget -b [url] 可以添加 -b 选项,这时执行该命令的回显信息都会自动存储在 wget.log 文件中
    • 下载一个网站的所有图片、视频、pdf wget -r -A.pdf url

    3.3 资源管理器地址妙用,直接在终端打开当前文件夹

    alt + d 可以直接把光标移动到资源管理器地址栏,对于不同终端

    • cmd: 输入 cmd
    • Windows Terminal:输入 wt
    • Git Bash: 输入 bash
    • VSCode:
    • 方法一:输入 code.cmd .,必须要加.,不然只是打开 VSCode 软件,而不会打开当前文件夹
    • 方法二:新建变量 code,输入 VSCode 地址,然后在地址栏就可以输入 %code%(还是上面那个输入快点,不用按 shift)
    • 方法三:直接右键吧,为啥这么折腾
    • 方法四:utools 快捷命令
    • 为什么我直接输入 code 就是打开一个 sh 脚本呢,我用 start . 打开这个脚本的目录,突然恍然大悟,原来就是因为这个 code 文件影响到了我直接用 code,我看了下脚本,这个应该是用于 wsl 启动的(我随口说的,你可以尝试去掉这个文件,然而也不能通过在地址栏输入 code 打开 VSCode 就是了)

    3.4 添加一些常用别名增加效率

    我的 ~/.bashrc 文件

    # 为了更好的push到github,配置代理
    +export http_proxy=http://127.0.0.1:10809
    +export https_proxy=http://127.0.0.1:10809
    +
    +# 方便cd 进 hexo
    +alias blog='cd /e/blog'
    +# hexo 博客发布,num run是package.json中script list配置的别名
    +alias dev='npm run v'
    +alias publish='npm run p'
    +
    +# 配置tree别名
    +alias tree='tree -FCN'
    +
    + + + diff --git a/code/citation-style-language/index.html b/code/citation-style-language/index.html new file mode 100644 index 00000000..ad5997c6 --- /dev/null +++ b/code/citation-style-language/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + CSL 中文文档 | 北辞 + + + + + +
    跳至主要內容

    CSL 中文文档

    Northword大约 2 分钟

    CSL 中文文档

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。

    Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。LaTeX\LaTeX 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 LaTeX\LaTeX 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 LaTeX\LaTeX 同样漂亮的引用和参考文献目录。

    由 CSL 编写的 style 定义了引用和参考文献目录的格式。Zotero 就是通过 style 来生成指定格式的引用和参考文献目录。据统计,现在已经有超过 9000 个 style,覆盖了大多数的常见的 SCI 期刊。在 Zotero 中能很容易检索到对应期刊的 style。但是即使有这么多的 style,仍然有可能有的期刊没有对应的 style。此外,有的 style 年代久远,已经不符合期刊 author guideline 中的要求,因此,我们需要学习 CSL 来定制需要的 style,至少能在已有的 style 上修改来满足期刊的要求。但是遗憾的是,国内 CSL 的资料几乎没有。

    本项目是对 CSL 英文文档open in new window 的翻译。本人能力有限,理解和翻译有误处请大家谅解,同时欢迎 issue 和 pull。

    [!TIP] 本站点是对译文的重排版

    翻译者:Mao Zhouopen in new window

    译文原始站点:Welcome to CSL-chinese’s documentation! — CSL-chinese documentationopen in new window

    译文原始仓库:ZMAlt/CSL-Chinese: CSL Chinese Document (github.com)open in new window

    中文文档重排版:Northwordopen in new window

    中文文档重排版仓库:zotero-cn/csl-chinese: CSL 中文文档 (github.com)open in new window

    [!danger] 译者注 文档中,凡标注 Work in progress 的均为正在施工的页面,无法确保与现有英文文档相一致,无法确保译文修改前后的一致性、准确性,请酌情阅读。

    + + + diff --git a/code/citation-style-language/primer/citation-formats.html b/code/citation-style-language/primer/citation-formats.html new file mode 100644 index 00000000..dd7c5451 --- /dev/null +++ b/code/citation-style-language/primer/citation-formats.html @@ -0,0 +1,40 @@ + + + + + + + + + + 引文格式 | 北辞 + + + + + +
    跳至主要內容

    引文格式

    Northword大约 3 分钟

    引文格式

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下:

    In-text Styles

    引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numericlabel 格式。

    CSL 中,每个单独的 pointer 称为一个引用。例如,引文 “(Doe et al. 2002, Smith 1997)” 包含两个引用:一个是 Doe et al. 在 2002 年发表的文献,另外一个是 Smith1997 年发表的文献。

    “author-date” 和 “author” 格式

    author-date 引用格式会显示作者的名字和发表的日期,比如:(Van der Klei et al. 1991; Zwart et al. 1983)author 只显示作者名字,例如:(Gidijala et al.)。参考文献条目一般使用字母表顺序对作者进行排序。

    应该注意的是,许多引用格式使用了令人疑惑的 Harvard 术语来指代 author-date 格式,但是大多数这些格式与哈佛大学并没有关系。而且也并不存在一个官方的 Harvard 格式。

    参考文献条目实例

    Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.

    van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

    Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.

    “numeric”格式

    numeric 格式由数字组成,比如 [1,2][3]。参考文献条目一般使用作者首字母排序或者使用第一次在正文中的引用顺序排序。国标就是一种典型的 numeric 格式。

    参考文献条目实例

    1. Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.
    1. Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.
    1. van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

    "numeric" 复合格式

    复合格式是 numeric 格式的变体。这种风格在化学领域很流行。CSL 中暂时不支持这种格式,这里也不多作介绍。

    参考文献条目实例

    1. Gidijala L, et al. (2008) BMC Biotechnol 8: 29.
    1. a) Zwart KB, et al. (1983) Antonie van Leeuwenhoek 49: 369-385, b) van der Klei IJ, et al. (1991) Arch Microbiol 156: 15-23.

    标签格式

    这种引用格式由 keys 构成,例 GBKv2008][ZwVH1983; vaHV1991]CSL 对这种格式支持有限,这里也不多作介绍。

    参考文献条目实例

    [GBKv2008] Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.

    [vaHV1991] van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.

    [ZwVH1983] Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.

    Note Styles

    引用格式的第二类为 Note 格式。引用中的 marker 可以是数字或者符号,例如 [*] 或者 [†]。每个 marker 指向脚注或者尾注。CSL 不能设置使用哪些数字或者符号用于 marker,这些应该用字处理软件 (比如 word) 设置。与上面的 in-text 格式不同,尾注或者脚注通常显示的信息更多。

    参考文献条目实例

    [*] Voyage to St. Kilda’ (3rd edit. 1753), p. 37.

    [†] Sir J. E. Tennent, ‘Ceylon,’ vol. ii. 1859, p. 107.

    + + + diff --git a/code/citation-style-language/primer/end.html b/code/citation-style-language/primer/end.html new file mode 100644 index 00000000..b5e4cdea --- /dev/null +++ b/code/citation-style-language/primer/end.html @@ -0,0 +1,40 @@ + + + + + + + + + + 更进一步 | 北辞 + + + + + +
    跳至主要內容

    更进一步

    Northword小于 1 分钟

    更进一步

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看 CSL 标准文档或者其他参考文档。

    + + + diff --git a/code/citation-style-language/primer/index.html b/code/citation-style-language/primer/index.html new file mode 100644 index 00000000..8cf7c084 --- /dev/null +++ b/code/citation-style-language/primer/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + CSL 介绍 | 北辞 + + + + + +
    跳至主要內容

    CSL 介绍

    Northword小于 1 分钟

    CSL 介绍

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    前言

    CSL 是一种基于 XML 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 CSL 规范

    CSL 是什么

    如果你写过论文的话,你可能在其中引用了别人的论文。参考文献在学术交流中很重要,因为它可以提供引用的来源,并且可以把已经发表的研究联系到一起。但是,手动设置引用格式和参考文献目录非常耗时,而且不同的期刊有自己的引用格式。

    参考文献管理软件可以解决上面的问题。像 Zotero、Mendeley、Papers 等软件不仅能帮助你管理参考文献,而且可以自动地生成引用的参考文献目录。为了设置特定的引用格式,这些软件需要能识别的对引用格式的描述,这种描述就是 Citation Style Language(CSL)。

    citation-formats

    the-csl-ecosystem

    understanding csl styles

    end

    + + + diff --git a/code/citation-style-language/primer/the-csl-ecosystem.html b/code/citation-style-language/primer/the-csl-ecosystem.html new file mode 100644 index 00000000..cf07d6cc --- /dev/null +++ b/code/citation-style-language/primer/the-csl-ecosystem.html @@ -0,0 +1,40 @@ + + + + + + + + + + CSL 生态 | 北辞 + + + + + +
    跳至主要內容

    CSL 生态

    Northword大约 6 分钟

    CSL 生态

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。

    独立格式和从属格式

    CSL 的一切都是围绕 style 的,但是并不是所有的 style 都是相似的。主要包括两种格式:独立格式 (independent styles) 和从属格式 (dependent styles)

    独立格式有 2 种功能,首先,需要先定义一种引用格式。具体格式是什么样的,是 author-date 格式还是 note 格式? 引用的顺序是按字母排序还是按日期排序?参考文献条目中是不是包含 DOI?使用什么标点符号以及使用大写还是小写?文献发表年限在文献题目前还是后?等等,这些都是引用格式定义的。第二个功能是:CSL 必须是能自我解释的,可以称之为格式的元数据。元数据中可以包括该 CSL 对应的期刊标题,以及该期刊的联接,该 CSL 的创建者等。

    从属格式则仅包括格式的元数据,没有对引用格式的定义。从属格式必须指定它的参考格式 (父格式),从属格式的引用将使用它的父格式的引用格式。

    当多个格式使用相同的引用格式时,从属格式非常有用。以一个出版社旗下的不同期刊为例,如果每个期刊都使用独立格式,则每个 CSL 都要完整的对引用格式的描述,即使他们的引用格式都是相同的。这样就导致 CSL 太庞大,冗余太多。这种情况下,从属格式就比较适合。例如,"Nature""Nature Biotechnology""Nature Chemistry" 都使用同样的引用格式。因此,只需要创建一个 "Nature" 的独立格式,将 "Nature Biotechnology""Nature Chemistry" 格式都定义为 "Nature" 格式的从属格式。这样,如果 "Nature" 的出版社想改变引用格式,只需要改变 "Nature" 期刊格式的 CSL 就可以,不需要改变它的从属格式对应的 CSL

    Locale 文件

    事实上,大多数独立格式并不是完全独立的。

    以下面的条目为例:

    Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (1999, September 28). Method and system for placing a purchase order via a communications network. Retrieved from https://www.google.com/patents/US5960411open in new window

    你可以使用一种独立的 CSL 格式来描述这个条目,在格式种编码就可以实现。例如,在最后的链接前加上 "Retrieved from",或者使用 "YYYY, Month DD" 作为日期的格式。但是这样的一种 CSL,只能在美式英语中使用,如果使用德语写作,就必须修改样式中对应的翻译和日期格式。

    幸运的是,独立格式可以依据 CSL locale files(以下也翻译为 本地化文件 ) 来实现通用项的翻译,日期格式和语法的转换。例如:我们可以重写 CSL 格式使用 "retrieved""from" 项,并使用本地化的日期格式。如果我们将 CSL 样式 (同格式) 的使用环境设置为美式英语,该样式将从 US English locale file 检索和翻译对应的项,并生成上述引用。如果将英语换为德语,就会使用德语对应的 locale file,生成的引用如下:

    Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (28. September 1999). Method and system for placing a purchase order via a communications network. Abgerufen von https://www.google.com/patents/US5960411open in new window

    因此,使用 CSL locale files ,可以编写与语言无关的 CSL 样式。如上面展示的,这样的格式可以轻易的在不同的语言中转换。但是语言是很复杂的,CSL automatic localization 并不能支持所有的语言特色。但是,语言无关的样式仍然是有意义的,如果你要自己修改 CSL 样式来适应自己选择的语言环境,参考这些语言无关的样式将更容易实现。

    Locale file 还有一个好处,那就是,我们只需要为每种语言定义一次通用的翻译,日期格式和语法。这样可以保证样式紧凑,并使 locale file 更容易维护。由于给定语言的引用格式并不是一直和 locale file 中定义的转换格式一致,因此,我们也可以自己选择性的重写任何在 locale file 中定义的项目。下面独立格式解析中的 locale 元素就是为实现这一功能设置的。

    Item Metadata

    接下来就是引用中需要的参考文献条目的细节:条目元数据。

    例如:一篇期刊文章可能需要作者的名字,发表的年份,文章题目,期刊名称,卷和期,出现的页码范围以及 DOI(数字文献唯一标识),所有这些信息都有助于读者识别和查找这篇文章。

    参考文献管理软件可以轻松的创建文献的这些细节信息。但是,很多参考文献管理软件都有自己的格式来存储这些元素据,大多数都支持通用的 bibliographic exchange formats,比如 BixTexRISciteproc-jsCSL 处理器引入了一种基于 JSON 的格式,用于以 citeproc-js 可以理解的方式来存储元数据。其他的一些 CSL 处理器后来采用了这种 “CSL JSON” 格式(也称为 “citeproc JSON”)。

    译者注:这里讲的似乎有些繁琐。总的来说,是我们需要每篇文章的作者,题目,发表期刊等信息来生成对应的条目。文献管理软件可以很方便的提供这些信息。至于其内部存储的方式,使用的时候并不需要关心,类似 Zotero 的文献管理软件会自动使用这些信息和 CSL 生成引用信息。

    引用细节

    对于给定的引用格式,引文和条目的展示不仅取决于被引用项的元数据,还取决于这些项被引用的上下文。我们将这类特定于上下文的信息称为引用细节。

    例如:引用时对条目的排序会影响他们在参考文献中的位置(在下面独立格式的 citationbibliography 章节中提到)。

    CSL 处理器

    有了 CSL 样式,locale file,元数据和引用细节,我们现在需要一个软件来解析这些信息,并以正确的格式生成引用和参考文献条目。用来完成这些功能的软件就是 CSL 处理器。

    大多数的参考文献管理软件使用的是免费开源的 CSL 处理器,比如:citeproc-js

    + + + diff --git a/code/citation-style-language/primer/understanding-csl-styles.html b/code/citation-style-language/primer/understanding-csl-styles.html new file mode 100644 index 00000000..098ffb3f --- /dev/null +++ b/code/citation-style-language/primer/understanding-csl-styles.html @@ -0,0 +1,252 @@ + + + + + + + + + + 理解 CSL 格式 | 北辞 + + + + + +
    跳至主要內容

    理解 CSL 格式

    Northword大约 10 分钟

    理解 CSL 格式

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。

    从属格式解析

    下面是一个 CSL 从属格式文件:

    <?xml version="1.0" encoding="utf-8"?>
    +<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" default-locale="en-US">
    +  <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm -->
    +  <info>
    +    <title>Applied and Environmental Microbiology</title>
    +    <id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id>
    +    <link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/>
    +    <link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/>
    +    <link href="http://aem.asm.org/" rel="documentation"/>
    +    <category citation-format="numeric"/>
    +    <category field="biology"/>
    +    <issn>0099-2240</issn>
    +    <eissn>1098-5336</eissn>
    +    <updated>2014-04-30T03:45:36+00:00</updated>
    +    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +  </info>
    +</style>
    +

    XML基础.md 文件中的描述:一行给出了 xml 的声明。根元素为 style,其中包含了一个子元素 infoinfo 元素中又包含了很多元素,其中很多元素都有内容和属性。xmlns、versiondefaults-locale 都是元素 style 的属性,分别指定了??、版本和使用的语言,这里为美国英语。

    大多数从属格式都是电子表格自动生成的,下面的注释也给出了指向电子表格的联接。

     <!-- Generated with https://github.com/citation-style-language/utilities/tree/master/generate_dependent_styles/data/asm -->
    +

    元素 info 里包含了大多数 style 的元数据,比如:

    style 的题目(也是期刊的题目):

    <title>Applied and Environmental Microbiology</title>
    +

    样式的 ID,是文献管理软件用来区分不同 style 的标志:

    <id>http://www.zotero.org/styles/applied-and-environmental-microbiology</id>
    +

    style 自己的链接。该链接指向了网上的副本。

    <link href="http://www.zotero.org/styles/applied-and-environmental-microbiology" rel="self"/>
    +

    从属格式需要指定它的父格式,父格式为独立格式。这里的父格式为 American Society for Microbiology

    <link href="http://www.zotero.org/styles/american-society-for-microbiology" rel="independent-parent"/>
    +

    为了更好的维护格式,因此需要指定格式的文档链接。这里文档的链接转到了期刊的主页。

    <link href="http://aem.asm.org/" rel="documentation"/>
    +

    为了便于分类,还可以在 category 元素中设置它的属性。这里分别设置了引用格式为 numeric,领域为 biology

    <category citation-format="numeric"/>
    +<category field="biology"/>
    +

    当期刊创建格式的时候,可以在 issn 元素和 eissn 元素中保存其打印标准国际连续出版物号 (ISSN) 和其电子版本 (ESSIN)

    <issn>0099-2240</issn>
    +<eissn>1098-5336</eissn>
    +

    updated 元素保存了最后一次更新的时间戳:

    <updated>2014-04-30T03:45:36+00:00</updated>
    +

    rights 元素中保存了该 CSL 格式的证书:

    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +

    独立格式解析

    下面是一个独立格式的实例,实例中定义了引用格式,所以要比从属格式要大一些。这里的示例只是一个简化的例子,实际的格式比这个还要大很多。但这个简化的例子仍然是完整有效的。

    <?xml version="1.0" encoding="utf-8"?>
    +<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
    +  <info>
    +    <title>Example Style</title>
    +    <id>http://www.zotero.org/styles/example</id>
    +    <link href="http://www.zotero.org/styles/example" rel="self"/>
    +    <link href="http://www.zotero.org/styles/apa" rel="template"/>
    +    <link href="http://www.example.com/style-guide/" rel="documentation"/>
    +    <author>
    +      <name>John Doe</name>
    +      <email>JohnDoe@example.com</email>
    +    </author>
    +    <contributor>
    +      <name>Jane Doe</name>
    +    </contributor>
    +    <contributor>
    +      <name>Bill Johnson</name>
    +    </contributor>
    +    <category citation-format="author-date"/>
    +    <category field="science">
    +    <updated>2014-10-15T18:17:09+00:00</updated>
    +    <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +  </info>
    +  <locale xml:lang="en">
    +    <terms>
    +      <term name="no date">without date</term>
    +    </terms>
    +  </locale>
    +  <macro name="author">
    +    <names variable="author">
    +      <name initialize-with="."/>
    +    </names>
    +  </macro>
    +  <macro name="issued-year">
    +    <choose>
    +      <if variable="issued">
    +        <date variable="issued">
    +          <date-part name="year"/>
    +        </date>
    +      </if>
    +      <else>
    +        <text term="no date"/>
    +      </else>
    +    </choose>
    +  </macro>
    +  <citation et-al-min="3" et-al-use-first="1">
    +    <sort>
    +      <key macro="author"/>
    +      <key macro="issued-year"/>
    +    </sort>
    +    <layout prefix="(" suffix=")" delimiter="; ">
    +      <group delimiter=", ">
    +        <text macro="author"/>
    +        <text macro="issued-year"/>
    +      </group>
    +    </layout>
    +  </citation>
    +  <bibliography>
    +    <sort>
    +      <key macro="author"/>
    +      <key macro="issued-year"/>
    +      <key variable="title"/>
    +    </sort>
    +    <layout suffix="." delimiter=", ">
    +      <group delimiter=". ">
    +        <text macro="author"/>
    +        <text macro="issued-year"/>
    +        <text variable="title"/>
    +        <text variable="container-title"/>
    +      </group>
    +      <group>
    +        <text variable="volume"/>
    +        <text variable="issue" prefix="(" suffix=")"/>
    +      </group>
    +      <text variable="page"/>
    +    </layout>
    +  </bibliography>
    +</style>
    +

    结构

    首先看一下根元素 style 的子元素。

    <?xml version="1.0" encoding="utf-8"?>
    +<style>
    +  <info/>
    +  <locale/>
    +  <macro/>
    +  <macro/>
    +  <citation/>
    +  <bibliography/>
    +</style>
    +

    相比于从属格式只有 info 一个子元素,独立格式的根元素有除了 info· 以外,还有 locale 、 macro 、citation、bibliography 四个子元素。

    这些子元素的作用分别是:

    • info 该元素在独立格式中的作用和从属格式中相同,都是用来保存基本的格式元数据。

    • locale 该元素可以用来从 locale file 中重写 locale data

    • macro 用来存储 CSL 代码,这些代码可能应用在 citation 、bibliography 或者其他的 macro 元素中。

    • citation 定义文中引用的格式。

    • bibliography 定义参考文献目录的格式。

    以下从 style 根元素开始分析。

    根元素/style 元素

    <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0">
    +  ...
    +</style>
    +

    在从属格式中我们已经了解了 xmlnsversion 属性,class 是新的属性,用来告诉 CSL processor(CSL 处理器) 使用的引用格式是什么。

    info 元素

    独立格式的元数据通常比从属格式的元数据更加全面:

    <info>
    +  <title>Example Style</title>
    +  <id>http://www.zotero.org/styles/example</id>
    +  <link href="http://www.zotero.org/styles/example" rel="self"/>
    +  <link href="http://www.zotero.org/styles/apa" rel="template"/>
    +  <link href="http://www.example.com/style-guide/" rel="documentation"/>
    +  <author>
    +    <name>John Doe</name>
    +    <email>JohnDoe@example.com</email>
    +  </author>
    +  <contributor>
    +    <name>Jane Doe</name>
    +  </contributor>
    +  <contributor>
    +    <name>Bill Johnson</name>
    +  </contributor>
    +  <category citation-format="author-date"/>
    +  <category field="science">
    +  <updated>2014-10-15T18:17:09+00:00</updated>
    +  <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
    +</info>
    +

    title、style ID、"self" link、categories、time stamp、license 和从属格式作用都是相同的,但有些许差别。首先,独立格式不依赖父格式,通常是提供一个 template(模板) 链接,表明当前的独立格式是以模板格式链接创建的(这样写的原因是,通常情况下,凭空写一个 CSL 比较困难,但是借助一个模板改写则容易的多)。这里的模板是 APA style。此外,info 还倾向于给定一个或者多个 document 链接,用来指向引文格式的在线描述。

    为了致谢 CSL 格式的创建者,他们的名字和联系方式也可以添加到格式文件中。在当前的例子中,有一个作者和两个贡献者。作者通常完成了创建格式的大部分工作,贡献者一般只提供了一些小的改进。

    citation 元素和 macro 元素

    接下来分析 macroscitation 元素。citation 元素用来描述引用的格式。

    <macro name="author">
    +  <names variable="author">
    +    <name initialize-with="."/>
    +  </names>
    +</macro>
    +<macro name="issued-year">
    +  <choose>
    +    <if variable="issued">
    +      <date variable="issued">
    +        <date-part name="year"/>
    +      </date>
    +    </if>
    +    <else>
    +      <text term="no date"/>
    +    </else>
    +  </choose>
    +</macro>
    +<citation et-al-min="3" et-al-use-first="1">
    +  <sort>
    +    <key macro="author"/>
    +    <key macro="issued-year"/>
    +  </sort>
    +  <layout prefix="(" suffix=")" delimiter="; ">
    +    <group delimiter=", ">
    +      <text macro="author"/>
    +      <text macro="issued-year"/>
    +    </group>
    +  </layout>
    +</citation>
    +

    上面的代码可以生成类似 “(A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999)” 这样的格式。为了理解这种引用格式在 CSL 中式如何编码的,要先分析 citation 元素中的 layout 元素。layout 元素中的 prefixsuffixdelimiter 属性分别定义了前缀(这里为 (),后缀(这里为 ))以及条目分隔符(这里为 ;)。也就是说整个条目要放在圆括号中,条目之间以 ; 分隔。每个条目的格式在 layout 元素的内容中定义。其内容中的 group 元素包括了 authorissue-year macros,并且以 , 分隔。

    macro 元素是一种辅助元素,在其他元素或者其他 macro 元素中使用。通过其名字也可以看出,其与其他语言中的 __ 宏 __ 类似,这里暂不翻译。每个 macro 都含有 name 属性。

    **注:**以下为了方便描述,将对应的 macro 元素直接以 name 指代,例:nameauthormacro 元素直接称为 author 元素。

    ``author元素的name 的属性指定了名称,variable 属性保存了具体的作者值,initialize-with表明作者值为首字母缩写,每个首字母后面为.`。

    issued-year 元素以分支语句开始,分支语句以 choose 元素定义,其中包含 ifelse 元素。如果参考文献有日期,则保存在 issued 变量中,如果 issued-year 元素被引用,日期的年份将被印出,否则就印出 no date

    layout 元素中的 group 元素的 author 用来印出在 author 元素中存储的值,issued-year 则用来印出 issued-year 元素储存的值。

    为什么不直接把 macro 中的内容放在 citation 元素中呢?使用 macro 有什么好处呢?在上面的例子中,macro 的使用简化了 citation 元素的结构。此外,上述的两个 macro 总共被调用了 4 次(两次在 citation 元素中,两次在 bibliography 元素中),如果不使用 macro,必须多次重复这些代码。因此 macro 的使用提供了更紧凑的样式。

    再看 citation 元素,其中含有两个属性 et-al-minet-al-use-first。这里的值分别为 3、1,表示作者大于等于 3 个的时候,使用印出第一个作者,后面跟 et al 术语。

    citation 元素中还包括了 sort 元素,其中包括了两个 key 元素,用来表明引用的排列顺序。第一个 key 元素中引用了 author 宏,第二个宏引用了 issued-year 宏,表明,先按作者作者字母排序,然后按文献发表年份排序。

    bibliography 元素

    citation 元素定义了引用的格式,bibliography 定义了参考文献条目的格式。

    <macro name="author">
    +  <names variable="author">
    +    <name initialize-with="."/>
    +  </names>
    +</macro>
    +<macro name="issued-year">
    +  <choose>
    +    <if variable="issued">
    +      <date variable="issued">
    +        <date-part name="year"/>
    +      </date>
    +    </if>
    +    <else>
    +      <text term="no date"/>
    +    </else>
    +  </choose>
    +</macro>
    +...
    +<bibliography>
    +  <sort>
    +    <key macro="author"/>
    +    <key macro="issued-year"/>
    +    <key variable="title"/>
    +  </sort>
    +  <layout suffix="." delimiter=", ">
    +    <group delimiter=". ">
    +      <text macro="author"/>
    +      <text macro="issued-year"/>
    +      <text variable="title"/>
    +      <text variable="container-title"/>
    +    </group>
    +    <group>
    +      <text variable="volume"/>
    +      <text variable="issue" prefix="(" suffix=")"/>
    +    </group>
    +    <text variable="page"/>
    +  </layout>
    +</bibliography>
    +

    上述的例子中的 bibliography 实际上只适用于一种类型:期刊文章。它生成的条目的格式是:

    A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. W. Wallace, J. Snow. 1999. Winter is coming. Journal of Climate Dynamics, 6(9), 97—102.

    我们怎么定义这种格式呢?首先,bibliography 元素的结构和 citation 元素很相似,不同的是,这里的 layout 元素用来定义参考文献条目的格式。除了给出 authorissued-year,参考文献条目还需要给出每个条目的 titlecontainer-title(对期刊文章来说,就是期刊的名称)、volumeissuepage。这里 layout 元素使用属性 suffixdelimiter 分别指定了 group 的后缀为 .,以及 group 之间的分隔符为 ,

    citation 元素相同,bibliography 也包括了一个 sort 元素,用来对参考文献条目进行排序。这里的三个 key 分别为 authorissued-yeartitle

    locale 元素

    最后介绍的是 loacle 元素。正如上面写道的,CSL locale file 允许 CSL 样式快速转换为不同的语言。但是,有时需要覆盖默认翻译。

    <locale xml:lang="en">
    +  <terms>
    +    <term name="no date">without date</term>
    +  </terms>
    +</locale>
    +

    对 US English 来说,"no date" 项的内容就是 "no date"。但是在我们的例子中,我们想使用 "without date" 去替换它。为了重写默认的翻译,我们可以使用类似上面的 locale 元素。对一个没有日期的条目来说,这种重写会导致引用变为像 (D. Williams, without date) 这样的格式。

    localexml:lang 属性被设置为 en,这告诉 CSL 样式当样式被用于英语写作的时候,重写 "no date"。如果我们在德语写作的时候使用该 CSL,该样式将会依据 German locale file 印出德语的翻译 (ohne Datum)

    + + + diff --git a/code/citation-style-language/specification/appendix/appendix1-categories.html b/code/citation-style-language/specification/appendix/appendix1-categories.html new file mode 100644 index 00000000..4713dd4c --- /dev/null +++ b/code/citation-style-language/specification/appendix/appendix1-categories.html @@ -0,0 +1,40 @@ + + + + + + + + + + 附录 I 学科分类 | 北辞 + + + + + +
    跳至主要內容

    附录 I 学科分类

    Northword小于 1 分钟

    附录 I 学科分类

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    • anthropology 人类学
    • astronomy 天文学
    • biology 生物学
    • botany 植物学
    • chemistry 化学
    • communications 通讯
    • engineering 工程学
    • generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA
    • geography 地理学
    • geology 地质学
    • history 历史
    • humanities 人文学科
    • law 法学
    • linguistics 语言学
    • literature 文学
    • math 数学
    • medicine 药物学
    • philosophy 哲学
    • physics 物理学
    • political_science 政治科学
    • psychology 心理学
    • science 科学
    • social_science 社会科学
    • sociology 社会学
    • theology 神学
    • zoology 动物学
    + + + diff --git a/code/citation-style-language/specification/appendix/appendix2-terms.html b/code/citation-style-language/specification/appendix/appendix2-terms.html new file mode 100644 index 00000000..f186b713 --- /dev/null +++ b/code/citation-style-language/specification/appendix/appendix2-terms.html @@ -0,0 +1,40 @@ + + + + + + + + + + 附录 II 术语 | 北辞 + + + + + +
    跳至主要內容

    附录 II 术语

    Northword小于 1 分钟

    附录 II 术语

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    术语在本地化文件中使用

    Locators/用来定位的术语

    • book 书
    • chapter 章
    • column
    • figure 图
    • folio 作品集
    • issue 议题/问题
    • line 行
    • note 笔记/注记
    • opus 作品(音乐作品)
    • page 页
    • paragraph 段
    • part 部分
    • section 节
    • sub verbo 词条
    • verse 诗
    • volume 卷

    Months/月

    • month-01
    • month-02
    • month-03
    • month-04
    • month-05
    • month-06
    • month-07
    • month-08
    • month-09
    • month-10
    • month-11
    • month-12

    Ordinals/序数

    • ordinal
    • ordinal-00 through ordinal-99
    • long-ordinal-01
    • long-ordinal-02
    • long-ordinal-03
    • long-ordinal-04
    • long-ordinal-05
    • long-ordinal-06
    • long-ordinal-07
    • long-ordinal-08
    • long-ordinal-09
    • long-ordinal-10

    Quotation marks/引号

    • open-quote
    • close-quote
    • open-inner-quote
    • close-inner-quote

    Roles/角色

    • author 作者
    • collection-editor 文集编辑
    • composer 作曲者
    • container-author 文章作者
    • director 主任/导演
    • editor 编辑
    • editorial-director 编辑部主任
    • editortranslator
    • illustrator 插画者
    • interviewer 采访者
    • original-author 原作者
    • recipient 收件人
    • reviewed-author 复查作者
    • translator 译者

    Seasons/季节

    • season-01
    • season-02
    • season-03
    • season-04

    Miscellaneous/其他

    • accessed
    • ad
    • and
    • and others
    • anonymous
    • at
    • available at
    • bc
    • by
    • circa
    • cited
    • edition
    • et-al
    • forthcoming
    • from
    • ibid
    • in
    • in press
    • internet
    • interview
    • letter
    • no date
    • online
    • presented at
    • reference
    • retrieved
    • scale
    • version
    + + + diff --git a/code/citation-style-language/specification/appendix/appendix3-types.html b/code/citation-style-language/specification/appendix/appendix3-types.html new file mode 100644 index 00000000..40d4c3fd --- /dev/null +++ b/code/citation-style-language/specification/appendix/appendix3-types.html @@ -0,0 +1,40 @@ + + + + + + + + + + 附录 III 文献类型 | 北辞 + + + + + +
    跳至主要內容

    附录 III 文献类型

    Northword小于 1 分钟

    附录 III 文献类型

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    • article 文章
    • article-magazine 杂志文章
    • article-newspaper 新闻文章
    • article-journal 期刊文章
    • bill
    • book 书
    • broadcast
    • chapter 章节
    • dataset 数据集
    • entry
    • entry-dictionary
    • entry-encyclopedia
    • figure 图
    • graphic
    • interview 采访
    • legislation
    • legal_case
    • manuscript
    • map 地图
    • motion_picture
    • musical_score
    • pamphlet
    • paper-conference
    • patent
    • post 海报
    • post-weblog
    • personal_communication 私人交流
    • report 报告
    • review
    • review-book
    • song 歌曲
    • speech 演讲
    • thesis 学位论文
    • treaty
    • webpage 网页
    + + + diff --git a/code/citation-style-language/specification/appendix/appendix4-variables.html b/code/citation-style-language/specification/appendix/appendix4-variables.html new file mode 100644 index 00000000..1650377f --- /dev/null +++ b/code/citation-style-language/specification/appendix/appendix4-variables.html @@ -0,0 +1,40 @@ + + + + + + + + + + 附录 IV 变量 | 北辞 + + + + + +
    跳至主要內容

    附录 IV 变量

    Northword大约 3 分钟

    附录 IV 变量

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    标准变量

    • abstract 项目的摘要(例:期刊文章的摘要)

    • annote 读者关于项目内容的笔记

    • archive 保存项目的存档

    • archive_location 存档的位置

    • archive-place 存档的地理位置

    • authority

    • call-number

      call number (to locate the item in a library)

    • citation-label

      label identifying the item in in-text citations of label styles (e.g. "Ferr78"). May be assigned by the CSL processor based on item metadata.

    • citation-number

      index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor)

    • collection-title

      title of the collection holding the item (e.g. the series title for a book)

    • container-title

      title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article)

    • container-title-short

      short/abbreviated form of "container-title" (also accessible through the "short" form of the "container-title" variable)

    • dimensions

      physical (e.g. size) or temporal (e.g. running time) dimensions of the item

    • DOI

      Digital Object Identifier (e.g. "10.1128/AEM.02591-07")

    • event

      name of the related event (e.g. the conference name when citing a conference paper)

    • event-place

      geographic location of the related event (e.g. "Amsterdam, the Netherlands")

    • first-reference-note-number

      number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes.

    • genre

      class, type or genre of the item (e.g. "adventure" for an adventure movie, "PhD dissertation" for a PhD thesis)

    • ISBN

      International Standard Book Number

    • ISSN

      International Standard Serial Number

    • jurisdiction

      geographic scope of relevance (e.g. "US" for a US patent)

    • keyword 关键字

    • locator

      a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the Locatorsopen in new window term list), which determines which term is rendered by cs:label when the "locator" variable is selected.

    • medium

      medium description (e.g. "CD", "DVD", etc.)

    • note

      (short) inline note giving additional item details (e.g. a concise summary or commentary)

    • original-publisher

      original publisher, for items that have been republished by a different publisher

    • original-publisher-place

      geographic location of the original publisher (e.g. "London, UK")

    • original-title 最初版本的题目

    • page 项目的页码范围

    • page-first 页码范围的第一个页码

    • PMCID

      PubMed Central reference number

    • PMID

      PubMed reference number

    • publisher 出版商/出版社

    • publisher-place 出版社的地理位置

    • references

      resources related to the procedural history of a legal case

    • reviewed-title

      title of the item reviewed by the current item

    • scale

      scale of e.g. a map

    • section

      container section holding the item (e.g. "politics" for a newspaper article)

    • source

      from whence the item originates (e.g. a library catalog or database)

    • status

      (publication) status of the item (e.g. "forthcoming")

    • title

      primary title of the item

    • title-short

      short/abbreviated form of "title" (also accessible through the "short" form of the "title" variable)

    • URL 链接

    • version 版本

    • year-suffix

      disambiguating year suffix in author-date styles (e.g. "a" in "Doe, 1999a")

    数据变量

    Number variables are a subset of the Standard Variablesopen in new window.

    • chapter-number

      章序号

    • collection-number

      number identifying the collection holding the item (e.g. the series number for a book)

    • edition

      版本序号(注意和 version 的区别)

    • issue

      (container) issue holding the item (e.g. "5" when citing a journal article from journal volume 2, issue 5)

    • number

      number identifying the item (e.g. a report number)

    • number-of-pages

      引用项目的总的页数

    • number-of-volumes

      total number of volumes, usable for citing multi-volume books and such

    • volume

      (container) volume holding the item (e.g. "2" when citing a chapter from book volume 2)

    日期变量

    • accessed

      date the item has been accessed

    • container

      ?

    • event-date

      date the related event took place

    • issued

      date the item was issued/published

    • original-date

      (issue) date of the original version

    • submitted

      date the item (e.g. a manuscript) has been submitted for publication

    名字变量

    • author

    • collection-editor

      editor of the collection holding the item (e.g. the series editor for a book)

    • composer

      composer (e.g. of a musical score)

    • container-author

      author of the container holding the item (e.g. the book author for a book chapter)

    • director

      director (e.g. of a film)

    • editor

    • editorial-director

      managing editor ("Directeur de la Publication" in French)

    • illustrator

      illustrator (e.g. of a children’s book)

    • interviewer

      interviewer (e.g. of an interview)

    • original-author

    • recipient

      recipient (e.g. of a letter)

    • reviewed-author

      author of the item reviewed by the current item

    • translator

    + + + diff --git a/code/citation-style-language/specification/appendix/appendix5-page-range-formats.html b/code/citation-style-language/specification/appendix/appendix5-page-range-formats.html new file mode 100644 index 00000000..379010a1 --- /dev/null +++ b/code/citation-style-language/specification/appendix/appendix5-page-range-formats.html @@ -0,0 +1,40 @@ + + + + + + + + + + 附录 V 页码范围格式 | 北辞 + + + + + +
    跳至主要內容

    附录 V 页码范围格式

    Northword小于 1 分钟

    附录 V 页码范围格式

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是:

    "chicago"

    第一个数字第二个数字
    小于 100使用所有的位数3–10; 71–72
    100 或者 100 的整数使用所有的位数100–104; 600–613; 1100–1123
    100 到 109 (包括对应 100 的倍数的范围)仅使用有变化的部分,忽略不需要的 0107–8; 505–17; 1002–6
    110 到 199 (包括对应 100 的倍数的范围)根据需要使用两位数或者更多321–25; 415–532; 11564–68; 13792–803
    4 位数如果数字是 4 位并且其中有 3 位不同,使用所有的位数1496–1504; 2787–2816

    "expanded"

    ​ 扩展模式,不适用缩写。eg. 42–45、321–328、2787–2816

    "minimal"

    ​ 第二个数字中重复的所有数字都被省略:42–5,321–8,2787–816

    "minimal-two"

    ​ 和 "minimal" 类似,但当第二个数字有两个或者两个以上的数字时,第二个数字至少保留两位。

    + + + diff --git a/code/citation-style-language/specification/appendix/appendix6-links.html b/code/citation-style-language/specification/appendix/appendix6-links.html new file mode 100644 index 00000000..5c3f5ccc --- /dev/null +++ b/code/citation-style-language/specification/appendix/appendix6-links.html @@ -0,0 +1,40 @@ + + + + + + + + + + 附录 VI 链接 | 北辞 + + + + + +
    跳至主要內容

    附录 VI 链接

    Northword小于 1 分钟

    附录 VI 链接

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules:

    If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:

    1. url: output as is
    2. doi: prepend with “https://doi.org/open in new window
    3. pmid: prepend with “https://www.ncbi.nlm.nih.gov/pubmed/open in new window
    4. pmcid: prepend with “https://www.ncbi.nlm.nih.gov/pmc/articles/open in new window

    If the identifier is rendered as a URI, include rendered URI components (e.g. “https://doi.org/open in new window”) in the link anchor. Do not include any other affix text in the link anchor (e.g. “Available from: “, “doi: “, “PMID: “).

    Citation processors should include an option flag for calling applications to disable bibliography linking behavior.

    + + + diff --git a/code/citation-style-language/specification/appendix/index.html b/code/citation-style-language/specification/appendix/index.html new file mode 100644 index 00000000..2b6cfcac --- /dev/null +++ b/code/citation-style-language/specification/appendix/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Appendix | 北辞 + + + + + + + + + diff --git a/code/citation-style-language/specification/file-types.html b/code/citation-style-language/specification/file-types.html new file mode 100644 index 00000000..5ddf8dee --- /dev/null +++ b/code/citation-style-language/specification/file-types.html @@ -0,0 +1,40 @@ + + + + + + + + + + 文件类型 | 北辞 + + + + + +
    跳至主要內容

    文件类型

    Northword大约 1 分钟

    文件类型

    [!DONE] File Types

    CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。

    独立样式

    独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。

    从属样式

    从属样式是独立样式的别名(alias),其仅包含样式元数据,不包括任何格式的指示。

    通过将具有相同引用风格的期刊(例如 "Nature Biotechnology","Nature Nanotechnology")的从属样式链接到一个单独的独立样式(例如 "Nature Journals"),从属样式就不再需要再重复一遍格式说明。

    [!NOTE] 译者注

    也就是说从属样式是依赖其他样式的,被依赖的样式成为称为父样式

    本地化文件

    每个本地化文件包含一系列对某种特定的语言 / 方言的本地化数据(术语翻译,本地化日期格式以及语法选项)。

    [!NOTE] 译者注 本地化文件主要用于在不同的语言环境中使用样式,比如在中文环境中使用,中文对应的本地化文件可以将英文中的 et al. 替换为

    + + + diff --git a/code/citation-style-language/specification/index.html b/code/citation-style-language/specification/index.html new file mode 100644 index 00000000..a888ff67 --- /dev/null +++ b/code/citation-style-language/specification/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + CSL 1.0.2 规范 | 北辞 + + + + + +
    跳至主要內容

    CSL 1.0.2 规范

    Northword大约 2 分钟

    CSL 1.0.2 规范

    [!DONE] 此页面于 2022-8-2 已校对完成。

    主要作者:Rintze M. Zelle, PhDopen in new window、 Brenton M. Wiernikopen in new window、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier

    其他贡献者:Julien Gonzalez、Sebastian Karcher、Sylvester Keil、Cormac Relf、Lars Willighagen and other CSL contributors.

    译者:Mao Zhouopen in new windowNorthwordopen in new window

    此工作以 Creative Commons Attribution-ShareAlike 4.0 International Licenseopen in new window 授权。

    介绍

    CSL(Citation Style Language,引文样式语言) 是一种基于 XML 的格式,用来描述引文、注释和参考文献的格式,他提供了:

    • 一种开放的 (开源的) 格式
    • 紧凑、稳定的样式
    • 对样式要求的广泛支持
    • 样式自动本地化
    • 对样式发布和更新的基本支持
    • 数千种免费提供的样式(CC BY-SA 授权)

    有关的其他文档,CSL 议程,样式和本地化文件详见 CSL 项目主页open in new window

    翻译习惯

    这里将列出一些常用的术语的译文,并不能保证翻译的准确性。为保持准确性,后文的描述中可能会在译文旁标注原文。

    原文译文备注
    locale files/locale本地化文件区域文件
    styles样式
    citation引文
    macro

    术语

    关键字 MUST,MUST NOT,REQUIRED,SHALL,SHALL NOT,SHOULD,SHOULD NOT,RECOMMENDED,MAY 和 OPTIONAL 按 IETF RFC 2119open in new window 中的描述解释。

    [!NOTE] 译者注:关于 IETF RFC 2119 协议

    RFC ,即 Request for Comments,意见征求稿,是由 The Internet Engineering Task Forceopen in new window 制作的文档,其中许多是各种 Internet 协议的官方标准。

    RFC 2119 协议全文:https://www.ietf.org/rfc/rfc2119.txt

    MUST:必须的。通过它描述的对象,是强制要求的。它与 REQUIRED 和 SHALL 含义相同。

    MUST NOT:不允许的。通过它描述的对象也是强制的。与 SHALL NOT 同义。

    SHOULD:在通常情况下,应当这样。但是,特殊情况下除外。与 RECOMMENDED 同义。

    SHOULD NOT:在通常情况下,不是这样。但是,特殊情况下除外。与 NOT RECOMMENDED 同义。

    MAY:可选的描述对象。与 OPTIONAL 同义。

    + + + diff --git a/code/citation-style-language/specification/locale-files-strucure.html b/code/citation-style-language/specification/locale-files-strucure.html new file mode 100644 index 00000000..c7d22c3d --- /dev/null +++ b/code/citation-style-language/specification/locale-files-strucure.html @@ -0,0 +1,83 @@ + + + + + + + + + + 本地化文件的结构 | 北辞 + + + + + +
    跳至主要內容

    本地化文件的结构

    Northword大约 7 分钟

    本地化文件的结构

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。

    每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名("xx-XX" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 "1.0")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:termscs:datecs:style-options 子元素。下面是一个 本地化文件的部分示例:

    <?xml version="1.0" encoding="UTF-8"?>
    +<locale xml:lang="en-US" version="1.0" xmlns="http://purl.org/net/xbiblio/csl">
    +  <style-options punctuation-in-quote="true"/>
    +  <date form="text">
    +    <date-part name="month" suffix=" "/>
    +    <date-part name="day" suffix=", "/>
    +    <date-part name="year"/>
    +  </date>
    +  <date form="numeric">
    +    <date-part name="year"/>
    +    <date-part name="month" form="numeric" prefix="-" range-delimiter="/"/>
    +    <date-part name="day" prefix="-" range-delimiter="/"/>
    +  </date>
    +  <terms>
    +    <term name="no date">n.d.</term>
    +    <term name="et-al">et al.</term>
    +    <term name="page">
    +      <single>page</single>
    +      <multiple>pages</multiple>
    +    </term>
    +    <term name="page" form="short">
    +      <single>p.</single>
    +      <multiple>pp.</multiple>
    +    </term>
    +  </terms>
    +</locale>
    +

    Info

    cs:info 元素用来给出本地化文件的元数据。它含有以下子元素:

    cs:translator(可选)

    cs:translator 用来致谢翻译者,并且能使用多次。在这个元素中。子元素 cs:name 必须出现一次,cs:uri 则是可选的。这些子元素应该分别包括翻译者的名字,地址和 URI。(与样式中类似)

    cs:rights(可选)

    ​ 可能出现一次。cs:rights 的内容用来指定本地化文件发布版本的 license。该元素可能会携带 license 属性来指定 license 的 URI,xml:lang 属性则用来指定元素内容的语言(值必须是 xsd:language locale codeopen in new window)。

    cs:updates(可选)

    cs:updated 元素的内容必须是一个 时间戳 来指定本地化文件最后一次更新的时间。

    Terms(术语)

    术语是本地化的字符串,比如通过使用 "and" 术语,"Doe and Smith" 在语言环境从英语到德语的转换中会自动变为 "Doe und Smith"。术语用 cs:term 元素定义,是 cs:terms 元素的子元素。每个 cs:term 元素必须携带一个 name 属性,其属性值可以设置为 [附录II 术语](#附录II 术语) 列表中的值。

    术语可以直接在 cs:term 的内容中定义,或者,在某些情况下,比如在需要单数和复数的情况下可以分别在子元素 cs:singlecs:multiple 中定义, (例如:"page""pages")。

    术语必须使用 cs:term 元素来定义,并在其中使用 form 属性来设置特定格式,form 可以设置的值为:

    • "long" - (默认值), e.g. "editor" and "editors" for the "editor" term

    • "short" - e.g. "ed." and "eds." for the term "editor"

    • "verb" - e.g. "edited by" for the term "editor"

    • "verb-short" - e.g. "ed." for the term "editor"

    • "symbol" - e.g. "§" and "§§" for the term "section"

    如果一个样式使用了一个没有定义的格式,则会会退到其他形式,比如 "werb-short" 会回退到 "verb""symbol" 会回退到 "short""verb""short" 都会回退到 "long"。如果没有可以用的语言环境或者 form 格式,改术语的渲染结果就会显示为空字符串。

    cs:term 元素可以使用 matchgendergender-form 属性来设置数字变量渲染为序数(比如,first2nd)。具体见下面的 序数后缀特定序数

    术语内容不应该包括 Latex 以及 HTML 等标记。上标可以使用 Unicode 上标字符。

    序数后缀

    数字变量可以使用 cs:number 元素以 "ordinal" 格式(即序数格式)渲染,比如:2nd。序数的后缀则是使用术语来定义的。

    "ordinal" 术语定义了默认的序数后缀格式,但这些默认的后缀可以被下面的术语对某些数字进行覆盖:

    • "ordinal-00""ordinal-09" - 默认地,当术语名称的最后一位数字与要渲染的数字的最后一个数字相同时,将使用在这个范围内的对应的术语。比如:"ordinal-00" 能够匹配数字 0 、10、20 等等。通过设置属性 match"last-two-difits"(默认值为 "last-digit"),匹配范围将为变为两位,例如:0、100、200 等。当 match 术语设置为 "whole-number" 时,只有术语与要渲染的数字相同时,才会实现匹配。
    • "ordinal-10""ordinal-99"- 默认地,当要渲染的数字的最后两位和术语中相同时,使用这个范围的术语。当 match 属性设置为 "whole-number" 时(默认为 "last-two-digits"),只有术语与要渲染的数字相同时,才会实现匹配。

    当渲染的数据对上面的两组都匹配时(比如:13 可以同时匹配 "ordinal-03""ordinal-13"),则使用 "ordinal-10""ordinal-99"

    序数术语在 CSL 1.0.1 和 CSL 1.0 中表现时不同的。当样式和本地化文件中都没有定义 "ordinal" 术语,但是定义了 "ordinal-00""ordinal-04",原始的 CSL 1.0 的方案被使用,"ordinal-01" 用于以 1 结尾的数字(以 11 结尾的数字除外)," ordinal-02" 用于以 2 结尾的数字(以 12 结尾的数字除外),"ordinal -03" 表示以 3 结尾(那些以 13 结尾的除外),"ordinal-04" 表示所有其他数字。

    性别特定序数

    一些语言使用特定的有别于性别的序数。例如,如果目标名词是男性,英语中的 "1st" 和 "first" 在法语中就翻译为 "1er" 和 "premier",如果目标名词是女性,就翻译为 "1re" 和 "première"。

    女性和男性在术语使用上的不同可以使用性别格式 gender-form 的属性来设置(分别设置为 femininemasculine),详情见 Ordinals序数(没有性别的术语表示中性)。这里涉及到两类目标名词:a) 数字变量 附带的术语,b) 月份术语(见 Months/月)。在术语设置为 "long"(默认),并且在 gender 属性被设置时(设置为 "feminine""masculine"),这些名词即使用相应的性别变体。当数字变量以序数 "ordinal" 或者 long-ordinal 形式时,将使用相同性别的序数词,如果没定义女性或男性变体,则使用中性变体。当 "day" 日期部分以序数 "ordinal" 形式呈现时,序数性别和月的术语匹配。

    下面给出 1re éd."1st ed.")、"1er janvier""January 1st")和 "3e édition""3rd edition")的示例:

    <?xml version="1.0" encoding="UTF-8"?>
    +<locale xml:lang="fr-FR">
    +  <terms>
    +    <term name="edition" gender="feminine">
    +      <single>édition</single>
    +      <multiple>éditions</multiple>
    +    </term>
    +    <term name="edition" form="short">éd.</term>
    +    <term name="month-01" gender="masculine">janvier</term>
    +    <term name="ordinal">e</term>
    +    <term name="ordinal-01" gender-form="feminine" match="whole-number">re</term>
    +    <term name="ordinal-01" gender-form="masculine" match="whole-number">er</term>
    +  </terms>
    +</locale>
    +

    本地化日期格式

    cs:date 元素中,本地化数据格式有两种格式:一种是 "numeric"(例:12-15-2005),另外一种是 "text"(例:December 15,2005)。格式在 cs:date 元素中,使用 form 属性来设置。

    日期格式使用 cs:date-part 子元素来构建(见 Date-partopen in new window)。当 cs:date-partname 属性设置为 "day""month"、或 "year" 时,反应了日期显示的顺序为日、月河年。日期可以使用 cs:datecs:date-part 元素中的 formattingopen in new windowtext-caseopen in new window 属性设置。cs:date 元素中的 delimiter 属性用来设置 cs:date-part 中不同部分的间隔,并且词缀也可以应用于 cs:date-part 元素。(译注:这里的词缀指的是前后的括号等等。)

    :定义本地化日期格式时,不允许在 cs:date 上使用词缀。此限制适用于将特定于语言环境的词缀(在 cs:date-part 元素上设置)与任何特定于样式的词缀(在调用 cs:date 元素上设置)分开,例如括号:

    <macro name="issued">
    + <date variable="issued" form="numeric" prefix="(" suffix=")"/>
    +</macro>
    +

    本地化选项

    本地化选项有两个,limit-day-ordinals-to-day-1punctuation-in-quote (见 Locale Optionsopen in new window)。这些全局选项(同时影响引文和参考文献条目)在 cs:style-options 中被设置为可选属性。

    + + + diff --git a/code/citation-style-language/specification/namespacing.html b/code/citation-style-language/specification/namespacing.html new file mode 100644 index 00000000..e0ad7192 --- /dev/null +++ b/code/citation-style-language/specification/namespacing.html @@ -0,0 +1,40 @@ + + + + + + + + + + 命名空间 | 北辞 + + + + + +
    跳至主要內容

    命名空间

    Northword小于 1 分钟

    命名空间

    [!Done] Namespacing

    CSL XML 命名空间 URI 是 http://purl.org/net/xbiblio/cslopen in new window

    在本规范中,当提及 CSL 元素时,命名空间前缀为 cs: ,但对于根元素 cs:stylecs:locale 的默认命名空间声明(用 xmlns 属性设置),通常省略 cs:

    + + + diff --git a/code/citation-style-language/specification/rendering-elements.html b/code/citation-style-language/specification/rendering-elements.html new file mode 100644 index 00000000..b3d23ead --- /dev/null +++ b/code/citation-style-language/specification/rendering-elements.html @@ -0,0 +1,121 @@ + + + + + + + + + + 渲染元素 | 北辞 + + + + + +
    跳至主要內容

    渲染元素

    Northword大约 23 分钟

    渲染元素

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。

    Layout

    cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixesformattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 "(1,2)" 类型的引文可以使用下面的代码实现:

    <citation>
    +  <layout prefix="(" suffix=")" delimiter=", ">
    +    <text variable="citation-number"/>
    +  </layout>
    +</citation>
    +

    Text

    cs:text 渲染元素用来输出文字。其必须携带下面的属性来确定什么部分需要渲染:

    • variable- 渲染一个变量的文本内容。属性值必须是 标准变量。可以与 form 属性一起选择变量的 "long"(默认)或 "short" 形式(例如:设置题目,完整题目或者简写)。如果选择了 "short" 形式,但是却没法获得,就使用 "long" 形式来渲染。
    • macro - 渲染宏的文字输出。属性值必须和 cs:macro 元素的 name 属性的值相匹配。
    • term - 渲染术语。属性必须是 [附录II 术语](#附录II 术语) 中的术语列表中的一个。通过设置复数属性 plura l 来这只其使用单数还是复数形式,其中 "true" 为默认,表示使用复数形式,设置为 "false" 表示使用单数形式。 使用 form 属性可以设置术语的形式,其值可以为 "long" (默认)、"short""verb""verb-short" 或者 "symbol" (见 术语).
    • value - 渲染属性值自己。

    一个 cs:text 的渲染 title 变量的例子:

    <text variable="title"/>
    +

    cs:text 可能会携带 affixesopen in new windowdisplayopen in new windowformattingopen in new windowquotesopen in new windowstrip-periodsopen in new windowtext-caseopen in new window 属性。

    Date

    cs:date 渲染元素输出必须从 日期变量 列表中的选择。日期可以以本地化或者非本地化格式呈现。

    本地化的日期格式 通过可选的 form 属性来选择,其值必须设置为 "numeric"(完全的数字格式 ,例如:12-15-2005)或者 "text"(非数字的月份格式,例如: December 15, 2005)。本地化日期格式可以通过两种方式进行自定义。第一种:date-parts 属性可以用来设置不同的日期组成部分。其值可以设置为:

    • "year-month-day" - 默认值,渲染年,月,日
    • "year-month" - 渲染年月
    • "year" - 只渲染年

    第二种,cs:date 可以含有一个或者多个 cs:date-part 子元素(见 Date-part)。在这些子元素中可以设置属性来覆盖之前的本地化设置(例如:要获得所有语言环境的缩写月份,可以将月份的 cs:date-part 元素的 form 属性设置为 "short")。这些 cs:date-part 子元素不影响各个日期部分渲染的顺序和以及其是否渲染。cs:date-part 元素中不能使用词缀 Affixes.

    没有属性 form 的情况下,cs:date 则描述了一个自带的非本地化的日期格式。其日期格式使用 cs:date-part 子元素来构建。在使用 name 属性并设置为 daymonthyear 时,这些元素的顺序反应了其显示顺序。日期可以在 cs:date-part 元素中使用 formatting 属性以及多个 cs:date-part 的属性来格式化(见 Date-part)。cs:date 中的 delimiter 属性可以用来设置 cs:date-part 元素不同日期部分的分隔符,此外,词缀 可以用在 cs:date-part elements。

    本地化的日期或者是非本地化的日期,, cs:date 都可能携带 affixesopen in new windowdisplayopen in new windowformattingopen in new windowtext-caseopen in new window 属性。

    Date-part

    cs:date-part 元素用来控制日期的各个部分怎么渲染。除了其父元素 cs:date 调用了本地化日期格式,这些子元素同样可以决定哪些部分出现以及各部分的渲染顺序。cs:date-part 元素描述了 name 属性选择的日期部分,其 name 值可以是:

    "day"

    ​ 对于 "day" 来说,cs:date-part 可能会携带 form 属性,值可以设置为:

    • "numeric" - (默认),例如,每个月第一天显示为 1

    • "numeric-leading-zeros" - 不够的位数用 0 补齐,例如,01

    • "ordinal" - 使用序数形式,例如,1st

      有的语言种,比如法语,只在月份的第一天使用 "oridinal" 也就是序数形式("1er janvier","2 janvier","3 janvier" 等)。这种输出可以通过 "oridinal" 以及 limit-day-oridinals-to-day-1 属性来设置 (see 本地化选项)。

    "month"

    ​ 对于 "month" 来说,cs:date-part 可能会携带 strip-periodsform 属性。在 locale files 中,月份缩写应该后面要加点(例如: "Jan.", "Feb.")。点可以设置 strip-periods"true" 去掉。form 属性可以设置为:

    • "long" - 默认,例如:January
    • "short" - 例如:Jan.
    • "numeric" - 例如:1
    • "numeric-leading-zeros" - 例如:01

    "year"

    ​ 对 "year" 来说,cs:date-part 可能会携带 form 属性,值可以设置为:

    • "long" - 默认,例如:2020
    • "short" - 例如:20

    cs:date-part 也可能携带 formattingopen in new windowtext-caseopen in new windowrange-delimiter 属性。除在 cs:date 元素中使用,其他情况下,cs:date-part 是可以使用词缀的。

    Date Ranges

    默认的日期范围中的分隔符是短线(en-dash),比如:May–July 2008。可以在 cs:date-part 元素中通过 range-delimiter 属性来设置常用的分隔符。当日期范围被渲染的时候,范围分隔符从 cs:date-part 元素中提取,并且匹配两个日期差别中最大的部分("year","month",或 "day")。如下面的例子,将会渲染出类似 "1-4 May 2008", "May–July 2008""May 2008/June 2009" 的日期范围。

    <style>
    +  <citation>
    +    <layout>
    +      <date variable="issued">
    +        <date-part name="day" suffix=" " range-delimiter="-"/>
    +        <date-part name="month" suffix=" "/>
    +        <date-part name="year" range-delimiter="/"/>
    +      </date>
    +    </layout>
    +  </citation>
    +</style>
    +

    AD and BC

    "ad" 一词(Anno Domini)自动附加到小于四位数的正年份(例如,"79" 变为 "79AD")。"bc" 一词(Before Christ)自动附加到负年份(例如,"-2500" 变为 "2500BC")。

    Seasons

    如果日期中包含了季节而不是月份,日期术语 ("season-01""season-04", 分别代表春夏秋冬) 将取代月份术语。比如,下面将会被渲染为 "May 2008""Winter 2009"

    <style>
    +  <citation>
    +    <layout>
    +      <date variable="issued">
    +        <date-part name="month" suffix=" "/>
    +        <date-part name="year"/>
    +      </date>
    +    </layout>
    +  </citation>
    +</style>
    +

    Approximate Dates

    近似日期,在 is-uncertain-date 属性设置为 "true" 时即渲染(见 choose)。例如:下面的例子讲渲染出 2005(正常日期)和 ca.2003(近似日期)的结果。

    <style>
    +  <citation>
    +    <layout>
    +      <choose>
    +        <if is-uncertain-date="issued">
    +          <text term="circa" form="short" suffix=" "/> # circa 是大约的意思
    +        </if>
    +      </choose>
    +      <date variable="issued">
    +        <date-part name="year"/>
    +      </date>
    +    </layout>
    +  </citation>
    +</style>
    +

    Number

    cs:number 渲染元素输出 variable 属性选择的数字变量。数字变量标准变量 的子集。

    使用 cs:number 元素来渲染数字变量时,如果只包含数字内容 (使用 is-numeric 属性设置,见 Chooseopen in new window),数字就被提取出来并渲染。变量内容包含非数字内容时,变量内容将呈现为原样。

    在提取的过程中,用连字符分隔的数字将去掉中间的空格("2 - 4" 变为 "2-4")。用逗号分隔的数字在逗号后会添加一个空格,并删掉其余的空格 ("2,3" 和 "2 , 3" 变为 "2, 3")。当数字使用 & 分隔时,在前后各添加一个空格 ("2&3" 变为 "2 & 3")。

    提取的数字可以通过 form 属性行进格式化,其值可以设置为:

    • "numeric" - 默认,例如: "1", "2", "3"
    • "ordinal" - 序数数字,例如: "1st", "2nd", "3rd"。序数后缀可以使用术语定义 (见 序数后缀.
    • "long-ordinal" - 长序数,例如: "first", "second", "third"。畅序数使用术语 "long-ordinal-01" 到 "long-ordinal-10" 定义, 用来在数字 1 到 10 使用。对于其他的数字,长序数渲染的结果讲和序数相同.
    • "roman" - 罗马数字,例如:"i", "ii", "iii"

    带有前缀或者后缀的数字不能使用罗马数字进行排序或者渲染(例如:"2E" 仍然时 "2E")。没有词缀的数字可以被分别转换("2, 3" 可以转换为 "2nd, 3rd", "second, third" 或者 "ii, iii")。

    cs:number 元素可能会携带 affixesopen in new windowdisplayopen in new windowformattingopen in new windowtext-caseopen in new window 属性。

    Names

    cs:names 元素用来输出一个或多个 名字变量(或名称变量)的内容(通过必选属性 variable 来选择),每个 names 元素可以包含一个或者多个名称变量(例如:"author" 名称变量会携带引用项中所有的作者名称)。如果选择了多个变量,每个变量将会按顺序单独渲染,但当选择中包括编辑和翻译("editor""translator")不适用。当包含的内容中有两个名字变量相同时,则只渲染一个。另外,如果 cs:names 元素中包含 cs:label 元素,"editortranslator" 将用来代替 "editor""translator"(例如:Doe(editor & tranlator))。cs:names 元素中的 delimiter 属性可以用来分割不同的名字变量(例如:Doe, Smith (editors); Johnson (translator) 中间使用了分号隔开)。

    <names variable="editor translator" delimiter="; ">
    +  <label prefix=" (" suffix=")"/>
    +</names>
    +

    cs:names 有四个子元素:cs:namecs:et-alcs:substitutecs:labelcs:names 元素可能会携带 affixesopen in new window, displayopen in new windowformattingopen in new window 属性。

    Name

    cs:name 元素的一个可选的子元素 cs:names 可以用来描述单个 names 的格式,以及名称变量中不同 names 的分隔。cs:name 可能携带下面的属性:

    and

    ​ 在名称变量中用来设置倒数第二个名字和倒数第一个名字的分隔符。可选的值为 "text"("Doe, Johnson and Smith") 或者 "symbol"(eg: "Doe, Johnson & Smith")。

    delimiter

    ​ 在名称变量中设置字符串来分隔名称。默认的是 ","(e.g. "Doe, Smith")。

    delimiter-precedes-et-al

    ​ 确定在使用 et-al 缩写的情况下,在截断的姓名列表和 et-al 术语之间何时使用分隔符或者空格。该属性可选的值有:

    • "contextual" - (default), 在作者列表中有 2 个及以上的人时使用
      • 1 name: "J. Doe et al."
      • 2 names: "J. Doe, S. Smith, et al." 两个人,则在最后一个人名和 et-al 间使用 , 分隔
    • "after-inverted-name" - 在 name-as-sort-order 属性使当前的名字发生了颠倒时使用。例如:当 name-as-sort-order 属性设置为 "first" 时,第一个名字的前后部分 Doe 和 J 发生了反转,因此在第一个名字后面使用了分隔符 ,
      • "Doe, J., et al."
      • "Doe, J., S. Smith et al."
    • "always" - 不论几个名字或者怎样的设置,总是使用
      • 1 name: "J. Doe, et al."
      • 2 names: "J. Doe, S. Smith, et al."
    • "never" - 禁止使用分隔符,不论几个名字。
      • 1 name: "J. Doe et al."
      • 2 names: "J. Doe, S. Smith et al."

    delimiter-precedes-last

    在名字列表中确定何时使用分隔符来分割最后一个作者和倒数第二个作者。如果 and 没有被设置,则不论 delimiter-precedes-last 属性的值,名字分隔符总是使用。

    • "contextual" - 默认,当名字列表中的名字有 3 个或以上时使用。下面在使用 3 个名字时,在 and 前使用了分隔符 ,
      • 2 个名字: "J. Doe and T. Williams"
      • 3 个名字: "J. Doe, S. Smith, and T. Williams"
    • "after-inverted-name" - 在 name-as-sort-order 属性使当前的名字发生了颠倒时使用。例如:当 name-as-sort-order 属性设置为 "first" 时,仅在第一个名字后使用了分隔符 ,
      • "Doe, J., and T. Williams"
      • "Doe, J., S. Smith and T. Williams"
    • "always" - 分隔符一直使用。
      • 2 names: "J. Doe, and T. Williams"
      • 3 names: "J. Doe, S. Smith, and T. Williams"
    • "never" - 禁用分隔符
      • 2 names: "J. Doe and T. Williams"
      • 3 names: "J. Doe, S. Smith and T. Williams"

    et-al-min/et-al-use-first

    通过设置这两个属性,可是使用 et-al 对名字列表进行缩写。如果名字变量中的名字的数目超过了 et-al-min 属性设置的值,则达到 et-al-use-first 设置的名称数量后,渲染的名字列表将被截断。"et-al"(或者 "and others")术语用来添加到截断列表的后面(见 et-al)。默认地,当名字列表被截断到单个名字,则名字和 "et-al" 术语之间使用空格进行隔开(例如:Doe et al.)。当一个名字列表被截断到两个或者三个名字,则使用分隔符(例如:Doe, Smith, et al.)。这些行为可以使用 delimiter-precedes-et-al 属性来设置。

    et-al-subsequent-min/st-al-subsequent-use-first

    如果使用了这两个属性,则属性的值分别替换 et-al-minet-al-use-first 的值以便后续引用。

    et-al-use-last

    当该属性设置为 "true" 时,(默认为 "false"),则使用下面的格式:截断的名称列表,分隔符,省略号,名称列表最后一个名字。这个属性只能在名称列表有多余两个的名称时使用。例:

    A. Goffeau, B. G. Barrell, H. Bussey, R. W. Davis, B. Dujon, H.
    +Feldmann, … S. G. Oliver
    +

    下面讨论的属性将只会影响单个人的名字,这里先给出名字的组成部分。单个人的名字必须含有 "family" 部分,还可以含有 "given","suffix","non-dropping-particle",和 "dropping particle" 等部分。下面对这些部分分别进行解释:

    • "family" - 姓氏,必须去掉 particle(译注:暂译为粒子)和后缀
    • "given" - 全名 "John Edward" 或者 J. E.
    • "suffix" - 名字后缀,比如:外国人常用的 Jr 或者罗马数字(经常翻译为 xx 世,比如伊丽莎白二世) "Jr." in "John Smith Jr." 或者 "III" in "Bill Gates III"
    • "non-dropping-particle" - 不可删除(省略)的粒子。当只显示姓氏的时候,不能省略 ("de" in the Dutch surname "de Koning") ,但是可能会在姓氏中分别对待,比如在排序的时候
    • "dropping-particle" - 可删除的粒子。当只显示姓氏的是欧,可以省略 ("van" in "Ludwig van Beethoven", which becomes "Beethoven")

    下面的属性将会影响单个人的名称的渲染:

    form

    指定是否显示名字的所有部分(默认为 "long"),或者只显示姓氏和不可省略粒子(值为 "short")。除这两种情况外,还可以设置为 "count",返回使用 cs:names 元素渲染的部分的总数(考虑 et-al 缩写和编辑/翻译等折叠的影响)。

    initialize

    当该属性设置为 "false 时(默认的结果为 "true"),并且 "initialize-with" 属性被设置时,全名将不使用缩写。但是,如果在全名中有单独的大写字母的时候,仍然会添加 ``"initialize-with"的值。例如:当initialize设置为"false",并且 initialize-with设置为"."` 时,James T kirk 将会变为 James T. Kirk。

    initialize-with

    当该实行被设置时,全名将会使用缩写。该属性将会在每个首字母后添加属性值,比如:上述的名字会变为 J.J. Doe。对于合成的全名,例如:Jean-luc,可以使用全局的带有连字符的 initialize-with-hyphen 属性来设置其缩写形式(见 人名中的连字符)。

    name-as-sort-order

    指定名字的显示顺序为:姓,然后是名,例如:John Doe 变为 Doe,John。该属性值可以设置为:

    • "first" - 属性只影响名字变量中的第一个名字
    • "all" - 属性将会影响所有的名字

    注意:即使 name-as-sort-order 改变了名字内部的顺序,最终显示的顺序不一定与包含粒子和后缀的名字的相同(见 名字内部顺序)。name-as-sort-order 只影响以拉丁字母或者西里尔字母书写的名字。其他字母书写的名字(比如,亚洲的大部分名字)总是将全名中的姓显示在前面。

    sort-separator

    设置名字的不同部分由于 name-as-sort-order 属性导致的内部位置变换后的分隔符。默认值为 ","(Doe, John)。和 name-as-sort-order 属性相同,该属性只适用于拉丁字母和西里尔字母的名字。

    cs:name 元素也可以携带 词缀格式化

    名字内部顺序

    名字内部各部分的顺序取决于 cs:name 元素中 formname-as-sort-order 属性和 cs:style 元素中的 demote-non-droping-particle 属性的设置。名称各部分的显示和排序的属性通常是不同的。下面将对名字顺序进行简单的介绍:

    拉丁/西里尔名字的显示顺序


    条件:form 属性设置为 "long"

    顺序:1. 名 2. 可省略粒子 3. 不可省略粒子 4. 姓 5. 后缀

    示例:Jean de La Fontaine III


    条件:form 属性设置为 "long"name-as-sort-order 属性激活,demote-non-dropping-particle 属性设置为 "never" 或者 "sort-only"

    顺序:1. 不可省略粒子 2. 姓 3. 名 4. 可省略粒子 5. 后缀

    示例:La Fontaine, Jean de, III


    条件:form 属性设置为 "long"name-as-sort-order 属性激活,demote-non-dropping-particle 属性设置为 "display-and-sort"

    顺序:1. 姓 2. 名 3. 可省略粒子 4. 不可省略粒子 5. 后缀

    示例:Fontaine, Jean de La III


    条件:form 属性设置为 "short"

    顺序:1. 不可省略粒子 2. 姓

    示例:La Fontaine


    拉丁/西里尔名字的排序顺序


    条件:demote-non-dropping-particle 属性设置为 "never"

    顺序:1. 不可省略粒子 + 姓 2. 可省略粒子 3. 名 4. 后缀

    示例:La Fontaine de Jean III


    条件:demote-non-dropping-particle 属性设置为 "sort-only" 或者 "display-and-sort"

    顺序:1. 姓 2. 可省略粒子 + 不可省略粒子 3. 名 4. 后缀

    示例:Fontaine de La Jean III


    非拉丁和非西里尔名字的显示和排序顺序


    条件:form 属性设置为 "long"

    顺序:1. 姓 2. 名

    示例:张三 或者 Zhang San


    条件:form 属性设置为 "short"

    顺序:1. 姓

    示例:张 或者 Zhang


    名字格式化

    cs:name 元素可能会携带一个或者两个 cs:name-part 子元素来对名字的小部分进行特定的格式化。cs:name-part 必须携带 name 属性,设置为 "given" 或者 "family"

    如果设置为 "given"cs:name-part 元素的 格式化文字大小写 属性会影响 "given""dropping-particle" 部分。词缀 出现在 "given" 左右,将该部分扩起来。

    如果设置为 "family"cs:name-part 元素的 格式化文字大小写 属性会影响 "given""non-dropping-particle" 部分。词缀 出现在 "family" 左右,将该部分扩起来。

    "suffix" 部分不受 name-part 部分格式限制。cs:name-part 元素不影响 name-part 渲染的顺序。下面的代码,将产生类似 Jane DOE 的效果:

    <names variable="author">
    +  <name>
    +    <name-part name="family" text-case="uppercase"/>
    +  </name>
    +</names>
    +

    Et-al

    Et-al 缩写通过 et-al-... 属性来控制(见 Name),同时也可以使用可选的 cs:et-al 元素设置,cs:et-al 元素必须放在 cs:name 元素后。term 属性可以被设置为 "et-al"(默认)或者 "and others"格式化 属性可以用来设置 et-al 的格式,下面是 "et-al" 术语的一个例子:

    <names variable="author">
    +  <et-al term="and others" font-style="italic"/>
    +</names>
    +

    Substitute

    可选的 cs:substitute 元素,是 cs:names 的子元素,且必须是最后一个子元素,在父元素 cs:names 中指定的 名称变量 为空时添加替换。替换必须放在 cs:substitute 元素中,并且必须包含一个或者多个渲染元素(除 cs:layout)。cs:names 的简洁版本没有子元素,继承了 cs:names 元素中在 cs:namecs:et-al 子元素的属性值。如果 cs:substitute 元素包含了多个子元素,第一个非空的元素用于替换。替换变量在输出的其余部分被抑制,以防止重复。下面的例子中:"author" 名称变量为空时,就被 "editor" 名称变量替换,在没有 editor 时,则使用 "title" 宏替换。

    <macro name="author">
    +  <names variable="author">
    +    <substitute>
    +      <names variable="editor"/>
    +      <text macro="title"/>
    +    </substitute>
    +  </names>
    +</macro>
    +

    Label in cs:names

    cs:label 元素是可选的(见 Label),而且必须位于 cs:namecs:et-al 元素后,在 cs:substitute 元素前。当 cs:label 作为 cs:names 元素的子元素时,cs:label 不能携带 variable 属性,而是使用父元素 cs:names 中的变量。第二个区别是:form 属性可以设置为 "verb" 或者 "verb-short",其所有允许的值为:

    • "long" - (默认), 例如, "editor" 术语渲染为 "editor" 和 "editors"
    • "short" - 例如,"editor" 术语渲染为 "ed." 和 "eds"
    • "verb" - 例如,"editor" 术语渲染为 "edited by"
    • "verb-short" - 例如,"editor" 术语渲染为 "ed."
    • "symbol" - 例如,"section" 术语渲染为 "§" 和 "§§"

    Label

    cs:label 渲染元素输出与所选变量匹配的术语,该属性必须设置为 "locator"、"page" 或数字变量之一。只有当选择的变量是非空的时候,术语才会渲染。例如:

    <group delimiter=" ">
    +  <label variable="page"/>
    +  <text variable="page"/>
    +</group>
    +

    可以生成 "page 3" 或者 "pages 5-7"cs:label 可能会携带下面的属性:

    form

    ​ 选择术语的形式,可以设置为下面的值:

    • "long" - (默认), 例如: "page" 术语渲染为 "page"/"pages"
    • "short" - 例如: "page" 术语渲染为 "p."/"pp."
    • "symbol" - 例如: "section" 术语渲染为 "§"/"§§"

    plural

    ​ 设置术语的复数形式,可以使用下面的值:

    • "contextual" - (默认),复数形式的渲染和具体的内容相匹配。当内容中包含多个数字时,使用复数形式。如下面的渲染结果:"page 1","pages 1-3","volume 2","volumes 2 & 4"。或者在使用 number-of-pagesnumber-of-volumes 时,数字大于 1,例如: ("1 volume" 和 "3 volumes"。
    • "always" - 总是使用复数形式,不管具体的内容如何。例如:"pages 1" 和 "pages 1-3"
    • "never" - 禁止使用复数形式,不管具体内容: "page 1" 和 "page 1-3"

    cs:label 也可能会携带 affixesopen in new window, formattingopen in new window, text-caseopen in new windowstrip-periodsopen in new window 属性。

    Group

    cs:group 元素必须包含一个或者多个渲染元素(除了 cs:layout)。cs:group 可以携带 delimiter 属性来分隔子元素以及 affixesdisplayformatting 属性。cs:group 隐含的条件,当以下情况出现时,cs:group 和它的子元素将会被抑制:a) 在 cs:group 中至少一个渲染元素调用了变量(直接地或者通过宏调用),b) 所有被调用得变量都为空。

    <layout>
    +  <group delimiter=" ">
    +    <text term="retrieved"/>
    +    <text term="from"/>
    +    <text variable="URL"/>
    +  </group>
    +</layout>
    +

    上述代码可以生成 "retrieved from http://dx.doi.org/10.1128/AEM.02591-07" 类似得结果,但是当 URL 为空的时候,不生成结果。

    Choose

    cs:choose 元素允许有条件的渲染元素。下面的例子的意思为:在 "issud" 日期变量存在的情况下,就实施渲染,如果不存在,就给出 "no date" 术语:

    <choose>
    +  <if variable="issued">
    +    <date variable="issued" form="numeric"/>
    +  </if>
    +  <else>
    +    <text term="no date"/>
    +  </else>
    +</choose>
    +

    cs:choose 元素中必须还有 cs:if 子元素,后面还可以有一个或者多个 cs:else-if 子元素以及一个可选的用来结尾的 cs:else 元素。cs:ifcs:else-if 元素可能回包含任意个除 cs:layout 的渲染元素。由于空的 cs:else 元素是多余的,所以 cs:else 元素必须至少包含一个渲染元素。cs:ifcs:else-if 元素必须含有一个或多个判断条件,这些条件可以使用下买的属性设置:

    disambiguate

    ​ 当改属性设置为 "true"(唯一允许的值) 的时候,在元素内容消除了两个相同的引用时渲染。当所有其他消除歧义的方法都不能识别唯一的目标时,才进行消除歧义的尝试。

    is-numeric

    ​ 测试给定的变量([附录 IV 变量](#附录IV 变量))是不是包含数字部分。如果内容仅由数字构成,则识别为数字。数字可以带有前缀、后缀("D2","2b","L2d")、并且可能被逗号,连字符或 & 分隔("2, 3","2-4","2 & 4")。 例如, "2nd" 被识别为 "true" ,但 "second" 和 "2nd edition" 被识别为 "false".

    is-uncertain-date

    ​ 判断给定的 日期变量 是不是包含 [近似日期](#Approximate Dates)。

    locator

    ​ 判断位置是不是和给定的位置符合。这里的位置主要是在一个文档中的位置,比如,题目,第几段。使用 "sub-verbo" 判断是不是 "sub-verbo" 类型

    position

    ​ 判断引用的位置湿否和给定的位置匹配。当在 cs:bibliography 中调用时,position 的结果为 "false"。位置可以使用下面的选项测试:

    • "first": 第一个引用项的位置

    • "ibid"/"ibid-with-locator"/"subsequent": 引用先前引用的项目的引用,Such cites may also have the "ibid" or "ibid-with-locator" position when:

      1. the current cite immediately follows on another cite, within the same citation, that references the same item

      or

      1. the current cite is the first cite in the citation, and the previous citation consists of a single cite referencing the same item

      If either requirement is met, the presence of locators determines which position is assigned:

      • Preceding cite does not have a locator: if the current cite has a locator, the position of the current cite is "ibid-with-locator". Otherwise the position is "ibid".
      • Preceding cite does have a locator: if the current cite has the same locator, the position of the current cite is "ibid". If the locator differs the position is "ibid-with-locator". If the current cite lacks a locator its only position is "subsequent".
    • "near-note": position of a cite following another cite referencing the same item. Both cites have to be located in foot or endnotes, and the distance between both cites may not exceed the maximum distance (measured in number of foot or endnotes) set with the near-note-distance option (see Note Distanceopen in new window).

    Whenever position="ibid-with-locator" tests true, position="ibid" also tests true. And whenever position="ibid" or position="near-note" test true, position="subsequent" also tests true.

    type

    ​ 测试项目是不是和给定的类型匹配([附录 III 类型](#附录 III 类型))。这里的类型指条目的类型,例如,书,期刊文献,学位论文。

    variable

    ​ 测试给定变量([附录 IV 变量](#附录IV 变量))的默认的形式 (long) 是不是为空。


    除了 disambiguate 外,所有的条件都允许有多个测试值,多个测试值使用空格分隔("book thesis")。

    cs:if 元素和 cs:else-if 元素可能会携带 match 属性用来控制判断的逻辑,match 可设置的值为:

    • "all" - 默认,仅当所有给定测试值都为 true 的时候结果才为 true
    • "any" - 当任意一个值为 true 的时候,结果就为 true
    • "none" - 当没有值测试为 true 的时候,结果为 true
    + + + diff --git a/code/citation-style-language/specification/style-behavior.html b/code/citation-style-language/specification/style-behavior.html new file mode 100644 index 00000000..91a76be6 --- /dev/null +++ b/code/citation-style-language/specification/style-behavior.html @@ -0,0 +1,151 @@ + + + + + + + + + + 样式的行为 | 北辞 + + + + + +
    跳至主要內容

    样式的行为

    Northword大约 22 分钟

    样式的行为

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    选项

    样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:stylecs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。

    引文选项

    消除歧义

    当一个引用对应多个参考文献条目的时候会产生歧义。下面有四种方法用来消除歧义:

    1. 显示更多作者姓名
    2. 扩展姓名(添加缩写或者完整的名)
    3. 添加年份后缀
    4. cs:choosedisambiguate 属性为 true 的时候,实行渲染

    方法 2 也可以在全局名称歧义消除异己整个文档中有歧义的地方。

    消除歧义的方法在下面属性被设置的时候,将会被激活,并且按上述列表中的方法进行尝试:

    disambiguate-add-names 步骤 1

    ​ 如果设置为 "true"(默认为 false),使用 et-al 缩写锁代替的名字列表会逐个的加入到渲染列表中,知道添加的名字可以消除引用歧义为止。

    disambiguate-add-givenname 步骤 2

    ​ 如果设置为 "true"(默认为 false),产生歧义的名字将被扩展。名字扩展可以使用 givenname-disambiguation-rule 设置。下面是一个例子。

    含有歧义的引用消除歧义的引用
    (Simpson 2005; Simpson 2005)(H. Simpson 2005; B. Simpson 2005)
    (Doe 1950; Doe 1950)(John Doe 1950; Jane Doe 1950)

    如果不能通过扩展名字来实现消除歧义,当 disambiguate-add-names 属性设置为 "true", the names still hidden as a result of et-al abbreviation after the disambiguation attempt of disambiguate-add-names are added one by one to all members of a set of ambiguous cites, until no more cites in the set can be disambiguated by adding expanded names.

    givenname-disambiguation-rule

    用来指定 a) 名字扩展的目的是不是仅限于消除歧义,还是对消除歧义的名字有其他的目的 (只有在后面的情况中,有歧义的名字才会在明确的引用中扩展,例如:从 (Doe 1950; Doe 2000) 扩展到 (Jane Doe 1950; John Doe 2000)) b) 名称扩展是针对全部还是针对每个引用的名字 c) 扩展名字的方法。

    扩展单个名字

    ​ 扩展单个名字的步骤是:

    1. 如果 initialize-with 被设置并且 initialize 的值为默认的 true: (a) 可以通过 "long" 而不是 "short" 的形式来渲染首字母 (e.g. Doe 变为 J. Doe) (b) 如果 initialize 设置为 "flase",完整的姓名被渲染,而不是首字母(J. Doe 变为 John Doe)
    2. 如果 initialize-with 没有被设置,使用 "long" 格式渲染完整的姓名(Doe 变为 John Doe)

    消除歧义法则

    givenname-disambiguation-rule 属性可设置的值为:

    ​ "all-name"

    ​ 名字扩展具有消除名字歧义和消除引用歧义的双重目的。在渲染的有歧义的名称中,所有的有歧义的或者没有歧义的名字都将被消除歧义。

    ​ "all-names-with-initials"

    ​ 和 "all-name" 一样,但是名称的扩展仅限于缩写。当 initialize-with 没被设置或者 initialize 被设置为 "false" 时,不会进行消除歧义的尝试。

    ​ "primary-name"

    ​ 和 "all-name" 一样,但是消除歧义仅限于每个引用的第一个名字。

    ​ "primary-name-with-initials"

    ​ 和 "all-names-with-initials" 一样,但是消除歧义仅限于每个引用的第一个名字。

    ​ "by-cite"

    ​ 默认,和 "all-name" 一样,但是名称扩展的目的仅限于消除引用的歧义,只有有歧义的名字在有歧义的引用中才会被影响,并且在引用的第一个名字消除歧义后就停止消除歧义。

    disambiguate-add-year-suffix 步骤 3

    如果设置为 "true"(默认为 "false"),字母序的年后缀将会被添加到有歧义的名字上("Doe 2007, Doe 2007" 变为 "Doe 2007a, Doe 2007b")。当字母序到达 "z",后,就会启用两个字母("z", "aa", "ab", …, "az", "ba" 等等)。


    如果应用上述的歧义消除方法后仍然存在歧义,则尝试通过 disambiguate 条件来渲染不同的引用 [步骤 4] (见 choose)。

    引用分组

    通过引用分组,可以将相同名称的文本引用放在一起,比如:(Doe 1999; Smith 2002; Doe 2006; Doe et al. 2007) 将会变为 (Doe 1999; Doe 2006; Smith 2002; Doe et al. 2007)。引用分组在引用排序和消除歧义后执行。分组后的引用保持其相对顺序,并移到第一个改组中引用出现的第一个位置。

    引用分组可以在 cs:citation 元素中通过设置 cite-group-delimiter 属性或者 collapse 属性(见 [cite collapsing](#cite collapsing))激活。

    cite-group-delimiter

    激活引用分组并为引用组中的引用指定分隔符,默认为 ","。例如,当 cs:citation 元素中的 cs:layout 中的 delimiter 设置为 ";" 时,collapse 设置为 "year"cite-group-delimiter 设置为 ",",将生成类似 "(Doe 1999,2001; Jones 2000)" 的引用。

    cite collapsing/引用折叠

    author 或者 author-date 类型的引用格式中的引用分组和数字格式中的引用范围可以通过 collapse 属性来折叠。折叠引用组中分隔符可以是使用 year-suffix-delimiterafter-collapse-delimiter 属性来设置:

    collapse

    激活引用分组和折叠。允许的值为:

    • "citation-number" - 当使用数字样式的时候,折叠引用数字的范围(通过 "citation-number" 变量来渲染) ,例如:"[1, 2, 3, 5]" 变为 "[1–3, 5]"。只有升序的引用才可以折叠,比如: "[3, 2, 1]" 将不会折叠。
    • "year" - 通过压缩相同的名字来折叠引用分组,例如: "(Doe 2000, Doe 2001)" 变为 "(Doe 2000, 2001)"。
    • "year-suffix" - 对名字相同的折叠项,折叠相同的年份,例如: "(Doe 2000a, 2000b)" 变为 "(Doe 2000a, b)"。
    • "year-suffix-ranged" - 对名字相同的折叠项,折叠年份范围,例如: "(Doe 2000a, b, c, e)" 变为 "(Doe 2000a–c,e)"。

    disambiguate-add-year-suffix 设置为 "false" 时,或者引用中包含位置(例如:“(Doe 2000a-c, 2000d, p. 5, 2000e,f)”,"Doe 2000d" 有一个页码位置),"year-suffix" 和 "year-suffix-ranged" 回退到 "year"。

    year-suffix-delimiter

    ​ 设置年份后缀的分隔符。默认在 cs:citation 元素的 cs:layout 中设置。例如:当 collapse 设置为 "year-suffix"cs:citation 中的 cs:layoutdelimiter 元素设置为 ";",并且 year-suffix-delimiter 设置为 "," 时,渲染结果将类似于 "(Doe 1999a,b; Jones 2000)"。

    after-collapse-delimiter

    ​ 设置折叠后的引用组要使用的分隔符。默认在 cs:citation 元素的 cs:layout 中设置。例如:当 collapse 设置为 "year"cs:citation 中的 cs:layoutdelimiter 元素设置为 ",",并且 after-collapse-delimiter 设置为 ";" 时,渲染结果将类似于 "(Doe 1999, 2001; Jones 2000, Brown 2001)"。

    标注距离

    near-note-distance

    当有一个预先的标注时,"near-note" 位置是我引用被判断为真,这种预先的标注可以为 a) 指向同一个项目 b) 当前注视以前的脚注或尾注。(译注:不知道讲了什么)

    参考文献目录选项

    空白

    hanging-indent

    ​ 如果设置为 "true"(默认为 "false"),参考文献列表将采用悬挂缩进渲染。

    second-field-align

    ​ 如果该属性被设置,则书目条目的后续行沿第二字段对齐。 使用 "flush" 时,第一个字段与边距齐平。 对于 "margin",第一个字段放在 margin 中,随后的行与 margin 对齐。例如,当第一个字段设置为 <text variable="citation-number" suffix=". "/>

    9.  Adams, D. (2002). The Ultimate Hitchhiker's Guide to the
    +    Galaxy (1st ed.).
    +10. Asimov, I. (1951). Foundation.
    +

    line-spacing

    ​ 指定垂直方向的行距。默认值为 "1",即单倍行距。可以被设置为任意正整数,用来表示对应倍数的行距。

    entry-spacing

    ​ 指定不同条目垂直方向的距离,默认值为 "1",即一倍距离,可以被设置为任意正整数,用来表示对应倍数的距离。

    参考文献分组

    subsequent-author-substitute

    ​ 如果该属性被设置,则此属性将用上一条条目中的名称替换参考文献条目中的名字。具体的代替方案取决于 subsequent-author-substitute-rule 属性的值。替换仅限于 cs:names 元素中渲染的第一个名字。

    subsequent-author-substitute-rule

    ​ 用来指定 subsequent-author-substitute 的结果怎么替换。允许的值为:

    • "complete-all" - 默认值,当名字变量中的所有渲染的名字和上一个参考文献条目相同时,subsequent-author-substitute 属性的值将代替整个名字列表(包括标点和术语,比如 et-al 和 and 等术语),但 cs:names 元素中设置的后缀将不会被代替。
    • "complete-each" - 和 "complete-all" 一样,需要完整的匹配,但是 subsequent-author-substitute 属性的值将会代替所有被渲染的名字。
    • "partial-each" - 当有一个或者多个名字变量中的渲染名字和上一个条目中相同时,使用 subsequent-author-substitute 属性代替对应的值。匹配从第一个名字开始,直到不匹配的名字为止。
    • "partial-first" - 和 "partial-each" 相同,但是替换仅限于第一个名字。

    对下面的例子:

    Doe. 1999.
    +Doe. 2000.
    +Doe, Johnson & Williams. 2001.
    +Doe & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +Doe, Stevens & Miller. 2004.
    +Doe, Williams et al. 2005.
    +Doe, Williams et al. 2006.
    +

    subsequent-author-substitute 设置为 "-",并且 subsequent-author-substitute-rule 设置为 "complete-all",渲染结果将变为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +Doe & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---. 2004.
    +Doe, Williams et al. 2005.
    +---. 2005.
    +

    subsequent-author-substitute-rule 设置为 "complete-each" 时,渲染的结果为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +Doe & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---, --- & ---. 2004.
    +Doe, Williams et al. 2005.
    +---, --- et al. 2006.
    +

    subsequent-author-substitute-rule 设置为 "partial-each" 时,渲染的结果为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +--- & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---, --- & ---. 2004.
    +Doe, Williams et al. 2005.
    +---, --- et al. 2005.
    +

    subsequent-author-substitute-rule 设置为 "partial-first" 时,渲染的结果为:

    Doe. 1999.
    +---. 2000.
    +Doe, Johnson & Williams. 2001.
    +--- & Smith. 2002.
    +Doe, Stevens & Miller. 2003.
    +---, Stevens & Miller. 2004.
    +Doe, Williams et al. 2005.
    +---, Williams et al. 2005.
    +

    全局选项

    人名中的连字符

    initialize-with-hyphen

    ​ 该属性用来制定合成名字中间是不是使用连字符。例如,"Jean-Luc" 是一个合成名字,如果该属性设置为 "true"(默认),渲染结果为 "J.-L.",如果设置为 "false",渲染结果为 "J.L."

    页码范围

    page-range-format

    ​ 用来设置页码范围的格式,是不是使用简写来压缩。其可选的值有:"chicago" ("321–28"), "expanded" ( "321–328"), "minimal" ("321–8"), 或者 " minimal-two" ("321–28")。每一组值前面表示可选的属性值,后面是渲染结果的例子。也可见 [附录V 页码范围格式](#附录V 页码范围格式)。使用 page-range-delimiter 属性可以用来设置页面范围分割的符号,该属性在 CSL 1.0.1 中引入,默认是一个破折号。如果改属性没有设置,就默认使用破折号。

    Name Particles

    ​ 西方人的名字中经常包括一个或者多个小部分,例如,"de" 在荷兰人的名字中 "W. de Koning"。在仅显示姓氏时,这些小部分可以分为必须保留和可删除(或译为不可省略和可省略)两种类型:这两种类型分别称为 non-dropping 部分和 dropping 部分。一个单个的名字可以同时包括这两种类型(不能删除的类型始终位于可删除类型的后面)。例如,"W. de Koning" 和法国名字 "Jean de la Fontaine" 可以被解构为:

    {
    +    "author": [
    +        {
    +            "given": "W.",
    +            "non-dropping-particle": "de",
    +            "family": "Koning"
    +        },
    +        {
    +            "given": "Jean",
    +            "dropping-particle": "de",
    +            "non-dropping-particle": "La",
    +            "family": "Fontaine"
    +        }
    +    ]
    +}
    +

    在仅显示姓氏的时候,只保留不能删除的部分,"De koning""La Fontaine"

    在名字倒写的情况下,即姓氏在名字之前,在姓氏后面始终添加 dropping particle,但是 non-dropping 部分可以前置(例如,"de Koning, W.")或者后置(Koning, W. de)。在名字倒写,不可省略粒子前置时,可以使用下面的方式对名字进行排序:排序 A:将不可省略粒子和姓一起保留作为主排序键值的一部分;排序 B:通过将不可省略粒子和姓分开,并使其成为二级排序键值,并加入可省略粒子(如果有):

    Sort order A: 不可省略粒子不降级

    • 主排序键值 "La Fontaine"
    • 次排序键值 "de"
    • 第三排序键值: "Jean"

    Sort order B: 不可省略粒子降级

    • 主排序键值 "Fontaine"
    • 次排序键值 "de La"
    • 第三排序键值 "Jean"

    对不可省略粒子的设置可以使用 demote-non-dropping-particle 选项:

    demote-non-dropping-particle

    ​ 用来设置在倒写的名字中不可省略粒子的显示和排序方式(例如 Koning W. de)。可设置的值为:

    • "never": 不可省略粒子被作为姓中的一部分对待,并附加可省略粒子("de Koning, W." "La Fontaine, Jean de")。不可省略粒子作为主排序键值的一部分 (排序 A,例如. "de Koning, W." 将出现在首字母 "D" 的区域).
    • "sort-only": 显示的方式和 "never" 相同,但是不可省略粒子降级作为二级排序键值。(排序 B, "de Koning, W." 出现在首字母 "K" 的区域).
    • "display-and-sort" (默认),可省略粒子和不可省略粒子在最后( "Koning, W. de" 和 "Fontaine, Jean de La")。对名字排序,所有的粒子都是二级排序键值的一部分。(排序 B,"Koning, W. de" 出现在首字母 "K" 的区域).

    某些名字中包含的粒子禁止被降级。在这些情况中,粒子将和姓合并到一起,比如,对于法国名字 Charles de Gaulle

    {
    +    "author": [
    +        {
    +            "family": "de Gaulle",
    +            "given": "Charles"
    +        }
    +    ]
    +}
    +

    可继承的名称选项

    cs:namescs:name 元素的属性也可以在 cs:stylecs:citationcs:bibliography 元素中设置。这样就不需要每次在 cs:namescs:name 出现的时候赋值。

    ​ 可以在 cs:name 元素中继承的属性有 and, delimiter-precedes-et-al, delimiter-precedes-last, et-al-min, et-al-use-first, et-al-use-last, et-al-subsequent-min, et-al-subsequent-use-first, initialize, initialize-with, name-as-sort-ordersort-separatorname-form 属性和 name-delimiter 属性对英语 cs:name 元素中的 formdelimiter 属性。同样地,names-delimiter 属性对应 cs:names 元素中的 delimiter 属性。

    ​ 当一个可继承的名称属性在 cs:stylecs:citationcs:bibliography 中设置时,其值将作用于改元素包含的所有的 cs:names 元素。如果一个属性在多个可继承的层次设置,最底层的值发挥作用。

    局部选项

    limit-day-ordinals-to-day-1

    ​ 日期格式在 cs:datecs:date-part 元素中定义。默认地,当 cs:date-part 元素中的 name 设置为 "day"form 属性设置为 "ordinal" 时,所有的天(1 到 31)将会以序数形式渲染,例如:"January 1st","January 2nd" 等等。通过将 limit-day-ordinals-to-day-1 属性设置为 "true"(默认值为 "false"),序数格式将仅限于每个月的第一天,其他的天将不使用序数格式。这在某些语言中出现,比如法语,"1er janvier","2 janvier","3 janvier"。

    punctuation-in-quote

    ​ 当 cs:text 元素渲染时,如果 quotes 属性设置为 "true"(见 格式化),并且在输出后有逗号或者句号,punctuation-in-quote 属性可以控制标点放在括号的内还是外,"false" 为外(默认),"true" 为内。

    排序 ***

    cs:citationcs:bibliography 元素可以在 cs:layout 元素之前携带一个 cs:sort 子元素,来实现对引文或者参考文献条目的排序。在缺失 cs:sort 元素时,引文和文献条目将会使用他们在文章中出现的顺序来排序。

    cs:sort 元素必须包含一个或者多个 cs:key 子元素,可以在该元素中设置变量([附录 IV 变量](#附录 IV 变量))或者宏名来实现排序。对于每个 cs:key 元素,排序的顺序可以通过设置 sort 属性来设置为升序("ascending",默认)或者降序("descending")。属性 names-min,names-use-first,names-use-last 可以用来覆盖 et-al-min/et-al-subsequent-min, et-al-use-first/et-al-subsequent-use-firstet-al-use-last 属性的值,并且可以通过 cs:key 影响所有的名字.

    ​ 排序的键值是按顺序求值的,也就是说:首先,使用第一个排序键值对所有的项目进行排序。然后使用第二个键值对第一个键值排序后的结果进行排序,直到所有的键值都完成排序为止。如果键值为空,就放到最后。

    ​ 这里给出一个例子:其中首先引用 "author" 宏进行排序,并且使用 et al. 来对较长的作者序列进行代替。然后,使用 "issued" 变量来进行第二次排序,使用降序:

    <citation>
    +  <sort>
    +    <key macro="author" names-min="3" names-use-first="3"/>
    +    <key variable="issued" sort="descending"/>
    +  </sort>
    +  <layout>
    +    <!-- rendering elements -->
    +  </layout>
    +</citation>
    +

    ​ 变量或者宏的排序键值可以与 "normal" 渲染的输出不同,具体要依赖下面的细节:

    排序变量

    cs:key 元素通过 variable 变量属性调用变量的排序键值。名称变量、日期变量和数字变量除外:

    名称: 名字变量 通过变量属性被调用,例如 <key variable="author"/>,当 form 属性设置为 "long"name-as-sort-order 属性设置为 "all",返回名字列表字符串。

    日期日期变量 通过 variable 属性被调用,返回 YYYYMMDD 格式。使用 0 代替缺失的日期部分,例如:December 2000 渲染为 20001200。因此,简略的日期在升序排列的时候更加靠前,例如:2000, May 2000, May 1st 2000。负数的年份(即公元前)将被反向排序,比如:100BC, 50BC, 50AD, 100AD。排序过程中,季节将被忽略,因为南北半球的季节顺序不同。在日期范围中,开始的日期用于主要排序,结束日期用于次要排序,例如:2000–2001, 2000–2005, 2002–2003, 2002–2009。在具有相同的开始日期时,日期范围将放在单独的日期后,例如:2000, 2000–2002。

    数字数字变量 通过 variable 属性来调用,返回整数(form 设置为 "numeric")如果原始的变量值仅由非数字文本组成,则将该值作为文本字符串返回。

    排序宏

    ​ 变量排序的键值是由字符串值组成,没有富文本标记。通过宏属性中的键值 cs:key 来调用。下面为一些特殊情况。

    ​ 对于名字排序,使用相同的宏而不是直接使用名字变量来渲染和排序有 4 个好处。第一,可以使用替换,例如:可以使用 "editor" 变量代替空的 "author" 变量。第二,可以使用 et-al 缩写,在宏里使用 et-al-min/et-al-subsequent-min, et-al-use-first/et-al-subsequent-use-firstet-al-use-last 可选属性,或者覆盖 cs:key 元素中的 names-min, names-use-firstnames-use-last 。当 et-al 缩写出现的时候,"et-al""and others" 术语不会包括在排序键值中。第三,名字可以只使用姓来排序,即使用宏,其中的 cs:nameform 属性设置为 "short"。最后,通过调用宏,将 cs:name 中的 form 属性设置为 "count",可以按姓名列表中姓名的数目进行排序。至于使用 variable 属性对姓名进行排序,将 cs:name 中的 name-as-sort-order 属性设置为 "all",返回值为排序后的名称列表。

    ​ 在宏中带有 cs:number数字变量 的和日期变量的渲染方法和通过变量的调用相同。唯一的区别是:如果通过 variable 属性调用日期变量,将返回完整的日期。相反地,宏调用则只返回原本要渲染的日期部分。例如:

    范围分隔符

    ​ "citation-number" 和 "year-suffix" 变量的折叠范围以短划线分隔,例如 "(1-3,5)" 和 "(Doe 2000a-c,e)"。

    ​ "locator" 变量总是使用一个短划线代替任意的连字符。 对 "page" 变量来说,只有 cs:style 中的 page-ran ge-format 属性被设置时,替换才会执行(见 页码范围)。

    格式化

    ​ 下面的属性可以在 cs:date, cs:date-part, cs:et-al, cs:group, cs:label, cs:layout, cs:name, cs:name-part, cs:names, cs:numbercs:text 中设置:

    font-style

    用来设置字体,可能的值为:

    • "normal" 默认
    • "italic" 设置文字的斜体
    • "oblique" 设置没有斜体的文字倾斜

    font-variant

    Allows for the use of small capitals, 值可以设置为:

    • "normal" 默认
    • "small-caps"

    font-weight

    设置字宽,值可以为:

    • "normal" 默认
    • "bold"
    • "light"

    text-decoration

    设置下划线,值可以为:

    • "none" 默认
    • "underline"

    vertical-align

    设置垂直对齐,值可以为:

    • "baseline" 默认
    • "sup" 上标
    • "sub" 下标

    词缀

    ​ 前缀属性 prefix 和后缀属性 suffix 可以在 cs:date(使用 cs:date 定义本地化格式除外),cs:date-partcs:date 调用本地化格式除外)、cs:groupcs:labelcs:layoutcs:namecs:namescs:number 以及 cs:text 中设置。属性值用来在输出的前面或者后面添加东西,但是只有输出的时候才会渲染。除在 cs:layout 中设置外,词缀将出现在同一个元素的 格式化引用strip-periodstext-case 的影响范围的外面,也就是这些属性的设置对前缀和后缀没有影响。作为一种解决方法,在父元素 cs:group 中设置上述属性,会产生影响。

    分隔符\delimiter

    delimiter 属性可以在 cs:date(用来分隔日期的各部分,如年和月;在 cs:date 调用本地化格日期格式时,分隔符将被禁用)、cs:name(分隔名字变量中不同的名字列表)、cs:name(分隔名字列表中的名字)、cs:group 以及 cs;layout(分隔子元素的输出)中设置分隔符。

    显示\display

    display 属性可用于将各个参考文献条目构成一个或者多个文本块。如果使用该属性,所有的渲染元素都在该属性的控制下。(译注:是用来设置对齐效果的)属性可能的值为:

    • "block" - 两边对其
    • "left-margin" - 左对齐。
    • "right-inline" - 右对齐
    • "indent" - 缩进。

    A. 除使用 second-field-align 外,使用 "left-margin""roght-inline" 可以实现相同的渲染效果。这种操作方式潜在的好处是,可以在最终的输出中进一步控制块的格式,例如,在 HTML 的 CSS 或者 word 的样式中。

    <bibliography>
    +  <layout>
    +    <text display="left-margin" variable="citation-number"
    +        prefix="[" suffix="]"/>
    +    <group display="right-inline">
    +      <!-- rendering elements -->
    +    </group>
    +  </layout>
    +</bibliography>
    +

    B. 每个作者的出版物列表。当 subsequent-author-substitute 设置为空字符串时,具有相同作者的条目的作者名字只渲染一次。

    <bibliography subsequent-author-substitute="">
    +  <sort>
    +    <key variable="author"/>
    +    <key variable="issued"/>
    +  </sort>
    +  <layout>
    +    <group display="block">
    +      <names variable="author"/>
    +    </group>
    +    <group display="left-margin">
    +      <date variable="issued">
    +        <date-part name="year" />
    +      </date>
    +    </group>
    +    <group display="right-inline">
    +      <text variable="title"/>
    +    </group>
    +  </layout>
    +</bibliography>
    +

    渲染结果将类似下面:

    Author1
    year-publication1title-publication1
    year-publication2title-publication2
    Author2
    year-publication3title-publication3
    year-publication4title-publication4

    C. 带有注释的条目,注释显示在参下方的缩进块中。

    <bibliography>
    +  <layout>
    +    <group display="block">
    +      <!-- rendering elements -->
    +    </group>
    +    <text display="indent" variable="abstract" />
    +  </layout>
    +</bibliography>
    +

    引用\quotes

    quotes 属性可以在 cs:text 中设置。当设置为 "true" 时(默认为 "false"),渲染文本将会被包含在引用中。本地化的 punctuation-in-quote 选项控制用来连接的逗号或者句号是出现在引号的内部还是外部(默认外部),见 [Locale options](#Locale options)。

    Strip-periods

    strip-periods 属性可以在 cs:label 或者 cd:text 中设置,此外,当 name 被设置为 "month" 时,也可以在 cs:date-part 中设置。当该属性被设置为 true 的时候(默认的是 "false"),所有文本中的句号(英文中为点)将会被删除。

    文字大小写

    text-case 属性可以在 cs:date,cs:date-part,cs:label,cs:name-part,cs:numbercs:text 中设置,可设置的值为:

    • "lowercase": 使用小写字母渲染文本
    • "uppercase": 使用大写字母渲染文本
    • "capitalize-first": 如果第一个词是小写的,将首字母设置为大写
    • "capitalize-all": 将每个小写词的首字母设置为大写
    • "sentence": renders text in sentence case(以句子的格式设置?)
    • "title": renders text in title case(以标题的格式来设置?)

    句子大小写转换

    句子大小写转换 (在 "Text-case" 中设置为 "sentence"),

    1. 对于大写字符串,字符串的第一个字符保持为大写。其它字母表示为小写
    2. 对于大小写混合的字符串,如果单词是小写,第一个单词的首字符大写,其它所有单词的大小写保持不变。

    CSL 处理器不能识别专有名词。因此,可以将句子大小写的字符转缺的转换为标题大小写,反之亦然。因此,通常最好在句子大小写的情况下存储注入标题之类的字符串,并且仅在样式需要其它大小写的情况下菜使用文本大小写。

    标题大小写转换

    标题大小写转换 (在 "Text-case" 中设置为 "title") 对英语来说:

    1. 对大写的字符串,每个单词的第一个字母保持大写,其它的字母保持小写。
    2. 对于小写或者是混合的字符串,每个小写字符串的首字母大写。大写的字符串或者是混合的字符串保持原样。

    两种情况下,stop words 必须是小写的,除非他们是第一个或者对后一个单词,或者跟在冒号后面。stop words 包括:"a", "an", "and", "as", "at", "but", "by", "down", "for", "from", "in", "into", "nor", "of", "on", "onto", "or", "over", "so", "the", "till", "to", "up", "via", "with", "yet".

    非英语项目

    ​ 由于许多语言不使用标题大小写,标题大小写转换 (在 "Text-case" 中设置为 "title") 仅影响英语项目。

    ​ 如果 cs:style 中的 default-locale 属性没有设置,或者设置为 en 开头的单词,则假定为英语环境。如果某项的元数据包含一个语言字段,而且该字段不是以 "en" 开头的,才被视为是非英语环境。

    ​ 同样的,default-locale 被这是为除 en 开头的字段,就假定为非英语。如果项目是以 en 开头的字段,就被视为是英语。

    + + + diff --git a/code/citation-style-language/specification/styles-structure.html b/code/citation-style-language/specification/styles-structure.html new file mode 100644 index 00000000..52fb440b --- /dev/null +++ b/code/citation-style-language/specification/styles-structure.html @@ -0,0 +1,142 @@ + + + + + + + + + + 样式的结构 | 北辞 + + + + + +
    跳至主要內容

    样式的结构

    Northword大约 9 分钟

    样式的结构

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    根元素 cs:style

    样式的根元素是 cs:style。在 独立样式 中,根元素有以下几种属性:

    class

    : 🏳️ Default: none — 决定样式的 引文格式 是 in-text 类型(值 in-text) 或者 note 类型(值 note)。

    !!! NOTE "译者注"
    +	in-text 表示引文在文字中,note 表示引文不在文字中,可能是脚注等。
    +

    default-locale

    : 🏳️ Default: none · Optional — 为本地化设值默认的 locale。值必须是 locale codeopen in new window

    !!! TIP "译者注:常用 local_code"
    +
    +	zh-CN:中文(中国)
    +
    +	zh-hk:中文(台湾)
    +
    +	zh:中文
    +
    +	en-US:
    +
    +	可以参阅 [Language Strings | Microsoft Docs](https://docs.microsoft.com/zh-cn/windows/win32/wmformat/language-strings)
    +

    version

    : 🏳️ Default: none · ⚠ Required — 样式的 CSL 版本。对于 CSL 1.0 兼容样式,必须是 1.0

    此外,cs:style 可能携带任意的 全局选项可继承的名称选项

    在这些属性中,从属样式 中,只有 version 是必须的, default-locale 属性可以设置用来代替的默认的本地化文件 。其他的属性是可以忽略的。

    下面是一个 独立样式cs:style 示例,第一行是 XML 声明:

    <?xml version="1.0" encoding="UTF-8"?>
    +<style xmlns="http://purl.org/net/xbiblio/csl" version="1.0" class="in-text" default-locale="fr-FR"/>
    +

    cs:style 的子元素

    独立样式 中,cs:style 有以下子元素:

    cs:info

    : 🏳️ Default: none · ⚠ Required · ⚠ 必须为第一个子元素 — 描述样式的元数据 :样式名称(style name)、样式 ID(ID)、样式作者(authors)。

    cs:citation

    : 🏳️ Default: none · ⚠ Required — 用来描述 in-text 引文或者 notes 引文的具体格式。

    cs:bibliography

    : 🏳️ Default: none · Optional — 可能会出现一次。描述参考文献列表的格式。

    cs:macro

    : 🏳️ Default: none · Optional — 可能出现多次。宏可以将格式指示重复使用,使样式更加的紧凑和易维护。

    cs:locale

    : 🏳️ Default: none · Optional — 可能出现多次。用于指定或者覆盖当前的本地化数据。

    从属样式 中,cs:style 只有 cs:info 一个子元素。

    Info

    cs:info 包含了样式的元数据。其结构基于 Atom Syndication Formatopen in new window。在独立样式中,cs:info 有下面的几个子元素:

    cs:authorcs:contributor

    : 🏳️ Default: none · Optional — cs:authorcs:contributor 分别用来致谢样式的作者和贡献者,可能被使用多次。

     `cs:name`
    +
    + :    🏳️ Default: _none_ ·  ⚠ Required — 作者或贡献者的姓名。
    +
    + `cs:email` 和 `cs:uri` 
    +
    + :    🏳️ Default: _none_ ·  Optional — 作者或者贡献者邮箱和 URI。
    +

    cs:category

    : 🏳️ Default: none · Optional — 样式可能被分类到一个或者多个类别,cs:category 可能被使用一次,用来描述 in-text 引文怎么渲染。使用 citation-format 属性设置其为以下几种情形:

    - "author-date" - 例如 "… (Doe, 1999)"
    +
    +- "author" - 例如 "… (Doe)"
    +
    +- "numeric" - 例如 "… [1]"
    +
    +- "label" - 例如 "… [doe99]"
    +
    +- "note" - 因为在边注或者脚注出现。
    +

    cs:categroy 也可能在携带 field 属性时多次使用,用来对学科进行分类(见 [附录I 学科分类](附录I 学科分类))。

    cs:id

    : 🏳️ Default: none · ⚠ Required — 必须出现一次。该元素应该包含一个 URI 以建立样式的 ID,对于公开可用的样式,需要一个稳定、唯一的并可以引用的 URI。

    cs:issn/cs:essn/cs:issnl

    : 🏳️ Default: none · Optional — cs:issn 元素可以多次使用,用来表示该 CSL 对应的期刊的 ISSN 。 cs:eissncs:issnl 可以分别用来表示 eISSN 和 ISSN-Lopen in new window

    : 🏳️ Default: none · Optional — 可以使用多次。cs:link 必须携带两个属性 hrefrel

    `href`
    +:    ⚠ Required — 用来设置 URI (通常情况下为 URL)
    +
    +`rel`
    +:    ⚠ Required — 表明 URI 与当前样式的关系,它的值有:
    +
    +    - `self` - 该 URI 值为样式本身的 URI
    +    - `template` - 该 URI 是用来编写该样式的模板的 URI
    +    - `documentation` - 该 URI 是该样式的文档
    +

    cs:published

    : 🏳️ Default: none · Optional — cs:published 必须是一个 时间戳open in new window,用来表明样式创建的时间或者可获得的时间。

    cs:rights

    : 🏳️ Default: none · Optional — cs:rights 表明了该 CSL 的 license,可能会携带 license 属性。

    cs:summary

    : 🏳️ Default: none · Optional — 给出该 CSL 的简单描述。

    cs:title

    : 🏳️ Default: none · ⚠ Required — 其内容应该是该 CSL 展示给使用者的名字。

    cs:title-short

    : 🏳️ Default: none · Optional — 是上述名字的缩写,比如 APA

    cs:updated

    : 🏳️ Default: none · — 内容是一个 时间戳open in new window,用来表示该 CSL 的最后更新时间。

    cs:linkcs:rightscs:summarycs:titlecs:title-short 元素可以携带 xml:lang 属性用来表示元素内容的语言(值必须是 xsd:language locale codeopen in new window 中的一个)。对于 cs:link,该属性可以用来表示链接目标的语言。

    在从属格式中,当 cs:link 中的 href 为其父格式的 URI 时,rel 属性必须设置为 "independent-parent"。此外,从属格式的 ref 不能设置为 template,这在独立格式中才能使用。

    下面是一个独立样式 cs:info 的例子:

    <info>
    +  <title>Style Title</title>
    +  <id>http://www.zotero.org/styles/style-title</id>
    +  <link href="http://www.zotero.org/styles/style-title" rel="self"/>
    +  <author>
    +    <name>Author Name</name>
    +    <email>name@domain.com</email>
    +    <uri>http://www.domain.com/name</uri>
    +  </author>
    +  <category citation-format="author-date"/>
    +  <category field="zoology"/>
    +  <updated>2008-10-29T21:01:24+00:00</updated>
    +  <rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work
    +  is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported
    +  License</rights>
    +</info>
    +

    Citation

    cs:citation 元素描述了引文的格式,其中引文可以是一条或者多条。引文的格式可能是 in-text citations(即文字中的引文)和 notes(注记)。in-text citations 包括 ("author",例: [Doe]"author-date",例: [Doe 1999]"label",例: [doe99]"author",例: [Doe] 或者 "number",例:[1] ) 。这要求 cs:layout 子元素来描述什么样的数据,以及怎么被引用(见 Layout )。在 cs:layout 之前可能会有 cs:sort 元素,用来描述引文的排序(见 排序)。此外,cs:style 可能携带任意的 引文选项可继承的名称选项 中的属性。下面是一个 cs:citation 的例子:

    <citation>
    +  <sort>
    +    <key variable="citation-number"/>
    +  </sort>
    +  <layout>
    +    <text variable="citation-number"/>
    +  </layout>
    +</citation>
    +

    对 CSL 处理器开发者的一个建议

    在 note 格式中,引文通常是一个句子。因此,当注释前面没有内容时,引文的首字母最好大写。在其他情况,引文应该是用原样打印。

    Bioliography

    cs:bioliography 元素描述了参考文献条目的格式。同 cs:citation 相同,其子元素 cs:layout 用来描述每个条目的格式,cs:sort 元素用来描述条目的排序。此外,cs:bibliography 可能携带任意的 参考文献目录选项可继承名称选项 中的属性。下面是一个 cs:bioliography 的例子:

    <bibliography>
    +  <sort>
    +    <key macro="author"/>
    +  </sort>
    +  <layout>
    +    <group delimiter=". ">
    +      <text macro="author"/>
    +      <text variable="title"/>
    +    </group>
    +  </layout>
    +</bibliography>
    +

    Macro

    宏,使用 cs:macro 元素定义,包含了格式的指令。宏可以在其他宏,cs:layout 元素 (cs:citationcs:bioliography 中),cs:key 元素 (cs:sort 元素) 中通过 cs:text 调用。宏在文件中位置的通常建议是:放在 cs:locale 元素后以及 cs:citation 元素前。

    宏通过 cs:macro 元素的属性 name 的值来调用。cs:macro 必须包含一个或者多个 渲染元素

    使用宏可以提高样式的可读性,紧凑性以及可维护性。通过过宏调用来保持 cs:citation 元素和 cs:bioliography 元素的内容紧凑通常是推荐的做法。为了在其他样式中方便的重复使用,宏名字建议使用通用的名字。

    下面是一个实例:引文中包括项目题目,并当条目为 "book" 时,设置字体为 italic

    <style>
    +  <macro name="title">
    +    <choose>
    +      <if type="book">
    +        <text variable="title" font-style="italic"/>
    +      </if>
    +      <else>
    +        <text variable="title"/>
    +      </else>
    +    </choose>
    +  </macro>
    +  <citation>
    +    <layout>
    +      <text macro="title"/>
    +    </layout>
    +  </citation>
    +</style>
    +

    Locale

    来自 "locales-xx-XX.xml"locale file 的本地化数据可以通过 cs:locale 元素来重定义或者补充定义。cs:locale 元素应该放在 cs:info 元素后。

    cs:locale 元素的 xml:lang 属性是可选的,必须设置为 xsd:language locale codeopen in new window 中的一种,用来确定使用的语言环境(或方言,见 [locale fallback](locale fallback))。

    对于 cs:locale 元素的详细使用,另见 术语本地化日期格式本地化选项

    下面是一个 cs:locale 元素的例子:

    <style>
    +  <locale xml:lang="en">
    +    <terms>
    +      <term name="editortranslator" form="short">
    +        <single>ed. &amp; trans.</single>
    +        <multiple>eds. &amp; trans.</multiple>
    +      </term>
    +    </terms>
    +  </locale>
    +</style>
    +

    Locale Fallback

    本地化文件为语言方言提供了本地化数据;可选的 cs:locale 元素的 xml:lang 属性设置为一种语言 (例如, "en" 代表英语 ) 或者方言 (例如, "en-US" 代表美式英语 ) ,xml:lang 属性也可能缺失。Localr fallback 是一种在上述的属性设置中检索来确定本地化单元的机制。这些本地化单元包括日期格式,本地化选项或者术语的特定形式。

    对于同一种语言的方言,一种被称为初级方言,其他都是二级方言。下面展示了部分语言的初级方言和二级方言:

    初级方言二级方言
    de-DEde-AT, de-CH
    en-USen-GB
    pt-PTpt-BR
    zh-CNzh-TW

    这里用一个例子来描述 Locale fallback。如果要选择 "de-AT"(Austrian German) 作为使用环境,本地化单元可以来自下面的源(优先级逐渐降低):

    A. 样式文件中的 cs:locale 元素

    • xml:lang 设置为方言 "de-AT"
    • xml:lang 设置为 "de"
    • xml:lang 不设置

    B. Locale files/本地化文件

    • xml:lang 设置为方言 "de-AT"
    • xml:lang 设置为对应的初级方言 "de-DE" (standard german)
    • xml:lang 设置为 "en-US"

    也就是说,如果要使用 "de-AT" 语言,首先在 Locale files 中寻找 "de" 对应的 locales-de-XX.xml 文件,即 "locales-de-AT.xml""locales-de-DE.xml",由于要设置的语言环境是方言 "de-AT",所以选择 de-AT 对应的 locale file locales-de-AT.xml。接下来,如果 csl 文件中包含 cs:locale 元素,将会覆盖 locales-de-AT.xml 文件的设置。

    + + + diff --git a/code/citation-style-language/specification/whitespace-handling.html b/code/citation-style-language/specification/whitespace-handling.html new file mode 100644 index 00000000..2d6d5718 --- /dev/null +++ b/code/citation-style-language/specification/whitespace-handling.html @@ -0,0 +1,40 @@ + + + + + + + + + + 空格处理 | 北辞 + + + + + +
    跳至主要內容

    空格处理

    Northword小于 1 分钟

    空格处理

    [!question] Whitespace Handling 翻译有一些疑惑,请参阅原文,欢迎提出改善意见。

    CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output:

    CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。

    • after-collapse-delimiter
    • cite-group-delimiter
    • delimiter
    • initialize-with
    • name-delimiter
    • names-delimiter
    • prefix
    • range-delimiter
    • sort-separator
    • suffix
    • year-suffix-delimiter
    • value
    + + + diff --git a/code/citation-style-language/specification/xml-declaration.html b/code/citation-style-language/specification/xml-declaration.html new file mode 100644 index 00000000..ded0c74d --- /dev/null +++ b/code/citation-style-language/specification/xml-declaration.html @@ -0,0 +1,41 @@ + + + + + + + + + + XML 声明 | 北辞 + + + + + +
    跳至主要內容

    XML 声明

    Northword小于 1 分钟

    XML 声明

    [!Done] XML Declaration

    每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是:

    <?xml version="1.0" encoding="UTF-8"?>
    +
    + + + diff --git a/code/citation-style-language/translating-locale-files.html b/code/citation-style-language/translating-locale-files.html new file mode 100644 index 00000000..7f6fbabc --- /dev/null +++ b/code/citation-style-language/translating-locale-files.html @@ -0,0 +1,40 @@ + + + + + + + + + + Locale File | 北辞 + + + + + +
    跳至主要內容

    Locale File

    Northword大约 2 分钟

    Locale File

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    前言

    ​ 这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。

    ​ 用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:"British Psychological Society" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。

    ​ 所有的 CSL 样式,都依赖于 locale file,这些本地化文件中包含了本地化数据,用来指定引文和参考文献目录中的术语,日期格式和语法规则怎么本地化。在单独的本地化文件保存这些数据,而不是在 CSL 样式文件中(尽管 CSL 样式文件中可以使用 cs:locale 元素对本地化文件中的设置进行覆盖),有很多好处:1. 本地化更加容易维护;2. 样式文件更加的紧凑; 3. 样式可以是语言无关的。

    ​ 下面,我们将描述本地化文件的结构,给出如何转换所有部分的指示,并且解释如何提交这些转换。如果想获得更多的有关本地化的信息,可以查看 CSL规范

    开始

    ​ CSL 本地化文件在 Github 的仓库地址为https://github.com/citation-style-language/locales/open in new window

    ​ 每个本地化文件都包含一种对应语言的本地化数据。本地化文件的名字为 "locales-xx-XX.xml",这里的 "xx-XX" 是 BCP 47 langues code 语言代码open in new window 中的一种。这个 github wiki仓库open in new window 列出了本地化 code,对应的语言和该仓库中储存的所有语言环境的软换状态(是否完成,或在制作中)。

    转换 Locale Files

    + + + diff --git a/code/citation-style-language/xml-basic.html b/code/citation-style-language/xml-basic.html new file mode 100644 index 00000000..7958b95c --- /dev/null +++ b/code/citation-style-language/xml-basic.html @@ -0,0 +1,86 @@ + + + + + + + + + + XML 基础 | 北辞 + + + + + +
    跳至主要內容

    XML 基础

    Northword大约 2 分钟

    XML 基础

    [!warning] WORK IN PROGRESS 此页面正在施工中。

    CSL 基于 XML(eXtensible Markup Language)XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。

    <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  # 文档声明
    +
    +<!-- 这是一个注释 -->		# 注释
    +
    +<hello>	# 根元素,文档的第一个元素,有且仅有一个
    +    # 子元素
    +    # 属性
    +    # 元素文本
    +</hello>
    +

    上面的代码时一个简单的 XML 结构。为了方便说明使用了 #符号作为注释符号,#并不是真正的注释符号,XML的注释格式为文档中的第二行所示的形式。

    第一行为声明,或者称为序言,总是在文档的最前面。包括了XML 的版本、编码信息以及是否依赖外部文档等。这一行代码会告诉解析器或浏览器这个文件应该按照 XML 规则进行解析。

    第二行为 XML 文档的注释。格式为 <!-- 注释-->

    剩下的代码为 XML 文件的根元素,根元素也是元素,根元素是文档的第一个元素,有且仅有一个。

    元素

    元素由开始标签,元素内容和结束标签构成。其中可以包含属性、元素和注释。根元素包含了其他所有元素。

    <title>内容</title>
    +

    title 为元素名。

    元素有 4 种形式。

    1. 空元素
    +<RAM> </RAM>  或者 <RAM/>
    +
    +2. 带有属性的空元素
    +<RAM width="100"/>  或者 <RAM width="100"> <RAM/>
    +
    +3. 带有内容的元素
    +<Price>21000</Price>
    +    
    +4. 带有内容和属性的元素
    +<Price MoneyKind="RMB">21000</Price>  # MoneyKind 为属性  21000为元素值
    +或者是
    +<NotebookComputer>
    +Style =" LX2000"
    +CPU =" PIII600"
    +RAM ="128M "
    +</NotebookComputer>
    +
    +

    所有的元素都包含在根元素中,为根元素的子元素,子元素还还可以包含子元素。

    属性

    属性是对元素及其内容的描述,用 = 隔开。属性必须包含在一对单引号或者双引号之间。

    <Movie ID="09001">   # 其中的 id 就是属性  后面的值就是属性值
    +<title>非诚勿扰</title>	 # 子元素
    +<price>70</price>
    +</Movie>
    +
    +# 空元素的属性
    +<Rectangle Width="100" Height="80"/>
    +
    +# 属性的另外一种形式
    +<NotebookComputer>
    +Style =" LX2000"
    +CPU =" PIII600"
    +RAM ="128M "
    +</NotebookComputer>
    +

    每个元素中,一个属性最多出现一次,一个属性只能有一个值。

    如果属性有多个值,这需要采取 XML 协议以外的方式来表示,如采用逗号或分号间隔,对于 CSSopen in new window 类或标识符的名字可用空格来分隔。

    预定义实体表

    xml 文件中某些符号无法正常表达,比如 < 或者 >,不处理的话会导致混乱。

    所定义的实体所代表的字符
    &lt;<
    &gt;>``
    &quot;"
    &apos;'
    &amp;&
    <Para1>John asked &quot;What&apos;s your name?&quot;</Para1>
    +
    +中间的结果:
    +John asked "What's your name? "
    +
    + + + diff --git a/code/document-style-guide.html b/code/document-style-guide.html new file mode 100644 index 00000000..eb15a98c --- /dev/null +++ b/code/document-style-guide.html @@ -0,0 +1,201 @@ + + + + + + + + + + 中文技术文档的写作规范 | 北辞 + + + + + +
    跳至主要內容

    中文技术文档的写作规范

    Northword大约 15 分钟

    中文技术文档的写作规范

    中文技术文档的写作规范,转自 ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)open in new window

    当前版本:b7723b8open in new window

    目录

    1. 标题
    2. 文本
    3. 段落
    4. 数值
    5. 标点符号
    6. 文档体系
    7. 参考链接

    标题

    层级

    标题分为四级。

    • 一级标题:文章的标题
    • 二级标题:文章主要部分的大标题
    • 三级标题:二级标题下面一级的小标题
    • 四级标题:三级标题下面某一方面的小标题

    下面是示例。

    # 一级标题
    +
    +## 二级标题
    +
    +### 三级标题
    +
    +#### 四级标题
    +

    原则

    (1)一级标题下,不能直接出现三级标题。

    示例:下面的文章结构,缺少二级标题。

    # 一级标题
    +
    +### 三级标题
    +

    (2)标题要避免孤立编号(即同级标题只有一个)。

    示例:下面的文章结构,二级标题 A 只包含一个三级标题,完全可以省略 三级标题 A

    ## 二级标题 A
    +
    +### 三级标题 A
    +
    +## 二级标题 B
    +

    (3)下级标题不重复上一级标题的名字。

    示例:下面的文章结构,二级标题与下属的三级标题同名,建议避免。

    ## 概述
    +
    +### 概述
    +

    (4)谨慎使用四级标题,尽量避免出现,保持层级的简单,防止出现过于复杂的章节。

    如果三级标题下有并列性的内容,建议只使用项目列表(Item list)。

    示例:下面的结构二要好于结构一。结构一适用的场景,主要是较长篇幅的内容。

    结构一
    +
    +### 三级标题
    +
    +#### 四级标题 A
    +
    +#### 四级标题 B
    +
    +#### 四级标题 C
    +
    +结构二
    +
    +### 三级标题
    +
    +**(1)A**
    +
    +**(2)B**
    +
    +**(3)C**
    +

    文本

    字间距

    (1)全角中文字符与半角英文字符之间,应有一个半角空格。

    错误:本文介绍如何快速启动Windows系统。
    +
    +正确:本文介绍如何快速启动 Windows 系统。
    +

    (2)全角中文字符与半角阿拉伯数字之间,有没有半角空格都可,但必须保证风格统一,不能两种风格混杂。

    正确:2011年5月15日,我订购了5台笔记本电脑与10台平板电脑。
    +
    +正确:2011 年 5 月 15 日,我订购了 5 台笔记本电脑与 10 台平板电脑。
    +

    半角的百分号,视同阿拉伯数字。

    正确:今年我国经济增长率是6.5%。
    +
    +正确:今年我国经济增长率是 6.5%。
    +

    (3)英文单位若不翻译,单位前的阿拉伯数字与单位符号之间,应留出适当的空隙。

    例1:一部容量为 16 GB 的智能手机
    +
    +例2:1 h = 60 min = 3,600 s
    +

    (4)半角英文字符和半角阿拉伯数字,与全角标点符号之间不留空格。

    错误:他的电脑是 MacBook Air 。
    +
    +正确:他的电脑是 MacBook Air。
    +

    句子

    (1)避免使用长句。

    不包含任何标点符号的单个句子,或者以逗号分隔的句子构件,长度尽量保持在 20 个字以内;20~29 个字的句子,可以接受;30~39 个字的句子,语义必须明确,才能接受;多于 40 个字的句子,任何情况下都不能接受。

    错误:本产品适用于从由一台服务器进行动作控制的单一节点结构到由多台服务器进行动作控制的并行处理程序结构等多种体系结构。
    +
    +正确:本产品适用于多种体系结构。无论是由一台服务器(单一节点结构),还是由多台服务器(并行处理结构)进行动作控制,均可以使用本产品。
    +

    逗号分割的长句,总长度不应该超过 100 字或者正文的 3 行。

    (2)尽量使用简单句和并列句,避免使用复合句。

    并列句:他昨天生病了,没有参加会议。
    +
    +复合句:那个昨天生病的人没有参加会议。
    +

    (3)同样一个意思,尽量使用肯定句表达,不使用否定句表达。

    错误:请确认没有接通装置的电源。
    +
    +正确:请确认装置的电源已关闭。
    +

    (4)避免使用双重否定句。

    错误:没有删除权限的用户,不能删除此文件。
    +
    +正确:用户必须拥有删除权限,才能删除此文件。
    +

    写作风格

    (1)尽量不使用被动语态,改为使用主动语态。

    错误:假如此软件尚未被安装,
    +
    +正确:假如尚未安装这个软件,
    +

    (2)不使用非正式的语言风格。

    错误:Lady Gaga 的演唱会真是酷毙了,从没看过这么给力的表演!!!
    +
    +正确:无法参加本次活动,我深感遗憾。
    +

    (3)不使用冷僻、生造或者文言文的词语,而要使用现代汉语的常用表达方式。

    错误:这是唯二的快速启动的方法。
    +
    +正确:这是仅有的两种快速启动的方法。
    +

    (4)用对“的”、“地”、“得”。

    她露出了开心的笑容。
    +(形容词+的+名词)
    +
    +她开心地笑了。
    +(副词+地+动词)
    +
    +她笑得很开心。
    +(动词+得+副词)
    +

    (5)使用代词时(比如“其”、“该”、“此”、“这”等词),必须明确指代的内容,保证只有一个含义。

    错误:从管理系统可以监视中继系统和受其直接控制的分配系统。
    +
    +正确:从管理系统可以监视两个系统:中继系统和受中继系统直接控制的分配系统。
    +

    (6)名词前不要使用过多的形容词。

    错误:此设备的使用必须在接受过本公司举办的正式的设备培训的技师的指导下进行。
    +
    +正确:此设备必须在技师的指导下使用,且指导技师必须接受过由本公司举办的正式设备培训。
    +

    英文处理

    (1)英文原文如果使用了复数形式,翻译成中文时,应该将其还原为单数形式。

    英文:...information stored in random access memory (RAMs)...
    +
    +中文:⋯⋯存储在随机存取存储器(RAM)里的信息⋯⋯
    +

    (2)外文缩写可以使用半角圆点 (.) 表示缩写。

    U.S.A.
    +Apple, Inc.
    +

    (3)表示中文时,英文省略号(...)应改为中文省略号(⋯⋯)。

    英文:5 minutes later...
    +
    +中文:5 分钟过去了⋯⋯
    +

    (4)英文书名或电影名改用中文表达时,双引号应改为书名号。

    英文:He published an article entitled "The Future of the Aviation".
    +
    +中文:他发表了一篇名为《航空业的未来》的文章。
    +

    (5)第一次出现英文词汇时,在括号中给出中文标注。此后再次出现时,直接使用英文缩写即可。

    IOC(International Olympic Committee,国际奥林匹克委员会)。这样定义后,便可以直接使用“IOC”了。
    +

    (6)专有名词中每个词第一个字母均应大写,非专有名词则不需要大写。

    “American Association of Physicists in Medicine”(美国医学物理学家协会)是专有名词,需要大写。
    +
    +“online transaction processing”(在线事务处理)不是专有名词,不应大写。
    +

    段落

    原则

    • 一个段落只能有一个主题,或一个中心句子。
    • 段落的中心句子放在段首,对全段内容进行概述。后面陈述的句子为核心句服务。
    • 一个段落的长度不能超过七行,最佳段落长度小于等于四行。
    • 段落的句子语气要使用陈述和肯定语气,避免使用感叹语气。
    • 段落之间使用一个空行隔开。
    • 段落开头不要留出空白字符。

    引用

    引用第三方内容时,应注明出处。

    One man’s constant is another man’s variable. — Alan Perlis
    +

    如果是全篇转载,请在全文开头显著位置注明作者和出处,并链接至原文。

    本文转载自 WikiQuote
    +

    使用外部图片时,必须在图片下方或文末标明来源。

    本文部分图片来自 Wikipedia
    +

    数值

    半角数字

    阿拉伯数字一律使用半角形式,不得使用全角形式。

    错误:这件商品的价格是1000元。
    +
    +正确:这件商品的价格是 1000 元。
    +

    千分号

    数值为千位以上,应添加千分号(半角逗号)。

    XXX 公司的实收资本为 ¥1,258,000 人民币。
    +

    对于 4 位的数值,千分号是选用的,比如 10001,000 都可以接受。对于 4 位以上的数值,应添加千分号。

    货币

    货币应为阿拉伯数字,并在数字前写出货币符号,或在数字后写出货币中文名称。

    $1,000
    +1,000 美元
    +

    英文的货币名称,建议参考国际标准 ISO 4217open in new window

    数值范围

    表示数值范围时,用波浪线()或一字线()连接。参见《标点符号》一节的“连接号”部分。

    带有单位或百分号时,两个数字建议都要加上单位或百分号。

    132 kg~234 kg
    +
    +67%~89%
    +

    变化程度的表示法

    数字的增加要使用“增加了”、“增加到”。“了”表示增量,“到”表示定量。

    增加到过去的两倍
    +(过去为一,现在为二)
    +
    +增加了两倍
    +(过去为一,现在为三)
    +

    数字的减少要使用“降低了”、“降低到”。“了”表示增量,“到”表示定量。

    降低到百分之八十
    +(定额是一百,现在是八十)
    +
    +降低了百分之八十
    +(原来是一百,现在是二十)
    +

    不能用“降低 N 倍”或“减少 N 倍”的表示法,要用“降低百分之几”或“减少百分之几”。因为减少(或降低)一倍表示数值原来为一百,现在等于零。

    标点符号

    原则

    (1)中文语句的标点符号,均应该采取全角符号,这样可以与全角文字保持视觉的一致。

    (2)如果整句为英文,则该句使用英文/半角标点。

    (3)句号、问号、叹号、逗号、顿号、分号和冒号不得出现在一行之首。

    (4)点号(句号、逗号、顿号、分号、冒号)不得出现在标题的末尾,而标号(引号、括号、破折号、省略号、书名号、着重号、间隔号、叹号、问号)可以。

    句号

    (1)中文语句的结尾处应该用全角句号()。

    (2)句子末尾用括号加注时,句号应在括号之外。

    错误:关于文件的输出,请参照第 1.3 节(见第 26 页。)
    +
    +正确:关于文件的输出,请参照第 1.3 节(见第 26 页)。
    +

    逗号

    (1)逗号()表示句子内部的一般性停顿。

    (2)注意避免“一逗到底”,即整个段落除了结尾,全部停顿都使用逗号。

    顿号

    (1)句子内部的并列词,应该用全角顿号 () 分隔,而不用逗号,即使并列词是英语也是如此。

    错误:我最欣赏的科技公司有 Google, Facebook, 腾讯, 阿里和百度等。
    +
    +正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。
    +

    (2)英文句子中,并列词语之间使用半角逗号(,)分隔。

    例句:Microsoft Office includes Word, Excel, PowerPoint, Outlook and other components.
    +

    (3)中文句子内部的并列词,最后一个尽量使用()来连接,使句子读起来更加连贯,下面两个句子都可以,第二个更优。

    正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里,以及百度等。
    +
    +正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。
    +

    分号

    (1)分号()表示复句内部并列分句之间的停顿。

    引号

    (1)引用时,应该使用全角双引号(“ ”),注意前后双引号不同。

    例句:许多人都认为客户服务的核心是“友好”和“专业”。
    +

    (2)引号里面还要用引号时,外面一层用双引号,里面一层用单引号(‘ ’),注意前后单引号不同。

    例句:鲍勃解释道:“我要放音乐,可萨利说,‘不行!’。”
    +

    [!tip] 简体中文使用直角引号open in new window

    用法:

    「老师,『有条不紊』的『紊』是什么意思?」

    对比用法:

    “老师,‘有条不紊’的‘紊’是什么意思?”

    括号

    (1)补充说明时,使用全角圆括号(()),括号前后不加空格。

    例句:请确认所有的连接(电缆和接插件)均安装牢固。
    +

    (2)几种括号的中英文名称。

    英文中文
    { }braces 或 curly brackets大括号
    [ ]square brackets 或 brackets方括号
    < >angled brackets尖括号
    ( )parentheses圆括号

    冒号

    (1)全角冒号()常用在需要解释的词语后边,引出解释和说明。

    例句:请确认以下几项内容:时间、地点、活动名称和来宾数量。
    +

    (2)表示时间时,应使用半角冒号(:)。

    例句:早上 8:00
    +

    省略号

    (1)省略号(⋯⋯)表示语句未完、或者语气的不连续。

    (2)省略号占两个汉字空间、包含六个省略点,不要使用 。。。... 等非标准形式。

    (3)省略号不应与“等”这个词一起使用。

    错误:我们为会餐准备了香蕉、苹果、梨…等各色水果。
    +
    +正确:我们为会餐准备了各色水果,有香蕉、苹果、梨⋯⋯
    +
    +正确:我们为会餐准备了香蕉、苹果、梨等各色水果。
    +

    感叹号

    (1)应该使用平静的语气叙述,尽量避免使用感叹号()。

    (2)不得多个感叹号连用,比如 !!!!!

    破折号

    (1)破折号 ———— 一般用于进一步解释。

    (2)破折号应占两个汉字的位置。如果破折号本身只占一个汉字的位置,那么前后应该留出一个半角空格。

    例句:直觉————尽管它并不总是可靠的————告诉我,这事可能出了些问题。
    +
    +例句:直觉 —— 尽管它并不总是可靠的 —— 告诉我,这事可能出了些问题。
    +

    连接号

    (1)连接号用于连接两个类似的词。

    (2)以下场合应该使用直线连接号(-),占一个半角字符的位置。

    • 两个名词的复合
    • 图表编号
    例句:氧化-还原反应
    +
    +例句:图 1-1
    +

    (3)数值范围(例如日期、时间或数字)应该使用波浪连接号()或一字号(),占一个全角字符的位置。

    例句:2009 年~2011 年
    +

    注意,波浪连接号前后两个值都建议加上单位。

    (4)波浪连接号也可以用汉字“至”代替。

    例句:周围温度:-20 °C 至 -10 °C
    +

    文档体系

    结构

    软件手册是一部完整的书,建议采用下面的结构。

    • 简介(Introduction):[必备] [文件] 提供对产品和文档本身的总体的、扼要的说明
    • 快速上手(Getting Started):[可选] [文件] 如何最快速地使用产品
    • 入门篇(Basics):[必备] [目录] 又称“使用篇”,提供初级的使用教程
      • 环境准备(Prerequisite):[必备] [文件] 软件使用需要满足的前置条件
      • 安装(Installation):[可选] [文件] 软件的安装方法
      • 设置(Configuration):[必备] [文件] 软件的设置
    • 进阶篇(Advanced):[可选] [目录] 又称“开发篇”,提供中高级的开发教程
    • API(Reference):[可选] [目录|文件] 软件 API 的逐一介绍
    • FAQ:[可选] [文件] 常见问题解答
    • 附录(Appendix):[可选] [目录] 不属于教程本身、但对阅读教程有帮助的内容
      • Glossary:[可选] [文件] 名词解释
      • Recipes:[可选] [文件] 最佳实践
      • Troubleshooting:[可选] [文件] 故障处理
      • ChangeLog:[可选] [文件] 版本说明
      • Feedback:[可选] [文件] 反馈方式

    下面是两个真实范例,可参考。

    文件名

    文档的文件名不得含有空格。

    文件名必须使用半角字符,不得使用全角字符。这也意味着,中文不能用于文件名。

    错误:名词解释.md
    +
    +正确:glossary.md
    +

    文件名建议只使用小写字母,不使用大写字母。

    错误:TroubleShooting.md
    +
    +正确:troubleshooting.md
    +

    为了醒目,某些说明文件的文件名,可以使用大写字母,比如 READMELICENSE

    文件名包含多个单词时,单词之间建议使用半角的连词线(-)分隔。

    不佳:advanced_usage.md
    +
    +正确:advanced-usage.md
    +

    参考链接

    License

    公共领域(public domain)

    + + + diff --git a/code/index.html b/code/index.html new file mode 100644 index 00000000..471085c1 --- /dev/null +++ b/code/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 代码笔记 | 北辞 + + + + + +
    跳至主要內容

    代码笔记

    Northword小于 1 分钟

    代码笔记

    这里存放一些与代码和编程有关的笔记。

    目录

    + + + diff --git a/code/linux/bashrc/index.html b/code/linux/bashrc/index.html new file mode 100644 index 00000000..2ae651bc --- /dev/null +++ b/code/linux/bashrc/index.html @@ -0,0 +1,282 @@ + + + + + + + + + + + + + + +
    跳至主要內容

    19.linux-bashrc-VS-bash_profile

    Northword大约 3 分钟Linux

    19.linux-bashrc-VS-bash_profile

    环境变量

    自定义命令提示符

    通过修改 PS1 变量实现:

     \u 显示当前用户账号
    + \v BASH的版本信息
    + 
    + \H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound
    + \h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun
    + 
    + \W 只显示当前路径最后一个目录
    + \w 显示当前绝对路径(当前用户目录会以 ~代替)
    + 
    + \t 显示时间为24小时格式,如:14:19:34
    + \T 显示时间为12小时格式,如:02:19:34
    + \A 显示时间为24小时格式但是不带秒,如:14:19
    + \d 代表日期,格式为weekday month date,例如:"Mon Aug1"
    + 
    + $PWD 显示当前全路径
    + # 显示命令行提示符号,一般使用'$'或者'#'
    + sudo echo "export PS1='[\u@\h \w]# '" >> /etc/profile
    + # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\w
    +
    export PS1='[\u@\h \w]\$ '
    +
    +# 效果
    +[scujh_zjb@scu ~/311]$ pwd
    +/home/scujh_zjb/311
    +[scujh_zjb@scu ~/311]$
    +

    自用备份:

    # .bashrc
    +
    +# Source global definitions
    +if [ -f /etc/bashrc ]; then
    +        . /etc/bashrc
    +fi
    +
    +# Uncomment the following line if you don't like systemctl's auto-paging feature:
    +# export SYSTEMD_PAGER=
    +
    +# User specific aliases and functions
    +
    +## PATH
    +PATH=/opt/apps/vasptool/bin:${PATH}
    +PATH=/opt/apps/vasptool/vtstscripts-978:${PATH}
    +PATH=/opt/apps/anaconda3/bin:${PATH}
    +PATH=/home/scujh_zjb/apps/bin:${PATH}
    +PATH=/home/scujh_zjb/apps/scripts:${PATH}
    +export PATH
    +
    +## TimeZone
    +export TZ='Asia/Shanghai'
    +export TIME_STYLE='+%Y-%m-%d %H:%M:%S'   # 时区与时间显示格式本地化
    +
    +## alisa
    +alias ..='cd ..'
    +alias ...='cd ../..'
    +alias cd..='cd ..'
    +alias cppbs='cp ~/vasp_cpu.pbs . && ls --color' 
    +alias qq='qstat -a'
    +
    +alias rm='rm -i'
    +alias cp='cp -i'
    +alias mv='mv -i'
    +alias ll='ls -lh'  # ll 列出的文件大小使用合适的单位表示,默认为 kb
    +cdpwd() {
    +  cd "${1}";
    +  # pwd;
    +  # echo -e "\033[36m`pwd` \033[0m";
    +  # echo -e "\033[47;30m `pwd` \033[0m";
    +  ls --color;
    +}
    +alias cd='cdpwd'
    +
    +alias ls='echo -e "\033[36m`pwd` \033[0m" && ls --color'
    +#alias vi='vim'
    +
    +alias viewmail='vi /var/spool/mail/scujh_zjb'
    +
    +export PS1='[\u@\h \w]\$ '
    +

    linux 中 . bashrc 与 . bash_profile 的区别

    具体参考 关于“.bash_profile”和“.bashrc”区别的总结 | CSDNopen in new window

    由此可见,“profile”系列文件的主要目的在于为“登录 shell”设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。

    顺便提一句,Linux 中“rc”是英文“run command”的缩写,表示文件中存放需要执行的命令。其实这也非常符合逻辑,设置功能就要执行 shopt 命令,而设置别名要执行 alias 命令。与“rc”系列互补,“profile”系列用来设置环境变量,它不会去调用这两个命令,但却经常需要使用 export 语句。不信你可以看一看这两个文件。

    如果你想对 bash 的功能进行设置或者是定义一些别名,推荐你修改 ~/.bashrc 文件,这样无论你以何种方式打开 shell,你的配置都会生效。而如果你要更改一些环境变量,推荐你修改 ~/.bash_profile 文件,因为考虑到 shell 的继承特性,这些更改确实只应该被执行一次(而不是多次)。针对所有用户进行全局设置,推荐你在 /etc/profile.d 目录下添加以 .sh 结尾的文件,而不是去修改全局 startup 文件。

    + + + +或者'#' sudo echo "export PS1='[\u@\h \w]# '" >> /etc/profile # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\w">19.linux-bashrc-VS-bash_profile | 北辞 + + + + +
    跳至主要內容

    19.linux-bashrc-VS-bash_profile

    Northword大约 3 分钟Linux

    19.linux-bashrc-VS-bash_profile

    环境变量

    自定义命令提示符

    通过修改 PS1 变量实现:

     \u 显示当前用户账号
    + \v BASH的版本信息
    + 
    + \H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound
    + \h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun
    + 
    + \W 只显示当前路径最后一个目录
    + \w 显示当前绝对路径(当前用户目录会以 ~代替)
    + 
    + \t 显示时间为24小时格式,如:14:19:34
    + \T 显示时间为12小时格式,如:02:19:34
    + \A 显示时间为24小时格式但是不带秒,如:14:19
    + \d 代表日期,格式为weekday month date,例如:"Mon Aug1"
    + 
    + $PWD 显示当前全路径
    + # 显示命令行提示符号,一般使用'$'或者'#'
    + sudo echo "export PS1='[\u@\h \w]# '" >> /etc/profile
    + # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\w
    +
    export PS1='[\u@\h \w]\$ '
    +
    +# 效果
    +[scujh_zjb@scu ~/311]$ pwd
    +/home/scujh_zjb/311
    +[scujh_zjb@scu ~/311]$
    +

    自用备份:

    # .bashrc
    +
    +# Source global definitions
    +if [ -f /etc/bashrc ]; then
    +        . /etc/bashrc
    +fi
    +
    +# Uncomment the following line if you don't like systemctl's auto-paging feature:
    +# export SYSTEMD_PAGER=
    +
    +# User specific aliases and functions
    +
    +## PATH
    +PATH=/opt/apps/vasptool/bin:${PATH}
    +PATH=/opt/apps/vasptool/vtstscripts-978:${PATH}
    +PATH=/opt/apps/anaconda3/bin:${PATH}
    +PATH=/home/scujh_zjb/apps/bin:${PATH}
    +PATH=/home/scujh_zjb/apps/scripts:${PATH}
    +export PATH
    +
    +## TimeZone
    +export TZ='Asia/Shanghai'
    +export TIME_STYLE='+%Y-%m-%d %H:%M:%S'   # 时区与时间显示格式本地化
    +
    +## alisa
    +alias ..='cd ..'
    +alias ...='cd ../..'
    +alias cd..='cd ..'
    +alias cppbs='cp ~/vasp_cpu.pbs . && ls --color' 
    +alias qq='qstat -a'
    +
    +alias rm='rm -i'
    +alias cp='cp -i'
    +alias mv='mv -i'
    +alias ll='ls -lh'  # ll 列出的文件大小使用合适的单位表示,默认为 kb
    +cdpwd() {
    +  cd "${1}";
    +  # pwd;
    +  # echo -e "\033[36m`pwd` \033[0m";
    +  # echo -e "\033[47;30m `pwd` \033[0m";
    +  ls --color;
    +}
    +alias cd='cdpwd'
    +
    +alias ls='echo -e "\033[36m`pwd` \033[0m" && ls --color'
    +#alias vi='vim'
    +
    +alias viewmail='vi /var/spool/mail/scujh_zjb'
    +
    +export PS1='[\u@\h \w]\$ '
    +

    linux 中 . bashrc 与 . bash_profile 的区别

    具体参考 关于“.bash_profile”和“.bashrc”区别的总结 | CSDNopen in new window

    由此可见,“profile”系列文件的主要目的在于为“登录 shell”设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。

    顺便提一句,Linux 中“rc”是英文“run command”的缩写,表示文件中存放需要执行的命令。其实这也非常符合逻辑,设置功能就要执行 shopt 命令,而设置别名要执行 alias 命令。与“rc”系列互补,“profile”系列用来设置环境变量,它不会去调用这两个命令,但却经常需要使用 export 语句。不信你可以看一看这两个文件。

    如果你想对 bash 的功能进行设置或者是定义一些别名,推荐你修改 ~/.bashrc 文件,这样无论你以何种方式打开 shell,你的配置都会生效。而如果你要更改一些环境变量,推荐你修改 ~/.bash_profile 文件,因为考虑到 shell 的继承特性,这些更改确实只应该被执行一次(而不是多次)。针对所有用户进行全局设置,推荐你在 /etc/profile.d 目录下添加以 .sh 结尾的文件,而不是去修改全局 startup 文件。

    + + + +或者'#' sudo echo "export PS1='[\u@\h \w]# '" >> /etc/profile # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\w"> + + + + + +
    跳至主要內容

    19.linux-bashrc-VS-bash_profile

    Northword大约 3 分钟Linux

    19.linux-bashrc-VS-bash_profile

    环境变量

    自定义命令提示符

    通过修改 PS1 变量实现:

     \u 显示当前用户账号
    + \v BASH的版本信息
    + 
    + \H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound
    + \h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun
    + 
    + \W 只显示当前路径最后一个目录
    + \w 显示当前绝对路径(当前用户目录会以 ~代替)
    + 
    + \t 显示时间为24小时格式,如:14:19:34
    + \T 显示时间为12小时格式,如:02:19:34
    + \A 显示时间为24小时格式但是不带秒,如:14:19
    + \d 代表日期,格式为weekday month date,例如:"Mon Aug1"
    + 
    + $PWD 显示当前全路径
    + # 显示命令行提示符号,一般使用'$'或者'#'
    + sudo echo "export PS1='[\u@\h \w]# '" >> /etc/profile
    + # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\w
    +
    export PS1='[\u@\h \w]\$ '
    +
    +# 效果
    +[scujh_zjb@scu ~/311]$ pwd
    +/home/scujh_zjb/311
    +[scujh_zjb@scu ~/311]$
    +

    自用备份:

    # .bashrc
    +
    +# Source global definitions
    +if [ -f /etc/bashrc ]; then
    +        . /etc/bashrc
    +fi
    +
    +# Uncomment the following line if you don't like systemctl's auto-paging feature:
    +# export SYSTEMD_PAGER=
    +
    +# User specific aliases and functions
    +
    +## PATH
    +PATH=/opt/apps/vasptool/bin:${PATH}
    +PATH=/opt/apps/vasptool/vtstscripts-978:${PATH}
    +PATH=/opt/apps/anaconda3/bin:${PATH}
    +PATH=/home/scujh_zjb/apps/bin:${PATH}
    +PATH=/home/scujh_zjb/apps/scripts:${PATH}
    +export PATH
    +
    +## TimeZone
    +export TZ='Asia/Shanghai'
    +export TIME_STYLE='+%Y-%m-%d %H:%M:%S'   # 时区与时间显示格式本地化
    +
    +## alisa
    +alias ..='cd ..'
    +alias ...='cd ../..'
    +alias cd..='cd ..'
    +alias cppbs='cp ~/vasp_cpu.pbs . && ls --color' 
    +alias qq='qstat -a'
    +
    +alias rm='rm -i'
    +alias cp='cp -i'
    +alias mv='mv -i'
    +alias ll='ls -lh'  # ll 列出的文件大小使用合适的单位表示,默认为 kb
    +cdpwd() {
    +  cd "${1}";
    +  # pwd;
    +  # echo -e "\033[36m`pwd` \033[0m";
    +  # echo -e "\033[47;30m `pwd` \033[0m";
    +  ls --color;
    +}
    +alias cd='cdpwd'
    +
    +alias ls='echo -e "\033[36m`pwd` \033[0m" && ls --color'
    +#alias vi='vim'
    +
    +alias viewmail='vi /var/spool/mail/scujh_zjb'
    +
    +export PS1='[\u@\h \w]\$ '
    +

    linux 中 . bashrc 与 . bash_profile 的区别

    具体参考 关于“.bash_profile”和“.bashrc”区别的总结 | CSDNopen in new window

    由此可见,“profile”系列文件的主要目的在于为“登录 shell”设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。

    顺便提一句,Linux 中“rc”是英文“run command”的缩写,表示文件中存放需要执行的命令。其实这也非常符合逻辑,设置功能就要执行 shopt 命令,而设置别名要执行 alias 命令。与“rc”系列互补,“profile”系列用来设置环境变量,它不会去调用这两个命令,但却经常需要使用 export 语句。不信你可以看一看这两个文件。

    如果你想对 bash 的功能进行设置或者是定义一些别名,推荐你修改 ~/.bashrc 文件,这样无论你以何种方式打开 shell,你的配置都会生效。而如果你要更改一些环境变量,推荐你修改 ~/.bash_profile 文件,因为考虑到 shell 的继承特性,这些更改确实只应该被执行一次(而不是多次)。针对所有用户进行全局设置,推荐你在 /etc/profile.d 目录下添加以 .sh 结尾的文件,而不是去修改全局 startup 文件。

    + + + diff --git a/code/linux/commend/index.html b/code/linux/commend/index.html new file mode 100644 index 00000000..96029619 --- /dev/null +++ b/code/linux/commend/index.html @@ -0,0 +1,235 @@ + + + + + + + + + + Linux 常用命令 | 北辞 + + + + + +
    跳至主要內容

    Linux 常用命令

    Northword大约 13 分钟Linux

    Linux 常用命令

    命令说明
    cd切换目录
    ls列出文件和目录
    ll同上
    mkdir新建文件夹
    cp复制
    mv移动
    rm删除文件
    rmdir删除目录
    pwd当前目录
    cat查看文件全文
    tail预览文件后几行
    tar压缩/解压缩

    cd:Change Directory

    切换当前目录,可以是绝对路径,也可以是相对路径。如:

    cd /root/Docements # 切换到目录/root/Docements
    +cd ./path          # 切换到当前目录下的path目录中,“.”表示当前目录  
    +cd ../path         # 切换到上层目录中的path目录中,“..”表示上一层目录
    +
    命令解释
    cd进入用户主目录
    cd ~进入用户主目录
    cd -返回进入此目录之前所在目录
    cd $OLDPWD同上,但前者会屏显上次的目录,这个不会
    cd ..返回上一级目录
    cd ../..返回上两级目录
    cd !$把上个命令的参数作为 cd 参数使用
    cd /进入根目录
    cd .当前目录

    ls 与 ll:list

    ls:查看文件与目录,参数如下

    -l :列出长数据串,包含文件的属性与权限数据等
    +-a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
    +-d :仅列出目录本身,而不是列出目录的文件数据
    +-h :将文件容量以较易读的方式(GB,kB等)列出来
    +-R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
    +

    值得一提的是 -l 参数,它可以用 ll 来简化,如下例:

    [zjb@op app]$ ls
    +get-pip.py  pot_database  python38  Python-3.8.5  scripts  tgz_backup  vaspkit.1.12  vtstscripts-933
    +
    +[zjb@op app]$ ls -l
    +total 1875
    +-rw-r--r--  1 zjb energy 1886796 Oct 18 06:00 get-pip.py
    +drwxr-xr-x  4 zjb energy    4096 Dec  1  2018 pot_database
    +drwxr-xr-x  6 zjb energy    4096 Oct 29 14:59 python38
    +drwxr-xr-x 18 zjb energy    4096 Oct 29 14:57 Python-3.8.5
    +drwxr-xr-x  2 zjb energy    4096 Oct 29 15:11 scripts
    +drwxr-xr-x  2 zjb energy    4096 Oct 31 17:48 tgz_backup
    +drwxr-xr-x  7 zjb energy    4096 Oct  9 16:50 vaspkit.1.12
    +drwxr-xr-x  5 zjb energy    8192 Dec 28  2017 vtstscripts-933
    +
    +[zjb@op app]$ ll
    +total 1875
    +-rw-r--r--  1 zjb energy 1886796 Oct 18 06:00 get-pip.py
    +drwxr-xr-x  4 zjb energy    4096 Dec  1  2018 pot_database
    +drwxr-xr-x  6 zjb energy    4096 Oct 29 14:59 python38
    +drwxr-xr-x 18 zjb energy    4096 Oct 29 14:57 Python-3.8.5
    +drwxr-xr-x  2 zjb energy    4096 Oct 29 15:11 scripts
    +drwxr-xr-x  2 zjb energy    4096 Oct 31 17:48 tgz_backup
    +drwxr-xr-x  7 zjb energy    4096 Oct  9 16:50 vaspkit.1.12
    +drwxr-xr-x  5 zjb energy    8192 Dec 28  2017 vtstscripts-933
    +

    mkdir:Make Directory

    创建文件夹

    mkdir <文件夹名称>
    +

    例 行 9

    [zjb@op ~]$ ll
    +total 21
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +[zjb@op ~]$ mkdir hahahahahahahha
    +[zjb@op ~]$ ll
    +total 25
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:33 hahahahahahahha
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +

    cp:Copy

    复制文件(夹),copy 之意,它还可以把多个文件一次性地复制到一个目录下,它的常用参数如下:

    -a :将文件的特性一起复制
    +-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
    +-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
    +-r :递归持续复制,用于目录的复制行为
    +-u :目标文件与源文件有差异时才会复制
    +

    例如:

    cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2
    +cp file1 file2 file3 dir/ #把文件file1、file2、file3复制到目录dir中
    +

    mv:Move

    该命令用于移动文件、目录或更名,move 之意,它的常用参数如下:

    -f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    +-i :若目标文件已经存在,就会询问是否覆盖
    +-u :若目标文件已经存在,且比目标文件新,才会更新
    +

    注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。

    例如:

    mv file1 file2 file3 dir/   # 把文件file1、file2、file3移动到目录dir中
    +mv file1 file2              # 把文件file1重命名为file2
    +

    rm:Remove

    该命令用于删除文件或目录,remove,它的常用参数如下:

    -f :就是force的意思,忽略不存在的文件,不会出现警告消息
    +-i :互动模式,在删除前会询问用户是否操作
    +-r :递归删除,最常用于目录删除,它是一个非常危险的参数
    +
    [zjb@op ~]$ ll
    +total 25
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:33 hahahahahahahha
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +[zjb@op ~]$ rm -r hahahahahahahha/
    +[zjb@op ~]$ ll
    +total 21
    +drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup
    +drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl
    +drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt
    +drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test
    +-rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs
    +

    rmdir:Remove Directory

    删除指定目录。要么用 rm -r <dir> 要么用 rmdir <dir>。更建议用 rmdir

    pwd:Print Working Directory

    打印当前工作路径。绝对路径。

    [zjb@op utilities]$ pwd
    +/public/home/zjb/app/vaspkit.1.12/utilities
    +

    cat:concatenate and print files

    该命令用于查看文本文件的内容,后接要查看的文件名。通常可用管道与 more 和 less 一起使用,从而可以一页页地查看数据。

    [zjb@op utilities]$ cat hello.sh 
    +#!/bin/bash
    +echo "I love you"
    +[zjb@op utilities]$ 
    +

    tar

    该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如 gzip 和 bzip 等)进行压缩和解压。它的常用参数如下:

    -c :新建打包文件
    +-t :查看打包文件的内容含有哪些文件名
    +-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
    +-j :通过bzip2的支持进行压缩/解压缩
    +-z :通过gzip的支持进行压缩/解压缩
    +-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
    +-f filename :filename为要处理的文件
    +-C dir :指定压缩/解压缩的目录dir
    +

    通常只需要记住下面三条命令即可:

    压缩:tar -zcvf filename.tar.gz 要被处理的文件或目录名称
    +查询:tar -tvf filename.tar
    +解压:tar -zxvf filename.tar.gz
    +      tar -jxvf xx.tar.bz2
    +

    注:文件名并不定要以后缀 tar.gz 结尾,这里主要是为了说明使用的压缩程序为 gzip。后缀也可是 .tar.tar.bz2

    grep

    该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为

    grep [-acinv] [--color=auto] '查找字符串' filename
    +

    它的常用参数如下:

    -a :将binary文件以text文件的方式查找数据
    +-c :计算找到‘查找字符串’的次数
    +-i :忽略大小写的区别,即把大小写视为相同
    +-v :反向选择,即显示出没有‘查找字符串’内容的那一行
    +
    # 例如:
    +# 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色
    +grep --color=auto 'MANPATH' /etc/man.config
    +# 把ls -l的输出中包含字母file(不区分大小写)的内容输出
    +ls -l | grep -i file
    +

    chown

    该命令用于改变文件的所有者,与 chgrp 命令的使用方法相同,只是修改的文件属性不同,不再详述。

    chmod

    该命令用于改变文件的权限,一般的用法如下:

    chmod [-R] xyz 文件或目录
    +-R:进行递归的持续更改,即连同子目录下的所有文件都会更改
    +

    同时,chmod 还可以使用 u(user)、g(group)、o(other)、a(all)和 +(加入)、-(删除)、=(设置)跟 rwx 搭配来对文件的权限进行更改。

    # 例如:
    +chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x
    +chmod g+w file # 向file的文件权限中加入用户组可写权限
    +

    find

    find 是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:

    find [PATH] [option] [action]
    +
    +# 与时间有关的参数:
    +-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
    +-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
    +-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
    +-newer file : 列出比file还要新的文件名
    +# 例如:
    +find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件
    +
    +# 与用户或用户组名有关的参数:
    +-user name : 列出文件所有者为name的文件
    +-group name : 列出文件所属用户组为name的文件
    +-uid n : 列出文件所有者为用户ID为n的文件
    +-gid n : 列出文件所属用户组为用户组ID为n的文件
    +# 例如:
    +find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件
    +
    +# 与文件权限及名称有关的参数:
    +-name filename :找出文件名为filename的文件
    +-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
    +-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
    +             目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
    +-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
    +-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
    +-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
    +# 例如:
    +find / -name passwd # 查找文件名为passwd的文件
    +find . -perm 0755 # 查找当前目录中文件权限的0755的文件
    +find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte
    +

    ps

    该命令用于将某个时间点的进程运行情况选取下来并输出,process 之意,它的常用参数如下:

    -A :所有的进程均显示出来
    +-a :不与terminal有关的所有进程
    +-u :有效用户的相关进程
    +-x :一般与a参数一起使用,可列出较完整的信息
    +-l :较长,较详细地将PID的信息列出
    +

    其实我们只要记住 ps 一般使用的命令参数搭配即可,它们并不多,如下:

    ps aux # 查看系统所有的进程数据
    +ps ax # 查看不与terminal有关的所有进程
    +ps -lA # 查看系统所有的进程数据
    +ps axjf # 查看连同一部分进程树状态
    +

    kill

    该命令用于向某个工作(%jobnumber)或者是某个 PID(数字)传送一个信号,它通常与 ps 和 jobs 命令一起使用,它的基本语法如下:

    kill -signal PID
    +

    signal 的常用参数如下:

    注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。

    1:SIGHUP,启动被终止的进程
    +2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
    +9:SIGKILL,强制中断一个进程的进行
    +15:SIGTERM,以正常的结束进程方式来终止进程
    +17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
    +

    例如:

    # 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程
    +kill -SIGTERM %1 
    +# 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得
    +kill -SIGHUP PID
    +

    killall

    该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:

    killall [-iIe] [command name]
    +

    它的参数如下:

    -i :交互式的意思,若需要删除时,会询问用户
    +-e :表示后面接的command name要一致,但command name不能超过15个字符
    +-I :命令名称忽略大小写
    +# 例如:
    +killall -SIGHUP syslogd # 重新启动syslogd
    +

    file

    该命令用于判断接在 file 命令后的文件的基本数据,因为在 Linux 下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了,它的用法非常简单,基本语法如下:

    file filename
    +#例如:
    +file ./test
    +

    chgrp

    该命令用于改变文件所属用户组,它的使用非常简单,它的基本用法如下:

    chgrp [-R] dirname/filename
    +-R :进行递归的持续对所有文件和子目录更改
    +# 例如:
    +chgrp users -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users
    +

    gcc

    对于一个用 Linux 开发 C 程序的人来说,这个命令就非常重要了,它用于把 C 语言的源程序文件,编译成可执行程序,由于 g++ 的很多参数跟它非常相似,所以这里只介绍 gcc 的参数,它的常用参数如下:

    -o :output之意,用于指定生成一个可执行文件的文件名
    +-c :用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序
    +-I :增加编译时搜索头文件的路径
    +-L :增加编译时搜索静态连接库的路径
    +-S :把源文件生成汇编代码文件
    +-lm:表示标准库的目录中名为libm.a的函数库
    +-lpthread :连接NPTL实现的线程库
    +-std= :用于指定把使用的C语言的版本
    +
    +# 例如:
    +# 把源文件test.c按照c99标准编译成可执行程序test
    +gcc -o test test.c -lm -std=c99
    +#把源文件test.c转换为相应的汇编程序源文件test.s
    +gcc -S test.c
    +

    time

    该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个 time 即可,例如:

    time ./process
    +time ps aux
    +

    在程序或命令运行结束后,在最后输出了三个时间,它们分别是:

    user:用户 CPU 时间,命令执行完成花费的用户 CPU 时间,即命令在用户态中执行时间总和;

    system:系统 CPU 时间,命令执行完成花费的系统 CPU 时间,即命令在核心态中执行时间总和;

    real:实际时间,从 command 命令行开始执行到运行终止的消逝时间;

    注:用户 CPU 时间和系统 CPU 时间之和为 CPU 时间,即命令占用 CPU 执行的时间总和。实际时间要大于 CPU 时间,因为 Linux 是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。

    + + + diff --git a/code/linux/index.html b/code/linux/index.html new file mode 100644 index 00000000..e9dcdf52 --- /dev/null +++ b/code/linux/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Linux | 北辞 + + + + + + + + + diff --git a/code/linux/install-app-non-root/index.html b/code/linux/install-app-non-root/index.html new file mode 100644 index 00000000..8115a432 --- /dev/null +++ b/code/linux/install-app-non-root/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Linux 下无 Root 权限编译软件 | 北辞 + + + + + +
    跳至主要內容

    Linux 下无 Root 权限编译软件

    Northword大约 6 分钟Installlinux

    Linux 下无 Root 权限编译软件

    参考:linux 非 root 用户安装软件入门 | tlanyan.meopen in new window .

    下为上文的备份。


    下面是 Linux 下非 root 用户安装软件的一般流程:

    1. 获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码;
    2. 解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz
    3. 切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置;
    4. 编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟);
    5. 使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中;
    6. 如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。

    windowsopen in new window 转移到 Linuxopen in new window 的用户刚开始会有各种不适,因使用习惯水土不服而放弃 Linux 的不在少数。还没有领略到 Linux 的美好就退却,对于这类人只能说可惜。还有部分人在个人电脑上用 Linux,总体感觉还不错;切换到工作时只能使用无特权的普通账户,会遇到“没 root 权限 -> 出现问题 -> 找答案 -> 提示用 root”的死循环,于是感到沮丧和抓狂。本文主要面向对象第二类人,简要介绍没有 root 权限时,安装软件的步骤和操作。

    许多人都非常熟悉 Windows,毫无疑问 windows 是目前桌面操作系统的王者。随着高富帅和土豪种群的增长,Mac OSopen in new window 的份额也逐步提升。无论是 windows 还是 Mac OS,用户接触的都是图形界面(Graphical User Interface,GUI)。转向 Linux 之后,大部分人会优先使用带图形界面的系统作为过渡。比如本人最开始使用 Ubuntu,熟悉后才慢慢转向 CentOS 和 Fedora。许多优秀的 Linux 桌面图形发行版,如 Debian/Ubuntu/Mint,Fedora,OpenSUSE 等,图形界面华美,桌面体验良好,可以给 Windows 用户很好的过渡。这些 Linux 系统基本都开源且可免费使用(支持服务可能要付费),是 Linux 入门级操作系统的首选。

    Windows 上安装软件相当傻瓜化,下载 exe 后双击运行,点击鼠标一直 next 就完事。安装过程中,小白用户一般不会看引导页面种的内容(估计字都认识,连在一块不知道什么意思),附带安装其他软件或者对系统做了额外改动也毫不知情。当有人(一般是女生)说电脑开机后反应很慢/失去响应,过去一看电脑上瑞星、360、金山毒霸、腾讯安全管家等各种软件都在右下角托盘刷着存在感。对于这种情形,只能表示理解,进入安全模式把不用的软件都卸载掉,电脑基本上就正常了。

    回到 Linux 安装软件,情况稍有不同。首先是软件一般从软件仓库中获取,即现在熟悉的应用市场;再次基本上用命令行安装软件,不是双击安装包(Mac OS 可以这样做)。所以熟悉命令行安装软件,是迈向 Linux 世界基础的一步。幸运的是 linux 上又 apt/yum/dnf 等简单好用的软件包管理工具,能自动解决软件包之间的依赖问题,让用户一行命令就获取到所需软件。例如安装 g++,执行 sudo apt-get install g++sudo yum install -y gcc-c++ 即可。

    然而有些软件是有源代码,因为版权、无人维护等原因不在软件仓库中,apt-get/yum/dnf 的安装方式就行不通,只能从源码编译。这便需要先下载源代码,解压(大多数不能点右键解压),然后按照说明文档 make && make install。不管是从软件仓库,还是手工编译源代码的方式,对有 root 权限的用户问题都不大。倒霉的是没有 root 权限,还不得不安装某些软件才能正常工作的普通账号。这些普通账号需要额外的软件或依赖库时,该如何自救解脱?

    因为无法安装的原因是权限限制,故而有必要先了解一下 Linux 中文件和用户的权限。对任意一个文件(Linux 下一切皆文件,包括目录、CPU 内存等设备),可以使用 ls -l 查看其权限。命令的每行首列输出类似 (d|-)rwxrwxrwx,这就是文件的权限标志。第一个字母是文件类型,d 表示目录,- 表示普通文件,s 套接字,l 链接文件,等等;接下来有 9 列,每 3 列一组,总共 3 组,对应文件属主 (owner)、属主组员 (group) 和其他用户 (other) 对该文件的权限。每组的标志类似 rwx。rwx 是读 (read),写 (write) 和执行 (execute) 三种权限的缩写。如果没有某种权限,对应标志位是 -。例如某个文件 foo.txt,只有属主可读写,其权限标志就是:-rw-------。注意,非 root 用户下,文件夹必须要有执行(x)权限才能进入。

    再看用户的权限。root 用户是 bug,电脑上所有的文件都是它的,权限位设置对其无效。非 root 用户默认 只对家目录有完全的控制权限,对/tmp 目录有读写的权限。/tmp 目录如其名,应该只在其中存放临时性文件,该目录在系统重启时会被清空。/var、/usr、/bin、/opt 等常见文件夹及子目录,几乎所有用户都能访问其中的文件和内容,执行可执行程序,但只有 root 用户和属主有写入的权限

    了解完权限,再看普通账户安装软件困难的原因。大部分软件默认安装路径是 /usr/bin/usr/local/bin,安装时需要将可执行文件复制到这些目录下。普通用户没有目录的写权限,于是提示无权限导致安装失败。切换到 root 模式后,一切又都好使了。根据普通账号的权限,可以得出结论:非 root 用户,(几乎)只能安装软件到家目录下。

    + + + diff --git a/code/linux/intro/index.html b/code/linux/intro/index.html new file mode 100644 index 00000000..5f01ab8f --- /dev/null +++ b/code/linux/intro/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Linux | 北辞 + + + + + + + + + diff --git a/code/linux/lrzsz/index.html b/code/linux/lrzsz/index.html new file mode 100644 index 00000000..f235b953 --- /dev/null +++ b/code/linux/lrzsz/index.html @@ -0,0 +1,50 @@ + + + + + + + + + + lrzsz 的使用方法 | 北辞 + + + + + +
    跳至主要內容

    lrzsz 的使用方法

    Northword大约 2 分钟Linux

    lrzsz 的使用方法

    上传下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此,

    sz:让服务器将选定的文件发送(send)到本地

    rz:让服务器接收 (receive) 在本地选择的文件

    上传(rz)

    方法 1:拖拽

    直接将本地文件拖拽到 Xshell 里,即可将文件上传到当前工作目录。

    方法 2:rz

    $ rz 
    +# 输入`rz`回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行`rz`命令的目录。
    +

    下载(sz)

    #下载一个文件
    +$ sz filename 
    +
    +#下载多个文件
    +$ sz filename1 filename2
    +
    +#下载dir目录下所有文件,不包含dir下的文件夹
    +$ sz dir/*
    +

    为什么用 lrzsz:https://www.cnblogs.com/thrillerz/p/4745933.htmlopen in new window

    Linux 下和 Windows 之间的文件传输工具 rz/sz(lrz/lsz) 介绍

    【什么是 rz/sz (lsz/lrz)】

    rz,sz 是便是 Linux/Unix 同 Windows 进行 ZModem 文件传输的命令行工具。

    简单说就是,可以很方便地用这两个 sz/rz 工具,实现 Linux 下和 Windows 之间的文件传输 (发送和接收),速度大概为 10KB/s,适合中小文件。rz/sz 通过 Zmodem 协议传输数据。

    【为什么要用 rz/sz】

    普 通 Linux 和 Windows 之间的文件共享方法,主要有建立 nfs 实现文件共享,和 tftp 之类的方法,但是都很麻烦,而如果只是小文件(几十 K,几百 K),那么直接用 rz/sz,就显得极其地方便了。大文件的话,还是要考虑上面说得,其他的共享方法了,毕竟,rz/sz 速度只有 10K 左右,传 大文件会累死人的。。。

    + + + diff --git a/code/linux/openmpi/index.html b/code/linux/openmpi/index.html new file mode 100644 index 00000000..5ab7eb3a --- /dev/null +++ b/code/linux/openmpi/index.html @@ -0,0 +1,65 @@ + + + + + + + + + + Openmpi | 北辞 + + + + + +
    跳至主要內容

    Openmpi

    Northword小于 1 分钟

    Openmpi

    各种乱七八糟的报错

    libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4
    +--------------------------------------------------------------------------
    +Failed to create a queue pair (QP):
    +
    +Hostname: compute-0-9
    +Requested max number of outstanding WRs in the SQ:                1
    +Requested max number of outstanding WRs in the RQ:                2
    +Requested max number of SGEs in a WR in the SQ:                   511
    +Requested max number of SGEs in a WR in the RQ:                   511
    +Requested max number of data that can be posted inline to the SQ: 0
    +Error:    File exists
    +
    +Check requested attributes.
    +--------------------------------------------------------------------------
    +--------------------------------------------------------------------------
    +Open MPI has detected that there are UD-capable Verbs devices on your
    +system, but none of them were able to be setup properly.  This may
    +indicate a problem on this system.
    +
    +You job will continue, but Open MPI will ignore the "ud" oob component
    +in this run.
    +
    +Hostname: compute-0-9
    +--------------------------------------------------------------------------
    +

    解决:

    Put “oob=tcp” in your default MCA param file
    +

    新建 ~/.openmpi/mca-params.conf,写入 oob=tcp 即可。

    MCA param file:

    • $HOME/.openmpi/mca-params.conf: This is the user-supplied set of values, which has the highest precedence.
    • $prefix/etc/openmpi-mca-params.conf: This is the system-supplied set of values, which has a lower precedence.

    参考:

    + + + diff --git a/code/linux/vim/index.html b/code/linux/vim/index.html new file mode 100644 index 00000000..6e73788c --- /dev/null +++ b/code/linux/vim/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + vi / vim 编辑器 | 北辞 + + + + + +
    跳至主要內容

    vi / vim 编辑器

    Northword大约 8 分钟Linux

    vi / vim 编辑器

    vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程open in new window 吧。

    三种模式

    img
    img

    基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:

    命令模式

    用户刚刚启动 vi/vim,便进入了命令模式。

    此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。

    若想要编辑文本:启动 Vim,进入了命令模式,按下 i,切换到输入模式。

    命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

    输入模式

    在命令模式下按下 i 就进入了输入模式。

    在输入模式中,可以使用以下按键:

    • 字符按键以及 Shift 组合,输入字符
    • ENTER,回车键,换行
    • BACK SPACE,退格键,删除光标前一个字符
    • DEL,删除键,删除光标后一个字符
    • 方向键,在文本中移动光标
    • HOME/END,移动光标到行首/行尾
    • Page Up/Page Down,上/下翻页
    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC,退出输入模式,切换到命令模式

    底线命令模式

    在命令模式下按下:(英文冒号)就进入了底线命令模式。

    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

    在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序
    • w 保存文件

    按 ESC 键可随时退出底线命令模式。

    命令

    命令模式

    移动光标

    上下左右和 h,j,k,l。可以用 数字+j / 数字 +↓ 移动多行

    命令描述
    [Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down] 按键 (常用)
    [Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
    [Ctrl] + [d]屏幕『向下』移动半页
    [Ctrl] + [u]屏幕『向上』移动半页
    nspace那个 n 表示『数字』,例如 20。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20space 则光标会向后面移动 20 个字符距离。
    0 或功能键 [Home]这是数字『0』:移动到这一行的最前面字符处 (常用)
    $ 或功能键 [End]移动到这一行的最后面字符处 (常用)
    H光标移动到这个屏幕的最上方那一行的第一个字符
    M光标移动到这个屏幕的中央那一行的第一个字符
    L光标移动到这个屏幕的最下方那一行的第一个字符
    G / shift+g移动到这个文件的最后一行(常用)
    nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行 (可配合 : set nu)
    gg移动到这个档案的第一行,相当于 1G 啊!(常用)
    nEntern 为数字。光标向下移动 n 行 (常用)

    删除、复制与贴上

    命令描述
    x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键),X 为向前删除一个字符 (相当于 [backspace] 亦即是退格键) (常用)
    nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符,『10x』。
    dd删除游标所在的那一整行 (常用)
    nddn 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
    d1G删除光标所在到第一行的所有数据
    dG删除光标所在到最后一行的所有数据
    d$删除游标所在处,到该行的最后一个字符
    d0那个是数字的 0,删除游标所在处,到该行的最前面一个字符
    yy复制游标所在的那一行 (常用)
    nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行 (常用)
    y1G复制游标所在行到第一行的所有数据
    yG复制游标所在行到最后一行的所有数据
    y0复制光标所在的那个字符到该行行首的所有数据
    y$复制光标所在的那个字符到该行行尾的所有数据
    p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后,那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
    J将光标所在行与下一行的数据结合成同一行
    c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
    u撤销
    [Ctrl]+r重做
    这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
    .不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了!(常用)

    底线命令

    保存与退出

    搜索替换

    命令描述
    /word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
    ?word向光标之上寻找一个字符串名称为 word 的字符串。
    n重复前一个搜索动作。如 /word 后按 n 则为查找下一个
    N与 n 相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird。
    : n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2!举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)
    :1,$s/word1/word2/g:%s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!(常用)
    :1,$s/word1/word2/gc:%s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)

    第二部分:一般模式切换到编辑模式的可用的按钮说明

    进入输入或取代的编辑模式
    i, I进入输入模式 (Insert mode):i 为『从目前光标所在处输入』,I 为『在目前所在行的第一个非空格符处开始输入』。(常用)
    a, A进入输入模式 (Insert mode):a 为『从目前光标所在的下一个字符处开始输入』,A 为『从光标所在行的最后一个字符处开始输入』。(常用)
    o, O进入输入模式 (Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行;O 为在目前光标所在的上一行处输入新的一行!(常用)
    r, R进入取代模式 (Replace mode):r 只会取代光标所在的那一个字符一次;R 会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
    [Esc]退出编辑模式,回到一般模式中 (常用)
    上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时,一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!

    第三部分:一般模式切换到指令行模式的可用的按钮说明

    指令行的储存、离开等指令
    : w将编辑的数据写入硬盘档案中 (常用)
    : w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入,还是跟你对该档案的档案权限有关啊!
    : q离开 vi (常用)
    : q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
    注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
    : wq储存后离开,若为 : wq! 则为强制储存后离开 (常用)
    ZZ这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于 (保存并退出)
    ZQ不保存,强制退出。效果等同于 : q!
    : w [filename]将编辑的数据储存成另一个档案(类似另存新档)
    : r [filename]在编辑的数据中,读入另一个档案的数据。亦即将『filename』这个档案内容加到游标所在行后面
    : n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
    :! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
    vim 环境的变更
    : set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
    : set nonu与 set nu 相反,为取消行号!
    + + + diff --git a/code/python/index.html b/code/python/index.html new file mode 100644 index 00000000..714e75db --- /dev/null +++ b/code/python/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Python | 北辞 + + + + + + + + + diff --git a/code/python/pip-error/index.html b/code/python/pip-error/index.html new file mode 100644 index 00000000..65aecc50 --- /dev/null +++ b/code/python/pip-error/index.html @@ -0,0 +1,285 @@ + + + + + + + + + + pip 报错 | 北辞 + + + + + +
    跳至主要內容

    pip 报错

    Northword大约 7 分钟

    pip 报错

    找不到指定文件

    安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。

    课题组一个同学安装 ase 时遇到以下报错,

    C:\Users\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +Defaulting to user installation because normal site-packages is not writeable
    +Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    +Collecting ase
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
    +Collecting matplotlib>=3.1.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB)
    +Collecting numpy>=1.15.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB)
    +Collecting scipy>=1.1.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB)
    +  Installing build dependencies ... done
    +  Getting requirements to build wheel ... error
    +  error: subprocess-exited-with-error
    +
    +  × Getting requirements to build wheel did not run successfully.
    +  │ exit code: 1
    +  ╰─> [55 lines of output]
    +      The Meson build system
    +      Version: 0.62.2
    +      Source dir: C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd
    +      Build dir: C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build
    +      Build type: native build
    +      Project name: SciPy
    +      Project version: 1.9.1
    +      WARNING: Failed to activate VS environment: Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe
    +
    +      ..\..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]
    +      The following exception(s) were encountered:
    +      Running "icl " gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "cl /?" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "cc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "gcc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "clang --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "clang-cl /?" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "pgcc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +
    +      A full log can be found at C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build\meson-logs\meson-log.txt
    +      + meson setup --native-file=C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\Program Files\Python311 C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build
    +      Traceback (most recent call last):
    +        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 363, in <module>
    +          main()
    +        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 345, in main
    +          json_out['return_val'] = hook(**hook_input['kwargs'])
    +                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 130, in get_requires_for_build_wheel
    +          return hook(config_settings)
    +                 ^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 923, in get_requires_for_build_wheel
    +          with _project(config_settings) as project:
    +        File "C:\Program Files\Python311\Lib\contextlib.py", line 137, in __enter__
    +          return next(self.gen)
    +                 ^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 902, in _project
    +          with Project.with_temp_working_dir(
    +        File "C:\Program Files\Python311\Lib\contextlib.py", line 137, in __enter__
    +          return next(self.gen)
    +                 ^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 547, in with_temp_working_dir
    +          yield cls(source_dir, tmpdir, build_dir)
    +                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 463, in __init__
    +          self._configure(reconfigure=bool(build_dir) and not native_file_mismatch)
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 494, in _configure
    +          self._meson(
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 477, in _meson
    +          return self._proc('meson', *args)
    +                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 472, in _proc
    +          subprocess.check_call(list(args))
    +        File "C:\Program Files\Python311\Lib\subprocess.py", line 413, in check_call
    +          raise CalledProcessError(retcode, cmd)
    +      subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\Program Files\\Python311', 'C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build']' returned non-zero exit status 1.
    +      [end of output]
    +
    +  note: This error originates from a subprocess, and is likely not a problem with pip.
    +error: subprocess-exited-with-error
    +
    +× Getting requirements to build wheel did not run successfully.
    +│ exit code: 1
    +╰─> See above for output.
    +
    +note: This error originates from a subprocess, and is likely not a problem with pip.
    +
    +

    注意 10 行,发现是安装 SciPy 时报了错,26、28 行指明是编译的问题,查了资料初步判断是平台不对,下错包了。

    该人环境:Windows 10 x64,Python 3.11 rc2

    结合网上资料,提出以下解决方法。

    在 python 交互命令行中通过以下查询当前机器支持的编译器/平台:

    >>> import pip._internal
    +>>> print(pip._internal.pep425tags.get_supported())
    +

    正常应该可以输出当前机器支持的平台,但如果报错如下,则在终端使用

    python -m pip debug --verbose
    +
    PS C:\WINDOWS\system32> python
    +Python 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)] on win32
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> import pip._internal
    +>>> print(pip._internal.pep425tags.get_supported())
    +Traceback (most recent call last):
    +  File "<stdin>", line 1, in <module>
    +AttributeError: module 'pip._internal' has no attribute 'pep425tags'
    +>>> print(pip._internal)
    +<module 'pip._internal' from 'C:\\Program Files\\Python311\\Lib\\site-packages\\pip\\_internal\\__init__.py'>
    +>>> exit()
    +
    +PS C:\WINDOWS\system32> python -m pip debug --verbose
    +WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
    +pip version: pip 22.2.2 from C:\Program Files\Python311\Lib\site-packages\pip (python 3.11)
    +sys.version: 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)]
    +sys.executable: C:\Program Files\Python311\python.exe
    +sys.getdefaultencoding: utf-8
    +sys.getfilesystemencoding: utf-8
    +locale.getpreferredencoding: cp936
    +sys.platform: win32
    +sys.implementation:
    +  name: cpython
    +'cert' config value: Not specified
    +REQUESTS_CA_BUNDLE: None
    +CURL_CA_BUNDLE: None
    +pip._vendor.certifi.where(): C:\Program Files\Python311\Lib\site-packages\pip\_vendor\certifi\cacert.pem
    +pip._vendor.DEBUNDLED: False
    +vendored library versions:
    +  CacheControl==0.12.11
    +  colorama==0.4.5
    +  distlib==0.3.5
    +  distro==1.7.0
    +  msgpack==1.0.4
    +  packaging==21.3
    +  pep517==0.12.0
    +  platformdirs==2.5.2
    +  pyparsing==3.0.9
    +  requests==2.28.1
    +  certifi==2022.06.15
    +  chardet==5.0.0
    +  idna==3.3
    +  urllib3==1.26.10
    +  rich==12.5.1 (Unable to locate actual module version, using vendor.txt specified version)
    +  pygments==2.12.0
    +  typing_extensions==4.3.0 (Unable to locate actual module version, using vendor.txt specified version)
    +  resolvelib==0.8.1
    +  setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
    +  six==1.16.0
    +  tenacity==8.0.1 (Unable to locate actual module version, using vendor.txt specified version)
    +  tomli==2.0.1
    +  webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
    +Compatible tags: 39
    +  cp311-cp311-win_amd64
    +  cp311-abi3-win_amd64
    +  cp311-none-win_amd64
    +  cp310-abi3-win_amd64
    +  cp39-abi3-win_amd64
    +  cp38-abi3-win_amd64
    +  cp37-abi3-win_amd64
    +  cp36-abi3-win_amd64
    +  cp35-abi3-win_amd64
    +  cp34-abi3-win_amd64
    +  cp33-abi3-win_amd64
    +  cp32-abi3-win_amd64
    +  py311-none-win_amd64
    +  py3-none-win_amd64
    +  py310-none-win_amd64
    +  py39-none-win_amd64
    +  py38-none-win_amd64
    +  py37-none-win_amd64
    +  py36-none-win_amd64
    +  py35-none-win_amd64
    +  py34-none-win_amd64
    +  py33-none-win_amd64
    +  py32-none-win_amd64
    +  py31-none-win_amd64
    +  py30-none-win_amd64
    +  cp311-none-any
    +  py311-none-any
    +  py3-none-any
    +  py310-none-any
    +  py39-none-any
    +  py38-none-any
    +  py37-none-any
    +  py36-none-any
    +  py35-none-any
    +  py34-none-any
    +  py33-none-any
    +  py32-none-any
    +  py31-none-any
    +  py30-none-any
    +PS C:\WINDOWS\system32>
    +

    后面列出的是允许使用的版本,去 pypi 源站找个可用的下载,然后 pip install <path/to/pkg>,如果可以,就结束。如果报不支持当前平台,或没有找到一样的,则可能是 python 版本太新?

    scipy-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp310-cp310-macosx_12_0_arm64.whl
    +scipy-1.9.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    +scipy-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    +scipy-1.9.1-cp310-cp310-win_amd64.whl
    +scipy-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp38-cp38-macosx_12_0_arm64.whl
    +scipy-1.9.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
    +scipy-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    +scipy-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    +scipy-1.9.1-cp38-cp38-win32.whl
    +scipy-1.9.1-cp38-cp38-win_amd64.whl
    +scipy-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp39-cp39-macosx_12_0_arm64.whl
    +scipy-1.9.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl
    +scipy-1.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
    +scipy-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
    +scipy-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
    +scipy-1.9.1-cp39-cp39-win32.whl
    +scipy-1.9.1-cp39-cp39-win_amd64.whl
    +scipy-1.9.1.tar.gz
    +

    例如本例,Python 3.11 rc2,scipy 没有对应的包,本例中里应当是 scipy-1.9.1-cp311-cp311-win_amd64.whl 的,但没有,下载 scipy-1.9.1-cp310-cp310-win_amd64.whl 则报

    PS C:\users\admin\Downloads> pip install .\scipy-1.9.1-cp310-cp310-win_amd64.whl
    +ERROR: scipy-1.9.1-cp310-cp310-win_amd64.whl is not a supported wheel on this platform.
    +PS C:\users\admin\Downloads>
    +

    然后,试着卸载了 python 3.11 rc2,安装最新的稳定版 3.10.7,结果果然解决...

    PS C:\WINDOWS\system32> pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    +Collecting ase
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
    +Collecting scipy>=1.1.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a9/17/67861cb65190a28e726e5f99f8938756385e8b2257cbae2b13e58594ae27/scipy-1.9.1-cp310-cp310-win_amd64.whl (38.6 MB)
    +     ---------------------------------------- 38.6/38.6 MB 2.0 MB/s eta 0:00:00
    +Collecting matplotlib>=3.1.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/1d/ca/226bf297851690781ac79d8d1cb1af550f5d4926c56ee5035bf3d2027093/matplotlib-3.6.0-cp310-cp310-win_amd64.whl (7.2 MB)
    +     ---------------------------------------- 7.2/7.2 MB 2.1 MB/s eta 0:00:00
    +Collecting numpy>=1.15.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/51/b6/861f5e9d59c1bb6c05467f5ddcba965cb2c4b1fd62f6bf7b4c4632492625/numpy-1.23.3-cp310-cp310-win_amd64.whl (14.6 MB)
    +     ---------------------------------------- 14.6/14.6 MB 2.7 MB/s eta 0:00:00
    +Collecting fonttools>=4.22.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c3/f2/8e1f94318021b162000a8c48f2c460d5efba78fe0e46ef5d236ff3fe8147/fonttools-4.37.2-py3-none-any.whl (959 kB)
    +     ---------------------------------------- 959.8/959.8 kB 1.1 MB/s eta 0:00:00
    +Collecting python-dateutil>=2.7
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
    +     ---------------------------------------- 247.7/247.7 kB 447.2 kB/s eta 0:00:00
    +Collecting pillow>=6.2.0
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/02/55/67a3c17b9e7d972ed8c246f104da99ca4f3ea42fba566697e479011b84b6/Pillow-9.2.0-cp310-cp310-win_amd64.whl (3.3 MB)
    +     ---------------------------------------- 3.3/3.3 MB 1.6 MB/s eta 0:00:00
    +Collecting pyparsing>=2.2.1
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl (98 kB)
    +Collecting contourpy>=1.0.1
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e2/a1/60afbcfe6bbd801165e3234281dfd515305d40bce4534738ea33b22ef3d4/contourpy-1.0.5-cp310-cp310-win_amd64.whl (164 kB)
    +     ---------------------------------------- 164.1/164.1 kB 5.0 MB/s eta 0:00:00
    +Collecting cycler>=0.10
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl (6.4 kB)
    +Collecting packaging>=20.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl (40 kB)
    +Collecting kiwisolver>=1.0.1
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/68/20/2ce1186ef4edf47281faf58f6dd72a1fcd2be1fc66514bd2d220097bdcd1/kiwisolver-1.4.4-cp310-cp310-win_amd64.whl (55 kB)
    +     ---------------------------------------- 55.3/55.3 kB 726.2 kB/s eta 0:00:00
    +Collecting six>=1.5
    +  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB)
    +Installing collected packages: six, pyparsing, pillow, numpy, kiwisolver, fonttools, cycler, scipy, python-dateutil, packaging, contourpy, matplotlib, ase
    +Successfully installed ase-3.22.1 contourpy-1.0.5 cycler-0.11.0 fonttools-4.37.2 kiwisolver-1.4.4 matplotlib-3.6.0 numpy-1.23.3 packaging-21.3 pillow-9.2.0 pyparsing-3.0.9 python-dateutil-2.8.2 scipy-1.9.1 six-1.16.0
    +PS C:\WINDOWS\system32>
    +

    该条报错可参考:

    + + + diff --git a/code/python/pip-mirrors/index.html b/code/python/pip-mirrors/index.html new file mode 100644 index 00000000..92ada0be --- /dev/null +++ b/code/python/pip-mirrors/index.html @@ -0,0 +1,44 @@ + + + + + + + + + + pip 换源 | 北辞 + + + + + +
    跳至主要內容

    pip 换源

    Northword小于 1 分钟

    pip 换源

    国内源

    新版 ubuntuopen in new window 要求使用 https 源,要注意。

    临时使用:

    可以在使用 pip 的时候加参数 -i <https://pypi.tuna.tsinghua.edu.cn/simple>

    例如:pip install pyspider -i <https://pypi.tuna.tsinghua.edu.cn/simple>,这样就会从清华这边的镜像去安装 pyspider 库。

    永久修改,一劳永逸:

    Linux 下,修改 ~/.pip/pip.conf

    [global]  
    +index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    +[install]  
    +trusted-host=mirrors.aliyun.com  
    +

    windows 下,直接在用户目录中创建一个 pip 目录,如:C:\Users\xx\pip,新建文件 pip.ini。内容同上。

    + + + diff --git "a/dft-learning/05.VASP/08.\345\205\266\344\273\226/index.html" "b/dft-learning/05.VASP/08.\345\205\266\344\273\226/index.html" new file mode 100644 index 00000000..67ca398c --- /dev/null +++ "b/dft-learning/05.VASP/08.\345\205\266\344\273\226/index.html" @@ -0,0 +1,40 @@ + + + + + + + + + + 其他 | 北辞 + + + + + +
    跳至主要內容

    其他

    Northword小于 1 分钟

    其他

    + + + diff --git "a/dft-learning/05.VASP/08.\345\205\266\344\273\226/poscar-convert.html" "b/dft-learning/05.VASP/08.\345\205\266\344\273\226/poscar-convert.html" new file mode 100644 index 00000000..58a974cd --- /dev/null +++ "b/dft-learning/05.VASP/08.\345\205\266\344\273\226/poscar-convert.html" @@ -0,0 +1,58 @@ + + + + + + + + + + POSCAR 与其他格式互转 | 北辞 + + + + + +
    跳至主要內容

    POSCAR 与其他格式互转

    Northword大约 2 分钟ase python

    POSCAR 与其他格式互转

    将 POSCAR 转换为 xsd 格式文件

    该方法依赖 ASE。

    ASE 的 ase.io.read()ase.io.write()

    ase.io.read()ase.io.write(),文档见 File input and output — ASE documentation (dtu.dk)open in new window

    ase.io.read()

    【功能为:Read Atoms object(s) from file

    官方关于 ase.io.read() 的使用为:

    ase.io.read(filename: Union[str, pathlib.PurePath, IO], index: Optional[Any] = None, format: Optional[str] = None, parallel: bool = True, do_not_split_by_at_sign: bool = False, **kwargs)
    +

    一般我们只需要提供 文件名称及其类型 就行,比如:

    ase.io.read(filename, format=files_format)
    +

    如,我需要读取文件‘POSCAR’,文件类型为‘vasp’,则函数调用时应为:

    ase.io.read('POSCAR, format='vasp')
    +

    ase.io.write()

    【功能为:Write Atoms object(s) to file

    官方关于 ase.io.write() 的使用为:

    ase.io.write(filename: Union[str, pathlib.PurePath, IO], images: Union[ase.atoms.Atoms, Sequence[ase.atoms.Atoms]], format: Optional[str] = None, parallel: bool = True, append: bool = False, **kwargs: dict)
    +

    其使用与 ase.io.read() 的相类似,不同地是 需要指定需要写入文件的 atoms objects,其实就是原子信息,输入的类型可以是 Atoms object or list of Atoms objects。由 ase.io.read() 函数可以知道,一份有关原子信息的文件其实就是 atoms object。所以:

    ase.io.write(‘test.xsd’, atoms object,format='xsd')
    +

    这里 test. xsd 是希望得到的文件格式的文件名 + 后缀名,POSCAR 是指读取的文件,format='xsd' 是指信息写入文件的文件类型。

    所以 ase 转换文件格式的原理 是:

    • 先读取文件中的所有信息,转为 atoms object
    • 再将 atoms object 写入其他格式的文件中

    单份 poscar 文件转换为 xsd 文件

    比如,由 VASP 得到一份 POSCAR 文件,这里实现将其文件格式转换为 xsd 格式的文件,文件名为 test。

    代码思路就是 (调用 ase.io 模块):

    • 使用 read() 函数读取文件信息,暂存为 atoms object
    • 接着使用 write() 函数将该 atoms object 写入文件
    from ase.io import read,write
    +poscar_file=read('POSCAR',format='vasp')
    +xsd_file=write('test.xsd',poscar_file,format='xsd')
    +

    注意:文件名需要带有文件格式后缀

    将多份 poscar 文件转换为 xsd 文件

    结合 for 循环遍历文件输入\输出 atoms object,即可实现批量操作。

    def poscar_to_xsd(file_PATH):
    +#file_PATH为储存所有待转换格式的文件的文件夹路径
    +    tqdm=os.listdir(file_PATH)#文件夹中的文件列表
    +    for i in range(0,len(tqdm)):#逐次遍历文件夹下的文件
    +        inputfile = os.path.join(file_PATH,tqdm[i])#对应文件夹下的某份文件
    +        outputfile=inputfile+'.xsd'#定义转换格式后的文件名字
    +        poscar_file=read(inputfile,format='vasp')#读入文件
    +        xsd_file=write(outputfile,poscar_file,format='xsd')#将读入的文件写入其他格式的文件
    +#调用该函数
    +poscar_to_xsd("C-N-2-defect-1652750340")
    +
    在这里插入图片描述
    在这里插入图片描述
    + + + diff --git a/dft-learning/05.VASP/index.html b/dft-learning/05.VASP/index.html new file mode 100644 index 00000000..7c6cb7e8 --- /dev/null +++ b/dft-learning/05.VASP/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + VASP | 北辞 + + + + + +
    跳至主要內容

    VASP

    Northword大约 1 分钟VASP

    VASP

    VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。

    vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。

    因此我们需要区分开 VASPVASPKITVASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。

    VASP 官网:https://www.vasp.at/open in new window

    VASPKIT 官网:https://vaspkit.com/index.htmlopen in new window

    官网已经详细的列出了 VASPKIT 如何配置安装,如何开始使用。由于课程需要,实际使用与官方文档的描述有一丁点区别,本文档仅对本人使用过程做记录。


    01- 输入输出文件

    02- 结构优化与静电自洽

    03- 电子结构

    • 自洽场理论、能带理论、态密度、电荷密度;
    • 自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;

    04- 反应路径与分子动力学

    • NEB 计算方法与操作实践;
    • 系综理论,控温方法,输入文件准备,计算过程,结果分析。
    + + + diff --git a/dft-learning/index.html b/dft-learning/index.html new file mode 100644 index 00000000..39c2064f --- /dev/null +++ b/dft-learning/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 不完全不准确不系统的计算模拟入坑记录 | 北辞 + + + + + +
    跳至主要內容

    不完全不准确不系统的计算模拟入坑记录

    Northword大约 3 分钟

    不完全不准确不系统的计算模拟入坑记录

    学不会系列之材料计算
    学不会系列之材料计算

    本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。

    课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。

    教学大纲:

    1. 绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。
    2. Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。
    3. Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
    4. VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。
    5. 结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。
    6. 电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。
    7. 反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。
    8. 计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础

    同为初学者,水平有限,如有错误还请指出。

    Bug/typo/error reports should be sent to:

    Zhang' email or reported as an issueopen in new window .


    Tips:

    移动端,左上角汉堡菜单选择章节;桌面端右上角菜单选择章节,左侧栏查看当前章节大纲。

    桌面端食用体验更加~

    本笔记中,代码块行前有 $ 的,表示在终端输入的命令,实际不需要输入 $ 符号。

    本笔记中的命令的语法表示中:<参数> 表示必须参数,[参数] 表示可选参数,可参考 命令行语法格式中常用符号的含义open in new window


    Powered by VuePressopen in new window , Hosted by Github Pagesopen in new window .

    Link of This repositoryopen in new window in GitHub.

    Repository synced by Giteeopen in new window .

    晋 ICP 备 18010037 号 -1.

    ©2020 Northwordopen in new window .

    Overseas link: Github Pagesopen in new window

    Mainland link: northword.gitee.io/dft-learningopen in new window

    菜鸡小张,2020 年。

    + + + diff --git a/dft-learning/pages/06c8b9/index.html b/dft-learning/pages/06c8b9/index.html new file mode 100644 index 00000000..5fc7c64b --- /dev/null +++ b/dft-learning/pages/06c8b9/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 计算常用软件 | 北辞 + + + + + +
    跳至主要內容

    计算常用软件

    Northword大约 1 分钟

    计算常用软件

    本列表中,对于完成课程所必需使用的软件,标注为 (Required);可选安装的软件,标注为 (Optional)

    对于 Windows 端的程序,部分关键的安装步骤展示在第二节。

    For Windows

    For Linux

    + + + diff --git a/dft-learning/pages/16cc62/index.html b/dft-learning/pages/16cc62/index.html new file mode 100644 index 00000000..ebb958aa --- /dev/null +++ b/dft-learning/pages/16cc62/index.html @@ -0,0 +1,161 @@ + + + + + + + + + + 频率分析 | 北辞 + + + + + +
    跳至主要內容

    频率分析

    Northword大约 8 分钟VASP反应路径

    频率分析

    Todo.... 频率分析是个啥,理论知识...

    频率分析作用

    1. 确定结构是否稳定;

    2. 看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;

    3. 反应热,反应能垒,吸附能等的零点能矫正;

    4. 确认过渡态(有一个振动的虚频)

    5. 热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。

    步骤

    结构优化

    在常规结构优化基础上进行下一步。

    待解决的问题

    乙醇结构优化中,若指定 EDIFF=1E-4(第一次)或 1E-6(第二次),EDIFFG=-2E-2,POTIM 默认(0.015),计算无法收敛(每个离子步都算满了 60 个电子步,19-20 个离子步后报错),提示如下:

    ZBRENT: fatal error in bracketing
    +     please rerun with smaller EDIFF, or copy CONTCAR
    +     to POSCAR and continue
    +

    但(第三次)EDIFF 和 EDIFFG 默认,POTIM=0.05 时可在 7 步收敛(每个离子步仍是 60 电子步)。(此时查 OUTCAR 有 EDIFF=0.1E-3,EDIFFG=0.1E-2)(POTIM 默认 0.5)

    初始结构为 www.chemspider.com 下载,20 20 20 的 cell,K 点 gamma 111。原因待测试。(其余参数 ISMEAR=0,SIGMA=0.01,IBRION=2,NSW=100,未给出均为默认)(测试一下①EDIFF=1E-4,EDIFFG=-2E-2,POTIM=0.05;②EDIFF=0.1E-3,EDIFFG=-0.1E-2,POTIM 默认)

    频率计算

    IBRION = 5       # Use 5 for Freq calculation
    +NSW    = 1
    +NFREE  = 2       # Do not use NFREE=1
    +POTIM  = 0.02
    +EDIFF  = 1E-6
    +
    +# NCORE = 4   # comment this line
    +
    • IBRION 的值改成 5
    • POTIM 用一个更小的值,我们这里用的 0.02,默认值是 0.015
    • NSW 设置成 1,这个可以直接不管,继续采用优化时的 NSW 值,因为你设置成 1, 2, 3, 4, 5, …, 1000 都不会影响计算;但不能不设置(因为默认值是 0,这时算个单点后任务便停止了。)
    • NFREE=2 添加这一个参数,表明原子在某一方向上正反两个方向移动;
    • 此外,EDIFF 也要设置一个严格的值(频率计算时,默认值为 1E-6,足够了!下一节会讲到)

    结果分析

    步数

    当设置了 NFREE=2 且所有原子弛豫的时候,频率计算需要 6N+16N+1 步。N 为体系中的振动的原子数,这是因为:

    1. 第一个离子步是个频率计算前的单点计算。

    2. N 个原子,每个原子在 x、y、z 三个方向均有一个自由度,共 3N。

    3. 设置 NFREE=2,也就是在每个方向上 +POTIM–POTIM 都移动并算一下,就有了3N×2=6N3N \times 2 = 6N步。

      官网原文如下,还要查阅 IBRIONNFREE 的相关内容。

    The parameter NFREE determines how many displacements are used for each direction and ion, and POTIM determines the step size. The step size is defaulted to 0.015 ? (starting from VASP.5.1), if too large values are supplied in the input file. Expertise shows that this is a very reasonable compromise.

    NFREE=2 uses central differences, i.e., each ion is displaced by a small positive and negative displacement, ±POTIM, along each of the cartesian directions.`

    例如,乙醇分子CH3CH2OHCH_3CH_2OH,含有 9 个原子,其振动频率计算应有 55 步。 Ex24 乙醇分子振动频率计算(二) | LVTHWopen in new window

    这一过程在 stdout 里也有较为明显的表示:

       1 F= -.10036430E+02 E0= -.10036285E+02  d E =-.289628E-03
    + Finite differences POTIM= 0.02000 DOF=  27
    + bond charge predicted
    +
    +   2 F= -.78734041E+01 E0= -.78734041E+01  d E =-.373678E-15
    + Finite differences progress:
    +  Degree of freedom:   1/ 27
    +  Displacement:        1/  2
    +  Total:               1/ 54
    + bond charge predicted
    +
    +   3 F= -.67069872E+01 E0= -.67026196E+01  d E =-.873513E-02
    + Finite differences progress:
    +  Degree of freedom:   1/ 27
    +  Displacement:        2/  2
    +  Total:               2/ 54
    + bond charge predicted
    +
    +   4 F= -.67462590E+01 E0= -.67409236E+01  d E =-.106707E-01
    + Finite differences progress:
    +  Degree of freedom:   2/ 27
    +  Displacement:        1/  2
    +  Total:               3/ 54
    + bond charge predicted
    +
    +······
    +
    +  55 F= -.98834544E+01 E0= -.98834523E+01  d E =-.431696E-05
    + Finite differences progress:
    +  Degree of freedom:  27/ 27
    +  Displacement:        2/  2
    +  Total:              54/ 54
    + Finite differences POTIM=  2.000000000000000E-002
    +

    振动频率可视化

    使用 p4vasp 或 jmol。 Ex25 乙醇分子振动频率计算(三) | LVTHWopen in new window

    OUTCAR 中的信息

     Finite differences progress:
    +  Degree of freedom:  27/ 27
    +  Displacement:        2/  2
    +  Total:              54/ 54
    +
    + SECOND DERIVATIVES (NOT SYMMETRIZED)
    + ------------------------------------
    +               1X          1Y          1Z          2X          2Y          2Z          3X          3Y          3Z          4X          4Y          4Z          5X          5Y          5Z          6X          6Y          6Z          7X          7Y          7Z          8X          8Y          8Z          9X          9Y          9Z
    +  1X    -0.796290   -0.233038    0.000000    1.493917   -0.390431    0.000000   11.997934    0.713060    0.000000   -0.502744   -0.458102   -1.112604   -0.502744   -0.458102    1.112604   -9.852689   -0.544908    0.000000    1.558071   -1.815756    2.790667    1.558071   -1.815756   -2.790667   -4.953526    5.003033    0.000000
    +  1Y     0.375968    0.109966    0.000000   -0.221500   -0.104078    0.000000   -7.444189    0.714797    0.000000    0.061864   -0.018602   -0.070447    0.061864   -0.018602    0.070447    6.078079   -0.495659    0.000000    0.526607   -0.086673    0.245169    0.526607   -0.086673   -0.245169    0.034699   -0.014475    0.000000
    +  1Z     5.808229   -2.434202   -0.224578    9.890712   -0.191510   -0.835513 -196.271299   22.155307   -2.396373    4.894997   -1.437502    1.327563    3.314884   -1.079152   -0.255396  159.821373  -14.859397    2.205595    2.708645   -0.577444   -1.520109    5.153556   -1.595313    1.097139    4.678904    0.019213    0.601672
    +  ······
    +  9Z    -2.239638   -0.224936    0.640338   -2.848485   -0.518046    0.053144   92.115496   -4.125652   -4.274775   -5.253060    0.192219    0.259185   -3.326232   -0.413466   -0.479808  -74.488855    6.180803    1.430131   -0.656228   -1.103483    0.253415   -0.780173    0.700478    3.745246   -2.522825   -0.687916   -1.626877
    +
    + 
    + Eigenvectors and eigenvalues of the dynamical matrix
    + ----------------------------------------------------
    +
    +   1 f  =  201.746767 THz  1267.612322 2PiTHz 6729.547573 cm-1   834.357861 meV
    +             X         Y         Z           dx          dy          dz
    +      8.658517  9.304797  0.000000    -0.012567    0.004216    0.089194
    +      0.120860  9.184513  0.000000    -0.000391    0.000152    0.006966
    +      9.405744 18.133372  0.000000     0.241400   -0.053508   -0.052395
    +     12.979810 18.660074 17.736563    -0.057237    0.039130    0.448592
    +     12.979810 18.660074  2.263437     0.019013    0.039514    0.091267
    +      8.203737 18.242837  0.000000    -0.670436   -0.088927    0.146993
    +     16.776380  8.675669  2.229820     0.035997   -0.046760   -0.002012
    +     16.776380  8.675669 17.770180     0.062323   -0.406063    0.024770
    +     14.098762 10.462995  0.000000    -0.025516    0.172042   -0.171822
    +
    +   2 f  =   47.211040 THz   296.635710 2PiTHz 1574.790721 cm-1   195.249235 meV
    +             X         Y         Z           dx          dy          dz
    +      8.658517  9.304797  0.000000     0.042971    0.024710    0.035150
    +      ······
    +   27 f/i=  203.242065 THz  1277.007557 2PiTHz 6779.425348 cm-1   840.541919 meV
    +             X         Y         Z           dx          dy          dz
    +      8.658517  9.304797  0.000000    -0.002381   -0.002248   -0.090493
    +      ······
    +
    + Finite differences POTIM=  2.000000000000000E-002
    +  LATTYP: Found a simple cubic cell.
    + ALAT       =    20.0000000000
    +

    频率相关的信息会被输出到 OUTCAR 的这两个部分,

    第一部分:二阶导,没啥用

    第二部分:特征值和特征向量,主要看这个

    1 f 行(line20)是四个频率单位的数值。下面几行是每个原子的坐标(X、Y、Z)及其在 x y z 方向上的振动大小(dx、dy、dz),坐标是分数坐标系。

    四个频率的换算:

    E=hc/λν=c/λν~=1/λT=1/νin which,E=energy (eV)λ=wavelength (m)λ~ = wavenumber (m1)T=period (s)ν=frequency (s1 or Hz)h=Planck’s constant = 4.135667516×1015 eVsc=speed of light = 299792458 m/s \begin{aligned} & E = hc/\lambda \\ & \nu = c / \lambda \\ & \tilde{\nu} = 1 / \lambda \\ & T = 1 / \nu \\ \end{aligned}\\ \begin{aligned} \text{in which,} \\ & E=\text{energy}\space (eV) \\ & \lambda=\text{wavelength (m)} \\ & \tilde{\lambda}\text{ = wavenumber }(m^{−1}) \\ & T=\text{period (s)} \\ & \nu=\text{frequency }(s^{−1}\space or\space Hz) \\ & h=\text{Planck’s constant = } 4.135667516×10^{−15} ~eV \cdot s \\ & c=\text{speed of light = 299792458 m/s} \\ \end{aligned}

    此外,1THz=1012Hz,1cm1=100m11 THz = 1012 Hz, \quad 1 cm^{-1} = 100 m^{-1}

    还可以用 http://halas.rice.edu/conversionsopen in new window 在线转换单位。

    频率提取:

    [2020223055092@mu02 freq]$ grep cm-1 OUTCAR 
    +   1 f  =  201.746767 THz  1267.612322 2PiTHz 6729.547573 cm-1   834.357861 meV
    +   2 f  =   47.211040 THz   296.635710 2PiTHz 1574.790721 cm-1   195.249235 meV
    +   3 f  =   35.921110 THz   225.698994 2PiTHz 1198.199235 cm-1   148.557825 meV
    +   4 f  =   30.557648 THz   191.999365 2PiTHz 1019.293390 cm-1   126.376319 meV
    +   5 f  =   28.299918 THz   177.813630 2PiTHz  943.983631 cm-1   117.039096 meV
    +   6 f  =   24.737229 THz   155.428593 2PiTHz  825.145113 cm-1   102.304992 meV
    +   7 f  =   20.159900 THz   126.668391 2PiTHz  672.461876 cm-1    83.374677 meV
    +   8 f  =   17.283332 THz   108.594381 2PiTHz  576.509899 cm-1    71.478143 meV
    +   9 f  =   16.416363 THz   103.147049 2PiTHz  547.590902 cm-1    67.892643 meV
    +  10 f  =   12.378931 THz    77.779114 2PiTHz  412.916663 cm-1    51.195160 meV
    +  11 f  =    7.042735 THz    44.250808 2PiTHz  234.920339 cm-1    29.126420 meV
    +  12 f  =    6.004684 THz    37.728545 2PiTHz  200.294706 cm-1    24.833387 meV
    +  13 f  =    3.621816 THz    22.756539 2PiTHz  120.810763 cm-1    14.978631 meV
    +  14 f  =    1.485344 THz     9.332691 2PiTHz   49.545738 cm-1     6.142891 meV
    +  15 f/i=    0.608073 THz     3.820638 2PiTHz   20.283146 cm-1     2.514790 meV
    +  16 f/i=    2.581155 THz    16.217876 2PiTHz   86.098066 cm-1    10.674804 meV
    +  17 f/i=    4.872529 THz    30.615003 2PiTHz  162.530067 cm-1    20.151167 meV
    +  18 f/i=    6.118100 THz    38.441159 2PiTHz  204.077858 cm-1    25.302439 meV
    +  19 f/i=    8.804759 THz    55.321930 2PiTHz  293.695124 cm-1    36.413568 meV
    +  20 f/i=   10.508365 THz    66.026003 2PiTHz  350.521305 cm-1    43.459119 meV
    +  21 f/i=   15.745766 THz    98.933566 2PiTHz  525.222205 cm-1    65.119277 meV
    +  22 f/i=   18.917161 THz   118.860028 2PiTHz  631.008549 cm-1    78.235117 meV
    +  23 f/i=   21.091439 THz   132.521422 2PiTHz  703.534668 cm-1    87.227213 meV
    +  24 f/i=   24.556339 THz   154.292030 2PiTHz  819.111283 cm-1   101.556892 meV
    +  25 f/i=   29.978804 THz   188.362378 2PiTHz  999.985217 cm-1   123.982410 meV
    +  26 f/i=   35.952889 THz   225.898667 2PiTHz 1199.259268 cm-1   148.689252 meV
    +  27 f/i=  203.242065 THz  1277.007557 2PiTHz 6779.425348 cm-1   840.541919 meV
    +

    共 27 个振动模式,最后f/if/i指虚频。

    前面我们提到过,虚频可以判断结构是否稳定。那这里,我们计算出的乙醇分子结构肯定不稳定喽?不一定。

    因为频率计算和软件的数值积分有关(我也不清楚数值积分怎么进行的);

    计算过程中我们的设置对频率计算影响很大,KPOINTS, ENCUT, EDIFF, POTIM 等都会影响计算的精度;综合这些因素,对于分子的振动频率来说(注意:声子谱不适用)一般低于 100cm1100 cm^{−1} 的频率可以忽略。严格点可以降到 50cm150 cm^{−1},也就是说:如果你在计算中发现有个 50cm150 cm^{−1} 左右的虚频,完全可以不考虑。

    零点能

    零点能ZPE=1/2hνZPE=1/2 h \nu

    # 所有振动的能量之和 (所有的hv之和,单位meV)
    +grep 'f  =' OUTCAR | awk '{print $10}' | paste -sd+ | bc
    +
    +# 零点能(eV)  将以下两行写脚本(meV转换eV除以1000,然后1/2,等于上式结果除以2000)
    +hv_sum=$(grep"f  =" OUTCAR | awk '{print  $10}'| paste -sd+ | bc)
    +echo "scale =6; $hv_sum/2000" | bc
    +

    零点能校正:

    1. 结构优化之后得到分子的能量(OSZICAR 中的E0E_0): E0E_0
    2. 频率计算后得到分子的零点能: ZPEZPE
    3. 零点能校正之后分子的能量为:EZPE=E0+ZPEE_{ZPE}=E_0+ZPE

    过渡态和反应热的零点能校正:

    对一个反应:IS --> TS --> FS

    1. 优化反应物 IS 和产物 FS 的结构,获得能量:E0(IS)E_0(\textrm{IS}), E0(FS)E_0(\textrm{FS});

    2. 对反应物和产物进行频率计算,获得各自的零点能:ZPE(IS),ZPE(FS)\textrm{ZPE(IS)}, \textrm{ZPE(FS)}

    3. 搜索过渡态,获得结构和能量 E0(TS)E_0(\textrm{TS});

    4. 过渡态频率分析,获得零点能 ZPE(TS)\textrm{ZPE(TS)}

    不考虑零点能的反应能垒 (EaE_a) 和反应热 (ΔE\Delta E):

    Ea=E0(TS)E0(IS)ΔE=E0(FS)E0(IS) E_a = E_0(\textrm{TS}) – E_0(\textrm{IS}) \\ \Delta E = E_0(\textrm{FS}) – E_0(\textrm{IS})

    考虑零点能校正:

    Ea=EZPE(TS)EZPE(IS)=E0(TS)+ZPE(TS)E0(IS)–ZPE(IS)=Ea+ZPE(TS)–ZPE(IS)ΔE=ΔE+ZPE(FS)–ZPE(IS) \begin{aligned} E_{a}^{'} &= E_{\textrm{ZPE}}(\textrm{TS}) – E_{\textrm{ZPE}}(\textrm{IS}) \\ &= E_0(\textrm{TS}) + \textrm{ZPE(TS}) – E_0(\textrm{IS}) – \textrm{ZPE(IS}) \\ &= E_a + \textrm{ZPE(TS)} – \textrm{ZPE(IS)}\\ \Delta E^{'} &= \Delta E + \textrm{ZPE(FS)} – \textrm{ZPE(IS)} \end{aligned}

    零点能校正的情况:

    频率计算时放开哪些原子看体系,看关注哪些部分。在过渡态中,IS、FS、TS 固定和放开的要一致。

    影响频率计算的因素

    Ex 27 乙醇分子的振动频率计算(五) | LVTHWopen in new window

    EDIFFG,增强收敛标准对虚频并没有什么好的效果。

    ENCUT,对零点能影响很小,增大截断能可以减小虚频,但并不是算频率就要增大截断能。

    PREC,

    POTIM

    POINTS

    备注

    获取虚频

    grep 'f/i'  OUTCAR | awk '{print $1 "\t " $2 "\t" $7 "\t" $8 "\t " $9 "\t" $10 "\t" $11}'
    +

    获取时间

    grep Elapsed */OUTCAR | sort -n
    +

    待解决的问题

    LVTHW 算出来 3 个虚频,我算的 13 个。哪里出了问题

    + + + diff --git a/dft-learning/pages/19e493/index.html b/dft-learning/pages/19e493/index.html new file mode 100644 index 00000000..041932a4 --- /dev/null +++ b/dft-learning/pages/19e493/index.html @@ -0,0 +1,237 @@ + + + + + + + + + + 使用 NEB 方法计算反应路径 | 北辞 + + + + + +
    跳至主要內容

    使用 NEB 方法计算反应路径

    Northword大约 8 分钟VASP

    使用 NEB 方法计算反应路径

    流程

    1. 分别对初态和末态进行结构优化
    2. 使用脚本生成中间过程图像 (结构)
    3. NEB 计算
    4. 处理结果

    文件结构

    详情
    neb 计算的文件结构示意
    neb 计算的文件结构示意

    这张图整挺好,直接拿过来了,这是原地址

    [zjb@op neb]$ tree
    +.
    +├── ini                ***初态常规结构优化***
    +│   ├── CONTCAR            -初态优化后的结构——新的初态
    +│   ├── INCAR              -初态结构优化的输入文件1
    +│   ├── ini2.vasp          -
    +│   ├── KPOINTS            -初态结构优化的输入文件2
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── out.log
    +│   ├── POSCAR             -初态结构优化的输入文件3
    +│   ├── POTCAR             -初态结构优化的输入文件4
    +│   ├── stdout
    +│   ├── vasp.pbs
    +├── fin                ***末态常规结构优化***
    +│   ├── CONTCAR            -末态优化后的结构——新的末态
    +│   ├── fin2.vasp
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── out.log
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── 00                 ***↓↓↓*****中间态*****↓↓↓***
    +│   ├── OUTCAR            -初态结构优化后的OUTCAR   ../ini/OUTCAR
    +│   ├── POSCAR            -初态结构优化后的CONTCAR  ../ini/CONTCAR
    +│   └── POSCAR.xyz
    +├── 01
    +│   ├── CONTCAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   └── POSCAR.xyz
    +│   └── stdout
    +├── 02
    +│   ├── CONTCAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POSCAR.xyz
    +│   └── stdout
    +├── 03
    +│   ├── CONTCAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POSCAR.xyz
    +│   └── stdout
    +├── 04
    +│   ├── OUTCAR            *末态结构优化后的OUTCAR  ../fin/OUTCAR
    +│   ├── POSCAR            *末态结构优化后的CONTCAR ../fin/CONTCAR
    +│   └── POSCAR.xyz     ***↑↑↑*****中间态*****↑↑↑***
    +
    +├── INCAR              ***neb计算的输入文件等***
    +├── KPOINTS
    +├── movie
    +├── movie.xyz
    +├── neb.dat
    +├── out.log
    +├── POTCAR
    +├── stdout
    +├── vasp.pbs
    +└── vasprun.xml
    +

    步骤

    Step1. 分别对初态和末态进行常规的结构优化

    上课时的例子是 O 在 N 掺杂的石墨烯上的吸附,其中 INCAR

    详情
    Global Parameters
    +ISTART =  0            (Read existing wavefunction; if there)
    +LREAL  = .FALSE.          (Projection operators: automatic)
    +ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    +PREC   =  Normal       (Precision level)
    +LWAVE  = .FALSE.        (Write WAVECAR or not)
    +LCHARG = .FALSE.        (Write CHGCAR or not)
    +ALGO = Fast
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.1         (Smearing value in eV; metals:0.2)
    +NELM   =  60           (Max electronic SCF steps)
    +NELMIN =  4            (Min electronic SCF steps)
    +EDIFF  =  1E-04        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +ISIF   =  0          (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -1E-01        (Ionic convergence; eV/AA)
    +POTIM = 0.3
    +

    [!warning] 两个 POSCAR 中,元素顺序必须对应,要不然后面测相似度会出问题,会变得很大。(通过 cif2pos 和 xsd2pos 的默认排的顺序不一样哦,已踩坑)

    初态结构优化后 fin/CONTCAR
    初态结构优化后 fin/CONTCAR

    上图:初态结构优化后的

    下图:末态结构优化后的

    末态结构优化后后 ini/CONTCAR
    末态结构优化后后 ini/CONTCAR

    初末态看起来不一样是因为周期性导致的,只是显示的不同而已。

    Step2. 使用脚本处理中间过程

    结构优化后,原初末态的 CONTCAR 就成为了新的初态和末态

    对初末态测相似度以确定插点数量

    # Usage
    +$ dist.pl <初态结构> <末态结构>
    +
    +# This example
    +[zjb@op 3-NEB_O_graphene]$ dist.pl ini/CONTCAR fin/CONTCAR 
    +1.55500097020471
    +

    [!tip] 若返回值<5,通常可以下一步

    插点数量通常是 相似度/0.8.

    插入中间图像

    nebmake.pl 以线性进行插点。

    # Usage
    +$ nebmake.pl <初态结构> <末态结构> <插点数量>
    +
    +# This example
    +[zjb@op 3-NEB_O_graphene]$ nebmake.pl ini/CONTCAR fin/CONTCAR 3   # 3为插点数量,咱这儿把它记为N
    +filetype1: vasp5
    +filetype2: vasp5
    +
    +OK, ALL SETUP HERE
    +FOR LATER ANALYSIS, PUT OUTCARs IN FOLDERS 00 and 04 !!!
    +

    [!warning] 提交任务时,CPU 需要是插点数量 N 的整数倍

    这一步执行后,会生成 N+1 个文件夹,其中 00 是初态,N+1 是末态。同时会把 ini/CONTCAR 复制到 00/POSCAR,把 fin/CONTCAR 复制到 N+1/POSCAR

    根据这一步返回的提示,分别将初末态的 OUTCAR 复制到 00N+1 文件夹,以便于后续分析。

    cp ini/OUTCAR 00/
    +cp fin/OUTCAR 04/
    +

    使用 nebmovie 查看生成的路线是否合理

    nebmovie.pl
    +

    执行后会生成 movie.xyz 文件,ase-gui 文件路径 查看。

    neb-movie-N_grapene_O_0
    neb-movie-N_grapene_O_0

    Step3. NEB 计算

    准备 NEB 计算的输入文件

    POTCARKPOINTS 不用改直接复制过来就好,不用准备 POSCAR,他已经在上一步被放进 00/04/ 中了,

    INCAR 要修改不少东西:

    Global Parameters
    + NPAR   =  6           插点个数N的整数倍
    + 
    +Electronic Relaxation
    + EDIFF  =  1E-05
    +  
    +Ionic Relaxation
    + NSW    =  100         (Max ionic steps)
    + IBRION =  3           (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    + POTIM  =  0            IBRION = 3, POTIM = 0,是VTST识别并启动VTST优化算法的标致
    + ISIF   =  0           (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    + EDIFFG =  -0.2        (Ionic convergence; eV/AA)
    +
    +NEB
    + LCLIMB   =  .FALSE.     爬坡(CI-NEB),由于要用neb而不是cineb,所以关闭。
    + ICHAIN   =  0           开启NEB方法
    + IMAGES   =  3           插点个数
    + IOPT     =  7           VTST的优化算法。1-2适合精收敛,7适合粗收敛
    + MAXMOVE  =  0.1
    + TIMESTEP =  0.05 
    +

    [!note] 发现 MAXMOVE=0.2,TIMESTEP=0.1,EDIFF=1E-04,收敛的更快一些。精度的问题罢辽,可以分两次进行,先粗后细呢。

    详见 Nudged Elastic Band Options | VTST ToolsOptimizer input parameters(IOPT) | VTST Toolsopen in new window

    提交计算

    修改 PBS 脚本文件的核数。数量是插点数量 N 的整数倍。(第 4 行)

    注意 walltime,适当长一些。(第 5 行)

    修改 PBS 脚本,使其调用 VTST 编译的 VASP 进行计算(第 13,27 行)

    [!warning] 需要注意 VTST 编译的时候是使用哪种 mpi(intel mpi OR open mpi)进行并行运行的,如下高亮行 12-13。如果 mpi 选择有误,会出现只算一个点,而其他点不动的情况(反映在 stdout 里是用 6 个核分别把第一个点算了 1 遍,等于把第一个点算了 6 遍),这个问题直到我尝试自己编译 vasp 的时候才发现原因。

    [zjb@op test-vtst-neb]$ cat vasp-vtst.pbs 
    +#!/bin/sh
    +#PBS -N Untitled
    +#PBS -l nodes=1:ppn=6
    +#PBS -l walltime=05:30:00
    +#PBS -j oe
    +#PBS -o ./out.log
    +#PBS -q energy
    +
    +cd ${PBS_O_WORKDIR}
    +source /public/software/profile.d/compiler_intel-composer_xe_2015.2.164.sh
    +# source /public/software/profile.d/mpi_intelmpi-5.0.2.044.sh
    +source /public/software/profile.d/mpi_openmpi-2.0.0-intel.sh
    +echo "============================================="
    +echo "Starting VASP at" `date` 
    +echo "---------------------------------------------"
    +echo "VTST VASP"
    +echo "The PBS_O_WORKDIR is" $PBS_O_WORKDIR
    +echo "The PBS_JOBID     is" $PBS_JOBID
    +echo "The PBS_JOBNAME   is" $PBS_JOBNAME
    +echo "The PBS_O_QUEUE   is" $PBS_O_QUEUE
    +echo "The PBS_O_HOST    is" $PBS_O_HOST
    +NP=`cat $PBS_NODEFILE | wc -l`
    +echo "The num of PBS_NODEFILE is" $NP
    +echo "The PBS_NODEFILE IS:" 
    +cat $PBS_NODEFILE
    +mpirun -np $NP -machinefile $PBS_NODEFILE /public/software/apps/vasp/5.4.1/vtst-ompi/vasp_std >& stdout
    +echo "---------------------------------------------"
    +echo "End task at " `date` 
    +echo "============================================="
    +












     













     



    脚本因机器实际环境不同而需要更改,但大同小异。

    如何确定调用的是 VTST&VASP?

    01~N+1/ 下,grep VTST OUTCAR 应有 VTST 版本号返回。

    [!note] NOTE: NEB 接着算 如果算了一半被 kill 了,要接着算,只需要把 00、01、02 下的 CONTCAR 覆盖 POSCAR,然后再次提交就可。

    检查是否收敛

    # Usage
    +$ nebef.pl
    +
    +# This example
    +[zjb@op test-vtst-neb]$ nebef.pl 
    +   0         0.000000      -224.399900         0.000000 
    +   1         0.148350      -224.208300         0.191600 
    +   2         0.132181      -223.262900         1.137000 
    +   3         0.096709      -222.345700         2.054200 
    +   4         0.000000      -222.517000         1.882900 
    +

    返回结果为 序号最大原子受力能量相对初态的能量.

    当所有插点的最大原子受力都 < |EDIFFG| 时,计算收敛。

    [!tip] 如果发现这一步受力那一列全是 0,可以考虑检查一下是否调用了 VTST 编译的 VASP 进行计算。

    检查切向力

    # Usage
    +$ nebbarrier.pl && cat neb.dat
    +
    +# This example
    +[zjb@op test-vtst-neb]$ nebbarrier.pl && cat neb.dat
    +  0     0.000000     0.000000     0.000000   0
    +  1     0.389947     0.191613    -1.474390   1
    +  2     0.789822     1.137031    -3.591041   2
    +  3     1.212818     2.054245     0.086021   3
    +  4     1.701348     1.882893     0.000000   4
    +

    返回结果为 序号——距离——能量——切向力

    • 该命令没有输出到屏幕的内容,而是生成 neb.dat 文件。
    • 第二列表示距离 (即临近两结构的 dist.pl 的计算结果),
    • 第三列表示能量 (以初态能量为参考值),
    • 第四列为切向力 (forces along the neb) 过渡态附近切向力会正负变号,而且接近 0。(例如 3)

    频率计算

    Todo...

    打包结果

    # Usage
    +$ nebresult.pl
    +
    +# This example
    +[zjb@op test-vtst-neb]$ nebresults.pl 
    +
    +Unziping the OUTCARs ... done
    +Do nebbarrier.pl ; nebspline.pl
    +Do nebef.pl
    +Do nebmovie.pl
    +Do nebjmovie.pl
    +Do nebconverge.pl
    +
    +Forces and Energy:
    +   0         0.000000      -224.399900         0.000000 
    +   1         0.148350      -224.208300         0.191600 
    +   2         0.132181      -223.262900         1.137000 
    +   3         0.096709      -222.345700         2.054200 
    +   4         0.000000      -222.517000         1.882900 
    +
    +Extremum 1 found at image  0.000000 with energy:  0.000000
    +Extremum 2 found at image  0.000330 with energy: -0.000000
    +Extremum 3 found at image  2.985984 with energy:  2.054500
    +

    从输出和源码可以了解到,nebresult.pl 做的事情如下:

    1. 解压缩 OUTCAR.tg

    2. 执行 nebbarrier.pl,该脚本生成 neb.dat,将收敛情况,NEB 方向力,能量,写入

    3. 执行 nebspline.pl,该脚本对 neb.dat 里 能量和距离 的关系进行插值,插值结果写入 spline.dat 文件,所有极值的位置和能量写入 exts.dat,把 MEP 画成 mep.epsmep.eps 是以 dist.pl 距离为横坐标,能量为纵坐标画出的能势垒图,可用矢量图编辑软件打开,我们也可以使用 neb.dat 的数据用 Origin 画图。

    4. 执行 nebef.pl,并将其结果(力和能量)写入 nebef.dat

    5. 执行 nebmovie.pl,该脚本生成结构变化

    6. 执行 nebjmovie.pl

    7. 执行 nebconverge.pl

    8. 还有对各文件夹中的 OUTCAR 打包压缩。 我在源码里注释掉了这一部分。

    9. 屏显 nebef.datexts.dat

      生成的 vaspgr 文件夹内是各个插点结构的收敛图。

    具体见 Nudged Elastic Band Scripts | VTST Tools

    其中 mep.eps 就是这样子:

    neb-N_graphene_O-mep-eps
    neb-N_graphene_O-mep-eps

    其他

    [Nudged Elastic Band] Scripts

    Nudged Elastic Band Scripts | VTST Toolsopen in new window

    [Nudged Elastic Band] Options

    Nudged Elastic Band Options | VTST Toolsopen in new window

    VariableDefault ValueTypeDescription
    ICHAIN0 | intIndicates which method to run. NEB (ICHAIN=0) is the default
    IMAGESnoneintNumber of NEB images between the fixed endpoints
    SPRING-5.0floatThe spring constant, in eV/Ang^2 between the images; negative value turns on nudging
    LCLIMB.TRUE.booleanFlag to turn on the climbing image algorithm
    LTANGENTOLD.FALSE.booleanFlag to turn on the old central difference tangent
    LDNEB.FALSE.booleanFlag to turn on modified double nudging
    LNEBCELL.FALSE.booleanFlag to turn on SS-NEB. Used with ISIF=3 and IOPT=3.
    JACOBIAN(Ω/N){1/3}N{1/2}realControls weight of lattice to atomic motion. Ω is volume and N is the number of atoms.

    参考资料

    + + + diff --git a/dft-learning/pages/1dfd6d/index.html b/dft-learning/pages/1dfd6d/index.html new file mode 100644 index 00000000..ee9b518a --- /dev/null +++ b/dft-learning/pages/1dfd6d/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + on-the-end | 北辞 + + + + + +
    跳至主要內容

    on-the-end

    Northword小于 1 分钟Others

    呼呼哈嘿

    啊这,我还没写完...

    还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~


    本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233

    + + + diff --git a/dft-learning/pages/206ec4/index.html b/dft-learning/pages/206ec4/index.html new file mode 100644 index 00000000..d4863e2b --- /dev/null +++ b/dft-learning/pages/206ec4/index.html @@ -0,0 +1,239 @@ + + + + + + + + + + 准备 VASP 的输入文件 | 北辞 + + + + + +
    跳至主要內容

    准备 VASP 的输入文件

    Northword大约 7 分钟VASP

    准备 VASP 的输入文件

    输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。

    该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。


    VASPKIT 生成输入文件的选项

    VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具:

    [zjb@op O2_opt]$ vaspkit
    + 
    +            \\\///         
    +           / _  _ \       Hey, you must know what you are doing.  
    +         (| (.)(.) |)     Otherwise you might get wrong results!  
    + +-----.OOOo--()--oOOO.------------------------------------------+
    + |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
    + |        Core Developer: Vei WANG (wangvei@icloud.com)          |
    + |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
    + |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
    + +-----.oooO-----------------------------------------------------+
    +        (   )   Oooo.     
    +         \ (    (   )     
    +          \_)    ) /      
    +                (_/       
    + ===================== Structural Options ========================
    + 1)  VASP Input Files Generator    2)  Elastic-Properties         
    + 3)  K-Path Generator              4)  Structure Editor           
    + 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
    + 
    + ===================== Electronic Options ========================
    + 11) Density-of-States             21) DFT Band-Structure         
    + 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
    + 26) Fermi-Surface                 28) Band-Structure Unfolding   
    + 
    + =========== Charge & Potential & Wavefunction Options ===========
    + 31) Charge & Spin Density         42) Potential-Related          
    + 51) Wave-Function Analysis  
    + ====================== Misc Utilities ===========================
    + 71) Optical-Properties            72) Molecular-Dynamics Kit 
    + 73) VASP2other Interface          74) USER interface
    + 91) Semiconductor Calculator      92) 2D-Materials Kit       
    +                                                                  
    + 0)  Quit                                                         
    + ------------>>
    +
    +

    选择 1) VASP Input Files Generator

    ------------>>
    +1
    + ==================== VASP Input Files Options ===================
    + 101) Customize INCAR File                                        
    + 102) Generate KPOINTS File for SCF Calculation                   
    + 103) Generate POTCAR File with Default Setting                   
    + 104) Generate POTCAR File with User Specified Potential          
    + 105) Generate POSCAR File from cif (no fractional occupations)   
    + 106) Generate POSCAR File from Material Studio xsd (retain fixes)
    + 107) Reformat POSCAR File in Specified Order of Elements         
    + 108) Successive Procedure to Generate VASP Files and Check       
    + 109) Check All VASP Files                                        
    +                                                                  
    + 0)   Quit                                                        
    + 9)   Back                                                        
    + ------------>>
    +
    +

    上面 101-106 都可以生成输入文件,然后就可以根据需求去选择了。


    POSCAR

    POSCAR 文件可以自己写入,也可以通过 Materials Studio 建模后转换格式,还可以从一些结构网站获取结构。

    方法 1:通过新建 POSCAR 文件并手动写入内容

    vi POSCAR
    +

    方法 2:通过 Materials Studio 建模以生成 POSCAR

    在 MS 中建模完成后,有如下几种方式将其转换为 POSCAR

    2.1. 使用 VASPKIT 的 cif2pos.py

    从 MS 建模完成后导出为 cif 文件:file-exportsave as type : .cif,上传到集群上,使用 vaspkit-1-105) Generate POSCAR File from cif (no fractional occupations)

      ------------>>
    + 105
    +  Please type in the filename of cif->
    + NaCl_import.cif           # 在这里输入了.cif文件的文件名
    + Pleas input the order of element, `ENTER` for default!
    + Example: 'NA CL' in this CIF
    +                           #在这里需要输入元素的顺序,通常可以按回车使用默认值
    +   -->> (01) POSCAR has been generated...
    +  +---------------------------------------------------------------+
    +  |                       * ACKNOWLEDGMENTS *                     |
    +  | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    +  | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    +  +---------------------------------------------------------------+
    +  |                          * CITATIONS *                        |
    +  | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    +  | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    +  | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    +  +---------------------------------------------------------------+
    + [zjb@op NaCl]$ 
    + 
    +



     


     













    在第 4 行,会要求你输入 .cif 文件的文件名。在第 7 行,会要求你输入 元素的种类,如果第 6 行提示的正确,可以回车使用默认。

    2.2. 使用 VESTA 转换

    从 MS 建模完成后导出为 cif 文件:file-export-.cif,用 VESTA 打开该 cif 文件,选择 file-export datasave as : xxx.vasp。将 xxx.vasp 文件上传到服务器,将其重命名为 POSCARcp xxx.vasp POSCAR

    2.3. 使用 vaspkit 的 xsd2pos.py

    从 MS 建模完成后导出为 xsd 文件,上传,使用 vaspkit-1)VASP Input Files Generator-106) Generate POSCAR File from Material Studio xsd (retain fixes).

    另外值得一提的是,通过 xsd2pos 可以保留原子的位置限制信息,而上面两种导出为 .cif 的方式会丢失原子固定。

    Material Studio 是常用的构建模型和可视化结构的软件,MS 中的结构亦可借助其它工具转换成 POSCAR。目前常用的做法是在 MS 中导出 cif 文件,再通过功能 105 或者 vesta 转换成 POSCAR。但是转换颇为麻烦并且会丢失原子的位置限制信息。因此赵焱老师开发了固定原子坐标 perl 小脚本 xsd2pos.plopen in new window ,可以在MS中运行perl脚本将结构生成POSCAR,链接里有详细的操作流程,这里不再赘述。vaspkit开发者也开发了一款类似的后处理脚本,能够将含有位置固定信息的xsd批量转换成·POSCAR,并将此脚本集成到了vaspkit106功能中。xsd中可以包含Fix Fractional Position或者Fix Cartesian Position两种限制方式。

    引自 VASPKIT 中文手册open in new window

    方法 3:从结构网站获取

    从诸如 Materials Projectopen in new window 等网站获取结构,通常获取到的是.vasp文件,将其上传,重命名为POSCAR即可。

    值得一提的是 VASPKIT 官方文档提到,有时候下载到的 .vasp 文件,里面会有制表符与空格的问题,最好通过 109) Check All VASP Files 检查一下,以免计算失败。

    INCAR

    VASPKIT 选择 101,然后选择 INCAR 选项,就生成了 INCAR 文件

     ------------>>
    +101
    + +-------------------------- Warm Tips --------------------------+
    +                You MUST Know What You Are Doing
    +  Some Parameters in INCAR File Neet To Be Set/Adjusted Manually      
    + +---------------------------------------------------------------+
    + ======================== INCAR Options ==========================
    + ST) Static-Calculation            SR) Standard Relaxation        
    + MG) Magnetic Properties           SO) Spin-Orbit Coupling         
    + D3) DFT-D3 no-damping Correction  H6) HSE06 Calculation         
    + PU) DFT+U Calculation             MD) Molecular Dynamics        
    + GW) GW0 Calculation               BS) BSE Calculation  
    + DC) Elastic Constant              EL) ELF Calculation       
    + BD) Bader Charge Analysis         OP) Optical Properties        
    + EC) Static Dielectric Constant    PC) Decomposed Charge Density   
    + FD) Phonon-Finite-Displacement    DT) Phonon-DFPT            
    + NE) Nudged Elastic Band (NEB)     DM) The Dimer Method             
    + FQ) Frequence Calculations        LR) Lattice Relaxation          
    + 
    + 0)   Quit                                                       
    + 9)   Back      
    + ------------>>
    + Input Key-Parameters (STH6D3 means HSE06-D3 Static-Calcualtion)
    +
    +

    根据计算需要,选择相应类型的选项,如结构优化标准弛豫:

    SR
    + INCAR parameters are from user-specified Global.
    + INCAR parameters are from user-specified SR.
    +  -->> (01) Written INCAR file!
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +[zjb@op O2_opt]$ 
    +

    上前 4 行提示可以知道 INCAR 已经生成,由于生成的 INCAR 与我们实际需要的 INCAR 仍有一些差别,所以之后我们打开 INCAR 进行进一步修改,

    Global Parameters
    +ISTART =  1            (Read existing wavefunction; if there)
    +# ISPIN =  2           (Spin polarised DFT)
    +# ICHARG =  11         (Non-self-consistent: GGA/LDA band structures)
    +LREAL  = Auto          (Projection operators: automatic)
    +# ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    +PREC   =  Normal       (Precision level)
    +LWAVE  = .TRUE.        (Write WAVECAR or not;是否写入波函数)
    +LCHARG = .TRUE.        (Write CHGCAR or not)
    +ADDGRID= .TRUE.        (Increase grid; helps GGA convergence)
    +# LVTOT  = .TRUE.      (Write total electrostatic potential into LOCPOT or not)
    +# LVHAR  = .TRUE.      (Write ionic + Hartree electrostatic potential into LOCPOT or not)
    +# NELECT =             (No. of electrons: charged cells; be careful)
    +# LPLANE = .TRUE.      (Real space distribution; supercells)
    +# NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    +# NWRITE = 2           (Medium-level output)
    +# KPAR   = 2           (Divides k-grid into separate groups)
    +# NGX    = 500         (FFT grid mesh density for nice charge/potential plots)
    +# NGY    = 500         (FFT grid mesh density for nice charge/potential plots)
    +# NGZ    = 500         (FFT grid mesh density for nice charge/potential plots)
    +
    +ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +NELM   =  60           (Max electronic SCF steps)
    +NELMIN =  6            (Min electronic SCF steps)
    +EDIFF  =  1E-08        (SCF energy convergence; in eV)
    +# GGA  =  PS           (PBEsol exchange-correlation)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -2E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +
    +~ 
    +~
    +~
    +

    标签和值如何选择可以查 VASP 手册 呢。

    KPOINTS

    vaspkit-1,然后,102) Generate KPOINTS File for SCF Calculation,然后选择需要的撒点方法和精度,

    ------------>>
    +102
    + ======================= K-Mesh Scheme ==========================
    + 1) Monkhorst-Pack Scheme                            
    + 2) Gamma Scheme                                     
    +                                                     
    + 0)   Quit                                             
    + 9)   Back                                             
    + ------------->>
    +1                # 在这里选择方法
    +  -->> (01) Reading Structural Parameters from POSCAR File...
    + +---------------------------------------------------------------+
    + |               Selective Dynamics is Activated!                |
    + +---------------------------------------------------------------+
    + +-------------------------- Warm Tips --------------------------+
    +   * Accuracy Levels: Gamma-Only: 0;              
    +                      Low: 0.06~0.04;             
    +                      Medium: 0.04~0.03;          
    +                      Fine: 0.02-0.01.            
    +   * 0.03-0.04 is Generally Precise Enough!                
    + +---------------------------------------------------------------+
    + Input Kmesh-Resolved Value (in unit of 2*PI/Angstrom): 
    + ------------>>
    +0.04            # 在这里输入精度
    + +-------------------------- Summary ----------------------------+
    + Reciprocal Lattice Vectors (in unit of 1/angstrom):
    +       0.6283185307       0.0000000000       0.0000000000
    +       0.0000000000       0.5235987756       0.0000000000
    +       0.0000000000       0.0000000000       0.4188790205
    + Reciprocal Lattice Constants:   0.6283   0.5236   0.4189
    + Real-Space Lattice Constants:  10.0000  12.0000  15.0000
    + Size of K-Mesh:    1    1    1
    + +---------------------------------------------------------------+
    +  -->> (02) Written KPOINTS File!
    +  -->> (03) Written POTCAR File with the Recommended Potential!
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +

     







     













     





















    通常情况下,生成 KPOINTS 的同时,会根据推荐赝势生成 POTCAR。如果你的没有生成,则进入下一步。

    POTCAR

    vaspkit-1-103) Generate POTCAR File with Default Setting

    当然也可以选择 104) Generate POTCAR File with User Specified Potential 选择自己想要的赝势类型。

    如果没有 VASPKIT,就可以 cat <元素 1 的赝势文件> <元素 2 的赝势文件> >> POTCAR


    到此为止 VASP 运行所需要的四个输入文件就全都准备好了,我们就可以提交这个作业了。

    PBS 脚本 复制到当前目录,然后使用 qsub 命令提交作业。

    qsub -N JobName vasp.pbs
    +
    + + + diff --git a/dft-learning/pages/297f6a/index.html b/dft-learning/pages/297f6a/index.html new file mode 100644 index 00000000..42cb627d --- /dev/null +++ b/dft-learning/pages/297f6a/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Dimer 方法 | 北辞 + + + + + +
    跳至主要內容

    Dimer 方法

    Northword小于 1 分钟VASP反应路径

    Dimer 方法搜索过渡态

    Todo

    + + + diff --git a/dft-learning/pages/2a0d7d/index.html b/dft-learning/pages/2a0d7d/index.html new file mode 100644 index 00000000..2f2e4c5f --- /dev/null +++ b/dft-learning/pages/2a0d7d/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + Bader 电荷分析 | 北辞 + + + + + +
    跳至主要內容

    Bader 电荷分析

    Northword大约 2 分钟VASP电子结构

    Bader 电荷分析

    Todo

    理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。

    步骤

    结构优化

    自洽

    LAECHG =.TRUE.
    +LCHARG = .TRUE.
    +NSW    = 0
    +IBRION = -1 (前面有了NSW = 0, 这个也可以不设置)
    +

    提示

    AECCAR0AECCAR2 是由 LAECHG=.TRUE. 控制输出的。

    Bader

    chgsum.pl AECCAR0 AECCAR2   #output: CHGCAR_sum
    +bader CHGCAR -ref CHGCAR_sum
    +

    生成以下输出文件:ACF.datBCF.datAtomVolumes.dat

    ACF.dat 包含每个原子的坐标,根据 Bader 分区与其相关的电荷,根据 Bader 分区的整体百分比以及到表面的最小距离。如果使用了伪电位,则应将该距离与核心区域的最大截止半径进行比较。

    BCF.dat 包含每个 Bader 最大值的坐标,该体积内的电荷,最近的原子以及到该原子的距离。

    AtomVolumes.dat 包含已分配给每个原子的每个卷的编号。

    数据分析

    Todo

    参考资料

    + + + diff --git a/dft-learning/pages/2e10d2/index.html b/dft-learning/pages/2e10d2/index.html new file mode 100644 index 00000000..94998579 --- /dev/null +++ b/dft-learning/pages/2e10d2/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Materials Studio | 北辞 + + + + + +
    跳至主要內容

    Materials Studio

    Northword大约 3 分钟Materials-Studio

    Materials Studio

    懒得写了的

    建模

    问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体?

    答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。

    当所建模型包含的原子数目较少时,通过肉眼观察、鼠标点击或框选的方式,就能完成分析目标的选取。

    但是,当所建模型原子数达几千几万时(对于 MD 计算而言,这样的原子数目是很常见的),再采用肉眼观察来选取的方式,不仅低效,而且很容易多选、错选、漏选,最终导致分析结果错误。

    在 MS 中,有以下更快速的原子(团)选取方法:

    1. 鼠标左键单击选中某个 A 原子后,按住 Ctrl 键不放,再左键单击某个 B 原子,此时会同时选中上述两个原子;
    2. 按住 Alt 键不放,鼠标左键双击(注意是双击)某个 A 原子,此时会选中模型中全部的 A 原子;
    3. MS 界面顶部 Edit→Atom Selection 中,可通过以元素种类、化学键数目、电荷数目、力场类型等等,选取模型中全部满足要求的原子,此时结合“Selection mode”中的选项,可进一步添加需要的或筛除不需要的原子;
    4. 以某个原子团为 pattern,通过“Find Patterns”可选择模型中全部的该原子团。举个例子:要选取模型中全部的水分子,首先新建一个 xsd 文档,绘制出一个水分子,命名为 water.xsd,并将此文件保持打开状态,然后将模型置于当前,在 MS 界面顶部 Edit→Find Patterns,将其中的 Pattern document 下拉选择为 water.xsd(如果找不到 water.xsd,是因为 water.xsd 被关闭了,重新打开即可找到),点“Find”即可找到模型中全部的水分子;
    5. 对于用 Layer 命令堆叠得到模型,在 MS 界面顶部 Edit→Edit Sets,可选取任一原始的 layer,这对于用 Layer 命令堆叠得到模型的结合能计算非常有用;
    6. 将上述(1)~(5)进行组合,可实现绝大多数情况的分析目标的选取。

    写给 MS 新手:Materials Studio 软件常见问题与解决方案(2018 年 06 月 10 日更新) - 分子模拟 - 小木虫 - 学术 科研 互动社区 (muchong.com)open in new window

    其他资源

    + + + diff --git a/dft-learning/pages/35fcd2/index.html b/dft-learning/pages/35fcd2/index.html new file mode 100644 index 00000000..9a0d068a --- /dev/null +++ b/dft-learning/pages/35fcd2/index.html @@ -0,0 +1,47 @@ + + + + + + + + + + DFT+U | 北辞 + + + + + +
    跳至主要內容

    DFT+U

    Northword小于 1 分钟VASP优化

    DFT+U Calculation
    + LDAU   = .TRUE.        (启用 DFT+U)
    + LDATYPE=  2            (+U的类型)
    + LDAUL  =  2 -1         (Orbitals for each species)
    + LDAUU  =  3.5  0       (U for each species)
    + LDAUJ  =  0  0         (J for each species)
    + LMAXMIX=  4            (Mixing cut-off; 4-d, 6-f)
    +

    LADATYPE——描述+U 的类型。取值有:1、2(默认)、4。

    LDAUL 取值描述
    1The rotationally invariant LSDA+U introduced by Liechtenstein et al
    2(默认)Dudarev 简化的。在此方案中,描述库仑和交换相互作用的 U 和 J 项始终以 Ueff = U-J 的形式组合在一起,只有 U-J 有物理意义。
    4todo

    LDAUL——描述在哪个原子轨道上加 U。 -1 不加 U;1 p 轨道; 2 d 轨道 (默认) ; 3f 轨道。

    LDAUU——电子库伦相互作用项( on-site Coulomb interaction)

    LDAUJ——电子交换相互作用项( on-site exchange interaction)

    提示

    LDAUL、LDAUU、LDAUJ 都需要为每个物种设定(有几种元素就有几个数字),顺序应当与 POSCAR/POTCAR 中的一致。

    最终的 U 值 = LDAUU - LDAUUJ

    一般说来+U 的过程要自始至终,也就是从结构优化到计算性质都要考虑 U 的影响

    + + + diff --git a/dft-learning/pages/391336/index.html b/dft-learning/pages/391336/index.html new file mode 100644 index 00000000..8cc4b397 --- /dev/null +++ b/dft-learning/pages/391336/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 作业:矩形石墨烯建模 | 北辞 + + + + + +
    跳至主要內容

    作业:矩形石墨烯建模

    Northword小于 1 分钟Materials-Studio

    作业:矩形石墨烯建模

    任务

    建立矩形的石墨烯模型

    步骤

    1. 导入石墨烯结构

      import - Structures\ceramics\graphite.msi

    2. Make P1 降低对成性

      Build -> Symmetry -> Make P1,

      删掉一层C原子层

    3. 切面

      Build -> Surfaces -> Cleave Surface

      Surface Box - Cleave plane: 001

      Surface Mesh - Surface vectors - U: 210

    4. 超胞

      Build -> Symmetry -> Supercell

      Supercell range A=3, B=5 (60 C atoms)

    5. 真空层

      Build -> Crystals -> Build Vacuum Slab

      Vacuum orientation: C

      Vacuum thickness: 20 Å

    6. 将原子层移动到Z方向中部(只是看起来方便)

    7. Display style -> Lattice -> display style -> style -> In cell

    8. 修改背景、标尺、晶格的颜色等

    9. Save and Print to PDF

    结果

    Rectangular graphene
    Rectangular graphene
    Rectangular graphene 2
    Rectangular graphene 2
    + + + diff --git a/dft-learning/pages/40eca8/index.html b/dft-learning/pages/40eca8/index.html new file mode 100644 index 00000000..e8349446 --- /dev/null +++ b/dft-learning/pages/40eca8/index.html @@ -0,0 +1,49 @@ + + + + + + + + + + 配置 VTST 的脚本 | 北辞 + + + + + +
    跳至主要內容

    配置 VTST 的脚本

    Northword小于 1 分钟Install

    配置 VTST 的脚本

    下载

    cd ~/app
    +wget http://theory.cm.utexas.edu/code/vtstscripts.tgz
    +

    解压缩

    $ tar -xzvf vtstscripts.tgz 
    +$ rm vtstscripts.tgz
    +$ cd vtstscripts-(按Tab)
    +$ pwd
    +# 将返回值复制
    +

    加入 bashrc

    vi ~/.bashrc
    +# 将上面pwd的返回值加入PATH
    +
    + + + diff --git a/dft-learning/pages/4abf1b/index.html b/dft-learning/pages/4abf1b/index.html new file mode 100644 index 00000000..50cc1cdb --- /dev/null +++ b/dft-learning/pages/4abf1b/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 表面能的计算 | 北辞 + + + + + +
    跳至主要內容

    表面能的计算

    Northword大约 4 分钟VASP优化

    表面能计算

    定义

    表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。

    Surface energy - Wikipediaopen in new window

    怎么算

    Erel=刚切好的表面的能量优化后的能量σunrel=1/2(EsurfunrelNatomsEbulk)σ=σunrel+Erel \begin{aligned} & E^{rel}=\text{刚切好的表面的能量}-\text{优化后的能量} \\ & \sigma^{unrel}=1/2(E_{surf}^{unrel}-N_{atoms} \cdot E_{bulk}) \\ & \sigma = \sigma^{unrel}+E^{rel} \\ \end{aligned}

    其中,ErelE^{rel} is Relaxation energy,是弛豫过程中的能量变化;σ\sigma表示表面能;EsurfE_{surf}是刚切好的 slab 的能量,可以直接算个单点,也可以取优化过程第一个离子步的能量(如果第一个离子步收敛);NatomsN_{atoms}是 slab 中的原子数目;EbulkE_{bulk}是 bulk 结构中单个原子的能量,注意不是体相的能量而是体相中单个原子的能量,即体相能量除以原子数目。(ISIF=3 结束后 CONTCAR-->POSCAR,做单点计算,得到晶胞能量,除以晶胞中原子数目)。

    官网Ni100Ni(100)表面弛豫open in new window 为例,

    bulk 单点:

    得到,Ebulk=.5458/1=0.5458E_{bulk}=-.5458/1=-0.5458

    弛豫:

    弛豫中能量变化从25.556eV-25.556 eV25.572eV-25.572 eVErel=16meVE^{rel}=-16meV.

    σunrel=1/2(EsurfunrelNatomsEbulk)=1/2(25.5565×(5.458))=0.867eVσ=σunrel+Erel=0.8670.016=0.851eV \begin{aligned} \sigma^{unrel}&=1/2(E_{surf}^{unrel}-N_{atoms} \cdot E_{bulk}) \\ &=1/2(-25.556-5\times(-5.458)) \\ &=0.867eV \\ \sigma &= \sigma^{unrel}+E^{rel} \\ &= 0.867-0.016\\&=0.851eV \\ \end{aligned}

    VASP Tutorial: A bit of surface science.pdf (nersc.gov)open in new window

    上面的是只考虑一个面优化,如果 slab 模型的上下两个面都优化,那么公式应为:

    σ=12A(EsurfNatoms×Ebulk+Erel)=12A(EsurfrelNatoms×Ebulk) \begin{aligned} \sigma &=\frac{1}{2A}(E_{surf}-N_{atoms}\times E_{bulk}+E^{rel}) \\ &=\frac{1}{2A}(E_{surf}^{rel} -N_{atoms}\times E_{bulk}) \\ \end{aligned}

    + + + diff --git a/dft-learning/pages/4f0a58/index.html b/dft-learning/pages/4f0a58/index.html new file mode 100644 index 00000000..48e145fe --- /dev/null +++ b/dft-learning/pages/4f0a58/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + INCAR 中的常用标签 | 北辞 + + + + + +
    跳至主要內容

    INCAR 中的常用标签

    Northword大约 8 分钟VASP

    INCAR 中的常用标签

    整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。

    标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔;

    与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.

    几种必要的数据类型(仅是为了方便我理解,这个并不用会):

    类型中文名值域备注
    INT16 位整型-32768~+32767VASP 的 int 类型通常指定了仅有的几种取值
    REAL实型-2^128 ~ 2^128
    BOOL布尔0 或 1VASP 中用 .TURE..FALSE.

    TOC

    Start Parameters

    SYSTEM

    取值:字符串。缺省值:unknown system

    描述:用来备注计算的体系,其值会被写入 OUTCAR 中。

    ISTART

    取值:0 | 1 | 2 | 3

    缺省值:如果 WAVECAR 存在,则为 1,否则为 0

    描述:是否读取 WAVECAR

    ISTARTFunction
    0从头开始
    1从 WAVECAR 读取轨道
    2
    3.

    ISPIN

    取值:1(缺省) | 2

    描述:自旋极化。

    ISPIN = 1 :不自旋

    ISPIN = 2 :自旋

    需要考虑自旋极化一般来说有以下几种:

    1. 单原子的计算,
    2. O2 分子 (基态为三重态)
    3. 自由基相关的计算
    4. 含 Fe,Co, Ni 的体系
    5. 要计算的体系具有磁性:顺磁,铁磁,反铁磁等,要打开自旋极化。
    6. 当关注体系的电子性质时,且自己不知道加或者不加的时候,建议加上。

    MAGMOM 结合,可以研究共线磁性。

    Ex12 VASP 中 MAGMOM 的简单设定 | Learn VASP The Hard Wayopen in new window

    ICHARG

    取值:0 | 1 | 2 | 4

    缺省:ICHARG=2 if ISTART=0,=0 else

    描述:决定 VASP 如何构造初始电荷密度

    ICHARGFunction
    0从初始波函数计算电荷密度。如果因为无效 WAVECAR 导致 ISTART 重置,则 ICHARG 会被设置为 2。
    1从 CHGCAR 读取电荷密度,使用原子电荷密度的线性组合从旧位置(在 CHGCAR 上)外推到新位置。
    2原子电荷密度叠加
    4
    +10非自洽计算

    I/O Flags

    ParametersDefaultDescribe
    LWAVE.TRUE.是否将波函数写入 WAVECAR
    LCHARG.TRUE.是否将电荷密度写入 CHGCARCHG

    Electronic Relaxation

    ENCUT

    截断能

    • ENCUT 值越大,计算的越精确,花费的时间也就越多;

    • ENCUT 的取值与体系中所有的元素有关;

      • A)体系中含有不同元素的时候,查看这些元素 POTCAR 中的 ENMAX 值,找出最大的那个;
      • B)ENCUT 的最小值为所有元素中 ENMAX 的最大值!
      • C)也就是说,找到最大的 ENMAX(max), ENCUT 值大于等于 ENMAX(max)。

    Ex17 谁偷走的我的机时?(二) | Learn VASP The Hard Wayopen in new window

    EDIFF

    取值:real。缺省值:1E-4

    描述:控制电子步(自洽)的收敛标准。多数情况下 1E-4 足以胜任,没必要采用其他数值。

    GGA

    GGA = 91 | PE | RP | PS | AM

    缺省:POTCAR 中的

    GGA 指定希望使用的广义梯度近似的类型。

    GGA - VASP Wikiopen in new window

    Ionic Relaxation

    EDIFFG

    取值:real。缺省值: EDIFF x10

    描述:离子弛豫的收敛标准

    如果为正,表示两个离子步骤之间的总(自由)能变化小于 EDIFFG 时停止弛豫。一般取 0.0001 ~ 0.001 即可。

    如果为负,则原子所受最大力小于 |EDIFFG| 时停止弛豫。一般取值 -0.01 ~ -0.05(-0.01 对于力收敛已经是个很严格的要求了)

    取值范围引自大师兄科研网:https://www.bigbrosci.com/2017/12/02/ex09/open in new window

    NSW

    取值:int。缺省值:0

    描述:离子步的最大步数

    IBRION = 0 时,NSW 给出了所有从头开始的 Molecular Dynamics 运行的步骤数,因此必须提供它,否则 VASP 在启动后立即崩溃。

    IBRION != 0 时,在所有最小化算法(准牛顿,共轭梯度和阻尼分子动力学)中,NSW 定义了最大离子步数。

    IBRION

    取值: -1 | 0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 44

    缺省:IBRION = -1 for NSW = -1 or 0 , =0 else

    描述:决定离子如何移动

    IBRIONFunction
    -1静电自洽。此时 NSW 应为 0。
    0分子动力学
    1离子弛豫(RMM-DIIS) 小范围内的稳定结构搜索
    2离子弛豫(共轭梯度算法) 常用
    3离子弛豫(damp 分子动力学)初始结构很差时
    5频率计算。5-8 都是,但常用 5.
    44改进的 dimmer 方法

    IBRION=5 and 6: second derivatives, Hessian matrix and phonon frequencies (finite differences). 对于 IBRION=5 时,所有原子都在三个笛卡尔方向上移动,即使对于中等大小的高对称系统,也需要大量的计算工作。对于 IBRION = 6,仅考虑对称不等价位移,并使用对称性考虑填充其余的 Hessian 矩阵。IBRION=5 支持选择性弛豫,6 不支持。

    IBRION=7 and 8: second derivatives, Hessian matrix and phonon frequencies (perturbation theory).

    详细: IBRION - VASP Wikiopen in new window

    ISIF

    取值:ISIF = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7

    缺省值:0(当 IBRION=0,分子动力学时;否则为 2)

    描述:1 有哪些需要算,2 有哪些自由度可以优化。

    决定是否计算应力张量,以及允许哪些主要自由度改变弛豫和分子动力学。

    ISIFcalculatedegrees-of-freedom
    forcesStress tensorpositionscell shapecell volume
    0yesnoyesnono
    1yestrace onlyyesnono
    2yesyesyesnono
    3yesyesyesyesyes
    4yesyesyesyesno
    5yesyesnoyesno
    6yesyesnoyesyes
    7yesyesnonoyes

    ISYM

    是否考虑对称性。取值:0 | 1 | 2(默认) 0-nonsym 1-usesym 2-fastsym

    POTIM

    time-step(MD),单位 fs;step width scaling (ionic relaxations).

    缺省:if IBRION=0(MD),无缺省,必须用户指定,否则崩溃。

    if IBRION=1,2,3(弛豫),缺省 0.5。所有最小化算法(1 准牛顿,2 共轭梯度和 3 阻尼 damped 分子动力学)中,POTIM 均用作步长的缩放常数。特别是准牛顿算法对此参数的选择很敏感。

    if **IBRION=5(频率),缺省 0.015。**In frozen phonon calculations, POTIM gives the width of the displacement of each ion to calculate the Hessian Matrix.

    VASP.5.1 and newer releases: 如果给的值不合理(过大),会被重置为 0.015 Å.

    IBRION=2 时(这是前提!!),如果初始结构很差,设置较小的 POTIM 可以有效的避免过度矫正。初始结构越好,POTIM 的选择也就越随意。

    ISMEAR

    ISMEAR 这一项,目前需要记住的是:

    1. 不同的值对应的是不同的展宽方法
    2. 对于分子,原子的计算用 0

    下面是 VASP 官网的一些解释,新手暂时看不懂不要紧,把需要记住的这两条死死记住就可以了。

    • 对于半导体和绝缘体体系,ISMEAR 的值取绝对不能大于 0, 一般用 0;
    • 对所有体系,如果想获取更加精确能量的时候用 -5:但使用 -5 的时候,K 点数目小于 3 则程序会罢工;
    • K 点少,半导体或者绝缘体,那么只能用 ISMEAR = 0;
    • 在 DOS 能带计算中,使用 ISMEAR= -5 用于获取精确的信息。
    • 对于金属来说,ISMEAR 的取值一般为 0,1;
    • 保守地说,ISMEAR = 0 (Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子);
    • 如果不知道怎么取 ISMEAR,1)直接用 0;2)测试不同的值对计算的影响。

    SIGMA

    SIGMA 的取值和 ISMEAR 息息相关,也就是和 ISMEAR 这个参数同时出现,设定。下面是一些基本的介绍:

    • 如果用了 ISMEAR = -5; SIGMA 的值可以忽略,也可以不管。(对于所有体系都适用);

    • 对于金属: ISMEAR = 1 或者 0,非金属: ISMEAR= 0 的时候,一般取 SIGMA = 0.10 即可,默认值是 0.20。不放心的话,用 0.05。

    • 对于气体分子,原子体系(也就是你把分子或者原子放到一个 box 里面):死死记住下面组合就可以了, ISMEAR = 0; SIGMA = 0.01。

    • 设置一个较小的 SIGMA 值会使收敛变慢。

    • 半导体和绝缘体:

      1) K 点小于 4 的时候,用 ISMEAR=0, SIGMA 取值小一些;比如 SIGMA=0.05; 此时用 ISMEAR = -5 会出错;

      2)K 点数目大于 4 的时候,可以使用 ISMEAR= -5

    不过很多人都不放心,为了保险想测试一番。标准是: SIGMA 的取值要保证 OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于 1-2 meV。检查的时候可以用这个命令:

    grep 'entropy T'  OUTCAR
    +

    **注意 1:**这里有两个单引号,不要输入的时候漏掉。

    用这个命令,得出的能量除以体系中原子的数目(也就是平均到每个原子上),然后再和 0.001 eV 比较。如果小于,SIGMA 取值 OK,如果大于,再换个小点的数值进行测试。

    **注意 2:**这里的说的 entropy,是因为 ISMEAR 展宽这个计算方法引入的,跟我们物理化学书里面的 entropy 完全是两码事。后面我们会介绍如何通过频率分析计算物理化学里面的 Entropy。

    摘抄自大师兄网站:https://www.bigbrosci.com/2017/10/15/ex1_02_vasp_preparation_input_incar/open in new window

    DFT+U

    vasp-DFT-plus-U

    + + + diff --git a/dft-learning/pages/5e29d2/index.html b/dft-learning/pages/5e29d2/index.html new file mode 100644 index 00000000..542d72d6 --- /dev/null +++ b/dft-learning/pages/5e29d2/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + MS 在 win2004 及以上一按鼠标就卡住 | 北辞 + + + + + +
    跳至主要內容

    MS 在 win2004 及以上一按鼠标就卡住

    Northword小于 1 分钟Others

    Materials Studio 在 Windows2004 及以上假死

    一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。

    + + + diff --git a/dft-learning/pages/6424b6/index.html b/dft-learning/pages/6424b6/index.html new file mode 100644 index 00000000..358d5de4 --- /dev/null +++ b/dft-learning/pages/6424b6/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Windows 平台的部分软件安装 | 北辞 + + + + + +
    跳至主要內容

    Windows 平台的部分软件安装

    Northword小于 1 分钟Install

    Windows 平台的部分软件安装

    由于安装过于简单,故只对部分关键步骤做说明。

    Materials Studio 激活

    安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \Program Files (x86)\BIOVIA\LicensePack\Licenses

    image-20210913190855840
    image-20210913190855840

    然后启动授权管理器:

    image-20210913190616258
    image-20210913190616258
    image-20210913191736535
    image-20210913191736535

    Python for Windows

    还没写

    话说感觉这玩意没必要写

    打开安装包后勾选上左下角的 添加到系统 PATH 的选项后再进行下一步!

    Xshell 设置 X11 转发

    启动 Xlaunch,display number = 0,next,start no client,next,ok。

    在 xshell 的会话属性,ssh 隧道,x11 转移,x display:localhost:0.0。

    启动 ximg,在 xshell 中搞。

    参考:

    http://blog.sciencenet.cn/blog-950202-1152796.htmlopen in new window

    https://blog.csdn.net/akuoma/article/details/82182913open in new window

    + + + diff --git a/dft-learning/pages/663d74/index.html b/dft-learning/pages/663d74/index.html new file mode 100644 index 00000000..c76e51ea --- /dev/null +++ b/dft-learning/pages/663d74/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 晶格常数计算 | 北辞 + + + + + +
    跳至主要內容

    晶格常数计算

    Northword大约 2 分钟VASP优化

    晶格常数计算

    晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3).

    Birch-Murnaghan 状态方程拟合

    todo...

    Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHWopen in new window

    直接优化晶格常数

    ISIF=3,晶胞中原子的坐标,晶胞形状,以及体系都随着优化的过程发生变化。此时(计算是体积发生了变化)ENCUT 必须设置,而且要设置高一些,手册建议是1.3×max(ENCUT of each element)1.3 \times max(\text{ENCUT of each element})。这是为了尽可能消除 Pulay stress(普莱应力)对计算的影响。

    若只进行体积守恒的弛豫,通常可以忽略 Pulay stress,因为 pulay 应力几乎是均匀的。

    这一步不得不增大 ENCUT,(但整个计算 ENCUT 轻易是不变的),是这一步例外,一旦计算完晶格常数,可以在这个基础上统一使用其他的 ENCUT。

    POTCAR、KPOINTS、POSCAR 与单点计算一致就好。

    Volume vs. energy, volume relaxations, Pulay Stressopen in new window

    If you are doing energy-volume calculations or cell shape and volume relaxations you must understand the Pulay stress, and related problems.

    The Pulay stress arises from the fact that the plane wave basis set is not complete with respect to changes of the volume. Thus, unless absolute convergence with respect to the basis set has been achieved - the diagonal components of the stress tensor are incorrect. This error is often called "Pulay stress". The error is almost isotropic (i.e. the same for each diagonal component), and for a finite basis set it tends to decrease volume compared to fully converged calculations (or calculations with a constant energy cutoff).

    The Pulay stress and related problems affect the behavior of VASP and any plane wave code in several ways: First it evidently affects the stress tensor calculated by VASP, i.e. the diagonal components of the stress tensor are incorrect, unless the energy cutoff is very large (ENMAX=1.3 * default is usually a safe setting to obtain a reliable stress tensor).

    Ex36 晶格参数的确定(直接优化晶格常数)| LVTHWopen in new window

    + + + diff --git a/dft-learning/pages/66a232/index.html b/dft-learning/pages/66a232/index.html new file mode 100644 index 00000000..a1275da9 --- /dev/null +++ b/dft-learning/pages/66a232/index.html @@ -0,0 +1,69 @@ + + + + + + + + + + 安装 ASE | 北辞 + + + + + +
    跳至主要內容

    安装 ASE

    Northword大约 3 分钟Install

    安装 ASE

    总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。

    Requirements

    最新版本的 ase 需要的环境条件 [1]

    Optional but strongly recommended:

    Optional:

    Windows

    1.安装并配置 Python 环境

    python38 即可,Python for Windows

    注意版本,不要下载未正式发布的版本,否则可能出现 找不到指定文件 报错。

    2. 安装 ASE

    打开命令行/终端,输入以下命令的任意一个,即可安装 ASE。两行作用一致,但第二行配置了从清华大学镜像源下载安装,因此大陆网络使用第二行更快 [2]

    pip install --upgrade --user ase
    +pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +

    注意,是在命令行直接启动 pip,不是在命令行中运行 Python 后再 pip,否则你会收到如下报错:

    PS C:\Users\northword> python
    +Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> pip install ase
    +  File "<stdin>", line 1
    +    pip install ase
    +        ^^^^^^^
    +SyntaxError: invalid syntax
    +>>>
    +

    3. 检查是否安装正确

    PS C:\Users\northword> ase --version
    +ase-3.22.1
    +PS C:\Users\northword>
    +

    返回以上结果既为正确。

    如不正确,例如如下报错,则请进入下一步添加环境变量。

    PS C:\Users\northword> ase
    +ase : 无法将“ase”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确
    +,然后再试一次。
    +所在位置 行:1 字符: 1
    ++ ase
    ++ ~~~~
    +    + CategoryInfo          : ObjectNotFound: (ase1:String) [], CommandNotFoundException
    +    + FullyQualifiedErrorId : CommandNotFoundException
    +
    +PS C:\Users\northword>
    +

    4. 添加环境变量

    将以下添加到PATH
    +%AppData%\Roaming\Python\Python38\Scripts
    +

    该变量可能不一样,需要自行确定

    Linux

    需要注意的是,支持 Python2 的 ase 最高版本是 3.17.0 [3]。学校的集群是 python2.7,需要

    pip install --user ase==3.17.0
    +

    该版本要求 numpy-1.9.0,而学校配置的 1.7.1,需要

    pip install --user numpy==1.9.0
    +

    经测试会报错,没找到原因,把 ase 降级到 3.9.1,正常运行。

    pip install --user ase==3.9.1
    +

    或:下载:https://files.pythonhosted.org/packages/c1/32/c7a102936e877b43a90e3242c95a719c2056fd3184b33767948c16defd22/ase-3.9.1.tar.gzopen in new window,上传,解压缩,pip install --user ase-3.9.1/setup.py(绝对路径)

    与新版本不同,此时必须通过 ase-gui,而新版本可以 ase gui,因为旧版本 /home/2020223055092/.local/bin/ 下没有 ase.


    在 Windows 10 20H2 版本上,ASE 可能报错,可能是由于 numpy 与 Windows 20H2 不兼容导致,参考 03.numpy-in-win20H2


    1. https://wiki.fysik.dtu.dk/ase/install.html#installation-using-pipopen in new window ↩︎

    2. 由于 Python Pip 默认源服务器在境外,速度较慢,故须换为国内镜像源或配置科学上网。第二行安装命令已配置为清华大学镜像源。详细参考 pip 换源↩︎

    3. https://pypi.org/project/ase/3.17.0/open in new window ↩︎

    + + + diff --git a/dft-learning/pages/69b75c/index.html b/dft-learning/pages/69b75c/index.html new file mode 100644 index 00000000..dd7d58fc --- /dev/null +++ b/dft-learning/pages/69b75c/index.html @@ -0,0 +1,75 @@ + + + + + + + + + + VASP 的输入文件 | 北辞 + + + + + +
    跳至主要內容

    VASP 的输入文件

    Northword大约 9 分钟VASP

    VASP 的输入文件

    VASP 运行至少包含四个输入文件:INCARPOSCARPOTCATRKPOINTS

    INCAR

    INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。

    标签的含义可以查 vasp-input-files-INCAR 和 [VASP 手册](https://www.vasp.at/wiki/index.php/Categoryopen in new window: INCAR)。

    POSCAR

    POSCAR 是个 结构文件,他告诉 VASP 要运行的是什么物质。该文件包含晶格几何形状和离子位置等。

    这是一个 POSCAR 文件的示例:

    O2 molecule           # 注释行
    +10                    # 比例,提供了通用缩放因子(晶格常数)
    +1.0 0.0 0.0           # 3-5行 格矢
    +0.0 1.0 0.0
    +0.0 0.0 1.0
    +O                     # 元素类别(与它们在POTCAR文件中的顺序一致)
    +2                     # 原子数量
    +Selective Dynamic     # 
    +Direct                # 坐标类别:分数/笛卡尔
    +0.5 0.5 0.5    F F F  # 每个原子的三个(X Y Z)坐标。
    +0.5 0.5 0.623  F F T
    +

    第 8 行:该模式允许为每个原子提供额外的标志,以指示在离子弛豫期间是否将允许更改此原子的相应坐标。如果仅缺陷周围的某些壳或表面附近的层应松弛,则此设置很有用。这一行是可选的,如果省略了选择性动力学标签,则第八行将在笛卡尔和直角坐标之间进行切换,如下。

    O2 molecule           # 注释行
    +10                    # 比例,提供了通用缩放因子(晶格常数)
    +1.0 0.0 0.0           # 3-5行 格矢
    +0.0 1.0 0.0
    +0.0 0.0 1.0
    +O                     # 元素类别(与它们在POTCAR文件中的顺序一致)
    +2                     # 原子数量
    +Direct                # 坐标类别:分数/笛卡尔
    +0.5 0.5 0.5           # 每个原子的三个(X Y Z)坐标。
    +0.5 0.5 0.623  
    +

    第 9 行:(如果不启用选择性动力学,则为第 8 行)指定原子位置是在笛卡尔坐标系(cartesian coordinates)中还是在分数坐标(direct (fractional) coordinates)中提供。

    分数坐标是把点阵矢量看成是单位矢量下确定原子位置; 笛卡尔坐标是绝对坐标,是直角坐标系与斜角坐标系的统称,考虑点阵常数的大小。

    Basically, the fractional coordinates show the fraction of each unit cell vector that contributes to the position of that atom。根本上来说,分数坐标给出了每个原子在元胞的相对位置。

    晶格参数:

    A(AxAyAz)2.460.000.00B(BxByBz)1.232.130.00C(CxCyCz)0.000.0010.00 \begin{aligned} &A (A_x A_y A_z)\qquad & 2.46\qquad & 0.00\qquad & 0.00 \\ &B (B_x B_y B_z)\qquad &-1.23\qquad & 2.13\qquad & 0.00 \\ &C (C_x C_y C_z) & 0.00\qquad & 0.00\qquad & 10.00 \\ \end{aligned}

    一个点的分数坐标(a, b, c)=(0.667,0.333,0)

    x=Axa+Bxb+Cxc=2.460.6671.230.333+00=1.23y=Aya+Byb+Cyc=00.667+2.130.333+00=0.71z=Aza+Bzb+Czc=00.667+00.333+100=0 \begin{aligned} &x = A_xa+B_xb+C_xc = &2.46*0.667&-&1.23*0.333&+&0*0&=1.23 \\ &y = A_ya+B_yb+C_yc = &0*0.667&+&2.13*0.333&+&0*0&=0.71 \\ &z = A_za+B_zb+C_zc = &0*0.667&+&0*0.333&+&10*0&=0 \end{aligned}

    这个点的笛卡尔坐标(x, y, z)= (1.23,0.71,0)

    所以,笛卡尔坐标并不是原子在我们作为参考的直角坐标系中的绝对位置,而是在元胞基矢构成坐标系中,原子的绝对位置,而分数坐标,就是原子在元胞基矢构成坐标系中原子的相对位置。对于一个斜角坐标系,显然原子的相对位置比较好判断,所以,我们一般在 POSCAR 中用到的是其分数坐标,如果需要用到笛卡尔坐标,就用上面的公式转换。

    抽象一些,用矩阵表示,对于以下两种坐标系:

    system_name system_namelattice_constant_1 lattice_constant_2AxAxAxBxByByCxCzCz AxAxAxBxByByCxCzCzelements_type elements_typeatom_number atom_numberDirect CartesionX11X12X13X21X22X23X31X32X33x11x12x13x21x22x23x31x32x33 \begin{aligned} & \text{system\_name} &\ & \text{system\_name} \\ & \text{lattice\_constant\_1} &\ & \text{lattice\_constant\_2} \\ & \begin{matrix} A_{x} & A_{x} & A_{x} \\ B_{x} & B_{y} & B_{y} \\ C_{x} & C_{z} & C_{z} \end{matrix} &\ & \begin{matrix} A_{x} & A_{x} & A_{x} \\ B_{x} & B_{y} & B_{y} \\ C_{x} & C_{z} & C_{z} \end{matrix}\\ & \text{elements\_type} &\ & \text{elements\_type} \\ & \text{atom\_number} &\ & \text{atom\_number} \\ & \text{Direct} &\ & \text{Cartesion} \\ & \begin{matrix} X_{11} & X_{12} & X_{13} \\ X_{21} & X_{22} & X_{23} \\ X_{31} & X_{32} & X_{33} \end{matrix} & & \begin{matrix} x_{11} & x_{12} & x_{13} \\ x_{21} & x_{22} & x_{23} \\ x_{31} & x_{32} & x_{33} \end{matrix} \\ \end{aligned}

    [X11X12X13X21X22X23X31X32X33][AxAxAxBxByByCxCzCz]lattice_content_1=[x11x12x13x21x22x23x31x32x33]lattice_content_2 \left[ \begin{matrix} X_{11} & X_{12} & X_{13} \\ X_{21} & X_{22} & X_{23} \\ X_{31} & X_{32} & X_{33} \end{matrix} \right] * \left[ \begin{matrix} A_{x} & A_{x} & A_{x} \\ B_{x} & B_{y} & B_{y} \\ C_{x} & C_{z} & C_{z} \end{matrix} \right] *lattice\_content\_1 \\ = \left[ \begin{matrix} x_{11} & x_{12} & x_{13} \\ x_{21} & x_{22} & x_{23} \\ x_{31} & x_{32} & x_{33} \end{matrix} \right] *lattice\_content\_2

    vaspkit 411-412 可以转换。

    参考:

    vasp 的 POSCAR 文件中的 Direct 坐标和 Cartesion 坐标的关系 - 小木虫open in new window

    POSCAR - VaspWikiopen in new window

    POSCAR 关于分数坐标与笛卡尔坐标写法问题 - 郝玲娟 xueer 的新浪博客open in new window

    笛卡尔坐标系 - 维基百科open in new window

    提示

    8 行 9 行均只识别第一个字母。即 VASP 识别的唯一关键字符是 C or c for cartesian modeDor d for direct modeS or s for Select

    POTCAR

    赝势文件。POTCAR 文件包含计算中使用的每个原子种类的赝势。如果物种数量大于一个,则 按照 POSCAR 中原子的顺序 合并每个物种的 POTCAR 文件。

    其他见:https://www.bigbrosci.com/2017/10/18/ex1_05_vasp_preparation_input_potcar/open in new window

    vasp 计算中用到的三种赝势:模守恒赝势,超软赝势,PAW 赝势 (按产生顺序)。

    按方法不同分为 USPP 和 PAW(两种方法都可以相当程度地减少过渡金属或第一行元素的每个原子 所必需的平面波数量)。

    按交换关联函数不同分为 LDA 和 GGA(又分为 PW91 和 PBE)//求解 K-S 方程时电子之间的交换关联泛函取局域密度泛函 LDA(Rc 处电子结构当成是密度相同的均匀电子气体来算)或 广义梯度泛函 GGA(考虑了密度的梯度变化),但泛函的不同也会引起贋势的不同。

    每种元素往往还会有多种赝势存在。这是因为根据 ENMAX 的大小还可以分为 Ga,Ga_s(soft),Ga_h,或者根据处理半芯态的不同还可以分为 Ga,Ga_sv(s 电子作为半芯态),Ga_pv 的不同。

    https://blog.csdn.net/kyang_823/article/details/56277201open in new window

    KPOINTS

    K 点取样文件。KPOINTS 文件用于指定 Bloch 矢量(k 点),这些矢量将用于在计算中对布里渊区进行采样。

    可以使用几种不同的方法在 KPOINTS 文件中指定 k 点:(1)作为自动生成的(移位的)常规点网格;(2)通过线段的起点和终点;或(3)作为点和权重的明确列表。

    K-POINTS      #  第一行随便写都行,但不能没有
    + 0             # 零,格子自动生成
    +Gamma         #  gamma点centered 
    +1 1 1         #  1*1*1格子
    +0 0 0         #  S1 S2 S3, 一般保持 0 0 0 不变。
    +

    详解:

    • 该 KPOINTS 文件里面,共有 5 行,# 号以及后面的不用输入;
    • 同 INCAR 的注释一样,不要在每一行后面使用 ! 来进行注释,要使用 #,且最好不要写中文。
    • 第一行:可以随便写内容,但不能没有;
    • 第二行:数字 0,不是字母 O,0 在这里表示的是自动生成 K 点。你可能注意到了,0 前面有个空格,不过没关系,对计算不影响,可以删掉,也可以再加一个空格,后面的同样如此。但是避免用 tab 输入,VASP 有时候不识别 tab 键输入的空白部分,导致计算出错;
    • 第三行:VASP 只认第一个字母,大小写均可。在这里 Gamma 和 gamma,Gorge,gorge 效果是一样的,当然这一行也可以直接写字母 G 或者 g。
      • G 表示的是以 gamma 点为中心生成网格。
      • 另外一种是原始的 Monkhorst-Pack 网格,两者的区别是 M 或者 m 在 G 的基础上在三个方向上平移了 1/(2N)个单位。
      • G,也叫 gamma centered Monkhorst-Pack Grid;所以,gamma centered 只是 MP 网格的一种特殊情况。
    • 第四行,在 xyz 三个方向上生成对应数目的 K 点,本例是 111;
      • 对于原子或者分子的计算,K 点取一个 gamma 点就够了(1 1 1),也就是这个 KPOINTS 文件可以用于绝大多数的原子或者分子计算,不用再修改;
      • 但如果你要用 ISMEAR = -5 来计算能量,那么就需要把 1 1 1 改成 2 2 2 或者 3 3 3。
    • 第五行,一般都写成 0 0 0,不用动即可;
    • 按照前面 INCAR 的方式保存文件,名字为 KPOINTS。

    KPOINTS 的建议:

    K 点在 VASP 计算中非常重要,大师兄给的一个建议是:

    • 一直用 gamma centered,也就是第三行保持 G 不变。因为 M 平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出错,尤其是对于六角晶系 hexagonal 的结构,必须用 gamma centered!这一点,vasp 官网说的很明确;其他的建议后续慢慢展开讨论。
    • 如非六角晶系的计算,如果已经设置的 M 算起来了,继续用 M 算就行,没必要改成 G 再重新算一遍;
    • 前面看不懂,没事。记住这一点,本节就圆满完成任务:气体分子,原子计算的时候,使用 gamma 点即可。

    K 点取值:

    1. 通过测试不同 k 点对体系能量的变化
    2. 查找参考文献取值

    此外,不同 K 点之间的数据不能混用。比如计算 CO 在一个 (3x3) Cu(111) 表面上的吸附能:

    Eads=ECO+slabEslabECOgas E_{ads} = E_{CO + slab} – E_{slab} – E_{CO^{gas}}

    等号后面的前两项,必须要用同一个 K 点下计算出来的能量,如果 ECO+slabE{CO+slab}5x5x1 的 K 点, E(slab) 采用 3x3x1 的 K 点能量,得出的结果必然是错的。

    K 点部分抄自大师兄网站:https://www.bigbrosci.com/2017/10/16/ex1_03_vasp_preparation_input_kpoints/open in new window

    https://www.bigbrosci.com/2017/12/10/ex18/open in new window

    手册:KPOINTS - Vaspwikiopen in new window


    还有一些其他的文件:[Category: Input Files - vaspwiki](https://www.vasp.at/wiki/index.php/Categoryopen in new window: Input_Files) .

    STOPCAR

    在当前电子步或离子步完成后结束 VASP 运行。

    创建 STOPCAR

    LSTOP = .TRUE.   # 在下一个离子步结束,推荐
    +
    +LABORT = .TRUE.  # 在下一个电子部结束
    +
    + + + diff --git a/dft-learning/pages/6daef6/index.html b/dft-learning/pages/6daef6/index.html new file mode 100644 index 00000000..a6d47caa --- /dev/null +++ b/dft-learning/pages/6daef6/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 建模中的一些小疑惑 | 北辞 + + + + + +
    跳至主要內容

    建模中的一些小疑惑

    Northword大约 2 分钟Materials-Studio

    一些乱七八糟的为什么

    为什么要建立超胞?

    1. 避免周期性镜像间的互相影响
    2. 考虑多分⼦吸附时的多种构象

    如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么?

    我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢?

    (1)掺杂问题

    1)建立超胞是为了获得合适的掺杂浓度;

    2)清晰地分成置换固溶体或间隙固溶体

    (2)表面吸附问题

    1)可以模拟不同晶向的吸附密度;

    2)要避免吸附的气体分子和镜像分子间有作用;

    https://www.zhihu.com/question/282248524open in new window

    如何选择真空层厚度?

    todo

    如何确定底部保留几层?

    todo

    埃 Angstrom

    埃格斯特朗。长度单位。 1A˚=1010m=0.1nm=102pm1\text{\AA} = 10^{-10} m = 0.1 nm = 10^{-2}pm

    WiKiPedia: https://zh.wikipedia.org/wiki/埃格斯特朗open in new window

    In LaTeX, the command for angstrom is {\AA}.

    https://www.aps.org/meetings/abstract/latex.cfmopen in new window

    由于 KaTex 尚不支持 \AA ,可用 \text{\AA} 进行渲染。

    CIF 文件的区别

    Materials Project 上提供四种 CIF 文件,他们本质无区别,所有 CIF 都完全相同或有效等效,它们只是同一晶体结构的不同“设置”。因此,使用哪个都不要紧。

    CIF file types - differences? - Materials Project - Materials Science Community Discourse (matsci.org)open in new window

    The most important thing is that all the CIFs are either exactly or effectively equivalent, they are just different “settings” of the same crystal structure. So shouldn’t matter too much which you use.

    These are:

    • Computed, the structure direct from our calculations, always in the “P1” setting (i.e. no symmetry is detected)
    • Conventional standard, this is the same as “computed” except now the symmetry is detected and it’s put into a conventional setting – this will be more familiar to most scientists, since textbooks and papers etc. will usually report a crystal in its conventional setting
    • Primitive cell, this is the same as “computed” except now it’s reported in its primitive setting (i.e. with the minimum number of atoms required to define the periodic crystal). It’s often useful to use these primitive cells for further calculations, since they contain fewer atoms, but they can be more difficult to visualize – for example, a crystal with cubic symmetry might not have a primitive cell whose angles are 90º. Introductions to crystallography can go into more detail on this.
    • Symmetrized is the almost the same as “computed”, except atomic positions have been moved to their symmetrically equivalent positions if they’re almost but not quite there – this is important e.g. if due to numerical noise an atom may be close to but not exactly at (0,0, 0) even if we know in reality it’s likely to be exactly at (0,0, 0) in that particular setting.

    切面用 conventional 还是 primitive ?

    Ex42 slab 模型 | Learn VASP The Hard Way (bigbrosci.com)open in new window 评论区:

    1. 切 slab 模型不能用 primitive cell 切,而要用 conventional cell 切。有時候兩種切出來會不一樣
    2. 將 primitive cell 轉換成 conventional cell:利用 Material Studio 的 Build- Symmetry-Find Symmetry 功能,對 primitive cell 的模型“Find Symmetry”,然後“Impose Symmetry”,即可。

    刘锦程 MS 建模视频:

    切面必须用 conventional cell ,

    能带计算必须用 primitive cell ,因为其布里渊区定义正确

    + + + diff --git a/dft-learning/pages/6e7240/index.html b/dft-learning/pages/6e7240/index.html new file mode 100644 index 00000000..5a0acffd --- /dev/null +++ b/dft-learning/pages/6e7240/index.html @@ -0,0 +1,76 @@ + + + + + + + + + + 分子动力学 | 北辞 + + + + + +
    跳至主要內容

    分子动力学

    Northword大约 1 分钟VASP分子动力学

    分子动力学入门

    课上:八个水分子为例的分子动力学。

    分子动力学

    步骤

    建模

    在 MS 中建立模型,上传,vaspkit-106。

    结构优化

    INCAR 为:

    详情
    [zjb@op geo2]$ cat INCAR 
    +Global Parameters
    + ISTART =  0            (Read existing wavefunction; if there)
    +# ISPIN =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .FALSE.        (Write WAVECAR or not)
    + LCHARG = .FALSE.        (Write CHGCAR or not)
    + NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    + ALGO   = Fast
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +EDIFF  =  1E-04        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  100          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +POTIM  =  0.3
    +#ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -1E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +
    +

    需要把 walltime 加长,课上演示失败的原因就是到了 walltime。我加到了 01:30:00。

    疑惑:怎样迅速达到收敛?这个硬生生跑完了 100 步...

    分子动力学

    在结构优化基础上,对 INCAR 做如下修改

    Ionic Relaxation
    + NSW    =  100          (Max electronic SCF steps)
    + IBRION =  0            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    + POTIM  =  1
    + SMASS  =  0
    + TEBEG  =  350
    + TEEND  =  350
    +# ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +# EDIFFG = -1E-02        (Ionic convergence; eV/AA)
    +# ISM =  2            (Symmetry: 0=none; 2=GGA; 3=hybrids)
    +

    结果分析

    使用 grep T= stdout 查看数据。使用 grep T= stdout > md-data.txt 将数据保存到 md-data.txt 文件,下载,导入 Origin。

    + + + diff --git a/dft-learning/pages/77a22e/index.html b/dft-learning/pages/77a22e/index.html new file mode 100644 index 00000000..ed1e1de5 --- /dev/null +++ b/dft-learning/pages/77a22e/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 理论知识 | 北辞 + + + + + +
    跳至主要內容

    理论知识

    Northword小于 1 分钟Theory

    关于材料计算

    不写了,反正写了也看不懂 — — !

    关于理论计算

    啊这...我也不知道啊...

    插播一个我觉得还不错的视频 谈谈理论计算如何入门(上) | BV1z7411f7raopen in new window ,UP是刘锦程博士:

    第一性原理

    Todo

    密度泛函理论

    Todo

    局域密度近似

    Todo

    自洽场

    Todo

    过渡态理论

    Todo

    Todo

    这理论可太多了

    + + + diff --git a/dft-learning/pages/816847/index.html b/dft-learning/pages/816847/index.html new file mode 100644 index 00000000..8fef38d9 --- /dev/null +++ b/dft-learning/pages/816847/index.html @@ -0,0 +1,171 @@ + + + + + + + + + + linux 编译 py3 | 北辞 + + + + + +
    跳至主要內容

    linux 编译 py3

    Northword大约 4 分钟Install

    为学校的 linux 安装 python3

    由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。

    步骤放在最前面

    升级 OPENSSL

    cd /tmp
    +wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    +tar -xvf openssl-1.1.1d.tar.gz
    +cd openssl-1.1.1d
    +./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib  #注意添加no-zlib
    +make && make install
    +

    之后添加环境变量

    $ vi ~/.bashrc
    +# 加入以下内容
    +export PATH="/public/home/zjb/app/openssl-1.1.1d/bin":${PATH}
    +export PATH="/public/home/zjb/app/openssl-1.1.1d/lib":${PATH}
    +export LD_LIBRARY_PATH="/public/home/zjb/app/openssl-1.1.1d/lib":${LD_LIBRARY_PATH}
    +
    +$ source ~/.bashrc
    +

    此时运行 openssl--version 应当显示 1.1.1 版本,如果是,进行下一步。

    [zjb@op ~]$ openssl
    +OpenSSL> version
    +OpenSSL 1.1.1d  10 Sep 2019
    +OpenSSL> exit
    +[zjb@op ~]$ 
    +

    编译 Python3

    cd /tmp
    +wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    +tar -xvf Python-3.8.1.tgz
    +cd Python-3.8.1
    +./configure --prefix=/public/home/zjb/app/python38/
    +

    到这儿截住,去 Python-3.8.1/Moudles 下编辑 Setup 以修改 OPENSSL 的路径:

    vi Moudles/Setup
    +

    查找 SSL,把如下几行取消注释

    SSL=/public/home/zjb/app/openssl-1.1.1d     #改为刚安装的ssl路径
    +_ssl _ssl.c \
    +       -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    +       -L$(SSL)/lib -lssl -lcrypto
    +

    其中第一行替换为自己的 OPENSSL 安装路径,修改后编译:

    $ make && make install
    +
    +# 如果之前有编译过,用make clean清理已编译的文件后再编译
    +

    编译完成后,试一下

    [zjb@op Python-3.8.5]$ python3
    +Python 3.8.5 (default, Nov 20 2020, 23:23:42) 
    +[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> import ssl
    +>>> 
    +

    OK,完成!

    此时 SSL 模块应当是可用的,尝试安装一个

    pip3 install ase
    +
    [zjb@op Python-3.8.5]$ pip3 install ase
    +Collecting ase
    +  Downloading ase-3.20.1-py3-none-any.whl (2.2 MB)
    +     |████████████████████████████████| 2.2 MB 1.4 MB/s 
    +Collecting matplotlib>=2.0.0
    +  Downloading matplotlib-3.3.3-cp38-cp38-manylinux1_x86_64.whl (11.6 MB)
    +     |████████████████████████████████| 11.6 MB 2.3 MB/s 
    +Collecting numpy>=1.11.3
    +  Downloading numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
    +     |████████████████████████████████| 14.5 MB 153 kB/s 
    +Collecting scipy>=0.18.1
    +  Downloading scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl (25.8 MB)
    +     |████████████████████████████████| 25.8 MB 1.5 MB/s 
    +Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3
    +  Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
    +     |████████████████████████████████| 67 kB 1.3 MB/s 
    +Collecting pillow>=6.2.0
    +  Downloading Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
    +     |████████████████████████████████| 2.2 MB 1.9 MB/s 
    +Collecting cycler>=0.10
    +  Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
    +Collecting kiwisolver>=1.0.1
    +  Downloading kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl (1.2 MB)
    +     |████████████████████████████████| 1.2 MB 1.9 MB/s 
    +Collecting python-dateutil>=2.1
    +  Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
    +     |████████████████████████████████| 227 kB 2.0 MB/s 
    +Collecting six
    +  Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
    +Installing collected packages: pyparsing, pillow, six, cycler, numpy, kiwisolver, python-dateutil, matplotlib, scipy, ase
    +Successfully installed ase-3.20.1 cycler-0.10.0 kiwisolver-1.3.1 matplotlib-3.3.3 numpy-1.19.4 pillow-8.0.1 pyparsing-2.4.7 python-dateutil-2.8.1 scipy-1.5.4 six-1.15.0
    +

    正常!


    经历

    最开始按照正常的编译过程去编译安装 Python3,但是过程中发现 SSL 模块无法被编译,刚开始没当回事,结果都好了发现 pip3 没法使用:

    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
    +

    因为 ssl 模块不可用,又折回去折腾,发现提示中,是因为机器本身安装的 openssl 版本过低(1.0.1)导致的,

    Python build finished successfully!
    +The necessary bits to build these optional modules were not found:
    +_sqlite3              _ssl                                     
    +To find the necessary bits, look in setup.py in detect_modules() for the module's name.
    +
    +Could not build the ssl module!
    +Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
    +LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381
    +

    考虑升级 openssl 解决一下:

    $ wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz
    +$ tar -xvf openssl-1.1.1d.tar.gz
    +$ cd openssl-1.1.1d
    +$ ./config --prefix=/public/home/zjb/app/penssl-1.1.1d no-zlib  #注意添加no-zlib
    +$ make && make install
    +
    +$ vi ~/.bashrc
    +export PATH="/public/home/zjb/app/openssl-1.1.1d/bin":${PATH}
    +

    运行 openssl 发现报错

    error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
    +

    搜了一些资料,发现解决方法多是 sudo 的,mmp 我要是有 root 还费这劲去编译呢???还好在一篇资料里看到一个方案:发现 libssl.so.1.1 存在于 openssl.1.1.d/lib 目录下,于是考虑把这个目录加入环境变量:

    export LD_LIBRARY_PATH=/public/home/zjb/app/openssl-1.1/lib:$LD_LIBRARY_PATH
    +

    这下正常了:

    [zjb@op ~]$ openssl
    +OpenSSL> version
    +OpenSSL 1.1.1d  10 Sep 2019
    +OpenSSL> exit
    +[zjb@op ~]$ 
    +

    接下来就继续编译 Python3:

    cd /tmp
    +wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
    +tar -xvf Python-3.8.1.tgz
    +cd Python-3.8.1
    +./configure --prefix=/public/home/zjb/app/python38/
    +make 
    +

    此时编译的仍然提示 Could not build the ssl module! Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().,但是 make install 后是可以用的,也不知道为什么。

    接下来添加环境变量,

    export PATH=/public/home/zjb/app/python38/bin:${PATH}
    +

    然后...正常了

    [zjb@op Python-3.8.5]$ python3
    +Python 3.8.5 (default, Nov 20 2020, 23:23:42) 
    +[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
    +Type "help", "copyright", "credits" or "license" for more information.
    +>>> import ssl
    +>>> 
    +

    几分钟后发现 ase 虽然安装了,但是不能运行,

    [zjb@op python38]$ ase
    +Traceback (most recent call last):
    +  File "/public/home/zjb/app/ase/bin/ase", line 2, in <module>
    +    from ase.cli.main import main
    +  File "/public/home/zjb/app/ase/ase/__init__.py", line 25, in <module>
    +    from ase.atoms import Atoms
    +  File "/public/home/zjb/app/ase/ase/atoms.py", line 19, in <module>
    +    from ase.constraints import (FixConstraint, FixBondLengths, FixLinearTriatomic,
    +  File "/public/home/zjb/app/ase/ase/constraints.py", line 10, in <module>
    +    from scipy.linalg import expm, logm
    +  File "/public/home/zjb/app/python38/lib/python3.8/site-packages/scipy/__init__.py", line 151, in <module>
    +    from scipy._lib._ccallback import LowLevelCallable
    +  File "/public/home/zjb/app/python38/lib/python3.8/site-packages/scipy/_lib/_ccallback.py", line 1, in <module>
    +    from . import _ccallback_c
    +  File "_ccallback_c.pyx", line 210, in init scipy._lib._ccallback_c
    +  File "/public/home/zjb/app/python38/lib/python3.8/ctypes/__init__.py", line 7, in <module>
    +    from _ctypes import Union, Structure, Array
    +ModuleNotFoundError: No module named '_ctypes'
    +

    因为 python 缺少依赖库 libffi-devel,查资料没发现这玩意怎么自己搞,似乎只能管理员去装,反正网上给出的方法都不行...

    [zjb@op python38]$ yum install -y libffi-devel
    +Loaded plugins: aliases, changelog, kabi, ovl, presto, refresh-packagekit, security, tmprepo, verify, versionlock
    +Loading support for Red Hat kernel ABI
    +ovl: Error while doing RPMdb copy-up:
    +[Errno 13] Permission denied: '/var/lib/rpm/Sigmd5'
    +You need to be root to perform this command.
    +[zjb@op python38]$ 
    +

    此贴终结,失败告终,over!

    + + + diff --git a/dft-learning/pages/832cb5/index.html b/dft-learning/pages/832cb5/index.html new file mode 100644 index 00000000..8bca3bf8 --- /dev/null +++ b/dft-learning/pages/832cb5/index.html @@ -0,0 +1,236 @@ + + + + + + + + + + PBS | 北辞 + + + + + +
    跳至主要內容

    PBS

    Northword大约 8 分钟Linux

    PBS

    作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。

    PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。

    PBS 命令

    提交作业

    用以下命令提交作业:

    qsub [options] <control script>
    +

    命令执行后会返回一个作业 ID。如:

    [zjb@op back]$ qsub -N thisIsName vasp.pbs
    +201848.inode202
    +

    作业提交后一般会先排队等待,PBS 系统会根据作业的优先级和可用的计算资源来调度和执行作业。

    其中 -N thisIsName 为选项,它指定了作业的名称。vasp.pbs 为 PBS 脚本,它设定了作业的属性和作业的内容。optionscontrol script 详见 PBS 脚本。

    文档中,命令带有 `` 符号的,表示是在 shell 终端输入的命令,实际输入的时候不需要带有这个符号。

    查看任务

    qstat [option] <jobid>
    +

    如:

    [zjb@op back]$ qstat
    +Job ID                    Name             User            Time Use S Queue
    +------------------------- ---------------- --------------- -------- - -----
    +201848.inode202            thisIsName       zjb             00:00:00 C energy         
    +

    其中,S 表示任务的状态,有如下几种状态:

    状态 (S)描述
    B只用于任务向量,表示任务向量已经开始执行
    E任务在运行后退出
    H任务被服务器或用户或者管理员阻塞
    Q任务正在排队中,等待被调度运行
    R任务正在运行
    C任务完成
    S任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源
    T任务被转移到其它执行节点了
    U由于服务器繁忙,任务被挂起
    W任务在等待它所请求的执行时间的到来 (qsub -a)
    X只用于子任务,表示子任务完成

    qstat 的选项

    命令说明
    qstat -q列出所有队列
    qstat -a列出所有作业
    qstat -u user_id列出 user_id 的所有作业
    qstat -r列出所有正在运行的作业
    qstat -f job_id列出作业 job_id 的信息
    qstat -fQ queue列出队列 queue 的信息
    qstat -B列出所有作业状态的汇总
    pbsnodes列出所有节点的详细信息
    pestat列出所有节点的状态

    取消任务

    qdel <jobid>
    +

    停止正在运行的任务

    qsig -s KILL <job ID>
    +

    checkjob

    checkjob <job id>
    +

    注意这儿的 job id 不包括 .inodexxx,比如上述的 201848.inode202 作业,如果使用 checkjob 查询,命令应为 checkjob 201848

    [zjb@op testEnergy]$ checkjob 201848
    +
    +checking job 201848
    +
    +State: Running
    +Creds:  user:zjb  group:energy  account:SugonClus  class:energy  qos:preemptee
    +WallTime: 00:02:03 of 00:30:00
    +SubmitTime: Sat Oct 31 19:45:48
    +  (Time Queued  Total: 00:00:01  Eligible: 00:00:01)
    +
    +StartTime: Sat Oct 31 19:45:49
    +Total Tasks: 4
    +
    +Req[0]  TaskCount: 4  Partition: DEFAULT
    +Network: [NONE]  Memory >= 0  Disk >= 0  Swap >= 0
    +Opsys: [NONE]  Arch: [NONE]  Features: [NONE]
    +Allocated Nodes:
    +[inode53:4]
    +
    +IWD: [NONE]  Executable:  [NONE]
    +Bypass: 0  StartCount: 1
    +PartitionMask: [ALL]
    +Flags:       BACKFILL RESTARTABLE PREEMPTEE
    +Attr:        PREEMPTEE
    +
    +Reservation '201868' (-00:02:04 -> 00:27:56  Duration: 00:30:00)
    +PE:  4.00  StartPriority:  6000
    +

    如果任务无法运行,可以这样查询原因。

    pbsnodes

    查看节点的空闲情况。有 freebusydown 等状态。

    PBS 脚本

    PBS 脚本实际上是一个 linux shell 脚本,在 PBS 脚本中可以用一种特殊形式的注释(#PBS)作为 PBS 指令以设定作业属性。下面是一个 PBS 脚本示例:

    #!/bin/sh
    +#PBS -N Untitled
    +#PBS -l nodes=1:ppn=4
    +#PBS -l walltime=00:10:00
    +#PBS -j oe
    +#PBS -o ./out.log
    +
    +cd ${PBS_O_WORKDIR}
    +source /public/software/profile.d/compiler_intel-composer_xe_2015.2.164.sh
    +source /public/software/profile.d/mpi_intelmpi-5.0.2.044.sh
    +echo "============================================="
    +echo "Starting VASP run at" `date` 
    +echo "============================================="
    +echo "# SYSTEM INFO"
    +echo 'The hostname is ' `hostname`  
    +grep 'Linux' /etc/issue 
    +grep 'model name' /proc/cpuinfo |cut -d: -f2 |uniq -c
    +grep 'cpu M' /proc/cpuinfo 
    +grep 'MemTotal' /proc/meminfo
    +echo "============================================="
    +echo "# PBS INFO"
    +echo "The PBS_O_WORKDIR is" $PBS_O_WORKDIR
    +echo "The PBS_JOBID is" $PBS_JOBID
    +echo "The PBS_O_QUEUE is" $PBS_O_QUEUE
    +echo "The PBS_O_HOST is" $PBS_O_HOST
    +NP=`cat $PBS_NODEFILE | wc -l`
    +echo "The num of PBS_NODEFILE is" $NP
    +echo "The PBS_NODEFILE IS:" 
    +cat $PBS_NODEFILE
    +mpirun -np $NP -machinefile $PBS_NODEFILE /public/software//apps/vasp/5.4.1/intelmpi/vasp_std >& stdout
    +echo "============================================="
    +echo "End task at " `date`  
    +echo "============================================="
    +

    PBS 作业属性

    属性取值说明
    -l资源列表设定作业所需资源,以逗号分隔
    -N作业名称设定作业的默认名称
    -o文件路径设定作业的标准输出文件路径
    -e文件路径设定作业的标准错误文件路径
    -joe 或 eooe: 将标准错误文件与标准输出文件合并成标准输出文件。eo: 将标准错误文件和标准输出文件合并成标准错误文件
    -p-1024 到 +1023 之间的整数设定作业优先级,越大优先级越高
    -q队列名称设定作业队列名称

    资源列表

    资源取值说明
    nodes节点资源构型设定作业所需计算节点资源
    walltimehh: mm: ss设定作业所需的最大 wallclock 时间
    cputhh: mm: ss设定作业所需的最大 CPU 时间
    mem正整数,后面可跟 b,kb,mb,gb设定作业所需的最大内存 ncpus 正整数 设定作业所需的 CPU 数目

    指定节点运行:

    有时候某个节点出了问题,但是直接提交仍会被分配到这个节点计算,这时候可以指定一个其他的节点进行提交。

    #PBS -l nodes=c72:ppn=16+c73:ppn=16
    +

    其中,c72c73 是节点名,可以通过 pbsnodes 获取到。

    参考:

    PBS 常用环境变量

    环境变量说明
    PBS_ENVIRONMENT批处理作业为 PBS_BATCH,交互式作业为 PBS_INTERACTIVE
    PBS_JOBID PBS系统给作业分配的标识号
    PBS_JOBNAME用户指定的作业名称
    PBS_NODEFILE包含作业所用计算节点的文件名
    PBS_QUEUE作业所执行的队列名称
    PBS_O_HOME执行 qsub 命令的 HOME 环境变量值
    PBS_O_PATH执行 qsub 命令的 PATH 环境变量值
    PBS_O_SHELL执行 qsub 命令的 SHELL 环境变量值
    PBS_O_HOST执行 qsub 命令节点名称
    PBS_O_QUEUE提交的作业的最初队列名称
    PBS_O_WORKDIR执行 qsub 命令所在的绝对路径

    高级配置

    Qmgr 查看所有配置

     qmgr -c "p s"
    +

    example:

    [root@compute-0-11 init.d]# qmgr
    +Max open servers: 49
    +Qmgr: p s
    +#
    +# Create queues and set their attributes.
    +#
    +#
    +# Create and define queue batch
    +#
    +create queue batch
    +set queue batch queue_type = Execution
    +set queue batch acl_host_enable = False
    +set queue batch acl_hosts = compute-0-3.local+compute-0-4.local+compute-0-5.local+compute-0-6.local+compute-0-7.local+compute-0-8.local+compute-0-9.local+compute-0-10.local+compute-0-11.local
    +set queue batch resources_default.walltime = 7200:00:00
    +set queue batch enabled = True
    +set queue batch started = True
    +#
    +# Create and define queue gpu
    +#
    +create queue gpu
    +set queue gpu queue_type = Execution
    +set queue gpu acl_host_enable = False
    +set queue gpu acl_hosts = compute-0-2.local
    +set queue gpu resources_default.walltime = 720:00:00
    +set queue gpu enabled = True
    +set queue gpu started = True
    +#
    +# Set server attributes.
    +#
    +set server scheduling = True
    +set server default_queue = batch
    +set server query_other_jobs = True
    +set server default_chunk.ncpus = 1
    +set server scheduler_iteration = 600
    +set server resv_enable = True
    +set server node_fail_requeue = 310
    +set server max_array_size = 10000
    +set server pbs_license_min = 0
    +set server pbs_license_max = 2147483647
    +set server pbs_license_linger_time = 31536000
    +set server eligible_time_enable = False
    +set server max_concurrent_provision = 5
    +set server max_job_sequence_id = 9999999
    +Qmgr: 
    +

    普通用户查询他人作业

    配置使普通用户可以查看其他用户提交的作业(但不能操作):

    qmgr: set server query_other_jobs = True
    +

    示例:

    [scujh_zjb@scu ~]$ qstat                  # 仅能查看自己的任务,查看不到别人的任务
    +[scujh_zjb@scu ~]$ su
    +Password: 
    +[root@scu /home/scujh_zjb]# qmgr
    +Max open servers: 49
    +Qmgr: set server query_other_jobs = True
    +Qmgr: exit
    +[root@scu /home/scujh_zjb]# exit
    +exit
    +[scujh_zjb@scu ~]$ qstat
    +
    +scu: 
    +                                                            Req'd  Req'd   Elap
    +Job ID          Username Queue    Jobname    SessID NDS TSK Memory Time  S Time
    +--------------- -------- -------- ---------- ------ --- --- ------ ----- - -----
    +19.scu          scudt_du gpu      vasp-test-   1753   1  12    --  720:0 R 69:24
    +190.scu         cdu_lsh  batch    4-CeO2      10325   1  24    --  72:00 R 18:13
    +203.scu         cdu_hg   gpu      8-OHqy       8101   1   8    --  24:00 R 00:40
    +214.scu         cdu_lsh  batch    2CeO2Ni       --    1  24    --  72:00 Q   -- 
    +[scujh_zjb@scu ~]$ 
    +

    参考:

    解除堆栈大小限制

    UPDATE in 2022.11.14:该方法未解决该问题。

    用于解决 [分段错误:forrtl: severe (174): SIGSEGV, segmentation fault occurred](../05. VASP/08.%E5%85%B6%E4%BB%96/error. md #forrtl :%20severe%20 (174):%20SIGSEGV,%20segmentation%20fault%20occurred),为每一个计算节点解除堆栈大小限制。

    在每一个计算节点上,修改 $PBS_EXEC/lib/init.d/limits.pbs_mom(该文件会在运行前被 source)在里面添加 ulimit -s unlimited,然后重启 PBS 服务。

    具体步骤如下:

    ## 依次登录每一个计算节点
    +ssh compute-0-11 
    +
    +## 编辑 limits.pbs_mom 文件
    +cd /opt/pbs/lib/init.d/ && cp limits.pbs_mom limits.pbs_mom.bak && vi limits.pbs_mom
    +
    +## 原文件内容:
    +if [ -f /etc/sgi-release -o -f /etc/sgi-compute-node-release ] ; then
    +    MEMLOCKLIM=`ulimit -l`
    +    NOFILESLIM=`ulimit -n`
    +    STACKLIM=`ulimit -s`
    +    ulimit -l unlimited
    +    ulimit -n 16384
    +    ulimit -s unlimited
    +fi
    +
    +## 修改后内容
    +    MEMLOCKLIM=`ulimit -l`
    +    NOFILESLIM=`ulimit -n`
    +    STACKLIM=`ulimit -s`
    +    ulimit -l unlimited
    +    ulimit -n 16384
    +    ulimit -s unlimited
    +
    +## 重启 pbs
    +systemctl restart pbs && systemctl status pbs  # 或执行 /etc/init.d/pbs restart
    +

    日志备份以便理解:

    [root@scu /home/scujh_zjb/test]# ssh compute-0-11
    +Warning: untrusted X11 forwarding setup failed: xauth key data not generated
    +Last login: Thu Nov 10 03:11:13 2022 from scu
    +Rocks Compute Node
    +Rocks 7.0 (Manzanita)
    +Profile built 21:21 20-Oct-2022
    +
    +Kickstarted 21:27 20-Oct-2022
    +[root@compute-0-11 ~]# cd /opt/pbs/lib/init.d/ 
    +[root@compute-0-11 init.d]# ls
    +limits.pbs_mom         limits.post_services         sgigenvnodelist.awk
    +limits.pbs_mom.compat  limits.post_services.compat  sgiICEvnode.sh
    +[root@compute-0-11 init.d]# cd /opt/pbs/lib/init.d/ && cp limits.pbs_mom limits.pbs_mom.bak && ls
    +limits.pbs_mom      limits.pbs_mom.compat  limits.post_services.compat  sgiICEvnode.sh
    +limits.pbs_mom.bak  limits.post_services   sgigenvnodelist.awk
    +[root@compute-0-11 init.d]# vi limits.pbs_mom
    +[root@compute-0-11 init.d]# systemctl restart pbs && systemctl status pbs
    +● pbs.service - Portable Batch System
    +   Loaded: loaded (/opt/pbs/libexec/pbs_init.d; enabled; vendor preset: disabled)
    +   Active: active (running) since Fri 2022-11-11 02:50:13 EST; 10ms ago
    +     Docs: man:pbs(8)
    +  Process: 39964 ExecStop=/opt/pbs/libexec/pbs_init.d stop (code=exited, status=0/SUCCESS)
    +  Process: 40010 ExecStart=/opt/pbs/libexec/pbs_init.d start (code=exited, status=0/SUCCESS)
    +   Memory: 2.6M
    +   CGroup: /system.slice/pbs.service
    +           └─40074 /opt/pbs/sbin/pbs_mom
    +
    +Nov 11 02:50:12 compute-0-11.local systemd[1]: Starting Portable Batch System...
    +Nov 11 02:50:12 compute-0-11.local pbs_init.d[40010]: Starting PBS
    +Nov 11 02:50:13 compute-0-11.local pbs_init.d[40010]: PBS mom
    +Nov 11 02:50:13 compute-0-11.local systemd[1]: Started Portable Batch System.
    +[root@compute-0-11 init.d]# 
    +

    参考:

    + + + diff --git a/dft-learning/pages/904969/index.html b/dft-learning/pages/904969/index.html new file mode 100644 index 00000000..e031afbe --- /dev/null +++ b/dft-learning/pages/904969/index.html @@ -0,0 +1,56 @@ + + + + + + + + + + 自旋电荷密度 | 北辞 + + + + + +
    跳至主要內容

    自旋电荷密度

    Northword小于 1 分钟VASP电子结构

    自旋电荷密度

    本页以 O2 的自选电荷密度为例。

    步骤

    本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。

    2-scf/ 文件夹中进行。

    有两种方法获得其自旋电荷密度:

    方法 1:通过 VTST 脚本

    # Usage
    +$ chgsplit.pl <CHGCAR>
    +
    +# This example
    +[zjb@op 2-scf]$ chgsplit.pl CHGCAR
    +Atoms in file: 2
    +Points in total charge density: 1200000
    +Points in magnetization density: 1200000
    +

    得到 CHGCAR_totCHGCAR_mag 两个文件。下载,在 VTSTA 中查看:

    CHGCAR_mag
    CHGCAR_mag
    CHGCAR_tot
    CHGCAR_tot

    方法 2:通过 VASPKIT

    vaspkit31) Charge & Spin Density312) Spin Density ,生成了 SPIN.vasp,下载,在 VESTA 中查看。

    [zjb@op 5-chg-split]$ vaspkit
    +
    + ------------>>
    +312
    +  -->> (01) Reading Structural Parameters from CHGCAR File...
    +  -->> (02) Reading Charge Density From CHGCAR File...
    +  -->> (03) Reading Spin Density From CHGCAR File...
    +  -->> (04) Written SPIN.vasp File!
    +
    SPIN.vasp
    SPIN.vasp

    参考

    + + + diff --git a/dft-learning/pages/908cf1/index.html b/dft-learning/pages/908cf1/index.html new file mode 100644 index 00000000..d3204872 --- /dev/null +++ b/dft-learning/pages/908cf1/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + ASE-usage | 北辞 + + + + + +
    跳至主要內容

    ASE-usage

    Northword小于 1 分钟Other App

    ASE GUI 的用法

    原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。

    参考文档:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.guiopen in new window

    + + + diff --git a/dft-learning/pages/9909a6/index.html b/dft-learning/pages/9909a6/index.html new file mode 100644 index 00000000..3a84b0ba --- /dev/null +++ b/dft-learning/pages/9909a6/index.html @@ -0,0 +1,163 @@ + + + + + + + + + + K-PATH | 北辞 + + + + + +
    跳至主要內容

    K-PATH

    Northword大约 2 分钟VASP

    然后打开 vaspkit,依次进入 3303

    [zjb@op NaCl]$ cp NaCl.vasp POSCAR
    +[zjb@op NaCl]$ vaspkit
    + 
    +            \\\///         
    +           / _  _ \       Hey, you must know what you are doing.  
    +         (| (.)(.) |)     Otherwise you might get wrong results!  
    + +-----.OOOo--()--oOOO.------------------------------------------+
    + |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
    + |        Core Developer: Vei WANG (wangvei@icloud.com)          |
    + |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
    + |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
    + +-----.oooO-----------------------------------------------------+
    +        (   )   Oooo.     
    +         \ (    (   )     
    +          \_)    ) /      
    +                (_/       
    + ===================== Structural Options ========================
    + 1)  VASP Input Files Generator    2)  Elastic-Properties         
    + 3)  K-Path Generator              4)  Structure Editor           
    + 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
    + 
    + ===================== Electronic Options ========================
    + 11) Density-of-States             21) DFT Band-Structure         
    + 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
    + 26) Fermi-Surface                 28) Band-Structure Unfolding   
    + 
    + =========== Charge & Potential & Wavefunction Options ===========
    + 31) Charge & Spin Density         42) Potential-Related          
    + 51) Wave-Function Analysis  
    + ====================== Misc Utilities ===========================
    + 71) Optical-Properties            72) Molecular-Dynamics Kit 
    + 73) VASP2other Interface          74) USER interface
    + 91) Semiconductor Calculator      92) 2D-Materials Kit       
    +                                                                  
    + 0)  Quit                                                         
    + ------------>>
    +3
    + ===================== K-Path Options ============================
    + 301) 1D Nano Structure
    + 302) 2D Nano Structure (Experimental)
    + 303) 3D bulk structure (Experimental)
    + 304) Phonopy K-Path for 2D Nano Structure (Experimental)
    + 
    + 0) Quit                                              
    + 9) Back                                              
    + ------------>>
    +303
    + +-------------------------- Warm Tips --------------------------+
    +   The suggested K-Path is only for standardized primtive cell.
    +   It is for reference only and you can manually modify K-Path.
    + +---------------------------------------------------------------+
    + +-------------------------- Warm Tips --------------------------+
    +     See An Example in vaspkit/examples/seek_kpath/GaAs_bulk.        
    +   The suggested K-Path is only for standardized primtive cell.
    + This Feature is Experimental & Check Your System using SeeK-Path.       
    + For More details See [www.materialscloud.org/work/tools/seekpath].
    + +---------------------------------------------------------------+
    +  -->> (01) Reading Structural Parameters from POSCAR File...
    + +-------------------------- Summary ----------------------------+
    +                           Prototype: AB
    +           Total Atoms in Input Cell:   8
    +     Lattice Constants in Input Cell:   5.620   5.620   5.620
    +        Lattice Angles in Input Cell:  90.000  90.000  90.000
    +       Total Atoms in Primitive Cell:   2
    + Lattice Constants in Primitive Cell:   3.974   3.974   3.974
    +    Lattice Angles in Primitive Cell:  60.000  60.000  60.000
    +                      Crystal System: Cubic
    +                       Crystal Class: m-3m
    +                     Bravais Lattice: cF
    +            Extended Bravais Lattice: cF2
    +                         Space Group: 225
    +                         Point Group: 32 [ Oh ]
    +                       International: Fm-3m
    +                 Symmetry Operations: 192
    +                    Suggested K-Path: (shown in the next line)
    + [ Gamma-X-U|K-Gamma-L-W-X ]
    + +---------------------------------------------------------------+
    +  -->> (02) Written PRIMCELL.vasp file.
    +  -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference.
    +  -->> (04) Written POTCAR File with the Recommended Potential!
    +  -->> (05) Written KPATH.in File for Band-Structure Calculation.
    + +----------------------------WARNING----------------------------+
    + | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know |
    + |   what you are doing. Otherwise you might get wrong results!  |
    + +---------------------------------------------------------------+
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +[zjb@op NaCl]$ 
    +
    +

    之后这个目录会有如下文件:

    [zjb@op NaCl]$ ll
    +total 400
    +-rw-r--r-- 1 zjb energy    957 Oct 31 21:02 HIGH_SYMMETRY_POINTS
    +-rw-r--r-- 1 zjb energy    860 Oct 31 21:03 KPATH.in
    +-rw-r--r-- 1 zjb energy   4008 Oct 30 16:14 NaCl_import.cif
    +-rw-r--r-- 1 zjb energy    706 Oct 30 16:19 NaCl.vasp
    +-rw-r--r-- 1 zjb energy    706 Oct 31 21:02 POSCAR
    +-rw-r--r-- 1 zjb energy 404221 Oct 31 21:03 POTCAR
    +-rw-r--r-- 1 zjb energy    382 Oct 31 21:02 PRIMCELL.vasp
    +

    这样就生成了 POACARPOTCAR

    [zjb@op NaCl]$ cat POSCAR 
    +NaCl_import
    +1.0
    +        5.6199998856         0.0000000000         0.0000000000
    +        0.0000000000         5.6199998856         0.0000000000
    +        0.0000000000         0.0000000000         5.6199998856
    +   Na   Cl
    +    4    4
    +Direct
    +     0.000000000         0.000000000         0.000000000
    +     0.000000000         0.500000000         0.500000000
    +     0.500000000         0.000000000         0.500000000
    +     0.500000000         0.500000000         0.000000000
    +     0.500000000         0.500000000         0.500000000
    +     0.500000000         0.000000000         0.000000000
    +     0.000000000         0.500000000         0.000000000
    +     0.000000000         0.000000000         0.500000000
    +
    + + + diff --git a/dft-learning/pages/a33822/index.html b/dft-learning/pages/a33822/index.html new file mode 100644 index 00000000..688123b8 --- /dev/null +++ b/dft-learning/pages/a33822/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + linux 编译 gnuplot | 北辞 + + + + + +
    跳至主要內容

    linux 编译 gnuplot

    Northword小于 1 分钟Install

    使用默认 GCC 编译 gnuplot

    无需,学校已安装。

    cd /tmp
    +wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz
    +tar xzvf gnuplot-5.2.5.tar.gz 
    +cd gnuplot-5.2.5/
    +./configure --prefix=/public/home/zjb/app/gunplot/
    +make & make install
    +

    第五行等号后面是你的目标安装路径

    + + + diff --git a/dft-learning/pages/ae5253/index.html b/dft-learning/pages/ae5253/index.html new file mode 100644 index 00000000..c1642f87 --- /dev/null +++ b/dft-learning/pages/ae5253/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 作业:CO吸附在Au上建模 | 北辞 + + + + + +
    跳至主要內容

    作业:CO吸附在Au上建模

    Northword小于 1 分钟Materials-Studio

    作业:CO吸附在Au上建模

    任务:建立CO在Au 111 晶面的吸附模型

    步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。

    结果:

    Model of CO adsorption on Au
    Model of CO adsorption on Au
    + + + diff --git a/dft-learning/pages/b32235/index.html b/dft-learning/pages/b32235/index.html new file mode 100644 index 00000000..3f072d7c --- /dev/null +++ b/dft-learning/pages/b32235/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + VASP 的输出文件 | 北辞 + + + + + +
    跳至主要內容

    VASP 的输出文件

    Northword小于 1 分钟VASP

    VASP 的输出文件

    基本的输出文件:OUTCAR、OSZICAR、stdout;

    OUTCAR

    todo

    OSZICAR

    收敛速度与当前步的信息。

    其他

    LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。

    官网文档

    [Category: Output_Files - vaspwiki](https://www.vasp.at/wiki/index.php/Categoryopen in new window: Output_Files)

    + + + diff --git a/dft-learning/pages/b63e81/index.html b/dft-learning/pages/b63e81/index.html new file mode 100644 index 00000000..4fb466fa --- /dev/null +++ b/dft-learning/pages/b63e81/index.html @@ -0,0 +1,57 @@ + + + + + + + + + + 态密度分析 | 北辞 + + + + + +
    跳至主要內容

    态密度分析

    Northword大约 1 分钟VASP

    态密度分析

    态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。

    非自洽计算的基础上进行态密度分析。

    本页以计算 O2 的态密度为例。

    步骤

    本页操作在完成 O2 结构优化、自洽、非自洽 之后进行。在 3-nscf 文件夹中继续。

    计算完成后用 VTST Script 的脚本 split_dos 分离态密度:

    [zjb@op 3-nscf]$ split_dos
    +The OUTCAR exists, we use it to get the Fermi level,
    +the RWIGS tag and the number of spins.
    +Fermi level: -6.6846
    +Spin polarized calculation
    +LORBIT = 11
    +WARNING: not completely test for vasp.4.*
    +Use at your own risk. Please check results for consistency.
    +7 6006
    +0 7 6006
    +1 6008 12007
    +2 12009 18008
    +
    +[zjb@op 3-nscf]$ ls
    +CHG     CONTCAR  DOS1  DOSCAR    IBZKPT  KPOINTS  OUTCAR   PCDAT   POTCAR  REPORT  tmp.dat   vasp.pbs     WAVECAR
    +CHGCAR  DOS0     DOS2  EIGENVAL  INCAR   OSZICAR  out.log  POSCAR  PROCAR  stdout  tmp.dat2  vasprun.xml  XDATCAR
    +

    这一命令后得到了 DOS0DOS1DOS2 三个文件,DOS0 是总的态密度,DOS1 和 DOS2 分别是第 1 个 O 原子,第二个 O 原子的态密度。

    使用脚本画图:

    dosplot.pl DOS0
    +

    执行后生成了 dosplot.eps,下载,使用矢量图工具打开。

    dosplot.eps
    dosplot.eps

    也可以将 DOS0 回传,使用 Origin 画图。

    + + + diff --git a/dft-learning/pages/bbb6cc/index.html b/dft-learning/pages/bbb6cc/index.html new file mode 100644 index 00000000..969654e5 --- /dev/null +++ b/dft-learning/pages/bbb6cc/index.html @@ -0,0 +1,242 @@ + + + + + + + + + + VASP 计算电荷密度差 | 北辞 + + + + + +
    跳至主要內容

    VASP 计算电荷密度差

    Northword大约 6 分钟VASP

    VASP 计算电荷密度差

    文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。

    Δρ=ρABSCρABatom(1)Δρ=ρABρAρB(2)Δρ=ρABCρAρBρC(3) \Delta \rho = \rho_{AB_{SC}}-\rho_{AB_{atom}} \qquad (1)\\ \Delta \rho = \rho_{AB}-\rho_A-\rho_B \qquad (2)\\ \Delta \rho = \rho_{ABC}-\rho_{A}-\rho_{B}-\rho_{C} \qquad (3)

    以计算 O2O_2电荷密度差为例,记录如何获得 O2 的 Difference charge density。

    流程

    以 A-B 型为例

    • 对 AB 进行结构优化
    • 分别对 AB、A、B 分别静电自洽(不能结构优化)
      • FFT mesh 需要一致
      • LCHARG 需要打开
    • 求差(chgsun.pl CHGCAR_A CHGCAR_B;chgdiff.pl CHGCAR_AB CHGCAR_sum)

    电荷密度差分操作本可以在之前 O2 结构优化、自洽、非自洽 自洽之后进行,但是之前的自洽没有规定 FFT mesh,而电荷密度差分要求了,所以干脆从头算好了。

    目录结构

    详情
    [zjb@op O2_chg_diff]$ tree
    +.
    +├── O2             # 在此目录对O2分子进行结构优化,然后静电自洽
    +│   ├── CHG
    +│   ├── CHGCAR
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── A              # 对其中一个O进行静电自洽
    +│   ├── CHG
    +│   ├── CHGCAR
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── out.log
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── B              # 对另一个O进行静电自洽
    +│   ├── CHG
    +│   ├── CHGCAR
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── OSZICAR
    +│   ├── OUTCAR
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   ├── REPORT
    +│   ├── stdout
    +│   └── vasp.pbs
    +├── CHGCAR_diff   # 差分电荷密度
    +└── CHGCAR_sum    # 两个单独O加在一起的电荷密度
    +
    +3 directories, 62 files
    +

    步骤

    Step1:对 AB 进行结构优化 geo

    O2 目录中对 O2 进行结构优化

    :::: tabs

    ::: tab POSCAR

    [zjb@op O2]$ cat POSCAR:
    +O2
    +1
    +10 0 0
    +0 10 0
    +0 0 12
    +O
    +2
    +S
    +D
    +0.5 0.5 0.5   F F F
    +0.5 0.5 0.62  F F T
    +

    :::

    ::: tab INCAR

    [zjb@op O2]$ cat INCAR:
    +Global Parameters
    + ISTART =  1            (Read existing wavefunction; if there)
    + ISPIN =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .TRUE.        (Write WAVECAR or not)
    + LCHARG = .TRUE.        (Write CHGCAR or not)
    + ADDGRID= .TRUE.        (Increase grid; helps GGA convergence)
    + NGXF    = 150         (FFT grid mesh density for nice charge/potential plots)
    + NGYF    = 150         (FFT grid mesh density for nice charge/potential plots)
    + NGZF    = 180         (FFT grid mesh density for nice charge/potential plots)
    +
    +Electronic Relaxation
    +ISMEAR =  0            (Gaussian smearing; metals:1)
    +SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +NELM   =  60           (Max electronic SCF steps)
    +NELMIN =  4            (Min electronic SCF steps)
    +EDIFF  =  1E-06        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    +NSW    =  20          (Max electronic SCF steps)
    +IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    +ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    +EDIFFG = -2E-02        (Ionic convergence; eV/AA)
    +

    :::

    ::: tab CONTCAR

    [zjb@op O2]$ cat CONTCAR
    +O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     2
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.5000000000000000   F   F   F
    +  0.5000000000000000  0.5000000000000000  0.6028640220057100   F   F   T
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +

    :::

    ::::

    结构优化完成之后将 CONTCAR 作为新的 POSCAR 进行后续运算。

     [zjb@op O2]$ cp COUTCAR POSCAR
    +

    Step2:静电自洽

    提示

    三次静电自洽需要注意:

    • FFT mesh 需要一致
    • LCHARG 需要打开

    对 A-B 进行静电自洽 scf

    将上一步的 INCAR 修改,使其满足静电自洽的运行:

    NSW = 0
    +IBRION = -1
    +

    提交作业进行静电自洽。

    对 A、B 分别静电自洽

    将 A-B 静电自洽用的 INCAR、POSCAR、POTCAR、KPOINTS 复制出来,分别放在 A 和 B 目录中。

    [zjb@op O2]$ cp INCAR POSCAR POTCAR KPOINTS ../A/
    +[zjb@op O2]$ cp INCAR POSCAR POTCAR KPOINTS ../B/
    +

    在 A 目录的 POSCAR 中删除 B 部分对应的点,元素数量改一下,得到 A 部分的 POSCAR,提交作业静电自洽。

    在 B 目录的 POSCAR 中删除 A 部分对应的点,元素数量改一下,得到 B 部分的 POSCAR,提交作业静电自洽。

    [zjb@op O2_chg_diff]$ cat A/POSCAR 
    +O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     1
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.5000000000000000   F   F   F
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +
    +[zjb@op O2_chg_diff]$ cat B/POSCAR 
    +O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     1
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.6028640220057100   F   F   T
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +
    +







     


     













     


     


    Step3:求差

    求差也可以使用 VASPKIT 提供的功能。

    在主菜单选择 31) Charge & Spin Density,之后进入 314) Charge-Density Difference,在下一个界面提示输入 O2/CHGCAR A/CHGCAR B/CHGCAR

    ======================= File Options ============================
    + Input the Names of Charge/Potential Files with Space: 
    + (e.g., to get AB-A-B, type: ~/AB/CHGCAR ./A/CHGCAR ../B/CHGCAR)
    + 
    + ------------>>
    +O2/CHGCAR A/CHGCAR B/CHGCAR
    + 
    +  -->> (01) Reading Structural Parameters from O2/CHGCAR File...
    +  -->> (02) Reading Charge Density From O2/CHGCAR File...
    +  -->> (03) Reading Structural Parameters from A/CHGCAR File...
    +  -->> (04) Reading Charge Density From A/CHGCAR File...
    +  -->> (05) Reading Structural Parameters from B/CHGCAR File...
    +  -->> (06) Reading Charge Density From B/CHGCAR File...
    +  -->> (07) Written CHGDIFF.vasp File!
    + +---------------------------------------------------------------+
    + |                       * ACKNOWLEDGMENTS *                     |
    + | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU,  |
    + | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! |
    + +---------------------------------------------------------------+
    + |                          * CITATIONS *                        |
    + | We Would Appreciate if You Cite in Your Research with VASPKIT.|
    + | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- |
    + | and Post-Processing Program for VASP Code, arXiv:1908.08269.  |
    + +---------------------------------------------------------------+
    +[zjb@op O2_chg_diff]$ ls
    +A  B  CHGCAR_diff  CHGCAR_sum  CHGDIFF.vasp  O2
    +

    输出一个 CHGDIFF.vasp,即为所求,下载,VESTA 打开:

    CHGDIFF.vasp
    CHGDIFF.vasp

    其他

    求差的其他方法

    chgsum.pl

    #Usage
    +$ chgsum.pl <CHGCAR_A> <CHGCAR_B>  # output: CHGCAR_sum
    +
    +# This example
    + [zjb@op O2_chg_diff]$ chgsum.pl A/CHGCAR B/CHGCAR
    +

    作用为:

    ρ(CHGCAR_sum)=ρA+ρB \rho_{(CHGCAR\_sum)} = \rho_{A} + \rho_B

    运行后在 O2_chg_diff/ 下生成了一个 CHGCAR_sum 文件。

    chgdiff.pl

    # Usage
    +chgdiff.pl <CHGCAR_sum> <CHGCAR_AB>  # output: CHGCAR_diff
    +
    +# This example
    + [zjb@op O2_chg_diff]$ chgdiff.pl O2/CHGCAR CHGCAR_sum
    +

    注意是后面的减前面的:

    ρ(CHGCAR_diff)=ρCHGCAR_ABρCHGCAR_sum \rho_{(CHGCAR\_diff)} = \rho_{CHGCAR\_AB} - \rho_{CHGCAR\_sum}

    执行后在 O2_chg_diff/ 下生成了一个 CHGCAR_diff 文件,即为电荷密度差,因为

    Δρ=ρABρAρB=ρAB(ρA+ρB)=ρABρCHGCAR_sum \begin{aligned} \Delta \rho &= \rho_{AB} - \rho_A - \rho_B \\ &= \rho_{AB} - (\rho_A + \rho_B) \\ &=\rho_{AB} - \rho_{CHGCAR\_sum} \end{aligned}

    显示

    下载 CHGCAR_diff,使用 VESTA 显示:

    O2_chg_diff_VESTA
    O2_chg_diff_VESTA

    为什么 chgdiff.pl 是后减前?

    读取源码:

    #!/usr/bin/env perl
    +#;-*- Perl -*-
    +
    +@args = @ARGV;
    +@args == 2 || die "usage: chgdiff.pl <reference CHGCAR> <CHGCAR2>\n";
    +
    +open (IN1,$args[0]) || die ("Can't open file $!");
    +open (IN2,$args[1]) || die ("Can't open file $!");
    +open (OUT,">CHGCAR_diff");
    +
    +for ($i=0; $i<5; $i++) {
    +    $line1 = <IN1>;
    +    $line2 = <IN2>;
    +    $header1 .= $line1;
    +}
    +
    +...
    +
    +for ($i=0; $i<$psum1/5; $i++) {
    +    $line1 = <IN1>;
    +    $line1 =~ s/^\s+//;
    +    $line2 = <IN2>;
    +    $line2 =~ s/^\s+//;
    +    @line1 = split(/\s+/,$line1);
    +    @line2 = split(/\s+/,$line2);
    +    for ($j=0; $j<@line1; $j++) {
    +        $line1[$j] = $line2[$j]-$line1[$j];
    +    }
    +#    printf OUT " %18.11E %18.11E %18.11E %18.11E %18.11E\n",$line1[0],$line1[1],$line1[2],$line1[3],$line1[4];
    +    printf OUT " %18.11E" x @line1 . "\n", @line1;
    +}
    +
    +...
    +

    第 5 行:用法:chgdiff.pl <CHGCAR_1> <CHGCAR_2>.

    第 7-15 行:第一个参数 CHGCAR_1 里的每一行记为 line1,第二个参数 CHGCAR_2 里的每一行记为 line2.

    第 27 行,line2-line1,即 CHGCAR_2 - CHGCAR_1,即为后减前。

    chgdiff.pl 后少了原子

    由源码得,chgdiff.pl 保留的是 file1 的原子信息,所以如果 file1 只有部分原子就会缺。

    这个脚本我感觉是 bug,建议把上面第 27 行 line2-line1 改成 line1-line2 一劳永逸。

    + + + diff --git a/dft-learning/pages/c81f27/index.html b/dft-learning/pages/c81f27/index.html new file mode 100644 index 00000000..e30e0eec --- /dev/null +++ b/dft-learning/pages/c81f27/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 吸附能的计算 | 北辞 + + + + + +
    跳至主要內容

    吸附能的计算

    Northword大约 1 分钟VASP优化

    吸附能的计算

    Todo

    影响因素

    slab 模型在 Z 方向

    • slab 的厚度
    • 真空层厚度

    一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。

    slab 模型在 XY 方向

    • 表面大小:影响覆盖度,计算的工作量。
    • 吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。
    • 吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等

    初始构型获取

    1. 查数据库
    2. 查文献
    3. 自己估算:依据原子半径,两原子成键,键长小于两者之和。下图 😃
    4. 初算:用一个小模型,简单算一下,得到一个合理的键长。比如 O 吸附在 Cu,直接优化气相中 Cu-O 双原子分子的结构。Ex54 简单粗暴地获取初始构型(一)| Learn VASP The Hard Way (bigbrosci.com)open in new window
    image-20210223101158708
    image-20210223101158708

    Empirically measured atomic radius (wikipedia.org)open in new window

    + + + diff --git a/dft-learning/pages/d67596/index.html b/dft-learning/pages/d67596/index.html new file mode 100644 index 00000000..669d1e50 --- /dev/null +++ b/dft-learning/pages/d67596/index.html @@ -0,0 +1,177 @@ + + + + + + + + + + 结构优化、自洽、非自洽 | 北辞 + + + + + +
    跳至主要內容

    结构优化、自洽、非自洽

    Northword大约 4 分钟VASP

    结构优化、自洽、非自洽

    结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。

    静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。

    非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。

    本页对O2O_2进行结构优化、静电自洽、非静电自洽。

    目录结构

    .
    +├── 1-geo
    +│   ├── CONTCAR
    +│   ├── INCAR
    +│   ├── KPOINTS
    +│   ├── POSCAR
    +│   ├── POTCAR
    +│   └── vasp.pbs
    +├── 2-scf
    +│   ├── CHGCAR
    +│   ├── EIGENVAL
    +│   ├── INCAR
    +│   ├── KPOINTS -> ../1-geo/KPOINTS
    +│   ├── POSCAR -> ../1-geo/CONTCAR
    +│   ├── POTCAR -> ../1-geo/POTCAR
    +│   └── vasp.pbs
    +└── 3-nscf
    +    ├── CHGCAR    复制自../2-scf/CHGCAR
    +    ├── INCAR
    +    ├── KPOINTS
    +    ├── POSCAR -> ../2-scf/POSCAR
    +    ├── POTCAR -> ../2-scf/POTCAR
    +    └── vasp.pbs
    +    
    +只列出了输入文件和必要的输出文件。
    +

    步骤

    结构优化

    1-geo 文件夹中对结构进行结构优化。

    O2                                      
    +1     
    +10   0    0
    +0   10    0
    +0    0   12
    +O 
    +2
    +Selective dynamics
    +Direct
    +0.50  0.50  0.50   F   F   F
    +0.50  0.50  0.62   F   F   T
    +
    Global Parameters
    + ISTART =  0            (Read existing wavefunction; if there)
    + ISPIN  =  2           (Spin polarised DFT)
    + ICHARG =  2         (Non-self-consistent: GGA/LDA band structures)
    + LREAL  = .FALSE.          (Projection operators: automatic)
    + ENCUT  =  400        (Cut-off energy for plane wave basis set, in eV)
    + PREC   =  Normal       (Precision level)
    + LWAVE  = .FALSE.        (Write WAVECAR or not)
    + LCHARG = .FALSE.        (Write CHGCAR or not)
    + ADDGRID= .TRUE.        (Increase grid; helps GGA convergence)
    + NPAR   = 4           (Max is no. nodes; don't set for hybrids)
    +
    +Electronic Relaxation
    + ISMEAR =  0            (Gaussian smearing; metals:1)
    + SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    + NELM   =  60           (Max electronic SCF steps)
    + NELMIN =  4            (Min electronic SCF steps)
    + EDIFF  =  1E-06        (SCF energy convergence; in eV)
    +
    +Ionic Relaxation
    + NSW    =  30          (Max electronic SCF steps)
    + IBRION =  2            (Algorithm: 0-MD; 1-Quasi-New; 2-CG)
    + ISIF   =  2            (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
    + EDIFFG = -2E-02        (Ionic convergence; eV/AA)
    +
    KPT-Resolved Value to Generate K-Mesh: 0.000
    +0
    +Gamma
    +   1   1   1
    +0.0  0.0  0.0
    +

    KPOINTS 和 POTCAR 使用 vaspkit-103 生成

    提交计算,在 stdout 里看到 reached required accuracy - stopping structural energy minimisation 即为收敛。

    得到的 CONTCAR(优化后的结构)见下,CONTCAR 写入的默认是分数坐标,将其转换为笛卡尔坐标后见 CONTCAR_Caresian。

    O2                                      
    +   1.00000000000000     
    +    10.0000000000000000    0.0000000000000000    0.0000000000000000
    +     0.0000000000000000   10.0000000000000000    0.0000000000000000
    +     0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +     2
    +Selective dynamics
    +Direct
    +  0.5000000000000000  0.5000000000000000  0.5000000000000000   F   F   F
    +  0.5000000000000000  0.5000000000000000  0.6028684362988320   F   F   T
    + 
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +  0.00000000E+00  0.00000000E+00  0.00000000E+00
    +
     O2
    +   1.000
    +   10.0000000000000000    0.0000000000000000    0.0000000000000000
    +    0.0000000000000000   10.0000000000000000    0.0000000000000000
    +    0.0000000000000000    0.0000000000000000   12.0000000000000000
    +   O 
    +    2
    +Selective Dynamics
    +Cartesian
    +    5.0000000000000000    5.0000000000000000    6.0000000000000000    F  F  F
    +    5.0000000000000000    5.0000000000000000    7.2344212355859838    F  F  T
    +

    计算得到的键长为1.234421235585984 A˚\text{1.234421235585984 \AA},与实验值1.2075A˚\text{1.2075\AA}相近(误差 2.2%)。

    也可以将 CONTCAR 使用 VESTA 查看,键长为 1.23442 A˚\text{\AA}

    O2-geo-CONTCAR
    O2-geo-CONTCAR

    自洽计算

    2-scf 文件夹中对已优化的结构进行静电自洽。

    1. 将结构优化得到的结果复制过来(CONTCAR 变为 POSCAR、改 INCAR,POTCAR 和 KPOINTS 不改)
    2. 修改 INCAR 使其符合自洽计算的要求
    3. 提交作业
    [zjb@op 2-scf]$ ln -s ../1-geo/CONTCAR POSCAR
    +[zjb@op 2-scf]$ ln -s ../1-geo/POTCAR .
    +[zjb@op 2-scf]$ ln -s ../1-geo/KPOINTS .
    +[zjb@op 2-scf]$ cp ../1-geo/INCAR .
    +[zjb@op 2-scf]$ cp ../1-geo/vasp.pbs .
    +
    +# 修改INCAR
    + NSW    =  0
    + IBRION =  -1
    + LWAVE  = .TRUE.
    + LCHARG = .TRUE.
    +

    提交计算。

    [zjb@op 2-scf]$ cat EIGENVAL 
    +    2    2    1    2
    +  0.6000000E+03  0.1000000E-08  0.1000000E-08  0.1200000E-08  0.5000000E-15
    +  1.000000000000000E-004
    +  CAR 
    + unknown system                          
    +     12      1     12
    + 
    +  0.0000000E+00  0.0000000E+00  0.0000000E+00  0.1000000E+01
    +    1      -32.479163    -31.253398   1.000000   1.000000
    +    2      -20.620813    -18.824373   1.000000   1.000000
    +    3      -13.381535    -12.454501   1.000000   1.000000
    +    4      -13.228318    -11.385151   1.000000   1.000000
    +    5      -13.228318    -11.385151   1.000000   1.000000
    +    6       -6.915025     -4.642110   1.000000   0.000000
    +    7       -6.915024     -4.642110   1.000000   0.000000
    +    8       -0.315761     -0.201192   0.000000   0.000000
    +    9        0.533238      0.741194   0.000000   0.000000
    +   10        0.791404      0.862512   0.000000   0.000000
    +   11        1.120056      1.246772   0.000000   0.000000
    +   12        1.120056      1.246772   0.000000   0.000000
    +

    非自洽计算

    3-nscf 文件夹中进行非自洽计算。

    1. 将自洽计算的 POSCAR(CONTCAR 也行,因为 scf 不改变结构)、POTCAR、INCAR、KPOINTS、CHGCAR 复制过来。
    2. 修改 INCAR 和 KPOINTS。
    3. 提交计算。
    [zjb@op 3-nscf]$ ln -s ../2-scf/POSCAR ../2-scf/POTCAR .
    +[zjb@op 3-nscf]$ cp ../2-scf/INCAR ../2-scf/KPOINTS ../2-scf/CHGCAR ../2-scf/vasp.pbs .
    +

    INCAR 中修改以下

    改:
    + ISTART =  1            (Read existing wavefunction; if there)
    + ICHARG =  11           (Non-self-consistent: GGA/LDA band structures)
    + ISMEAR =  0            (Gaussian smearing; metals:1)
    + SIGMA  =  0.05         (Smearing value in eV; metals:0.2)
    +
    +删:
    +# EDIFFG = -2E-02       (Ionic convergence; eV/AA)
    +
    +增:
    +DOS
    + NEDOS  = 6000
    + LORBIT = 11 
    +

    KPOINTS 重新生成,但是这次我没动 K 点(主要是不知道应该改成啥)。

    提交计算。

    参考

    VASP 结构优化、静态自洽、非自洽计算open in new window

    vasp 计算流程-结构优化open in new window

    【vasp 笔记】结构优化(结构弛豫)open in new window

    + + + diff --git a/dft-learning/pages/df30ef/index.html b/dft-learning/pages/df30ef/index.html new file mode 100644 index 00000000..0fd9bd0a --- /dev/null +++ b/dft-learning/pages/df30ef/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + VASP | 北辞 + + + + + +
    跳至主要內容

    VASP

    Northword大约 1 分钟VASP

    VASP

    VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。

    vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。

    因此我们需要区分开 VASPVASPKITVASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。

    VASP 官网:https://www.vasp.at/open in new window

    VASPKIT 官网:https://vaspkit.com/index.htmlopen in new window

    官网已经详细的列出了 VASPKIT 如何配置安装,如何开始使用。由于课程需要,实际使用与官方文档的描述有一丁点区别,本文档仅对本人使用过程做记录。


    01- 输入输出文件

    02- 结构优化与静电自洽

    03- 电子结构

    • 自洽场理论、能带理论、态密度、电荷密度;
    • 自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;

    04- 反应路径与分子动力学

    • NEB 计算方法与操作实践;
    • 系综理论,控温方法,输入文件准备,计算过程,结果分析。
    + + + diff --git a/dft-learning/pages/e8ba48/index.html b/dft-learning/pages/e8ba48/index.html new file mode 100644 index 00000000..fada28b6 --- /dev/null +++ b/dft-learning/pages/e8ba48/index.html @@ -0,0 +1,155 @@ + + + + + + + + + + 编译 VASP with VTST | 北辞 + + + + + +
    跳至主要內容

    编译 VASP with VTST

    Northword大约 3 分钟Install安装

    编译 VASP with VTST

    准备源码

    VASP 源码目录结构

    $ more README
    +           vasp.X.X.X (root directory)
    +                      |
    +   ---------------------------------------
    +  |              |          |             |
    + arch           bin       build          src
    +                                          |
    +                                     ----------
    +                                    |          |
    +                                   lib       CUDA
    +

    说明:

    • vasp.X.X.X:解压缩后的根目录
    • arch:针对不同架构的 Makefile 模板,如里面含有 makefile.include.linux_intel
    • bin:编译后的可执行程序文件
    • build:编译时自动复制 src 目录内源码后执行编译的目录
    • src:源码目录
    • lib:库目录,对应以前的 vasp.lib 目录
    • CUDA:GPU CUDA 代码目录

    VTSTCode

    下载并解压缩 VTSTCode

    VTSTCode 下载: Download — Transition State Tools for VASP (utexas.edu)open in new window

    目录结构:

    [scujh_zjb@scu vtstcode-184]$ tree
    +.
    +├── bbm.F
    +├── bfgs.F
    +├── cg.F
    +├── chain.F
    +├── dimer.F
    +├── dynamic.F
    +├── dynmat.F
    +├── fire.F
    +├── instanton.F
    +├── lanczos.F
    +├── lbfgs.F
    +├── neb.F
    +├── opt.F
    +├── qm.F
    +├── sd.F
    +├── vtstcode5
    +│   ├── bbm.F
    +│   ├── bdr_changes
    +│   ├── bfgs.F
    +│   ├── cg.F
    +│   ├── chain.F
    +│   ├── dimer.F
    +│   ├── dynamic.F
    +│   ├── dynmat.F
    +│   ├── fire.F
    +│   ├── instanton.F
    +│   ├── lanczos.F
    +│   ├── lbfgs.F
    +│   ├── neb.F
    +│   ├── opt.F
    +│   ├── qm.F
    +│   ├── sd.F
    +│   ├── vasp-5.3.2-main.patch
    +│   ├── vasp-5.3.2-mpmd.patch
    +│   ├── vasp-5.4.1-mpmd.patch
    +│   └── vasp-5.4.4-mpmd.patch
    +└── vtstcode6.1
    +├── bbm.F
    +├── bfgs.F
    +├── cg.F
    +├── chain.F
    +├── dimer.F
    +├── dynamic.F
    +├── dynmat.F
    +├── fire.F
    +├── instanton.F
    +├── lanczos.F
    +├── lbfgs.F
    +├── neb.F
    +├── opt.F
    +├── qm.F
    +└── sd.F
    +
    +2 directories, 50 files
    +
    +

    复制 VTSTCode 到 VASP/src

    需要注意的是,应把对应于 VASP 版本的 VTSTCode 复制到 scr 目录,例如 vasp 5.4.4,则应复制 vtstcode5 子文件夹中的内容。

    For vasp.6.2.1 you will need vtstcode 4.1 (revision 182). A version of the vtstcode that will work with vasp.6.1.x - vasp.6.2.0 has been saved in the vtstcode6.1 directory.

    修改 src/main.F

    将(第 3233 行)

    CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
    +     LATT_CUR%A,LATT_CUR%B,IO%IU6)
    +

    修改为

    CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, &
    +      TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6)
    +!     LATT_CUR%A,LATT_CUR%B,IO%IU6)
    +

    如果是 vasp 6.2 及以上,额外修改

    IF (LCHAIN) CALL chain_init( T_INFO, IO)
    +

    CALL chain_init( T_INFO, IO)
    +

    参考: Installation — Transition State Tools for VASP (utexas.edu)open in new window

    修改编译配置

    修改 src/.objects,在 chain.o 前(第 67 行)添加如下内容:

        bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \
    +    fire.o lanczos.o neb.o qm.o opt.o \
    +

    注意:\ 后不得有空格

    准备编译环境

    检查编译环境

    which icc ifort icpc mpiifort mpirun
    +

    如果正常输出 5 个路径,则编译环境已配置好,可以跳过下一步。如果没有,进入下一步。

    配置编译环境

    一般的,编译 vasp+vtst 的,通常都已经编译了 vasp,那意味着编译环境本身是已经安装好的,可以通过如下重新应用编译环境的变量,具体的路径可以自行在机器上查找,或参考 vasp 的 pbs 文件中提供的路径。

    # source <intel_compiler_dir>/bin/compilervars.sh intel64
    +# source <intel_mkl_dir>/bin/mklvars.sh intel64
    +# source <intel_mpi_dir>/intel64/bin/mpivars.sh intel64
    +

    部分机器使用 module 管理环境变量的,可以通过 module avail 查看所有可用包,找到 intel/xxx 相关的并 module load <name>。 配置完成后,返回上一步检查是否成功。 这里顺便检查一下有无已编译的 fftw 文件:libfftw3_mpi.a

    修改 makefile.include 文件

    arch/makefile.include.linux_intel 做模板进行修改

    cp arch/makefile.include.linux_intel makefile.include
    +

    makefile.include 文件进行如下修改,14 行开始编译器配置改为

    # line 14 编译器配置
    +FC         = mpiifort
    +FCL        = mpiifort -mkl
    +
    +# line 23 数学库配置
    +MKLROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl
    +MKL_PATH   = $(MKLROOT)/lib/intel64
    +BLAS       =
    +LAPACK     =
    +BLACS      =-L$(MKL_PATH) -lmkl_blacs_intelmpi_lp64
    +SCALAPACK  = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS)
    +
    +# line 30 fftw 配置 (其中/opt/fftw 是我编译后安装的目录)
    +OBJECTS    = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \
    +           /opt/fftw/lib/libfftw3_mpi.a
    +INCS       =-I/opt/fftw/include
    +

    安装

    编译

    make
    +

    添加环境变量

    略。

    错误解决

    如下报错系 vtstcode 版本与 vasp 不一致导致:

    mpiifort -free -names lowercase -assume byterecl -w -O2 -xHOST -I/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include/fftw -c instanton.f90  
    +instanton.F(57): error #6580: Name in only-list does not exist or is not accessible. [RANE]  
    +USE random_seeded, ONLY: RANE  
    +-------------------------------^  
    +instanton.F(208): error #6580: Name in only-list does not exist or is not accessible. [RANE]  
    +USE random_seeded, ONLY: RANE  
    +-------------------------------^  
    +instanton.F(433): error #6404: This name does not have a type, and must have an explicit type. [RANE]  
    +w(i,j,im)=rane()-0.5_q  
    +----------------------------^  
    +compilation aborted for instanton.f90 (code 1)  
    +make[2]: *** [instanton.o] Error 1  
    +make[2]: Leaving directory `/root/chem/vasp.5.4.4/build/std'  
    +cp: cannot stat ‘vasp’: No such file or directory  
    +make[1]: *** [all] Error 1  
    +make[1]: Leaving directory `/root/chem/vasp.5.4.4/build/std'  
    +make: *** [std] Error 2
    +

    解决方案:假设使用的 vasp 5.4.4,则复制 vtstcode 时,应使用 vtst-xxx/vtstcode5 下的。参见: Problem compiling instanton.F - UT theoretical chemistry code forum (utexas.edu)open in new window

    参考文献

    安装过程: VASP 5.4.1+VTST 编译安装 (ustc.edu.cn)open in new window

    + + + diff --git a/dft-learning/pages/ea401e/index.html b/dft-learning/pages/ea401e/index.html new file mode 100644 index 00000000..62b81d09 --- /dev/null +++ b/dft-learning/pages/ea401e/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + 为 linux 非 ROOT 用户安装 lrzsz | 北辞 + + + + + +
    跳至主要內容

    为 linux 非 ROOT 用户安装 lrzsz

    Northword小于 1 分钟Install

    为 linux 非 ROOT 用户安装 lrzsz

    lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rzsz 命令进行上传和下载。

    如果拥有 ROOT 权限,可以直接执行下述代码安装:

    yum -y install lrzsz
    +

    而如果没有 ROOT 权限,是无法写入的,就需要我们自行编译。下面是普通用户安装的办法。

    下载并解压

    cd /tmp
    +wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
    +tar -zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20
    +

    配置安装路径

    # 在等号后写入目标安装路径
    +./configure --prefix=/public/home/zjb/app/lrzsz
    +# 路径写自己的
    +

    编译安装

    make && make install
    +

    配置当前用户下的系统命令

    $ cd /public/home/zjb/app/lrzsz
    +$ mkdir bash-command $ cd bash-command
    +$ ln -s /public/home/zjb/app/lrzsz/bin/lrz rz 
    +$ ln -s /public/home/zjb/app/lrzsz/bin/lsz sz
    +# 上面几个路径需要替换成自己的
    +

    配置当前用户的环境变量

    $ cd ~
    +$ vi .bashrc
    +# 在PATH列表中添加如下:路径自己的
    +export PATH="/public/home/zjb/app/lrzsz/bash-command":$PATH
    +$ source .bashrc
    +

    使用方法

    linux-lrzsz-usage

    + + + diff --git a/dft-learning/pages/fa5420/index.html b/dft-learning/pages/fa5420/index.html new file mode 100644 index 00000000..be689ab0 --- /dev/null +++ b/dft-learning/pages/fa5420/index.html @@ -0,0 +1,66 @@ + + + + + + + + + + numpy 在 win2004 及以上报错 | 北辞 + + + + + +
    跳至主要內容

    numpy 在 win2004 及以上报错

    Northword大约 1 分钟Others

    在 Windows 20H2 上运行 ASE 报错

     ase --version
    + ** On entry to DGEBAL parameter number  3 had an illegal value
    + ** On entry to DGEHRD  parameter number  2 had an illegal value
    + ** On entry to DORGHR DORGQR parameter number  2 had an illegal value
    + ** On entry to DHSEQR parameter number  4 had an illegal value
    +Traceback (most recent call last):
    +  File "c:\users\northword\appdata\local\programs\python\python39\lib\runpy.py", line 197, in _run_module_as_main
    +    return _run_code(code, main_globals, None,
    +  File "c:\users\northword\appdata\local\programs\python\python39\lib\runpy.py", line 87, in _run_code
    +    exec(code, run_globals)
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\Scripts\ase.exe\__main__.py", line 4, in <module>
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\site-packages\ase\__init__.py", line 8, in <module>
    +    import numpy as np
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\site-packages\numpy\__init__.py", line 305, in <module>
    +    _win_os_check()
    +  File "C:\Users\Northword\AppData\Roaming\Python\Python39\site-packages\numpy\__init__.py", line 302, in _win_os_check
    +    raise RuntimeError(msg.format(__file__)) from None
    +RuntimeError: The current Numpy installation ('C:\\Users\\Northword\\AppData\\Roaming\\Python\\Python39\\site-packages\\numpy\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86
    +

    Python 版本如下

    Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
    +

    Windows 版本如下:

    版本         Windows 10 家庭中文版
    +版本号        20H2
    +安装日期      2020/11/2
    +操作系统版本   19042.610
    +序列号        
    +体验 Windows Feature Experience Pack 120.2212.31.0
    +

    搜索到一个类似问题的,是因为 numpywindows 20H2 的关系(反正总是 Windows 的锅)。

    使用如下将 numpy 降级即可。

    pip install numpy==1.19.3
    +

    引用地址:https://blog.csdn.net/yangtzech/article/details/109494653open in new windowhttps://tinyurl.com/y3dm3h86open in new window

    + + + diff --git a/dft-learning/pages/fce84f/index.html b/dft-learning/pages/fce84f/index.html new file mode 100644 index 00000000..c096193f --- /dev/null +++ b/dft-learning/pages/fce84f/index.html @@ -0,0 +1,121 @@ + + + + + + + + + + VASPKIT 的配置 | 北辞 + + + + + +
    跳至主要內容

    VASPKIT 的配置

    Northword大约 4 分钟Install

    VASPKIT 的配置

    推荐视频 VASPKIT 功能介绍,解放你的双手open in new window


    我们预计将 VASPKIT 安装在 ~/app/ 下,在用户目录下新建一个 app 文件夹并进入:

    cd ~
    +mkdir app
    +cd app
    +

    下载

    你可以将其下载到自己的电脑上后再上传到服务器,也可以直接在服务器上下载。以下两种下载方式二选一即可。

    方式一(Recommend)

    # VASPKIT软件的包
    +$ wget https://nchc.dl.sourceforge.net/project/vaspkit/Binaries/vaspkit.1.2.1.linux.x64.tar.gz
    +# 赝势文件的包 自行下载上传,链接二选一,文件是同一个,包含 PBE 和 PWA 两种赝势,大陆网络推荐 gitee 。
    +# https://github.com/northword/dft-learning/blob/7b46bcb3e2464c4e6ef33415d3bbe491a0a8198f/app/pot.tgz
    +# https://gitee.com/northword/dft-learning/blob/gitbook/app/pot.tgz
    +

    下载成功即如图:执行成功

    方式二

    官方下载地址:https://sourceforge.net/projects/vaspkit/files/Binaries/open in new window

    下载后使用 FTP 上传到服务器。

    解压缩

    tar -xzvf vaspkit.1.2.1.linux.x64.tar.gz 
    +tar -xzvf pot.tgz
    +rm vaspkit.1.2.1.linux.x64.tar.gz pot.tar vtstscripts.tar
    +# 注意如果用的链接不同,文件名可能不同,自行变通。善用按Tab补全。
    +

    tar 命令用法见 tar

    配置 VASPKIT 程序的环境变量

    首先配置 VASPKIT 软件的变量。将软件自带的环境变量模板文件复制到用户目录,并编辑

    cp -f how_to_set_environment_variable ~/.vaspkit
    +vi ~/.vaspkit
    +

    打开后如下:

    # cp how_to_set_environment_variable ~/.vaspkit and modify the ~/.vaspkit file based on your settings!
    +VASP5                         .TRUE.                         # .TRUE. or .FALSE.; Set .FALSE. if you are using vasp.4.x
    +LDA_PATH                      ~/POTCAR/LDA                   #  Path of LDA potential.
    +PBE_PATH                      ~/POTCAR/PBE                   #  Path of PBE potential.
    +GGA_PATH                      ~/POTCAR/GGA                   #  Path of PW91 potential.
    +POTCAR_TYPE                    PBE                           #  PBE, PW91 or LDA; Set PBE if you want to make PBE-POTCAR file
    +GW_POTCAR                     .FALSE.                        # .TRUE. or .FALSE.; For example, H_GW, O_GW will be chose when POTCAR_GW = .TRUE.
    +RECOMMENDED_POTCAR            .TRUE.                         # .TRUE. or .FALSE.; The recommended PAW potential will be chose when RECOMMENDED_POTCAR = .TRUE.
    +SET_FERMI_ENERGY_ZERO         .TRUE.                         # .TRUE. or .FALSE.; The Fermi Energy will be set to zero eV when SET_FERMI_ENERGY_ZERO = .TRUE.
    +MINI_INCAR                    .FALSE.                        # .TRUE. or .FALSE.; A simplified INCAR will be written when MINI_INCAR = .TRUE.
    +USER_DEFINED_INCAR            .FALSE.                        # .TRUE. or .FALSE.; whether to use embedded INCAR templates or user defined INCAR templates
    +WRITE_SELECTIVE_DYNAMICS      .FALSE.                        # .TRUE. or .FALSE.; whether the selective dymanics set will be forced to write when SET_SELECTIVE_DYNAMICS_MODE = .FALSE.
    +PYTHON_BIN                     ~/anaconda3/bin/python3       #  Python executable program with its installation path. I recommend you install anaconda package for Python data science
    +PLOT_MATPLOTLIB               .FALSE.                        # .TRUE. or .FALSE.; Set .TRUE. if you want to generate Graphs. (Matplotlib and Numpy packages MUST be embedded in Python)
    +VASPKIT_UTILITIES_PATH        ~/vaspkit/utilities            #  IF ADVANCED_USER is .TRUE., set VASPKIT_UTILITIES_PATH like ~/vaspkit.0.72/utilities in order to use scripts in it.
    +ADVANCED_USER                 .TRUE.                         # .TRUE. or .FALSE.; Please fill in your settings in the block 'USER_DEFINED' if you want vaspkit to integrate your own scripts in the 'UTILITIES' file.
    +SET_INCAR_WRITE_MODE           OVERRIDE                      #  OVERRIDE, APPEND, BACK-UP-OLD,BACK-UP-NEW;  "Customize INCAR File"  whether to override existing INCAR/appending existing INCAR/backup existing INCAR to INCAR.old && write into INCAR/write into INCAR.new
    +PHS_CORRECTION                .FALSE.                        # .TRUE. or .FALSE.; whether to make PHS correction during linear optical calculations. More details on this correction are given in Comput. Mater. Sci. 172 (2020) 109315.
    +
    +# Reset the default values of variables in here
    +SYMPREC                        1E-5                          # Distance tolerance in Cartesian coordinates to find crystal symmetry (default value: 1E-5)
    +EMIN                          -20.0                          # Minimum energy for evaluation of DOS (default value: -20.0 eV)
    +EMAX                           20.0                          # Maximum energy for evaluation of DOS (default value:  20.0 eV)
    +NEDOS                          2001                          # Number of grid points in DOS (default value: 2001)
    +GAMMA_CENTERED                .TRUE.                         # .TRUE. or .FALSE.; (default value: .TRUE.)
    +VACUUM_THICKNESS               15.0                          # The thickness of vacuum to build slab or 2D materials (default value: 10 angstrom)
    +CENTER_SLAB                   .TRUE.                         # Center the slab in the z direction; (default value: .TRUE.)
    +


     
     























    通常需要修改的是 3、4 行,将其修改为你的赝势文件的路径,按照本文档操作下来的,应该修改为:

    LDA_PATH                      ~/app/pot_database/LDA         #  Path of LDA potential.
    +PBE_PATH                      ~/app/pot_database/PBE         #  Path of PBE potential.
    +

    vaspkit 关键字加入系统环境变量

    接下来,要把 vaspkit 这个关键词添加到系统的环境变量里。由于新版本 (version>0.73) 给了方便的配置脚本,我们直接运行,

    bash setup.sh
    +source ~/.bashrc
    +

    其中第一行作用为将 export PATH=[你的 VASPKIT 目录]/bin/:$PATH 添加到了 ~/.bashrc,第二行作用为使环境变量立即生效。

    当然,也可以去 vi ~/.bashrc,将路径添加到 PATH。

    至此,环境变量配置完成,我们可以通过 vaspkit 命令来启动它。

    [zjb@op backup]$ vaspkit
    + 
    +            \\\///         
    +           / _  _ \       Hey, you must know what you are doing.  
    +         (| (.)(.) |)     Otherwise you might get wrong results!  
    + +-----.OOOo--()--oOOO.------------------------------------------+
    + |             VASPKIT Version: 1.12 (01 Mar. 2020)              |
    + |        Core Developer: Vei WANG (wangvei@icloud.com)          |
    + |     Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG      |
    + |    Please send Bugs and Suggestions to vaspkit@gmail.com      |
    + +-----.oooO-----------------------------------------------------+
    +        (   )   Oooo.     
    +         \ (    (   )     
    +          \_)    ) /      
    +                (_/       
    + ===================== Structural Options ========================
    + 1)  VASP Input Files Generator    2)  Elastic-Properties         
    + 3)  K-Path Generator              4)  Structure Editor           
    + 5)  Catalysis-ElectroChem Kit     6)  Symmetry Search            
    + 
    + ===================== Electronic Options ========================
    + 11) Density-of-States             21) DFT Band-Structure         
    + 23) 3D Band-Structure             25) Hybrid-DFT Band-Structure  
    + 26) Fermi-Surface                 28) Band-Structure Unfolding   
    + 
    + =========== Charge & Potential & Wavefunction Options ===========
    + 31) Charge & Spin Density         42) Potential-Related          
    + 51) Wave-Function Analysis  
    + ====================== Misc Utilities ===========================
    + 71) Optical-Properties            72) Molecular-Dynamics Kit 
    + 73) VASP2other Interface          74) USER interface
    + 91) Semiconductor Calculator      92) 2D-Materials Kit       
    +                                                                  
    + 0)  Quit                                                         
    + ------------>>
    +
    +
    + + + diff --git a/dft-learning/pages/index.html b/dft-learning/pages/index.html new file mode 100644 index 00000000..9e6348da --- /dev/null +++ b/dft-learning/pages/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Pages | 北辞 + + + + + + + + + diff --git a/dft-learning/pages/install/index.html b/dft-learning/pages/install/index.html new file mode 100644 index 00000000..2eef3c82 --- /dev/null +++ b/dft-learning/pages/install/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 软件安装 | 北辞 + + + + + +
    跳至主要內容

    软件安装

    Northword小于 1 分钟

    软件安装

    + + + diff --git a/dft-learning/pages/linux/index.html b/dft-learning/pages/linux/index.html new file mode 100644 index 00000000..24436e6b --- /dev/null +++ b/dft-learning/pages/linux/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Linux 基础 | 北辞 + + + + + +
    跳至主要內容

    Linux 基础

    Northword小于 1 分钟

    Linux 基础

    Linux 基础应参考 Linux 笔记

    完成计算至少应了解的内容有以下:

    • 通过 SSH 客户端登录集群
    • Linux 常用的命令,上笔记命令页最上表格。
    • vim 编辑器使用
    • PBS 作业管理系统的使用
    + + + diff --git a/dft-learning/pages/vasp-chg/index.html b/dft-learning/pages/vasp-chg/index.html new file mode 100644 index 00000000..5f0b7acd --- /dev/null +++ b/dft-learning/pages/vasp-chg/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 电子结构 | 北辞 + + + + + +
    跳至主要內容

    电子结构

    Northword小于 1 分钟

    电子结构

    + + + diff --git a/dft-learning/pages/vasp-error/index.html b/dft-learning/pages/vasp-error/index.html new file mode 100644 index 00000000..b1b2c70c --- /dev/null +++ b/dft-learning/pages/vasp-error/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 故障排除 | 北辞 + + + + + +
    跳至主要內容

    故障排除

    Northword小于 1 分钟

    故障排除

    + + + diff --git a/dft-learning/pages/vasp-files/index.html b/dft-learning/pages/vasp-files/index.html new file mode 100644 index 00000000..24982716 --- /dev/null +++ b/dft-learning/pages/vasp-files/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + VASP 输入输出文件 | 北辞 + + + + + +
    跳至主要內容

    VASP 输入输出文件

    Northword小于 1 分钟

    VASP 输入输出文件

    + + + diff --git a/dft-learning/pages/vasp-md/index.html b/dft-learning/pages/vasp-md/index.html new file mode 100644 index 00000000..620efb8a --- /dev/null +++ b/dft-learning/pages/vasp-md/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 分子动力学 | 北辞 + + + + + +
    跳至主要內容

    分子动力学

    Northword小于 1 分钟

    分子动力学

    + + + diff --git a/dft-learning/pages/vasp-neb/index.html b/dft-learning/pages/vasp-neb/index.html new file mode 100644 index 00000000..6903922e --- /dev/null +++ b/dft-learning/pages/vasp-neb/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 反应路径 | 北辞 + + + + + +
    跳至主要內容

    反应路径

    Northword小于 1 分钟

    反应路径

    + + + diff --git a/dft-learning/pages/vasp-opt/index.html b/dft-learning/pages/vasp-opt/index.html new file mode 100644 index 00000000..86c2cdf0 --- /dev/null +++ b/dft-learning/pages/vasp-opt/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 结构优化 | 北辞 + + + + + +
    跳至主要內容

    结构优化

    Northword小于 1 分钟

    结构优化

    + + + diff --git a/dft-learning/pages/vasp-others/index.html b/dft-learning/pages/vasp-others/index.html new file mode 100644 index 00000000..bfd47880 --- /dev/null +++ b/dft-learning/pages/vasp-others/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 其他 | 北辞 + + + + + +
    跳至主要內容

    其他

    Northword小于 1 分钟

    其他

    + + + diff --git a/dft-learning/vasp/error/index.html b/dft-learning/vasp/error/index.html new file mode 100644 index 00000000..bc3a7758 --- /dev/null +++ b/dft-learning/vasp/error/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + VASP 运行中的错误 | 北辞 + + + + + +
    跳至主要內容

    VASP 运行中的错误

    Northword小于 1 分钟

    VASP 运行中的错误

    Error EDDDAV: Call to ZHEGV failed. Returncode = xx

    这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。

    参考:Re: on solving "Error EDDDAV: Call to ZHEGV failed. Returncode = xx" (vasp.at)open in new window

    forrtl: severe (174): SIGSEGV, segmentation fault occurred

    分段错误,疑似是系统堆栈限制过小导致,使用 ulimit -s unlimited 解决,但这只能解决当前 shell 的 mpirun,不能解决下次登录 shell 运行 mpirun 以及 PBS 调度计算节点的堆栈大小。

    参考 PBS 解除堆栈大小限制 解决。

    + + + diff --git a/dft-learning/vasp/index.html b/dft-learning/vasp/index.html new file mode 100644 index 00000000..dd1c1fdd --- /dev/null +++ b/dft-learning/vasp/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Vasp | 北辞 + + + + + + + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..08fdc8cc --- /dev/null +++ b/docs/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 文档 | 北辞 + + + + + + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..1be2663b Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 00000000..8000644d --- /dev/null +++ b/index.html @@ -0,0 +1,188 @@ + + + + + + + + + + 首页 | 北辞 + + + + + +
    跳至主要內容

    北辞

    北辞の窝 ✨

    VASP 运行中的错误

    VASP 运行中的错误

    +

    Error EDDDAV: Call to ZHEGV failed. Returncode = xx

    +

    这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。

    +

    参考:Re: on solving "Error EDDDAV: Call to ZHEGV failed. Returncode = xx" (vasp.at)


    Northword小于 1 分钟
    Openmpi

    Openmpi

    +

    各种乱七八糟的报错

    +
    libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4
    +--------------------------------------------------------------------------
    +Failed to create a queue pair (QP):
    +
    +Hostname: compute-0-9
    +Requested max number of outstanding WRs in the SQ:                1
    +Requested max number of outstanding WRs in the RQ:                2
    +Requested max number of SGEs in a WR in the SQ:                   511
    +Requested max number of SGEs in a WR in the RQ:                   511
    +Requested max number of data that can be posted inline to the SQ: 0
    +Error:    File exists
    +
    +Check requested attributes.
    +--------------------------------------------------------------------------
    +--------------------------------------------------------------------------
    +Open MPI has detected that there are UD-capable Verbs devices on your
    +system, but none of them were able to be setup properly.  This may
    +indicate a problem on this system.
    +
    +You job will continue, but Open MPI will ignore the "ud" oob component
    +in this run.
    +
    +Hostname: compute-0-9
    +--------------------------------------------------------------------------
    +

    Northword小于 1 分钟
    Office 安装

    Office 安装

    +

    使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。

    +

    下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。

    +

    OTP 下载

    +

    下载 | Office Tool Plus 官方网站 (landian.vip)


    Northword小于 1 分钟
    X 射线吸收谱

    X 射线吸收谱

    +

    download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)

    +

    撰文:LY & CWX   编辑:DJ

    +

    前言:

    +

    随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。


    Northword大约 6 分钟
    pip 报错

    pip 报错

    +

    找不到指定文件

    +

    安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。

    +

    课题组一个同学安装 ase 时遇到以下报错,

    +
    C:\Users\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple
    +Defaulting to user installation because normal site-packages is not writeable
    +Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
    +Collecting ase
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB)
    +Collecting matplotlib>=3.1.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB)
    +Collecting numpy>=1.15.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB)
    +Collecting scipy>=1.1.0
    +  Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB)
    +  Installing build dependencies ... done
    +  Getting requirements to build wheel ... error
    +  error: subprocess-exited-with-error
    +
    +  × Getting requirements to build wheel did not run successfully.
    +  │ exit code: 1
    +  ╰─> [55 lines of output]
    +      The Meson build system
    +      Version: 0.62.2
    +      Source dir: C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd
    +      Build dir: C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build
    +      Build type: native build
    +      Project name: SciPy
    +      Project version: 1.9.1
    +      WARNING: Failed to activate VS environment: Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe
    +
    +      ..\..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']]
    +      The following exception(s) were encountered:
    +      Running "icl " gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "cl /?" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "cc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "gcc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "clang --version" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "clang-cl /?" gave "[WinError 2] 系统找不到指定的文件。"
    +      Running "pgcc --version" gave "[WinError 2] 系统找不到指定的文件。"
    +
    +      A full log can be found at C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build\meson-logs\meson-log.txt
    +      + meson setup --native-file=C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\Program Files\Python311 C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\Users\admin\AppData\Local\Temp\pip-install-hnc68765\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\.mesonpy-iocfb37s\build
    +      Traceback (most recent call last):
    +        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 363, in <module>
    +          main()
    +        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 345, in main
    +          json_out['return_val'] = hook(**hook_input['kwargs'])
    +                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Program Files\Python311\Lib\site-packages\pip\_vendor\pep517\in_process\_in_process.py", line 130, in get_requires_for_build_wheel
    +          return hook(config_settings)
    +                 ^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 923, in get_requires_for_build_wheel
    +          with _project(config_settings) as project:
    +        File "C:\Program Files\Python311\Lib\contextlib.py", line 137, in __enter__
    +          return next(self.gen)
    +                 ^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 902, in _project
    +          with Project.with_temp_working_dir(
    +        File "C:\Program Files\Python311\Lib\contextlib.py", line 137, in __enter__
    +          return next(self.gen)
    +                 ^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 547, in with_temp_working_dir
    +          yield cls(source_dir, tmpdir, build_dir)
    +                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 463, in __init__
    +          self._configure(reconfigure=bool(build_dir) and not native_file_mismatch)
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 494, in _configure
    +          self._meson(
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 477, in _meson
    +          return self._proc('meson', *args)
    +                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
    +        File "C:\Users\admin\AppData\Local\Temp\pip-build-env-s4svfkf_\overlay\Lib\site-packages\mesonpy\__init__.py", line 472, in _proc
    +          subprocess.check_call(list(args))
    +        File "C:\Program Files\Python311\Lib\subprocess.py", line 413, in check_call
    +          raise CalledProcessError(retcode, cmd)
    +      subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\Program Files\\Python311', 'C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\Users\\admin\\AppData\\Local\\Temp\\pip-install-hnc68765\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\.mesonpy-iocfb37s\\build']' returned non-zero exit status 1.
    +      [end of output]
    +
    +  note: This error originates from a subprocess, and is likely not a problem with pip.
    +error: subprocess-exited-with-error
    +
    +× Getting requirements to build wheel did not run successfully.
    +│ exit code: 1
    +╰─> See above for output.
    +
    +note: This error originates from a subprocess, and is likely not a problem with pip.
    +
    +

    Northword大约 7 分钟
    Raman

    Raman

    +

    波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm1cm^{-1})。


    Northword小于 1 分钟
    + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..d532ea17 --- /dev/null +++ b/robots.txt @@ -0,0 +1,5 @@ + +User-agent:* +Disallow: + +Sitemap: https://northword.cn/sitemap.xml diff --git a/search-pro.worker.js b/search-pro.worker.js new file mode 100644 index 00000000..38683646 --- /dev/null +++ b/search-pro.worker.js @@ -0,0 +1,2 @@ +const nt="ENTRIES",V="KEYS",T="VALUES",F="";class D{set;_type;_path;constructor(t,s){const n=t._tree,u=Array.from(n.keys());this.set=t,this._type=s,this._path=u.length>0?[{node:n,keys:u}]:[]}next(){const t=this.dive();return this.backtrack(),t}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:t,keys:s}=E(this._path);if(E(s)===F)return{done:!1,value:this.result()};const n=t.get(E(s));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const t=E(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:t})=>E(t)).filter(t=>t!==F).join("")}value(){return E(this._path).node.get(F)}result(){switch(this._type){case T:return this.value();case V:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const E=e=>e[e.length-1],ut=(e,t,s)=>{const n=new Map;if(t===void 0)return n;const u=t.length+1,o=u+s,i=new Uint8Array(o*u).fill(s+1);for(let r=0;r{const d=o*i;t:for(const l of e.keys())if(l===F){const a=u[d-1];a<=s&&n.set(r,[e.get(l),a])}else{let a=o;for(let h=0;hs)continue t}R(e.get(l),t,s,n,u,a,i,r+l)}};class C{_tree;_prefix;_size=void 0;constructor(t=new Map,s=""){this._tree=t,this._prefix=s}atPrefix(t){if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");const[s,n]=x(this._tree,t.slice(this._prefix.length));if(s===void 0){const[u,o]=M(n);for(const i of u.keys())if(i!==F&&i.startsWith(o)){const r=new Map;return r.set(i.slice(o.length),u.get(i)),new C(r,t)}}return new C(s,t)}clear(){this._size=void 0,this._tree.clear()}delete(t){return this._size=void 0,ot(this._tree,t)}entries(){return new D(this,nt)}forEach(t){for(const[s,n]of this)t(s,n,this)}fuzzyGet(t,s){return ut(this._tree,t,s)}get(t){const s=I(this._tree,t);return s!==void 0?s.get(F):void 0}has(t){const s=I(this._tree,t);return s!==void 0&&s.has(F)}keys(){return new D(this,V)}set(t,s){if(typeof t!="string")throw new Error("key must be a string");return this._size=void 0,O(this._tree,t).set(F,s),this}get size(){if(this._size)return this._size;this._size=0;const t=this.entries();for(;!t.next().done;)this._size+=1;return this._size}update(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=O(this._tree,t);return n.set(F,s(n.get(F))),this}fetch(t,s){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;const n=O(this._tree,t);let u=n.get(F);return u===void 0&&n.set(F,u=s()),u}values(){return new D(this,T)}[Symbol.iterator](){return this.entries()}static from(t){const s=new C;for(const[n,u]of t)s.set(n,u);return s}static fromObject(t){return C.from(Object.entries(t))}}const x=(e,t,s=[])=>{if(t.length===0||e==null)return[e,s];for(const n of e.keys())if(n!==F&&t.startsWith(n))return s.push([e,n]),x(e.get(n),t.slice(n.length),s);return s.push([e,t]),x(void 0,"",s)},I=(e,t)=>{if(t.length===0||e==null)return e;for(const s of e.keys())if(s!==F&&t.startsWith(s))return I(e.get(s),t.slice(s.length))},O=(e,t)=>{const s=t.length;t:for(let n=0;e&&n{const[s,n]=x(e,t);if(s!==void 0){if(s.delete(F),s.size===0)W(n);else if(s.size===1){const[u,o]=s.entries().next().value;q(n,u,o)}}},W=e=>{if(e.length===0)return;const[t,s]=M(e);if(t.delete(s),t.size===0)W(e.slice(0,-1));else if(t.size===1){const[n,u]=t.entries().next().value;n!==F&&q(e.slice(0,-1),n,u)}},q=(e,t,s)=>{if(e.length===0)return;const[n,u]=M(e);n.set(u+t,s),n.delete(u)},M=e=>e[e.length-1],it=(e,t)=>{const s=e._idToShortId.get(t);if(s!=null)return e._storedFields.get(s)},rt=/[\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u,S="or",$="and",ct="and_not",lt=(e,t)=>{e.includes(t)||e.push(t)},P=(e,t)=>{for(const s of t)e.includes(s)||e.push(s)},N=({score:e},{score:t})=>t-e,ht=()=>new Map,k=e=>{const t=new Map;for(const s of Object.keys(e))t.set(parseInt(s,10),e[s]);return t},G=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0,dt={[S]:(e,t)=>{for(const s of t.keys()){const n=e.get(s);if(n==null)e.set(s,t.get(s));else{const{score:u,terms:o,match:i}=t.get(s);n.score=n.score+u,n.match=Object.assign(n.match,i),P(n.terms,o)}}return e},[$]:(e,t)=>{const s=new Map;for(const n of t.keys()){const u=e.get(n);if(u==null)continue;const{score:o,terms:i,match:r}=t.get(n);P(u.terms,i),s.set(n,{score:u.score+o,terms:u.terms,match:Object.assign(u.match,r)})}return s},[ct]:(e,t)=>{for(const s of t.keys())e.delete(s);return e}},at=(e,t,s,n,u,o)=>{const{k:i,b:r,d}=o;return Math.log(1+(s-t+.5)/(t+.5))*(d+e*(i+1)/(e+i*(1-r+r*n/u)))},ft=e=>(t,s,n)=>{const u=typeof e.fuzzy=="function"?e.fuzzy(t,s,n):e.fuzzy||!1,o=typeof e.prefix=="function"?e.prefix(t,s,n):e.prefix===!0;return{term:t,fuzzy:u,prefix:o}},H=(e,t,s,n)=>{for(const u of Object.keys(e._fieldIds))if(e._fieldIds[u]===s){e._options.logger("warn",`SlimSearch: document with ID ${e._documentIds.get(t)} has changed before removal: term "${n}" was not present in field "${u}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}},gt=(e,t,s,n)=>{if(!e._index.has(n)){H(e,s,t,n);return}const u=e._index.fetch(n,ht),o=u.get(t);o==null||o.get(s)==null?H(e,s,t,n):o.get(s)<=1?o.size<=1?u.delete(t):o.delete(s):o.set(s,o.get(s)-1),e._index.get(n).size===0&&e._index.delete(n)},mt={k:1.2,b:.7,d:.5},pt={idField:"id",extractField:(e,t)=>e[t],tokenize:e=>e.split(rt),processTerm:e=>e.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(e,t)=>{typeof console?.[e]=="function"&&console[e](t)},autoVacuum:!0},J={combineWith:S,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:mt},Ft={combineWith:$,prefix:(e,t,s)=>t===s.length-1},_t={batchSize:1e3,batchWait:10},U={minDirtFactor:.1,minDirtCount:20},yt={..._t,...U},Y=(e,t=S)=>{if(e.length===0)return new Map;const s=t.toLowerCase();return e.reduce(dt[s])||new Map},B=(e,t,s,n,u,o,i,r,d=new Map)=>{if(u==null)return d;for(const l of Object.keys(o)){const a=o[l],h=e._fieldIds[l],m=u.get(h);if(m==null)continue;let p=m.size;const f=e._avgFieldLength[h];for(const c of m.keys()){if(!e._documentIds.has(c)){gt(e,h,c,s),p-=1;continue}const g=i?i(e._documentIds.get(c),s,e._storedFields.get(c)):1;if(!g)continue;const _=m.get(c),y=e._fieldLength.get(c)[h],b=at(_,p,e._documentCount,y,f,r),z=n*a*g*b,A=d.get(c);if(A){A.score+=z,lt(A.terms,t);const w=G(A.match,s);w?w.push(l):A.match[s]=[l]}else d.set(c,{score:z,terms:[t],match:{[s]:[l]}})}}return d},At=(e,t,s)=>{const n={...e._options.searchOptions,...s},u=(n.fields||e._options.fields).reduce((c,g)=>({...c,[g]:G(n.boost,g)||1}),{}),{boostDocument:o,weights:i,maxFuzzy:r,bm25:d}=n,{fuzzy:l,prefix:a}={...J.weights,...i},h=e._index.get(t.term),m=B(e,t.term,t.term,1,h,u,o,d);let p,f;if(t.prefix&&(p=e._index.atPrefix(t.term)),t.fuzzy){const c=t.fuzzy===!0?.2:t.fuzzy,g=c<1?Math.min(r,Math.round(t.term.length*c)):c;g&&(f=e._index.fuzzyGet(t.term,g))}if(p)for(const[c,g]of p){const _=c.length-t.term.length;if(!_)continue;f?.delete(c);const y=a*c.length/(c.length+.3*_);B(e,t.term,c,y,g,u,o,d,m)}if(f)for(const c of f.keys()){const[g,_]=f.get(c);if(!_)continue;const y=l*c.length/(c.length+_);B(e,t.term,c,y,g,u,o,d,m)}return m},X=(e,t,s={})=>{if(typeof t!="string"){const a={...s,...t,queries:void 0},h=t.queries.map(m=>X(e,m,a));return Y(h,a.combineWith)}const{tokenize:n,processTerm:u,searchOptions:o}=e._options,i={tokenize:n,processTerm:u,...o,...s},{tokenize:r,processTerm:d}=i,l=r(t).flatMap(a=>d(a)).filter(a=>!!a).map(ft(i)).map(a=>At(e,a,i));return Y(l,i.combineWith)},K=(e,t,s={})=>{const n=X(e,t,s),u=[];for(const[o,{score:i,terms:r,match:d}]of n){const l=r.length,a={id:e._documentIds.get(o),score:i*l,terms:Object.keys(d),match:d};Object.assign(a,e._storedFields.get(o)),(s.filter==null||s.filter(a))&&u.push(a)}return u.sort(N),u},Ct=(e,t,s={})=>{s={...e._options.autoSuggestOptions,...s};const n=new Map;for(const{score:o,terms:i}of K(e,t,s)){const r=i.join(" "),d=n.get(r);d!=null?(d.score+=o,d.count+=1):n.set(r,{score:o,terms:i,count:1})}const u=[];for(const[o,{score:i,terms:r,count:d}]of n)u.push({suggestion:o,terms:r,score:i/d});return u.sort(N),u};class Et{_options;_index;_documentCount;_documentIds;_idToShortId;_fieldIds;_fieldLength;_avgFieldLength;_nextId;_storedFields;_dirtCount;_currentVacuum;_enqueuedVacuum;_enqueuedVacuumConditions;constructor(t){if(t?.fields==null)throw new Error('SlimSearch: option "fields" must be provided');const s=t.autoVacuum==null||t.autoVacuum===!0?yt:t.autoVacuum;this._options={...pt,...t,autoVacuum:s,searchOptions:{...J,...t.searchOptions||{}},autoSuggestOptions:{...Ft,...t.autoSuggestOptions||{}}},this._index=new C,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=U,this.addFields(this._options.fields)}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}get documentCount(){return this._documentCount}get termCount(){return this._index.size}toJSON(){const t=[];for(const[s,n]of this._index){const u={};for(const[o,i]of n)u[o]=Object.fromEntries(i);t.push([s,u])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:t,serializationVersion:2}}addFields(t){for(let s=0;s{if(l!==1&&l!==2)throw new Error("SlimSearch: cannot deserialize an index created with an incompatible version");const h=new Et(a);h._documentCount=t,h._nextId=s,h._documentIds=k(n),h._idToShortId=new Map,h._fieldIds=u,h._fieldLength=k(o),h._avgFieldLength=i,h._storedFields=k(r),h._dirtCount=d||0,h._index=new C;for(const[m,p]of h._documentIds)h._idToShortId.set(p,m);for(const[m,p]of e){const f=new Map;for(const c of Object.keys(p)){let g=p[c];l===1&&(g=g.ds),f.set(parseInt(c,10),k(g))}h._index.set(m,f)}return h},Q=Object.entries,wt=Object.fromEntries,j=(e,t)=>{const s=e.toLowerCase(),n=t.toLowerCase(),u=[];let o=0,i=0;const r=(l,a=!1)=>{let h="";i===0?h=l.length>20?`… ${l.slice(-20)}`:l:a?h=l.length+i>100?`${l.slice(0,100-i)}… `:l:h=l.length>20?`${l.slice(0,20)} … ${l.slice(-20)}`:l,h&&u.push(h),i+=h.length,a||(u.push(["mark",t]),i+=t.length,i>=100&&u.push(" …"))};let d=s.indexOf(n,o);if(d===-1)return null;for(;d>=0;){const l=d+n.length;if(r(e.slice(o,d)),o=l,i>100)break;d=s.indexOf(n,o)}return i<100&&r(e.slice(o),!0),u},Z=/[\u4e00-\u9fa5]/g,tt=(e={})=>({fuzzy:.2,prefix:!0,processTerm:t=>{const s=t.match(Z)||[],n=t.replace(Z,"").toLowerCase();return n?[n,...s]:[...s]},...e}),xt=(e,t)=>t.contents.reduce((s,[,n])=>s+n,0)-e.contents.reduce((s,[,n])=>s+n,0),kt=(e,t)=>Math.max(...t.contents.map(([,s])=>s))-Math.max(...e.contents.map(([,s])=>s)),et=(e,t,s={})=>{const n={};return K(t,e,tt({boost:{h:2,t:1,c:4},...s})).forEach(u=>{const{id:o,terms:i,score:r}=u,d=o.includes("@"),l=o.includes("#"),[a,h]=o.split(/[#@]/),m=i.sort((f,c)=>f.length-c.length).filter((f,c)=>i.slice(c+1).every(g=>!g.includes(f))),{contents:p}=n[a]??={title:"",contents:[]};if(d)p.push([{type:"customField",key:a,index:h,display:m.map(f=>u.c.map(c=>j(c,f))).flat().filter(f=>f!==null)},r]);else{const f=m.map(c=>j(u.h,c)).filter(c=>c!==null);if(f.length&&p.push([{type:l?"heading":"title",key:a,...l&&{anchor:h},display:f},r]),"t"in u)for(const c of u.t){const g=m.map(_=>j(c,_)).filter(_=>_!==null);g.length&&p.push([{type:"text",key:a,...l&&{anchor:h},display:g},r])}}}),Q(n).sort(([,u],[,o])=>"max"==="total"?xt(u,o):kt(u,o)).map(([u,{title:o,contents:i}])=>{if(!o){const r=it(t,u);r&&(o=r.h)}return{title:o,contents:i.map(([r])=>r)}})},st=(e,t,s={})=>Ct(t,e,tt(s)).map(({suggestion:n})=>n),v=wt(Q(JSON.parse("{\"/\":{\"documentCount\":651,\"nextId\":651,\"documentIds\":{\"0\":\"v-145ac574\",\"1\":\"v-633fb764\",\"2\":\"v-633fb764#设置\",\"3\":\"v-633fb764#计划的目录划分\",\"4\":\"v-633fb764#目录相关的\",\"5\":\"v-633fb764#软件\",\"6\":\"v-633fb764#应用商店\",\"7\":\"v-633fb764#c-program-files-常用软件和非专业软件\",\"8\":\"v-633fb764#d-program-files-专业软件和大型的软件\",\"9\":\"v-633fb764#d-tools-小工具和便携式软件\",\"10\":\"v-633fb764#其他\",\"11\":\"v-1985bd92\",\"12\":\"v-1985bd92#引言\",\"13\":\"v-1985bd92#政治\",\"14\":\"v-1985bd92#数学\",\"15\":\"v-1985bd92#英语\",\"16\":\"v-1985bd92#专业课\",\"17\":\"v-1985bd92#其他\",\"18\":\"v-759eeeca\",\"19\":\"v-4022cd1f\",\"20\":\"v-326a924f\",\"21\":\"v-1aa77d92\",\"22\":\"v-326d07e0\",\"23\":\"v-146a1089\",\"24\":\"v-146a1089#目录\",\"25\":\"v-0d8a8100\",\"26\":\"v-0d8a8100#_0-准备工作\",\"27\":\"v-0d8a8100#_1-设置为默认终端\",\"28\":\"v-0d8a8100#_1-1-windows-terminal-配置-git-bash-为默认终端\",\"29\":\"v-0d8a8100#_1-2-vscode-配置-git-bash-为默认终端\",\"30\":\"v-0d8a8100#_2-可能出现的配置问题\",\"31\":\"v-0d8a8100#_2-1-windows-terminal-和-vscode-打开-git-bash-发现不会加载配置\",\"32\":\"v-0d8a8100#_2-2-git-bash-不会加载-bashrc-的配置\",\"33\":\"v-0d8a8100#_2-3-git-bash-修改前缀-隐藏用户-主机\",\"34\":\"v-0d8a8100#_2-4-修复-git-bash-中文乱码\",\"35\":\"v-0d8a8100#解决中文无法显示的问题\",\"36\":\"v-0d8a8100#_3-你可能不知道却非常有用的技巧\",\"37\":\"v-0d8a8100#_3-1-在终端启动软件查看文件\",\"38\":\"v-0d8a8100#_3-2-linux-下常用软件下载\",\"39\":\"v-0d8a8100#_3-3-资源管理器地址妙用-直接在终端打开当前文件夹\",\"40\":\"v-0d8a8100#_3-4-添加一些常用别名增加效率\",\"41\":\"v-7fdba302\",\"42\":\"v-7fdba302#目录\",\"43\":\"v-7fdba302#标题\",\"44\":\"v-7fdba302#层级\",\"45\":\"v-7fdba302#原则\",\"46\":\"v-7fdba302#文本\",\"47\":\"v-7fdba302#字间距\",\"48\":\"v-7fdba302#句子\",\"49\":\"v-7fdba302#写作风格\",\"50\":\"v-7fdba302#英文处理\",\"51\":\"v-7fdba302#段落\",\"52\":\"v-7fdba302#原则-1\",\"53\":\"v-7fdba302#引用\",\"54\":\"v-7fdba302#数值\",\"55\":\"v-7fdba302#半角数字\",\"56\":\"v-7fdba302#千分号\",\"57\":\"v-7fdba302#货币\",\"58\":\"v-7fdba302#数值范围\",\"59\":\"v-7fdba302#变化程度的表示法\",\"60\":\"v-7fdba302#标点符号\",\"61\":\"v-7fdba302#原则-2\",\"62\":\"v-7fdba302#句号\",\"63\":\"v-7fdba302#逗号\",\"64\":\"v-7fdba302#顿号\",\"65\":\"v-7fdba302#分号\",\"66\":\"v-7fdba302#引号\",\"67\":\"v-7fdba302#括号\",\"68\":\"v-7fdba302#冒号\",\"69\":\"v-7fdba302#省略号\",\"70\":\"v-7fdba302#感叹号\",\"71\":\"v-7fdba302#破折号\",\"72\":\"v-7fdba302#连接号\",\"73\":\"v-7fdba302#文档体系\",\"74\":\"v-7fdba302#结构\",\"75\":\"v-7fdba302#文件名\",\"76\":\"v-7fdba302#参考链接\",\"77\":\"v-7fdba302#license\",\"78\":\"v-55a1aa9d\",\"79\":\"v-147825fb\",\"80\":\"v-147825fb#目录\",\"81\":\"v-0f6d941f\",\"82\":\"v-0f6d941f#关于-aria2\",\"83\":\"v-0f6d941f#安装与配置-aria2\",\"84\":\"v-0f6d941f#与-onedrive-联动\",\"85\":\"v-0f6d941f#通过-reclon-和-upload-sh\",\"86\":\"v-0f6d941f#参考资料\",\"87\":\"v-f785aee2\",\"88\":\"v-f785aee2#目录\",\"89\":\"v-37da871d\",\"90\":\"v-37da871d#windows-applications\",\"91\":\"v-37da871d#文档类\",\"92\":\"v-37da871d#通讯类\",\"93\":\"v-37da871d#浏览器类\",\"94\":\"v-37da871d#浏览器相关类\",\"95\":\"v-37da871d#插件\",\"96\":\"v-37da871d#工具类\",\"97\":\"v-37da871d#工作类\",\"98\":\"v-37da871d#编程类\",\"99\":\"v-37da871d#实用工具类\",\"100\":\"v-3c7a5793\",\"101\":\"v-3c7a5793#_1-红米-ac2100-刷入-pavadan-固件\",\"102\":\"v-3c7a5793#download-link\",\"103\":\"v-3c7a5793#_2-mentohust-的配置\",\"104\":\"v-3c7a5793#在-webui-配置\",\"105\":\"v-3c7a5793#帮助命令\",\"106\":\"v-3c7a5793#在-pavadan-中设置定时任务-可选\",\"107\":\"v-3c7a5793#在-wan-上行-下行启动后执行\",\"108\":\"v-3c7a5793#自定义-crontab-定时任务配置\",\"109\":\"v-724feff4\",\"110\":\"v-724feff4#通过-frp\",\"111\":\"v-724feff4#配置参考\",\"112\":\"v-724feff4#linux-端-systemctl-配置\",\"113\":\"v-3ba57220\",\"114\":\"v-462cf0b5\",\"115\":\"v-462cf0b5#工具\",\"116\":\"v-462cf0b5#aria2c\",\"117\":\"v-462cf0b5#frps\",\"118\":\"v-462cf0b5#docker\",\"119\":\"v-462cf0b5#其他\",\"120\":\"v-462cf0b5#效率\",\"121\":\"v-462cf0b5#网速监控\",\"122\":\"v-27805d44\",\"123\":\"v-3e8b5a96\",\"124\":\"v-3e8b5a96#前言\",\"125\":\"v-3e8b5a96#开始\",\"126\":\"v-3e8b5a96#转换-locale-files\",\"127\":\"v-75033482\",\"128\":\"v-75033482#元素\",\"129\":\"v-75033482#属性\",\"130\":\"v-75033482#预定义实体表\",\"131\":\"v-726f7072\",\"132\":\"v-726f7072#一些非初级非高级玩法\",\"133\":\"v-726f7072@0\",\"134\":\"v-218ea978\",\"135\":\"v-218ea978#cd-change-directory\",\"136\":\"v-218ea978#ls-与-ll-list\",\"137\":\"v-218ea978#mkdir-make-directory\",\"138\":\"v-218ea978#cp-copy\",\"139\":\"v-218ea978#mv-move\",\"140\":\"v-218ea978#rm-remove\",\"141\":\"v-218ea978#rmdir-remove-directory\",\"142\":\"v-218ea978#pwd-print-working-directory\",\"143\":\"v-218ea978#cat-concatenate-and-print-files\",\"144\":\"v-218ea978#tar\",\"145\":\"v-218ea978#grep\",\"146\":\"v-218ea978#chown\",\"147\":\"v-218ea978#chmod\",\"148\":\"v-218ea978#find\",\"149\":\"v-218ea978#ps\",\"150\":\"v-218ea978#kill\",\"151\":\"v-218ea978#killall\",\"152\":\"v-218ea978#file\",\"153\":\"v-218ea978#chgrp\",\"154\":\"v-218ea978#gcc\",\"155\":\"v-218ea978#time\",\"156\":\"v-218ea978@0\",\"157\":\"v-dfd7264e\",\"158\":\"v-dfd7264e#三种模式\",\"159\":\"v-dfd7264e#命令模式\",\"160\":\"v-dfd7264e#输入模式\",\"161\":\"v-dfd7264e#底线命令模式\",\"162\":\"v-dfd7264e#命令\",\"163\":\"v-dfd7264e#命令模式-1\",\"164\":\"v-dfd7264e#移动光标\",\"165\":\"v-dfd7264e#删除、复制与贴上\",\"166\":\"v-dfd7264e#底线命令\",\"167\":\"v-dfd7264e#保存与退出\",\"168\":\"v-dfd7264e#搜索替换\",\"169\":\"v-dfd7264e#第二部分-一般模式切换到编辑模式的可用的按钮说明\",\"170\":\"v-dfd7264e#第三部分-一般模式切换到指令行模式的可用的按钮说明\",\"171\":\"v-dfd7264e@0\",\"172\":\"v-67bc2210\",\"173\":\"v-67bc2210#上传-rz\",\"174\":\"v-67bc2210#方法-1-拖拽\",\"175\":\"v-67bc2210#方法-2-rz\",\"176\":\"v-67bc2210#下载-sz\",\"177\":\"v-67bc2210@0\",\"178\":\"v-ec98fe74\",\"179\":\"v-ec98fe74#环境变量\",\"180\":\"v-ec98fe74#自定义命令提示符\",\"181\":\"v-ec98fe74#linux-中-bashrc-与-bash-profile-的区别\",\"182\":\"v-ec98fe74@0\",\"183\":\"v-279833aa\",\"184\":\"v-279833aa@0\",\"185\":\"v-510100b8\",\"186\":\"v-15d002d2\",\"187\":\"v-15d002d2#各种乱七八糟的报错\",\"188\":\"v-b72643ac\",\"189\":\"v-200d9c72\",\"190\":\"v-200d9c72#找不到指定文件\",\"191\":\"v-398f20bb\",\"192\":\"v-398f20bb#国内源\",\"193\":\"v-398f20bb#临时使用\",\"194\":\"v-398f20bb#永久修改-一劳永逸\",\"195\":\"v-5f5c14e3\",\"196\":\"v-5f5c14e3#关于理论计算\",\"197\":\"v-5f5c14e3#第一性原理\",\"198\":\"v-5f5c14e3#密度泛函理论\",\"199\":\"v-5f5c14e3#局域密度近似\",\"200\":\"v-5f5c14e3#自洽场\",\"201\":\"v-5f5c14e3#过渡态理论\",\"202\":\"v-5f5c14e3#todo\",\"203\":\"v-5f5c14e3@0\",\"204\":\"v-290994d6\",\"205\":\"v-290994d6#for-windows\",\"206\":\"v-290994d6#for-linux\",\"207\":\"v-22c29653\",\"208\":\"v-22c29653#materials-studio-激活\",\"209\":\"v-22c29653#python-for-windows\",\"210\":\"v-22c29653#xshell-设置-x11-转发\",\"211\":\"v-22c29653@0\",\"212\":\"v-28c0fe97\",\"213\":\"v-28c0fe97#requirements\",\"214\":\"v-28c0fe97#windows\",\"215\":\"v-28c0fe97#_1-安装并配置-python-环境\",\"216\":\"v-28c0fe97#_2-安装-ase\",\"217\":\"v-28c0fe97#_3-检查是否安装正确\",\"218\":\"v-28c0fe97#_4-添加环境变量\",\"219\":\"v-28c0fe97#linux\",\"220\":\"v-28c0fe97@0\",\"221\":\"v-60f15105\",\"222\":\"v-60f15105#下载\",\"223\":\"v-60f15105#方式一-recommend\",\"224\":\"v-60f15105#方式二\",\"225\":\"v-60f15105#解压缩\",\"226\":\"v-60f15105#配置-vaspkit-程序的环境变量\",\"227\":\"v-60f15105#将-vaspkit-关键字加入系统环境变量\",\"228\":\"v-60f15105@0\",\"229\":\"v-95f27414\",\"230\":\"v-95f27414#下载\",\"231\":\"v-95f27414#解压缩\",\"232\":\"v-95f27414#加入-bashrc\",\"233\":\"v-95f27414@0\",\"234\":\"v-25eb367b\",\"235\":\"v-25eb367b#下载并解压\",\"236\":\"v-25eb367b#配置安装路径\",\"237\":\"v-25eb367b#编译安装\",\"238\":\"v-25eb367b#配置当前用户下的系统命令\",\"239\":\"v-25eb367b#配置当前用户的环境变量\",\"240\":\"v-25eb367b@0\",\"241\":\"v-03c8e5f0\",\"242\":\"v-03c8e5f0@0\",\"243\":\"v-f0abf42e\",\"244\":\"v-f0abf42e#步骤放在最前面\",\"245\":\"v-f0abf42e#升级-openssl\",\"246\":\"v-f0abf42e#编译-python3\",\"247\":\"v-f0abf42e#经历\",\"248\":\"v-f0abf42e@0\",\"249\":\"v-3ad9eb9e\",\"250\":\"v-3ad9eb9e#准备源码\",\"251\":\"v-3ad9eb9e#vasp-源码目录结构\",\"252\":\"v-3ad9eb9e#vtstcode\",\"253\":\"v-3ad9eb9e#下载并解压缩-vtstcode\",\"254\":\"v-3ad9eb9e#复制-vtstcode-到-vasp-src\",\"255\":\"v-3ad9eb9e#修改-src-main-f\",\"256\":\"v-3ad9eb9e#修改编译配置\",\"257\":\"v-3ad9eb9e#准备编译环境\",\"258\":\"v-3ad9eb9e#检查编译环境\",\"259\":\"v-3ad9eb9e#配置编译环境\",\"260\":\"v-3ad9eb9e#修改-makefile-include-文件\",\"261\":\"v-3ad9eb9e#安装\",\"262\":\"v-3ad9eb9e#编译\",\"263\":\"v-3ad9eb9e#添加环境变量\",\"264\":\"v-3ad9eb9e#错误解决\",\"265\":\"v-3ad9eb9e#参考文献\",\"266\":\"v-3ad9eb9e@0\",\"267\":\"v-5606cfbc\",\"268\":\"v-ea20dcf0\",\"269\":\"v-ea20dcf0#pbs-命令\",\"270\":\"v-ea20dcf0#提交作业\",\"271\":\"v-ea20dcf0#查看任务\",\"272\":\"v-ea20dcf0#qstat-的选项\",\"273\":\"v-ea20dcf0#取消任务\",\"274\":\"v-ea20dcf0#停止正在运行的任务\",\"275\":\"v-ea20dcf0#checkjob\",\"276\":\"v-ea20dcf0#pbsnodes\",\"277\":\"v-ea20dcf0#pbs-脚本\",\"278\":\"v-ea20dcf0#pbs-作业属性\",\"279\":\"v-ea20dcf0#资源列表\",\"280\":\"v-ea20dcf0#pbs-常用环境变量\",\"281\":\"v-ea20dcf0#高级配置\",\"282\":\"v-ea20dcf0#qmgr-查看所有配置\",\"283\":\"v-ea20dcf0#普通用户查询他人作业\",\"284\":\"v-ea20dcf0#解除堆栈大小限制\",\"285\":\"v-ea20dcf0@0\",\"286\":\"v-37263cfa\",\"287\":\"v-7757da05\",\"288\":\"v-7757da05#为什么要建立超胞\",\"289\":\"v-7757da05#如何选择真空层厚度\",\"290\":\"v-7757da05#如何确定底部保留几层\",\"291\":\"v-7757da05#埃-angstrom\",\"292\":\"v-7757da05#cif-文件的区别\",\"293\":\"v-7757da05#切面用-conventional-还是-primitive\",\"294\":\"v-7757da05@0\",\"295\":\"v-5934b528\",\"296\":\"v-5934b528@0\",\"297\":\"v-e6ee3948\",\"298\":\"v-e6ee3948#任务\",\"299\":\"v-e6ee3948#步骤\",\"300\":\"v-e6ee3948#结果\",\"301\":\"v-e6ee3948@0\",\"302\":\"v-ba918472\",\"303\":\"v-ba918472#建模\",\"304\":\"v-ba918472#其他资源\",\"305\":\"v-ba918472@0\",\"306\":\"v-0d003bb2\",\"307\":\"v-0d003bb2@0\",\"308\":\"v-417c1e62\",\"309\":\"v-417c1e62@0\",\"310\":\"v-5ae1580f\",\"311\":\"v-5ae1580f@0\",\"312\":\"v-6f1e0448\",\"313\":\"v-6f1e0448@0\",\"314\":\"v-7e76b8f8\",\"315\":\"v-18ed4b78\",\"316\":\"v-18ed4b78#otp-下载\",\"317\":\"v-46bb4806\",\"318\":\"v-4ebfad01\",\"319\":\"v-4ebfad01#描述\",\"320\":\"v-4ebfad01#配置及使用\",\"321\":\"v-4ebfad01#缺陷和注意事项\",\"322\":\"v-2d2d3678\",\"323\":\"v-2d2d3678#关于-zotero-是什么以及为什么使用它\",\"324\":\"v-2d2d3678#安装与配置\",\"325\":\"v-2d2d3678#主程序\",\"326\":\"v-2d2d3678#浏览器插件-zotero-connector\",\"327\":\"v-2d2d3678#中文-translator-与茉莉花插件\",\"328\":\"v-2d2d3678#styles-与-gb-t-7714-2015-csl-文件\",\"329\":\"v-2d2d3678#基础使用\",\"330\":\"v-2d2d3678#多设备同步方案\",\"331\":\"v-2d2d3678#使用官方的存储空间进行附件同步\",\"332\":\"v-2d2d3678#webdav-实现附件同步\",\"333\":\"v-2d2d3678#onedrive-zotfile-实现附件同步\",\"334\":\"v-2d2d3678#使用-zotfile-实现更自由地附件管理\",\"335\":\"v-2d2d3678#其他插件与玩法\",\"336\":\"v-2d2d3678#zotero-pdf-translate-实现在-pdf-中翻译\",\"337\":\"v-2d2d3678#zotero-tag-实现新条目添加未读标签-阅读后自动取消\",\"338\":\"v-2d2d3678#zotero-scihub-实现从-sci-hub-下载全文\",\"339\":\"v-2d2d3678#zotero-update-ifs-为期刊添加影响因子\",\"340\":\"v-2d2d3678#zotero-与-obdisian-或其他-markdown-编辑器结联动\",\"341\":\"v-2d2d3678#zutilo\",\"342\":\"v-2d2d3678#使用-better-bibtex-for-zotero-实现在-latex-markdown-中引用\",\"343\":\"v-2d2d3678#修改-csl-文件使参考文献列表中文-等-与外文-et-al-混排\",\"344\":\"v-2d2d3678#其他平台客户端\",\"345\":\"v-2d2d3678#ios\",\"346\":\"v-2d2d3678#android\",\"347\":\"v-2d2d3678#web\",\"348\":\"v-f322b4c4\",\"349\":\"v-f322b4c4#前言\",\"350\":\"v-f322b4c4#csl-是什么\",\"351\":\"v-52613576\",\"352\":\"v-52613576#in-text-styles\",\"353\":\"v-52613576#author-date-和-author-格式\",\"354\":\"v-52613576#numeric-格式\",\"355\":\"v-52613576#numeric-复合格式\",\"356\":\"v-52613576#标签格式\",\"357\":\"v-52613576#note-styles\",\"358\":\"v-3a58307c\",\"359\":\"v-74acd478\",\"360\":\"v-74acd478#独立格式和从属格式\",\"361\":\"v-74acd478#locale-文件\",\"362\":\"v-74acd478#item-metadata\",\"363\":\"v-74acd478#引用细节\",\"364\":\"v-74acd478#csl-处理器\",\"365\":\"v-1989b542\",\"366\":\"v-1989b542#从属格式解析\",\"367\":\"v-1989b542#独立格式解析\",\"368\":\"v-1989b542#结构\",\"369\":\"v-1989b542#根元素-style-元素\",\"370\":\"v-1989b542#info-元素\",\"371\":\"v-1989b542#citation-元素和-macro-元素\",\"372\":\"v-1989b542#bibliography-元素\",\"373\":\"v-1989b542#locale-元素\",\"374\":\"v-bca6172c\",\"375\":\"v-bca6172c#介绍\",\"376\":\"v-bca6172c#翻译习惯\",\"377\":\"v-bca6172c#术语\",\"378\":\"v-3ad3b172\",\"379\":\"v-3ad3b172#独立样式\",\"380\":\"v-3ad3b172#从属样式\",\"381\":\"v-3ad3b172#本地化文件\",\"382\":\"v-08a9b111\",\"383\":\"v-08a9b111#info\",\"384\":\"v-08a9b111#terms-术语\",\"385\":\"v-08a9b111#序数后缀\",\"386\":\"v-08a9b111#性别特定序数\",\"387\":\"v-08a9b111#本地化日期格式\",\"388\":\"v-08a9b111#本地化选项\",\"389\":\"v-45111e2a\",\"390\":\"v-cd2badd2\",\"391\":\"v-cd2badd2#layout\",\"392\":\"v-cd2badd2#text\",\"393\":\"v-cd2badd2#date\",\"394\":\"v-cd2badd2#date-part\",\"395\":\"v-cd2badd2#date-ranges\",\"396\":\"v-cd2badd2#ad-and-bc\",\"397\":\"v-cd2badd2#seasons\",\"398\":\"v-cd2badd2#approximate-dates\",\"399\":\"v-cd2badd2#number\",\"400\":\"v-cd2badd2#names\",\"401\":\"v-cd2badd2#name\",\"402\":\"v-cd2badd2#名字内部顺序\",\"403\":\"v-cd2badd2#名字格式化\",\"404\":\"v-cd2badd2#et-al\",\"405\":\"v-cd2badd2#substitute\",\"406\":\"v-cd2badd2#label-in-cs-names\",\"407\":\"v-cd2badd2#label\",\"408\":\"v-cd2badd2#group\",\"409\":\"v-cd2badd2#choose\",\"410\":\"v-39b473fe\",\"411\":\"v-39b473fe#选项\",\"412\":\"v-39b473fe#引文选项\",\"413\":\"v-39b473fe#消除歧义\",\"414\":\"v-39b473fe#引用分组\",\"415\":\"v-39b473fe#cite-collapsing-引用折叠\",\"416\":\"v-39b473fe#标注距离\",\"417\":\"v-39b473fe#参考文献目录选项\",\"418\":\"v-39b473fe#空白\",\"419\":\"v-39b473fe#参考文献分组\",\"420\":\"v-39b473fe#全局选项\",\"421\":\"v-39b473fe#可继承的名称选项\",\"422\":\"v-39b473fe#局部选项\",\"423\":\"v-39b473fe#排序\",\"424\":\"v-39b473fe#排序变量\",\"425\":\"v-39b473fe#排序宏\",\"426\":\"v-39b473fe#范围分隔符\",\"427\":\"v-39b473fe#格式化\",\"428\":\"v-39b473fe#词缀\",\"429\":\"v-39b473fe#分隔符-delimiter\",\"430\":\"v-39b473fe#显示-display\",\"431\":\"v-39b473fe#引用-quotes\",\"432\":\"v-39b473fe#strip-periods\",\"433\":\"v-39b473fe#文字大小写\",\"434\":\"v-39b473fe#句子大小写转换\",\"435\":\"v-39b473fe#标题大小写转换\",\"436\":\"v-bc476d32\",\"437\":\"v-bc476d32#根元素-cs-style\",\"438\":\"v-bc476d32#cs-style-的子元素\",\"439\":\"v-bc476d32#info\",\"440\":\"v-bc476d32#cs-author-和-cs-contributor\",\"441\":\"v-bc476d32#cs-category\",\"442\":\"v-bc476d32#cs-id\",\"443\":\"v-bc476d32#cs-issn-cs-essn-cs-issnl\",\"444\":\"v-bc476d32#cs-link\",\"445\":\"v-bc476d32#cs-published\",\"446\":\"v-bc476d32#cs-rights\",\"447\":\"v-bc476d32#cs-summary\",\"448\":\"v-bc476d32#cs-title\",\"449\":\"v-bc476d32#cs-title-short\",\"450\":\"v-bc476d32#cs-updated\",\"451\":\"v-bc476d32#citation\",\"452\":\"v-bc476d32#bioliography\",\"453\":\"v-bc476d32#macro\",\"454\":\"v-bc476d32#locale\",\"455\":\"v-587333a4\",\"456\":\"v-1f0249ff\",\"457\":\"v-2deff341\",\"458\":\"v-2deff341#incar\",\"459\":\"v-2deff341#poscar\",\"460\":\"v-2deff341#potcar\",\"461\":\"v-2deff341#kpoints\",\"462\":\"v-2deff341#stopcar\",\"463\":\"v-2deff341@0\",\"464\":\"v-0e400be1\",\"465\":\"v-0e400be1#start-parameters\",\"466\":\"v-0e400be1#system\",\"467\":\"v-0e400be1#istart\",\"468\":\"v-0e400be1#ispin\",\"469\":\"v-0e400be1#icharg\",\"470\":\"v-0e400be1#i-o-flags\",\"471\":\"v-0e400be1#electronic-relaxation\",\"472\":\"v-0e400be1#encut\",\"473\":\"v-0e400be1#ediff\",\"474\":\"v-0e400be1#gga\",\"475\":\"v-0e400be1#ionic-relaxation\",\"476\":\"v-0e400be1#ediffg\",\"477\":\"v-0e400be1#nsw\",\"478\":\"v-0e400be1#ibrion\",\"479\":\"v-0e400be1#isif\",\"480\":\"v-0e400be1#isym\",\"481\":\"v-0e400be1#potim\",\"482\":\"v-0e400be1#dos-related-values\",\"483\":\"v-0e400be1#ismear\",\"484\":\"v-0e400be1#sigma\",\"485\":\"v-0e400be1#dft-u\",\"486\":\"v-0e400be1@0\",\"487\":\"v-48a4ee89\",\"488\":\"v-48a4ee89#vaspkit-生成输入文件的选项\",\"489\":\"v-48a4ee89#poscar\",\"490\":\"v-48a4ee89#方法-1-通过新建-poscar-文件并手动写入内容\",\"491\":\"v-48a4ee89#方法-2-通过-materials-studio-建模以生成-poscar\",\"492\":\"v-48a4ee89#_2-1-使用-vaspkit-的-cif2pos-py\",\"493\":\"v-48a4ee89#_2-2-使用-vesta-转换\",\"494\":\"v-48a4ee89#_2-3-使用-vaspkit-的-xsd2pos-py\",\"495\":\"v-48a4ee89#方法-3-从结构网站获取\",\"496\":\"v-48a4ee89#incar\",\"497\":\"v-48a4ee89#kpoints\",\"498\":\"v-48a4ee89#potcar\",\"499\":\"v-48a4ee89@0\",\"500\":\"v-389e5394\",\"501\":\"v-389e5394#outcar\",\"502\":\"v-389e5394#oszicar\",\"503\":\"v-389e5394#其他\",\"504\":\"v-389e5394#官网文档\",\"505\":\"v-389e5394@0\",\"506\":\"v-7c106e16\",\"507\":\"v-b05d858c\",\"508\":\"v-b05d858c#目录结构\",\"509\":\"v-b05d858c#步骤\",\"510\":\"v-b05d858c#结构优化\",\"511\":\"v-b05d858c#自洽计算\",\"512\":\"v-b05d858c#非自洽计算\",\"513\":\"v-b05d858c#参考\",\"514\":\"v-b05d858c@0\",\"515\":\"v-264f8f39\",\"516\":\"v-264f8f39#birch-murnaghan-状态方程拟合\",\"517\":\"v-264f8f39#直接优化晶格常数\",\"518\":\"v-264f8f39@0\",\"519\":\"v-ee92304c\",\"520\":\"v-ee92304c@0\",\"521\":\"v-087aa3e5\",\"522\":\"v-087aa3e5#定义\",\"523\":\"v-087aa3e5#怎么算\",\"524\":\"v-087aa3e5@0\",\"525\":\"v-76165238\",\"526\":\"v-76165238#影响因素\",\"527\":\"v-76165238#初始构型获取\",\"528\":\"v-76165238@0\",\"529\":\"v-bba2610e\",\"530\":\"v-e90de79a\",\"531\":\"v-e90de79a#流程\",\"532\":\"v-e90de79a#目录结构\",\"533\":\"v-e90de79a#步骤\",\"534\":\"v-e90de79a#step1-对-ab-进行结构优化-geo\",\"535\":\"v-e90de79a#step2-静电自洽\",\"536\":\"v-e90de79a#对-a-b-进行静电自洽-scf\",\"537\":\"v-e90de79a#对-a、b-分别静电自洽\",\"538\":\"v-e90de79a#step3-求差\",\"539\":\"v-e90de79a#其他\",\"540\":\"v-e90de79a#求差的其他方法\",\"541\":\"v-e90de79a#chgsum-pl\",\"542\":\"v-e90de79a#chgdiff-pl\",\"543\":\"v-e90de79a#显示\",\"544\":\"v-e90de79a#为什么-chgdiff-pl-是后减前\",\"545\":\"v-e90de79a#chgdiff-pl-后少了原子\",\"546\":\"v-e90de79a@0\",\"547\":\"v-8a8094b0\",\"548\":\"v-8a8094b0#步骤\",\"549\":\"v-8a8094b0#方法-1-通过-vtst-脚本\",\"550\":\"v-8a8094b0#方法-2-通过-vaspkit\",\"551\":\"v-8a8094b0#参考\",\"552\":\"v-8a8094b0@0\",\"553\":\"v-3de23628\",\"554\":\"v-3de23628#步骤\",\"555\":\"v-3de23628@0\",\"556\":\"v-c8267792\",\"557\":\"v-c8267792#步骤\",\"558\":\"v-c8267792#结构优化\",\"559\":\"v-c8267792#自洽\",\"560\":\"v-c8267792#bader\",\"561\":\"v-c8267792#数据分析\",\"562\":\"v-c8267792#参考资料\",\"563\":\"v-c8267792@0\",\"564\":\"v-bbad892c\",\"565\":\"v-2599bd96\",\"566\":\"v-2599bd96#流程\",\"567\":\"v-2599bd96#文件结构\",\"568\":\"v-2599bd96#步骤\",\"569\":\"v-2599bd96#step1-分别对初态和末态进行常规的结构优化\",\"570\":\"v-2599bd96#step2-使用脚本处理中间过程\",\"571\":\"v-2599bd96#对初末态测相似度以确定插点数量\",\"572\":\"v-2599bd96#插入中间图像\",\"573\":\"v-2599bd96#使用-nebmovie-查看生成的路线是否合理\",\"574\":\"v-2599bd96#step3-neb-计算\",\"575\":\"v-2599bd96#准备-neb-计算的输入文件\",\"576\":\"v-2599bd96#提交计算\",\"577\":\"v-2599bd96#检查是否收敛\",\"578\":\"v-2599bd96#检查切向力\",\"579\":\"v-2599bd96#频率计算\",\"580\":\"v-2599bd96#打包结果\",\"581\":\"v-2599bd96#其他\",\"582\":\"v-2599bd96#nudged-elastic-band-scripts\",\"583\":\"v-2599bd96#nudged-elastic-band-options\",\"584\":\"v-2599bd96#参考资料\",\"585\":\"v-2599bd96@0\",\"586\":\"v-580e7486\",\"587\":\"v-580e7486@0\",\"588\":\"v-207456c6\",\"589\":\"v-207456c6#频率分析作用\",\"590\":\"v-207456c6#步骤\",\"591\":\"v-207456c6#结构优化\",\"592\":\"v-207456c6#频率计算\",\"593\":\"v-207456c6#结果分析\",\"594\":\"v-207456c6#步数\",\"595\":\"v-207456c6#振动频率可视化\",\"596\":\"v-207456c6#outcar-中的信息\",\"597\":\"v-207456c6#零点能\",\"598\":\"v-207456c6#影响频率计算的因素\",\"599\":\"v-207456c6#备注\",\"600\":\"v-207456c6@0\",\"601\":\"v-bba3a0be\",\"602\":\"v-76a4ec21\",\"603\":\"v-76a4ec21#分子动力学\",\"604\":\"v-76a4ec21#步骤\",\"605\":\"v-76a4ec21#建模\",\"606\":\"v-76a4ec21#结构优化\",\"607\":\"v-76a4ec21#分子动力学-1\",\"608\":\"v-76a4ec21#结果分析\",\"609\":\"v-76a4ec21@0\",\"610\":\"v-2715d38a\",\"611\":\"v-6c38d36e\",\"612\":\"v-6c38d36e@0\",\"613\":\"v-89e8430c\",\"614\":\"v-89e8430c@0\",\"615\":\"v-6ba6606f\",\"616\":\"v-39c6dbde\",\"617\":\"v-39c6dbde#error-edddav-call-to-zhegv-failed-returncode-xx\",\"618\":\"v-39c6dbde#forrtl-severe-174-sigsegv-segmentation-fault-occurred\",\"619\":\"v-14e0ef58\",\"620\":\"v-14e0ef58#将-poscar-转换为-xsd-格式文件\",\"621\":\"v-14e0ef58#ase-的-ase-io-read-与-ase-io-write\",\"622\":\"v-14e0ef58#ase-io-read\",\"623\":\"v-14e0ef58#ase-io-write\",\"624\":\"v-14e0ef58#单份-poscar-文件转换为-xsd-文件\",\"625\":\"v-14e0ef58#将多份-poscar-文件转换为-xsd-文件\",\"626\":\"v-14e0ef58@1\",\"627\":\"v-818acdc8\",\"628\":\"v-7a387cd2\",\"629\":\"v-7a387cd2#locators-用来定位的术语\",\"630\":\"v-7a387cd2#months-月\",\"631\":\"v-7a387cd2#ordinals-序数\",\"632\":\"v-7a387cd2#quotation-marks-引号\",\"633\":\"v-7a387cd2#roles-角色\",\"634\":\"v-7a387cd2#seasons-季节\",\"635\":\"v-7a387cd2#miscellaneous-其他\",\"636\":\"v-bf62cb02\",\"637\":\"v-74326aa0\",\"638\":\"v-74326aa0#标准变量\",\"639\":\"v-74326aa0#数据变量\",\"640\":\"v-74326aa0#日期变量\",\"641\":\"v-74326aa0#名字变量\",\"642\":\"v-42793124\",\"643\":\"v-3e741b5c\",\"644\":\"v-0e1a9384\",\"645\":\"v-1bdaec70\",\"646\":\"v-f2c2fcf8\",\"647\":\"v-316e1a6a\",\"648\":\"v-31dd63ff\",\"649\":\"v-458c0b5b\",\"650\":\"v-1dd09e5c\"},\"fieldIds\":{\"h\":0,\"t\":1,\"c\":2},\"fieldLength\":{\"0\":[1,2],\"1\":[1],\"2\":[1],\"3\":[1,24],\"4\":[1,26],\"5\":[1,7],\"6\":[1,13],\"7\":[4,21],\"8\":[4,24],\"9\":[3,13],\"10\":[1,3],\"11\":[1],\"12\":[1,25],\"13\":[1,105],\"14\":[1,113],\"15\":[1,201],\"16\":[1,7],\"17\":[1,61],\"18\":[1],\"19\":[1,16],\"20\":[1],\"21\":[2,269],\"22\":[1],\"23\":[1,2],\"24\":[1,8],\"25\":[5,61],\"26\":[2,6],\"27\":[2,7],\"28\":[7,44],\"29\":[7,66],\"30\":[2,17],\"31\":[10,16],\"32\":[7,21],\"33\":[8,124],\"34\":[6,46],\"35\":[1,23],\"36\":[2,5],\"37\":[3,39],\"38\":[4,99],\"39\":[3,53],\"40\":[3,38],\"41\":[1,10],\"42\":[1,7],\"43\":[1],\"44\":[1,11],\"45\":[1,38],\"46\":[1],\"47\":[1,54],\"48\":[1,52],\"49\":[1,51],\"50\":[1,78],\"51\":[1],\"52\":[1,12],\"53\":[1,21],\"54\":[1],\"55\":[1,9],\"56\":[1,20],\"57\":[1,12],\"58\":[1,18],\"59\":[1,36],\"60\":[1],\"61\":[1,30],\"62\":[1,15],\"63\":[1,9],\"64\":[1,38],\"65\":[1,4],\"66\":[1,28],\"67\":[1,26],\"68\":[1,16],\"69\":[1,26],\"70\":[1,8],\"71\":[1,13],\"72\":[1,33],\"73\":[1],\"74\":[1,58],\"75\":[1,27],\"76\":[1,31],\"77\":[1,4],\"78\":[1,148],\"79\":[1,2],\"80\":[1,5],\"81\":[2],\"82\":[2,3],\"83\":[2,18],\"84\":[3],\"85\":[5,10],\"86\":[1,20],\"87\":[1,2],\"88\":[1,11],\"89\":[2],\"90\":[2,3],\"91\":[1,23],\"92\":[1,9],\"93\":[1],\"94\":[1,11],\"95\":[1,34],\"96\":[1,18],\"97\":[1,9],\"98\":[1,23],\"99\":[1,16],\"100\":[1],\"101\":[6,15],\"102\":[2,2],\"103\":[3],\"104\":[3,25],\"105\":[1,134],\"106\":[5,4],\"107\":[4,46],\"108\":[3,23],\"109\":[1],\"110\":[2],\"111\":[1,46],\"112\":[4,53],\"113\":[4,147],\"114\":[1],\"115\":[1],\"116\":[1,1],\"117\":[1],\"118\":[1],\"119\":[1],\"120\":[1],\"121\":[1,9],\"122\":[2,113],\"123\":[2,6],\"124\":[1,51],\"125\":[1,31],\"126\":[3],\"127\":[2,59],\"128\":[1,50],\"129\":[1,47],\"130\":[1,25],\"131\":[1,7],\"132\":[1,4],\"133\":[null,null,1],\"134\":[2,27],\"135\":[3,29],\"136\":[4,89],\"137\":[3,50],\"138\":[2,32],\"139\":[2,29],\"140\":[2,59],\"141\":[3,8],\"142\":[4,14],\"143\":[5,22],\"144\":[1,57],\"145\":[1,41],\"146\":[1,7],\"147\":[1,37],\"148\":[1,86],\"149\":[1,29],\"150\":[1,41],\"151\":[1,23],\"152\":[1,13],\"153\":[1,13],\"154\":[1,43],\"155\":[1,45],\"156\":[null,null,1],\"157\":[3,14],\"158\":[1,16],\"159\":[1,26],\"160\":[1,38],\"161\":[1,16],\"162\":[1],\"163\":[1],\"164\":[1,74],\"165\":[2,103],\"166\":[1],\"167\":[1],\"168\":[1,60],\"169\":[2,47],\"170\":[2,79],\"171\":[null,null,1],\"172\":[2,22],\"173\":[3],\"174\":[3,5],\"175\":[3,8],\"176\":[3,75],\"177\":[null,null,1],\"178\":[6],\"179\":[1],\"180\":[1,157],\"181\":[7,61],\"182\":[null,null,1],\"183\":[4,315],\"184\":[null,null,2],\"185\":[1],\"186\":[1],\"187\":[1,124],\"188\":[1,5],\"189\":[2],\"190\":[1,547],\"191\":[2],\"192\":[1,32],\"193\":[2,17],\"194\":[3,33],\"195\":[1,3],\"196\":[1,9],\"197\":[1,1],\"198\":[1,1],\"199\":[1,1],\"200\":[1,1],\"201\":[1,1],\"202\":[1,1],\"203\":[null,null,1],\"204\":[1,11],\"205\":[2,43],\"206\":[2,49],\"207\":[2,3],\"208\":[3,18],\"209\":[3,7],\"210\":[4,37],\"211\":[null,null,1],\"212\":[2,19],\"213\":[1,48],\"214\":[1],\"215\":[4,11],\"216\":[3,71],\"217\":[2,34],\"218\":[2,8],\"219\":[1,89],\"220\":[null,null,1],\"221\":[2,14],\"222\":[1,4],\"223\":[3,41],\"224\":[1,12],\"225\":[1,18],\"226\":[3,225],\"227\":[3,162],\"228\":[null,null,1],\"229\":[3],\"230\":[1,13],\"231\":[1,11],\"232\":[2,5],\"233\":[null,null,1],\"234\":[6,25],\"235\":[1,17],\"236\":[1,10],\"237\":[1,3],\"238\":[1,19],\"239\":[1,21],\"240\":[null,null,1],\"241\":[3,27],\"242\":[null,null,1],\"243\":[3,11],\"244\":[1],\"245\":[2,52],\"246\":[2,150],\"247\":[1,287],\"248\":[null,null,1],\"249\":[4],\"250\":[1],\"251\":[2,33],\"252\":[1],\"253\":[2,54],\"254\":[5,41],\"255\":[4,43],\"256\":[1,26],\"257\":[1],\"258\":[1,14],\"259\":[1,43],\"260\":[4,64],\"261\":[1],\"262\":[1,2],\"263\":[1,2],\"264\":[1,110],\"265\":[1,10],\"266\":[null,null,2],\"267\":[1],\"268\":[1,18],\"269\":[2],\"270\":[1,40],\"271\":[1,54],\"272\":[2,27],\"273\":[1,3],\"274\":[1,6],\"275\":[1,95],\"276\":[1,7],\"277\":[2,103],\"278\":[2,31],\"279\":[1,50],\"280\":[2,29],\"281\":[1],\"282\":[2,91],\"283\":[1,91],\"284\":[1,212],\"285\":[null,null,1],\"286\":[2,13],\"287\":[1],\"288\":[2,28],\"289\":[2,1],\"290\":[2,1],\"291\":[2,31],\"292\":[2,160],\"293\":[5,40],\"294\":[null,null,2],\"295\":[2,17],\"296\":[null,null,2],\"297\":[2],\"298\":[1,1],\"299\":[1,56],\"300\":[1,3],\"301\":[null,null,2],\"302\":[2,1],\"303\":[1,154],\"304\":[1,8],\"305\":[null,null,2],\"306\":[1,73],\"307\":[null,null,1],\"308\":[4,4],\"309\":[null,null,1],\"310\":[4,160],\"311\":[null,null,1],\"312\":[3,16],\"313\":[null,null,1],\"314\":[1],\"315\":[2,22],\"316\":[2,14],\"317\":[1],\"318\":[2],\"319\":[1,36],\"320\":[1,280],\"321\":[1,14],\"322\":[2],\"323\":[3,5],\"324\":[1],\"325\":[1,6],\"326\":[3,6],\"327\":[3,101],\"328\":[8,26],\"329\":[1,59],\"330\":[1,8],\"331\":[1,12],\"332\":[2,1],\"333\":[3,1],\"334\":[3,1],\"335\":[1,14],\"336\":[5,14],\"337\":[4,24],\"338\":[6,18],\"339\":[4,4],\"340\":[6,1],\"341\":[1,1],\"342\":[9,1],\"343\":[8,8],\"344\":[1],\"345\":[1,4],\"346\":[1,6],\"347\":[1,1],\"348\":[2,6],\"349\":[1,11],\"350\":[2,30],\"351\":[1,17],\"352\":[3,33],\"353\":[5,79],\"354\":[3,74],\"355\":[3,38],\"356\":[1,75],\"357\":[2,41],\"358\":[1,11],\"359\":[2,29],\"360\":[1,76],\"361\":[2,105],\"362\":[2,50],\"363\":[1,12],\"364\":[2,15],\"365\":[3,24],\"366\":[1,169],\"367\":[1,155],\"368\":[1,48],\"369\":[3,30],\"370\":[2,110],\"371\":[4,177],\"372\":[2,117],\"373\":[2,56],\"374\":[5,52],\"375\":[1,29],\"376\":[1,17],\"377\":[1,57],\"378\":[1,26],\"379\":[1,8],\"380\":[1,17],\"381\":[1,14],\"382\":[1,111],\"383\":[1,40],\"384\":[3,83],\"385\":[1,81],\"386\":[1,99],\"387\":[1,69],\"388\":[1,21],\"389\":[1,28],\"390\":[1,9],\"391\":[1,35],\"392\":[1,73],\"393\":[1,83],\"394\":[2,86],\"395\":[2,47],\"396\":[3,16],\"397\":[1,33],\"398\":[2,46],\"399\":[1,78],\"400\":[1,59],\"401\":[1,263],\"402\":[1,56],\"403\":[1,49],\"404\":[2,36],\"405\":[1,54],\"406\":[4,43],\"407\":[1,71],\"408\":[1,50],\"409\":[1,218],\"410\":[1,6],\"411\":[1,22],\"412\":[1],\"413\":[1,161],\"414\":[1,44],\"415\":[3,74],\"416\":[1,13],\"417\":[1],\"418\":[1,63],\"419\":[1,66],\"420\":[1,138],\"421\":[1,44],\"422\":[1,57],\"423\":[2,83],\"424\":[1,74],\"425\":[1,75],\"426\":[1,32],\"427\":[1,53],\"428\":[1,39],\"429\":[2,19],\"430\":[2,88],\"431\":[2,22],\"432\":[2,28],\"433\":[1,30],\"434\":[1,21],\"435\":[1,72],\"436\":[1,6],\"437\":[3,106],\"438\":[3,41],\"439\":[1,10],\"440\":[4,20],\"441\":[2,36],\"442\":[2,14],\"443\":[4,18],\"444\":[2,30],\"445\":[2,10],\"446\":[2,13],\"447\":[2,8],\"448\":[2,9],\"449\":[3,8],\"450\":[2,117],\"451\":[1,66],\"452\":[1,38],\"453\":[1,68],\"454\":[1,124],\"455\":[1,55],\"456\":[2,19],\"457\":[2,7],\"458\":[1,25],\"459\":[1,181],\"460\":[1,72],\"461\":[1,215],\"462\":[1,13],\"463\":[null,null,1],\"464\":[2,56],\"465\":[2],\"466\":[1,11],\"467\":[1,20],\"468\":[1,42],\"469\":[1,36],\"470\":[3,12],\"471\":[2],\"472\":[1,31],\"473\":[1,13],\"474\":[1,14],\"475\":[2],\"476\":[1,36],\"477\":[1,24],\"478\":[1,66],\"479\":[1,37],\"480\":[1,10],\"481\":[1,67],\"482\":[3],\"483\":[1,50],\"484\":[1,102],\"485\":[1,4],\"486\":[null,null,1],\"487\":[3,16],\"488\":[2,185],\"489\":[1,8],\"490\":[5,3],\"491\":[7,6],\"492\":[7,120],\"493\":[4,22],\"494\":[7,58],\"495\":[3,24],\"496\":[1,333],\"497\":[1,148],\"498\":[1,39],\"499\":[null,null,1],\"500\":[2,5],\"501\":[1,1],\"502\":[1,2],\"503\":[1,9],\"504\":[1,12],\"505\":[null,null,1],\"506\":[2],\"507\":[3,20],\"508\":[1,22],\"509\":[1],\"510\":[1,176],\"511\":[1,87],\"512\":[1,76],\"513\":[1,9],\"514\":[null,null,1],\"515\":[1,6],\"516\":[3,9],\"517\":[1,130],\"518\":[null,null,2],\"519\":[1,83],\"520\":[null,null,2],\"521\":[1],\"522\":[1,23],\"523\":[1,77],\"524\":[null,null,2],\"525\":[1,1],\"526\":[1,35],\"527\":[1,38],\"528\":[null,null,2],\"529\":[1],\"530\":[2,27],\"531\":[1,31],\"532\":[1,40],\"533\":[1],\"534\":[5,148],\"535\":[2,7],\"536\":[5,11],\"537\":[4,44],\"538\":[2,117],\"539\":[1],\"540\":[1],\"541\":[2,26],\"542\":[2,32],\"543\":[1,8],\"544\":[5,77],\"545\":[3,18],\"546\":[null,null,1],\"547\":[1,4],\"548\":[1,13],\"549\":[5,30],\"550\":[4,32],\"551\":[1,3],\"552\":[null,null,2],\"553\":[1,8],\"554\":[1,122],\"555\":[null,null,1],\"556\":[2,23],\"557\":[1],\"558\":[1],\"559\":[1,18],\"560\":[1,27],\"561\":[1,1],\"562\":[1,8],\"563\":[null,null,2],\"564\":[1],\"565\":[3],\"566\":[1,6],\"567\":[1,58],\"568\":[1],\"569\":[2,118],\"570\":[2,4],\"571\":[1,27],\"572\":[1,63],\"573\":[3,15],\"574\":[3],\"575\":[3,91],\"576\":[1,145],\"577\":[1,50],\"578\":[1,52],\"579\":[1,2],\"580\":[1,117],\"581\":[1],\"582\":[5,7],\"583\":[5,87],\"584\":[1,22],\"585\":[null,null,1],\"586\":[2,1],\"587\":[null,null,2],\"588\":[1,4],\"589\":[1,14],\"590\":[1],\"591\":[1,83],\"592\":[1,52],\"593\":[1],\"594\":[1,147],\"595\":[1,9],\"596\":[2,509],\"597\":[1,78],\"598\":[1,15],\"599\":[1,29],\"600\":[null,null,2],\"601\":[1],\"602\":[1,3],\"603\":[1],\"604\":[1],\"605\":[1,7],\"606\":[1,126],\"607\":[1,47],\"608\":[1,15],\"609\":[null,null,2],\"610\":[1],\"611\":[2,334],\"612\":[null,null,1],\"613\":[2,23],\"614\":[null,null,2],\"615\":[1],\"616\":[2],\"617\":[9,28],\"618\":[7,19],\"619\":[2],\"620\":[5,3],\"621\":[8,15],\"622\":[4,48],\"623\":[4,64],\"624\":[5,36],\"625\":[5,46],\"626\":[null,null,2],\"627\":[3,68],\"628\":[3,7],\"629\":[2,35],\"630\":[2,13],\"631\":[2,15],\"632\":[3,4],\"633\":[2,28],\"634\":[2,5],\"635\":[2,30],\"636\":[3,62],\"637\":[3,6],\"638\":[1,220],\"639\":[1,47],\"640\":[1,25],\"641\":[1,41],\"642\":[3,82],\"643\":[3,85],\"644\":[1],\"645\":[1],\"646\":[1],\"647\":[1],\"648\":[2],\"649\":[5],\"650\":[1]},\"averageFieldLength\":[1.8719814639801202,44.81590206715607,0.1721072789827091],\"storedFields\":{\"0\":{\"h\":\"博客\",\"t\":[\"北辞の窝。\"]},\"1\":{\"h\":\"配置策划与记录\"},\"2\":{\"h\":\"设置\"},\"3\":{\"h\":\"计划的目录划分\",\"t\":[\"C:\\\\\",\"Program Files / x86\",\"ProgramData\",\"Windows\",\"Users\",\"D:\\\\\",\"Northword\",\"Documents\",\"Downloads\",\"Music\",\"Pictures\",\"Videos\",\"OneDrive\",\"Working Assets\",\"Program Files\",\"Tools\",\"Games\",\"Backups\",\"Fav / library / Other Assets\",\"Temporary\"]},\"4\":{\"h\":\"目录相关的\",\"t\":[\"显示隐藏文件夹、扩展名\",\"更改用户文件夹文档、音乐等的路径\",\"配置Onedrive至D:/OneDrive\",\"创建库文件夹 \",\"Work Lib \",\"D:\\\\OneDrive\\\\Postgraduate\",\"D:\\\\OneDrive\\\\WorkFiles\",\"D:\\\\Working Assets\",\"FileRecv Lib \",\"D:\\\\Downloads\",\"D:\\\\Documents\\\\Tencent Files\\\\910687889\\\\FileRecv\",\"D:\\\\Documents\\\\Virtual Machines\\\\Shared folder\",\"D:\\\\Documents\\\\WeChat Files\\\\northword\\\\Files\"]},\"5\":{\"h\":\"软件\",\"t\":[\"默认分区两个,暂定一个系统与软件盘(100 G),一个数据盘(375 G)。\"]},\"6\":{\"h\":\"应用商店\",\"t\":[\"[x] SniPaste\",\"[ ] ModernFlyouts\",\"[ ] EarTrumpet\",\"[ ] Eyepetizer\",\"[ ] Picture Share\",\"[ ] PPT模板大全\",\"[ ] Windows Terminal\",\"[x] 便笺\",\"[ ] 有道词典\"]},\"7\":{\"h\":\"C:\\\\program files 常用软件和非专业软件\",\"t\":[\"[x] 火绒\",\"[x] Bandizip / 7-zip\",\"[ ] PotPlayer\",\"[ ] Firefox\",\"[x] QTTabBar\",\"[ ] EasyConnet\",\"[ ] GitHub Desktop\",\"[ ] Node.js\",\"[ ] PyCharm\",\"[ ] Python\",\"[ ] TIM\",\"[ ] 微信\",\"[ ] 百度网盘\",\"[ ] 智能互联\",\"[ ] 看图王\",\"[ ]\"]},\"8\":{\"h\":\"D:\\\\program files 专业软件和大型的软件\",\"t\":[\"[ ] Adobe | PS、PR、AE、AU、AI、Acrobat、AME\",\"[ ] AutoCAD\",\"[ ] Materials Studio\",\"[ ] CAJView\",\"[ ] EndNote\",\"[ ] SPSS\",\"[ ] Origin\",\"[ ] iMazing\",\"[ ] MathType\",\"[ ] MATLAB\",\"[ ]\",\"[ ] VMware\",\"[ ] Xshell / XFTP / XManager\"]},\"9\":{\"h\":\"D:\\\\Tools 小工具和便携式软件\",\"t\":[\"[ ] Typora\",\"[ ] Anydesk / Todesk\",\"[ ] Bandicam\",\"[ ] Clash\",\"[ ] Jellyfin\",\"[ ] Listary\",\"[ ] Everything\",\"[ ] 小丸\",\"[ ] keepass\",\"[ ] npp\",\"[ ] MICloud\"]},\"10\":{\"h\":\"其他\",\"t\":[\"spacedesk\",\"方方格子\",\"Islide\"]},\"11\":{\"h\":\"考研的一些总结\"},\"12\":{\"h\":\"引言\",\"t\":[\"20 考生,101 政治 78,204 英语二 77,302 数学二 89,838 环境学 103,总分 347,初试排名 20+,复试排名 10,总排名 14。\",\"谈一谈这一年踩过的坑与心得。\",\"就按照考试顺序吧。\"]},\"13\":{\"h\":\"政治\",\"t\":[\"考研政治其实跟好肖秀荣就够了,我先列一下我的:\",\"基础,6 月—9 月上旬。主要是明白你都学了些什么鬼东西。听徐涛的视频课,划肖秀荣知识点,做 1000 题。这个工作暑假开始时开始即可,暑假结束前应基本结束(大概)。我是 9 月中下旬结束的视频课和 1000 题第一遍+马原第二遍,属于比较慢的(虽然班里还有些比我还慢的)。\",\"肖秀荣知识点精讲精练\",\"肖秀荣 1000 题\",\"徐涛的强化班视频\",\"**强化,9—11 月中旬。**主要是强化选择题。做 1000 题,至少至少两遍。做的时候记得按照线索归纳总结。这段时间肖秀荣知识点摘要和腿姐的背诵手册应该就发货了,参照着做选择题。如果有余力,背肖秀荣的考点预测。考研政治拉分就在选择上,尤其是多选,腿姐后面有个选择题技巧班,可以听。\",\"同时强烈建议能有一个 iPad,那样可以找到 1000 题电子版二刷三刷很方便,不仅是政治 1000 题,很多书都有电子版,那些并不会常看的,直接就在 pad 上浏览了。\",\"需要的话可以整理一个用乱七八糟的小方法提高效率的文档。\",\"腿姐考研政治真题(电子版)\",\"肖秀荣知识点摘要和腿姐背诵手册结合看\",\"肖秀荣考点预测\",\"**冲刺,11 月中旬—12 月考前一天。**11 月中旬发肖八,12 月中上旬发肖四。分析题把肖四背过,完完全全的背过,就足够了。(年年都有说肖秀荣没压住,今年不压了之类的,年年都是真香),分析题有个 bili UP 叫“空卡空卡空空卡”,会总结一些口诀辅助记忆,可以关注一下。小白考研的东西,怎么说呢,那就是分了下段,我看用的人不少,不过我习惯拿着答案了。还有个研木易木子,比较注重逻辑,就这三个结合着看吧。之后再搞一些其他的卷子做做选择就好。还要注意一点,不要贪多,到那时候肯定是卷子满天飞,谁谁都给你搞模拟题,谁谁都出压题课,技巧班的,记得抓住一个人的背好就够了,千万别被带歪了,重点是要记住,而不是看了课。\",\"注意:肖四肖八上的每一个选择题都要记住,肖四的每个分析题都要背了。\",\"肖秀荣八套卷\",\"肖秀荣最后四套卷\",\"腿姐四套卷\",\"腿姐的选择题技巧班\",\"这时候你们应该买好了政治资料了,要不然涨价涨的可是快了。当然双十一也可以。\",\"买的时候找好店铺,尤其是肖四,要不然别人都背了一页了,你的还没发回来。\"]},\"14\":{\"h\":\"数学\",\"t\":[\"讲道理我数学可不好,我只瞎说。\",\"课本,1 月—3 月,基础不好的才有这一步,基础好的直接跳过,时间弹性调整。大三下开学前应该是要把高数上搞完的,下册其实无所谓。代数过不过课本也没啥,有余力看一看还是好的。我当时大三下开学时也并没有过完课本,只把高数上过到了不定积分,然后后面就随意看了看,没有很认真(这样是不对的)。\",\"image-20200520164428979\",\"**基础,3 月—6 月中旬,**这段时间就上基础班呗,然后做做习题集,边看边做题,比如 660、1000、1800,做一本就好。暑假前最好能完整上完基础班,或是跟视频课,或是看全书自学,总之高数+代数基础班知识点要完成。\",\"至于跟那个老师,这玩意看人,张宇、汤家凤、李永乐团队几个老师都听一听,觉得哪个适合自己跟哪个。高数就不说了,我是真没意见。至于代数,就老老实实跟李永乐吧,线代王不是吹出来的。李永乐基础班讲义是《复习全书 基础篇 第二篇》,注意是基础篇,不是数二版,这俩差别还是蛮大的,基础班是给寒假提前开始学数学的人准备的,内容相对少、简单,数二版是给自学的人准备的。没必要买这本书,找找电子版打印一下就好,没几页。强化班用的《线性代数辅导讲义》。个人觉得,基础阶段就把讲义做会,660 上线代做一做,强化阶段讲义上题就不少,做会他,再折回去看看 660。\",\"**强化,6 月中旬—9 月,**这段时间暑假嘛,所谓强化班就把知识点串起来了,习题也更难一些。19 年张宇的体系强化班讲义是闭关修炼,6 月 19 号发到的。也临近期末,就先折腾期末考试吧,但是别折腾几天考试把知识点忘完了就行。\",\"9 月前,结束强化课和习题集。习题集应该两边以上吧,一遍记不住哇。\",\"**真题,9 月中旬—11 月下旬,**看个人情况决定要做几年真题,16、18 好像比较难,甚至空过去都可以,做这两年的着实打击人,当然,数学好的就忽略这句话。按年份按篇章都可以,看人。我是 9.11 开始的第一道真题。真题买张宇真题大全解就好,感觉这本的质量比较高(排版和解析方法)。\",\"**模拟题,11 月下旬—12 月,**要是真题做的慢,这一步都会被直接略掉[/捂脸],张宇八套卷四套卷难难的,反正我是没做几份模拟题,压根没想拿高分,过线就行— —。李林四套卷是蛮简单的其实,不过冲着押题去找李林还是算辽。\"]},\"15\":{\"h\":\"英语\",\"t\":[\"首先要评估自己的英语情况,觉得基础不太行,比如会说出“you is a pig”的人,那还是趁早去打基础的好。\",\"把英语分为词汇、长难句、阅读、翻译、作文五个阶段。\",\"词汇,某乎和一些考研老师一直宣称要把单词背几遍几遍云云,其实真能背完的还真不多,我就只背了 2k 左右,并且我没有用词汇书,就用墨墨直接背。墨墨会把你不会的单词疯狂出现,一直记不住的甚至一个多月天天出现,想不记住都有些难。背单词这个因人而异,用了墨墨后,我是第一次觉得我真的记住了单词,大概我适合这种方式,所以就一直用下来了。也有人习惯用单词书,一遍一遍快速过。总之尽可能把单词背完,最少最少最少也要把高中频单词记住!开始真题后,真题上的单词必须必须必须记住!\",\"有几个墨墨使用上的小提示:\",\"多设备同步学习需要再 A 设备备份后,再在 B 设备还原,才能同步学习记录。\",\"墨墨收费,但是能确保没天都打卡的话,其实打卡送的额度是够用的。不够就买嘛,50 块 4400 个单词。不太建议用破解版。\",\"你可以创建自己的词库,这对做真题时很有用,做一份题,把生词加入自己的词库,把这些单词加入学习计划,确保能记住。\",\"长难句和语法,基础不好的可以跟新东方田静,讲解很基础了(甚至我觉得有点简单都没看完[/捂脸]),配套书是《句句真研》。基础好的可以直接上阅读。英二甚至可以不学语法,当然最终以自己实际情况决定。\",\"真题,首推张剑黄皮书,讲解很细致很全,看了看黄皮书的答案解析,再回去看看四六级(我当时报的考虫)以及以前学英语的答案,简直就是** — —。\",\"阅读,可以跟唐迟,但是建议找旧版本视频,比如 18 年的还可以接受。反正我觉得 20 的不好,方法就是那些,变化也不大,最终还是得看自己练习。20 年的直播课经常拖堂,拖堂又不是讲的东西多了,大多是他讲的慢或者讲其他的搞的,一拖半小时的,完了还美名对学生负责,无偿加课时。——喵喵喵?没有能力控制自己的讲解节奏,导致课时安排出错,学生后续计划被推迟,难道不是作为一个老师的失败么?怎么还光荣起来了?? 不过之前的课在新东方录的非直播课还可以。另,不要做模拟题,至少考前一个月内你得用真题适应风格。\",\"翻译,新东方唐静。其实我觉得对于英二,这一块没哈必要看哈,有点...简单?英一倒是可以看看,这老师挺实在的。\",\"新题型,英二没必要看,过于简单,看的话唐迟有一节课,随意看看就行,英二新题型错一个都是罪过。英一的不太容易,但是我不知道怎么办。\",\"作文,我是背作文的支持者。我相信有输入才有输出。王江涛作文那些背一背,他基础阶段给 20 篇,强化阶段给 20 篇,不用全背,他要求背 20 篇,我觉得 10 篇左右就可(主要是我记不住了/哭),重点是要背熟,绝对的熟,能随口说出来组织出来一句话的那种,就像以前背课文第一句话那种的熟练程度。然后默写,很流利不用停笔想还能无错误的那种程度。他有几节课?可以看看,对了解作文结构、改模板还有些帮助。之后再找模板(对的,还是得要模板),不过是自己改模板了,我去年用的见山英二模板,但是几乎完全替换了首段和部分中间段落。(模板考前一个月完成就足够)。考前那段时间会有好多所谓押题预测,完全不需要理会,压住就扯淡,自己在公众号上发个百八十篇的,还只压住了个话题,那 tm 谁不会,我都能自称考研英语名师。\",\"有人说背作文没用,说根本写不出来,还不如记模板。——背的作文质量太差,或背的不熟。\",\"还有说都背王江涛的,全是重复的。——这随意咯,反正背的人看起来不少,这能写出来的却并不多。\",\"完形填空,这道题很多人都没时间做的。我推荐新东方易熙人。说实在的,好多老师吹的什么高频词红花词绿叶词虚词高频 balabala 的,基本没用,几十年考研英语他也就能给你挑出来那么几个特例,往那儿一摆,学生一看,“哇!好厉害!”,等他真的自己做的时候就憨了。说到底还是得实打实的搞他。易熙人也搞那一套,不过并不强调,也就随口一提。起码我后期跟的几篇完形填空真题讲解质量还不错。\",\"这些老师大多都有基础课和强化课,其实讲的内容差不了多少,自己感觉一两个视频看需不需要听就好。反正,所有的科目都是:少看视频多做题。\",\"阅读和完形,第一次做大概都会错很多,无所谓,按部就班学就好,千万别慌,一慌就到处换老师[/捂脸]\"]},\"16\":{\"h\":\"专业课\",\"t\":[\"第一遍不要只看,要背!\",\"第一遍不要只看,要背!\",\"第一遍不要只看,要背!\",\"你会发现不背只看,看一遍再回头看以及全忘完了[/捂脸]\",\"暑假期间应该开始专业课学习。\"]},\"17\":{\"h\":\"其他\",\"t\":[\"千万别忽视政治和英语,虽然有人说英语决定能不能上,数学决定能上的上限,但是我这次却是政治和英语提了不少分才勉强有机会。\",\"找学校千万别只看最低录取线,至少看到中间去。\",\"确定了目标就努力努力努力,不要害怕,不要放弃,管他能不能考上?学就 vans 了。\",\"整个考研期间,你 可能 会经历数次心态崩溃,我们这一届好几个女生都学着学着就崩溃了,这很正常,调整过来继续学就好,如果,你有崩溃的时候,只需要明白,这是正常现象,坚持学下去就好。我们年级崩溃过好几次的几位,浙大、厦大、中海洋,都录取了。\",\"淘宝有 A4 大小的线环网格笔记本,我 jio 得还挺好用。\",\"草稿纸可以直接淘宝买 A4 纸,十块左右一沓,一年都用不完。\",\"打印大量且不着急可以直接淘宝,便宜得多。\",\"临近考试可以买答题纸模拟,淘宝就有,一般情况下,数学英语各十张足够了。政治和专业课答题纸都是空白的,要是写不齐,可以用打格尺。\",\"做笔记要贴的话纸胶带是个不错的选择。\",\"英语字体可以练练。\",\"学的时候就认真学,一下手机都不要碰!\",\"一定选好学校,有时候,考得好不如选的好。考研是场信息不对称的考试,有时候信息比你的努力更重要。\",\"及时回顾已经学过的,要不然忘完了。\"]},\"18\":{\"h\":\"材料表征\"},\"19\":{\"h\":\"Raman\",\"t\":[\"波数与波长成反比,波数是指单位长度内的周波数,这里的单位长度一般是 1 厘米(cm−1)。\",\"1 厘米内的周波数少了,当然是每个周波的长度增加了,即向长波方向移动了(红移)。反之就是蓝移了。\",\"偏移:\",\"高波数 -> 蓝移\",\"低波数 -> 红移\"]},\"20\":{\"h\":\"SEM\"},\"21\":{\"h\":\"X 射线吸收谱\",\"t\":[\"download form 精品干货:X射线吸收谱基础知识(一) - 哔哩哔哩 (bilibili.com)\",\"撰文:LY & CWX 编辑:DJ\",\"前言:\",\"随着同步辐射光源的建造,X 射线吸收谱学方法(XAS)得到了前所未有的发展,在物质结构表征(包括原子结构及电子结构等)、理化性能解释(比如单原子催化剂位点研究、In-situ/operando 测试等)都发挥着越来越重要的作用,前沿研究中都经常看见其身影。一直以来,可以说 XAFS 都是基于同步辐射的各种表征手段中同步辐射技术中应用范围最广泛广的技术之一。\",\"目前,在大陆布局的同步辐射光源装置主要有 北京同步辐射装置(BSRF,第一代光源)、中国科学技术大学里的 合肥国家同步辐射国家实验室(NSRL,第二代光源)、以及 上海光源(SSRF,第三代光源),对国内众多基础科学的研究发挥了重要支撑作用。\",\"而上海光源二期工程的开展,规划中的北京先进光源(高能光源)以及各能量段的自由电子激光(FEL)装置(包括极紫外区 - 大连、软 X 射线区 - 上海、硬 X- 射线区 - 地点待定,FEL 被认为是第四代光源)的建设极有可能在未来数年内建成也必将极大的推动国内 X 射线吸收谱的发展掀起新一轮 XAS 应用高潮,为前沿基础科学、高技术研究提供不可或缺的手段。(高能同步辐射光源、硬 X 射线自由电子激光装置已列入 2017 年发布的《国家重大科技基础设施建设“十三五”规划》,属于优先布局的十个重大科技基础设施建设项目。)\",\"图 1. 同步辐射装置的发展(图片来源:Science, 2011, 334, 1234-1239.)\",\"一直以来,XAFS 都是基于同步辐射的各种表征手段中应用范围最广泛的技术之一。小编将分几期内容来跟大家简单介绍一些 XAS 以及同步辐射的基本知识,希望对大家看文献与做研究有所帮助。今天是第一期,我们先给大家一个初步的吸收谱的印象。\",\"A.什么是****X 射线?\",\"图 2.波长与能量的关系\",\"X 射线又称伦琴射线,是一种波长介于紫外线与γ射线之间的电磁波,波长约为 0.01~10nm,其能量范围为 100 eV-100 keV。X 射线根据其能量高低可以分为 硬****X 射线和软 X 射线。能量为 1-10 keV,波长为 0.2-0.1 nm 以下的称之为硬 X 射线,波长大于 0.1 nm 则称之为软 X 射线(X- 射线的软硬之分并没有严格界限)。\",\"硬****X 射线能量高,穿透能力强,波长与原子半径相当,基于硬 X 射线的表征方法(如衍射、散射、吸收等)已被广泛应用于物质原子结构分析中。而软 X 射线,能量较低,对样品辐射损伤相对较小(但容易被空气或水吸收而发生衰减),在电子结构分析、物质成像研究中发挥着重要作用。\",\"图 3.X- 射线和物质的相互作用(图片来源:BSRF 的 XAS 讲习班)\",\"B.什么是****X 射线吸收光谱(XAS)?什么是吸收边?\",\"当 X 射线穿过样品时,由于样品对 X 射线的吸收,光的强度会发生衰减,这种衰减与样品的组成及结构密切相关。X 射线吸收光谱就是利用 X 射线入射前后信号变化来分析材料元素组成,电子态及微观结构等信息的光谱学手段。XAS 方法通常具有元素分辨性,几乎对所有原子都具有相应性,对固体(晶体或非晶)、液体、气体等各类样品都可以进行相关测试。\",\"以透射模式为例,大家可以简单类比成我们熟悉的紫外可见吸收光谱。\",\"图 4. 物质对 X 射线的吸收\",\"入射光 I 与出射光 I0 的强度遵从朗伯比尔定律:\",\"而 吸收系数μ 表征 X 射线被样品吸收的概率,μ与样品的密度(ρ),元素的原子序数(Z)有关,而 t 为样品厚度。而最为重要的是,μ对 X 射线能量(E)也是敏感的:\",\"思考:为什么 XAS 要采用同步辐射光源?什么是吸收边?\",\"当 X 射线能量等于被照射样品某内层电子的电离能时,会发生共振吸收,使电子电离为光电子,而 X 射线吸收系数发生突变,这种突跃称之为吸收边(Edge)。原子中不同主量子数的电子的吸收边相距颇远,按主量子数命名为 K、L……吸收边等。注意:每一种元素都有其特征的吸收边系,因此 XAS 可以用于元素的定性分析。此外,吸收边的位置与元素的价态相关,氧化价增加,吸收边会向高能侧移动(一般化学价 +1,吸收边移动 2-3 eV),因此同种元素,化合价不同也识可以分辨出来。\",\"图 5.能级与吸收边\",\"普通化学知识补充:原子外层电子根据排布轨道的不同,不同主量子数对应的轨道依为:主量子数(n)1 2 3 4 5 6 7 电子层符号 K L M N O P Q\",\"C.什么是****X 射线吸收精细结构(X-ray Absorption Fine Structure)?\",\"人们发现,X 射线吸收光谱在吸收边附近及其高能量端存在一些分立的峰或波状起伏,称为精细结构。如下图所示:\",\"图 6.XANES 和 EXAFS 的划分\",\"精细结构从吸收边前至高能延伸段约 1000eV, 根据其形成机制(多重散射与单次散射)的不同,可以分为 XANES 和 EXAFS(两者并无严格界限):\",\"XANES (X 射线吸收近边结构,X-ray Absorption Near Edge Structure),对于软线 XAS 谱而言通常也被称作 NEXAFS(Near-Edge X-ray Absorption Fine Structure)\",\"范围:吸收边前 - 吸收边后 50eV,\",\"特点: 振荡剧烈(吸收信号清晰,易于测量);谱采集时间短,适合于时间分辨实验;对价态、未占据电子态和电荷转移等化学信息敏感;对温度依懒性很弱,可用于高温原位化学实验;具有简单的“指纹效应”,可快速鉴别元素的化学种类。\",\"EXAFS (扩展 X 射线吸收精细结构谱, Extend X-ray Absorption Fine Structure )\",\"范围:吸收边后 50eV - 1000eV,\",\"特点: 可以得到中心原子与配位原子的键长、配位数、无序度等信息。不过,EXAFS 对立体结构并不敏感。\"]},\"22\":{\"h\":\"XRD\"},\"23\":{\"h\":\"代码笔记\",\"t\":[\"这里存放一些与代码和编程有关的笔记。\"]},\"24\":{\"h\":\"目录\",\"t\":[\"Linux\",\"Git\",\"Python\",\"JavaScript\",\"Vue.js\",\"PHP\",\"中文技术文档写作规范\"]},\"25\":{\"h\":\"在 Windows 中使用 Bash shell\",\"t\":[\"概述:Git Bash 内置了 Vim 和多数 Linux 命令,使用 Git Bash 为默认终端能提高 Win 端终端操作文件的效率 本文语雀地址:https://www.yuque.com/achuan-2/blog/eu4rbz 本文博客地址:https://achuan-2.github.io/posts/be43.html source: https://zhuanlan.zhihu.com/p/418321777\",\"前排介绍\",\"Git bash 是什么?\",\"Git Bash 源自 MinGW, 是一个用于开发原生 Window 应用的开发环境, 提供了针对 WIn32 应用的 GCC、GNU binutils 等工具.\",\"为什么要用 Git Bash?\",\"Windows 下的 Powershell 并不好用,或者说我并不知道如何使用。既然相较之下,更熟悉 Linux 命令行,就干脆把 Git Bash 当作默认终端了。Git Bash 自带 Vim,还集成了许多 Linux 命令,对我来说更加顺手\"]},\"26\":{\"h\":\"0 准备工作\",\"t\":[\"Windows 下载地址:Git for Windows\",\"安装教程随便网上找一篇就好了,不多说\"]},\"27\":{\"h\":\"1 设置为默认终端\",\"t\":[\"Windows Terminal 配置 Git bash 为默认终端\",\"VSCode 配置 Git bash 为默认终端\"]},\"28\":{\"h\":\"1.1 Windows Terminal 配置 Git bash 为默认终端\",\"t\":[\"现在 Windows Terminal 有了图形界面,直接选择就好\",\"具体 json 文件配置\",\"\\\"defaultProfile\\\": \\\"{c891c3d2-b798-4857-83c0-89bf2ea34021}\\\", \\\"profiles\\\": { \\\"defaults\\\": { ... }, \\\"list\\\": [ { \\\"commandline\\\": \\\"D:\\\\\\\\Environment\\\\\\\\Git\\\\\\\\bin\\\\\\\\bash.exe --login -i\\\", \\\"guid\\\": \\\"{c891c3d2-b798-4857-83c0-89bf2ea34021}\\\", \\\"name\\\": \\\"Git Bash\\\", \\\"icon\\\": \\\"D:\\\\\\\\Program_Files\\\\\\\\Git\\\\\\\\mingw64\\\\\\\\share\\\\\\\\git\\\\\\\\git-for-windows.ico\\\" }, \",\"其中 \\\"commandline\\\": \\\"D:\\\\\\\\Environment\\\\\\\\Git\\\\\\\\bin\\\\\\\\bash.exe --login -i\\\",\",\"之所以加了--login -i 后面见 「2 可能出现的问题」\"]},\"29\":{\"h\":\"1.2 VSCode 配置 Git bash 为默认终端\",\"t\":[\"前排提示:我最初在网上搜索,发现之前许多教程里的 json 变量 “terminal.integrated.shell.windows” 已经过时了,现在是需要配置 profiles。\",\"参考官网的文档:Integrated Terminal in Visual Studio Code\",\"Ctrl+,打开设置,搜索 shell:windows,在 settings.json 的最后添加下面的配置\",\"自行修改 Git Bash 和 Powershell exe 的路径\",\"\\\"terminal.integrated.automationShell.windows\\\": \\\"D:\\\\\\\\Environment\\\\\\\\Git\\\\\\\\bin\\\\\\\\bash.exe\\\", \\\"terminal.integrated.profiles.windows\\\": { \\\"PowerShell\\\": { \\\"path\\\": \\\"C:\\\\\\\\Program Files\\\\\\\\PowerShell\\\\\\\\7-preview\\\\\\\\pwsh.exe\\\", \\\"icon\\\": \\\"terminal-powershell\\\", \\\"args\\\": [ \\\"-NoLogo\\\" //不显示 powershell 开头的输出 //不加载Powershell的配置和美化 //,\\\"-NoProfile\\\" ] }, \\\"Command Prompt\\\": { \\\"path\\\": [ \\\"${env:windir}\\\\\\\\Sysnative\\\\\\\\cmd.exe\\\", \\\"${env:windir}\\\\\\\\System32\\\\\\\\cmd.exe\\\" ], \\\"args\\\": [], \\\"icon\\\": \\\"terminal-cmd\\\" }, \\\"Bash\\\": { \\\"path\\\": [ \\\"D:\\\\\\\\Environment\\\\\\\\Git\\\\\\\\bin\\\\\\\\bash.exe\\\" //Git bash路径 ], \\\"icon\\\": \\\"terminal-bash\\\", \\\"args\\\": [\\\"-i\\\",\\\"-l\\\"] // 激活Git在外部的配置 } }, \"]},\"30\":{\"h\":\"2 可能出现的配置问题\",\"t\":[\"Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置\",\"Git Bash 不会加载 ~/.bashrc 的配置\",\"Git-Bash 修改前缀 (隐藏用户 @ 主机)\",\"修复 Git Bash 中文乱码\"]},\"31\":{\"h\":\"2.1 Windows Terminal 和 VSCode 打开 Git Bash,发现不会加载配置\",\"t\":[\"解决方法,其实上面已经给出了,就是在 bash.exe 后面加-l, - i 配置,这样激活 Git Bash 就会加载 ~/.bash_profile 的配置\"]},\"32\":{\"h\":\"2.2 Git Bash 不会加载 ~/.bashrc 的配置\",\"t\":[\"确实是这样,Git Bash 在 Win 端只会 source ~/.bash_profile 而不会激活 ~/.bashrc 的配置。所以如果你和我一样,喜欢在 ~/.bashrc 配置别名,在 ~/.bash_profile 配置环境的话,\",\"解决方法是那就在 ~/.bash_profile 加一行,source ~/.bashrc 就好啦!\"]},\"33\":{\"h\":\"2.3 Git-Bash 修改前缀 (隐藏用户 @ 主机)\",\"t\":[\"如果直接打开 Git Bash 终端,你会发现显示的东西很冗余\",\"有用户 @ 主机名,MINGW64,绝对路径。其中前面两个都是固定的,所以就想要把这个隐藏\",\"在 Git-Bash 中我们输入以下代码: vi ~/.bash_profile , 然后把以下内容添加到配置文件里面。我这里是隐藏了用户 @ 主机,同时把绝对路径改成了只显示当前文件夹, 需要看全路径的话用 pwd 就显示了。这样不至于截图、被人看到时,太暴露隐私哈哈哈。\",\"根据需要自行选择配置。\",\"# Shows Git branch name in prompt. parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \\\\(.*\\\\)/ (\\\\1)/' } # 显示 用户 @ 主机 # export PS1=\\\"\\\\u@\\\\h \\\\W\\\\[\\\\033[32m\\\\]\\\\$(parse_git_branch)\\\\[\\\\033[00m\\\\] $ \\\" # 隐藏用户 @ 主机,显示当前文件夹 #export PS1=\\\"\\\\W\\\\[\\\\033[32m\\\\]\\\\$(parse_git_branch)\\\\[\\\\033[00m\\\\]\\\" # 只显示当前文件夹 export PS1=\\\"\\\\[\\\\e[32;1m\\\\]\\\\W $\\\\[\\\\e[0m\\\\]\\\\[\\\\033[32m\\\\]\\\\$(parse_git_branch)\\\\[\\\\033[00m\\\\] \\\" # 显示全路径 #export PS1=\\\"\\\\[\\\\e[32;1m\\\\]\\\\w $\\\\[\\\\e[0m\\\\]\\\\[\\\\033[32m\\\\]\\\\$(parse_git_branch)\\\\[\\\\033[00m\\\\] \\\" \",\"粘贴完后,source .bash_profile 的结果\",\"补充下环境下默认的特殊符号所代表的意义:\",\"\\\\u :当前用户的账号名称\",\"\\\\w :完整的工作目录名称。家目录会以 ~代替\",\"\\\\W :利用 basename 取得工作目录名称,所以只会列出最后一个目录\",\"\\\\H:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是 fc4.linux\",\"\\\\h :仅取主机的第一个名字,如上例,则为 fc4,.linux 则被省略\",\"\\\\d :代表日期,格式为 weekday month date,例如:\\\"Mon Aug1\\\"\",\"\\\\t :显示时间为 24 小时格式,如:HH:MM:SS\",\"\\\\T :显示时间为 12 小时格式\",\"\\\\A :显示时间为 24 小时格式:HH:MM\",\"\\\\v :BASH 的版本信息\",\"# :下达的第几个命令\",\"$ :提示字符,如果是 root 时,提示符为:# ,普通用户则为:$\",\"参考:\",\"linux 系统终端命令提示符设置(PS1)记录 - 散尽浮华 - 博客园 (cnblogs.com)\"]},\"34\":{\"h\":\"2.4 修复 Git Bash 中文乱码\",\"t\":[\"Git bash 自身配置:\",\"终端不能显示中文:打开 Git bash,右键打开选项, Options->Text->Locale 改为 zh_CN,Character set 改为 UTF-8\",\"解决 git status 不能显示中文:终端输入 git config --global core.quotepath false\",\"Windows Terminal 和 VSCode 中别忘了添加 --login -i 参数\",\"参考资料:\",\"Windows Terminal 修复 Git Bash 中文乱码 && 添加 WT 到右键菜单 - 知乎 (zhihu.com)\",\"git 显示中文和解决中文乱码 - 知乎 (zhihu.com)\"]},\"35\":{\"h\":\"解决中文无法显示的问题\",\"t\":[\"Win10也要愉快地使用Bash - 掘金 (juejin.cn)\",\"打开Git安装目录下的 C:\\\\Git\\\\etc\\\\bash.bashrc (具体路径以你安装的为准)文件,在末尾追加一行:\",\"export LC_ALL=en_US.UTF-8 复制代码 \",\"并保存,重启终端就好了。\"]},\"36\":{\"h\":\"3 你可能不知道却非常有用的技巧\",\"t\":[\"在终端启动软件查看文件\",\"Linux 下常用软件下载\",\"资源管理器地址妙用,直接在终端打开当前文件夹\"]},\"37\":{\"h\":\"3.1 在终端启动软件查看文件\",\"t\":[\"在终端如何快速查看文件\",\"Windows 里有一个很有用的命令 「start」,start . 用资源管理器打开当前目录(或用 explorer .),start 文件名 用默认软件打开这个文件,这样就不用开了终端,还要手动去找这个文件再查看了,工作流得到优化\",\"在终端以 VSCode 打开当前项目\",\"首先需要在环境变量 Path 中添加 VSCode 的 Code.exe 地址,比如我的是 D:\\\\Program_Files\\\\Microsoft VS Code\\\\Code.exe\",\"然后在终端下使用 code ./ 就可以打开当前项目\",\"参考:\",\"Windows 小技巧 -- 命令行窗口打开指定目录的资源管理器_Anyers 的专栏-CSDN 博客_命令行打开资源管理器\"]},\"38\":{\"h\":\"3.2 Linux 下常用软件下载\",\"t\":[\"安装 tree 以树形显示文件结构\",\"安装\",\"下载地址:Tree for Windows (sourceforge.net),下载 Binaries 的 Zip 文件\",\"下载解压完成后,将 bin 目录下的 tree.exe 复制到 Git Bash 安装路径下的 usr/bin 文件夹下,完成\",\"常用命令\",\"基本命令格式:tree [-option] [dir]\",\"显示中文,-N,如果中文名是中文,不加-N 有些电脑上是乱码的\",\"选择展示的层级:-L [n]\",\"只显示文件夹:-d\",\"区分文件夹、普通文件、执行文件:-FC,C 是加上颜色,\",\"起别名:可以起一个别名 alias tree='tree -FCN'\",\"输出目录结构到文件,写文档的时候需要展示项目目录就会用到 tree -L 2 -I '*.js|node_modules|*.md|*.json|*.css|*.ht' > tree.txt\",\"添加 wget 下载工具\",\"安装\",\"下载 wget 二进制安装包,地址:https://eternallybored.org/misc/wget/2\",\"移动到 Git Bash 安装路径下的 usr/bin 文件夹下,完成\",\"常用命令\",\"最直接的下载命令:wget [url]\",\"指定文件名 -O\",\"指定目录 -P\",\"下载多个文件 wget -i [url.txt]\",\"断点续传 wget -c -t [n] [url],n 代表尝试的次数,0 代表一直尝试\",\"后台执行:wget -b [url] 可以添加 -b 选项,这时执行该命令的回显信息都会自动存储在 wget.log 文件中\",\"下载一个网站的所有图片、视频、pdf wget -r -A.pdf url\"]},\"39\":{\"h\":\"3.3 资源管理器地址妙用,直接在终端打开当前文件夹\",\"t\":[\"alt + d 可以直接把光标移动到资源管理器地址栏,对于不同终端\",\"cmd: 输入 cmd\",\"Windows Terminal:输入 wt\",\"Git Bash: 输入 bash\",\"VSCode:\",\"方法一:输入 code.cmd .,必须要加.,不然只是打开 VSCode 软件,而不会打开当前文件夹\",\"方法二:新建变量 code,输入 VSCode 地址,然后在地址栏就可以输入 %code%(还是上面那个输入快点,不用按 shift)\",\"方法三:直接右键吧,为啥这么折腾\",\"方法四:utools 快捷命令\",\"为什么我直接输入 code 就是打开一个 sh 脚本呢,我用 start . 打开这个脚本的目录,突然恍然大悟,原来就是因为这个 code 文件影响到了我直接用 code,我看了下脚本,这个应该是用于 wsl 启动的(我随口说的,你可以尝试去掉这个文件,然而也不能通过在地址栏输入 code 打开 VSCode 就是了)\"]},\"40\":{\"h\":\"3.4 添加一些常用别名增加效率\",\"t\":[\"我的 ~/.bashrc 文件\",\"# 为了更好的push到github,配置代理 export http_proxy=http://127.0.0.1:10809 export https_proxy=http://127.0.0.1:10809 # 方便cd 进 hexo alias blog='cd /e/blog' # hexo 博客发布,num run是package.json中script list配置的别名 alias dev='npm run v' alias publish='npm run p' # 配置tree别名 alias tree='tree -FCN' \"]},\"41\":{\"h\":\"中文技术文档的写作规范\",\"t\":[\"中文技术文档的写作规范,转自 ruanyf/document-style-guide: 中文技术文档的写作规范 (github.com)。\",\"当前版本:b7723b8\"]},\"42\":{\"h\":\"目录\",\"t\":[\"标题\",\"文本\",\"段落\",\"数值\",\"标点符号\",\"文档体系\",\"参考链接\"]},\"43\":{\"h\":\"标题\"},\"44\":{\"h\":\"层级\",\"t\":[\"标题分为四级。\",\"一级标题:文章的标题\",\"二级标题:文章主要部分的大标题\",\"三级标题:二级标题下面一级的小标题\",\"四级标题:三级标题下面某一方面的小标题\",\"下面是示例。\",\"# 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 \"]},\"45\":{\"h\":\"原则\",\"t\":[\"(1)一级标题下,不能直接出现三级标题。\",\"示例:下面的文章结构,缺少二级标题。\",\"# 一级标题 ### 三级标题 \",\"(2)标题要避免孤立编号(即同级标题只有一个)。\",\"示例:下面的文章结构,二级标题 A 只包含一个三级标题,完全可以省略 三级标题 A。\",\"## 二级标题 A ### 三级标题 A ## 二级标题 B \",\"(3)下级标题不重复上一级标题的名字。\",\"示例:下面的文章结构,二级标题与下属的三级标题同名,建议避免。\",\"## 概述 ### 概述 \",\"(4)谨慎使用四级标题,尽量避免出现,保持层级的简单,防止出现过于复杂的章节。\",\"如果三级标题下有并列性的内容,建议只使用项目列表(Item list)。\",\"示例:下面的结构二要好于结构一。结构一适用的场景,主要是较长篇幅的内容。\",\"结构一 ### 三级标题 #### 四级标题 A #### 四级标题 B #### 四级标题 C 结构二 ### 三级标题 **(1)A** **(2)B** **(3)C** \"]},\"46\":{\"h\":\"文本\"},\"47\":{\"h\":\"字间距\",\"t\":[\"(1)全角中文字符与半角英文字符之间,应有一个半角空格。\",\"错误:本文介绍如何快速启动Windows系统。 正确:本文介绍如何快速启动 Windows 系统。 \",\"(2)全角中文字符与半角阿拉伯数字之间,有没有半角空格都可,但必须保证风格统一,不能两种风格混杂。\",\"正确:2011年5月15日,我订购了5台笔记本电脑与10台平板电脑。 正确:2011 年 5 月 15 日,我订购了 5 台笔记本电脑与 10 台平板电脑。 \",\"半角的百分号,视同阿拉伯数字。\",\"正确:今年我国经济增长率是6.5%。 正确:今年我国经济增长率是 6.5%。 \",\"(3)英文单位若不翻译,单位前的阿拉伯数字与单位符号之间,应留出适当的空隙。\",\"例1:一部容量为 16 GB 的智能手机 例2:1 h = 60 min = 3,600 s \",\"(4)半角英文字符和半角阿拉伯数字,与全角标点符号之间不留空格。\",\"错误:他的电脑是 MacBook Air 。 正确:他的电脑是 MacBook Air。 \"]},\"48\":{\"h\":\"句子\",\"t\":[\"(1)避免使用长句。\",\"不包含任何标点符号的单个句子,或者以逗号分隔的句子构件,长度尽量保持在 20 个字以内;20~29 个字的句子,可以接受;30~39 个字的句子,语义必须明确,才能接受;多于 40 个字的句子,任何情况下都不能接受。\",\"错误:本产品适用于从由一台服务器进行动作控制的单一节点结构到由多台服务器进行动作控制的并行处理程序结构等多种体系结构。 正确:本产品适用于多种体系结构。无论是由一台服务器(单一节点结构),还是由多台服务器(并行处理结构)进行动作控制,均可以使用本产品。 \",\"逗号分割的长句,总长度不应该超过 100 字或者正文的 3 行。\",\"(2)尽量使用简单句和并列句,避免使用复合句。\",\"并列句:他昨天生病了,没有参加会议。 复合句:那个昨天生病的人没有参加会议。 \",\"(3)同样一个意思,尽量使用肯定句表达,不使用否定句表达。\",\"错误:请确认没有接通装置的电源。 正确:请确认装置的电源已关闭。 \",\"(4)避免使用双重否定句。\",\"错误:没有删除权限的用户,不能删除此文件。 正确:用户必须拥有删除权限,才能删除此文件。 \"]},\"49\":{\"h\":\"写作风格\",\"t\":[\"(1)尽量不使用被动语态,改为使用主动语态。\",\"错误:假如此软件尚未被安装, 正确:假如尚未安装这个软件, \",\"(2)不使用非正式的语言风格。\",\"错误:Lady Gaga 的演唱会真是酷毙了,从没看过这么给力的表演!!! 正确:无法参加本次活动,我深感遗憾。 \",\"(3)不使用冷僻、生造或者文言文的词语,而要使用现代汉语的常用表达方式。\",\"错误:这是唯二的快速启动的方法。 正确:这是仅有的两种快速启动的方法。 \",\"(4)用对“的”、“地”、“得”。\",\"她露出了开心的笑容。 (形容词+的+名词) 她开心地笑了。 (副词+地+动词) 她笑得很开心。 (动词+得+副词) \",\"(5)使用代词时(比如“其”、“该”、“此”、“这”等词),必须明确指代的内容,保证只有一个含义。\",\"错误:从管理系统可以监视中继系统和受其直接控制的分配系统。 正确:从管理系统可以监视两个系统:中继系统和受中继系统直接控制的分配系统。 \",\"(6)名词前不要使用过多的形容词。\",\"错误:此设备的使用必须在接受过本公司举办的正式的设备培训的技师的指导下进行。 正确:此设备必须在技师的指导下使用,且指导技师必须接受过由本公司举办的正式设备培训。 \"]},\"50\":{\"h\":\"英文处理\",\"t\":[\"(1)英文原文如果使用了复数形式,翻译成中文时,应该将其还原为单数形式。\",\"英文:...information stored in random access memory (RAMs)... 中文:⋯⋯存储在随机存取存储器(RAM)里的信息⋯⋯ \",\"(2)外文缩写可以使用半角圆点 (.) 表示缩写。\",\"U.S.A. Apple, Inc. \",\"(3)表示中文时,英文省略号(...)应改为中文省略号(⋯⋯)。\",\"英文:5 minutes later... 中文:5 分钟过去了⋯⋯ \",\"(4)英文书名或电影名改用中文表达时,双引号应改为书名号。\",\"英文:He published an article entitled \\\"The Future of the Aviation\\\". 中文:他发表了一篇名为《航空业的未来》的文章。 \",\"(5)第一次出现英文词汇时,在括号中给出中文标注。此后再次出现时,直接使用英文缩写即可。\",\"IOC(International Olympic Committee,国际奥林匹克委员会)。这样定义后,便可以直接使用“IOC”了。 \",\"(6)专有名词中每个词第一个字母均应大写,非专有名词则不需要大写。\",\"“American Association of Physicists in Medicine”(美国医学物理学家协会)是专有名词,需要大写。 “online transaction processing”(在线事务处理)不是专有名词,不应大写。 \"]},\"51\":{\"h\":\"段落\"},\"52\":{\"h\":\"原则\",\"t\":[\"一个段落只能有一个主题,或一个中心句子。\",\"段落的中心句子放在段首,对全段内容进行概述。后面陈述的句子为核心句服务。\",\"一个段落的长度不能超过七行,最佳段落长度小于等于四行。\",\"段落的句子语气要使用陈述和肯定语气,避免使用感叹语气。\",\"段落之间使用一个空行隔开。\",\"段落开头不要留出空白字符。\"]},\"53\":{\"h\":\"引用\",\"t\":[\"引用第三方内容时,应注明出处。\",\"One man’s constant is another man’s variable. — Alan Perlis \",\"如果是全篇转载,请在全文开头显著位置注明作者和出处,并链接至原文。\",\"本文转载自 WikiQuote \",\"使用外部图片时,必须在图片下方或文末标明来源。\",\"本文部分图片来自 Wikipedia \"]},\"54\":{\"h\":\"数值\"},\"55\":{\"h\":\"半角数字\",\"t\":[\"阿拉伯数字一律使用半角形式,不得使用全角形式。\",\"错误:这件商品的价格是1000元。 正确:这件商品的价格是 1000 元。 \"]},\"56\":{\"h\":\"千分号\",\"t\":[\"数值为千位以上,应添加千分号(半角逗号)。\",\"XXX 公司的实收资本为 ¥1,258,000 人民币。 \",\"对于 4 位的数值,千分号是选用的,比如 1000 和 1,000 都可以接受。对于 4 位以上的数值,应添加千分号。\"]},\"57\":{\"h\":\"货币\",\"t\":[\"货币应为阿拉伯数字,并在数字前写出货币符号,或在数字后写出货币中文名称。\",\"$1,000 1,000 美元 \",\"英文的货币名称,建议参考国际标准 ISO 4217。\"]},\"58\":{\"h\":\"数值范围\",\"t\":[\"表示数值范围时,用波浪线(~)或一字线(—)连接。参见《标点符号》一节的“连接号”部分。\",\"带有单位或百分号时,两个数字建议都要加上单位或百分号。\",\"132 kg~234 kg 67%~89% \"]},\"59\":{\"h\":\"变化程度的表示法\",\"t\":[\"数字的增加要使用“增加了”、“增加到”。“了”表示增量,“到”表示定量。\",\"增加到过去的两倍 (过去为一,现在为二) 增加了两倍 (过去为一,现在为三) \",\"数字的减少要使用“降低了”、“降低到”。“了”表示增量,“到”表示定量。\",\"降低到百分之八十 (定额是一百,现在是八十) 降低了百分之八十 (原来是一百,现在是二十) \",\"不能用“降低 N 倍”或“减少 N 倍”的表示法,要用“降低百分之几”或“减少百分之几”。因为减少(或降低)一倍表示数值原来为一百,现在等于零。\"]},\"60\":{\"h\":\"标点符号\"},\"61\":{\"h\":\"原则\",\"t\":[\"(1)中文语句的标点符号,均应该采取全角符号,这样可以与全角文字保持视觉的一致。\",\"(2)如果整句为英文,则该句使用英文/半角标点。\",\"(3)句号、问号、叹号、逗号、顿号、分号和冒号不得出现在一行之首。\",\"(4)点号(句号、逗号、顿号、分号、冒号)不得出现在标题的末尾,而标号(引号、括号、破折号、省略号、书名号、着重号、间隔号、叹号、问号)可以。\"]},\"62\":{\"h\":\"句号\",\"t\":[\"(1)中文语句的结尾处应该用全角句号(。)。\",\"(2)句子末尾用括号加注时,句号应在括号之外。\",\"错误:关于文件的输出,请参照第 1.3 节(见第 26 页。) 正确:关于文件的输出,请参照第 1.3 节(见第 26 页)。 \"]},\"63\":{\"h\":\"逗号\",\"t\":[\"(1)逗号(,)表示句子内部的一般性停顿。\",\"(2)注意避免“一逗到底”,即整个段落除了结尾,全部停顿都使用逗号。\"]},\"64\":{\"h\":\"顿号\",\"t\":[\"(1)句子内部的并列词,应该用全角顿号 (、) 分隔,而不用逗号,即使并列词是英语也是如此。\",\"错误:我最欣赏的科技公司有 Google, Facebook, 腾讯, 阿里和百度等。 正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。 \",\"(2)英文句子中,并列词语之间使用半角逗号(,)分隔。\",\"例句:Microsoft Office includes Word, Excel, PowerPoint, Outlook and other components. \",\"(3)中文句子内部的并列词,最后一个尽量使用(和)来连接,使句子读起来更加连贯,下面两个句子都可以,第二个更优。\",\"正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里,以及百度等。 正确:我最欣赏的科技公司有 Google、Facebook、腾讯、阿里和百度等。 \"]},\"65\":{\"h\":\"分号\",\"t\":[\"(1)分号(;)表示复句内部并列分句之间的停顿。\"]},\"66\":{\"h\":\"引号\",\"t\":[\"(1)引用时,应该使用全角双引号(“ ”),注意前后双引号不同。\",\"例句:许多人都认为客户服务的核心是“友好”和“专业”。 \",\"(2)引号里面还要用引号时,外面一层用双引号,里面一层用单引号(‘ ’),注意前后单引号不同。\",\"例句:鲍勃解释道:“我要放音乐,可萨利说,‘不行!’。” \",\"[!tip] 简体中文使用直角引号\",\"用法:\",\"「老师,『有条不紊』的『紊』是什么意思?」\",\"对比用法:\",\"“老师,‘有条不紊’的‘紊’是什么意思?”\"]},\"67\":{\"h\":\"括号\",\"t\":[\"(1)补充说明时,使用全角圆括号(()),括号前后不加空格。\",\"例句:请确认所有的连接(电缆和接插件)均安装牢固。 \",\"(2)几种括号的中英文名称。\",\"英文\",\"中文\",\"{ }\",\"braces 或 curly brackets\",\"大括号\",\"[ ]\",\"square brackets 或 brackets\",\"方括号\",\"< >\",\"angled brackets\",\"尖括号\",\"( )\",\"parentheses\",\"圆括号\"]},\"68\":{\"h\":\"冒号\",\"t\":[\"(1)全角冒号(:)常用在需要解释的词语后边,引出解释和说明。\",\"例句:请确认以下几项内容:时间、地点、活动名称和来宾数量。 \",\"(2)表示时间时,应使用半角冒号(:)。\",\"例句:早上 8:00 \"]},\"69\":{\"h\":\"省略号\",\"t\":[\"(1)省略号(⋯⋯)表示语句未完、或者语气的不连续。\",\"(2)省略号占两个汉字空间、包含六个省略点,不要使用 。。。 或 ... 等非标准形式。\",\"(3)省略号不应与“等”这个词一起使用。\",\"错误:我们为会餐准备了香蕉、苹果、梨…等各色水果。 正确:我们为会餐准备了各色水果,有香蕉、苹果、梨⋯⋯ 正确:我们为会餐准备了香蕉、苹果、梨等各色水果。 \"]},\"70\":{\"h\":\"感叹号\",\"t\":[\"(1)应该使用平静的语气叙述,尽量避免使用感叹号(!)。\",\"(2)不得多个感叹号连用,比如 !! 和 !!!。\"]},\"71\":{\"h\":\"破折号\",\"t\":[\"(1)破折号 ———— 一般用于进一步解释。\",\"(2)破折号应占两个汉字的位置。如果破折号本身只占一个汉字的位置,那么前后应该留出一个半角空格。\",\"例句:直觉————尽管它并不总是可靠的————告诉我,这事可能出了些问题。 例句:直觉 —— 尽管它并不总是可靠的 —— 告诉我,这事可能出了些问题。 \"]},\"72\":{\"h\":\"连接号\",\"t\":[\"(1)连接号用于连接两个类似的词。\",\"(2)以下场合应该使用直线连接号(-),占一个半角字符的位置。\",\"两个名词的复合\",\"图表编号\",\"例句:氧化-还原反应 例句:图 1-1 \",\"(3)数值范围(例如日期、时间或数字)应该使用波浪连接号(~)或一字号(—),占一个全角字符的位置。\",\"例句:2009 年~2011 年 \",\"注意,波浪连接号前后两个值都建议加上单位。\",\"(4)波浪连接号也可以用汉字“至”代替。\",\"例句:周围温度:-20 °C 至 -10 °C \"]},\"73\":{\"h\":\"文档体系\"},\"74\":{\"h\":\"结构\",\"t\":[\"软件手册是一部完整的书,建议采用下面的结构。\",\"简介(Introduction):[必备] [文件] 提供对产品和文档本身的总体的、扼要的说明\",\"快速上手(Getting Started):[可选] [文件] 如何最快速地使用产品\",\"入门篇(Basics):[必备] [目录] 又称“使用篇”,提供初级的使用教程 \",\"环境准备(Prerequisite):[必备] [文件] 软件使用需要满足的前置条件\",\"安装(Installation):[可选] [文件] 软件的安装方法\",\"设置(Configuration):[必备] [文件] 软件的设置\",\"进阶篇(Advanced):[可选] [目录] 又称“开发篇”,提供中高级的开发教程\",\"API(Reference):[可选] [目录|文件] 软件 API 的逐一介绍\",\"FAQ:[可选] [文件] 常见问题解答\",\"附录(Appendix):[可选] [目录] 不属于教程本身、但对阅读教程有帮助的内容 \",\"Glossary:[可选] [文件] 名词解释\",\"Recipes:[可选] [文件] 最佳实践\",\"Troubleshooting:[可选] [文件] 故障处理\",\"ChangeLog:[可选] [文件] 版本说明\",\"Feedback:[可选] [文件] 反馈方式\",\"下面是两个真实范例,可参考。\",\"Redux 手册\",\"Atom 手册\"]},\"75\":{\"h\":\"文件名\",\"t\":[\"文档的文件名不得含有空格。\",\"文件名必须使用半角字符,不得使用全角字符。这也意味着,中文不能用于文件名。\",\"错误:名词解释.md 正确:glossary.md \",\"文件名建议只使用小写字母,不使用大写字母。\",\"错误:TroubleShooting.md 正确:troubleshooting.md \",\"为了醒目,某些说明文件的文件名,可以使用大写字母,比如 README、LICENSE。\",\"文件名包含多个单词时,单词之间建议使用半角的连词线(-)分隔。\",\"不佳:advanced_usage.md 正确:advanced-usage.md \"]},\"76\":{\"h\":\"参考链接\",\"t\":[\"产品手册中文写作规范, by 华为\",\"写作规范和格式规范, by DaoCloud\",\"技术写作技巧在日汉翻译中的应用, by 刘方\",\"简体中文规范指南, by lengoo\",\"文档风格指南, by LeanCloud\",\"豌豆荚文案风格指南, by 豌豆荚\",\"中文文案排版指北, by sparanoid\",\"中文排版需求, by W3C\",\"为什么文件名要小写?, by 阮一峰\",\"Google Developer Documentation Style Guide, by Google\",\"出版物上数字用法的规定(国家标准GBT15835-2011)\",\"GB 3100-1993 国际单位制及其应用\"]},\"77\":{\"h\":\"License\",\"t\":[\"公共领域(public domain)\"]},\"78\":{\"h\":\"不完全不准确不系统的计算模拟入坑记录\",\"t\":[\"学不会系列之材料计算\",\"本文档是一个菜鸡的上课笔记和实践踩坑的一些记录。\",\"课程为学不会系列之《能源环境材料计算模拟方法》,授课教师四川大学岑望来副研究员。\",\"教学大纲:\",\"绪论(3 学时):介绍计算模拟方法在能源环境材料研究与开发中的应用情况,理论与方法体系,课程安排和考核办法,Windows 系统下个人电脑计算模拟软件安装与调试。\",\"Linux 操作系统基础(6 学时):服务器系统结构,权限,用户管理,文件管理;vi 编辑器使用方法。\",\"Materials Studio 软件使用基础(6 学时):Materials Studio 软件介绍及其 Visualizer 模块的使用方法;CASTEP 模块使用方法;分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。\",\"VASP 软件基础(6 学时):VASP 软件介绍,分别以 O2 分子和 NaCl 晶体结构优化为例作操作练习。\",\"结构化学基础(3 学时):介绍点群、晶体对称性、晶面和倒空间;介绍原子和分子电子结构;用 Materials Studio 做晶面建模练习。\",\"电子结构理论及计算方法(12 学时):自洽场理论、能带理论、态密度、电荷密度;自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;实践操作。\",\"反应路径与分子动力学计算方法(9 学时):NEB 计算方法与操作实践;系综理论,控温方法,输入文件准备,计算过程,结果分析。\",\"计算模拟高级工具(9 学时):Shell, Python 编程基础, 原子模拟环境 ASE 基础\",\"同为初学者,水平有限,如有错误还请指出。\",\"Bug/typo/error reports should be sent to:\",\"Zhang' email or reported as an issue .\",\"Tips:\",\"移动端,左上角汉堡菜单选择章节;桌面端右上角菜单选择章节,左侧栏查看当前章节大纲。\",\"桌面端食用体验更加~\",\"本笔记中,代码块行前有 $ 的,表示在终端输入的命令,实际不需要输入 $ 符号。\",\"本笔记中的命令的语法表示中:<参数> 表示必须参数,[参数] 表示可选参数,可参考 命令行语法格式中常用符号的含义。\",\"Powered by VuePress , Hosted by Github Pages .\",\"Link of This repository in GitHub.\",\"Repository synced by Gitee .\",\"晋 ICP 备 18010037 号 -1.\",\"©2020 Northword .\",\"Overseas link: Github Pages\",\"Mainland link: northword.gitee.io/dft-learning\",\"菜鸡小张,2020 年。\"]},\"79\":{\"h\":\"文档\",\"t\":[\"此文件夹放置除科研外的文档。\"]},\"80\":{\"h\":\"目录\",\"t\":[\"理论计算学习笔记\",\"材料表征学习笔记\",\"Linux 学习笔记\",\"中文技术文档的写作规范\"]},\"81\":{\"h\":\"Aria2 折腾记录\"},\"82\":{\"h\":\"关于 Aria2\",\"t\":[\"aria2 是一款支持多种协议的轻量级命令行下载工具。\"]},\"83\":{\"h\":\"安装与配置 Aria2\",\"t\":[\"Aria2 的运行依靠以下几个文件:\",\"文件名\",\"描述\",\"必须?\",\"aria2c (or aria2c.exe)\",\"主程序\",\"是\",\"aria2.conf\",\"配置文件\",\"是\",\"aria2.session\",\"任务文件\",\"是\",\"aria2.log\",\"日志文件\",\"否\"]},\"84\":{\"h\":\"与 OneDrive 联动\"},\"85\":{\"h\":\"通过 Reclon 和 upload.sh\",\"t\":[\"Aria2 的 on-completed 参数设置后,会在任务完成时向指定脚本传递任务的 UID、文件数量、任务路径三个参数。\"]},\"86\":{\"h\":\"参考资料\",\"t\":[\"P3TERX/aria2.sh: Aria2 一键安装管理脚本 增强版 (github.com)在 Windows 中使用 Aria2 - P3TERX ZONEAria2 + Rclone 实现 OneDrive、Google Drive 等网盘离线下载 - P3TERX ZONE\"]},\"87\":{\"h\":\"软件使用\",\"t\":[\"这里存放一些软件方面的笔记。\"]},\"88\":{\"h\":\"目录\",\"t\":[\"自用 Windows Apps 列表\",\"Zoero 手册:https://zotero-cn.github.io/zotero\"]},\"89\":{\"h\":\"Windows 的自我修养\"},\"90\":{\"h\":\"Windows Applications\",\"t\":[\"windows 必备应用列表是个人重装电脑后会安装的应用。\"]},\"91\":{\"h\":\"文档类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"[MS Office]\",\"✔\",\"通过 office tool plus 安装\",\"福昕 PDF 编辑器企业版\",\"✔\",\"福昕 9.6.0\",\"CAJViewer\",\"✔\",\"CAJViewer7.3\",\"Notepad3\",\"Notepad3 配置说明\"]},\"92\":{\"h\":\"通讯类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"telegram\",\"✔\",\"账号同步\",\"TIM\",\"✔\",\"账号同步\",\"微信\",\"✔\",\"账号同步\"]},\"93\":{\"h\":\"浏览器类\"},\"94\":{\"h\":\"浏览器相关类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"Edge-dev\",\"✔\",\"账号同步\",\"注意: 此处插件可以通过浏览器账号同步设置。\"]},\"95\":{\"h\":\"插件\",\"t\":[\"名称\",\"需要安装\",\"配置说明\",\"备注\",\"soulsign-chrome\",\"✔\",\"个人开发脚本安装地址\",\"公共脚本发布平台\",\"OneTab Plus: 标签效率管理扩展\",\"✔\",\"沙拉查词\",\"✔\",\"沙拉查词配置说明\",\"Tampermonkey BETA\",\"✔\",\"tampermonkey 配置说明\",\"GitMaster\",\"✔\",\"简悦\",\"✔\",\"云同步\",\"简码\",\"✔\",\"Infinity 新标签页 (Pro)\",\"✔\",\"账号同步\",\"pakku 哔哩哔哩弹幕过滤器\",\"✔\",\"pakku 配置说明\",\"Stylus\",\"✔\",\"Stylus 配置说明\",\"广告终结者\",\"✔\",\"HTTPS Everywhere\",\"✔\",\"languagetool\",\"✔\",\"grammarly\",\"✔\",\"SingleFile\",\"✔\"]},\"96\":{\"h\":\"工具类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"Snipaste\",\"✔\",\"Snipaste 配置说明\",\"天若 OCR 文字识别\",\"✔\",\"账号同步\",\"clash_for_windows_pkg\",\"✔\",\"ClashForWindows 配置说明\",\"百度网盘\",\"✔\",\"账号同步\",\"peaZip\",\"✔\"]},\"97\":{\"h\":\"工作类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"Origin Pro\",\"✔\",\"OriginPro9.0\"]},\"98\":{\"h\":\"编程类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"Putty\",\"Terminal\",\"✔\",\"VMWPro\",\"✔\",\"VMWPro15.0\",\"Visual Studio Code\",\"✔\",\"账号同步\",\"matlab\",\"✔\",\"Git\",\"✔\",\"JDK\",\"✔\",\"Node.js\",\"✔\",\"Python\",\"✔\",\"v2rayN\",\"v2rayN 配置说明\",\"everything\"]},\"99\":{\"h\":\"实用工具类\",\"t\":[\"名称\",\"需要安装\",\"配置文件\",\"备注\",\"NewFileTime\",\"cmd_init.bat\",\"cmd_init.bat 配置说明\",\"Microsoft.PowerShell_profile.ps1\",\"Microsoft.PowerShell_profile.ps1 配置说明\",\"geekuninstaller\",\"memreduct\",\"✔\",\"memreduct 配置说明\"]},\"100\":{\"h\":\"\"},\"101\":{\"h\":\"1. 红米 AC2100 刷入 Pavadan 固件\",\"t\":[\"目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。\"]},\"102\":{\"h\":\"Download Link\",\"t\":[\"Hiboy:\"]},\"103\":{\"h\":\"2. MentoHUST 的配置\"},\"104\":{\"h\":\"在 WebUI 配置\",\"t\":[\"路径:拓展功能 - 配置拓展环境 - 锐捷认证\",\"启用 MentoHUST\",\"用户名:学号\",\"密码:校园网上网密码,默认密码为身份证后六位\",\"组播地址:0(标准)\",\"DHCP 方式:2(认证后)\",\"是否后台运行:2(是,保留输出)\",\"客户端版本号:4.96\",\"其余均保持默认\"]},\"105\":{\"h\":\"帮助命令\",\"t\":[\"mentohust -h \",\"欢迎使用MentoHUST 版本: 0.3.1 Copyright (C) 2009-2010 HustMoon Studio 人到华中大,有甜亦有辣。明德厚学地,求是创新家。 Bug report to http://code.google.com/p/mentohust/issues/list 用法: mentohust [-选项][参数] 选项: -h 显示本帮助信息 -k -k(退出程序) 其他(重启程序) -w 保存参数到配置文件 -u 用户名 -p 密码 -n 网卡名 -i IP[默认本机IP] -m 子网掩码[默认本机掩码] -g 网关[默认0.0.0.0] -s DNS[默认0.0.0.0] -o Ping主机[默认0.0.0.0,表示关闭该功能] -t 认证超时(秒)[默认8] -e 心跳间隔(秒)[默认30] -r 失败等待(秒)[默认15] -l 允许失败次数[0表示无限制,默认8] -a 组播地址: 0(标准) 1(锐捷) 2(赛尔) [默认0] -d DHCP方式: 0(不使用) 1(二次认证) 2(认证后) 3(认证前) [默认0] -b 是否后台运行: 0(否) 1(是,关闭输出) 2(是,保留输出) 3(是,输出到文件) [默认0] -v 客户端版本号[默认0.00表示兼容xrgsu] -f 自定义数据文件[默认不使用] -c DHCP脚本[默认dhclient] -q 显示SuConfig.dat的内容(如-q/path/SuConfig.dat) -S 接入服务选择:0(默认) 1(有线1x上网服务,例如华农拨办公账号时需要) 例如: mentohust -uusername -ppassword -neth0 -i192.168.0.1 -m255.255.255.0 -g0.0.0.0 -s0.0.0.0 -o0.0.0.0 -t8 -e30 -r15 -a0 -d1 -b0 -v4.10 -fdefault.mpf -cdhclient 注意:使用时请确保是以root权限运行! \"]},\"106\":{\"h\":\"在 Pavadan 中设置定时任务(可选)\",\"t\":[\"路径:高级设置 - 自定义设置 - 脚本\"]},\"107\":{\"h\":\"在 WAN 上行/下行启动后执行\",\"t\":[\"#!/bin/sh ### Custom user script ### Called after internal WAN up/down action ### $1 - WAN action (up/down) ### $2 - WAN interface name (e.g. eth3 or ppp0) ### $3 - WAN IPv4 address logger \\\"运行后 WAN 状态:\\\" \\\"WAN 状态:【$1】, WAN 接口:【$2】, WAN IP:【$3】\\\" if [ $1 == \\\"up\\\" ] ; then sleep 30 /etc/storage/crontabs_script.sh up & #else # echo \\\"检测到WAN:【$1】 \\\" # echo \\\"请尝试重启mentohust或重启路由器\\\" # echo \\\"正在尝试重启mentohust\\\" # mentohust -k -k fi \"]},\"108\":{\"h\":\"自定义 Crontab 定时任务配置\",\"t\":[\"可选定时开关 WAN 口,将命令前的 # 移除即可启用命令\",\"或去 高级设置 - 系统管理 - 服务 - 计划任务 中加入\",\"# 凌晨2点定时关网: 0 2 * * * stop_wan #删除开头的#启动命令 # 早上8点定时开网(重启wan口): 0 8 * * * restart_wan #删除开头的#启动命令 \"]},\"109\":{\"h\":\"内网穿透折腾记录\"},\"110\":{\"h\":\"通过 frp\"},\"111\":{\"h\":\"配置参考\",\"t\":[\"参考 | frp (gofrp.org)\",\"frps.ini\",\"[common] bind_port = 7000 token = 通讯密码 subdomin_host = frp.northword.cn log_file = ./frps.log log_level = info log_max_days = 5 \",\"frpc.ini\",\"[common] server_addr = frp.northword.cn server_port = 7000 log_file = /home/scujh_zjb/apps/frp/frpc.log log_level = info log_max_days = 3 token = 通讯密码 [HPC-Inelt] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6001 \"]},\"112\":{\"h\":\"linux 端 systemctl 配置\",\"t\":[\"frp 包中提供了 systemctl 的配置文件模板,服务端和客户端各两个,带 @ 的可以传参以启动多个实例。将模板复制到 systemctl 服务配置路径:/lib/systemd/system/。\",\"[Unit] Description=Frp Client Service After=network.target [Service] Type=simple Restart=on-failure RestartSec=5s ExecStart=/home/scujh_zjb/apps/frp/frpc -c /home/scujh_zjb/apps/frp/frpc.ini ExecReload=/home/scujh_zjb/apps/frp/frpc reload -c /home/scujh_zjb/apps/frp/frpc.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target \",\"初次配置后需要重载服务,之后启动无须此步:\",\"systemctl daemon-reload \",\"然后启动服务::\",\"#启动 sudo systemctl start frpc #关闭 sudo systemctl stop frpc #重启 sudo systemctl restart frpc #查看状态 sudo systemctl status frpc \",\"启用开机自启:\",\"sudo systemctl enable frpc \",\"启动成功示意:\"]},\"113\":{\"h\":\"开启代理后 msftconnecttest.com 无法跳转\",\"t\":[\"连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。\",\"但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。\",\"由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。\",\"解决方法蛮多,比如:\",\"关闭 clash 的开机自启 / system proxy 。\",\"需要认证时关闭 system proxy 。\",\"记下认证页面的真实地址直接访问。\",\"策略组 微软 选择直链。\",\"在 rule 里添加关键词匹配规则使 msftconnecttest 被 direct 。\",\"上述方法治标不治本,添加 rule 虽然是个不错的方法(事实上这可能是多数人首先想到的方法),但是如果你用的是机场的订阅,那换个订阅/升级订阅后自己加的规则就没了。查阅 CFW 文档后发现了 绕过系统代理 | Clash for Windows :\",\"bypass: - \\\"*msftconnecttest.com\\\" - \\\"*c-msedge.net\\\" - \\\"edge.microsoft.com\\\" - localhost - 127.* - 10.* - 172.16.* - 172.17.* - 172.18.* - 172.19.* - 172.20.* - 172.21.* - 172.22.* - 172.23.* - 172.24.* - 172.25.* - 172.26.* - 172.27.* - 172.28.* - 172.29.* - 172.30.* - 172.31.* - 192.168.* - \",\"终于是实现效果了,也没啥大问题。\",\"但后来有一天我发现在命令提示符里进行 pip install 以及 npm install 的时候提示 SSL 错误 ,换源已无法解决,于是找到了 issue : 下载文件遇到 SSL 错误 · Issue #1568 · Fndroid/clash_for_windows_pkg (github.com) 后被建议使用PAC mode,于是有了 PAC 版本的 Bypass :\",\"function FindProxyForURL(url, host) { if (isPlainHostName(host) || dnsDomainIs(host, \\\".msftconnecttest.com\\\")) { return \\\"DIRECT\\\"; } else { return \\\"PROXY 127.0.0.1:%mixed-port%; SOCKS5 127.0.0.1:%mixed-port%; DIRECT;\\\" } } \",\"PAC 概念及其写法可参考: 代理自动配置文件(PAC)文件 - HTTP | MDN (mozilla.org)\",\"另发现了配置文件预处理,或许也可以用:更新某个订阅后 CFW 自动对该配置文件追加规则。参考 配置文件预处理 | Clash for Windows 。\",\"Clash 的几种模式介绍: 一个困扰已久的问题 · Discussion #1532 · Fndroid/clash_for_windows_pkg (github.com)\"]},\"114\":{\"h\":\"云服务器的折腾记录\"},\"115\":{\"h\":\"工具\"},\"116\":{\"h\":\"Aria2c\",\"t\":[\"Aria2\"]},\"117\":{\"h\":\"Frps\"},\"118\":{\"h\":\"Docker\"},\"119\":{\"h\":\"其他\"},\"120\":{\"h\":\"效率\"},\"121\":{\"h\":\"网速监控\",\"t\":[\"raboof/nethogs: Linux 'net top' tool (github.com)\"]},\"122\":{\"h\":\"CSL 中文文档\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"CSL (Citation Style Language) 是一种基于 XML 的语言,用来描述或格式化引用和参考文献目录的开源语言。使用 CSL 的参考文献管理软件包括 Zotero,Mendeley,Papers。\",\"Zotero 文件管理软件开源且简单。CSL 的发展与 Zotero 有一定的关系,Zotero 也是第一个使用 CSL 的文献管理软件。LATE​X 一直是国际上期刊投稿的主流,但现在的越来越多的国际期刊除提供 LATE​X 模板外,同时还支持 Word 格式投稿。国内投稿或者各种报告大多要求都是 Word 格式。Zotero 可以在 Word 中生成和 LATE​X 同样漂亮的引用和参考文献目录。\",\"由 CSL 编写的 style 定义了引用和参考文献目录的格式。Zotero 就是通过 style 来生成指定格式的引用和参考文献目录。据统计,现在已经有超过 9000 个 style,覆盖了大多数的常见的 SCI 期刊。在 Zotero 中能很容易检索到对应期刊的 style。但是即使有这么多的 style,仍然有可能有的期刊没有对应的 style。此外,有的 style 年代久远,已经不符合期刊 author guideline 中的要求,因此,我们需要学习 CSL 来定制需要的 style,至少能在已有的 style 上修改来满足期刊的要求。但是遗憾的是,国内 CSL 的资料几乎没有。\",\"本项目是对 CSL 英文文档 的翻译。本人能力有限,理解和翻译有误处请大家谅解,同时欢迎 issue 和 pull。\",\"[!TIP] 本站点是对译文的重排版\",\"翻译者:Mao Zhou\",\"译文原始站点:Welcome to CSL-chinese’s documentation! — CSL-chinese documentation\",\"译文原始仓库:ZMAlt/CSL-Chinese: CSL Chinese Document (github.com)\",\"中文文档重排版:Northword\",\"中文文档重排版仓库:zotero-cn/csl-chinese: CSL 中文文档 (github.com)\",\"[!danger] 译者注\\n文档中,凡标注 Work in progress 的均为正在施工的页面,无法确保与现有英文文档相一致,无法确保译文修改前后的一致性、准确性,请酌情阅读。\"]},\"123\":{\"h\":\"Locale File\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\"]},\"124\":{\"h\":\"前言\",\"t\":[\"​ 这篇文档描述了如何帮助改进 CSL 样式的语言支持,主要是将 CSL locale file 翻译为需要的语言。\",\"​ 用户总是会选择一个特定的语言环境或者 CSL 语言环境,例如:\\\"British Psychological Society\\\" 的 CSL 样式将会生成英式英语的引文和参考文献目录,中国使用的国标将会生成中文的引文和参考文献目录(可以有英文条目)。在使用的语言环境不是 CSL 定义的语言环境时,使用 Locale file 就会实现自动的本地化。\",\"​ 所有的 CSL 样式,都依赖于 locale file,这些本地化文件中包含了本地化数据,用来指定引文和参考文献目录中的术语,日期格式和语法规则怎么本地化。在单独的本地化文件保存这些数据,而不是在 CSL 样式文件中(尽管 CSL 样式文件中可以使用 cs:locale 元素对本地化文件中的设置进行覆盖),有很多好处:1. 本地化更加容易维护;2. 样式文件更加的紧凑; 3. 样式可以是语言无关的。\",\"​ 下面,我们将描述本地化文件的结构,给出如何转换所有部分的指示,并且解释如何提交这些转换。如果想获得更多的有关本地化的信息,可以查看 CSL规范。\"]},\"125\":{\"h\":\"开始\",\"t\":[\"​ CSL 本地化文件在 Github 的仓库地址为https://github.com/citation-style-language/locales/。\",\"​ 每个本地化文件都包含一种对应语言的本地化数据。本地化文件的名字为 \\\"locales-xx-XX.xml\\\",这里的 \\\"xx-XX\\\" 是 BCP 47 langues code 语言代码 中的一种。这个 github wiki仓库 列出了本地化 code,对应的语言和该仓库中储存的所有语言环境的软换状态(是否完成,或在制作中)。\"]},\"126\":{\"h\":\"转换 Locale Files\"},\"127\":{\"h\":\"XML 基础\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"CSL 基于 XML(eXtensible Markup Language)。XML 是一种标记语言,这里只介绍基本的术语,以理解 CSL 文件格式。\",\" # 文档声明 # 注释 # 根元素,文档的第一个元素,有且仅有一个 # 子元素 # 属性 # 元素文本 \",\"上面的代码时一个简单的 XML 结构。为了方便说明使用了 #符号作为注释符号,#并不是真正的注释符号,XML的注释格式为文档中的第二行所示的形式。\",\"第一行为声明,或者称为序言,总是在文档的最前面。包括了XML 的版本、编码信息以及是否依赖外部文档等。这一行代码会告诉解析器或浏览器这个文件应该按照 XML 规则进行解析。\",\"第二行为 XML 文档的注释。格式为 。\",\"剩下的代码为 XML 文件的根元素,根元素也是元素,根元素是文档的第一个元素,有且仅有一个。\"]},\"128\":{\"h\":\"元素\",\"t\":[\"元素由开始标签,元素内容和结束标签构成。其中可以包含属性、元素和注释。根元素包含了其他所有元素。\",\"内容 \",\"title 为元素名。\",\"元素有 4 种形式。\",\"1. 空元素 或者 2. 带有属性的空元素 或者 3. 带有内容的元素 21000 4. 带有内容和属性的元素 21000 # MoneyKind 为属性 21000为元素值 或者是 Style =\\\" LX2000\\\" CPU =\\\" PIII600\\\" RAM =\\\"128M \\\" \",\"所有的元素都包含在根元素中,为根元素的子元素,子元素还还可以包含子元素。\"]},\"129\":{\"h\":\"属性\",\"t\":[\"属性是对元素及其内容的描述,用 = 隔开。属性必须包含在一对单引号或者双引号之间。\",\" # 其中的 id 就是属性 后面的值就是属性值 非诚勿扰 # 子元素 70 # 空元素的属性 # 属性的另外一种形式 Style =\\\" LX2000\\\" CPU =\\\" PIII600\\\" RAM =\\\"128M \\\" \",\"每个元素中,一个属性最多出现一次,一个属性只能有一个值。\",\"如果属性有多个值,这需要采取 XML 协议以外的方式来表示,如采用逗号或分号间隔,对于 CSS 类或标识符的名字可用空格来分隔。\"]},\"130\":{\"h\":\"预定义实体表\",\"t\":[\"xml 文件中某些符号无法正常表达,比如 < 或者 >,不处理的话会导致混乱。\",\"所定义的实体\",\"所代表的字符\",\"<\",\"<\",\">\",\">``\",\""\",\"\\\"\",\"'\",\"'\",\"&\",\"&\",\"John asked "What's your name?" 中间的结果: John asked \\\"What's your name? \\\" \"]},\"131\":{\"h\":\"Linux\",\"t\":[\"没啥好写的,不就是个系统,区别于 Windows、MacOs 嘛。\"]},\"132\":{\"h\":\"一些非初级非高级玩法\",\"t\":[\"Linux 为非 ROOT 用户安装应用程序\"]},\"133\":{\"c\":[\"Linux\"]},\"134\":{\"h\":\"Linux 常用命令\",\"t\":[\"命令\",\"说明\",\"cd\",\"切换目录\",\"ls\",\"列出文件和目录\",\"ll\",\"同上\",\"mkdir\",\"新建文件夹\",\"cp\",\"复制\",\"mv\",\"移动\",\"rm\",\"删除文件\",\"rmdir\",\"删除目录\",\"pwd\",\"当前目录\",\"cat\",\"查看文件全文\",\"tail\",\"预览文件后几行\",\"tar\",\"压缩/解压缩\"]},\"135\":{\"h\":\"cd:Change Directory\",\"t\":[\"切换当前目录,可以是绝对路径,也可以是相对路径。如:\",\"cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录 cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录 \",\"命令\",\"解释\",\"cd\",\"进入用户主目录\",\"cd ~\",\"进入用户主目录\",\"cd -\",\"返回进入此目录之前所在目录\",\"cd $OLDPWD\",\"同上,但前者会屏显上次的目录,这个不会\",\"cd ..\",\"返回上一级目录\",\"cd ../..\",\"返回上两级目录\",\"cd !$\",\"把上个命令的参数作为 cd 参数使用\",\"cd /\",\"进入根目录\",\"cd .\",\"当前目录\"]},\"136\":{\"h\":\"ls 与 ll:list\",\"t\":[\"ls:查看文件与目录,参数如下\",\"-l :列出长数据串,包含文件的属性与权限数据等 -a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用) -d :仅列出目录本身,而不是列出目录的文件数据 -h :将文件容量以较易读的方式(GB,kB等)列出来 -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来 \",\"值得一提的是 -l 参数,它可以用 ll 来简化,如下例:\",\"[zjb@op app]$ ls get-pip.py pot_database python38 Python-3.8.5 scripts tgz_backup vaspkit.1.12 vtstscripts-933 [zjb@op app]$ ls -l total 1875 -rw-r--r-- 1 zjb energy 1886796 Oct 18 06:00 get-pip.py drwxr-xr-x 4 zjb energy 4096 Dec 1 2018 pot_database drwxr-xr-x 6 zjb energy 4096 Oct 29 14:59 python38 drwxr-xr-x 18 zjb energy 4096 Oct 29 14:57 Python-3.8.5 drwxr-xr-x 2 zjb energy 4096 Oct 29 15:11 scripts drwxr-xr-x 2 zjb energy 4096 Oct 31 17:48 tgz_backup drwxr-xr-x 7 zjb energy 4096 Oct 9 16:50 vaspkit.1.12 drwxr-xr-x 5 zjb energy 8192 Dec 28 2017 vtstscripts-933 [zjb@op app]$ ll total 1875 -rw-r--r-- 1 zjb energy 1886796 Oct 18 06:00 get-pip.py drwxr-xr-x 4 zjb energy 4096 Dec 1 2018 pot_database drwxr-xr-x 6 zjb energy 4096 Oct 29 14:59 python38 drwxr-xr-x 18 zjb energy 4096 Oct 29 14:57 Python-3.8.5 drwxr-xr-x 2 zjb energy 4096 Oct 29 15:11 scripts drwxr-xr-x 2 zjb energy 4096 Oct 31 17:48 tgz_backup drwxr-xr-x 7 zjb energy 4096 Oct 9 16:50 vaspkit.1.12 drwxr-xr-x 5 zjb energy 8192 Dec 28 2017 vtstscripts-933 \"]},\"137\":{\"h\":\"mkdir:Make Directory\",\"t\":[\"创建文件夹\",\"mkdir <文件夹名称> \",\"例 行 9\",\"[zjb@op ~]$ ll total 21 drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test -rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs [zjb@op ~]$ mkdir hahahahahahahha [zjb@op ~]$ ll total 25 drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup drwxr-xr-x 2 zjb energy 4096 Oct 31 21:33 hahahahahahahha drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test -rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs \"]},\"138\":{\"h\":\"cp:Copy\",\"t\":[\"复制文件(夹),copy 之意,它还可以把多个文件一次性地复制到一个目录下,它的常用参数如下:\",\"-a :将文件的特性一起复制 -p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份 -i :若目标文件已经存在时,在覆盖时会先询问操作的进行 -r :递归持续复制,用于目录的复制行为 -u :目标文件与源文件有差异时才会复制 \",\"例如:\",\"cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2 cp file1 file2 file3 dir/ #把文件file1、file2、file3复制到目录dir中 \"]},\"139\":{\"h\":\"mv:Move\",\"t\":[\"该命令用于移动文件、目录或更名,move 之意,它的常用参数如下:\",\"-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -i :若目标文件已经存在,就会询问是否覆盖 -u :若目标文件已经存在,且比目标文件新,才会更新 \",\"注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。\",\"例如:\",\"mv file1 file2 file3 dir/ # 把文件file1、file2、file3移动到目录dir中 mv file1 file2 # 把文件file1重命名为file2 \"]},\"140\":{\"h\":\"rm:Remove\",\"t\":[\"该命令用于删除文件或目录,remove,它的常用参数如下:\",\"-f :就是force的意思,忽略不存在的文件,不会出现警告消息 -i :互动模式,在删除前会询问用户是否操作 -r :递归删除,最常用于目录删除,它是一个非常危险的参数 \",\"[zjb@op ~]$ ll total 25 drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup drwxr-xr-x 2 zjb energy 4096 Oct 31 21:33 hahahahahahahha drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test -rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs [zjb@op ~]$ rm -r hahahahahahahha/ [zjb@op ~]$ ll total 21 drwxr-xr-x 9 zjb energy 4096 Oct 29 15:10 app drwxr-xr-x 2 zjb energy 4096 Oct 31 19:45 backup drwxr-xr-x 2 zjb energy 4096 Oct 31 21:03 NaCl drwxr-xr-x 2 zjb energy 4096 Oct 25 22:43 O2_opt drwxr-xr-x 6 zjb energy 4096 Oct 31 20:07 test -rw-r--r-- 1 zjb energy 1288 Oct 31 17:53 vasp.pbs \"]},\"141\":{\"h\":\"rmdir:Remove Directory\",\"t\":[\"删除指定目录。要么用 rm -r 要么用 rmdir 。更建议用 rmdir。\"]},\"142\":{\"h\":\"pwd:Print Working Directory\",\"t\":[\"打印当前工作路径。绝对路径。\",\"[zjb@op utilities]$ pwd /public/home/zjb/app/vaspkit.1.12/utilities \"]},\"143\":{\"h\":\"cat:concatenate and print files\",\"t\":[\"该命令用于查看文本文件的内容,后接要查看的文件名。通常可用管道与 more 和 less 一起使用,从而可以一页页地查看数据。\",\"[zjb@op utilities]$ cat hello.sh #!/bin/bash echo \\\"I love you\\\" [zjb@op utilities]$ \"]},\"144\":{\"h\":\"tar\",\"t\":[\"该命令用于对文件进行打包,默认情况并不会压缩,如果指定了相应的参数,它还会调用相应的压缩程序(如 gzip 和 bzip 等)进行压缩和解压。它的常用参数如下:\",\"-c :新建打包文件 -t :查看打包文件的内容含有哪些文件名 -x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中 -j :通过bzip2的支持进行压缩/解压缩 -z :通过gzip的支持进行压缩/解压缩 -v :在压缩/解压缩过程中,将正在处理的文件名显示出来 -f filename :filename为要处理的文件 -C dir :指定压缩/解压缩的目录dir \",\"通常只需要记住下面三条命令即可:\",\"压缩:tar -zcvf filename.tar.gz 要被处理的文件或目录名称 查询:tar -tvf filename.tar 解压:tar -zxvf filename.tar.gz tar -jxvf xx.tar.bz2 \",\"注:文件名并不定要以后缀 tar.gz 结尾,这里主要是为了说明使用的压缩程序为 gzip。后缀也可是 .tar,.tar.bz2。\"]},\"145\":{\"h\":\"grep\",\"t\":[\"该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,它的简单语法为\",\"grep [-acinv] [--color=auto] '查找字符串' filename \",\"它的常用参数如下:\",\"-a :将binary文件以text文件的方式查找数据 -c :计算找到‘查找字符串’的次数 -i :忽略大小写的区别,即把大小写视为相同 -v :反向选择,即显示出没有‘查找字符串’内容的那一行 \",\"# 例如: # 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色 grep --color=auto 'MANPATH' /etc/man.config # 把ls -l的输出中包含字母file(不区分大小写)的内容输出 ls -l | grep -i file \"]},\"146\":{\"h\":\"chown\",\"t\":[\"该命令用于改变文件的所有者,与 chgrp 命令的使用方法相同,只是修改的文件属性不同,不再详述。\"]},\"147\":{\"h\":\"chmod\",\"t\":[\"该命令用于改变文件的权限,一般的用法如下:\",\"chmod [-R] xyz 文件或目录 -R:进行递归的持续更改,即连同子目录下的所有文件都会更改 \",\"同时,chmod 还可以使用 u(user)、g(group)、o(other)、a(all)和 +(加入)、-(删除)、=(设置)跟 rwx 搭配来对文件的权限进行更改。\",\"# 例如: chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x chmod g+w file # 向file的文件权限中加入用户组可写权限 \"]},\"148\":{\"h\":\"find\",\"t\":[\"find 是一个基于查找的功能非常强大的命令,相对而言,它的使用也相对较为复杂,参数也比较多,所以在这里将给把它们分类列出,它的基本语法如下:\",\"find [PATH] [option] [action] # 与时间有关的参数: -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件; -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名; -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名; -newer file : 列出比file还要新的文件名 # 例如: find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件 # 与用户或用户组名有关的参数: -user name : 列出文件所有者为name的文件 -group name : 列出文件所属用户组为name的文件 -uid n : 列出文件所有者为用户ID为n的文件 -gid n : 列出文件所属用户组为用户组ID为n的文件 # 例如: find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件 # 与文件权限及名称有关的参数: -name filename :找出文件名为filename的文件 -size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件 -tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、 目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p); -perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755; -perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示 -perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示 # 例如: find / -name passwd # 查找文件名为passwd的文件 find . -perm 0755 # 查找当前目录中文件权限的0755的文件 find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte \"]},\"149\":{\"h\":\"ps\",\"t\":[\"该命令用于将某个时间点的进程运行情况选取下来并输出,process 之意,它的常用参数如下:\",\"-A :所有的进程均显示出来 -a :不与terminal有关的所有进程 -u :有效用户的相关进程 -x :一般与a参数一起使用,可列出较完整的信息 -l :较长,较详细地将PID的信息列出 \",\"其实我们只要记住 ps 一般使用的命令参数搭配即可,它们并不多,如下:\",\"ps aux # 查看系统所有的进程数据 ps ax # 查看不与terminal有关的所有进程 ps -lA # 查看系统所有的进程数据 ps axjf # 查看连同一部分进程树状态 \"]},\"150\":{\"h\":\"kill\",\"t\":[\"该命令用于向某个工作(%jobnumber)或者是某个 PID(数字)传送一个信号,它通常与 ps 和 jobs 命令一起使用,它的基本语法如下:\",\"kill -signal PID \",\"signal 的常用参数如下:\",\"注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。\",\"1:SIGHUP,启动被终止的进程 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行 9:SIGKILL,强制中断一个进程的进行 15:SIGTERM,以正常的结束进程方式来终止进程 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行 \",\"例如:\",\"# 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程 kill -SIGTERM %1 # 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得 kill -SIGHUP PID \"]},\"151\":{\"h\":\"killall\",\"t\":[\"该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:\",\"killall [-iIe] [command name] \",\"它的参数如下:\",\"-i :交互式的意思,若需要删除时,会询问用户 -e :表示后面接的command name要一致,但command name不能超过15个字符 -I :命令名称忽略大小写 # 例如: killall -SIGHUP syslogd # 重新启动syslogd \"]},\"152\":{\"h\":\"file\",\"t\":[\"该命令用于判断接在 file 命令后的文件的基本数据,因为在 Linux 下文件的类型并不是以后缀为分的,所以这个命令对我们来说就很有用了,它的用法非常简单,基本语法如下:\",\"file filename #例如: file ./test \"]},\"153\":{\"h\":\"chgrp\",\"t\":[\"该命令用于改变文件所属用户组,它的使用非常简单,它的基本用法如下:\",\"chgrp [-R] dirname/filename -R :进行递归的持续对所有文件和子目录更改 # 例如: chgrp users -R ./dir # 递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users \"]},\"154\":{\"h\":\"gcc\",\"t\":[\"对于一个用 Linux 开发 C 程序的人来说,这个命令就非常重要了,它用于把 C 语言的源程序文件,编译成可执行程序,由于 g++ 的很多参数跟它非常相似,所以这里只介绍 gcc 的参数,它的常用参数如下:\",\"-o :output之意,用于指定生成一个可执行文件的文件名 -c :用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序 -I :增加编译时搜索头文件的路径 -L :增加编译时搜索静态连接库的路径 -S :把源文件生成汇编代码文件 -lm:表示标准库的目录中名为libm.a的函数库 -lpthread :连接NPTL实现的线程库 -std= :用于指定把使用的C语言的版本 # 例如: # 把源文件test.c按照c99标准编译成可执行程序test gcc -o test test.c -lm -std=c99 #把源文件test.c转换为相应的汇编程序源文件test.s gcc -S test.c \"]},\"155\":{\"h\":\"time\",\"t\":[\"该命令用于测算一个命令(即程序)的执行时间。它的使用非常简单,就像平时输入命令一样,不过在命令的前面加入一个 time 即可,例如:\",\"time ./process time ps aux \",\"在程序或命令运行结束后,在最后输出了三个时间,它们分别是:\",\"user:用户 CPU 时间,命令执行完成花费的用户 CPU 时间,即命令在用户态中执行时间总和;\",\"system:系统 CPU 时间,命令执行完成花费的系统 CPU 时间,即命令在核心态中执行时间总和;\",\"real:实际时间,从 command 命令行开始执行到运行终止的消逝时间;\",\"注:用户 CPU 时间和系统 CPU 时间之和为 CPU 时间,即命令占用 CPU 执行的时间总和。实际时间要大于 CPU 时间,因为 Linux 是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。\"]},\"156\":{\"c\":[\"Linux\"]},\"157\":{\"h\":\"vi / vim 编辑器\",\"t\":[\"vi 编辑器是 Linux 系统下标准的编辑器,这玩意有些简单,虽然命令很多,不过练练就好,懒得写了,参考 Linux vi/vim | 菜鸟教程 吧。\"]},\"158\":{\"h\":\"三种模式\",\"t\":[\"img\",\"基本上 vi/vim 共分为三种模式,分别是 命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:\"]},\"159\":{\"h\":\"命令模式\",\"t\":[\"用户刚刚启动 vi/vim,便进入了命令模式。\",\"此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。\",\"以下是常用的几个命令:\",\"i 切换到输入模式,以输入字符。\",\"x 删除当前光标所在处的字符。\",\": 切换到底线命令模式,以在最底一行输入命令。\",\"若想要编辑文本:启动 Vim,进入了命令模式,按下 i,切换到输入模式。\",\"命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。\"]},\"160\":{\"h\":\"输入模式\",\"t\":[\"在命令模式下按下 i 就进入了输入模式。\",\"在输入模式中,可以使用以下按键:\",\"字符按键以及 Shift 组合,输入字符\",\"ENTER,回车键,换行\",\"BACK SPACE,退格键,删除光标前一个字符\",\"DEL,删除键,删除光标后一个字符\",\"方向键,在文本中移动光标\",\"HOME/END,移动光标到行首/行尾\",\"Page Up/Page Down,上/下翻页\",\"Insert,切换光标为输入/替换模式,光标将变成竖线/下划线\",\"ESC,退出输入模式,切换到命令模式\"]},\"161\":{\"h\":\"底线命令模式\",\"t\":[\"在命令模式下按下:(英文冒号)就进入了底线命令模式。\",\"底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。\",\"在底线命令模式中,基本的命令有(已经省略了冒号):\",\"q 退出程序\",\"w 保存文件\",\"按 ESC 键可随时退出底线命令模式。\"]},\"162\":{\"h\":\"命令\"},\"163\":{\"h\":\"命令模式\"},\"164\":{\"h\":\"移动光标\",\"t\":[\"上下左右和 h,j,k,l。可以用 数字+j / 数字 +↓ 移动多行\",\"命令\",\"描述\",\"[Ctrl] + [f]\",\"屏幕『向下』移动一页,相当于 [Page Down] 按键 (常用)\",\"[Ctrl] + [b]\",\"屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)\",\"[Ctrl] + [d]\",\"屏幕『向下』移动半页\",\"[Ctrl] + [u]\",\"屏幕『向上』移动半页\",\"nspace\",\"那个 n 表示『数字』,例如 20。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20space 则光标会向后面移动 20 个字符距离。\",\"0 或功能键 [Home]\",\"这是数字『0』:移动到这一行的最前面字符处 (常用)\",\"$ 或功能键 [End]\",\"移动到这一行的最后面字符处 (常用)\",\"H\",\"光标移动到这个屏幕的最上方那一行的第一个字符\",\"M\",\"光标移动到这个屏幕的中央那一行的第一个字符\",\"L\",\"光标移动到这个屏幕的最下方那一行的第一个字符\",\"G / shift+g\",\"移动到这个文件的最后一行(常用)\",\"nG\",\"n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行 (可配合 : set nu)\",\"gg\",\"移动到这个档案的第一行,相当于 1G 啊!(常用)\",\"nEnter\",\"n 为数字。光标向下移动 n 行 (常用)\"]},\"165\":{\"h\":\"删除、复制与贴上\",\"t\":[\"命令\",\"描述\",\"x, X\",\"在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键),X 为向前删除一个字符 (相当于 [backspace] 亦即是退格键) (常用)\",\"nx\",\"n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符,『10x』。\",\"dd\",\"删除游标所在的那一整行 (常用)\",\"ndd\",\"n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)\",\"d1G\",\"删除光标所在到第一行的所有数据\",\"dG\",\"删除光标所在到最后一行的所有数据\",\"d$\",\"删除游标所在处,到该行的最后一个字符\",\"d0\",\"那个是数字的 0,删除游标所在处,到该行的最前面一个字符\",\"yy\",\"复制游标所在的那一行 (常用)\",\"nyy\",\"n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行 (常用)\",\"y1G\",\"复制游标所在行到第一行的所有数据\",\"yG\",\"复制游标所在行到最后一行的所有数据\",\"y0\",\"复制光标所在的那个字符到该行行首的所有数据\",\"y$\",\"复制光标所在的那个字符到该行行尾的所有数据\",\"p, P\",\"p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后,那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)\",\"J\",\"将光标所在行与下一行的数据结合成同一行\",\"c\",\"重复删除多个数据,例如向下删除 10 行,[ 10cj ]\",\"u\",\"撤销\",\"[Ctrl]+r\",\"重做\",\"这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!\",\".\",\"不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了!(常用)\"]},\"166\":{\"h\":\"底线命令\"},\"167\":{\"h\":\"保存与退出\"},\"168\":{\"h\":\"搜索替换\",\"t\":[\"命令\",\"描述\",\"/word\",\"向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)\",\"?word\",\"向光标之上寻找一个字符串名称为 word 的字符串。\",\"n\",\"重复前一个搜索动作。如 /word 后按 n 则为查找下一个\",\"N\",\"与 n 相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird。\",\": n1,n2s/word1/word2/g\",\"n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2!举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:『:100,200s/vbird/VBIRD/g』。(常用)\",\":1,$s/word1/word2/g 或 :%s/word1/word2/g\",\"从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!(常用)\",\":1,$s/word1/word2/gc 或 :%s/word1/word2/gc\",\"从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2!且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)\"]},\"169\":{\"h\":\"第二部分:一般模式切换到编辑模式的可用的按钮说明\",\"t\":[\"进入输入或取代的编辑模式\",\"i, I\",\"进入输入模式 (Insert mode):i 为『从目前光标所在处输入』,I 为『在目前所在行的第一个非空格符处开始输入』。(常用)\",\"a, A\",\"进入输入模式 (Insert mode):a 为『从目前光标所在的下一个字符处开始输入』,A 为『从光标所在行的最后一个字符处开始输入』。(常用)\",\"o, O\",\"进入输入模式 (Insert mode):这是英文字母 o 的大小写。o 为在目前光标所在的下一行处输入新的一行;O 为在目前光标所在的上一行处输入新的一行!(常用)\",\"r, R\",\"进入取代模式 (Replace mode):r 只会取代光标所在的那一个字符一次;R 会一直取代光标所在的文字,直到按下 ESC 为止;(常用)\",\"[Esc]\",\"退出编辑模式,回到一般模式中 (常用)\",\"上面这些按键中,在 vi 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时,一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!\"]},\"170\":{\"h\":\"第三部分:一般模式切换到指令行模式的可用的按钮说明\",\"t\":[\"指令行的储存、离开等指令\",\": w\",\"将编辑的数据写入硬盘档案中 (常用)\",\": w!\",\"若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入,还是跟你对该档案的档案权限有关啊!\",\": q\",\"离开 vi (常用)\",\": q!\",\"若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。\",\"注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~\",\": wq\",\"储存后离开,若为 : wq! 则为强制储存后离开 (常用)\",\"ZZ\",\"这是大写的 Z 喔!如果修改过,保存当前文件,然后退出!效果等同于 (保存并退出)\",\"ZQ\",\"不保存,强制退出。效果等同于 : q!。\",\": w [filename]\",\"将编辑的数据储存成另一个档案(类似另存新档)\",\": r [filename]\",\"在编辑的数据中,读入另一个档案的数据。亦即将『filename』这个档案内容加到游标所在行后面\",\": n1,n2 w [filename]\",\"将 n1 到 n2 的内容储存成 filename 这个档案。\",\":! command\",\"暂时离开 vi 到指令行模式下执行 command 的显示结果!例如『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!\",\"vim 环境的变更\",\": set nu\",\"显示行号,设定之后,会在每一行的前缀显示该行的行号\",\": set nonu\",\"与 set nu 相反,为取消行号!\"]},\"171\":{\"c\":[\"Linux\"]},\"172\":{\"h\":\"lrzsz 的使用方法\",\"t\":[\"上传 和 下载 都是针对本地来说,是站在用户的角度的;如果站在服务器的角度,那么本地上传的文件,服务器应为 接收(recive),下载到本地的文件,对服务器应是 发送(send)。因此,\",\"sz:让服务器将选定的文件发送(send)到本地\",\"rz:让服务器接收 (receive) 在本地选择的文件\"]},\"173\":{\"h\":\"上传(rz)\"},\"174\":{\"h\":\"方法 1:拖拽\",\"t\":[\"直接将本地文件拖拽到 Xshell 里,即可将文件上传到当前工作目录。\"]},\"175\":{\"h\":\"方法 2:rz\",\"t\":[\"$ rz # 输入`rz`回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件,上传到服务器的路径为当前执行`rz`命令的目录。 \"]},\"176\":{\"h\":\"下载(sz)\",\"t\":[\"#下载一个文件 $ sz filename #下载多个文件 $ sz filename1 filename2 #下载dir目录下所有文件,不包含dir下的文件夹 $ sz dir/* \",\"为什么用 lrzsz:https://www.cnblogs.com/thrillerz/p/4745933.html\",\"Linux 下和 Windows 之间的文件传输工具 rz/sz(lrz/lsz) 介绍\",\"【什么是 rz/sz (lsz/lrz)】\",\"rz,sz 是便是 Linux/Unix 同 Windows 进行 ZModem 文件传输的命令行工具。\",\"简单说就是,可以很方便地用这两个 sz/rz 工具,实现 Linux 下和 Windows 之间的文件传输 (发送和接收),速度大概为 10KB/s,适合中小文件。rz/sz 通过 Zmodem 协议传输数据。\",\"【为什么要用 rz/sz】\",\"普 通 Linux 和 Windows 之间的文件共享方法,主要有建立 nfs 实现文件共享,和 tftp 之类的方法,但是都很麻烦,而如果只是小文件(几十 K,几百 K),那么直接用 rz/sz,就显得极其地方便了。大文件的话,还是要考虑上面说得,其他的共享方法了,毕竟,rz/sz 速度只有 10K 左右,传 大文件会累死人的。。。\"]},\"177\":{\"c\":[\"Linux\"]},\"178\":{\"h\":\"19.linux-bashrc-VS-bash_profile\"},\"179\":{\"h\":\"环境变量\"},\"180\":{\"h\":\"自定义命令提示符\",\"t\":[\"通过修改 PS1 变量实现:\",\" \\\\u 显示当前用户账号 \\\\v BASH的版本信息 \\\\H 完整的主机名称。例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun.alibaba.clound \\\\h 仅取主机的第一个名字,例如:hostname为aliyun.alibaba.clound,则这个名称就是aliyun \\\\W 只显示当前路径最后一个目录 \\\\w 显示当前绝对路径(当前用户目录会以 ~代替) \\\\t 显示时间为24小时格式,如:14:19:34 \\\\T 显示时间为12小时格式,如:02:19:34 \\\\A 显示时间为24小时格式但是不带秒,如:14:19 \\\\d 代表日期,格式为weekday month date,例如:\\\"Mon Aug1\\\" $PWD 显示当前全路径 # 显示命令行提示符号,一般使用'$'或者'#' sudo echo \\\"export PS1='[\\\\u@\\\\h \\\\w]# '\\\" >> /etc/profile # 如果想要在用户家目录的时候显示为~则可以将$PWD换为\\\\w \",\"export PS1='[\\\\u@\\\\h \\\\w]\\\\$ ' # 效果 [scujh_zjb@scu ~/311]$ pwd /home/scujh_zjb/311 [scujh_zjb@scu ~/311]$ \",\"自用备份:\",\"# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions ## PATH PATH=/opt/apps/vasptool/bin:${PATH} PATH=/opt/apps/vasptool/vtstscripts-978:${PATH} PATH=/opt/apps/anaconda3/bin:${PATH} PATH=/home/scujh_zjb/apps/bin:${PATH} PATH=/home/scujh_zjb/apps/scripts:${PATH} export PATH ## TimeZone export TZ='Asia/Shanghai' export TIME_STYLE='+%Y-%m-%d %H:%M:%S' # 时区与时间显示格式本地化 ## alisa alias ..='cd ..' alias ...='cd ../..' alias cd..='cd ..' alias cppbs='cp ~/vasp_cpu.pbs . && ls --color' alias qq='qstat -a' alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias ll='ls -lh' # ll 列出的文件大小使用合适的单位表示,默认为 kb cdpwd() { cd \\\"${1}\\\"; # pwd; # echo -e \\\"\\\\033[36m`pwd` \\\\033[0m\\\"; # echo -e \\\"\\\\033[47;30m `pwd` \\\\033[0m\\\"; ls --color; } alias cd='cdpwd' alias ls='echo -e \\\"\\\\033[36m`pwd` \\\\033[0m\\\" && ls --color' #alias vi='vim' alias viewmail='vi /var/spool/mail/scujh_zjb' export PS1='[\\\\u@\\\\h \\\\w]\\\\$ ' \"]},\"181\":{\"h\":\"linux 中 . bashrc 与 . bash_profile 的区别\",\"t\":[\"具体参考 关于“.bash_profile”和“.bashrc”区别的总结 | CSDN。\",\"由此可见,“profile”系列文件的主要目的在于为“登录 shell”设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。\",\"顺便提一句,Linux 中“rc”是英文“run command”的缩写,表示文件中存放需要执行的命令。其实这也非常符合逻辑,设置功能就要执行 shopt 命令,而设置别名要执行 alias 命令。与“rc”系列互补,“profile”系列用来设置环境变量,它不会去调用这两个命令,但却经常需要使用 export 语句。不信你可以看一看这两个文件。\",\"如果你想对 bash 的功能进行设置或者是定义一些别名,推荐你修改 ~/.bashrc 文件,这样无论你以何种方式打开 shell,你的配置都会生效。而如果你要更改一些环境变量,推荐你修改 ~/.bash_profile 文件,因为考虑到 shell 的继承特性,这些更改确实只应该被执行一次(而不是多次)。针对所有用户进行全局设置,推荐你在 /etc/profile.d 目录下添加以 .sh 结尾的文件,而不是去修改全局 startup 文件。\"]},\"182\":{\"c\":[\"Linux\"]},\"183\":{\"h\":\"Linux 下无 Root 权限编译软件\",\"t\":[\"参考:linux 非 root 用户安装软件入门 | tlanyan.me .\",\"下为上文的备份。\",\"下面是 Linux 下非 root 用户安装软件的一般流程:\",\"获取源代码;常用 wget/curl 下载,也可以用类似 apt-get source 的方式获取仓库中软件源代码;\",\"解压源代码安装包;例如对于 gzip 格式的 tar 包:tar -zxvf xxx.tar.gz;\",\"切换到解压后的目录,运行 ./configure;./configure --help 可以列出配置项,非 root 用户最重要的配置项是安装目录 prefix,例如 ./configure --prefix=/path/to/bin。在无法自动找到依赖库位置的情况下,用 --with-xx-dir=xxx 的形式配置依赖库位置;\",\"编译源代码并复制可执行文件到指定的安装目录:make && make install。这两条命令可以分开执行,make 时指定 -j 参数并行编译,能显著减少编译耗时(单进程编译 GCC 需要几个小时,开启并行编译后可缩短到十几分钟);\",\"使用 export PATH=/path/to/bin:$PATH 更新 PATH 变量。命令行窗口运行此命令只对本次会话中有效,可将其写到.bashrc 或者.bash_profile 中;\",\"如果安装的是动态链接库,则需要更新动态链接库路径:export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH。最好将此命令写在.bashrc 文件中,用户下次打开会话时自动执行。\",\"从 windows 转移到 Linux 的用户刚开始会有各种不适,因使用习惯水土不服而放弃 Linux 的不在少数。还没有领略到 Linux 的美好就退却,对于这类人只能说可惜。还有部分人在个人电脑上用 Linux,总体感觉还不错;切换到工作时只能使用无特权的普通账户,会遇到“没 root 权限 -> 出现问题 -> 找答案 -> 提示用 root”的死循环,于是感到沮丧和抓狂。本文主要面向对象第二类人,简要介绍没有 root 权限时,安装软件的步骤和操作。\",\"许多人都非常熟悉 Windows,毫无疑问 windows 是目前桌面操作系统的王者。随着高富帅和土豪种群的增长,Mac OS 的份额也逐步提升。无论是 windows 还是 Mac OS,用户接触的都是图形界面(Graphical User Interface,GUI)。转向 Linux 之后,大部分人会优先使用带图形界面的系统作为过渡。比如本人最开始使用 Ubuntu,熟悉后才慢慢转向 CentOS 和 Fedora。许多优秀的 Linux 桌面图形发行版,如 Debian/Ubuntu/Mint,Fedora,OpenSUSE 等,图形界面华美,桌面体验良好,可以给 Windows 用户很好的过渡。这些 Linux 系统基本都开源且可免费使用(支持服务可能要付费),是 Linux 入门级操作系统的首选。\",\"Windows 上安装软件相当傻瓜化,下载 exe 后双击运行,点击鼠标一直 next 就完事。安装过程中,小白用户一般不会看引导页面种的内容(估计字都认识,连在一块不知道什么意思),附带安装其他软件或者对系统做了额外改动也毫不知情。当有人(一般是女生)说电脑开机后反应很慢/失去响应,过去一看电脑上瑞星、360、金山毒霸、腾讯安全管家等各种软件都在右下角托盘刷着存在感。对于这种情形,只能表示理解,进入安全模式把不用的软件都卸载掉,电脑基本上就正常了。\",\"回到 Linux 安装软件,情况稍有不同。首先是软件一般从软件仓库中获取,即现在熟悉的应用市场;再次基本上用命令行安装软件,不是双击安装包(Mac OS 可以这样做)。所以熟悉命令行安装软件,是迈向 Linux 世界基础的一步。幸运的是 linux 上又 apt/yum/dnf 等简单好用的软件包管理工具,能自动解决软件包之间的依赖问题,让用户一行命令就获取到所需软件。例如安装 g++,执行 sudo apt-get install g++、sudo yum install -y gcc-c++ 即可。\",\"然而有些软件是有源代码,因为版权、无人维护等原因不在软件仓库中,apt-get/yum/dnf 的安装方式就行不通,只能从源码编译。这便需要先下载源代码,解压(大多数不能点右键解压),然后按照说明文档 make && make install。不管是从软件仓库,还是手工编译源代码的方式,对有 root 权限的用户问题都不大。倒霉的是没有 root 权限,还不得不安装某些软件才能正常工作的普通账号。这些普通账号需要额外的软件或依赖库时,该如何自救解脱?\",\"因为无法安装的原因是权限限制,故而有必要先了解一下 Linux 中文件和用户的权限。对任意一个文件(Linux 下一切皆文件,包括目录、CPU 内存等设备),可以使用 ls -l 查看其权限。命令的每行首列输出类似 (d|-)rwxrwxrwx,这就是文件的权限标志。第一个字母是文件类型,d 表示目录,- 表示普通文件,s 套接字,l 链接文件,等等;接下来有 9 列,每 3 列一组,总共 3 组,对应文件属主 (owner)、属主组员 (group) 和其他用户 (other) 对该文件的权限。每组的标志类似 rwx。rwx 是读 (read),写 (write) 和执行 (execute) 三种权限的缩写。如果没有某种权限,对应标志位是 -。例如某个文件 foo.txt,只有属主可读写,其权限标志就是:-rw-------。注意,非 root 用户下,文件夹必须要有执行(x)权限才能进入。\",\"再看用户的权限。root 用户是 bug,电脑上所有的文件都是它的,权限位设置对其无效。非 root 用户默认 只对家目录有完全的控制权限,对/tmp 目录有读写的权限。/tmp 目录如其名,应该只在其中存放临时性文件,该目录在系统重启时会被清空。/var、/usr、/bin、/opt 等常见文件夹及子目录,几乎所有用户都能访问其中的文件和内容,执行可执行程序,但只有 root 用户和属主有写入的权限。\",\"了解完权限,再看普通账户安装软件困难的原因。大部分软件默认安装路径是 /usr/bin 或 /usr/local/bin,安装时需要将可执行文件复制到这些目录下。普通用户没有目录的写权限,于是提示无权限导致安装失败。切换到 root 模式后,一切又都好使了。根据普通账号的权限,可以得出结论:非 root 用户,(几乎)只能安装软件到家目录下。\"]},\"184\":{\"c\":[\"Install\",\"linux\"]},\"185\":{\"h\":\"Linux\"},\"186\":{\"h\":\"Openmpi\"},\"187\":{\"h\":\"各种乱七八糟的报错\",\"t\":[\"libi40iw-i40iw_ucreate_qp: failed to create QP, unsupported QP type: 0x4 -------------------------------------------------------------------------- Failed to create a queue pair (QP): Hostname: compute-0-9 Requested max number of outstanding WRs in the SQ: 1 Requested max number of outstanding WRs in the RQ: 2 Requested max number of SGEs in a WR in the SQ: 511 Requested max number of SGEs in a WR in the RQ: 511 Requested max number of data that can be posted inline to the SQ: 0 Error: File exists Check requested attributes. -------------------------------------------------------------------------- -------------------------------------------------------------------------- Open MPI has detected that there are UD-capable Verbs devices on your system, but none of them were able to be setup properly. This may indicate a problem on this system. You job will continue, but Open MPI will ignore the \\\"ud\\\" oob component in this run. Hostname: compute-0-9 -------------------------------------------------------------------------- \",\"解决:\",\"Put “oob=tcp” in your default MCA param file \",\"新建 ~/.openmpi/mca-params.conf,写入 oob=tcp 即可。\",\"MCA param file:\",\"$HOME/.openmpi/mca-params.conf: This is the user-supplied set of values, which has the highest precedence.\",\"$prefix/etc/openmpi-mca-params.conf: This is the system-supplied set of values, which has a lower precedence.\",\"参考:\",\"ORCA集群上运行BSUB脚本求助 - 量子化学 (Quantum Chemistry) - 计算化学公社 (keinsci.com)\",\"[OMPI users] Failed to register memory (openmpi 2.0.2) (narkive.com)\",\"Setting MCA parameters - IBM Documentation\"]},\"188\":{\"h\":\"Python\",\"t\":[\"这个文件夹放置在学习/使用 Python 过程中的文档和踩坑。\"]},\"189\":{\"h\":\"pip 报错\"},\"190\":{\"h\":\"找不到指定文件\",\"t\":[\"安装软件时的“找不到指定文件”,由 python 版本、pip 获得的包版本与当前 python 版本、系统不一致导致的。\",\"课题组一个同学安装 ase 时遇到以下报错,\",\"C:\\\\Users\\\\admin>pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting ase Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB) Collecting matplotlib>=3.1.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/ec/ae/82960a8135b2f5e7102e9538bed8a791525bb19cbee65326467f43af5d0c/matplotlib-3.6.0-cp311-cp311-win_amd64.whl (7.2 MB) Collecting numpy>=1.15.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/2e/bd/286dacf2655c4db1a5076390337c746452a08def20daa53b4903722545d2/numpy-1.23.3-cp311-cp311-win_amd64.whl (14.6 MB) Collecting scipy>=1.1.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/db/af/16906139f52bc6866c43401869ce247662739ad71afa11c6f18505eb0546/scipy-1.9.1.tar.gz (42.0 MB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [55 lines of output] The Meson build system Version: 0.62.2 Source dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd Build dir: C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build Build type: native build Project name: SciPy Project version: 1.9.1 WARNING: Failed to activate VS environment: Could not find C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\Installer\\\\vswhere.exe ..\\\\..\\\\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']] The following exception(s) were encountered: Running \\\"icl \\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" Running \\\"cl /?\\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" Running \\\"cc --version\\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" Running \\\"gcc --version\\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" Running \\\"clang --version\\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" Running \\\"clang-cl /?\\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" Running \\\"pgcc --version\\\" gave \\\"[WinError 2] 系统找不到指定的文件。\\\" A full log can be found at C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build\\\\meson-logs\\\\meson-log.txt + meson setup --native-file=C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-native-file.ini -Ddebug=false -Doptimization=2 --prefix=C:\\\\Program Files\\\\Python311 C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-install-hnc68765\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\.mesonpy-iocfb37s\\\\build Traceback (most recent call last): File \\\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\\", line 363, in main() File \\\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\\", line 345, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\pep517\\\\in_process\\\\_in_process.py\\\", line 130, in get_requires_for_build_wheel return hook(config_settings) ^^^^^^^^^^^^^^^^^^^^^ File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 923, in get_requires_for_build_wheel with _project(config_settings) as project: File \\\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\\", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 902, in _project with Project.with_temp_working_dir( File \\\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\contextlib.py\\\", line 137, in __enter__ return next(self.gen) ^^^^^^^^^^^^^^ File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 547, in with_temp_working_dir yield cls(source_dir, tmpdir, build_dir) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 463, in __init__ self._configure(reconfigure=bool(build_dir) and not native_file_mismatch) File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 494, in _configure self._meson( File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 477, in _meson return self._proc('meson', *args) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File \\\"C:\\\\Users\\\\admin\\\\AppData\\\\Local\\\\Temp\\\\pip-build-env-s4svfkf_\\\\overlay\\\\Lib\\\\site-packages\\\\mesonpy\\\\__init__.py\\\", line 472, in _proc subprocess.check_call(list(args)) File \\\"C:\\\\Program Files\\\\Python311\\\\Lib\\\\subprocess.py\\\", line 413, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['meson', 'setup', '--native-file=C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-native-file.ini', '-Ddebug=false', '-Doptimization=2', '--prefix=C:\\\\\\\\Program Files\\\\\\\\Python311', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd', 'C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\AppData\\\\\\\\Local\\\\\\\\Temp\\\\\\\\pip-install-hnc68765\\\\\\\\scipy_9107fc1b1e9e4610afdf71a4f31e69fd\\\\\\\\.mesonpy-iocfb37s\\\\\\\\build']' returned non-zero exit status 1. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip. \",\"注意 10 行,发现是安装 SciPy 时报了错,26、28 行指明是编译的问题,查了资料初步判断是平台不对,下错包了。\",\"该人环境:Windows 10 x64,Python 3.11 rc2\",\"结合网上资料,提出以下解决方法。\",\"在 python 交互命令行中通过以下查询当前机器支持的编译器/平台:\",\">>> import pip._internal >>> print(pip._internal.pep425tags.get_supported()) \",\"正常应该可以输出当前机器支持的平台,但如果报错如下,则在终端使用\",\"python -m pip debug --verbose \",\"PS C:\\\\WINDOWS\\\\system32> python Python 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)] on win32 Type \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information. >>> import pip._internal >>> print(pip._internal.pep425tags.get_supported()) Traceback (most recent call last): File \\\"\\\", line 1, in AttributeError: module 'pip._internal' has no attribute 'pep425tags' >>> print(pip._internal) >>> exit() PS C:\\\\WINDOWS\\\\system32> python -m pip debug --verbose WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice. pip version: pip 22.2.2 from C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip (python 3.11) sys.version: 3.11.0rc2 (main, Sep 11 2022, 20:22:52) [MSC v.1933 64 bit (AMD64)] sys.executable: C:\\\\Program Files\\\\Python311\\\\python.exe sys.getdefaultencoding: utf-8 sys.getfilesystemencoding: utf-8 locale.getpreferredencoding: cp936 sys.platform: win32 sys.implementation: name: cpython 'cert' config value: Not specified REQUESTS_CA_BUNDLE: None CURL_CA_BUNDLE: None pip._vendor.certifi.where(): C:\\\\Program Files\\\\Python311\\\\Lib\\\\site-packages\\\\pip\\\\_vendor\\\\certifi\\\\cacert.pem pip._vendor.DEBUNDLED: False vendored library versions: CacheControl==0.12.11 colorama==0.4.5 distlib==0.3.5 distro==1.7.0 msgpack==1.0.4 packaging==21.3 pep517==0.12.0 platformdirs==2.5.2 pyparsing==3.0.9 requests==2.28.1 certifi==2022.06.15 chardet==5.0.0 idna==3.3 urllib3==1.26.10 rich==12.5.1 (Unable to locate actual module version, using vendor.txt specified version) pygments==2.12.0 typing_extensions==4.3.0 (Unable to locate actual module version, using vendor.txt specified version) resolvelib==0.8.1 setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version) six==1.16.0 tenacity==8.0.1 (Unable to locate actual module version, using vendor.txt specified version) tomli==2.0.1 webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version) Compatible tags: 39 cp311-cp311-win_amd64 cp311-abi3-win_amd64 cp311-none-win_amd64 cp310-abi3-win_amd64 cp39-abi3-win_amd64 cp38-abi3-win_amd64 cp37-abi3-win_amd64 cp36-abi3-win_amd64 cp35-abi3-win_amd64 cp34-abi3-win_amd64 cp33-abi3-win_amd64 cp32-abi3-win_amd64 py311-none-win_amd64 py3-none-win_amd64 py310-none-win_amd64 py39-none-win_amd64 py38-none-win_amd64 py37-none-win_amd64 py36-none-win_amd64 py35-none-win_amd64 py34-none-win_amd64 py33-none-win_amd64 py32-none-win_amd64 py31-none-win_amd64 py30-none-win_amd64 cp311-none-any py311-none-any py3-none-any py310-none-any py39-none-any py38-none-any py37-none-any py36-none-any py35-none-any py34-none-any py33-none-any py32-none-any py31-none-any py30-none-any PS C:\\\\WINDOWS\\\\system32> \",\"后面列出的是允许使用的版本,去 pypi 源站找个可用的下载,然后 pip install ,如果可以,就结束。如果报不支持当前平台,或没有找到一样的,则可能是 python 版本太新?\",\"scipy-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl scipy-1.9.1-cp310-cp310-macosx_12_0_arm64.whl scipy-1.9.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl scipy-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl scipy-1.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl scipy-1.9.1-cp310-cp310-win_amd64.whl scipy-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl scipy-1.9.1-cp38-cp38-macosx_12_0_arm64.whl scipy-1.9.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl scipy-1.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl scipy-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl scipy-1.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl scipy-1.9.1-cp38-cp38-win32.whl scipy-1.9.1-cp38-cp38-win_amd64.whl scipy-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl scipy-1.9.1-cp39-cp39-macosx_12_0_arm64.whl scipy-1.9.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl scipy-1.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl scipy-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl scipy-1.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl scipy-1.9.1-cp39-cp39-win32.whl scipy-1.9.1-cp39-cp39-win_amd64.whl scipy-1.9.1.tar.gz \",\"例如本例,Python 3.11 rc2,scipy 没有对应的包,本例中里应当是 scipy-1.9.1-cp311-cp311-win_amd64.whl 的,但没有,下载 scipy-1.9.1-cp310-cp310-win_amd64.whl 则报\",\"PS C:\\\\users\\\\admin\\\\Downloads> pip install .\\\\scipy-1.9.1-cp310-cp310-win_amd64.whl ERROR: scipy-1.9.1-cp310-cp310-win_amd64.whl is not a supported wheel on this platform. PS C:\\\\users\\\\admin\\\\Downloads> \",\"然后,试着卸载了 python 3.11 rc2,安装最新的稳定版 3.10.7,结果果然解决...\",\"PS C:\\\\WINDOWS\\\\system32> pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting ase Using cached https://pypi.tuna.tsinghua.edu.cn/packages/38/b0/3c0a7afaf66274588216c251376ac2bea0269eb7a5e1da77521811060553/ase-3.22.1-py3-none-any.whl (2.2 MB) Collecting scipy>=1.1.0 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a9/17/67861cb65190a28e726e5f99f8938756385e8b2257cbae2b13e58594ae27/scipy-1.9.1-cp310-cp310-win_amd64.whl (38.6 MB) ---------------------------------------- 38.6/38.6 MB 2.0 MB/s eta 0:00:00 Collecting matplotlib>=3.1.0 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/1d/ca/226bf297851690781ac79d8d1cb1af550f5d4926c56ee5035bf3d2027093/matplotlib-3.6.0-cp310-cp310-win_amd64.whl (7.2 MB) ---------------------------------------- 7.2/7.2 MB 2.1 MB/s eta 0:00:00 Collecting numpy>=1.15.0 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/51/b6/861f5e9d59c1bb6c05467f5ddcba965cb2c4b1fd62f6bf7b4c4632492625/numpy-1.23.3-cp310-cp310-win_amd64.whl (14.6 MB) ---------------------------------------- 14.6/14.6 MB 2.7 MB/s eta 0:00:00 Collecting fonttools>=4.22.0 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/c3/f2/8e1f94318021b162000a8c48f2c460d5efba78fe0e46ef5d236ff3fe8147/fonttools-4.37.2-py3-none-any.whl (959 kB) ---------------------------------------- 959.8/959.8 kB 1.1 MB/s eta 0:00:00 Collecting python-dateutil>=2.7 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) ---------------------------------------- 247.7/247.7 kB 447.2 kB/s eta 0:00:00 Collecting pillow>=6.2.0 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/02/55/67a3c17b9e7d972ed8c246f104da99ca4f3ea42fba566697e479011b84b6/Pillow-9.2.0-cp310-cp310-win_amd64.whl (3.3 MB) ---------------------------------------- 3.3/3.3 MB 1.6 MB/s eta 0:00:00 Collecting pyparsing>=2.2.1 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl (98 kB) Collecting contourpy>=1.0.1 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e2/a1/60afbcfe6bbd801165e3234281dfd515305d40bce4534738ea33b22ef3d4/contourpy-1.0.5-cp310-cp310-win_amd64.whl (164 kB) ---------------------------------------- 164.1/164.1 kB 5.0 MB/s eta 0:00:00 Collecting cycler>=0.10 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl (6.4 kB) Collecting packaging>=20.0 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl (40 kB) Collecting kiwisolver>=1.0.1 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/68/20/2ce1186ef4edf47281faf58f6dd72a1fcd2be1fc66514bd2d220097bdcd1/kiwisolver-1.4.4-cp310-cp310-win_amd64.whl (55 kB) ---------------------------------------- 55.3/55.3 kB 726.2 kB/s eta 0:00:00 Collecting six>=1.5 Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB) Installing collected packages: six, pyparsing, pillow, numpy, kiwisolver, fonttools, cycler, scipy, python-dateutil, packaging, contourpy, matplotlib, ase Successfully installed ase-3.22.1 contourpy-1.0.5 cycler-0.11.0 fonttools-4.37.2 kiwisolver-1.4.4 matplotlib-3.6.0 numpy-1.23.3 packaging-21.3 pillow-9.2.0 pyparsing-3.0.9 python-dateutil-2.8.2 scipy-1.9.1 six-1.16.0 PS C:\\\\WINDOWS\\\\system32> \",\"该条报错可参考:\",\"Python学习笔记: pip install 常见错误汇总 - yahoon - 博客园 (cnblogs.com)\"]},\"191\":{\"h\":\"pip 换源\"},\"192\":{\"h\":\"国内源\",\"t\":[\"新版 ubuntu 要求使用 https 源,要注意。\",\"清华:https://pypi.tuna.tsinghua.edu.cn/simple\",\"阿里云:http://mirrors.aliyun.com/pypi/simple/\",\"中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/\",\"华中理工大学:http://pypi.hustunique.com/\",\"山东理工大学:http://pypi.sdutlinux.org/\",\"豆瓣:http://pypi.douban.com/simple/\",\"淘宝:http://npm.taobao.org/mirrors/python/\"]},\"193\":{\"h\":\"临时使用:\",\"t\":[\"可以在使用 pip 的时候加参数 -i \",\"例如:pip install pyspider -i ,这样就会从清华这边的镜像去安装 pyspider 库。\"]},\"194\":{\"h\":\"永久修改,一劳永逸:\",\"t\":[\"Linux 下,修改 ~/.pip/pip.conf\",\"[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=mirrors.aliyun.com \",\"windows 下,直接在用户目录中创建一个 pip 目录,如:C:\\\\Users\\\\xx\\\\pip,新建文件 pip.ini。内容同上。\"]},\"195\":{\"h\":\"理论知识\",\"t\":[\"不写了,反正写了也看不懂 — — !\",\"嘻\"]},\"196\":{\"h\":\"关于理论计算\",\"t\":[\"啊这...我也不知道啊...\",\"插播一个我觉得还不错的视频 谈谈理论计算如何入门(上) | BV1z7411f7ra ,UP是刘锦程博士:\"]},\"197\":{\"h\":\"第一性原理\",\"t\":[\"Todo\"]},\"198\":{\"h\":\"密度泛函理论\",\"t\":[\"Todo\"]},\"199\":{\"h\":\"局域密度近似\",\"t\":[\"Todo\"]},\"200\":{\"h\":\"自洽场\",\"t\":[\"Todo\"]},\"201\":{\"h\":\"过渡态理论\",\"t\":[\"Todo\"]},\"202\":{\"h\":\"Todo\",\"t\":[\"这理论可太多了\"]},\"203\":{\"c\":[\"Theory\"]},\"204\":{\"h\":\"计算常用软件\",\"t\":[\"本列表中,对于完成课程所必需使用的软件,标注为 (Required);可选安装的软件,标注为 (Optional)。\",\"对于 Windows 端的程序,部分关键的安装步骤展示在第二节。\"]},\"205\":{\"h\":\"For Windows\",\"t\":[\"建模及可视化软件 (Required) \",\"Materials Studio\",\"VESTA:官网 / 下载\",\"GaussView:高斯 (Optional)\",\"SSH 客户端 (Required) \",\"XShell:官网找教育版\",\"WindTerm:集成 X11 server,免费。\",\"文件传输工具 (Required) \",\"XFTP\",\"WinSCP\",\"X Server (Required) \",\"Xming:下载\",\"XManager\",\"开发环境:Python (Required)(含 ase 包) \",\"ASE:官网 / 安装见 windows-ase-install.md\",\"文本编辑器 (Optional) \",\"Notepad++\",\"VS Code\",\"Markdown 编辑器(Optional) \",\"Typora\"]},\"206\":{\"h\":\"For Linux\",\"t\":[\"VASP :Vienna Ab-initio Simulation Package, 电子结构计算和量子力学 - 分子动力学模拟软件包,集群已安装\",\"VASP with VTST:Vasp TST(transition state theory) Tools,若为川大二代集群,可调用我已经编译的\",\"VTST Script:Vasp TST (transition state theory) Tools 脚本,安装参 linux-install-VTSTScript.md\",\"VASPKIT:VASP 预 - 后数据处理脚本, 官网 , 安装见 install-vaspkit.md\",\"ase:同 Windows ,需安装在 local 。\",\"gunplot (Optional) :命令行的交互式绘图工具,官网 / 学校已安装 / 安装见 linux-gunplot-install.md\",\"lrzsz (Optional) 参见 linux 安装 lrzsz | 计算模拟学习笔记 (northword.cn)\"]},\"207\":{\"h\":\"Windows 平台的部分软件安装\",\"t\":[\"由于安装过于简单,故只对部分关键步骤做说明。\"]},\"208\":{\"h\":\"Materials Studio 激活\",\"t\":[\"安装结束后,不要运行软件!把安装包旁的的 msi2019.lic 复制到 C: \\\\Program Files (x86)\\\\BIOVIA\\\\LicensePack\\\\Licenses\",\"image-20210913190855840\",\"然后启动授权管理器:\",\"image-20210913190616258\",\"image-20210913191736535\"]},\"209\":{\"h\":\"Python for Windows\",\"t\":[\"还没写\",\"话说感觉这玩意没必要写\",\"打开安装包后勾选上左下角的 添加到系统 PATH 的选项后再进行下一步!\"]},\"210\":{\"h\":\"Xshell 设置 X11 转发\",\"t\":[\"启动 Xlaunch,display number = 0,next,start no client,next,ok。\",\"在 xshell 的会话属性,ssh 隧道,x11 转移,x display:localhost:0.0。\",\"启动 ximg,在 xshell 中搞。\",\"参考:\",\"http://blog.sciencenet.cn/blog-950202-1152796.html\",\"https://blog.csdn.net/akuoma/article/details/82182913\"]},\"211\":{\"c\":[\"Install\"]},\"212\":{\"h\":\"安装 ASE\",\"t\":[\"总结:根据 python 版本选择 ase 版本。python3 及以上最新即可。python2 选 3.17.0 及以下。学校集群由于其他依赖包版本低,需要装 3.9.1。\"]},\"213\":{\"h\":\"Requirements\",\"t\":[\"最新版本的 ase 需要的环境条件 [1]:\",\"Python 3.6 or newer\",\"NumPy 1.11 or newer (base N-dimensional array package)\",\"SciPy 0.18 or newer (library for scientific computing)\",\"Optional but strongly recommended:\",\"Matplotlib 2.0.0 or newer for plotting\",\"tkinter for ase.gui\",\"Optional:\",\"Flask for ase.db web-interface\",\"pytest 3.6.1 or newer for running tests\",\"pytest-xdist 1.22.1 or newer for running tests in parallel\",\"spglib for certain symmetry-related features\"]},\"214\":{\"h\":\"Windows\"},\"215\":{\"h\":\"1.安装并配置 Python 环境\",\"t\":[\"python38 即可,Python for Windows。\",\"注意版本,不要下载未正式发布的版本,否则可能出现 找不到指定文件 报错。\"]},\"216\":{\"h\":\"2. 安装 ASE\",\"t\":[\"打开命令行/终端,输入以下命令的任意一个,即可安装 ASE。两行作用一致,但第二行配置了从清华大学镜像源下载安装,因此大陆网络使用第二行更快 [2]。\",\"pip install --upgrade --user ase pip install ase -i https://pypi.tuna.tsinghua.edu.cn/simple \",\"注意,是在命令行直接启动 pip,不是在命令行中运行 Python 后再 pip,否则你会收到如下报错:\",\"PS C:\\\\Users\\\\northword> python Python 3.10.4 (tags/v3.10.4:9d38120, Mar 23 2022, 23:13:41) [MSC v.1929 64 bit (AMD64)] on win32 Type \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information. >>> pip install ase File \\\"\\\", line 1 pip install ase ^^^^^^^ SyntaxError: invalid syntax >>> \"]},\"217\":{\"h\":\"3. 检查是否安装正确\",\"t\":[\"PS C:\\\\Users\\\\northword> ase --version ase-3.22.1 PS C:\\\\Users\\\\northword> \",\"返回以上结果既为正确。\",\"如不正确,例如如下报错,则请进入下一步添加环境变量。\",\"PS C:\\\\Users\\\\northword> ase ase : 无法将“ase”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确 ,然后再试一次。 所在位置 行:1 字符: 1 + ase + ~~~~ + CategoryInfo : ObjectNotFound: (ase1:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS C:\\\\Users\\\\northword> \"]},\"218\":{\"h\":\"4. 添加环境变量\",\"t\":[\"将以下添加到PATH %AppData%\\\\Roaming\\\\Python\\\\Python38\\\\Scripts \",\"该变量可能不一样,需要自行确定\"]},\"219\":{\"h\":\"Linux\",\"t\":[\"需要注意的是,支持 Python2 的 ase 最高版本是 3.17.0[3]。学校的集群是 python2.7,需要\",\"pip install --user ase==3.17.0 \",\"该版本要求 numpy-1.9.0,而学校配置的 1.7.1,需要\",\"pip install --user numpy==1.9.0 \",\"经测试会报错,没找到原因,把 ase 降级到 3.9.1,正常运行。\",\"pip install --user ase==3.9.1 \",\"或:下载:https://files.pythonhosted.org/packages/c1/32/c7a102936e877b43a90e3242c95a719c2056fd3184b33767948c16defd22/ase-3.9.1.tar.gz,上传,解压缩,pip install --user ase-3.9.1/setup.py(绝对路径)。\",\"与新版本不同,此时必须通过 ase-gui,而新版本可以 ase gui,因为旧版本 /home/2020223055092/.local/bin/ 下没有 ase.\",\"在 Windows 10 20H2 版本上,ASE 可能报错,可能是由于 numpy 与 Windows 20H2 不兼容导致,参考 03.numpy-in-win20H2。\",\"https://wiki.fysik.dtu.dk/ase/install.html#installation-using-pip↩︎\",\"由于 Python Pip 默认源服务器在境外,速度较慢,故须换为国内镜像源或配置科学上网。第二行安装命令已配置为清华大学镜像源。详细参考 pip 换源。 ↩︎\",\"https://pypi.org/project/ase/3.17.0/↩︎\"]},\"220\":{\"c\":[\"Install\"]},\"221\":{\"h\":\"VASPKIT 的配置\",\"t\":[\"推荐视频 VASPKIT 功能介绍,解放你的双手 :\",\"我们预计将 VASPKIT 安装在 ~/app/ 下,在用户目录下新建一个 app 文件夹并进入:\",\"cd ~ mkdir app cd app \"]},\"222\":{\"h\":\"下载\",\"t\":[\"你可以将其下载到自己的电脑上后再上传到服务器,也可以直接在服务器上下载。以下两种下载方式二选一即可。\"]},\"223\":{\"h\":\"方式一(Recommend)\",\"t\":[\"# VASPKIT软件的包 $ wget https://nchc.dl.sourceforge.net/project/vaspkit/Binaries/vaspkit.1.2.1.linux.x64.tar.gz # 赝势文件的包 自行下载上传,链接二选一,文件是同一个,包含 PBE 和 PWA 两种赝势,大陆网络推荐 gitee 。 # https://github.com/northword/dft-learning/blob/7b46bcb3e2464c4e6ef33415d3bbe491a0a8198f/app/pot.tgz # https://gitee.com/northword/dft-learning/blob/gitbook/app/pot.tgz \",\"下载成功即如图:\"]},\"224\":{\"h\":\"方式二\",\"t\":[\"官方下载地址:https://sourceforge.net/projects/vaspkit/files/Binaries/\",\"下载后使用 FTP 上传到服务器。\"]},\"225\":{\"h\":\"解压缩\",\"t\":[\"tar -xzvf vaspkit.1.2.1.linux.x64.tar.gz tar -xzvf pot.tgz rm vaspkit.1.2.1.linux.x64.tar.gz pot.tar vtstscripts.tar # 注意如果用的链接不同,文件名可能不同,自行变通。善用按Tab补全。 \",\"tar 命令用法见 tar。\"]},\"226\":{\"h\":\"配置 VASPKIT 程序的环境变量\",\"t\":[\"首先配置 VASPKIT 软件的变量。将软件自带的环境变量模板文件复制到用户目录,并编辑\",\"cp -f how_to_set_environment_variable ~/.vaspkit vi ~/.vaspkit \",\"打开后如下:\",\"# cp how_to_set_environment_variable ~/.vaspkit and modify the ~/.vaspkit file based on your settings! VASP5 .TRUE. # .TRUE. or .FALSE.; Set .FALSE. if you are using vasp.4.x LDA_PATH ~/POTCAR/LDA # Path of LDA potential. PBE_PATH ~/POTCAR/PBE # Path of PBE potential. GGA_PATH ~/POTCAR/GGA # Path of PW91 potential. POTCAR_TYPE PBE # PBE, PW91 or LDA; Set PBE if you want to make PBE-POTCAR file GW_POTCAR .FALSE. # .TRUE. or .FALSE.; For example, H_GW, O_GW will be chose when POTCAR_GW = .TRUE. RECOMMENDED_POTCAR .TRUE. # .TRUE. or .FALSE.; The recommended PAW potential will be chose when RECOMMENDED_POTCAR = .TRUE. SET_FERMI_ENERGY_ZERO .TRUE. # .TRUE. or .FALSE.; The Fermi Energy will be set to zero eV when SET_FERMI_ENERGY_ZERO = .TRUE. MINI_INCAR .FALSE. # .TRUE. or .FALSE.; A simplified INCAR will be written when MINI_INCAR = .TRUE. USER_DEFINED_INCAR .FALSE. # .TRUE. or .FALSE.; whether to use embedded INCAR templates or user defined INCAR templates WRITE_SELECTIVE_DYNAMICS .FALSE. # .TRUE. or .FALSE.; whether the selective dymanics set will be forced to write when SET_SELECTIVE_DYNAMICS_MODE = .FALSE. PYTHON_BIN ~/anaconda3/bin/python3 # Python executable program with its installation path. I recommend you install anaconda package for Python data science PLOT_MATPLOTLIB .FALSE. # .TRUE. or .FALSE.; Set .TRUE. if you want to generate Graphs. (Matplotlib and Numpy packages MUST be embedded in Python) VASPKIT_UTILITIES_PATH ~/vaspkit/utilities # IF ADVANCED_USER is .TRUE., set VASPKIT_UTILITIES_PATH like ~/vaspkit.0.72/utilities in order to use scripts in it. ADVANCED_USER .TRUE. # .TRUE. or .FALSE.; Please fill in your settings in the block 'USER_DEFINED' if you want vaspkit to integrate your own scripts in the 'UTILITIES' file. SET_INCAR_WRITE_MODE OVERRIDE # OVERRIDE, APPEND, BACK-UP-OLD,BACK-UP-NEW; \\\"Customize INCAR File\\\" whether to override existing INCAR/appending existing INCAR/backup existing INCAR to INCAR.old && write into INCAR/write into INCAR.new PHS_CORRECTION .FALSE. # .TRUE. or .FALSE.; whether to make PHS correction during linear optical calculations. More details on this correction are given in Comput. Mater. Sci. 172 (2020) 109315. # Reset the default values of variables in here SYMPREC 1E-5 # Distance tolerance in Cartesian coordinates to find crystal symmetry (default value: 1E-5) EMIN -20.0 # Minimum energy for evaluation of DOS (default value: -20.0 eV) EMAX 20.0 # Maximum energy for evaluation of DOS (default value: 20.0 eV) NEDOS 2001 # Number of grid points in DOS (default value: 2001) GAMMA_CENTERED .TRUE. # .TRUE. or .FALSE.; (default value: .TRUE.) VACUUM_THICKNESS 15.0 # The thickness of vacuum to build slab or 2D materials (default value: 10 angstrom) CENTER_SLAB .TRUE. # Center the slab in the z direction; (default value: .TRUE.) \",\"通常需要修改的是 3、4 行,将其修改为你的赝势文件的路径,按照本文档操作下来的,应该修改为:\",\"LDA_PATH ~/app/pot_database/LDA # Path of LDA potential. PBE_PATH ~/app/pot_database/PBE # Path of PBE potential. \"]},\"227\":{\"h\":\"将 vaspkit 关键字加入系统环境变量\",\"t\":[\"接下来,要把 vaspkit 这个关键词添加到系统的环境变量里。由于新版本 (version>0.73) 给了方便的配置脚本,我们直接运行,\",\"bash setup.sh source ~/.bashrc \",\"其中第一行作用为将 export PATH=[你的 VASPKIT 目录]/bin/:$PATH 添加到了 ~/.bashrc,第二行作用为使环境变量立即生效。\",\"当然,也可以去 vi ~/.bashrc,将路径添加到 PATH。\",\"至此,环境变量配置完成,我们可以通过 vaspkit 命令来启动它。\",\"[zjb@op backup]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>> \"]},\"228\":{\"c\":[\"Install\"]},\"229\":{\"h\":\"配置 VTST 的脚本\"},\"230\":{\"h\":\"下载\",\"t\":[\"cd ~/app wget http://theory.cm.utexas.edu/code/vtstscripts.tgz \"]},\"231\":{\"h\":\"解压缩\",\"t\":[\"$ tar -xzvf vtstscripts.tgz $ rm vtstscripts.tgz $ cd vtstscripts-(按Tab) $ pwd # 将返回值复制 \"]},\"232\":{\"h\":\"加入 bashrc\",\"t\":[\"vi ~/.bashrc # 将上面pwd的返回值加入PATH \"]},\"233\":{\"c\":[\"Install\"]},\"234\":{\"h\":\"为 linux 非 ROOT 用户安装 lrzsz\",\"t\":[\"lrzsz 是一款在 linux 里可代替 FTP 上传和下载的程序。可以实现在 linux 中支持直接拖拽上传;同时也支持 rz 和 sz 命令进行上传和下载。\",\"如果拥有 ROOT 权限,可以直接执行下述代码安装:\",\"yum -y install lrzsz \",\"而如果没有 ROOT 权限,是无法写入的,就需要我们自行编译。下面是普通用户安装的办法。\"]},\"235\":{\"h\":\"下载并解压\",\"t\":[\"cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz tar -zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20 \"]},\"236\":{\"h\":\"配置安装路径\",\"t\":[\"# 在等号后写入目标安装路径 ./configure --prefix=/public/home/zjb/app/lrzsz # 路径写自己的 \"]},\"237\":{\"h\":\"编译安装\",\"t\":[\"make && make install \"]},\"238\":{\"h\":\"配置当前用户下的系统命令\",\"t\":[\"$ cd /public/home/zjb/app/lrzsz $ mkdir bash-command $ cd bash-command $ ln -s /public/home/zjb/app/lrzsz/bin/lrz rz $ ln -s /public/home/zjb/app/lrzsz/bin/lsz sz # 上面几个路径需要替换成自己的 \"]},\"239\":{\"h\":\"配置当前用户的环境变量\",\"t\":[\"$ cd ~ $ vi .bashrc # 在PATH列表中添加如下:路径自己的 export PATH=\\\"/public/home/zjb/app/lrzsz/bash-command\\\":$PATH $ source .bashrc \",\"见 linux-lrzsz-usage\"]},\"240\":{\"c\":[\"Install\"]},\"241\":{\"h\":\"linux 编译 gnuplot\",\"t\":[\"无需,学校已安装。\",\"cd /tmp wget https://jaist.dl.sourceforge.net/project/gnuplot/gnuplot/5.2.5/gnuplot-5.2.5.tar.gz tar xzvf gnuplot-5.2.5.tar.gz cd gnuplot-5.2.5/ ./configure --prefix=/public/home/zjb/app/gunplot/ make & make install \",\"第五行等号后面是你的目标安装路径\"]},\"242\":{\"c\":[\"Install\"]},\"243\":{\"h\":\"linux 编译 py3\",\"t\":[\"由于 ASE 依赖 Python3.5 或更高版本,而学习的机器上只有 python2,所以要装一下 py3。\"]},\"244\":{\"h\":\"步骤放在最前面\"},\"245\":{\"h\":\"升级 OPENSSL\",\"t\":[\"cd /tmp wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -xvf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix=/public/home/zjb/openssl-1.1.1d no-zlib #注意添加no-zlib make && make install \",\"之后添加环境变量\",\"$ vi ~/.bashrc # 加入以下内容 export PATH=\\\"/public/home/zjb/app/openssl-1.1.1d/bin\\\":${PATH} export PATH=\\\"/public/home/zjb/app/openssl-1.1.1d/lib\\\":${PATH} export LD_LIBRARY_PATH=\\\"/public/home/zjb/app/openssl-1.1.1d/lib\\\":${LD_LIBRARY_PATH} $ source ~/.bashrc \",\"此时运行 openssl--version 应当显示 1.1.1 版本,如果是,进行下一步。\",\"[zjb@op ~]$ openssl OpenSSL> version OpenSSL 1.1.1d 10 Sep 2019 OpenSSL> exit [zjb@op ~]$ \"]},\"246\":{\"h\":\"编译 Python3\",\"t\":[\"cd /tmp wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar -xvf Python-3.8.1.tgz cd Python-3.8.1 ./configure --prefix=/public/home/zjb/app/python38/ \",\"到这儿截住,去 Python-3.8.1/Moudles 下编辑 Setup 以修改 OPENSSL 的路径:\",\"vi Moudles/Setup \",\"查找 SSL,把如下几行取消注释\",\"SSL=/public/home/zjb/app/openssl-1.1.1d #改为刚安装的ssl路径 _ssl _ssl.c \\\\ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \\\\ -L$(SSL)/lib -lssl -lcrypto \",\"其中第一行替换为自己的 OPENSSL 安装路径,修改后编译:\",\"$ make && make install # 如果之前有编译过,用make clean清理已编译的文件后再编译 \",\"编译完成后,试一下\",\"[zjb@op Python-3.8.5]$ python3 Python 3.8.5 (default, Nov 20 2020, 23:23:42) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux Type \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information. >>> import ssl >>> \",\"OK,完成!\",\"此时 SSL 模块应当是可用的,尝试安装一个\",\"pip3 install ase \",\"[zjb@op Python-3.8.5]$ pip3 install ase Collecting ase Downloading ase-3.20.1-py3-none-any.whl (2.2 MB) |████████████████████████████████| 2.2 MB 1.4 MB/s Collecting matplotlib>=2.0.0 Downloading matplotlib-3.3.3-cp38-cp38-manylinux1_x86_64.whl (11.6 MB) |████████████████████████████████| 11.6 MB 2.3 MB/s Collecting numpy>=1.11.3 Downloading numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB) |████████████████████████████████| 14.5 MB 153 kB/s Collecting scipy>=0.18.1 Downloading scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl (25.8 MB) |████████████████████████████████| 25.8 MB 1.5 MB/s Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) |████████████████████████████████| 67 kB 1.3 MB/s Collecting pillow>=6.2.0 Downloading Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl (2.2 MB) |████████████████████████████████| 2.2 MB 1.9 MB/s Collecting cycler>=0.10 Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB) Collecting kiwisolver>=1.0.1 Downloading kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl (1.2 MB) |████████████████████████████████| 1.2 MB 1.9 MB/s Collecting python-dateutil>=2.1 Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB) |████████████████████████████████| 227 kB 2.0 MB/s Collecting six Downloading six-1.15.0-py2.py3-none-any.whl (10 kB) Installing collected packages: pyparsing, pillow, six, cycler, numpy, kiwisolver, python-dateutil, matplotlib, scipy, ase Successfully installed ase-3.20.1 cycler-0.10.0 kiwisolver-1.3.1 matplotlib-3.3.3 numpy-1.19.4 pillow-8.0.1 pyparsing-2.4.7 python-dateutil-2.8.1 scipy-1.5.4 six-1.15.0 \",\"正常!\"]},\"247\":{\"h\":\"经历\",\"t\":[\"最开始按照正常的编译过程去编译安装 Python3,但是过程中发现 SSL 模块无法被编译,刚开始没当回事,结果都好了发现 pip3 没法使用:\",\"pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. \",\"因为 ssl 模块不可用,又折回去折腾,发现提示中,是因为机器本身安装的 openssl 版本过低(1.0.1)导致的,\",\"Python build finished successfully! The necessary bits to build these optional modules were not found: _sqlite3 _ssl To find the necessary bits, look in setup.py in detect_modules() for the module's name. Could not build the ssl module! Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host(). LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381 \",\"考虑升级 openssl 解决一下:\",\"$ wget -c https://www.openssl.org/source/openssl-1.1.1d.tar.gz $ tar -xvf openssl-1.1.1d.tar.gz $ cd openssl-1.1.1d $ ./config --prefix=/public/home/zjb/app/penssl-1.1.1d no-zlib #注意添加no-zlib $ make && make install $ vi ~/.bashrc export PATH=\\\"/public/home/zjb/app/openssl-1.1.1d/bin\\\":${PATH} \",\"运行 openssl 发现报错\",\"error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory \",\"搜了一些资料,发现解决方法多是 sudo 的,mmp 我要是有 root 还费这劲去编译呢???还好在一篇资料里看到一个方案:发现 libssl.so.1.1 存在于 openssl.1.1.d/lib 目录下,于是考虑把这个目录加入环境变量:\",\"export LD_LIBRARY_PATH=/public/home/zjb/app/openssl-1.1/lib:$LD_LIBRARY_PATH \",\"这下正常了:\",\"[zjb@op ~]$ openssl OpenSSL> version OpenSSL 1.1.1d 10 Sep 2019 OpenSSL> exit [zjb@op ~]$ \",\"接下来就继续编译 Python3:\",\"cd /tmp wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar -xvf Python-3.8.1.tgz cd Python-3.8.1 ./configure --prefix=/public/home/zjb/app/python38/ make \",\"此时编译的仍然提示 Could not build the ssl module! Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().,但是 make install 后是可以用的,也不知道为什么。\",\"接下来添加环境变量,\",\"export PATH=/public/home/zjb/app/python38/bin:${PATH} \",\"然后...正常了\",\"[zjb@op Python-3.8.5]$ python3 Python 3.8.5 (default, Nov 20 2020, 23:23:42) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux Type \\\"help\\\", \\\"copyright\\\", \\\"credits\\\" or \\\"license\\\" for more information. >>> import ssl >>> \",\"几分钟后发现 ase 虽然安装了,但是不能运行,\",\"[zjb@op python38]$ ase Traceback (most recent call last): File \\\"/public/home/zjb/app/ase/bin/ase\\\", line 2, in from ase.cli.main import main File \\\"/public/home/zjb/app/ase/ase/__init__.py\\\", line 25, in from ase.atoms import Atoms File \\\"/public/home/zjb/app/ase/ase/atoms.py\\\", line 19, in from ase.constraints import (FixConstraint, FixBondLengths, FixLinearTriatomic, File \\\"/public/home/zjb/app/ase/ase/constraints.py\\\", line 10, in from scipy.linalg import expm, logm File \\\"/public/home/zjb/app/python38/lib/python3.8/site-packages/scipy/__init__.py\\\", line 151, in from scipy._lib._ccallback import LowLevelCallable File \\\"/public/home/zjb/app/python38/lib/python3.8/site-packages/scipy/_lib/_ccallback.py\\\", line 1, in from . import _ccallback_c File \\\"_ccallback_c.pyx\\\", line 210, in init scipy._lib._ccallback_c File \\\"/public/home/zjb/app/python38/lib/python3.8/ctypes/__init__.py\\\", line 7, in from _ctypes import Union, Structure, Array ModuleNotFoundError: No module named '_ctypes' \",\"因为 python 缺少依赖库 libffi-devel,查资料没发现这玩意怎么自己搞,似乎只能管理员去装,反正网上给出的方法都不行...\",\"[zjb@op python38]$ yum install -y libffi-devel Loaded plugins: aliases, changelog, kabi, ovl, presto, refresh-packagekit, security, tmprepo, verify, versionlock Loading support for Red Hat kernel ABI ovl: Error while doing RPMdb copy-up: [Errno 13] Permission denied: '/var/lib/rpm/Sigmd5' You need to be root to perform this command. [zjb@op python38]$ \",\"此贴终结,失败告终,over!\"]},\"248\":{\"c\":[\"Install\"]},\"249\":{\"h\":\"编译 VASP with VTST\"},\"250\":{\"h\":\"准备源码\"},\"251\":{\"h\":\"VASP 源码目录结构\",\"t\":[\"$ more README vasp.X.X.X (root directory) | --------------------------------------- | | | | arch bin build src | ---------- | | lib CUDA \",\"说明:\",\"vasp.X.X.X:解压缩后的根目录\",\"arch:针对不同架构的 Makefile 模板,如里面含有 makefile.include.linux_intel\",\"bin:编译后的可执行程序文件\",\"build:编译时自动复制 src 目录内源码后执行编译的目录\",\"src:源码目录\",\"lib:库目录,对应以前的 vasp.lib 目录\",\"CUDA:GPU CUDA 代码目录\"]},\"252\":{\"h\":\"VTSTCode\"},\"253\":{\"h\":\"下载并解压缩 VTSTCode\",\"t\":[\"VTSTCode 下载: Download — Transition State Tools for VASP (utexas.edu)\",\"目录结构:\",\"[scujh_zjb@scu vtstcode-184]$ tree . ├── bbm.F ├── bfgs.F ├── cg.F ├── chain.F ├── dimer.F ├── dynamic.F ├── dynmat.F ├── fire.F ├── instanton.F ├── lanczos.F ├── lbfgs.F ├── neb.F ├── opt.F ├── qm.F ├── sd.F ├── vtstcode5 │ ├── bbm.F │ ├── bdr_changes │ ├── bfgs.F │ ├── cg.F │ ├── chain.F │ ├── dimer.F │ ├── dynamic.F │ ├── dynmat.F │ ├── fire.F │ ├── instanton.F │ ├── lanczos.F │ ├── lbfgs.F │ ├── neb.F │ ├── opt.F │ ├── qm.F │ ├── sd.F │ ├── vasp-5.3.2-main.patch │ ├── vasp-5.3.2-mpmd.patch │ ├── vasp-5.4.1-mpmd.patch │ └── vasp-5.4.4-mpmd.patch └── vtstcode6.1 ├── bbm.F ├── bfgs.F ├── cg.F ├── chain.F ├── dimer.F ├── dynamic.F ├── dynmat.F ├── fire.F ├── instanton.F ├── lanczos.F ├── lbfgs.F ├── neb.F ├── opt.F ├── qm.F └── sd.F 2 directories, 50 files \"]},\"254\":{\"h\":\"复制 VTSTCode 到 VASP/src\",\"t\":[\"需要注意的是,应把对应于 VASP 版本的 VTSTCode 复制到 scr 目录,例如 vasp 5.4.4,则应复制 vtstcode5 子文件夹中的内容。\",\"For vasp.6.2.1 you will need vtstcode 4.1 (revision 182). A version of the vtstcode that will work with vasp.6.1.x - vasp.6.2.0 has been saved in the vtstcode6.1 directory.\"]},\"255\":{\"h\":\"修改 src/main.F\",\"t\":[\"将(第 3233 行)\",\"CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, & LATT_CUR%A,LATT_CUR%B,IO%IU6) \",\"修改为\",\"CALL CHAIN_FORCE(T_INFO%NIONS,DYN%POSION,TOTEN,TIFOR, & TSIF,LATT_CUR%A,LATT_CUR%B,IO%IU6) ! LATT_CUR%A,LATT_CUR%B,IO%IU6) \",\"如果是 vasp 6.2 及以上,额外修改\",\"IF (LCHAIN) CALL chain_init( T_INFO, IO) \",\"为\",\"CALL chain_init( T_INFO, IO) \",\"参考: Installation — Transition State Tools for VASP (utexas.edu)\"]},\"256\":{\"h\":\"修改编译配置\",\"t\":[\"修改 src/.objects,在 chain.o 前(第 67 行)添加如下内容:\",\" bfgs.o dynmat.o instanton.o lbfgs.o sd.o cg.o dimer.o bbm.o \\\\ fire.o lanczos.o neb.o qm.o opt.o \\\\ \",\"注意:\\\\ 后不得有空格\"]},\"257\":{\"h\":\"准备编译环境\"},\"258\":{\"h\":\"检查编译环境\",\"t\":[\"which icc ifort icpc mpiifort mpirun \",\"如果正常输出 5 个路径,则编译环境已配置好,可以跳过下一步。如果没有,进入下一步。\"]},\"259\":{\"h\":\"配置编译环境\",\"t\":[\"一般的,编译 vasp+vtst 的,通常都已经编译了 vasp,那意味着编译环境本身是已经安装好的,可以通过如下重新应用编译环境的变量,具体的路径可以自行在机器上查找,或参考 vasp 的 pbs 文件中提供的路径。\",\"# source /bin/compilervars.sh intel64 # source /bin/mklvars.sh intel64 # source /intel64/bin/mpivars.sh intel64 \",\"部分机器使用 module 管理环境变量的,可以通过 module avail 查看所有可用包,找到 intel/xxx 相关的并 module load 。 配置完成后,返回上一步检查是否成功。 这里顺便检查一下有无已编译的 fftw 文件:libfftw3_mpi.a\"]},\"260\":{\"h\":\"修改 makefile.include 文件\",\"t\":[\"用 arch/makefile.include.linux_intel 做模板进行修改\",\"cp arch/makefile.include.linux_intel makefile.include \",\"对 makefile.include 文件进行如下修改,14 行开始编译器配置改为\",\"# line 14 编译器配置 FC = mpiifort FCL = mpiifort -mkl # line 23 数学库配置 MKLROOT=/opt/intel/compilers_and_libraries_2018.3.222/linux/mkl MKL_PATH = $(MKLROOT)/lib/intel64 BLAS = LAPACK = BLACS =-L$(MKL_PATH) -lmkl_blacs_intelmpi_lp64 SCALAPACK = $(MKL_PATH)/libmkl_scalapack_lp64.a $(BLACS) # line 30 fftw 配置 (其中/opt/fftw 是我编译后安装的目录) OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o \\\\ /opt/fftw/lib/libfftw3_mpi.a INCS =-I/opt/fftw/include \"]},\"261\":{\"h\":\"安装\"},\"262\":{\"h\":\"编译\",\"t\":[\"make \"]},\"263\":{\"h\":\"添加环境变量\",\"t\":[\"略。\"]},\"264\":{\"h\":\"错误解决\",\"t\":[\"如下报错系 vtstcode 版本与 vasp 不一致导致:\",\"mpiifort -free -names lowercase -assume byterecl -w -O2 -xHOST -I/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include/fftw -c instanton.f90 instanton.F(57): error #6580: Name in only-list does not exist or is not accessible. [RANE] USE random_seeded, ONLY: RANE -------------------------------^ instanton.F(208): error #6580: Name in only-list does not exist or is not accessible. [RANE] USE random_seeded, ONLY: RANE -------------------------------^ instanton.F(433): error #6404: This name does not have a type, and must have an explicit type. [RANE] w(i,j,im)=rane()-0.5_q ----------------------------^ compilation aborted for instanton.f90 (code 1) make[2]: *** [instanton.o] Error 1 make[2]: Leaving directory `/root/chem/vasp.5.4.4/build/std' cp: cannot stat ‘vasp’: No such file or directory make[1]: *** [all] Error 1 make[1]: Leaving directory `/root/chem/vasp.5.4.4/build/std' make: *** [std] Error 2 \",\"解决方案:假设使用的 vasp 5.4.4,则复制 vtstcode 时,应使用 vtst-xxx/vtstcode5 下的。参见: Problem compiling instanton.F - UT theoretical chemistry code forum (utexas.edu)\"]},\"265\":{\"h\":\"参考文献\",\"t\":[\"安装过程: VASP 5.4.1+VTST 编译安装 (ustc.edu.cn)\"]},\"266\":{\"c\":[\"Install\",\"安装\"]},\"267\":{\"h\":\"软件安装\"},\"268\":{\"h\":\"PBS\",\"t\":[\"作业一般会提交到超算集群上进行计算。在集群上,一般不能随意地直接以 mpirun 运行我们的并行计算程序,而必须通过其上提供的作业管理系统来提交计算任务。集群作业管理系统可以根据用户的需求,统一管理和调度集群的软硬件资源,保证用户作业公平合理地共享集群资源,提高系统利用率和吞吐率。\",\"PBS 就是其中一种解决方案,作业通过 PBS 命令提交到 PBS 队列中,然后经由 PBS 分配资源运行。\"]},\"269\":{\"h\":\"PBS 命令\"},\"270\":{\"h\":\"提交作业\",\"t\":[\"用以下命令提交作业:\",\"qsub [options] \",\"命令执行后会返回一个作业 ID。如:\",\"[zjb@op back]$ qsub -N thisIsName vasp.pbs 201848.inode202 \",\"作业提交后一般会先排队等待,PBS 系统会根据作业的优先级和可用的计算资源来调度和执行作业。\",\"其中 -N thisIsName 为选项,它指定了作业的名称。vasp.pbs 为 PBS 脚本,它设定了作业的属性和作业的内容。options 与 control script 详见 PBS 脚本。\",\"文档中,命令带有 `` 符号的,表示是在 shell 终端输入的命令,实际输入的时候不需要带有这个符号。\"]},\"271\":{\"h\":\"查看任务\",\"t\":[\"qstat [option] \",\"如:\",\"[zjb@op back]$ qstat Job ID Name User Time Use S Queue ------------------------- ---------------- --------------- -------- - ----- 201848.inode202 thisIsName zjb 00:00:00 C energy \",\"其中,S 表示任务的状态,有如下几种状态:\",\"状态 (S)\",\"描述\",\"B\",\"只用于任务向量,表示任务向量已经开始执行\",\"E\",\"任务在运行后退出\",\"H\",\"任务被服务器或用户或者管理员阻塞\",\"Q\",\"任务正在排队中,等待被调度运行\",\"R\",\"任务正在运行\",\"C\",\"任务完成\",\"S\",\"任务被服务器挂起,由于一个更高优先级的任务需要当前任务的资源\",\"T\",\"任务被转移到其它执行节点了\",\"U\",\"由于服务器繁忙,任务被挂起\",\"W\",\"任务在等待它所请求的执行时间的到来 (qsub -a)\",\"X\",\"只用于子任务,表示子任务完成\"]},\"272\":{\"h\":\"qstat 的选项\",\"t\":[\"命令\",\"说明\",\"qstat -q\",\"列出所有队列\",\"qstat -a\",\"列出所有作业\",\"qstat -u user_id\",\"列出 user_id 的所有作业\",\"qstat -r\",\"列出所有正在运行的作业\",\"qstat -f job_id\",\"列出作业 job_id 的信息\",\"qstat -fQ queue\",\"列出队列 queue 的信息\",\"qstat -B\",\"列出所有作业状态的汇总\",\"pbsnodes\",\"列出所有节点的详细信息\",\"pestat\",\"列出所有节点的状态\"]},\"273\":{\"h\":\"取消任务\",\"t\":[\"qdel \"]},\"274\":{\"h\":\"停止正在运行的任务\",\"t\":[\"qsig -s KILL \"]},\"275\":{\"h\":\"checkjob\",\"t\":[\"checkjob \",\"注意这儿的 job id 不包括 .inodexxx,比如上述的 201848.inode202 作业,如果使用 checkjob 查询,命令应为 checkjob 201848。\",\"[zjb@op testEnergy]$ checkjob 201848 checking job 201848 State: Running Creds: user:zjb group:energy account:SugonClus class:energy qos:preemptee WallTime: 00:02:03 of 00:30:00 SubmitTime: Sat Oct 31 19:45:48 (Time Queued Total: 00:00:01 Eligible: 00:00:01) StartTime: Sat Oct 31 19:45:49 Total Tasks: 4 Req[0] TaskCount: 4 Partition: DEFAULT Network: [NONE] Memory >= 0 Disk >= 0 Swap >= 0 Opsys: [NONE] Arch: [NONE] Features: [NONE] Allocated Nodes: [inode53:4] IWD: [NONE] Executable: [NONE] Bypass: 0 StartCount: 1 PartitionMask: [ALL] Flags: BACKFILL RESTARTABLE PREEMPTEE Attr: PREEMPTEE Reservation '201868' (-00:02:04 -> 00:27:56 Duration: 00:30:00) PE: 4.00 StartPriority: 6000 \",\"如果任务无法运行,可以这样查询原因。\"]},\"276\":{\"h\":\"pbsnodes\",\"t\":[\"查看节点的空闲情况。有 free、busy、down 等状态。\"]},\"277\":{\"h\":\"PBS 脚本\",\"t\":[\"PBS 脚本实际上是一个 linux shell 脚本,在 PBS 脚本中可以用一种特殊形式的注释(#PBS)作为 PBS 指令以设定作业属性。下面是一个 PBS 脚本示例:\",\"#!/bin/sh #PBS -N Untitled #PBS -l nodes=1:ppn=4 #PBS -l walltime=00:10:00 #PBS -j oe #PBS -o ./out.log cd ${PBS_O_WORKDIR} source /public/software/profile.d/compiler_intel-composer_xe_2015.2.164.sh source /public/software/profile.d/mpi_intelmpi-5.0.2.044.sh echo \\\"=============================================\\\" echo \\\"Starting VASP run at\\\" `date` echo \\\"=============================================\\\" echo \\\"# SYSTEM INFO\\\" echo 'The hostname is ' `hostname` grep 'Linux' /etc/issue grep 'model name' /proc/cpuinfo |cut -d: -f2 |uniq -c grep 'cpu M' /proc/cpuinfo grep 'MemTotal' /proc/meminfo echo \\\"=============================================\\\" echo \\\"# PBS INFO\\\" echo \\\"The PBS_O_WORKDIR is\\\" $PBS_O_WORKDIR echo \\\"The PBS_JOBID is\\\" $PBS_JOBID echo \\\"The PBS_O_QUEUE is\\\" $PBS_O_QUEUE echo \\\"The PBS_O_HOST is\\\" $PBS_O_HOST NP=`cat $PBS_NODEFILE | wc -l` echo \\\"The num of PBS_NODEFILE is\\\" $NP echo \\\"The PBS_NODEFILE IS:\\\" cat $PBS_NODEFILE mpirun -np $NP -machinefile $PBS_NODEFILE /public/software//apps/vasp/5.4.1/intelmpi/vasp_std >& stdout echo \\\"=============================================\\\" echo \\\"End task at \\\" `date` echo \\\"=============================================\\\" \"]},\"278\":{\"h\":\"PBS 作业属性\",\"t\":[\"属性\",\"取值\",\"说明\",\"-l\",\"资源列表\",\"设定作业所需资源,以逗号分隔\",\"-N\",\"作业名称\",\"设定作业的默认名称\",\"-o\",\"文件路径\",\"设定作业的标准输出文件路径\",\"-e\",\"文件路径\",\"设定作业的标准错误文件路径\",\"-j\",\"oe 或 eo\",\"oe: 将标准错误文件与标准输出文件合并成标准输出文件。eo: 将标准错误文件和标准输出文件合并成标准错误文件\",\"-p\",\"-1024 到 +1023 之间的整数\",\"设定作业优先级,越大优先级越高\",\"-q\",\"队列名称\",\"设定作业队列名称\"]},\"279\":{\"h\":\"资源列表\",\"t\":[\"资源\",\"取值\",\"说明\",\"nodes\",\"节点资源构型\",\"设定作业所需计算节点资源\",\"walltime\",\"hh: mm: ss\",\"设定作业所需的最大 wallclock 时间\",\"cput\",\"hh: mm: ss\",\"设定作业所需的最大 CPU 时间\",\"mem\",\"正整数,后面可跟 b,kb,mb,gb\",\"设定作业所需的最大内存 ncpus 正整数 设定作业所需的 CPU 数目\",\"指定节点运行:\",\"有时候某个节点出了问题,但是直接提交仍会被分配到这个节点计算,这时候可以指定一个其他的节点进行提交。\",\"#PBS -l nodes=c72:ppn=16+c73:ppn=16 \",\"其中,c72 和 c73 是节点名,可以通过 pbsnodes 获取到。\",\"参考:\",\"【已解决】pbs指定作业节点 (novarizark.github.io)\"]},\"280\":{\"h\":\"PBS 常用环境变量\",\"t\":[\"环境变量\",\"说明\",\"PBS_ENVIRONMENT\",\"批处理作业为 PBS_BATCH,交互式作业为 PBS_INTERACTIVE\",\"PBS_JOBID PBS\",\"系统给作业分配的标识号\",\"PBS_JOBNAME\",\"用户指定的作业名称\",\"PBS_NODEFILE\",\"包含作业所用计算节点的文件名\",\"PBS_QUEUE\",\"作业所执行的队列名称\",\"PBS_O_HOME\",\"执行 qsub 命令的 HOME 环境变量值\",\"PBS_O_PATH\",\"执行 qsub 命令的 PATH 环境变量值\",\"PBS_O_SHELL\",\"执行 qsub 命令的 SHELL 环境变量值\",\"PBS_O_HOST\",\"执行 qsub 命令节点名称\",\"PBS_O_QUEUE\",\"提交的作业的最初队列名称\",\"PBS_O_WORKDIR\",\"执行 qsub 命令所在的绝对路径\"]},\"281\":{\"h\":\"高级配置\"},\"282\":{\"h\":\"Qmgr 查看所有配置\",\"t\":[\" qmgr -c \\\"p s\\\" \",\"example:\",\"[root@compute-0-11 init.d]# qmgr Max open servers: 49 Qmgr: p s # # Create queues and set their attributes. # # # Create and define queue batch # create queue batch set queue batch queue_type = Execution set queue batch acl_host_enable = False set queue batch acl_hosts = compute-0-3.local+compute-0-4.local+compute-0-5.local+compute-0-6.local+compute-0-7.local+compute-0-8.local+compute-0-9.local+compute-0-10.local+compute-0-11.local set queue batch resources_default.walltime = 7200:00:00 set queue batch enabled = True set queue batch started = True # # Create and define queue gpu # create queue gpu set queue gpu queue_type = Execution set queue gpu acl_host_enable = False set queue gpu acl_hosts = compute-0-2.local set queue gpu resources_default.walltime = 720:00:00 set queue gpu enabled = True set queue gpu started = True # # Set server attributes. # set server scheduling = True set server default_queue = batch set server query_other_jobs = True set server default_chunk.ncpus = 1 set server scheduler_iteration = 600 set server resv_enable = True set server node_fail_requeue = 310 set server max_array_size = 10000 set server pbs_license_min = 0 set server pbs_license_max = 2147483647 set server pbs_license_linger_time = 31536000 set server eligible_time_enable = False set server max_concurrent_provision = 5 set server max_job_sequence_id = 9999999 Qmgr: \"]},\"283\":{\"h\":\"普通用户查询他人作业\",\"t\":[\"配置使普通用户可以查看其他用户提交的作业(但不能操作):\",\"qmgr: set server query_other_jobs = True \",\"示例:\",\"[scujh_zjb@scu ~]$ qstat # 仅能查看自己的任务,查看不到别人的任务 [scujh_zjb@scu ~]$ su Password: [root@scu /home/scujh_zjb]# qmgr Max open servers: 49 Qmgr: set server query_other_jobs = True Qmgr: exit [root@scu /home/scujh_zjb]# exit exit [scujh_zjb@scu ~]$ qstat scu: Req'd Req'd Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- 19.scu scudt_du gpu vasp-test- 1753 1 12 -- 720:0 R 69:24 190.scu cdu_lsh batch 4-CeO2 10325 1 24 -- 72:00 R 18:13 203.scu cdu_hg gpu 8-OHqy 8101 1 8 -- 24:00 R 00:40 214.scu cdu_lsh batch 2CeO2Ni -- 1 24 -- 72:00 Q -- [scujh_zjb@scu ~]$ \",\"参考:\",\"PBS command to see other users job from user environment - Users/Site Administrators - OpenPBS\"]},\"284\":{\"h\":\"解除堆栈大小限制\",\"t\":[\"UPDATE in 2022.11.14:该方法未解决该问题。\",\"用于解决 [分段错误:forrtl: severe (174): SIGSEGV, segmentation fault occurred](../05. VASP/08.%E5%85%B6%E4%BB%96/error. md #forrtl :%20severe%20 (174):%20SIGSEGV,%20segmentation%20fault%20occurred),为每一个计算节点解除堆栈大小限制。\",\"在每一个计算节点上,修改 $PBS_EXEC/lib/init.d/limits.pbs_mom(该文件会在运行前被 source)在里面添加 ulimit -s unlimited,然后重启 PBS 服务。\",\"具体步骤如下:\",\"## 依次登录每一个计算节点 ssh compute-0-11 ## 编辑 limits.pbs_mom 文件 cd /opt/pbs/lib/init.d/ && cp limits.pbs_mom limits.pbs_mom.bak && vi limits.pbs_mom ## 原文件内容: if [ -f /etc/sgi-release -o -f /etc/sgi-compute-node-release ] ; then MEMLOCKLIM=`ulimit -l` NOFILESLIM=`ulimit -n` STACKLIM=`ulimit -s` ulimit -l unlimited ulimit -n 16384 ulimit -s unlimited fi ## 修改后内容 MEMLOCKLIM=`ulimit -l` NOFILESLIM=`ulimit -n` STACKLIM=`ulimit -s` ulimit -l unlimited ulimit -n 16384 ulimit -s unlimited ## 重启 pbs systemctl restart pbs && systemctl status pbs # 或执行 /etc/init.d/pbs restart \",\"日志备份以便理解:\",\"[root@scu /home/scujh_zjb/test]# ssh compute-0-11 Warning: untrusted X11 forwarding setup failed: xauth key data not generated Last login: Thu Nov 10 03:11:13 2022 from scu Rocks Compute Node Rocks 7.0 (Manzanita) Profile built 21:21 20-Oct-2022 Kickstarted 21:27 20-Oct-2022 [root@compute-0-11 ~]# cd /opt/pbs/lib/init.d/ [root@compute-0-11 init.d]# ls limits.pbs_mom limits.post_services sgigenvnodelist.awk limits.pbs_mom.compat limits.post_services.compat sgiICEvnode.sh [root@compute-0-11 init.d]# cd /opt/pbs/lib/init.d/ && cp limits.pbs_mom limits.pbs_mom.bak && ls limits.pbs_mom limits.pbs_mom.compat limits.post_services.compat sgiICEvnode.sh limits.pbs_mom.bak limits.post_services sgigenvnodelist.awk [root@compute-0-11 init.d]# vi limits.pbs_mom [root@compute-0-11 init.d]# systemctl restart pbs && systemctl status pbs ● pbs.service - Portable Batch System Loaded: loaded (/opt/pbs/libexec/pbs_init.d; enabled; vendor preset: disabled) Active: active (running) since Fri 2022-11-11 02:50:13 EST; 10ms ago Docs: man:pbs(8) Process: 39964 ExecStop=/opt/pbs/libexec/pbs_init.d stop (code=exited, status=0/SUCCESS) Process: 40010 ExecStart=/opt/pbs/libexec/pbs_init.d start (code=exited, status=0/SUCCESS) Memory: 2.6M CGroup: /system.slice/pbs.service └─40074 /opt/pbs/sbin/pbs_mom Nov 11 02:50:12 compute-0-11.local systemd[1]: Starting Portable Batch System... Nov 11 02:50:12 compute-0-11.local pbs_init.d[40010]: Starting PBS Nov 11 02:50:13 compute-0-11.local pbs_init.d[40010]: PBS mom Nov 11 02:50:13 compute-0-11.local systemd[1]: Started Portable Batch System. [root@compute-0-11 init.d]# \",\"参考:\",\"How to set up stack-size to unlimited in PBS pro - Users/Site Administrators - OpenPBS\",\"Increasing the open files limit across all nodes - Users/Site Administrators - OpenPBS\",\"How to Use the ulimit Linux Command {With Examples} (phoenixnap.com)\"]},\"285\":{\"c\":[\"Linux\"]},\"286\":{\"h\":\"Linux 基础\",\"t\":[\"Linux 基础应参考 Linux 笔记。\",\"完成计算至少应了解的内容有以下:\",\"通过 SSH 客户端登录集群\",\"Linux 常用的命令,上笔记命令页最上表格。\",\"vim 编辑器使用\",\"PBS 作业管理系统的使用\"]},\"287\":{\"h\":\"建模中的一些小疑惑\"},\"288\":{\"h\":\"为什么要建立超胞?\",\"t\":[\"避免周期性镜像间的互相影响\",\"考虑多分⼦吸附时的多种构象\",\"如果只计算体性质,用原胞(primitivecell)就可以,建立超胞(supercell)的目的是什么?\",\"我们一般建立晶胞,设置 k 点进行计算,那么建立超晶胞的目的何在呢?\",\"(1)掺杂问题\",\"1)建立超胞是为了获得合适的掺杂浓度;\",\"2)清晰地分成置换固溶体或间隙固溶体\",\"(2)表面吸附问题\",\"1)可以模拟不同晶向的吸附密度;\",\"2)要避免吸附的气体分子和镜像分子间有作用;\",\"https://www.zhihu.com/question/282248524\"]},\"289\":{\"h\":\"如何选择真空层厚度?\",\"t\":[\"todo\"]},\"290\":{\"h\":\"如何确定底部保留几层?\",\"t\":[\"todo\"]},\"291\":{\"h\":\"埃 Angstrom\",\"t\":[\"埃格斯特朗。长度单位。 1A˚=10−10m=0.1nm=10−2pm 。\",\"WiKiPedia: https://zh.wikipedia.org/wiki/埃格斯特朗\",\"In LaTeX, the command for angstrom is {\\\\AA}.\",\"https://www.aps.org/meetings/abstract/latex.cfm\",\"由于 KaTex 尚不支持 \\\\AA ,可用 \\\\text{\\\\AA} 进行渲染。\"]},\"292\":{\"h\":\"CIF 文件的区别\",\"t\":[\"Materials Project 上提供四种 CIF 文件,他们本质无区别,所有 CIF 都完全相同或有效等效,它们只是同一晶体结构的不同“设置”。因此,使用哪个都不要紧。\",\"CIF file types - differences? - Materials Project - Materials Science Community Discourse (matsci.org)\",\"The most important thing is that all the CIFs are either exactly or effectively equivalent, they are just different “settings” of the same crystal structure. So shouldn’t matter too much which you use.\",\"These are:\",\"Computed, the structure direct from our calculations, always in the “P1” setting (i.e. no symmetry is detected)\",\"Conventional standard, this is the same as “computed” except now the symmetry is detected and it’s put into a conventional setting – this will be more familiar to most scientists, since textbooks and papers etc. will usually report a crystal in its conventional setting\",\"Primitive cell, this is the same as “computed” except now it’s reported in its primitive setting (i.e. with the minimum number of atoms required to define the periodic crystal). It’s often useful to use these primitive cells for further calculations, since they contain fewer atoms, but they can be more difficult to visualize – for example, a crystal with cubic symmetry might not have a primitive cell whose angles are 90º. Introductions to crystallography can go into more detail on this.\",\"Symmetrized is the almost the same as “computed”, except atomic positions have been moved to their symmetrically equivalent positions if they’re almost but not quite there – this is important e.g. if due to numerical noise an atom may be close to but not exactly at (0,0, 0) even if we know in reality it’s likely to be exactly at (0,0, 0) in that particular setting.\"]},\"293\":{\"h\":\"切面用 conventional 还是 primitive ?\",\"t\":[\"Ex42 slab 模型 | Learn VASP The Hard Way (bigbrosci.com) 评论区:\",\"切 slab 模型不能用 primitive cell 切,而要用 conventional cell 切。有時候兩種切出來會不一樣\",\"將 primitive cell 轉換成 conventional cell:利用 Material Studio 的 Build- Symmetry-Find Symmetry 功能,對 primitive cell 的模型“Find Symmetry”,然後“Impose Symmetry”,即可。\",\"刘锦程 MS 建模视频:\",\"切面必须用 conventional cell ,\",\"能带计算必须用 primitive cell ,因为其布里渊区定义正确\"]},\"294\":{\"c\":[\"Materials-Studio\"]},\"295\":{\"h\":\"作业:CO吸附在Au上建模\",\"t\":[\"任务:建立CO在Au 111 晶面的吸附模型\",\"步骤:导入Au模型,切111面,建立超胞,加真空,加CO分子。\",\"结果:\",\"Model of CO adsorption on Au\"]},\"296\":{\"c\":[\"Materials-Studio\"]},\"297\":{\"h\":\"作业:矩形石墨烯建模\"},\"298\":{\"h\":\"任务\",\"t\":[\"建立矩形的石墨烯模型\"]},\"299\":{\"h\":\"步骤\",\"t\":[\"导入石墨烯结构\",\"import - Structures\\\\ceramics\\\\graphite.msi\",\"Make P1 降低对成性\",\"Build -> Symmetry -> Make P1,\",\"删掉一层C原子层\",\"切面\",\"Build -> Surfaces -> Cleave Surface\",\"Surface Box - Cleave plane: 001\",\"Surface Mesh - Surface vectors - U: 210\",\"超胞\",\"Build -> Symmetry -> Supercell\",\"Supercell range A=3, B=5 (60 C atoms)\",\"真空层\",\"Build -> Crystals -> Build Vacuum Slab\",\"Vacuum orientation: C\",\"Vacuum thickness: 20 Å\",\"将原子层移动到Z方向中部(只是看起来方便)\",\"Display style -> Lattice -> display style -> style -> In cell\",\"修改背景、标尺、晶格的颜色等\",\"Save and Print to PDF\"]},\"300\":{\"h\":\"结果\",\"t\":[\"Rectangular graphene\",\"Rectangular graphene 2\"]},\"301\":{\"c\":[\"Materials-Studio\"]},\"302\":{\"h\":\"Materials Studio\",\"t\":[\"懒得写了的\"]},\"303\":{\"h\":\"建模\",\"t\":[\"问题 17: 如何快速、准确地选取某一类原子或者原子团,以及它们的组合体?\",\"答: MS 的计算结束后,下一步是进行结果分析,常见如:结合(作用)能量计算、浓度(浓度)分布(Concentration Profile)、均方位移(Mean Square Displacement,MSD)、径向分布函数(Radial Distribution Function,RDF)、回转半径(Radius of Gyration)等等。即便是常见的结合能计算:E_interaction = E_total - (E_surface + E_adsorbate)也是需要分别选取不同原子(团)作为分析目标。所以,结果分析的第一步,是要准确无误地选取分析目标。\",\"当所建模型包含的原子数目较少时,通过肉眼观察、鼠标点击或框选的方式,就能完成分析目标的选取。\",\"但是,当所建模型原子数达几千几万时(对于 MD 计算而言,这样的原子数目是很常见的),再采用肉眼观察来选取的方式,不仅低效,而且很容易多选、错选、漏选,最终导致分析结果错误。\",\"在 MS 中,有以下更快速的原子(团)选取方法:\",\"鼠标左键单击选中某个 A 原子后,按住 Ctrl 键不放,再左键单击某个 B 原子,此时会同时选中上述两个原子;\",\"按住 Alt 键不放,鼠标左键双击(注意是双击)某个 A 原子,此时会选中模型中全部的 A 原子;\",\"MS 界面顶部 Edit→Atom Selection 中,可通过以元素种类、化学键数目、电荷数目、力场类型等等,选取模型中全部满足要求的原子,此时结合“Selection mode”中的选项,可进一步添加需要的或筛除不需要的原子;\",\"以某个原子团为 pattern,通过“Find Patterns”可选择模型中全部的该原子团。举个例子:要选取模型中全部的水分子,首先新建一个 xsd 文档,绘制出一个水分子,命名为 water.xsd,并将此文件保持打开状态,然后将模型置于当前,在 MS 界面顶部 Edit→Find Patterns,将其中的 Pattern document 下拉选择为 water.xsd(如果找不到 water.xsd,是因为 water.xsd 被关闭了,重新打开即可找到),点“Find”即可找到模型中全部的水分子;\",\"对于用 Layer 命令堆叠得到模型,在 MS 界面顶部 Edit→Edit Sets,可选取任一原始的 layer,这对于用 Layer 命令堆叠得到模型的结合能计算非常有用;\",\"将上述(1)~(5)进行组合,可实现绝大多数情况的分析目标的选取。\",\"写给 MS 新手:Materials Studio 软件常见问题与解决方案(2018 年 06 月 10 日更新) - 分子模拟 - 小木虫 - 学术 科研 互动社区 (muchong.com)\"]},\"304\":{\"h\":\"其他资源\",\"t\":[\"界面各部分介绍\",\"超详细 Materials Studio 建模(上)| 刘锦程\"]},\"305\":{\"c\":[\"Materials-Studio\"]},\"306\":{\"h\":\"VASP\",\"t\":[\"VASP 的全称 Vienna Ab-initio Simulation Package,是维也纳大学 Hafner 小组开发的进行电子结构计算和量子力学 - 分子动力学模拟软件包。\",\"vaspkit 是一款 VASP 预 - 后数据处理脚本。最新版的 vaspkit 是王伟老师、许楠、刘锦程,唐刚,李强和乐平共同努力的成果。\",\"因此我们需要区分开 VASP 和 VASPKIT。VASP 是一款计算模拟软件,而 VASPKIT 仅是为方便使用 VASP 而开发的一个脚本包。也即,如果不用 VASPKIT,你仍然可以使用 VASP 进行计算,无非麻烦一些罢了。\",\"VASP 官网:https://www.vasp.at/\",\"VASPKIT 官网:https://vaspkit.com/index.html\",\"官网已经详细的列出了 VASPKIT 如何配置安装,如何开始使用。由于课程需要,实际使用与官方文档的描述有一丁点区别,本文档仅对本人使用过程做记录。\",\"01- 输入输出文件\",\"02- 结构优化与静电自洽\",\"03- 电子结构\",\"自洽场理论、能带理论、态密度、电荷密度;\",\"自旋电荷密度分析,电荷密度差分析,静电势分析,Bader 电荷分析,态密度,能带结构;\",\"04- 反应路径与分子动力学\",\"NEB 计算方法与操作实践;\",\"系综理论,控温方法,输入文件准备,计算过程,结果分析。\"]},\"307\":{\"c\":[\"VASP\"]},\"308\":{\"h\":\"MS 在 win2004 及以上一按鼠标就卡住\",\"t\":[\"一按键盘就卡住,可能是由于新版本的微软拼音导致的,开启微软拼音的兼容模式即可。\"]},\"309\":{\"c\":[\"Others\"]},\"310\":{\"h\":\"numpy 在 win2004 及以上报错\",\"t\":[\" ase --version ** On entry to DGEBAL parameter number 3 had an illegal value ** On entry to DGEHRD parameter number 2 had an illegal value ** On entry to DORGHR DORGQR parameter number 2 had an illegal value ** On entry to DHSEQR parameter number 4 had an illegal value Traceback (most recent call last): File \\\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\\", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File \\\"c:\\\\users\\\\northword\\\\appdata\\\\local\\\\programs\\\\python\\\\python39\\\\lib\\\\runpy.py\\\", line 87, in _run_code exec(code, run_globals) File \\\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\Scripts\\\\ase.exe\\\\__main__.py\\\", line 4, in File \\\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\ase\\\\__init__.py\\\", line 8, in import numpy as np File \\\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\\", line 305, in _win_os_check() File \\\"C:\\\\Users\\\\Northword\\\\AppData\\\\Roaming\\\\Python\\\\Python39\\\\site-packages\\\\numpy\\\\__init__.py\\\", line 302, in _win_os_check raise RuntimeError(msg.format(__file__)) from None RuntimeError: The current Numpy installation ('C:\\\\\\\\Users\\\\\\\\Northword\\\\\\\\AppData\\\\\\\\Roaming\\\\\\\\Python\\\\\\\\Python39\\\\\\\\site-packages\\\\\\\\numpy\\\\\\\\__init__.py') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86 \",\"Python 版本如下\",\"Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32 \",\"Windows 版本如下:\",\"版本 Windows 10 家庭中文版 版本号 20H2 安装日期 2020/11/2 操作系统版本 19042.610 序列号 体验 Windows Feature Experience Pack 120.2212.31.0 \",\"搜索到一个类似问题的,是因为 numpy 与 windows 20H2 的关系(反正总是 Windows 的锅)。\",\"使用如下将 numpy 降级即可。\",\"pip install numpy==1.19.3 \",\"引用地址:https://blog.csdn.net/yangtzech/article/details/109494653 、https://tinyurl.com/y3dm3h86\"]},\"311\":{\"c\":[\"Others\"]},\"312\":{\"h\":\"on-the-end\",\"t\":[\"啊这,我还没写完...\",\"还是恭喜你看完了本菜鸡写的不怎么样的文档,谢谢你呀~\",\"本文的包含的仅仅是个人遇到的,而且水平不够,写的其实当入门都勉强哈,还有更多的知识,需要查手册、查前人的文章、笔记、博文,面向学术科研,面向百度编程,可太真实了 233\"]},\"313\":{\"c\":[\"Others\"]},\"314\":{\"h\":\"故障排除\"},\"315\":{\"h\":\"Office 安装\",\"t\":[\"使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。\",\"下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。\"]},\"316\":{\"h\":\"OTP 下载\",\"t\":[\"下载 | Office Tool Plus 官方网站 (landian.vip)\",\"访问上述链接下载OTP。如果不知道下载哪一个,就无脑选“包含框架(7z自解压缩包)”。\"]},\"317\":{\"h\":\"Zotero\"},\"318\":{\"h\":\"Zotero 将引文链接到参考书目\"},\"319\":{\"h\":\"描述\",\"t\":[\"建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”:\",\"Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]。\",\"从 Zotero 论坛发现了通过 word 宏实现的功能 [2],虽有一些缺陷,但基本可以达成需求。\"]},\"320\":{\"h\":\"配置及使用\",\"t\":[\"Public Sub ZoteroLinkCitation() ' get selected area (if applicable) Dim nStart&, nEnd& nStart = Selection.Start nEnd = Selection.End ' toggle screen updating Application.ScreenUpdating = False ' define variables Dim title As String Dim titleAnchor As String Dim style As String Dim fieldCode As String Dim numOrYear As String Dim pos&, n1&, n2&, n3& ActiveWindow.View.ShowFieldCodes = True Selection.Find.ClearFormatting ' find the Zotero bibliography With Selection.Find .Text = \\\"^d ADDIN ZOTERO_BIBL\\\" .Replacement.Text = \\\"\\\" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute ' add bookmark for the Zotero bibliography With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:=\\\"Zotero_Bibliography\\\" .DefaultSorting = wdSortByName .ShowHidden = True End With ' loop through each field in the document For Each aField In ActiveDocument.Fields ' check if the field is a Zotero in-text reference '################################################## If InStr(aField.Code, \\\"ADDIN ZOTERO_ITEM\\\") > 0 Then fieldCode = aField.Code '############# ' Prepare ' Plain citation== Format of Textfield shown ' must be in Brackets Dim plain_Cit As String plCitStrBeg = \\\"\\\"\\\"plainCitation\\\"\\\":\\\"\\\"[\\\" plCitStrEnd = \\\"]\\\"\\\"\\\" n1 = InStr(fieldCode, plCitStrBeg) n1 = n1 + Len(plCitStrBeg) n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), plCitStrEnd) - 1 + n1 plain_Cit = Mid$(fieldCode, n1 - 1, n2 - n1 + 2) 'Reference 'as shown' in word as a string 'Title array in fieldCode (all referenced Titles within this field) Dim array_RefTitle(32) As String i = 0 Do While InStr(fieldCode, \\\"\\\"\\\"title\\\"\\\":\\\"\\\"\\\") > 0 n1 = InStr(fieldCode, \\\"\\\"\\\"title\\\"\\\":\\\"\\\"\\\") + Len(\\\"\\\"\\\"title\\\"\\\":\\\"\\\"\\\") n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), \\\"\\\"\\\",\\\"\\\"\\\") - 1 + n1 If n2 < n1 Then 'Exception the type 'Article' n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), \\\"}\\\") - 1 + n1 - 1 End If array_RefTitle(i) = Mid(fieldCode, n1, n2 - n1) fieldCode = Mid(fieldCode, n2 + 1, Len(fieldCode) - n2 - 1) i = i + 1 Loop Titles_in_Cit = i 'Number array with References shown in PlainCit 'Numer is equal or less than Titels, depending on the type '[3], [8]-[10]; [2]-[4]; [2], [4], [5] ' All citations have to be in Brackets each! [3], [8] not [3, 8] ' This doesnt work otherwise! ' --> treatment of other delimiters could be implemented here Dim RefNumber(32) As String i = 0 Do While (InStr(plain_Cit, \\\"]\\\") Or InStr(plain_Cit, \\\"[\\\")) > 0 n1 = InStr(plain_Cit, \\\"[\\\") n2 = InStr(plain_Cit, \\\"]\\\") RefNumber(i) = Mid(plain_Cit, n1 + 1, n2 - (n1 + 1)) plain_Cit = Mid(plain_Cit, n2 + 1, Len(plain_Cit) - (n2 + 1) + 1) i = i + 1 Loop Refs_in_Cit = i 'treat only the shown references (skip the rest) '[3], [8]-[10] --> skip [9] 'Order of titles given from fieldcode, not checked! If Titles_in_Cit > Refs_in_Cit Then array_RefTitle(Refs_in_Cit - 1) = array_RefTitle(Titles_in_Cit - 1) i = 1 Do While Refs_in_Cit + i <= Titles_in_Cit array_RefTitle(Refs_in_Cit + i - 1) = \\\"\\\" i = i + 1 Loop End If '############# 'Make the links For Refs = 0 To Refs_in_Cit - 1 Step 1 title = array_RefTitle(Refs) array_RefTitle(Refs) = \\\"\\\" ' make title a valid bookmark name titleAnchor = title titleAnchor = MakeValidBMName(titleAnchor) ActiveWindow.View.ShowFieldCodes = False Selection.GoTo What:=wdGoToBookmark, Name:=\\\"Zotero_Bibliography\\\" '' locate the corresponding reference in the bibliography '' by searching for its title Selection.Find.ClearFormatting With Selection.Find .Text = Left(title, 255) .Replacement.Text = \\\"\\\" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute ' select the whole caption (for mouseover tooltip) Selection.MoveStartUntil (\\\"[\\\"), Count:=wdBackward Selection.MoveEndUntil (vbBack) lnkcap = \\\"[\\\" & Selection.Text lnkcap = Left(lnkcap, 70) ' add bookmark for the reference within the bibliography Selection.Shrink With ActiveDocument.Bookmarks .Add Range:=Selection.Range, Name:=titleAnchor .DefaultSorting = wdSortByName .ShowHidden = True End With ' jump back to the field aField.Select ' find and select the numeric part of the field which will become the hyperlink Selection.Find.ClearFormatting With Selection.Find .Text = RefNumber(Refs) .Replacement.Text = \\\"\\\" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute numOrYear = Selection.Range.Text & \\\"\\\" ' store current style style = Selection.style ' Generate the Hyperlink -->Forward! ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:=\\\"\\\", SubAddress:=titleAnchor, ScreenTip:=lnkcap, TextToDisplay:=\\\"\\\" & numOrYear ' reset the style Selection.style = style ' comment if you want standard link style aField.Select With Selection.Font .Underline = wdUnderlineNone .ColorIndex = wdBlack End With Next Refs 'References in Cit End If 'If Zotero-Field '######################### Next aField ' next field ' go back to original range selected ActiveWindow.View.ShowFieldCodes = False ActiveDocument.Range(nStart, nEnd).Select End Sub Function MakeValidBMName(strIn As String) Dim pFirstChr As String Dim i As Long Dim tempStr As String strIn = Trim(strIn) pFirstChr = Left(strIn, 1) If Not pFirstChr Like \\\"[A-Za-z]\\\" Then strIn = \\\"A_\\\" & strIn End If For i = 1 To Len(strIn) Select Case Asc(Mid$(strIn, i, 1)) Case 49 To 57, 65 To 90, 97 To 122 tempStr = tempStr & Mid$(strIn, i, 1) Case Else tempStr = tempStr & \\\"_\\\" End Select Next i tempStr = Replace(tempStr, \\\" \\\", \\\" \\\") MakeValidBMName = Left(tempStr, 40) End Function \"]},\"321\":{\"h\":\"缺陷和注意事项\",\"t\":[\"来源添加 ↩︎\",\"Word: Possibility to link references and bibliography in a document? - Zotero Forums↩︎\"]},\"322\":{\"h\":\"Zotero 指北\"},\"323\":{\"h\":\"关于 Zotero 是什么以及为什么使用它\",\"t\":[\"Why Zotero & Why NOT EndNote?\",\"Todo\"]},\"324\":{\"h\":\"安装与配置\"},\"325\":{\"h\":\"主程序\",\"t\":[\"没什么好记录的,在 Zotero 官网 下载一路下一步安装即可。\"]},\"326\":{\"h\":\"浏览器插件 Zotero Connector\",\"t\":[\"Zotero 相较于其他文献管理软件的一大优势就是可以直接从网页中抓取元数据并存入数据库,这个过程通过浏览器插件 Zotero Connector 实现。\"]},\"327\":{\"h\":\"中文 Translator 与茉莉花插件\",\"t\":[\"比起其他的文献管理软件,原生的 Zotero 对中文支持并没有好到哪里去,但是得益于开源社区的维护,我们可以通过第三方 translator 库 github.com/l0o0/translators_CN 极大的提高其中文文献抓取能力。\",\"该库的主要维护者还开发了插件 Jasminum - 茉莉花 来继续增强 Zotero 的中文支持,茉莉花插件提供了如下功能:\",\"拆分或合并 Zotero 中条目作者姓和名\",\"根据知网上下载的文献文件来抓取引用信息(就是根据文件名)\",\"添加中文 PDF/CAJ 时,自动拉取知网数据,该功能默认关闭。需要到设置中开启,注意添加的文件名需要含有中文,全英文没有效果(还是根据文件名)\",\"为知网的学位论文 PDF 添加书签\",\"更新中文 translators\",\"拉取文献引用次数,是否核心期刊\",\"就安装而言,\",\"下载安装 Jasminum 插件:在 Latest Release · l0o0/jasminum (github.com) 下载 .xpi 文件。在 Zotero——Tools——Add-ons——右上角小齿轮⚙——Install Add-on From File...——选中第二步保存的文件——确定——重启 Zotero。\",\"下载安装 PDFtk:下载并安装 PDFtk server ,记录安装路径(eg. C: \\\\Program Files (x86)\\\\PDFtk)。在 Zotero——edit——Preferences——Jasminum——Setting——PDFtk Server Execute File Path 中填写 /bin (eg. C: \\\\Program Files (x86)\\\\PDFtk\\\\bin)(即 PDFtk 可执行文件所在目录)。MAC 用户参考 这里 。\",\"安装中文 Translator:与上一步同一界面——Unofficial Translator Repository——Refresh——Update all。\",\"更新中文 Translator:打开已安装 Zotero Connector 的浏览器,右击 Zotero Connector 图标进入拓展选项,Advanced——Update Translators。\"]},\"328\":{\"h\":\"Styles 与 GB/T 7714-2015 CSL 文件\",\"t\":[\"这是一个修改过的 GB/T 7714-2015 CSL 文件 ,将这些文件放置于 Zotero 数据目录下的 Styles 文件夹即可。\",\"国内学校论文/作业的参考文献格式基本上都与国标相近,这里的 CSL 文件经过修改,适配了参考文献列表“等”与“et al”混排。其原理见后文 参考文献列表中文“等”与外文“et al”混排 。\"]},\"329\":{\"h\":\"基础使用\",\"t\":[\"截止至这里,最基本的 Zotero 安装就已经完成了。关于具体的使用,可以参考以下内容来学习,他们均较为详细地介绍了如何导入与组织文献以及如何在 Word 中插入引用,因此就不再重复造轮子了。\",\"Zotero 官方文档\",\"韩学士. 优雅地用 Zotero 进行文献管理和论文写作. GitHub 【推荐】\",\"思考问题的熊. 文献管理神器 Zotero 学习路径指南. 少数派\",\"在使用 Zotero 之前,我希望可以引入几个术语:\",\"条目 Item:\",\"附件 Attachments:\",\"链接的附件:\",\"存储的附件:\",\"合集 Collections:\",\"标签 Tags:\",\"引文\",\"参考书目\",\"以下列个需要了解的大纲:\",\"### 添加与维护条目、附件 #### 添加条目 ##### 通过标识符添加条目 ##### 通过附件添加条目 ##### 直接从 Connector 生成条目 #### 添加附件 ### 组织、管理文献库 #### 集合与标签 #### 笔记与关联条目 #### 重复条目 ### 插入引文与生成参考书目 #### 直接在 Zotero 里生成参考条目 #### 在 Word 里插入引文 #### 使用 Zotero bib 生成参考条目 #### 引文格式 \"]},\"330\":{\"h\":\"多设备同步方案\",\"t\":[\"在多设备同步中,条目的同步均是通过 Zotero 官方提供的同步服务进行的,不同的是附件的同步方式。可以依据需要同步的设备类型、同步的目的来合理选择同步的方案。\"]},\"331\":{\"h\":\"使用官方的存储空间进行附件同步\",\"t\":[\"优点:只需要账号登录上,基本不需要任何额外配置,方便快捷简单。\",\"缺点:默认只有 300M,更大要付费,没钱,一票否决,过了。\"]},\"332\":{\"h\":\"WebDav 实现附件同步\",\"t\":[\"Todo\"]},\"333\":{\"h\":\"OneDrive & ZotFile 实现附件同步\",\"t\":[\"Todo\"]},\"334\":{\"h\":\"使用 ZotFile 实现更自由地附件管理\",\"t\":[\"Todo\"]},\"335\":{\"h\":\"其他插件与玩法\",\"t\":[\"少数派这篇文章介绍了一些较为基础的用法,而对一些更深的玩法并没有详细展开或提及;同时,它发布于 2019 年 9 月,而在这之后,Zotero 也涌现出了许多其他优秀的插件,却少有文章进行较为集中的综述,所以下面对我所了解的一些技巧进行记录和分享。\"]},\"336\":{\"h\":\"Zotero-PDF-Translate 实现在 PDF 中翻译\",\"t\":[\"windingwind/zotero-pdf-translate: PDF translation add-on for Zotero 6 (github.com)\"]},\"337\":{\"h\":\"Zotero-tag 实现新条目添加未读标签,阅读后自动取消\",\"t\":[\"windingwind/zotero-tag: One add-on to rule Tags all. Manage all your Tags in one Zotero add-on. (github.com)\",\"该插件可以定义一系列规则组,例如新添加条目添加“未读”标签,当打开过后,自动取消该标签。\"]},\"338\":{\"h\":\"Zotero-SciHub 实现从 SCI-HUB 下载全文\",\"t\":[\"ethanwillis/zotero-scihub: A plugin that will automatically download PDFs of zotero items from sci-hub (github.com)\"]},\"339\":{\"h\":\"Zotero Update IFs 为期刊添加影响因子\",\"t\":[\"redleafnew/zotero-updateifs: 从唯问更新影响因子\"]},\"340\":{\"h\":\"Zotero 与 Obdisian 或其他 Markdown 编辑器结联动\",\"t\":[\"Todo\"]},\"341\":{\"h\":\"Zutilo\",\"t\":[\"Todo\"]},\"342\":{\"h\":\"使用 Better BibTex for Zotero 实现在 LaTeX / Markdown 中引用\",\"t\":[\"Todo\"]},\"343\":{\"h\":\"修改 CSL 文件使参考文献列表中文“等”与外文“et al”混排\",\"t\":[\"通过 Zotero Language 字段与 CSL 标签实现。\",\"Todo\"]},\"344\":{\"h\":\"其他平台客户端\"},\"345\":{\"h\":\"iOS\",\"t\":[\"目前官方 iOS 客户端已正式发布。\"]},\"346\":{\"h\":\"Android\",\"t\":[\"无官方客户端,考虑使用三方客户端 Zoo for Zotero。\"]},\"347\":{\"h\":\"Web\",\"t\":[\"Todo\"]},\"348\":{\"h\":\"CSL 介绍\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\"]},\"349\":{\"h\":\"前言\",\"t\":[\"CSL 是一种基于 XML 的开放 (开源) 语言,用来描述引用和参考文献的格式。对 CSL 更加技术和详细的描述见 CSL 规范。\"]},\"350\":{\"h\":\"CSL 是什么\",\"t\":[\"如果你写过论文的话,你可能在其中引用了别人的论文。参考文献在学术交流中很重要,因为它可以提供引用的来源,并且可以把已经发表的研究联系到一起。但是,手动设置引用格式和参考文献目录非常耗时,而且不同的期刊有自己的引用格式。\",\"参考文献管理软件可以解决上面的问题。像 Zotero、Mendeley、Papers 等软件不仅能帮助你管理参考文献,而且可以自动地生成引用的参考文献目录。为了设置特定的引用格式,这些软件需要能识别的对引用格式的描述,这种描述就是 Citation Style Language(CSL)。\",\"citation-formats\",\"the-csl-ecosystem\",\"understanding csl styles\",\"end\"]},\"351\":{\"h\":\"引文格式\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"引文格式有很多很多种,我们最常用的就是国标(信息与文献 参考文献著录规则),最新的国标代号是 (GB/T 7714-2015)。大多数的引用格式都属于几个基本类别,如下:\"]},\"352\":{\"h\":\"In-text Styles\",\"t\":[\"引用格式可以分为两个主要的类型。第一种就是 in-text styles,正文中的引用直接指向参考文献目录中的一个或者多个条目。in-text styles 还可以细分为 author-date,author,numeric 和 label 格式。\",\"在 CSL 中,每个单独的 pointer 称为一个引用。例如,引文 “(Doe et al. 2002, Smith 1997)” 包含两个引用:一个是 Doe et al. 在 2002 年发表的文献,另外一个是 Smith1997 年发表的文献。\"]},\"353\":{\"h\":\"“author-date” 和 “author” 格式\",\"t\":[\"author-date 引用格式会显示作者的名字和发表的日期,比如:(Van der Klei et al. 1991; Zwart et al. 1983)。author 只显示作者名字,例如:(Gidijala et al.)。参考文献条目一般使用字母表顺序对作者进行排序。\",\"应该注意的是,许多引用格式使用了令人疑惑的 Harvard 术语来指代 author-date 格式,但是大多数这些格式与哈佛大学并没有关系。而且也并不存在一个官方的 Harvard 格式。\",\"参考文献条目实例\",\"Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.\",\"van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.\",\"Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.\"]},\"354\":{\"h\":\"“numeric”格式\",\"t\":[\"numeric 格式由数字组成,比如 [1,2] 和 [3]。参考文献条目一般使用作者首字母排序或者使用第一次在正文中的引用顺序排序。国标就是一种典型的 numeric 格式。\",\"参考文献条目实例\",\"Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.\",\"Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.\",\"van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.\"]},\"355\":{\"h\":\"\\\"numeric\\\" 复合格式\",\"t\":[\"复合格式是 numeric 格式的变体。这种风格在化学领域很流行。CSL 中暂时不支持这种格式,这里也不多作介绍。\",\"参考文献条目实例\",\"Gidijala L, et al. (2008) BMC Biotechnol 8: 29.\",\"a) Zwart KB, et al. (1983) Antonie van Leeuwenhoek 49: 369-385, b) van der Klei IJ, et al. (1991) Arch Microbiol 156: 15-23.\"]},\"356\":{\"h\":\"标签格式\",\"t\":[\"这种引用格式由 keys 构成,例 GBKv2008] 和 [ZwVH1983; vaHV1991]。CSL 对这种格式支持有限,这里也不多作介绍。\",\"参考文献条目实例\",\"[GBKv2008] Gidijala L, Bovenberg RA, Klaassen P, van der Klei IJ, Veenhuis M, et al. (2008) Production of functionally active Penicillium chrysogenum isopenicillin N synthase in the yeast Hansenula polymorpha. BMC Biotechnol 8: 29.\",\"[vaHV1991] van der Klei IJ, Harder W, Veenhuis M (1991) Methanol metabolism in a peroxisome-deficient mutant of Hansenula polymorpha: a physiological study. Arch Microbiol 156: 15-23.\",\"[ZwVH1983] Zwart KB, Veenhuis M, Harder W (1983) Significance of yeast peroxisomes in the metabolism of choline and ethanolamine. Antonie van Leeuwenhoek 49: 369-385.\"]},\"357\":{\"h\":\"Note Styles\",\"t\":[\"引用格式的第二类为 Note 格式。引用中的 marker 可以是数字或者符号,例如 [*] 或者 [†]。每个 marker 指向脚注或者尾注。CSL 不能设置使用哪些数字或者符号用于 marker,这些应该用字处理软件 (比如 word) 设置。与上面的 in-text 格式不同,尾注或者脚注通常显示的信息更多。\",\"参考文献条目实例\",\"[*] Voyage to St. Kilda’ (3rd edit. 1753), p. 37.\",\"[†] Sir J. E. Tennent, ‘Ceylon,’ vol. ii. 1859, p. 107.\"]},\"358\":{\"h\":\"更进一步\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"这里只给出了一个基本的介绍。有关 CSL 更详细的介绍可以查看 CSL 标准文档或者其他参考文档。\"]},\"359\":{\"h\":\"CSL 生态\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"要明白 CSL 是怎么运作的,首先要了解 CSL 的生态。Style 指的是 CSL 样式,Item Metadata 指的是每篇参考文献的作者,题目等信息,Locale Files 是为实现与语言无关(指英语,汉语等)的格式的本地化文件,Citation Details 指的是影响引文信息或参考文献列表表现的细节,比如顺序,位置等。\"]},\"360\":{\"h\":\"独立格式和从属格式\",\"t\":[\"CSL 的一切都是围绕 style 的,但是并不是所有的 style 都是相似的。主要包括两种格式:独立格式 (independent styles) 和从属格式 (dependent styles)。\",\"独立格式有 2 种功能,首先,需要先定义一种引用格式。具体格式是什么样的,是 author-date 格式还是 note 格式? 引用的顺序是按字母排序还是按日期排序?参考文献条目中是不是包含 DOI?使用什么标点符号以及使用大写还是小写?文献发表年限在文献题目前还是后?等等,这些都是引用格式定义的。第二个功能是:CSL 必须是能自我解释的,可以称之为格式的元数据。元数据中可以包括该 CSL 对应的期刊标题,以及该期刊的联接,该 CSL 的创建者等。\",\"从属格式则仅包括格式的元数据,没有对引用格式的定义。从属格式必须指定它的参考格式 (父格式),从属格式的引用将使用它的父格式的引用格式。\",\"当多个格式使用相同的引用格式时,从属格式非常有用。以一个出版社旗下的不同期刊为例,如果每个期刊都使用独立格式,则每个 CSL 都要完整的对引用格式的描述,即使他们的引用格式都是相同的。这样就导致 CSL 太庞大,冗余太多。这种情况下,从属格式就比较适合。例如,\\\"Nature\\\",\\\"Nature Biotechnology\\\" 和 \\\"Nature Chemistry\\\" 都使用同样的引用格式。因此,只需要创建一个 \\\"Nature\\\" 的独立格式,将 \\\"Nature Biotechnology\\\" 和 \\\"Nature Chemistry\\\" 格式都定义为 \\\"Nature\\\" 格式的从属格式。这样,如果 \\\"Nature\\\" 的出版社想改变引用格式,只需要改变 \\\"Nature\\\" 期刊格式的 CSL 就可以,不需要改变它的从属格式对应的 CSL。\"]},\"361\":{\"h\":\"Locale 文件\",\"t\":[\"事实上,大多数独立格式并不是完全独立的。\",\"以下面的条目为例:\",\"Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (1999, September 28). Method and system for placing a purchase order via a communications network. Retrieved from https://www.google.com/patents/US5960411\",\"你可以使用一种独立的 CSL 格式来描述这个条目,在格式种编码就可以实现。例如,在最后的链接前加上 \\\"Retrieved from\\\",或者使用 \\\"YYYY, Month DD\\\" 作为日期的格式。但是这样的一种 CSL,只能在美式英语中使用,如果使用德语写作,就必须修改样式中对应的翻译和日期格式。\",\"幸运的是,独立格式可以依据 CSL locale files(以下也翻译为 本地化文件 ) 来实现通用项的翻译,日期格式和语法的转换。例如:我们可以重写 CSL 格式使用 \\\"retrieved\\\" 和 \\\"from\\\" 项,并使用本地化的日期格式。如果我们将 CSL 样式 (同格式) 的使用环境设置为美式英语,该样式将从 US English locale file 检索和翻译对应的项,并生成上述引用。如果将英语换为德语,就会使用德语对应的 locale file,生成的引用如下:\",\"Hartman, P., Bezos, J. P., Kaphan, S., & Spiegel, J. (28. September 1999). Method and system for placing a purchase order via a communications network. Abgerufen von https://www.google.com/patents/US5960411\",\"因此,使用 CSL locale files ,可以编写与语言无关的 CSL 样式。如上面展示的,这样的格式可以轻易的在不同的语言中转换。但是语言是很复杂的,CSL automatic localization 并不能支持所有的语言特色。但是,语言无关的样式仍然是有意义的,如果你要自己修改 CSL 样式来适应自己选择的语言环境,参考这些语言无关的样式将更容易实现。\",\"Locale file 还有一个好处,那就是,我们只需要为每种语言定义一次通用的翻译,日期格式和语法。这样可以保证样式紧凑,并使 locale file 更容易维护。由于给定语言的引用格式并不是一直和 locale file 中定义的转换格式一致,因此,我们也可以自己选择性的重写任何在 locale file 中定义的项目。下面独立格式解析中的 locale 元素就是为实现这一功能设置的。\"]},\"362\":{\"h\":\"Item Metadata\",\"t\":[\"接下来就是引用中需要的参考文献条目的细节:条目元数据。\",\"例如:一篇期刊文章可能需要作者的名字,发表的年份,文章题目,期刊名称,卷和期,出现的页码范围以及 DOI(数字文献唯一标识),所有这些信息都有助于读者识别和查找这篇文章。\",\"参考文献管理软件可以轻松的创建文献的这些细节信息。但是,很多参考文献管理软件都有自己的格式来存储这些元素据,大多数都支持通用的 bibliographic exchange formats,比如 BixTex 和 RIS。citeproc-jsCSL 处理器引入了一种基于 JSON 的格式,用于以 citeproc-js 可以理解的方式来存储元数据。其他的一些 CSL 处理器后来采用了这种 “CSL JSON” 格式(也称为 “citeproc JSON”)。\",\"译者注:这里讲的似乎有些繁琐。总的来说,是我们需要每篇文章的作者,题目,发表期刊等信息来生成对应的条目。文献管理软件可以很方便的提供这些信息。至于其内部存储的方式,使用的时候并不需要关心,类似 Zotero 的文献管理软件会自动使用这些信息和 CSL 生成引用信息。\"]},\"363\":{\"h\":\"引用细节\",\"t\":[\"对于给定的引用格式,引文和条目的展示不仅取决于被引用项的元数据,还取决于这些项被引用的上下文。我们将这类特定于上下文的信息称为引用细节。\",\"例如:引用时对条目的排序会影响他们在参考文献中的位置(在下面独立格式的 citation 和 bibliography 章节中提到)。\"]},\"364\":{\"h\":\"CSL 处理器\",\"t\":[\"有了 CSL 样式,locale file,元数据和引用细节,我们现在需要一个软件来解析这些信息,并以正确的格式生成引用和参考文献条目。用来完成这些功能的软件就是 CSL 处理器。\",\"大多数的参考文献管理软件使用的是免费开源的 CSL 处理器,比如:citeproc-js。\"]},\"365\":{\"h\":\"理解 CSL 格式\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"到现在为止,我们已经知道什么是 CSL、怎么使用它、以及它怎么运作的。接下来我们将深入到 CSL 文件内部,分析它的 XML 代码。XML基础.md 文件中简单介绍了 XML,看完后可以读懂并编辑简单的 XML 文件。如果想更多的了解 XML,可以在网上查找 XML 教程。\"]},\"366\":{\"h\":\"从属格式解析\",\"t\":[\"下面是一个 CSL 从属格式文件:\",\" \",\"如 XML基础.md 文件中的描述:一行给出了 xml 的声明。根元素为 style,其中包含了一个子元素 info。info 元素中又包含了很多元素,其中很多元素都有内容和属性。xmlns、version 和 defaults-locale 都是元素 style 的属性,分别指定了??、版本和使用的语言,这里为美国英语。\",\"大多数从属格式都是电子表格自动生成的,下面的注释也给出了指向电子表格的联接。\",\" \",\"元素 info 里包含了大多数 style 的元数据,比如:\",\"style 的题目(也是期刊的题目):\",\"Applied and Environmental Microbiology \",\"样式的 ID,是文献管理软件用来区分不同 style 的标志:\",\"http://www.zotero.org/styles/applied-and-environmental-microbiology \",\"style 自己的链接。该链接指向了网上的副本。\",\" \",\"从属格式需要指定它的父格式,父格式为独立格式。这里的父格式为 American Society for Microbiology\",\" \",\"为了更好的维护格式,因此需要指定格式的文档链接。这里文档的链接转到了期刊的主页。\",\" \",\"为了便于分类,还可以在 category 元素中设置它的属性。这里分别设置了引用格式为 numeric,领域为 biology。\",\" \",\"当期刊创建格式的时候,可以在 issn 元素和 eissn 元素中保存其打印标准国际连续出版物号 (ISSN) 和其电子版本 (ESSIN)。\",\"0099-2240 1098-5336 \",\"updated 元素保存了最后一次更新的时间戳:\",\"2014-04-30T03:45:36+00:00 \",\"rights 元素中保存了该 CSL 格式的证书:\",\"This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License \"]},\"367\":{\"h\":\"独立格式解析\",\"t\":[\"下面是一个独立格式的实例,实例中定义了引用格式,所以要比从属格式要大一些。这里的示例只是一个简化的例子,实际的格式比这个还要大很多。但这个简化的例子仍然是完整有效的。\",\" \"]},\"368\":{\"h\":\"结构\",\"t\":[\"首先看一下根元素 style 的子元素。\",\" \",\"相比于从属格式只有 info 一个子元素,独立格式的根元素有除了 info· 以外,还有 locale 、 macro 、citation、bibliography 四个子元素。\",\"这些子元素的作用分别是:\",\"info 该元素在独立格式中的作用和从属格式中相同,都是用来保存基本的格式元数据。\",\"locale 该元素可以用来从 locale file 中重写 locale data\",\"macro 用来存储 CSL 代码,这些代码可能应用在 citation 、bibliography 或者其他的 macro 元素中。\",\"citation 定义文中引用的格式。\",\"bibliography 定义参考文献目录的格式。\",\"以下从 style 根元素开始分析。\"]},\"369\":{\"h\":\"根元素/style 元素\",\"t\":[\" \",\"在从属格式中我们已经了解了 xmlns 和 version 属性,class 是新的属性,用来告诉 CSL processor(CSL 处理器) 使用的引用格式是什么。\"]},\"370\":{\"h\":\"info 元素\",\"t\":[\"独立格式的元数据通常比从属格式的元数据更加全面:\",\" Example Style http://www.zotero.org/styles/example John Doe JohnDoe@example.com Jane Doe Bill Johnson 2014-10-15T18:17:09+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License \",\"title、style ID、\\\"self\\\" link、categories、time stamp、license 和从属格式作用都是相同的,但有些许差别。首先,独立格式不依赖父格式,通常是提供一个 template(模板) 链接,表明当前的独立格式是以模板格式链接创建的(这样写的原因是,通常情况下,凭空写一个 CSL 比较困难,但是借助一个模板改写则容易的多)。这里的模板是 APA style。此外,info 还倾向于给定一个或者多个 document 链接,用来指向引文格式的在线描述。\",\"为了致谢 CSL 格式的创建者,他们的名字和联系方式也可以添加到格式文件中。在当前的例子中,有一个作者和两个贡献者。作者通常完成了创建格式的大部分工作,贡献者一般只提供了一些小的改进。\"]},\"371\":{\"h\":\"citation 元素和 macro 元素\",\"t\":[\"接下来分析 macros 和 citation 元素。citation 元素用来描述引用的格式。\",\" \",\"上面的代码可以生成类似 “(A.C. Smith et al., 2002; W. Wallace, J. Snow, 1999)” 这样的格式。为了理解这种引用格式在 CSL 中式如何编码的,要先分析 citation 元素中的 layout 元素。layout 元素中的 prefix、suffix 和 delimiter 属性分别定义了前缀(这里为 (),后缀(这里为 ))以及条目分隔符(这里为 ;)。也就是说整个条目要放在圆括号中,条目之间以 ; 分隔。每个条目的格式在 layout 元素的内容中定义。其内容中的 group 元素包括了 author 和 issue-year macros,并且以 , 分隔。\",\"macro 元素是一种辅助元素,在其他元素或者其他 macro 元素中使用。通过其名字也可以看出,其与其他语言中的 __ 宏 __ 类似,这里暂不翻译。每个 macro 都含有 name 属性。\",\"**注:**以下为了方便描述,将对应的 macro 元素直接以 name 指代,例:name 为 author 的 macro 元素直接称为 author 元素。\",\"``author元素的name 的属性指定了名称,variable 属性保存了具体的作者值,initialize-with表明作者值为首字母缩写,每个首字母后面为.`。\",\"issued-year 元素以分支语句开始,分支语句以 choose 元素定义,其中包含 if 和 else 元素。如果参考文献有日期,则保存在 issued 变量中,如果 issued-year 元素被引用,日期的年份将被印出,否则就印出 no date。\",\"layout 元素中的 group 元素的 author 用来印出在 author 元素中存储的值,issued-year 则用来印出 issued-year 元素储存的值。\",\"为什么不直接把 macro 中的内容放在 citation 元素中呢?使用 macro 有什么好处呢?在上面的例子中,macro 的使用简化了 citation 元素的结构。此外,上述的两个 macro 总共被调用了 4 次(两次在 citation 元素中,两次在 bibliography 元素中),如果不使用 macro,必须多次重复这些代码。因此 macro 的使用提供了更紧凑的样式。\",\"再看 citation 元素,其中含有两个属性 et-al-min 和 et-al-use-first。这里的值分别为 3、1,表示作者大于等于 3 个的时候,使用印出第一个作者,后面跟 et al 术语。\",\"citation 元素中还包括了 sort 元素,其中包括了两个 key 元素,用来表明引用的排列顺序。第一个 key 元素中引用了 author 宏,第二个宏引用了 issued-year 宏,表明,先按作者作者字母排序,然后按文献发表年份排序。\"]},\"372\":{\"h\":\"bibliography 元素\",\"t\":[\"citation 元素定义了引用的格式,bibliography 定义了参考文献条目的格式。\",\" ... \",\"上述的例子中的 bibliography 实际上只适用于一种类型:期刊文章。它生成的条目的格式是:\",\"A.C. Smith, D. Williams, T. Johnson. 2002. Story of my life. Journal of Biographies, 12(2), 24—27. W. Wallace, J. Snow. 1999. Winter is coming. Journal of Climate Dynamics, 6(9), 97—102.\",\"我们怎么定义这种格式呢?首先,bibliography 元素的结构和 citation 元素很相似,不同的是,这里的 layout 元素用来定义参考文献条目的格式。除了给出 author 和 issued-year,参考文献条目还需要给出每个条目的 title、container-title(对期刊文章来说,就是期刊的名称)、volume、issue 和 page。这里 layout 元素使用属性 suffix 和 delimiter 分别指定了 group 的后缀为 .,以及 group 之间的分隔符为 ,。\",\"和 citation 元素相同,bibliography 也包括了一个 sort 元素,用来对参考文献条目进行排序。这里的三个 key 分别为 author、issued-year 和 title。\"]},\"373\":{\"h\":\"locale 元素\",\"t\":[\"最后介绍的是 loacle 元素。正如上面写道的,CSL locale file 允许 CSL 样式快速转换为不同的语言。但是,有时需要覆盖默认翻译。\",\" without date \",\"对 US English 来说,\\\"no date\\\" 项的内容就是 \\\"no date\\\"。但是在我们的例子中,我们想使用 \\\"without date\\\" 去替换它。为了重写默认的翻译,我们可以使用类似上面的 locale 元素。对一个没有日期的条目来说,这种重写会导致引用变为像 (D. Williams, without date) 这样的格式。\",\"locale 的 xml:lang 属性被设置为 en,这告诉 CSL 样式当样式被用于英语写作的时候,重写 \\\"no date\\\"。如果我们在德语写作的时候使用该 CSL,该样式将会依据 German locale file 印出德语的翻译 (ohne Datum)\"]},\"374\":{\"h\":\"CSL 1.0.2 规范\",\"t\":[\"[!DONE] 此页面于 2022-8-2 已校对完成。\",\"主要作者:Rintze M. Zelle, PhD、 Brenton M. Wiernik、Frank G. Bennett, Jr.、 Bruce D’Arcus、Denis Maier\",\"其他贡献者:Julien Gonzalez、Sebastian Karcher、Sylvester Keil、Cormac Relf、Lars Willighagen and other CSL contributors.\",\"译者:Mao Zhou、 Northword。\",\"此工作以 Creative Commons Attribution-ShareAlike 4.0 International License 授权。\"]},\"375\":{\"h\":\"介绍\",\"t\":[\"CSL(Citation Style Language,引文样式语言) 是一种基于 XML 的格式,用来描述引文、注释和参考文献的格式,他提供了:\",\"一种开放的 (开源的) 格式\",\"紧凑、稳定的样式\",\"对样式要求的广泛支持\",\"样式自动本地化\",\"对样式发布和更新的基本支持\",\"数千种免费提供的样式(CC BY-SA 授权)\",\"有关的其他文档,CSL 议程,样式和本地化文件详见 CSL 项目主页。\"]},\"376\":{\"h\":\"翻译习惯\",\"t\":[\"这里将列出一些常用的术语的译文,并不能保证翻译的准确性。为保持准确性,后文的描述中可能会在译文旁标注原文。\",\"原文\",\"译文\",\"备注\",\"locale files/locale\",\"本地化文件\",\"区域文件\",\"styles\",\"样式\",\"citation\",\"引文\",\"macro\",\"宏\"]},\"377\":{\"h\":\"术语\",\"t\":[\"关键字 MUST,MUST NOT,REQUIRED,SHALL,SHALL NOT,SHOULD,SHOULD NOT,RECOMMENDED,MAY 和 OPTIONAL 按 IETF RFC 2119 中的描述解释。\",\"[!NOTE] 译者注:关于 IETF RFC 2119 协议\",\"RFC ,即 Request for Comments,意见征求稿,是由 The Internet Engineering Task Force 制作的文档,其中许多是各种 Internet 协议的官方标准。\",\"RFC 2119 协议全文:https://www.ietf.org/rfc/rfc2119.txt\",\"MUST:必须的。通过它描述的对象,是强制要求的。它与 REQUIRED 和 SHALL 含义相同。\",\"MUST NOT:不允许的。通过它描述的对象也是强制的。与 SHALL NOT 同义。\",\"SHOULD:在通常情况下,应当这样。但是,特殊情况下除外。与 RECOMMENDED 同义。\",\"SHOULD NOT:在通常情况下,不是这样。但是,特殊情况下除外。与 NOT RECOMMENDED 同义。\",\"MAY:可选的描述对象。与 OPTIONAL 同义。\"]},\"378\":{\"h\":\"文件类型\",\"t\":[\"[!DONE] File Types\",\"CSL 文件有 3 种类型:独立样式、从属样式(都使用 .csl 作为扩展名),以及 本地化文件(名字为 locales-xx-XX.xml,其中 xx-XX 表示语言以及其方言,例如 en-US 表示美式英语)。\"]},\"379\":{\"h\":\"独立样式\",\"t\":[\"独立样式包含了对引文,笔记以及参考书目的描述。虽然它们大多数都是自成一体的(即不依赖其他样式),但是(默认)依赖于本地化文件。\"]},\"380\":{\"h\":\"从属样式\",\"t\":[\"从属样式是独立样式的别名(alias),其仅包含样式元数据,不包括任何格式的指示。\",\"通过将具有相同引用风格的期刊(例如 \\\"Nature Biotechnology\\\",\\\"Nature Nanotechnology\\\")的从属样式链接到一个单独的独立样式(例如 \\\"Nature Journals\\\"),从属样式就不再需要再重复一遍格式说明。\",\"[!NOTE] 译者注\",\"也就是说从属样式是依赖其他样式的,被依赖的样式成为称为父样式。\"]},\"381\":{\"h\":\"本地化文件\",\"t\":[\"每个本地化文件包含一系列对某种特定的语言 / 方言的本地化数据(术语翻译,本地化日期格式以及语法选项)。\",\"[!NOTE] 译者注\\n本地化文件主要用于在不同的语言环境中使用样式,比如在中文环境中使用,中文对应的本地化文件可以将英文中的 et al. 替换为 等 。\"]},\"382\":{\"h\":\"本地化文件的结构\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"尽管本地化数据可以包括在 csl 文件中 (见 Locale),但是本地化文件可以方便的提供本地化数据的设置,包括术语,日期格式以及语法选项。\",\"每个本地化文件包括了一种语言方言的本地化数据。本地化文件中根元素为 cs:locale(样式/style 中则为 cs:style 元素)。在 cs:locale 根元素中,属性 xml:lang 用来设置方言。同时这一设置选项也用来对本地化文件命名(\\\"xx-XX\\\" 文件名为 locales-xx-XX.xml)。此外,根元素必须携带 version 属性,表明本地化文件的 CSL 版本(对 CSL 1.0 兼容的 locale file 必须设置为 \\\"1.0\\\")。本地化文件有和样式同样的命名空间。cs:locale 元素可能包含 cs:info 作为第一个子元素,同时,必须含有 cs:terms、cs:date、cs:style-options 子元素。下面是一个 本地化文件的部分示例:\",\" n.d. et al. page pages p. pp. \"]},\"383\":{\"h\":\"Info\",\"t\":[\"cs:info 元素用来给出本地化文件的元数据。它含有以下子元素:\",\"cs:translator(可选)\",\"​ cs:translator 用来致谢翻译者,并且能使用多次。在这个元素中。子元素 cs:name 必须出现一次,cs:uri 则是可选的。这些子元素应该分别包括翻译者的名字,地址和 URI。(与样式中类似)\",\"cs:rights(可选)\",\"​ 可能出现一次。cs:rights 的内容用来指定本地化文件发布版本的 license。该元素可能会携带 license 属性来指定 license 的 URI,xml:lang 属性则用来指定元素内容的语言(值必须是 xsd:language locale code)。\",\"cs:updates(可选)\",\"​ cs:updated 元素的内容必须是一个 时间戳 来指定本地化文件最后一次更新的时间。\"]},\"384\":{\"h\":\"Terms(术语)\",\"t\":[\"术语是本地化的字符串,比如通过使用 \\\"and\\\" 术语,\\\"Doe and Smith\\\" 在语言环境从英语到德语的转换中会自动变为 \\\"Doe und Smith\\\"。术语用 cs:term 元素定义,是 cs:terms 元素的子元素。每个 cs:term 元素必须携带一个 name 属性,其属性值可以设置为 [附录II 术语](#附录II 术语) 列表中的值。\",\"术语可以直接在 cs:term 的内容中定义,或者,在某些情况下,比如在需要单数和复数的情况下可以分别在子元素 cs:single 和 cs:multiple 中定义, (例如:\\\"page\\\" 和 \\\"pages\\\")。\",\"术语必须使用 cs:term 元素来定义,并在其中使用 form 属性来设置特定格式,form 可以设置的值为:\",\"\\\"long\\\" - (默认值), e.g. \\\"editor\\\" and \\\"editors\\\" for the \\\"editor\\\" term\",\"\\\"short\\\" - e.g. \\\"ed.\\\" and \\\"eds.\\\" for the term \\\"editor\\\"\",\"\\\"verb\\\" - e.g. \\\"edited by\\\" for the term \\\"editor\\\"\",\"\\\"verb-short\\\" - e.g. \\\"ed.\\\" for the term \\\"editor\\\"\",\"\\\"symbol\\\" - e.g. \\\"§\\\" and \\\"§§\\\" for the term \\\"section\\\"\",\"如果一个样式使用了一个没有定义的格式,则会会退到其他形式,比如 \\\"werb-short\\\" 会回退到 \\\"verb\\\",\\\"symbol\\\" 会回退到 \\\"short\\\",\\\"verb\\\" 和 \\\"short\\\" 都会回退到 \\\"long\\\"。如果没有可以用的语言环境或者 form 格式,改术语的渲染结果就会显示为空字符串。\",\"cs:term 元素可以使用 match,gender 和 gender-form 属性来设置数字变量渲染为序数(比如,first,2nd)。具体见下面的 序数后缀 和 特定序数。\",\"术语内容不应该包括 Latex 以及 HTML 等标记。上标可以使用 Unicode 上标字符。\"]},\"385\":{\"h\":\"序数后缀\",\"t\":[\"数字变量可以使用 cs:number 元素以 \\\"ordinal\\\" 格式(即序数格式)渲染,比如:2nd。序数的后缀则是使用术语来定义的。\",\"\\\"ordinal\\\" 术语定义了默认的序数后缀格式,但这些默认的后缀可以被下面的术语对某些数字进行覆盖:\",\"\\\"ordinal-00\\\" 到 \\\"ordinal-09\\\" - 默认地,当术语名称的最后一位数字与要渲染的数字的最后一个数字相同时,将使用在这个范围内的对应的术语。比如:\\\"ordinal-00\\\" 能够匹配数字 0 、10、20 等等。通过设置属性 match 为 \\\"last-two-difits\\\"(默认值为 \\\"last-digit\\\"),匹配范围将为变为两位,例如:0、100、200 等。当 match 术语设置为 \\\"whole-number\\\" 时,只有术语与要渲染的数字相同时,才会实现匹配。\",\"\\\"ordinal-10\\\" 到 \\\"ordinal-99\\\"- 默认地,当要渲染的数字的最后两位和术语中相同时,使用这个范围的术语。当 match 属性设置为 \\\"whole-number\\\" 时(默认为 \\\"last-two-digits\\\"),只有术语与要渲染的数字相同时,才会实现匹配。\",\"当渲染的数据对上面的两组都匹配时(比如:13 可以同时匹配 \\\"ordinal-03\\\" 和 \\\"ordinal-13\\\"),则使用 \\\"ordinal-10\\\" 到 \\\"ordinal-99\\\"。\",\"序数术语在 CSL 1.0.1 和 CSL 1.0 中表现时不同的。当样式和本地化文件中都没有定义 \\\"ordinal\\\" 术语,但是定义了 \\\"ordinal-00\\\" 到 \\\"ordinal-04\\\",原始的 CSL 1.0 的方案被使用,\\\"ordinal-01\\\" 用于以 1 结尾的数字(以 11 结尾的数字除外),\\\" ordinal-02\\\" 用于以 2 结尾的数字(以 12 结尾的数字除外),\\\"ordinal -03\\\" 表示以 3 结尾(那些以 13 结尾的除外),\\\"ordinal-04\\\" 表示所有其他数字。\"]},\"386\":{\"h\":\"性别特定序数\",\"t\":[\"一些语言使用特定的有别于性别的序数。例如,如果目标名词是男性,英语中的 \\\"1st\\\" 和 \\\"first\\\" 在法语中就翻译为 \\\"1er\\\" 和 \\\"premier\\\",如果目标名词是女性,就翻译为 \\\"1re\\\" 和 \\\"première\\\"。\",\"女性和男性在术语使用上的不同可以使用性别格式 gender-form 的属性来设置(分别设置为 feminine 和 masculine),详情见 Ordinals序数(没有性别的术语表示中性)。这里涉及到两类目标名词:a) 数字变量 附带的术语,b) 月份术语(见 Months/月)。在术语设置为 \\\"long\\\"(默认),并且在 gender 属性被设置时(设置为 \\\"feminine\\\" 和 \\\"masculine\\\"),这些名词即使用相应的性别变体。当数字变量以序数 \\\"ordinal\\\" 或者 long-ordinal 形式时,将使用相同性别的序数词,如果没定义女性或男性变体,则使用中性变体。当 \\\"day\\\" 日期部分以序数 \\\"ordinal\\\" 形式呈现时,序数性别和月的术语匹配。\",\"下面给出 1re éd.(\\\"1st ed.\\\")、\\\"1er janvier\\\"(\\\"January 1st\\\")和 \\\"3e édition\\\"(\\\"3rd edition\\\")的示例:\",\" édition éditions éd. janvier e re er \"]},\"387\":{\"h\":\"本地化日期格式\",\"t\":[\"在 cs:date 元素中,本地化数据格式有两种格式:一种是 \\\"numeric\\\"(例:12-15-2005),另外一种是 \\\"text\\\"(例:December 15,2005)。格式在 cs:date 元素中,使用 form 属性来设置。\",\"日期格式使用 cs:date-part 子元素来构建(见 Date-part)。当 cs:date-part 的 name 属性设置为 \\\"day\\\"、\\\"month\\\"、或 \\\"year\\\" 时,反应了日期显示的顺序为日、月河年。日期可以使用 cs:date 和 cs:date-part 元素中的 formatting 和 text-case 属性设置。cs:date 元素中的 delimiter 属性用来设置 cs:date-part 中不同部分的间隔,并且词缀也可以应用于 cs:date-part 元素。(译注:这里的词缀指的是前后的括号等等。)\",\"注:定义本地化日期格式时,不允许在 cs:date 上使用词缀。此限制适用于将特定于语言环境的词缀(在 cs:date-part 元素上设置)与任何特定于样式的词缀(在调用 cs:date 元素上设置)分开,例如括号:\",\" \"]},\"388\":{\"h\":\"本地化选项\",\"t\":[\"本地化选项有两个,limit-day-ordinals-to-day-1 和 punctuation-in-quote (见 Locale Options)。这些全局选项(同时影响引文和参考文献条目)在 cs:style-options 中被设置为可选属性。\"]},\"389\":{\"h\":\"命名空间\",\"t\":[\"[!Done] Namespacing\",\"CSL XML 命名空间 URI 是 http://purl.org/net/xbiblio/csl。\",\"在本规范中,当提及 CSL 元素时,命名空间前缀为 cs: ,但对于根元素 cs:style 或 cs:locale 的默认命名空间声明(用 xmlns 属性设置),通常省略 cs:。\"]},\"390\":{\"h\":\"渲染元素\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据,以及以何种方式排序,并对其格式进行控制。\"]},\"391\":{\"h\":\"Layout\",\"t\":[\"cs:layout 渲染元素是 cs:citation 元素和 cs:bibliography 元素的的必要子元素。cs:layout 必须包含一个或者多个渲染元素,并且可能携带 affixes 和 formattig 属性。在 cs:citation 元素中,delimiter 属性用来指定一个引文中的不同引用的间隔符。例如:一个 \\\"(1,2)\\\" 类型的引文可以使用下面的代码实现:\",\" \"]},\"392\":{\"h\":\"Text\",\"t\":[\"cs:text 渲染元素用来输出文字。其必须携带下面的属性来确定什么部分需要渲染:\",\"variable- 渲染一个变量的文本内容。属性值必须是 标准变量。可以与 form 属性一起选择变量的 \\\"long\\\"(默认)或 \\\"short\\\" 形式(例如:设置题目,完整题目或者简写)。如果选择了 \\\"short\\\" 形式,但是却没法获得,就使用 \\\"long\\\" 形式来渲染。\",\"macro - 渲染宏的文字输出。属性值必须和 cs:macro 元素的 name 属性的值相匹配。\",\"term - 渲染术语。属性必须是 [附录II 术语](#附录II 术语) 中的术语列表中的一个。通过设置复数属性 plura l 来这只其使用单数还是复数形式,其中 \\\"true\\\" 为默认,表示使用复数形式,设置为 \\\"false\\\" 表示使用单数形式。 使用 form 属性可以设置术语的形式,其值可以为 \\\"long\\\" (默认)、\\\"short\\\"、\\\"verb\\\"、\\\"verb-short\\\" 或者 \\\"symbol\\\" (见 术语).\",\"value - 渲染属性值自己。\",\"一个 cs:text 的渲染 title 变量的例子:\",\" \",\"cs:text 可能会携带 affixes,display,formatting,quotes,strip-periods 和 text-case 属性。\"]},\"393\":{\"h\":\"Date\",\"t\":[\"cs:date 渲染元素输出必须从 日期变量 列表中的选择。日期可以以本地化或者非本地化格式呈现。\",\"本地化的日期格式 通过可选的 form 属性来选择,其值必须设置为 \\\"numeric\\\"(完全的数字格式 ,例如:12-15-2005)或者 \\\"text\\\"(非数字的月份格式,例如: December 15, 2005)。本地化日期格式可以通过两种方式进行自定义。第一种:date-parts 属性可以用来设置不同的日期组成部分。其值可以设置为:\",\"\\\"year-month-day\\\" - 默认值,渲染年,月,日\",\"\\\"year-month\\\" - 渲染年月\",\"\\\"year\\\" - 只渲染年\",\"第二种,cs:date 可以含有一个或者多个 cs:date-part 子元素(见 Date-part)。在这些子元素中可以设置属性来覆盖之前的本地化设置(例如:要获得所有语言环境的缩写月份,可以将月份的 cs:date-part 元素的 form 属性设置为 \\\"short\\\")。这些 cs:date-part 子元素不影响各个日期部分渲染的顺序和以及其是否渲染。cs:date-part 元素中不能使用词缀 Affixes.\",\"没有属性 form 的情况下,cs:date 则描述了一个自带的非本地化的日期格式。其日期格式使用 cs:date-part 子元素来构建。在使用 name 属性并设置为 day,month 或 year 时,这些元素的顺序反应了其显示顺序。日期可以在 cs:date-part 元素中使用 formatting 属性以及多个 cs:date-part 的属性来格式化(见 Date-part)。cs:date 中的 delimiter 属性可以用来设置 cs:date-part 元素不同日期部分的分隔符,此外,词缀 可以用在 cs:date-part elements。\",\"本地化的日期或者是非本地化的日期,, cs:date 都可能携带 affixes,display,formatting 和 text-case 属性。\"]},\"394\":{\"h\":\"Date-part\",\"t\":[\"cs:date-part 元素用来控制日期的各个部分怎么渲染。除了其父元素 cs:date 调用了本地化日期格式,这些子元素同样可以决定哪些部分出现以及各部分的渲染顺序。cs:date-part 元素描述了 name 属性选择的日期部分,其 name 值可以是:\",\"\\\"day\\\"\",\"​ 对于 \\\"day\\\" 来说,cs:date-part 可能会携带 form 属性,值可以设置为:\",\"\\\"numeric\\\" - (默认),例如,每个月第一天显示为 1\",\"\\\"numeric-leading-zeros\\\" - 不够的位数用 0 补齐,例如,01\",\"\\\"ordinal\\\" - 使用序数形式,例如,1st\",\"有的语言种,比如法语,只在月份的第一天使用 \\\"oridinal\\\" 也就是序数形式(\\\"1er janvier\\\",\\\"2 janvier\\\",\\\"3 janvier\\\" 等)。这种输出可以通过 \\\"oridinal\\\" 以及 limit-day-oridinals-to-day-1 属性来设置 (see 本地化选项)。\",\"\\\"month\\\"\",\"​ 对于 \\\"month\\\" 来说,cs:date-part 可能会携带 strip-periods 和 form 属性。在 locale files 中,月份缩写应该后面要加点(例如: \\\"Jan.\\\", \\\"Feb.\\\")。点可以设置 strip-periods 为 \\\"true\\\" 去掉。form 属性可以设置为:\",\"\\\"long\\\" - 默认,例如:January\",\"\\\"short\\\" - 例如:Jan.\",\"\\\"numeric\\\" - 例如:1\",\"\\\"numeric-leading-zeros\\\" - 例如:01\",\"\\\"year\\\"\",\"​ 对 \\\"year\\\" 来说,cs:date-part 可能会携带 form 属性,值可以设置为:\",\"\\\"long\\\" - 默认,例如:2020\",\"\\\"short\\\" - 例如:20\",\"cs:date-part 也可能携带 formatting,text-case 和 range-delimiter 属性。除在 cs:date 元素中使用,其他情况下,cs:date-part 是可以使用词缀的。\"]},\"395\":{\"h\":\"Date Ranges\",\"t\":[\"默认的日期范围中的分隔符是短线(en-dash),比如:May–July 2008。可以在 cs:date-part 元素中通过 range-delimiter 属性来设置常用的分隔符。当日期范围被渲染的时候,范围分隔符从 cs:date-part 元素中提取,并且匹配两个日期差别中最大的部分(\\\"year\\\",\\\"month\\\",或 \\\"day\\\")。如下面的例子,将会渲染出类似 \\\"1-4 May 2008\\\", \\\"May–July 2008\\\" 和 \\\"May 2008/June 2009\\\" 的日期范围。\",\" \"]},\"396\":{\"h\":\"AD and BC\",\"t\":[\"\\\"ad\\\" 一词(Anno Domini)自动附加到小于四位数的正年份(例如,\\\"79\\\" 变为 \\\"79AD\\\")。\\\"bc\\\" 一词(Before Christ)自动附加到负年份(例如,\\\"-2500\\\" 变为 \\\"2500BC\\\")。\"]},\"397\":{\"h\":\"Seasons\",\"t\":[\"如果日期中包含了季节而不是月份,日期术语 (\\\"season-01\\\" 到 \\\"season-04\\\", 分别代表春夏秋冬) 将取代月份术语。比如,下面将会被渲染为 \\\"May 2008\\\" 和 \\\"Winter 2009\\\"。\",\" \"]},\"398\":{\"h\":\"Approximate Dates\",\"t\":[\"近似日期,在 is-uncertain-date 属性设置为 \\\"true\\\" 时即渲染(见 choose)。例如:下面的例子讲渲染出 2005(正常日期)和 ca.2003(近似日期)的结果。\",\" \"]},\"399\":{\"h\":\"Number\",\"t\":[\"cs:number 渲染元素输出 variable 属性选择的数字变量。数字变量 是 标准变量 的子集。\",\"使用 cs:number 元素来渲染数字变量时,如果只包含数字内容 (使用 is-numeric 属性设置,见 Choose),数字就被提取出来并渲染。变量内容包含非数字内容时,变量内容将呈现为原样。\",\"在提取的过程中,用连字符分隔的数字将去掉中间的空格(\\\"2 - 4\\\" 变为 \\\"2-4\\\")。用逗号分隔的数字在逗号后会添加一个空格,并删掉其余的空格 (\\\"2,3\\\" 和 \\\"2 , 3\\\" 变为 \\\"2, 3\\\")。当数字使用 & 分隔时,在前后各添加一个空格 (\\\"2&3\\\" 变为 \\\"2 & 3\\\")。\",\"提取的数字可以通过 form 属性行进格式化,其值可以设置为:\",\"\\\"numeric\\\" - 默认,例如: \\\"1\\\", \\\"2\\\", \\\"3\\\"\",\"\\\"ordinal\\\" - 序数数字,例如: \\\"1st\\\", \\\"2nd\\\", \\\"3rd\\\"。序数后缀可以使用术语定义 (见 序数后缀.\",\"\\\"long-ordinal\\\" - 长序数,例如: \\\"first\\\", \\\"second\\\", \\\"third\\\"。畅序数使用术语 \\\"long-ordinal-01\\\" 到 \\\"long-ordinal-10\\\" 定义, 用来在数字 1 到 10 使用。对于其他的数字,长序数渲染的结果讲和序数相同.\",\"\\\"roman\\\" - 罗马数字,例如:\\\"i\\\", \\\"ii\\\", \\\"iii\\\"\",\"带有前缀或者后缀的数字不能使用罗马数字进行排序或者渲染(例如:\\\"2E\\\" 仍然时 \\\"2E\\\")。没有词缀的数字可以被分别转换(\\\"2, 3\\\" 可以转换为 \\\"2nd, 3rd\\\", \\\"second, third\\\" 或者 \\\"ii, iii\\\")。\",\"cs:number 元素可能会携带 affixes,display,formatting 和 text-case 属性。\"]},\"400\":{\"h\":\"Names\",\"t\":[\"cs:names 元素用来输出一个或多个 名字变量(或名称变量)的内容(通过必选属性 variable 来选择),每个 names 元素可以包含一个或者多个名称变量(例如:\\\"author\\\" 名称变量会携带引用项中所有的作者名称)。如果选择了多个变量,每个变量将会按顺序单独渲染,但当选择中包括编辑和翻译(\\\"editor\\\" 和 \\\"translator\\\")不适用。当包含的内容中有两个名字变量相同时,则只渲染一个。另外,如果 cs:names 元素中包含 cs:label 元素,\\\"editortranslator\\\" 将用来代替 \\\"editor\\\" 和 \\\"translator\\\"(例如:Doe(editor & tranlator))。cs:names 元素中的 delimiter 属性可以用来分割不同的名字变量(例如:Doe, Smith (editors); Johnson (translator) 中间使用了分号隔开)。\",\" \",\"cs:names 有四个子元素:cs:name,cs:et-al,cs:substitute 和 cs:label。 cs:names 元素可能会携带 affixes, display 和 formatting 属性。\"]},\"401\":{\"h\":\"Name\",\"t\":[\"cs:name 元素的一个可选的子元素 cs:names 可以用来描述单个 names 的格式,以及名称变量中不同 names 的分隔。cs:name 可能携带下面的属性:\",\"and\",\"​ 在名称变量中用来设置倒数第二个名字和倒数第一个名字的分隔符。可选的值为 \\\"text\\\"(\\\"Doe, Johnson and Smith\\\") 或者 \\\"symbol\\\"(eg: \\\"Doe, Johnson & Smith\\\")。\",\"delimiter\",\"​ 在名称变量中设置字符串来分隔名称。默认的是 \\\",\\\"(e.g. \\\"Doe, Smith\\\")。\",\"delimiter-precedes-et-al\",\"​ 确定在使用 et-al 缩写的情况下,在截断的姓名列表和 et-al 术语之间何时使用分隔符或者空格。该属性可选的值有:\",\"\\\"contextual\\\" - (default), 在作者列表中有 2 个及以上的人时使用 \",\"1 name: \\\"J. Doe et al.\\\"\",\"2 names: \\\"J. Doe, S. Smith, et al.\\\" 两个人,则在最后一个人名和 et-al 间使用 , 分隔\",\"\\\"after-inverted-name\\\" - 在 name-as-sort-order 属性使当前的名字发生了颠倒时使用。例如:当 name-as-sort-order 属性设置为 \\\"first\\\" 时,第一个名字的前后部分 Doe 和 J 发生了反转,因此在第一个名字后面使用了分隔符 ,\",\"\\\"Doe, J., et al.\\\"\",\"\\\"Doe, J., S. Smith et al.\\\"\",\"\\\"always\\\" - 不论几个名字或者怎样的设置,总是使用 \",\"1 name: \\\"J. Doe, et al.\\\"\",\"2 names: \\\"J. Doe, S. Smith, et al.\\\"\",\"\\\"never\\\" - 禁止使用分隔符,不论几个名字。 \",\"1 name: \\\"J. Doe et al.\\\"\",\"2 names: \\\"J. Doe, S. Smith et al.\\\"\",\"delimiter-precedes-last\",\"在名字列表中确定何时使用分隔符来分割最后一个作者和倒数第二个作者。如果 and 没有被设置,则不论 delimiter-precedes-last 属性的值,名字分隔符总是使用。\",\"\\\"contextual\\\" - 默认,当名字列表中的名字有 3 个或以上时使用。下面在使用 3 个名字时,在 and 前使用了分隔符 ,\",\"2 个名字: \\\"J. Doe and T. Williams\\\"\",\"3 个名字: \\\"J. Doe, S. Smith, and T. Williams\\\"\",\"\\\"after-inverted-name\\\" - 在 name-as-sort-order 属性使当前的名字发生了颠倒时使用。例如:当 name-as-sort-order 属性设置为 \\\"first\\\" 时,仅在第一个名字后使用了分隔符 ,\",\"\\\"Doe, J., and T. Williams\\\"\",\"\\\"Doe, J., S. Smith and T. Williams\\\"\",\"\\\"always\\\" - 分隔符一直使用。 \",\"2 names: \\\"J. Doe, and T. Williams\\\"\",\"3 names: \\\"J. Doe, S. Smith, and T. Williams\\\"\",\"\\\"never\\\" - 禁用分隔符 \",\"2 names: \\\"J. Doe and T. Williams\\\"\",\"3 names: \\\"J. Doe, S. Smith and T. Williams\\\"\",\"et-al-min/et-al-use-first\",\"通过设置这两个属性,可是使用 et-al 对名字列表进行缩写。如果名字变量中的名字的数目超过了 et-al-min 属性设置的值,则达到 et-al-use-first 设置的名称数量后,渲染的名字列表将被截断。\\\"et-al\\\"(或者 \\\"and others\\\")术语用来添加到截断列表的后面(见 et-al)。默认地,当名字列表被截断到单个名字,则名字和 \\\"et-al\\\" 术语之间使用空格进行隔开(例如:Doe et al.)。当一个名字列表被截断到两个或者三个名字,则使用分隔符(例如:Doe, Smith, et al.)。这些行为可以使用 delimiter-precedes-et-al 属性来设置。\",\"et-al-subsequent-min/st-al-subsequent-use-first\",\"如果使用了这两个属性,则属性的值分别替换 et-al-min 和 et-al-use-first 的值以便后续引用。\",\"et-al-use-last\",\"当该属性设置为 \\\"true\\\" 时,(默认为 \\\"false\\\"),则使用下面的格式:截断的名称列表,分隔符,省略号,名称列表最后一个名字。这个属性只能在名称列表有多余两个的名称时使用。例:\",\"A. Goffeau, B. G. Barrell, H. Bussey, R. W. Davis, B. Dujon, H. Feldmann, … S. G. Oliver \",\"下面讨论的属性将只会影响单个人的名字,这里先给出名字的组成部分。单个人的名字必须含有 \\\"family\\\" 部分,还可以含有 \\\"given\\\",\\\"suffix\\\",\\\"non-dropping-particle\\\",和 \\\"dropping particle\\\" 等部分。下面对这些部分分别进行解释:\",\"\\\"family\\\" - 姓氏,必须去掉 particle(译注:暂译为粒子)和后缀\",\"\\\"given\\\" - 全名 \\\"John Edward\\\" 或者 J. E.\",\"\\\"suffix\\\" - 名字后缀,比如:外国人常用的 Jr 或者罗马数字(经常翻译为 xx 世,比如伊丽莎白二世) \\\"Jr.\\\" in \\\"John Smith Jr.\\\" 或者 \\\"III\\\" in \\\"Bill Gates III\\\"\",\"\\\"non-dropping-particle\\\" - 不可删除(省略)的粒子。当只显示姓氏的时候,不能省略 (\\\"de\\\" in the Dutch surname \\\"de Koning\\\") ,但是可能会在姓氏中分别对待,比如在排序的时候\",\"\\\"dropping-particle\\\" - 可删除的粒子。当只显示姓氏的是欧,可以省略 (\\\"van\\\" in \\\"Ludwig van Beethoven\\\", which becomes \\\"Beethoven\\\")\",\"下面的属性将会影响单个人的名称的渲染:\",\"form\",\"指定是否显示名字的所有部分(默认为 \\\"long\\\"),或者只显示姓氏和不可省略粒子(值为 \\\"short\\\")。除这两种情况外,还可以设置为 \\\"count\\\",返回使用 cs:names 元素渲染的部分的总数(考虑 et-al 缩写和编辑/翻译等折叠的影响)。\",\"initialize\",\"当该属性设置为 \\\"false 时(默认的结果为 \\\"true\\\"),并且 \\\"initialize-with\\\" 属性被设置时,全名将不使用缩写。但是,如果在全名中有单独的大写字母的时候,仍然会添加 ``\\\"initialize-with\\\"的值。例如:当initialize设置为\\\"false\\\",并且 initialize-with设置为\\\".\\\"` 时,James T kirk 将会变为 James T. Kirk。\",\"initialize-with\",\"当该实行被设置时,全名将会使用缩写。该属性将会在每个首字母后添加属性值,比如:上述的名字会变为 J.J. Doe。对于合成的全名,例如:Jean-luc,可以使用全局的带有连字符的 initialize-with-hyphen 属性来设置其缩写形式(见 人名中的连字符)。\",\"name-as-sort-order\",\"指定名字的显示顺序为:姓,然后是名,例如:John Doe 变为 Doe,John。该属性值可以设置为:\",\"\\\"first\\\" - 属性只影响名字变量中的第一个名字\",\"\\\"all\\\" - 属性将会影响所有的名字\",\"注意:即使 name-as-sort-order 改变了名字内部的顺序,最终显示的顺序不一定与包含粒子和后缀的名字的相同(见 名字内部顺序)。name-as-sort-order 只影响以拉丁字母或者西里尔字母书写的名字。其他字母书写的名字(比如,亚洲的大部分名字)总是将全名中的姓显示在前面。\",\"sort-separator\",\"设置名字的不同部分由于 name-as-sort-order 属性导致的内部位置变换后的分隔符。默认值为 \\\",\\\"(Doe, John)。和 name-as-sort-order 属性相同,该属性只适用于拉丁字母和西里尔字母的名字。\",\"cs:name 元素也可以携带 词缀 和 格式化。\"]},\"402\":{\"h\":\"名字内部顺序\",\"t\":[\"名字内部各部分的顺序取决于 cs:name 元素中 form 和 name-as-sort-order 属性和 cs:style 元素中的 demote-non-droping-particle 属性的设置。名称各部分的显示和排序的属性通常是不同的。下面将对名字顺序进行简单的介绍:\",\"拉丁/西里尔名字的显示顺序\",\"条件:form 属性设置为 \\\"long\\\"\",\"顺序:1. 名 2. 可省略粒子 3. 不可省略粒子 4. 姓 5. 后缀\",\"示例:Jean de La Fontaine III\",\"条件:form 属性设置为 \\\"long\\\",name-as-sort-order 属性激活,demote-non-dropping-particle 属性设置为 \\\"never\\\" 或者 \\\"sort-only\\\"\",\"顺序:1. 不可省略粒子 2. 姓 3. 名 4. 可省略粒子 5. 后缀\",\"示例:La Fontaine, Jean de, III\",\"条件:form 属性设置为 \\\"long\\\",name-as-sort-order 属性激活,demote-non-dropping-particle 属性设置为 \\\"display-and-sort\\\"\",\"顺序:1. 姓 2. 名 3. 可省略粒子 4. 不可省略粒子 5. 后缀\",\"示例:Fontaine, Jean de La III\",\"条件:form 属性设置为 \\\"short\\\"\",\"顺序:1. 不可省略粒子 2. 姓\",\"示例:La Fontaine\",\"拉丁/西里尔名字的排序顺序\",\"条件:demote-non-dropping-particle 属性设置为 \\\"never\\\"\",\"顺序:1. 不可省略粒子 + 姓 2. 可省略粒子 3. 名 4. 后缀\",\"示例:La Fontaine de Jean III\",\"条件:demote-non-dropping-particle 属性设置为 \\\"sort-only\\\" 或者 \\\"display-and-sort\\\"\",\"顺序:1. 姓 2. 可省略粒子 + 不可省略粒子 3. 名 4. 后缀\",\"示例:Fontaine de La Jean III\",\"非拉丁和非西里尔名字的显示和排序顺序\",\"条件:form 属性设置为 \\\"long\\\"\",\"顺序:1. 姓 2. 名\",\"示例:张三 或者 Zhang San\",\"条件:form 属性设置为 \\\"short\\\"\",\"顺序:1. 姓\",\"示例:张 或者 Zhang\"]},\"403\":{\"h\":\"名字格式化\",\"t\":[\"cs:name 元素可能会携带一个或者两个 cs:name-part 子元素来对名字的小部分进行特定的格式化。cs:name-part 必须携带 name 属性,设置为 \\\"given\\\" 或者 \\\"family\\\"。\",\"如果设置为 \\\"given\\\",cs:name-part 元素的 格式化 和 文字大小写 属性会影响 \\\"given\\\" 和 \\\"dropping-particle\\\" 部分。词缀 出现在 \\\"given\\\" 左右,将该部分扩起来。\",\"如果设置为 \\\"family\\\",cs:name-part 元素的 格式化 和 文字大小写 属性会影响 \\\"given\\\" 和 \\\"non-dropping-particle\\\" 部分。词缀 出现在 \\\"family\\\" 左右,将该部分扩起来。\",\"\\\"suffix\\\" 部分不受 name-part 部分格式限制。cs:name-part 元素不影响 name-part 渲染的顺序。下面的代码,将产生类似 Jane DOE 的效果:\",\" \"]},\"404\":{\"h\":\"Et-al\",\"t\":[\"Et-al 缩写通过 et-al-... 属性来控制(见 Name),同时也可以使用可选的 cs:et-al 元素设置,cs:et-al 元素必须放在 cs:name 元素后。term 属性可以被设置为 \\\"et-al\\\"(默认)或者 \\\"and others\\\"。格式化 属性可以用来设置 et-al 的格式,下面是 \\\"et-al\\\" 术语的一个例子:\",\" \"]},\"405\":{\"h\":\"Substitute\",\"t\":[\"可选的 cs:substitute 元素,是 cs:names 的子元素,且必须是最后一个子元素,在父元素 cs:names 中指定的 名称变量 为空时添加替换。替换必须放在 cs:substitute 元素中,并且必须包含一个或者多个渲染元素(除 cs:layout)。cs:names 的简洁版本没有子元素,继承了 cs:names 元素中在 cs:name 和 cs:et-al 子元素的属性值。如果 cs:substitute 元素包含了多个子元素,第一个非空的元素用于替换。替换变量在输出的其余部分被抑制,以防止重复。下面的例子中:\\\"author\\\" 名称变量为空时,就被 \\\"editor\\\" 名称变量替换,在没有 editor 时,则使用 \\\"title\\\" 宏替换。\",\" \"]},\"406\":{\"h\":\"Label in cs:names\",\"t\":[\"cs:label 元素是可选的(见 Label),而且必须位于 cs:name 和 cs:et-al 元素后,在 cs:substitute 元素前。当 cs:label 作为 cs:names 元素的子元素时,cs:label 不能携带 variable 属性,而是使用父元素 cs:names 中的变量。第二个区别是:form 属性可以设置为 \\\"verb\\\" 或者 \\\"verb-short\\\",其所有允许的值为:\",\"\\\"long\\\" - (默认), 例如, \\\"editor\\\" 术语渲染为 \\\"editor\\\" 和 \\\"editors\\\"\",\"\\\"short\\\" - 例如,\\\"editor\\\" 术语渲染为 \\\"ed.\\\" 和 \\\"eds\\\"\",\"\\\"verb\\\" - 例如,\\\"editor\\\" 术语渲染为 \\\"edited by\\\"\",\"\\\"verb-short\\\" - 例如,\\\"editor\\\" 术语渲染为 \\\"ed.\\\"\",\"\\\"symbol\\\" - 例如,\\\"section\\\" 术语渲染为 \\\"§\\\" 和 \\\"§§\\\"\"]},\"407\":{\"h\":\"Label\",\"t\":[\"cs:label 渲染元素输出与所选变量匹配的术语,该属性必须设置为 \\\"locator\\\"、\\\"page\\\" 或数字变量之一。只有当选择的变量是非空的时候,术语才会渲染。例如:\",\" \",\"可以生成 \\\"page 3\\\" 或者 \\\"pages 5-7\\\"。cs:label 可能会携带下面的属性:\",\"form\",\"​ 选择术语的形式,可以设置为下面的值:\",\"\\\"long\\\" - (默认), 例如: \\\"page\\\" 术语渲染为 \\\"page\\\"/\\\"pages\\\"\",\"\\\"short\\\" - 例如: \\\"page\\\" 术语渲染为 \\\"p.\\\"/\\\"pp.\\\"\",\"\\\"symbol\\\" - 例如: \\\"section\\\" 术语渲染为 \\\"§\\\"/\\\"§§\\\"\",\"plural\",\"​ 设置术语的复数形式,可以使用下面的值:\",\"\\\"contextual\\\" - (默认),复数形式的渲染和具体的内容相匹配。当内容中包含多个数字时,使用复数形式。如下面的渲染结果:\\\"page 1\\\",\\\"pages 1-3\\\",\\\"volume 2\\\",\\\"volumes 2 & 4\\\"。或者在使用 number-of-pages 和 number-of-volumes 时,数字大于 1,例如: (\\\"1 volume\\\" 和 \\\"3 volumes\\\"。\",\"\\\"always\\\" - 总是使用复数形式,不管具体的内容如何。例如:\\\"pages 1\\\" 和 \\\"pages 1-3\\\"\",\"\\\"never\\\" - 禁止使用复数形式,不管具体内容: \\\"page 1\\\" 和 \\\"page 1-3\\\"\",\"cs:label 也可能会携带 affixes, formatting, text-case 和 strip-periods 属性。\"]},\"408\":{\"h\":\"Group\",\"t\":[\"cs:group 元素必须包含一个或者多个渲染元素(除了 cs:layout)。cs:group 可以携带 delimiter 属性来分隔子元素以及 affixes、display 和 formatting 属性。cs:group 隐含的条件,当以下情况出现时,cs:group 和它的子元素将会被抑制:a) 在 cs:group 中至少一个渲染元素调用了变量(直接地或者通过宏调用),b) 所有被调用得变量都为空。\",\" \",\"上述代码可以生成 \\\"retrieved from http://dx.doi.org/10.1128/AEM.02591-07\\\" 类似得结果,但是当 URL 为空的时候,不生成结果。\"]},\"409\":{\"h\":\"Choose\",\"t\":[\"cs:choose 元素允许有条件的渲染元素。下面的例子的意思为:在 \\\"issud\\\" 日期变量存在的情况下,就实施渲染,如果不存在,就给出 \\\"no date\\\" 术语:\",\" \",\"cs:choose 元素中必须还有 cs:if 子元素,后面还可以有一个或者多个 cs:else-if 子元素以及一个可选的用来结尾的 cs:else 元素。cs:if 和 cs:else-if 元素可能回包含任意个除 cs:layout 的渲染元素。由于空的 cs:else 元素是多余的,所以 cs:else 元素必须至少包含一个渲染元素。cs:if 和 cs:else-if 元素必须含有一个或多个判断条件,这些条件可以使用下买的属性设置:\",\"disambiguate\",\"​ 当改属性设置为 \\\"true\\\"(唯一允许的值) 的时候,在元素内容消除了两个相同的引用时渲染。当所有其他消除歧义的方法都不能识别唯一的目标时,才进行消除歧义的尝试。\",\"is-numeric\",\"​ 测试给定的变量([附录 IV 变量](#附录IV 变量))是不是包含数字部分。如果内容仅由数字构成,则识别为数字。数字可以带有前缀、后缀(\\\"D2\\\",\\\"2b\\\",\\\"L2d\\\")、并且可能被逗号,连字符或 & 分隔(\\\"2, 3\\\",\\\"2-4\\\",\\\"2 & 4\\\")。 例如, \\\"2nd\\\" 被识别为 \\\"true\\\" ,但 \\\"second\\\" 和 \\\"2nd edition\\\" 被识别为 \\\"false\\\".\",\"is-uncertain-date\",\"​ 判断给定的 日期变量 是不是包含 [近似日期](#Approximate Dates)。\",\"locator\",\"​ 判断位置是不是和给定的位置符合。这里的位置主要是在一个文档中的位置,比如,题目,第几段。使用 \\\"sub-verbo\\\" 判断是不是 \\\"sub-verbo\\\" 类型\",\"position\",\"​ 判断引用的位置湿否和给定的位置匹配。当在 cs:bibliography 中调用时,position 的结果为 \\\"false\\\"。位置可以使用下面的选项测试:\",\"\\\"first\\\": 第一个引用项的位置\",\"\\\"ibid\\\"/\\\"ibid-with-locator\\\"/\\\"subsequent\\\": 引用先前引用的项目的引用,Such cites may also have the \\\"ibid\\\" or \\\"ibid-with-locator\\\" position when:\",\"the current cite immediately follows on another cite, within the same citation, that references the same item\",\"or\",\"the current cite is the first cite in the citation, and the previous citation consists of a single cite referencing the same item\",\"If either requirement is met, the presence of locators determines which position is assigned:\",\"Preceding cite does not have a locator: if the current cite has a locator, the position of the current cite is \\\"ibid-with-locator\\\". Otherwise the position is \\\"ibid\\\".\",\"Preceding cite does have a locator: if the current cite has the same locator, the position of the current cite is \\\"ibid\\\". If the locator differs the position is \\\"ibid-with-locator\\\". If the current cite lacks a locator its only position is \\\"subsequent\\\".\",\"\\\"near-note\\\": position of a cite following another cite referencing the same item. Both cites have to be located in foot or endnotes, and the distance between both cites may not exceed the maximum distance (measured in number of foot or endnotes) set with the near-note-distance option (see Note Distance).\",\"Whenever position=\\\"ibid-with-locator\\\" tests true, position=\\\"ibid\\\" also tests true. And whenever position=\\\"ibid\\\" or position=\\\"near-note\\\" test true, position=\\\"subsequent\\\" also tests true.\",\"type\",\"​ 测试项目是不是和给定的类型匹配([附录 III 类型](#附录 III 类型))。这里的类型指条目的类型,例如,书,期刊文献,学位论文。\",\"variable\",\"​ 测试给定变量([附录 IV 变量](#附录IV 变量))的默认的形式 (long) 是不是为空。\",\"除了 disambiguate 外,所有的条件都允许有多个测试值,多个测试值使用空格分隔(\\\"book thesis\\\")。\",\"cs:if 元素和 cs:else-if 元素可能会携带 match 属性用来控制判断的逻辑,match 可设置的值为:\",\"\\\"all\\\" - 默认,仅当所有给定测试值都为 true 的时候结果才为 true\",\"\\\"any\\\" - 当任意一个值为 true 的时候,结果就为 true\",\"\\\"none\\\" - 当没有值测试为 true 的时候,结果为 true\"]},\"410\":{\"h\":\"样式的行为\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\"]},\"411\":{\"h\":\"选项\",\"t\":[\"样式可以使用不同的元素来进行特定的配置。在 cs:citation 元素中设置元素可以配置特定的 引文选项;在 cs:bibliography 元素和 全局选项(同时影响引文和参考文献条目)中,可以配置特定的参考文献条目。继承的名字选项可以在 cs:style,cs:style 和 cs:bibliography 中设置。最后,本地化选项 可以在 cs:locale 元素中设置。\"]},\"412\":{\"h\":\"引文选项\"},\"413\":{\"h\":\"消除歧义\",\"t\":[\"当一个引用对应多个参考文献条目的时候会产生歧义。下面有四种方法用来消除歧义:\",\"显示更多作者姓名\",\"扩展姓名(添加缩写或者完整的名)\",\"添加年份后缀\",\"在 cs:choose 的 disambiguate 属性为 true 的时候,实行渲染\",\"方法 2 也可以在全局名称歧义消除异己整个文档中有歧义的地方。\",\"消除歧义的方法在下面属性被设置的时候,将会被激活,并且按上述列表中的方法进行尝试:\",\"disambiguate-add-names 步骤 1\",\"​ 如果设置为 \\\"true\\\"(默认为 false),使用 et-al 缩写锁代替的名字列表会逐个的加入到渲染列表中,知道添加的名字可以消除引用歧义为止。\",\"disambiguate-add-givenname 步骤 2\",\"​ 如果设置为 \\\"true\\\"(默认为 false),产生歧义的名字将被扩展。名字扩展可以使用 givenname-disambiguation-rule 设置。下面是一个例子。\",\"含有歧义的引用\",\"消除歧义的引用\",\"(Simpson 2005; Simpson 2005)\",\"(H. Simpson 2005; B. Simpson 2005)\",\"(Doe 1950; Doe 1950)\",\"(John Doe 1950; Jane Doe 1950)\",\"如果不能通过扩展名字来实现消除歧义,当 disambiguate-add-names 属性设置为 \\\"true\\\", the names still hidden as a result of et-al abbreviation after the disambiguation attempt of disambiguate-add-names are added one by one to all members of a set of ambiguous cites, until no more cites in the set can be disambiguated by adding expanded names.\",\"givenname-disambiguation-rule\",\"用来指定 a) 名字扩展的目的是不是仅限于消除歧义,还是对消除歧义的名字有其他的目的 (只有在后面的情况中,有歧义的名字才会在明确的引用中扩展,例如:从 (Doe 1950; Doe 2000) 扩展到 (Jane Doe 1950; John Doe 2000)) b) 名称扩展是针对全部还是针对每个引用的名字 c) 扩展名字的方法。\",\"扩展单个名字\",\"​ 扩展单个名字的步骤是:\",\"如果 initialize-with 被设置并且 initialize 的值为默认的 true: (a) 可以通过 \\\"long\\\" 而不是 \\\"short\\\" 的形式来渲染首字母 (e.g. Doe 变为 J. Doe) (b) 如果 initialize 设置为 \\\"flase\\\",完整的姓名被渲染,而不是首字母(J. Doe 变为 John Doe)\",\"如果 initialize-with 没有被设置,使用 \\\"long\\\" 格式渲染完整的姓名(Doe 变为 John Doe)\",\"消除歧义法则\",\"​ givenname-disambiguation-rule 属性可设置的值为:\",\"​ \\\"all-name\\\"\",\"​ 名字扩展具有消除名字歧义和消除引用歧义的双重目的。在渲染的有歧义的名称中,所有的有歧义的或者没有歧义的名字都将被消除歧义。\",\"​ \\\"all-names-with-initials\\\"\",\"​ 和 \\\"all-name\\\" 一样,但是名称的扩展仅限于缩写。当 initialize-with 没被设置或者 initialize 被设置为 \\\"false\\\" 时,不会进行消除歧义的尝试。\",\"​ \\\"primary-name\\\"\",\"​ 和 \\\"all-name\\\" 一样,但是消除歧义仅限于每个引用的第一个名字。\",\"​ \\\"primary-name-with-initials\\\"\",\"​ 和 \\\"all-names-with-initials\\\" 一样,但是消除歧义仅限于每个引用的第一个名字。\",\"​ \\\"by-cite\\\"\",\"​ 默认,和 \\\"all-name\\\" 一样,但是名称扩展的目的仅限于消除引用的歧义,只有有歧义的名字在有歧义的引用中才会被影响,并且在引用的第一个名字消除歧义后就停止消除歧义。\",\"disambiguate-add-year-suffix 步骤 3\",\"如果设置为 \\\"true\\\"(默认为 \\\"false\\\"),字母序的年后缀将会被添加到有歧义的名字上(\\\"Doe 2007, Doe 2007\\\" 变为 \\\"Doe 2007a, Doe 2007b\\\")。当字母序到达 \\\"z\\\",后,就会启用两个字母(\\\"z\\\", \\\"aa\\\", \\\"ab\\\", …, \\\"az\\\", \\\"ba\\\" 等等)。\",\"如果应用上述的歧义消除方法后仍然存在歧义,则尝试通过 disambiguate 条件来渲染不同的引用 [步骤 4] (见 choose)。\"]},\"414\":{\"h\":\"引用分组\",\"t\":[\"通过引用分组,可以将相同名称的文本引用放在一起,比如:(Doe 1999; Smith 2002; Doe 2006; Doe et al. 2007) 将会变为 (Doe 1999; Doe 2006; Smith 2002; Doe et al. 2007)。引用分组在引用排序和消除歧义后执行。分组后的引用保持其相对顺序,并移到第一个改组中引用出现的第一个位置。\",\"引用分组可以在 cs:citation 元素中通过设置 cite-group-delimiter 属性或者 collapse 属性(见 [cite collapsing](#cite collapsing))激活。\",\"cite-group-delimiter\",\"激活引用分组并为引用组中的引用指定分隔符,默认为 \\\",\\\"。例如,当 cs:citation 元素中的 cs:layout 中的 delimiter 设置为 \\\";\\\" 时,collapse 设置为 \\\"year\\\",cite-group-delimiter 设置为 \\\",\\\",将生成类似 \\\"(Doe 1999,2001; Jones 2000)\\\" 的引用。\"]},\"415\":{\"h\":\"cite collapsing/引用折叠\",\"t\":[\"author 或者 author-date 类型的引用格式中的引用分组和数字格式中的引用范围可以通过 collapse 属性来折叠。折叠引用组中分隔符可以是使用 year-suffix-delimiter 和 after-collapse-delimiter 属性来设置:\",\"collapse\",\"激活引用分组和折叠。允许的值为:\",\"\\\"citation-number\\\" - 当使用数字样式的时候,折叠引用数字的范围(通过 \\\"citation-number\\\" 变量来渲染) ,例如:\\\"[1, 2, 3, 5]\\\" 变为 \\\"[1–3, 5]\\\"。只有升序的引用才可以折叠,比如: \\\"[3, 2, 1]\\\" 将不会折叠。\",\"\\\"year\\\" - 通过压缩相同的名字来折叠引用分组,例如: \\\"(Doe 2000, Doe 2001)\\\" 变为 \\\"(Doe 2000, 2001)\\\"。\",\"\\\"year-suffix\\\" - 对名字相同的折叠项,折叠相同的年份,例如: \\\"(Doe 2000a, 2000b)\\\" 变为 \\\"(Doe 2000a, b)\\\"。\",\"\\\"year-suffix-ranged\\\" - 对名字相同的折叠项,折叠年份范围,例如: \\\"(Doe 2000a, b, c, e)\\\" 变为 \\\"(Doe 2000a–c,e)\\\"。\",\"当 disambiguate-add-year-suffix 设置为 \\\"false\\\" 时,或者引用中包含位置(例如:“(Doe 2000a-c, 2000d, p. 5, 2000e,f)”,\\\"Doe 2000d\\\" 有一个页码位置),\\\"year-suffix\\\" 和 \\\"year-suffix-ranged\\\" 回退到 \\\"year\\\"。\",\"year-suffix-delimiter\",\"​ 设置年份后缀的分隔符。默认在 cs:citation 元素的 cs:layout 中设置。例如:当 collapse 设置为 \\\"year-suffix\\\",cs:citation 中的 cs:layout 的 delimiter 元素设置为 \\\";\\\",并且 year-suffix-delimiter 设置为 \\\",\\\" 时,渲染结果将类似于 \\\"(Doe 1999a,b; Jones 2000)\\\"。\",\"after-collapse-delimiter\",\"​ 设置折叠后的引用组要使用的分隔符。默认在 cs:citation 元素的 cs:layout 中设置。例如:当 collapse 设置为 \\\"year\\\",cs:citation 中的 cs:layout 的 delimiter 元素设置为 \\\",\\\",并且 after-collapse-delimiter 设置为 \\\";\\\" 时,渲染结果将类似于 \\\"(Doe 1999, 2001; Jones 2000, Brown 2001)\\\"。\"]},\"416\":{\"h\":\"标注距离\",\"t\":[\"near-note-distance\",\"当有一个预先的标注时,\\\"near-note\\\" 位置是我引用被判断为真,这种预先的标注可以为 a) 指向同一个项目 b) 当前注视以前的脚注或尾注。(译注:不知道讲了什么)\"]},\"417\":{\"h\":\"参考文献目录选项\"},\"418\":{\"h\":\"空白\",\"t\":[\"hanging-indent\",\"​ 如果设置为 \\\"true\\\"(默认为 \\\"false\\\"),参考文献列表将采用悬挂缩进渲染。\",\"second-field-align\",\"​ 如果该属性被设置,则书目条目的后续行沿第二字段对齐。 使用 \\\"flush\\\" 时,第一个字段与边距齐平。 对于 \\\"margin\\\",第一个字段放在 margin 中,随后的行与 margin 对齐。例如,当第一个字段设置为 \",\"9. Adams, D. (2002). The Ultimate Hitchhiker's Guide to the Galaxy (1st ed.). 10. Asimov, I. (1951). Foundation. \",\"line-spacing\",\"​ 指定垂直方向的行距。默认值为 \\\"1\\\",即单倍行距。可以被设置为任意正整数,用来表示对应倍数的行距。\",\"entry-spacing\",\"​ 指定不同条目垂直方向的距离,默认值为 \\\"1\\\",即一倍距离,可以被设置为任意正整数,用来表示对应倍数的距离。\"]},\"419\":{\"h\":\"参考文献分组\",\"t\":[\"subsequent-author-substitute\",\"​ 如果该属性被设置,则此属性将用上一条条目中的名称替换参考文献条目中的名字。具体的代替方案取决于 subsequent-author-substitute-rule 属性的值。替换仅限于 cs:names 元素中渲染的第一个名字。\",\"subsequent-author-substitute-rule\",\"​ 用来指定 subsequent-author-substitute 的结果怎么替换。允许的值为:\",\"\\\"complete-all\\\" - 默认值,当名字变量中的所有渲染的名字和上一个参考文献条目相同时,subsequent-author-substitute 属性的值将代替整个名字列表(包括标点和术语,比如 et-al 和 and 等术语),但 cs:names 元素中设置的后缀将不会被代替。\",\"\\\"complete-each\\\" - 和 \\\"complete-all\\\" 一样,需要完整的匹配,但是 subsequent-author-substitute 属性的值将会代替所有被渲染的名字。\",\"\\\"partial-each\\\" - 当有一个或者多个名字变量中的渲染名字和上一个条目中相同时,使用 subsequent-author-substitute 属性代替对应的值。匹配从第一个名字开始,直到不匹配的名字为止。\",\"\\\"partial-first\\\" - 和 \\\"partial-each\\\" 相同,但是替换仅限于第一个名字。\",\"对下面的例子:\",\"Doe. 1999. Doe. 2000. Doe, Johnson & Williams. 2001. Doe & Smith. 2002. Doe, Stevens & Miller. 2003. Doe, Stevens & Miller. 2004. Doe, Williams et al. 2005. Doe, Williams et al. 2006. \",\"当 subsequent-author-substitute 设置为 \\\"-\\\",并且 subsequent-author-substitute-rule 设置为 \\\"complete-all\\\",渲染结果将变为:\",\"Doe. 1999. ---. 2000. Doe, Johnson & Williams. 2001. Doe & Smith. 2002. Doe, Stevens & Miller. 2003. ---. 2004. Doe, Williams et al. 2005. ---. 2005. \",\"当 subsequent-author-substitute-rule 设置为 \\\"complete-each\\\" 时,渲染的结果为:\",\"Doe. 1999. ---. 2000. Doe, Johnson & Williams. 2001. Doe & Smith. 2002. Doe, Stevens & Miller. 2003. ---, --- & ---. 2004. Doe, Williams et al. 2005. ---, --- et al. 2006. \",\"当 subsequent-author-substitute-rule 设置为 \\\"partial-each\\\" 时,渲染的结果为:\",\"Doe. 1999. ---. 2000. Doe, Johnson & Williams. 2001. --- & Smith. 2002. Doe, Stevens & Miller. 2003. ---, --- & ---. 2004. Doe, Williams et al. 2005. ---, --- et al. 2005. \",\"当 subsequent-author-substitute-rule 设置为 \\\"partial-first\\\" 时,渲染的结果为:\",\"Doe. 1999. ---. 2000. Doe, Johnson & Williams. 2001. --- & Smith. 2002. Doe, Stevens & Miller. 2003. ---, Stevens & Miller. 2004. Doe, Williams et al. 2005. ---, Williams et al. 2005. \"]},\"420\":{\"h\":\"全局选项\",\"t\":[\"人名中的连字符\",\"initialize-with-hyphen\",\"​ 该属性用来制定合成名字中间是不是使用连字符。例如,\\\"Jean-Luc\\\" 是一个合成名字,如果该属性设置为 \\\"true\\\"(默认),渲染结果为 \\\"J.-L.\\\",如果设置为 \\\"false\\\",渲染结果为 \\\"J.L.\\\"。\",\"页码范围\",\"page-range-format\",\"​ 用来设置页码范围的格式,是不是使用简写来压缩。其可选的值有:\\\"chicago\\\" (\\\"321–28\\\"), \\\"expanded\\\" ( \\\"321–328\\\"), \\\"minimal\\\" (\\\"321–8\\\"), 或者 \\\" minimal-two\\\" (\\\"321–28\\\")。每一组值前面表示可选的属性值,后面是渲染结果的例子。也可见 [附录V 页码范围格式](#附录V 页码范围格式)。使用 page-range-delimiter 属性可以用来设置页面范围分割的符号,该属性在 CSL 1.0.1 中引入,默认是一个破折号。如果改属性没有设置,就默认使用破折号。\",\"Name Particles\",\"​ 西方人的名字中经常包括一个或者多个小部分,例如,\\\"de\\\" 在荷兰人的名字中 \\\"W. de Koning\\\"。在仅显示姓氏时,这些小部分可以分为必须保留和可删除(或译为不可省略和可省略)两种类型:这两种类型分别称为 non-dropping 部分和 dropping 部分。一个单个的名字可以同时包括这两种类型(不能删除的类型始终位于可删除类型的后面)。例如,\\\"W. de Koning\\\" 和法国名字 \\\"Jean de la Fontaine\\\" 可以被解构为:\",\"{ \\\"author\\\": [ { \\\"given\\\": \\\"W.\\\", \\\"non-dropping-particle\\\": \\\"de\\\", \\\"family\\\": \\\"Koning\\\" }, { \\\"given\\\": \\\"Jean\\\", \\\"dropping-particle\\\": \\\"de\\\", \\\"non-dropping-particle\\\": \\\"La\\\", \\\"family\\\": \\\"Fontaine\\\" } ] } \",\"在仅显示姓氏的时候,只保留不能删除的部分,\\\"De koning\\\" 和 \\\"La Fontaine\\\"。\",\"在名字倒写的情况下,即姓氏在名字之前,在姓氏后面始终添加 dropping particle,但是 non-dropping 部分可以前置(例如,\\\"de Koning, W.\\\")或者后置(Koning, W. de)。在名字倒写,不可省略粒子前置时,可以使用下面的方式对名字进行排序:排序 A:将不可省略粒子和姓一起保留作为主排序键值的一部分;排序 B:通过将不可省略粒子和姓分开,并使其成为二级排序键值,并加入可省略粒子(如果有):\",\"Sort order A: 不可省略粒子不降级\",\"主排序键值 \\\"La Fontaine\\\"\",\"次排序键值 \\\"de\\\"\",\"第三排序键值: \\\"Jean\\\"\",\"Sort order B: 不可省略粒子降级\",\"主排序键值 \\\"Fontaine\\\"\",\"次排序键值 \\\"de La\\\"\",\"第三排序键值 \\\"Jean\\\"\",\"对不可省略粒子的设置可以使用 demote-non-dropping-particle 选项:\",\"demote-non-dropping-particle\",\"​ 用来设置在倒写的名字中不可省略粒子的显示和排序方式(例如 Koning W. de)。可设置的值为:\",\"\\\"never\\\": 不可省略粒子被作为姓中的一部分对待,并附加可省略粒子(\\\"de Koning, W.\\\" \\\"La Fontaine, Jean de\\\")。不可省略粒子作为主排序键值的一部分 (排序 A,例如. \\\"de Koning, W.\\\" 将出现在首字母 \\\"D\\\" 的区域).\",\"\\\"sort-only\\\": 显示的方式和 \\\"never\\\" 相同,但是不可省略粒子降级作为二级排序键值。(排序 B, \\\"de Koning, W.\\\" 出现在首字母 \\\"K\\\" 的区域).\",\"\\\"display-and-sort\\\" (默认),可省略粒子和不可省略粒子在最后( \\\"Koning, W. de\\\" 和 \\\"Fontaine, Jean de La\\\")。对名字排序,所有的粒子都是二级排序键值的一部分。(排序 B,\\\"Koning, W. de\\\" 出现在首字母 \\\"K\\\" 的区域).\",\"某些名字中包含的粒子禁止被降级。在这些情况中,粒子将和姓合并到一起,比如,对于法国名字 Charles de Gaulle\",\"{ \\\"author\\\": [ { \\\"family\\\": \\\"de Gaulle\\\", \\\"given\\\": \\\"Charles\\\" } ] } \"]},\"421\":{\"h\":\"可继承的名称选项\",\"t\":[\"​ cs:names 和 cs:name 元素的属性也可以在 cs:style、cs:citation 和 cs:bibliography 元素中设置。这样就不需要每次在 cs:names 和 cs:name 出现的时候赋值。\",\"​ 可以在 cs:name 元素中继承的属性有 and, delimiter-precedes-et-al, delimiter-precedes-last, et-al-min, et-al-use-first, et-al-use-last, et-al-subsequent-min, et-al-subsequent-use-first, initialize, initialize-with, name-as-sort-order 和 sort-separator。name-form 属性和 name-delimiter 属性对英语 cs:name 元素中的 form 和 delimiter 属性。同样地,names-delimiter 属性对应 cs:names 元素中的 delimiter 属性。\",\"​ 当一个可继承的名称属性在 cs:style,cs:citation 和 cs:bibliography 中设置时,其值将作用于改元素包含的所有的 cs:names 元素。如果一个属性在多个可继承的层次设置,最底层的值发挥作用。\"]},\"422\":{\"h\":\"局部选项\",\"t\":[\"limit-day-ordinals-to-day-1\",\"​ 日期格式在 cs:date 和 cs:date-part 元素中定义。默认地,当 cs:date-part 元素中的 name 设置为 \\\"day\\\",form 属性设置为 \\\"ordinal\\\" 时,所有的天(1 到 31)将会以序数形式渲染,例如:\\\"January 1st\\\",\\\"January 2nd\\\" 等等。通过将 limit-day-ordinals-to-day-1 属性设置为 \\\"true\\\"(默认值为 \\\"false\\\"),序数格式将仅限于每个月的第一天,其他的天将不使用序数格式。这在某些语言中出现,比如法语,\\\"1er janvier\\\",\\\"2 janvier\\\",\\\"3 janvier\\\"。\",\"punctuation-in-quote\",\"​ 当 cs:text 元素渲染时,如果 quotes 属性设置为 \\\"true\\\"(见 格式化),并且在输出后有逗号或者句号,punctuation-in-quote 属性可以控制标点放在括号的内还是外,\\\"false\\\" 为外(默认),\\\"true\\\" 为内。\"]},\"423\":{\"h\":\"排序 ***\",\"t\":[\"​ cs:citation 和 cs:bibliography 元素可以在 cs:layout 元素之前携带一个 cs:sort 子元素,来实现对引文或者参考文献条目的排序。在缺失 cs:sort 元素时,引文和文献条目将会使用他们在文章中出现的顺序来排序。\",\"​ cs:sort 元素必须包含一个或者多个 cs:key 子元素,可以在该元素中设置变量([附录 IV 变量](#附录 IV 变量))或者宏名来实现排序。对于每个 cs:key 元素,排序的顺序可以通过设置 sort 属性来设置为升序(\\\"ascending\\\",默认)或者降序(\\\"descending\\\")。属性 names-min,names-use-first,names-use-last 可以用来覆盖 et-al-min/et-al-subsequent-min, et-al-use-first/et-al-subsequent-use-first 和 et-al-use-last 属性的值,并且可以通过 cs:key 影响所有的名字.\",\"​ 排序的键值是按顺序求值的,也就是说:首先,使用第一个排序键值对所有的项目进行排序。然后使用第二个键值对第一个键值排序后的结果进行排序,直到所有的键值都完成排序为止。如果键值为空,就放到最后。\",\"​ 这里给出一个例子:其中首先引用 \\\"author\\\" 宏进行排序,并且使用 et al. 来对较长的作者序列进行代替。然后,使用 \\\"issued\\\" 变量来进行第二次排序,使用降序:\",\" \",\"​ 变量或者宏的排序键值可以与 \\\"normal\\\" 渲染的输出不同,具体要依赖下面的细节:\"]},\"424\":{\"h\":\"排序变量\",\"t\":[\"​ cs:key 元素通过 variable 变量属性调用变量的排序键值。名称变量、日期变量和数字变量除外:\",\"名称: 名字变量 通过变量属性被调用,例如 ,当 form 属性设置为 \\\"long\\\",name-as-sort-order 属性设置为 \\\"all\\\",返回名字列表字符串。\",\"日期:日期变量 通过 variable 属性被调用,返回 YYYYMMDD 格式。使用 0 代替缺失的日期部分,例如:December 2000 渲染为 20001200。因此,简略的日期在升序排列的时候更加靠前,例如:2000, May 2000, May 1st 2000。负数的年份(即公元前)将被反向排序,比如:100BC, 50BC, 50AD, 100AD。排序过程中,季节将被忽略,因为南北半球的季节顺序不同。在日期范围中,开始的日期用于主要排序,结束日期用于次要排序,例如:2000–2001, 2000–2005, 2002–2003, 2002–2009。在具有相同的开始日期时,日期范围将放在单独的日期后,例如:2000, 2000–2002。\",\"数字:数字变量 通过 variable 属性来调用,返回整数(form 设置为 \\\"numeric\\\")如果原始的变量值仅由非数字文本组成,则将该值作为文本字符串返回。\"]},\"425\":{\"h\":\"排序宏\",\"t\":[\"​ 变量排序的键值是由字符串值组成,没有富文本标记。通过宏属性中的键值 cs:key 来调用。下面为一些特殊情况。\",\"​ 对于名字排序,使用相同的宏而不是直接使用名字变量来渲染和排序有 4 个好处。第一,可以使用替换,例如:可以使用 \\\"editor\\\" 变量代替空的 \\\"author\\\" 变量。第二,可以使用 et-al 缩写,在宏里使用 et-al-min/et-al-subsequent-min, et-al-use-first/et-al-subsequent-use-first 和 et-al-use-last 可选属性,或者覆盖 cs:key 元素中的 names-min, names-use-first 和 names-use-last 。当 et-al 缩写出现的时候,\\\"et-al\\\" 和 \\\"and others\\\" 术语不会包括在排序键值中。第三,名字可以只使用姓来排序,即使用宏,其中的 cs:name 扽 form 属性设置为 \\\"short\\\"。最后,通过调用宏,将 cs:name 中的 form 属性设置为 \\\"count\\\",可以按姓名列表中姓名的数目进行排序。至于使用 variable 属性对姓名进行排序,将 cs:name 中的 name-as-sort-order 属性设置为 \\\"all\\\",返回值为排序后的名称列表。\",\"​ 在宏中带有 cs:number 的 数字变量 的和日期变量的渲染方法和通过变量的调用相同。唯一的区别是:如果通过 variable 属性调用日期变量,将返回完整的日期。相反地,宏调用则只返回原本要渲染的日期部分。例如:\"]},\"426\":{\"h\":\"范围分隔符\",\"t\":[\"​ \\\"citation-number\\\" 和 \\\"year-suffix\\\" 变量的折叠范围以短划线分隔,例如 \\\"(1-3,5)\\\" 和 \\\"(Doe 2000a-c,e)\\\"。\",\"​ \\\"locator\\\" 变量总是使用一个短划线代替任意的连字符。 对 \\\"page\\\" 变量来说,只有 cs:style 中的 page-ran ge-format 属性被设置时,替换才会执行(见 页码范围)。\"]},\"427\":{\"h\":\"格式化\",\"t\":[\"​ 下面的属性可以在 cs:date, cs:date-part, cs:et-al, cs:group, cs:label, cs:layout, cs:name, cs:name-part, cs:names, cs:number 和 cs:text 中设置:\",\"font-style\",\"用来设置字体,可能的值为:\",\"\\\"normal\\\" 默认\",\"\\\"italic\\\" 设置文字的斜体\",\"\\\"oblique\\\" 设置没有斜体的文字倾斜\",\"font-variant\",\"Allows for the use of small capitals, 值可以设置为:\",\"\\\"normal\\\" 默认\",\"\\\"small-caps\\\"\",\"font-weight\",\"设置字宽,值可以为:\",\"\\\"normal\\\" 默认\",\"\\\"bold\\\"\",\"\\\"light\\\"\",\"text-decoration\",\"设置下划线,值可以为:\",\"\\\"none\\\" 默认\",\"\\\"underline\\\"\",\"vertical-align\",\"设置垂直对齐,值可以为:\",\"\\\"baseline\\\" 默认\",\"\\\"sup\\\" 上标\",\"\\\"sub\\\" 下标\"]},\"428\":{\"h\":\"词缀\",\"t\":[\"​ 前缀属性 prefix 和后缀属性 suffix 可以在 cs:date(使用 cs:date 定义本地化格式除外),cs:date-part(cs:date 调用本地化格式除外)、cs:group、cs:label、cs:layout、cs:name、cs:names、cs:number 以及 cs:text 中设置。属性值用来在输出的前面或者后面添加东西,但是只有输出的时候才会渲染。除在 cs:layout 中设置外,词缀将出现在同一个元素的 格式化、引用、strip-periods 和 text-case 的影响范围的外面,也就是这些属性的设置对前缀和后缀没有影响。作为一种解决方法,在父元素 cs:group 中设置上述属性,会产生影响。\"]},\"429\":{\"h\":\"分隔符\\\\delimiter\",\"t\":[\"​ delimiter 属性可以在 cs:date(用来分隔日期的各部分,如年和月;在 cs:date 调用本地化格日期格式时,分隔符将被禁用)、cs:name(分隔名字变量中不同的名字列表)、cs:name(分隔名字列表中的名字)、cs:group 以及 cs;layout(分隔子元素的输出)中设置分隔符。\"]},\"430\":{\"h\":\"显示\\\\display\",\"t\":[\"display 属性可用于将各个参考文献条目构成一个或者多个文本块。如果使用该属性,所有的渲染元素都在该属性的控制下。(译注:是用来设置对齐效果的)属性可能的值为:\",\"\\\"block\\\" - 两边对其\",\"\\\"left-margin\\\" - 左对齐。\",\"\\\"right-inline\\\" - 右对齐\",\"\\\"indent\\\" - 缩进。\",\"例\",\"A. 除使用 second-field-align 外,使用 \\\"left-margin\\\" 和 \\\"roght-inline\\\" 可以实现相同的渲染效果。这种操作方式潜在的好处是,可以在最终的输出中进一步控制块的格式,例如,在 HTML 的 CSS 或者 word 的样式中。\",\" \",\"B. 每个作者的出版物列表。当 subsequent-author-substitute 设置为空字符串时,具有相同作者的条目的作者名字只渲染一次。\",\" \",\"渲染结果将类似下面:\",\"Author1\",\"year-publication1\",\"title-publication1\",\"year-publication2\",\"title-publication2\",\"Author2\",\"year-publication3\",\"title-publication3\",\"year-publication4\",\"title-publication4\",\"C. 带有注释的条目,注释显示在参下方的缩进块中。\",\" \"]},\"431\":{\"h\":\"引用\\\\quotes\",\"t\":[\"​ quotes 属性可以在 cs:text 中设置。当设置为 \\\"true\\\" 时(默认为 \\\"false\\\"),渲染文本将会被包含在引用中。本地化的 punctuation-in-quote 选项控制用来连接的逗号或者句号是出现在引号的内部还是外部(默认外部),见 [Locale options](#Locale options)。\"]},\"432\":{\"h\":\"Strip-periods\",\"t\":[\"​ strip-periods 属性可以在 cs:label 或者 cd:text 中设置,此外,当 name 被设置为 \\\"month\\\" 时,也可以在 cs:date-part 中设置。当该属性被设置为 true 的时候(默认的是 \\\"false\\\"),所有文本中的句号(英文中为点)将会被删除。\"]},\"433\":{\"h\":\"文字大小写\",\"t\":[\"​ text-case 属性可以在 cs:date,cs:date-part,cs:label,cs:name-part,cs:number 和 cs:text 中设置,可设置的值为:\",\"\\\"lowercase\\\": 使用小写字母渲染文本\",\"\\\"uppercase\\\": 使用大写字母渲染文本\",\"\\\"capitalize-first\\\": 如果第一个词是小写的,将首字母设置为大写\",\"\\\"capitalize-all\\\": 将每个小写词的首字母设置为大写\",\"\\\"sentence\\\": renders text in sentence case(以句子的格式设置?)\",\"\\\"title\\\": renders text in title case(以标题的格式来设置?)\"]},\"434\":{\"h\":\"句子大小写转换\",\"t\":[\"句子大小写转换 (在 \\\"Text-case\\\" 中设置为 \\\"sentence\\\"),\",\"对于大写字符串,字符串的第一个字符保持为大写。其它字母表示为小写\",\"对于大小写混合的字符串,如果单词是小写,第一个单词的首字符大写,其它所有单词的大小写保持不变。\",\"CSL 处理器不能识别专有名词。因此,可以将句子大小写的字符转缺的转换为标题大小写,反之亦然。因此,通常最好在句子大小写的情况下存储注入标题之类的字符串,并且仅在样式需要其它大小写的情况下菜使用文本大小写。\"]},\"435\":{\"h\":\"标题大小写转换\",\"t\":[\"标题大小写转换 (在 \\\"Text-case\\\" 中设置为 \\\"title\\\") 对英语来说:\",\"对大写的字符串,每个单词的第一个字母保持大写,其它的字母保持小写。\",\"对于小写或者是混合的字符串,每个小写字符串的首字母大写。大写的字符串或者是混合的字符串保持原样。\",\"两种情况下,stop words 必须是小写的,除非他们是第一个或者对后一个单词,或者跟在冒号后面。stop words 包括:\\\"a\\\", \\\"an\\\", \\\"and\\\", \\\"as\\\", \\\"at\\\", \\\"but\\\", \\\"by\\\", \\\"down\\\", \\\"for\\\", \\\"from\\\", \\\"in\\\", \\\"into\\\", \\\"nor\\\", \\\"of\\\", \\\"on\\\", \\\"onto\\\", \\\"or\\\", \\\"over\\\", \\\"so\\\", \\\"the\\\", \\\"till\\\", \\\"to\\\", \\\"up\\\", \\\"via\\\", \\\"with\\\", \\\"yet\\\".\",\"非英语项目\",\"​ 由于许多语言不使用标题大小写,标题大小写转换 (在 \\\"Text-case\\\" 中设置为 \\\"title\\\") 仅影响英语项目。\",\"​ 如果 cs:style 中的 default-locale 属性没有设置,或者设置为 en 开头的单词,则假定为英语环境。如果某项的元数据包含一个语言字段,而且该字段不是以 \\\"en\\\" 开头的,才被视为是非英语环境。\",\"​ 同样的,default-locale 被这是为除 en 开头的字段,就假定为非英语。如果项目是以 en 开头的字段,就被视为是英语。\"]},\"436\":{\"h\":\"样式的结构\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\"]},\"437\":{\"h\":\"根元素 cs:style\",\"t\":[\"样式的根元素是 cs:style。在 独立样式 中,根元素有以下几种属性:\",\"class\",\": 🏳️ Default: none — 决定样式的 引文格式 是 in-text 类型(值 in-text) 或者 note 类型(值 note)。\",\"!!! NOTE \\\"译者注\\\" in-text 表示引文在文字中,note 表示引文不在文字中,可能是脚注等。 \",\"default-locale\",\": 🏳️ Default: none · Optional — 为本地化设值默认的 locale。值必须是 locale code。\",\"!!! TIP \\\"译者注:常用 local_code\\\" zh-CN:中文(中国) zh-hk:中文(台湾) zh:中文 en-US: 可以参阅 [Language Strings | Microsoft Docs](https://docs.microsoft.com/zh-cn/windows/win32/wmformat/language-strings) \",\"version\",\": 🏳️ Default: none · ⚠ Required — 样式的 CSL 版本。对于 CSL 1.0 兼容样式,必须是 1.0。\",\"此外,cs:style 可能携带任意的 全局选项 和 可继承的名称选项 。\",\"在这些属性中,从属样式 中,只有 version 是必须的, default-locale 属性可以设置用来代替的默认的本地化文件 。其他的属性是可以忽略的。\",\"下面是一个 独立样式 的 cs:style 示例,第一行是 XML 声明:\",\" \"]},\"454\":{\"h\":\"Locale\",\"t\":[\"来自 \\\"locales-xx-XX.xml\\\"locale file 的本地化数据可以通过 cs:locale 元素来重定义或者补充定义。cs:locale 元素应该放在 cs:info 元素后。\",\"cs:locale 元素的 xml:lang 属性是可选的,必须设置为 xsd:language locale code 中的一种,用来确定使用的语言环境(或方言,见 [locale fallback](locale fallback))。\",\"对于 cs:locale 元素的详细使用,另见 术语、本地化日期格式 和 本地化选项。\",\"下面是一个 cs:locale 元素的例子:\",\" \",\"Locale Fallback\",\"本地化文件为语言方言提供了本地化数据;可选的 cs:locale 元素的 xml:lang 属性设置为一种语言 (例如, \\\"en\\\" 代表英语 ) 或者方言 (例如, \\\"en-US\\\" 代表美式英语 ) ,xml:lang 属性也可能缺失。Localr fallback 是一种在上述的属性设置中检索来确定本地化单元的机制。这些本地化单元包括日期格式,本地化选项或者术语的特定形式。\",\"对于同一种语言的方言,一种被称为初级方言,其他都是二级方言。下面展示了部分语言的初级方言和二级方言:\",\"初级方言\",\"二级方言\",\"de-DE\",\"de-AT, de-CH\",\"en-US\",\"en-GB\",\"pt-PT\",\"pt-BR\",\"zh-CN\",\"zh-TW\",\"这里用一个例子来描述 Locale fallback。如果要选择 \\\"de-AT\\\"(Austrian German) 作为使用环境,本地化单元可以来自下面的源(优先级逐渐降低):\",\"A. 样式文件中的 cs:locale 元素\",\"xml:lang 设置为方言 \\\"de-AT\\\"\",\"xml:lang 设置为 \\\"de\\\"\",\"xml:lang 不设置\",\"B. Locale files/本地化文件\",\"xml:lang 设置为方言 \\\"de-AT\\\"\",\"xml:lang 设置为对应的初级方言 \\\"de-DE\\\" (standard german)\",\"xml:lang 设置为 \\\"en-US\\\"\",\"也就是说,如果要使用 \\\"de-AT\\\" 语言,首先在 Locale files 中寻找 \\\"de\\\" 对应的 locales-de-XX.xml 文件,即 \\\"locales-de-AT.xml\\\" 和 \\\"locales-de-DE.xml\\\",由于要设置的语言环境是方言 \\\"de-AT\\\",所以选择 de-AT 对应的 locale file locales-de-AT.xml。接下来,如果 csl 文件中包含 cs:locale 元素,将会覆盖 locales-de-AT.xml 文件的设置。\"]},\"455\":{\"h\":\"空格处理\",\"t\":[\"[!question] Whitespace Handling 翻译有一些疑惑,请参阅原文,欢迎提出改善意见。\",\"CSL styles are valid XML, but CSL processors MUST NOT normalize attribute values by trimming leading or trailing whitespace from attributes which define text that is intended for output:\",\"CSL 样式是有效的 XML,但是 CSL 处理器不会(MUST NOT)通过修剪以下属性值前后的空格来规范输出。\",\"after-collapse-delimiter\",\"cite-group-delimiter\",\"delimiter\",\"initialize-with\",\"name-delimiter\",\"names-delimiter\",\"prefix\",\"range-delimiter\",\"sort-separator\",\"suffix\",\"year-suffix-delimiter\",\"value\"]},\"456\":{\"h\":\"XML 声明\",\"t\":[\"[!Done] XML Declaration\",\"每个样式或者本地化文件应该以 XML 声明开头,指定具体的 XML 版本以及字符编码。多数情况下,XML 声明可以是:\",\" \"]},\"457\":{\"h\":\"VASP 的输入文件\",\"t\":[\"VASP 运行至少包含四个输入文件:INCAR、POSCAR、POTCATR、KPOINTS。\"]},\"458\":{\"h\":\"INCAR\",\"t\":[\"INCAR 是 VASP 运行的 控制文件,他告诉 VASP 要 做什么以及如何去做。INCAR 文件中包含很多标签及其对应的值,通过修改他们来修改 VASP 运行的参数。\",\"标签的含义可以查 vasp-input-files-INCAR 和 [VASP 手册](https://www.vasp.at/wiki/index.php/Category: INCAR)。\"]},\"459\":{\"h\":\"POSCAR\",\"t\":[\"POSCAR 是个 结构文件,他告诉 VASP 要运行的是什么物质。该文件包含晶格几何形状和离子位置等。\",\"这是一个 POSCAR 文件的示例:\",\"O2 molecule # 注释行 10 # 比例,提供了通用缩放因子(晶格常数) 1.0 0.0 0.0 # 3-5行 格矢 0.0 1.0 0.0 0.0 0.0 1.0 O # 元素类别(与它们在POTCAR文件中的顺序一致) 2 # 原子数量 Selective Dynamic # Direct # 坐标类别:分数/笛卡尔 0.5 0.5 0.5 F F F # 每个原子的三个(X Y Z)坐标。 0.5 0.5 0.623 F F T \",\"第 8 行:该模式允许为每个原子提供额外的标志,以指示在离子弛豫期间是否将允许更改此原子的相应坐标。如果仅缺陷周围的某些壳或表面附近的层应松弛,则此设置很有用。这一行是可选的,如果省略了选择性动力学标签,则第八行将在笛卡尔和直角坐标之间进行切换,如下。\",\"O2 molecule # 注释行 10 # 比例,提供了通用缩放因子(晶格常数) 1.0 0.0 0.0 # 3-5行 格矢 0.0 1.0 0.0 0.0 0.0 1.0 O # 元素类别(与它们在POTCAR文件中的顺序一致) 2 # 原子数量 Direct # 坐标类别:分数/笛卡尔 0.5 0.5 0.5 # 每个原子的三个(X Y Z)坐标。 0.5 0.5 0.623 \",\"第 9 行:(如果不启用选择性动力学,则为第 8 行)指定原子位置是在笛卡尔坐标系(cartesian coordinates)中还是在分数坐标(direct (fractional) coordinates)中提供。\",\"分数坐标是把点阵矢量看成是单位矢量下确定原子位置; 笛卡尔坐标是绝对坐标,是直角坐标系与斜角坐标系的统称,考虑点阵常数的大小。\",\"Basically, the fractional coordinates show the fraction of each unit cell vector that contributes to the position of that atom。根本上来说,分数坐标给出了每个原子在元胞的相对位置。\",\"晶格参数:\",\"​A(Ax​Ay​Az​)B(Bx​By​Bz​)C(Cx​Cy​Cz​)​2.46−1.230.00​0.002.130.00​0.000.0010.00​\",\"一个点的分数坐标(a, b, c)=(0.667,0.333,0)\",\"​x=Ax​a+Bx​b+Cx​c=y=Ay​a+By​b+Cy​c=z=Az​a+Bz​b+Cz​c=​2.46∗0.6670∗0.6670∗0.667​−++​1.23∗0.3332.13∗0.3330∗0.333​+++​0∗00∗010∗0​=1.23=0.71=0​\",\"这个点的笛卡尔坐标(x, y, z)= (1.23,0.71,0)\",\"所以,笛卡尔坐标并不是原子在我们作为参考的直角坐标系中的绝对位置,而是在元胞基矢构成坐标系中,原子的绝对位置,而分数坐标,就是原子在元胞基矢构成坐标系中原子的相对位置。对于一个斜角坐标系,显然原子的相对位置比较好判断,所以,我们一般在 POSCAR 中用到的是其分数坐标,如果需要用到笛卡尔坐标,就用上面的公式转换。\",\"抽象一些,用矩阵表示,对于以下两种坐标系:\",\"​system_namelattice_constant_1Ax​Bx​Cx​​Ax​By​Cz​​Ax​By​Cz​​elements_typeatom_numberDirectX11​X21​X31​​X12​X22​X32​​X13​X23​X33​​​​system_namelattice_constant_2Ax​Bx​Cx​​Ax​By​Cz​​Ax​By​Cz​​elements_typeatom_numberCartesionx11​x21​x31​​x12​x22​x32​​x13​x23​x33​​​\",\"有\",\"​X11​X21​X31​​X12​X22​X32​​X13​X23​X33​​​∗​Ax​Bx​Cx​​Ax​By​Cz​​Ax​By​Cz​​​∗lattice_content_1=​x11​x21​x31​​x12​x22​x32​​x13​x23​x33​​​∗lattice_content_2\",\"vaspkit 411-412 可以转换。\",\"参考:\",\"vasp 的 POSCAR 文件中的 Direct 坐标和 Cartesion 坐标的关系 - 小木虫\",\"POSCAR - VaspWiki\",\"POSCAR 关于分数坐标与笛卡尔坐标写法问题 - 郝玲娟 xueer 的新浪博客\",\"笛卡尔坐标系 - 维基百科\",\"提示\",\"8 行 9 行均只识别第一个字母。即 VASP 识别的唯一关键字符是 C or c for cartesian mode,Dor d for direct mode,S or s for Select。\"]},\"460\":{\"h\":\"POTCAR\",\"t\":[\"赝势文件。POTCAR 文件包含计算中使用的每个原子种类的赝势。如果物种数量大于一个,则 按照 POSCAR 中原子的顺序 合并每个物种的 POTCAR 文件。\",\"其他见:https://www.bigbrosci.com/2017/10/18/ex1_05_vasp_preparation_input_potcar/\",\"vasp 计算中用到的三种赝势:模守恒赝势,超软赝势,PAW 赝势 (按产生顺序)。\",\"按方法不同分为 USPP 和 PAW(两种方法都可以相当程度地减少过渡金属或第一行元素的每个原子 所必需的平面波数量)。\",\"按交换关联函数不同分为 LDA 和 GGA(又分为 PW91 和 PBE)//求解 K-S 方程时电子之间的交换关联泛函取局域密度泛函 LDA(Rc 处电子结构当成是密度相同的均匀电子气体来算)或 广义梯度泛函 GGA(考虑了密度的梯度变化),但泛函的不同也会引起贋势的不同。\",\"每种元素往往还会有多种赝势存在。这是因为根据 ENMAX 的大小还可以分为 Ga,Ga_s(soft),Ga_h,或者根据处理半芯态的不同还可以分为 Ga,Ga_sv(s 电子作为半芯态),Ga_pv 的不同。\",\"https://blog.csdn.net/kyang_823/article/details/56277201\"]},\"461\":{\"h\":\"KPOINTS\",\"t\":[\"K 点取样文件。KPOINTS 文件用于指定 Bloch 矢量(k 点),这些矢量将用于在计算中对布里渊区进行采样。\",\"可以使用几种不同的方法在 KPOINTS 文件中指定 k 点:(1)作为自动生成的(移位的)常规点网格;(2)通过线段的起点和终点;或(3)作为点和权重的明确列表。\",\"K-POINTS # 第一行随便写都行,但不能没有 0 # 零,格子自动生成 Gamma # gamma点centered 1 1 1 # 1*1*1格子 0 0 0 # S1 S2 S3, 一般保持 0 0 0 不变。 \",\"详解:\",\"该 KPOINTS 文件里面,共有 5 行,# 号以及后面的不用输入;\",\"同 INCAR 的注释一样,不要在每一行后面使用 ! 来进行注释,要使用 #,且最好不要写中文。\",\"第一行:可以随便写内容,但不能没有;\",\"第二行:数字 0,不是字母 O,0 在这里表示的是自动生成 K 点。你可能注意到了,0 前面有个空格,不过没关系,对计算不影响,可以删掉,也可以再加一个空格,后面的同样如此。但是避免用 tab 输入,VASP 有时候不识别 tab 键输入的空白部分,导致计算出错;\",\"第三行:VASP 只认第一个字母,大小写均可。在这里 Gamma 和 gamma,Gorge,gorge 效果是一样的,当然这一行也可以直接写字母 G 或者 g。 \",\"G 表示的是以 gamma 点为中心生成网格。\",\"另外一种是原始的 Monkhorst-Pack 网格,两者的区别是 M 或者 m 在 G 的基础上在三个方向上平移了 1/(2N)个单位。\",\"G,也叫 gamma centered Monkhorst-Pack Grid;所以,gamma centered 只是 MP 网格的一种特殊情况。\",\"第四行,在 xyz 三个方向上生成对应数目的 K 点,本例是 111; \",\"对于原子或者分子的计算,K 点取一个 gamma 点就够了(1 1 1),也就是这个 KPOINTS 文件可以用于绝大多数的原子或者分子计算,不用再修改;\",\"但如果你要用 ISMEAR = -5 来计算能量,那么就需要把 1 1 1 改成 2 2 2 或者 3 3 3。\",\"第五行,一般都写成 0 0 0,不用动即可;\",\"按照前面 INCAR 的方式保存文件,名字为 KPOINTS。\",\"KPOINTS 的建议:\",\"K 点在 VASP 计算中非常重要,大师兄给的一个建议是:\",\"一直用 gamma centered,也就是第三行保持 G 不变。因为 M 平移之后,网格的对称性和晶胞的对称性会出现不匹配的情况,从而导致计算出错,尤其是对于六角晶系 hexagonal 的结构,必须用 gamma centered!这一点,vasp 官网说的很明确;其他的建议后续慢慢展开讨论。\",\"如非六角晶系的计算,如果已经设置的 M 算起来了,继续用 M 算就行,没必要改成 G 再重新算一遍;\",\"前面看不懂,没事。记住这一点,本节就圆满完成任务:气体分子,原子计算的时候,使用 gamma 点即可。\",\"K 点取值:\",\"通过测试不同 k 点对体系能量的变化\",\"查找参考文献取值\",\"此外,不同 K 点之间的数据不能混用。比如计算 CO 在一个 (3x3) Cu(111) 表面上的吸附能:\",\"Eads​=ECO+slab​–Eslab​–ECOgas​\",\"等号后面的前两项,必须要用同一个 K 点下计算出来的能量,如果 ECO+slab 用 5x5x1 的 K 点, E(slab) 采用 3x3x1 的 K 点能量,得出的结果必然是错的。\",\"K 点部分抄自大师兄网站:https://www.bigbrosci.com/2017/10/16/ex1_03_vasp_preparation_input_kpoints/\",\"https://www.bigbrosci.com/2017/12/10/ex18/\",\"手册:KPOINTS - Vaspwiki\",\"还有一些其他的文件:[Category: Input Files - vaspwiki](https://www.vasp.at/wiki/index.php/Category: Input_Files) .\"]},\"462\":{\"h\":\"STOPCAR\",\"t\":[\"在当前电子步或离子步完成后结束 VASP 运行。\",\"创建 STOPCAR\",\"LSTOP = .TRUE. # 在下一个离子步结束,推荐 LABORT = .TRUE. # 在下一个电子部结束 \"]},\"463\":{\"c\":[\"VASP\"]},\"464\":{\"h\":\"INCAR 中的常用标签\",\"t\":[\"整理一些常用的碰到的 tags,没有的依然是返回 VASP 手册咯;整理了的都是最简单的信息,更多信息也是查手册咯。分类和顺序按 OUTCAR 描述的。\",\"标签名似乎也有一些规律,如以 L 开头的几乎都是逻辑(Logic)标签,取值都是布尔;\",\"与常规编程不同,INCAR 中所有标签的取值,字符串类型无需加引号,如 SYSTEM = O2_geo;布尔类型应在两端加上 .,如 LWAVE = .FALSE.;\",\"几种必要的数据类型(仅是为了方便我理解,这个并不用会):\",\"类型\",\"中文名\",\"值域\",\"备注\",\"INT\",\"16 位整型\",\"-32768~+32767\",\"VASP 的 int 类型通常指定了仅有的几种取值\",\"REAL\",\"实型\",\"-2^128 ~ 2^128\",\"BOOL\",\"布尔\",\"0 或 1\",\"VASP 中用 .TURE. 和 .FALSE.\",\"TOC\"]},\"465\":{\"h\":\"Start Parameters\"},\"466\":{\"h\":\"SYSTEM\",\"t\":[\"取值:字符串。缺省值:unknown system\",\"描述:用来备注计算的体系,其值会被写入 OUTCAR 中。\"]},\"467\":{\"h\":\"ISTART\",\"t\":[\"取值:0 | 1 | 2 | 3\",\"缺省值:如果 WAVECAR 存在,则为 1,否则为 0\",\"描述:是否读取 WAVECAR\",\"ISTART\",\"Function\",\"0\",\"从头开始\",\"1\",\"从 WAVECAR 读取轨道\",\"2\",\"3\",\".\"]},\"468\":{\"h\":\"ISPIN\",\"t\":[\"取值:1(缺省) | 2\",\"描述:自旋极化。\",\"ISPIN = 1 :不自旋\",\"ISPIN = 2 :自旋\",\"需要考虑自旋极化一般来说有以下几种:\",\"单原子的计算,\",\"O2 分子 (基态为三重态)\",\"自由基相关的计算\",\"含 Fe,Co, Ni 的体系\",\"要计算的体系具有磁性:顺磁,铁磁,反铁磁等,要打开自旋极化。\",\"当关注体系的电子性质时,且自己不知道加或者不加的时候,建议加上。\",\"与 MAGMOM 结合,可以研究共线磁性。\",\"Ex12 VASP 中 MAGMOM 的简单设定 | Learn VASP The Hard Way\"]},\"469\":{\"h\":\"ICHARG\",\"t\":[\"取值:0 | 1 | 2 | 4\",\"缺省:ICHARG=2 if ISTART=0,=0 else\",\"描述:决定 VASP 如何构造初始电荷密度\",\"ICHARG\",\"Function\",\"0\",\"从初始波函数计算电荷密度。如果因为无效 WAVECAR 导致 ISTART 重置,则 ICHARG 会被设置为 2。\",\"1\",\"从 CHGCAR 读取电荷密度,使用原子电荷密度的线性组合从旧位置(在 CHGCAR 上)外推到新位置。\",\"2\",\"原子电荷密度叠加\",\"4\",\"+10\",\"非自洽计算\"]},\"470\":{\"h\":\"I/O Flags\",\"t\":[\"Parameters\",\"Default\",\"Describe\",\"LWAVE\",\".TRUE.\",\"是否将波函数写入 WAVECAR\",\"LCHARG\",\".TRUE.\",\"是否将电荷密度写入 CHGCAR 和 CHG\"]},\"471\":{\"h\":\"Electronic Relaxation\"},\"472\":{\"h\":\"ENCUT\",\"t\":[\"截断能\",\"ENCUT 值越大,计算的越精确,花费的时间也就越多;\",\"ENCUT 的取值与体系中所有的元素有关;\",\"A)体系中含有不同元素的时候,查看这些元素 POTCAR 中的 ENMAX 值,找出最大的那个;\",\"B)ENCUT 的最小值为所有元素中 ENMAX 的最大值!\",\"C)也就是说,找到最大的 ENMAX(max), ENCUT 值大于等于 ENMAX(max)。\",\"Ex17 谁偷走的我的机时?(二) | Learn VASP The Hard Way\"]},\"473\":{\"h\":\"EDIFF\",\"t\":[\"取值:real。缺省值:1E-4\",\"描述:控制电子步(自洽)的收敛标准。多数情况下 1E-4 足以胜任,没必要采用其他数值。\"]},\"474\":{\"h\":\"GGA\",\"t\":[\"GGA = 91 | PE | RP | PS | AM\",\"缺省:POTCAR 中的\",\"GGA 指定希望使用的广义梯度近似的类型。\",\"GGA - VASP Wiki\"]},\"475\":{\"h\":\"Ionic Relaxation\"},\"476\":{\"h\":\"EDIFFG\",\"t\":[\"取值:real。缺省值: EDIFF x10\",\"描述:离子弛豫的收敛标准\",\"如果为正,表示两个离子步骤之间的总(自由)能变化小于 EDIFFG 时停止弛豫。一般取 0.0001 ~ 0.001 即可。\",\"如果为负,则原子所受最大力小于 |EDIFFG| 时停止弛豫。一般取值 -0.01 ~ -0.05(-0.01 对于力收敛已经是个很严格的要求了)\",\"取值范围引自大师兄科研网:https://www.bigbrosci.com/2017/12/02/ex09/\"]},\"477\":{\"h\":\"NSW\",\"t\":[\"取值:int。缺省值:0\",\"描述:离子步的最大步数\",\"IBRION = 0 时,NSW 给出了所有从头开始的 Molecular Dynamics 运行的步骤数,因此必须提供它,否则 VASP 在启动后立即崩溃。\",\"IBRION != 0 时,在所有最小化算法(准牛顿,共轭梯度和阻尼分子动力学)中,NSW 定义了最大离子步数。\"]},\"478\":{\"h\":\"IBRION\",\"t\":[\"取值: -1 | 0 | 1 | 2 | 3 | 5 | 6 | 7 | 8 | 44\",\"缺省:IBRION = -1 for NSW = -1 or 0 , =0 else\",\"描述:决定离子如何移动\",\"IBRION\",\"Function\",\"-1\",\"静电自洽。此时 NSW 应为 0。\",\"0\",\"分子动力学\",\"1\",\"离子弛豫(RMM-DIIS) 小范围内的稳定结构搜索\",\"2\",\"离子弛豫(共轭梯度算法) 常用\",\"3\",\"离子弛豫(damp 分子动力学)初始结构很差时\",\"5\",\"频率计算。5-8 都是,但常用 5.\",\"44\",\"改进的 dimmer 方法\",\"IBRION=5 and 6: second derivatives, Hessian matrix and phonon frequencies (finite differences). 对于 IBRION=5 时,所有原子都在三个笛卡尔方向上移动,即使对于中等大小的高对称系统,也需要大量的计算工作。对于 IBRION = 6,仅考虑对称不等价位移,并使用对称性考虑填充其余的 Hessian 矩阵。IBRION=5 支持选择性弛豫,6 不支持。\",\"IBRION=7 and 8: second derivatives, Hessian matrix and phonon frequencies (perturbation theory).\",\"详细: IBRION - VASP Wiki\"]},\"479\":{\"h\":\"ISIF\",\"t\":[\"取值:ISIF = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7\",\"缺省值:0(当 IBRION=0,分子动力学时;否则为 2)\",\"描述:1 有哪些需要算,2 有哪些自由度可以优化。\",\"决定是否计算应力张量,以及允许哪些主要自由度改变弛豫和分子动力学。\",\"ISIF\",\"calculate\",\"degrees-of-freedom\",\"forces\",\"Stress tensor\",\"positions\",\"cell shape\",\"cell volume\",\"0\",\"yes\",\"no\",\"yes\",\"no\",\"no\",\"1\",\"yes\",\"trace only\",\"yes\",\"no\",\"no\",\"2\",\"yes\",\"yes\",\"yes\",\"no\",\"no\",\"3\",\"yes\",\"yes\",\"yes\",\"yes\",\"yes\",\"4\",\"yes\",\"yes\",\"yes\",\"yes\",\"no\",\"5\",\"yes\",\"yes\",\"no\",\"yes\",\"no\",\"6\",\"yes\",\"yes\",\"no\",\"yes\",\"yes\",\"7\",\"yes\",\"yes\",\"no\",\"no\",\"yes\"]},\"480\":{\"h\":\"ISYM\",\"t\":[\"是否考虑对称性。取值:0 | 1 | 2(默认) 0-nonsym 1-usesym 2-fastsym\"]},\"481\":{\"h\":\"POTIM\",\"t\":[\"time-step(MD),单位 fs;step width scaling (ionic relaxations).\",\"缺省:if IBRION=0(MD),无缺省,必须用户指定,否则崩溃。\",\"if IBRION=1,2,3(弛豫),缺省 0.5。所有最小化算法(1 准牛顿,2 共轭梯度和 3 阻尼 damped 分子动力学)中,POTIM 均用作步长的缩放常数。特别是准牛顿算法对此参数的选择很敏感。\",\"if **IBRION=5(频率),缺省 0.015。**In frozen phonon calculations, POTIM gives the width of the displacement of each ion to calculate the Hessian Matrix.\",\"VASP.5.1 and newer releases: 如果给的值不合理(过大),会被重置为 0.015 Å.\",\"在 IBRION=2 时(这是前提!!),如果初始结构很差,设置较小的 POTIM 可以有效的避免过度矫正。初始结构越好,POTIM 的选择也就越随意。\"]},\"482\":{\"h\":\"DOS related values\"},\"483\":{\"h\":\"ISMEAR\",\"t\":[\"ISMEAR 这一项,目前需要记住的是:\",\"不同的值对应的是不同的展宽方法;\",\"对于分子,原子的计算用 0。\",\"下面是 VASP 官网的一些解释,新手暂时看不懂不要紧,把需要记住的这两条死死记住就可以了。\",\"对于半导体和绝缘体体系,ISMEAR 的值取绝对不能大于 0, 一般用 0;\",\"对所有体系,如果想获取更加精确能量的时候用 -5:但使用 -5 的时候,K 点数目小于 3 则程序会罢工;\",\"K 点少,半导体或者绝缘体,那么只能用 ISMEAR = 0;\",\"在 DOS 能带计算中,使用 ISMEAR= -5 用于获取精确的信息。\",\"对于金属来说,ISMEAR 的取值一般为 0,1;\",\"保守地说,ISMEAR = 0 (Gaussian Smearing) 可以满足大部分的体系(金属,导体,半导体,分子);\",\"如果不知道怎么取 ISMEAR,1)直接用 0;2)测试不同的值对计算的影响。\"]},\"484\":{\"h\":\"SIGMA\",\"t\":[\"SIGMA 的取值和 ISMEAR 息息相关,也就是和 ISMEAR 这个参数同时出现,设定。下面是一些基本的介绍:\",\"如果用了 ISMEAR = -5; SIGMA 的值可以忽略,也可以不管。(对于所有体系都适用);\",\"对于金属: ISMEAR = 1 或者 0,非金属: ISMEAR= 0 的时候,一般取 SIGMA = 0.10 即可,默认值是 0.20。不放心的话,用 0.05。\",\"对于气体分子,原子体系(也就是你把分子或者原子放到一个 box 里面):死死记住下面组合就可以了, ISMEAR = 0; SIGMA = 0.01。\",\"设置一个较小的 SIGMA 值会使收敛变慢。\",\"半导体和绝缘体:\",\"1) K 点小于 4 的时候,用 ISMEAR=0, SIGMA 取值小一些;比如 SIGMA=0.05; 此时用 ISMEAR = -5 会出错;\",\"2)K 点数目大于 4 的时候,可以使用 ISMEAR= -5;\",\"不过很多人都不放心,为了保险想测试一番。标准是: SIGMA 的取值要保证 OUTCAR 中的 entropy T*S 这一项,平均到每个原子上,要小于 1-2 meV。检查的时候可以用这个命令:\",\"grep 'entropy T' OUTCAR \",\"**注意 1:**这里有两个单引号,不要输入的时候漏掉。\",\"用这个命令,得出的能量除以体系中原子的数目(也就是平均到每个原子上),然后再和 0.001 eV 比较。如果小于,SIGMA 取值 OK,如果大于,再换个小点的数值进行测试。\",\"**注意 2:**这里的说的 entropy,是因为 ISMEAR 展宽这个计算方法引入的,跟我们物理化学书里面的 entropy 完全是两码事。后面我们会介绍如何通过频率分析计算物理化学里面的 Entropy。\",\"摘抄自大师兄网站:https://www.bigbrosci.com/2017/10/15/ex1_02_vasp_preparation_input_incar/\"]},\"485\":{\"h\":\"DFT+U\",\"t\":[\"vasp-DFT-plus-U\"]},\"486\":{\"c\":[\"VASP\"]},\"487\":{\"h\":\"准备 VASP 的输入文件\",\"t\":[\"输入文件包括 POSCAR、INCAR、KPOINTS、POTCAR。注意大小写,因为 linux 是严格区分大小写的系统。\",\"该页以对 O2 分子进行结构优化为例,说明 VASP 输入文件的生成步骤。\"]},\"488\":{\"h\":\"VASPKIT 生成输入文件的选项\",\"t\":[\"VASPKIT 可以帮助我们简化准备输入文件的步骤,可以先看下 VASPKIT 提供了哪些可以生成输入文件的工具:\",\"[zjb@op O2_opt]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>> \",\"选择 1) VASP Input Files Generator\",\"------------>> 1 ==================== VASP Input Files Options =================== 101) Customize INCAR File 102) Generate KPOINTS File for SCF Calculation 103) Generate POTCAR File with Default Setting 104) Generate POTCAR File with User Specified Potential 105) Generate POSCAR File from cif (no fractional occupations) 106) Generate POSCAR File from Material Studio xsd (retain fixes) 107) Reformat POSCAR File in Specified Order of Elements 108) Successive Procedure to Generate VASP Files and Check 109) Check All VASP Files 0) Quit 9) Back ------------>> \",\"上面 101-106 都可以生成输入文件,然后就可以根据需求去选择了。\"]},\"489\":{\"h\":\"POSCAR\",\"t\":[\"POSCAR 文件可以自己写入,也可以通过 Materials Studio 建模后转换格式,还可以从一些结构网站获取结构。\"]},\"490\":{\"h\":\"方法 1:通过新建 POSCAR 文件并手动写入内容\",\"t\":[\"vi POSCAR \"]},\"491\":{\"h\":\"方法 2:通过 Materials Studio 建模以生成 POSCAR\",\"t\":[\"在 MS 中建模完成后,有如下几种方式将其转换为 POSCAR:\"]},\"492\":{\"h\":\"2.1. 使用 VASPKIT 的 cif2pos.py\",\"t\":[\"从 MS 建模完成后导出为 cif 文件:file-export,save as type : .cif,上传到集群上,使用 vaspkit-1-105) Generate POSCAR File from cif (no fractional occupations),\",\" ------------>> 105 Please type in the filename of cif-> NaCl_import.cif # 在这里输入了.cif文件的文件名 Pleas input the order of element, `ENTER` for default! Example: 'NA CL' in this CIF #在这里需要输入元素的顺序,通常可以按回车使用默认值 -->> (01) POSCAR has been generated... +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ [zjb@op NaCl]$ \",\"在第 4 行,会要求你输入 .cif 文件的文件名。在第 7 行,会要求你输入 元素的种类,如果第 6 行提示的正确,可以回车使用默认。\"]},\"493\":{\"h\":\"2.2. 使用 VESTA 转换\",\"t\":[\"从 MS 建模完成后导出为 cif 文件:file-export-.cif,用 VESTA 打开该 cif 文件,选择 file-export data,save as : xxx.vasp。将 xxx.vasp 文件上传到服务器,将其重命名为 POSCAR,cp xxx.vasp POSCAR。\"]},\"494\":{\"h\":\"2.3. 使用 vaspkit 的 xsd2pos.py\",\"t\":[\"从 MS 建模完成后导出为 xsd 文件,上传,使用 vaspkit-1)VASP Input Files Generator-106) Generate POSCAR File from Material Studio xsd (retain fixes).\",\"另外值得一提的是,通过 xsd2pos 可以保留原子的位置限制信息,而上面两种导出为 .cif 的方式会丢失原子固定。\",\"Material Studio 是常用的构建模型和可视化结构的软件,MS 中的结构亦可借助其它工具转换成 POSCAR。目前常用的做法是在 MS 中导出 cif 文件,再通过功能 105 或者 vesta 转换成 POSCAR。但是转换颇为麻烦并且会丢失原子的位置限制信息。因此赵焱老师开发了固定原子坐标 perl 小脚本 xsd2pos.pl ,可以在MS中运行perl脚本将结构生成POSCAR,链接里有详细的操作流程,这里不再赘述。vaspkit开发者也开发了一款类似的后处理脚本,能够将含有位置固定信息的xsd批量转换成·POSCAR,并将此脚本集成到了vaspkit的106功能中。xsd中可以包含Fix Fractional Position或者Fix Cartesian Position两种限制方式。\",\"引自 VASPKIT 中文手册 。\"]},\"495\":{\"h\":\"方法 3:从结构网站获取\",\"t\":[\"从诸如 Materials Project 等网站获取结构,通常获取到的是.vasp文件,将其上传,重命名为POSCAR即可。\",\"值得一提的是 VASPKIT 官方文档提到,有时候下载到的 .vasp 文件,里面会有制表符与空格的问题,最好通过 109) Check All VASP Files 检查一下,以免计算失败。\"]},\"496\":{\"h\":\"INCAR\",\"t\":[\"VASPKIT 选择 101,然后选择 INCAR 选项,就生成了 INCAR 文件\",\" ------------>> 101 +-------------------------- Warm Tips --------------------------+ You MUST Know What You Are Doing Some Parameters in INCAR File Neet To Be Set/Adjusted Manually +---------------------------------------------------------------+ ======================== INCAR Options ========================== ST) Static-Calculation SR) Standard Relaxation MG) Magnetic Properties SO) Spin-Orbit Coupling D3) DFT-D3 no-damping Correction H6) HSE06 Calculation PU) DFT+U Calculation MD) Molecular Dynamics GW) GW0 Calculation BS) BSE Calculation DC) Elastic Constant EL) ELF Calculation BD) Bader Charge Analysis OP) Optical Properties EC) Static Dielectric Constant PC) Decomposed Charge Density FD) Phonon-Finite-Displacement DT) Phonon-DFPT NE) Nudged Elastic Band (NEB) DM) The Dimer Method FQ) Frequence Calculations LR) Lattice Relaxation 0) Quit 9) Back ------------>> Input Key-Parameters (STH6D3 means HSE06-D3 Static-Calcualtion) \",\"根据计算需要,选择相应类型的选项,如结构优化标准弛豫:\",\"SR INCAR parameters are from user-specified Global. INCAR parameters are from user-specified SR. -->> (01) Written INCAR file! +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ [zjb@op O2_opt]$ \",\"上前 4 行提示可以知道 INCAR 已经生成,由于生成的 INCAR 与我们实际需要的 INCAR 仍有一些差别,所以之后我们打开 INCAR 进行进一步修改,\",\"Global Parameters ISTART = 1 (Read existing wavefunction; if there) # ISPIN = 2 (Spin polarised DFT) # ICHARG = 11 (Non-self-consistent: GGA/LDA band structures) LREAL = Auto (Projection operators: automatic) # ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .TRUE. (Write WAVECAR or not;是否写入波函数) LCHARG = .TRUE. (Write CHGCAR or not) ADDGRID= .TRUE. (Increase grid; helps GGA convergence) # LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not) # LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not) # NELECT = (No. of electrons: charged cells; be careful) # LPLANE = .TRUE. (Real space distribution; supercells) # NPAR = 4 (Max is no. nodes; don't set for hybrids) # NWRITE = 2 (Medium-level output) # KPAR = 2 (Divides k-grid into separate groups) # NGX = 500 (FFT grid mesh density for nice charge/potential plots) # NGY = 500 (FFT grid mesh density for nice charge/potential plots) # NGZ = 500 (FFT grid mesh density for nice charge/potential plots) ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) NELM = 60 (Max electronic SCF steps) NELMIN = 6 (Min electronic SCF steps) EDIFF = 1E-08 (SCF energy convergence; in eV) # GGA = PS (PBEsol exchange-correlation) Ionic Relaxation NSW = 100 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) #ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -2E-02 (Ionic convergence; eV/AA) # ISM = 2 (Symmetry: 0=none; 2=GGA; 3=hybrids) ~ ~ ~ \",\"标签和值如何选择可以查 VASP 手册 呢。\"]},\"497\":{\"h\":\"KPOINTS\",\"t\":[\"vaspkit-1,然后,102) Generate KPOINTS File for SCF Calculation,然后选择需要的撒点方法和精度,\",\"------------>> 102 ======================= K-Mesh Scheme ========================== 1) Monkhorst-Pack Scheme 2) Gamma Scheme 0) Quit 9) Back ------------->> 1 # 在这里选择方法 -->> (01) Reading Structural Parameters from POSCAR File... +---------------------------------------------------------------+ | Selective Dynamics is Activated! | +---------------------------------------------------------------+ +-------------------------- Warm Tips --------------------------+ * Accuracy Levels: Gamma-Only: 0; Low: 0.06~0.04; Medium: 0.04~0.03; Fine: 0.02-0.01. * 0.03-0.04 is Generally Precise Enough! +---------------------------------------------------------------+ Input Kmesh-Resolved Value (in unit of 2*PI/Angstrom): ------------>> 0.04 # 在这里输入精度 +-------------------------- Summary ----------------------------+ Reciprocal Lattice Vectors (in unit of 1/angstrom): 0.6283185307 0.0000000000 0.0000000000 0.0000000000 0.5235987756 0.0000000000 0.0000000000 0.0000000000 0.4188790205 Reciprocal Lattice Constants: 0.6283 0.5236 0.4189 Real-Space Lattice Constants: 10.0000 12.0000 15.0000 Size of K-Mesh: 1 1 1 +---------------------------------------------------------------+ -->> (02) Written KPOINTS File! -->> (03) Written POTCAR File with the Recommended Potential! +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ \",\"通常情况下,生成 KPOINTS 的同时,会根据推荐赝势生成 POTCAR。如果你的没有生成,则进入下一步。\"]},\"498\":{\"h\":\"POTCAR\",\"t\":[\"vaspkit-1-103) Generate POTCAR File with Default Setting\",\"当然也可以选择 104) Generate POTCAR File with User Specified Potential 选择自己想要的赝势类型。\",\"如果没有 VASPKIT,就可以 cat <元素 1 的赝势文件> <元素 2 的赝势文件> >> POTCAR。\",\"到此为止 VASP 运行所需要的四个输入文件就全都准备好了,我们就可以提交这个作业了。\",\"将 PBS 脚本 复制到当前目录,然后使用 qsub 命令提交作业。\",\"qsub -N JobName vasp.pbs \"]},\"499\":{\"c\":[\"VASP\"]},\"500\":{\"h\":\"VASP 的输出文件\",\"t\":[\"基本的输出文件:OUTCAR、OSZICAR、stdout;\"]},\"501\":{\"h\":\"OUTCAR\",\"t\":[\"todo\"]},\"502\":{\"h\":\"OSZICAR\",\"t\":[\"收敛速度与当前步的信息。\"]},\"503\":{\"h\":\"其他\",\"t\":[\"LOCPOT:获取静电势能,当 INCAR 中启用 LVHAR=.T. 时输出。\"]},\"504\":{\"h\":\"官网文档\",\"t\":[\"[Category: Output_Files - vaspwiki](https://www.vasp.at/wiki/index.php/Category: Output_Files)\"]},\"505\":{\"c\":[\"VASP\"]},\"506\":{\"h\":\"VASP 输入输出文件\"},\"507\":{\"h\":\"结构优化、自洽、非自洽\",\"t\":[\"结构优化计算是指将输入结构进行弛豫,得到一个稳定的结构(通常以能量变化或力作为收敛标准)。\",\"静态自洽计算,顾名思义就是不对原子或离子的坐标进行改变,只是调整体系电子的运动,以达到该结构的最低能量。\",\"非自洽计算,是在自洽基础上改变 k 点等等参数,根据不同需要选取能量或势函数或电子密度作为初始值,进行迭代计算,可用于求解 DOS,能带或者光学等其他性质。\",\"本页对O2​进行结构优化、静电自洽、非静电自洽。\"]},\"508\":{\"h\":\"目录结构\",\"t\":[\". ├── 1-geo │ ├── CONTCAR │ ├── INCAR │ ├── KPOINTS │ ├── POSCAR │ ├── POTCAR │ └── vasp.pbs ├── 2-scf │ ├── CHGCAR │ ├── EIGENVAL │ ├── INCAR │ ├── KPOINTS -> ../1-geo/KPOINTS │ ├── POSCAR -> ../1-geo/CONTCAR │ ├── POTCAR -> ../1-geo/POTCAR │ └── vasp.pbs └── 3-nscf ├── CHGCAR 复制自../2-scf/CHGCAR ├── INCAR ├── KPOINTS ├── POSCAR -> ../2-scf/POSCAR ├── POTCAR -> ../2-scf/POTCAR └── vasp.pbs 只列出了输入文件和必要的输出文件。 \"]},\"509\":{\"h\":\"步骤\"},\"510\":{\"h\":\"结构优化\",\"t\":[\"在 1-geo 文件夹中对结构进行结构优化。\",\"O2 1 10 0 0 0 10 0 0 0 12 O 2 Selective dynamics Direct 0.50 0.50 0.50 F F F 0.50 0.50 0.62 F F T \",\"Global Parameters ISTART = 0 (Read existing wavefunction; if there) ISPIN = 2 (Spin polarised DFT) ICHARG = 2 (Non-self-consistent: GGA/LDA band structures) LREAL = .FALSE. (Projection operators: automatic) ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .FALSE. (Write WAVECAR or not) LCHARG = .FALSE. (Write CHGCAR or not) ADDGRID= .TRUE. (Increase grid; helps GGA convergence) NPAR = 4 (Max is no. nodes; don't set for hybrids) Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) NELM = 60 (Max electronic SCF steps) NELMIN = 4 (Min electronic SCF steps) EDIFF = 1E-06 (SCF energy convergence; in eV) Ionic Relaxation NSW = 30 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -2E-02 (Ionic convergence; eV/AA) \",\"KPT-Resolved Value to Generate K-Mesh: 0.000 0 Gamma 1 1 1 0.0 0.0 0.0 \",\"KPOINTS 和 POTCAR 使用 vaspkit-103 生成\",\"提交计算,在 stdout 里看到 reached required accuracy - stopping structural energy minimisation 即为收敛。\",\"得到的 CONTCAR(优化后的结构)见下,CONTCAR 写入的默认是分数坐标,将其转换为笛卡尔坐标后见 CONTCAR_Caresian。\",\"O2 1.00000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 12.0000000000000000 O 2 Selective dynamics Direct 0.5000000000000000 0.5000000000000000 0.5000000000000000 F F F 0.5000000000000000 0.5000000000000000 0.6028684362988320 F F T 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 \",\" O2 1.000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 12.0000000000000000 O 2 Selective Dynamics Cartesian 5.0000000000000000 5.0000000000000000 6.0000000000000000 F F F 5.0000000000000000 5.0000000000000000 7.2344212355859838 F F T \",\"计算得到的键长为1.234421235585984 A˚,与实验值1.2075A˚相近(误差 2.2%)。\",\"也可以将 CONTCAR 使用 VESTA 查看,键长为 1.23442 A˚。\",\"O2-geo-CONTCAR\"]},\"511\":{\"h\":\"自洽计算\",\"t\":[\"在 2-scf 文件夹中对已优化的结构进行静电自洽。\",\"将结构优化得到的结果复制过来(CONTCAR 变为 POSCAR、改 INCAR,POTCAR 和 KPOINTS 不改)\",\"修改 INCAR 使其符合自洽计算的要求\",\"提交作业\",\"[zjb@op 2-scf]$ ln -s ../1-geo/CONTCAR POSCAR [zjb@op 2-scf]$ ln -s ../1-geo/POTCAR . [zjb@op 2-scf]$ ln -s ../1-geo/KPOINTS . [zjb@op 2-scf]$ cp ../1-geo/INCAR . [zjb@op 2-scf]$ cp ../1-geo/vasp.pbs . # 修改INCAR NSW = 0 IBRION = -1 LWAVE = .TRUE. LCHARG = .TRUE. \",\"提交计算。\",\"[zjb@op 2-scf]$ cat EIGENVAL 2 2 1 2 0.6000000E+03 0.1000000E-08 0.1000000E-08 0.1200000E-08 0.5000000E-15 1.000000000000000E-004 CAR unknown system 12 1 12 0.0000000E+00 0.0000000E+00 0.0000000E+00 0.1000000E+01 1 -32.479163 -31.253398 1.000000 1.000000 2 -20.620813 -18.824373 1.000000 1.000000 3 -13.381535 -12.454501 1.000000 1.000000 4 -13.228318 -11.385151 1.000000 1.000000 5 -13.228318 -11.385151 1.000000 1.000000 6 -6.915025 -4.642110 1.000000 0.000000 7 -6.915024 -4.642110 1.000000 0.000000 8 -0.315761 -0.201192 0.000000 0.000000 9 0.533238 0.741194 0.000000 0.000000 10 0.791404 0.862512 0.000000 0.000000 11 1.120056 1.246772 0.000000 0.000000 12 1.120056 1.246772 0.000000 0.000000 \"]},\"512\":{\"h\":\"非自洽计算\",\"t\":[\"在 3-nscf 文件夹中进行非自洽计算。\",\"将自洽计算的 POSCAR(CONTCAR 也行,因为 scf 不改变结构)、POTCAR、INCAR、KPOINTS、CHGCAR 复制过来。\",\"修改 INCAR 和 KPOINTS。\",\"提交计算。\",\"[zjb@op 3-nscf]$ ln -s ../2-scf/POSCAR ../2-scf/POTCAR . [zjb@op 3-nscf]$ cp ../2-scf/INCAR ../2-scf/KPOINTS ../2-scf/CHGCAR ../2-scf/vasp.pbs . \",\"INCAR 中修改以下\",\"改: ISTART = 1 (Read existing wavefunction; if there) ICHARG = 11 (Non-self-consistent: GGA/LDA band structures) ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) 删: # EDIFFG = -2E-02 (Ionic convergence; eV/AA) 增: DOS NEDOS = 6000 LORBIT = 11 \",\"KPOINTS 重新生成,但是这次我没动 K 点(主要是不知道应该改成啥)。\",\"提交计算。\"]},\"513\":{\"h\":\"参考\",\"t\":[\"VASP 结构优化、静态自洽、非自洽计算\",\"vasp 计算流程-结构优化\",\"【vasp 笔记】结构优化(结构弛豫)\"]},\"514\":{\"c\":[\"VASP\"]},\"515\":{\"h\":\"晶格常数计算\",\"t\":[\"晶格常数计算通常有两种方法,BM 方程拟合法和直接优化晶格常数(vasp-ISIF=3).\"]},\"516\":{\"h\":\"Birch-Murnaghan 状态方程拟合\",\"t\":[\"todo...\",\"Ex33-35 晶格参数的确定(Birch-Murnaghan 状态方程)| LVTHW\"]},\"517\":{\"h\":\"直接优化晶格常数\",\"t\":[\"ISIF=3,晶胞中原子的坐标,晶胞形状,以及体系都随着优化的过程发生变化。此时(计算是体积发生了变化)ENCUT 必须设置,而且要设置高一些,手册建议是1.3×max(ENCUT of each element)。这是为了尽可能消除 Pulay stress(普莱应力)对计算的影响。\",\"若只进行体积守恒的弛豫,通常可以忽略 Pulay stress,因为 pulay 应力几乎是均匀的。\",\"这一步不得不增大 ENCUT,(但整个计算 ENCUT 轻易是不变的),是这一步例外,一旦计算完晶格常数,可以在这个基础上统一使用其他的 ENCUT。\",\"POTCAR、KPOINTS、POSCAR 与单点计算一致就好。\",\"Volume vs. energy, volume relaxations, Pulay Stress\",\"If you are doing energy-volume calculations or cell shape and volume relaxations you must understand the Pulay stress, and related problems.\",\"The Pulay stress arises from the fact that the plane wave basis set is not complete with respect to changes of the volume. Thus, unless absolute convergence with respect to the basis set has been achieved - the diagonal components of the stress tensor are incorrect. This error is often called \\\"Pulay stress\\\". The error is almost isotropic (i.e. the same for each diagonal component), and for a finite basis set it tends to decrease volume compared to fully converged calculations (or calculations with a constant energy cutoff).\",\"The Pulay stress and related problems affect the behavior of VASP and any plane wave code in several ways: First it evidently affects the stress tensor calculated by VASP, i.e. the diagonal components of the stress tensor are incorrect, unless the energy cutoff is very large (ENMAX=1.3 * default is usually a safe setting to obtain a reliable stress tensor).\",\"Ex36 晶格参数的确定(直接优化晶格常数)| LVTHW\"]},\"518\":{\"c\":[\"VASP\",\"优化\"]},\"519\":{\"h\":\"DFT+U\",\"t\":[\"DFT+U Calculation LDAU = .TRUE. (启用 DFT+U) LDATYPE= 2 (+U的类型) LDAUL = 2 -1 (Orbitals for each species) LDAUU = 3.5 0 (U for each species) LDAUJ = 0 0 (J for each species) LMAXMIX= 4 (Mixing cut-off; 4-d, 6-f) \",\"LADATYPE——描述+U 的类型。取值有:1、2(默认)、4。\",\"LDAUL 取值\",\"描述\",\"1\",\"The rotationally invariant LSDA+U introduced by Liechtenstein et al\",\"2(默认)\",\"Dudarev 简化的。在此方案中,描述库仑和交换相互作用的 U 和 J 项始终以 Ueff = U-J 的形式组合在一起,只有 U-J 有物理意义。\",\"4\",\"todo\",\"LDAUL——描述在哪个原子轨道上加 U。 -1 不加 U;1 p 轨道; 2 d 轨道 (默认) ; 3f 轨道。\",\"LDAUU——电子库伦相互作用项( on-site Coulomb interaction)\",\"LDAUJ——电子交换相互作用项( on-site exchange interaction)\",\"提示\",\"LDAUL、LDAUU、LDAUJ 都需要为每个物种设定(有几种元素就有几个数字),顺序应当与 POSCAR/POTCAR 中的一致。\",\"最终的 U 值 = LDAUU - LDAUUJ 。\",\"一般说来+U 的过程要自始至终,也就是从结构优化到计算性质都要考虑 U 的影响\"]},\"520\":{\"c\":[\"VASP\",\"优化\"]},\"521\":{\"h\":\"表面能的计算\"},\"522\":{\"h\":\"定义\",\"t\":[\"表面能,是创造物质表面时,破坏分子间化学键所需消耗的能量。在固体物理理论中,表面原子比物质内部的原子具有更多的能量,因此,根据能量最低原理,原子会自发的趋于物质内部而不是表面。表面能的另一种定义是,材料表面相对于材料内部所多出的能量。把一个固体材料分解成小块需要破坏它内部的化学键,所以需要消耗能量。如果这个分解的过程是可逆的,那么把材料分解成小块所需要的能量就和小块材料表面所增加的能量相等。但事实上,只有在真空中刚刚形成的表面才符合上述能量守恒。因为新形成的表面是非常不稳定的,它们通过表面原子重组和相互间的反应,或者对周围其他分子或原子的吸附,从而使表面能量降低。\",\"Surface energy - Wikipedia\"]},\"523\":{\"h\":\"怎么算\",\"t\":[\"​Erel=刚切好的表面的能量−优化后的能量σunrel=1/2(Esurfunrel​−Natoms​⋅Ebulk​)σ=σunrel+Erel​\",\"其中,Erel is Relaxation energy,是弛豫过程中的能量变化;σ表示表面能;Esurf​是刚切好的 slab 的能量,可以直接算个单点,也可以取优化过程第一个离子步的能量(如果第一个离子步收敛);Natoms​是 slab 中的原子数目;Ebulk​是 bulk 结构中单个原子的能量,注意不是体相的能量而是体相中单个原子的能量,即体相能量除以原子数目。(ISIF=3 结束后 CONTCAR-->POSCAR,做单点计算,得到晶胞能量,除以晶胞中原子数目)。\",\"以 官网Ni(100)表面弛豫 为例,\",\"bulk 单点:\",\"得到,Ebulk​=−.5458/1=−0.5458。\",\"弛豫:\",\"弛豫中能量变化从−25.556eV 到 −25.572eV,Erel=−16meV.\",\"σunrelσ​=1/2(Esurfunrel​−Natoms​⋅Ebulk​)=1/2(−25.556−5×(−5.458))=0.867eV=σunrel+Erel=0.867−0.016=0.851eV​\",\"VASP Tutorial: A bit of surface science.pdf (nersc.gov)\",\"上面的是只考虑一个面优化,如果 slab 模型的上下两个面都优化,那么公式应为:\",\"σ​=2A1​(Esurf​−Natoms​×Ebulk​+Erel)=2A1​(Esurfrel​−Natoms​×Ebulk​)​\"]},\"524\":{\"c\":[\"VASP\",\"优化\"]},\"525\":{\"h\":\"吸附能的计算\",\"t\":[\"Todo\"]},\"526\":{\"h\":\"影响因素\",\"t\":[\"slab 模型在 Z 方向\",\"slab 的厚度\",\"真空层厚度\",\"一方面影响计算量的大小,另一方面,对于不同的体系,我们需要不同厚度的 slab 模型来保证计算的准确性。例如:对于金属体系来说,越开放的表面往往需要更多的层数。测试或参考他人成果。\",\"slab 模型在 XY 方向\",\"表面大小:影响覆盖度,计算的工作量。\",\"吸附位点:top(t),bridge(b),fcc(f) 和 hcp(h)。\",\"吸附物种与表面结合情况:不同的分子构型?用什么原子?哪一部位和表面接触?初始猜测的键长多少? 等等\"]},\"527\":{\"h\":\"初始构型获取\",\"t\":[\"查数据库\",\"查文献\",\"自己估算:依据原子半径,两原子成键,键长小于两者之和。下图 😃\",\"初算:用一个小模型,简单算一下,得到一个合理的键长。比如 O 吸附在 Cu,直接优化气相中 Cu-O 双原子分子的结构。Ex54 简单粗暴地获取初始构型(一)| Learn VASP The Hard Way (bigbrosci.com)\",\"image-20210223101158708\",\"Empirically measured atomic radius (wikipedia.org)\"]},\"528\":{\"c\":[\"VASP\",\"优化\"]},\"529\":{\"h\":\"结构优化\"},\"530\":{\"h\":\"VASP 计算电荷密度差\",\"t\":[\"文献中常用的差分电荷密度图为二次差分电荷密度图 (difference charge density),区别于差分电荷密度图 (deformation charge density)。差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差。通过差分电荷密度的计算和分析,可以清楚地得到在成键和成键电子耦合过程中的电荷移动以及成键极化方向等性质。“二次”是指同一个体系化学成分或者几何构型改变之后电荷的重新分布。Deformation charge density 的公式定义为 (1),Difference charge density 的公式定义为 (2)。Difference charge density 是文献中最常用的方法。\",\"Δρ=ρABSC​​−ρABatom​​(1)Δρ=ρAB​−ρA​−ρB​(2)Δρ=ρABC​−ρA​−ρB​−ρC​(3)\",\"以计算 O2​电荷密度差为例,记录如何获得 O2 的 Difference charge density。\"]},\"531\":{\"h\":\"流程\",\"t\":[\"以 A-B 型为例\",\"对 AB 进行结构优化\",\"分别对 AB、A、B 分别静电自洽(不能结构优化) \",\"FFT mesh 需要一致\",\"LCHARG 需要打开\",\"求差(chgsun.pl CHGCAR_A CHGCAR_B;chgdiff.pl CHGCAR_AB CHGCAR_sum)\",\"电荷密度差分操作本可以在之前 O2 结构优化、自洽、非自洽 自洽之后进行,但是之前的自洽没有规定 FFT mesh,而电荷密度差分要求了,所以干脆从头算好了。\"]},\"532\":{\"h\":\"目录结构\",\"t\":[\"详情\",\"[zjb@op O2_chg_diff]$ tree . ├── O2 # 在此目录对O2分子进行结构优化,然后静电自洽 │ ├── CHG │ ├── CHGCAR │ ├── CONTCAR │ ├── INCAR │ ├── KPOINTS │ ├── OSZICAR │ ├── OUTCAR │ ├── POSCAR │ ├── POTCAR │ ├── stdout │ └── vasp.pbs ├── A # 对其中一个O进行静电自洽 │ ├── CHG │ ├── CHGCAR │ ├── CONTCAR │ ├── INCAR │ ├── KPOINTS │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR │ ├── POTCAR │ ├── stdout │ └── vasp.pbs ├── B # 对另一个O进行静电自洽 │ ├── CHG │ ├── CHGCAR │ ├── CONTCAR │ ├── INCAR │ ├── KPOINTS │ ├── OSZICAR │ ├── OUTCAR │ ├── POSCAR │ ├── POTCAR │ ├── REPORT │ ├── stdout │ └── vasp.pbs ├── CHGCAR_diff # 差分电荷密度 └── CHGCAR_sum # 两个单独O加在一起的电荷密度 3 directories, 62 files \"]},\"533\":{\"h\":\"步骤\"},\"534\":{\"h\":\"Step1:对 AB 进行结构优化 geo\",\"t\":[\"在 O2 目录中对 O2 进行结构优化\",\":::: tabs\",\"::: tab POSCAR\",\"[zjb@op O2]$ cat POSCAR: O2 1 10 0 0 0 10 0 0 0 12 O 2 S D 0.5 0.5 0.5 F F F 0.5 0.5 0.62 F F T \",\":::\",\"::: tab INCAR\",\"[zjb@op O2]$ cat INCAR: Global Parameters ISTART = 1 (Read existing wavefunction; if there) ISPIN = 2 (Spin polarised DFT) ICHARG = 2 (Non-self-consistent: GGA/LDA band structures) LREAL = .FALSE. (Projection operators: automatic) ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .TRUE. (Write WAVECAR or not) LCHARG = .TRUE. (Write CHGCAR or not) ADDGRID= .TRUE. (Increase grid; helps GGA convergence) NGXF = 150 (FFT grid mesh density for nice charge/potential plots) NGYF = 150 (FFT grid mesh density for nice charge/potential plots) NGZF = 180 (FFT grid mesh density for nice charge/potential plots) Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) NELM = 60 (Max electronic SCF steps) NELMIN = 4 (Min electronic SCF steps) EDIFF = 1E-06 (SCF energy convergence; in eV) Ionic Relaxation NSW = 20 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -2E-02 (Ionic convergence; eV/AA) \",\":::\",\"::: tab CONTCAR\",\"[zjb@op O2]$ cat CONTCAR O2 1.00000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 12.0000000000000000 O 2 Selective dynamics Direct 0.5000000000000000 0.5000000000000000 0.5000000000000000 F F F 0.5000000000000000 0.5000000000000000 0.6028640220057100 F F T 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 \",\":::\",\"::::\",\"结构优化完成之后将 CONTCAR 作为新的 POSCAR 进行后续运算。\",\" [zjb@op O2]$ cp COUTCAR POSCAR \"]},\"535\":{\"h\":\"Step2:静电自洽\",\"t\":[\"提示\",\"三次静电自洽需要注意:\",\"FFT mesh 需要一致\",\"LCHARG 需要打开\"]},\"536\":{\"h\":\"对 A-B 进行静电自洽 scf\",\"t\":[\"将上一步的 INCAR 修改,使其满足静电自洽的运行:\",\"NSW = 0 IBRION = -1 \",\"提交作业进行静电自洽。\"]},\"537\":{\"h\":\"对 A、B 分别静电自洽\",\"t\":[\"将 A-B 静电自洽用的 INCAR、POSCAR、POTCAR、KPOINTS 复制出来,分别放在 A 和 B 目录中。\",\"[zjb@op O2]$ cp INCAR POSCAR POTCAR KPOINTS ../A/ [zjb@op O2]$ cp INCAR POSCAR POTCAR KPOINTS ../B/ \",\"在 A 目录的 POSCAR 中删除 B 部分对应的点,元素数量改一下,得到 A 部分的 POSCAR,提交作业静电自洽。\",\"在 B 目录的 POSCAR 中删除 A 部分对应的点,元素数量改一下,得到 B 部分的 POSCAR,提交作业静电自洽。\",\"[zjb@op O2_chg_diff]$ cat A/POSCAR O2 1.00000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 12.0000000000000000 O 1 Selective dynamics Direct 0.5000000000000000 0.5000000000000000 0.5000000000000000 F F F 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 [zjb@op O2_chg_diff]$ cat B/POSCAR O2 1.00000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 10.0000000000000000 0.0000000000000000 0.0000000000000000 0.0000000000000000 12.0000000000000000 O 1 Selective dynamics Direct 0.5000000000000000 0.5000000000000000 0.6028640220057100 F F T 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 0.00000000E+00 \"]},\"538\":{\"h\":\"Step3:求差\",\"t\":[\"求差也可以使用 VASPKIT 提供的功能。\",\"在主菜单选择 31) Charge & Spin Density,之后进入 314) Charge-Density Difference,在下一个界面提示输入 O2/CHGCAR A/CHGCAR B/CHGCAR。\",\"======================= File Options ============================ Input the Names of Charge/Potential Files with Space: (e.g., to get AB-A-B, type: ~/AB/CHGCAR ./A/CHGCAR ../B/CHGCAR) ------------>> O2/CHGCAR A/CHGCAR B/CHGCAR -->> (01) Reading Structural Parameters from O2/CHGCAR File... -->> (02) Reading Charge Density From O2/CHGCAR File... -->> (03) Reading Structural Parameters from A/CHGCAR File... -->> (04) Reading Charge Density From A/CHGCAR File... -->> (05) Reading Structural Parameters from B/CHGCAR File... -->> (06) Reading Charge Density From B/CHGCAR File... -->> (07) Written CHGDIFF.vasp File! +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ [zjb@op O2_chg_diff]$ ls A B CHGCAR_diff CHGCAR_sum CHGDIFF.vasp O2 \",\"输出一个 CHGDIFF.vasp,即为所求,下载,VESTA 打开:\",\"CHGDIFF.vasp\"]},\"539\":{\"h\":\"其他\"},\"540\":{\"h\":\"求差的其他方法\"},\"541\":{\"h\":\"chgsum.pl\",\"t\":[\"#Usage $ chgsum.pl # output: CHGCAR_sum # This example [zjb@op O2_chg_diff]$ chgsum.pl A/CHGCAR B/CHGCAR \",\"作用为:\",\"ρ(CHGCAR_sum)​=ρA​+ρB​\",\"运行后在 O2_chg_diff/ 下生成了一个 CHGCAR_sum 文件。\"]},\"542\":{\"h\":\"chgdiff.pl\",\"t\":[\"# Usage chgdiff.pl # output: CHGCAR_diff # This example [zjb@op O2_chg_diff]$ chgdiff.pl O2/CHGCAR CHGCAR_sum \",\"注意是后面的减前面的:\",\"ρ(CHGCAR_diff)​=ρCHGCAR_AB​−ρCHGCAR_sum​\",\"执行后在 O2_chg_diff/ 下生成了一个 CHGCAR_diff 文件,即为电荷密度差,因为\",\"Δρ​=ρAB​−ρA​−ρB​=ρAB​−(ρA​+ρB​)=ρAB​−ρCHGCAR_sum​​\"]},\"543\":{\"h\":\"显示\",\"t\":[\"下载 CHGCAR_diff,使用 VESTA 显示:\",\"O2_chg_diff_VESTA\"]},\"544\":{\"h\":\"为什么 chgdiff.pl 是后减前?\",\"t\":[\"读取源码:\",\"#!/usr/bin/env perl #;-*- Perl -*- @args = @ARGV; @args == 2 || die \\\"usage: chgdiff.pl \\\\n\\\"; open (IN1,$args[0]) || die (\\\"Can't open file $!\\\"); open (IN2,$args[1]) || die (\\\"Can't open file $!\\\"); open (OUT,\\\">CHGCAR_diff\\\"); for ($i=0; $i<5; $i++) { $line1 = ; $line2 = ; $header1 .= $line1; } ... for ($i=0; $i<$psum1/5; $i++) { $line1 = ; $line1 =~ s/^\\\\s+//; $line2 = ; $line2 =~ s/^\\\\s+//; @line1 = split(/\\\\s+/,$line1); @line2 = split(/\\\\s+/,$line2); for ($j=0; $j<@line1; $j++) { $line1[$j] = $line2[$j]-$line1[$j]; } # printf OUT \\\" %18.11E %18.11E %18.11E %18.11E %18.11E\\\\n\\\",$line1[0],$line1[1],$line1[2],$line1[3],$line1[4]; printf OUT \\\" %18.11E\\\" x @line1 . \\\"\\\\n\\\", @line1; } ... \",\"第 5 行:用法:chgdiff.pl .\",\"第 7-15 行:第一个参数 CHGCAR_1 里的每一行记为 line1,第二个参数 CHGCAR_2 里的每一行记为 line2.\",\"第 27 行,line2-line1,即 CHGCAR_2 - CHGCAR_1,即为后减前。\"]},\"545\":{\"h\":\"chgdiff.pl 后少了原子\",\"t\":[\"由源码得,chgdiff.pl 保留的是 file1 的原子信息,所以如果 file1 只有部分原子就会缺。\",\"这个脚本我感觉是 bug,建议把上面第 27 行 line2-line1 改成 line1-line2 一劳永逸。\"]},\"546\":{\"c\":[\"VASP\"]},\"547\":{\"h\":\"自旋电荷密度\",\"t\":[\"本页以 O2 的自选电荷密度为例。\"]},\"548\":{\"h\":\"步骤\",\"t\":[\"本页操作在完成 O2 结构优化、自洽、非自洽 中结构优化、静电自洽后进行。\",\"在 2-scf/ 文件夹中进行。\",\"有两种方法获得其自旋电荷密度:\"]},\"549\":{\"h\":\"方法 1:通过 VTST 脚本\",\"t\":[\"# Usage $ chgsplit.pl # This example [zjb@op 2-scf]$ chgsplit.pl CHGCAR Atoms in file: 2 Points in total charge density: 1200000 Points in magnetization density: 1200000 \",\"得到 CHGCAR_tot、CHGCAR_mag 两个文件。下载,在 VTSTA 中查看:\",\"CHGCAR_mag\",\"CHGCAR_tot\"]},\"550\":{\"h\":\"方法 2:通过 VASPKIT\",\"t\":[\"vaspkit — 31) Charge & Spin Density — 312) Spin Density ,生成了 SPIN.vasp,下载,在 VESTA 中查看。\",\"[zjb@op 5-chg-split]$ vaspkit ------------>> 312 -->> (01) Reading Structural Parameters from CHGCAR File... -->> (02) Reading Charge Density From CHGCAR File... -->> (03) Reading Spin Density From CHGCAR File... -->> (04) Written SPIN.vasp File! \",\"SPIN.vasp\"]},\"551\":{\"h\":\"参考\",\"t\":[\"如何画自旋电荷密度图 | 小木虫\"]},\"552\":{\"c\":[\"VASP\",\"电子结构\"]},\"553\":{\"h\":\"态密度分析\",\"t\":[\"态密度,也就是每个轨道的电子云分布比例,通过态密度可以了解电子结构。\",\"在非自洽计算的基础上进行态密度分析。\",\"本页以计算 O2 的态密度为例。\"]},\"554\":{\"h\":\"步骤\",\"t\":[\"本页操作在完成 O2 结构优化、自洽、非自洽 之后进行。在 3-nscf 文件夹中继续。\",\"计算完成后用 VTST Script 的脚本 split_dos 分离态密度:\",\"[zjb@op 3-nscf]$ split_dos The OUTCAR exists, we use it to get the Fermi level, the RWIGS tag and the number of spins. Fermi level: -6.6846 Spin polarized calculation LORBIT = 11 WARNING: not completely test for vasp.4.* Use at your own risk. Please check results for consistency. 7 6006 0 7 6006 1 6008 12007 2 12009 18008 [zjb@op 3-nscf]$ ls CHG CONTCAR DOS1 DOSCAR IBZKPT KPOINTS OUTCAR PCDAT POTCAR REPORT tmp.dat vasp.pbs WAVECAR CHGCAR DOS0 DOS2 EIGENVAL INCAR OSZICAR out.log POSCAR PROCAR stdout tmp.dat2 vasprun.xml XDATCAR \",\"这一命令后得到了 DOS0、DOS1、DOS2 三个文件,DOS0 是总的态密度,DOS1 和 DOS2 分别是第 1 个 O 原子,第二个 O 原子的态密度。\",\"使用脚本画图:\",\"dosplot.pl DOS0 \",\"执行后生成了 dosplot.eps,下载,使用矢量图工具打开。\",\"dosplot.eps\",\"也可以将 DOS0 回传,使用 Origin 画图。\"]},\"555\":{\"c\":[\"VASP\"]},\"556\":{\"h\":\"Bader 电荷分析\",\"t\":[\"Todo\",\"理查德·贝德(Richard Bader)开发了一种将分子分解为原子的直观方法。他对原子的定义纯粹基于电子电荷密度。Bader 使用所谓的零磁通表面来划分原子。零通量表面是 2D 表面,其上电荷密度垂直于表面。通常在分子系统中,电荷密度在原子之间达到最小值,这是将原子彼此分开的自然位置。除了作为分子中原子可视化的直观方案外,Bader 的定义通常也可用于电荷分析。例如,Bader 体积内的电荷与原子的总电子电荷很接近。电荷分布可用于确定相互作用的原子或分子的多极矩。Bader 的分析也被用来定义原子的硬度,可以用来量化从原子中去除电荷的成本。\"]},\"557\":{\"h\":\"步骤\"},\"558\":{\"h\":\"结构优化\"},\"559\":{\"h\":\"自洽\",\"t\":[\"LAECHG =.TRUE. LCHARG = .TRUE. NSW = 0 IBRION = -1 (前面有了NSW = 0, 这个也可以不设置) \",\"提示\",\"AECCAR0 和 AECCAR2 是由 LAECHG=.TRUE. 控制输出的。\"]},\"560\":{\"h\":\"Bader\",\"t\":[\"chgsum.pl AECCAR0 AECCAR2 #output: CHGCAR_sum bader CHGCAR -ref CHGCAR_sum \",\"生成以下输出文件:ACF.dat,BCF.dat,AtomVolumes.dat。\",\"ACF.dat 包含每个原子的坐标,根据 Bader 分区与其相关的电荷,根据 Bader 分区的整体百分比以及到表面的最小距离。如果使用了伪电位,则应将该距离与核心区域的最大截止半径进行比较。\",\"BCF.dat 包含每个 Bader 最大值的坐标,该体积内的电荷,最近的原子以及到该原子的距离。\",\"AtomVolumes.dat 包含已分配给每个原子的每个卷的编号。\"]},\"561\":{\"h\":\"数据分析\",\"t\":[\"Todo\"]},\"562\":{\"h\":\"参考资料\",\"t\":[\"https://www.cnblogs.com/ljd4you/p/10390512.html\"]},\"563\":{\"c\":[\"VASP\",\"电子结构\"]},\"564\":{\"h\":\"电子结构\"},\"565\":{\"h\":\"使用 NEB 方法计算反应路径\"},\"566\":{\"h\":\"流程\",\"t\":[\"分别对初态和末态进行结构优化\",\"使用脚本生成中间过程图像 (结构)\",\"NEB 计算\",\"处理结果\"]},\"567\":{\"h\":\"文件结构\",\"t\":[\"详情\",\"neb 计算的文件结构示意\",\"这张图整挺好,直接拿过来了,这是原地址。\",\"[zjb@op neb]$ tree . ├── ini ***初态常规结构优化*** │ ├── CONTCAR -初态优化后的结构——新的初态 │ ├── INCAR -初态结构优化的输入文件1 │ ├── ini2.vasp - │ ├── KPOINTS -初态结构优化的输入文件2 │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR -初态结构优化的输入文件3 │ ├── POTCAR -初态结构优化的输入文件4 │ ├── stdout │ ├── vasp.pbs ├── fin ***末态常规结构优化*** │ ├── CONTCAR -末态优化后的结构——新的末态 │ ├── fin2.vasp │ ├── INCAR │ ├── KPOINTS │ ├── OSZICAR │ ├── OUTCAR │ ├── out.log │ ├── POSCAR │ ├── POTCAR │ ├── stdout │ └── vasp.pbs ├── 00 ***↓↓↓*****中间态*****↓↓↓*** │ ├── OUTCAR -初态结构优化后的OUTCAR ../ini/OUTCAR │ ├── POSCAR -初态结构优化后的CONTCAR ../ini/CONTCAR │ └── POSCAR.xyz ├── 01 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ └── POSCAR.xyz │ └── stdout ├── 02 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ ├── POSCAR.xyz │ └── stdout ├── 03 │ ├── CONTCAR │ ├── OUTCAR │ ├── POSCAR │ ├── POSCAR.xyz │ └── stdout ├── 04 │ ├── OUTCAR *末态结构优化后的OUTCAR ../fin/OUTCAR │ ├── POSCAR *末态结构优化后的CONTCAR ../fin/CONTCAR │ └── POSCAR.xyz ***↑↑↑*****中间态*****↑↑↑*** ├── INCAR ***neb计算的输入文件等*** ├── KPOINTS ├── movie ├── movie.xyz ├── neb.dat ├── out.log ├── POTCAR ├── stdout ├── vasp.pbs └── vasprun.xml \"]},\"568\":{\"h\":\"步骤\"},\"569\":{\"h\":\"Step1. 分别对初态和末态进行常规的结构优化\",\"t\":[\"上课时的例子是 O 在 N 掺杂的石墨烯上的吸附,其中 INCAR 为\",\"详情\",\"Global Parameters ISTART = 0 (Read existing wavefunction; if there) LREAL = .FALSE. (Projection operators: automatic) ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .FALSE. (Write WAVECAR or not) LCHARG = .FALSE. (Write CHGCAR or not) ALGO = Fast Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.1 (Smearing value in eV; metals:0.2) NELM = 60 (Max electronic SCF steps) NELMIN = 4 (Min electronic SCF steps) EDIFF = 1E-04 (SCF energy convergence; in eV) Ionic Relaxation NSW = 100 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) ISIF = 0 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -1E-01 (Ionic convergence; eV/AA) POTIM = 0.3 \",\"[!warning] 两个 POSCAR 中,元素顺序必须对应,要不然后面测相似度会出问题,会变得很大。(通过 cif2pos 和 xsd2pos 的默认排的顺序不一样哦,已踩坑)\",\"初态结构优化后 fin/CONTCAR\",\"上图:初态结构优化后的\",\"下图:末态结构优化后的\",\"末态结构优化后后 ini/CONTCAR\",\"初末态看起来不一样是因为周期性导致的,只是显示的不同而已。\"]},\"570\":{\"h\":\"Step2. 使用脚本处理中间过程\",\"t\":[\"结构优化后,原初末态的 CONTCAR 就成为了新的初态和末态\"]},\"571\":{\"h\":\"对初末态测相似度以确定插点数量\",\"t\":[\"# Usage $ dist.pl <初态结构> <末态结构> # This example [zjb@op 3-NEB_O_graphene]$ dist.pl ini/CONTCAR fin/CONTCAR 1.55500097020471 \",\"[!tip] 若返回值<5,通常可以下一步\",\"插点数量通常是 相似度/0.8.\"]},\"572\":{\"h\":\"插入中间图像\",\"t\":[\"nebmake.pl 以线性进行插点。\",\"# Usage $ nebmake.pl <初态结构> <末态结构> <插点数量> # This example [zjb@op 3-NEB_O_graphene]$ nebmake.pl ini/CONTCAR fin/CONTCAR 3 # 3为插点数量,咱这儿把它记为N filetype1: vasp5 filetype2: vasp5 OK, ALL SETUP HERE FOR LATER ANALYSIS, PUT OUTCARs IN FOLDERS 00 and 04 !!! \",\"[!warning] 提交任务时,CPU 需要是插点数量 N 的整数倍\",\"这一步执行后,会生成 N+1 个文件夹,其中 00 是初态,N+1 是末态。同时会把 ini/CONTCAR 复制到 00/POSCAR,把 fin/CONTCAR 复制到 N+1/POSCAR。\",\"根据这一步返回的提示,分别将初末态的 OUTCAR 复制到 00 和 N+1 文件夹,以便于后续分析。\",\"cp ini/OUTCAR 00/ cp fin/OUTCAR 04/ \"]},\"573\":{\"h\":\"使用 nebmovie 查看生成的路线是否合理\",\"t\":[\"nebmovie.pl \",\"执行后会生成 movie.xyz 文件,ase-gui 文件路径 查看。\",\"neb-movie-N_grapene_O_0\"]},\"574\":{\"h\":\"Step3. NEB 计算\"},\"575\":{\"h\":\"准备 NEB 计算的输入文件\",\"t\":[\"POTCAR 和 KPOINTS 不用改直接复制过来就好,不用准备 POSCAR,他已经在上一步被放进 00/ 和 04/ 中了,\",\"INCAR 要修改不少东西:\",\"Global Parameters NPAR = 6 插点个数N的整数倍 Electronic Relaxation EDIFF = 1E-05 Ionic Relaxation NSW = 100 (Max ionic steps) IBRION = 3 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) POTIM = 0 IBRION = 3, POTIM = 0,是VTST识别并启动VTST优化算法的标致 ISIF = 0 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -0.2 (Ionic convergence; eV/AA) NEB LCLIMB = .FALSE. 爬坡(CI-NEB),由于要用neb而不是cineb,所以关闭。 ICHAIN = 0 开启NEB方法 IMAGES = 3 插点个数 IOPT = 7 VTST的优化算法。1-2适合精收敛,7适合粗收敛 MAXMOVE = 0.1 TIMESTEP = 0.05 \",\"[!note] 发现 MAXMOVE=0.2,TIMESTEP=0.1,EDIFF=1E-04,收敛的更快一些。精度的问题罢辽,可以分两次进行,先粗后细呢。\",\"详见 Nudged Elastic Band Options | VTST Tools 和 Optimizer input parameters(IOPT) | VTST Tools。\"]},\"576\":{\"h\":\"提交计算\",\"t\":[\"修改 PBS 脚本文件的核数。数量是插点数量 N 的整数倍。(第 4 行)\",\"注意 walltime,适当长一些。(第 5 行)\",\"修改 PBS 脚本,使其调用 VTST 编译的 VASP 进行计算(第 13,27 行)\",\"[!warning] 需要注意 VTST 编译的时候是使用哪种 mpi(intel mpi OR open mpi)进行并行运行的,如下高亮行 12-13。如果 mpi 选择有误,会出现只算一个点,而其他点不动的情况(反映在 stdout 里是用 6 个核分别把第一个点算了 1 遍,等于把第一个点算了 6 遍),这个问题直到我尝试自己编译 vasp 的时候才发现原因。\",\"[zjb@op test-vtst-neb]$ cat vasp-vtst.pbs #!/bin/sh #PBS -N Untitled #PBS -l nodes=1:ppn=6 #PBS -l walltime=05:30:00 #PBS -j oe #PBS -o ./out.log #PBS -q energy cd ${PBS_O_WORKDIR} source /public/software/profile.d/compiler_intel-composer_xe_2015.2.164.sh # source /public/software/profile.d/mpi_intelmpi-5.0.2.044.sh source /public/software/profile.d/mpi_openmpi-2.0.0-intel.sh echo \\\"=============================================\\\" echo \\\"Starting VASP at\\\" `date` echo \\\"---------------------------------------------\\\" echo \\\"VTST VASP\\\" echo \\\"The PBS_O_WORKDIR is\\\" $PBS_O_WORKDIR echo \\\"The PBS_JOBID is\\\" $PBS_JOBID echo \\\"The PBS_JOBNAME is\\\" $PBS_JOBNAME echo \\\"The PBS_O_QUEUE is\\\" $PBS_O_QUEUE echo \\\"The PBS_O_HOST is\\\" $PBS_O_HOST NP=`cat $PBS_NODEFILE | wc -l` echo \\\"The num of PBS_NODEFILE is\\\" $NP echo \\\"The PBS_NODEFILE IS:\\\" cat $PBS_NODEFILE mpirun -np $NP -machinefile $PBS_NODEFILE /public/software/apps/vasp/5.4.1/vtst-ompi/vasp_std >& stdout echo \\\"---------------------------------------------\\\" echo \\\"End task at \\\" `date` echo \\\"=============================================\\\" \",\"脚本因机器实际环境不同而需要更改,但大同小异。\",\"如何确定调用的是 VTST&VASP?\",\"在 01~N+1/ 下,grep VTST OUTCAR 应有 VTST 版本号返回。\",\"[!note] NOTE: NEB 接着算 如果算了一半被 kill 了,要接着算,只需要把 00、01、02 下的 CONTCAR 覆盖 POSCAR,然后再次提交就可。\"]},\"577\":{\"h\":\"检查是否收敛\",\"t\":[\"# Usage $ nebef.pl # This example [zjb@op test-vtst-neb]$ nebef.pl 0 0.000000 -224.399900 0.000000 1 0.148350 -224.208300 0.191600 2 0.132181 -223.262900 1.137000 3 0.096709 -222.345700 2.054200 4 0.000000 -222.517000 1.882900 \",\"返回结果为 序号—最大原子受力—能量—相对初态的能量.\",\"当所有插点的最大原子受力都 < |EDIFFG| 时,计算收敛。\",\"[!tip] 如果发现这一步受力那一列全是 0,可以考虑检查一下是否调用了 VTST 编译的 VASP 进行计算。\"]},\"578\":{\"h\":\"检查切向力\",\"t\":[\"# Usage $ nebbarrier.pl && cat neb.dat # This example [zjb@op test-vtst-neb]$ nebbarrier.pl && cat neb.dat 0 0.000000 0.000000 0.000000 0 1 0.389947 0.191613 -1.474390 1 2 0.789822 1.137031 -3.591041 2 3 1.212818 2.054245 0.086021 3 4 1.701348 1.882893 0.000000 4 \",\"返回结果为 序号——距离——能量——切向力。\",\"该命令没有输出到屏幕的内容,而是生成 neb.dat 文件。\",\"第二列表示距离 (即临近两结构的 dist.pl 的计算结果),\",\"第三列表示能量 (以初态能量为参考值),\",\"第四列为切向力 (forces along the neb) 过渡态附近切向力会正负变号,而且接近 0。(例如 3)\"]},\"579\":{\"h\":\"频率计算\",\"t\":[\"Todo...\"]},\"580\":{\"h\":\"打包结果\",\"t\":[\"# Usage $ nebresult.pl # This example [zjb@op test-vtst-neb]$ nebresults.pl Unziping the OUTCARs ... done Do nebbarrier.pl ; nebspline.pl Do nebef.pl Do nebmovie.pl Do nebjmovie.pl Do nebconverge.pl Forces and Energy: 0 0.000000 -224.399900 0.000000 1 0.148350 -224.208300 0.191600 2 0.132181 -223.262900 1.137000 3 0.096709 -222.345700 2.054200 4 0.000000 -222.517000 1.882900 Extremum 1 found at image 0.000000 with energy: 0.000000 Extremum 2 found at image 0.000330 with energy: -0.000000 Extremum 3 found at image 2.985984 with energy: 2.054500 \",\"从输出和源码可以了解到,nebresult.pl 做的事情如下:\",\"解压缩 OUTCAR.tg\",\"执行 nebbarrier.pl,该脚本生成 neb.dat,将收敛情况,NEB 方向力,能量,写入\",\"执行 nebspline.pl,该脚本对 neb.dat 里 能量和距离 的关系进行插值,插值结果写入 spline.dat 文件,所有极值的位置和能量写入 exts.dat,把 MEP 画成 mep.eps。 mep.eps 是以 dist.pl 距离为横坐标,能量为纵坐标画出的能势垒图,可用矢量图编辑软件打开,我们也可以使用 neb.dat 的数据用 Origin 画图。\",\"执行 nebef.pl,并将其结果(力和能量)写入 nebef.dat。\",\"执行 nebmovie.pl,该脚本生成结构变化\",\"执行 nebjmovie.pl,\",\"执行 nebconverge.pl\",\"还有对各文件夹中的 OUTCAR 打包压缩。 我在源码里注释掉了这一部分。\",\"屏显 nebef.dat 和 exts.dat。\",\"生成的 vaspgr 文件夹内是各个插点结构的收敛图。\",\"具体见 Nudged Elastic Band Scripts | VTST Tools\",\"其中 mep.eps 就是这样子:\",\"neb-N_graphene_O-mep-eps\"]},\"581\":{\"h\":\"其他\"},\"582\":{\"h\":\"[Nudged Elastic Band] Scripts\",\"t\":[\"Nudged Elastic Band Scripts | VTST Tools\"]},\"583\":{\"h\":\"[Nudged Elastic Band] Options\",\"t\":[\"Nudged Elastic Band Options | VTST Tools\",\"Variable\",\"Default Value\",\"Type\",\"Description\",\"ICHAIN\",\"0 | int\",\"Indicates which method to run. NEB (ICHAIN=0) is the default\",\"IMAGES\",\"none\",\"int\",\"Number of NEB images between the fixed endpoints\",\"SPRING\",\"-5.0\",\"float\",\"The spring constant, in eV/Ang^2 between the images; negative value turns on nudging\",\"LCLIMB\",\".TRUE.\",\"boolean\",\"Flag to turn on the climbing image algorithm\",\"LTANGENTOLD\",\".FALSE.\",\"boolean\",\"Flag to turn on the old central difference tangent\",\"LDNEB\",\".FALSE.\",\"boolean\",\"Flag to turn on modified double nudging\",\"LNEBCELL\",\".FALSE.\",\"boolean\",\"Flag to turn on SS-NEB. Used with ISIF=3 and IOPT=3.\",\"JACOBIAN\",\"(Ω/N){1/3}N{1/2}\",\"real\",\"Controls weight of lattice to atomic motion. Ω is volume and N is the number of atoms.\"]},\"584\":{\"h\":\"参考资料\",\"t\":[\"vasp+VTST 进行 NEB 过渡态计算 | cndaqiang\",\"vasp-vtst 计算过渡态--NEB 方法 | 刘锦程\",\"Nudged Elastic Band Scripts | VTST Tools\",\"Nudged Elastic Band Options | VTST Tools\",\"FORCE BASED OPTIMIZERS (IOPT) | VTST Tools\"]},\"585\":{\"c\":[\"VASP\"]},\"586\":{\"h\":\"Dimer 方法\",\"t\":[\"Todo\"]},\"587\":{\"c\":[\"VASP\",\"反应路径\"]},\"588\":{\"h\":\"频率分析\",\"t\":[\"Todo.... 频率分析是个啥,理论知识...\"]},\"589\":{\"h\":\"频率分析作用\",\"t\":[\"确定结构是否稳定;\",\"看振动方式和大小,用来和实验对比,棋博士最新的文章就是一个非常好的例子;\",\"反应热,反应能垒,吸附能等的零点能矫正;\",\"确认过渡态(有一个振动的虚频)\",\"热力学中计算 entropy,用于计算化学势,微观动力学中的指前因子和反应能垒。\"]},\"590\":{\"h\":\"步骤\"},\"591\":{\"h\":\"结构优化\",\"t\":[\"在常规结构优化基础上进行下一步。\",\"待解决的问题\",\"乙醇结构优化中,若指定 EDIFF=1E-4(第一次)或 1E-6(第二次),EDIFFG=-2E-2,POTIM 默认(0.015),计算无法收敛(每个离子步都算满了 60 个电子步,19-20 个离子步后报错),提示如下:\",\"ZBRENT: fatal error in bracketing please rerun with smaller EDIFF, or copy CONTCAR to POSCAR and continue \",\"但(第三次)EDIFF 和 EDIFFG 默认,POTIM=0.05 时可在 7 步收敛(每个离子步仍是 60 电子步)。(此时查 OUTCAR 有 EDIFF=0.1E-3,EDIFFG=0.1E-2)(POTIM 默认 0.5)\",\"初始结构为 www.chemspider.com 下载,20 20 20 的 cell,K 点 gamma 111。原因待测试。(其余参数 ISMEAR=0,SIGMA=0.01,IBRION=2,NSW=100,未给出均为默认)(测试一下①EDIFF=1E-4,EDIFFG=-2E-2,POTIM=0.05;②EDIFF=0.1E-3,EDIFFG=-0.1E-2,POTIM 默认)\"]},\"592\":{\"h\":\"频率计算\",\"t\":[\"IBRION = 5 # Use 5 for Freq calculation NSW = 1 NFREE = 2 # Do not use NFREE=1 POTIM = 0.02 EDIFF = 1E-6 # NCORE = 4 # comment this line \",\"IBRION 的值改成 5\",\"POTIM 用一个更小的值,我们这里用的 0.02,默认值是 0.015\",\"NSW 设置成 1,这个可以直接不管,继续采用优化时的 NSW 值,因为你设置成 1, 2, 3, 4, 5, …, 1000 都不会影响计算;但不能不设置(因为默认值是 0,这时算个单点后任务便停止了。)\",\"NFREE=2 添加这一个参数,表明原子在某一方向上正反两个方向移动;\",\"此外,EDIFF 也要设置一个严格的值(频率计算时,默认值为 1E-6,足够了!下一节会讲到)\"]},\"593\":{\"h\":\"结果分析\"},\"594\":{\"h\":\"步数\",\"t\":[\"当设置了 NFREE=2 且所有原子弛豫的时候,频率计算需要 6N+1 步。N 为体系中的振动的原子数,这是因为:\",\"第一个离子步是个频率计算前的单点计算。\",\"N 个原子,每个原子在 x、y、z 三个方向均有一个自由度,共 3N。\",\"设置 NFREE=2,也就是在每个方向上 +POTIM 和 –POTIM 都移动并算一下,就有了3N×2=6N步。\",\"官网原文如下,还要查阅 IBRION 和 NFREE 的相关内容。\",\"The parameter NFREE determines how many displacements are used for each direction and ion, and POTIM determines the step size. The step size is defaulted to 0.015 ? (starting from VASP.5.1), if too large values are supplied in the input file. Expertise shows that this is a very reasonable compromise.\",\"NFREE=2 uses central differences, i.e., each ion is displaced by a small positive and negative displacement, ±POTIM, along each of the cartesian directions.`\",\"例如,乙醇分子CH3​CH2​OH,含有 9 个原子,其振动频率计算应有 55 步。 Ex24 乙醇分子振动频率计算(二) | LVTHW\",\"这一过程在 stdout 里也有较为明显的表示:\",\" 1 F= -.10036430E+02 E0= -.10036285E+02 d E =-.289628E-03 Finite differences POTIM= 0.02000 DOF= 27 bond charge predicted 2 F= -.78734041E+01 E0= -.78734041E+01 d E =-.373678E-15 Finite differences progress: Degree of freedom: 1/ 27 Displacement: 1/ 2 Total: 1/ 54 bond charge predicted 3 F= -.67069872E+01 E0= -.67026196E+01 d E =-.873513E-02 Finite differences progress: Degree of freedom: 1/ 27 Displacement: 2/ 2 Total: 2/ 54 bond charge predicted 4 F= -.67462590E+01 E0= -.67409236E+01 d E =-.106707E-01 Finite differences progress: Degree of freedom: 2/ 27 Displacement: 1/ 2 Total: 3/ 54 bond charge predicted ······ 55 F= -.98834544E+01 E0= -.98834523E+01 d E =-.431696E-05 Finite differences progress: Degree of freedom: 27/ 27 Displacement: 2/ 2 Total: 54/ 54 Finite differences POTIM= 2.000000000000000E-002 \"]},\"595\":{\"h\":\"振动频率可视化\",\"t\":[\"使用 p4vasp 或 jmol。 Ex25 乙醇分子振动频率计算(三) | LVTHW\"]},\"596\":{\"h\":\"OUTCAR 中的信息\",\"t\":[\" Finite differences progress: Degree of freedom: 27/ 27 Displacement: 2/ 2 Total: 54/ 54 SECOND DERIVATIVES (NOT SYMMETRIZED) ------------------------------------ 1X 1Y 1Z 2X 2Y 2Z 3X 3Y 3Z 4X 4Y 4Z 5X 5Y 5Z 6X 6Y 6Z 7X 7Y 7Z 8X 8Y 8Z 9X 9Y 9Z 1X -0.796290 -0.233038 0.000000 1.493917 -0.390431 0.000000 11.997934 0.713060 0.000000 -0.502744 -0.458102 -1.112604 -0.502744 -0.458102 1.112604 -9.852689 -0.544908 0.000000 1.558071 -1.815756 2.790667 1.558071 -1.815756 -2.790667 -4.953526 5.003033 0.000000 1Y 0.375968 0.109966 0.000000 -0.221500 -0.104078 0.000000 -7.444189 0.714797 0.000000 0.061864 -0.018602 -0.070447 0.061864 -0.018602 0.070447 6.078079 -0.495659 0.000000 0.526607 -0.086673 0.245169 0.526607 -0.086673 -0.245169 0.034699 -0.014475 0.000000 1Z 5.808229 -2.434202 -0.224578 9.890712 -0.191510 -0.835513 -196.271299 22.155307 -2.396373 4.894997 -1.437502 1.327563 3.314884 -1.079152 -0.255396 159.821373 -14.859397 2.205595 2.708645 -0.577444 -1.520109 5.153556 -1.595313 1.097139 4.678904 0.019213 0.601672 ······ 9Z -2.239638 -0.224936 0.640338 -2.848485 -0.518046 0.053144 92.115496 -4.125652 -4.274775 -5.253060 0.192219 0.259185 -3.326232 -0.413466 -0.479808 -74.488855 6.180803 1.430131 -0.656228 -1.103483 0.253415 -0.780173 0.700478 3.745246 -2.522825 -0.687916 -1.626877 Eigenvectors and eigenvalues of the dynamical matrix ---------------------------------------------------- 1 f = 201.746767 THz 1267.612322 2PiTHz 6729.547573 cm-1 834.357861 meV X Y Z dx dy dz 8.658517 9.304797 0.000000 -0.012567 0.004216 0.089194 0.120860 9.184513 0.000000 -0.000391 0.000152 0.006966 9.405744 18.133372 0.000000 0.241400 -0.053508 -0.052395 12.979810 18.660074 17.736563 -0.057237 0.039130 0.448592 12.979810 18.660074 2.263437 0.019013 0.039514 0.091267 8.203737 18.242837 0.000000 -0.670436 -0.088927 0.146993 16.776380 8.675669 2.229820 0.035997 -0.046760 -0.002012 16.776380 8.675669 17.770180 0.062323 -0.406063 0.024770 14.098762 10.462995 0.000000 -0.025516 0.172042 -0.171822 2 f = 47.211040 THz 296.635710 2PiTHz 1574.790721 cm-1 195.249235 meV X Y Z dx dy dz 8.658517 9.304797 0.000000 0.042971 0.024710 0.035150 ······ 27 f/i= 203.242065 THz 1277.007557 2PiTHz 6779.425348 cm-1 840.541919 meV X Y Z dx dy dz 8.658517 9.304797 0.000000 -0.002381 -0.002248 -0.090493 ······ Finite differences POTIM= 2.000000000000000E-002 LATTYP: Found a simple cubic cell. ALAT = 20.0000000000 \",\"频率相关的信息会被输出到 OUTCAR 的这两个部分,\",\"第一部分:二阶导,没啥用\",\"第二部分:特征值和特征向量,主要看这个\",\"1 f 行(line20)是四个频率单位的数值。下面几行是每个原子的坐标(X、Y、Z)及其在 x y z 方向上的振动大小(dx、dy、dz),坐标是分数坐标系。\",\"四个频率的换算:\",\"​E=hc/λν=c/λν~=1/λT=1/ν​in which,​E=energy(eV)λ=wavelength (m)λ~ = wavenumber (m−1)T=period (s)ν=frequency (s−1orHz)h=Planck’s constant = 4.135667516×10−15eV⋅sc=speed of light = 299792458 m/s​\",\"此外,1THz=1012Hz,1cm−1=100m−1 。\",\"还可以用 http://halas.rice.edu/conversions 在线转换单位。\",\"频率提取:\",\"[2020223055092@mu02 freq]$ grep cm-1 OUTCAR 1 f = 201.746767 THz 1267.612322 2PiTHz 6729.547573 cm-1 834.357861 meV 2 f = 47.211040 THz 296.635710 2PiTHz 1574.790721 cm-1 195.249235 meV 3 f = 35.921110 THz 225.698994 2PiTHz 1198.199235 cm-1 148.557825 meV 4 f = 30.557648 THz 191.999365 2PiTHz 1019.293390 cm-1 126.376319 meV 5 f = 28.299918 THz 177.813630 2PiTHz 943.983631 cm-1 117.039096 meV 6 f = 24.737229 THz 155.428593 2PiTHz 825.145113 cm-1 102.304992 meV 7 f = 20.159900 THz 126.668391 2PiTHz 672.461876 cm-1 83.374677 meV 8 f = 17.283332 THz 108.594381 2PiTHz 576.509899 cm-1 71.478143 meV 9 f = 16.416363 THz 103.147049 2PiTHz 547.590902 cm-1 67.892643 meV 10 f = 12.378931 THz 77.779114 2PiTHz 412.916663 cm-1 51.195160 meV 11 f = 7.042735 THz 44.250808 2PiTHz 234.920339 cm-1 29.126420 meV 12 f = 6.004684 THz 37.728545 2PiTHz 200.294706 cm-1 24.833387 meV 13 f = 3.621816 THz 22.756539 2PiTHz 120.810763 cm-1 14.978631 meV 14 f = 1.485344 THz 9.332691 2PiTHz 49.545738 cm-1 6.142891 meV 15 f/i= 0.608073 THz 3.820638 2PiTHz 20.283146 cm-1 2.514790 meV 16 f/i= 2.581155 THz 16.217876 2PiTHz 86.098066 cm-1 10.674804 meV 17 f/i= 4.872529 THz 30.615003 2PiTHz 162.530067 cm-1 20.151167 meV 18 f/i= 6.118100 THz 38.441159 2PiTHz 204.077858 cm-1 25.302439 meV 19 f/i= 8.804759 THz 55.321930 2PiTHz 293.695124 cm-1 36.413568 meV 20 f/i= 10.508365 THz 66.026003 2PiTHz 350.521305 cm-1 43.459119 meV 21 f/i= 15.745766 THz 98.933566 2PiTHz 525.222205 cm-1 65.119277 meV 22 f/i= 18.917161 THz 118.860028 2PiTHz 631.008549 cm-1 78.235117 meV 23 f/i= 21.091439 THz 132.521422 2PiTHz 703.534668 cm-1 87.227213 meV 24 f/i= 24.556339 THz 154.292030 2PiTHz 819.111283 cm-1 101.556892 meV 25 f/i= 29.978804 THz 188.362378 2PiTHz 999.985217 cm-1 123.982410 meV 26 f/i= 35.952889 THz 225.898667 2PiTHz 1199.259268 cm-1 148.689252 meV 27 f/i= 203.242065 THz 1277.007557 2PiTHz 6779.425348 cm-1 840.541919 meV \",\"共 27 个振动模式,最后f/i指虚频。\",\"前面我们提到过,虚频可以判断结构是否稳定。那这里,我们计算出的乙醇分子结构肯定不稳定喽?不一定。\",\"因为频率计算和软件的数值积分有关(我也不清楚数值积分怎么进行的);\",\"计算过程中我们的设置对频率计算影响很大,KPOINTS, ENCUT, EDIFF, POTIM 等都会影响计算的精度;综合这些因素,对于分子的振动频率来说(注意:声子谱不适用)一般低于 100cm−1 的频率可以忽略。严格点可以降到 50cm−1,也就是说:如果你在计算中发现有个 50cm−1 左右的虚频,完全可以不考虑。\"]},\"597\":{\"h\":\"零点能\",\"t\":[\"零点能ZPE=1/2hν\",\"# 所有振动的能量之和 (所有的hv之和,单位meV) grep 'f =' OUTCAR | awk '{print $10}' | paste -sd+ | bc # 零点能(eV) 将以下两行写脚本(meV转换eV除以1000,然后1/2,等于上式结果除以2000) hv_sum=$(grep\\\"f =\\\" OUTCAR | awk '{print $10}'| paste -sd+ | bc) echo \\\"scale =6; $hv_sum/2000\\\" | bc \",\"零点能校正:\",\"结构优化之后得到分子的能量(OSZICAR 中的E0​): E0​\",\"频率计算后得到分子的零点能: ZPE\",\"零点能校正之后分子的能量为:EZPE​=E0​+ZPE\",\"过渡态和反应热的零点能校正:\",\"对一个反应:IS --> TS --> FS\",\"优化反应物 IS 和产物 FS 的结构,获得能量:E0​(IS), E0​(FS);\",\"对反应物和产物进行频率计算,获得各自的零点能:ZPE(IS),ZPE(FS)。\",\"搜索过渡态,获得结构和能量 E0​(TS);\",\"过渡态频率分析,获得零点能 ZPE(TS)。\",\"不考虑零点能的反应能垒 (Ea​) 和反应热 (ΔE):\",\"Ea​=E0​(TS)–E0​(IS)ΔE=E0​(FS)–E0​(IS)\",\"考虑零点能校正:\",\"Ea′​ΔE′​=EZPE​(TS)–EZPE​(IS)=E0​(TS)+ZPE(TS)–E0​(IS)–ZPE(IS)=Ea​+ZPE(TS)–ZPE(IS)=ΔE+ZPE(FS)–ZPE(IS)​\",\"零点能校正的情况:\",\"频率计算时放开哪些原子看体系,看关注哪些部分。在过渡态中,IS、FS、TS 固定和放开的要一致。\"]},\"598\":{\"h\":\"影响频率计算的因素\",\"t\":[\"Ex 27 乙醇分子的振动频率计算(五) | LVTHW\",\"EDIFFG,增强收敛标准对虚频并没有什么好的效果。\",\"ENCUT,对零点能影响很小,增大截断能可以减小虚频,但并不是算频率就要增大截断能。\",\"PREC,\",\"POTIM\",\"POINTS\"]},\"599\":{\"h\":\"备注\",\"t\":[\"获取虚频\",\"grep 'f/i' OUTCAR | awk '{print $1 \\\"\\\\t \\\" $2 \\\"\\\\t\\\" $7 \\\"\\\\t\\\" $8 \\\"\\\\t \\\" $9 \\\"\\\\t\\\" $10 \\\"\\\\t\\\" $11}' \",\"获取时间\",\"grep Elapsed */OUTCAR | sort -n \",\"待解决的问题\",\"LVTHW 算出来 3 个虚频,我算的 13 个。哪里出了问题\"]},\"600\":{\"c\":[\"VASP\",\"反应路径\"]},\"601\":{\"h\":\"反应路径\"},\"602\":{\"h\":\"分子动力学\",\"t\":[\"课上:八个水分子为例的分子动力学。\"]},\"603\":{\"h\":\"分子动力学\"},\"604\":{\"h\":\"步骤\"},\"605\":{\"h\":\"建模\",\"t\":[\"在 MS 中建立模型,上传,vaspkit-106。\"]},\"606\":{\"h\":\"结构优化\",\"t\":[\"INCAR 为:\",\"详情\",\"[zjb@op geo2]$ cat INCAR Global Parameters ISTART = 0 (Read existing wavefunction; if there) # ISPIN = 2 (Spin polarised DFT) ICHARG = 2 (Non-self-consistent: GGA/LDA band structures) LREAL = .FALSE. (Projection operators: automatic) ENCUT = 400 (Cut-off energy for plane wave basis set, in eV) PREC = Normal (Precision level) LWAVE = .FALSE. (Write WAVECAR or not) LCHARG = .FALSE. (Write CHGCAR or not) NPAR = 4 (Max is no. nodes; don't set for hybrids) ALGO = Fast Electronic Relaxation ISMEAR = 0 (Gaussian smearing; metals:1) SIGMA = 0.05 (Smearing value in eV; metals:0.2) EDIFF = 1E-04 (SCF energy convergence; in eV) Ionic Relaxation NSW = 100 (Max electronic SCF steps) IBRION = 2 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) POTIM = 0.3 #ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) EDIFFG = -1E-02 (Ionic convergence; eV/AA) # ISM = 2 (Symmetry: 0=none; 2=GGA; 3=hybrids) \",\"需要把 walltime 加长,课上演示失败的原因就是到了 walltime。我加到了 01:30:00。\",\"疑惑:怎样迅速达到收敛?这个硬生生跑完了 100 步...\"]},\"607\":{\"h\":\"分子动力学\",\"t\":[\"在结构优化基础上,对 INCAR 做如下修改\",\"Ionic Relaxation NSW = 100 (Max electronic SCF steps) IBRION = 0 (Algorithm: 0-MD; 1-Quasi-New; 2-CG) POTIM = 1 SMASS = 0 TEBEG = 350 TEEND = 350 # ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions) # EDIFFG = -1E-02 (Ionic convergence; eV/AA) # ISM = 2 (Symmetry: 0=none; 2=GGA; 3=hybrids) \"]},\"608\":{\"h\":\"结果分析\",\"t\":[\"使用 grep T= stdout 查看数据。使用 grep T= stdout > md-data.txt 将数据保存到 md-data.txt 文件,下载,导入 Origin。\"]},\"609\":{\"c\":[\"VASP\",\"分子动力学\"]},\"610\":{\"h\":\"分子动力学\"},\"611\":{\"h\":\"K-PATH\",\"t\":[\"然后打开 vaspkit,依次进入 3,303。\",\"[zjb@op NaCl]$ cp NaCl.vasp POSCAR [zjb@op NaCl]$ vaspkit \\\\\\\\\\\\/// / _ _ \\\\ Hey, you must know what you are doing. (| (.)(.) |) Otherwise you might get wrong results! +-----.OOOo--()--oOOO.------------------------------------------+ | VASPKIT Version: 1.12 (01 Mar. 2020) | | Core Developer: Vei WANG (wangvei@icloud.com) | | Main Contributors: Nan XU, Jin-Cheng LIU & Gang TANG | | Please send Bugs and Suggestions to vaspkit@gmail.com | +-----.oooO-----------------------------------------------------+ ( ) Oooo. \\\\ ( ( ) \\\\_) ) / (_/ ===================== Structural Options ======================== 1) VASP Input Files Generator 2) Elastic-Properties 3) K-Path Generator 4) Structure Editor 5) Catalysis-ElectroChem Kit 6) Symmetry Search ===================== Electronic Options ======================== 11) Density-of-States 21) DFT Band-Structure 23) 3D Band-Structure 25) Hybrid-DFT Band-Structure 26) Fermi-Surface 28) Band-Structure Unfolding =========== Charge & Potential & Wavefunction Options =========== 31) Charge & Spin Density 42) Potential-Related 51) Wave-Function Analysis ====================== Misc Utilities =========================== 71) Optical-Properties 72) Molecular-Dynamics Kit 73) VASP2other Interface 74) USER interface 91) Semiconductor Calculator 92) 2D-Materials Kit 0) Quit ------------>> 3 ===================== K-Path Options ============================ 301) 1D Nano Structure 302) 2D Nano Structure (Experimental) 303) 3D bulk structure (Experimental) 304) Phonopy K-Path for 2D Nano Structure (Experimental) 0) Quit 9) Back ------------>> 303 +-------------------------- Warm Tips --------------------------+ The suggested K-Path is only for standardized primtive cell. It is for reference only and you can manually modify K-Path. +---------------------------------------------------------------+ +-------------------------- Warm Tips --------------------------+ See An Example in vaspkit/examples/seek_kpath/GaAs_bulk. The suggested K-Path is only for standardized primtive cell. This Feature is Experimental & Check Your System using SeeK-Path. For More details See [www.materialscloud.org/work/tools/seekpath]. +---------------------------------------------------------------+ -->> (01) Reading Structural Parameters from POSCAR File... +-------------------------- Summary ----------------------------+ Prototype: AB Total Atoms in Input Cell: 8 Lattice Constants in Input Cell: 5.620 5.620 5.620 Lattice Angles in Input Cell: 90.000 90.000 90.000 Total Atoms in Primitive Cell: 2 Lattice Constants in Primitive Cell: 3.974 3.974 3.974 Lattice Angles in Primitive Cell: 60.000 60.000 60.000 Crystal System: Cubic Crystal Class: m-3m Bravais Lattice: cF Extended Bravais Lattice: cF2 Space Group: 225 Point Group: 32 [ Oh ] International: Fm-3m Symmetry Operations: 192 Suggested K-Path: (shown in the next line) [ Gamma-X-U|K-Gamma-L-W-X ] +---------------------------------------------------------------+ -->> (02) Written PRIMCELL.vasp file. -->> (03) Written HIGH_SYMMETRY_POINTS File for Reference. -->> (04) Written POTCAR File with the Recommended Potential! -->> (05) Written KPATH.in File for Band-Structure Calculation. +----------------------------WARNING----------------------------+ | Do NOT forget to copy PRIMCELL.vasp to POSCAR unless you know | | what you are doing. Otherwise you might get wrong results! | +---------------------------------------------------------------+ +---------------------------------------------------------------+ | * ACKNOWLEDGMENTS * | | Other Contributors: Xue-Fei LIU, Peng-Fei LIU, Dao-Xiong WU, | | Zhao-Fu ZHANG, Tian WANG, Ya-Chao LIU, Qiang LI, iGo and You! | +---------------------------------------------------------------+ | * CITATIONS * | | We Would Appreciate if You Cite in Your Research with VASPKIT.| | [1] V. Wang, N. Xu, J.C. LIU, G. Tang, et al, VASPKIT: A Pre- | | and Post-Processing Program for VASP Code, arXiv:1908.08269. | +---------------------------------------------------------------+ [zjb@op NaCl]$ \",\"之后这个目录会有如下文件:\",\"[zjb@op NaCl]$ ll total 400 -rw-r--r-- 1 zjb energy 957 Oct 31 21:02 HIGH_SYMMETRY_POINTS -rw-r--r-- 1 zjb energy 860 Oct 31 21:03 KPATH.in -rw-r--r-- 1 zjb energy 4008 Oct 30 16:14 NaCl_import.cif -rw-r--r-- 1 zjb energy 706 Oct 30 16:19 NaCl.vasp -rw-r--r-- 1 zjb energy 706 Oct 31 21:02 POSCAR -rw-r--r-- 1 zjb energy 404221 Oct 31 21:03 POTCAR -rw-r--r-- 1 zjb energy 382 Oct 31 21:02 PRIMCELL.vasp \",\"这样就生成了 POACAR 和 POTCAR。\",\"[zjb@op NaCl]$ cat POSCAR NaCl_import 1.0 5.6199998856 0.0000000000 0.0000000000 0.0000000000 5.6199998856 0.0000000000 0.0000000000 0.0000000000 5.6199998856 Na Cl 4 4 Direct 0.000000000 0.000000000 0.000000000 0.000000000 0.500000000 0.500000000 0.500000000 0.000000000 0.500000000 0.500000000 0.500000000 0.000000000 0.500000000 0.500000000 0.500000000 0.500000000 0.000000000 0.000000000 0.000000000 0.500000000 0.000000000 0.000000000 0.000000000 0.500000000 \"]},\"612\":{\"c\":[\"VASP\"]},\"613\":{\"h\":\"ASE-usage\",\"t\":[\"原子模拟环境(Atomic Simulation Environment)(ASE)是一组工具和 Python 模块,用于设置,操作,运行,可视化和分析原子模拟。\",\"参考文档:https://wiki.fysik.dtu.dk/ase/ase/gui/gui.html?highlight=gui#module-ase.gui\"]},\"614\":{\"c\":[\"Other App\"]},\"615\":{\"h\":\"其他\"},\"616\":{\"h\":\"VASP 运行中的错误\"},\"617\":{\"h\":\"Error EDDDAV: Call to ZHEGV failed. Returncode = xx\",\"t\":[\"这是对角化例程的错误。您可以尝试切换到不同的方法(即 ALGO)或使用倒数第二步的位置而不是最后一步。查看结构(例如在 VESTA 中)以确保它仍然看起来像您期望的那样也很有帮助。偶尔会发生两个原子在弛豫过程中彼此靠近的情况。特别要检查离子循环内的所有电子迭代是否收敛。\",\"参考:Re: on solving \\\"Error EDDDAV: Call to ZHEGV failed. Returncode = xx\\\" (vasp.at)\"]},\"618\":{\"h\":\"forrtl: severe (174): SIGSEGV, segmentation fault occurred\",\"t\":[\"分段错误,疑似是系统堆栈限制过小导致,使用 ulimit -s unlimited 解决,但这只能解决当前 shell 的 mpirun,不能解决下次登录 shell 运行 mpirun 以及 PBS 调度计算节点的堆栈大小。\",\"参考 PBS 解除堆栈大小限制 解决。\"]},\"619\":{\"h\":\"POSCAR 与其他格式互转\"},\"620\":{\"h\":\"将 POSCAR 转换为 xsd 格式文件\",\"t\":[\"该方法依赖 ASE。\"]},\"621\":{\"h\":\"ASE 的 ase.io.read() 与 ase.io.write()\",\"t\":[\"ase.io.read() 与 ase.io.write(),文档见 File input and output — ASE documentation (dtu.dk)\"]},\"622\":{\"h\":\"ase.io.read()\",\"t\":[\"【功能为:Read Atoms object(s) from file】\",\"官方关于 ase.io.read() 的使用为:\",\"ase.io.read(filename: Union[str, pathlib.PurePath, IO], index: Optional[Any] = None, format: Optional[str] = None, parallel: bool = True, do_not_split_by_at_sign: bool = False, **kwargs) \",\"一般我们只需要提供 文件名称及其类型 就行,比如:\",\"ase.io.read(filename, format=files_format) \",\"如,我需要读取文件‘POSCAR’,文件类型为‘vasp’,则函数调用时应为:\",\"ase.io.read('POSCAR, format='vasp') \"]},\"623\":{\"h\":\"ase.io.write()\",\"t\":[\"【功能为:Write Atoms object(s) to file】\",\"官方关于 ase.io.write() 的使用为:\",\"ase.io.write(filename: Union[str, pathlib.PurePath, IO], images: Union[ase.atoms.Atoms, Sequence[ase.atoms.Atoms]], format: Optional[str] = None, parallel: bool = True, append: bool = False, **kwargs: dict) \",\"其使用与 ase.io.read() 的相类似,不同地是 需要指定需要写入文件的 atoms objects,其实就是原子信息,输入的类型可以是 Atoms object or list of Atoms objects。由 ase.io.read() 函数可以知道,一份有关原子信息的文件其实就是 atoms object。所以:\",\"ase.io.write(‘test.xsd’, atoms object,format='xsd') \",\"这里 test. xsd 是希望得到的文件格式的文件名 + 后缀名,POSCAR 是指读取的文件,format='xsd' 是指信息写入文件的文件类型。\",\"所以 ase 转换文件格式的原理 是:\",\"先读取文件中的所有信息,转为 atoms object\",\"再将 atoms object 写入其他格式的文件中\"]},\"624\":{\"h\":\"单份 poscar 文件转换为 xsd 文件\",\"t\":[\"比如,由 VASP 得到一份 POSCAR 文件,这里实现将其文件格式转换为 xsd 格式的文件,文件名为 test。\",\"代码思路就是 (调用 ase.io 模块):\",\"使用 read() 函数读取文件信息,暂存为 atoms object\",\"接着使用 write() 函数将该 atoms object 写入文件\",\"from ase.io import read,write poscar_file=read('POSCAR',format='vasp') xsd_file=write('test.xsd',poscar_file,format='xsd') \",\"注意:文件名需要带有文件格式后缀\"]},\"625\":{\"h\":\"将多份 poscar 文件转换为 xsd 文件\",\"t\":[\"结合 for 循环遍历文件输入\\\\输出 atoms object,即可实现批量操作。\",\"def poscar_to_xsd(file_PATH): #file_PATH为储存所有待转换格式的文件的文件夹路径 tqdm=os.listdir(file_PATH)#文件夹中的文件列表 for i in range(0,len(tqdm)):#逐次遍历文件夹下的文件 inputfile = os.path.join(file_PATH,tqdm[i])#对应文件夹下的某份文件 outputfile=inputfile+'.xsd'#定义转换格式后的文件名字 poscar_file=read(inputfile,format='vasp')#读入文件 xsd_file=write(outputfile,poscar_file,format='xsd')#将读入的文件写入其他格式的文件 #调用该函数 poscar_to_xsd(\\\"C-N-2-defect-1652750340\\\") \",\"在这里插入图片描述\"]},\"626\":{\"c\":[\"ase python\"]},\"627\":{\"h\":\"附录 I 学科分类\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"anthropology 人类学\",\"astronomy 天文学\",\"biology 生物学\",\"botany 植物学\",\"chemistry 化学\",\"communications 通讯\",\"engineering 工程学\",\"generic-base - used for generic styles like Harvard and APA 通用基础 - 用于通用样式,像哈弗和 APA\",\"geography 地理学\",\"geology 地质学\",\"history 历史\",\"humanities 人文学科\",\"law 法学\",\"linguistics 语言学\",\"literature 文学\",\"math 数学\",\"medicine 药物学\",\"philosophy 哲学\",\"physics 物理学\",\"political_science 政治科学\",\"psychology 心理学\",\"science 科学\",\"social_science 社会科学\",\"sociology 社会学\",\"theology 神学\",\"zoology 动物学\"]},\"628\":{\"h\":\"附录 II 术语\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"术语在本地化文件中使用\"]},\"629\":{\"h\":\"Locators/用来定位的术语\",\"t\":[\"book 书\",\"chapter 章\",\"column\",\"figure 图\",\"folio 作品集\",\"issue 议题/问题\",\"line 行\",\"note 笔记/注记\",\"opus 作品(音乐作品)\",\"page 页\",\"paragraph 段\",\"part 部分\",\"section 节\",\"sub verbo 词条\",\"verse 诗\",\"volume 卷\"]},\"630\":{\"h\":\"Months/月\",\"t\":[\"month-01\",\"month-02\",\"month-03\",\"month-04\",\"month-05\",\"month-06\",\"month-07\",\"month-08\",\"month-09\",\"month-10\",\"month-11\",\"month-12\"]},\"631\":{\"h\":\"Ordinals/序数\",\"t\":[\"ordinal\",\"ordinal-00 through ordinal-99\",\"long-ordinal-01\",\"long-ordinal-02\",\"long-ordinal-03\",\"long-ordinal-04\",\"long-ordinal-05\",\"long-ordinal-06\",\"long-ordinal-07\",\"long-ordinal-08\",\"long-ordinal-09\",\"long-ordinal-10\"]},\"632\":{\"h\":\"Quotation marks/引号\",\"t\":[\"open-quote\",\"close-quote\",\"open-inner-quote\",\"close-inner-quote\"]},\"633\":{\"h\":\"Roles/角色\",\"t\":[\"author 作者\",\"collection-editor 文集编辑\",\"composer 作曲者\",\"container-author 文章作者\",\"director 主任/导演\",\"editor 编辑\",\"editorial-director 编辑部主任\",\"editortranslator\",\"illustrator 插画者\",\"interviewer 采访者\",\"original-author 原作者\",\"recipient 收件人\",\"reviewed-author 复查作者\",\"translator 译者\"]},\"634\":{\"h\":\"Seasons/季节\",\"t\":[\"season-01\",\"season-02\",\"season-03\",\"season-04\"]},\"635\":{\"h\":\"Miscellaneous/其他\",\"t\":[\"accessed\",\"ad\",\"and\",\"and others\",\"anonymous\",\"at\",\"available at\",\"bc\",\"by\",\"circa\",\"cited\",\"edition\",\"et-al\",\"forthcoming\",\"from\",\"ibid\",\"in\",\"in press\",\"internet\",\"interview\",\"letter\",\"no date\",\"online\",\"presented at\",\"reference\",\"retrieved\",\"scale\",\"version\"]},\"636\":{\"h\":\"附录 III 文献类型\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"article 文章\",\"article-magazine 杂志文章\",\"article-newspaper 新闻文章\",\"article-journal 期刊文章\",\"bill\",\"book 书\",\"broadcast\",\"chapter 章节\",\"dataset 数据集\",\"entry\",\"entry-dictionary\",\"entry-encyclopedia\",\"figure 图\",\"graphic\",\"interview 采访\",\"legislation\",\"legal_case\",\"manuscript\",\"map 地图\",\"motion_picture\",\"musical_score\",\"pamphlet\",\"paper-conference\",\"patent\",\"post 海报\",\"post-weblog\",\"personal_communication 私人交流\",\"report 报告\",\"review\",\"review-book\",\"song 歌曲\",\"speech 演讲\",\"thesis 学位论文\",\"treaty\",\"webpage 网页\"]},\"637\":{\"h\":\"附录 IV 变量\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\"]},\"638\":{\"h\":\"标准变量\",\"t\":[\"abstract 项目的摘要(例:期刊文章的摘要)\",\"annote 读者关于项目内容的笔记\",\"archive 保存项目的存档\",\"archive_location 存档的位置\",\"archive-place 存档的地理位置\",\"authority\",\"call-number\",\"call number (to locate the item in a library)\",\"citation-label\",\"label identifying the item in in-text citations of label styles (e.g. \\\"Ferr78\\\"). May be assigned by the CSL processor based on item metadata.\",\"citation-number\",\"index (starting at 1) of the cited reference in the bibliography (generated by the CSL processor)\",\"collection-title\",\"title of the collection holding the item (e.g. the series title for a book)\",\"container-title\",\"title of the container holding the item (e.g. the book title for a book chapter, the journal title for a journal article)\",\"container-title-short\",\"short/abbreviated form of \\\"container-title\\\" (also accessible through the \\\"short\\\" form of the \\\"container-title\\\" variable)\",\"dimensions\",\"physical (e.g. size) or temporal (e.g. running time) dimensions of the item\",\"DOI\",\"Digital Object Identifier (e.g. \\\"10.1128/AEM.02591-07\\\")\",\"event\",\"name of the related event (e.g. the conference name when citing a conference paper)\",\"event-place\",\"geographic location of the related event (e.g. \\\"Amsterdam, the Netherlands\\\")\",\"first-reference-note-number\",\"number of a preceding note containing the first reference to the item. Assigned by the CSL processor. The variable holds no value for non-note-based styles, or when the item hasn’t been cited in any preceding notes.\",\"genre\",\"class, type or genre of the item (e.g. \\\"adventure\\\" for an adventure movie, \\\"PhD dissertation\\\" for a PhD thesis)\",\"ISBN\",\"International Standard Book Number\",\"ISSN\",\"International Standard Serial Number\",\"jurisdiction\",\"geographic scope of relevance (e.g. \\\"US\\\" for a US patent)\",\"keyword 关键字\",\"locator\",\"a cite-specific pinpointer within the item (e.g. a page number within a book, or a volume in a multi-volume work). Must be accompanied in the input data by a label indicating the locator type (see the Locators term list), which determines which term is rendered by cs:label when the \\\"locator\\\" variable is selected.\",\"medium\",\"medium description (e.g. \\\"CD\\\", \\\"DVD\\\", etc.)\",\"note\",\"(short) inline note giving additional item details (e.g. a concise summary or commentary)\",\"original-publisher\",\"original publisher, for items that have been republished by a different publisher\",\"original-publisher-place\",\"geographic location of the original publisher (e.g. \\\"London, UK\\\")\",\"original-title 最初版本的题目\",\"page 项目的页码范围\",\"page-first 页码范围的第一个页码\",\"PMCID\",\"PubMed Central reference number\",\"PMID\",\"PubMed reference number\",\"publisher 出版商/出版社\",\"publisher-place 出版社的地理位置\",\"references\",\"resources related to the procedural history of a legal case\",\"reviewed-title\",\"title of the item reviewed by the current item\",\"scale\",\"scale of e.g. a map\",\"section\",\"container section holding the item (e.g. \\\"politics\\\" for a newspaper article)\",\"source\",\"from whence the item originates (e.g. a library catalog or database)\",\"status\",\"(publication) status of the item (e.g. \\\"forthcoming\\\")\",\"title\",\"primary title of the item\",\"title-short\",\"short/abbreviated form of \\\"title\\\" (also accessible through the \\\"short\\\" form of the \\\"title\\\" variable)\",\"URL 链接\",\"version 版本\",\"year-suffix\",\"disambiguating year suffix in author-date styles (e.g. \\\"a\\\" in \\\"Doe, 1999a\\\")\"]},\"639\":{\"h\":\"数据变量\",\"t\":[\"Number variables are a subset of the Standard Variables.\",\"chapter-number\",\"章序号\",\"collection-number\",\"number identifying the collection holding the item (e.g. the series number for a book)\",\"edition\",\"版本序号(注意和 version 的区别)\",\"issue\",\"(container) issue holding the item (e.g. \\\"5\\\" when citing a journal article from journal volume 2, issue 5)\",\"number\",\"number identifying the item (e.g. a report number)\",\"number-of-pages\",\"引用项目的总的页数\",\"number-of-volumes\",\"total number of volumes, usable for citing multi-volume books and such\",\"volume\",\"(container) volume holding the item (e.g. \\\"2\\\" when citing a chapter from book volume 2)\"]},\"640\":{\"h\":\"日期变量\",\"t\":[\"accessed\",\"date the item has been accessed\",\"container\",\"?\",\"event-date\",\"date the related event took place\",\"issued\",\"date the item was issued/published\",\"original-date\",\"(issue) date of the original version\",\"submitted\",\"date the item (e.g. a manuscript) has been submitted for publication\"]},\"641\":{\"h\":\"名字变量\",\"t\":[\"author\",\"collection-editor\",\"editor of the collection holding the item (e.g. the series editor for a book)\",\"composer\",\"composer (e.g. of a musical score)\",\"container-author\",\"author of the container holding the item (e.g. the book author for a book chapter)\",\"director\",\"director (e.g. of a film)\",\"editor\",\"editorial-director\",\"managing editor (\\\"Directeur de la Publication\\\" in French)\",\"illustrator\",\"illustrator (e.g. of a children’s book)\",\"interviewer\",\"interviewer (e.g. of an interview)\",\"original-author\",\"recipient\",\"recipient (e.g. of a letter)\",\"reviewed-author\",\"author of the item reviewed by the current item\",\"translator\"]},\"642\":{\"h\":\"附录 V 页码范围格式\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"cs:style 元素中的 page-range-format 表示了页码的缩写规则,其取值可能是:\",\"\\\"chicago\\\"\",\"第一个数字\",\"第二个数字\",\"例\",\"小于 100\",\"使用所有的位数\",\"3–10; 71–72\",\"100 或者 100 的整数\",\"使用所有的位数\",\"100–104; 600–613; 1100–1123\",\"100 到 109 (包括对应 100 的倍数的范围)\",\"仅使用有变化的部分,忽略不需要的 0\",\"107–8; 505–17; 1002–6\",\"110 到 199 (包括对应 100 的倍数的范围)\",\"根据需要使用两位数或者更多\",\"321–25; 415–532; 11564–68; 13792–803\",\"4 位数\",\"如果数字是 4 位并且其中有 3 位不同,使用所有的位数\",\"1496–1504; 2787–2816\",\"\\\"expanded\\\"\",\"​ 扩展模式,不适用缩写。eg. 42–45、321–328、2787–2816\",\"\\\"minimal\\\"\",\"​ 第二个数字中重复的所有数字都被省略:42–5,321–8,2787–816\",\"\\\"minimal-two\\\"\",\"​\\t和 \\\"minimal\\\" 类似,但当第二个数字有两个或者两个以上的数字时,第二个数字至少保留两位。\"]},\"643\":{\"h\":\"附录 VI 链接\",\"t\":[\"[!warning] WORK IN PROGRESS 此页面正在施工中。\",\"The CSL syntax does not have support for configuration of links. However, processors should include links on bibliographic references, using the following rules:\",\"If the bibliography entry for an item renders any of the following identifiers, the identifier should be anchored as a link, with the target of the link as follows:\",\"url: output as is\",\"doi: prepend with “https://doi.org/”\",\"pmid: prepend with “https://www.ncbi.nlm.nih.gov/pubmed/”\",\"pmcid: prepend with “https://www.ncbi.nlm.nih.gov/pmc/articles/”\",\"If the identifier is rendered as a URI, include rendered URI components (e.g. “https://doi.org/”) in the link anchor. Do not include any other affix text in the link anchor (e.g. “Available from: “, “doi: “, “PMID: “).\",\"Citation processors should include an option flag for calling applications to disable bibliography linking behavior.\"]},\"644\":{\"h\":\"Linux\"},\"645\":{\"h\":\"Pages\"},\"646\":{\"h\":\"Office\"},\"647\":{\"h\":\"Vasp\"},\"648\":{\"h\":\"08.其他\"},\"649\":{\"h\":\"05. V A S P\"},\"650\":{\"h\":\"Appendix\"}},\"dirtCount\":0,\"index\":[[\"演讲\",{\"1\":{\"636\":1}}],[\"歌曲\",{\"1\":{\"636\":1}}],[\"报告\",{\"1\":{\"636\":1}}],[\"报错\",{\"0\":{\"189\":1},\"1\":{\"215\":1}}],[\"私人交流\",{\"1\":{\"636\":1}}],[\"海报\",{\"1\":{\"636\":1}}],[\"杂志文章\",{\"1\":{\"636\":1}}],[\"季节\",{\"0\":{\"634\":1}}],[\"季节将被忽略\",{\"1\":{\"424\":1}}],[\"收件人\",{\"1\":{\"633\":1}}],[\"收敛的更快一些\",{\"1\":{\"575\":1}}],[\"收敛速度与当前步的信息\",{\"1\":{\"502\":1}}],[\"采访\",{\"1\":{\"636\":1}}],[\"采访者\",{\"1\":{\"633\":1}}],[\"采用\",{\"1\":{\"461\":1}}],[\"角色\",{\"0\":{\"633\":1}}],[\"卷\",{\"1\":{\"629\":1}}],[\"卷和期\",{\"1\":{\"362\":1}}],[\"诗\",{\"1\":{\"629\":1}}],[\"段\",{\"1\":{\"629\":1}}],[\"段落开头不要留出空白字符\",{\"1\":{\"52\":1}}],[\"段落之间使用一个空行隔开\",{\"1\":{\"52\":1}}],[\"段落的句子语气要使用陈述和肯定语气\",{\"1\":{\"52\":1}}],[\"段落的中心句子放在段首\",{\"1\":{\"52\":1}}],[\"段落\",{\"0\":{\"51\":1},\"1\":{\"42\":1}}],[\"音乐作品\",{\"1\":{\"629\":1}}],[\"音乐等的路径\",{\"1\":{\"4\":1}}],[\"议题\",{\"1\":{\"629\":1}}],[\"议程\",{\"1\":{\"375\":1}}],[\"章序号\",{\"1\":{\"639\":1}}],[\"章节\",{\"1\":{\"636\":1}}],[\"章节中提到\",{\"1\":{\"363\":1}}],[\"章\",{\"1\":{\"629\":1}}],[\"动物学\",{\"1\":{\"627\":1}}],[\"动词+得+副词\",{\"1\":{\"49\":1}}],[\"神学\",{\"1\":{\"627\":1}}],[\"社会学\",{\"1\":{\"627\":1}}],[\"社会科学\",{\"1\":{\"627\":1}}],[\"科学\",{\"1\":{\"627\":1}}],[\"科研\",{\"1\":{\"303\":1}}],[\"心理学\",{\"1\":{\"627\":1}}],[\"心跳间隔\",{\"1\":{\"105\":1}}],[\"物理学\",{\"1\":{\"627\":1}}],[\"物质对\",{\"1\":{\"21\":1}}],[\"物质成像研究中发挥着重要作用\",{\"1\":{\"21\":1}}],[\"哲学\",{\"1\":{\"627\":1}}],[\"药物学\",{\"1\":{\"627\":1}}],[\"法学\",{\"1\":{\"627\":1}}],[\"历史\",{\"1\":{\"627\":1}}],[\"植物学\",{\"1\":{\"627\":1}}],[\"天文学\",{\"1\":{\"627\":1}}],[\"天若\",{\"1\":{\"96\":1}}],[\"逐次遍历文件夹下的文件\",{\"1\":{\"625\":1}}],[\"循环遍历文件输入\",{\"1\":{\"625\":1}}],[\"疑似是系统堆栈限制过小导致\",{\"1\":{\"618\":1}}],[\"疑惑\",{\"1\":{\"606\":1}}],[\"偶尔会发生两个原子在弛豫过程中彼此靠近的情况\",{\"1\":{\"617\":1}}],[\"您可以尝试切换到不同的方法\",{\"1\":{\"617\":1}}],[\"操作\",{\"1\":{\"613\":1}}],[\"操作系统版本\",{\"1\":{\"310\":1}}],[\"操作系统基础\",{\"1\":{\"78\":1}}],[\"怎样迅速达到收敛\",{\"1\":{\"606\":1}}],[\"怎么算\",{\"0\":{\"523\":1}}],[\"怎么使用它\",{\"1\":{\"365\":1}}],[\"怎么还光荣起来了\",{\"1\":{\"15\":1}}],[\"怎么说呢\",{\"1\":{\"13\":1}}],[\"八个水分子为例的分子动力学\",{\"1\":{\"602\":1}}],[\"哪里出了问题\",{\"1\":{\"599\":1}}],[\"哪一部位和表面接触\",{\"1\":{\"526\":1}}],[\"五\",{\"1\":{\"598\":1}}],[\"固定和放开的要一致\",{\"1\":{\"597\":1}}],[\"固件有三个人制作\",{\"1\":{\"101\":1}}],[\"固件\",{\"0\":{\"101\":1}}],[\"δe=e0​\",{\"1\":{\"597\":1}}],[\"δe\",{\"1\":{\"597\":1}}],[\"δρ​=ρab​−ρa​−ρb​=ρab​−\",{\"1\":{\"542\":1}}],[\"δρ=ρabc​−ρa​−ρb​−ρc​\",{\"1\":{\"530\":1}}],[\"δρ=ρab​−ρa​−ρb​\",{\"1\":{\"530\":1}}],[\"δρ=ρabsc​​−ρabatom​​\",{\"1\":{\"530\":1}}],[\"严格点可以降到\",{\"1\":{\"596\":1}}],[\"声子谱不适用\",{\"1\":{\"596\":1}}],[\"声明可以是\",{\"1\":{\"456\":1}}],[\"声明开头\",{\"1\":{\"456\":1}}],[\"声明\",{\"0\":{\"456\":1},\"1\":{\"437\":1}}],[\"综合这些因素\",{\"1\":{\"596\":1}}],[\"虚频可以判断结构是否稳定\",{\"1\":{\"596\":1}}],[\"ν=frequency\",{\"1\":{\"596\":1}}],[\"ν​in\",{\"1\":{\"596\":1}}],[\"λ~\",{\"1\":{\"596\":1}}],[\"λ=wavelength\",{\"1\":{\"596\":1}}],[\"λt=1\",{\"1\":{\"596\":1}}],[\"λν~=1\",{\"1\":{\"596\":1}}],[\"λν=c\",{\"1\":{\"596\":1}}],[\"振动频率可视化\",{\"0\":{\"595\":1}}],[\"振荡剧烈\",{\"1\":{\"21\":1}}],[\"乙醇分子的振动频率计算\",{\"1\":{\"598\":1}}],[\"乙醇分子振动频率计算\",{\"1\":{\"594\":1,\"595\":1}}],[\"乙醇分子ch3​ch2​oh\",{\"1\":{\"594\":1}}],[\"乙醇结构优化中\",{\"1\":{\"591\":1}}],[\"±potim\",{\"1\":{\"594\":1}}],[\"足够了\",{\"1\":{\"592\":1}}],[\"足以胜任\",{\"1\":{\"473\":1}}],[\"②ediff=0\",{\"1\":{\"591\":1}}],[\"步\",{\"1\":{\"594\":2,\"606\":1}}],[\"步数\",{\"0\":{\"594\":1}}],[\"步收敛\",{\"1\":{\"591\":1}}],[\"步骤\",{\"0\":{\"299\":1,\"509\":1,\"533\":1,\"548\":1,\"554\":1,\"557\":1,\"568\":1,\"590\":1,\"604\":1},\"1\":{\"295\":1,\"413\":4}}],[\"步骤放在最前面\",{\"0\":{\"244\":1}}],[\"待解决的问题\",{\"1\":{\"591\":1,\"599\":1}}],[\"热力学中计算\",{\"1\":{\"589\":1}}],[\"棋博士最新的文章就是一个非常好的例子\",{\"1\":{\"589\":1}}],[\"ω\",{\"1\":{\"583\":2}}],[\"屏显\",{\"1\":{\"580\":1}}],[\"屏幕\",{\"1\":{\"164\":4}}],[\"力和能量\",{\"1\":{\"580\":1}}],[\"力场类型等等\",{\"1\":{\"303\":1}}],[\"距离为横坐标\",{\"1\":{\"580\":1}}],[\"距离\",{\"1\":{\"578\":1}}],[\"覆盖\",{\"1\":{\"576\":1}}],[\"覆盖了大多数的常见的\",{\"1\":{\"122\":1}}],[\"遍\",{\"1\":{\"576\":2}}],[\"先读取文件中的所有信息\",{\"1\":{\"623\":1}}],[\"先粗后细呢\",{\"1\":{\"575\":1}}],[\"先按作者作者字母排序\",{\"1\":{\"371\":1}}],[\"爬坡\",{\"1\":{\"575\":1}}],[\"咱这儿把它记为n\",{\"1\":{\"572\":1}}],[\"掺杂的石墨烯上的吸附\",{\"1\":{\"569\":1}}],[\"掺杂问题\",{\"1\":{\"288\":1}}],[\"↑↑↑\",{\"1\":{\"567\":2}}],[\"↓↓↓\",{\"1\":{\"567\":2}}],[\"末态结构优化后后\",{\"1\":{\"569\":1}}],[\"末态结构优化后的\",{\"1\":{\"569\":1}}],[\"末态结构优化后的contcar\",{\"1\":{\"567\":1}}],[\"末态结构优化后的outcar\",{\"1\":{\"567\":1}}],[\"末态优化后的结构\",{\"1\":{\"567\":1}}],[\"末态常规结构优化\",{\"1\":{\"567\":1}}],[\"贝德\",{\"1\":{\"556\":1}}],[\"画成\",{\"1\":{\"580\":1}}],[\"画图\",{\"1\":{\"554\":1,\"580\":1}}],[\"画面的左下角处会出现\",{\"1\":{\"169\":1}}],[\"差分电荷密度\",{\"1\":{\"532\":1}}],[\"差分电荷定义为成键后的电荷密度与对应的点的原子电荷密度之差\",{\"1\":{\"530\":1}}],[\"型为例\",{\"1\":{\"531\":1}}],[\"流程\",{\"0\":{\"531\":1,\"566\":1}}],[\"双原子分子的结构\",{\"1\":{\"527\":1}}],[\"双引号应改为书名号\",{\"1\":{\"50\":1}}],[\"😃\",{\"1\":{\"527\":1}}],[\"越开放的表面往往需要更多的层数\",{\"1\":{\"526\":1}}],[\"越大优先级越高\",{\"1\":{\"278\":1}}],[\"影响频率计算的因素\",{\"0\":{\"598\":1}}],[\"影响覆盖度\",{\"1\":{\"526\":1}}],[\"影响因素\",{\"0\":{\"526\":1}}],[\"影响所有的名字\",{\"1\":{\"423\":1}}],[\"吸附能等的零点能矫正\",{\"1\":{\"589\":1}}],[\"吸附能的计算\",{\"0\":{\"525\":1}}],[\"吸附在\",{\"1\":{\"527\":1}}],[\"吸附物种与表面结合情况\",{\"1\":{\"526\":1}}],[\"吸附位点\",{\"1\":{\"526\":1}}],[\"吸收信号清晰\",{\"1\":{\"21\":1}}],[\"吸收边后\",{\"1\":{\"21\":2}}],[\"吸收边前\",{\"1\":{\"21\":1}}],[\"吸收边移动\",{\"1\":{\"21\":1}}],[\"吸收边会向高能侧移动\",{\"1\":{\"21\":1}}],[\"吸收边的位置与元素的价态相关\",{\"1\":{\"21\":1}}],[\"吸收边等\",{\"1\":{\"21\":1}}],[\"吸收系数μ\",{\"1\":{\"21\":1}}],[\"吸收等\",{\"1\":{\"21\":1}}],[\"−5\",{\"1\":{\"523\":1}}],[\"−25\",{\"1\":{\"523\":2}}],[\"σ​=2a1​\",{\"1\":{\"523\":1}}],[\"σunrelσ​=1\",{\"1\":{\"523\":1}}],[\"σ表示表面能\",{\"1\":{\"523\":1}}],[\"σ=σunrel+erel​\",{\"1\":{\"523\":1}}],[\"材料表面相对于材料内部所多出的能量\",{\"1\":{\"522\":1}}],[\"材料表征学习笔记\",{\"1\":{\"80\":1}}],[\"材料表征\",{\"0\":{\"18\":1}}],[\"破坏分子间化学键所需消耗的能量\",{\"1\":{\"522\":1}}],[\"破折号应占两个汉字的位置\",{\"1\":{\"71\":1}}],[\"破折号\",{\"0\":{\"71\":1},\"1\":{\"61\":1,\"71\":1}}],[\"轨道\",{\"1\":{\"519\":3}}],[\"轻易是不变的\",{\"1\":{\"517\":1}}],[\"误差\",{\"1\":{\"510\":1}}],[\"顾名思义就是不对原子或离子的坐标进行改变\",{\"1\":{\"507\":1}}],[\"静态自洽\",{\"1\":{\"513\":1}}],[\"静态自洽计算\",{\"1\":{\"507\":1}}],[\"静电自洽后进行\",{\"1\":{\"548\":1}}],[\"静电自洽用的\",{\"1\":{\"537\":1}}],[\"静电自洽\",{\"0\":{\"535\":1},\"1\":{\"478\":1,\"507\":1}}],[\"静电势分析\",{\"1\":{\"78\":1,\"306\":1}}],[\"仍有一些差别\",{\"1\":{\"496\":1}}],[\"仍然会添加\",{\"1\":{\"401\":1}}],[\"仍然时\",{\"1\":{\"399\":1}}],[\"仍然有可能有的期刊没有对应的\",{\"1\":{\"122\":1}}],[\"摘抄自大师兄网站\",{\"1\":{\"484\":1}}],[\"展宽这个计算方法引入的\",{\"1\":{\"484\":1}}],[\"展示给使用者的名字\",{\"1\":{\"448\":1}}],[\"死死记住下面组合就可以了\",{\"1\":{\"484\":1}}],[\"息息相关\",{\"1\":{\"484\":1}}],[\"金属\",{\"1\":{\"483\":1}}],[\"金山毒霸\",{\"1\":{\"183\":1}}],[\"半导体和绝缘体\",{\"1\":{\"484\":1}}],[\"半导体\",{\"1\":{\"483\":1}}],[\"半导体或者绝缘体\",{\"1\":{\"483\":1}}],[\"半角标点\",{\"1\":{\"61\":1}}],[\"半角逗号\",{\"1\":{\"56\":1}}],[\"半角数字\",{\"0\":{\"55\":1}}],[\"半角英文字符和半角阿拉伯数字\",{\"1\":{\"47\":1}}],[\"半角的百分号\",{\"1\":{\"47\":1}}],[\"频率提取\",{\"1\":{\"596\":1}}],[\"频率相关的信息会被输出到\",{\"1\":{\"596\":1}}],[\"频率分析作用\",{\"0\":{\"589\":1}}],[\"频率分析是个啥\",{\"1\":{\"588\":1}}],[\"频率分析\",{\"0\":{\"588\":1}}],[\"频率\",{\"1\":{\"481\":1}}],[\"频率计算后得到分子的零点能\",{\"1\":{\"597\":1}}],[\"频率计算需要\",{\"1\":{\"594\":1}}],[\"频率计算时放开哪些原子看体系\",{\"1\":{\"597\":1}}],[\"频率计算时\",{\"1\":{\"592\":1}}],[\"频率计算\",{\"0\":{\"579\":1,\"592\":1},\"1\":{\"478\":1}}],[\"阻尼\",{\"1\":{\"481\":1}}],[\"弛豫中能量变化从−25\",{\"1\":{\"523\":1}}],[\"弛豫\",{\"1\":{\"481\":1,\"523\":1}}],[\"矩阵\",{\"1\":{\"478\":1}}],[\"矩形石墨烯建模\",{\"0\":{\"297\":1}}],[\"离子弛豫\",{\"1\":{\"478\":3}}],[\"离子弛豫的收敛标准\",{\"1\":{\"476\":1}}],[\"离子步的最大步数\",{\"1\":{\"477\":1}}],[\"离开\",{\"1\":{\"170\":1}}],[\"离开等指令\",{\"1\":{\"170\":1}}],[\"体积内的电荷与原子的总电子电荷很接近\",{\"1\":{\"556\":1}}],[\"体系中含有不同元素的时候\",{\"1\":{\"472\":1}}],[\"体验\",{\"1\":{\"310\":1}}],[\"花费的时间也就越多\",{\"1\":{\"472\":1}}],[\"决定是否计算应力张量\",{\"1\":{\"479\":1}}],[\"决定离子如何移动\",{\"1\":{\"478\":1}}],[\"决定\",{\"1\":{\"469\":1}}],[\"决定样式的\",{\"1\":{\"437\":1}}],[\"铁磁\",{\"1\":{\"468\":1}}],[\"读者关于项目内容的笔记\",{\"1\":{\"638\":1}}],[\"读入文件\",{\"1\":{\"625\":1}}],[\"读入另一个档案的数据\",{\"1\":{\"170\":1}}],[\"读取源码\",{\"1\":{\"544\":1}}],[\"读取电荷密度\",{\"1\":{\"469\":1}}],[\"读取轨道\",{\"1\":{\"467\":1}}],[\"布尔\",{\"1\":{\"464\":1}}],[\"布尔类型应在两端加上\",{\"1\":{\"464\":1}}],[\"整理了的都是最简单的信息\",{\"1\":{\"464\":1}}],[\"整理一些常用的碰到的\",{\"1\":{\"464\":1}}],[\"整个考研期间\",{\"1\":{\"17\":1}}],[\"气体分子\",{\"1\":{\"461\":1}}],[\"气体等各类样品都可以进行相关测试\",{\"1\":{\"21\":1}}],[\"算出来\",{\"1\":{\"599\":1}}],[\"算就行\",{\"1\":{\"461\":1}}],[\"算起来了\",{\"1\":{\"461\":1}}],[\"继续采用优化时的\",{\"1\":{\"592\":1}}],[\"继续用\",{\"1\":{\"461\":1}}],[\"继承的名字选项可以在\",{\"1\":{\"411\":1}}],[\"继承了\",{\"1\":{\"405\":1}}],[\"平均到每个原子上\",{\"1\":{\"484\":1}}],[\"平移之后\",{\"1\":{\"461\":1}}],[\"平台的部分软件安装\",{\"0\":{\"207\":1}}],[\"平台\",{\"1\":{\"190\":1}}],[\"共\",{\"1\":{\"594\":1,\"596\":1}}],[\"共轭梯度和\",{\"1\":{\"481\":1}}],[\"共轭梯度和阻尼分子动力学\",{\"1\":{\"477\":1}}],[\"共轭梯度算法\",{\"1\":{\"478\":1}}],[\"共有\",{\"1\":{\"461\":1}}],[\"共分为三种模式\",{\"1\":{\"158\":1}}],[\"零点能校正的情况\",{\"1\":{\"597\":1}}],[\"零点能校正之后分子的能量为\",{\"1\":{\"597\":1}}],[\"零点能校正\",{\"1\":{\"597\":1}}],[\"零点能zpe=1\",{\"1\":{\"597\":1}}],[\"零点能\",{\"0\":{\"597\":1},\"1\":{\"597\":1}}],[\"零通量表面是\",{\"1\":{\"556\":1}}],[\"零\",{\"1\":{\"461\":1}}],[\"矢量\",{\"1\":{\"461\":1}}],[\"广义梯度泛函\",{\"1\":{\"460\":1}}],[\"广告终结者\",{\"1\":{\"95\":1}}],[\"处理结果\",{\"1\":{\"566\":1}}],[\"处理器不会\",{\"1\":{\"455\":1}}],[\"处理器不能识别专有名词\",{\"1\":{\"434\":1}}],[\"处理器开发者的一个建议\",{\"1\":{\"451\":1}}],[\"处理器\",{\"0\":{\"364\":1},\"1\":{\"364\":2,\"369\":1}}],[\"处理器后来采用了这种\",{\"1\":{\"362\":1}}],[\"处理器引入了一种基于\",{\"1\":{\"362\":1}}],[\"处理器将\",{\"1\":{\"319\":1}}],[\"处电子结构当成是密度相同的均匀电子气体来算\",{\"1\":{\"460\":1}}],[\"求差的其他方法\",{\"0\":{\"540\":1}}],[\"求差也可以使用\",{\"1\":{\"538\":1}}],[\"求差\",{\"0\":{\"538\":1},\"1\":{\"531\":1}}],[\"求解\",{\"1\":{\"460\":1}}],[\"求是创新家\",{\"1\":{\"105\":1}}],[\"赝势\",{\"1\":{\"460\":1}}],[\"赝势文件\",{\"1\":{\"460\":1}}],[\"赝势文件的包\",{\"1\":{\"223\":1}}],[\"识别的唯一关键字符是\",{\"1\":{\"459\":1}}],[\"识别为命令\",{\"1\":{\"159\":1}}],[\"维基百科\",{\"1\":{\"459\":1}}],[\"郝玲娟\",{\"1\":{\"459\":1}}],[\"抽象一些\",{\"1\":{\"459\":1}}],[\"显然原子的相对位置比较好判断\",{\"1\":{\"459\":1}}],[\"显示的方式和\",{\"1\":{\"420\":1}}],[\"显示更多作者姓名\",{\"1\":{\"413\":1}}],[\"显示命令行提示符号\",{\"1\":{\"180\":1}}],[\"显示当前全路径\",{\"1\":{\"180\":1}}],[\"显示当前绝对路径\",{\"1\":{\"180\":1}}],[\"显示当前用户账号\",{\"1\":{\"180\":1}}],[\"显示当前文件夹\",{\"1\":{\"33\":1}}],[\"显示行号\",{\"1\":{\"170\":1}}],[\"显示suconfig\",{\"1\":{\"105\":1}}],[\"显示本帮助信息\",{\"1\":{\"105\":1}}],[\"显示中文\",{\"1\":{\"38\":1}}],[\"显示中文和解决中文乱码\",{\"1\":{\"34\":1}}],[\"显示时间为12小时格式\",{\"1\":{\"180\":1}}],[\"显示时间为24小时格式但是不带秒\",{\"1\":{\"180\":1}}],[\"显示时间为24小时格式\",{\"1\":{\"180\":1}}],[\"显示时间为\",{\"1\":{\"33\":3}}],[\"显示全路径\",{\"1\":{\"33\":1}}],[\"显示\",{\"0\":{\"430\":1,\"543\":1},\"1\":{\"33\":1,\"543\":1}}],[\"显示隐藏文件夹\",{\"1\":{\"4\":1}}],[\"坐标是分数坐标系\",{\"1\":{\"596\":1}}],[\"坐标的关系\",{\"1\":{\"459\":1}}],[\"坐标和\",{\"1\":{\"459\":1}}],[\"坐标\",{\"1\":{\"459\":2}}],[\"坐标类别\",{\"1\":{\"459\":2}}],[\"笛卡尔坐标系\",{\"1\":{\"459\":1}}],[\"笛卡尔坐标并不是原子在我们作为参考的直角坐标系中的绝对位置\",{\"1\":{\"459\":1}}],[\"笛卡尔坐标是绝对坐标\",{\"1\":{\"459\":1}}],[\"笛卡尔\",{\"1\":{\"459\":2}}],[\"格子自动生成\",{\"1\":{\"461\":1}}],[\"格矢\",{\"1\":{\"459\":2}}],[\"格式文件\",{\"0\":{\"620\":1}}],[\"格式中\",{\"1\":{\"451\":1}}],[\"格式渲染完整的姓名\",{\"1\":{\"413\":1}}],[\"格式化\",{\"0\":{\"427\":1},\"1\":{\"401\":1,\"403\":2,\"404\":1,\"422\":1,\"428\":1}}],[\"格式在\",{\"1\":{\"387\":1}}],[\"格式使用\",{\"1\":{\"361\":1}}],[\"格式来描述这个条目\",{\"1\":{\"361\":1}}],[\"格式都定义为\",{\"1\":{\"360\":1}}],[\"格式还是\",{\"1\":{\"360\":1}}],[\"格式不同\",{\"1\":{\"357\":1}}],[\"格式由数字组成\",{\"1\":{\"354\":1}}],[\"格式的文件\",{\"1\":{\"624\":1}}],[\"格式的创建者\",{\"1\":{\"370\":1}}],[\"格式的证书\",{\"1\":{\"366\":1}}],[\"格式的从属格式\",{\"1\":{\"360\":1}}],[\"格式的变体\",{\"1\":{\"355\":1}}],[\"格式的\",{\"1\":{\"183\":1}}],[\"格式\",{\"0\":{\"353\":1,\"354\":1,\"365\":1},\"1\":{\"122\":1,\"352\":1,\"353\":2,\"354\":1,\"357\":1,\"360\":1,\"362\":1,\"375\":1,\"384\":1,\"385\":1,\"424\":1}}],[\"格式投稿\",{\"1\":{\"122\":1}}],[\"格式为weekday\",{\"1\":{\"180\":1}}],[\"格式为\",{\"1\":{\"33\":1,\"127\":1}}],[\"控制输出的\",{\"1\":{\"559\":1}}],[\"控制电子步\",{\"1\":{\"473\":1}}],[\"控制文件\",{\"1\":{\"458\":1}}],[\"控温方法\",{\"1\":{\"78\":1,\"306\":1}}],[\"欢迎提出改善意见\",{\"1\":{\"455\":1}}],[\"欢迎使用mentohust\",{\"1\":{\"105\":1}}],[\"放在\",{\"1\":{\"453\":1}}],[\"兼容样式\",{\"1\":{\"437\":1}}],[\"兼容的\",{\"1\":{\"382\":1}}],[\"⚠\",{\"1\":{\"437\":1,\"438\":3,\"440\":1,\"442\":1,\"444\":2,\"448\":1}}],[\"🏳️\",{\"1\":{\"437\":3,\"438\":5,\"440\":3,\"441\":1,\"442\":1,\"443\":1,\"444\":1,\"445\":1,\"446\":1,\"447\":1,\"448\":1,\"449\":1,\"450\":1}}],[\"缩进\",{\"1\":{\"430\":1}}],[\"缩写出现的时候\",{\"1\":{\"425\":1}}],[\"缩写\",{\"1\":{\"425\":1}}],[\"缩写锁代替的名字列表会逐个的加入到渲染列表中\",{\"1\":{\"413\":1}}],[\"缩写通过\",{\"1\":{\"404\":1}}],[\"缩写和编辑\",{\"1\":{\"401\":1}}],[\"缩写的情况下\",{\"1\":{\"401\":1}}],[\"唯一的并可以引用的\",{\"1\":{\"442\":1}}],[\"唯一的区别是\",{\"1\":{\"425\":1}}],[\"唯一允许的值\",{\"1\":{\"409\":1}}],[\"扽\",{\"1\":{\"425\":1}}],[\"负数的年份\",{\"1\":{\"424\":1}}],[\"局部选项\",{\"0\":{\"422\":1}}],[\"局域密度近似\",{\"0\":{\"199\":1}}],[\"粒子将和姓合并到一起\",{\"1\":{\"420\":1}}],[\"排序宏\",{\"0\":{\"425\":1}}],[\"排序过程中\",{\"1\":{\"424\":1}}],[\"排序变量\",{\"0\":{\"424\":1}}],[\"排序的键值是按顺序求值的\",{\"1\":{\"423\":1}}],[\"排序的顺序可以通过设置\",{\"1\":{\"423\":1}}],[\"排序\",{\"0\":{\"423\":1},\"1\":{\"420\":5,\"451\":1}}],[\"排版和解析方法\",{\"1\":{\"14\":1}}],[\"西方人的名字中经常包括一个或者多个小部分\",{\"1\":{\"420\":1}}],[\"西里尔名字的排序顺序\",{\"1\":{\"402\":1}}],[\"西里尔名字的显示顺序\",{\"1\":{\"402\":1}}],[\"匹配从第一个名字开始\",{\"1\":{\"419\":1}}],[\"匹配范围将为变为两位\",{\"1\":{\"385\":1}}],[\"折叠年份范围\",{\"1\":{\"415\":1}}],[\"折叠相同的年份\",{\"1\":{\"415\":1}}],[\"折叠引用数字的范围\",{\"1\":{\"415\":1}}],[\"折叠引用组中分隔符可以是使用\",{\"1\":{\"415\":1}}],[\"折腾记录\",{\"0\":{\"81\":1}}],[\"产生歧义的名字将被扩展\",{\"1\":{\"413\":1}}],[\"产品手册中文写作规范\",{\"1\":{\"76\":1}}],[\"知道添加的名字可以消除引用歧义为止\",{\"1\":{\"413\":1}}],[\"知乎\",{\"1\":{\"34\":2}}],[\"消除歧义法则\",{\"1\":{\"413\":1}}],[\"消除歧义的引用\",{\"1\":{\"413\":1}}],[\"消除歧义的方法在下面属性被设置的时候\",{\"1\":{\"413\":1}}],[\"消除歧义\",{\"0\":{\"413\":1}}],[\"书\",{\"1\":{\"409\":1,\"629\":1,\"636\":1}}],[\"书名号\",{\"1\":{\"61\":1}}],[\"判断引用的位置湿否和给定的位置匹配\",{\"1\":{\"409\":1}}],[\"判断是不是\",{\"1\":{\"409\":1}}],[\"判断位置是不是和给定的位置符合\",{\"1\":{\"409\":1}}],[\"判断给定的\",{\"1\":{\"409\":1}}],[\"判断为走代理时\",{\"1\":{\"113\":1}}],[\"测试一下①ediff=1e\",{\"1\":{\"591\":1}}],[\"测试或参考他人成果\",{\"1\":{\"526\":1}}],[\"测试不同的值对计算的影响\",{\"1\":{\"483\":1}}],[\"测试给定变量\",{\"1\":{\"409\":1}}],[\"测试给定的变量\",{\"1\":{\"409\":1}}],[\"测试项目是不是和给定的类型匹配\",{\"1\":{\"409\":1}}],[\"测试等\",{\"1\":{\"21\":1}}],[\"隐含的条件\",{\"1\":{\"408\":1}}],[\"隐藏用户\",{\"0\":{\"33\":1},\"1\":{\"30\":1,\"33\":1}}],[\"张\",{\"1\":{\"402\":1}}],[\"张三\",{\"1\":{\"402\":1}}],[\"张宇八套卷四套卷难难的\",{\"1\":{\"14\":1}}],[\"张宇\",{\"1\":{\"14\":1}}],[\"顺磁\",{\"1\":{\"468\":1}}],[\"顺序应当与\",{\"1\":{\"519\":1}}],[\"顺序\",{\"1\":{\"402\":8}}],[\"顺便提一句\",{\"1\":{\"181\":1}}],[\"条件来渲染不同的引用\",{\"1\":{\"413\":1}}],[\"条件\",{\"1\":{\"402\":8}}],[\"条目之间以\",{\"1\":{\"371\":1}}],[\"条目元数据\",{\"1\":{\"362\":1}}],[\"条目的同步均是通过\",{\"1\":{\"330\":1}}],[\"条目\",{\"1\":{\"329\":1}}],[\"拉丁\",{\"1\":{\"402\":2}}],[\"拉取文献引用次数\",{\"1\":{\"327\":1}}],[\"亚洲的大部分名字\",{\"1\":{\"401\":1}}],[\"姓\",{\"1\":{\"401\":1,\"402\":8}}],[\"姓氏\",{\"1\":{\"401\":1}}],[\"省略\",{\"1\":{\"401\":1}}],[\"省略号不应与\",{\"1\":{\"69\":1}}],[\"省略号占两个汉字空间\",{\"1\":{\"69\":1}}],[\"省略号\",{\"0\":{\"69\":1},\"1\":{\"61\":1,\"69\":1,\"401\":1}}],[\"世\",{\"1\":{\"401\":1}}],[\"世界基础的一步\",{\"1\":{\"183\":1}}],[\"截断能\",{\"1\":{\"472\":1}}],[\"截断的名称列表\",{\"1\":{\"401\":1}}],[\"截止至这里\",{\"1\":{\"329\":1}}],[\"禁止使用复数形式\",{\"1\":{\"407\":1}}],[\"禁止使用分隔符\",{\"1\":{\"401\":1}}],[\"禁用分隔符\",{\"1\":{\"401\":1}}],[\"间使用\",{\"1\":{\"401\":1}}],[\"间隔号\",{\"1\":{\"61\":1}}],[\"罗马数字\",{\"1\":{\"399\":1}}],[\"畅序数使用术语\",{\"1\":{\"399\":1}}],[\"近似日期\",{\"1\":{\"398\":2,\"409\":1}}],[\"除以晶胞中原子数目\",{\"1\":{\"523\":1}}],[\"除非他们是第一个或者对后一个单词\",{\"1\":{\"435\":1}}],[\"除使用\",{\"1\":{\"430\":1}}],[\"除\",{\"1\":{\"405\":1}}],[\"除这两种情况外\",{\"1\":{\"401\":1}}],[\"除在\",{\"1\":{\"394\":1,\"428\":1}}],[\"除了作为分子中原子可视化的直观方案外\",{\"1\":{\"556\":1}}],[\"除了\",{\"1\":{\"408\":1,\"409\":1}}],[\"除了其父元素\",{\"1\":{\"394\":1}}],[\"除了给出\",{\"1\":{\"372\":1}}],[\"补齐\",{\"1\":{\"394\":1}}],[\"补充说明时\",{\"1\":{\"67\":1}}],[\"补充下环境下默认的特殊符号所代表的意义\",{\"1\":{\"33\":1}}],[\"调度计算节点的堆栈大小\",{\"1\":{\"618\":1}}],[\"调用该函数\",{\"1\":{\"625\":1}}],[\"调用\",{\"1\":{\"453\":1,\"624\":1}}],[\"调用本地化格日期格式时\",{\"1\":{\"429\":1}}],[\"调用本地化格式除外\",{\"1\":{\"428\":1}}],[\"调用了本地化日期格式\",{\"1\":{\"394\":1}}],[\"调整过来继续学就好\",{\"1\":{\"17\":1}}],[\"词条\",{\"1\":{\"629\":1}}],[\"词缀将出现在同一个元素的\",{\"1\":{\"428\":1}}],[\"词缀\",{\"0\":{\"428\":1},\"1\":{\"393\":1,\"401\":1,\"403\":2}}],[\"词汇\",{\"1\":{\"15\":1}}],[\"édition\",{\"1\":{\"386\":1}}],[\"éd\",{\"1\":{\"386\":1}}],[\"形式来渲染\",{\"1\":{\"392\":1}}],[\"形式\",{\"1\":{\"392\":2}}],[\"形式呈现时\",{\"1\":{\"386\":1}}],[\"形式时\",{\"1\":{\"386\":1}}],[\"形容词+的+名词\",{\"1\":{\"49\":1}}],[\"女性和男性在术语使用上的不同可以使用性别格式\",{\"1\":{\"386\":1}}],[\"性别特定序数\",{\"0\":{\"386\":1}}],[\"渲染文本将会被包含在引用中\",{\"1\":{\"431\":1}}],[\"渲染为\",{\"1\":{\"424\":1}}],[\"渲染为一个\",{\"1\":{\"319\":1}}],[\"渲染结果为\",{\"1\":{\"420\":2}}],[\"渲染结果将类似下面\",{\"1\":{\"430\":1}}],[\"渲染结果将类似于\",{\"1\":{\"415\":2}}],[\"渲染结果将变为\",{\"1\":{\"419\":1}}],[\"渲染的输出不同\",{\"1\":{\"423\":1}}],[\"渲染的结果为\",{\"1\":{\"419\":3}}],[\"渲染的顺序\",{\"1\":{\"403\":1}}],[\"渲染的名字列表将被截断\",{\"1\":{\"401\":1}}],[\"渲染年月\",{\"1\":{\"393\":1}}],[\"渲染年\",{\"1\":{\"393\":1}}],[\"渲染属性值自己\",{\"1\":{\"392\":1}}],[\"渲染术语\",{\"1\":{\"392\":1}}],[\"渲染宏的文字输出\",{\"1\":{\"392\":1}}],[\"渲染一个变量的文本内容\",{\"1\":{\"392\":1}}],[\"渲染元素输出与所选变量匹配的术语\",{\"1\":{\"407\":1}}],[\"渲染元素输出\",{\"1\":{\"399\":1}}],[\"渲染元素输出必须从\",{\"1\":{\"393\":1}}],[\"渲染元素用来输出文字\",{\"1\":{\"392\":1}}],[\"渲染元素是\",{\"1\":{\"391\":1}}],[\"渲染元素指定了在引文或参考文献条目中需要包含哪些条目元数据\",{\"1\":{\"390\":1}}],[\"渲染元素\",{\"0\":{\"390\":1},\"1\":{\"453\":1}}],[\"渲染\",{\"1\":{\"385\":1}}],[\"序号\",{\"1\":{\"577\":1,\"578\":1}}],[\"序数\",{\"0\":{\"631\":1}}],[\"序数格式将仅限于每个月的第一天\",{\"1\":{\"422\":1}}],[\"序数数字\",{\"1\":{\"399\":1}}],[\"序数性别和月的术语匹配\",{\"1\":{\"386\":1}}],[\"序数术语在\",{\"1\":{\"385\":1}}],[\"序数的后缀则是使用术语来定义的\",{\"1\":{\"385\":1}}],[\"序数后缀可以使用术语定义\",{\"1\":{\"399\":1}}],[\"序数后缀\",{\"0\":{\"385\":1},\"1\":{\"384\":1,\"399\":1}}],[\"序列号\",{\"1\":{\"310\":1}}],[\"值会使收敛变慢\",{\"1\":{\"484\":1}}],[\"值大于等于\",{\"1\":{\"472\":1}}],[\"值越大\",{\"1\":{\"472\":1}}],[\"值域\",{\"1\":{\"464\":1}}],[\"值\",{\"1\":{\"437\":2,\"472\":1,\"519\":1,\"592\":1}}],[\"值为样式本身的\",{\"1\":{\"444\":1}}],[\"值为\",{\"1\":{\"401\":1}}],[\"值可以为\",{\"1\":{\"427\":3}}],[\"值可以设置为\",{\"1\":{\"394\":2,\"427\":1}}],[\"值可以是\",{\"1\":{\"394\":1}}],[\"值必须是\",{\"1\":{\"383\":1,\"437\":1,\"450\":1}}],[\"值得一提的是\",{\"1\":{\"136\":1,\"495\":1}}],[\"替换才会执行\",{\"1\":{\"426\":1}}],[\"替换仅限于\",{\"1\":{\"419\":1}}],[\"替换变量在输出的其余部分被抑制\",{\"1\":{\"405\":1}}],[\"替换必须放在\",{\"1\":{\"405\":1}}],[\"替换为\",{\"1\":{\"381\":1}}],[\"替换模式\",{\"1\":{\"160\":1}}],[\"独立样式包含了对引文\",{\"1\":{\"379\":1}}],[\"独立样式\",{\"0\":{\"379\":1},\"1\":{\"378\":1,\"437\":2,\"438\":1}}],[\"独立格式不依赖父格式\",{\"1\":{\"370\":1}}],[\"独立格式的元数据通常比从属格式的元数据更加全面\",{\"1\":{\"370\":1}}],[\"独立格式的根元素有除了\",{\"1\":{\"368\":1}}],[\"独立格式解析\",{\"0\":{\"367\":1}}],[\"独立格式可以依据\",{\"1\":{\"361\":1}}],[\"独立格式有\",{\"1\":{\"360\":1}}],[\"独立格式\",{\"1\":{\"360\":1}}],[\"独立格式和从属格式\",{\"0\":{\"360\":1}}],[\"制作的文档\",{\"1\":{\"377\":1}}],[\"意见征求稿\",{\"1\":{\"377\":1}}],[\"意思是重复前一个动作的意思\",{\"1\":{\"165\":1}}],[\"意思为在n天之前的\",{\"1\":{\"148\":1}}],[\"稳定的样式\",{\"1\":{\"375\":1}}],[\"紧凑性以及可维护性\",{\"1\":{\"453\":1}}],[\"紧凑\",{\"1\":{\"375\":1}}],[\"授权\",{\"1\":{\"374\":1,\"375\":1}}],[\"授课教师四川大学岑望来副研究员\",{\"1\":{\"78\":1}}],[\"印出德语的翻译\",{\"1\":{\"373\":1}}],[\"允许的值为\",{\"1\":{\"415\":1,\"419\":1}}],[\"允许\",{\"1\":{\"373\":1}}],[\"允许失败次数\",{\"1\":{\"105\":1}}],[\"术语在本地化文件中使用\",{\"1\":{\"628\":1}}],[\"术语不会包括在排序键值中\",{\"1\":{\"425\":1}}],[\"术语才会渲染\",{\"1\":{\"407\":1}}],[\"术语渲染为\",{\"1\":{\"406\":5,\"407\":3}}],[\"术语的一个例子\",{\"1\":{\"404\":1}}],[\"术语之间使用空格进行隔开\",{\"1\":{\"401\":1}}],[\"术语之间何时使用分隔符或者空格\",{\"1\":{\"401\":1}}],[\"术语设置为\",{\"1\":{\"385\":1}}],[\"术语定义了默认的序数后缀格式\",{\"1\":{\"385\":1}}],[\"术语内容不应该包括\",{\"1\":{\"384\":1}}],[\"术语必须使用\",{\"1\":{\"384\":1}}],[\"术语可以直接在\",{\"1\":{\"384\":1}}],[\"术语用来添加到截断列表的后面\",{\"1\":{\"401\":1}}],[\"术语用\",{\"1\":{\"384\":1}}],[\"术语是本地化的字符串\",{\"1\":{\"384\":1}}],[\"术语翻译\",{\"1\":{\"381\":1}}],[\"术语\",{\"0\":{\"377\":1,\"384\":1,\"628\":1},\"1\":{\"371\":1,\"384\":3,\"385\":1,\"392\":3,\"409\":1,\"454\":1}}],[\"术语来指代\",{\"1\":{\"353\":1}}],[\"次排序键值\",{\"1\":{\"420\":2}}],[\"次\",{\"1\":{\"371\":1}}],[\"宏名字建议使用通用的名字\",{\"1\":{\"453\":1}}],[\"宏通过\",{\"1\":{\"453\":1}}],[\"宏在文件中位置的通常建议是\",{\"1\":{\"453\":1}}],[\"宏可以在其他宏\",{\"1\":{\"453\":1}}],[\"宏可以将格式指示重复使用\",{\"1\":{\"438\":1}}],[\"宏调用则只返回原本要渲染的日期部分\",{\"1\":{\"425\":1}}],[\"宏进行排序\",{\"1\":{\"423\":1}}],[\"宏替换\",{\"1\":{\"405\":1}}],[\"宏\",{\"1\":{\"371\":3,\"376\":1,\"453\":1}}],[\"宏实现的功能\",{\"1\":{\"319\":1}}],[\"贡献者一般只提供了一些小的改进\",{\"1\":{\"370\":1}}],[\"凭空写一个\",{\"1\":{\"370\":1}}],[\"四个频率的换算\",{\"1\":{\"596\":1}}],[\"四个子元素\",{\"1\":{\"368\":1}}],[\"四级标题\",{\"1\":{\"44\":2,\"45\":3}}],[\"领域为\",{\"1\":{\"366\":1}}],[\"教程\",{\"1\":{\"365\":1}}],[\"教学大纲\",{\"1\":{\"78\":1}}],[\"项目的页码范围\",{\"1\":{\"638\":1}}],[\"项目的摘要\",{\"1\":{\"638\":1}}],[\"项目主页\",{\"1\":{\"375\":1}}],[\"项始终以\",{\"1\":{\"519\":1}}],[\"项的内容就是\",{\"1\":{\"373\":1}}],[\"项\",{\"1\":{\"361\":1}}],[\"项识别为\",{\"1\":{\"217\":1}}],[\"事实上\",{\"1\":{\"361\":1}}],[\"事实上这可能是多数人首先想到的方法\",{\"1\":{\"113\":1}}],[\"冗余太多\",{\"1\":{\"360\":1}}],[\"太庞大\",{\"1\":{\"360\":1}}],[\"太暴露隐私哈哈哈\",{\"1\":{\"33\":1}}],[\"父格式为独立格式\",{\"1\":{\"366\":1}}],[\"父格式\",{\"1\":{\"360\":1}}],[\"种类型\",{\"1\":{\"378\":1}}],[\"种功能\",{\"1\":{\"360\":1}}],[\"种形式\",{\"1\":{\"128\":1}}],[\"汉语等\",{\"1\":{\"359\":1}}],[\"尾注或者脚注通常显示的信息更多\",{\"1\":{\"357\":1}}],[\"构成\",{\"1\":{\"356\":1}}],[\"称为一个引用\",{\"1\":{\"352\":1}}],[\"称为精细结构\",{\"1\":{\"21\":1}}],[\"信息与文献\",{\"1\":{\"351\":1}}],[\"像哈弗和\",{\"1\":{\"627\":1}}],[\"像\",{\"1\":{\"350\":1}}],[\"手动设置引用格式和参考文献目录非常耗时\",{\"1\":{\"350\":1}}],[\"手册建议是1\",{\"1\":{\"517\":1}}],[\"手册咯\",{\"1\":{\"464\":1}}],[\"手册\",{\"1\":{\"74\":2,\"88\":1,\"458\":1,\"461\":1,\"496\":1}}],[\"未给出均为默认\",{\"1\":{\"591\":1}}],[\"未读\",{\"1\":{\"337\":1}}],[\"未占据电子态和电荷转移等化学信息敏感\",{\"1\":{\"21\":1}}],[\"却少有文章进行较为集中的综述\",{\"1\":{\"335\":1}}],[\"优化反应物\",{\"1\":{\"597\":1}}],[\"优化\",{\"2\":{\"518\":1,\"520\":1,\"524\":1,\"528\":1}}],[\"优化后的结构\",{\"1\":{\"510\":1}}],[\"优先级逐渐降低\",{\"1\":{\"454\":1}}],[\"优点\",{\"1\":{\"331\":1}}],[\"优雅地用\",{\"1\":{\"329\":1}}],[\"生物学\",{\"1\":{\"627\":1}}],[\"生态\",{\"0\":{\"359\":1}}],[\"生成的\",{\"1\":{\"580\":1}}],[\"生成的引用如下\",{\"1\":{\"361\":1}}],[\"生成以下输出文件\",{\"1\":{\"560\":1}}],[\"生成了\",{\"1\":{\"550\":1}}],[\"生成\",{\"1\":{\"497\":1,\"510\":1}}],[\"生成输入文件的选项\",{\"0\":{\"488\":1}}],[\"生成引用信息\",{\"1\":{\"362\":1}}],[\"生成参考条目\",{\"1\":{\"329\":1}}],[\"生成条目\",{\"1\":{\"329\":1}}],[\"生造或者文言文的词语\",{\"1\":{\"49\":1}}],[\"合并每个物种的\",{\"1\":{\"460\":1}}],[\"合集\",{\"1\":{\"329\":1}}],[\"合肥国家同步辐射国家实验室\",{\"1\":{\"21\":1}}],[\"存档的地理位置\",{\"1\":{\"638\":1}}],[\"存档的位置\",{\"1\":{\"638\":1}}],[\"存在\",{\"1\":{\"467\":1}}],[\"存在于\",{\"1\":{\"247\":1}}],[\"存储的附件\",{\"1\":{\"329\":1}}],[\"少数派这篇文章介绍了一些较为基础的用法\",{\"1\":{\"335\":1}}],[\"少数派\",{\"1\":{\"329\":1}}],[\"少看视频多做题\",{\"1\":{\"15\":1}}],[\"韩学士\",{\"1\":{\"329\":1}}],[\"混排\",{\"0\":{\"343\":1},\"1\":{\"328\":2}}],[\"适当长一些\",{\"1\":{\"576\":1}}],[\"适配了参考文献列表\",{\"1\":{\"328\":1}}],[\"适合中小文件\",{\"1\":{\"176\":1}}],[\"适合于时间分辨实验\",{\"1\":{\"21\":1}}],[\"右对齐\",{\"1\":{\"430\":1}}],[\"右击\",{\"1\":{\"327\":1}}],[\"右上角小齿轮⚙\",{\"1\":{\"327\":1}}],[\"右键打开选项\",{\"1\":{\"34\":1}}],[\"拆分或合并\",{\"1\":{\"327\":1}}],[\"茉莉花插件提供了如下功能\",{\"1\":{\"327\":1}}],[\"茉莉花\",{\"1\":{\"327\":1}}],[\"极大的提高其中文文献抓取能力\",{\"1\":{\"327\":1}}],[\"缺省\",{\"1\":{\"468\":1,\"469\":1,\"474\":1,\"478\":1,\"481\":3}}],[\"缺省值\",{\"1\":{\"466\":1,\"467\":1,\"473\":1,\"476\":1,\"477\":1,\"479\":1}}],[\"缺点\",{\"1\":{\"331\":1}}],[\"缺陷和注意事项\",{\"0\":{\"321\":1}}],[\"缺少依赖库\",{\"1\":{\"247\":1}}],[\"缺少二级标题\",{\"1\":{\"45\":1}}],[\"虽有一些缺陷\",{\"1\":{\"319\":1}}],[\"虽然它们大多数都是自成一体的\",{\"1\":{\"379\":1}}],[\"虽然安装了\",{\"1\":{\"247\":1}}],[\"虽然命令很多\",{\"1\":{\"157\":1}}],[\"虽然是个不错的方法\",{\"1\":{\"113\":1}}],[\"虽然有人说英语决定能不能上\",{\"1\":{\"17\":1}}],[\"虽然班里还有些比我还慢的\",{\"1\":{\"13\":1}}],[\"论坛发现了通过\",{\"1\":{\"319\":1}}],[\"访问上述链接下载otp\",{\"1\":{\"316\":1}}],[\"部署\",{\"1\":{\"315\":1}}],[\"部分的\",{\"1\":{\"537\":2}}],[\"部分对应的点\",{\"1\":{\"537\":2}}],[\"部分可以前置\",{\"1\":{\"420\":1}}],[\"部分和\",{\"1\":{\"420\":1}}],[\"部分格式限制\",{\"1\":{\"403\":1}}],[\"部分不受\",{\"1\":{\"403\":1}}],[\"部分机器使用\",{\"1\":{\"259\":1}}],[\"部分关键的安装步骤展示在第二节\",{\"1\":{\"204\":1}}],[\"部分\",{\"1\":{\"58\":1,\"401\":1,\"403\":2,\"420\":1,\"629\":1}}],[\"面向百度编程\",{\"1\":{\"312\":1}}],[\"面向学术科研\",{\"1\":{\"312\":1}}],[\"博文\",{\"1\":{\"312\":1}}],[\"博客发布\",{\"1\":{\"40\":1}}],[\"博客园\",{\"1\":{\"33\":1,\"190\":1}}],[\"博客\",{\"0\":{\"0\":1},\"1\":{\"37\":1}}],[\"谢谢你呀~\",{\"1\":{\"312\":1}}],[\"家庭中文版\",{\"1\":{\"310\":1}}],[\"家目录会以\",{\"1\":{\"33\":1}}],[\"唐刚\",{\"1\":{\"306\":1}}],[\"许楠\",{\"1\":{\"306\":1}}],[\"许多引用格式使用了令人疑惑的\",{\"1\":{\"353\":1}}],[\"许多优秀的\",{\"1\":{\"183\":1}}],[\"许多人都非常熟悉\",{\"1\":{\"183\":1}}],[\"许多人都认为客户服务的核心是\",{\"1\":{\"66\":1}}],[\"超软赝势\",{\"1\":{\"460\":1}}],[\"超详细\",{\"1\":{\"304\":1}}],[\"超胞\",{\"1\":{\"299\":1}}],[\"界面各部分介绍\",{\"1\":{\"304\":1}}],[\"界面顶部\",{\"1\":{\"303\":3}}],[\"互动社区\",{\"1\":{\"303\":1}}],[\"互动模式\",{\"1\":{\"140\":1}}],[\"命名空间前缀为\",{\"1\":{\"389\":1}}],[\"命名空间\",{\"0\":{\"389\":1},\"1\":{\"389\":1}}],[\"命名为\",{\"1\":{\"303\":1}}],[\"命令提交作业\",{\"1\":{\"498\":1}}],[\"命令提交到\",{\"1\":{\"268\":1}}],[\"命令堆叠得到模型的结合能计算非常有用\",{\"1\":{\"303\":1}}],[\"命令堆叠得到模型\",{\"1\":{\"303\":1}}],[\"命令所在的绝对路径\",{\"1\":{\"280\":1}}],[\"命令节点名称\",{\"1\":{\"280\":1}}],[\"命令应为\",{\"1\":{\"275\":1}}],[\"命令带有\",{\"1\":{\"270\":1}}],[\"命令执行后会返回一个作业\",{\"1\":{\"270\":1}}],[\"命令执行完成花费的系统\",{\"1\":{\"155\":1}}],[\"命令执行完成花费的用户\",{\"1\":{\"155\":1}}],[\"命令进行上传和下载\",{\"1\":{\"234\":1}}],[\"命令来启动它\",{\"1\":{\"227\":1}}],[\"命令用法见\",{\"1\":{\"225\":1}}],[\"命令的\",{\"1\":{\"280\":3}}],[\"命令的每行首列输出类似\",{\"1\":{\"183\":1}}],[\"命令的使用方法相同\",{\"1\":{\"146\":1}}],[\"命令模式只有一些最基本的命令\",{\"1\":{\"159\":1}}],[\"命令模式\",{\"0\":{\"159\":1,\"163\":1},\"1\":{\"158\":1}}],[\"命令后的文件的基本数据\",{\"1\":{\"152\":1}}],[\"命令名称忽略大小写\",{\"1\":{\"151\":1}}],[\"命令一起使用\",{\"1\":{\"150\":1}}],[\"命令行的交互式绘图工具\",{\"1\":{\"206\":1}}],[\"命令行窗口运行此命令只对本次会话中有效\",{\"1\":{\"183\":1}}],[\"命令行窗口打开指定目录的资源管理器\",{\"1\":{\"37\":1}}],[\"命令行开始执行到运行终止的消逝时间\",{\"1\":{\"155\":1}}],[\"命令行语法格式中常用符号的含义\",{\"1\":{\"78\":1}}],[\"命令行打开资源管理器\",{\"1\":{\"37\":1}}],[\"命令行\",{\"1\":{\"25\":1}}],[\"命令\",{\"0\":{\"162\":1,\"269\":1},\"1\":{\"25\":2,\"134\":1,\"135\":1,\"164\":1,\"165\":1,\"168\":1,\"181\":2,\"272\":1}}],[\"绘制出一个水分子\",{\"1\":{\"303\":1}}],[\"举个例子\",{\"1\":{\"303\":1}}],[\"举例来说\",{\"1\":{\"165\":2,\"168\":1}}],[\"化学\",{\"1\":{\"627\":1}}],[\"化学键数目\",{\"1\":{\"303\":1}}],[\"化合价不同也识可以分辨出来\",{\"1\":{\"21\":1}}],[\"键长小于两者之和\",{\"1\":{\"527\":1}}],[\"键长为\",{\"1\":{\"510\":1}}],[\"键输入的空白部分\",{\"1\":{\"461\":1}}],[\"键不放\",{\"1\":{\"303\":2}}],[\"键可随时退出底线命令模式\",{\"1\":{\"161\":1}}],[\"鼠标左键双击\",{\"1\":{\"303\":1}}],[\"鼠标左键单击选中某个\",{\"1\":{\"303\":1}}],[\"鼠标点击或框选的方式\",{\"1\":{\"303\":1}}],[\"漏选\",{\"1\":{\"303\":1}}],[\"错选\",{\"1\":{\"303\":1}}],[\"错误解决\",{\"0\":{\"264\":1}}],[\"错误\",{\"1\":{\"47\":2,\"48\":3,\"49\":5,\"55\":1,\"62\":1,\"64\":1,\"69\":1,\"75\":2,\"113\":2}}],[\"团\",{\"1\":{\"303\":2}}],[\"径向分布函数\",{\"1\":{\"303\":1}}],[\"浓度\",{\"1\":{\"303\":2}}],[\"答\",{\"1\":{\"303\":1}}],[\"问题\",{\"1\":{\"303\":1,\"629\":1}}],[\"问号\",{\"1\":{\"61\":2}}],[\"å\",{\"1\":{\"299\":1,\"481\":1}}],[\"真空层厚度\",{\"1\":{\"526\":1}}],[\"真空层\",{\"1\":{\"299\":1}}],[\"真题上的单词必须必须必须记住\",{\"1\":{\"15\":1}}],[\"真题买张宇真题大全解就好\",{\"1\":{\"14\":1}}],[\"真题\",{\"1\":{\"14\":1,\"15\":1}}],[\"删\",{\"1\":{\"512\":1}}],[\"删掉一层c原子层\",{\"1\":{\"299\":1}}],[\"删除游标所在处\",{\"1\":{\"165\":2}}],[\"删除游标所在的那一整行\",{\"1\":{\"165\":1}}],[\"删除光标所在到最后一行的所有数据\",{\"1\":{\"165\":1}}],[\"删除光标所在到第一行的所有数据\",{\"1\":{\"165\":1}}],[\"删除光标所在的向下\",{\"1\":{\"165\":1}}],[\"删除光标后一个字符\",{\"1\":{\"160\":1}}],[\"删除光标前一个字符\",{\"1\":{\"160\":1}}],[\"删除键\",{\"1\":{\"160\":1}}],[\"删除当前光标所在处的字符\",{\"1\":{\"159\":1}}],[\"删除\",{\"0\":{\"165\":1},\"1\":{\"147\":1}}],[\"删除指定目录\",{\"1\":{\"141\":1}}],[\"删除目录\",{\"1\":{\"134\":1}}],[\"删除文件\",{\"1\":{\"134\":1}}],[\"删除开头的\",{\"1\":{\"108\":2}}],[\"导演\",{\"1\":{\"633\":1}}],[\"导体\",{\"1\":{\"483\":1}}],[\"导入\",{\"1\":{\"608\":1}}],[\"导入石墨烯结构\",{\"1\":{\"299\":1}}],[\"导入au模型\",{\"1\":{\"295\":1}}],[\"导致\",{\"1\":{\"469\":1}}],[\"导致计算出错\",{\"1\":{\"461\":1}}],[\"导致的\",{\"1\":{\"247\":1}}],[\"导致课时安排出错\",{\"1\":{\"15\":1}}],[\"刘锦程\",{\"1\":{\"293\":1,\"304\":1,\"306\":1,\"584\":1}}],[\"刘方\",{\"1\":{\"76\":1}}],[\"對\",{\"1\":{\"293\":1}}],[\"功能为\",{\"1\":{\"622\":1,\"623\":1}}],[\"功能\",{\"1\":{\"293\":1}}],[\"功能介绍\",{\"1\":{\"221\":1}}],[\"轉換成\",{\"1\":{\"293\":1}}],[\"將\",{\"1\":{\"293\":1}}],[\"评论区\",{\"1\":{\"293\":1}}],[\"切向力\",{\"1\":{\"578\":1}}],[\"切111面\",{\"1\":{\"295\":1}}],[\"切面\",{\"1\":{\"299\":1}}],[\"切面必须用\",{\"1\":{\"293\":1}}],[\"切面用\",{\"0\":{\"293\":1}}],[\"切\",{\"1\":{\"293\":3}}],[\"切换光标为输入\",{\"1\":{\"160\":1}}],[\"切换到\",{\"1\":{\"183\":1}}],[\"切换到工作时只能使用无特权的普通账户\",{\"1\":{\"183\":1}}],[\"切换到解压后的目录\",{\"1\":{\"183\":1}}],[\"切换到命令模式\",{\"1\":{\"160\":1}}],[\"切换到底线命令模式\",{\"1\":{\"159\":1}}],[\"切换到输入模式\",{\"1\":{\"159\":2}}],[\"切换到上层目录中的path目录中\",{\"1\":{\"135\":1}}],[\"切换到当前目录下的path目录中\",{\"1\":{\"135\":1}}],[\"切换到目录\",{\"1\":{\"135\":1}}],[\"切换当前目录\",{\"1\":{\"135\":1}}],[\"切换目录\",{\"1\":{\"134\":1}}],[\"尚不支持\",{\"1\":{\"291\":1}}],[\"埃格斯特朗\",{\"1\":{\"291\":2}}],[\"埃\",{\"0\":{\"291\":1}}],[\"清晰地分成置换固溶体或间隙固溶体\",{\"1\":{\"288\":1}}],[\"清华\",{\"1\":{\"192\":1}}],[\"避免周期性镜像间的互相影响\",{\"1\":{\"288\":1}}],[\"避免使用感叹语气\",{\"1\":{\"52\":1}}],[\"避免使用双重否定句\",{\"1\":{\"48\":1}}],[\"避免使用复合句\",{\"1\":{\"48\":1}}],[\"避免使用长句\",{\"1\":{\"48\":1}}],[\"笔记以及参考书目的描述\",{\"1\":{\"379\":1}}],[\"笔记与关联条目\",{\"1\":{\"329\":1}}],[\"笔记\",{\"1\":{\"286\":1,\"312\":1,\"513\":1,\"629\":1}}],[\"└─40074\",{\"1\":{\"284\":1}}],[\"└──\",{\"1\":{\"253\":3,\"508\":4,\"532\":4,\"567\":8}}],[\"●\",{\"1\":{\"284\":1}}],[\"依次进入\",{\"1\":{\"611\":1}}],[\"依次登录每一个计算节点\",{\"1\":{\"284\":1}}],[\"依据原子半径\",{\"1\":{\"527\":1}}],[\"依赖于本地化文件\",{\"1\":{\"379\":1}}],[\"依赖\",{\"1\":{\"243\":1}}],[\"批处理作业为\",{\"1\":{\"280\":1}}],[\"队列名称\",{\"1\":{\"278\":1}}],[\"队列中\",{\"1\":{\"268\":1}}],[\"资源\",{\"1\":{\"279\":1}}],[\"资源列表\",{\"0\":{\"279\":1},\"1\":{\"278\":1}}],[\"资源管理器地址妙用\",{\"0\":{\"39\":1},\"1\":{\"36\":1}}],[\"停止正在运行的任务\",{\"0\":{\"274\":1}}],[\"详情\",{\"1\":{\"532\":1,\"567\":1,\"569\":1,\"606\":1}}],[\"详情见\",{\"1\":{\"386\":1}}],[\"详细\",{\"1\":{\"478\":1}}],[\"详细参考\",{\"1\":{\"219\":1}}],[\"详解\",{\"1\":{\"461\":1}}],[\"详见\",{\"1\":{\"270\":1,\"575\":1}}],[\"统一管理和调度集群的软硬件资源\",{\"1\":{\"268\":1}}],[\"作曲者\",{\"1\":{\"633\":1}}],[\"作品\",{\"1\":{\"629\":1}}],[\"作品集\",{\"1\":{\"629\":1}}],[\"作者\",{\"1\":{\"633\":1}}],[\"作者或者贡献者邮箱和\",{\"1\":{\"440\":1}}],[\"作者或贡献者的姓名\",{\"1\":{\"440\":1}}],[\"作者通常完成了创建格式的大部分工作\",{\"1\":{\"370\":1}}],[\"作用为\",{\"1\":{\"541\":1}}],[\"作用\",{\"1\":{\"303\":1}}],[\"作为新的\",{\"1\":{\"534\":1}}],[\"作为点和权重的明确列表\",{\"1\":{\"461\":1}}],[\"作为自动生成的\",{\"1\":{\"461\":1}}],[\"作为使用环境\",{\"1\":{\"454\":1}}],[\"作为一种解决方法\",{\"1\":{\"428\":1}}],[\"作为第一个子元素\",{\"1\":{\"382\":1}}],[\"作为扩展名\",{\"1\":{\"378\":1}}],[\"作为日期的格式\",{\"1\":{\"361\":1}}],[\"作为分析目标\",{\"1\":{\"303\":1}}],[\"作为\",{\"1\":{\"277\":1,\"406\":1}}],[\"作业的参考文献格式基本上都与国标相近\",{\"1\":{\"328\":1}}],[\"作业管理系统的使用\",{\"1\":{\"286\":1}}],[\"作业所执行的队列名称\",{\"1\":{\"280\":1}}],[\"作业名称\",{\"1\":{\"278\":1}}],[\"作业属性\",{\"0\":{\"278\":1}}],[\"作业\",{\"0\":{\"295\":1,\"297\":1},\"1\":{\"275\":1}}],[\"作业提交后一般会先排队等待\",{\"1\":{\"270\":1}}],[\"作业通过\",{\"1\":{\"268\":1}}],[\"作业一般会提交到超算集群上进行计算\",{\"1\":{\"268\":1}}],[\"作文\",{\"1\":{\"15\":1}}],[\"作文五个阶段\",{\"1\":{\"15\":1}}],[\"假设使用的\",{\"1\":{\"264\":1}}],[\"假如尚未安装这个软件\",{\"1\":{\"49\":1}}],[\"假如此软件尚未被安装\",{\"1\":{\"49\":1}}],[\"`enter`\",{\"1\":{\"492\":1}}],[\"`documentation`\",{\"1\":{\"444\":1}}],[\"`date`\",{\"1\":{\"277\":2,\"576\":2}}],[\"`template`\",{\"1\":{\"444\":1}}],[\"`self`\",{\"1\":{\"444\":1}}],[\"`rel`\",{\"1\":{\"444\":1}}],[\"`href`\",{\"1\":{\"444\":1}}],[\"`hostname`\",{\"1\":{\"277\":1}}],[\"`cs\",{\"1\":{\"440\":3}}],[\"``author元素的name\",{\"1\":{\"371\":1}}],[\"``\",{\"1\":{\"270\":1,\"401\":1}}],[\"`\",{\"1\":{\"264\":2,\"371\":1,\"401\":1,\"594\":1}}],[\"`pwd`\",{\"1\":{\"180\":1}}],[\"略\",{\"1\":{\"263\":1}}],[\"管理文献库\",{\"1\":{\"329\":1}}],[\"管理环境变量的\",{\"1\":{\"259\":1}}],[\"管他能不能考上\",{\"1\":{\"17\":1}}],[\"额外修改\",{\"1\":{\"255\":1}}],[\"├──\",{\"1\":{\"253\":49,\"508\":18,\"532\":36,\"567\":52}}],[\"针对不同架构的\",{\"1\":{\"251\":1}}],[\"针对所有用户进行全局设置\",{\"1\":{\"181\":1}}],[\"似乎只能管理员去装\",{\"1\":{\"247\":1}}],[\"刚开始没当回事\",{\"1\":{\"247\":1}}],[\"经常翻译为\",{\"1\":{\"401\":1}}],[\"经历\",{\"0\":{\"247\":1}}],[\"经测试会报错\",{\"1\":{\"219\":1}}],[\"尝试安装一个\",{\"1\":{\"246\":1}}],[\"试一下\",{\"1\":{\"246\":1}}],[\"试着卸载了\",{\"1\":{\"190\":1}}],[\"升级\",{\"0\":{\"245\":1}}],[\"升级订阅后自己加的规则就没了\",{\"1\":{\"113\":1}}],[\"见下\",{\"1\":{\"510\":1}}],[\"见\",{\"1\":{\"239\":1,\"382\":1,\"386\":1,\"387\":1,\"388\":1,\"392\":1,\"393\":2,\"398\":1,\"399\":2,\"401\":3,\"404\":1,\"406\":1,\"413\":1,\"414\":1,\"422\":1,\"426\":1,\"431\":1,\"441\":1,\"451\":2,\"454\":1}}],[\"见第\",{\"1\":{\"62\":2}}],[\"给出了所有从头开始的\",{\"1\":{\"477\":1}}],[\"给出该\",{\"1\":{\"447\":1}}],[\"给出如何转换所有部分的指示\",{\"1\":{\"124\":1}}],[\"给了方便的配置脚本\",{\"1\":{\"227\":1}}],[\"程序的环境变量\",{\"0\":{\"226\":1}}],[\"程序的人来说\",{\"1\":{\"154\":1}}],[\"善用按tab补全\",{\"1\":{\"225\":1}}],[\"官方关于\",{\"1\":{\"622\":1,\"623\":1}}],[\"官方提供的同步服务进行的\",{\"1\":{\"330\":1}}],[\"官方文档提到\",{\"1\":{\"495\":1}}],[\"官方文档\",{\"1\":{\"329\":1}}],[\"官方不提供该功能\",{\"1\":{\"319\":1}}],[\"官方网站\",{\"1\":{\"316\":1}}],[\"官方下载地址\",{\"1\":{\"224\":1}}],[\"官网原文如下\",{\"1\":{\"594\":1}}],[\"官网ni\",{\"1\":{\"523\":1}}],[\"官网文档\",{\"0\":{\"504\":1}}],[\"官网的一些解释\",{\"1\":{\"483\":1}}],[\"官网说的很明确\",{\"1\":{\"461\":1}}],[\"官网下载安装\",{\"1\":{\"315\":1}}],[\"官网已经详细的列出了\",{\"1\":{\"306\":1}}],[\"官网找教育版\",{\"1\":{\"205\":1}}],[\"官网\",{\"1\":{\"205\":2,\"206\":2,\"306\":2,\"325\":1}}],[\"链接里有详细的操作流程\",{\"1\":{\"494\":1}}],[\"链接\",{\"0\":{\"643\":1},\"1\":{\"370\":2,\"638\":1}}],[\"链接的附件\",{\"1\":{\"329\":1}}],[\"链接二选一\",{\"1\":{\"223\":1}}],[\"链接文件\",{\"1\":{\"183\":1}}],[\"推荐\",{\"1\":{\"329\":1,\"462\":1}}],[\"推荐视频\",{\"1\":{\"221\":1}}],[\"推荐你在\",{\"1\":{\"181\":1}}],[\"推荐你修改\",{\"1\":{\"181\":2}}],[\"↩︎\",{\"1\":{\"219\":2,\"321\":1}}],[\"降级即可\",{\"1\":{\"310\":1}}],[\"降级到\",{\"1\":{\"219\":1}}],[\"降低对成性\",{\"1\":{\"299\":1}}],[\"降低百分之几\",{\"1\":{\"59\":1}}],[\"降低\",{\"1\":{\"59\":1}}],[\"降低到百分之八十\",{\"1\":{\"59\":1}}],[\"降低到\",{\"1\":{\"59\":1}}],[\"降低了百分之八十\",{\"1\":{\"59\":1}}],[\"降低了\",{\"1\":{\"59\":1}}],[\"支持选择性弛豫\",{\"1\":{\"478\":1}}],[\"支持\",{\"1\":{\"219\":1}}],[\"支持服务可能要付费\",{\"1\":{\"183\":1}}],[\"函数将该\",{\"1\":{\"624\":1}}],[\"函数读取文件信息\",{\"1\":{\"624\":1}}],[\"函数可以知道\",{\"1\":{\"623\":1}}],[\"函数\",{\"1\":{\"217\":1}}],[\"检索和翻译对应的项\",{\"1\":{\"361\":1}}],[\"检查切向力\",{\"0\":{\"578\":1}}],[\"检查是否收敛\",{\"0\":{\"577\":1}}],[\"检查是否安装正确\",{\"0\":{\"217\":1}}],[\"检查一下\",{\"1\":{\"495\":1}}],[\"检查的时候可以用这个命令\",{\"1\":{\"484\":1}}],[\"检查编译环境\",{\"0\":{\"258\":1}}],[\"检测到wan\",{\"1\":{\"107\":1}}],[\"及其在\",{\"1\":{\"596\":1}}],[\"及以上报错\",{\"0\":{\"310\":1}}],[\"及以上一按鼠标就卡住\",{\"0\":{\"308\":1}}],[\"及以上\",{\"1\":{\"255\":1}}],[\"及以上最新即可\",{\"1\":{\"212\":1}}],[\"及以下\",{\"1\":{\"212\":1}}],[\"及时回顾已经学过的\",{\"1\":{\"17\":1}}],[\"隧道\",{\"1\":{\"210\":1}}],[\"话说感觉这玩意没必要写\",{\"1\":{\"209\":1}}],[\"激活引用分组和折叠\",{\"1\":{\"415\":1}}],[\"激活引用分组并为引用组中的引用指定分隔符\",{\"1\":{\"414\":1}}],[\"激活\",{\"0\":{\"208\":1},\"1\":{\"315\":1,\"414\":1}}],[\"激活git在外部的配置\",{\"1\":{\"29\":1}}],[\"需安装在\",{\"1\":{\"206\":1}}],[\"需要指定需要写入文件的\",{\"1\":{\"623\":1}}],[\"需要把\",{\"1\":{\"606\":1}}],[\"需要注意\",{\"1\":{\"576\":1}}],[\"需要注意的是\",{\"1\":{\"219\":1,\"254\":1}}],[\"需要是插点数量\",{\"1\":{\"572\":1}}],[\"需要打开\",{\"1\":{\"531\":1,\"535\":1}}],[\"需要一致\",{\"1\":{\"531\":1,\"535\":1}}],[\"需要一个稳定\",{\"1\":{\"442\":1}}],[\"需要考虑自旋极化一般来说有以下几种\",{\"1\":{\"468\":1}}],[\"需要完整的匹配\",{\"1\":{\"419\":1}}],[\"需要先定义一种引用格式\",{\"1\":{\"360\":1}}],[\"需要到设置中开启\",{\"1\":{\"327\":1}}],[\"需要查手册\",{\"1\":{\"312\":1}}],[\"需要\",{\"1\":{\"219\":2}}],[\"需要自行确定\",{\"1\":{\"218\":1}}],[\"需要的环境条件\",{\"1\":{\"213\":1}}],[\"需要的话可以整理一个用乱七八糟的小方法提高效率的文档\",{\"1\":{\"13\":1}}],[\"需要装\",{\"1\":{\"212\":1}}],[\"需要几个小时\",{\"1\":{\"183\":1}}],[\"需要认证时关闭\",{\"1\":{\"113\":1}}],[\"需要安装\",{\"1\":{\"91\":1,\"92\":1,\"94\":1,\"95\":1,\"96\":1,\"97\":1,\"98\":1,\"99\":1}}],[\"需要大写\",{\"1\":{\"50\":1}}],[\"需要看全路径的话用\",{\"1\":{\"33\":1}}],[\"集合与标签\",{\"1\":{\"329\":1}}],[\"集群作业管理系统可以根据用户的需求\",{\"1\":{\"268\":1}}],[\"集群已安装\",{\"1\":{\"206\":1}}],[\"集成\",{\"1\":{\"205\":1}}],[\"含有\",{\"1\":{\"594\":1}}],[\"含有歧义的引用\",{\"1\":{\"413\":1}}],[\"含义相同\",{\"1\":{\"377\":1}}],[\"含\",{\"1\":{\"205\":1,\"468\":1}}],[\"含n天本身\",{\"1\":{\"148\":1}}],[\"免费\",{\"1\":{\"205\":1}}],[\"客户端已正式发布\",{\"1\":{\"345\":1}}],[\"客户端登录集群\",{\"1\":{\"286\":1}}],[\"客户端\",{\"1\":{\"205\":1}}],[\"客户端版本号\",{\"1\":{\"104\":1,\"105\":1}}],[\"建立引用\",{\"1\":{\"319\":1}}],[\"建立矩形的石墨烯模型\",{\"1\":{\"298\":1}}],[\"建立co在au\",{\"1\":{\"295\":1}}],[\"建立超胞是为了获得合适的掺杂浓度\",{\"1\":{\"288\":1}}],[\"建立超胞\",{\"1\":{\"288\":1,\"295\":1}}],[\"建模完成后导出为\",{\"1\":{\"492\":1,\"493\":1,\"494\":1}}],[\"建模以生成\",{\"0\":{\"491\":1}}],[\"建模后转换格式\",{\"1\":{\"489\":1}}],[\"建模\",{\"0\":{\"303\":1,\"605\":1},\"1\":{\"304\":1}}],[\"建模视频\",{\"1\":{\"293\":1}}],[\"建模中的一些小疑惑\",{\"0\":{\"287\":1}}],[\"建模及可视化软件\",{\"1\":{\"205\":1}}],[\"建议把上面第\",{\"1\":{\"545\":1}}],[\"建议加上\",{\"1\":{\"468\":1}}],[\"建议采用下面的结构\",{\"1\":{\"74\":1}}],[\"建议参考国际标准\",{\"1\":{\"57\":1}}],[\"建议只使用项目列表\",{\"1\":{\"45\":1}}],[\"建议避免\",{\"1\":{\"45\":1}}],[\"密度泛函理论\",{\"0\":{\"198\":1}}],[\"密码\",{\"1\":{\"104\":1,\"105\":1}}],[\"谈谈理论计算如何入门\",{\"1\":{\"196\":1}}],[\"谈一谈这一年踩过的坑与心得\",{\"1\":{\"12\":1}}],[\"插画者\",{\"1\":{\"633\":1}}],[\"插值结果写入\",{\"1\":{\"580\":1}}],[\"插点个数\",{\"1\":{\"575\":1}}],[\"插点个数n的整数倍\",{\"1\":{\"575\":1}}],[\"插点数量通常是\",{\"1\":{\"571\":1}}],[\"插入中间图像\",{\"0\":{\"572\":1}}],[\"插入引文与生成参考书目\",{\"1\":{\"329\":1}}],[\"插播一个我觉得还不错的视频\",{\"1\":{\"196\":1}}],[\"插件\",{\"0\":{\"95\":1},\"1\":{\"327\":1}}],[\"嘻\",{\"1\":{\"195\":1}}],[\"永久修改\",{\"0\":{\"194\":1}}],[\"库目录\",{\"1\":{\"251\":1}}],[\"库\",{\"1\":{\"193\":1,\"327\":1}}],[\"临时使用\",{\"0\":{\"193\":1}}],[\"临近考试可以买答题纸模拟\",{\"1\":{\"17\":1}}],[\"豆瓣\",{\"1\":{\"192\":1}}],[\"山东理工大学\",{\"1\":{\"192\":1}}],[\"华中理工大学\",{\"1\":{\"192\":1}}],[\"华为\",{\"1\":{\"76\":1}}],[\"源码目录\",{\"1\":{\"251\":1}}],[\"源码目录结构\",{\"0\":{\"251\":1}}],[\"源\",{\"1\":{\"192\":1}}],[\"源站找个可用的下载\",{\"1\":{\"190\":1}}],[\"源自\",{\"1\":{\"25\":1}}],[\"去掉\",{\"1\":{\"394\":1}}],[\"去替换它\",{\"1\":{\"373\":1}}],[\"去\",{\"1\":{\"190\":1,\"246\":1}}],[\"交互式作业为\",{\"1\":{\"280\":1}}],[\"交互式的意思\",{\"1\":{\"151\":1}}],[\"交互命令行中通过以下查询当前机器支持的编译器\",{\"1\":{\"190\":1}}],[\"╰─>\",{\"1\":{\"190\":2}}],[\"│\",{\"1\":{\"190\":2,\"253\":20,\"508\":13,\"532\":35,\"567\":43}}],[\"×\",{\"1\":{\"190\":2}}],[\"获得零点能\",{\"1\":{\"597\":1}}],[\"获得结构和能量\",{\"1\":{\"597\":1}}],[\"获得各自的零点能\",{\"1\":{\"597\":1}}],[\"获得能量\",{\"1\":{\"597\":1}}],[\"获得的包版本与当前\",{\"1\":{\"190\":1}}],[\"获取时间\",{\"1\":{\"599\":1}}],[\"获取虚频\",{\"1\":{\"599\":1}}],[\"获取静电势能\",{\"1\":{\"503\":1}}],[\"获取到\",{\"1\":{\"279\":1}}],[\"获取源代码\",{\"1\":{\"183\":1}}],[\"量子化学\",{\"1\":{\"187\":1}}],[\"各种乱七八糟的报错\",{\"0\":{\"187\":1}}],[\"套接字\",{\"1\":{\"183\":1}}],[\"故障排除\",{\"0\":{\"314\":1}}],[\"故障处理\",{\"1\":{\"74\":1}}],[\"故须换为国内镜像源或配置科学上网\",{\"1\":{\"219\":1}}],[\"故只对部分关键步骤做说明\",{\"1\":{\"207\":1}}],[\"故而有必要先了解一下\",{\"1\":{\"183\":1}}],[\"倒霉的是没有\",{\"1\":{\"183\":1}}],[\"让用户一行命令就获取到所需软件\",{\"1\":{\"183\":1}}],[\"让服务器接收\",{\"1\":{\"172\":1}}],[\"让服务器将选定的文件发送\",{\"1\":{\"172\":1}}],[\"幸运的是\",{\"1\":{\"183\":1,\"361\":1}}],[\"情况稍有不同\",{\"1\":{\"183\":1}}],[\"失败告终\",{\"1\":{\"247\":1}}],[\"失败等待\",{\"1\":{\"105\":1}}],[\"失去响应\",{\"1\":{\"183\":1}}],[\"附带的术语\",{\"1\":{\"386\":1}}],[\"附带安装其他软件或者对系统做了额外改动也毫不知情\",{\"1\":{\"183\":1}}],[\"附件\",{\"1\":{\"329\":2}}],[\"附录v\",{\"1\":{\"420\":2}}],[\"附录i\",{\"1\":{\"441\":2}}],[\"附录iv\",{\"1\":{\"409\":2}}],[\"附录ii\",{\"1\":{\"384\":2,\"392\":2}}],[\"附录\",{\"0\":{\"627\":1,\"628\":1,\"636\":1,\"637\":1,\"642\":1,\"643\":1},\"1\":{\"74\":1,\"409\":4,\"423\":2}}],[\"估计字都认识\",{\"1\":{\"183\":1}}],[\"点等等参数\",{\"1\":{\"507\":1}}],[\"点数目大于\",{\"1\":{\"484\":1}}],[\"点数目小于\",{\"1\":{\"483\":1}}],[\"点小于\",{\"1\":{\"484\":1}}],[\"点少\",{\"1\":{\"483\":1}}],[\"点部分抄自大师兄网站\",{\"1\":{\"461\":1}}],[\"点能量\",{\"1\":{\"461\":1}}],[\"点下计算出来的能量\",{\"1\":{\"461\":1}}],[\"点之间的数据不能混用\",{\"1\":{\"461\":1}}],[\"点对体系能量的变化\",{\"1\":{\"461\":1}}],[\"点即可\",{\"1\":{\"461\":1}}],[\"点在\",{\"1\":{\"461\":1}}],[\"点就够了\",{\"1\":{\"461\":1}}],[\"点取值\",{\"1\":{\"461\":1}}],[\"点取一个\",{\"1\":{\"461\":1}}],[\"点取样文件\",{\"1\":{\"461\":1}}],[\"点为中心生成网格\",{\"1\":{\"461\":1}}],[\"点可以设置\",{\"1\":{\"394\":1}}],[\"点\",{\"1\":{\"303\":1,\"461\":5,\"512\":1,\"591\":1}}],[\"点进行计算\",{\"1\":{\"288\":1}}],[\"点击鼠标一直\",{\"1\":{\"183\":1}}],[\"点号\",{\"1\":{\"61\":1}}],[\"桌面体验良好\",{\"1\":{\"183\":1}}],[\"桌面图形发行版\",{\"1\":{\"183\":1}}],[\"桌面端食用体验更加~\",{\"1\":{\"78\":1}}],[\"桌面端右上角菜单选择章节\",{\"1\":{\"78\":1}}],[\"熟悉后才慢慢转向\",{\"1\":{\"183\":1}}],[\"毫无疑问\",{\"1\":{\"183\":1}}],[\"出版社的地理位置\",{\"1\":{\"638\":1}}],[\"出版社\",{\"1\":{\"638\":1}}],[\"出版商\",{\"1\":{\"638\":1}}],[\"出版物上数字用法的规定\",{\"1\":{\"76\":1}}],[\"出现的时候赋值\",{\"1\":{\"421\":1}}],[\"出现的页码范围以及\",{\"1\":{\"362\":1}}],[\"出现在首字母\",{\"1\":{\"420\":2}}],[\"出现在\",{\"1\":{\"403\":2}}],[\"出现问题\",{\"1\":{\"183\":1}}],[\"运行中的错误\",{\"0\":{\"616\":1}}],[\"运行所需要的四个输入文件就全都准备好了\",{\"1\":{\"498\":1}}],[\"运行的步骤数\",{\"1\":{\"477\":1}}],[\"运行的参数\",{\"1\":{\"458\":1}}],[\"运行的\",{\"1\":{\"458\":1}}],[\"运行至少包含四个输入文件\",{\"1\":{\"457\":1}}],[\"运行我们的并行计算程序\",{\"1\":{\"268\":1}}],[\"运行\",{\"1\":{\"183\":1,\"247\":1,\"462\":1,\"613\":1,\"618\":1}}],[\"运行后在\",{\"1\":{\"541\":1}}],[\"运行后\",{\"1\":{\"107\":1}}],[\"非静电自洽\",{\"1\":{\"507\":1}}],[\"非自洽\",{\"0\":{\"507\":1},\"1\":{\"531\":1,\"548\":1,\"554\":1}}],[\"非自洽计算\",{\"0\":{\"512\":1},\"1\":{\"469\":1,\"507\":1,\"513\":1}}],[\"非金属\",{\"1\":{\"484\":1}}],[\"非英语项目\",{\"1\":{\"435\":1}}],[\"非拉丁和非西里尔名字的显示和排序顺序\",{\"1\":{\"402\":1}}],[\"非数字的月份格式\",{\"1\":{\"393\":1}}],[\"非\",{\"0\":{\"234\":1},\"1\":{\"183\":5}}],[\"非专有名词则不需要大写\",{\"1\":{\"50\":1}}],[\"传\",{\"1\":{\"176\":1}}],[\"传送一个信号\",{\"1\":{\"150\":1}}],[\"速度较慢\",{\"1\":{\"219\":1}}],[\"速度只有\",{\"1\":{\"176\":1}}],[\"速度大概为\",{\"1\":{\"176\":1}}],[\"毕竟\",{\"1\":{\"176\":1}}],[\"普莱应力\",{\"1\":{\"517\":1}}],[\"普\",{\"1\":{\"176\":1}}],[\"普通用户查询他人作业\",{\"0\":{\"283\":1}}],[\"普通用户没有目录的写权限\",{\"1\":{\"183\":1}}],[\"普通用户则为\",{\"1\":{\"33\":1}}],[\"普通文件\",{\"1\":{\"38\":1}}],[\"普通化学知识补充\",{\"1\":{\"21\":1}}],[\"协议全文\",{\"1\":{\"377\":1}}],[\"协议的官方标准\",{\"1\":{\"377\":1}}],[\"协议\",{\"1\":{\"377\":1}}],[\"协议传输数据\",{\"1\":{\"176\":1}}],[\"协议以外的方式来表示\",{\"1\":{\"129\":1}}],[\"拖拽\",{\"0\":{\"174\":1}}],[\"拖堂又不是讲的东西多了\",{\"1\":{\"15\":1}}],[\"发生了反转\",{\"1\":{\"401\":1}}],[\"发表期刊等信息来生成对应的条目\",{\"1\":{\"362\":1}}],[\"发表的年份\",{\"1\":{\"362\":1}}],[\"发送和接收\",{\"1\":{\"176\":1}}],[\"发送\",{\"1\":{\"172\":1}}],[\"发现\",{\"1\":{\"247\":1,\"575\":1}}],[\"发现解决方法多是\",{\"1\":{\"247\":1}}],[\"发现报错\",{\"1\":{\"247\":1}}],[\"发现提示中\",{\"1\":{\"247\":1}}],[\"发现是安装\",{\"1\":{\"190\":1}}],[\"发现不会加载配置\",{\"0\":{\"31\":1},\"1\":{\"30\":1}}],[\"发现之前许多教程里的\",{\"1\":{\"29\":1}}],[\"底下以\",{\"1\":{\"170\":1}}],[\"底线命令\",{\"0\":{\"166\":1}}],[\"底线命令模式可以输入单个或多个字符的命令\",{\"1\":{\"161\":1}}],[\"底线命令模式\",{\"0\":{\"161\":1}}],[\"类型通常指定了仅有的几种取值\",{\"1\":{\"464\":1}}],[\"类型的引用格式中的引用分组和数字格式中的引用范围可以通过\",{\"1\":{\"415\":1}}],[\"类型的引文可以使用下面的代码实现\",{\"1\":{\"391\":1}}],[\"类型\",{\"1\":{\"409\":3,\"437\":2,\"464\":1}}],[\"类似得结果\",{\"1\":{\"408\":1}}],[\"类似\",{\"1\":{\"362\":1,\"371\":1,\"642\":1}}],[\"类似于\",{\"1\":{\"319\":1}}],[\"类似另存新档\",{\"1\":{\"170\":1}}],[\"类或标识符的名字可用空格来分隔\",{\"1\":{\"129\":1}}],[\"效果是一样的\",{\"1\":{\"461\":1}}],[\"效果\",{\"1\":{\"180\":1}}],[\"效果等同于\",{\"1\":{\"170\":2}}],[\"效率\",{\"0\":{\"120\":1}}],[\"喔\",{\"1\":{\"170\":1}}],[\"储存后离开\",{\"1\":{\"170\":1}}],[\"又分为\",{\"1\":{\"460\":1}}],[\"又折回去折腾\",{\"1\":{\"247\":1}}],[\"又不想储存\",{\"1\":{\"170\":1}}],[\"又称\",{\"1\":{\"74\":2}}],[\"特征值和特征向量\",{\"1\":{\"596\":1}}],[\"特别要检查离子循环内的所有电子迭代是否收敛\",{\"1\":{\"617\":1}}],[\"特别是准牛顿算法对此参数的选择很敏感\",{\"1\":{\"481\":1}}],[\"特别注意的是\",{\"1\":{\"169\":1}}],[\"特定序数\",{\"1\":{\"384\":1}}],[\"特殊情况下除外\",{\"1\":{\"377\":2}}],[\"特点\",{\"1\":{\"21\":2}}],[\"回传\",{\"1\":{\"554\":1}}],[\"回退到\",{\"1\":{\"415\":1}}],[\"回转半径\",{\"1\":{\"303\":1}}],[\"回到\",{\"1\":{\"183\":1}}],[\"回到一般模式中\",{\"1\":{\"169\":1}}],[\"回车键\",{\"1\":{\"160\":1}}],[\"搜了一些资料\",{\"1\":{\"247\":1}}],[\"搜寻\",{\"1\":{\"168\":1}}],[\"搜索过渡态\",{\"1\":{\"597\":1}}],[\"搜索到一个类似问题的\",{\"1\":{\"310\":1}}],[\"搜索替换\",{\"0\":{\"168\":1}}],[\"搜索\",{\"1\":{\"29\":1}}],[\"嘿嘿\",{\"1\":{\"165\":1}}],[\"撤销\",{\"1\":{\"165\":1}}],[\"呢\",{\"1\":{\"165\":1,\"496\":1}}],[\"亦即将\",{\"1\":{\"170\":1}}],[\"亦即由\",{\"1\":{\"165\":1}}],[\"亦即是退格键\",{\"1\":{\"165\":1}}],[\"啊这\",{\"1\":{\"196\":1,\"312\":1}}],[\"啊\",{\"1\":{\"164\":1}}],[\"向光标之上寻找一个字符串名称为\",{\"1\":{\"168\":1}}],[\"向光标之下寻找一个名称为\",{\"1\":{\"168\":1}}],[\"向上\",{\"1\":{\"164\":2,\"168\":1}}],[\"向下\",{\"1\":{\"164\":2}}],[\"向file的文件权限中加入用户组可写权限\",{\"1\":{\"147\":1}}],[\"光标向下移动\",{\"1\":{\"164\":1}}],[\"光标移动到这个屏幕的最下方那一行的第一个字符\",{\"1\":{\"164\":1}}],[\"光标移动到这个屏幕的最上方那一行的第一个字符\",{\"1\":{\"164\":1}}],[\"光标移动到这个屏幕的中央那一行的第一个字符\",{\"1\":{\"164\":1}}],[\"光标会向右移动这一行的\",{\"1\":{\"164\":1}}],[\"光标将变成竖线\",{\"1\":{\"160\":1}}],[\"光的强度会发生衰减\",{\"1\":{\"21\":1}}],[\"退出编辑模式\",{\"1\":{\"169\":1}}],[\"退出输入模式\",{\"1\":{\"160\":1}}],[\"退出程序\",{\"1\":{\"105\":1,\"161\":1}}],[\"退格键\",{\"1\":{\"160\":1}}],[\"换源\",{\"0\":{\"191\":1},\"1\":{\"219\":1}}],[\"换源已无法解决\",{\"1\":{\"113\":1}}],[\"换行\",{\"1\":{\"160\":1}}],[\"组织\",{\"1\":{\"329\":1}}],[\"组\",{\"1\":{\"183\":1}}],[\"组合\",{\"1\":{\"160\":1}}],[\"组播地址\",{\"1\":{\"104\":1,\"105\":1}}],[\"三\",{\"1\":{\"595\":1}}],[\"三个方向均有一个自由度\",{\"1\":{\"594\":1}}],[\"三个方向上生成对应数目的\",{\"1\":{\"461\":1}}],[\"三个文件\",{\"1\":{\"554\":1}}],[\"三次静电自洽需要注意\",{\"1\":{\"535\":1}}],[\"三种权限的缩写\",{\"1\":{\"183\":1}}],[\"三种模式\",{\"0\":{\"158\":1}}],[\"三级标题下面某一方面的小标题\",{\"1\":{\"44\":1}}],[\"三级标题\",{\"1\":{\"44\":2,\"45\":5}}],[\"吧\",{\"1\":{\"157\":1}}],[\"菜鸟教程\",{\"1\":{\"157\":1}}],[\"菜鸡小张\",{\"1\":{\"78\":1}}],[\"懒得写了的\",{\"1\":{\"302\":1}}],[\"懒得写了\",{\"1\":{\"157\":1}}],[\"往往在执行一条命令时\",{\"1\":{\"155\":1}}],[\"往那儿一摆\",{\"1\":{\"15\":1}}],[\"执行后会生成\",{\"1\":{\"573\":1}}],[\"执行后生成了\",{\"1\":{\"554\":1}}],[\"执行后在\",{\"1\":{\"542\":1}}],[\"执行可执行程序\",{\"1\":{\"183\":1}}],[\"执行\",{\"1\":{\"183\":1,\"280\":5,\"580\":6}}],[\"执行的时间总和\",{\"1\":{\"155\":1}}],[\"执行文件\",{\"1\":{\"38\":1}}],[\"暂存为\",{\"1\":{\"624\":1}}],[\"暂译为粒子\",{\"1\":{\"401\":1}}],[\"暂时离开\",{\"1\":{\"170\":1}}],[\"暂停一个进程的进行\",{\"1\":{\"150\":1}}],[\"暂定一个系统与软件盘\",{\"1\":{\"5\":1}}],[\"强制退出\",{\"1\":{\"170\":1}}],[\"强制\",{\"1\":{\"170\":1}}],[\"强制写入该档案\",{\"1\":{\"170\":1}}],[\"强制中断一个进程的进行\",{\"1\":{\"150\":1}}],[\"强化阶段给\",{\"1\":{\"15\":1}}],[\"强化阶段讲义上题就不少\",{\"1\":{\"14\":1}}],[\"强化班用的\",{\"1\":{\"14\":1}}],[\"强化\",{\"1\":{\"13\":1,\"14\":1}}],[\"相对初态的能量\",{\"1\":{\"577\":1}}],[\"相对而言\",{\"1\":{\"148\":1}}],[\"相似度\",{\"1\":{\"571\":1}}],[\"相同\",{\"1\":{\"419\":1,\"420\":1,\"452\":1}}],[\"相比于从属格式只有\",{\"1\":{\"368\":1}}],[\"相较于其他文献管理软件的一大优势就是可以直接从网页中抓取元数据并存入数据库\",{\"1\":{\"326\":1}}],[\"相关的并\",{\"1\":{\"259\":1}}],[\"相反地\",{\"1\":{\"425\":1}}],[\"相反\",{\"1\":{\"168\":1,\"170\":1}}],[\"相当于\",{\"1\":{\"164\":3,\"165\":2}}],[\"相当于输入ctrl+z\",{\"1\":{\"150\":1}}],[\"相当于输入ctrl+c\",{\"1\":{\"150\":1}}],[\"较详细地将pid的信息列出\",{\"1\":{\"149\":1}}],[\"较长\",{\"1\":{\"149\":1}}],[\"搭配来对文件的权限进行更改\",{\"1\":{\"147\":1}}],[\"跟我们物理化学书里面的\",{\"1\":{\"484\":1}}],[\"跟\",{\"1\":{\"147\":1}}],[\"加长\",{\"1\":{\"606\":1}}],[\"加co分子\",{\"1\":{\"295\":1}}],[\"加真空\",{\"1\":{\"295\":1}}],[\"加入以下内容\",{\"1\":{\"245\":1}}],[\"加入\",{\"0\":{\"232\":1},\"1\":{\"147\":1}}],[\"加一行\",{\"1\":{\"32\":1}}],[\"取值有\",{\"1\":{\"519\":1}}],[\"取值小一些\",{\"1\":{\"484\":1}}],[\"取值范围引自大师兄科研网\",{\"1\":{\"476\":1}}],[\"取值都是布尔\",{\"1\":{\"464\":1}}],[\"取值\",{\"1\":{\"278\":1,\"279\":1,\"466\":1,\"467\":1,\"468\":1,\"469\":1,\"473\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"480\":1,\"484\":1,\"519\":1}}],[\"取消任务\",{\"0\":{\"273\":1}}],[\"取出文件\",{\"1\":{\"145\":1}}],[\"取得工作目录名称\",{\"1\":{\"33\":1}}],[\"忽略不需要的\",{\"1\":{\"642\":1}}],[\"忽略不存在的文件\",{\"1\":{\"140\":1}}],[\"忽略大小写的区别\",{\"1\":{\"145\":1}}],[\"若指定\",{\"1\":{\"591\":1}}],[\"若返回值<5\",{\"1\":{\"571\":1}}],[\"若只进行体积守恒的弛豫\",{\"1\":{\"517\":1}}],[\"若为川大二代集群\",{\"1\":{\"206\":1}}],[\"若为\",{\"1\":{\"170\":1}}],[\"若曾修改过档案\",{\"1\":{\"170\":1}}],[\"若文件属性为\",{\"1\":{\"170\":1}}],[\"若想要编辑文本\",{\"1\":{\"159\":1}}],[\"若需要删除时\",{\"1\":{\"151\":1}}],[\"若当中有我们所需要的信息\",{\"1\":{\"145\":1}}],[\"若目标文件已经存在\",{\"1\":{\"139\":2}}],[\"若目标文件已经存在时\",{\"1\":{\"138\":1}}],[\"才被视为是非英语环境\",{\"1\":{\"435\":1}}],[\"才进行消除歧义的尝试\",{\"1\":{\"409\":1}}],[\"才会实现匹配\",{\"1\":{\"385\":2}}],[\"才会更新\",{\"1\":{\"139\":1}}],[\"才能输入喔\",{\"1\":{\"169\":1}}],[\"才能删除此文件\",{\"1\":{\"48\":1}}],[\"才能接受\",{\"1\":{\"48\":1}}],[\"才能同步学习记录\",{\"1\":{\"15\":1}}],[\"递归地把dir目录下中的所有文件和子目录下所有文件的用户组修改为users\",{\"1\":{\"153\":1}}],[\"递归删除\",{\"1\":{\"140\":1}}],[\"递归持续复制\",{\"1\":{\"138\":1}}],[\"递归列出\",{\"1\":{\"136\":1}}],[\"它含有以下子元素\",{\"1\":{\"383\":1}}],[\"它与\",{\"1\":{\"377\":1}}],[\"它生成的条目的格式是\",{\"1\":{\"372\":1}}],[\"它发布于\",{\"1\":{\"335\":1}}],[\"它设定了作业的属性和作业的内容\",{\"1\":{\"270\":1}}],[\"它指定了作业的名称\",{\"1\":{\"270\":1}}],[\"它不会去调用这两个命令\",{\"1\":{\"181\":1}}],[\"它们通过表面原子重组和相互间的反应\",{\"1\":{\"522\":1}}],[\"它们只是同一晶体结构的不同\",{\"1\":{\"292\":1}}],[\"它们分别是\",{\"1\":{\"155\":1}}],[\"它们并不多\",{\"1\":{\"149\":1}}],[\"它用于把\",{\"1\":{\"154\":1}}],[\"它通常与\",{\"1\":{\"150\":1}}],[\"它的值有\",{\"1\":{\"444\":1}}],[\"它的基本用法如下\",{\"1\":{\"153\":1}}],[\"它的基本语法如下\",{\"1\":{\"148\":1,\"150\":1}}],[\"它的使用非常简单\",{\"1\":{\"153\":1,\"155\":1}}],[\"它的使用也相对较为复杂\",{\"1\":{\"148\":1}}],[\"它的用法非常简单\",{\"1\":{\"152\":1}}],[\"它的参数如下\",{\"1\":{\"151\":1}}],[\"它的一般语法如下\",{\"1\":{\"151\":1}}],[\"它的简单语法为\",{\"1\":{\"145\":1}}],[\"它的常用参数如下\",{\"1\":{\"138\":1,\"139\":1,\"140\":1,\"144\":1,\"145\":1,\"149\":1,\"154\":1}}],[\"它还会调用相应的压缩程序\",{\"1\":{\"144\":1}}],[\"它还可以把多个文件一次性地复制到一个目录下\",{\"1\":{\"138\":1}}],[\"它是一个非常危险的参数\",{\"1\":{\"140\":1}}],[\"它可以用\",{\"1\":{\"136\":1}}],[\"夹\",{\"1\":{\"138\":1}}],[\"创建\",{\"1\":{\"462\":1}}],[\"创建文件夹\",{\"1\":{\"137\":1}}],[\"创建库文件夹\",{\"1\":{\"4\":1}}],[\"仅使用有变化的部分\",{\"1\":{\"642\":1}}],[\"仅考虑对称不等价位移\",{\"1\":{\"478\":1}}],[\"仅是为了方便我理解\",{\"1\":{\"464\":1}}],[\"仅是为方便使用\",{\"1\":{\"306\":1}}],[\"仅影响英语项目\",{\"1\":{\"435\":1}}],[\"仅当所有给定测试值都为\",{\"1\":{\"409\":1}}],[\"仅在第一个名字后使用了分隔符\",{\"1\":{\"401\":1}}],[\"仅能查看自己的任务\",{\"1\":{\"283\":1}}],[\"仅列出目录本身\",{\"1\":{\"136\":1}}],[\"仅取主机的第一个名字\",{\"1\":{\"33\":1,\"180\":1}}],[\"连字符或\",{\"1\":{\"409\":1}}],[\"连在一块不知道什么意思\",{\"1\":{\"183\":1}}],[\"连续向后删除\",{\"1\":{\"165\":1}}],[\"连同文件的所有特性把文件file1复制成文件file2\",{\"1\":{\"138\":1}}],[\"连同文件的属性一起复制\",{\"1\":{\"138\":1}}],[\"连同子目录的内容一起列出\",{\"1\":{\"136\":1}}],[\"连同隐藏文件\",{\"1\":{\"136\":1}}],[\"连接nptl实现的线程库\",{\"1\":{\"154\":1}}],[\"连接文件\",{\"1\":{\"148\":1}}],[\"连接一个无线网络后\",{\"1\":{\"113\":1}}],[\"连接号用于连接两个类似的词\",{\"1\":{\"72\":1}}],[\"连接号\",{\"0\":{\"72\":1},\"1\":{\"58\":1}}],[\"连接\",{\"1\":{\"58\":1}}],[\"返回结果为\",{\"1\":{\"577\":1,\"578\":1}}],[\"返回值为排序后的名称列表\",{\"1\":{\"425\":1}}],[\"返回整数\",{\"1\":{\"424\":1}}],[\"返回\",{\"1\":{\"424\":1}}],[\"返回名字列表字符串\",{\"1\":{\"424\":1}}],[\"返回使用\",{\"1\":{\"401\":1}}],[\"返回以上结果既为正确\",{\"1\":{\"217\":1}}],[\"返回上一步检查是否成功\",{\"1\":{\"259\":1}}],[\"返回上一级目录\",{\"1\":{\"135\":1}}],[\"返回上两级目录\",{\"1\":{\"135\":1}}],[\"返回进入此目录之前所在目录\",{\"1\":{\"135\":1}}],[\"解除堆栈大小限制\",{\"0\":{\"284\":1},\"1\":{\"618\":1}}],[\"解放你的双手\",{\"1\":{\"221\":1}}],[\"解压源代码安装包\",{\"1\":{\"183\":1}}],[\"解压\",{\"1\":{\"144\":1,\"183\":1}}],[\"解压缩后的根目录\",{\"1\":{\"251\":1}}],[\"解压缩的目录dir\",{\"1\":{\"144\":1}}],[\"解压缩过程中\",{\"1\":{\"144\":1}}],[\"解压缩\",{\"0\":{\"225\":1,\"231\":1},\"1\":{\"134\":1,\"144\":2,\"219\":1,\"580\":1}}],[\"解打包或解压缩的功能\",{\"1\":{\"144\":1}}],[\"解释\",{\"1\":{\"135\":1}}],[\"解决方案\",{\"1\":{\"264\":1}}],[\"解决方法蛮多\",{\"1\":{\"113\":1}}],[\"解决方法是那就在\",{\"1\":{\"32\":1}}],[\"解决方法\",{\"1\":{\"31\":1}}],[\"解决一下\",{\"1\":{\"247\":1}}],[\"解决中文无法显示的问题\",{\"0\":{\"35\":1}}],[\"解决\",{\"1\":{\"34\":1,\"187\":1,\"618\":2}}],[\"预\",{\"1\":{\"206\":1,\"306\":1}}],[\"预览文件后几行\",{\"1\":{\"134\":1}}],[\"预定义实体表\",{\"0\":{\"130\":1}}],[\"嘛\",{\"1\":{\"131\":1}}],[\"区域文件\",{\"1\":{\"376\":1}}],[\"区别的总结\",{\"1\":{\"181\":1}}],[\"区别于差分电荷密度图\",{\"1\":{\"530\":1}}],[\"区别于\",{\"1\":{\"131\":1}}],[\"区分文件夹\",{\"1\":{\"38\":1}}],[\"隔开\",{\"1\":{\"129\":1}}],[\"空格处理\",{\"0\":{\"455\":1}}],[\"空白\",{\"0\":{\"418\":1}}],[\"空元素的属性\",{\"1\":{\"129\":1}}],[\"空元素\",{\"1\":{\"128\":1}}],[\"空卡空卡空空卡\",{\"1\":{\"13\":1}}],[\"剩下的代码为\",{\"1\":{\"127\":1}}],[\"规范\",{\"0\":{\"374\":1},\"1\":{\"349\":1}}],[\"规则进行解析\",{\"1\":{\"127\":1}}],[\"规划\",{\"1\":{\"21\":1}}],[\"规划中的北京先进光源\",{\"1\":{\"21\":1}}],[\"属主组员\",{\"1\":{\"183\":1}}],[\"属性也可能缺失\",{\"1\":{\"454\":1}}],[\"属性是可选的\",{\"1\":{\"454\":1}}],[\"属性是对元素及其内容的描述\",{\"1\":{\"129\":1}}],[\"属性时多次使用\",{\"1\":{\"441\":1}}],[\"属性没有设置\",{\"1\":{\"435\":1}}],[\"属性值用来在输出的前面或者后面添加东西\",{\"1\":{\"428\":1}}],[\"属性值必须和\",{\"1\":{\"392\":1}}],[\"属性值必须是\",{\"1\":{\"392\":1}}],[\"属性调用日期变量\",{\"1\":{\"425\":1}}],[\"属性被调用\",{\"1\":{\"424\":1}}],[\"属性被设置时\",{\"1\":{\"386\":1,\"401\":1,\"426\":1}}],[\"属性被设置为\",{\"1\":{\"373\":1}}],[\"属性对姓名进行排序\",{\"1\":{\"425\":1}}],[\"属性对应\",{\"1\":{\"421\":1}}],[\"属性对英语\",{\"1\":{\"421\":1}}],[\"属性代替对应的值\",{\"1\":{\"419\":1}}],[\"属性或者\",{\"1\":{\"414\":1}}],[\"属性可能的值为\",{\"1\":{\"430\":1}}],[\"属性可用于将各个参考文献条目构成一个或者多个文本块\",{\"1\":{\"430\":1}}],[\"属性可设置的值为\",{\"1\":{\"413\":1}}],[\"属性可以在\",{\"1\":{\"429\":1,\"431\":1,\"432\":1,\"433\":1}}],[\"属性可以控制标点放在括号的内还是外\",{\"1\":{\"422\":1}}],[\"属性可以被设置为\",{\"1\":{\"404\":1}}],[\"属性可以用来分割不同的名字变量\",{\"1\":{\"400\":1}}],[\"属性可以用来设置页面范围分割的符号\",{\"1\":{\"420\":1}}],[\"属性可以用来设置\",{\"1\":{\"393\":1,\"404\":1}}],[\"属性可以用来设置不同的日期组成部分\",{\"1\":{\"393\":1}}],[\"属性可以设置用来代替的默认的本地化文件\",{\"1\":{\"437\":1}}],[\"属性可以设置为\",{\"1\":{\"394\":1,\"406\":1}}],[\"属性可以设置术语的形式\",{\"1\":{\"392\":1}}],[\"属性为\",{\"1\":{\"413\":1}}],[\"属性会影响\",{\"1\":{\"403\":2}}],[\"属性激活\",{\"1\":{\"402\":2}}],[\"属性和\",{\"1\":{\"402\":1,\"421\":1}}],[\"属性相同\",{\"1\":{\"401\":1}}],[\"属性导致的内部位置变换后的分隔符\",{\"1\":{\"401\":1}}],[\"属性将会影响所有的名字\",{\"1\":{\"401\":1}}],[\"属性只影响名字变量中的第一个名字\",{\"1\":{\"401\":1}}],[\"属性使当前的名字发生了颠倒时使用\",{\"1\":{\"401\":2}}],[\"属性行进格式化\",{\"1\":{\"399\":1}}],[\"属性选择的数字变量\",{\"1\":{\"399\":1}}],[\"属性选择的日期部分\",{\"1\":{\"394\":1}}],[\"属性以及多个\",{\"1\":{\"393\":1}}],[\"属性并设置为\",{\"1\":{\"393\":1}}],[\"属性必须设置为\",{\"1\":{\"450\":1}}],[\"属性必须是\",{\"1\":{\"392\":1}}],[\"属性必须包含在一对单引号或者双引号之间\",{\"1\":{\"129\":1}}],[\"属性的设置\",{\"1\":{\"402\":1}}],[\"属性的值将会代替所有被渲染的名字\",{\"1\":{\"419\":1}}],[\"属性的值将代替整个名字列表\",{\"1\":{\"419\":1}}],[\"属性的值\",{\"1\":{\"401\":1,\"419\":1,\"423\":1}}],[\"属性的值相匹配\",{\"1\":{\"392\":1}}],[\"属性的另外一种形式\",{\"1\":{\"129\":1}}],[\"属性一起选择变量的\",{\"1\":{\"392\":1}}],[\"属性用来表示元素内容的语言\",{\"1\":{\"450\":1}}],[\"属性用来控制判断的逻辑\",{\"1\":{\"409\":1}}],[\"属性用来指定一个引文中的不同引用的间隔符\",{\"1\":{\"391\":1}}],[\"属性用来设置\",{\"1\":{\"387\":1}}],[\"属性设置其为以下几种情形\",{\"1\":{\"441\":1}}],[\"属性设置的值\",{\"1\":{\"401\":1}}],[\"属性设置\",{\"1\":{\"387\":1,\"389\":1,\"399\":1}}],[\"属性设置为一种语言\",{\"1\":{\"454\":1}}],[\"属性设置为\",{\"1\":{\"385\":1,\"387\":1,\"393\":1,\"398\":1,\"401\":2,\"402\":10,\"413\":1,\"422\":3,\"424\":2,\"425\":3}}],[\"属性来调用\",{\"1\":{\"424\":1}}],[\"属性来折叠\",{\"1\":{\"415\":1}}],[\"属性来分隔子元素以及\",{\"1\":{\"408\":1}}],[\"属性来控制\",{\"1\":{\"404\":1}}],[\"属性来选择\",{\"1\":{\"393\":1}}],[\"属性来设置为升序\",{\"1\":{\"423\":1}}],[\"属性来设置其缩写形式\",{\"1\":{\"401\":1}}],[\"属性来设置常用的分隔符\",{\"1\":{\"395\":1}}],[\"属性来设置\",{\"1\":{\"387\":1,\"394\":1,\"401\":1,\"415\":1}}],[\"属性来设置数字变量渲染为序数\",{\"1\":{\"384\":1}}],[\"属性来设置特定格式\",{\"1\":{\"384\":1}}],[\"属性来指定\",{\"1\":{\"383\":1}}],[\"属性则用来指定元素内容的语言\",{\"1\":{\"383\":1}}],[\"属性保存了具体的作者值\",{\"1\":{\"371\":1}}],[\"属性分别定义了前缀\",{\"1\":{\"371\":1}}],[\"属性\",{\"0\":{\"129\":1},\"1\":{\"127\":1,\"278\":1,\"369\":1,\"371\":1,\"382\":2,\"384\":1,\"391\":1,\"392\":1,\"393\":1,\"394\":4,\"399\":1,\"400\":1,\"403\":1,\"406\":1,\"407\":1,\"408\":1,\"414\":1,\"421\":2,\"423\":1,\"446\":1}}],[\"属于优先布局的十个重大科技基础设施建设项目\",{\"1\":{\"21\":1}}],[\"属于比较慢的\",{\"1\":{\"13\":1}}],[\"子文件夹中的内容\",{\"1\":{\"254\":1}}],[\"子元素以及一个可选的用来结尾的\",{\"1\":{\"409\":1}}],[\"子元素的属性值\",{\"1\":{\"405\":1}}],[\"子元素来描述什么样的数据\",{\"1\":{\"451\":1}}],[\"子元素来对名字的小部分进行特定的格式化\",{\"1\":{\"403\":1}}],[\"子元素来构建\",{\"1\":{\"387\":1,\"393\":1}}],[\"子元素不影响各个日期部分渲染的顺序和以及其是否渲染\",{\"1\":{\"393\":1}}],[\"子元素还还可以包含子元素\",{\"1\":{\"128\":1}}],[\"子元素\",{\"1\":{\"127\":1,\"129\":1,\"382\":1,\"383\":1,\"393\":1,\"409\":1,\"423\":2}}],[\"子网掩码\",{\"1\":{\"105\":1}}],[\"根本上来说\",{\"1\":{\"459\":1}}],[\"根元素有以下几种属性\",{\"1\":{\"437\":1}}],[\"根元素必须携带\",{\"1\":{\"382\":1}}],[\"根元素中\",{\"1\":{\"382\":1}}],[\"根元素开始分析\",{\"1\":{\"368\":1}}],[\"根元素为\",{\"1\":{\"366\":1}}],[\"根元素包含了其他所有元素\",{\"1\":{\"128\":1}}],[\"根元素是文档的第一个元素\",{\"1\":{\"127\":1}}],[\"根元素也是元素\",{\"1\":{\"127\":1}}],[\"根元素\",{\"0\":{\"369\":1,\"437\":1},\"1\":{\"127\":1}}],[\"根据需要使用两位数或者更多\",{\"1\":{\"642\":1}}],[\"根据需要自行选择配置\",{\"1\":{\"33\":1}}],[\"根据这一步返回的提示\",{\"1\":{\"572\":1}}],[\"根据能量最低原理\",{\"1\":{\"522\":1}}],[\"根据不同需要选取能量或势函数或电子密度作为初始值\",{\"1\":{\"507\":1}}],[\"根据计算需要\",{\"1\":{\"496\":1}}],[\"根据知网上下载的文献文件来抓取引用信息\",{\"1\":{\"327\":1}}],[\"根据\",{\"1\":{\"212\":1,\"560\":2}}],[\"根据普通账号的权限\",{\"1\":{\"183\":1}}],[\"根据其形成机制\",{\"1\":{\"21\":1}}],[\"注记\",{\"1\":{\"451\":1,\"629\":1}}],[\"注\",{\"1\":{\"139\":1,\"144\":1,\"150\":1,\"155\":1,\"371\":1,\"387\":1}}],[\"注释行\",{\"1\":{\"459\":2}}],[\"注释显示在参下方的缩进块中\",{\"1\":{\"430\":1}}],[\"注释和参考文献的格式\",{\"1\":{\"375\":1}}],[\"注释\",{\"1\":{\"127\":2}}],[\"注意和\",{\"1\":{\"639\":1}}],[\"注意不是体相的能量而是体相中单个原子的能量\",{\"1\":{\"523\":1}}],[\"注意大小写\",{\"1\":{\"487\":1}}],[\"注意添加的文件名需要含有中文\",{\"1\":{\"327\":1}}],[\"注意添加no\",{\"1\":{\"245\":1,\"247\":1}}],[\"注意是后面的减前面的\",{\"1\":{\"542\":1}}],[\"注意是双击\",{\"1\":{\"303\":1}}],[\"注意是基础篇\",{\"1\":{\"14\":1}}],[\"注意这儿的\",{\"1\":{\"275\":1}}],[\"注意如果用的链接不同\",{\"1\":{\"225\":1}}],[\"注意版本\",{\"1\":{\"215\":1}}],[\"注意一下啊\",{\"1\":{\"170\":1}}],[\"注意c表示byte\",{\"1\":{\"148\":1}}],[\"注意前后单引号不同\",{\"1\":{\"66\":1}}],[\"注意前后双引号不同\",{\"1\":{\"66\":1}}],[\"注意避免\",{\"1\":{\"63\":1}}],[\"注意\",{\"1\":{\"13\":1,\"21\":1,\"72\":1,\"94\":1,\"105\":1,\"144\":1,\"183\":1,\"190\":1,\"216\":1,\"256\":1,\"401\":1,\"484\":2,\"576\":1,\"596\":1,\"624\":1}}],[\"转为\",{\"1\":{\"623\":1}}],[\"转移\",{\"1\":{\"210\":1}}],[\"转移到\",{\"1\":{\"183\":1}}],[\"转发\",{\"0\":{\"210\":1}}],[\"转向\",{\"1\":{\"183\":1}}],[\"转换文件格式的原理\",{\"1\":{\"623\":1}}],[\"转换为\",{\"0\":{\"620\":1}}],[\"转换成\",{\"1\":{\"494\":1}}],[\"转换\",{\"0\":{\"126\":1,\"493\":1}}],[\"转自\",{\"1\":{\"41\":1}}],[\"列一组\",{\"1\":{\"183\":1}}],[\"列\",{\"1\":{\"183\":1}}],[\"列出队列\",{\"1\":{\"272\":1}}],[\"列出作业\",{\"1\":{\"272\":1}}],[\"列出\",{\"1\":{\"272\":1}}],[\"列出所有节点的状态\",{\"1\":{\"272\":1}}],[\"列出所有节点的详细信息\",{\"1\":{\"272\":1}}],[\"列出所有正在运行的作业\",{\"1\":{\"272\":1}}],[\"列出所有作业状态的汇总\",{\"1\":{\"272\":1}}],[\"列出所有作业\",{\"1\":{\"272\":1}}],[\"列出所有队列\",{\"1\":{\"272\":1}}],[\"列出的文件大小使用合适的单位表示\",{\"1\":{\"180\":1}}],[\"列出文件所属用户组为用户组id为n的文件\",{\"1\":{\"148\":1}}],[\"列出文件所属用户组为name的文件\",{\"1\":{\"148\":1}}],[\"列出文件所有者为用户id为n的文件\",{\"1\":{\"148\":1}}],[\"列出文件所有者为name的文件\",{\"1\":{\"148\":1}}],[\"列出文件和目录\",{\"1\":{\"134\":1}}],[\"列出比file还要新的文件名\",{\"1\":{\"148\":1}}],[\"列出在n天之内\",{\"1\":{\"148\":1}}],[\"列出在n天之前\",{\"1\":{\"148\":1}}],[\"列出来\",{\"1\":{\"136\":1}}],[\"列出全部的文件\",{\"1\":{\"136\":1}}],[\"列出长数据串\",{\"1\":{\"136\":1}}],[\"列出了本地化\",{\"1\":{\"125\":1}}],[\"列表中的选择\",{\"1\":{\"393\":1}}],[\"列表中的值\",{\"1\":{\"384\":1}}],[\"列表\",{\"1\":{\"88\":1}}],[\"每种元素往往还会有多种赝势存在\",{\"1\":{\"460\":1}}],[\"每一组值前面表示可选的属性值\",{\"1\":{\"420\":1}}],[\"每一种元素都有其特征的吸收边系\",{\"1\":{\"21\":1}}],[\"每组的标志类似\",{\"1\":{\"183\":1}}],[\"每\",{\"1\":{\"183\":1}}],[\"每个原子在\",{\"1\":{\"594\":1}}],[\"每个原子的三个\",{\"1\":{\"459\":2}}],[\"每个离子步仍是\",{\"1\":{\"591\":1}}],[\"每个离子步都算满了\",{\"1\":{\"591\":1}}],[\"每个样式或者本地化文件应该以\",{\"1\":{\"456\":1}}],[\"每个小写字符串的首字母大写\",{\"1\":{\"435\":1}}],[\"每个单词的第一个字母保持大写\",{\"1\":{\"435\":1}}],[\"每个单独的\",{\"1\":{\"352\":1}}],[\"每个作者的出版物列表\",{\"1\":{\"430\":1}}],[\"每个变量将会按顺序单独渲染\",{\"1\":{\"400\":1}}],[\"每个月第一天显示为\",{\"1\":{\"394\":1}}],[\"每个本地化文件包括了一种语言方言的本地化数据\",{\"1\":{\"382\":1}}],[\"每个本地化文件包含一系列对某种特定的语言\",{\"1\":{\"381\":1}}],[\"每个本地化文件都包含一种对应语言的本地化数据\",{\"1\":{\"125\":1}}],[\"每个首字母后面为\",{\"1\":{\"371\":1}}],[\"每个条目的格式在\",{\"1\":{\"371\":1}}],[\"每个\",{\"1\":{\"357\":1,\"371\":1,\"384\":1,\"400\":1}}],[\"每个元素中\",{\"1\":{\"129\":1}}],[\"样式是有效的\",{\"1\":{\"455\":1}}],[\"样式可能被分类到一个或者多个类别\",{\"1\":{\"441\":1}}],[\"样式可以使用不同的元素来进行特定的配置\",{\"1\":{\"411\":1}}],[\"样式可以是语言无关的\",{\"1\":{\"124\":1}}],[\"样式作者\",{\"1\":{\"438\":1}}],[\"样式名称\",{\"1\":{\"438\":1}}],[\"样式和本地化文件详见\",{\"1\":{\"375\":1}}],[\"样式自动本地化\",{\"1\":{\"375\":1}}],[\"样式当样式被用于英语写作的时候\",{\"1\":{\"373\":1}}],[\"样式快速转换为不同的语言\",{\"1\":{\"373\":1}}],[\"样式的根元素是\",{\"1\":{\"437\":1}}],[\"样式的结构\",{\"0\":{\"436\":1}}],[\"样式的行为\",{\"0\":{\"410\":1}}],[\"样式的\",{\"1\":{\"366\":1,\"437\":1}}],[\"样式的语言支持\",{\"1\":{\"124\":1}}],[\"样式来适应自己选择的语言环境\",{\"1\":{\"361\":1}}],[\"样式文件更加的紧凑\",{\"1\":{\"124\":1}}],[\"样式文件中的\",{\"1\":{\"454\":1}}],[\"样式文件中可以使用\",{\"1\":{\"124\":1}}],[\"样式文件中\",{\"1\":{\"124\":1}}],[\"样式\",{\"1\":{\"124\":1,\"359\":1,\"361\":2,\"364\":1,\"376\":1,\"382\":1,\"438\":1}}],[\"样式将会生成英式英语的引文和参考文献目录\",{\"1\":{\"124\":1}}],[\"语句\",{\"1\":{\"181\":1}}],[\"语言学\",{\"1\":{\"627\":1}}],[\"语言无关的样式仍然是有意义的\",{\"1\":{\"361\":1}}],[\"语言\",{\"1\":{\"349\":1,\"454\":1}}],[\"语言的源程序文件\",{\"1\":{\"154\":1}}],[\"语言代码\",{\"1\":{\"125\":1}}],[\"语言环境\",{\"1\":{\"124\":1}}],[\"语义必须明确\",{\"1\":{\"48\":1}}],[\"​\\t和\",{\"1\":{\"642\":1}}],[\"​=ezpe​\",{\"1\":{\"597\":1}}],[\"​=ρchgcar\",{\"1\":{\"542\":1}}],[\"​=ρa​+ρb​\",{\"1\":{\"541\":1}}],[\"​δe\",{\"1\":{\"597\":1}}],[\"​e=energy\",{\"1\":{\"596\":1}}],[\"​e=hc\",{\"1\":{\"596\":1}}],[\"​erel=刚切好的表面的能量−优化后的能量σunrel=1\",{\"1\":{\"523\":1}}],[\"​x11​x21​x31​​x12​x22​x32​​x13​x23​x33​​​∗​ax​bx​cx​​ax​by​cz​​ax​by​cz​​​∗lattice\",{\"1\":{\"459\":1}}],[\"​x=ax​a+bx​b+cx​c=y=ay​a+by​b+cy​c=z=az​a+bz​b+cz​c=​2\",{\"1\":{\"459\":1}}],[\"​system\",{\"1\":{\"459\":1}}],[\"​2\",{\"1\":{\"459\":1}}],[\"​a\",{\"1\":{\"459\":1}}],[\"​\",{\"1\":{\"124\":4,\"125\":2,\"383\":3,\"394\":3,\"401\":3,\"407\":2,\"409\":7,\"413\":14,\"415\":2,\"418\":4,\"419\":2,\"420\":4,\"421\":3,\"422\":2,\"423\":5,\"424\":1,\"425\":3,\"426\":2,\"427\":1,\"428\":1,\"429\":1,\"431\":1,\"432\":1,\"433\":1,\"435\":3,\"523\":1,\"597\":1,\"642\":2}}],[\"准牛顿\",{\"1\":{\"477\":1,\"481\":1}}],[\"准确地选取某一类原子或者原子团\",{\"1\":{\"303\":1}}],[\"准确性\",{\"1\":{\"122\":1}}],[\"准备\",{\"0\":{\"487\":1,\"575\":1}}],[\"准备编译环境\",{\"0\":{\"257\":1}}],[\"准备源码\",{\"0\":{\"250\":1}}],[\"准备工作\",{\"0\":{\"26\":1}}],[\"凡标注\",{\"1\":{\"122\":1}}],[\"译注\",{\"1\":{\"387\":1,\"401\":1,\"416\":1,\"430\":1}}],[\"译文\",{\"1\":{\"376\":1}}],[\"译文原始仓库\",{\"1\":{\"122\":1}}],[\"译文原始站点\",{\"1\":{\"122\":1}}],[\"译者\",{\"1\":{\"374\":1,\"633\":1}}],[\"译者注\",{\"1\":{\"122\":1,\"362\":1,\"377\":1,\"380\":1,\"381\":1,\"437\":2}}],[\"期刊文献\",{\"1\":{\"409\":1}}],[\"期刊文章的摘要\",{\"1\":{\"638\":1}}],[\"期刊文章\",{\"1\":{\"372\":1,\"636\":1}}],[\"期刊名称\",{\"1\":{\"362\":1}}],[\"期刊格式的\",{\"1\":{\"360\":1}}],[\"期刊\",{\"1\":{\"122\":1}}],[\"据统计\",{\"1\":{\"122\":1}}],[\"来计算能量\",{\"1\":{\"461\":1}}],[\"来进行注释\",{\"1\":{\"461\":1}}],[\"来自\",{\"1\":{\"454\":1}}],[\"来调用\",{\"1\":{\"425\":1}}],[\"来对较长的作者序列进行代替\",{\"1\":{\"423\":1}}],[\"来实现对引文或者参考文献条目的排序\",{\"1\":{\"423\":1}}],[\"来实现通用项的翻译\",{\"1\":{\"361\":1}}],[\"来选择\",{\"1\":{\"400\":1}}],[\"来这只其使用单数还是复数形式\",{\"1\":{\"392\":1}}],[\"来指定本地化文件最后一次更新的时间\",{\"1\":{\"383\":1}}],[\"来说\",{\"1\":{\"373\":1,\"394\":3}}],[\"来继续增强\",{\"1\":{\"327\":1}}],[\"来源添加\",{\"1\":{\"321\":1}}],[\"来简化\",{\"1\":{\"136\":1}}],[\"来定制需要的\",{\"1\":{\"122\":1}}],[\"来生成指定格式的引用和参考文献目录\",{\"1\":{\"122\":1}}],[\"来连接\",{\"1\":{\"64\":1}}],[\"由源码得\",{\"1\":{\"545\":1}}],[\"由此可见\",{\"1\":{\"181\":1}}],[\"由名称就知道该动作了吧\",{\"1\":{\"169\":1}}],[\"由\",{\"1\":{\"122\":1,\"190\":1,\"623\":1,\"624\":1}}],[\"由于要用neb而不是cineb\",{\"1\":{\"575\":1}}],[\"由于要设置的语言环境是方言\",{\"1\":{\"454\":1}}],[\"由于生成的\",{\"1\":{\"496\":1}}],[\"由于许多语言不使用标题大小写\",{\"1\":{\"435\":1}}],[\"由于空的\",{\"1\":{\"409\":1}}],[\"由于给定语言的引用格式并不是一直和\",{\"1\":{\"361\":1}}],[\"由于课程需要\",{\"1\":{\"306\":1}}],[\"由于服务器繁忙\",{\"1\":{\"271\":1}}],[\"由于一个更高优先级的任务需要当前任务的资源\",{\"1\":{\"271\":1}}],[\"由于新版本\",{\"1\":{\"227\":1}}],[\"由于安装过于简单\",{\"1\":{\"207\":1}}],[\"由于\",{\"1\":{\"154\":1,\"219\":1,\"243\":1,\"291\":1}}],[\"由于我是用\",{\"1\":{\"113\":1}}],[\"由于样品对\",{\"1\":{\"21\":1}}],[\"云服务器的折腾记录\",{\"0\":{\"114\":1}}],[\"云同步\",{\"1\":{\"95\":1}}],[\"概念及其写法可参考\",{\"1\":{\"113\":1}}],[\"概述\",{\"1\":{\"25\":1,\"45\":2}}],[\"于是考虑把这个目录加入环境变量\",{\"1\":{\"247\":1}}],[\"于是提示无权限导致安装失败\",{\"1\":{\"183\":1}}],[\"于是感到沮丧和抓狂\",{\"1\":{\"183\":1}}],[\"于是有了\",{\"1\":{\"113\":1}}],[\"于是找到了\",{\"1\":{\"113\":1}}],[\"终于是实现效果了\",{\"1\":{\"113\":1}}],[\"终端输入的命令\",{\"1\":{\"270\":1}}],[\"终端输入\",{\"1\":{\"34\":1}}],[\"终端不能显示中文\",{\"1\":{\"34\":1}}],[\"终端\",{\"1\":{\"33\":1,\"216\":1}}],[\"绕过系统代理\",{\"1\":{\"113\":1}}],[\"查文献\",{\"1\":{\"527\":1}}],[\"查数据库\",{\"1\":{\"527\":1}}],[\"查前人的文章\",{\"1\":{\"312\":1}}],[\"查资料没发现这玩意怎么自己搞\",{\"1\":{\"247\":1}}],[\"查了资料初步判断是平台不对\",{\"1\":{\"190\":1}}],[\"查找参考文献取值\",{\"1\":{\"461\":1}}],[\"查找\",{\"1\":{\"246\":1}}],[\"查找当前目录中大于12kb的文件\",{\"1\":{\"148\":1}}],[\"查找当前目录中文件权限的0755的文件\",{\"1\":{\"148\":1}}],[\"查找文件名为passwd的文件\",{\"1\":{\"148\":1}}],[\"查找文件权限包含任一mode的权限的文件\",{\"1\":{\"148\":1}}],[\"查找文件权限必须要全部包括mode权限的文件\",{\"1\":{\"148\":1}}],[\"查找文件权限刚好等于mode的文件\",{\"1\":{\"148\":1}}],[\"查找文件的类型为type的文件\",{\"1\":{\"148\":1}}],[\"查找字符串\",{\"1\":{\"145\":3}}],[\"查询\",{\"1\":{\"144\":1,\"275\":1}}],[\"查看结构\",{\"1\":{\"617\":1}}],[\"查看数据\",{\"1\":{\"608\":1}}],[\"查看生成的路线是否合理\",{\"0\":{\"573\":1}}],[\"查看\",{\"1\":{\"510\":1,\"573\":1}}],[\"查看这些元素\",{\"1\":{\"472\":1}}],[\"查看不到别人的任务\",{\"1\":{\"283\":1}}],[\"查看不与terminal有关的所有进程\",{\"1\":{\"149\":1}}],[\"查看所有配置\",{\"0\":{\"282\":1}}],[\"查看所有可用包\",{\"1\":{\"259\":1}}],[\"查看节点的空闲情况\",{\"1\":{\"276\":1}}],[\"查看任务\",{\"0\":{\"271\":1}}],[\"查看其权限\",{\"1\":{\"183\":1}}],[\"查看连同一部分进程树状态\",{\"1\":{\"149\":1}}],[\"查看系统所有的进程数据\",{\"1\":{\"149\":2}}],[\"查看打包文件的内容含有哪些文件名\",{\"1\":{\"144\":1}}],[\"查看文件与目录\",{\"1\":{\"136\":1}}],[\"查看文件全文\",{\"1\":{\"134\":1}}],[\"查看状态\",{\"1\":{\"112\":1}}],[\"查阅\",{\"1\":{\"113\":1}}],[\"微观动力学中的指前因子和反应能垒\",{\"1\":{\"589\":1}}],[\"微软\",{\"1\":{\"113\":1}}],[\"微信\",{\"1\":{\"7\":1,\"92\":1}}],[\"策略组\",{\"1\":{\"113\":1}}],[\"且所有原子弛豫的时候\",{\"1\":{\"594\":1}}],[\"且自己不知道加或者不加的时候\",{\"1\":{\"468\":1}}],[\"且最好不要写中文\",{\"1\":{\"461\":1}}],[\"且必须是最后一个子元素\",{\"1\":{\"405\":1}}],[\"且在取代前显示提示字符给用户确认\",{\"1\":{\"168\":1}}],[\"且已经复制了\",{\"1\":{\"165\":1}}],[\"且比目标文件新\",{\"1\":{\"139\":1}}],[\"且代理的规则将\",{\"1\":{\"113\":1}}],[\"且指导技师必须接受过由本公司举办的正式设备培训\",{\"1\":{\"49\":1}}],[\"登录\",{\"1\":{\"113\":1,\"181\":1}}],[\"初末态看起来不一样是因为周期性导致的\",{\"1\":{\"569\":1}}],[\"初态结构优化后\",{\"1\":{\"569\":1}}],[\"初态结构优化后的\",{\"1\":{\"569\":1}}],[\"初态结构优化后的contcar\",{\"1\":{\"567\":1}}],[\"初态结构优化后的outcar\",{\"1\":{\"567\":1}}],[\"初态结构优化的输入文件4\",{\"1\":{\"567\":1}}],[\"初态结构优化的输入文件3\",{\"1\":{\"567\":1}}],[\"初态结构优化的输入文件2\",{\"1\":{\"567\":1}}],[\"初态结构优化的输入文件1\",{\"1\":{\"567\":1}}],[\"初态优化后的结构\",{\"1\":{\"567\":1}}],[\"初态常规结构优化\",{\"1\":{\"567\":1}}],[\"初算\",{\"1\":{\"527\":1}}],[\"初始构型获取\",{\"0\":{\"527\":1}}],[\"初始猜测的键长多少\",{\"1\":{\"526\":1}}],[\"初始结构为\",{\"1\":{\"591\":1}}],[\"初始结构越好\",{\"1\":{\"481\":1}}],[\"初始结构很差时\",{\"1\":{\"478\":1}}],[\"初级方言\",{\"1\":{\"454\":1}}],[\"初次配置后需要重载服务\",{\"1\":{\"112\":1}}],[\"初试排名\",{\"1\":{\"12\":1}}],[\"带有注释的条目\",{\"1\":{\"430\":1}}],[\"带有前缀或者后缀的数字不能使用罗马数字进行排序或者渲染\",{\"1\":{\"399\":1}}],[\"带有内容和属性的元素\",{\"1\":{\"128\":1}}],[\"带有内容的元素\",{\"1\":{\"128\":1}}],[\"带有属性的空元素\",{\"1\":{\"128\":1}}],[\"带有单位或百分号时\",{\"1\":{\"58\":1}}],[\"带\",{\"1\":{\"112\":1}}],[\"凌晨2点定时关网\",{\"1\":{\"108\":1}}],[\"服务器应为\",{\"1\":{\"172\":1}}],[\"服务器系统结构\",{\"1\":{\"78\":1}}],[\"服务配置路径\",{\"1\":{\"112\":1}}],[\"服务端和客户端各两个\",{\"1\":{\"112\":1}}],[\"服务\",{\"1\":{\"108\":1,\"284\":1}}],[\"移位的\",{\"1\":{\"461\":1}}],[\"移除即可启用命令\",{\"1\":{\"108\":1}}],[\"移动半页\",{\"1\":{\"164\":2}}],[\"移动一页\",{\"1\":{\"164\":2}}],[\"移动多行\",{\"1\":{\"164\":1}}],[\"移动光标\",{\"0\":{\"164\":1}}],[\"移动光标到行首\",{\"1\":{\"160\":1}}],[\"移动\",{\"1\":{\"134\":1}}],[\"移动端\",{\"1\":{\"78\":1}}],[\"移动到这个档案的第一行\",{\"1\":{\"164\":1}}],[\"移动到这个档案的第\",{\"1\":{\"164\":1}}],[\"移动到这个文件的最后一行\",{\"1\":{\"164\":1}}],[\"移动到这一行的最后面字符处\",{\"1\":{\"164\":1}}],[\"移动到这一行的最前面字符处\",{\"1\":{\"164\":1}}],[\"移动到\",{\"1\":{\"38\":1}}],[\"口\",{\"1\":{\"108\":1}}],[\"定义转换格式后的文件名字\",{\"1\":{\"625\":1}}],[\"定义本地化格式除外\",{\"1\":{\"428\":1}}],[\"定义本地化日期格式时\",{\"1\":{\"387\":1}}],[\"定义\",{\"0\":{\"522\":1},\"1\":{\"399\":1}}],[\"定义了最大离子步数\",{\"1\":{\"477\":1}}],[\"定义了参考文献条目的格式\",{\"1\":{\"372\":1}}],[\"定义了引用和参考文献目录的格式\",{\"1\":{\"122\":1}}],[\"定义参考文献目录的格式\",{\"1\":{\"368\":1}}],[\"定义文中引用的格式\",{\"1\":{\"368\":1}}],[\"定义的语言环境时\",{\"1\":{\"124\":1}}],[\"定时任务配置\",{\"0\":{\"108\":1}}],[\"定额是一百\",{\"1\":{\"59\":1}}],[\"正如上面写道的\",{\"1\":{\"373\":1}}],[\"正文中的引用直接指向参考文献目录中的一个或者多个条目\",{\"1\":{\"352\":1}}],[\"正整数\",{\"1\":{\"279\":2}}],[\"正常日期\",{\"1\":{\"398\":1}}],[\"正常了\",{\"1\":{\"247\":1}}],[\"正常\",{\"1\":{\"246\":1}}],[\"正常运行\",{\"1\":{\"219\":1}}],[\"正常应该可以输出当前机器支持的平台\",{\"1\":{\"190\":1}}],[\"正在尝试重启mentohust\",{\"1\":{\"107\":1}}],[\"正确\",{\"1\":{\"47\":6,\"48\":3,\"49\":5,\"55\":1,\"62\":1,\"64\":3,\"69\":2,\"75\":3}}],[\"接着使用\",{\"1\":{\"624\":1}}],[\"接着算\",{\"1\":{\"576\":1}}],[\"接下来分析\",{\"1\":{\"371\":1}}],[\"接下来我们将深入到\",{\"1\":{\"365\":1}}],[\"接下来就是引用中需要的参考文献条目的细节\",{\"1\":{\"362\":1}}],[\"接下来就继续编译\",{\"1\":{\"247\":1}}],[\"接下来添加环境变量\",{\"1\":{\"247\":1}}],[\"接下来\",{\"1\":{\"227\":1,\"454\":1}}],[\"接下来有\",{\"1\":{\"183\":1}}],[\"接收\",{\"1\":{\"172\":1}}],[\"接口\",{\"1\":{\"107\":1}}],[\"接入服务选择\",{\"1\":{\"105\":1}}],[\"状态方程\",{\"1\":{\"516\":1}}],[\"状态方程拟合\",{\"0\":{\"516\":1}}],[\"状态\",{\"1\":{\"107\":2,\"271\":1}}],[\"脚本因机器实际环境不同而需要更改\",{\"1\":{\"576\":1}}],[\"脚本文件的核数\",{\"1\":{\"576\":1}}],[\"脚本文件或可运行程序的名称\",{\"1\":{\"217\":1}}],[\"脚本示例\",{\"1\":{\"277\":1}}],[\"脚本中可以用一种特殊形式的注释\",{\"1\":{\"277\":1}}],[\"脚本实际上是一个\",{\"1\":{\"277\":1}}],[\"脚本\",{\"0\":{\"277\":1,\"549\":1},\"1\":{\"106\":1,\"206\":1,\"270\":2,\"277\":1,\"498\":1,\"576\":1}}],[\"脚本呢\",{\"1\":{\"39\":1}}],[\"关键字\",{\"1\":{\"377\":1,\"638\":1}}],[\"关键字加入系统环境变量\",{\"0\":{\"227\":1}}],[\"关闭\",{\"1\":{\"112\":1,\"113\":1}}],[\"关闭输出\",{\"1\":{\"105\":1}}],[\"关于分数坐标与笛卡尔坐标写法问题\",{\"1\":{\"459\":1}}],[\"关于具体的使用\",{\"1\":{\"329\":1}}],[\"关于理论计算\",{\"0\":{\"196\":1}}],[\"关于\",{\"0\":{\"82\":1,\"323\":1},\"1\":{\"181\":1,\"377\":1}}],[\"关于文件的输出\",{\"1\":{\"62\":2}}],[\"赛尔\",{\"1\":{\"105\":1}}],[\"锐捷\",{\"1\":{\"105\":1}}],[\"锐捷认证\",{\"1\":{\"104\":1}}],[\"秒\",{\"1\":{\"105\":3}}],[\"认证前\",{\"1\":{\"105\":1}}],[\"认证超时\",{\"1\":{\"105\":1}}],[\"认证后\",{\"1\":{\"104\":1,\"105\":1}}],[\"网页\",{\"1\":{\"636\":1}}],[\"网格的对称性和晶胞的对称性会出现不匹配的情况\",{\"1\":{\"461\":1}}],[\"网格的一种特殊情况\",{\"1\":{\"461\":1}}],[\"网格\",{\"1\":{\"461\":1}}],[\"网速监控\",{\"0\":{\"121\":1}}],[\"网关\",{\"1\":{\"105\":1}}],[\"网卡名\",{\"1\":{\"105\":1}}],[\"明德厚学地\",{\"1\":{\"105\":1}}],[\"版本序号\",{\"1\":{\"639\":1}}],[\"版本以及字符编码\",{\"1\":{\"456\":1}}],[\"版本和使用的语言\",{\"1\":{\"366\":1}}],[\"版本号返回\",{\"1\":{\"576\":1}}],[\"版本号\",{\"1\":{\"310\":1}}],[\"版本如下\",{\"1\":{\"310\":2}}],[\"版本与\",{\"1\":{\"264\":1}}],[\"版本过低\",{\"1\":{\"247\":1}}],[\"版本上\",{\"1\":{\"219\":1}}],[\"版本选择\",{\"1\":{\"212\":1}}],[\"版本太新\",{\"1\":{\"190\":1}}],[\"版本的\",{\"1\":{\"113\":1,\"254\":1}}],[\"版本\",{\"1\":{\"105\":1,\"190\":2,\"212\":1,\"245\":1,\"310\":1,\"382\":1,\"437\":1,\"638\":1}}],[\"版本说明\",{\"1\":{\"74\":1}}],[\"帮助命令\",{\"0\":{\"105\":1}}],[\"默认外部\",{\"1\":{\"431\":1}}],[\"默认是一个破折号\",{\"1\":{\"420\":1}}],[\"默认在\",{\"1\":{\"415\":2}}],[\"默认的结果为\",{\"1\":{\"401\":1}}],[\"默认的是\",{\"1\":{\"401\":1,\"432\":1}}],[\"默认的日期范围中的分隔符是短线\",{\"1\":{\"395\":1}}],[\"默认地\",{\"1\":{\"385\":2,\"401\":1,\"422\":1}}],[\"默认值是\",{\"1\":{\"484\":1,\"592\":1}}],[\"默认值为\",{\"1\":{\"385\":1,\"401\":1,\"418\":2,\"422\":1,\"592\":1}}],[\"默认值\",{\"1\":{\"384\":1,\"393\":1,\"419\":1}}],[\"默认只有\",{\"1\":{\"331\":1}}],[\"默认源服务器在境外\",{\"1\":{\"219\":1}}],[\"默认为\",{\"1\":{\"180\":1,\"385\":1,\"401\":2,\"413\":3,\"414\":1,\"418\":1,\"431\":1}}],[\"默认情况并不会压缩\",{\"1\":{\"144\":1}}],[\"默认\",{\"1\":{\"105\":1,\"379\":1,\"386\":1,\"392\":2,\"394\":3,\"399\":1,\"401\":1,\"404\":1,\"406\":1,\"407\":2,\"409\":1,\"413\":1,\"420\":2,\"422\":1,\"423\":1,\"427\":5,\"480\":1,\"519\":3,\"591\":4}}],[\"默认dhclient\",{\"1\":{\"105\":1}}],[\"默认不使用\",{\"1\":{\"105\":1}}],[\"默认15\",{\"1\":{\"105\":1}}],[\"默认30\",{\"1\":{\"105\":1}}],[\"默认8\",{\"1\":{\"105\":2}}],[\"默认0\",{\"1\":{\"105\":7}}],[\"默认本机掩码\",{\"1\":{\"105\":1}}],[\"默认本机ip\",{\"1\":{\"105\":1}}],[\"默认密码为身份证后六位\",{\"1\":{\"104\":1}}],[\"默认分区两个\",{\"1\":{\"5\":1}}],[\"校园网上网密码\",{\"1\":{\"104\":1}}],[\"启动被终止的进程\",{\"1\":{\"150\":1}}],[\"启动成功示意\",{\"1\":{\"112\":1}}],[\"启动\",{\"1\":{\"112\":1,\"159\":1,\"210\":2}}],[\"启动命令\",{\"1\":{\"108\":2}}],[\"启动的\",{\"1\":{\"39\":1}}],[\"启用开机自启\",{\"1\":{\"112\":1}}],[\"启用\",{\"1\":{\"104\":1,\"519\":1}}],[\"拓展功能\",{\"1\":{\"104\":1}}],[\"路径自己的\",{\"1\":{\"239\":1}}],[\"路径写自己的\",{\"1\":{\"236\":1}}],[\"路径\",{\"1\":{\"104\":1,\"106\":1}}],[\"刷入\",{\"0\":{\"101\":1}}],[\"红米\",{\"0\":{\"101\":1}}],[\"红移\",{\"1\":{\"19\":2}}],[\"工程学\",{\"1\":{\"627\":1}}],[\"工具\",{\"0\":{\"115\":1},\"1\":{\"176\":1}}],[\"工具类\",{\"0\":{\"96\":1}}],[\"工作类\",{\"0\":{\"97\":1}}],[\"工作流得到优化\",{\"1\":{\"37\":1}}],[\"沙拉查词配置说明\",{\"1\":{\"95\":1}}],[\"沙拉查词\",{\"1\":{\"95\":1}}],[\"浏览器插件\",{\"0\":{\"326\":1}}],[\"浏览器相关类\",{\"0\":{\"94\":1}}],[\"浏览器类\",{\"0\":{\"93\":1}}],[\"账号同步\",{\"1\":{\"92\":3,\"94\":1,\"95\":1,\"96\":2,\"98\":1}}],[\"通用基础\",{\"1\":{\"627\":1}}],[\"通\",{\"1\":{\"176\":1}}],[\"通常在分子系统中\",{\"1\":{\"556\":1}}],[\"通常以能量变化或力作为收敛标准\",{\"1\":{\"507\":1}}],[\"通常获取到的是\",{\"1\":{\"495\":1}}],[\"通常可以下一步\",{\"1\":{\"571\":1}}],[\"通常可以忽略\",{\"1\":{\"517\":1}}],[\"通常可以按回车使用默认值\",{\"1\":{\"492\":1}}],[\"通常可用管道与\",{\"1\":{\"143\":1}}],[\"通常最好在句子大小写的情况下存储注入标题之类的字符串\",{\"1\":{\"434\":1}}],[\"通常省略\",{\"1\":{\"389\":1}}],[\"通常情况下为\",{\"1\":{\"444\":1}}],[\"通常情况下\",{\"1\":{\"370\":1,\"497\":1}}],[\"通常是提供一个\",{\"1\":{\"370\":1}}],[\"通常都已经编译了\",{\"1\":{\"259\":1}}],[\"通常需要修改的是\",{\"1\":{\"226\":1}}],[\"通常只需要记住下面三条命令即可\",{\"1\":{\"144\":1}}],[\"通讯\",{\"1\":{\"627\":1}}],[\"通讯密码\",{\"1\":{\"111\":2}}],[\"通讯类\",{\"0\":{\"92\":1}}],[\"通过态密度可以了解电子结构\",{\"1\":{\"553\":1}}],[\"通过差分电荷密度的计算和分析\",{\"1\":{\"530\":1}}],[\"通过新建\",{\"0\":{\"490\":1}}],[\"通过测试不同\",{\"1\":{\"461\":1}}],[\"通过线段的起点和终点\",{\"1\":{\"461\":1}}],[\"通过修剪以下属性值前后的空格来规范输出\",{\"1\":{\"455\":1}}],[\"通过修改他们来修改\",{\"1\":{\"458\":1}}],[\"通过修改\",{\"1\":{\"180\":1}}],[\"通过过宏调用来保持\",{\"1\":{\"453\":1}}],[\"通过调用宏\",{\"1\":{\"425\":1}}],[\"通过宏属性中的键值\",{\"1\":{\"425\":1}}],[\"通过变量属性被调用\",{\"1\":{\"424\":1}}],[\"通过将\",{\"1\":{\"422\":1}}],[\"通过将不可省略粒子和姓分开\",{\"1\":{\"420\":1}}],[\"通过将具有相同引用风格的期刊\",{\"1\":{\"380\":1}}],[\"通过压缩相同的名字来折叠引用分组\",{\"1\":{\"415\":1}}],[\"通过引用分组\",{\"1\":{\"414\":1}}],[\"通过必选属性\",{\"1\":{\"400\":1}}],[\"通过可选的\",{\"1\":{\"393\":1}}],[\"通过设置这两个属性\",{\"1\":{\"401\":1}}],[\"通过设置复数属性\",{\"1\":{\"392\":1}}],[\"通过设置属性\",{\"1\":{\"385\":1}}],[\"通过它描述的对象也是强制的\",{\"1\":{\"377\":1}}],[\"通过它描述的对象\",{\"1\":{\"377\":1}}],[\"通过其名字也可以看出\",{\"1\":{\"371\":1}}],[\"通过附件添加条目\",{\"1\":{\"329\":1}}],[\"通过标识符添加条目\",{\"1\":{\"329\":1}}],[\"通过肉眼观察\",{\"1\":{\"303\":1}}],[\"通过gzip的支持进行压缩\",{\"1\":{\"144\":1}}],[\"通过bzip2的支持进行压缩\",{\"1\":{\"144\":1}}],[\"通过\",{\"0\":{\"85\":1,\"110\":1,\"491\":1,\"549\":1,\"550\":1},\"1\":{\"91\":1,\"176\":1,\"286\":1,\"303\":1,\"343\":1,\"415\":1,\"424\":2,\"494\":1,\"569\":1}}],[\"福昕\",{\"1\":{\"91\":2}}],[\"✔\",{\"1\":{\"91\":3,\"92\":3,\"94\":1,\"95\":15,\"96\":5,\"97\":1,\"98\":8,\"99\":1}}],[\"名\",{\"1\":{\"402\":6}}],[\"名字可以只使用姓来排序\",{\"1\":{\"425\":1}}],[\"名字扩展具有消除名字歧义和消除引用歧义的双重目的\",{\"1\":{\"413\":1}}],[\"名字扩展的目的是不是仅限于消除歧义\",{\"1\":{\"413\":1}}],[\"名字扩展可以使用\",{\"1\":{\"413\":1}}],[\"名字格式化\",{\"0\":{\"403\":1}}],[\"名字内部各部分的顺序取决于\",{\"1\":{\"402\":1}}],[\"名字内部顺序\",{\"0\":{\"402\":1},\"1\":{\"401\":1}}],[\"名字后缀\",{\"1\":{\"401\":1}}],[\"名字分隔符总是使用\",{\"1\":{\"401\":1}}],[\"名字变量\",{\"0\":{\"641\":1},\"1\":{\"400\":1,\"424\":1}}],[\"名字为\",{\"1\":{\"378\":1,\"461\":1}}],[\"名称扩展是针对全部还是针对每个引用的名字\",{\"1\":{\"413\":1}}],[\"名称变量替换\",{\"1\":{\"405\":1}}],[\"名称变量为空时\",{\"1\":{\"405\":1}}],[\"名称变量\",{\"1\":{\"405\":1,\"424\":1}}],[\"名称变量会携带引用项中所有的作者名称\",{\"1\":{\"400\":1}}],[\"名称各部分的显示和排序的属性通常是不同的\",{\"1\":{\"402\":1}}],[\"名称列表最后一个名字\",{\"1\":{\"401\":1}}],[\"名称\",{\"1\":{\"91\":1,\"92\":1,\"94\":1,\"95\":1,\"96\":1,\"97\":1,\"98\":1,\"99\":1,\"424\":1}}],[\"名词解释\",{\"1\":{\"74\":1,\"75\":1}}],[\"名词前不要使用过多的形容词\",{\"1\":{\"49\":1}}],[\"增大截断能可以减小虚频\",{\"1\":{\"598\":1}}],[\"增强收敛标准对虚频并没有什么好的效果\",{\"1\":{\"598\":1}}],[\"增强版\",{\"1\":{\"86\":1}}],[\"增\",{\"1\":{\"512\":1}}],[\"增加编译时搜索静态连接库的路径\",{\"1\":{\"154\":1}}],[\"增加编译时搜索头文件的路径\",{\"1\":{\"154\":1}}],[\"增加到过去的两倍\",{\"1\":{\"59\":1}}],[\"增加到\",{\"1\":{\"59\":1}}],[\"增加了两倍\",{\"1\":{\"59\":1}}],[\"增加了\",{\"1\":{\"59\":1}}],[\"联动\",{\"0\":{\"84\":1}}],[\"否则崩溃\",{\"1\":{\"481\":1}}],[\"否则\",{\"1\":{\"477\":1}}],[\"否则为\",{\"1\":{\"467\":1,\"479\":1}}],[\"否则就印出\",{\"1\":{\"371\":1}}],[\"否则你会收到如下报错\",{\"1\":{\"216\":1}}],[\"否则可能出现\",{\"1\":{\"215\":1}}],[\"否\",{\"1\":{\"83\":1,\"105\":1}}],[\"任务\",{\"0\":{\"298\":1},\"1\":{\"295\":1}}],[\"任务在等待它所请求的执行时间的到来\",{\"1\":{\"271\":1}}],[\"任务在运行后退出\",{\"1\":{\"271\":1}}],[\"任务被挂起\",{\"1\":{\"271\":1}}],[\"任务被转移到其它执行节点了\",{\"1\":{\"271\":1}}],[\"任务被服务器挂起\",{\"1\":{\"271\":1}}],[\"任务被服务器或用户或者管理员阻塞\",{\"1\":{\"271\":1}}],[\"任务完成\",{\"1\":{\"271\":1}}],[\"任务正在运行\",{\"1\":{\"271\":1}}],[\"任务正在排队中\",{\"1\":{\"271\":1}}],[\"任务路径三个参数\",{\"1\":{\"85\":1}}],[\"任务文件\",{\"1\":{\"83\":1}}],[\"任何情况下都不能接受\",{\"1\":{\"48\":1}}],[\"描述在哪个原子轨道上加\",{\"1\":{\"519\":1}}],[\"描述库仑和交换相互作用的\",{\"1\":{\"519\":1}}],[\"描述+u\",{\"1\":{\"519\":1}}],[\"描述的\",{\"1\":{\"464\":1}}],[\"描述参考文献列表的格式\",{\"1\":{\"438\":1}}],[\"描述样式的元数据\",{\"1\":{\"438\":1}}],[\"描述\",{\"0\":{\"319\":1},\"1\":{\"83\":1,\"164\":1,\"165\":1,\"168\":1,\"271\":1,\"466\":1,\"467\":1,\"468\":1,\"469\":1,\"473\":1,\"476\":1,\"477\":1,\"478\":1,\"479\":1,\"519\":1}}],[\"©2020\",{\"1\":{\"78\":1}}],[\"号以及后面的不用输入\",{\"1\":{\"461\":1}}],[\"号\",{\"1\":{\"78\":1}}],[\"号发到的\",{\"1\":{\"14\":1}}],[\"备注\",{\"0\":{\"599\":1},\"1\":{\"91\":1,\"92\":1,\"94\":1,\"95\":1,\"96\":1,\"97\":1,\"98\":1,\"99\":1,\"376\":1,\"464\":1}}],[\"备\",{\"1\":{\"78\":1}}],[\"晋\",{\"1\":{\"78\":1}}],[\"符号的\",{\"1\":{\"270\":1}}],[\"符号作为注释符号\",{\"1\":{\"127\":1}}],[\"符号\",{\"1\":{\"78\":1}}],[\"实型\",{\"1\":{\"464\":1}}],[\"实行渲染\",{\"1\":{\"413\":1}}],[\"实例中定义了引用格式\",{\"1\":{\"367\":1}}],[\"实际上只适用于一种类型\",{\"1\":{\"372\":1}}],[\"实际的格式比这个还要大很多\",{\"1\":{\"367\":1}}],[\"实际使用与官方文档的描述有一丁点区别\",{\"1\":{\"306\":1}}],[\"实际输入的时候不需要带有这个符号\",{\"1\":{\"270\":1}}],[\"实际时间要大于\",{\"1\":{\"155\":1}}],[\"实际时间\",{\"1\":{\"155\":1}}],[\"实际不需要输入\",{\"1\":{\"78\":1}}],[\"实用工具类\",{\"0\":{\"99\":1}}],[\"实现从\",{\"0\":{\"338\":1}}],[\"实现新条目添加未读标签\",{\"0\":{\"337\":1}}],[\"实现在\",{\"0\":{\"336\":1,\"342\":1}}],[\"实现更自由地附件管理\",{\"0\":{\"334\":1}}],[\"实现附件同步\",{\"0\":{\"332\":1,\"333\":1}}],[\"实现文件共享\",{\"1\":{\"176\":1}}],[\"实现\",{\"1\":{\"86\":1,\"176\":1,\"326\":1}}],[\"实践操作\",{\"1\":{\"78\":1}}],[\"左对齐\",{\"1\":{\"430\":1}}],[\"左侧栏查看当前章节大纲\",{\"1\":{\"78\":1}}],[\"左上角汉堡菜单选择章节\",{\"1\":{\"78\":1}}],[\"左右的虚频\",{\"1\":{\"596\":1}}],[\"左右\",{\"1\":{\"15\":1,\"176\":1,\"403\":2}}],[\"水平有限\",{\"1\":{\"78\":1}}],[\"编译的时候是使用哪种\",{\"1\":{\"576\":1}}],[\"编译的\",{\"1\":{\"576\":1,\"577\":1}}],[\"编译器配置\",{\"1\":{\"260\":1}}],[\"编译时自动复制\",{\"1\":{\"251\":1}}],[\"编译后的可执行程序文件\",{\"1\":{\"251\":1}}],[\"编译完成后\",{\"1\":{\"246\":1}}],[\"编译\",{\"0\":{\"241\":1,\"243\":1,\"246\":1,\"249\":1,\"262\":1},\"1\":{\"259\":1}}],[\"编译安装\",{\"0\":{\"237\":1},\"1\":{\"265\":1}}],[\"编译源代码并复制可执行文件到指定的安装目录\",{\"1\":{\"183\":1}}],[\"编译成可执行程序\",{\"1\":{\"154\":1}}],[\"编码信息以及是否依赖外部文档等\",{\"1\":{\"127\":1}}],[\"编写的\",{\"1\":{\"122\":1}}],[\"编程类\",{\"0\":{\"98\":1}}],[\"编程基础\",{\"1\":{\"78\":1}}],[\"编辑部主任\",{\"1\":{\"633\":1}}],[\"编辑器结联动\",{\"0\":{\"340\":1}}],[\"编辑器使用\",{\"1\":{\"286\":1}}],[\"编辑器使用方法\",{\"1\":{\"78\":1}}],[\"编辑器是\",{\"1\":{\"157\":1}}],[\"编辑器\",{\"0\":{\"157\":1},\"1\":{\"205\":1}}],[\"编辑器企业版\",{\"1\":{\"91\":1}}],[\"编辑\",{\"1\":{\"21\":1,\"284\":1,\"633\":1}}],[\"系列用来设置环境变量\",{\"1\":{\"181\":1}}],[\"系列互补\",{\"1\":{\"181\":1}}],[\"系列文件的主要目的在于设置功能和别名\",{\"1\":{\"181\":1}}],[\"系列文件的主要目的在于为\",{\"1\":{\"181\":1}}],[\"系综理论\",{\"1\":{\"78\":1,\"306\":1}}],[\"系统给作业分配的标识号\",{\"1\":{\"280\":1}}],[\"系统会根据作业的优先级和可用的计算资源来调度和执行作业\",{\"1\":{\"270\":1}}],[\"系统会访问\",{\"1\":{\"113\":1}}],[\"系统找不到指定的文件\",{\"1\":{\"190\":7}}],[\"系统不一致导致的\",{\"1\":{\"190\":1}}],[\"系统基本都开源且可免费使用\",{\"1\":{\"183\":1}}],[\"系统下标准的编辑器\",{\"1\":{\"157\":1}}],[\"系统下个人电脑计算模拟软件安装与调试\",{\"1\":{\"78\":1}}],[\"系统还要处理其它任务\",{\"1\":{\"155\":1}}],[\"系统管理\",{\"1\":{\"108\":1}}],[\"系统\",{\"1\":{\"47\":1,\"155\":1}}],[\"系统终端命令提示符设置\",{\"1\":{\"33\":1}}],[\"计划任务\",{\"1\":{\"108\":1}}],[\"计划的目录划分\",{\"0\":{\"3\":1}}],[\"计算无法收敛\",{\"1\":{\"591\":1}}],[\"计算过渡态\",{\"1\":{\"584\":1}}],[\"计算过程中我们的设置对频率计算影响很大\",{\"1\":{\"596\":1}}],[\"计算过程\",{\"1\":{\"78\":1,\"306\":1}}],[\"计算收敛\",{\"1\":{\"577\":1}}],[\"计算\",{\"0\":{\"574\":1},\"1\":{\"566\":1}}],[\"计算完成后用\",{\"1\":{\"554\":1}}],[\"计算电荷密度差\",{\"0\":{\"530\":1}}],[\"计算的输入文件\",{\"0\":{\"575\":1}}],[\"计算的文件结构示意\",{\"1\":{\"567\":1}}],[\"计算的工作量\",{\"1\":{\"526\":1}}],[\"计算的越精确\",{\"1\":{\"472\":1}}],[\"计算是体积发生了变化\",{\"1\":{\"517\":1}}],[\"计算流程\",{\"1\":{\"513\":1}}],[\"计算得到的键长为1\",{\"1\":{\"510\":1}}],[\"计算中非常重要\",{\"1\":{\"461\":1}}],[\"计算中用到的三种赝势\",{\"1\":{\"460\":1}}],[\"计算而言\",{\"1\":{\"303\":1}}],[\"计算模拟学习笔记\",{\"1\":{\"206\":1}}],[\"计算模拟高级工具\",{\"1\":{\"78\":1}}],[\"计算常用软件\",{\"0\":{\"204\":1}}],[\"计算化学公社\",{\"1\":{\"187\":1}}],[\"计算找到\",{\"1\":{\"145\":1}}],[\"计算方法与操作实践\",{\"1\":{\"78\":1,\"306\":1}}],[\"态密度分析\",{\"0\":{\"553\":1}}],[\"态密度\",{\"1\":{\"78\":2,\"306\":2,\"553\":1}}],[\"晶胞形状\",{\"1\":{\"517\":1}}],[\"晶胞中原子的坐标\",{\"1\":{\"517\":1}}],[\"晶格参数的确定\",{\"1\":{\"516\":1,\"517\":1}}],[\"晶格参数\",{\"1\":{\"459\":1}}],[\"晶格常数计算通常有两种方法\",{\"1\":{\"515\":1}}],[\"晶格常数计算\",{\"0\":{\"515\":1}}],[\"晶格常数\",{\"1\":{\"459\":2}}],[\"晶格的颜色等\",{\"1\":{\"299\":1}}],[\"晶面的吸附模型\",{\"1\":{\"295\":1}}],[\"晶面和倒空间\",{\"1\":{\"78\":1}}],[\"晶体对称性\",{\"1\":{\"78\":1}}],[\"晶体结构优化为例作操作练习\",{\"1\":{\"78\":2}}],[\"晶体或非晶\",{\"1\":{\"21\":1}}],[\"介绍\",{\"0\":{\"348\":1,\"375\":1},\"1\":{\"176\":1}}],[\"介绍原子和分子电子结构\",{\"1\":{\"78\":1}}],[\"介绍点群\",{\"1\":{\"78\":1}}],[\"介绍计算模拟方法在能源环境材料研究与开发中的应用情况\",{\"1\":{\"78\":1}}],[\"权限位设置对其无效\",{\"1\":{\"183\":1}}],[\"权限才能进入\",{\"1\":{\"183\":1}}],[\"权限的用户问题都不大\",{\"1\":{\"183\":1}}],[\"权限时\",{\"1\":{\"183\":1}}],[\"权限编译软件\",{\"0\":{\"183\":1}}],[\"权限\",{\"1\":{\"78\":1,\"183\":2,\"234\":2}}],[\"理查德\",{\"1\":{\"556\":1}}],[\"理解\",{\"0\":{\"365\":1}}],[\"理解和翻译有误处请大家谅解\",{\"1\":{\"122\":1}}],[\"理论知识\",{\"0\":{\"195\":1},\"1\":{\"588\":1}}],[\"理论计算学习笔记\",{\"1\":{\"80\":1}}],[\"理论与方法体系\",{\"1\":{\"78\":1}}],[\"理化性能解释\",{\"1\":{\"21\":1}}],[\"绪论\",{\"1\":{\"78\":1}}],[\"课上演示失败的原因就是到了\",{\"1\":{\"606\":1}}],[\"课上\",{\"1\":{\"602\":1}}],[\"课题组一个同学安装\",{\"1\":{\"190\":1}}],[\"课程安排和考核办法\",{\"1\":{\"78\":1}}],[\"课程为学不会系列之\",{\"1\":{\"78\":1}}],[\"课本\",{\"1\":{\"14\":1}}],[\"公共脚本发布平台\",{\"1\":{\"95\":1}}],[\"公共领域\",{\"1\":{\"77\":1}}],[\"公司的实收资本为\",{\"1\":{\"56\":1}}],[\"阮一峰\",{\"1\":{\"76\":1}}],[\"豌豆荚\",{\"1\":{\"76\":1}}],[\"豌豆荚文案风格指南\",{\"1\":{\"76\":1}}],[\"技术写作技巧在日汉翻译中的应用\",{\"1\":{\"76\":1}}],[\"技巧班的\",{\"1\":{\"13\":1}}],[\"某些名字中包含的粒子禁止被降级\",{\"1\":{\"420\":1}}],[\"某些说明文件的文件名\",{\"1\":{\"75\":1}}],[\"某个\",{\"1\":{\"303\":1}}],[\"某乎和一些考研老师一直宣称要把单词背几遍几遍云云\",{\"1\":{\"15\":1}}],[\"常规点网格\",{\"1\":{\"461\":1}}],[\"常常具有\",{\"1\":{\"170\":1}}],[\"常见如\",{\"1\":{\"303\":1}}],[\"常见错误汇总\",{\"1\":{\"190\":1}}],[\"常见于开放网络或校园网\",{\"1\":{\"113\":1}}],[\"常见问题解答\",{\"1\":{\"74\":1}}],[\"常用的命令\",{\"1\":{\"286\":1}}],[\"常用环境变量\",{\"0\":{\"280\":1}}],[\"常用于备份\",{\"1\":{\"138\":1}}],[\"常用\",{\"1\":{\"136\":1,\"164\":7,\"165\":7,\"168\":4,\"169\":5,\"170\":3,\"183\":1,\"437\":1,\"478\":1}}],[\"常用在需要解释的词语后边\",{\"1\":{\"68\":1}}],[\"常用命令\",{\"0\":{\"134\":1},\"1\":{\"38\":2}}],[\"常用软件和非专业软件\",{\"0\":{\"7\":1}}],[\"环境\",{\"0\":{\"215\":1}}],[\"环境变量值\",{\"1\":{\"280\":3}}],[\"环境变量配置完成\",{\"1\":{\"227\":1}}],[\"环境变量\",{\"0\":{\"179\":1},\"1\":{\"280\":1}}],[\"环境的变更\",{\"1\":{\"170\":1}}],[\"环境准备\",{\"1\":{\"74\":1}}],[\"环境学\",{\"1\":{\"12\":1}}],[\"入门级操作系统的首选\",{\"1\":{\"183\":1}}],[\"入门篇\",{\"1\":{\"74\":1}}],[\"入射光\",{\"1\":{\"21\":1}}],[\"快速上手\",{\"1\":{\"74\":1}}],[\"快捷命令\",{\"1\":{\"39\":1}}],[\"扼要的说明\",{\"1\":{\"74\":1}}],[\"必备应用列表是个人重装电脑后会安装的应用\",{\"1\":{\"90\":1}}],[\"必备\",{\"1\":{\"74\":4}}],[\"必须设置\",{\"1\":{\"517\":1}}],[\"必须设置为\",{\"1\":{\"382\":1,\"454\":1}}],[\"必须要用同一个\",{\"1\":{\"461\":1}}],[\"必须要加\",{\"1\":{\"39\":1}}],[\"必须用户指定\",{\"1\":{\"481\":1}}],[\"必须用\",{\"1\":{\"461\":1}}],[\"必须包含一个或者多个\",{\"1\":{\"453\":1}}],[\"必须包含一个或者多个渲染元素\",{\"1\":{\"391\":1}}],[\"必须为第一个子元素\",{\"1\":{\"438\":1}}],[\"必须是一个\",{\"1\":{\"445\":1}}],[\"必须是\",{\"1\":{\"437\":1}}],[\"必须是小写的\",{\"1\":{\"435\":1}}],[\"必须是能自我解释的\",{\"1\":{\"360\":1}}],[\"必须携带两个属性\",{\"1\":{\"444\":1}}],[\"必须携带\",{\"1\":{\"403\":1}}],[\"必须去掉\",{\"1\":{\"401\":1}}],[\"必须出现一次\",{\"1\":{\"383\":1,\"442\":1}}],[\"必须含有\",{\"1\":{\"382\":1}}],[\"必须的\",{\"1\":{\"377\":1}}],[\"必须多次重复这些代码\",{\"1\":{\"371\":1}}],[\"必须\",{\"1\":{\"83\":1}}],[\"必须在图片下方或文末标明来源\",{\"1\":{\"53\":1}}],[\"必须明确指代的内容\",{\"1\":{\"49\":1}}],[\"°c\",{\"1\":{\"72\":2}}],[\"周围温度\",{\"1\":{\"72\":1}}],[\"占一个全角字符的位置\",{\"1\":{\"72\":1}}],[\"占一个半角字符的位置\",{\"1\":{\"72\":1}}],[\"氧化\",{\"1\":{\"72\":1}}],[\"氧化价增加\",{\"1\":{\"21\":1}}],[\"告诉我\",{\"1\":{\"71\":2}}],[\"尽管本地化数据可以包括在\",{\"1\":{\"382\":1}}],[\"尽管\",{\"1\":{\"124\":1}}],[\"尽管它并不总是可靠的\",{\"1\":{\"71\":2}}],[\"尽量避免使用感叹号\",{\"1\":{\"70\":1}}],[\"尽量避免出现\",{\"1\":{\"45\":1}}],[\"尽量不使用被动语态\",{\"1\":{\"49\":1}}],[\"尽量使用肯定句表达\",{\"1\":{\"48\":1}}],[\"尽量使用简单句和并列句\",{\"1\":{\"48\":1}}],[\"直到所有的键值都完成排序为止\",{\"1\":{\"423\":1}}],[\"直到不匹配的名字为止\",{\"1\":{\"419\":1}}],[\"直到按下\",{\"1\":{\"169\":1}}],[\"直觉\",{\"1\":{\"71\":2}}],[\"直接拿过来了\",{\"1\":{\"567\":1}}],[\"直接优化气相中\",{\"1\":{\"527\":1}}],[\"直接优化晶格常数\",{\"0\":{\"517\":1},\"1\":{\"517\":1}}],[\"直接用\",{\"1\":{\"483\":1}}],[\"直接地或者通过宏调用\",{\"1\":{\"408\":1}}],[\"直接从\",{\"1\":{\"329\":1}}],[\"直接在\",{\"1\":{\"329\":1}}],[\"直接在用户目录中创建一个\",{\"1\":{\"194\":1}}],[\"直接在终端打开当前文件夹\",{\"0\":{\"39\":1},\"1\":{\"36\":1}}],[\"直接将本地文件拖拽到\",{\"1\":{\"174\":1}}],[\"直接使用英文缩写即可\",{\"1\":{\"50\":1}}],[\"直接右键吧\",{\"1\":{\"39\":1}}],[\"直接选择就好\",{\"1\":{\"28\":1}}],[\"直接就在\",{\"1\":{\"13\":1}}],[\"感叹号\",{\"0\":{\"70\":1}}],[\"感觉这本的质量比较高\",{\"1\":{\"14\":1}}],[\"梨等各色水果\",{\"1\":{\"69\":1}}],[\"梨⋯⋯\",{\"1\":{\"69\":1}}],[\"梨\",{\"1\":{\"69\":1}}],[\"苹果\",{\"1\":{\"69\":3}}],[\"包\",{\"1\":{\"183\":1,\"205\":1}}],[\"包含已分配给每个原子的每个卷的编号\",{\"1\":{\"560\":1}}],[\"包含每个\",{\"1\":{\"560\":1}}],[\"包含每个原子的坐标\",{\"1\":{\"560\":1}}],[\"包含了格式的指令\",{\"1\":{\"453\":1}}],[\"包含了样式的元数据\",{\"1\":{\"439\":1}}],[\"包含两个引用\",{\"1\":{\"352\":1}}],[\"包含框架\",{\"1\":{\"316\":1}}],[\"包含作业所用计算节点的文件名\",{\"1\":{\"280\":1}}],[\"包含\",{\"1\":{\"223\":1}}],[\"包含文件的属性与权限数据等\",{\"1\":{\"136\":1}}],[\"包含六个省略点\",{\"1\":{\"69\":1}}],[\"包中提供了\",{\"1\":{\"112\":1}}],[\"包括对应\",{\"1\":{\"642\":2}}],[\"包括标点和术语\",{\"1\":{\"419\":1}}],[\"包括术语\",{\"1\":{\"382\":1}}],[\"包括目录\",{\"1\":{\"183\":1}}],[\"包括了xml\",{\"1\":{\"127\":1}}],[\"包括\",{\"1\":{\"101\":1,\"435\":1,\"451\":1}}],[\"包括极紫外区\",{\"1\":{\"21\":1}}],[\"包括原子结构及电子结构等\",{\"1\":{\"21\":1}}],[\"早上8点定时开网\",{\"1\":{\"108\":1}}],[\"早上\",{\"1\":{\"68\":1}}],[\"活动名称和来宾数量\",{\"1\":{\"68\":1}}],[\"圆括号\",{\"1\":{\"67\":1}}],[\"尖括号\",{\"1\":{\"67\":1}}],[\"<插点数量>\",{\"1\":{\"572\":1}}],[\"<末态结构>\",{\"1\":{\"571\":1,\"572\":1}}],[\"<初态结构>\",{\"1\":{\"571\":1,\"572\":1}}],[\"<元素\",{\"1\":{\"498\":2}}],[\"2008\",{\"1\":{\"450\":1}}],[\"2014\",{\"1\":{\"366\":2,\"367\":1,\"370\":1}}],[\"http\",{\"1\":{\"450\":1}}],[\"\",{\"1\":{\"367\":1,\"372\":1,\"430\":2,\"452\":1}}],[\"\",{\"1\":{\"367\":1,\"372\":1}}],[\"\",{\"1\":{\"405\":1}}],[\"ed\",{\"1\":{\"454\":1}}],[\"édition<\",{\"1\":{\"386\":1}}],[\"p\",{\"1\":{\"382\":1}}],[\"page<\",{\"1\":{\"382\":1}}],[\"\",{\"1\":{\"367\":2,\"371\":1,\"372\":1,\"423\":1,\"430\":1,\"451\":1,\"452\":1}}],[\" + + +

    XML Sitemap

    +
    + + + + + + + + + + + + + + + + + + + + + + +
    URLs list
    + + PriorityChange FrequencyLast Updated Time
    + + + + + + + + + + + + + 0.5 + + + + + + + + + - + + + + +
    +
    + + + + + diff --git a/software/Aria2.html b/software/Aria2.html new file mode 100644 index 00000000..317f7b71 --- /dev/null +++ b/software/Aria2.html @@ -0,0 +1,40 @@ + + + + + + + + + + Aria2 折腾记录 | 北辞 + + + + + +
    跳至主要內容

    Aria2 折腾记录

    Northword小于 1 分钟

    Aria2 折腾记录

    关于 Aria2

    aria2 是一款支持多种协议的轻量级命令行下载工具。

    安装与配置 Aria2

    Aria2 的运行依靠以下几个文件:

    文件名描述必须?
    aria2c (or aria2c.exe)主程序
    aria2.conf配置文件
    aria2.session任务文件
    aria2.log日志文件

    与 OneDrive 联动

    通过 Reclon 和 upload.sh

    Aria2 的 on-completed 参数设置后,会在任务完成时向指定脚本传递任务的 UID、文件数量、任务路径三个参数。

    参考资料

    P3TERX/aria2.sh: Aria2 一键安装管理脚本 增强版 (github.com)open in new window在 Windows 中使用 Aria2 - P3TERX ZONEopen in new windowAria2 + Rclone 实现 OneDrive、Google Drive 等网盘离线下载 - P3TERX ZONEopen in new window

    + + + diff --git a/software/index.html b/software/index.html new file mode 100644 index 00000000..f98ed10c --- /dev/null +++ b/software/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 软件使用 | 北辞 + + + + + + + + + diff --git a/software/office/index.html b/software/office/index.html new file mode 100644 index 00000000..584acb5e --- /dev/null +++ b/software/office/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Office | 北辞 + + + + + + + + + diff --git a/software/office/install/index.html b/software/office/install/index.html new file mode 100644 index 00000000..3256d65f --- /dev/null +++ b/software/office/install/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Office 安装 | 北辞 + + + + + +
    跳至主要內容

    Office 安装

    Northword小于 1 分钟

    Office 安装

    使用 Office Tool Plus 下载、部署 Office,使用 KMS 激活。

    下载安装 Office 有多种途径,可以从 office 官网下载安装,也可以从 Windiws 应用商店下载安装,但这些方法无法自定义安装组件,所以更推荐使用 Office Tool Plus(下简称为 OTP)进行部署。

    OTP 下载

    下载 | Office Tool Plus 官方网站 (landian.vip)open in new window

    访问上述链接下载OTP。如果不知道下载哪一个,就无脑选“包含框架(7z自解压缩包)”。

    + + + diff --git a/software/windows-applications.html b/software/windows-applications.html new file mode 100644 index 00000000..db30175c --- /dev/null +++ b/software/windows-applications.html @@ -0,0 +1,40 @@ + + + + + + + + + + Windows 的自我修养 | 北辞 + + + + + +
    跳至主要內容

    Windows 的自我修养

    Northword大约 3 分钟

    Windows 的自我修养

    Windows Applications

    windows 必备应用列表是个人重装电脑后会安装的应用。

    文档类

    名称需要安装配置文件备注
    [MS Office]通过 office tool plus 安装open in new window
    福昕 PDF 编辑器企业版open in new window福昕 9.6.0
    CAJVieweropen in new windowCAJViewer7.3
    Notepad3open in new windowNotepad3 配置说明open in new window

    通讯类

    名称需要安装配置文件备注
    telegramopen in new window账号同步
    TIMopen in new window账号同步
    微信open in new window账号同步

    浏览器类

    浏览器相关类

    名称需要安装配置文件备注
    Edge-devopen in new window账号同步

    注意: 此处插件可以通过浏览器账号同步设置。

    插件

    名称需要安装配置说明备注
    soulsign-chromeopen in new window个人开发脚本安装地址open in new window公共脚本发布平台open in new window
    OneTab Plus: 标签效率管理扩展open in new window
    沙拉查词open in new window沙拉查词配置说明open in new window
    Tampermonkey BETAopen in new windowtampermonkey 配置说明open in new window
    GitMasteropen in new window
    简悦open in new window云同步
    简码open in new window
    Infinity 新标签页 (Pro)open in new window账号同步
    pakku 哔哩哔哩弹幕过滤器open in new windowpakku 配置说明open in new window
    Stylusopen in new windowStylus 配置说明open in new window
    广告终结者open in new window
    HTTPS Everywhereopen in new window
    languagetoolopen in new window
    grammarlyopen in new window
    SingleFileopen in new window

    工具类

    名称需要安装配置文件备注
    Snipasteopen in new windowSnipaste 配置说明open in new window
    天若 OCR 文字识别open in new window账号同步
    clash_for_windows_pkgopen in new windowClashForWindows 配置说明open in new window
    百度网盘open in new window账号同步
    peaZipopen in new window

    工作类

    名称需要安装配置文件备注
    Origin Proopen in new windowOriginPro9.0

    编程类

    名称需要安装配置文件备注
    Puttyopen in new window
    Terminalopen in new window
    VMWProopen in new windowVMWPro15.0
    Visual Studio Codeopen in new window账号同步
    matlabopen in new window
    Gitopen in new window
    JDKopen in new window
    Node.jsopen in new window
    Pythonopen in new window
    v2rayNopen in new windowv2rayN 配置说明open in new window
    everythingopen in new window

    实用工具类

    名称需要安装配置文件备注
    NewFileTimeopen in new window
    cmd_init.batopen in new windowcmd_init.bat 配置说明open in new window
    Microsoft.PowerShell_profile.ps1open in new windowMicrosoft.PowerShell_profile.ps1 配置说明open in new window
    geekuninstalleropen in new window
    memreductopen in new windowmemreduct 配置说明open in new window
    + + + diff --git "a/software/zotero/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html" "b/software/zotero/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html" new file mode 100644 index 00000000..f842bb85 --- /dev/null +++ "b/software/zotero/Zotero \345\260\206\345\274\225\346\226\207\351\223\276\346\216\245\345\210\260\345\217\202\350\200\203\344\271\246\347\233\256.html" @@ -0,0 +1,254 @@ + + + + + + + + + + Zotero 将引文链接到参考书目 | 北辞 + + + + + +
    跳至主要內容

    Zotero 将引文链接到参考书目

    Northword大约 3 分钟

    Zotero 将引文链接到参考书目

    描述

    建立引用(citation)与参考书目(bibliography)之间的单向超链接(引用 -> 参考书目),类似于 endnotes 的“Link in-text citations to references in the bibliography”:

    Zotero 官方不提供该功能,这是因为 Zotero 使用的 CSL 处理器将 citation 渲染为一个 filed,无法添加超链接 [1]

    从 Zotero 论坛发现了通过 word 宏实现的功能 [2],虽有一些缺陷,但基本可以达成需求。

    配置及使用

    Public Sub ZoteroLinkCitation()
    +    
    +' get selected area (if applicable)
    +    Dim nStart&, nEnd&
    +    nStart = Selection.Start
    +    nEnd = Selection.End
    +    
    +' toggle screen updating
    +    Application.ScreenUpdating = False
    +    
    +' define variables
    +    Dim title As String
    +    Dim titleAnchor As String
    +    Dim style As String
    +    Dim fieldCode As String
    +    Dim numOrYear As String
    +    Dim pos&, n1&, n2&, n3&
    +
    +    ActiveWindow.View.ShowFieldCodes = True
    +    Selection.Find.ClearFormatting
    + 
    +' find the Zotero bibliography
    +    With Selection.Find
    +        .Text = "^d ADDIN ZOTERO_BIBL"
    +        .Replacement.Text = ""
    +        .Forward = True
    +        .Wrap = wdFindContinue
    +        .Format = False
    +        .MatchCase = False
    +        .MatchWholeWord = False
    +        .MatchWildcards = False
    +        .MatchSoundsLike = False
    +        .MatchAllWordForms = False
    +    End With
    +    Selection.Find.Execute
    +    
    +    ' add bookmark for the Zotero bibliography
    +    With ActiveDocument.Bookmarks
    +        .Add Range:=Selection.Range, Name:="Zotero_Bibliography"
    +        .DefaultSorting = wdSortByName
    +        .ShowHidden = True
    +    End With
    +    
    +    ' loop through each field in the document
    +    For Each aField In ActiveDocument.Fields
    +        ' check if the field is a Zotero in-text reference
    +        '##################################################
    +        If InStr(aField.Code, "ADDIN ZOTERO_ITEM") > 0 Then
    +            fieldCode = aField.Code
    +            '#############
    +            ' Prepare
    +            ' Plain citation== Format of Textfield shown
    +            ' must be in Brackets
    +            Dim plain_Cit As String
    +            plCitStrBeg = """plainCitation"":""["
    +            plCitStrEnd = "]"""
    +            n1 = InStr(fieldCode, plCitStrBeg)
    +            n1 = n1 + Len(plCitStrBeg)
    +            n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), plCitStrEnd) - 1 + n1
    +            plain_Cit = Mid$(fieldCode, n1 - 1, n2 - n1 + 2)
    +            'Reference 'as shown' in word as a string
    +            
    +            'Title array in fieldCode (all referenced Titles within this field)
    +            Dim array_RefTitle(32) As String
    +            i = 0
    +            Do While InStr(fieldCode, """title"":""") > 0
    +                n1 = InStr(fieldCode, """title"":""") + Len("""title"":""")
    +                n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), """,""") - 1 + n1
    +                If n2 < n1 Then 'Exception the type 'Article'
    +                    n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), "}") - 1 + n1 - 1
    +                End If
    +                array_RefTitle(i) = Mid(fieldCode, n1, n2 - n1)
    +                fieldCode = Mid(fieldCode, n2 + 1, Len(fieldCode) - n2 - 1)
    +                i = i + 1
    +            Loop
    +            Titles_in_Cit = i
    +            
    +            'Number array with References shown in PlainCit
    +            'Numer is equal or less than Titels, depending on the type
    +            '[3], [8]-[10]; [2]-[4]; [2], [4], [5]
    +            ' All citations have to be in Brackets each! [3], [8] not [3, 8]
    +            ' This doesnt work otherwise!
    +            ' --> treatment of other delimiters could be implemented here
    +            Dim RefNumber(32) As String
    +            i = 0
    +            Do While (InStr(plain_Cit, "]") Or InStr(plain_Cit, "[")) > 0
    +                n1 = InStr(plain_Cit, "[")
    +                n2 = InStr(plain_Cit, "]")
    +                RefNumber(i) = Mid(plain_Cit, n1 + 1, n2 - (n1 + 1))
    +                plain_Cit = Mid(plain_Cit, n2 + 1, Len(plain_Cit) - (n2 + 1) + 1)
    +            i = i + 1
    +            Loop
    +            Refs_in_Cit = i
    +                 'treat only the shown references (skip the rest)
    +            '[3], [8]-[10] --> skip [9]
    +            'Order of titles given from fieldcode, not checked!
    +            If Titles_in_Cit > Refs_in_Cit Then
    +                array_RefTitle(Refs_in_Cit - 1) = array_RefTitle(Titles_in_Cit - 1)
    +                i = 1
    +                Do While Refs_in_Cit + i <= Titles_in_Cit
    +                    array_RefTitle(Refs_in_Cit + i - 1) = ""
    +                    i = i + 1
    +                Loop
    +            End If
    +            
    +            '#############
    +            'Make the links
    +            For Refs = 0 To Refs_in_Cit - 1 Step 1
    +                title = array_RefTitle(Refs)
    +                array_RefTitle(Refs) = ""
    +                ' make title a valid bookmark name
    +                titleAnchor = title
    +                titleAnchor = MakeValidBMName(titleAnchor)
    +                
    +                ActiveWindow.View.ShowFieldCodes = False
    +                Selection.GoTo What:=wdGoToBookmark, Name:="Zotero_Bibliography"
    +                
    +                '' locate the corresponding reference in the bibliography
    +                '' by searching for its title
    +                Selection.Find.ClearFormatting
    +                With Selection.Find
    +                    .Text = Left(title, 255)
    +                    .Replacement.Text = ""
    +                    .Forward = True
    +                    .Wrap = wdFindContinue
    +                    .Format = False
    +                    .MatchCase = False
    +                    .MatchWholeWord = False
    +                    .MatchWildcards = False
    +                    .MatchSoundsLike = False
    +                    .MatchAllWordForms = False
    +                End With
    +                Selection.Find.Execute
    +                               
    +                ' select the whole caption (for mouseover tooltip)
    +                Selection.MoveStartUntil ("["), Count:=wdBackward
    +                Selection.MoveEndUntil (vbBack)
    +                lnkcap = "[" & Selection.Text
    +                lnkcap = Left(lnkcap, 70)
    +                
    +                ' add bookmark for the reference within the bibliography
    +                Selection.Shrink
    +                With ActiveDocument.Bookmarks
    +                    .Add Range:=Selection.Range, Name:=titleAnchor
    +                    .DefaultSorting = wdSortByName
    +                    .ShowHidden = True
    +                End With
    +                
    +                ' jump back to the field
    +                aField.Select
    +                ' find and select the numeric part of the field which will become the hyperlink
    +                Selection.Find.ClearFormatting
    +                With Selection.Find
    +                    .Text = RefNumber(Refs)
    +                    .Replacement.Text = ""
    +                    .Forward = True
    +                    .Wrap = wdFindContinue
    +                    .Format = False
    +                    .MatchCase = False
    +                    .MatchWholeWord = False
    +                    .MatchWildcards = False
    +                    .MatchSoundsLike = False
    +                    .MatchAllWordForms = False
    +                End With
    +                Selection.Find.Execute
    +                        
    +                numOrYear = Selection.Range.Text & ""
    +                                    
    +                ' store current style
    +                style = Selection.style
    +                ' Generate the Hyperlink -->Forward!
    +                ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", SubAddress:=titleAnchor, ScreenTip:=lnkcap, TextToDisplay:="" & numOrYear
    +                ' reset the style
    +                Selection.style = style
    +
    +                ' comment if you want standard link style
    +                aField.Select
    +                With Selection.Font
    +                     .Underline = wdUnderlineNone
    +                     .ColorIndex = wdBlack
    +                End With
    +                    
    +            Next Refs 'References in Cit
    +
    +        End If  'If Zotero-Field
    +        '#########################
    +
    +        Next aField ' next field
    +
    +        ' go back to original range selected
    +        ActiveWindow.View.ShowFieldCodes = False
    +        ActiveDocument.Range(nStart, nEnd).Select
    +        
    +    End Sub
    +    Function MakeValidBMName(strIn As String)
    +        Dim pFirstChr As String
    +        Dim i As Long
    +        Dim tempStr As String
    +        strIn = Trim(strIn)
    +        pFirstChr = Left(strIn, 1)
    +        If Not pFirstChr Like "[A-Za-z]" Then
    +            strIn = "A_" & strIn
    +        End If
    +        For i = 1 To Len(strIn)
    +            Select Case Asc(Mid$(strIn, i, 1))
    +            Case 49 To 57, 65 To 90, 97 To 122
    +                tempStr = tempStr & Mid$(strIn, i, 1)
    +            Case Else
    +                tempStr = tempStr & "_"
    +            End Select
    +            Next i
    +            tempStr = Replace(tempStr, "  ", " ")
    +            MakeValidBMName = Left(tempStr, 40)
    +        End Function
    +

    缺陷和注意事项


    1. 来源添加 ↩︎

    2. Word: Possibility to link references and bibliography in a document? - Zotero Forumsopen in new window ↩︎

    + + + diff --git "a/software/zotero/Zotero \346\214\207\345\214\227.html" "b/software/zotero/Zotero \346\214\207\345\214\227.html" new file mode 100644 index 00000000..5ef2acf9 --- /dev/null +++ "b/software/zotero/Zotero \346\214\207\345\214\227.html" @@ -0,0 +1,69 @@ + + + + + + + + + + Zotero 指北 | 北辞 + + + + + +
    跳至主要內容

    Zotero 指北

    Northword大约 5 分钟

    Zotero 指北

    关于 Zotero 是什么以及为什么使用它

    Why Zotero & Why NOT EndNote?

    Todo

    安装与配置

    主程序

    没什么好记录的,在 Zotero 官网open in new window 下载一路下一步安装即可。

    浏览器插件 Zotero Connector

    Zotero 相较于其他文献管理软件的一大优势就是可以直接从网页中抓取元数据并存入数据库,这个过程通过浏览器插件 Zotero Connector 实现。

    中文 Translator 与茉莉花插件

    比起其他的文献管理软件,原生的 Zotero 对中文支持并没有好到哪里去,但是得益于开源社区的维护,我们可以通过第三方 translator 库 github.com/l0o0/translators_CNopen in new window 极大的提高其中文文献抓取能力。

    该库的主要维护者还开发了插件 Jasminum - 茉莉花open in new window 来继续增强 Zotero 的中文支持,茉莉花插件提供了如下功能:

    1. 拆分或合并 Zotero 中条目作者姓和名
    2. 根据知网上下载的文献文件来抓取引用信息(就是根据文件名)
    3. 添加中文 PDF/CAJ 时,自动拉取知网数据,该功能默认关闭。需要到设置中开启,注意添加的文件名需要含有中文,全英文没有效果(还是根据文件名)
    4. 为知网的学位论文 PDF 添加书签
    5. 更新中文 translators
    6. 拉取文献引用次数,是否核心期刊

    就安装而言,

    1. 下载安装 Jasminum 插件:在 Latest Release · l0o0/jasminum (github.com)open in new window 下载 .xpi 文件。在 Zotero——Tools——Add-ons——右上角小齿轮⚙——Install Add-on From File...——选中第二步保存的文件——确定——重启 Zotero。
    2. 下载安装 PDFtk:下载并安装 PDFtk serveropen in new window ,记录安装路径(eg. C: \Program Files (x86)\PDFtk)。在 Zotero——edit——Preferences——Jasminum——Setting——PDFtk Server Execute File Path 中填写 <PDFtk install dir>/bin (eg. C: \Program Files (x86)\PDFtk\bin)(即 PDFtk 可执行文件所在目录)。MAC 用户参考 这里open in new window
    3. 安装中文 Translator:与上一步同一界面——Unofficial Translator Repository——Refresh——Update all。
    4. 更新中文 Translator:打开已安装 Zotero Connector 的浏览器,右击 Zotero Connector 图标进入拓展选项,Advanced——Update Translators。

    Styles 与 GB/T 7714-2015 CSL 文件

    这是一个修改过的 GB/T 7714-2015 CSL 文件open in new window ,将这些文件放置于 Zotero 数据目录下的 Styles 文件夹即可。

    国内学校论文/作业的参考文献格式基本上都与国标相近,这里的 CSL 文件经过修改,适配了参考文献列表“等”与“et al”混排。其原理见后文 参考文献列表中文“等”与外文“et al”混排

    基础使用

    截止至这里,最基本的 Zotero 安装就已经完成了。关于具体的使用,可以参考以下内容来学习,他们均较为详细地介绍了如何导入与组织文献以及如何在 Word 中插入引用,因此就不再重复造轮子了。

    在使用 Zotero 之前,我希望可以引入几个术语:

    • 条目 Item
    • 附件 Attachments
    • 链接的附件:
    • 存储的附件:
    • 合集 Collections:
    • 标签 Tags:
    • 引文
    • 参考书目

    以下列个需要了解的大纲:

    ### 添加与维护条目、附件
    +
    +#### 添加条目
    +
    +##### 通过标识符添加条目
    +
    +##### 通过附件添加条目
    +
    +##### 直接从 Connector 生成条目
    +
    +#### 添加附件
    +
    +### 组织、管理文献库
    +
    +#### 集合与标签
    +
    +#### 笔记与关联条目
    +
    +#### 重复条目
    +
    +### 插入引文与生成参考书目
    +
    +#### 直接在 Zotero 里生成参考条目
    +
    +#### 在 Word 里插入引文
    +
    +#### 使用 Zotero bib 生成参考条目
    +
    +#### 引文格式
    +

    多设备同步方案

    在多设备同步中,条目的同步均是通过 Zotero 官方提供的同步服务进行的,不同的是附件的同步方式。可以依据需要同步的设备类型、同步的目的来合理选择同步的方案。

    使用官方的存储空间进行附件同步

    优点:只需要账号登录上,基本不需要任何额外配置,方便快捷简单。

    缺点:默认只有 300M,更大要付费,没钱,一票否决,过了。

    WebDav 实现附件同步

    Todo

    OneDrive & ZotFile 实现附件同步

    Todo

    使用 ZotFile 实现更自由地附件管理

    Todo

    其他插件与玩法

    少数派这篇文章介绍了一些较为基础的用法,而对一些更深的玩法并没有详细展开或提及;同时,它发布于 2019 年 9 月,而在这之后,Zotero 也涌现出了许多其他优秀的插件,却少有文章进行较为集中的综述,所以下面对我所了解的一些技巧进行记录和分享。

    Zotero-PDF-Translate 实现在 PDF 中翻译

    windingwind/zotero-pdf-translate: PDF translation add-on for Zotero 6 (github.com)open in new window

    Zotero-tag 实现新条目添加未读标签,阅读后自动取消

    windingwind/zotero-tag: One add-on to rule Tags all. Manage all your Tags in one Zotero add-on. (github.com)open in new window

    该插件可以定义一系列规则组,例如新添加条目添加“未读”标签,当打开过后,自动取消该标签。

    Zotero-SciHub 实现从 SCI-HUB 下载全文

    ethanwillis/zotero-scihub: A plugin that will automatically download PDFs of zotero items from sci-hub (github.com)open in new window

    Zotero Update IFs 为期刊添加影响因子

    redleafnew/zotero-updateifs: 从唯问更新影响因子open in new window

    Zotero 与 Obdisian 或其他 Markdown 编辑器结联动

    Todo

    Zutilo

    Todo

    使用 Better BibTex for Zotero 实现在 LaTeX / Markdown 中引用

    Todo

    修改 CSL 文件使参考文献列表中文“等”与外文“et al”混排

    通过 Zotero Language 字段与 CSL <Local> 标签实现。

    Todo

    其他平台客户端

    iOS

    目前官方 iOS 客户端已正式发布。

    Android

    无官方客户端,考虑使用三方客户端 Zoo for Zotero。

    Web

    Todo

    + + + diff --git a/software/zotero/index.html b/software/zotero/index.html new file mode 100644 index 00000000..1846524a --- /dev/null +++ b/software/zotero/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + Zotero | 北辞 + + + + + + + + + diff --git "a/software/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html" "b/software/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html" new file mode 100644 index 00000000..56e00182 --- /dev/null +++ "b/software/\344\275\277\347\224\250Pavadan\345\222\214MentoHUST\350\277\233\350\241\214\351\224\220\346\215\267\350\256\244\350\257\201.html" @@ -0,0 +1,96 @@ + + + + + + + + + + 北辞 + + + + + +
    跳至主要內容

    Northword大约 3 分钟

    1. 红米 AC2100 刷入 Pavadan 固件

    目前主流 RM AC 2100 的 Pavadan 固件有三个人制作:Hiboy、ChongshenB、hanwckf。已编译好的固件中只有 Hiboy 包括 mentohust,其余二者若需要此插件均需要自行编译。

    • Hiboy:

    2. MentoHUST 的配置

    在 WebUI 配置

    路径:拓展功能 - 配置拓展环境 - 锐捷认证

    • 启用 MentoHUST
    • 用户名:学号
    • 密码:校园网上网密码,默认密码为身份证后六位
    • 组播地址:0(标准)
    • DHCP 方式:2(认证后)
    • 是否后台运行:2(是,保留输出)
    • 客户端版本号:4.96
    • 其余均保持默认

    帮助命令

    mentohust -h
    +
    欢迎使用MentoHUST    版本: 0.3.1
    +Copyright (C) 2009-2010 HustMoon Studio
    +人到华中大,有甜亦有辣。明德厚学地,求是创新家。
    +Bug report to http://code.google.com/p/mentohust/issues/list
    +
    +用法:    mentohust [-选项][参数]
    +选项:    -h 显示本帮助信息
    +    -k -k(退出程序) 其他(重启程序)
    +    -w 保存参数到配置文件
    +    -u 用户名
    +    -p 密码
    +    -n 网卡名
    +    -i IP[默认本机IP]
    +    -m 子网掩码[默认本机掩码]
    +    -g 网关[默认0.0.0.0]
    +    -s DNS[默认0.0.0.0]
    +    -o Ping主机[默认0.0.0.0,表示关闭该功能]
    +    -t 认证超时()[默认8]
    +    -e 心跳间隔()[默认30]
    +    -r 失败等待()[默认15]
    +    -l 允许失败次数[0表示无限制,默认8]
    +    -a 组播地址: 0(标准) 1(锐捷) 2(赛尔) [默认0]
    +    -d DHCP方式: 0(不使用) 1(二次认证) 2(认证后) 3(认证前) [默认0]
    +    -b 是否后台运行: 0() 1(是,关闭输出) 2(是,保留输出) 3(是,输出到文件) [默认0]
    +    -v 客户端版本号[默认0.00表示兼容xrgsu]
    +    -f 自定义数据文件[默认不使用]
    +    -c DHCP脚本[默认dhclient]
    +    -q 显示SuConfig.dat的内容(如-q/path/SuConfig.dat)
    +    -S 接入服务选择:0(默认) 1(有线1x上网服务,例如华农拨办公账号时需要)
    +例如:    mentohust -uusername -ppassword -neth0 -i192.168.0.1 -m255.255.255.0 -g0.0.0.0 -s0.0.0.0 -o0.0.0.0 -t8 -e30 -r15 -a0 -d1 -b0 -v4.10 -fdefault.mpf -cdhclient
    +注意:使用时请确保是以root权限运行!
    +

    在 Pavadan 中设置定时任务(可选)

    路径:高级设置 - 自定义设置 - 脚本

    在 WAN 上行/下行启动后执行

    #!/bin/sh
    +
    +### Custom user script
    +### Called after internal WAN up/down action
    +### $1 - WAN action (up/down)
    +### $2 - WAN interface name (e.g. eth3 or ppp0)
    +### $3 - WAN IPv4 address
    +logger  "运行后 WAN 状态:" "WAN 状态:【$1】, WAN 接口:【$2】, WAN IP:【$3】"
    +
    +if [ $1 == "up" ] ; then
    +    sleep 30
    +    /etc/storage/crontabs_script.sh up &
    +#else
    +#    echo "检测到WAN:【$1】 "
    +#    echo "请尝试重启mentohust或重启路由器"
    +#    echo "正在尝试重启mentohust"
    +#    mentohust -k -k
    +fi
    +

    自定义 Crontab 定时任务配置

    可选定时开关 WAN 口,将命令前的 # 移除即可启用命令

    或去 高级设置 - 系统管理 - 服务 - 计划任务 中加入

    # 凌晨2点定时关网:
    +0 2 * * * stop_wan #删除开头的#启动命令
    +
    +# 早上8点定时开网(重启wan口):
    +0 8 * * * restart_wan #删除开头的#启动命令
    +
    +
    + + + diff --git "a/software/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html" "b/software/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html" new file mode 100644 index 00000000..a9c7fef9 --- /dev/null +++ "b/software/\345\206\205\347\275\221\347\251\277\351\200\217\346\212\230\350\205\276\350\256\260\345\275\225.html" @@ -0,0 +1,84 @@ + + + + + + + + + + 内网穿透折腾记录 | 北辞 + + + + + +
    跳至主要內容

    内网穿透折腾记录

    Northword小于 1 分钟

    内网穿透折腾记录

    通过 frp

    配置参考

    参考 | frp (gofrp.org)open in new window

    frps.ini

    [common]
    +bind_port = 7000
    +token = 通讯密码
    +subdomin_host = frp.northword.cn
    +log_file = ./frps.log
    +log_level       = info
    +log_max_days    = 5
    +

    frpc.ini

    [common]
    +server_addr = frp.northword.cn
    +server_port = 7000
    +log_file = /home/scujh_zjb/apps/frp/frpc.log
    +log_level = info
    +log_max_days = 3
    +token = 通讯密码
    +
    +[HPC-Inelt]
    +type = tcp
    +local_ip = 127.0.0.1
    +local_port = 22
    +remote_port = 6001
    +

    linux 端 systemctl 配置

    frp 包中提供了 systemctl 的配置文件模板,服务端和客户端各两个,带 @ 的可以传参以启动多个实例。将模板复制到 systemctl 服务配置路径:/lib/systemd/system/

    [Unit]
    +Description=Frp Client Service
    +After=network.target
    +
    +[Service]
    +Type=simple
    +Restart=on-failure
    +RestartSec=5s
    +ExecStart=/home/scujh_zjb/apps/frp/frpc -c /home/scujh_zjb/apps/frp/frpc.ini
    +ExecReload=/home/scujh_zjb/apps/frp/frpc reload -c /home/scujh_zjb/apps/frp/frpc.ini
    +LimitNOFILE=1048576
    +
    +[Install]
    +WantedBy=multi-user.target
    +

    初次配置后需要重载服务,之后启动无须此步:

    systemctl daemon-reload
    +

    然后启动服务::

    #启动 
    +sudo systemctl start frpc 
    +#关闭 
    +sudo systemctl stop frpc 
    +#重启 
    +sudo systemctl restart frpc 
    +#查看状态 
    +sudo systemctl status frpc
    +

    启用开机自启:

    sudo systemctl enable frpc
    +

    启动成功示意:

    + + + diff --git "a/software/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html" "b/software/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html" new file mode 100644 index 00000000..0ebf2687 --- /dev/null +++ "b/software/\345\274\200\345\220\257\344\273\243\347\220\206\345\220\216msftconnecttest\346\227\240\346\263\225\350\267\263\350\275\254.html" @@ -0,0 +1,72 @@ + + + + + + + + + + 开启代理后 msftconnecttest.com 无法跳转 | 北辞 + + + + + +
    跳至主要內容

    开启代理后 msftconnecttest.com 无法跳转

    Northword大约 2 分钟

    开启代理后校园网认证无法跳转

    连接一个无线网络后,如果该网络需要认证(登录)(常见于开放网络或校园网),系统会访问 http://www.msftconnecttest.com/redirect,该网址会自动重定向到需要进行认证的地址。

    但如果爬了梯,且代理的规则将 msftconnecttest.com 判断为走代理时,该页面无法正常跳转。这种情况常见于 SSR 的 PAC 模式、Clash 的规则中将微软策略匹配为 proxy 等。

    由于我是用 Clash For Windows ,以下内容也针对 CFW ,但其他应当同理。

    解决方法蛮多,比如:

    • 关闭 clash 的开机自启 / system proxy 。
    • 需要认证时关闭 system proxy 。
    • 记下认证页面的真实地址直接访问。
    • 策略组 微软 选择直链。
    • 在 rule 里添加关键词匹配规则使 msftconnecttest 被 direct 。

    上述方法治标不治本,添加 rule 虽然是个不错的方法(事实上这可能是多数人首先想到的方法),但是如果你用的是机场的订阅,那换个订阅/升级订阅后自己加的规则就没了。查阅 CFW 文档后发现了 绕过系统代理 | Clash for Windows open in new window

    bypass:
    +  - "*msftconnecttest.com"
    +  - "*c-msedge.net"
    +  - "edge.microsoft.com"
    +  - localhost
    +  - 127.*
    +  - 10.*
    +  - 172.16.*
    +  - 172.17.*
    +  - 172.18.*
    +  - 172.19.*
    +  - 172.20.*
    +  - 172.21.*
    +  - 172.22.*
    +  - 172.23.*
    +  - 172.24.*
    +  - 172.25.*
    +  - 172.26.*
    +  - 172.27.*
    +  - 172.28.*
    +  - 172.29.*
    +  - 172.30.*
    +  - 172.31.*
    +  - 192.168.*
    +  - <local>
    +

    终于是实现效果了,也没啥大问题。

    但后来有一天我发现在命令提示符里进行 pip install 以及 npm install 的时候提示 SSL 错误 ,换源已无法解决,于是找到了 issue : 下载文件遇到 SSL 错误 · Issue #1568 · Fndroid/clash_for_windows_pkg (github.com)open in new window 后被建议使用PAC mode,于是有了 PAC 版本的 Bypass :

    function FindProxyForURL(url, host) {
    +  if (isPlainHostName(host) || dnsDomainIs(host, ".msftconnecttest.com")) {
    +    return "DIRECT";
    +  } else {
    +  return "PROXY 127.0.0.1:%mixed-port%; SOCKS5 127.0.0.1:%mixed-port%; DIRECT;"
    +  }
    +}
    +

    PAC 概念及其写法可参考: 代理自动配置文件(PAC)文件 - HTTP | MDN (mozilla.org)open in new window

    另发现了配置文件预处理,或许也可以用:更新某个订阅后 CFW 自动对该配置文件追加规则。参考 配置文件预处理 | Clash for Windowsopen in new window

    Clash 的几种模式介绍: 一个困扰已久的问题 · Discussion #1532 · Fndroid/clash_for_windows_pkg (github.com)open in new window

    + + + diff --git "a/software/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html" "b/software/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html" new file mode 100644 index 00000000..d6219964 --- /dev/null +++ "b/software/\346\234\215\345\212\241\345\231\250\347\232\204\346\212\230\350\205\276.html" @@ -0,0 +1,40 @@ + + + + + + + + + + 云服务器的折腾记录 | 北辞 + + + + + + + + + diff --git a/star/index.html b/star/index.html new file mode 100644 index 00000000..8f37112e --- /dev/null +++ b/star/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 收藏 | 北辞 + + + + + + + + + diff --git a/tag/ase-python/index.html b/tag/ase-python/index.html new file mode 100644 index 00000000..a0d72be7 --- /dev/null +++ b/tag/ase-python/index.html @@ -0,0 +1,44 @@ + + + + + + + + + + 标签: ase python | 北辞 + + + + + +
    跳至主要內容
    + + + diff --git a/tag/index.html b/tag/index.html new file mode 100644 index 00000000..9a8e07a5 --- /dev/null +++ b/tag/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 标签 | 北辞 + + + + + + + + + diff --git a/timeline/index.html b/timeline/index.html new file mode 100644 index 00000000..65ab7236 --- /dev/null +++ b/timeline/index.html @@ -0,0 +1,40 @@ + + + + + + + + + + 时间轴 | 北辞 + + + + + +
    跳至主要內容
    + + +