From 116ec8ada9592d10aab878e11ca64d4d0d078176 Mon Sep 17 00:00:00 2001 From: Parsifa1 <li.aldric@gmail.com> Date: Thu, 19 Sep 2024 03:41:28 +0800 Subject: [PATCH] add: new posts --- .vscode/astro-paper.code-snippets | 34 ---- .vscode/extensions.json | 4 - .vscode/launch.json | 11 -- astro.config.ts | 19 +-- package.json | 2 + pnpm-lock.yaml | 97 +++++++++++ src/content/blog/a_dp_question.md | 9 +- src/content/blog/angle_beats.md | 154 ++++++++++++++++++ src/content/blog/assets/images/problemA.png | Bin 0 -> 27090 bytes .../blog/neovim\346\225\231\347\250\213.md" | 31 +--- src/content/blog/test.md | 7 +- src/layouts/Layout.astro | 2 +- src/styles/base.css | 3 + 13 files changed, 282 insertions(+), 91 deletions(-) delete mode 100644 .vscode/astro-paper.code-snippets delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/launch.json create mode 100644 src/content/blog/angle_beats.md create mode 100644 src/content/blog/assets/images/problemA.png diff --git a/.vscode/astro-paper.code-snippets b/.vscode/astro-paper.code-snippets deleted file mode 100644 index 869c4cb..0000000 --- a/.vscode/astro-paper.code-snippets +++ /dev/null @@ -1,34 +0,0 @@ -{ - "Frontmatter": { - "scope": "markdown", - "prefix": "frontmatter", - "body": [ - "---", - "author: $1", - "pubDatetime: $CURRENT_YEAR-$CURRENT_MONTH-${CURRENT_DATE}T$CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND.000$CURRENT_TIMEZONE_OFFSET", - "modDatetime: $3", - "title: $4", - "featured: ${5|false,true|}", - "draft: ${6|true,false|}", - "tags:", - " - $7", - "description: $8", - "---", - ], - "description": "Adds the frontmatter block for the AstroPaper Blog post" - }, - "Blog Template": { - "scope": "markdown", - "prefix": "template", - "body": [ - "${1:frontmatter}", - "", - "${2: Introductory Sentence}", - "", - "## Table of contents", - "", - "## ${3: heading 1}", - ], - "description": "Adds the template for the AstroPaper Blog post. You will need to trigger the snippet modal on the 'frontmatter' line to insert the other snipper." - } -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 22a1505..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "recommendations": ["astro-build.astro-vscode"], - "unwantedRecommendations": [] -} diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index d642209..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "command": "./node_modules/.bin/astro dev", - "name": "Development server", - "request": "launch", - "type": "node-terminal" - } - ] -} diff --git a/astro.config.ts b/astro.config.ts index 05a15b6..9de3952 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -1,16 +1,16 @@ import { defineConfig } from "astro/config"; import tailwind from "@astrojs/tailwind"; import react from "@astrojs/react"; -import remarkToc from "remark-toc"; -import remarkCollapse from "remark-collapse"; +import * as remarkToc from "remark-toc"; +import remarkMath from "remark-math"; +import rehypeKatex from "rehype-katex"; +// import remarkCollapse from "remark-collapse"; import { typst } from "astro-typst"; import mdx from "@astrojs/mdx"; import sitemap from "@astrojs/sitemap"; import { SITE } from "./src/config"; - import icon from "astro-icon"; -// https://astro.build/config export default defineConfig({ site: SITE.website, integrations: [ @@ -27,14 +27,11 @@ export default defineConfig({ ], markdown: { remarkPlugins: [ - remarkToc, - [ - remarkCollapse, - { - test: "Table of contents", - }, - ], + remarkMath, + [remarkToc as unknown as string, { heading: "目录" }], ], + + rehypePlugins: [rehypeKatex], shikiConfig: { theme: "one-dark-pro", wrap: true, diff --git a/package.json b/package.json index 1b71a1e..7c8029b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,9 @@ "github-slugger": "^2.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", + "rehype-katex": "^7.0.1", "remark-collapse": "^0.1.2", + "remark-math": "^6.0.0", "remark-toc": "^9.0.0", "satori": "^0.10.11", "tailwindcss": "^3.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17ac757..fb53671 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,15 @@ importers: react-dom: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) + rehype-katex: + specifier: ^7.0.1 + version: 7.0.1 remark-collapse: specifier: ^0.1.2 version: 0.1.2 + remark-math: + specifier: ^6.0.0 + version: 6.0.0 remark-toc: specifier: ^9.0.0 version: 9.0.0 @@ -1049,6 +1055,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/katex@0.16.7': + resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} + '@types/mdast@4.0.3': resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} @@ -1528,6 +1537,10 @@ packages: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + commitizen@4.3.0: resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} @@ -2105,6 +2118,12 @@ packages: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} + hast-util-from-dom@5.0.0: + resolution: {integrity: sha512-d6235voAp/XR3Hh5uy7aGLbM3S4KamdW0WEgOaU1YoewnuYw4HXb5eRtv9g65m/RFGEfUY1Mw4UqCc5Y8L4Stg==} + + hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + hast-util-from-html@2.0.1: resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} @@ -2415,6 +2434,10 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + katex@0.16.11: + resolution: {integrity: sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==} + hasBin: true + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2638,6 +2661,9 @@ packages: mdast-util-heading-range@2.1.5: resolution: {integrity: sha512-jXbFD0C+MfRkwsaze+btzG9CmVrxnc5kpcJLtx3SvSlPWnNdGMlDRHKDB9/TIPEq9nRHnkixppT8yvaUJ5agJg==} + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} + mdast-util-mdx-expression@2.0.0: resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} @@ -2711,6 +2737,9 @@ packages: micromark-extension-gfm@3.0.0: resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} + micromark-extension-mdx-expression@3.0.0: resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} @@ -3270,6 +3299,9 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + rehype-katex@7.0.1: + resolution: {integrity: sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==} + rehype-parse@9.0.0: resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==} @@ -3288,6 +3320,9 @@ packages: remark-gfm@4.0.0: resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} + remark-mdx@3.0.1: resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} @@ -5004,6 +5039,8 @@ snapshots: dependencies: '@types/unist': 3.0.2 + '@types/katex@0.16.7': {} + '@types/mdast@4.0.3': dependencies: '@types/unist': 3.0.2 @@ -5635,6 +5672,8 @@ snapshots: commander@7.2.0: {} + commander@8.3.0: {} + commitizen@4.3.0(@types/node@20.11.7)(typescript@5.3.3): dependencies: cachedir: 2.3.0 @@ -6291,6 +6330,19 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-from-dom@5.0.0: + dependencies: + '@types/hast': 3.0.4 + hastscript: 8.0.0 + web-namespaces: 2.0.1 + + hast-util-from-html-isomorphic@2.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.0 + hast-util-from-html: 2.0.1 + unist-util-remove-position: 5.0.0 + hast-util-from-html@2.0.1: dependencies: '@types/hast': 3.0.3 @@ -6673,6 +6725,10 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + katex@0.16.11: + dependencies: + commander: 8.3.0 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -6958,6 +7014,18 @@ snapshots: dependencies: mdast-util-to-string: 1.1.0 + mdast-util-math@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.1 + mdast-util-to-markdown: 2.1.0 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-mdx-expression@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -7150,6 +7218,16 @@ snapshots: micromark-util-combine-extensions: 2.0.0 micromark-util-types: 2.0.0 + micromark-extension-math@3.1.0: + dependencies: + '@types/katex': 0.16.7 + devlop: 1.1.0 + katex: 0.16.11 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + micromark-extension-mdx-expression@3.0.0: dependencies: '@types/estree': 1.0.5 @@ -7760,6 +7838,16 @@ snapshots: dependencies: picomatch: 2.3.1 + rehype-katex@7.0.1: + dependencies: + '@types/hast': 3.0.4 + '@types/katex': 0.16.7 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.2 + katex: 0.16.11 + unist-util-visit-parents: 6.0.1 + vfile: 6.0.2 + rehype-parse@9.0.0: dependencies: '@types/hast': 3.0.3 @@ -7801,6 +7889,15 @@ snapshots: transitivePeerDependencies: - supports-color + remark-math@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.1.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + remark-mdx@3.0.1: dependencies: mdast-util-mdx: 3.0.0 diff --git a/src/content/blog/a_dp_question.md b/src/content/blog/a_dp_question.md index bee5ec0..9d64513 100644 --- a/src/content/blog/a_dp_question.md +++ b/src/content/blog/a_dp_question.md @@ -1,10 +1,11 @@ --- -title: "一道简单dp问题一些对dp(动态规划)的思考" +title: 一道简单dp问题一些对dp(动态规划)的思考 pubDatetime: 2023-12-31T21:00:00Z -description: "我一直不擅长dp😭" -author: "Parsifal" +description: 我一直不擅长dp😭 +author: Parsifal draft: true -tags: ["computer"] +tags: + - computer --- ## 未完待续 diff --git a/src/content/blog/angle_beats.md b/src/content/blog/angle_beats.md new file mode 100644 index 0000000..fd77777 --- /dev/null +++ b/src/content/blog/angle_beats.md @@ -0,0 +1,154 @@ +--- +title: CCPC2019 秦皇岛站 A题 Angle Beats 题解 +tags: + - math +author: Parsifal +description: 一道有趣的计算几何 +modDatetime: 2024-09-19T03:41:24Z +pubDatetime: 2024-09-19T01:56:21Z +--- + +# 目录 + +# 大意 + +> 给定2维平面上的 $n$ 个点,然后进行 $q$ 次询问,每次询问时提供一个点,询问该平面上有多少个包含该点 (指询问时提供的点) 的直角三角形。 + +# 输入 + +$2 ≤ n ≤ 2000$, $1 ≤ q ≤ 2000$。 + +# 分析 + +从 $n$ 最大 2000,从而排除 $O(n^3)$ 的纯暴力做法,考虑 $O(n^2logn)$ 时间复杂度。 + +考虑极角排序: + +![](./assets/images/problemA.png) + +```cpp + friend Point in(Point a) { + auto [x, y] = a; + if (x < 0 || (x == 0 && y < 0)) + return Point{-x, -y}; + else + return Point{x, y}; + } + friend bool operator<(Point a, Point b) { + auto aa = in(a), bb = in(b); + return aa.x * bb.y < aa.y * bb.x; + } +``` + +可以直接使用 `std::map` 维护,并将 $x < 0$ 的部分都映射到平行的另一半部分,从而方便直接判断平行,并且对共线的向量直接判断相等。 + +## 第一部分 + +先假设每次询问的点 $a$ 一定是对应直角顶点。从而预处理所有点 $a$ 到点集每个点的向量,全部加入 `std::map`,然后对于每个 `map` 中的点,构造对应的垂直向量`tmp`,使用 `map.count` 计算数量,时间复杂度 $O(nqlogn)$。 + +## 第二部分 + +第二部分保证每次询问的点 $a$ 一定不是对应直角顶点。我们考虑离线做法。 +对于给定的点集,其中的每个点 $q$ 作为直角顶点,和其他的点均连出一条向量,将这些向量加入 `map` 并进行极角扫描。 +然后再处理每次的询问,对于每次询问的点 $a$,都和 $q$ 构造对应垂直向量并技术,此处均与第一部分一致。 + +```cpp + // 询问边不为直角顶点 + for (auto x : p) { + mp.clear(); + for (auto y : p) { + if (x != y) { + mp[x - y]++; + } + } + for (int i = 0; i < q; i++) { + auto st = x - a[i]; + auto temp = Point{-st.y, st.x}; + if (mp.count(temp)) ans[i] += mp[temp]; + } + } + +``` + +## 完整代码 + +```cpp +#include <bits/stdc++.h> +using i64 = long long; +const double eps = 1e-9; +constexpr i64 INF = 1e18; +struct Point { + i64 x, y; + Point(i64 x = 0, i64 y = 0) : x(x), y(y) {} + // Point(double x = 0, double y = 0) : x(x), y(y) {} + friend Point operator+(Point A, Point B) { return Point(A.x + B.x, A.y + B.y); } + friend Point operator-(Point A, Point B) { return Point(A.x - B.x, A.y - B.y); } + friend Point operator*(Point A, double p) { return Point(A.x * p, A.y * p); } + friend Point operator/(Point A, double p) { return Point(A.x / p, A.y / p); } + friend Point in(Point a) { + auto [x, y] = a; + if (x < 0 || (x == 0 && y < 0)) + return Point{-x, -y}; + else + return Point{x, y}; + } + friend bool operator<(Point a, Point b) { + auto aa = in(a), bb = in(b); + return aa.x * bb.y < aa.y * bb.x; + } + friend i64 dot(const Point& x) { return x.x * x.x + x.y * x.y; } + friend i64 dot(Point A, Point B) { return A.x * B.x + A.y * B.y; } + friend double det(Point A, Point B) { return A.x * B.y - B.x * A.y; } + friend bool operator==(const Point& a, const Point& b) { + auto dcmp = [](double x) { + if (fabs(x) < eps) + return 0; + else + return x < 0 ? -1 : 1; + }; + return !dcmp(a.x - b.x) && !dcmp(a.y - b.y); + } +}; + +inline auto read() { + std::cin.tie(nullptr)->sync_with_stdio(false); + return [](auto x) { return std::cin >> x, x; }(0ll); +} + +void solve() { + int n = read(), q = read(); + std::vector<Point> p(n); + std::map<Point, int> mp; + std::vector<Point> a(q); + std::vector<int> ans(q); + for (int i = 0; i < n; i++) p[i] = {read(), read()}; + for (int i = 0; i < q; i++) { + mp.clear(); + a[i] = {read(), read()}; + // 询问边为直角点 + for (auto x : p) mp[x - a[i]]++; + + for (auto [p, y] : mp) { + auto temp = Point{-p.y, p.x}; + if (mp.count(temp)) ans[i] += y * mp[temp]; + } + ans[i] /= 2; + } + // 询问边不为直角点 + for (auto x : p) { + mp.clear(); + for (auto y : p) { + if (x != y) { + mp[x - y]++; + } + } + for (int i = 0; i < q; i++) { + auto st = x - a[i]; + auto temp = Point{-st.y, st.x}; + if (mp.count(temp)) ans[i] += mp[temp]; + } + } + for (auto x : ans) std::cout << x << '\n'; +} +signed main() { solve(); } +``` diff --git a/src/content/blog/assets/images/problemA.png b/src/content/blog/assets/images/problemA.png new file mode 100644 index 0000000000000000000000000000000000000000..638042ee11c87ec2783499aa3cd8128bccdd6f5d GIT binary patch literal 27090 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�A%^4#KTF(g5GwD$lde!F7U!6tJo zcBGb~5)K?eO4aGQL(`OvDZ}ec+*_HweoTf;VR4lK%93A9f9eMw61_sayxgM0so@uv zR?Yqdh*l<eFl_|O&{2FykQr;?{53|aykw_)D4LHsir3H&9ce0TM(x?#+k{yRdir9@ z$@h4^#FHZ2%Q<uYEID4gj3S2D$>!ArsJ_Jxzo+=*3{Oyg+>r5i=~}rcmoscHqS13p zK^`i0_2i)n%9j_;j#q_JxVFZTcIh#SoMzBpE;JP=S8a3<XJs?{<yj`iE%lcYDH59| zidbV;ed|^-8kEryyijbLle79;nYb-=@9izDV&<8fMN*+;W>?^cXJpKxcJi26mFqZ^ zwEn1uJ&CFrfEL2@@}@MmR58Lrb@-W@RF#(@X$GZcv-f5stzrj|nrk1}cNO7HD7HIS z*N$9IWSwN5xz+!nn6feKj!*VAZ`RQ<v)SaBJ+M>>jI~u=-P&6b-Af`}ICNKj*VN6a zO`-YTO{YF`45cRd${nZL`}$+04@07`8_E!coA+5)?Lyh(@`OzL_DQm)Q}+=uzHE|~ zcV_Q-Ctv8yRw%w(BJy`i-5`mZKg}e(Y&5GK963PAu^|#}sXm{PyoH@cit@qWta{?^ zamg}ZVO~~-+^(rTZ|;ZR-c^oI)``{&ufqtf$wBuG7)CS{*MY4u8vJ0#%kD5Yj50U` zY}5~7iX3y;$HluT%{V>Qi<Or!X2wf+I|D1-Vdc{uc2ACBAmv)S$(C82mT>9Qook|- zvX}+4O|3JM+IK!%1Dh9N;g75^BTOK&^31mj2F4$9hU4DIUL15F5@doWrn@T#Vx`ZH z2ubM-UbN^PFo9AwxZrY?%@(H`2GF3pKCP-l-06kcj|q<2m@&QX&~`1Ss7bC32lK|v zzDmCT4xwlrxPtHt(<F?S8TjRwk*Z|YmgbJOt_)MmWJAyA#Q9?G!Kv+?*~;=?U*E2` za5M4Ck%SBl4EkNdg^-kngXk)LY{}v~e3y(Z(@oN`H{O)xmK1t#fp6H}mx#8Sgj(qa z$mhypmhOy<3>nrQ0qIa*=A>K}wrVm5VAR{a3QMg&8nz8CUNYQEXZ4YL$(no_<BN8E zAJ2n%EcKGwweps4aOk~=!D9b9%Ha08T&Tc6gXpLT>DMK8d8IG9-k-&+J-2((-@tel zSt{!Vn0uP<^L?h~I4MOJ07bN37nrTJm2Mw*F;qg~cCMDf$%icg3$zqwq^RPy?RRe% z%#`1r4ivomRp%@&G28+p17UXglZM_RTmEh<^5uwW!=Z<SP})_MJ+j>Pwif<P5+mO@ z0z1M|CBvu6>bXBhfsD%$=YFi9I7<qy?bvi>U$msjo#3Gn>Zn<6a^__A-jF(0_}*0x z`a86cSUmy*5wtl{NE+XQZxg0(+nevx{iCJP=S<#4#X+@`vtg?{&wON5OL|Uyt>>Nw z2!8}l5Q03pGb>Ebs`ucn;*cQdYdb}8-YiiQI&x+1R09bx;l^BS%T$3dCpP~2AZP!h z%?c{S2Y_|_*b>uamU>UIJ*(AslY4#9Bg-QuoX3q?=T?Tdho#Q8{P-&O_#3npm5`WI zS;5+KCz@9PORXH_TsXyhwh)jEVIVx-2|PXq5CxXET(LGew+ff{X+jNkyI9}3*{F3D z|2h!HDu?NLNqxTA9Bd|(ziF=QWm}KqpJXtAM^P@!Z$4rw2>@3_w=4UzS;sdDH6N@X zi{rro*<%p9qE3Afrr$a@f~ZW)+a>H<p-DizK($G`k9})NR;}Z|!R?a-T-Ll%qV_KP z@?2`eJvig&GU}(RVowSfY+mhfhS=!W#CaSl3Jy_{obTWhn9c#YA<ei6+t7UUEa6Et zV@I-?FZx5L?}y~f!Hm(JU1tlg^QA8@TZr_$ee_WKw?LoV;k^_ab(1q7MEX%6do{hf z+ln8OhomqGKVdI3K;oAEhU)_tLmyBqH+uTRtvF99c@jdX1>G&x2J*wLbEN5!NLtZx zDOBR)>r|~*iOru9Ly3g7##0RZ;}_NZ0{gq{eW#vvw*1H}3AOg<YfoL+eSf0zJ@zu# z`mUfaMNp)U$6`+(?hvN;xgUrG%X{e!Uhh)C0R9@qzYbquF~!1LY;JedKQ*BZ392(- z8oUZ3TPhi+@&07P3+v}UfS(sSiqxR+lwn57kBzxsoGg95D<o^c0)@n8%OKfoV30_6 z5yGmUnt*BTZ>$Yv+Evpo)=Z8vwPabzb5@Kws4<vJQsakdhB-L8K88mY-!XYv4HYt0 zUuo1jDVz=ExriRy={S6Wv48Jf{wcoSZvpV4<f#F?JlX$yr0<6yki-X&#EY!ZICL-p zl1D^2!kM?u?$Fz)_?Xnyl^$0jI&fW&TRr#w)xq@PAj&|>@L9^h?daehG-fw=n?lt< z>soP?GbctpDO|#DZ5LBiasSS)QfPteg6k@iN1Tx}1|zHS0T_^8@{)i0u2B~j<mdq0 zsiS_D#Hyz^WRm=!fvyPHw@Zvn<O5bGz*#EsCRy3>&=up*?ox=ZRe`V5Pc7|khnfhZ z;Vt0(G{tU+3v)si-&f0jLnK~hn^RQWi>Hz%)Et-$eQ<xT?D2+f5~^<GWP_IA_eQ&+ z&-~MNx>L|@p(6bhKd-t9^m-^BU|f8`*#w`8xK|r#4FMgr)QCc1+z$No!dO~1u=Vbc z#K@iwMei$rR?bZc_>cW?wEYJir>H{hr@<8J1Ar^E;^7t9cqoRT?s*Sz_Q$=@a{8hD z#-n7?!BiQ_>39Vb04;OZ>5`x!^#HDC77iGP0~|%3j*zL3-~bJyhc{*88aha*hj98T z%2c;V1K5xVH58gqrQ1N64+lF))4egRdgRMvRbV+)Ek>=r!XA&I?EOcp9w|M^!K~^d zm=*D{KpOc_%OBTo^Td}5!z|{y&j4pcGJdhtPU)4zNC?sb`-^ERNa6BU-U8mf7#ZQ8 z-ewa#pcS-V%s~ozcju6s#sU#8)D7*y*+~vdj3i9TLndK`_<o^aVQnJ427_ty1sHSq z$K5FjVBP$g1%C}@8#ctzx`4w%UlQl_!{fSO_FpnF4K7Uazzi^G*Mw2)Hf2_Jf{_OX zP}~LDVREu);`C~I4aonr8cHc>dO`c#eB!+JxzM9%{Krd>H-^VS-l*V)>luX;oPfn& zbdX{R^7`Quu8OWC26OC>b$~-oGyKy^Z{4l+P)M)yKvGW7wYY|U$T;AN$hsLipF;&> z&l##UMPbQsE*;K=_Qd!%!y!3sxXU6Am!mN<Ot`(8N_#J7@n6;>>sC#IKHq?Cty|AM zPtjcoa$SF(CgLfz<2a+C1};QPwQGH=Yk?)J&ty=jzkBt`2InMk8p9_WymJ8Iq5&5T ztPLk1jH6cyRY>kgWw1>#)KJySUP_F(y^t+FgC2pvENhQeQ5zBI<ZRFTd9tszn2e6o z54J-No9QY@Lwt>Q-&O(o`nX}(9HQ|palSAt=Z*0>aVVP@G?rg^j=j8-939yNC^t^= zPd^XdzeSFI5bX1{U)8Cg)t9Z1tIGBLi1v#3r$()!oKIQ^rAP~kdBL-9gmlgtM<2`s zHa=)DYJGfZ&)!v-R>XoTqHWF^U@zN}Ih&AKj^{?L^5xlmn=l)o0HkpucaI5G7<HYS z^6g}U>5GU%*@n4($Zf)YzM9d%1mGse^1ZXR(0k+1C6S<m!lJ<Hu8p2`cm;Og2<ok1 z%~q5NANEM+L-5CqbNtg+zgd+wV%5Q0J53_>xO8zmT#BF??>0UG)z~N&#*L9dI{LAj zdgE(W+Z+Q)Tmx=8k4TJ+4#X7aq79)4aDuHz+}eUlA(0fm9Req837YwQ@iZrO0%Ul7 zj;(JS2Xq>LVg00DhgVc_aD~Anj&2M}na1(xz#apt2MM)M54OMZVshrSE1q_?n9uP1 z<z4cn5N5+pq|sS<9pHx4%qNB(&cK(FfR$V^KB-1X@Aus__{nns^XaX^<;GNav%soc zkc|{Ur*Fn@zxEimg~udk?teI$P<#sNWN^cvksF3ZdNv2*d-@Ul>zoBtPGo?C6`V0? zHtKW&HzsckxcuS+xUscAxSgi))OdJa1tONQC!gzvjeRMf_@`fgwlqm;xQK=}#<9UW zdq~ukB;q}odvVvO_1bX8eb*A`d6f@z_f37`EYc&N(?BM7g2KF>u{B}-;gO*|&gne} zG7nxWs(Aa(ezELYUZ7*^E3YjDgi=YI&?`XZEr`V9Tg4@lzqDq};O<L6*lvO_hlMXy zfQ@%h2LfCvRBsZAFCOO9Zh&p1zj$Fxp>BiOsQy}Gc(rA7fx$Ba78wE{O)Ng|!?b3C z622a?xqcs+<EzaBiA=21a>_|4(3WQDo4-|AXp`8uA)-yZr&?<M@yf2VSI$hwX@|d3 z!_SkMt3HH&&u=l$i2YVyW;N<-K9z*e9mw0z`^b7CS@dbJPf!W+gsjT>LwGM<ODg`G zvZ;IyRO@uIhi?a8PAw>bzH9juFLl}oS89!8|F8qG0H185*8Qri=gb9HAsN=I-%UvE zml-W#>mJ?S)zjIpGx4`3WPtXok45+p^QjvWVM2GNKjLN3J{+HC3kNe}d7j*|8>Hz? z?w71F<!2~Kh6XcpWu2ba=XgKMu$U5{JYvRr+J;Y;;QO<;mT!5V%RIA{Rh_=5I(NgH zIgOv6G5<bzdf53*cv~2**{J`<V<o26jnbMRrdxWzoX6y*+vfy{tAMjwuc)%=X4Ezk zaTs)~Zsej-s{~(&#Z(PmO?LmH6SJ?fTr$Jh{~G?Wbj;X`X5DX1MD^+xywb-m7r(=n z%xOuD01bLkn<&19#7wS|bBZ?Ft&<ze{&kWmCLsDjIX<_{aKy<#?2Db*Hy>N#`ow{; zR52?H*_cJQW|a<6k1y~2R}LD9mF$a3%B+)Tt=Kz}&$}<7R{7!MwL8Q73w#bUhc8|F zvC0hE2Ns(~#qb@YVU(tv{&QsMpzcd`FS?&4H?gI(P1$S$cacZGZd)N<>Wahh>DTk$ z*uvRGo{DjKA5Sj}S6JRC_UO|wJkRB89%t|AK5mHU!grZZ^)o4l-o%G14(V)TSvBiY ztfSv?p@+}ES;)9vq8Z6Nj<2C+ad>dJmv4DNPY>U}g+(~dP<SH2E^0hALiC<a#1Cep z=R<d7Iou3or7uJ>MJ@b~;zunY$v$*AKjcTLipaF@r8?7Vehk^KRrn_14UCn<jT>mX zO>dPg^*dI+JECE`rkCs6p!~DBqr{*Xa$N-h-&a|EQdm%4E~|L7?Y&xG^Jl1-zY{1> zOKmVjd9G#V!95&b|Bip!O<st-T*x$NVHZ;~ZTxN|lktLD`eyXDeZFs|;7iNJ31i7u z&nZ7NFu9*Ke$?*k62NkJJ?aarTplm8vR!v@ClR0hs9>;E@HK(*<5GV{WA2RjZOi<C zM`vSCtPm3Xku!M9lpp78TClK}c~z?BATw9md&HBtc9c97ZqN)Z#CuRBHgMreFy%&( zMn<cT`ISk=k8=lw?`Gzbr!t8u0gv#s9Sml|^-hLDWTi<sYlq4T+bx|O-_4MBGcUz$ zw(W9?i-@$CpSvS|v{a&R+L<!&<aB!Yt0YhFg;Z7OgV45j3&Mjg&$U?8w$I>(&R+eN z7^=fs+$nT<U9FJrU@BV3@!%%U4NWKZDYAl6YgI8l35H~w4vO`W#<SNqs!4n5XNL9Q z@iaER%!gI^+cRgygxk+p%(7{m*P%(M^QjTlC*BDY*EKDlb1vqz6~?ot=(_&M<N3<d zAtOexyt56@VVgH``1EkXaYkwUNP)4i%{P)@ylUO;4tk>qJ9WrMl#_F8C-pev<7u{D zi;+ZwDj8nay_~r1O?(@Mqi;xH`$IBjnRN$vi96<GybVk<b)0V=y{<tURL`sz=e~P- zU8eu{uC%Rwaz|KUXDkHuoSR#nUEv1GT7K_65^GEiI*Lqz8%=7Dx~Da^-R2fO;v-A= zXL~zC?*x5@?y@<qb=fxOhvpJ^PPS#rF<XVOkKSxF!eGkvs^S`%-4eQPvYu8TEPosK zuSb|JRJMW~)56mHxEOj`V@BgCY2keP%&3=Cz4x-s9oW$Y@50slQ}d_|2Bz+6w%qxb zY&x3h+auiOzrJzVJCfY8*sfY`FgM9Y$Ub5trr1`3d!OuH>L<YNL|5o9l(>_yp)?$0 zOLhDpH{rc@FsB@+8T*zoL4Og%+;=;1ZPo^&N+MTJ7D&jCd#)nQlR?bCt>p@FLYA#= z(Icdax+v0#sP}}{c(h~K5xrA-C-rh0kLgwOV>!(4y^3;CsIw9}l#*7(V4S5!E{_?A zG^u*6j>EN+4CA_|F}W&)M8iGg%=M1Z24XgBEn>%_{TS?eJnM0|=_i1VMB`%y8~PZ} zDqGRs{-WbGJLWg`u*Y(}^XQBy-SIg@^U22jRi4#d^?qDEg4<(EDM~K-LibJuiTKgg zvIMKbC3uS5^iFkqd`>nXS9wn!BpumZuFAo3l<Ih#Hr2$J5-0w8`C1#STjxya_w|MP zr#J4n=aO>R>wwQG(yoBdMd7j_*u|3_PkhlnL^dx+7sjw<XaJ+c?VJl&Oz}0-*QJ?j z=BZq<Cpd2T+3dd~-aLD1W#19oxu+Xs)*0+lHS3AE!t<;@SC46M-n1?-E;dMrr)1Hg z96NsHrDa5ga~%83MwjpCn0Gr#q_gWzW#x-0H3+)r%QwxIo;&5mDJ1+MdACB{-7wx} zCqGxm14=G;7nOoOuRXh8u3Sc@*F{f`bSFuiD4V#phrih~r|XDVN?TrAfAWm#0`K^< zf!DF<m(<P23d>SsV*^sw1`FUWHLVsBxp(g`>gwNI%KP1r%3)5#^5nFs_UCg%>~cN6 zr7slhH4$WJ`RqGweUn(}lk5CgL4)!eGp-`iJ(Vr-2E~c1=3ai9Zxj2T&b;pKMsDga z9jeq|aJ`Sn=$u>EowZqy%)sY6{<yAX5$C0!YW5P_>C3q8Sn6uesTsyd8aXEuJgngI zwBvX^<?QLRN*%eTT;fl4_^?R1iu^_BxS_2CX?FQj{FXawRxa?Z7wj&-kv3Y?5Rfrj z)#7?`WxJBhjW~8<SuukVNg~ca?9J-SIIDXyT6SucdGX0z<O3(q%#=VQ%D>tD<R?R_ z@pfaI{kjjLrBht}Bm?xUhay}uIK~vaZSMqAId)Y&6BjtiP~fau^}}b1sz^&Xfwo*j z<K)9}1ajzc_zB+eFMW}rvTh+GuEeysR3+2xgu<m~8xq&|EZ1pNTft5232XgsJK4A> zLEccb7PqXSgV%HSdJRY(oOFW|J;bWk1~6nDdyf_wO5kZ$H$*2K8|s}4L+k=?q-U08 zW}H}wGMbH<Xy`aOqf)e*F6>R+oS;G^b6Gmla(rxp8@>7lX4@TKp5!Agzc=lCqf3r- zgy+ubLmwHpT!jP74(nU*+!IF=aI8vM4M|eHGMh65<@TGo57@F%tYhz=pBS|TB|61n zNsPEM>iI*p+%N5ZPNMGI5W7o%!Z^x8*?`T)?irc%ErOPy2d_a+C&*TFvU!^JuIS;< zC-vGn%xm;{+6p(Ci{;zhT(#5L&vkAkw@=SWl6BlN%&XIeAm$$_jvl;3jnZ>oRZn;A z87}VO=r0lNE65%_SE{<K(JAa$j29+G+g4JLJ@u($B$tp-=NqwIw<<&0x3D#lC(1SB zrLVb$CCsQ+dJJ~4nJ!4tMDB0Fk0n+VpMfXl<ynjCAV^C$<v3!|y0Jy-i6HaCh3^@I zU%BiqGj^|2zPe8YuAP9U2T+*_5_!NiM~Zg48F84!=H2||^R7g-ckp`qnW)Jmo_+yB zZ=<=BWdodElaO?~BA+&dMi&i;!}!C5gGFj6`SVIWoERD834KRXZ;1xvXi3QrGJVlG zmbXjgpmcH^a+nY#hgri+6-tJ%Hr4Z$5M;i17@(Bey={i0q*g?<s-bfC2|tF0i6Jy? zPbBrD_K@L)uH0Madj3PV)`zA;xnVtEt=u699U(5(Y@;Zo7kypLO30H&@TxHqRcx4u zPxqaElz4aXKZug}7<_#Sp7K-uP(M;OY$#if99OpL#3#cck*mW<dEg0PkcSCBj9Hkw z+V$POuULxbyW!A_1Fw5vatOU3p@BSW1j39&*NvTQ2;cqlSvC&v)!#9bgH<Q6E8)M* zB$f?w*6x?BGlr*a@UHh6x1p~%-5C)27Q&Do;H*9DUAOCBzZZ{W9R<36RzI%5fmU%X z&F}>UPD948p8tzNl!GjNGcpYC&#i&y8d}jX>=!?vhpIrD9b2`meQ<#N-DU5D>8sq{ zir^KHr}{;Ao!<z;6UBE@3<wNGlLib>70?uGCCXSIaD?SisQ1G3Z!h24|5>?#<?`pU zp|a6}pEREu`f==&IgsBC%gc`14Xg)3z8ls7U*Ngl4(3{^n%%eWA5sIhngYPgN?Ffh z<Y0+G;P-s$J_(GI|I?`BpO9{4CQK-L*mWYWnZFzUI75k&VXaKvr_S<V)~c~;zR5ng z1?A!2-xGL3nfUYCc?&7{q{ITRVaaSyvpcMcIqm>2Q~pRu5p4H$nfj07-8PY)_0I<o z^zVdWp;L1XQcp^pUPbeB(7>-NdkRw*9GTft^ES+D##1lxwIW}vz6-v20f+th7(D*y zk2q$(8Y?8duj1PX>+YI2_MlFAfU*AS*&k3MVLFC4TBT}jVx3IwKm6<49ECNYhMUR< z_MjG#%8?q<=TraZcLe|ZjsOhezwdVhoAA%$A0b~4ID`E?5ck&b1V>e*@wEz`{B|D$ zCn_Lm!EDe2pAhpg6!~<D1K73xyq9nRtTPp1Z-MVtT;btvR%Bw)5DI)BH|KdXxDDdL zFYvT<-7<kU^GClUE%gQr@~|3tNdq&FyO9EXGZ<{ziYM>)AW!qfO|8M<W<p{?Bt*72 zaD%nVrc|AUjROF^?rCTqx(Z<aY?6!7uS1EqbA4!^wj``G?M;UV{=4BbjY6WA^-Ut6 zSjw)shpB`Q?c=`>m4~?0+O4d$%^J{)NWw4f4Av9bbN8D0loe&*P%C9Ymhk9rZ@H6i z#0Ok%A4`oWITJ8~cQc);U+s5rqDwNgtJEgEM)Sn&DRi)zUS;m#$$`A#X~O)tVC!kS zoa%^AlXmHfZk>aSVF`-P4HrAt!>38aZ+y0m%i(p!S8j3tPsNlkz5)HJtWf4cSV3mB zB)B*w0+dZm2=I)hoiIOzUu493=313}i!ib2t-fhoGh3bH{=g-5pDfEaz3~$YdF+sI z>|>?8eoo2G_kQ2-tIVh3@fN02t0_8XhaIGbZd$?9Z`H%K+bU!F->qdrgFLAE#<v+` zFW(z+cz?|sivfsdeTa9HKN520$$~kS_W5zu<y8f(X)2MKQQ@QbWX<!kmD4XN^^&ao zsHu|_x#|mSK1aQ8x36J-zY&^-4n~Uiq_HmnEHMS@VS};CT=~O(x&1YtEts{H68N>y zD45dzaanCe7IQykY6Ks$#g;e9Q1XbU`j-ny-O3LKr9yWw+wnEwtUxiYi0{WKKJDvm zQgH9TH{;bdXGLe@Uv8vPHs%h;6?<WVZiO&Q(Dvs$a*LM5Je^2lT>g<b87xH<FYvXW z5;kZZdaA?V;4tp>>lIJjmNu+U$+?-=WK_lBKs)vAd#Fb8^vj_8_>fK5r}fKwiUR~c z#Y93#>U??9F3J5>Nzv^~oP?}09B;X1N7iep)CE1}7W};XRfT&ScIuUQj1Hz1^(ANu zymH&d7<LM1u9U{>2MSM0(~&RAzE1MfMC*&2*p_|2kg9cI&D~0#TppIHLX-A69`ZF4 z|2M?%Q@1Elg*-Vt?h$Pb_o&UvY%5~A_e*IUo<E##U1D{Q?wcZa`0%`tr6J8w-63T- zkK)jNKy?{zX1g_GJ;%vG3up&!%N*9G$k}qN(|LE;f^|f>UAO=JC{xU~%XDfA&-2XG z5~rH`R`k=O5Smu#b}WZK$9CTQ67|!1qFK=b?N*!v)obU!y?G|b(QDzoDeIjye&iPS zGCZTG$=+C0tli*DlnTpjYuBO!zfHNw1P?2YxnRW<?NOL0+v0ig{e6PTZ0%Xr*$8$o zR=#~LXOlq-LEh8ec+en6-sY=;1b$MsJz-+kW%<Y~9kuMjZE?fHNkhoHAV@+sHOklh zC?T|bI?o(&3*%saxf*Y~{D+@XwYg+mP4LCnQ-o!W1s>>;PM0fhiYS?qLzc9Ps%ZLT z4rQYyjc$=jey|^3V<FVUw}zu*3&HUwdtr^`d<RRzcXJQ-#gXck&ntxlVq@v^;i<Js ztiuGyC$y6-?JaEIB8!98()7P5n{q@K;_}a}BR8GfVU%CWU><&F8uVmV)a*#2;#=l& zafz7mkI5%mr|r5LlHLjEypz~#;jXw)#&mSg&&zZ=67tPGHn#PCK=Z1bma1-)seYoB zZlwB9a{tc7+a50%>XCbdhJ|0APcl_eXfp`rEW`6A-ao09C?v!vNLz>VeIcD~cS=Rh z^xMbqoARDSY7=3mK#sFZwg2eTDldNQ_H2(UW-FL_T3Jr9nD0}X#__cF`N}yfio>&G zdlqjOYWDBM^{}TG7*mnwd^tl&H7Dq4deQW<$Wk_ePt+@yY{$Eba5aHK{q+?*N4D)F zu1w_g@YU%dPQ+aH^VQk8IOxBP!%*ksVf!psF_lMw%W`)Jedfn^Ml;^&8rraZYb9#O zkW1rVT_?OIz4)*n9V5fu&SSdz)6wtCU3Pr`L3}GNOXep9wcsOqT^jOCJ6k_WXIk9k z<bHKmgOhhfkik}+9r>D3HzRVT#kVJVp~e)N-YO_OvyMH%e(d^k)8w7JV-BakEx61J zc^)hoXpZ$8gBKB=R3na~i&X^{msd}aZk)FGbY@k!Q|MXopr#EGM}^0v8Fi8-N5qKg zYVB_JIK6mkOI?$~c+2Tbv4kQMl4+BJ_uV>?3#r|zB$BAELspm<(fzYsYz;pa&0B-7 zr=_afs2K!b(T;>l=J(HZ)~Yz#6rT-U0CBpjrk0t^(&=@PACG2Q6b|l=jb+dFT2|ip z^`!6`+Z(|`9X4vuc!qfPjUUr<|8nn<ls(7jY$fKM-;Xa!Us7>HmTHHM3RkrYM68!; zX^ehc$ul^*o`VGLEP<XN%~4LISu=Qv>r4g8INo>}>}bkY7GfOsettm~Z}uY7!AZ<8 z@$?0u@u>Vn-k1+FCc$wxmA(+8w-s@2aGEZ-WN(VmDvY?}%BN3`s^U4+vFf0>-QD$P zN1~UV=UhCzd2r#npj-X@Fy8Gac?6e95aT1h=ia%_D)N&PKe|Jibf<wUB$i3f^<tkW z$Qk|cIp%7*DUXosy+WbbTO`urIs5(u_8gCfNSo>cuYsM1fP+V$s(K0I^i+qUsk?l) zuPY<nT#w7!&pat^p1k>Zv2Dn7+Z!!E+?K@E-wz5Vkch_>Y>vi3iv4w!!g1aC&jUI7 z1#37YJFyIDoc<jtw@!P;dnuJ9w8FWA8+$P2f}HI8rxUUbGK=&a%S6lXe%22klXEHm zm}c=|f_`HQK9QZ|f4e;Ch!^)Vm0d?-Nj6&t*w{EUk^e4$!aA|dJPtfRcuY-GDqGIW zwXIK6Z8Rg5A61y6MZ1};7?ZatXzb<WFvg#-=xAbJhIM8SB0Xv1Q1rvOm})aL&JB>! zgZdHO2KRb5T+DByPi2~KeMi;XGR3(zzuR52{6V0300ZYJg&o^*ng?@`rYjjmv$E-6 z&9ns-UDK;&7(4Y2B(+8Mkw}_Zvrf9c@;omRg7%QB-k6`La_JMqepM-dI4JmaS)_X^ zL*dd<)AIZk)~C8SIomZpAB-EmIPm^4p%lJDr7Skm6!6R2q=sho@}sx)^UQK$Vx&jQ zhSEINaVY5+5JMh`20dG(X{|fa7qg8-3O>SKCX3;Dt0hHCWr$ID&cFvX{7h-bt#pfW z8P_-MIx+ec?rHX`i=-Td6=Jx#{jy`|xhk6`#!aUy?4j7D%SWCTmBKeY7)+NI)v=OT zMn-v>QJW(9gnJ(inLIcujlFkK7SG8c#9h8~L(x^o_t7WTtZ3IgY{OwuMGFv9?@#tJ zsaT#pDIsd=a=pOoi;j?hQ)|aMTiHWmp{6Hs_>VdVMtNFO)_h%2p4g$>bH=PL(5}-S z*ORV!q*S&KN~E8;<-ZC!QLGaRGfEf@s}!Bq^Riq;*7V4}YS!zS+hl2)-K+C;u63y% z5WQ`UOvCisWVUx<ozY^F6U%Up?;YFMV`F3En4FY~HyK`B+`=hwvvh_+=~O~}<VRM{ z@-lne%T?RD6rzcK5^9{7W$d=-4{?V|*QLf-yrJ2B34HuYpT@yIG}JEhZsx+qf$I}u zJv_mEoS5Slw(Gbp(LDV6)b8ta1+iUZfki&4s7D{pnF*ayz2=>x|BMq;uJ3hvne<It zDg8T-*HvfM(^ntgAw(_YKEX<=EGX^`%G=QSjzN&nJi;hf8oA+Y*V&QqrHnT|T>L<v zpKrdGxl`YGdEQ_}R6><%kJkI-=(4L<wO#I3656fW=%x}*MR5ms1qZ6uVsoRNyG6I) ze}0$E(7lcBc5IA3^pF_z%uG#!ho>lFN}qGxItFjf!v?ACo%*E?^odL3MMJt<*HQUb zcCJyl)F>57+>*`9LCWDh7OTMbF(Ehn<57W~j<TGZWX8r$y;6}(Q(jB`{?y%}73WT| z$6TWngycSNq*_Q8gnMa{KZxUtCaAKQo)xjNGh4h;T%R}}<HF??lh-aj)*m|U-TBbq zkR8s^QCc&_<~ChjEdAaw6}d!VOY?j2JS%Kv^O+2(a(S;s@8DeJG5Y1z-cAVuk@3N0 zeCgw;GAiGP57^$0ByU@#^r^fUo%>tGF1oG7X&m*oBPTA8NL;o;sAyzfz9<G~d2h{{ zGE&3on5YMz*Jc%uP+!Wn+Z$=WxiL66u=+zj<HWJPJCF-3!+gXfFF(ig`Q*AlU)Cwk zRo$;vsXiW~O7Tkj<geyi$3dXQ6|NW56ko%MVcz|)PDewOATd$?h4yIu8XXa(L)BfD zej6=U%IMJc(ywzxw59Lu^k6jR<&39O6>w<-Z4VUG1I*^cE*xnn)vbOU^C`Lry)0-t zG4jKppm4q|qiptZ^3`Sg_}Dq#Uf@N?^6)Ry$n7p%@vI?`-&2es>eLoGPR&bd3%1Iy zP1?KII3x4yO%Bg1p4!hx&DyC(&%O6_n!ZqeOzn|W?JJLCMIxVh9qL_ioBOkyVA-9R zD0-~o%5I%6FZAB_awp7d$h_P-pT{uW2+!`}B@49^eKRZFc28A#GpkBK0X`HT@C+ir z%n8%z!qxd&O~e$DPj8c>y#$y)!cs%vvvTAmA$iCT<x1v7sz}IhNHqhBUjAab@{p4K zUckkA$x|2e>(@WN0EYw(S+N1BQJu*PS^AYcqzhpOovjW&F8w(~zY7Ukg3@Q+U%$cz zD8^~<oy&lH@#l~qd>A(Tv%a;oVHs>#f%@$K6CXH(7m~dVkDh2QJ*vk0!GBg|SU1`M z9`ybkYIq5`-Cd!u6@S|Rg|7|B^N!y%K^NO!U4L@vS4IOJ{bSpJgRx%(l@0!nO>Arw M1M}@AB<hj>0pl2(n*aa+ literal 0 HcmV?d00001 diff --git "a/src/content/blog/neovim\346\225\231\347\250\213.md" "b/src/content/blog/neovim\346\225\231\347\250\213.md" index 8490c13..3d40eb9 100644 --- "a/src/content/blog/neovim\346\225\231\347\250\213.md" +++ "b/src/content/blog/neovim\346\225\231\347\250\213.md" @@ -1,30 +1,15 @@ --- -title: "Neovim浅谈与安利" +title: Neovim浅谈与安利 pubDatetime: 2023-12-21T08:00:00Z -modDatetime: 2024-03-02T01:01:00Z -description: "你应该使用这个世界上最快的编辑器(确信" -author: "Parsifal" -tags: ["computer", "neovim"] +modDatetime: 2024-09-19T03:41:30Z +description: 你应该使用这个世界上最快的编辑器(确信 +author: Parsifal +tags: + - computer + - neovim --- -<details open> -<summary><span style="font-size: 1.5em; font-weight: bold;">目录</span></summary> - -- [Neovim的前世今生](#neovim的前世今生) -- [Neovim的简单配置](#neovim的简单配置) - - [关于Lua](#关于lua) - - [配置的文件结构](#配置的文件结构) - - [写给曾经的 Vim用户](#写给曾经的-vim用户) - - [安装Neovim](#安装neovim) - - [简单按键配置](#简单按键配置) - - [选择插件管理器](#选择插件管理器) - - [主题配置](#主题配置) - - [Tree-sitter 设置](#tree-sitter-设置) - - [LSP 设置](#lsp-设置) - - [CMP 设置](#cmp-设置) -- [参考文章](#参考文章) - -</details> +# 目录 # Neovim 的前世今生 diff --git a/src/content/blog/test.md b/src/content/blog/test.md index 7773b9d..bfc041e 100644 --- a/src/content/blog/test.md +++ b/src/content/blog/test.md @@ -1,8 +1,9 @@ --- -title: "Website Testing" +title: Website Testing pubDatetime: 2023-12-21T08:10:00Z -description: "从hexo迁移到Astro框架" -author: "Parsifal" +description: 从hexo迁移到Astro框架 +author: Parsifal +modDatetime: 2024-09-19T03:11:05Z --- # 测试 diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index bd2ec35..1cce06d 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,6 +1,7 @@ --- import { LOCALE, SITE } from "@config"; import "@styles/base.css"; +import "/node_modules/katex/dist/katex.min.css"; import { ViewTransitions } from "astro:transitions"; const googleSiteVerification = import.meta.env.PUBLIC_GOOGLE_SITE_VERIFICATION; @@ -57,7 +58,6 @@ const socialImageURL = new URL( <meta property="og:description" content={description} /> <meta property="og:url" content={canonicalURL} /> <meta property="og:image" content={socialImageURL} /> - <!-- Article Published/Modified time --> { pubDatetime && ( diff --git a/src/styles/base.css b/src/styles/base.css index 9a8c620..60d463d 100644 --- a/src/styles/base.css +++ b/src/styles/base.css @@ -85,6 +85,9 @@ .prose h2#table-of-contents { @apply mb-2; } + .prose blockquote { + @apply not-italic; + } .prose details { @apply inline-block cursor-pointer select-none text-skin-base; }