From 5771ddb1191430346ccbeb41a20aaea07b1575b8 Mon Sep 17 00:00:00 2001 From: Xicheng Guo Date: Mon, 11 Mar 2024 16:21:36 +0800 Subject: [PATCH] update docs --- package-lock.json | 903 +++++++++++++++++- package.json | 4 +- src/.vitepress/config.mts | 137 +-- src/javascript/index.md | 18 +- .../javascript/javascript-implementation.jpg | Bin 29184 -> 0 bytes 5 files changed, 990 insertions(+), 72 deletions(-) delete mode 100644 src/public/images/javascript/javascript-implementation.jpg diff --git a/package-lock.json b/package-lock.json index 9f0570c..e0c81ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,9 @@ "markmap-lib": "^0.16.0", "markmap-toolbar": "^0.16.0", "markmap-view": "^0.16.0", - "vitepress": "^1.0.0-rc.45" + "mermaid": "^10.9.0", + "vitepress": "^1.0.0-rc.45", + "vitepress-plugin-mermaid": "^2.0.16" } }, "node_modules/@algolia/autocomplete-core": { @@ -209,6 +211,12 @@ "node": ">=6.9.0" } }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==", + "dev": true + }, "node_modules/@docsearch/css": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.0.tgz", @@ -640,6 +648,22 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, + "node_modules/@mermaid-js/mermaid-mindmap": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/mermaid-mindmap/-/mermaid-mindmap-9.3.0.tgz", + "integrity": "sha512-IhtYSVBBRYviH1Ehu8gk69pMDF8DSRqXBRDMWrEfHoaMruHeaP2DXA3PBnuwsMaCdPQhlUUcy/7DBLAEIXvCAw==", + "dev": true, + "optional": true, + "dependencies": { + "@braintree/sanitize-url": "^6.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.0.0", + "khroma": "^2.0.0", + "non-layered-tidy-tree-layout": "^2.0.2" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz", @@ -1077,6 +1101,15 @@ "@types/d3-selection": "*" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -1105,12 +1138,33 @@ "@types/mdurl": "*" } }, + "node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2" + } + }, "node_modules/@types/mdurl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", "dev": true }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "dev": true + }, "node_modules/@types/web-bluetooth": { "version": "0.0.20", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", @@ -1486,6 +1540,16 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -1533,6 +1597,15 @@ "node": ">= 12" } }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dev": true, + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -1567,6 +1640,61 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, + "node_modules/cytoscape": { + "version": "3.28.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.28.1.tgz", + "integrity": "sha512-xyItz4O/4zp9/239wCcH8ZcFuuZooEeF8KHRmzjDfGdXsj3OG9MFSMA0pJE0uX3uCN/ygof6hHf4L7lst+JaDg==", + "dev": true, + "dependencies": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dev": true, + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dev": true, + "optional": true, + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dev": true, + "optional": true, + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", + "dev": true, + "optional": true + }, "node_modules/d3": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", @@ -1874,6 +2002,46 @@ "node": ">=12" } }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true + }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", @@ -1992,6 +2160,52 @@ "node": ">=12" } }, + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "dev": true, + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/delaunator": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", @@ -2001,6 +2215,24 @@ "robust-predicates": "^3.0.2" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -2042,6 +2274,12 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.9.tgz", + "integrity": "sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ==", + "dev": true + }, "node_modules/domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", @@ -2056,6 +2294,12 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/elkjs": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.9.2.tgz", + "integrity": "sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw==", + "dev": true + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -2135,6 +2379,12 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true + }, "node_modules/highlight.js": { "version": "11.9.0", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", @@ -2218,6 +2468,39 @@ "katex": "cli.js" } }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==", + "dev": true + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "dev": true + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, "node_modules/magic-string": { "version": "0.30.8", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", @@ -2310,6 +2593,513 @@ "markmap-common": "*" } }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mermaid": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.9.0.tgz", + "integrity": "sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==", + "dev": true, + "dependencies": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.28.1", + "cytoscape-cose-bilkent": "^4.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.9.0", + "katex": "^0.16.9", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, "node_modules/minisearch": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", @@ -2322,6 +3112,21 @@ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -2340,6 +3145,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==", + "dev": true + }, "node_modules/npm2url": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/npm2url/-/npm2url-0.2.4.tgz", @@ -2530,6 +3341,18 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "dev": true }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2576,18 +3399,77 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "node_modules/stylis": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", + "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==", + "dev": true + }, "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", "dev": true }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "engines": { + "node": ">=6.10" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/vite": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.5.tgz", @@ -2681,6 +3563,19 @@ } } }, + "node_modules/vitepress-plugin-mermaid": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/vitepress-plugin-mermaid/-/vitepress-plugin-mermaid-2.0.16.tgz", + "integrity": "sha512-sW0Eu4+1EzRdwZBMGjzwKDsbQiuJIxCy8BlMw7Ur88p9fXalrFYKqZ3wYWLxsFTBipeooFIeanef/xw1P+v7vQ==", + "dev": true, + "optionalDependencies": { + "@mermaid-js/mermaid-mindmap": "^9.3.0" + }, + "peerDependencies": { + "mermaid": "10", + "vitepress": "^1.0.0 || ^1.0.0-alpha" + } + }, "node_modules/vue": { "version": "3.4.21", "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", @@ -2701,6 +3596,12 @@ "optional": true } } + }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", + "dev": true } } } diff --git a/package.json b/package.json index 4e0dc6c..33ca6e7 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "markmap-lib": "^0.16.0", "markmap-toolbar": "^0.16.0", "markmap-view": "^0.16.0", - "vitepress": "^1.0.0-rc.45" + "mermaid": "^10.9.0", + "vitepress": "^1.0.0-rc.45", + "vitepress-plugin-mermaid": "^2.0.16" }, "scripts": { "docs:dev": "vitepress dev src", diff --git a/src/.vitepress/config.mts b/src/.vitepress/config.mts index 9e15312..025515e 100644 --- a/src/.vitepress/config.mts +++ b/src/.vitepress/config.mts @@ -1,72 +1,75 @@ import { defineConfig } from 'vitepress' +import { withMermaid } from 'vitepress-plugin-mermaid'; // https://vitepress.dev/reference/site-config -export default defineConfig({ - title: "JSFullStack", - description: "A VitePress Site", - base: "/", - lastUpdated: true, - themeConfig: { - editLink: { - pattern: 'https://github.com/GuoXiCheng/JSFullStack/edit/main/src/:path' - }, - outline: { - level: 'deep' - }, - // https://vitepress.dev/reference/default-theme-config - nav: [ - { text: 'Home', link: '/' }, - { text: 'JavaScript', link: '/javascript/index' }, - { text: 'Examples', link: '/markdown-examples' } - ], - - sidebar: { - '/javascript': [ - { - text: 'ECMAScript', - link: '/javascript/ecma-script/index', - items: [ - { - text: '基本引用类型', - items: [ - { text: 'Date', link: '/javascript/ecma-script/basic-reference/date' }, - { text: '正则表达式', link: '/javascript/ecma-script/basic-reference/reg-exp' } - ] - } - ] - }, - { - text: 'BOM', - items: [ - { - text: 'screen', - link: '/javascript/bom/screen' - } - ] - } - // { - // text: 'DOM', - // link: '/javascript/dom/index', - // items: [] - // },{ - // text: 'BOM', - // link: '/javascript/bom/index', - // items: [] - // } +export default defineConfig( + withMermaid({ + title: "JSFullStack", + description: "A VitePress Site", + base: "/", + lastUpdated: true, + themeConfig: { + editLink: { + pattern: 'https://github.com/GuoXiCheng/JSFullStack/edit/main/src/:path' + }, + outline: { + level: 'deep' + }, + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'JavaScript', link: '/javascript/index' }, + { text: 'Examples', link: '/markdown-examples' } ], - '/markdown-examples': [ - { - text: 'Examples', - items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } - ] - } + + sidebar: { + '/javascript': [ + { + text: 'ECMAScript', + link: '/javascript/ecma-script/index', + items: [ + { + text: '基本引用类型', + items: [ + { text: 'Date', link: '/javascript/ecma-script/basic-reference/date' }, + { text: '正则表达式', link: '/javascript/ecma-script/basic-reference/reg-exp' } + ] + } + ] + }, + { + text: 'BOM', + items: [ + { + text: 'screen', + link: '/javascript/bom/screen' + } + ] + } + // { + // text: 'DOM', + // link: '/javascript/dom/index', + // items: [] + // },{ + // text: 'BOM', + // link: '/javascript/bom/index', + // items: [] + // } + ], + '/markdown-examples': [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ] + }, + + socialLinks: [ + { icon: 'github', link: 'https://github.com/GuoXiCheng' } ] - }, - - socialLinks: [ - { icon: 'github', link: 'https://github.com/GuoXiCheng' } - ] - } -}) + } + }) +) diff --git a/src/javascript/index.md b/src/javascript/index.md index e7de521..210fad5 100644 --- a/src/javascript/index.md +++ b/src/javascript/index.md @@ -36,6 +36,18 @@ JavaScript的历史展示了它是如何从一个用于简单客户端数据验 至此,JavaScript从简单的客户端表单验证脚本发展成为一门全栈技术的核心语言,成为了世界上最流行的编程语言之一。 - - - +## JavaScript的实现 + +```mermaid +graph TD + subgraph A[JavaScript] + B[ECMAScript] + C[DOM(文档对象模型)] + D[BOM(浏览器对象模型)] + end +``` + +完整的JavaScript包含以下三个部分: +- ECMAScript:由ECMA-262定义并提供核心功能 +- DOM:提供与网页内容交互的方法和接口 +- BOM:提供与浏览器交互的方法和接口 \ No newline at end of file diff --git a/src/public/images/javascript/javascript-implementation.jpg b/src/public/images/javascript/javascript-implementation.jpg deleted file mode 100644 index ec1e4009f8d86d5533a275e3999b86a324ccddc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29184 zcmeFZWmuG5+cqo%=upxn-5`xfgQRpzNl7T8Gy+41bPGsGNQg*>bThz^f(S_GP|_g+ zg7B{K@_OETd!Fn2etp~bzCW%XZVof&oU_)k);eO}_v4Jv(on?1zJ-15+BH07C3&4| z*D$oMT|?u7UI*{2m@6`X|Il1@6lJfK4N-r)c8&g;vb@X#nAuJy)~vnmuPbr}E6O{; zB#jNdTvlnaYjl*@42%lQa=l4858gAAD!_Zt;Q3dlj-Me6Qa+{kBt`gJk(G6Im?@gxQOBdFqrAlu#}`B z|M8L=ORXSaxlZms-~0RHYPRfvWnuY$`bdyq!%*6Dw_zQg#G#A9_22J`y2H0tNI&~SgFI_vIoThUr3|%8UN>v zrP~O#q`%eCR!aWEJ-*WfwvuSE^42_92&|I%hYN7Y1HE@!JXQkFb)-d?_d7dR`Vzy6 z4SXK{H?#bnKxn(<$t-cK)G1Uq*WZ=$3cOC_5-ig*9P#sIH_A@&4>L?qw2yT=ete3&8N#z z-LB2w)E%)^xhmyF76Z`XR12pFe*fCuM5;_DIF?1aeJ$mYw-@@~n-CEi0O_A}s?q=J zjdp1wiWg|BZCAe>Px}p8iH0PO1_?*rl`#$7ySk{@EGmxmq?0@z(_KQ+UBO^WA>`O- zt9XtuxryDgFRHvD=2t%_mJSDa@n;;G>m6FTN;S%zLimoo|2CoP3%W12=K~MEXA6p>coD|4N+x>0(;d*N4wTNc9aZ zvc0p`MVG^w;Nu47Gze9KTTdSenf>KB_*5X+?0Fa)tAFelA^#{IlLYSmW7c(;aiMqp z-qo2bb6T$g+GEC(vSHTWN9C82G+I8Lcel`=VS4@b9i#b^){~I@6f-d&umn63nyfC` z(rLXdTOWU4Cw-3y9L65AO7%ZKMN9aUExTG}NTq)8=T$DvWw(xyKt!o z3)(5%dJwZ8Wqy&XbYHv^_YTH%ZRbt#V0ED>=0U+xHHDTGQ+Feg?TSwL4XOP=MvfgY z=9cAmnG08!Cl(97C)~2(mp|&-LRx-I7ei^pfN?vQqj;shygxj?K?{2XTY04z>2B^Z z=e9Iu^Ok$Mt((j^n8sta5~>`zitm3a2lksJ9Q@Ni_j#FdO{A%_`R}ES#URl_5Z2Zu z{N?DsiwC+xR6Lh1Hx1ev3DDoa_4~PBaPL>4;l8UpF9e>T%3~zKdR2RMc^>xm@_Ru@ zK-G}gmfF!Nl%*iUMdjd3Takuz{(Sy~OsL^x`3>7!AA#+blli5xrd@2hpP$1bui`8f zu}}PeZJ94sk80qMn>fk53LqPS$ZRyMXW`&Wojx*jXjpxJXcqy2T3#(=C2Q%sJgvlMB6(%~YtFvK$>@w!e)hrTNme*!s_cxiOdzS}sONnnUtWVDuuB6~u z=fhIx+uiG&W%ZT}8=n=){yr#;ieR63bCoLp*=qY3(^%~I_b#03e@s8e;f+=xGkQm$ z$qvQsp>|cP2PXyY(6mE#Q*0x9zsR7a=ybdJXb7i=&fmvb@GvKgR_t((@BxYBDKUPG zaw01!otq19S<`YPCwwW4&J0RPWmh5N47q7-E|bvc5KY`M>P;pf-fo0rkUO6MQE z&v)v0C9K)CrI)0_DTDD3t`4Rul?k~SCH7?0e*4!uv+NvvroJsc%vU|RfFKy&AV>poN%qRG@Gm-xeJd= zGjhZcIP>+;UsEmv+?^webeSvsUpCEV@#DzkY30)k-ug8{+Zb>|y$MvhY$e=QZ`?bT zIo%JtXA;f|*3-q%sRNVhoFAK=!lli=cIwHSpSl=H?h{P2+u(dG)wTVyKmC%@O7hjr z+a5Csku~!7MiWA9w9w)jmA~G&o*-QSQQ^$V-e%FpLwbJ8Pl4OqJD=LGDfcby^@YFc zesJ2*1%UFu+BOa&WQ| zMad*+nD`{qVkfh%6Z67e2cO-$k_^8~D{r#K{7Ga?nX&`E+)dJF{>ye0J`fHFHjal& z(jwO3XE}V*dBO{tk)RBQaqGf`U%MVr8PqfOb*8V_tPzwpT+)&UUBn7Oda`B@u?QMY zZl7G6XJ4`DaDBPY7)&x9_VnXnKWAJj0vUG}ma+121pRSwY3*&7gt1j>u&571guAa_ zUaa54Z`y5q{(&`2Pnz;#AzkyY1nZ@OG}_~ep95e2SO}3MEshp~c@Cn@G2A%Fx}dUo z?QS_%IXFB~?+Su9A7CcwL%NSA%*~lKSVp)QgjV<8Xzc0TxWN$8RkcEJHeT*`SG{T` zwZc6RlZ?G9ITiU1>%}oirr0?N8VhTNy<3~UZ*IVsF}eTeUG%iZkge~wrxZ`?>GHDR zEeXbCbH6jb1)n2QT9%z)h^(8`aiL}i$`LX@u<1|Y2${G(&td*+(*WIqt1^1cY-cfX z`$sraEOf%eRsB^t^O{Knq+dssTMt$+C^TcI?E4`gAy}E|&#nz-$PN&&X#8^H)nC3S zI;;J)ff?mZsnbQRz{2KUe3U zpGrU!`f@rlUrZB1aZ^_+K?Iw9g`R`0-9A^;45G4~IOnm@BC^EpwYd@a|2lPPY6kf* zq-&oMk!rDm&xJ%J!9~k0cxRjB(cm2g$b`*X-&z6=0_EN)7dRFh$vpk4z_fSGR=|dZ zE}7O-Vhj1Uvrmri4?=AX4C*kFz#_Hfuj9;%!1|raZ*yWM1zr|T!G2GhLK;Lm^hsMG zqd)G53_}SL6)(+0EFa&O$fn7ZJ;oxzBEKGeXNdi>Sd~$gWrcyEt+%is>tXQG#kS2o z9FKWV8cKA!gfnmEjWQU1@kdUh@BpBJ9?_7 zK2A2mJ_seqQ{`=`-Y=8cm*JX%A!8IB&c}2$Noo1VDna-O2BEZsz&)4XXeCjTOcqm- zp@;e79Ff*jralisIpBzP_s$1u3GouIANme z86QPhDRNeU`@mbz^e~eSf69_AadmMN^2h}^?oi4nsX6;fGJGGBHTK+q#}6}gpL$$G z98~1yI>xu$TRY<*9^=&cYH-DW$#Cs78s2$) z6~YN=#ljU}0|YwNT|}zUu)r5!yUDNT(fxW_zuUMKNzGM}{|UCasQeLe>p6)Tha0Bm zYmjo5610fqrfofC%Q4J|wf^G|l(M}+3~B87^5*YJ#!CwXlAy6R2;i~&DN-q1!Ev&R zouvA&A~Dbwi#_|a^v?#yB?D&Z*yJ_l{8L`FW1zf_jM$f+-&X|Yp#Bsz-Ff-P3p0P# z1V8$-P}nZ&uiQR6EdZi&hl%@tk6{A*zzdo}(*N??AQ4Ypu5tOx@?bw{X-cDYJBI$L z4JuHzfxiFLKb4PO(jYgv@wp}cAFA&E9v}W|0N@usql0Nn2JCYGZHK?lD+sm}T;Q{p zL~Z(XhS;04v~Ud#nD} zB>y)`a6Jkb;L&kP>FfWv+n<-&H-I(0uFV<$ZQlR=HD*3T@Y(g^HoMY)n7t%Dh}!5I z^E&@9i4I1vW`@5WKmUi>Z=it%rZcXz6szPW88Qcw_>O zbu`Ws$G>nnb&MY~{#W}ex|(;>&KiK*3FK$1SZF;D9S6~Fa1V+1+sXbu@6ow!JRlbC zgHk#s_c|}iw|%C8Y?aoT8QOM}Ht8D0J=2!{MhJ5Rkws1JQ7)9dy!lY&bXJ*dsuSgV zeg?IlyU&Xb0{F#uBw2$hC*TW50|ERMD42Ks7X!7&7V}Y;HOf7jFm=bGvah%BxV@## z4ct0p&z^-o5Q{Ur`QmWEq9@a%HVieF@0fwavG=5!oh!S4=5l8W$)e@!x&YLKejVIM zx(-WC9&I(e6Ms*Lbt@4JR!em;%X<$m#nkVt*M_(oT>-6|w;9X<72c*#5HHFXg(qc1 zcfOBya@WlYxUeK{fb`QtYjn~q_eTHZVU0VM5`AX7Jc(AT^HRvSYt<;f$cGJCXxtXS zOw!&z(m_Q64sbIPt@qeV&UJ#THhD4N{&Fg_{_#?BizGwklPJ zfp~i@%XiSoN?RI0GAh!}buTXbljgM{ohsR4QwGwMUmb&nxzVs*ylm&gVjnVSI*6$R zH=z${uk4{I2uOfz`rC){1ox2ZAnN3F!QCH#pT8e69ECEE8Yri_d4o}Fx=XAj-Dg!4 zkkF(095u>5a9M)3Ejx&L*{?txV`BWh&eo{Q~Af=|F4mHk_qxRP4#R~YOnbyw42;qqNHK%jYZ4xSI$fSpWg~J9lnif z-lHjNyZrf^%v=Dp6^fI>yEDiq2OCYFC;4h<6|=wV(I(DS*+pd0`0f33qxE&ElLn`+ zMmD5x=>QbB)UxO6c=(I|0_5`4zxg+Eb07YUKcr`0qZ#rN6#QSze_1>S$z6nuG#X1e z9jVqK%$7T_mH9W%NbP@du(X!$coW4+83NGmyehNvD?4VA#nwTG_dKAuj%`tRmeYR6 zjWECsHtxKiqie_*pKPyU=%Ld!32>OlZ%5nTl}E+h#U7ha5;=a=ctoD^e+ zhW%Auf6+leWYw^u$idT2x=X$)bWgzXkv0X8xYJL0&Z20U#;r0cv*RKI(yL2Asc@sf zxTRR}U1+)Y+!h?zlLn|Bk_LZ)p<}=OwQbXh8c)S%Ssc=dkI$!3R5It1s`*bH{web( zX^-K6`!Sjo&u<1`wsvmV2r@FMJZ3DKVrU6hTIFjJw&PuS@=z zWRmzXX|;q-cPcHi-;OR`Hh|Nl_!nnpPwc64Ov__$L)BTjTi+qaW34q)(Q~b@kq7TbxODn^_PTa?4_nngzDhrh^KKot_ z*oKPjs)5jx=5;pn37Rm%6zUjR9lra8Q`CC)4pg0TnJ4W>T}Cj&vXLuHe@^QZ2*YI}w*) zhb$ydfsxY20t4|4aD60ke~cE=w%2xb8FKC>PQG`D*Dotu6aZI!wAXTS6VR~++N8v1 z>cVr?mF1ohKHFAwI42AK{;D&ZM|bt7b7V}aXT7#cm+rhhQ!@l;sd!1@WtB~qCo2kO z4v{_@iSv8$uC3845z8sz_cDyKysOG-xM zb%+q;h8ZK28%51VeSWKt6kf(n^ypeIt(`7{j-`ejS*zbK$lkBVV` zZ|?Oie`&|j-y21Ml4`NGdl;ZShP+sgmz3@I@%nWMh~T zhZeJsUgG^GIipA2^0~6PY9}of!dCz{{$`9by4W1(BH-k0r`>QfG#0EGX$p?)6}Lo) z3T=5#Wh}ZMo49-1&++m|W&Wrg;pQd0?rQ_F3}!T4!*{MRC0+cSXuH{VKDP(Y^4=AV z2{>#=$0xa}ZHM46dj}^;DsOyvfX0I89lgK&eZt5l6M^*;HR1gneBTcQnlPh-t5uq> z{ufBP5c-#Fc;eaG^tZ-%KLf4CK*iCJc-R3^@b%ZaHFMbP#QAJ&yRPrB*$H5qg#~c5 z8`K08`0jwkuuL!`69Bt)fdnZTw5!aPNg^~4L*93a&S^#`c)D2@vB$W3{_*WEE{W5{ zmmx}{B=<=?ln)-6_#ThrSTrP_7$MQ0@|A%q6G2)hyafr=KeAnmKyhG|wqYLT#dw|U zYD^CoyFXFC_GFpo9OOjU5-SY2YZU~3B}p!NL&{xbvXetjjf&}G)SNB!gTHy7>bmLCGX z7%6gOzd(E{M#M?S2FMoYE>g>JS%q7R`XtDga+ooW8IZL)TipYEXu&Pbfj!2VLUz_hqxDvzENPWD@LUI;#TEc^K9``F z<3iaGhU;Bkdj>Qj-lr>U_l#i0)z~r7R+lKQ9G;H3mpC@7LvH#)oB#U9wEIsBXxXif zODV6sfY(pu%w9RTb!$rlgT(R<%6{Y);<)=6+k9Zl+VDp~u*EaCRT74S=j3L|)`709 z)~!2`#xY)z*7M!IlWl(>(fA88wArnTqha1)LNlE`?}hVcdp*pTy-abq&10dDWy=B* zj_=a)>q~!&PB)053p7Csagst9cG(`H&a%fCR6Km`lj12|l1Q~a}v$!iqBCXsFB2$XI8DXr3ha88G0i90eQvE`QAfuNv2nVoR z^F|r^9hEs<@Ybtedvr$f54v&4sJ4rUZg=x%hl|4Ix<*+E0{aX0lhWW;uN25Qh~hH= zy|lF3w0DzPz{&z%#-kXO9LHfFIafMgOnj60>=tHH#B38Wa>@mhgmrk^DZ%)i#H9jZ z@aT))xFB!XvxsFJi@0%qU`s|#mFPCdb$8mH;|(Isr|}S#XO7?NG9fDdCvm0e$>W*bD-I49(wSX*H=gPBbE2m$xJ`3F)?tf9Cl#k4P;Gms!H$&F`MV`MMYxY zE|VD-@W&Lc4{uJ%#H{CkW}fa!xh0+t~Pnr$#jhMI<@ei1FNM#gNhOfmFltS z7_&=C_xFwbgmbCq&&uDP!~(EuZ_;~x2wF|$4`o_!4~gP!h26q$IIK@iEC|+@0*ARf zB6-m9pxqc~zV6>Lr#+(Vobs_I-UEU5nR9}sX$0-s3YN85_+;q~6`O@HzZMnXjBNfm zqut<-+pVTFC9c_em?V}mgw_PN9K%265i~3Z|Rw_HdSQhH)tPJ;5?U6=QAn$UFX|M%ZPp1*9lX=GkQv(5^<35g1AJ> zq!zIL*8eira2$($2Lmsdz+Ifs$TBObQLHG&_5}WPdWmbIn+LAxcbEwGM(0gqf48_) z36c}_BU$TLfi?p`gPf6ZEWx9;TuAP=BwGkkX=09au0uyFdef_omY-Md3dqa9obqgh zQ?U~joM=ixL1|a;1~x;w9zH_sAn&!-m;Pd{|1mwmx2!(5h9%)22hxqf$$wtf5Xn#K zxSpXy{>+FiJ4utf7^j2HfHr4t03_+*k225adu{7#TL3ql&|~_SXIlz&M*D;XrLcr3ztFt*>pLMs{t(L@ zTK|khAE8L{(%AYuNgzOCkbvD#&yr~P;ca3@p+_uwJNw0tQG@@O9!d4Vd(JqvXx|4=j6FE?7QW#tUy)zrl9TOA1^3=EcFPv{>zB ziZgwFc40B3uuF)L5Lzzkxf%Dw%=CwJVb*OU;k6#`Pe8WZ-S=3#*LJlOOm`zX!ytwY zP^S{pU{RYx5n>+jv;9td@~Qd*v!``Rj*v-}ix0#q{Y9QrA9IzZIlNOJ%ynCxi^WK; zhMXRk`?rXMgiEm2ryZH&Hbj^dM-a_8D--hSU?jcI;M>_$vX#?axQSfHX78NbdU-r3 zN^F6c#o?*X-mfo?99VTGJxHA!d-lPCChbtfjO}Ti7r7*maOke~HbsVmaG9q%9Qo-9eDZH8&YAkv~_*qyT&nR{1^gj$!~x@ zCeq0vHn2Rl7|iWvrRS6g3b{oGNegOjy4NoRaOKfi%c1BQL~>>cuqw5i)$YrRcb(}K z4-&#_ZaWELvGYf>)|i57X7B+-z2B`=AX~94<7cPCa}`Qnpg+TPE{nT&2|M`0++f7T zVXx$wZ1GWBnzELbu6bQO4SJ`QDc1GN1kjcW#n_noY^EkgO0eQ^S8EaSw)NjG4t}=0 z_cRU$SH4LdV|4sAN@!F!2P6h9N3IkwUFrHGq< zglm0n9Tu%+UTh_bY*o&`=Jz-_u+gFF*vxHT1Riph?FS( zmqko|NauXw7sfgo8S}hbn-S{{REZ&C!>_?=N|dFZi7yK)cJxT-uEwijCYkx=A=c)> z9yj?9yL4ESX+tLL#~czqIsn)urssR|mhB;JMA1(m_@)WR?~Zzj)+$j^SIpE(oeTs@ zw(>!nM@i#XRf{qXiJ&|eZAQ}ULF+}nk~WJ#d4K-e^S}36i?}nE79=@v(-t2Sn_^xA zVN8;rFE231L$Dcim>;2J?9a&=4uWIqT6XM5x1ZpCipza@Lr?nKwKplzoPi>Q4vicI zTh(HwC0^X($M>W7Pe1ydCz2s;_TBCGJygQuBj30E=I?>* z=Vt-0o${@~_XlAYFK$pfNjsDH=wa}zXR4$bFlAMUh6T*2q&l$qb*Uq6(E0E=6|wr4 zQyGwIefjAZUjnifFV+9bk4vQ&S%@@c+ph;cI+^pphmvXANk6rS??Eyk+IoiHU?ioA z>;v2Y?;}7-9-Jvyrav6l)<^(=j5lfJMXAYvl_|_VyY+~1iKPlmHx8Dv*e$z#3F>+S zYc3$4{?-W+bOPi=!DA1eHTs6WK12m3TS$lXQEbDp+<*xJ0-h^>f8< z$pJxO1O<2pI&(l|ct0U@#)G)t<~IbM5Lx9tDn>QLNssQXy@25e6tsSOpB{;fooX-6+R!blP`+SqBYx2r)YsZu4mhK8 zGLTlGN;Hv0VM(XsdgJZ1&n`OX7D8&NGp|1hFG$4WGwVs`l%#_D_6C$3|lvpzmJT)W_R&iKH0NOZlVv{?Bfd}%9u zzEpNDeUm~rTVIM5eDSd2_FvOXLZhQ_gQx@t*YyINkC=eY=_BjcOaTCxk_Dmll`2Jd z%Sw3#33_HbNynOc&H|l~!7D`2?HP$({{%zOtmk@WptbRK+48QE z43|X@885!OoiPnEf~_ANUqWl2Nt7w*{%jh{kEF~g_Si zM48^8V>t*|g=^zuFZY9lzXR0JXz<&#r-5(;9lsBapdQh~t2CtZPg6trCQ2LlUGP%~Ig-*Hng9&6yb`#uPwBod!dT`7dGuA{UaRVYg_=>9dKe=qyjAphU)kn8Y$ z0HvdXi;Ll-K+OAd^Pu{Yx68~76G=aw| z&Q}I4n|ekk{-}nuVUVLN8v!L+S!I1b~^T+nzP_uv z+GTmJrR_H@{Nmwi+{m>6r4FrT#(c3HI0ZC8TZfM?%ILheEBS^cj)DObAzJuDk&-T4kCRsvEpRV7@cjtP zKyN`9XwYE>kg=muYi%E2Y|haqVRJ*5K9=X7JRJd8B56?u7%9Zs<@p}|_f^oU8Re0a z?}75qlPIL{%R?X_l@F6Fx@)X!$urO1J*yhOUCxUBJ+ zl^zQ3fzx_#6Y4*-&3D?a?0KS|O~t9ncM6ysN_WufRsjkOn>o4z(3o_l+Kp8Pbh8T~tN{wQ%WoU815yjQdM`1Mg6FbEx^nGI{4g51sjiyAFmaMjTMRb3O2PoG|q; zJq6ubx7-1Tgc7{PNj&28#$C1n43DwMM)pf=3y<8C)1h9F6nAYl1_fJoNxfkrF?k$K`0#aG)(GyPHt8PmR<3UVq&d*hqFFSKOI;D z{aBK!I2xvAbh+=&bBma}U)i&GAM+>TG!vt(ww~{Db|nI=TZGzYzhlY&a^3&d3?f!Q z{1pdI?g4?;vg9sk1mUvQeu_f+C|iH+IED$gd{bY_-1D)~Rz%(QEx@*mD=cz4hssv3 zK#+K`J_C3!UXq17t&XbPH4jn&8mV~uNk_~^Z_xQ~>IKzt)?iB=2Qsl*S*4Ds;=*bo zd6%nSbXTW}{AG*d0niqpyc3@DDjG)qnl^nv7Kxmk7^1yjDnDC-sNo+X)gsVDwPuCJ z`F+n*xX0vv5c~9YbcY?mzKt#=J{n7Y+vYT-FdGVn4FTC`1?=i~QHS$O7mo@dK~(6?Zt9wz`SiMJG`WMc-=P5J)aC!yhNs7#lzi2oKolr`@+R|%{U z8DhVgn=}3rfGp6Pu(Uz2bw{^JYJtHIQEgk)W=C%(NN}*Hd)~eJ{Q5ndF``>mmqNQN zAZRh*X%H+y7xXsftjzU_p@nphgKjVyr>g?``wV`B@Xnj-pc$L*3$@8WnqlW7(6~)| z<{?sL6;)`mu$EP(sI*a(qtU?7gP)B{EynY z7}#`or6Y=t?t1UCROb&`#7HyxA=pbofJmr|Jjg3V@zo(V7P@_eS{roJ$ADv&kO2LZ z>Ux^Tp0N}U*s}S49A!mgzK{MG{vvvBRhD8B)r2Ygh$k$l`yjC*ZzHG6Eg1J;t|)fO z?dmc@(fiIs`dZwSOuwH9nu~27Ce6S1T>LhE7G_<;O8%> zCeljH{;1XC8iIw?5P!PmYxcJmVCR8^RY_Z6U?GEOAq0DPAMjHp1e*J;kDR-C%$kC- zoj~pyjB3sbNx9CT;DiX~)x+=nNYXu_c@7Rwebg}P#81S#Y8oKe6N@21?BVrCugiV%i!C(! z%x9g2K=Sz;@%T@{QcQ%!sBBK7Zt@psGnq@mT%|7Jri0t7FSl=~7!h!+lYb!A>c`os z0dQkcw^rf}Y+`wn<0g)50+ryDn@wNTW{m<$fFrS2;B-Gn^)NXBM^D;7()%jD-$Ozc z=EachG<+&q54aheVUC{@L_v`LjaE!%`2BeA#lRc4I?XA}9RT+XA3*m$OnOJ+k_IHc zpF9$pPD`hm!jZ@DJ+z$q&Eqdc_RJ})W9-SmwdqJ`5xhC`_0W}G`qlNmLxJ3sWd0N( z9IENNsjG0f&3X_VUy5qFu|RRlAUfFC%kDOcA((;-$RXG#T}L5!#1g6dA0pBzIobkc zs@q3W*66AO1R1i$Xrf1JJqM%OLX5awKf|U7auR zy7Npev0~(#Mu_Lvs{pBV{}MnHt^}L1>YY+FCpmEBM&`1-=`p%Zoi5*Yqvxk9TjxEJ z+qj0)z#i!~gU%vw{$J`4pw%wTFKB<-_V%TF3q)mIQlHG^?9&~o_ba!SV?{mL2{72_ z$h0h)U8xo;35(oL7u=HT=gtmr^XNQ8P$S`(ot}T5S8iNbnVKDzrQO-RSehi;a&Vh za#WnOfMc@oiMgtBulLi()nwyX35}-U&P-Ug7XR`kLm0JAuxuvilh;@d^e+XeO+(zBrENeo?CA*k?eo#gu+B4cc{OS8<93Xq z#R(-C9i{KML-7}UG0b5irtJsh2^t%A{rcKO_=0tZHr zL1Mg_%7oaJi(yhfu~*=J=Noki#CI14UaXwEE7xT%)*1*hTyP*FjADEBjy_1Lz#kq> zNi8J0vWd&yfgbw1;(@Jp9`Bqv51w;jkcc2WF>=Qv*s?@&T7WM7&`%TvW>?dqLz;c| zK&oL${yIgAvs=PII-;xys6mXsYJ0248M-sg{pn=P+TJxRO;1@j2ML^IM|adcw;TC| zF@E!OAfNOa#Scy(5bAt~eehecgfg$ox%2PAr|WxGeTxg zJGW^5L``=#XT6@6Wkcv8&csx^rjq(;U4^J;B`{Fy5x;U_M2{jM12|A3tNLw?>ZihI zm*7yCb0sL1g%>~_4#HK{+zaW36Y+#5vp?XIU%E4}2`~7#=F#{nnUT0F757n|Mazbh zDcU4hls2} zfpwU)p)f72{jbYoX?3l~rQ9J&B#v(!GT?GhsF~lzWpRWTX(Rw}QFDT)Jil>-)*%Ib{8HyF+FIz^VIO=H6@L$(l zgF_8bt)o%uH!!%ck&IT1mZrPk9*;9GuVPe<(Ij^3cb7LZSMgJd>=e_!&hU!nKRz^R zzG~zUbHC)IZQ=wV=p+i8`O-Lm(Qh;M5jiuY%WNQ>Q#i7k*vBLOPJK7JFpfM<@Ntj3 z;K8>!F$U(Ex#<{QP$L|y((IA36{vk50?!hVrB~v9>>M~Zre|PUvy<<9Ldt-_|2o22 z*W%*QdOW5gCtChP#U@?Y=I+GqJG@{tS-I0YJg_&@vpf-8jC|r@P&lZeTxU`**&X=# zW1Gg^PBfIOBX8g>tIQP=j_6_j^cnuY5Sf~;7CQ-|^eZj>WCE>k!)V zh*^;@uQO*-?^%|}!s;Do=h{F~hI7-c!RJk@Bk?y^%%mZ&JCW4Ux;w$D&v@x%G@jzl z-+=WAlra_&kkLpI<^BQ`xBkj-cv}=TTK;aY)uw_qJ+IOxe;bq|81D1q<6Asbb2;{~ zm8`EA$AQOWWF0YRz+urJk`lb5{5d!KBq`q zN8jJg^rTCiNG7&*E~n5`TP_>p+H|wG?g%Ot#g(Y48a3M<-a@S$FMr#Od4kmthiA`o z!=O3zYVtD?ZyNZ&tnM>T%bDEcKisY$A|IxR-}*uQw%CC>k{E{ZQ2v=a2h#dua~|Tf zAEst0C7-wXPE1i+c{Rgw;+YSR<~-r+)Rj9ObAIPLQMEnY_f4~2HlE)n-*>kXWiyU9 zD1J7oA-yEoag%+Aeu^o-uj&1))I7f0v@@ONv6IS@*atx6Wgb&oVdMBUI}vQVrYHs)ro&sEpj05lTiTw6$= zu_!7-!*9)R_R@yQLXO&5^^ybr)Ut4hcpxi)-w6R{)GeBha;as zLajGhyz57eiPID*u;D5h86)Rz(x`Zid5-8QXSIvDJwJnRhVicI@$()Nfo4}@EOzIi z7;>UL0gNLQwl(BqZ#?59VH zF~Jdf_^&n^XL%|a%0{?EV9MP=&om_1%L3}}6Yb5E?N_bNmlDO*7>jga-7U*d$0>EU z59hs3=Fm`J`=U~{q-X$~y+&NYoJI}VXGP;WH=^`eKkkr?Wv)D23Z_AD`yEyCHCQXg zV+p|p68iwV?nhK!uCbW5NK~YQmtzs6JSZj$iF&z-A*CqI@s@~irX%;I4>y-tFCIMB zt|@3s7zdY3S`R;I@*a$?Y6BicKp0|bLk8OpW>UJ7?5--kRE=f1q&#ShhodU0(Qr{x zO(}eilIPaU-__#@Hmz8+tV>bY;al$qpamu6<#27H=?jU;(>cfH0|Zmhv+t=a{CA^l z+>vJvMDw~ous7tTDb?%mr>PX@O*K_6eU)$9ogX2N_wk7?jaKIBMP*x>s|<5}e~@*-6tOgP#C3 zk<`*k2%)?&z~~=&!=hnt(hwz8N))<>MZ;trbWRSr!~QZX-BBru`&ncXy{N z>7P(rc?i=!j!+dzT;Gs+C0Ay9XqeT$2QZhV>F4F#tOu*35pUo`;E^vIr3O-cq0aGq zD)Ll_7i5@R&2L-=KGU*ZY(J|yGN3Kb3nPeN^kn0E^(1ImGPUB!r2g{Gl=>(B(O8B( zP6n_c5Sip z2Y3Kdi=l~rcfbgg-3?;buiL|?SXPcBs(c`A(Y!p@;g}g*6U`5vK4A5=c&ErKyK6X) zjXoE%Aj{O}pj+WoO;n!bRobU}L@pDVCCQB0T~6$Wb@KRlYb_GQuJ#y@;A{sjwnUXn zA-w~q1FTj?^(?rrF&e@Npf*t1;D_DFtuqJu5^Wts{dkYB20Q|6^c zcQbhyCEYoTp(Rmwdrf!y@nLv)hbw`VW}zx`-((mYuBSrLa1vv7(hLS2hRe?YV%*8f zP(otQg!N^&UfF`58C;JldNMPW?}*o~2EU#~uT1OivXMGUvm~Ns`vw(UVUyl&w@-I| zA*gI!NWPS%EEG-XTf}zDVw5?%E52%zod4K5)8q$@@6wGGMzE-2w_^$C_AMjl4PkUB zN|`-&xRiC0Iws)DGwqq%1}e-6=}()~sw8#^a)a52W@A2ybzO%iDXFO{u`BnvB5Zbb z{od|-$SQ9VWgHo^m1DaqBVrCGQ^5G&VpU==Yy{!(u&-5zOWTPp8}&&f9wa)YKg%gy zVPvq2SBF#lq}*A)&Yqs0;nd?D;whSoZ^gqXw0EZ~dxZ7X4AChm_x@&ok7+p^XG}q~gxiFjfK{a>t*HiWT z{O|jW^L7i7L)9;>xHI|W{Xf&WI8G6 zbGHV^aD)>LIaR|#`{r`Y3AT8l54oY%_|7z9rEPW#M3@snw~?FrxtGAHcLQrYE! z!HAWPHW-I&mIxj7cr#oK^8a7*lZ2kI{j8FKVTGn?7V6l7p$CtHDve6>9s;CT_J_X5>IOm4xdua^ZL;HGcp!=}&w+USCYiM^}u$qP0_ z1&_JXoNulNbrfMU#bhC8SZWuRB=Im1ATt*iLTk3))wnA1L`iWGJ=|G&-N~6&lCYB8 zty}CI-^a0g7>vn~s`cS*#4$?YTkl33DpzICy1T+L1;qD}`z*4C`zkU{7CJ-A!4cey z7{oJx8?i15F&14Cf(sS|64+=KHb(SxUl&L4#bL(DkWoZ`TBSzYq4>fEl^@T*7}wbR zZaOkHr5(^mc#ytHJqDby*j59(2H(|E-LPX-Vb>lFoTqKog~O3(+?Tfpj?S_Md3JZG z27t?a7SZ6E$(Qz`X6Xc?^Hf$G%r%G+j1 z_EuRXutA9|Uhv#1Yzv|9gu`SwzXn(tk(^fi!^CnNSTWWwV-s6Gq+b=Z3+Xp>yg4lbNd2td|oG}lizhU3!>|-G4CYU`C6aA5x z!PZPd5#VXT5NiUMq!3wk37)d`3uB4t)W9>vdq1@;bj>ivYeZR3R^?kUN=-S zhC!fiwc^Rub0_(u9txu#e12>sUx6CK_Gj&we-wO<+Voc?4-n( zcP<&RA0%E0duGcIV+EUG5F=b=<5B%uvinaD<-@IQ2juW29|R}UtI)?HTV!n4^-O7I zjP2L7@71D+mBoOd&5`YKXQ@b}-Q|HqaAM-vYd-DZyp7i}?LorWu8(CsP7_VINV=>M zgQ!Pay{0PuX&>o%CE^xVNj;LUAsr!lt)X>Rlb?a}WJ%JLHvLTFfGc{c&{x}G!4QjG z8`o0(RpXOy+XmA!#os}GRE}byws;7n3FR>ut_!XzRcuzi#YNx_bwwn!V^64?1TiELL9Hv3MjY`*E+pJN4)&RM3P^|4wB*NPKQHROV(kFAQ@ z$@fe@-FbCHlg3_)s#2Jd*abd>39k~y?s#Dnf7KzSvXznGzs?`D;6V~Q9vwm}`vB0(mP|%K=$O6ee$MMux$TER5nM z;X}(0dUu(L;z$tY2!pj|6bOTJJ^Y+MBmCk)b!lHBp$y)u44YWHHwv&nspk4&l*GrQ{Sb>ili+!ZcmNhR9IMH<{s|Ko1Hm27 z$K-e2APa&w8T;uS_^^6j#zlAz9#;YYk*q;(zn{sD*im|U*XU_GX62j8bQz-TI6bksZW)dNG}GNdARlca|)YFhe@ipEFa5RM&;i-1DgqZ?!OrpT(*rJtqO4 zx36BbYfo^MU7xIRu<0}t(V*3Qhe|R$BcoAa634xC_;KP2 zWb|v(upE-d?;sz7ZzYx=7+RdDv+Fr;_l;(&!p0eI4fJ|1ZTkl9-J7|SM`&dGlI!Y_ zaO9?hJAc&D(Y=(cS9F0lly4SMQJ26rSIoxzGEQG2$X-NUtx#m=R6WtGwcS#ZnLyH0 zfraM=H{GRu6y!59G*OsV7V%oTQ)zkT)4{}J--V%@oYikl(FzM05m!W)=PR zxTl~y1D%HLAhI=M6a)hXyys{J2`99Vd+`a6G$HOAd&p`hQN|Xc-(lNUO$D6|g>$Mi zmPxFOK~n6Wsx2+I-$UbT-0lb+aEV+*$yXGke!w_v&j%H0spx&lNt6i)={!2Nm9Ub+ z?JlCwAjHF@ujyVs5gOXtwqGt(kyh>8>9vXB{*;Q-X0^%+--!Nra+IV=Q6N2r5Qa6< zgk3$Vi~}WXT-zPxP4_E%!g>s^%3T(3?_%^+ND|hR$Ft)%ZA&*yYy6t?rhy!H5K6)@OX3bxqXwDSaLUIxnTM!BsOaQTt+%mLM-Q=P+Z!Jzzl@9)<~pA)5K`1xaDyh3ww;+M>Cl#X0K9@ z)Pt@lS}5>ciJzM=S-gP7C6je)biAIz$<=G|U5{ZPp9sxHxor!Awlx!wIFIDp$nfK( z4;-0jGYtBA=xN|x5(OMaLCWr{>t5w5qX7K z%-6nw1}%*%5#H3Y52YdZ$>DYqLejfduRpwxdE@Kibp5q5mTP`rIJ4{J#161LHwf!n zrVa#OB>YXq(kg1F(+54foQ*UrKGvhc&R*b|7vG=Y$WC+7H@LT7^+{CujKApXgeUQf zaadh1L#)cx8PFJX2@P!WOxi_lCT`}#LcvO3dYi{!p8Ud=9SYxNqsBJT8_Dy5c_$4aNn5-;K<7( zXpbhYnb!Gqe?6i(ehJyA!OvXjj6SbcUb}Ws_mn!Cbj*HUdd9mc<;{}<;rcWLhY!9( zqdBlhDGC2o$1zhSJt?+X!vw#>ID+_c>S^=2hp1h0$AV^@v9S2B*2L}`i*k)zYcTP3 zqyME{V zyhc=jrf2k`d9dbo(Zt zh*R}`$dXs5|1QuF`ryIV>yzV(u0SqzRAf)WNQsU2jZ(zy3GdstJUS6>e+aJXX$nu{ zLF$XGc+FpN_WPLTxy#)R-nUawC!~^JZ5^&k?wWj{luiLgy6le2wah0ye{mym3(2QV z8!ln`pE)V-T-9z6^)lPUeId(`DA>${eK=`}2|W>^gPoLjxO-V6(oazXjfk|^&N*rV zySXf-9QZb?Hjr-~{Ay0MHgLCi`D=s+%CEA=vRvyxxa_qcUX|_mEwhu0RL zCdo4Mv}kS14%!8U95%6(yU0N2RO9qs~QaX#EWsuXtj3Vzh=$b&U8^ohIZ?i z)&d`>3gtW1YjFDFbLJ|+vtF~ti*MG%OwHb0bs1lkSgy}1_tq{+v8_%P62+BeJA+|m zig>%3of)1@VYLFaioD9EXnZldpk$a<9ZJ6*yVwrIJg0YLg1@T8rt7hChY?LFq<{&8 zJ^`DTAfk51)VOGoJex6o$>@h#+A>3|%Pzv@U}T}0d!^-ZwFJMavAAmUvz+=*+igpC zr{%&s;C~Z8F0D^IY8v6{yFOEzh8Gj_L*$|UZBbP$!_I!#^EEq)d-j-sZ?}{$! z#;qCaZMBD?7hV_rGy6%NFOxAGy_xi)a9_~4_h$kfeyH~)aNXkJcg3Pf^y)qc^o zlI>_L*$Q5Q@Dp!+2q21xH1KfVR2+<#~S2L-Z2^r>?b?n<8%*waL}hl)<)$bOM~8R6H?`zAf50 z5ej-*O>Dl^a{680*Aq2eGFoODGpy!A8DZc8{^e=5@Q z1s~gOZ2`0+-+NArt1o7GD5q&^&*Wbo(`@87WbbMY7!aw5dzM)eq$MSzUBw}QFi=`~ zl-e#)cp#v*O|ZpC{A?E^jumQ*W*68eAzsvl&m^2~B0N3IqTOh`7t zywrZqVJV?kyZBFPA=1y>&^siwcsh0A_zaWbeP|}FwEZk%pS)yX#Euc?hsWzbIO@~o zAlDW&qfM?@Xbq_hrO$g?+zH)E-kHqPZ}psYkd$a}MHJ0u8P@a`-Fi~a+}~c*9F(9f z+>=b7?X|U+E(}G7rkWk;SzYV`N>(rt6^vlm|lQh~h&@>exav=tozRP$___nrr7eZ!YB(Swn9 z(;t36^BB-3Htfj$qi8lY8BbiX1=ZOyYkVe^doa*T%XZ4P`&E;-orJfUz`jLC^WeVp zm8t3OV|hm<(<=27xG@#$O6dHTE!-XKl}fE&#=t*{-j`%Id78v{6J&iErc`}DdZ$z@ zoGtlVbz`OtN4keoGyhMV=Pt5_CaN!+kbRw*DlXAKs0&l}6w-8#LM`Ha8_rIv&FpPGLPi#REsl2D$Lnm>^96{AbUWi1)oaG#k=?z_Cz=Seb^H?NzLF z@CD(Wk%q9PVZcjcvEuBK2_Z0n3kAJU2icc@)kyw#ATZAv=;ze;+tIau+AUOF*j7fO z7Rke`g%=oh&YgwwU+)*+K%6J?K!)eh zpXkty&F}shkiCWSP|KP#QoII4|0^7Qz+@mM8Mk!ueOcYC;J)FYmOh7}3F^u}tl3Z1 zTN%(nH~Mg)L;ArDGwQD3b{n>-wHZXav^1l7$ZH~Uy=?3Qpx+?crDDFCJqCI(E>r19 zAE)`@Sx(^<*~m zslbt3!b_Rcr=$;qXJXl11b{+LF#$T->Y57tsZOu9Cr$jwbn3&fVR-1ZFpHiK&` z8HYZKZ3EF5y%^9f25J8NTMBe~PgdSWP$2YQZcyC=#0lqaQBNQE{f!_JEi^E`DQT8N zWZYk#fj)X11=+`A?X-Rk3i-Eh!=SF!J_N7$dmzBt_6)MQT`l`;@RKwQ<J`J_- z+mrRU|G4_|hPZzr=YI+4nG)z$aP&yZ?}31vF){+{n@4MhIse32w+ER<$ynC zpa8|-FyAFROTw4vKQ#-0v^Ipu(~@`mp5HKMPRpgwT0DO77!c~p!|Y!8-!6~>_M6MN zou9V-p{mNOz6JG>CQ+gOdxe7<>N8O1cuw&TpZUX+v^;%xI0nqtT(fuic4q6{{nH!t z*(k_t&vW9|1kkMv{{)V^bJm85^wegNYJ=b~5yu0=)s gA(Sn#PkwC1+lE>AbW7TRBON!H@5dRJ8G6M34^Es^xc~qF